Commit 84ffef36 authored by joegomes's avatar joegomes
Browse files

Add User-Defined API test

parent c6b5ccaa
Loading
Loading
Loading
Loading
+18 −39
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ class TestAPI(unittest.TestCase):
                                  complex_featurizers, input_transforms,
                                  output_transforms, input_file, tasks, 
                                  protein_pdb_field=None, ligand_pdb_field=None,
                                  shard_size=100):
                                  user_specified_features=None, shard_size=100):
    # Featurize input
    featurizers = compound_featurizers + complex_featurizers

@@ -87,8 +87,10 @@ class TestAPI(unittest.TestCase):
                                ligand_pdb_field=ligand_pdb_field,
                                compound_featurizers=compound_featurizers,
                                complex_featurizers=complex_featurizers,
                                user_specified_features=user_specified_features,
                                verbose=True)
    

    #Featurizes samples and transforms them into NumPy arrays suitable for ML.
    #returns an instance of class FeaturizedSamples()

@@ -99,10 +101,16 @@ class TestAPI(unittest.TestCase):
    train_samples, test_samples = samples.train_test_split(
        splittype, self.train_dir, self.test_dir)

    use_user_specified_features = False
    if user_specified_features is not None:
      use_user_specified_features = True
 
    train_dataset = Dataset(data_dir=self.train_dir, samples=train_samples, 
                            featurizers=featurizers, tasks=tasks)
                            featurizers=featurizers, tasks=tasks,
                            use_user_specified_features=use_user_specified_features)
    test_dataset = Dataset(data_dir=self.test_dir, samples=test_samples, 
                           featurizers=featurizers, tasks=tasks)
                           featurizers=featurizers, tasks=tasks,
                           use_user_specified_features=use_user_specified_features)

    # Transforming train/test data
    train_dataset.transform(input_transforms, output_transforms)
@@ -110,36 +118,6 @@ class TestAPI(unittest.TestCase):

    return train_dataset, test_dataset

  def user_featurize_and_split(input_file, feature_dir, samples_dir, train_dir,                                                          
                          test_dir, splittype, feature_types,                                                                            
                          user_specified_features, input_transforms,                                                                     
                          output_transforms, tasks, feature_files):                    
    """Featurize inputs with user-specified-features and do train-test split."""                                                         
  featurizer = DataFeaturizer(tasks=tasks,                                                                                             
                              smiles_field="smiles",                                                                                   
                              user_specified_features=user_specified_features,                                                         
                              verbose=True)                                                                                            
                                                                                                                                       
  print("About to featurize.")                                                                                                         
  samples = featurizer.featurize(input_file, feature_dir,                                                                              
                                       samples_dir, shard_size=8)                                                                      
  print("Completed Featurization")                                                                                                     
  train_samples, test_samples = samples.train_test_split(                                                                              
      splittype, train_dir, test_dir)                                                                                                  
  print("Finished train test split.")                                                                                                  
  train_dataset = Dataset(train_dir, tasks, train_samples, feature_types,                                                              
                         use_user_specified_features=True)                                                                             
  test_dataset = Dataset(test_dir, tasks, test_samples, feature_types,                                                                 
                         use_user_specified_features=True)                                                                             
  print("Finished creating train test datasets")                                                                                       
  # Transforming train/test data                                                                                                       
  train_dataset.transform(input_transforms, output_transforms)                                                                         
  test_dataset.transform(input_transforms, output_transforms)                                                                          
  print("Finished Transforming train test data.")                                                                                      
                                                                                                                                       
  return train_dataset, test_dataset                                                   


  def test_singletask_rf_ECFP_regression_API(self):
    """Test of singletask RF ECFP regression API."""
    splittype = "scaffold"
@@ -231,15 +209,15 @@ class TestAPI(unittest.TestCase):


  def test_singletask_mlp_USF_regression_API(self):
    """Test of singletask MLP NNScore regression API."""
    """Test of singletask MLP User Specified Features regression API."""
    splittype = "scaffold"
    compound_featurizers = []
    complex_featurizers = [NNScoreComplexFeaturizer()]
    complex_featurizers = []
    input_transforms = ["normalize", "truncate"]
    output_transforms = ["normalize"]
    feature_types = ["user_specified_features"]
    user_specified_features = ["evals"]
    task_types = {"label": "regression"}
    task_types = {"u0": "regression"}
    model_params = {"nb_hidden": 10, "activation": "relu",
                    "dropout": .5, "learning_rate": .01,
                    "momentum": .9, "nesterov": False,
@@ -248,13 +226,14 @@ class TestAPI(unittest.TestCase):
                    "nb_layers": 1, "batchnorm": False}

    input_file = "gbd3k.pkl.gz"
    protein_pdb_field = "None"
    ligand_pdb_field = "None"
    protein_pdb_field = None
    ligand_pdb_field = None
    train_dataset, test_dataset = self._featurize_train_test_split(splittype, compound_featurizers,
                                                    complex_featurizers, input_transforms,
                                                    output_transforms, input_file, task_types.keys(),
                                                    protein_pdb_field=protein_pdb_field,
                                                    ligand_pdb_field=ligand_pdb_field)
                                                    ligand_pdb_field=ligand_pdb_field,
                                                    user_specified_features=user_specified_features)
    model_params["data_shape"] = train_dataset.get_data_shape()

    model = SingleTaskDNN(task_types, model_params)