Open jchodera opened 7 years ago
We can also create a base class for protein:ligand test systems, such as BindingTestSystem
, which can handle additional optional arguments that specify whether heavy atoms are to be restrained to reduce conformational sampling timescales. This may be useful for perses as well.
We probably also want a way to access TestSystem
components for separate receptor-only and ligand-only systems. I'm not sure if I want to make these separate independent TestSystem
classes, members of the BindingTestSystem
object, or just have the separate component classes as members of the BindingTestSystem
object.
Option 1: Separate TestSystem
objects
from openmmtools.testsystems import AblImatinibExplicit, AblExplicit, ImatinibExplicit
complex = AblImatinibExplicit(restrain_heavy_atoms=True)
receptor = AblExplicit(restrain_heavy_atoms=True)
ligand = ImatinibExplicit()
Option 2: Receptor and ligand systems are member fields
from openmmtools.testsystems import AblImatinibExplicit
complex = AblImatinibExplicit(restrain_heavy_atoms=True)
receptor = complex.receptor # this is also a TestSystem object
ligand = complex.ligand # this is also a TestSystem object
Option 3: Receptor and ligand TestSystem classes are member fields
from openmmtools.testsystems.complexes import AblImatinibExplicit
complex = AblImatinibExplicit(restrain_heavy_atoms=True)
receptor = complex.receptor_testsystem() # create TestSystem object
ligand = complex.ligand_testsystem() # create TestSystem object
# Receptor and ligand can also be instantiated separately
from openmmtools.testsystems import AblExplicit, ImatinibExplicit
receptor = AblExplicit()
ligand = ImatinibExplicit()
I'm currently favoring option 2 or 3.
Any thoughts @pgrinaway?
We should add Abl:imatinib complex test systems that include separate complex, ligand, and protein testsystems.
We can port one over that is generated by YANK.