Commit 0df22e3f authored by Bharath Ramsundar's avatar Bharath Ramsundar
Browse files

Adding abstract superclasses

parent 9fed36f2
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5,8 +5,10 @@ from __future__ import print_function
from __future__ import division
from __future__ import unicode_literals

from deepchem.dock.pose_generation import PoseGenerator
from deepchem.dock.pose_generation import VinaPoseGenerator
from deepchem.dock.pose_scoring import PoseScorer
from deepchem.dock.pose_scoring import GridPoseScorer
from deepchem.dock.docking import Docker
from deepchem.dock.docking import VinaGridRFDocker
from deepchem.dock.docking import VinaGridDNNDocker
+4 −4
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ from deepchem.feat import GridFeaturizer
from deepchem.data import DiskDataset
from deepchem.models import SklearnModel
from deepchem.models import TensorflowMultiTaskRegressor
from deepchem.dock.pose_scoring import PoseScorer
from deepchem.dock.pose_scoring import GridPoseScorer
from deepchem.dock.pose_generation import VinaPoseGenerator
from sklearn.ensemble import RandomForestRegressor
from subprocess import call
@@ -27,7 +27,7 @@ class Docker(object):
  def dock(self, protein_file, ligand_file):
    raise NotImplementedError

class VinaGridRFDocker(object):
class VinaGridRFDocker(Docker):
  """Vina pose-generation, RF-models on grid-featurization of complexes."""

  def __init__(self):
@@ -43,7 +43,7 @@ class VinaGridRFDocker(object):
    model = SklearnModel(model_dir=self.model_dir)
    model.reload()

    self.pose_scorer = PoseScorer(model, feat="grid")
    self.pose_scorer = GridPoseScorer(model, feat="grid")
    self.pose_generator = VinaPoseGenerator() 

  def dock(self, protein_file, ligand_file):
@@ -73,7 +73,7 @@ class VinaGridDNNDocker(object):
        learning_rate=0.0003, weight_init_stddevs=[.1], batch_size=64)
    model.reload()

    self.pose_scorer = PoseScorer(model, feat="grid")
    self.pose_scorer = GridPoseScorer(model, feat="grid")
    self.pose_generator = VinaPoseGenerator() 

  def dock(self, protein_file, ligand_file):
+8 −1
Original line number Diff line number Diff line
@@ -16,6 +16,13 @@ import tempfile
from deepchem.feat import hydrogenate_and_compute_partial_charges
from subprocess import call

class PoseGenerator(object):
  """Abstract superclass for all pose-generation routines."""

  def generate_poses(self, protein_file, ligand_file, out_dir=None):
    """Generates the docked complex and outputs files for docked complex."""
    raise NotImplementedError

def write_conf(receptor_filename, ligand_filename, centroid, box_dims,
               conf_filename, exhaustiveness=None):
  """Writes Vina configuration file to disk."""
@@ -48,7 +55,7 @@ def get_molecule_data(pybel_molecule):
  return protein_centroid, protein_range


class VinaPoseGenerator(object):
class VinaPoseGenerator(PoseGenerator):

  def __init__(self, exhaustiveness=1):
    """Initializes Vina Pose generation"""
+7 −0
Original line number Diff line number Diff line
@@ -17,6 +17,13 @@ from deepchem.data import NumpyDataset
from subprocess import call

class PoseScorer(object):
  """Abstract superclass for all scoring methods."""

  def score(self, protein_file, ligand_file):
    """Returns a score for a protein/ligand pair."""
    raise NotImplementedError

class GridPoseScorer(object):

  def __init__(self, model, feat="grid"):
    """Initializes a pose-scorer."""
+2 −2
Original line number Diff line number Diff line
@@ -39,7 +39,7 @@ class TestPoseScoring(unittest.TestCase):
    print("About to fit model on core set")
    model.fit(self.core_dataset)

    pose_scorer = dc.dock.PoseScorer(model, feat="grid")
    pose_scorer = dc.dock.GridPoseScorer(model, feat="grid")

  def test_pose_scorer_score(self):
    """Tests that scores are generated"""
@@ -52,6 +52,6 @@ class TestPoseScoring(unittest.TestCase):
    print("About to fit model on core set")
    model.fit(self.core_dataset)

    pose_scorer = dc.dock.PoseScorer(model, feat="grid")
    pose_scorer = dc.dock.GridPoseScorer(model, feat="grid")
    score = pose_scorer.score(protein_file, ligand_file)
    assert score.shape == (1,)