def enrichment(exp, aspect, n=100): aspect = set(aspect) if not aspect.intersection('CFP'): flash("That's not a valid aspect, try C, F, and/or P") return redirect(url_for('experiment', exp=exp)) exp_data = es.experiment() if exp_data is not None: exp_data = exp_data[exp] else: flash("You need to implement <code>experiment()</code> first!") return redirect(url_for('experiment', exp=exp)) go_list = [es.go_aspect(a) for a in aspect] if None in go_list: flash("You need to implement <code>go_aspect()</code> first!") return redirect(url_for('experiment', exp=exp)) go_list = list(reduce(set.union, go_list, set())) go_info = {goid:es.go_info(goid) for goid in go_list} go_dict = {gene:es.go_to_gene(gene) for gene in go_list} scores = hs.calculate_enrichment(exp_data, go_dict, n) return render_template("enrichment.html", exp=exp, go_info=go_info, e_scores=scores[0][:10], ne_scores=scores[1][:10])
def experiment(exp): exp_data = es.experiment() if exp_data is not None: genes = [(es.gene_name(g) or 'Implement gene_name()!', v) for g,v in exp_data[exp]] fig_dict = hs.plot_experiment(genes) else: fig_dict = None return render_template("experiment.html", exp=exp, fig_dict=fig_dict)
def homepage(): exp_data = es.experiment() # exp_data = None if exp_data is not None: exps = np.random.choice(list(range(len(exp_data))), size=10, replace=False) else: exps = [] return render_template("index.html", experiments=exps)
def homepage(): exp_data = es.experiment() if exp_data is not None: exps = np.random.randint(0, len(exp_data), size=10) fig_path = hs.plot_experiment_overview(exp_data) else: exps = [] fig_path = None return render_template("index.html", experiments=exps, fig_path=fig_path)
def gene_list(exp, top_or_bottom, n=10): exp_data = es.experiment() if exp_data is not None: exp_data = exp_data[exp] else: flash("You need to implement <code>experiment()</code> first!") return redirect(url_for('experiment', exp=exp)) if top_or_bottom == 'top': genes = sorted(exp_data, key=lambda g: g[1], reverse=True)[:n] elif top_or_bottom == 'bottom': genes = sorted(exp_data, key=lambda g: g[1])[:n] else: flash("That's not a valid URL") return redirect(url_for('experiment', exp=exp)) return render_template("gene_list.html", label=top_or_bottom, n=n, exp=exp, genes=[(g, es.gene_name(g), v) for g,v in genes])
def experiment(exp, n=10): exp_data = es.experiment() if exp_data is not None: genes = [(es.gene_name(g) or 'Implement gene_name()!', v) for g,v in exp_data[exp]] fig_dict = hs.plot_experiment(genes) if fig_dict is None: flash("You could maybe implement <code>plot_experiment()</code>") similar_exp = hs.similar_experiments(exp, exp_data, n) if similar_exp is None: flash("You could maybe implement <code>similar_experiments()</code>") similar_exp = [] else: flash("You should implement <code>experiment()</code> and <code>plot_experiment()</code>") fig_dict = None similar_exp = [] return render_template("experiment.html", exp=exp, n=n, fig_dict=fig_dict, similar_exp=similar_exp)
def enrichment(exp, aspect, n=100): aspect = set(aspect) if not aspect.intersection('CFP'): flash("That's not a valid aspect, try C, F, and/or P") return redirect(url_for('experiment', exp=exp)) exp_data = es.experiment() if exp_data is not None: exp_data = exp_data[exp] else: flash("You need to implement <code>experiment()</code> first!") return redirect(url_for('experiment', exp=exp)) go_list = list(reduce(set.union, (es.go_aspect(a) for a in aspect), set())) go_info = {goid:es.go_info(goid) for goid in go_list} go_dict = {gene:es.go_to_gene(gene) for gene in go_list} scores = hs.calculate_enrichment(exp_data, go_dict, n) return render_template("enrichment.html", exp=exp, go_info=go_info, e_scores=scores[0][:10], ne_scores=scores[1][:10])
def calculate_enrichment(N=100): # You need to replace this with something useful experiment_dict = eas.experiment(); counttop100 = {} countbot100 = {} goid_prob_top = {} goid_prob_bot = {} #initialize dictionary of goids with open("go_info.txt", 'r') as target: target.readline(); for line in target: lines = line.split(); counttop100[lines[0]] = np.zeros(32) #goid counts in top 100 countbot100[lines[0]] = np.zeros(32) #goid counts in top 100 goid_prob_top[lines[0]] = np.zeros(32) #goid prob goid_prob_bot[lines[0]] = np.zeros(32) #goid prob #add values for goid for i in range(0, 33): sorted_genes = experiment_dict[i].sort(key=lambda tup: tup[1]) top100 = sorted_genes[0:100] bot100 = sorted_genes[-100:0] #go hrough top 100, want list of goIds, count for top/bot100 for j in range(0, 100): counttop100[ gene_to_go[ top100[j][0] ] ][i] += 1 countbot100[ gene_to_go[ top100[j][0] ] ][i] += 1 #hypergeom, what is the probability i got that many counts from top 100 #top for j in counttop100: gene_per_go = len(go_to_gene[j]) [ M, n, N] = [4767, gene_per_go, N]; rv = scistat.hypergeom(M, n, N) x = np.arange(0, counttop100[j][i] + 1) survival_exp = rv.sf(x) goid_prob_top[j][i] = survival_exp for j in countbot100: gene_per_go = len(go_to_gene[j]) [ M, n, N] = [4767, gene_per_go, N]; rv = scistat.hypergeom(M, n, N) x = np.arange(0, countbot100[j][i] + 1) survival_exp = rv.sf(x) goid_prob_bot[j][i] = survival_exp #for j in experiment_dict[i]: # mainstuff[ gene_to_go[j[0]] ][i] += j[1] #sort by exp values # mainstuff.sort(key=lambda tup: tup[1]) #take top 100 heatmaptop = plt.pcolor(goid_prob_top); heatmapbot = plt.pcolor(goid_prob_bot); plt.show() positive_enrichment_scores = goid_prob_top; negative_enrichment_scores = goid_prob_bot; return positive_enrichment_scores,negative_enrichment_scores