Commit 6bc98744 authored by Bharath Ramsundar's avatar Bharath Ramsundar
Browse files

Changes

parent 38d261f0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ from deepchem.feat.rdkit_grid_featurizer import RdkitGridFeaturizer
from deepchem.feat.binding_pocket_features import BindingPocketFeaturizer
from deepchem.feat.one_hot import OneHotFeaturizer
from deepchem.feat.raw_featurizer import RawFeaturizer
from deepchem.feat.raw_featurizer import RawReactionFeaturizer
from deepchem.feat.atomic_coordinates import AtomicCoordinates
from deepchem.feat.atomic_coordinates import NeighborListComplexAtomicCoordinates
from deepchem.feat.adjacency_fingerprints import AdjacencyFingerprint
+2 −0
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@ from deepchem.feat import ComplexFeaturizer
from deepchem.utils import rdkit_util, pad_array
from deepchem.utils.rdkit_util import MoleculeLoadException

logger = logging.getLogger(__name__)


class AtomicCoordinates(Featurizer):
  """
+15 −0
Original line number Diff line number Diff line
@@ -367,3 +367,18 @@ class UserDefinedFeaturizer(Featurizer):
  def __init__(self, feature_fields):
    """Creates user-defined-featurizer."""
    self.feature_fields = feature_fields


class ReactionFeaturizer(Featurizer):
  """Abstract class that featurizes reactions."""

  def _featurize(self, smarts):
    """"
    Calculate features for a single reaction.

    Parameters
    ----------
    smarts: str
      SMARTS string defining reaction.
    """
    raise NotImplementedError('Featurizer is not defined')
+32 −0
Original line number Diff line number Diff line
@@ -44,3 +44,35 @@ class RawFeaturizer(MolecularFeaturizer):
      return Chem.MolToSmiles(mol)
    else:
      return mol

class RawReactionFeaturizer(Featurizer):
  """Featurize SMARTS as RDKit Reaction objects.

  This featurizer uses RDKit's `rdkit.Chem.rdChemReactions.ReactionFromSmarts` to parse in input SMARTS strings.
  """

  def __init__(self, smarts=True):
    """
    Parameters
    ----------
    smarts: bool, optional
      If True, process smarts into rdkit Reaction objects. Else don't process.
    """
    self.smarts = smarts 

  def _featurize(self, mol):
    """
    mol: string
      The SMARTS string to process.
    """
    from rdkit.Chem import rdChemReactions
    if self.smarts:
      smarts = mol 
      # Sometimes smarts have extraneous information at end of
      # form " |f:0" that causes parsing to fail. Not sure what
      # this information is, but just ignoring for now.
      smarts = smarts.split(" ")[0]
      rxn = rdChemReactions.ReactionFromSmarts(smarts)
      return rxn
    else:
      return mol
+10 −7
Original line number Diff line number Diff line
"""
Computes physiochemical descriptors which summarize a 3D molecular complex.
"""
import logging
import os
import shutil
import time
import hashlib
import multiprocessing
from collections import Counter
from warnings import warn
from deepchem.utils.rdkit_util import load_molecule
from deepchem.utils.rdkit_util import MoleculeLoadException

import numpy as np
from scipy.spatial.distance import cdist
from copy import deepcopy
@@ -1233,8 +1239,7 @@ class RdkitGridFeaturizer(ComplexFeaturizer):
      ############################################################## TIMING
      time2 = time.time()
      logger.info(
          "TIMING: Loading protein coordinates took %0.3f s" % (time2 - time1),
          self.verbose)
          "TIMING: Loading protein coordinates took %0.3f s" % (time2 - time1))
      ############################################################## TIMING
      ############################################################## TIMING
      time1 = time.time()
@@ -1244,8 +1249,7 @@ class RdkitGridFeaturizer(ComplexFeaturizer):
      ############################################################## TIMING
      time2 = time.time()
      logger.info(
          "TIMING: Loading ligand coordinates took %0.3f s" % (time2 - time1),
          self.verbose)
          "TIMING: Loading ligand coordinates took %0.3f s" % (time2 - time1))
      ############################################################## TIMING
    except MoleculeLoadException:
      logger.warning("Some molecules cannot be loaded by Rdkit. Skipping")
@@ -1259,8 +1263,7 @@ class RdkitGridFeaturizer(ComplexFeaturizer):
    protein_xyz = subtract_centroid(protein_xyz, centroid)
    ############################################################## TIMING
    time2 = time.time()
    logger.info("TIMING: Centroid processing took %0.3f s" % (time2 - time1),
                self.verbose)
    logger.info("TIMING: Centroid processing took %0.3f s" % (time2 - time1))
    ############################################################## TIMING

    pairwise_distances = compute_pairwise_distances(protein_xyz, ligand_xyz)
Loading