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
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()
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'))
# 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()
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')