/
init.ipy
executable file
·90 lines (74 loc) · 3.1 KB
/
init.ipy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
###################################
##### Notebook Initialization #####
###################################
####### Version 1.0
####### This file contains commands used to initialize the Jupyter Notebook environment by loading useful Python and R libraries.
##### Author: Denis Torre
##### Affiliation: Ma'ayan Laboratory, Icahn School of Medicine at Mount Sinai
##### Jupyter Environment
# Modules
import os
import sys
import glob
import itertools
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from IPython.display import display, HTML
from importlib import reload
# Plotting
%matplotlib inline
from plotly.offline import init_notebook_mode
init_notebook_mode()
# Load R
%load_ext rpy2.ipython
##### Custom Scripts
# Import
script_dirs = [os.path.join(os.path.dirname(os.path.realpath(__file__)), x) for x in ['core_scripts/*', 'analysis_tools/*']]
for script_dir in script_dirs:
for script_path in glob.glob(script_dir):
sys.path.append(script_path)
exec('import '+os.path.basename(script_path))
exec('import signature as sig')
##### Variables
# Notebook Variables
data = {}
signatures = {}
results = {}
# Plot counter
plot_number = {'figure': 0, 'table': 2}
def plot_counter(plot_type='figure', plot_number=plot_number):
plot_number[plot_type] += 1
return str(plot_number[plot_type])
# Load Dataset
def load_dataset(source, **kwargs):
return eval('load.{}'.format(source))(**kwargs)
# Normalize Dataset
def normalize_dataset(method, **kwargs):
return eval('normalize.{}'.format(method))(**kwargs)
# Compute Signature
def generate_signature(method, **kwargs):
return eval('sig.{}'.format(method))(**kwargs)
# Analyze
def analyze(tool, **kwargs):
# Normalize, if specified
normalization_method = kwargs.get('normalization')
if normalization_method and normalization_method not in kwargs['dataset'].keys():
kwargs['dataset'][normalization_method] = normalize_dataset(method = normalization_method, dataset=kwargs['dataset'])
return {'results': eval(tool).run(**kwargs), 'tool': tool}
# Plot
def plot(results, **kwargs):
return eval(results['tool']).plot(results['results'], plot_counter=plot_counter, **kwargs)
# Display data
def preview_data(dataset):
display(HTML(dataset['rawdata'].head().to_html(escape=False)))
if dataset['dataset_metadata'].get('gse'):
url = 'http://amp.pharm.mssm.edu/notebook-generator-server/download?gse={gse}&platform={platform}&version={version}&content=expression'.format(**dataset['dataset_metadata'])
display(HTML('<a href="{}" target="_blank" style="color: black;" download><button>Download Dataset</button></a>'.format(url)))
# Display metadata
def display_metadata(dataset):
display(HTML('<div style="max-height: 350px; overflow-y: auto;">'+dataset['sample_metadata'].to_html(escape=False)+'</div>'))
if dataset['dataset_metadata'].get('gse'):
url = 'http://amp.pharm.mssm.edu/notebook-generator-server/download?gse={gse}&platform={platform}&version={version}&content=metadata'.format(**dataset['dataset_metadata'])
display(HTML('<a href="{}" target="_blank" style="color: black;" download><button>Download Metadata</button></a>'.format(url)))