import pandas as pd import metabolyze as met import numpy as np #skeleton_name = [x for x in os.listdir('inputs') if x.endswith('output.tsv')][0] # result = Analysis(data=skeleton_name,samplesheet='Groups.csv',blank_threshold_value=10000) # result.t_test() #normalized_df=(df-df.mean())/df.std() #result = Analysis(data='skeleton_output.tsv',samplesheet='Groups.csv',blank_threshold_value=10000) #matrix = result.get_matrix(result.get_ids('All')) x = met.Analysis(data='skeleton_output.tsv', samplesheet='Groups.csv', blank_threshold_value=10000, method='default') corrected_matrix = (x.get_imputed_full_matrix( x.get_matrix(ids=x.get_ids('True')), param='corrected')) ## blank_matrix = x.get_matrix(ids=x.get_ids('Blank')) blank_matrix[blank_matrix > 1] = 0 mergedDf = corrected_matrix.merge(blank_matrix, left_index=True, right_index=True) matrix_sum_normalized = mergedDf.div(mergedDf.sum(axis=0), axis=1) matrix_sum_normalized = matrix_sum_normalized.fillna(0) #matrix_median_normalized = mergedDf.div(mergedDf.replace(0, np.nan).median(axis=0), axis=1) # matrix_median_normalized['Metabolite'] = matrix_median_normalized.index # matrix_median_normalized = matrix_median_normalized.reset_index(drop=True) original = pd.read_csv('inputs/skeleton_output.tsv', sep='\t') original.update(matrix_sum_normalized) original.to_csv('inputs/skeleton_sum_normalized.tsv', sep='\t') normalize_result = met.Analysis(data='skeleton_sum_normalized.tsv', samplesheet='Groups.csv',
from scipy import stats from sklearn.decomposition import PCA import chart_studio.plotly as py #%matplotlib inline import plotly #plotly.offline.init_notebook_mode() # To embed plots in the output cell of the notebook import plotly.graph_objs as go import os import operator import matplotlib.pyplot as plt from matplotlib.lines import Line2D from math import sqrt from itertools import combinations from matplotlib import rcParams result = met.Analysis('skeleton_output.tsv', 'Groups.csv') def register_callbacks(dashapp): COLORS20 = [ '#1f77b4', '#aec7e8', '#ff7f0e', '#ffbb78', '#2ca02c', '#98df8a', '#d62728', '#ff9896', '#9467bd', '#c5b0d5',
import os import pandas as pd import metabolyze as met import numpy as np skeleton_name = [x for x in os.listdir('inputs') if x.endswith('output.tsv')][0] # result = Analysis(data=skeleton_name,samplesheet='Groups.csv',blank_threshold_value=10000) # result.t_test() #normalized_df=(df-df.mean())/df.std() #result = Analysis(data='skeleton_output.tsv',samplesheet='Groups.csv',blank_threshold_value=10000) #matrix = result.get_matrix(result.get_ids('All')) x = met.Analysis(data=skeleton_name,samplesheet='Groups.csv',blank_threshold_value=10000,method='default') corrected_matrix = (x.get_imputed_full_matrix(x.get_matrix(ids=x.get_ids('True')),param='corrected'))## blank_matrix = x.get_matrix(ids=x.get_ids('Blank')) blank_matrix[blank_matrix>1] = 0 mergedDf = corrected_matrix.merge(blank_matrix, left_index=True, right_index=True) matrix_sum_normalized = mergedDf.div(mergedDf.sum(axis=0), axis=1) matrix_sum_normalized = matrix_sum_normalized.fillna(0) matrix_median_normalized = mergedDf.div(mergedDf.replace(0, np.nan).median(axis=0), axis=1) matrix_median_normalized = matrix_median_normalized.fillna(0) #matrix_median_normalized = matrix_median_normalized.reset_index(drop=True) #sum original = pd.read_csv('inputs/'+skeleton_name,sep='\t',index_col=0) matrix_sum_normalized.index.names = ['Metabolite'] detect_column = original.columns.get_loc("detections") meta_data_df = original[original.columns[0:detect_column+1]]
grouped_samples = {} for condition in (project.id.unique()): test = [ x.split('.')[0] for x in project.loc[project['id'] == condition, 'File'].tolist() ] test = ''.join(test) grouped_samples[test] = condition detection_column_index = standard.columns.get_loc("detections") standard = pd.read_table('inputs/skeleton_output.tsv') standard = standard.iloc[:, 0:detection_column_index + 1] merged = pd.merge(standard, flux_output, on='Metabolite') merged_2 = pd.merge(merged, blanks, on='Metabolite') for x, y in grouped_samples.items(): merged_2.rename(columns={y: x}, inplace=True) merged_2['Metabolite'] = merged_2['Metabolite'].str.replace('-13C-0', '') merged_2.to_csv('inputs/flux_skeleton_output.tsv', sep='\t') flux_result = met.Analysis(data='flux_skeleton_output.tsv', samplesheet='Groups.csv', blank_threshold_value=0, method='flux') flux_result.t_test()
def get_layout(): result = met.Analysis('skeleton_output.tsv', 'Groups.csv') dropdown_comparison = [ ' vs. '.join(list(x)) for x in result.dme_comparisons() ] #print("met_comparison",result.dme_comparisons()) dropdown_list = [] for dropdown, met_comparison in zip(dropdown_comparison, result.dme_comparisons()): drop_dict = {} drop_dict['label'] = dropdown met_list = list(met_comparison) met_list = ','.join("'{0}'".format(comparison) for comparison in met_list) drop_dict['value'] = met_list dropdown_list.append(drop_dict) logo = 'data:image/png;base64,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' search_bar = dbc.Row( [ dbc.Col(dbc.Input(type="search", placeholder="Search")), dbc.Col( dbc.Button("Search", color="primary", className="ml-2"), width="auto", ), ], no_gutters=True, className="ml-auto flex-nowrap mt-3 mt-md-0", align="center", ) navbar = dbc.Navbar( [ html.A( # Use row and col to control vertical alignment of logo / brand dbc.Row( [ dbc.Col(html.Img(src=logo, height="80")), dbc.Col(dbc.NavbarBrand("Metabolive", className="ml-2")), ], align="center", no_gutters=True, ), href="/login", ), dbc.NavItem( dbc.NavLink("Home", active=True, href="/", external_link=True)), dbc.NavItem( dbc.NavLink( "Logout", active=True, href="/logout", external_link=True)), dbc.NavItem( dbc.NavLink( "Contact Us", active=True, href="", external_link=True)), dbc.NavbarToggler(id="navbar-toggler"), dbc.Collapse(search_bar, id="navbar-collapse", navbar=True), ], color="dark", dark=True, ) jumbotron = dbc.Jumbotron([ html.H1("Metabolive Beta", className="display-3"), html. P("Beta testing for the interactive analysis of Metabolyze results."), ]) tab1_content = dbc.Card( dbc.CardBody([ dbc.Button("Hybrid", size="lg", outline=True, color="primary"), dbc.Button("Untargeted", size="lg", outline=True, color="primary"), dbc.Button("Global", size="lg", outline=True, color="primary") ]), className="mt-3", ) tab2_content = dbc.Card( dbc.CardBody([ dbc.Button("Run", outline=True, color="primary"), ]), className="mt-3", ) tabs = dbc.Tabs([ dbc.Tab(tab1_content, label="Metabolyze"), dbc.Tab(tab2_content, label="XIC Analysis") ]) #"'1e6 per mL','RPMI_PBS'" #[{'label': 'OLFR2 vs. GPI1', 'value': ['OLFR2', 'GPI1']}] button = html.Div([ dbc.Button("Submit", id="button"), html.Span(id="example-output"), ]) dropdown_processing = dcc.Dropdown( id='pipeline-dropdown', #options=[{'label':'OLFR2 vs. GPI1', 'value': "'OLFR2','GPI1'"}, {'label': 'GPI1 vs. OLFR2', 'value': "'GPI1','OLFR2'"}], options=[{ 'label': 'Ungrid', 'value': 'Ungrid' }], value="Ungrid" #value=["test"] ) dropdown_analysis = dcc.Dropdown( id='my-dropdown', #options=[{'label':'OLFR2 vs. GPI1', 'value': "'OLFR2','GPI1'"}, {'label': 'GPI1 vs. OLFR2', 'value': "'GPI1','OLFR2'"}], options=dropdown_list, #value=["test"] ) table = html.Div(id='output-data-upload') hidden_div = html.Div(id='intermediate-value', style={'display': 'none'}) volcano_graph = html.Div(id='volcano_graph') heatmap_graph = html.Div(id='heatmap_graph') pca_graph = html.Div(id='pca_graph') #graph = html.Div(id='graph') # def layout(): layout = html.Div([ navbar, jumbotron, tabs, dropdown_processing, dropdown_analysis, button, hidden_div, volcano_graph, heatmap_graph, pca_graph, table ]) return (layout)