# sort by LL and select best mixtures.sort() best_bound, best_mixture = mixtures[-1] logging.info("Best variational bound = %f", best_bound) # save model if requested if options.model_file: logging.info("Saving model to %s", options.model_file) cPickle.dump(best_mixture, open(options.model_file, "w")) # plot distribution if requested if options.plot_file: logging.info("Plotting distribution to %s", options.plot_file) from cookbook.pylab_utils import set_rcParams_for_latex, get_fig_size_for_latex set_rcParams_for_latex() # fig_size = get_fig_size_for_latex(1000) pl.rcParams["figure.figsize"] = (4.652, 3.2) pl.figure() mixture_x, mixture = best_mixture.plot(log=options.log_plot, legend=False) pl.savefig("mixture-%s.eps" % options.plot_file, format="eps") pl.close() mixture_x, mixture = best_mixture.plot(log=options.log_plot, legend=False, scale=False) pl.savefig("mixture-unscaled-%s.eps" % options.plot_file, format="eps") pl.close() beta.plot_density_with_R(x, weights, options.plot_file, mixture_x, mixture, adjust=0.15) # write predictions if requested if options.predictions_file:
P.loglog(fasta_sizes, stem_timings[ W], label='STEME W=%d' % W, ls='-', color=colour) P.loglog(fasta_sizes, meme_timings[ W], label='MEME W=%d' % W, ls='-.', color=colour) P.legend(loc='upper left') P.xlabel('\\# bases in data set') P.ylabel('seconds') P.savefig(os.path.join(output_dir, 'timings.eps')) P.savefig(os.path.join(output_dir, 'timings.png')) P.close() # # do the timings. # pylab_utils.set_rcParams_for_latex() stem_timings = DictOf(list) meme_timings = DictOf(list) fasta_sizes = [] for fasta in fastas: for W in Ws: options.min_w = options.max_w = W options.output_dir = os.path.join( output_dir, 'W=%02d-%s' % (W, stempy.basename_wo_ext(fasta))) stempy.ensure_dir_exists(options.output_dir) stem_algorithm = stem.Algorithm(options) meme_algorithm = meme.Algorithm(options) stem_timings[W].append(timeit(lambda: stem_algorithm(fasta))) meme_timings[W].append(timeit(lambda: meme_algorithm(fasta))) fasta_sizes.append(stem_algorithm.num_bases) save_timings()