Skip to content

Commit 07ce2c7

Browse files
committed
Update on 03/13/26 at 02:26:06
1 parent f95075e commit 07ce2c7

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

pyMBE/pyMBE.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,9 @@ def calculate_HH(self, template_name, pH_list=None, pka_set=None):
513513
Defaults to 50 values between 2 and 12.
514514
515515
pka_set ('dict', optional):
516-
Mapping: {particle_name: {"pka_value": 'float', "acidity": "acidic"|"basic"}}
516+
Mapping per particle. Monoprotic entries use
517+
{"pka_value": float, "acidity": ...}, polyprotic entries use
518+
{"pka_values": [float, ...], "acidity": ...}.
517519
518520
Returns:
519521
'list[float]':
@@ -530,7 +532,7 @@ def calculate_HH(self, template_name, pH_list=None, pka_set=None):
530532
return [None] * len(pH_list)
531533
charge_number_map = self.get_charge_number_map()
532534
def formal_charge(particle_name):
533-
tpl = self.db.get_template(name=particle_name,
535+
tpl = self.db.get_template(name=particle_name,
534536
pmb_type="particle")
535537
state = self.db.get_template(name=tpl.initial_state,
536538
pmb_type="particle_state")
@@ -540,20 +542,24 @@ def formal_charge(particle_name):
540542
Z = 0.0
541543
for particle, multiplicity in particle_counts.items():
542544
if particle in pka_set:
543-
pka = pka_set[particle]["pka_value"]
544-
acidity = pka_set[particle]["acidity"]
545+
entry = pka_set[particle]
546+
acidity = entry["acidity"]
545547
if acidity == "acidic":
546548
psi = -1
547549
elif acidity == "basic":
548550
psi = +1
549551
else:
550552
raise ValueError(f"Unknown acidity '{acidity}' for particle '{particle}'")
551-
charge = psi / (1.0 + 10.0 ** (psi * (pH - pka)))
553+
if "pka_values" in entry:
554+
pka_list = entry["pka_values"]
555+
else:
556+
pka_list = [entry["pka_value"]]
557+
charge = sum(psi / (1.0 + 10.0 ** (psi * (pH - pka))) for pka in pka_list)
552558
Z += multiplicity * charge
553559
else:
554560
Z += multiplicity * formal_charge(particle)
555561
Z_HH.append(Z)
556-
return Z_HH
562+
return Z_HH
557563

558564
def calculate_HH_Donnan(self, c_macro, c_salt, pH_list=None, pka_set=None):
559565
"""

0 commit comments

Comments
 (0)