Commit 6d406553 authored by miaecle's avatar miaecle
Browse files

update plotting script

parent d60e3a19
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -763,11 +763,14 @@ class DiskDataset(Dataset):
        else:
          shard_batch_size = batch_size

        num_local_batches = math.ceil(n_shard_samples / shard_batch_size)

        if n_shard_samples == 0:
          cur_shard += 1
          if batch_size is None:
            cur_global_batch += 1
          continue
        
        num_local_batches = math.ceil(n_shard_samples / shard_batch_size)
        if not deterministic:
          sample_perm = np.random.permutation(n_shard_samples)
        else:
+127 −0
Original line number Diff line number Diff line
import csv
import os
import numpy as np
import matplotlib.pyplot as plt
import pickle

TODO = {
  ('tox21', 'random'): ['weave', 'graphconv', 'tf', 'tf_robust', 'irv', 'xgb', 'logreg', 'textcnn'],
  ('clintox', 'random'): ['weave', 'graphconv', 'tf', 'tf_robust', 'irv', 'xgb', 'logreg', 'textcnn'],
  ('sider', 'random'): ['weave', 'graphconv', 'tf', 'tf_robust', 'irv', 'xgb', 'logreg', 'textcnn'], 
  ('bbbp', 'scaffold'): ['weave', 'graphconv', 'tf', 'irv', 'xgb', 'logreg', 'textcnn'], 
  ('bace_c', 'scaffold'): ['weave', 'graphconv', 'tf', 'irv', 'xgb', 'logreg', 'textcnn'], 
  ('hiv', 'scaffold'): ['weave', 'graphconv', 'tf', 'irv', 'xgb', 'logreg', 'textcnn'], 
  ('muv', 'random'): ['graphconv', 'tf', 'tf_robust', 'irv', 'xgb', 'logreg'], 
  ('delaney', 'random'): ['weave_regression', 'graphconvreg', 'tf_regression', 'xgb_regression', 'krr', 'textcnn_regression', 'dag_regression', 'mpnn'],
  ('sampl', 'random'): ['weave_regression', 'graphconvreg', 'tf_regression', 'xgb_regression', 'krr', 'textcnn_regression', 'dag_regression', 'mpnn'],
  ('lipo', 'random'): ['weave_regression', 'graphconvreg', 'tf_regression', 'xgb_regression', 'krr', 'textcnn_regression', 'dag_regression', 'mpnn'],
  ('qm7', 'stratified'): ['dtnn', 'graphconvreg', 'tf_regression_ft', 'krr_ft'],
  ('qm7b', 'random'): ['dtnn', 'tf_regression_ft', 'krr_ft'],
  ('qm8', 'random'): ['dtnn', 'graphconvreg', 'mpnn', 'tf_regression', 'tf_regression_ft'],
}

ORDER = [
  'logreg', 'rf', 'rf_regression', 'xgb', 'xgb_regression', 'kernelsvm', 'krr', 
  'krr_ft', 'tf', 'tf_regression', 'tf_regression_ft', 'tf_robust', 'irv', 
  'textcnn', 'textcnn_regression', 'graphconv', 'graphconvreg', 'dag', 
  'dag_regression', 'ani', 'weave', 'weave_regression', 'dtnn', 'mpnn']

COLOR = {
  'logreg': '#3F3F3F', 
  'rf': '#67AD4F', 
  'rf_regression': '#67AD4F', 
  'xgb': '#0E766C', 
  'xgb_regression': '#0E766C', 
  'kernelsvm': '#FC926B', 
  'krr': '#FC926B', 
  'krr_ft': '#5A372A', 
  'tf': '#2B6596', 
  'tf_regression': '#2B6596', 
  'tf_regression_ft': '#162939', 
  'tf_robust': '#775183', 
  'irv': '#D9D9D9', 
  'graphconv': '#A4D192',
  'graphconvreg': '#A4D192', 
  'dag': '#D06329', 
  'dag_regression': '#D06329', 
  'ani': '#D9D9D9', 
  'weave': '#8196AE',
  'weave_regression': '#8196AE', 
  'textcnn': '#811B18', 
  'textcnn_regression': '#811B18', 
  'dtnn': '#D06329', 
  'mpnn': '#7B0A48'
}
    
TODO_list = set()
for key in TODO.keys():
  for val in TODO[key]:
    TODO_list.add((key[0], key[1], val))


def read_results(path):
  Results = set()
  with open(path, 'r') as f:
    reader = csv.reader(f)
    for line in reader:
      Results.add((line[0], line[1], line[3]))
  return Results

def run_benchmark(path):
  finished = read_results(path)
  while len(TODO_list - finished) > 0:
    todo = TODO_list - finished
    for p in todo:
      os.system('python benchmark.py -seed 123 -d '+p[0]+' -s '+p[1]+' -m '+p[2])
  

def plot(dataset, split, path, out_path):
  if dataset in [
      'bace_c', 'bbbp', 'clintox', 'hiv', 'muv', 'pcba', 'pcba_146',
      'pcba_2475', 'sider', 'tox21', 'toxcast'
  ]:
    mode = 'classification'
  else:
    mode = 'regression'
  data = {}
  with open(path, 'r') as f:
    reader = csv.reader(f)
    for line in reader:
      if line[0] == dataset and line[1] == split:
        data[line[3]] = line[8]
  labels = []
  values = []
  colors = []
  for model in ORDER:
    if model in data.keys():
      labels.append(model)
      colors.append(COLOR[model])
      values.append(float(data[model]))
  y_pos = np.arange(len(labels))
  plt.rcdefaults()
  fig, ax = plt.subplots()
  
  ax.barh(y_pos, values, align='center', color='green')
  ax.set_yticks(y_pos)
  ax.set_yticklabels(labels)
  ax.invert_yaxis()
  if mode == 'regression':
    ax.set_xlabel('R square')
    ax.set_xlim(left=0., right=1.)
  else:
    ax.set_xlabel('ROC-AUC')
    ax.set_xlim(left=0.4, right=1.)
  ax.set_title("Performance on %s (%s split)" % (dataset, split))
  for i in range(len(colors)):
    ax.get_children()[i].set_color(colors[i])
    ax.text(values[i]-0.1, y_pos[i]+0.1, str("%.3f" % values[i]), color='white')
  fig.savefig(os.path.join(out_path, dataset+'_'+split+'.png'))
  plt.show()
  

if __name__ == '__main__':
  FILE = '/home/zqwu/deepchem/examples/results.csv'
  run_benchmark(FILE)
  for pair in TODO.keys():
    plot(pair[0], pair[1], FILE, os.environ['DEEPCHEM_DATA_DIR'])
  
 No newline at end of file

devtools/jenkins/plot.py

deleted100644 → 0
+0 −53
Original line number Diff line number Diff line
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Wed Jan 10 16:49:01 2018

@author: zqwu
"""

import csv
import matplotlib.pyplot as plt
import numpy as np

FILE = '/home/zqwu/deepchem/examples/results.csv'
path = FILE
dataset = 'delaney'
split = 'random'
      
ORDER = ['logreg', 'rf', 'rf_regression', 'xgb', 'xgb_regression', 
         'kernelsvm', 'krr', 'krr_ft', 'tf', 'tf_regression', 
         'tf_regression_ft', 'tf_robust', 'irv', 'graphconv',
         'graphconvreg', 'dag', 'dag_regression', 'ani', 'weave',
         'weave_regression', 'textcnn', 'textcnn_regression', 'dtnn', 'mpnn']

COLOR = {
  'logreg'
    }

def plot(dataset, split, path):
  data = {}
  with open(path, 'r') as f:
    reader = csv.reader(f)
    for line in reader:
      if line[0] == dataset and line[1] == split:
        data[line[3]] = line[8]
  labels = []
  values = []
  for model in ORDER:
    if model in data.keys():
      labels.append(model)
      values.append(float(data[model]))
  y_pos = np.arange(len(labels))
  plt.rcdefaults()
  fig, ax = plt.subplots()
  
  ax.barh(y_pos, values, align='center', color='green')
  ax.set_yticks(y_pos)
  ax.set_yticklabels(labels)
  ax.invert_yaxis()
  ax.set_xlabel('R square')
  ax.set_xlim(left=0., right=1.)
  plt.show()
  
          
 No newline at end of file