<!-- Copyright 2016 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
==============================================================================-->
<html>
<head lang="en">
<!-- Tab links -->
<link rel="icon" type="image/png" href="favicon.png">
<meta charset="utf-8">
<meta name="viewport" content="width=1024">
<meta name="keywords" content="neural networks,machine learning,javascript">
<meta property="og:type" content="article"/>
<meta property="og:title" content="Deep Learning for Cancer Therapy"/>
<meta property="og:description" content="A Somatic Mutation Classification DNN & Multivariate Distribution Visualizer">
<meta property="og:url" content="http://dlforcancertherapy.ml"/>
<meta property="og:image" content="http://playground.tensorflow.org/preview.png"/>
<meta name="twitter:card" value="summary_large_image">
<div class="tab">
<button class="tablinks" onclick="tabSelect('fm_mutations_independent_plot.csv')">fm_mutations_independent</button>
<button class="tablinks" onclick="tabSelect('fm_samples_independent_plot.csv')">fm_samples_independent</button>
<button class="tablinks" onclick="tabSelect('top10_LungMel_plot.csv')">top10_LungMel</button>
<button class="tablinks" onclick="tabSelect('top100_LungMel_plot.csv')">top100_LungMel</button>
<button class="tablinks" onclick="tabSelect('top1000_LungMel_plot.csv')">top1000_LungMel</button>
<button class="tablinks" onclick="tabSelect('top10000_LungMel_plot.csv')">top10000_LungMel</button>
</div>
<script type="text/javascript">
function tabSelect(file) {
d3.csv(file, function(flowers) {
// Size parameters.
var size = 140,
padding = 10,
n = 2,
traits = ["X", "Y"];
// Position scales.
var x = {}, y = {};
traits.forEach(function(trait) {
// Coerce values to numbers.
flowers.forEach(function(d) { d[trait] = +d[trait]; });
var value = function(d) { return d[trait]; },
domain = [d3.min(flowers, value), d3.max(flowers, value)],
range = [padding / 2, size - padding / 2];
x[trait] = d3.scale.linear().domain(domain).range(range);
y[trait] = d3.scale.linear().domain(domain).range(range.reverse());
});
d3.select("#svg1").remove();
// Axes.
var axis = d3.svg.axis()
.ticks(5)
.tickSize(size * n);
// Brush.
var brush = d3.svg.brush()
.on("brushstart", brushstart)
.on("brush", brush)
.on("brushend", brushend);
// Root panel.
var svg = d3.select(".MDS").append("svg")
.attr("width", 1280)
.attr("id", "svg1")
.attr("height", 800)
.append("svg:g")
.attr("transform", "translate(100,0)");
// Legend.
var legend = svg.selectAll("g.legend")
.data(["0.000000000000000000+e00", "1.000000000000000000+e00"])
.enter().append("svg:g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(-70," + (i * 20 + 394) + ")"; });
legend.append("svg:versicolor")
.attr("class", String)
.attr("r", 2);
legend.append("svg:text")
.attr("x", 12)
.attr("dy", ".31em")
.attr("fill","white")
.text(function(d) { return d; });
// X-axis.
svg.selectAll("g.x.axis")
.data(traits)
.enter().append("svg:g")
.attr("class", "x axis")
.attr("transform", function(d, i) { return "translate(" + i * size + ",0)"; })
.each(function(d) { d3.select(this).call(axis.scale(x[d]).orient("bottom")); });
// Y-axis.
svg.selectAll("g.y.axis")
.data(traits)
.enter().append("svg:g")
.attr("class", "y axis")
.attr("transform", function(d, i) { return "translate(0," + i * size + ")"; })
.each(function(d) { d3.select(this).call(axis.scale(y[d]).orient("right")); });
// Cell and plot.
var cell = svg.selectAll("g.cell")
.data(cross(traits, traits))
.enter().append("svg:g")
.attr("class", "cell")
.attr("transform", function(d) { return "translate(" + d.i * size + "," + d.j * size + ")"; })
.each(plot);
// Titles for the diagonal.
cell.filter(function(d) { return d.i == d.j; }).append("svg:text")
.attr("x", padding)
.attr("y", padding)
.attr("dy", ".71em")
.text(function(d) { return d.x; });
function plot(p) {
var cell = d3.select(this);
// Plot frame.
cell.append("svg:rect")
.attr("class", "frame")
.attr("x", padding / 2)
.attr("y", padding / 2)
.attr("width", size - padding)
.attr("height", size - padding);
// Plot dots.
cell.selectAll("circle")
.data(flowers)
.enter().append("svg:circle")
.attr("class", function(d) { return d.species; })
.attr("cx", function(d) { return x[p.x](d[p.x]); })
.attr("cy", function(d) { return y[p.y](d[p.y]); })
.attr("r", 3);
// Plot brush.
cell.call(brush.x(x[p.x]).y(y[p.y]));
}
// Clear the previously-active brush, if any.
function brushstart(p) {
if (brush.data !== p) {
cell.call(brush.clear());
brush.x(x[p.x]).y(y[p.y]).data = p;
}
}
// Highlight the selected circles.
function brush(p) {
var e = brush.extent();
svg.selectAll(".cell circle").attr("class", function(d) {
return e[0][0] <= d[p.x] && d[p.x] <= e[1][0]
&& e[0][1] <= d[p.y] && d[p.y] <= e[1][1]
? d.species : null;
});
}
// If the brush is empty, select all circles.
function brushend() {
if (brush.empty()) svg.selectAll(".cell circle").attr("class", function(d) {
return d.species;
});
}
function cross(a, b) {
var c = [], n = a.length, m = b.length, i, j;
for (i = -1; ++i < n;) for (j = -1; ++j < m;) c.push({x: a[i], i: i, y: b[j], j: j});
return c;
}
});
d3.select("body")
.datum(irwinHallDistribution(10000, 10))
.call(histogramChart()
.bins(d3.scale.linear().ticks(20))
.tickFormat(d3.format(".02f")));
function irwinHallDistribution(n, m) {
var distribution = [];
for (var i = 0; i < n; i++) {
for (var s = 0, j = 0; j < m; j++) {
s += Math.random();
}
distribution.push(s / m);
}
return distribution;
}
}
</script>
<p id="fm_mutations_independent"></p>
<script type = "text/javascript" src="dataPlot.js"></script>
<div id="fm_mutations_independent" class="tabcontent">
<!-- function call here with fm_mutations_independent as argument -->
</div>
<div id="fm_samples_independent" class="tabcontent">
<!-- function call here with fm_samples_independent as argument -->
</div>
<div id="top10_LungMel" class="tabcontent">
<!-- function call here with top10_LungMel as argument -->
</div>
<div id="top100_LungMel" class="tabcontent">
<!-- function call here with top100_LungMel as argument -->
</div>
<div id="top1000_LungMel" class="tabcontent">
<!-- function call here with top1000_LungMel as argument -->
</div>
<div id="top10000_LungMel" class="tabcontent">
<!-- function call here with top10000_LungMel as argument -->
</div>
<meta name="twitter:title" content="Deep Learning for Cancer Therapy">
<meta name="twitter:description" content="A Somatic Mutation Classification DNN & Multivariate Distribution Visualizer">
<meta name="twitter:url" content="http://dlforcancertherapy.ml">
<meta name="twitter:image" content="http://playground.tensorflow.org/preview.png">
<meta name="twitter:image:width" content="560">
<meta name="twitter:image:height" content="1095">
<meta name="author" content="Suraj Jena | Kumud Ravisankaran | Valeria Brewer | Ninad Mehta">
<title>Deep Learning for Cancer Therapy</title>
<link rel="stylesheet" href="bundle.css" type="text/css">
<link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500|Material+Icons" rel="stylesheet" type="text/css">
<style type="text/css">
svg {
font-size: 14px;
}
.axis {
shape-rendering: crispEdges;
}
.bars rect {
fill: steelblue;
}
.axis text {
font: 10px sans-serif;
}
.axis path, .axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
rect.extent {
fill: #000;
fill-opacity: .125;
stroke: #fff;
}
rect.frame {
fill: #fff;
fill-opacity: .7;
stroke: #aaa;
}
circle {
fill: #800;
fill-opacity: .5;
}
.legend circle {
fill-opacity: 1;
}
.legend text {
font-size: 18px;
font-style: oblique;
}
.cell text {
pointer-events: none;
}
.Lungad {
fill: #800;
}
.Melanoma {
fill: #080;
}
.virginica {
fill: #008;
}
a:link, a:visited {
color: #777;
text-decoration: none;
}
a:hover {
color: #666;
}
blockquote {
margin: 0;
}
blockquote:before {
content: "“";
position: absolute;
left: -.4em;
}
blockquote:after {
content: "”";
position: absolute;
}
h1 {
font-size: 64px;
}
h1, h2, h3{
font-weight: inherit;
margin: 0;
}
h2, h3, h4 {
text-align: right;
font-size: inherit;
position: absolute;
bottom: 0;
right: 0;
}
h2 {
font-size: 24px;
position: absolute;
}
h3 {
bottom: -20px;
font-size: 18px;
}
.invert {
background: #1f1f1f;
color: #dcdccc;
}
.invert h2, .invert h3 {
color: #7f9f7f;
}
.string, .regexp {
color: #f39;
}
.keyword {
color: #00c;
}
.comment {
color: #777;
font-style: oblique;
}
.number {
color: #369;
}
.class, .special {
color: #1181B8;
}
</style>
<script src="lib.js"></script>
<!-- <script src="http://35.184.171.249:8000/socket.io/socket.io.js"></script> -->
<!--<script src="requests.js"></script>-->
<link type = "text/css" href = "styles.css" media = "all" />
</head>
<body>
<!-- GitHub link -->
<a class="github-link" href="https://github.com/skjena/cnnCancerTherapy" title="Source on GitHub">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 60.5 60.5" width="60" height="60">
<polygon class="bg" points="60.5,60.5 0,0 60.5,0 "/>
<path class="icon" d="M43.1,5.8c-6.6,0-12,5.4-12,12c0,5.3,3.4,9.8,8.2,11.4c0.6,0.1,0.8-0.3,0.8-0.6c0-0.3,0-1,0-2c-3.3,0.7-4-1.6-4-1.6c-0.5-1.4-1.3-1.8-1.3-1.8c-1.1-0.7,0.1-0.7,0.1-0.7c1.2,0.1,1.8,1.2,1.8,1.2c1.1,1.8,2.8,1.3,3.5,1c0.1-0.8,0.4-1.3,0.8-1.6c-2.7-0.3-5.5-1.3-5.5-5.9c0-1.3,0.5-2.4,1.2-3.2c-0.1-0.3-0.5-1.5,0.1-3.2c0,0,1-0.3,3.3,1.2c1-0.3,2-0.4,3-0.4c1,0,2,0.1,3,0.4c2.3-1.6,3.3-1.2,3.3-1.2c0.7,1.7,0.2,2.9,0.1,3.2c0.8,0.8,1.2,1.9,1.2,3.2c0,4.6-2.8,5.6-5.5,5.9c0.4,0.4,0.8,1.1,0.8,2.2c0,1.6,0,2.9,0,3.3c0,0.3,0.2,0.7,0.8,0.6c4.8-1.6,8.2-6.1,8.2-11.4C55.1,11.2,49.7,5.8,43.1,5.8z"/>
</svg>
</a>
<!-- Header -->
<header>
<h1 class="l--page">Welcome to <b> Deep Learning for Cancer Therapy </b> </span> <br> A Somatic Mutation Classification DNN & Multivariate Distribution Visualizer </h1>
<hr>
<div class="plots">
<div class="MDS">
<div id="MDS_ID">
</div>
</div>
<div class="otherPlot">
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
<div> Place Other Plot Here</div>
</div>
</div>
</header>
<script src="histogram-chart.js"></script>
<!--
<script type="text/javascript">
d3.csv("fm_mutations_independent_plot.csv", function(flowers) {
var element = document.getElementById("fm_mutations_independent");
// Size parameters.
var size = 140,
padding = 10,
n = 2,
traits = ["X", "Y"];
// Position scales.
var x = {}, y = {};
traits.forEach(function(trait) {
// Coerce values to numbers.
flowers.forEach(function(d) { d[trait] = +d[trait]; });
var value = function(d) { return d[trait]; },
domain = [d3.min(flowers, value), d3.max(flowers, value)],
range = [padding / 2, size - padding / 2];
x[trait] = d3.scale.linear().domain(domain).range(range);
y[trait] = d3.scale.linear().domain(domain).range(range.reverse());
});
// Axes.
var axis = d3.svg.axis()
.ticks(5)
.tickSize(size * n);
// Brush.
var brush = d3.svg.brush()
.on("brushstart", brushstart)
.on("brush", brush)
.on("brushend", brushend);
// Root panel.
var svg = d3.select("body").append("svg:svg")
.attr("width", 1280)
.attr("height", 800)
.append("svg:g")
.attr("transform", "translate(359.5,69.5)");
// Legend.
var legend = svg.selectAll("g.legend")
.data(["0.000000000000000000+e00", "1.000000000000000000+e00"])
.enter().append("svg:g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(-179," + (i * 20 + 594) + ")"; });
legend.append("svg:versicolor")
.attr("class", String)
.attr("r", 2);
legend.append("svg:text")
.attr("x", 12)
.attr("dy", ".31em")
.text(function(d) { return d; });
// X-axis.
svg.selectAll("g.x.axis")
.data(traits)
.enter().append("svg:g")
.attr("class", "x axis")
.attr("transform", function(d, i) { return "translate(" + i * size + ",0)"; })
.each(function(d) { d3.select(this).call(axis.scale(x[d]).orient("bottom")); });
// Y-axis.
svg.selectAll("g.y.axis")
.data(traits)
.enter().append("svg:g")
.attr("class", "y axis")
.attr("transform", function(d, i) { return "translate(0," + i * size + ")"; })
.each(function(d) { d3.select(this).call(axis.scale(y[d]).orient("right")); });
// Cell and plot.
var cell = svg.selectAll("g.cell")
.data(cross(traits, traits))
.enter().append("svg:g")
.attr("class", "cell")
.attr("transform", function(d) { return "translate(" + d.i * size + "," + d.j * size + ")"; })
.each(plot);
// Titles for the diagonal.
cell.filter(function(d) { return d.i == d.j; }).append("svg:text")
.attr("x", padding)
.attr("y", padding)
.attr("dy", ".71em")
.text(function(d) { return d.x; });
function plot(p) {
var cell = d3.select(this);
// Plot frame.
cell.append("svg:rect")
.attr("class", "frame")
.attr("x", padding / 2)
.attr("y", padding / 2)
.attr("width", size - padding)
.attr("height", size - padding);
// Plot dots.
cell.selectAll("circle")
.data(flowers)
.enter().append("svg:circle")
.attr("class", function(d) { return d.species; })
.attr("cx", function(d) { return x[p.x](d[p.x]); })
.attr("cy", function(d) { return y[p.y](d[p.y]); })
.attr("r", 3);
// Plot brush.
cell.call(brush.x(x[p.x]).y(y[p.y]));
}
// Clear the previously-active brush, if any.
function brushstart(p) {
if (brush.data !== p) {
cell.call(brush.clear());
brush.x(x[p.x]).y(y[p.y]).data = p;
}
}
// Highlight the selected circles.
function brush(p) {
var e = brush.extent();
svg.selectAll(".cell circle").attr("class", function(d) {
return e[0][0] <= d[p.x] && d[p.x] <= e[1][0]
&& e[0][1] <= d[p.y] && d[p.y] <= e[1][1]
? d.species : null;
});
}
// If the brush is empty, select all circles.
function brushend() {
if (brush.empty()) svg.selectAll(".cell circle").attr("class", function(d) {
return d.species;
});
}
function cross(a, b) {
var c = [], n = a.length, m = b.length, i, j;
for (i = -1; ++i < n;) for (j = -1; ++j < m;) c.push({x: a[i], i: i, y: b[j], j: j});
return c;
}
});
</script>
<script>
d3.select("body")
.datum(irwinHallDistribution(10000, 10))
.call(histogramChart()
.bins(d3.scale.linear().ticks(20))
.tickFormat(d3.format(".02f")));
function irwinHallDistribution(n, m) {
var distribution = [];
for (var i = 0; i < n; i++) {
for (var s = 0, j = 0; j < m; j++) {
s += Math.random();
}
distribution.push(s / m);
}
return distribution;
}
</script>
-->
<section>
<h1>
</h1>
<!-- <h1> Level1</h1>
Level1 Text
<section>
<h1>Level2</h1>
Level2 Text
</section>
-->
</section>
<!-- Top Controls -->
<div id="top-controls">
<div class="container l--page">
<div class="timeline-controls">
<button class="mdl-button mdl-js-button mdl-button--icon ui-resetButton" id="reset-button" title="Reset the network">
<i class="material-icons">replay</i>
</button>
<button class="mdl-button mdl-js-button mdl-button--fab mdl-button--colored ui-playButton" id="play-pause-button" title="Run/Pause">
<i class="material-icons">play_arrow</i>
<i class="material-icons">pause</i>
</button>
<button class="mdl-button mdl-js-button mdl-button--icon ui-stepButton" id="next-step-button" title="Step">
<i class="material-icons">skip_next</i>
</button>
</div>
<div class="control">
<span class="label">Epoch</span>
<span class="value" id="iter-number"></span>
</div>
<div class="control ui-learningRate">
<label for="learningRate">Learning rate</label>
<div class="select">
<select id="learningRate">
<option value="0.00001">0.00001</option>
<option value="0.0001">0.0001</option>
<option value="0.001">0.001</option>
<option value="0.003">0.003</option>
<option value="0.01">0.01</option>
<option value="0.03">0.03</option>
<option value="0.1">0.1</option>
<option value="0.3">0.3</option>
<option value="1">1</option>
<option value="3">3</option>
<option value="10">10</option>
</select>
</div>
</div>
<div class="control ui-activation">
<label for="activations">Activation</label>
<div class="select">
<select id="activations">
<option value="relu">ReLU</option>
<option value="tanh">Tanh</option>
<option value="sigmoid">Sigmoid</option>
</select>
</div>
</div>
<div class="control ui-regularization">
<label for="regularizations">Regularization</label>
<div class="select">
<select id="regularizations">
<option value="none">None</option>
<option value="L1">L1</option>
<option value="L2">L2</option>
</select>
</div>
</div>
<div class="control ui-regularizationRate">
<label for="regularRate">Regularization rate</label>
<div class="select">
<select id="regularRate">
<option value="0">0</option>
<option value="0.001">0.001</option>
<option value="0.003">0.003</option>
<option value="0.01">0.01</option>
<option value="0.03">0.03</option>
<option value="0.1">0.1</option>
<option value="0.3">0.3</option>
<option value="1">1</option>
<option value="3">3</option>
<option value="10">10</option>
</select>
</div>
</div>
<div class="control ui-problem">
<label for="problem">Problem type</label>
<div class="select">
<select id="problem">
<option value="classification">Classification</option>
<option value="regression">Regression</option>
</select>
</div>
</div>
</div>
</div>
<!-- Main Part -->
<div id="main-part" class="l--page">
<!-- Data Column-->
<div class="column data">
<h4>
<span>Data</span>
</h4>
<div class="ui-dataset">
<p>Pick your dataset</p>
<div class="dataset-list">
<div class="dataset" title="fm_mutations_independent">
<canvas class="data-thumbnail" data-dataset="fm_mutations_independent"></canvas>
</div>
<div class="dataset" title="fm_sample_independent">
<canvas class="data-thumbnail" data-dataset="fm_sample_independent"></canvas>
</div>
<div class="dataset" title="top10000LungMel">
<canvas class="data-thumbnail" data-dataset="top10000LungMel"></canvas>
</div>
<div class="dataset" title="top1000LungMel">
<canvas class="data-thumbnail" data-dataset="top1000LungMel"></canvas>
</div>
<div class="dataset" title="top100LungMel">
<canvas class="data-thumbnail" data-dataset="top100LungMel"></canvas>
</div>
<div class="dataset" title="top10LungMel">
<canvas class="data-thumbnail" data-dataset="top10LungMel"></canvas>
</div>
<div class="dataset" title="fm_mutations_independent">
<canvas class="data-thumbnail" data-regDataset="fm_mutations_independent"></canvas>
</div>
<div class="dataset" title="fm_sample_independent">
<canvas class="data-thumbnail" data-regDataset="fm_sample_independent"></canvas>
</div>
<div class="dataset" title="top10000LungMel">
<canvas class="data-thumbnail" data-regDataset="top10000LungMel"></canvas>
</div>
<div class="dataset" title="top1000LungMel">
<canvas class="data-thumbnail" data-regDataset="top1000LungMel"></canvas>
</div>
<div class="dataset" title="top100LungMel">
<canvas class="data-thumbnail" data-regDataset="top100LungMel"></canvas>
</div>
<div class="dataset" title="top10LungMel">
<canvas class="data-thumbnail" data-regDataset="top10LungMel"></canvas>
</div>
</div>
</div>
<div>
<!--<div class="ui-percTrainData">
<label for="percTrainData">Ratio of training to test data: <span class="value">XX</span>%</label>
<p class="slider">
<input class="mdl-slider mdl-js-slider" type="range" id="percTrainData" min="10" max="90" step="10">
</p>
</div>-->
<div class="ui-noise">
<label for="noise">MDS Dimensions: <span class="value">XX</span></label>
<p class="slider">
<input class="mdl-slider mdl-js-slider" type="range" id="noise" min="0" max="10" step="1">
</p>
</div>
<div class="ui-batchSize">
<label for="batchSize">Batch size: <span class="value">XX</span></label>
<p class="slider">
<input class="mdl-slider mdl-js-slider" type="range" id="batchSize" min="1" max="30" step="1">
</p>
</div>
<hr>
<!--<div id="dvImportSegments" class="fileupload ">
<fieldset>
<legend>Upload a CSV File</legend>
<input type="file" name="File Upload" id="txtFileUpload" accept=".csv, .tab" />
</fieldset>
</div>
-->
</div>
</div>
<!-- Features Column -->
<div class="column features">
<h4>Features</h4>
<p>Which properties do you want to feed in?</p>
<div id="network">
<svg id="svg" width="510" height="450">
<defs>
<marker id="markerArrow" markerWidth="7" markerHeight="13" refX="1" refY="6" orient="auto" markerUnits="userSpaceOnUse">
<path d="M2,11 L7,6 L2,2" />
</marker>
</defs>
</svg>
<!-- Hover card -->
<div id="hovercard">
<div style="font-size:10px">Click anywhere to edit.</div>
<div><span class="type">Weight/Bias</span> is <span class="value">0.2</span><span><input type="number"/></span>.</div>
</div>
<div class="callout thumbnail">
<svg viewBox="0 0 30 30">
<defs>
<marker id="arrow" markerWidth="5" markerHeight="5" refx="5" refy="2.5" orient="auto" markerUnits="userSpaceOnUse">
<path d="M0,0 L5,2.5 L0,5 z"/>
</marker>
</defs>
<path d="M12,30C5,20 2,15 12,0" marker-end="url(#arrow)">
</svg>
<div class="label">
This is the output from one <b>neuron</b>. Hover to see it larger.
</div>
</div>
<div class="callout weights">
<svg viewBox="0 0 30 30">
<defs>
<marker id="arrow" markerWidth="5" markerHeight="5" refx="5" refy="2.5" orient="auto" markerUnits="userSpaceOnUse">
<path d="M0,0 L5,2.5 L0,5 z"/>
</marker>
</defs>
<path d="M12,30C5,20 2,15 12,0" marker-end="url(#arrow)">
</svg>
<div class="label">
The outputs are mixed with varying <b>weights</b>, shown by the thickness of the lines.
</div>
</div>
</div>
</div>
<!-- Hidden Layers Column -->
<div class="column hidden-layers">
<h4>
<div class="ui-numHiddenLayers">
<button id="add-layers" class="mdl-button mdl-js-button mdl-button--icon">
<i class="material-icons">add</i>
</button>
<button id="remove-layers" class="mdl-button mdl-js-button mdl-button--icon">
<i class="material-icons">remove</i>
</button>
</div>
<span id="num-layers"></span>
<span id="layers-label"></span>
</h4>
<div class="bracket"></div>
</div>
<!-- Output Column -->
<div class="column output">
<h4>Output</h4>
<div class="metrics">
<div class="output-stats ui-percTrainData">
<span>Test loss</span>
<div class="value" id="loss-test"></div>
</div>
<div class="output-stats train">
<span>Training loss</span>
<div class="value" id="loss-train"></div>
</div>
<div id="linechart"></div>
</div>
<div id="heatmap"></div>
<div style="float:left;margin-top:20px">
<div style="display:flex; align-items:center;">
<!-- Gradient color scale -->
<div class="label" style="width:45px; margin-right: 30px">
Melanoma
</div>
<svg width="170" height="30" id="colormap">
<defs>
<linearGradient id="gradient" x1="0%" y1="100%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#f59322" stop-opacity="1"></stop>
<stop offset="50%" stop-color="#e8eaeb" stop-opacity="1"></stop>
<stop offset="100%" stop-color="#0877bd" stop-opacity="1"></stop>
</linearGradient>
</defs>
<g class="core" transform="translate(3, 0)">
<rect width="144" height="10" style="fill: url('#gradient');"></rect>
</g>
</svg>
<div class="label" style="width:45px; margin-right: 10px">
Lung Adenocarcinoma
</div>
</div>
<br/>
<div style="display:flex;">
<label class="ui-showTestData mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="show-test-data">
<input type="checkbox" id="show-test-data" class="mdl-checkbox__input" checked>
<span class="mdl-checkbox__label label">Show test data</span>
</label>
<label class="ui-discretize mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="discretize">
<input type="checkbox" id="discretize" class="mdl-checkbox__input" checked>
<span class="mdl-checkbox__label label">Discretize output</span>
</label>
</div>
</div>
</div>
</div>
<a href="http://dlforcancertherapy.ml:8000/iris-plom.html"> Scatterplot Matrix </a>
<!-- More -->
<div class="more">
<!-- <button class="mdl-button mdl-js-button mdl-button--icon"><i class="material-icons">keyboard_arrow_down</i></button> -->
<button class="mdl-button mdl-js-button mdl-button--fab">
<i class="material-icons">keyboard_arrow_down</i>
</button>
</div>
<!-- Article -->
<article id="article-text">
<div class="l--body">
<h2 style="position:relative; right:150px;">How does this help cancer?</h2>
<p>Machine learning can be used to perform unsupervised learning on the DNA sequences of patient tumors in order to identify non-linear features of the tumor DNA that help predict treatment. Convolutional neural networks (CNN) have led to substantial advances in both supervised and unsupervised learning tasks in computer vision. It is easy to treat DNA sequence (an ordered sequence of A’s, C’s, G’s, and T’s) as an “image”, and therefore apply many of the same techniques used in imaging to DNA sequence. The R package <a href="https://github.com/friend1ws/pmsignature">pmsignature</a> extracts characteristic mutation patterns from sets of mutations, as proposed in the paper: <a href="http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.1005657"> A simple model-based approach to inferring and visualizing cancer mutation signatures</a> by Shiraishi, et. al. (2015). </p>
<p>
We use Principal Component Analysis (PCA) on these signatures generated by pmsignature, to compute scatter-plots of labelled training data; The DNN is then trained over a large amount of such signatures, ultimately computing and displaying the probability distribution on the heatmap in the output - the distribution of predictions to be made for testing data, having labelled the regions.
</p>
</div>
<div class="l--body">
<p>We’ve also provided some controls below to enable you tailor the playground to a specific topic or lesson. Just choose which features you’d like to be visible below then save <a class="hide-controls-link" href="#">this link</a>, or <a href="javascript:location.reload();">refresh</a> the page.</p>
<div class="hide-controls"></div>
</div>
<div class="l--body">
<h2 style="position:relative; right: 150px;">What Do All the Colors Mean?</h2>
<p>Orange and blue are used throughout the visualization in slightly different ways, but in general orange shows negative values while blue shows positive values.</p>
<p>The data points (represented by small circles) are initially colored orange or blue, which correspond to positive one and negative one.</p>
<p> The blue dots represent labelled <b> BRCA </b> tumors, whereas the orange dots represent the labelled <b> Lung Adenocarcinoma </b> (lungad_10) tumors. </p>
<p>In the hidden layers, the lines are colored by the weights of the connections between neurons. Blue shows a positive weight, which means the network is using that output of the neuron as given. An orange line shows that the network is assigning a negative weight.</p>
<p>In the output layer, the dots are colored orange or blue depending on their original values. The background color shows what the network is predicting for a particular area. The intensity of the color shows how confident that prediction is.</p>
</div>
<br>
<div class="l--body">
<h1>Credits</h1>
<p>
<b> Created by </b> <br> <br>
| Kumud Ravisankaran | Valeria Brewer | Ninad Mehta | Suraj Jena | <br> <br>
Repurposed the original <a href="https://github.com/tensorflow/playground"> TensorFlow Playground </a> made by <br> Daniel Smilkov and Shan Carter under the Apache-2.0 License. <br>
<a href="https://research.google.com/bigpicture/">Big Picture</a> and <a href="https://research.google.com/teams/brain/">Google Brain</a> teams for feedback and guidance on Neural Networks and the TensorFlow API.
</p>
</div>
</article>
<!-- Footer -->
<footer>
<div class="l--body">
<a href="https://www.tensorflow.org/" class="logo">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 528 87" xml:space="preserve">
<path d="M37.4,15.5v70.3H25V15.5H1V3.4h60.4v12.1H37.4z"/>
<path d="M149,85.8v-35c0-12.5-4.7-16.9-12.7-16.9c-8.1,0-12.7,5.8-12.7,15.8v36.1h-12.1V24h12.1v5.9c3.1-4.5,9.2-7.2,15.5-7.2
c14.4,0,22,9.4,22,27.7v35.4H149z"/>
<path d="M188.7,87.1c-8.4,0-17.4-3.3-23.7-7.9l5.5-9.2c5.8,4,12.2,6.1,18,6.1c7.7,0,11.3-2.5,11.3-6.8c0-4.7-5.4-6.9-14.4-10.4
c-13.3-5.2-18.1-9.7-18.1-19.4c0-11.1,8.7-16.8,21.1-16.8c7.8,0,15.4,2.8,21,6.8l-5.3,9.3c-5.1-3.5-10.1-5.3-16-5.3
c-5.9,0-8.5,2.4-8.5,5.7c0,3.1,2.1,5.3,11.4,8.9c13.8,5.3,20.8,9.1,20.8,20.7C211.9,82.5,200.8,87.1,188.7,87.1z"/>
<path d="M242,87.1c-15.5,0-27.2-12.8-27.2-32.1c0-20.2,12-32.3,27.5-32.3c15.8,0,27.5,12.6,27.5,31.9
C269.9,75.1,257.9,87.1,242,87.1z M241.9,34.3c-9.2,0-14.8,8.1-14.8,20.4c0,13.5,6.2,21,15.4,21c9.2,0,15.2-9.3,15.2-20.6
C257.7,42.4,251.7,34.3,241.9,34.3z"/>
<path d="M310,36.8c-2.6-1.4-5.3-2.2-9.3-2.2c-7.7,0-12.1,5.4-12.1,15.9v35.3h-12.1V24h12.1v5.9c2.8-4.1,8-7.2,14.1-7.2
c4.9,0,8,0.9,10.5,2.6L310,36.8z"/>
<path d="M330.3,15.5v21.5H354v12.1h-23.7v36.6H318V3.4h50.3v12.1H330.3z"/>
<path d="M374.5,85.8V6.4L386.6,0v85.8H374.5z"/>
<path d="M421.9,87.1c-15.5,0-27.2-12.8-27.2-32.1c0-20.2,12-32.3,27.5-32.3c15.8,0,27.5,12.6,27.5,31.9
C449.8,75.1,437.7,87.1,421.9,87.1z M421.7,34.3c-9.2,0-14.8,8.1-14.8,20.4c0,13.5,6.2,21,15.4,21c9.2,0,15.2-9.3,15.2-20.6
C437.5,42.4,431.5,34.3,421.7,34.3z"/>
<path d="M510.9,85.8h-10.4l-8.4-31.2c-1.3-4.7-2.6-10.2-3.2-13.2c-0.6,2.9-1.9,8.6-3.2,13.3l-8.2,31.1h-10.4L450.3,24h12l7.3,30
c1.2,4.7,2.5,10.6,3.1,13.5c0.7-3.1,2.1-8.7,3.4-13.5l8.2-30h9.8l8.4,30.1c1.3,4.8,2.6,10.4,3.3,13.4c0.7-3.1,1.9-8.8,3.1-13.5
l7.3-30h12L510.9,85.8z"/>
<path d="M79.1,76.2c-6.7,0-12.7-4-14.9-13.2l40.5-12.2c-0.2-2.8-0.6-5.4-1.3-8c-3-11.6-11.1-20.1-24.7-20.1
c-16,0-27.1,11.3-27.1,32.3c0,20.5,12.2,32.1,26.7,32.1c9.4,0,15.9-2.9,21.3-8.1l-7.2-7.8C88.4,74.3,84.3,76.2,79.1,76.2z
M78,33.7c7.9,0,12.1,4.5,13.8,10.5l-27.9,8.5l0-3.5C64.9,39.3,69.8,33.7,78,33.7z"/>
</svg>
</a>
<div class="links">
<a href="https://github.com/skjena/cancerTherapy">Source on GitHub</a>
</div>
</div>
</footer>
<script src="bundle.js"></script>
<!-- Google analytics -->
<script src="analytics.js"></script>
</body>
</html>