Beispiel #1
0
def get_clusters(analysis, data_types):
    cluster_json = {}
    for data_type in data_types:
        analysis_data = get_last_analysis_data(analysis, data_type)
        data_df, design_df = get_dataframes(analysis_data, PKS[data_type],
                                            SAMPLE_COL)
        if data_type == GENOMICS:
            inference = WebOmicsInference(data_df, design_df, data_type)
            df = inference.standardize_df(inference.data_df)
        elif data_type == PROTEOMICS or data_type == METABOLOMICS:
            inference = WebOmicsInference(data_df,
                                          design_df,
                                          data_type,
                                          min_value=5000)
            df = inference.standardize_df(inference.data_df, log=True)
        if not df.empty:
            net = Network()
            net.load_df(df)
            net.cluster()
            data_type_label = {
                GENOMICS: 'gene',
                PROTEOMICS: 'protein',
                METABOLOMICS: 'compound'
            }
            label = data_type_label[data_type]
            json_data = net.export_net_json()
            cluster_json[label] = json_data
    return cluster_json
Beispiel #2
0
def exp_heatmap_json(request):
    import pandas as pd
    from clustergrammer import Network
    columns = [i.name for i in Exp._meta.get_fields()]
    #exps = Exp.objects.all().using("expDb").values_list("gene_id", "control_0", "control_1", "control_2", "treated_0", "treated_1", "treated_2")
    exps = Exp.objects.all().using("expDb").values()
    df = pd.DataFrame(list(exps), columns=columns)
    df.index = df.gene_id
    df = df.loc[:, df.columns[1:]]
    net = Network()
    net.load_df(df)

    # Z-score normalize the rows
    net.normalize(axis='row', norm_type='zscore', keep_orig=True)

    # filter for the top 100 columns based on their absolute value sum
    net.filter_N_top('col', 100, 'sum')

    # cluster using default parameters
    net.cluster()

    # save visualization JSON to file for use by front end
    data = net.export_net_json('viz')
    data = json.loads(data)
    #print(data)
    response = {
        'data': data,
    }
    return JsonResponse(response, content_type='application/json')
def main(buff, inst_filename, mongo_address, viz_id):
    import numpy as np
    import flask
    from bson.objectid import ObjectId
    from pymongo import MongoClient
    from flask import request
    from clustergrammer import Network
    import StringIO

    client = MongoClient(mongo_address)
    db = client.clustergrammer

    viz_id = ObjectId(viz_id)
    found_viz = db.networks.find_one({'_id': viz_id})

    try:

        net = Network()
        net.load_tsv_to_net(buff)

        net.swap_nan_for_zero()

        views = ['N_row_sum', 'N_row_var']

        net.make_clust(dist_type='cosine', dendro=True, views=views, \
                       linkage_type='average')

        export_dat = {}
        export_dat['name'] = inst_filename
        export_dat['dat'] = net.export_net_json('dat')
        export_dat['source'] = 'user_upload'

        dat_id = db.network_data.insert(export_dat)

        update_viz = net.viz
        update_dat = dat_id

    except:
        print('\n-----------------------')
        print('error in clustering')
        print('-----------------------\n')
        update_viz = 'error'
        update_dat = 'error'

    found_viz['viz'] = update_viz
    found_viz['dat'] = update_dat

    db.networks.update_one({'_id': viz_id}, {'$set': found_viz})

    client.close()
Beispiel #4
0
from clustergrammer import Network
net = Network()

# load matrix tsv file
net.load_stdin()

# optional filtering and normalization
##########################################
# net.filter_sum('row', threshold=20)
# net.normalize(axis='col', norm_type='zscore', keep_orig=True)
# net.filter_N_top('row', 250, rank_type='sum')
# net.filter_threshold('row', threshold=3.0, num_occur=4)
# net.swap_nan_for_zero()

net.make_clust(dist_type='cos',
               views=['N_row_sum', 'N_row_var'],
               dendro=True,
               sim_mat=False,
               filter_sim=0.1,
               calc_cat_pval=False)

# output jsons for front-end visualizations
print(net.export_net_json('viz', 'no-indent'))
Beispiel #5
0
        # fp = StringIO()
        # gene_attribute_matrix.to_csv(fp, sep='\t')
        gene_attribute_matrix.to_csv('tmp.txt', sep='\t')

        # Custergrammer
        from clustergrammer import Network
        net = Network()
        # net.load_tsv_to_net(fp, name) # StringIO
        net.load_file('tmp.txt')
        net.swap_nan_for_zero()
        # Generate
        net.make_clust(dist_type='cos',
                       views=['N_row_sum', 'N_row_var'],
                       dendro=True,
                       sim_mat=True,
                       filter_sim=0.1,
                       calc_cat_pval=False)

        # Insert into database
        cur.execute(
            'insert into `datasets` (`Name`, `prot_att`, `att_att`, `prot_prot`) values (?, ?, ?, ?)',
            (name, net.export_net_json('viz', indent='no-indent'),
             net.export_net_json('sim_col', indent='no-indent'),
             net.export_net_json('sim_row', indent='no-indent')))
        con.commit()
    except Exception as e:
        print "Couldn't process %s (%s)" % (name, e)
        continue
    print "Processed %s" % (name)
con.close()
Beispiel #6
0
def genNetworkFromMatrix(matr):
    net = Network()
    # net.load_file('txt/example.txt')
    net.load_file_as_string(matr)
    net.make_clust(run_clustering=False, dendro=False, views=[])
    return net.export_net_json('viz', 'no-indent')