def main(run_dir, cluster_file, genes=None): if genes is None: genes = [4,5,7,11] funcs = [get_gene_fn(i) for i in genes] labels = [genome.get_label(i, abbr=True) for i in genes] plot(cluster_file, funcs, labels, plot_title="Representative Gene Values", run_dir=run_dir)
def main(run_dir, cluster_file, genes=None): if genes is None: genes = [4, 5, 7, 11] funcs = [get_gene_fn(i) for i in genes] labels = [genome.get_label(i, abbr=True) for i in genes] plot(cluster_file, funcs, labels, plot_title="Representative Gene Values", run_dir=run_dir)
root = 'plots/' root += os.path.basename(cluster) root = root.rsplit('.', 1)[0] outfile = "%s_%s.png" % (root, options.mode) if options.mode == 'complexity': plot(cluster, outfile, filter=lambda a: a.complexity, func=lambda a: a.complexity, cmap=options.cmap) elif options.mode == 'fitness': plot(cluster, outfile, filter=lambda a: a.fitness, func=lambda a: a.fitness, cmap=options.cmap) elif options.gene is not None: if not options.outfile: outfile = "%s_%s%d_%s.png" % (root, options.mode, options.gene, genome.get_label(options.gene)) plot(cluster, outfile, func=lambda a: a.genome[options.gene], plot_title=genome.get_label(options.gene), cmap=options.cmap) else: parser.print_help() print "\n*** ERROR: Please specify an action! ***"
def plot(genes, filename="plot.png", plot_title='', cmap='Paired', draw_legend=False): # get population p = get_population() # initialize population count pops = [[] for i in xrange(30000)] for a in p: for step in range(a.birth, a.death): pops[step].append(a) # initialize plot variables cmap = pylab.cm.jet lines = [] # build plot for each gene for i, gene in enumerate(genes): # initialize line variables data = [] err_up = [] err_down = [] # calculate points for each time step for step in xrange(30000): datum = [agent.genome[gene] for agent in pops[step]] mean = sum(datum) / len(pops[step]) stderr = np.std(datum) / sqrt(len(pops[step])) # calculate 1 std dev error bars err_up.append(min(mean + np.std(datum), 255)) err_down.append(max(mean - np.std(datum), 0)) data.append(mean) # TODO: Implement stderr/stddev toggle """ # calculate 1 std err error bars err_up.append(min(mean+stderr, 255)) err_down.append(max(mean-stderr,0)) """ color = cmap(float(i) / len(genes)) # use error bars fill = pylab.fill_between(range(0, 30000, 5), err_up[::5], err_down[::5], color=color, alpha=0.35, linewidth=0, edgecolor=None, facecolor=color) # plot line line = pylab.plot(range(30000), data, color=color) # append to list of lines for use with data legend lines.append(line) # plot all the things pylab.title("Size and Internal Neural Group Count (INGC)", weight='black') pylab.ylim(0, 255) pylab.xlim(0, 30000) pylab.ylabel("Raw Gene Value", weight='bold') pylab.xlabel("Time", weight='bold') pylab.legend(lines, [get_label(gene) for gene in genes], loc='center right') pylab.figtext(0, .948, '(d)', size=6, weight='black') pylab.savefig("plots/test.pdf", dpi=300)
def plot(genes, filename="plot.png", plot_title='', cmap='Paired', draw_legend=False): # get population p = get_population() # initialize population count pops = [[] for i in xrange(30000)] for a in p: for step in range(a.birth, a.death): pops[step].append(a) # initialize plot variables cmap = pylab.cm.jet lines=[] # build plot for each gene for i, gene in enumerate(genes): # initialize line variables data = [] err_up = [] err_down = [] # calculate points for each time step for step in xrange(30000): datum = [agent.genome[gene] for agent in pops[step]] mean = sum(datum) / len(pops[step]) stderr = np.std(datum) / sqrt(len(pops[step])) # calculate 1 std dev error bars err_up.append(min(mean+np.std(datum), 255)) err_down.append(max(mean-np.std(datum),0)) data.append(mean) # TODO: Implement stderr/stddev toggle """ # calculate 1 std err error bars err_up.append(min(mean+stderr, 255)) err_down.append(max(mean-stderr,0)) """ color = cmap(float(i)/len(genes)) # use error bars fill = pylab.fill_between(range(0,30000,5), err_up[::5], err_down[::5], color=color, alpha=0.35, linewidth=0, edgecolor=None, facecolor=color) # plot line line = pylab.plot(range(30000), data, color=color) # append to list of lines for use with data legend lines.append(line) # plot all the things pylab.title("Size and Internal Neural Group Count (INGC)", weight='black') pylab.ylim(0, 255) pylab.xlim(0, 30000) pylab.ylabel("Raw Gene Value", weight='bold') pylab.xlabel("Time", weight='bold') pylab.legend(lines, [get_label(gene) for gene in genes], loc='center right') pylab.figtext(0,.948, '(d)', size=6, weight='black') pylab.savefig("plots/test.pdf", dpi=300)
def calc_entropy(gene): e = 1 - gene_entropy(gene, N) return (gene, e, get_label(gene))
], fontsize=8) legend([b[0] for b in bars], labels, loc='upper left', prop=dict(size=6)) savefig(filename, dpi=200) if __name__ == '__main__': import sys from optparse import OptionParser usage = "usage: %prog [options] cluster_file" parser = OptionParser(usage) options, args = parser.parse_args() if args: cluster = args[-1] plot(cluster, funcs=(lambda x: Agent(x).genome[4] / 255.0, lambda x: Agent(x).genome[5] / 255.0, lambda x: Agent(x).genome[7] / 255.0, lambda x: Agent(x).genome[11] / 255.0, lambda x: Agent(x).complexity), labels=[ genome.get_label(4), genome.get_label(5), genome.get_label(7), genome.get_label(11), 'complexity' ])
def calc_entropy(gene): e = 1- gene_entropy(gene, N) return (gene, e, get_label(gene))
for i, clust in enumerate(clusters)], fontsize=8) legend([b[0] for b in bars], labels, loc='upper left', prop=dict(size=6)) savefig(filename, dpi=200) if __name__ == '__main__': import sys from optparse import OptionParser usage = "usage: %prog [options] cluster_file" parser = OptionParser(usage) options, args = parser.parse_args() if args: cluster = args[-1] plot(cluster, funcs=(lambda x: Agent(x).genome[4] / 255.0, lambda x: Agent(x).genome[5] / 255.0, lambda x: Agent(x).genome[7] / 255.0, lambda x: Agent(x).genome[11] / 255.0, lambda x: Agent(x).complexity), labels=[genome.get_label(4), genome.get_label(5), genome.get_label(7), genome.get_label(11), 'complexity' ])
else: #autoname rendering if not os.path.isdir('plots'): os.mkdir('plots') root = 'plots/' root += os.path.basename(cluster) root = root.rsplit('.', 1)[0] outfile = "%s_%s.png" % (root, options.mode) if options.mode == 'complexity': plot(cluster, outfile, filter=lambda a: a.complexity, func=lambda a: a.complexity, cmap=options.cmap) elif options.mode == 'fitness': plot(cluster, outfile, filter=lambda a: a.fitness, func=lambda a: a.fitness, cmap=options.cmap) elif options.gene is not None: if not options.outfile: outfile = "%s_%s%d_%s.png" % (root, options.mode, options.gene, genome.get_label(options.gene)) plot(cluster, outfile, func=lambda a: a.genome[options.gene], plot_title=genome.get_label(options.gene), cmap=options.cmap) else: parser.print_help() print "\n*** ERROR: Please specify an action! ***"