@@ -75,8 +75,9 @@ def from_formula(cls, formula: str) -> Ion:
75
75
76
76
@property
77
77
def formula (self ) -> str :
78
- """Returns a formula string, with elements sorted by electronegativity,
79
- e.g., Li4 Fe4 P4 O16.
78
+ """Returns a formula string with appended charge. The
79
+ charge is written with the sign preceding the magnitude, e.g.,
80
+ 'Ca1 +2'. Uncharged species have "(aq)" appended, e.g. "O2 (aq)".
80
81
"""
81
82
formula = super ().formula
82
83
return f"{ formula } { charge_string (self .charge , brackets = False )} "
@@ -166,14 +167,20 @@ def get_reduced_formula_and_factor(self, iupac_ordering: bool = False, hydrates:
166
167
# butanol
167
168
elif formula == "H10C4O" :
168
169
formula = "C4H9OH"
170
+ elif formula == "O" and factor % 3 == 0 :
171
+ formula = "O3"
172
+ factor /= 3
173
+ elif formula in ["O" , "N" , "F" , "Cl" , "H" ] and factor % 2 == 0 :
174
+ formula += "2"
175
+ factor /= 2
169
176
170
177
return formula , factor
171
178
172
179
@property
173
180
def reduced_formula (self ) -> str :
174
181
"""Returns a reduced formula string with appended charge. The
175
182
charge is placed in brackets with the sign preceding the magnitude, e.g.,
176
- 'Ca[+2]'.
183
+ 'Ca[+2]'. Uncharged species have "(aq)" appended, e.g. "O2(aq)".
177
184
"""
178
185
reduced_formula = super ().reduced_formula
179
186
charge = self ._charge / self .get_reduced_composition_and_factor ()[1 ]
0 commit comments