Commit 4744652d authored by Bharath Ramsundar's avatar Bharath Ramsundar
Browse files

Most recent version of code

parent 3eaec408
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ install:
- conda install six
- conda install dill
- conda install runipy
- conda install ipyparallel
- pip install runipy
- pip install nglview
- conda install -c omnia mdtraj 
+7 −0
Original line number Diff line number Diff line
@@ -714,32 +714,39 @@ class NNScoreComplexFeaturizer(ComplexFeaturizer):
    """
    Compute Binana fingerprint for complex.
    """
    print("In _featurize_complex")
    mol_pdb_file = tempfile.NamedTemporaryFile(suffix="pdb")
    with open(mol_pdb_file.name, "w") as mol_f:
      mol_f.writelines(mol_pdb)
    protein_pdb_file = tempfile.NamedTemporaryFile(suffix="pdb")
    with open(protein_pdb_file.name, "w") as protein_f:
      protein_f.writelines(protein_pdb)
    print("Written temp pdb files")

    mol_hyd_file = tempfile.NamedTemporaryFile(suffix="pdb")
    mol_pdbqt_file = tempfile.NamedTemporaryFile(suffix="pdbqt")
    hydrogenate_and_compute_partial_charges(
        mol_pdb_file.name, "pdb", mol_hyd_file.name,
        mol_pdbqt_file.name)
    print("Hydrogenated mol file")

    protein_hyd_file = tempfile.NamedTemporaryFile(suffix="pdb")
    protein_pdbqt_file = tempfile.NamedTemporaryFile(suffix="pdbqt")
    hydrogenate_and_compute_partial_charges(
        protein_pdb_file.name, "pdb", protein_hyd_file.name,
        protein_pdbqt_file.name)
    print("Hydrogenated protein file")

    mol_pdb_obj = PDB()
    mol_pdb_obj.load_from_files(mol_pdb_file.name, mol_pdbqt_file.name)
    print("Loaded mol pdb object")

    protein_pdb_obj = PDB()
    protein_pdb_obj.load_from_files(
        protein_pdb_file.name, protein_pdbqt_file.name)
    print("Loaded protein pdb object")

    features = self.binana.compute_input_vector(mol_pdb_obj, protein_pdb_obj)
    print("Computed binana features.")

    return features
+2 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ class TestNNScoreComplexFeaturizer(unittest.TestCase):
    """
    Create internal featurizer.
    """
    print("Doing setup")
    self.nnscore_featurizer = NNScoreComplexFeaturizer()
    ### 3zso comes from PDBBind-CN
    _3zso_protein_pdb_file = os.path.join(data_dir(), "3zso_protein.pdb")
@@ -31,6 +32,7 @@ class TestNNScoreComplexFeaturizer(unittest.TestCase):
      _3zso_ligand_pdb = f.readlines()

    self.test_cases = [("3zso", _3zso_ligand_pdb, _3zso_protein_pdb)]
    print("Done with setup")

  def testNNScore(self):
    """
+11 −3
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ class HyperparamOpt(object):
    self.task_types = task_types

  def hyperparam_search(self, params_dict, train_dataset, valid_dataset,
                        output_transformers, metric):
                        output_transformers, metric, verbosity=None):
    """Perform hyperparams search according to params_dict.
    
    Each key to hyperparams_dict is a model_param. The values should be a list
@@ -44,7 +44,7 @@ class HyperparamOpt(object):
        model_params[hyperparam] = hyperparam_val

      model_dir = tempfile.mkdtemp()
      model = self.model_class(self.task_types, model_params, verbosity=None)
      model = self.model_class(self.task_types, model_params, verbosity=verbosity)
      model.fit(train_dataset)
      model.save(model_dir)
    
@@ -54,6 +54,7 @@ class HyperparamOpt(object):
      valid_score = score.iloc[0][metric]
      print("Model %d/%d, Metric %s, Validation set %s: %f" %
            (ind, number_combinations, metric, ind, valid_score))
      print("\tbest_validation_score so  far: %f" % best_validation_score)
      all_scores[hyperparameter_tuple] = valid_score
    
      if valid_score > best_validation_score:
@@ -66,6 +67,13 @@ class HyperparamOpt(object):
      else:
        shutil.rmtree(model_dir)

    train_csv_out = tempfile.NamedTemporaryFile()
    train_stats_out = tempfile.NamedTemporaryFile()
    train_evaluator = Evaluator(best_model, train_dataset, output_transformers)
    train_df, train_score = train_evaluator.compute_model_performance(
        train_csv_out, train_stats_out)
    train_score = train_score.iloc[0][metric]
    print("Best hyperparameters: %s" % str(zip(hyperparams, best_hyperparams)))
    print("best_validation_score: %f" % best_validation_score)
    print("train_score: %f" % train_score)
    print("validation_score: %f" % best_validation_score)
    return best_model, best_hyperparams, all_scores
+7 −1
Original line number Diff line number Diff line
@@ -127,7 +127,10 @@ class Model(object):
    task_names = dataset.get_task_names()
    pred_task_names = ["%s_pred" % task_name for task_name in task_names]
    w_task_names = ["%s_weight" % task_name for task_name in task_names]
    column_names = (['ids'] + task_names + pred_task_names + w_task_names
    raw_task_names = [task_name+"_raw" for task_name in task_names]
    raw_pred_task_names = [pred_task_name+"_raw" for pred_task_name in pred_task_names]
    column_names = (['ids'] + raw_task_names + task_names
                    + raw_pred_task_names + pred_task_names + w_task_names
                    + ["y_means", "y_stds"])
    pred_y_df = pd.DataFrame(columns=column_names)

@@ -147,12 +150,15 @@ class Model(object):
      y_pred = np.reshape(y_pred, np.shape(y))

      # Now undo transformations on y, y_pred
      y_raw, y_pred_raw = y, y_pred
      y = undo_transforms(y, transformers)
      y_pred = undo_transforms(y_pred, transformers)

      shard_df = pd.DataFrame(columns=column_names)
      shard_df['ids'] = ids
      shard_df[raw_task_names] = y_raw
      shard_df[task_names] = y
      shard_df[raw_pred_task_names] = y_pred_raw
      shard_df[pred_task_names] = y_pred
      shard_df[w_task_names] = w
      pred_y_df = pd.concat([pred_y_df, shard_df])
Loading