Commit e599771c authored by Daria Zenkova's avatar Daria Zenkova

fixing support of colour and size as options for ggplot

parent 13d4dca9
...@@ -67,7 +67,8 @@ module.exports = function (grunt) { ...@@ -67,7 +67,8 @@ module.exports = function (grunt) {
'js/jquery.event.drag-2.2.js', 'js/jquery.event.drag-2.2.js',
'js/clipboard.min.js', 'js/slick.min.js', 'js/clipboard.min.js', 'js/slick.min.js',
'js/js.cookie.js', 'js/d3.layout.cloud.js', 'js/js.cookie.js', 'js/d3.layout.cloud.js',
'js/long.js', 'js/bytebuffer.js', 'js/protobuf.js'] 'js/long.js', 'js/bytebuffer.js', 'js/protobuf.js',
'js/opencpu-0.5.js', 'js/FileSaver.min.js']
}, },
morpheus: { morpheus: {
nonull: true, nonull: true,
......
...@@ -10,6 +10,10 @@ ...@@ -10,6 +10,10 @@
<title>Morpheus</title> <title>Morpheus</title>
<link rel="stylesheet" href="css/morpheus-latest.min.css"> <link rel="stylesheet" href="css/morpheus-latest.min.css">
<script type="text/javascript" src="js/morpheus-external-latest.min.js"></script> <script type="text/javascript" src="js/morpheus-external-latest.min.js"></script>
<script>
ocpu.seturl("http://localhost:7963/ocpu/library/morpheusR/R");
</script>
<script src="js/morpheus-latest.min.js"></script> <script src="js/morpheus-latest.min.js"></script>
<script src="js/jsme/jsme.nocache.js"></script> <script src="js/jsme/jsme.nocache.js"></script>
<link href="https://fonts.googleapis.com/css?family=Roboto" <link href="https://fonts.googleapis.com/css?family=Roboto"
......
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
var saveAs=saveAs||function(view){"use strict";if(typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var doc=view.document,get_URL=function(){return view.URL||view.webkitURL||view},save_link=doc.createElementNS("http://www.w3.org/1999/xhtml","a"),can_use_save_link="download"in save_link,click=function(node){var event=new MouseEvent("click");node.dispatchEvent(event)},is_safari=/Version\/[\d\.]+.*Safari/.test(navigator.userAgent),webkit_req_fs=view.webkitRequestFileSystem,req_fs=view.requestFileSystem||webkit_req_fs||view.mozRequestFileSystem,throw_outside=function(ex){(view.setImmediate||view.setTimeout)(function(){throw ex},0)},force_saveable_type="application/octet-stream",fs_min_size=0,arbitrary_revoke_timeout=500,revoke=function(file){var revoker=function(){if(typeof file==="string"){get_URL().revokeObjectURL(file)}else{file.remove()}};if(view.chrome){revoker()}else{setTimeout(revoker,arbitrary_revoke_timeout)}},dispatch=function(filesaver,event_types,event){event_types=[].concat(event_types);var i=event_types.length;while(i--){var listener=filesaver["on"+event_types[i]];if(typeof listener==="function"){try{listener.call(filesaver,event||filesaver)}catch(ex){throw_outside(ex)}}}},auto_bom=function(blob){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)){return new Blob(["\ufeff",blob],{type:blob.type})}return blob},FileSaver=function(blob,name,no_auto_bom){if(!no_auto_bom){blob=auto_bom(blob)}var filesaver=this,type=blob.type,blob_changed=false,object_url,target_view,dispatch_all=function(){dispatch(filesaver,"writestart progress write writeend".split(" "))},fs_error=function(){if(target_view&&is_safari&&typeof FileReader!=="undefined"){var reader=new FileReader;reader.onloadend=function(){var base64Data=reader.result;target_view.location.href="data:attachment/file"+base64Data.slice(base64Data.search(/[,;]/));filesaver.readyState=filesaver.DONE;dispatch_all()};reader.readAsDataURL(blob);filesaver.readyState=filesaver.INIT;return}if(blob_changed||!object_url){object_url=get_URL().createObjectURL(blob)}if(target_view){target_view.location.href=object_url}else{var new_tab=view.open(object_url,"_blank");if(new_tab==undefined&&is_safari){view.location.href=object_url}}filesaver.readyState=filesaver.DONE;dispatch_all();revoke(object_url)},abortable=function(func){return function(){if(filesaver.readyState!==filesaver.DONE){return func.apply(this,arguments)}}},create_if_not_found={create:true,exclusive:false},slice;filesaver.readyState=filesaver.INIT;if(!name){name="download"}if(can_use_save_link){object_url=get_URL().createObjectURL(blob);setTimeout(function(){save_link.href=object_url;save_link.download=name;click(save_link);dispatch_all();revoke(object_url);filesaver.readyState=filesaver.DONE});return}if(view.chrome&&type&&type!==force_saveable_type){slice=blob.slice||blob.webkitSlice;blob=slice.call(blob,0,blob.size,force_saveable_type);blob_changed=true}if(webkit_req_fs&&name!=="download"){name+=".download"}if(type===force_saveable_type||webkit_req_fs){target_view=view}if(!req_fs){fs_error();return}fs_min_size+=blob.size;req_fs(view.TEMPORARY,fs_min_size,abortable(function(fs){fs.root.getDirectory("saved",create_if_not_found,abortable(function(dir){var save=function(){dir.getFile(name,create_if_not_found,abortable(function(file){file.createWriter(abortable(function(writer){writer.onwriteend=function(event){target_view.location.href=file.toURL();filesaver.readyState=filesaver.DONE;dispatch(filesaver,"writeend",event);revoke(file)};writer.onerror=function(){var error=writer.error;if(error.code!==error.ABORT_ERR){fs_error()}};"writestart progress write abort".split(" ").forEach(function(event){writer["on"+event]=filesaver["on"+event]});writer.write(blob);filesaver.abort=function(){writer.abort();filesaver.readyState=filesaver.DONE};filesaver.readyState=filesaver.WRITING}),fs_error)}),fs_error)};dir.getFile(name,{create:false},abortable(function(file){file.remove();save()}),abortable(function(ex){if(ex.code===ex.NOT_FOUND_ERR){save()}else{fs_error()}}))}),fs_error)}),fs_error)},FS_proto=FileSaver.prototype,saveAs=function(blob,name,no_auto_bom){return new FileSaver(blob,name,no_auto_bom)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(blob,name,no_auto_bom){if(!no_auto_bom){blob=auto_bom(blob)}return navigator.msSaveOrOpenBlob(blob,name||"download")}}FS_proto.abort=function(){var filesaver=this;filesaver.readyState=filesaver.DONE;dispatch(filesaver,"abort")};FS_proto.readyState=FS_proto.INIT=0;FS_proto.WRITING=1;FS_proto.DONE=2;FS_proto.error=FS_proto.onwritestart=FS_proto.onprogress=FS_proto.onwrite=FS_proto.onabort=FS_proto.onerror=FS_proto.onwriteend=null;return saveAs}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!=null){define([],function(){return saveAs})} var saveAs=saveAs||function(e){"use strict";if(typeof e==="undefined"||typeof navigator!=="undefined"&&/MSIE [1-9]\./.test(navigator.userAgent)){return}var t=e.document,n=function(){return e.URL||e.webkitURL||e},r=t.createElementNS("http://www.w3.org/1999/xhtml","a"),o="download"in r,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=/constructor/i.test(e.HTMLElement),f=/CriOS\/[\d]+/.test(navigator.userAgent),u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},d="application/octet-stream",s=1e3*40,c=function(e){var t=function(){if(typeof e==="string"){n().revokeObjectURL(e)}else{e.remove()}};setTimeout(t,s)},l=function(e,t,n){t=[].concat(t);var r=t.length;while(r--){var o=e["on"+t[r]];if(typeof o==="function"){try{o.call(e,n||e)}catch(i){u(i)}}}},p=function(e){if(/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)){return new Blob([String.fromCharCode(65279),e],{type:e.type})}return e},v=function(t,u,s){if(!s){t=p(t)}var v=this,w=t.type,m=w===d,y,h=function(){l(v,"writestart progress write writeend".split(" "))},S=function(){if((f||m&&a)&&e.FileReader){var r=new FileReader;r.onloadend=function(){var t=f?r.result:r.result.replace(/^data:[^;]*;/,"data:attachment/file;");var n=e.open(t,"_blank");if(!n)e.location.href=t;t=undefined;v.readyState=v.DONE;h()};r.readAsDataURL(t);v.readyState=v.INIT;return}if(!y){y=n().createObjectURL(t)}if(m){e.location.href=y}else{var o=e.open(y,"_blank");if(!o){e.location.href=y}}v.readyState=v.DONE;h();c(y)};v.readyState=v.INIT;if(o){y=n().createObjectURL(t);setTimeout(function(){r.href=y;r.download=u;i(r);h();c(y);v.readyState=v.DONE});return}S()},w=v.prototype,m=function(e,t,n){return new v(e,t||e.name||"download",n)};if(typeof navigator!=="undefined"&&navigator.msSaveOrOpenBlob){return function(e,t,n){t=t||e.name||"download";if(!n){e=p(e)}return navigator.msSaveOrOpenBlob(e,t)}}w.abort=function(){};w.readyState=w.INIT=0;w.WRITING=1;w.DONE=2;w.error=w.onwritestart=w.onprogress=w.onwrite=w.onabort=w.onerror=w.onwriteend=null;return m}(typeof self!=="undefined"&&self||typeof window!=="undefined"&&window||this.content);if(typeof module!=="undefined"&&module.exports){module.exports.saveAs=saveAs}else if(typeof define!=="undefined"&&define!==null&&define.amd!==null){define([],function(){return saveAs})}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -334,6 +334,7 @@ morpheus.TcgaUtil.getDataset = function (options) { ...@@ -334,6 +334,7 @@ morpheus.TcgaUtil.getDataset = function (options) {
f(datasetToReturn); f(datasetToReturn);
}); });
} }
datasetToReturn.setESSession();
returnDeferred.resolve(datasetToReturn); returnDeferred.resolve(datasetToReturn);
}); });
return returnDeferred; return returnDeferred;
......
...@@ -160,6 +160,33 @@ morpheus.Dataset.prototype = { ...@@ -160,6 +160,33 @@ morpheus.Dataset.prototype = {
this.seriesArrays.push(options.array != null ? options.array this.seriesArrays.push(options.array != null ? options.array
: morpheus.Dataset.createArray(options)); : morpheus.Dataset.createArray(options));
return this.seriesNames.length - 1; return this.seriesNames.length - 1;
},
setESSession : function () {
var _this = this;
if (this.esSession != null) {
return this.esSession;
}
else {
var protoMessage = morpheus.DatasetUtil.toProtoMessage(this);
var blob = new Blob(new Uint8Array(protoMessage), {type: "application/octet-stream"});
saveAs(blob, "test.bin");
var req = ocpu.call("createES", protoMessage, function (session) {
console.log(session);
_this.esSession = session;
}, true);
req.fail(function () {
alert("failed to create ExpressionSet of dataset");
})
}
},
getESSession : function () {
if (this.esSession == null) {
this.setESSession();
}
return this.esSession;
} }
}; };
morpheus.Util.extend(morpheus.Dataset, morpheus.AbstractDataset); morpheus.Util.extend(morpheus.Dataset, morpheus.AbstractDataset);
\ No newline at end of file
...@@ -805,3 +805,118 @@ morpheus.DatasetUtil.getNonEmptyRows = function (dataset) { ...@@ -805,3 +805,118 @@ morpheus.DatasetUtil.getNonEmptyRows = function (dataset) {
} }
return rowsToKeep; return rowsToKeep;
}; };
morpheus.DatasetUtil.getContentArray = function (dataset) {
var array = [];
var nr = dataset.rows;
var nc = dataset.columns;
for (var i = 0; i < nr; i++) {
for (var j = 0; j < nc; j++) {
array.push(dataset.getValue(i, j));
}
}
return array;
};
morpheus.DatasetUtil.getMetadataArray = function (dataset) {
var pDataArray = [];
var participantID = [];
var labelDescription = [];
var columnMeta = dataset.getColumnMetadata();
var n = columnMeta.getMetadataCount();
var m = dataset.columns;
for (var i = 0; i < n; i++) {
var vecI = columnMeta.get(i);
if (vecI.getName() == "participant_id") {
for (var j = 0; j < m; j++) {
participantID.push({
strval : vecI.getValue(j),
isNA : false
});
}
}
else {
for (j = 0; j < m; j++) {
pDataArray.push({
strval : vecI.getValue(j).toString(),
isNA : false
});
}
labelDescription.push({
strval : vecI.getName(),
isNA : false
});
}
}
var rowMeta = dataset.getRowMetadata();
var rowNames = [];
var rowNamesVec = rowMeta.getByName("id");
for (j = 0; j < dataset.rows; j++) {
rowNames.push({
strval : rowNamesVec.getValue(j),
isNA : false
})
}
return {pdata : pDataArray, participants : participantID, labels : labelDescription, rownames : rowNames};
};
morpheus.DatasetUtil.toProtoMessage = function (dataset) {
var array = morpheus.DatasetUtil.getContentArray(dataset);
var meta = morpheus.DatasetUtil.getMetadataArray(dataset);
var messageJSON = {
rclass : "LIST",
rexpValue : [{
rclass : "REAL",
realValue : array,
attrName : "dim",
attrValue : {
rclass : "INTEGER",
intValue : [dataset.rows, dataset.columns]
}
}, {
rclass : "STRING",
stringValue : meta.pdata,
attrName : "dim",
attrValue : {
rclass : "INTEGER",
intValue : [dataset.getColumnMetadata().getMetadataCount() - 1, dataset.columns]
}
}, {
rclass : "STRING",
stringValue : meta.labels
}, {
rclass : "STRING",
stringValue : meta.participants
}, {
rclass : "STRING",
stringValue : meta.rownames
}],
attrName : "names",
attrValue : {
rclass : "STRING",
stringValue : [{
strval : "data",
isNA : false
}, {
strval : "pData",
isNA : false
}, {
strval : "labelDescription",
isNA : false
}, {
strval : "colNames",
isNA : false
}, {
strval : "rowNames",
isNA : false
}]
}
};
ProtoBuf = dcodeIO.ProtoBuf;
var builder = ProtoBuf.protoFromFile("./message.proto"),
rexp = builder.build("rexp"),
REXP = rexp.REXP;
return new REXP(messageJSON);
};
\ No newline at end of file
...@@ -13,6 +13,7 @@ morpheus.Project = function(dataset) { ...@@ -13,6 +13,7 @@ morpheus.Project = function(dataset) {
this.columnSelectionModel = new morpheus.SelectionModel(this, true); this.columnSelectionModel = new morpheus.SelectionModel(this, true);
this.rowSelectionModel = new morpheus.SelectionModel(this, false); this.rowSelectionModel = new morpheus.SelectionModel(this, false);
this.elementSelectionModel = new morpheus.ElementSelectionModel(this); this.elementSelectionModel = new morpheus.ElementSelectionModel(this);
morpheus.Project._recomputeCalculatedFields(this.originalDataset); morpheus.Project._recomputeCalculatedFields(this.originalDataset);
morpheus.Project morpheus.Project
._recomputeCalculatedFields(new morpheus.TransposedDatasetView( ._recomputeCalculatedFields(new morpheus.TransposedDatasetView(
...@@ -99,6 +100,8 @@ morpheus.Project.prototype = { ...@@ -99,6 +100,8 @@ morpheus.Project.prototype = {
this.columnSelectionModel.clear(); this.columnSelectionModel.clear();
this.rowSelectionModel.clear(); this.rowSelectionModel.clear();
this.elementSelectionModel.clear(); this.elementSelectionModel.clear();
this.setESSession(dataset);
if (notify) { if (notify) {
this.trigger(morpheus.Project.Events.DATASET_CHANGED); this.trigger(morpheus.Project.Events.DATASET_CHANGED);
} }
......
This diff is collapsed.
...@@ -253,11 +253,8 @@ morpheus.HeatMapToolBar = function (controller) { ...@@ -253,11 +253,8 @@ morpheus.HeatMapToolBar = function (controller) {
$buttons.on('click', '[name=pca]', function () { $buttons.on('click', '[name=pca]', function () {
console.log("test button clicked"); console.log("test button clicked");
new morpheus.PcaPlotTool({ new morpheus.PcaPlotTool({project : controller.getProject()});
project: controller.getProject(),
getVisibleTrackNames: _.bind(
controller.getVisibleTrackNames, controller)
});
}); });
var $lineOneColumn = $el.find('[data-name=lineOneColumn]'); var $lineOneColumn = $el.find('[data-name=lineOneColumn]');
......
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