From 6da5bb67d0cf99c3260033e8344b60856fe6a98c Mon Sep 17 00:00:00 2001 From: Peter Eastman Date: Wed, 2 Oct 2024 17:22:23 -0700 Subject: [PATCH] Soft core force field includes torsions with wildcards (#308) * Soft core force field includes torsions with wildcards * Bug fixes --- devtools/createSoftForcefield.py | 52 +- pdbfixer/soft.xml | 6314 +++++++++++++++--------------- 2 files changed, 3204 insertions(+), 3162 deletions(-) diff --git a/devtools/createSoftForcefield.py b/devtools/createSoftForcefield.py index 3f4daa6..97e9832 100644 --- a/devtools/createSoftForcefield.py +++ b/devtools/createSoftForcefield.py @@ -51,18 +51,21 @@ omitTypes = set() omitClasses = set() for atomType in forcefield._atomTypes: - (atomClass, mass, element) = forcefield._atomTypes[atomType] - if element is None or element == elem.hydrogen: + data = forcefield._atomTypes[atomType] + if data.element is None or data.element == elem.hydrogen: omitTypes.add(atomType) - omitClasses.add(atomClass) + omitClasses.add(data.atomClass) else: - print(' ' % (atomType, atomClass, element.symbol, mass)) + print(' ' % (atomType, data.atomClass, data.element.symbol, data.mass)) print(' ') # Print the residue templates. print(' ') +skipTemplates = ('ASH', 'CYM', 'GLH', 'HID', 'HIE', 'LYN') for template in forcefield._templates.values(): + if template.name in skipTemplates or template.name[1:] in skipTemplates: + continue print(' ' % template.name) atomIndex = {} for i, atom in enumerate(template.atoms): @@ -86,8 +89,8 @@ type1 = next(iter(bonds.types1[i])) type2 = next(iter(bonds.types2[i])) if type1 not in omitTypes and type2 not in omitTypes: - class1 = forcefield._atomTypes[type1][0] - class2 = forcefield._atomTypes[type2][0] + class1 = forcefield._atomTypes[type1].atomClass + class2 = forcefield._atomTypes[type2].atomClass print(' ' % (class1, class2, bonds.length[i], bondK)) print(' ') @@ -100,9 +103,9 @@ type2 = next(iter(angles.types2[i])) type3 = next(iter(angles.types3[i])) if type1 not in omitTypes and type2 not in omitTypes and type3 not in omitTypes: - class1 = forcefield._atomTypes[type1][0] - class2 = forcefield._atomTypes[type2][0] - class3 = forcefield._atomTypes[type3][0] + class1 = forcefield._atomTypes[type1].atomClass + class2 = forcefield._atomTypes[type2].atomClass + class3 = forcefield._atomTypes[type3].atomClass print(' ' % (class1, class2, class3, angles.angle[i], angleK)) print(' ') @@ -110,31 +113,22 @@ print(' ') torsions = [f for f in forcefield._forces if isinstance(f, ff.PeriodicTorsionGenerator)][0] +wildcardType = forcefield._atomClasses[''] for torsion in torsions.proper: - type1 = next(iter(torsion.types1)) - type2 = next(iter(torsion.types2)) - type3 = next(iter(torsion.types3)) - type4= next(iter(torsion.types4)) - if type1 not in omitTypes and type2 not in omitTypes and type3 not in omitTypes and type4 not in omitTypes: - class1 = forcefield._atomTypes[type1][0] - class2 = forcefield._atomTypes[type2][0] - class3 = forcefield._atomTypes[type3][0] - class4 = forcefield._atomTypes[type4][0] - print(' ') for torsion in torsions.improper: - type1 = next(iter(torsion.types1)) - type2 = next(iter(torsion.types2)) - type3 = next(iter(torsion.types3)) - type4= next(iter(torsion.types4)) - if type1 not in omitTypes and type2 not in omitTypes and type3 not in omitTypes and type4 not in omitTypes: - class1 = forcefield._atomTypes[type1][0] - class2 = forcefield._atomTypes[type2][0] - class3 = forcefield._atomTypes[type3][0] - class4 = forcefield._atomTypes[type4][0] - print(' ') diff --git a/pdbfixer/soft.xml b/pdbfixer/soft.xml index 78aa919..3944950 100644 --- a/pdbfixer/soft.xml +++ b/pdbfixer/soft.xml @@ -1,18 +1,172 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -20,1284 +174,1256 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + + + + + - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + - - - - - - - - - - + + + + + + + + + + @@ -1308,130 +1434,72 @@ - - - - - - - - - - - - - - - - + + + + + + + + - + - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - + + + - - - + - - - - - - - - - - - - + - - - - - - - - - - - + + + + + + + + + + + @@ -1440,440 +1508,396 @@ + - - - - - - - - - - - + + + + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + - + - - + + + - - - - - - - - - - - + + + + + + + + + + + - + - + + - - - - - - - - - + + + + + + + + + + - + - + + - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - + + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + + - + + + + + + - - - - - - - - + + + + + + + + + + - - - - - - - - - + + + + + + + - + - - + - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + + - + + - - + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -1896,82 +1920,110 @@ - - + - - - - - - - - + + + + + + + + + + + + + + + + + + + - - + + + + - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + - + - + - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -1993,258 +2045,283 @@ + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + - + - + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + + + - + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - + - + - - - + + + - - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + - + + + + - + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + - + + + - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + + + + - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -2265,232 +2342,280 @@ - - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + - + + + - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + + + - + + - + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + - + - - - + + + - - + - + - - - - - - - - - - - - - + + + + + + + + + + - + - - - - - - - + + + + - - - - - - - - - + + + + + + + + + + - + - - + + + - - + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + - + - + - - - - - - + - - - - - - - + + + + + + + + + - + + - + + + - - - - - - - - - + + + + + + + + + + + + @@ -2498,172 +2623,90 @@ + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - + + + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - + + + + + + + + + - - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - - + + + - - - - - + - - - - - - - - - + @@ -2683,53 +2726,139 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + - - - - - - - - - + + + + + + + + + @@ -2737,568 +2866,535 @@ - - - - - + + + + + + + + + - - - - + + + + + + - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - - + + + + + + + + + - + - - - - + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - - - + + + - - - - - - + + + + + + + + + - + - + + + - - - - - - - - - + + + + + + + - + - - - - - + + - - - - - - - + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + - + - + + + - + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + - - - - - - - - - - + + + + + + + + + - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + + + - + + + - + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + - - + + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + - + + + + + + + + + + + + + + + + @@ -3339,133 +3435,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -3503,398 +3472,477 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + + + - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - + + - - + + - + - + + - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - - - - + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - + + + + - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + - + - - - + + - - - + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + + + + - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - + + - + + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + - - - - - - - - - - - - + + + + + + + + + + + + + - + + - + + - + - - - - - - - + + + + + + + + - - - + + + + + + + + @@ -4111,12 +4159,12 @@ - - - + + + - + @@ -4143,64 +4191,64 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4217,10 +4265,10 @@ - - - - + + + +