import dash
import dash_table
import dash_bootstrap_components as dbc
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import datetime
import pandas as pd
from data import get_omics_data, get_biomolecule_names, get_combined_data, get_p_values, get_volcano_data
from plot import volcano_plot
from nav import navbar
# importing app through index page
from app import app
print()
print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
print("Loading data for heatmap...")
print()
# load metabolomics data matrix
print("Loading metabolomics data...")
from app import metabolomics_df, metabolomics_quant_range
print("Metabolomics data shape: {}".format(metabolomics_df.shape))
print("Loading lipidomics data...")
from app import lipidomics_df, lipidomics_quant_range
print("Lipidomics data shape: {}".format(lipidomics_df.shape))
print("Loading proteomics data...")
from app import proteomics_df, proteomics_quant_range
print("Proteomics data shape: {}".format(proteomics_df.shape))
print("Loading transcriptomics data...")
from app import transcriptomics_df, transcriptomics_quant_range
print("Transcriptomics data shape: {}".format(transcriptomics_df.shape))
available_datasets = ['Proteins', 'Lipids', 'Metabolites', 'Transcripts']
# define dataset dictionaries
# define dataset dictionaries
from app import dataset_dict, df_dict, quant_value_range_dict
from app import metabolomics_biomolecule_names_dict
from app import lipidomics_biomolecule_names_dict
from app import proteomics_biomolecule_names_dict
from app import transcriptomics_biomolecule_names_dict
global_names_dict = {
"proteomics":proteomics_biomolecule_names_dict,
"lipidomics":lipidomics_biomolecule_names_dict,
"metabolomics":metabolomics_biomolecule_names_dict,
"transcriptomics":transcriptomics_biomolecule_names_dict,
"combined":{**proteomics_biomolecule_names_dict,
**lipidomics_biomolecule_names_dict,
**metabolomics_biomolecule_names_dict,
**transcriptomics_biomolecule_names_dict}
}
control_panel = dbc.Card(
[
dbc.CardHeader("CONTROL PANEL",
style={"background-color":"#5bc0de",
"font-weight":"bold",
"font-size":"large"}),
dbc.CardBody(
[html.P("Select Dataset", className="card-title", style={"font-weight":"bold"}),
dcc.Dropdown(
id='dataset-hm',
options=[{'label': i, 'value': i} for i in available_datasets],
# only passing in quant value columns
value=available_datasets[0]),
])
])
first_card = html.Iframe(
id="cgrammer-iframe",
src="https://amp.pharm.mssm.edu/clustergrammer/viz/5eed203e8ec9bb2d622075e9/proteomics.txt",
height='600',
width='900',
style={"border-color":"transparent"}
)
#app.layout = dbc.Container([
layout = dbc.Container([
navbar,
html.Hr(),
dbc.Row(dbc.Col(html.H1("COVID-19 Multi-Omics Data Dashboard"), width={"size": 6, "offset": 3})),
html.Hr(),
dbc.Row(
[dbc.Col(
dbc.Nav(
[
html.H3("TYPE OF ANALYSIS", style={"font-weight":"bold", "color":"black"}),
dbc.NavItem(dbc.NavLink(html.Span("PCA"),
disabled=False,
href="pca",
style={"color":"grey"})),
dbc.NavItem(dbc.NavLink(
html.Span(
"Linear Regression",
id="tooltip-lr",
style={"cursor": "pointer", "color":"grey"},
),disabled=False, href="linear_regression")),
dbc.NavItem(dbc.NavLink(
html.Span(
"Differential Expression",
id="tooltip-lr",
style={"cursor": "pointer", "color":"grey"},
),disabled=False, href="differential_expression")),
dbc.NavItem(dbc.NavLink("Clustergrammer", active=True, href="clustergrammer", style={"background-color":"grey"})),
html.Hr(),
control_panel
],
vertical="md",
pills=True
), md=2, className="mb-3"),
dbc.Col(first_card, md=7),
],
className="mb-3"),
], fluid=True, style={"height": "100vh"})
@app.callback(
Output('cgrammer-iframe', 'src'),
[Input('dataset-hm', 'value')])
def update_heatmap(dataset):
url_dict = {
"Proteins": "https://amp.pharm.mssm.edu/clustergrammer/viz/5eed203e8ec9bb2d622075e9/proteomics.txt",
"Lipids": "https://amp.pharm.mssm.edu/clustergrammer/viz/5f061a208ec9bb6fb2f14a1d/lipidomics.txt",
"Metabolites": "https://amp.pharm.mssm.edu/clustergrammer/viz/5f061c7f8ec9bb6fb2f14a37/metabolomics.txt",
"Transcripts": "https://amp.pharm.mssm.edu/clustergrammer/viz/5f061cfc8ec9bb6fb2f14a45/transcriptomics.txt"
}
url = url_dict[dataset]
return url
if __name__ == '__main__':
import dash_bootstrap_components as dbc
external_stylesheets=[dbc.themes.BOOTSTRAP]
app = dash.Dash(
__name__,
external_stylesheets=external_stylesheets)
app.title = 'Clustergrammer'
app.layout = layout
@app.callback(
Output('cgrammer-iframe', 'src'),
[Input('dataset-hm', 'value')])
def update_heatmap(dataset):
url_dict = {
"Proteins": "https://amp.pharm.mssm.edu/clustergrammer/viz/5eed203e8ec9bb2d622075e9/proteomics.txt",
"Lipids": "https://amp.pharm.mssm.edu/clustergrammer/viz/5f061a208ec9bb6fb2f14a1d/lipidomics.txt",
"Metabolites": "https://amp.pharm.mssm.edu/clustergrammer/viz/5f061c7f8ec9bb6fb2f14a37/metabolomics.txt",
"Transcripts": "https://amp.pharm.mssm.edu/clustergrammer/viz/5f061cfc8ec9bb6fb2f14a45/transcriptomics.txt"
}
url = url_dict[dataset]
return url
app.run_server(
debug=True,
host='0.0.0.0',
#port='8080'
)