test modisco table
from basepair.modisco.table import ModiscoData, modisco_table, write_modisco_table
from basepair.config import get_data_dir
from pathlib import Path
ddir = get_data_dir()
ls {model_dir}
%%time
# make it first for the easier case
model_dir = Path(f"{ddir}/processed/chipnexus/exp/models/oct-sox-nanog-klf/models/n_dil_layers=9/")
modisco_dir = model_dir / "modisco/valid"
data = ModiscoData.load(modisco_dir, model_dir / "grad.valid.h5")
%%time
df = modisco_table(data)
output_dir = "/srv/www/kundaje/avsec/chipnexus/oct-sox-nanog-klf/models/n_dil_layers=9/modisco/valid"
report_url = 'http://mitra.stanford.edu/kundaje/avsec/chipnexus/oct-sox-nanog-klf/models/n_dil_layers=9/modisco/valid/results.html'
write_modisco_table(df, Path(output_dir), report_url)
import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
# leverage pandas style to color cells according to values
# https://pandas.pydata.org/pandas-docs/stable/style.html
s = df.style.background_gradient(cmap=cm).set_precision(3)
def modisco_table(modisco_dir, imp_scores, output_dir, report_url=None):
"""Write the pattern table to as .html and .csv
"""
data = ModiscoData.load(modisco_dir, imp_scores)
df = modisco_table(data, report_url=None)
write_modisco_table(df, output_dir)
import seaborn as sns
cm = sns.light_palette("green", as_cmap=True)
'class="data' in s.render()
a = df.style.bar(subset=df.columns[df.dtypes == float],
align='mid', color=['#d65f5f', '#5fba7d'])
table = a.render(table_id="asd")
from IPython.display import HTML
def hover(hover_color="#ffff99"):
return dict(selector="tr:hover",
props=[("background-color", "%s" % hover_color)])
styles = [
hover(),
dict(selector="th", props=[("font-size", "150%"),
("text-align", "center")]),
dict(selector="caption", props=[("caption-side", "bottom")])
]
from scipy.stats import entropy
from vdom.helpers import a
p = np.ones(100)
entropy(p)
entropy(p/p.sum())
import matplotlib.pyplot as plt
from scipy.stats import entropy
from basepair.plot.profiles import plot_stranded_profile
import numpy as np
pattern = "metacluster_4/pattern_0"
task = "Sox2"
agg_profile = data.get_profile_wide(pattern, task).mean(axis=0)
agg_profile_norm = agg_profile / agg_profile.sum(axis=0, keepdims=True)
task_idx = data.get_peak_task_idx(task)
positions = np.array([s.center() for s in data.get_seqlets(pattern)
if s.seqname in task_idx])
values = positions
from scipy.stats import gaussian_kde
from scipy.signal import argrelextrema
density = gaussian_kde(values)
xs = np.linspace(0, 1000, 100)
smooth_hist = density(xs)
maxima = argrelextrema(smooth_hist, np.greater)
maxima
np.sum(smooth_hist[maxima[0]] > 0.5 * smooth_hist.max())
import basepair
from basepair.plot import vdom
from basepair.plot.vdom import vdom_modisco
from basepair.plot.vdom import render_datatable
from basepair.utils import read_pkl, write_pkl
write_pkl(df, "/tmp/df.pkl")
df = read_pkl("/tmp/df.pkl")
df.insert(0, 'idx', df.index) # add also idx to the front
from IPython.display import HTML
HTML(df.iloc[0][2])
from basepair.plot.vdom import df2html, render_datatable, write_datatable_html
df2html(df)[:100]
br().to_html()
df.iloc[:,2] = df.iloc[:,2].str.replace("<img ", "<img width=100 ")
df.columns = [c.replace(" ", "<br>") for c in df.columns]
from IPython.display import HTML, Javascript
display(Javascript(""" $(document).ready( function () {
var table = $('#table_id').DataTable({
scrollX: true,
scrollY: '50vh',
scrollCollapse: true,
paging: false,
colReorder: true,
columnDefs: [
{ orderable: false, targets: 0 },
{ orderable: false, targets: 1 }
],
ordering: [[ 1, 'asc' ]],
colReorder: {
fixedColumnsLeft: 1,
fixedColumnsRight: 0
}
});
new $.fn.dataTable.FixedColumns( table, {
leftColumns: 3,
rightColumns: 0
} );
$('#table_id tbody').on( 'click', 'tr', function () {
$(this).toggleClass('selected');
} );
} );"""))
write_datatable_html(df, "table.html")
from basepair.modisco.table import *
pattern = "metacluster_0/pattern_0"
pattern_task_features(pattern, "Oct4", data)
pssm = data.mr.get_pssm('metacluster_0', 'pattern_0', trim_frac=data.trim_frac)
pssm.shape