Commit bcb91dc9 authored by miaecle's avatar miaecle
Browse files

adding choice of splitting function

parent 59417eba
Loading
Loading
Loading
Loading
+32 −22
Original line number Diff line number Diff line
@@ -51,8 +51,9 @@ from toxcast.toxcast_datasets import load_toxcast
from sider.sider_datasets import load_sider

def benchmark_loading_datasets(base_dir_o, hyper_parameters, 
                               dataset_name='all', model='tf', reload = True,
                               verbosity='high', out_path='/tmp'):
                               dataset_name='all', model='tf', split=None,
                               reload = True, verbosity='high', 
                               out_path='.'):
  """
  Loading dataset for benchmark test
  
@@ -71,7 +72,10 @@ def benchmark_loading_datasets(base_dir_o, hyper_parameters,
      choice of which model to use, should be: rf, tf, tf_robust, logreg,
      graphconv

  out_path : string, optional(default='/tmp')
  model : string,  optional (default=None)
      choice of splitter function, None = using the default splitter

  out_path : string, optional(default='.')
      path of result file
      
  """
@@ -105,6 +109,11 @@ def benchmark_loading_datasets(base_dir_o, hyper_parameters,
    
    time_start = time.time()
    #loading datasets
    if split is not None:
      print('Splitting function: %s' % split)  
      tasks,datasets,transformers = loading_functions[dname](
          featurizer=featurizer, split=split)
    else:
      tasks,datasets,transformers = loading_functions[dname](
          featurizer=featurizer)
    train_dataset, valid_dataset, test_dataset = datasets
@@ -375,36 +384,37 @@ if __name__ == '__main__':
  os.makedirs(base_dir_o)
  
  #Datasets and models used in the benchmark test, all=all the datasets
  dataset_name = 'tox21'
  model = 'tf'
  dataset_name = 'all'
  models = ['tf', 'tf_robust', 'logreg', 'graphconv']

  #input hyperparameters
  #tf: dropouts, learning rate, layer_sizes, weight initial stddev,penalty,
  #    batch_size
  hps = {}
  hps = {}
  hps['tf'] = [{'layer_sizes': [500], 'weight_init_stddevs': [0.02], 
                'bias_init_consts': [1.], 'dropouts': [0.5], 'penalty': 0, 
  hps['tf'] = [{'layer_sizes': [1500], 'weight_init_stddevs': [0.02], 
                'bias_init_consts': [1.], 'dropouts': [0.5], 'penalty': 0.1, 
                'penalty_type': 'l2', 'batch_size': 50, 'nb_epoch': 10, 
                'learning_rate': 0.001}]

  hps['tf_robust'] = [{'layer_sizes': [500], 'weight_init_stddevs': [0.02], 
  hps['tf_robust'] = [{'layer_sizes': [1500], 'weight_init_stddevs': [0.02], 
                       'bias_init_consts': [1.], 'dropouts': [0.5], 
                       'bypass_layer_sizes': [100], 
                       'bypass_layer_sizes': [200], 
                       'bypass_weight_init_stddevs': [0.02],
                       'bypass_bias_init_consts': [1.], 
                       'bypass_dropouts': [0.5], 'penalty': 0,
                       'bypass_dropouts': [0.5], 'penalty': 0.1,
                       'penalty_type': 'l2', 'batch_size': 50, 
                       'nb_epoch': 10, 'learning_rate': 0.001}]
                       'nb_epoch': 10, 'learning_rate': 0.0005}]
             
  hps['logreg'] = [{'penalty': 0, 'penalty_type': 'l2', 'batch_size': 50, 
                    'nb_epoch': 10, 'learning_rate': 0.001}]
  hps['logreg'] = [{'penalty': 0.1, 'penalty_type': 'l2', 'batch_size': 50, 
                    'nb_epoch': 10, 'learning_rate': 0.005}]
                
  hps['graphconv'] = [{'batch_size': 50, 'nb_epoch': 10, 
                       'learning_rate': 0.001, 'n_filters': 64, 
                       'n_fully_connected_nodes': 128}]
                       'learning_rate': 0.0005, 'n_filters': 64, 
                       'n_fully_connected_nodes': 128, 'seed': 123}]

  hps['rf'] = [{'n_estimators': 500}]
         
  for model in models:
    benchmark_loading_datasets(base_dir_o, hps, dataset_name=dataset_name,
                             model=model, reload=reload, verbosity='high')
                               model=model, split='random', verbosity='high', out_path='.')
+5 −2
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ import numpy as np
import shutil
import deepchem as dc

def load_muv(featurizer='ECFP'):
def load_muv(featurizer='ECFP', split='index'):
  """Load MUV datasets. Does not do train/test split"""
  # Load MUV dataset
  print("About to load MUV dataset.")
@@ -42,7 +42,10 @@ def load_muv(featurizer='ECFP'):
  for transformer in transformers:
    dataset = transformer.transform(dataset)

  splitter = dc.splits.IndexSplitter()
  splitters = {'index': dc.splits.IndexSplitter(),
               'random': dc.splits.RandomSplitter(),
               'scaffold': dc.splits.ScaffoldSplitter()}
  splitter = splitters[split]
  train, valid, test = splitter.train_valid_test_split(
	dataset, compute_feature_statistics=False)
  return MUV_tasks, (train, valid, test), transformers
+6 −2
Original line number Diff line number Diff line
@@ -13,7 +13,8 @@ import numpy as np
import shutil
import deepchem as dc

def load_nci(featurizer='ECFP', shard_size=1000, num_shards_per_batch=4):
def load_nci(featurizer='ECFP', shard_size=1000, 
             num_shards_per_batch=4, split='random'):

  current_dir = os.path.dirname(os.path.realpath(__file__))

@@ -62,7 +63,10 @@ def load_nci(featurizer='ECFP', shard_size=1000, num_shards_per_batch=4):
  for transformer in transformers:
    dataset = transformer.transform(dataset)
  
  splitter = dc.splits.RandomSplitter()
  splitters = {'index': dc.splits.IndexSplitter(),
               'random': dc.splits.RandomSplitter(),
               'scaffold': dc.splits.ScaffoldSplitter()}
  splitter = splitters[split]
  print("Performing new split.")
  train, valid, test = splitter.train_valid_test_split(dataset,
	compute_feature_statistics=False)
+6 −3
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ import numpy as np
import shutil
import deepchem as dc

def load_pcba(featurizer='ECFP'):
def load_pcba(featurizer='ECFP', split='random'):
  """Load PCBA datasets. Does not do train/test split"""
  
  current_dir = os.path.dirname(os.path.realpath(__file__))
@@ -63,7 +63,10 @@ def load_pcba(featurizer='ECFP'):
  for transformer in transformers:
    dataset = transformer.transform(dataset)
  
  splitter = dc.splits.RandomSplitter()
  splitters = {'index': dc.splits.IndexSplitter(),
               'random': dc.splits.RandomSplitter(),
               'scaffold': dc.splits.ScaffoldSplitter()}
  splitter = splitters[split]
  print("Performing new split.")
  train, valid, test = splitter.train_valid_test_split(
	dataset, compute_feature_statistics=False)
+5 −2
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@ import numpy as np
import shutil
import deepchem as dc

def load_sider(featurizer='ECFP'):
def load_sider(featurizer='ECFP', split='index'):
  current_dir = os.path.dirname(os.path.realpath(__file__))

	  # Load SIDER dataset
@@ -46,7 +46,10 @@ def load_sider(featurizer='ECFP'):
  for transformer in transformers:
    dataset = transformer.transform(dataset)

  splitter = dc.splits.IndexSplitter()
  splitters = {'index': dc.splits.IndexSplitter(),
               'random': dc.splits.RandomSplitter(),
               'scaffold': dc.splits.ScaffoldSplitter()}
  splitter = splitters[split]
  train, valid, test = splitter.train_valid_test_split(dataset,
      compute_feature_statistics=False)

Loading