Skip to content

Commit 6088ad1

Browse files
committed
Finished new drone tests
1 parent c1d65bf commit 6088ad1

File tree

2 files changed

+63
-4
lines changed

2 files changed

+63
-4
lines changed

atomate/qchem/drones.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,8 +305,9 @@ def generate_doc(self, dir_name, qcinput_files, qcoutput_files, multirun):
305305
orig_energy = None
306306
for calc in d["calcs_reversed"][::-1]:
307307
if "final_energy" in calc:
308-
orig_energy = calc["final_energy"]
309-
break
308+
if calc["final_energy"] is not None:
309+
orig_energy = calc["final_energy"]
310+
break
310311
final_num_neg_freq = sum(1 for freq in d_calc_final["frequencies"] if freq < 0)
311312
final_energy = d["calcs_reversed"][1]["final_energy"]
312313
if orig_num_neg_freq is None:

atomate/qchem/tests/test_drones.py

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,68 @@ def test_assimilate_bad_FF(self):
179179
self.assertEqual(doc["state"], "unsuccessful")
180180

181181
def test_assimilate_ffts(self):
182-
pass
182+
drone = QChemDrone(
183+
runs=[
184+
"freq_pre", "ts_0", "freq_0", "ts_1", "freq_1", "ts_2", "freq_2",
185+
],
186+
additional_fields={"special_run_type": "ts_frequency_flattener"})
187+
doc = drone.assimilate(
188+
path=os.path.join(module_dir, "..", "test_files", "good_ffts"),
189+
input_file="mol.qin",
190+
output_file="mol.qout",
191+
multirun=False)
192+
self.assertEqual(doc["special_run_type"], "ts_frequency_flattener")
193+
self.assertEqual(doc["input"]["job_type"], "freq")
194+
self.assertEqual(doc["output"]["job_type"], "freq")
195+
test_freqs = np.array([-698.11, 25.64, 42.91, 76.9, 86.38, 127.48, 144.86,
196+
165.45, 202.58, 244.71, 300.76, 338.64, 387.33,
197+
488.47, 530.32, 549.64, 625.49, 683.65, 734.74,
198+
763.52, 812.55, 842.7, 855.4, 944.99, 1014.71,
199+
1104.84, 1126.17, 1159.67, 1165.57, 1211.66,
200+
1271.26, 1373.16, 1443.21, 1457.01, 1477.89, 1507.47,
201+
1634.52, 1675.76, 3107.37, 3177.87, 3190.4, 3290.26])
202+
for ii in enumerate(test_freqs):
203+
self.assertEqual(test_freqs[ii[0]], doc["output"]["frequencies"][ii[0]])
204+
self.assertEqual(doc["output"]["frequencies"][ii[0]],
205+
doc["calcs_reversed"][0]["frequencies"][ii[0]])
206+
self.assertEqual(doc["output"]["enthalpy"], 67.095)
207+
self.assertEqual(doc["output"]["entropy"], 110.847)
208+
self.assertEqual(doc["num_frequencies_flattened"], 3)
209+
self.assertEqual(doc["walltime"], 13840.11)
210+
self.assertEqual(doc["cputime"], 394165.38)
211+
self.assertEqual(doc["smiles"], "O(C(=O)[O])[Li].[CH2]COC(=O)O[Li]")
212+
self.assertEqual(doc["formula_pretty"], "LiH2C2O3")
213+
self.assertEqual(doc["formula_anonymous"], "AB2C2D3")
214+
self.assertEqual(doc["chemsys"], "C-H-Li-O")
215+
self.assertEqual(doc["pointgroup"], "C1")
216+
self.assertIn("custodian", doc)
217+
self.assertIn("calcs_reversed", doc)
218+
self.assertIn("initial_molecule", doc["input"])
219+
self.assertIn("initial_molecule", doc["output"])
220+
self.assertIn("optimized_molecule", doc["output"])
221+
self.assertIn("last_updated", doc)
222+
self.assertIn("dir_name", doc)
223+
self.assertEqual(len(doc["calcs_reversed"]), 3)
224+
self.assertEqual(
225+
list(doc["calcs_reversed"][0].keys()),
226+
list(doc["calcs_reversed"][2].keys()))
227+
183228

184229
def test_assimilate_bad_ffts(self):
185-
pass
230+
drone = QChemDrone(
231+
runs=[
232+
"freq_pre", "ts_0", "freq_0", "ts_1", "freq_1", "ts_2", "freq_2",
233+
],
234+
additional_fields={"special_run_type": "ts_frequency_flattener"})
235+
doc = drone.assimilate(
236+
path=os.path.join(module_dir, "..", "test_files", "bad_ffts"),
237+
input_file="mol.qin",
238+
output_file="mol.qout",
239+
multirun=False)
240+
self.assertEqual(doc["special_run_type"], "ts_frequency_flattener")
241+
self.assertEqual(doc["input"]["job_type"], "freq")
242+
self.assertEqual(doc["output"]["job_type"], "freq")
243+
self.assertEqual(doc["state"], "unsuccessful")
186244

187245
def test_multirun(self):
188246
drone = QChemDrone()

0 commit comments

Comments
 (0)