Commit f46ea7be authored by Joshua Gould's avatar Joshua Gould

inline tooltips, maf summary

parent a620bde9
This source diff could not be displayed because it is too large. You can view the blob instead.
morpheus.MafFileReader = function() {
morpheus.MafFileReader = function () {
this.geneFilter = null;
};
morpheus.MafFileReader.summarizeMutations = function(dataset) {
var v = dataset.getRowMetadata().add('mutation_summary');
v.getProperties().set(
morpheus.MafFileReader.summarizeMutations = function (dataset) {
var vector = dataset.getRowMetadata().add('mutation_summary');
vector.getProperties().set(
morpheus.VectorKeys.FIELDS,
[ 'Synonymous', 'In Frame Indel', 'Other Non-Synonymous',
'Missense', 'Splice Site', 'Frame Shift', 'Nonsense' ]);
v.getProperties().set(morpheus.VectorKeys.DATA_TYPE, '[number]');
v.getProperties().set(morpheus.VectorKeys.RECOMPUTE_FUNCTION, true);
v.getProperties().set(morpheus.VectorKeys.FUNCTION, function(view) {
var bins = new Int8Array(7); // 1-7
for (var i = 0, size = view.size(); i < size; i++) {
var value = view.getValue(i);
['Synonymous', 'In Frame Indel', 'Other Non-Synonymous',
'Missense', 'Splice Site', 'Frame Shift', 'Nonsense']);
vector.getProperties().set(morpheus.VectorKeys.DATA_TYPE, '[number]');
// v.getProperties().set(morpheus.VectorKeys.RECOMPUTE_FUNCTION, true);
// v.getProperties().set(morpheus.VectorKeys.FUNCTION, function (view) {
// var bins = new Int32Array(7); // 1-7
// for (var i = 0, size = view.size(); i < size; i++) {
// var value = view.getValue(i);
// if (value > 0) {
// bins[value - 1]++;
// }
// }
// return bins;
// });
// computing dynamically screws things up b/c summary is computed for other data types (e.g. CN)
for (var i = 0, nrows = dataset.getRowCount(); i < nrows; i++) {
var bins = new Int32Array(7); // 1-7
for (var j = 0, ncols = dataset.getColumnCount(); j < ncols; j++) {
var value = dataset.getValue(i, j);
if (value > 0) {
bins[value - 1]++;
}
}
return bins;
});
vector.setValue(i, bins);
}
};
morpheus.MafFileReader.getField = function(fieldNames, fieldNameToIndex,
morpheus.MafFileReader.getField = function (fieldNames, fieldNameToIndex,
options) {
options = $.extend({}, {
remove : true,
lc : false
remove: true,
lc: false
}, options);
var name;
var index;
......@@ -53,8 +64,8 @@ morpheus.MafFileReader.getField = function(fieldNames, fieldNameToIndex,
}
if (index !== undefined) {
return {
name : name,
index : index
name: name,
index: index
};
}
};
......@@ -87,13 +98,13 @@ morpheus.MafFileReader.VARIANT_MAP.set('Frame_Shift_Ins', 6);
// non-sense
morpheus.MafFileReader.VARIANT_MAP.set('Nonsense_Mutation', 7);
morpheus.MafFileReader.prototype = {
setGeneFilter : function(geneFilter) {
setGeneFilter: function (geneFilter) {
this.geneFilter = geneFilter;
},
getFormatName : function() {
getFormatName: function () {
return 'maf';
},
_getGeneLevelDataset : function(datasetName, reader) {
_getGeneLevelDataset: function (datasetName, reader) {
var _this = this;
var tab = /\t/;
var header = reader.readLine().split(tab);
......@@ -105,11 +116,11 @@ morpheus.MafFileReader.prototype = {
// TODO six classes of base substitution—C>A, C>G, C>T, T>A, T>C, T>G
// (all substitutions are referred to by the pyrimidine of the mutated
// Watson–Crick base pair)
var fields = [ 'Hugo_Symbol', 'Chromosome', 'Start_position',
var fields = ['Hugo_Symbol', 'Chromosome', 'Start_position',
'Reference_Allele', 'Tumor_Seq_Allele2',
'Variant_Classification', 'Protein_Change', 'ccf_hat',
'tumor_f', 'i_tumor_f', 'Tumor_Sample_Barcode', 'tumor_name',
'Tumor_Sample_UUID' ];
'Tumor_Sample_UUID'];
var fieldNameToIndex = {};
for (var i = 0, length = fields.length; i < length; i++) {
......@@ -119,17 +130,17 @@ morpheus.MafFileReader.prototype = {
}
}
var sampleField = morpheus.MafFileReader.getField([
'Tumor_Sample_Barcode', 'tumor_name', 'Tumor_Sample_UUID' ],
'Tumor_Sample_Barcode', 'tumor_name', 'Tumor_Sample_UUID'],
fieldNameToIndex, {
lc : true,
remove : true
lc: true,
remove: true
});
var sampleColumnName = sampleField.name;
var sampleIdColumnIndex = sampleField.index;
var tumorFractionField = morpheus.MafFileReader.getField([ 'ccf_hat',
'tumor_f', 'i_tumor_f' ], fieldNameToIndex, {
lc : true,
remove : true
var tumorFractionField = morpheus.MafFileReader.getField(['ccf_hat',
'tumor_f', 'i_tumor_f'], fieldNameToIndex, {
lc: true,
remove: true
});
var ccfColumnName;
var ccfColumnIndex;
......@@ -154,13 +165,13 @@ morpheus.MafFileReader.prototype = {
// keep fields that are in file only
fields = [];
var geneFields = [];
for ( var key in fieldNameToIndex) {
for (var key in fieldNameToIndex) {
if (key !== sampleColumnName && key !== ccfColumnName) {
geneFields.push(key);
}
fields.push(key);
}
var geneColumnIndices = geneFields.map(function(field) {
var geneColumnIndices = geneFields.map(function (field) {
return fieldNameToIndex[field];
});
var nGeneFields = geneColumnIndices.length;
......@@ -235,18 +246,18 @@ morpheus.MafFileReader.prototype = {
}
}
var dataset = new morpheus.Dataset({
name : datasetName,
array : variantMatrix,
dataType : 'object',
rows : geneSymbolToIndex.size(),
columns : sampleIdToIndex.size()
name: datasetName,
array: variantMatrix,
dataType: 'object',
rows: geneSymbolToIndex.size(),
columns: sampleIdToIndex.size()
});
var columnIds = dataset.getColumnMetadata().add('id');
sampleIdToIndex.forEach(function(index, id) {
sampleIdToIndex.forEach(function (index, id) {
columnIds.setValue(index, id);
});
var rowIds = dataset.getRowMetadata().add('id');
geneSymbolToIndex.forEach(function(index, id) {
geneSymbolToIndex.forEach(function (index, id) {
rowIds.setValue(index, id);
});
for (var i = 0, nrows = dataset.getRowCount(), ncols = dataset
......@@ -259,9 +270,9 @@ morpheus.MafFileReader.prototype = {
}
if (ccfColumnIndex !== undefined) {
dataset.addSeries({
dataType : 'object',
name : 'allelic_fraction',
array : ccfMatrix
dataType: 'object',
name: 'allelic_fraction',
array: ccfMatrix
});
}
if (this.geneFilter) {
......@@ -272,15 +283,15 @@ morpheus.MafFileReader.prototype = {
orderVector.setValue(i, order);
}
var project = new morpheus.Project(dataset);
project.setRowSortKeys([ new morpheus.SortKey('order',
morpheus.SortKey.SortOrder.ASCENDING) ], true); // sort
project.setRowSortKeys([new morpheus.SortKey('order',
morpheus.SortKey.SortOrder.ASCENDING)], true); // sort
// collapsed
// dataset
var tmp = project.getSortedFilteredDataset();
project = new morpheus.Project(tmp);
var columnIndices = morpheus.Util.seq(tmp.getColumnCount());
columnIndices
.sort(function(a, b) {
.sort(function (a, b) {
for (var i = 0, nrows = tmp.getRowCount(); i < nrows; i++) {
for (var seriesIndex = 0, nseries = tmp
.getSeriesCount(); seriesIndex < nseries; seriesIndex++) {
......@@ -311,11 +322,11 @@ morpheus.MafFileReader.prototype = {
.summarizeMutations(new morpheus.TransposedDatasetView(dataset));
return dataset;
},
read : function(fileOrUrl, callback) {
read: function (fileOrUrl, callback) {
var _this = this;
var name = morpheus.Util.getBaseFileName(morpheus.Util
.getFileName(fileOrUrl));
morpheus.BufferedReader.getArrayBuffer(fileOrUrl, function(err,
morpheus.BufferedReader.getArrayBuffer(fileOrUrl, function (err,
arrayBuffer) {
if (err) {
callback(err);
......
......@@ -376,7 +376,7 @@ morpheus.SampleDatasets.prototype = {
}],
columns: [{
field: 'id',
display: 'text'
display: 'text,tooltip'
}, {
field: 'mutation_summary',
display: 'stacked_bar'
......
......@@ -33,36 +33,22 @@ morpheus.HeatMapTooltipProvider = function (heatMap, rowIndex, columnIndex,
var quickRowTracks = heatMap.rowTracks.filter(function (t) {
return t.settings.inlineTooltip;
});
morpheus.HeatMapTooltipProvider._tracksToString(options,
quickRowTracks, dataset.getRowMetadata(), rowIndex,
tipText, separator);
// if (quickRowTracks.length > 0) {
// tipText
// .push('<div
// style="height:1px;background-color:LightGrey;"></div>');
// }
morpheus.HeatMapTooltipProvider._tracksToString(options,
heatMap.columnTracks.filter(function (t) {
morpheus.HeatMapTooltipProvider._tracksToString(quickRowTracks, dataset.getRowMetadata(), rowIndex, tipText, separator);
morpheus.HeatMapTooltipProvider._tracksToString(heatMap.columnTracks.filter(function (t) {
return t.settings.inlineTooltip;
}), dataset.getColumnMetadata(), columnIndex, tipText,
separator);
}), dataset.getColumnMetadata(), columnIndex, tipText, separator);
}
} else if (quick) {
if (rowIndex !== -1) {
morpheus.HeatMapTooltipProvider._tracksToString(options,
heatMap.rowTracks.filter(function (t) {
return t.settings.inlineTooltip;
}), dataset.getRowMetadata(), rowIndex, tipText,
separator);
morpheus.HeatMapTooltipProvider._tracksToString(heatMap.rowTracks.filter(function (t) {
return t.settings.inlineTooltip && options.name !== t.getName();
}), dataset.getRowMetadata(), rowIndex, tipText, separator);
}
if (columnIndex !== -1) {
morpheus.HeatMapTooltipProvider._tracksToString(options,
heatMap.columnTracks.filter(function (t) {
return t.settings.inlineTooltip;
}), dataset.getColumnMetadata(), columnIndex, tipText,
separator);
morpheus.HeatMapTooltipProvider._tracksToString(heatMap.columnTracks.filter(function (t) {
return t.settings.inlineTooltip && options.name !== t.getName();
}), dataset.getColumnMetadata(), columnIndex, tipText, separator);
}
}
......@@ -286,7 +272,7 @@ morpheus.HeatMapTooltipProvider.vectorToString = function (vector, index,
}
}
};
morpheus.HeatMapTooltipProvider._tracksToString = function (options, tracks, metadata, index, tipText, separator) {
morpheus.HeatMapTooltipProvider._tracksToString = function (tracks, metadata, index, tipText, separator) {
for (var i = 0; i < tracks.length; i++) {
morpheus.HeatMapTooltipProvider.vectorToString(metadata.getByName(tracks[i].name), index, tipText,
separator);
......@@ -299,7 +285,7 @@ morpheus.HeatMapTooltipProvider._metadataToString = function (options, tracks,
for (var i = 0, ntracks = tracks.length; i < ntracks; i++) {
var track = tracks[i];
if ((track.isVisible() && track.isShowTooltip())) {
if (tracks[i].name === options.name) {
if (tracks[i].name === options.name) { // show the vector that we're mousing over 1st
filtered.splice(0, 0, track);
} else {
filtered.push(track);
......@@ -307,9 +293,7 @@ morpheus.HeatMapTooltipProvider._metadataToString = function (options, tracks,
}
}
// show the vector that we're mousing over 1st
morpheus.HeatMapTooltipProvider._tracksToString(options, filtered,
metadata, index, tipText, separator);
morpheus.HeatMapTooltipProvider._tracksToString(filtered, metadata, index, tipText, separator);
};
morpheus.HeatMapTooltipProvider._nodesToString = function (tipText, nodes,
......
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