Example #1
0
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])
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)
Example #5
0
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])
Example #6
0
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)
Example #7
0
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