Commit eb2cc358 authored by Joshua Gould's avatar Joshua Gould

specify https protocol to enable running locally without server

parent dc0545ce
This source diff could not be displayed because it is too large. You can view the blob instead.
morpheus.SampleDatasets = function(options) { morpheus.SampleDatasets = function (options) {
if (!options.openText) { if (!options.openText) {
options.openText = 'Open'; options.openText = 'Open';
} }
...@@ -10,34 +10,34 @@ morpheus.SampleDatasets = function(options) { ...@@ -10,34 +10,34 @@ morpheus.SampleDatasets = function(options) {
exampleHtml.push('<table class="table table-condensed">'); exampleHtml.push('<table class="table table-condensed">');
exampleHtml exampleHtml
.push('<td>Cancer Cell Line Encyclopedia (CCLE), Project Achilles</td>'); .push('<td>Cancer Cell Line Encyclopedia (CCLE), Project Achilles</td>');
exampleHtml exampleHtml
.push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="mrna"> Gene Expression</td>'); .push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="mrna"> Gene Expression</td>');
exampleHtml exampleHtml
.push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="cn"> Copy Number By Gene</td>'); .push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="cn"> Copy Number By Gene</td>');
exampleHtml exampleHtml
.push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="sig_genes"> Mutations</td>'); .push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="sig_genes"> Mutations</td>');
exampleHtml exampleHtml
.push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="ach"> Gene essentiality</td>'); .push('<td><input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="ach"> Gene essentiality</td>');
exampleHtml exampleHtml
.push('<td><button disabled type="button" class="btn btn-default" name="ccle">' .push('<td><button disabled type="button" class="btn btn-default" name="ccle">'
+ options.openText + '</button></td>'); + options.openText + '</button></td>');
exampleHtml.push('</tr></table>'); exampleHtml.push('</tr></table>');
exampleHtml exampleHtml
.push('<div class="text-muted">TCGA data version 1/11/2015</div><span class="text-muted">Please adhere to <a target="_blank" href="http://cancergenome.nih.gov/abouttcga/policies/publicationguidelines"> the TCGA publication guidelines</a></u> when using TCGA data in your publications.</span>'); .push('<div class="text-muted">TCGA data version 1/11/2015</div><span class="text-muted">Please adhere to <a target="_blank" href="http://cancergenome.nih.gov/abouttcga/policies/publicationguidelines"> the TCGA publication guidelines</a></u> when using TCGA data in your publications.</span>');
exampleHtml.push('<div name="tcga"></div>'); exampleHtml.push('<div name="tcga"></div>');
$(exampleHtml.join('')).appendTo($el); $(exampleHtml.join('')).appendTo($el);
$el.find('[name=ccle]').on('click', function(e) { $el.find('[name=ccle]').on('click', function (e) {
e.preventDefault(); e.preventDefault();
var $this = $(this); var $this = $(this);
var obj = {}; var obj = {};
$this.parents('tr').find('input:checked').each(function(i, c) { $this.parents('tr').find('input:checked').each(function (i, c) {
obj[$(c).data('type')] = true; obj[$(c).data('type')] = true;
}); });
...@@ -45,12 +45,12 @@ morpheus.SampleDatasets = function(options) { ...@@ -45,12 +45,12 @@ morpheus.SampleDatasets = function(options) {
}); });
$el.on('click', '[name=tcgaLink]', function(e) { $el.on('click', '[name=tcgaLink]', function (e) {
e.preventDefault(); e.preventDefault();
var $this = $(this); var $this = $(this);
var type = $this.data('disease-type'); var type = $this.data('disease-type');
var obj = {}; var obj = {};
$this.parents('tr').find('input:checked').each(function(i, c) { $this.parents('tr').find('input:checked').each(function (i, c) {
obj[$(c).data('type')] = true; obj[$(c).data('type')] = true;
}); });
var options; var options;
...@@ -65,143 +65,143 @@ morpheus.SampleDatasets = function(options) { ...@@ -65,143 +65,143 @@ morpheus.SampleDatasets = function(options) {
_this.openTcga(obj); _this.openTcga(obj);
}); });
$el $el
.on( .on(
'click', 'click',
'[data-toggle=dataTypeToggle]', '[data-toggle=dataTypeToggle]',
function(e) { function (e) {
var $this = $(this); var $this = $(this);
var $button = $this.parents('tr').find('button'); var $button = $this.parents('tr').find('button');
var isDisabled = $this.parents('tr').find( var isDisabled = $this.parents('tr').find(
'input:checked').length === 0; 'input:checked').length === 0;
$button.prop('disabled', isDisabled); $button.prop('disabled', isDisabled);
if (!isDisabled) { if (!isDisabled) {
$button $button
.removeClass('animated flash') .removeClass('animated flash')
.addClass('animated flash') .addClass('animated flash')
.one( .one(
'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend',
function() { function () {
$(this).removeClass( $(this).removeClass(
'animated flash'); 'animated flash');
});
}
}); });
}
});
$ $
.ajax( .ajax(
'//s3.amazonaws.com/data.clue.io/morpheus/tcga/tcga_index.txt') 'https://s3.amazonaws.com/data.clue.io/morpheus/tcga/tcga_index.txt')
.done( .done(
function(text) { function (text) {
var lines = text.split('\n'); var lines = text.split('\n');
var diseases = []; var diseases = [];
for (var i = 0; i < lines.length; i++) { for (var i = 0; i < lines.length; i++) {
var line = lines[i]; var line = lines[i];
if (line === '') { if (line === '') {
continue; continue;
} }
var tokens = line.split('\t'); var tokens = line.split('\t');
var type = tokens[0]; var type = tokens[0];
var dataTypes = tokens[1].split(','); var dataTypes = tokens[1].split(',');
var name = morpheus.TcgaUtil.DISEASE_STUDIES[type]; var name = morpheus.TcgaUtil.DISEASE_STUDIES[type];
var disease = { var disease = {
mrna : dataTypes mrna: dataTypes
.indexOf('mRNAseq_RSEM_normalized_log2.txt') !== -1, .indexOf('mRNAseq_RSEM_normalized_log2.txt') !== -1,
sig_genes : dataTypes.indexOf('sig_genes.txt') !== -1, sig_genes: dataTypes.indexOf('sig_genes.txt') !== -1,
gistic : dataTypes gistic: dataTypes
.indexOf('all_lesions.conf_99.txt') !== -1, .indexOf('all_lesions.conf_99.txt') !== -1,
sample_info : dataTypes.indexOf('All_CDEs.txt') !== -1, sample_info: dataTypes.indexOf('All_CDEs.txt') !== -1,
mutation : dataTypes mutation: dataTypes
.indexOf('mutations_merged.maf.txt') !== -1, .indexOf('mutations_merged.maf.txt') !== -1,
rppa : dataTypes.indexOf('rppa.txt') !== -1, rppa: dataTypes.indexOf('rppa.txt') !== -1,
methylation : dataTypes methylation: dataTypes
.indexOf('meth.by_mean.data.txt') !== -1, .indexOf('meth.by_mean.data.txt') !== -1,
name : name, name: name,
type : type, type: type,
dataTypes : dataTypes dataTypes: dataTypes
}; };
if (disease.mrna || disease.gistic if (disease.mrna || disease.gistic
|| disease.sig_genes || disease.rppa || disease.sig_genes || disease.rppa
|| disease.methylation) { || disease.methylation) {
diseases.push(disease); diseases.push(disease);
} }
} }
diseases.sort(function(a, b) { diseases.sort(function (a, b) {
a = a.name.toLowerCase(); a = a.name.toLowerCase();
b = b.name.toLowerCase(); b = b.name.toLowerCase();
return (a === b ? 0 : (a < b ? -1 : 1)); return (a === b ? 0 : (a < b ? -1 : 1));
}); });
var tcga = []; var tcga = [];
_this.diseases = diseases; _this.diseases = diseases;
tcga.push('<table class="table table-condensed">'); tcga.push('<table class="table table-condensed">');
// ><tr><th>Disease</th><th>Gene Expression</th><th>Copy // ><tr><th>Disease</th><th>Gene Expression</th><th>Copy
// Number</th><th>Copy Number By // Number</th><th>Copy Number By
// Gene</th><th>Mutations</th><th>Proteomics</th><th>Methylation</th></tr> // Gene</th><th>Mutations</th><th>Proteomics</th><th>Methylation</th></tr>
for (var i = 0; i < diseases.length; i++) { for (var i = 0; i < diseases.length; i++) {
var disease = diseases[i]; var disease = diseases[i];
tcga.push('<tr>'); tcga.push('<tr>');
tcga.push('<td>' + disease.name + '</td>'); tcga.push('<td>' + disease.name + '</td>');
tcga.push('<td>'); tcga.push('<td>');
if (disease.mrna) { if (disease.mrna) {
tcga tcga
.push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="mrna"> Gene Expression'); .push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="mrna"> Gene Expression');
} }
tcga.push('</td>'); tcga.push('</td>');
tcga.push('<td>'); tcga.push('<td>');
if (disease.gistic) { if (disease.gistic) {
tcga tcga
.push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="gistic"> GISTIC Copy Number'); .push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="gistic"> GISTIC Copy Number');
} }
tcga.push('</td>'); tcga.push('</td>');
tcga.push('<td>'); tcga.push('<td>');
if (disease.gistic) { if (disease.gistic) {
tcga tcga
.push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="gisticGene"> Copy Number By Gene'); .push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="gisticGene"> Copy Number By Gene');
} }
tcga.push('</td>'); tcga.push('</td>');
tcga.push('<td>'); tcga.push('<td>');
if (disease.sig_genes) { if (disease.sig_genes) {
tcga tcga
.push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="sig_genes"> Mutations'); .push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="sig_genes"> Mutations');
} }
tcga.push('</td>'); tcga.push('</td>');
tcga.push('<td>'); tcga.push('<td>');
if (disease.rppa) { if (disease.rppa) {
tcga tcga
.push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="rppa"> Proteomics'); .push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="rppa"> Proteomics');
} }
tcga.push('</td>'); tcga.push('</td>');
tcga.push('<td>'); tcga.push('<td>');
if (disease.methylation) { if (disease.methylation) {
tcga tcga
.push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="methylation"> Methylation'); .push('<input type="checkbox" style="margin-left:4px;" data-toggle="dataTypeToggle" data-type="methylation"> Methylation');
} }
tcga.push('</td>'); tcga.push('</td>');
tcga.push('<td>'); tcga.push('<td>');
tcga tcga
.push('<td><button disabled type="button" class="btn btn-default" name="tcgaLink" data-disease-type="' .push('<td><button disabled type="button" class="btn btn-default" name="tcgaLink" data-disease-type="'
+ disease.type + disease.type
+ '">' + '">'
+ options.openText + options.openText
+ '</button></td>'); + '</button></td>');
tcga.push('</td>'); tcga.push('</td>');
tcga.push('</tr>'); tcga.push('</tr>');
} }
tcga.push('</table>'); tcga.push('</table>');
$(tcga.join('')).appendTo($el.find('[name=tcga]')); $(tcga.join('')).appendTo($el.find('[name=tcga]'));
}); });
}; };
morpheus.SampleDatasets.getTcgaDataset = function(options) { morpheus.SampleDatasets.getTcgaDataset = function (options) {
var baseUrl = '//s3.amazonaws.com/data.clue.io/morpheus/tcga/' var baseUrl = 'https://s3.amazonaws.com/data.clue.io/morpheus/tcga/'
+ options.type + '/'; + options.type + '/';
var datasetOptions = {}; var datasetOptions = {};
if (options.mrna) { if (options.mrna) {
datasetOptions.mrna = baseUrl + 'mRNAseq_RSEM_normalized_log2.txt'; datasetOptions.mrna = baseUrl + 'mRNAseq_RSEM_normalized_log2.txt';
...@@ -227,21 +227,21 @@ morpheus.SampleDatasets.getTcgaDataset = function(options) { ...@@ -227,21 +227,21 @@ morpheus.SampleDatasets.getTcgaDataset = function(options) {
datasetOptions.mrnaClust = baseUrl + 'bestclus.txt'; datasetOptions.mrnaClust = baseUrl + 'bestclus.txt';
datasetOptions.columnAnnotations = [ { datasetOptions.columnAnnotations = [{
file : baseUrl + 'All_CDEs.txt', file: baseUrl + 'All_CDEs.txt',
datasetField : 'participant_id', datasetField: 'participant_id',
fileField : 'patient_id' fileField: 'patient_id'
} ]; }];
return morpheus.TcgaUtil.getDataset(datasetOptions); return morpheus.TcgaUtil.getDataset(datasetOptions);
}; };
morpheus.SampleDatasets.getCCLEDataset = function(options) { morpheus.SampleDatasets.getCCLEDataset = function (options) {
var datasets = []; var datasets = [];
if (options.sig_genes) { if (options.sig_genes) {
datasets datasets
.push({ .push({
dataset : '//s3.amazonaws.com/data.clue.io/morpheus/CCLE_hybrid_capture1650_hg19_NoCommonSNPs_NoNeutralVariants_CDS_2012.05.07.maf.txt' dataset: 'https://s3.amazonaws.com/data.clue.io/morpheus/CCLE_hybrid_capture1650_hg19_NoCommonSNPs_NoNeutralVariants_CDS_2012.05.07.maf.txt'
}); });
// datasets // datasets
// .push({ // .push({
// dataset : // dataset :
...@@ -250,65 +250,65 @@ morpheus.SampleDatasets.getCCLEDataset = function(options) { ...@@ -250,65 +250,65 @@ morpheus.SampleDatasets.getCCLEDataset = function(options) {
} }
if (options.cn) { if (options.cn) {
datasets datasets
.push({ .push({
dataset : '//s3.amazonaws.com/data.clue.io/morpheus/CCLE_copynumber_byGene_2013-12-03.gct' dataset: 'https://s3.amazonaws.com/data.clue.io/morpheus/CCLE_copynumber_byGene_2013-12-03.gct'
}); });
} }
if (options.mrna) { if (options.mrna) {
datasets datasets
.push({ .push({
dataset : '//s3.amazonaws.com/data.clue.io/morpheus/CCLE_Expression_Entrez_2012-09-29.txt' dataset: 'https://s3.amazonaws.com/data.clue.io/morpheus/CCLE_Expression_Entrez_2012-09-29.txt'
}); });
} }
if (options.ach) { if (options.ach) {
datasets datasets
.push({ .push({
dataset : '//s3.amazonaws.com/data.clue.io/morpheus/Achilles_QC_v2.4.3.rnai.Gs.gct' dataset: 'https://s3.amazonaws.com/data.clue.io/morpheus/Achilles_QC_v2.4.3.rnai.Gs.gct'
}); });
} }
var columnAnnotations = [ { var columnAnnotations = [{
file : '//s3.amazonaws.com/data.clue.io/morpheus/CCLE_Sample_Info.txt', file: 'https://s3.amazonaws.com/data.clue.io/morpheus/CCLE_Sample_Info.txt',
datasetField : 'id', datasetField: 'id',
fileField : 'id' fileField: 'id'
} ]; }];
if (options.ach) { if (options.ach) {
// there are several cell lines that are in Achilles but not CCLE // there are several cell lines that are in Achilles but not CCLE
columnAnnotations columnAnnotations
.push({ .push({
file : '//s3.amazonaws.com/data.clue.io/morpheus/Achilles_v2.4_SampleInfo_small.txt', file: 'https://s3.amazonaws.com/data.clue.io/morpheus/Achilles_v2.4_SampleInfo_small.txt',
datasetField : 'id', datasetField: 'id',
fileField : 'id' fileField: 'id'
}); });
} }
var returnDeferred = $.Deferred(); var returnDeferred = $.Deferred();
var datasetDef = morpheus.DatasetUtil.readDatasetArray({ var datasetDef = morpheus.DatasetUtil.readDatasetArray({
dataset : datasets dataset: datasets
}); });
var annotationDef = morpheus.DatasetUtil.annotate({ var annotationDef = morpheus.DatasetUtil.annotate({
annotations : columnAnnotations, annotations: columnAnnotations,
isColumns : true isColumns: true
}); });
var datasetToReturn; var datasetToReturn;
datasetDef.done(function(d) { datasetDef.done(function (d) {
datasetToReturn = d; datasetToReturn = d;
}); });
datasetDef.fail(function(message) { datasetDef.fail(function (message) {
returnDeferred.reject(message); returnDeferred.reject(message);
}); });
var annotationCallbacks; var annotationCallbacks;
annotationDef.done(function(callbacks) { annotationDef.done(function (callbacks) {
annotationCallbacks = callbacks; annotationCallbacks = callbacks;
}); });
annotationDef.fail(function(message) { annotationDef.fail(function (message) {
returnDeferred.reject(message); returnDeferred.reject(message);
}); });
$.when.apply($, [ datasetDef, annotationDef ]).then(function() { $.when.apply($, [datasetDef, annotationDef]).then(function () {
annotationCallbacks.forEach(function(f) { annotationCallbacks.forEach(function (f) {
f(datasetToReturn); f(datasetToReturn);
}); });
returnDeferred.resolve(datasetToReturn); returnDeferred.resolve(datasetToReturn);
...@@ -318,82 +318,82 @@ morpheus.SampleDatasets.getCCLEDataset = function(options) { ...@@ -318,82 +318,82 @@ morpheus.SampleDatasets.getCCLEDataset = function(options) {
}; };
morpheus.SampleDatasets.prototype = { morpheus.SampleDatasets.prototype = {
openTcga : function(options) { openTcga: function (options) {
this this
.callback({ .callback({
name : options.name, name: options.name,
renderReady : function(heatMap) { renderReady: function (heatMap) {
var whitelist = [ var whitelist = [
'age_at_initial_pathologic_diagnosis', 'age_at_initial_pathologic_diagnosis',
'breast_carcinoma_estrogen_receptor_status', 'breast_carcinoma_estrogen_receptor_status',
'breast_carcinoma_progesterone_receptor_status', 'breast_carcinoma_progesterone_receptor_status',
'lab_proc_her2_neu_immunohistochemistry_receptor_status', 'lab_proc_her2_neu_immunohistochemistry_receptor_status',
'days_to_death', 'ethnicity', 'gender', 'days_to_death', 'ethnicity', 'gender',
'histological_type', 'pathologic_stage' ]; 'histological_type', 'pathologic_stage'];
var columnMetadata = heatMap.getProject() var columnMetadata = heatMap.getProject()
.getFullDataset().getColumnMetadata(); .getFullDataset().getColumnMetadata();
for (var i = 0; i < whitelist.length; i++) { for (var i = 0; i < whitelist.length; i++) {
if (columnMetadata.getByName(whitelist[i])) { if (columnMetadata.getByName(whitelist[i])) {
heatMap.addTrack(whitelist[i], true, 'color'); heatMap.addTrack(whitelist[i], true, 'color');
} }
} }
// view in space of mutation sample ids only // view in space of mutation sample ids only
if (options.sig_genes) { if (options.sig_genes) {
if (heatMap.getTrackIndex('q_value', false) === -1) { if (heatMap.getTrackIndex('q_value', false) === -1) {
heatMap.addTrack('q_value', false, 'text'); heatMap.addTrack('q_value', false, 'text');
} }
} }
}, },
columns : [ { columns: [{
field : 'participant_id', field: 'participant_id',
display : 'text' display: 'text'
}, { }, {
field : 'sample_type', field: 'sample_type',
display : 'color' display: 'color'
}, { }, {
field : 'mutation_summary', field: 'mutation_summary',
display : 'stacked_bar' display: 'stacked_bar'
}, { }, {
field : 'mRNAseq_cluster', field: 'mRNAseq_cluster',
display : 'color, highlight' display: 'color, highlight'
} ], }],
dataset : morpheus.SampleDatasets.getTcgaDataset(options) dataset: morpheus.SampleDatasets.getTcgaDataset(options)
}); });
}, },
openCCLE : function(options) { openCCLE: function (options) {
this.callback({ this.callback({
name : 'CCLE', name: 'CCLE',
rows : [ { rows: [{
field : 'id', field: 'id',
display : 'text,tooltip' display: 'text,tooltip'
}, { }, {
field : 'mutation_summary', field: 'mutation_summary',
display : 'stacked_bar' display: 'stacked_bar'
}, { }, {
field : 'Source', field: 'Source',
display : 'color' display: 'color'
} ], }],
columns : [ { columns: [{
field : 'id', field: 'id',
display : 'text' display: 'text'
}, { }, {
field : 'mutation_summary', field: 'mutation_summary',
display : 'stacked_bar' display: 'stacked_bar'
}, { }, {
field : 'gender', field: 'gender',
display : 'color, highlight' display: 'color, highlight'
}, { }, {
field : 'histology', field: 'histology',
display : 'color, highlight' display: 'color, highlight'
}, { }, {
field : 'histology subtype', field: 'histology subtype',
display : 'color, highlight' display: 'color, highlight'
}, { }, {
field : 'primary_site', field: 'primary_site',
display : 'color, highlight' display: 'color, highlight'
} ], }],
dataset : morpheus.SampleDatasets.getCCLEDataset(options) dataset: morpheus.SampleDatasets.getCCLEDataset(options)
}); });
} }
}; };
morpheus.HeatMapKeyListener = function(controller) { morpheus.HeatMapKeyListener = function(controller) {
var keydown = function(e) { var keydown = function(e) {
// if ((e.isImmediatePropagationStopped && e
// .isImmediatePropagationStopped())
// || (e.isDefaultPrevented && e.isDefaultPrevented())) {
// return;
// }
var tagName = e.target.tagName; var tagName = e.target.tagName;
if (tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA') { if (tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA') {
return; return;
...@@ -189,4 +182,4 @@ morpheus.HeatMapKeyListener = function(controller) { ...@@ -189,4 +182,4 @@ morpheus.HeatMapKeyListener = function(controller) {
e.preventDefault(); e.preventDefault();
e.stopPropagation(); e.stopPropagation();
}); });
}; };
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment