Skip to content

Commit

Permalink
pre-commit auto-fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
pre-commit-ci[bot] committed Jul 31, 2024
1 parent 45e8bf1 commit 306d015
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 43 deletions.
50 changes: 35 additions & 15 deletions src/quacc/atoms/skzcam.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@

from quacc.types import (
BlockInfo,
MRCCInputDict,
ElementInfo,
ElementStr,
MRCCInputDict,
MultiplicityDict,
SKZCAMOutput,
)
Expand Down Expand Up @@ -142,10 +142,18 @@ def __init__(
self.slab_cluster: Atoms = self.adsorbate_slab_cluster[self.slab_indices]

# Initialize the SKZCAM MRCC input strings for the adsorbate-slab complex, adsorbate, and slab in the same fashion as for ORCAInputGenerator.orcablocks
self.skzcam_input_str: BlockInfo = {"adsorbate_slab": "", "adsorbate": "", "slab": ""}
self.skzcam_input_str: BlockInfo = {
"adsorbate_slab": "",
"adsorbate": "",
"slab": "",
}

# Initialize the dictionary with keyword and values pairs for MRCC input
self.skzcam_input_dict: MRCCInputDict = {"adsorbate_slab": {}, "adsorbate": {}, "slab": {}}
self.skzcam_input_dict: MRCCInputDict = {
"adsorbate_slab": {},
"adsorbate": {},
"slab": {},
}

def generate_input(self) -> MRCCInputDict:
"""
Expand All @@ -157,7 +165,7 @@ def generate_input(self) -> MRCCInputDict:
A dictionary of key-value pairs (to be put in 'mrccinput' parameter) for the adsorbate-slab complex, the adsorbate, and the slab.
"""

def _convert_input_str_to_dict(input_str: str ) -> dict[str,str]:
def _convert_input_str_to_dict(input_str: str) -> dict[str, str]:
"""
Convert the SKZCAM input string to a dictionary.
Expand All @@ -176,12 +184,12 @@ def _convert_input_str_to_dict(input_str: str ) -> dict[str,str]:

key = None

for line in input_str.split('\n'):
for line in input_str.split("\n"):
if "=" in line:
key = line.split('=')[0]
input_dict[key] = line.split('=')[1]
key = line.split("=")[0]
input_dict[key] = line.split("=")[1]
elif key is not None:
input_dict[key] += '\n' + line
input_dict[key] += "\n" + line

return input_dict

Expand All @@ -197,10 +205,16 @@ def _convert_input_str_to_dict(input_str: str ) -> dict[str,str]:
self.skzcam_input_str["slab"] += point_charge_block

# Convert the input string to a dictionary
self.skzcam_input_dict["adsorbate_slab"] = _convert_input_str_to_dict(self.skzcam_input_str["adsorbate_slab"])
self.skzcam_input_dict["adsorbate"] = _convert_input_str_to_dict(self.skzcam_input_str["adsorbate"])
self.skzcam_input_dict["slab"] = _convert_input_str_to_dict(self.skzcam_input_str["slab"])

self.skzcam_input_dict["adsorbate_slab"] = _convert_input_str_to_dict(
self.skzcam_input_str["adsorbate_slab"]
)
self.skzcam_input_dict["adsorbate"] = _convert_input_str_to_dict(
self.skzcam_input_str["adsorbate"]
)
self.skzcam_input_dict["slab"] = _convert_input_str_to_dict(
self.skzcam_input_str["slab"]
)

return self.skzcam_input_dict

def _generate_basis_ecp_block(self) -> None:
Expand Down Expand Up @@ -349,13 +363,17 @@ def _generate_coords_block(self) -> None:
adsorbate_slab_coords_block + ecp_region_block
)

self.skzcam_input_str["adsorbate"] += f"{len(self.adsorbate_slab_cluster)}\n\n"
self.skzcam_input_str["adsorbate"] += (
f"{len(self.adsorbate_slab_cluster)}\n\n"
)
self.skzcam_input_str["adsorbate"] += adsorbate_slab_coords_block

self.skzcam_input_str["slab"] += (
f"{len(self.adsorbate_slab_cluster) + len(self.ecp_region)}\n\n"
)
self.skzcam_input_str["slab"] += adsorbate_slab_coords_block + ecp_region_block
self.skzcam_input_str["slab"] += (
adsorbate_slab_coords_block + ecp_region_block
)

for system in ["adsorbate_slab", "adsorbate", "slab"]:
self.skzcam_input_str[system] += "\nghost=serialno\n"
Expand All @@ -379,7 +397,9 @@ def _generate_coords_block(self) -> None:

self.skzcam_input_str["adsorbate"] += f"{len(self.adsorbate_cluster)}\n\n"
for atom in self.adsorbate_cluster:
self.skzcam_input_str["adsorbate"] += create_atom_coord_string(atom=atom)
self.skzcam_input_str["adsorbate"] += create_atom_coord_string(
atom=atom
)

self.skzcam_input_str["slab"] += (
f"{len(self.slab_cluster) + len(self.ecp_region)}\n\n"
Expand Down
15 changes: 7 additions & 8 deletions src/quacc/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,15 +275,14 @@ class ElementInfo(TypedDict):
ri_cwft_basis: str

class BlockInfo(TypedDict):
adsorbate_slab: str
adsorbate: str
slab: str

class MRCCInputDict(TypedDict):
adsorbate_slab: dict[str,str]
adsorbate: dict[str,str]
slab: dict[str,str]
adsorbate_slab: str
adsorbate: str
slab: str

class MRCCInputDict(TypedDict):
adsorbate_slab: dict[str, str]
adsorbate: dict[str, str]
slab: dict[str, str]

class MultiplicityDict(TypedDict):
adsorbate_slab: int
Expand Down
9 changes: 7 additions & 2 deletions tests/core/atoms/test_skzcam.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
MRCCInputGenerator,
ORCAInputGenerator,
_get_atom_distances,
create_atom_coord_string
create_atom_coord_string,
)

FILE_DIR = Path(__file__).parent
Expand Down Expand Up @@ -199,7 +199,11 @@ def test_MRCCInputGenerator_generate_input(mrcc_input_generator):
input_dict = mrcc_input_generator_nocp.generate_input()

# Check that the input_dictionary is correct
assert (input_dict['adsorbate']['geom'].split()[1],input_dict['slab']['geom'].split()[1],input_dict['adsorbate_slab']['geom'].split()[1]) == ('2','19','21')
assert (
input_dict["adsorbate"]["geom"].split()[1],
input_dict["slab"]["geom"].split()[1],
input_dict["adsorbate_slab"]["geom"].split()[1],
) == ("2", "19", "21")

mrcc_input_generator.generate_input()

Expand Down Expand Up @@ -536,6 +540,7 @@ def test_MRCCInputGenerator_generate_point_charge_block(mrcc_input_generator):
atol=1e-07,
)


def test_ORCAInputGenerator_init(adsorbate_slab_embedded_cluster, element_info):
pal_nprocs_block = {"nprocs": 1, "maxcore": 5000}

Expand Down
74 changes: 57 additions & 17 deletions tests/core/calculators/mrcc/test_io.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,27 +40,49 @@ def test_write_mrcc(tmp_path):
atoms.set_tags([71, 71, 0])

params = {
"charge": 0,
"mult": 1,
"calc": "LNO-CCSD(T)",
"basis": "cc-pVDZ",
"symm": "off",
"localcc": "on",
"lcorthr": "normal",
"ccprog": "ccsd",
"ccsdalg": "dfdirect",
"dfbasis_cor": "cc-pVDZ-RI",
"scfmaxit": 1000,
"usedisk": 0,
"charge": 0,
"mult": 1,
"calc": "LNO-CCSD(T)",
"basis": "cc-pVDZ",
"symm": "off",
"localcc": "on",
"lcorthr": "normal",
"ccprog": "ccsd",
"ccsdalg": "dfdirect",
"dfbasis_cor": "cc-pVDZ-RI",
"scfmaxit": 1000,
"usedisk": 0,
}

write_mrcc(tmp_path / "MINP", atoms, params)

with open(tmp_path / "MINP") as fd:
generated_inputfile = fd.readlines()
#print(generated_inputfile)

reference_inputfile = ['charge=0\n', 'mult=1\n', 'calc=LNO-CCSD(T)\n', 'basis=cc-pVDZ\n', 'symm=off\n', 'localcc=on\n', 'lcorthr=normal\n', 'ccprog=ccsd\n', 'ccsdalg=dfdirect\n', 'dfbasis_cor=cc-pVDZ-RI\n', 'scfmaxit=1000\n', 'usedisk=0\n', 'geom=xyz\n', '3\n', '\n', 'H 1.00000000000 0.00000000000 0.00000000000\n', 'H 2.00000000000 0.00000000000 0.00000000000\n', 'O 3.00000000000 0.00000000000 0.00000000000\n', '\n', 'ghost=serialno\n', '1,2']
# print(generated_inputfile)

reference_inputfile = [
"charge=0\n",
"mult=1\n",
"calc=LNO-CCSD(T)\n",
"basis=cc-pVDZ\n",
"symm=off\n",
"localcc=on\n",
"lcorthr=normal\n",
"ccprog=ccsd\n",
"ccsdalg=dfdirect\n",
"dfbasis_cor=cc-pVDZ-RI\n",
"scfmaxit=1000\n",
"usedisk=0\n",
"geom=xyz\n",
"3\n",
"\n",
"H 1.00000000000 0.00000000000 0.00000000000\n",
"H 2.00000000000 0.00000000000 0.00000000000\n",
"O 3.00000000000 0.00000000000 0.00000000000\n",
"\n",
"ghost=serialno\n",
"1,2",
]

assert generated_inputfile == reference_inputfile

Expand All @@ -82,14 +104,32 @@ def test_write_mrcc(tmp_path):
H 2.0 0.0 0.0
H 2.0 0.0 0.0
O 3.0 0.0 0.0
"""
""",
}
write_mrcc(tmp_path / "MINP", atoms, params)

with open(tmp_path / "MINP") as fd:
generated_inputfile = fd.readlines()

reference_inputfile = ['charge=0\n', 'mult=1\n', 'calc=LNO-CCSD(T)\n', 'basis=cc-pVDZ\n', 'symm=off\n', 'localcc=on\n', 'lcorthr=normal\n', 'ccprog=ccsd\n', 'ccsdalg=dfdirect\n', 'dfbasis_cor=cc-pVDZ-RI\n', 'geom=xyz\n', '3\n', '\n', 'H 2.0 0.0 0.0\n', 'H 2.0 0.0 0.0\n', 'O 3.0 0.0 0.0\n', '\n']
reference_inputfile = [
"charge=0\n",
"mult=1\n",
"calc=LNO-CCSD(T)\n",
"basis=cc-pVDZ\n",
"symm=off\n",
"localcc=on\n",
"lcorthr=normal\n",
"ccprog=ccsd\n",
"ccsdalg=dfdirect\n",
"dfbasis_cor=cc-pVDZ-RI\n",
"geom=xyz\n",
"3\n",
"\n",
"H 2.0 0.0 0.0\n",
"H 2.0 0.0 0.0\n",
"O 3.0 0.0 0.0\n",
"\n",
]

assert generated_inputfile == reference_inputfile

Expand Down
4 changes: 3 additions & 1 deletion tests/core/calculators/mrcc/test_mrcc.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ def test_mrcc_version_from_string():
def test_mrcc_singlepoint(tmp_path):
calc = MRCC(
profile=MrccProfile(command=get_settings().MRCC_CMD),
calc = "PBE", basis = "STO-3G", symm = "off",
calc="PBE",
basis="STO-3G",
symm="off",
directory=tmp_path,
)

Expand Down

0 comments on commit 306d015

Please sign in to comment.