Commit f46ea7be authored by Joshua Gould's avatar Joshua Gould

inline tooltips, maf summary

parent a620bde9
This diff is collapsed.
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