In [3]:
from om import base, settings
from om.components import *
from om.data import *
from om.util import *
import pandas as pd
import numpy as np
import math,cobra
ome = base.Session()
model = cobra.io.load_matlab_model(settings.data_directory+'/models/iJO1366.mat')
ged = GeneExpressionData
dged = DifferentialGeneExpressionData
cpge = ChIPPeakGeneExpression
In [7]:
ome.query(cpge).limit(20).all()
Out[7]:
In [9]:
ome.query(RNASeqExperiment).all()
In [1]:
%%html
<div id="d3-example"></div>
<style>
svg {
font: 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.axis--y path {
display: none;
}
.genome_data {
fill: none;
stroke: #aaa;
stroke-linejoin: round;
stroke-linecap: round;
stroke-width: 1.5px;
}
.data_track--hover {
stroke: #000;
}
.focus text {
text-anchor: middle;
text-shadow: 0 1px 0 #fff, 1px 0 0 #fff, 0 -1px 0 #fff, -1px 0 0 #fff;
}
.voronoi path {
fill: none;
pointer-events: all;
}
.voronoi--show path {
stroke: red;
stroke-opacity: .2;
}
#form {
position: absolute;
top: 20px;
right: 30px;
}
</style>
In [2]:
%%javascript
require.config({paths: {d3: "https://mpld3.github.io/js/d3.v3.min"}});
require(["d3"], function(d3) {
var positions;
var margin = {top: 20, right: 30, bottom: 30, left: 40},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var x = d3.scale.linear()
.range([0, width]);
var y = d3.scale.linear()
.range([height, 0]);
var color = d3.scale.category20();
var voronoi = d3.geom.voronoi()
.x(function(d) { return x(d.position); })
.y(function(d) { return y(d.value); })
.clipExtent([[-margin.left, -margin.top], [width + margin.right, height + margin.bottom]]);
var line = d3.svg.line()
.interpolate("basis")
.x(function(d) { return x(d.position); })
.y(function(d) { return y(d.value); });
var svg = d3.select("#d3-example").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
d3.csv("data/peak_tmp.tsv", type, function(error, genome_data) {
//x.domain(d3.extent(positions));
console.log(d3.extent(genome_data));
x.domain([0,1000]);
y.domain([0, d3.max(genome_data, function(c) { return d3.max(c.values, function(d) { return d.value; }); })]).nice();
console.log(d3.extent(positions));
svg.append("g")
.attr("class", "axis axis--x")
.attr("transform", "translate(0," + height + ")")
.call(d3.svg.axis()
.scale(x)
.orient("bottom"));
svg.append("g")
.attr("class", "axis axis--y")
.call(d3.svg.axis()
.scale(y)
.orient("left")
.ticks(10, "%"))
.append("text")
.attr("x", 4)
.attr("dy", ".32em")
.style("font-weight", "bold");
svg.append("g")
.attr("class", "genome_data")
.selectAll("path")
.data(genome_data)
.enter().append("path")
.attr("d", function(d) { d.line = this; return line(d.values);});
var focus = svg.append("g")
.attr("transform", "translate(-100,-100)")
.attr("class", "focus");
focus.append("circle")
.attr("r", 3.5);
focus.append("text")
.attr("y", -10);
var voronoiGroup = svg.append("g")
.attr("class", "voronoi");
voronoiGroup.selectAll("path")
.data(voronoi(d3.nest()
.key(function(d) { return x(d.position) + "," + y(d.value); })
.rollup(function(v) { return v[0]; })
.entries(d3.merge(genome_data.map(function(d) { return d.values; })))
.map(function(d) { return d.values; })))
.enter().append("path")
.attr("d", function(d) { return "M" + d.join("L") + "Z"; })
.datum(function(d) { return d.point; })
.on("mouseover", mouseover)
.on("mouseout", mouseout);
d3.select("#show-voronoi")
.property("disabled", false)
.on("change", function() { voronoiGroup.classed("voronoi--show", this.checked); });
function mouseover(d) {
d3.select(d.data_track.line).classed("data_track--hover", true);
d.data_track.line.parentNode.appendChild(d.data_track.line);
focus.attr("transform", "translate(" + x(d.position) + "," + y(d.value) + ")");
focus.select("text").text(d.data_track.name);
}
function mouseout(d) {
d3.select(d.data_track.line).classed("data_track--hover", false);
focus.attr("transform", "translate(-100,-100)");
}
});
function type(d, i) {
if (!i) positions = Object.keys(d).filter(Number);
var data_track = {
name: d.name,
values: null
};
data_track.values = positions.map(function(m) {
return {
data_track: data_track,
position: m,
value: d[m]
};
});
return data_track;
}});
In [ ]: