Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Separate parsers #33

Merged
merged 30 commits into from
Jul 23, 2024
Merged
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
313875b
Separate NWChem "finish" and "parse" functionality
smcolby Apr 12, 2024
a2d065f
Improve NWChem parsing
smcolby Apr 12, 2024
07f14ea
Merge branch 'master' into develop
smcolby Apr 15, 2024
660a14d
Load geometry during `finish` call
smcolby Apr 15, 2024
2a84f72
Add charge/spin multiplicity params to ORCA, improve multiple geometr…
smcolby Apr 15, 2024
b49c201
Return final geometry when parsing
smcolby Apr 19, 2024
8b0757f
Begin overhaul of charge propagation
smcolby Apr 19, 2024
ce4b00d
Separate wrapper from result during return
smcolby Apr 22, 2024
a0ea3f8
Remove try/except blocks for geometry parsing
smcolby Apr 22, 2024
3d22c1e
Remove attribute update from atom count method
smcolby Apr 22, 2024
7613c5c
Remove charge kwarg
smcolby Apr 22, 2024
1f3e63b
Improve `finish` method for XTB parser
smcolby Apr 22, 2024
6dc1c3a
Remove extra blank line
smcolby Apr 23, 2024
5f45cd2
Overhaul XTB parser
smcolby Apr 23, 2024
e2a8255
Remove charge attribute in init
smcolby May 1, 2024
2b99d74
Decrease verbosity of if checks
smcolby May 1, 2024
44937f1
Simplify return for XTB when only single geometry type present
smcolby May 1, 2024
f6d0c38
Improve edge case handling when finishing a run
smcolby May 1, 2024
ad395b1
Fix bad attribute reference, return logic for XTB parser
smcolby May 1, 2024
c39a5b5
Add missing import
smcolby May 1, 2024
e4a6bd2
Fix parsing bugs for XTB
smcolby May 1, 2024
2a539e8
Remove charge as kwarg
smcolby May 1, 2024
b90ee9f
Merge pull request #36 from pnnl/charge
smcolby May 1, 2024
f8d4b2a
Merge pull request #37 from pnnl/md-refactor
smcolby May 1, 2024
d159d99
Merge branch 'develop' into separate-parsers
smcolby May 1, 2024
0dc0f7f
Return dictionary of results instead of wrapper instance
smcolby May 22, 2024
1b06c86
Add todo
smcolby May 31, 2024
5daec4a
Add view method
smcolby Jul 12, 2024
020b3b4
Add conformers and rotamers to finish method
smcolby Jul 12, 2024
d7b7f67
Merge branch 'develop' into separate-parsers
smcolby Jul 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 11 additions & 34 deletions isicle/adducts.py
Original file line number Diff line number Diff line change
@@ -296,13 +296,6 @@ def set_geometry(self, geom):
else:
raise ValueError('Could not find self.mol or self.geom')

def set_charge(self):
'''
'''

if self.geom.__dict__.get('charge') is None:
self.geom.__dict__.update(charge=self.geom.get_charge())

def _set_ions(self, ion_path=None, ion_list=None):
'''
'''
@@ -468,6 +461,7 @@ def _forcefield_selector(self, forcefield, mw):
raise ValueError(
'RDKit only supports UFF, MMFF, MMFF94, MMFF94s as forcefields.')

# TODO: update this
def _update_geometry_charge(self, geom):
'''
'''
@@ -873,9 +867,6 @@ def run(self, geom, ion_path=None, ion_list=None, **kwargs):
# Sets geom to self.geom
self.set_geometry(geom)

# Infers charge of geom.mol
self.set_charge()

# Load specified ions by type
# Validity check if negative ionization can be done
self.configure(ion_path=ion_path, ion_list=ion_list)
@@ -975,18 +966,6 @@ def set_geometry(self, geom):
else:
raise ValueError('Could not find self.xyz, self.mol, or self.geom')

def set_charge(self):
'''
'''

if self.geom.__dict__.get('charge') is None:
if self.geom.load.get('filetype') == '.xyz':
# self.geom.__dict__.update(charge=charge)
raise ValueError(
'Must first run geom.set_charge for an xyz structure')
else:
self.geom.__dict__.update(charge=self.geom.get_charge())

def _set_ions(self, ion_path=None, ion_list=None):
cations, anions, complex = _parse_ions(
ion_path=ion_path, ion_list=ion_list)
@@ -1032,11 +1011,11 @@ def _check_valid(self):
self.adducts['complex'] = self._filter_supported_by_xtb(
self.adducts['complex'])

if self.geom.load['filetype'] != '.xyz':
self.adducts['anions'] = _filter_by_substructure_match(
self.geom.mol, self.adducts['anions'])
self.adducts['complex'] = _filter_by_substructure_match(
self.geom.mol, self.adducts['complex'])

self.adducts['anions'] = _filter_by_substructure_match(
self.geom.mol, self.adducts['anions'])
self.adducts['complex'] = _filter_by_substructure_match(
self.geom.mol, self.adducts['complex'])

def configure(self, ion_path=None, ion_list=None):
self._set_ions(ion_path=ion_path, ion_list=ion_list)
@@ -1054,14 +1033,15 @@ def _parse_ion_charge(self, ion):
charge = int(charge[0])
return charge

# TODO: update this
def _update_geometry_charge(self, geom, adduct, ion_charge, mode):
'''
'''

if mode == 'negative':
charge = geom.__dict__.get('charge') - ion_charge
charge = geom.get_charge() - ion_charge
elif mode == 'positive':
charge = geom.__dict__.get('charge') + ion_charge
charge = geom.get_charge() + ion_charge
adduct.__dict__.update(charge=charge)

def _positive_mode(self, geom, forcefield, ewin, cation, optlevel, dryrun, processes, solvation, ignore_topology):
@@ -1070,7 +1050,7 @@ def _positive_mode(self, geom, forcefield, ewin, cation, optlevel, dryrun, proce
'''

output = md(geom, program='xtb', task='protonate', forcefield=forcefield,
ewin=ewin, ion=cation, optlevel=optlevel, dryrun=dryrun, charge=geom.charge, processes=processes, solvation=solvation, ignore_topology=ignore_topology)
ewin=ewin, ion=cation, optlevel=optlevel, dryrun=dryrun, processes=processes, solvation=solvation, ignore_topology=ignore_topology)
ion_charge = self._parse_ion_charge(cation)
for adduct in output.geom:
self._update_geometry_charge(geom, adduct, ion_charge, 'positive')
@@ -1082,7 +1062,7 @@ def _negative_mode(self, geom, forcefield, ewin, anion, optlevel, dryrun, proces
'''

output = md(geom, program='xtb', task='deprotonate', forcefield=forcefield,
ewin=ewin, ion=anion, optlevel=optlevel, dryrun=dryrun, charge=geom.charge, processes=processes, solvation=solvation, ignore_topology=ignore_topology)
ewin=ewin, ion=anion, optlevel=optlevel, dryrun=dryrun, processes=processes, solvation=solvation, ignore_topology=ignore_topology)
ion_charge = self._parse_ion_charge(anion)
for adduct in output.geom:
self._update_geometry_charge(geom, adduct, ion_charge, 'negative')
@@ -1181,9 +1161,6 @@ def run(self, geom, ion_path=None, ion_list=None, **kwargs):

self.set_geometry(geom)

# Infers charge for non xyz files, infers default neutral for xyz files
self.set_charge()

# Load specified ions by type
# Validity check if negative ionization can be done
# Validity check if CREST supports the ions specified
4 changes: 2 additions & 2 deletions isicle/conformers.py
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@
from statsmodels.stats.weightstats import DescrStatsW

from isicle import io
from isicle.geometry import Geometry, XYZGeometry
from isicle.geometry import Geometry
from isicle.utils import TypedList, safelist


@@ -382,7 +382,7 @@ def __init__(self, *args):

'''

super().__init__((Geometry, XYZGeometry), *args)
super().__init__(Geometry, *args)

def _check_attributes(self, attr):
'''
Loading
Oops, something went wrong.
Loading
Oops, something went wrong.