FF-related objects and their converters
Molecule.from_file (filename)
OFF Molecule
OE Molecule
RDK Molecule
OFF Topology
SDF, MOL, SMI File; SMI string
Several file formats, SMI string
Molecule.from_rdkit
Molecule.from_openeye
Topology.from_molecules([off_mol1, off_mol2, ...])
Ligand PDB File
OMM PDBFile
OMM Topology
Topology.from_openmm(
omm_topology,
unique_molecules=[off_mol1, off_mol2])
simtk.openmm.app.PDBFile(pdb_file_path)
pdb_file_obj.topology
Ligand OFF Topology
OFF FF
OFFXML File
ForceField(filename)
Ligand OMM System
off_ff.create_openmm_system(off_topology)
Ligand ParmEd Structure
Ligand PDB File
OMM PDBFile
simtk.openmm.
app.PDBFile(
pdb_file_path)
OMM FF
simtk.openmm.app.ForceField(
'amber99sbildn.xml',
'tip3pfb.xml')
Protein+water PDB File
OMM PDBFile
simtk.openmm.app.PDBFile(pdb_file_path)
omm_forcefield.createSystem(
omm_pdbfile.topology,
rigidWater=False)
Protein+WaterOMM System
Protein+Water ParmEd Structure
parmed.openmm.load_topology(
omm_topology,
omm_system,
xyz=omm_pdbfile.positions
OR off_mol.conformers[0].value_in_unit(unit.angstrom))
Complex ParmEd Structure
ligand_struct + protein_struct
OMM Topology
omm_pdbfile.topology
off_topology.to_openmm()
Complex ParmEd Structure
OMM System
pmd_structure.createSystem(
nonbondedMethod=NoCutoff, nonbondedCutoff=9.0*unit.angstrom,
constraints=HBonds,
removeCMMotion=False)
pmd_structure.save(
'system.prmtop')
pmd_structure.save(
'system.inpcrd')
Amber PRMTOP File
Amber INPCRD File
parmed_structure.save(
'system.top')
parmed_structure.save(
‘system.gro')
Gromacs TOP File
Gromacs GRO File
OMM System + cutoffs and stuff
ParmEd System
AMBER System
OFF Molecule
w/o charges
w/o confs
OFF Topology
OMM Topology
+chains
XYZ file
/QCArchive mol
/PDB w/o CONECT
SMILES
- coordinates
+ bond orders
+ stereo definition
+? aromaticity perception
+aromaticity perception
Multiple copies (potentially)
+parameters
+cutoffs and globals
SDF w/o charges
/mol2 w/o charges
/PDB w CONECT
SDF w charges
/mol2 w charges
+bond orders
OFF Molecule
w/o charges
w confs
OFF Molecule
w charges
w confs
Information Content
+charges
-coords
-coords
-charges
- cutoffs and globals
+ bond existence
+ bond orders
+ formal charges
+ stereo definition
MDAnalysis/obabel/rdkit/xyz2mol guessers
SDF
OFFMol
Information Content
mol2
OFFPolymerMol
+ resnames
OFFMol.percieve_residues/hierarchy
Atomtyped PDB
w/o CONECT
w/ expl H
+ canonical resnames
- elements
PDBFixer
Atomtyped PDB w CONECT
w/ expl H
+ bond existence
PDBFixer
QCArchive mol w/ CMILES
QCSubmit / OFFMol.from_qcarchive
+ bond orders
+ elements
+ formal charges
+ stereo definition
OFFBioMol.from_pdb?
Element PDB w/o CONECT
w/ expl H
XYZ file
/QCArchive mol w/o CMILES
+ NONcanonical resnames
Element PDB w CONECT
w/ expl H
+ bond orders
+ formal charges
+ stereo definition
+ resnames?
OFFBioMol.from_pdb?
OFF TypedMolecule
2023_07 QCSubmit updating
BasicResultCollection(entries={"http://localhost:443": entries})
client.get_collection(
“OptimizationDataset”,
Name
)
col.data.records.values()
OptEntry.attributes["CMILES"] and InChI
ORC.to_records
OD.compute
OD.save
QCFractal client
Legacy QCSubmit (<0.50)
QCEl Mol
QCF Specification
'name': 'default',
'description': 'Geometric + rdkit',
'optimization_spec': {'program': 'geometric', 'keywords': None},
'qc_spec': {'driver': 'gradient',
'method': 'uff',
'basis': None,
'keywords': None,
'Program': 'rdkit'
}
qcportal.collections.OptimizationDataset
OD.add_entry
OD.add_specification
QCFractal server
FractalClient(QCF_serv)
qcportal.collections.OptimizationDataset
Openff.qcsubmit.factories.
OptimizationDatasetFactory
Openff.qcsubmit.datasets.
OptimizationDataset
ODF.create_dataset(..., molecules)
OFF Mols
QCS Specification
method="openff-1.0.0",
basis="smirnoff",
program="openm”,
spec_description="default openff spec", spec_name="openff-1.0.0",
OD.add_qc_spec
Openff.qcsubmit.
Constraints
OD.add_molecule(index, mol, constraints)
OD.submit
Constraint spec
constraint_type="dihedral",
indices=[2, 0, 1, 5]
, value=60, bonded=True
C.add_set constraint
C.add_freeze_constraint
Openff.qcsubmit.results.
OptimizationResultCollection
Where does CMILES switch from being on entry to being on result?
Openff.qcsubmit.results.
OptimizationResultRecord
OFF Mols
CMILES + InChI
CMILES + InChI
Qcportal.collections.optimization_dataset.
OptEntry
client.query_procedures
List[Qcportal.models.records.
ResultRecord]
List[QCEl Mol]
client.query_molecules
BasicResultCollection(entries={"http://localhost:443": entries})
client.get_collection(
“OptimizationDataset”,
Name
)
col.data.records.values()
OptEntry.attributes["CMILES"] and InChI
ORC.to_records
OD.compute
OD.save
QCFractal client
Next QCSubmit (>=0.50)
QCEl Mol
QCF Specification
'name': 'default',
'description': 'Geometric + rdkit',
'optimization_spec': {'program': 'geometric', 'keywords': None},
'qc_spec': {'driver': 'gradient',
'method': 'uff',
'basis': None,
'keywords': None,
'Program': 'rdkit'
}
qcportal.collections.OptimizationDataset
OD.add_entry
OD.add_specification
QCFractal server
FractalClient(QCF_serv)
qcportal.collections.OptimizationDataset
Openff.qcsubmit.factories.
OptimizationDatasetFactory
Openff.qcsubmit.datasets.
OptimizationDataset
ODF.create_dataset(..., molecules)
OFF Mols
QCS Specification
method="openff-1.0.0",
basis="smirnoff",
program="openm”,
spec_description="default openff spec", spec_name="openff-1.0.0",
OD.add_qc_spec
Openff.qcsubmit.
Constraints
OD.add_molecule(index, mol, constraints)
OD.submit
Constraint spec
constraint_type="dihedral",
indices=[2, 0, 1, 5]
, value=60, bonded=True
C.add_set constraint
C.add_freeze_constraint
Openff.qcsubmit.results.
OptimizationResultCollection
Where does CMILES switch from being on entry to being on result?
Openff.qcsubmit.results.
OptimizationResultRecord
OFF Mols
CMILES + InChI
CMILES + InChI
Qcportal.collections.optimization_dataset.
OptEntry
client.query_procedures
List[Qcportal.models.records.
ResultRecord]
List[QCEl Mol]
client.query_molecules
Next QCSubmit (>=0.50)
ds = client.get_collection("OptimizationDataset", dataset.dataset_name) → ds = client.get_dataset(dataset.type, dataset.dataset_name)
openff.qcsubmit.datasets.datasets.TorsiondriveDataset
2024_01_05 OFFMol.from_qcschema updating
Ok, so the previous Molecule.from_qcschema could take a few types of input:
Notes
Questions
There are tests for
What's broken now?
Minimum viable fix:
Future prospects