def plot_rocs(title, rocs, num_pssms): """ Plot roc graphs. """ import pylab as P for bg_type, rocs_for_bg in rocs.iteritems(): for dataset, rocs_for_dataset in rocs_for_bg.iteritems(): tag = '%s-%s-%s' % (title, bg_type, dataset) fig = P.figure() for p in num_pssms: plot_roc_points(rocs_for_dataset[p][::-1], label='%d PSSMs' % (p+1)) P.legend(loc='lower right') P.title(tag) plot_random_classifier() label_plot() P.savefig(os.path.join(options.output_dir, 'roc-%s.png' % tag)) P.close(fig)
def plot_rocs(title, rocs, num_pssms): """ Plot roc graphs. """ import pylab as P for bg_type, rocs_for_bg in rocs.iteritems(): for dataset, rocs_for_dataset in rocs_for_bg.iteritems(): tag = '%s-%s-%s' % (title, bg_type, dataset) fig = P.figure() for p in num_pssms: plot_roc_points(rocs_for_dataset[p][::-1], label='%d PSSMs' % (p + 1)) P.legend(loc='lower right') P.title(tag) plot_random_classifier() label_plot() P.savefig(os.path.join(options.output_dir, 'roc-%s.png' % tag)) P.close(fig)
) aucs[bg]['AUC50'] = dict( (method, auc50s[method][0]) for method in methods ) # ROC curves P.figure() for method in methods: rocs = [roc for roc, t in roc_thresholds[method]] auc = aucs[bg]['AUC'][method] auc50 = aucs[bg]['AUC50'][method] R.plot_roc_points(rocs, label=method, marker=markers[method], color=colors[method]) R.plot_random_classifier(label='Random') R.label_plot() P.legend(loc='lower right') P.title('%s - %s' % (fragment_name(fragment), bg)) P.savefig(os.path.join(options.results_dir, 'ROC-%s-%s.png' % (fragment, bg))) P.savefig(os.path.join(options.results_dir, 'ROC-%s-%s.eps' % (fragment, bg))) P.close() # precision-recall curves P.figure() for method in methods: rocs = [roc for roc, t in roc_thresholds[method]] R.plot_precision_versus_recall(rocs, label=method, marker=markers[method], color=colors[method]) R.label_precision_versus_recall() P.legend(loc='lower left') P.title('%s - %s' % (fragment_name(fragment), bg))
pickle_file) freqs, gaps = pwm roc = run_pwm_forward_backward(tag, freqs, gaps, positive_seqs, negative_seqs) cPickle.dump(roc, open(pickle_file, 'wb')) return roc def do_pwm(tag, pwm, color, marker): roc_points = calc_or_unpickle_roc(tag, pwm, positive_seqs, negative_seqs) roc.plot_roc_points(roc_points, label=tag, color=color, marker=marker) P.figure() do_pwm('GLAM2-Sp1-i4', glam2_sp1_i4(), 'magenta', 's') do_pwm('GLAM2-Sp1-i7', glam2_sp1_i7(), 'cyan', '^') do_pwm('Gapped-Sp1', gapped_sp1(), 'blue', 'o') do_pwm('TRANSFAC-Sp1', transfac_sp1(), 'red', 'v') do_pwm('MEME-Sp1', meme_sp1(), 'green', 'd') roc.plot_random_classifier(label='Random') roc.label_plot() P.legend(loc='lower right') P.savefig('ROC.eps') P.savefig('ROC.png') P.xlim(0., .2) P.ylim(0., .5) P.savefig('ROC-zoom.eps') P.savefig('ROC-zoom.png')
methods = [] datasets_to_ignore = set(('T99004',)) show_title = False sys.argv.pop(0) # remove script name while sys.argv: method = sys.argv.pop(0) methods.append(method) file_glob = sys.argv.pop(0) logging.info('Method: %s; glob: %s', method, file_glob) load_stat_files(glob(file_glob), overall_stats[method]) styles = [ '-', '--' ] for bg in bg_types: for dataset in datasets: P.figure() for style, method in zip(styles, methods): stats = overall_stats[method] rocs = list(stats[bg][0][dataset].iteritems()) rocs.sort() rocs = [r[1] for r in rocs] plot_roc_points(rocs, linestyle=style, color='k', label=method) label_plot() P.legend(loc='lower right') if show_title: P.title('%s - %s' % (dataset, bg)) plot_random_classifier(label='random') P.savefig('ROC-%s-%s.png' % (bg, dataset)) P.savefig('ROC-%s-%s.eps' % (bg, dataset)) P.clf()
for method in methods) aucs[bg]['AUC50'] = dict( (method, auc50s[method][0]) for method in methods) # ROC curves P.figure() for method in methods: rocs = [roc for roc, t in roc_thresholds[method]] auc = aucs[bg]['AUC'][method] auc50 = aucs[bg]['AUC50'][method] R.plot_roc_points(rocs, label=method, marker=markers[method], color=colors[method]) R.plot_random_classifier(label='Random') R.label_plot() P.legend(loc='lower right') P.title('%s - %s' % (fragment_name(fragment), bg)) P.savefig( os.path.join(options.results_dir, 'ROC-%s-%s.png' % (fragment, bg))) P.savefig( os.path.join(options.results_dir, 'ROC-%s-%s.eps' % (fragment, bg))) P.close() # precision-recall curves P.figure() for method in methods: rocs = [roc for roc, t in roc_thresholds[method]] R.plot_precision_versus_recall(rocs,
pickle_file = '%s-roc.pickle'%tag try: roc = cPickle.load(open(pickle_file)) logging.info('Unpickled ROCs from %s.', pickle_file) except: logging.info('Could not unpickle %s, calculating from scratch.', pickle_file) freqs, gaps = pwm roc = run_pwm_forward_backward(tag, freqs, gaps, positive_seqs, negative_seqs) cPickle.dump(roc, open(pickle_file, 'wb')) return roc def do_pwm(tag, pwm, color, marker): roc_points = calc_or_unpickle_roc(tag, pwm, positive_seqs, negative_seqs) roc.plot_roc_points(roc_points, label=tag, color=color, marker=marker) P.figure() do_pwm('GLAM2-Sp1-i4', glam2_sp1_i4(), 'magenta', 's') do_pwm('GLAM2-Sp1-i7', glam2_sp1_i7(), 'cyan', '^') do_pwm('Gapped-Sp1', gapped_sp1(), 'blue', 'o') do_pwm('TRANSFAC-Sp1', transfac_sp1(), 'red', 'v') do_pwm('MEME-Sp1', meme_sp1(), 'green', 'd') roc.plot_random_classifier(label='Random') roc.label_plot() P.legend(loc='lower right') P.savefig('ROC.eps') P.savefig('ROC.png') P.xlim(0., .2) P.ylim(0., .5) P.savefig('ROC-zoom.eps') P.savefig('ROC-zoom.png')
methods = [] datasets_to_ignore = set(('T99004', )) show_title = False sys.argv.pop(0) # remove script name while sys.argv: method = sys.argv.pop(0) methods.append(method) file_glob = sys.argv.pop(0) logging.info('Method: %s; glob: %s', method, file_glob) load_stat_files(glob(file_glob), overall_stats[method]) styles = ['-', '--'] for bg in bg_types: for dataset in datasets: P.figure() for style, method in zip(styles, methods): stats = overall_stats[method] rocs = list(stats[bg][0][dataset].iteritems()) rocs.sort() rocs = [r[1] for r in rocs] plot_roc_points(rocs, linestyle=style, color='k', label=method) label_plot() P.legend(loc='lower right') if show_title: P.title('%s - %s' % (dataset, bg)) plot_random_classifier(label='random') P.savefig('ROC-%s-%s.png' % (bg, dataset)) P.savefig('ROC-%s-%s.eps' % (bg, dataset)) P.clf()