Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Participants

...

Goals

Discussion topics

...

Time

...

Item

...

Presenter

Discussion topics

Notes

  • What Topology functionality is needed in the short run?

    • Some way to load a protein topology to begin with

    • Pathways where we’ll need to export a molecule with residues

      • The molecule was parameterized using OFFTK

      • The molecule was loaded from .gro or .prmtop

    • Will OpenFF parameterization ever affect residue/atom definitions?

      • Let’s assume “No”

    • Will we need to know residues, segments, chains, etc?

      • Let’s assume “yes” and that the final biopolymer object will be able to support efficient lookups based on arbitrary metadata

    • Can we have a topology where some components have residues/chains and others don't?

      • Yes, it should be allowed to an OpenFF System to exist with a mix of atomtyped / residue-organized components, and residue-agnostic components. The exporters will, at the last minute, assign residue names to things that need them.

  • Would we want to use a MDTraj Topology directly, or wrap one in such a way that it looks like an OpenFF Topology with extra API points?

    • What is required?

      • Build one up atom-by-atom and bond-by-bond (natively supporting atom types!)

      • Read PDBs

      • Maybe read some other formats (eg prmtop) good too

  • What kind of workflow should we try to make that REQUIRES correct atom typing?

    • ???

    • Could try to mimic the output of AMBER protein param (but we don’t have an AMBER exporter yet)

  • What’s the difference between using eg. an MDTraj topology, and just carrying around a bunch of dictionaries with an OFF Topology that have residue mappings and stuff?

    • So, what if we effectively had OFFBioTop = (OFFTop, MDTrajTop)?

    • We should carry around a MDTraj topology becuase it has an API and a dictionary doesn’t

Code Block
class OFFBioTop(OFFTop):
    def __init__(self, mdtrajtop, *args, **kwargs):
       self.mdtrajtop = mdtrajtop
       super().__init__(*args, **kwargs)

off_top = Topology.from_openmm(omm_top, unique_molecule=[molecules])
off_biotop = OFFBioTop(mdtraj_top, off_top)

off_biotop.mdtrajtop.atoms[0].type
>>> "CG"

ff = ForceField('openff-1.3.0.offxml')
off_sys = ff.create_openff_system(off_biotop)
[atom.index for atom in off_sys.topology.mdtrajtop.residues[0]]
>>> [1,2,3,4,54,5,7,8]

[atom.type for atom in off_sys.topology.mdtrajtop.residues[0]]
>>> ['CA', 'CB', "NH", "HN", ...]

[atom.index for atom in off_sys.topology.mdtrajtop.selectAtoms('ALA')]
>>> [14,32,53,43,54,15,74,84]

Code Block

|-OFFTop (which can contain arbitrary hierarchy info like residues/chains)
|---OFFAtomTypeTop
|---OFFCheminfTop


Action items

  •  

Decisions