Skip to content

Commit

Permalink
Merge pull request #404 from ReactionMechanismGenerator/scan_load_bugfix
Browse files Browse the repository at this point in the history
BugFix: Return Angles = None if ZeroDivisionError when parsing scan log
  • Loading branch information
xiaoruiDong committed Jun 18, 2020
2 parents 09e503b + 050e6f0 commit c216de6
Show file tree
Hide file tree
Showing 4 changed files with 1,634 additions and 2 deletions.
2 changes: 1 addition & 1 deletion arc/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ def parse_1d_scan_energies(path: str) -> Tuple[Optional[List[float]], Optional[L
energies, angles = log.load_scan_energies()
energies *= 0.001 # convert to kJ/mol
angles *= 180 / np.pi # convert to degrees
except (LogError, NotImplementedError):
except (LogError, NotImplementedError, ZeroDivisionError):
logger.warning(f'Could not read energies from {path}')
energies, angles = None, None
return energies, angles
Expand Down
5 changes: 5 additions & 0 deletions arc/parserTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,11 @@ def test_parse_1d_scan_energies(self):
np.testing.assert_almost_equal(energies, expected_energies)
np.testing.assert_almost_equal(angles, expected_angles)

path2 = os.path.join(arc_path, 'arc', 'testing', 'rotor_scans', 'scan_1d_curvilinear_error.out')
energies_2, angles_2 = parser.parse_1d_scan_energies(path=path2)
self.assertEqual(energies_2, None)
self.assertEqual(angles_2, None)

def test_parse_nd_scan_energies(self):
"""Test parsing an ND scan output file"""
path1 = os.path.join(arc_path, 'arc', 'testing', 'rotor_scans', 'scan_2D_relaxed_OCdOO.log')
Expand Down
2 changes: 1 addition & 1 deletion arc/scheduler.py
Original file line number Diff line number Diff line change
Expand Up @@ -2400,7 +2400,7 @@ def check_scan_job(self, label: str, job: Job) -> None:
self.species_dict[label].rotors_dict[i]['invalidation_reason'] = invalidation_reason

# If energies were obtained, draw the scan curve
if len(energies):
if energies is not None and len(energies):
folder_name = 'rxns' if job.is_ts else 'Species'
rotor_path = os.path.join(self.project_directory, 'output', folder_name, job.species_name, 'rotors')
plotter.plot_1d_rotor_scan(angles=angles,
Expand Down

0 comments on commit c216de6

Please sign in to comment.