Skip to content

Commit 2f9429e

Browse files
committed
Add properties for CCS and stdev CCS, propagate to geometry object as needed
1 parent 89c5de7 commit 2f9429e

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

isicle/geometry.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ class Geometry(GeometryInterface):
2424
"_frequency",
2525
"_molden",
2626
"_charge",
27-
"_connectivity"
27+
"_connectivity",
28+
"_formal_charge",
29+
"_ccs",
30+
"_ccs_std"
2831
]
2932
_default_value = None
3033

@@ -154,6 +157,34 @@ def formal_charge(self):
154157

155158
return Chem.rdmolops.GetFormalCharge(self.to_mol())
156159

160+
@property
161+
def ccs(self):
162+
"""
163+
Get CCS of the molecule.
164+
165+
Returns
166+
-------
167+
float
168+
Collision cross section.
169+
170+
"""
171+
172+
return self._ccs
173+
174+
@property
175+
def ccs_std(self):
176+
"""
177+
Get standard deviation of CCS prediction of the molecule.
178+
179+
Returns
180+
-------
181+
float
182+
Standard deviation of collision cross section.
183+
184+
"""
185+
186+
return self._ccs_std
187+
157188
def view(self):
158189
"""
159190
View internal rdkit mol object representation.

isicle/mobility.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,9 @@ def finish(self):
191191
except UnicodeDecodeError:
192192
result[ext] = contents
193193

194+
# Propagate geometry object
195+
result["geometry"] = self.geom
196+
194197
# Assign to attribute
195198
self.result = result
196199
return self.result

isicle/parse.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -835,7 +835,16 @@ def parse(self):
835835
elif "standard deviation (percent)" in line:
836836
done = True
837837
if done is True:
838-
self.result["ccs"] = {"mean": ccs_mn, "std": ccs_std}
838+
self.result["ccs"] = ccs_mn
839+
self.result["ccs_std"] = ccs_std
840+
841+
self.result["geometry"] = self.data["geometry"]
842+
843+
# Update geometry attributes
844+
self.result["geometry"].add___dict__(
845+
{"_" + k: v for k, v in self.result.items() if k not in ["geometry"]},
846+
override=True
847+
)
839848

840849
return self.result
841850

0 commit comments

Comments
 (0)