From 397f32dad032508f7526d44c844ff5399b3fbda2 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 17 Jul 2017 14:04:30 +0200 Subject: [PATCH] method for creating export string --- .../main/js/gui/export/ElementExportPanel.js | 137 ++++++++++++++++-- .../js/gui/export/ElementExportPanel-test.js | 27 +++- ...e,Protein,Compartment&token=MOCK_TOKEN_ID& | 1 + ...,329183,329184,329185&token=MOCK_TOKEN_ID& | 1 + 4 files changed, 151 insertions(+), 15 deletions(-) create mode 100644 frontend-js/testFiles/apiCalls/projects/sample/models/15781/bioEntities/elements/columns=id,bounds,modelId&type=Drug,Complex,Phenotype,Gene,RNA,Unknown,Degraded,Antisense RNA,Ion,Simple molecule,Protein,Compartment&token=MOCK_TOKEN_ID& create mode 100644 frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329156,329157,329158,329159,329160,329161,329162,329163,329164,329165,329166,329167,329168,329169,329170,329171,329172,329173,329174,329175,329176,329177,329178,329179,329180,329181,329182,329183,329184,329185&token=MOCK_TOKEN_ID& diff --git a/frontend-js/src/main/js/gui/export/ElementExportPanel.js b/frontend-js/src/main/js/gui/export/ElementExportPanel.js index e0dea65134..1a6cdedc94 100644 --- a/frontend-js/src/main/js/gui/export/ElementExportPanel.js +++ b/frontend-js/src/main/js/gui/export/ElementExportPanel.js @@ -79,6 +79,7 @@ ElementExportPanel.prototype.init = function() { addAllButtonText : '>>', removeAllButtonText : '<<' })); + element.appendChild(self._createDownloadButton()); }).then(function() { $(window).trigger('resize'); }); @@ -161,6 +162,86 @@ ElementExportPanel.prototype._createMiriamTypeDiv = function(statistics) { return typeDiv; }; +ElementExportPanel.prototype._createDownloadButton = function() { + var self = this; + var downloadDiv = Functions.createElement({ + type : "div", + name : "downloadDiv", + style : "clear:both; padding: 10px;", + }); + var button = Functions.createElement({ + type : "button", + content : " Download", + onclick : function() { + return self.createResponseString().then(function(result) { + logger.info(result); + }); + }, + }) + downloadDiv.appendChild(button); + + return downloadDiv; +}; + +ElementExportPanel.prototype.createResponseString = function() { + var self = this; + var types; + var includedCompartmentsName; + var models = [ self.getProject().getModel() ]; + for (var i = 0; i < self.getProject().getModel().getSubmodels().length; i++) { + models.push(self.getProject().getModel().getSubmodels()[i]); + } + + var elements = []; + return self.getSelectedTypes().then(function(result) { + types = result; + var promises = []; + for (var i = 0; i < models.length; i++) { + promises.push(models[i].getAliases({ + type : types, + complete : true, + })); + } + return Promise.all(promises); + }).then(function(aliasesByModel) { + for (var i = 0; i < aliasesByModel.length; i++) { + for (var j = 0; j < aliasesByModel[i].length; j++) { + elements.push(aliasesByModel[i][j]); + } + } + return self.getSelectedColumns(); + }).then(function(selectedColumns) { + + var rows = []; + rows.push(self.createResponseHeader(selectedColumns)); + for (var i = 0; i < elements.length; i++) { + rows.push(self.createResponseRow(elements[i], selectedColumns)); + } + return rows.join("\n"); + }); +}; + +ElementExportPanel.prototype.createResponseHeader = function(columns) { + var stringBuilder = []; + for (var i = 0; i < columns.length; i++) { + var column = columns[i]; + stringBuilder.push(column.name); + } + var result = stringBuilder.join("\t"); + return result; + +}; + +ElementExportPanel.prototype.createResponseRow = function(alias, columns) { + var stringBuilder = []; + for (var i = 0; i < columns.length; i++) { + var column = columns[i]; + stringBuilder.push(alias[column.method]()); + } + var result = stringBuilder.join("\t"); + return result; +}; + ElementExportPanel.prototype._createSelectIncludedCompartmentDiv = function() { var i = 0; var self = this; @@ -229,7 +310,7 @@ ElementExportPanel.prototype._createSelectExcludedCompartmentDiv = function() { }); }; -ElementExportPanel.prototype._getCompartmentNames = function() { +ElementExportPanel.prototype._getAllCompartments = function() { var self = this; var compartments = []; var i; @@ -245,20 +326,32 @@ ElementExportPanel.prototype._getCompartmentNames = function() { } return Promise.all(promises).then(function(result) { - var addedNames = []; for (var i = 0; i < result.length; i++) { var modelCompartments = result[i]; for (var j = 0; j < modelCompartments.length; j++) { - if (addedNames[modelCompartments[j].getName()] === undefined) { - compartments.push(modelCompartments[j].getName()); - addedNames[modelCompartments[j].getName()] = true; - } + compartments.push(modelCompartments[j]); + } + } + return compartments; + }); +}; +ElementExportPanel.prototype._getCompartmentNames = function() { + var self = this; + var compartments = []; + var i; + return self._getAllCompartments().then(function(result) { + + var addedNames = []; + for (var i = 0; i < result.length; i++) { + if (addedNames[result[i].getName()] === undefined) { + compartments.push(result[i].getName()); + addedNames[result[i].getName()] = true; } } compartments.sort(compareSimple); return compartments; }); -} +}; ElementExportPanel.prototype._createSelectColumnDiv = function() { var self = this; @@ -400,15 +493,24 @@ ElementExportPanel.prototype.getIncludedCompartmentsDualListbox = function() { return this._includedCompartmentsDualListbox; }; -ElementExportPanel.prototype.getSelectedIncludedCompartmentNames = function() { +ElementExportPanel.prototype.getSelectedIncludedCompartments = function() { var self = this; var list = self.getIncludedCompartmentsDualListbox().selected; + var names = []; var result = []; for (var i = 0; i < list.length; i++) { var element = list[i]; - result.push(element.dataset.id); + names[element.dataset.id] = true; } - return result; + return self._getAllCompartments().then(function(compartments) { + for (var i = 0; i < compartments.length; i++) { + var compartment = compartments[i]; + if (names[compartment.getName()]) { + result.push(compartment); + } + } + return result; + }) }; ElementExportPanel.prototype.setExcludedCompartmentsDualListbox = function(dualListbox) { @@ -418,15 +520,24 @@ ElementExportPanel.prototype.getExcludedCompartmentsDualListbox = function() { return this._excludedCompartmentsDualListbox; }; -ElementExportPanel.prototype.getSelectedExcludedCompartmentNames = function() { +ElementExportPanel.prototype.getSelectedExcludedCompartments = function() { var self = this; var list = self.getExcludedCompartmentsDualListbox().selected; + var names = []; var result = []; for (var i = 0; i < list.length; i++) { var element = list[i]; - result.push(element.dataset.id); + names[element.dataset.id] = true; } - return result; + return self._getAllCompartments().then(function(compartments) { + for (var i = 0; i < compartments.length; i++) { + var compartment = compartments[i]; + if (names[compartment.getName()]) { + result.push(compartment); + } + } + return result; + }) }; ElementExportPanel.prototype.getSelectedMiriamTypes = function() { diff --git a/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js b/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js index 22ff42c6e6..37e96626e0 100644 --- a/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js +++ b/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js @@ -151,7 +151,7 @@ describe('ElementExportPanel', function() { return exportObject.init(); }).then(function() { assert.ok(exportObject.getIncludedCompartmentsDualListbox().available.length > 0); - return exportObject.getSelectedIncludedCompartmentNames(); + return exportObject.getSelectedIncludedCompartments(); }).then(function(result) { assert.equal(result.length, 0); }); @@ -175,11 +175,34 @@ describe('ElementExportPanel', function() { var dlb = exportObject.getExcludedCompartmentsDualListbox(); var listItem = dlb.available[0]; dlb.addSelected(listItem); - return exportObject.getSelectedExcludedCompartmentNames(); + return exportObject.getSelectedExcludedCompartments(); }).then(function(result) { assert.equal(result.length, 1); }); }); }); + describe('createResponseString', function() { + it('get all', function() { + var exportObject; + var project; + return ServerConnector.getProject().then(function(result) { + project = result; + exportObject = new ElementExportPanel({ + element : testDiv, + project : project + }); + return exportObject.init(); + }).then(function() { + $("input[name='ALL']", $(testDiv)).each(function(index, element) { + element.checked = true; + }); + return exportObject.createResponseString(); + }).then(function(result) { + // protein id + assert.ok(result.indexOf("329156") >= 0); + }); + }); + }); + }); diff --git a/frontend-js/testFiles/apiCalls/projects/sample/models/15781/bioEntities/elements/columns=id,bounds,modelId&type=Drug,Complex,Phenotype,Gene,RNA,Unknown,Degraded,Antisense RNA,Ion,Simple molecule,Protein,Compartment&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/models/15781/bioEntities/elements/columns=id,bounds,modelId&type=Drug,Complex,Phenotype,Gene,RNA,Unknown,Degraded,Antisense RNA,Ion,Simple molecule,Protein,Compartment&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000..4f45bc6123 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/sample/models/15781/bioEntities/elements/columns=id,bounds,modelId&type=Drug,Complex,Phenotype,Gene,RNA,Unknown,Degraded,Antisense RNA,Ion,Simple molecule,Protein,Compartment&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"modelId":15781,"bounds":{"x":11.0,"width":118.0,"y":236.0,"height":66.0},"id":329166},{"modelId":15781,"bounds":{"x":683.0,"width":70.0,"y":132.0,"height":25.0},"id":329176},{"modelId":15781,"bounds":{"x":1022.7317629179333,"width":140.0,"y":209.5,"height":25.0},"id":329181},{"modelId":15781,"bounds":{"x":271.0,"width":101.0,"y":207.0,"height":164.0},"id":329158},{"modelId":15781,"bounds":{"x":0.0,"width":80.0,"y":186.0,"height":30.0},"id":329177},{"modelId":15781,"bounds":{"x":455.0,"width":70.0,"y":169.5,"height":25.0},"id":329161},{"modelId":15781,"bounds":{"x":918.0,"width":80.0,"y":427.0,"height":40.0},"id":329162},{"modelId":15781,"bounds":{"x":712.0,"width":80.0,"y":384.0,"height":40.0},"id":329174},{"modelId":15781,"bounds":{"x":849.0,"width":70.0,"y":309.0,"height":25.0},"id":329180},{"modelId":15781,"bounds":{"x":101.0,"width":90.0,"y":129.5,"height":25.0},"id":329167},{"modelId":15781,"bounds":{"x":1044.7317629179333,"width":140.0,"y":27.50000000000091,"height":25.0},"id":329164},{"modelId":15781,"bounds":{"x":165.0,"width":80.0,"y":43.0,"height":50.0},"id":329179},{"modelId":15781,"bounds":{"x":1214.2682370820667,"width":70.0,"y":128.5000000000009,"height":25.0},"id":329163},{"modelId":15781,"bounds":{"x":419.0,"width":80.0,"y":45.0,"height":40.0},"id":329182},{"modelId":15781,"bounds":{"x":279.0,"width":80.0,"y":233.0,"height":40.0},"id":329159},{"modelId":15781,"bounds":{"x":213.0,"width":80.0,"y":128.0,"height":30.0},"id":329172},{"modelId":15781,"bounds":{"x":105.0,"width":70.0,"y":203.5,"height":25.0},"id":329169},{"modelId":15781,"bounds":{"x":358.5,"width":25.0,"y":125.5,"height":25.0},"id":329165},{"modelId":15781,"bounds":{"x":695.0,"width":80.0,"y":239.0,"height":40.0},"id":329178},{"modelId":15781,"bounds":{"x":0.0,"width":90.0,"y":118.5,"height":25.0},"id":329168},{"modelId":15781,"bounds":{"x":12.0,"width":80.0,"y":6.0,"height":40.0},"id":329173},{"modelId":15781,"bounds":{"x":160.0,"width":119.0,"y":332.0,"height":63.0},"id":329171},{"modelId":15781,"bounds":{"x":289.0,"width":80.0,"y":39.0,"height":40.0},"id":329157},{"modelId":15781,"bounds":{"x":959.0,"width":70.0,"y":271.0,"height":25.0},"id":329156},{"modelId":15781,"bounds":{"x":819.0,"width":70.0,"y":134.0,"height":25.0},"id":329160},{"modelId":15781,"bounds":{"x":1197.2682370820667,"width":70.0,"y":287.5,"height":25.0},"id":329185},{"modelId":15781,"bounds":{"x":1225.7682370820667,"width":80.0,"y":66.0,"height":40.0},"id":329170},{"modelId":15781,"bounds":{"x":401.0,"width":30.0,"y":235.0,"height":30.0},"id":329175},{"modelId":15781,"bounds":{"x":1243.7682370820667,"width":25.0,"y":12.50000000000091,"height":25.0},"id":329184},{"modelId":15781,"bounds":{"x":656.0,"width":80.0,"y":42.0,"height":40.0},"id":329183}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329156,329157,329158,329159,329160,329161,329162,329163,329164,329165,329166,329167,329168,329169,329170,329171,329172,329173,329174,329175,329176,329177,329178,329179,329180,329181,329182,329183,329184,329185&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329156,329157,329158,329159,329160,329161,329162,329163,329164,329165,329166,329167,329168,329169,329170,329171,329172,329173,329174,329175,329176,329177,329178,329179,329180,329181,329182,329183,329184,329185&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000..43816378c6 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329156,329157,329158,329159,329160,329161,329162,329163,329164,329165,329166,329167,329168,329169,329170,329171,329172,329173,329174,329175,329176,329177,329178,329179,329180,329181,329182,329183,329184,329185&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"elementId":"sa9","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"s9","bounds":{"x":455.0,"width":70.0,"y":169.5,"height":25.0},"formula":null,"id":329161,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa14","symbol":"CNC","formerSymbols":[],"notes":"ymbol: CNC\r\nghfjkghfdjkghkdf\r\nfdghjkfdhgjkdfgjhdf\r\njdsfkljsdklfjsdf\r\nsjdkfjsdklfjkl\r\ndsjfkjl\r\nsdfkkjfskldjfkls\r\n\nRecName: Full=Sodium/calcium exchanger 1; AltName: Full=Na(+)/Ca(2+)-exchange protein 1; Flags: Precursor;","references":[{"idObject":860342,"name":"REACT_20130","type":"Reactome","link":"http://www.reactome.org/PathwayBrowser/#REACT_20130","summary":null},{"idObject":860343,"name":"2141","type":"HGNC","link":"http://www.genenames.org/cgi-bin/gene_symbol_report?hgnc_id=2141","summary":null},{"idObject":860344,"name":"6546","type":"Kegg Genes","link":null,"summary":null},{"idObject":860345,"name":"NP_001106272.1","type":"RefSeq","link":"http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?val=NP_001106272.1","summary":null},{"idObject":860346,"name":"NP_001106271.1","type":"RefSeq","link":"http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?val=NP_001106271.1","summary":null},{"idObject":860347,"name":"NP_001106273.1","type":"RefSeq","link":"http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?val=NP_001106273.1","summary":null},{"idObject":860348,"name":"NP_001239553.1","type":"RefSeq","link":"http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?val=NP_001239553.1","summary":null},{"idObject":860349,"name":"PA314","type":"PharmGKB Pathways","link":"http://www.pharmgkb.org/pathway/PA314","summary":null},{"idObject":860350,"name":"NP_066920.1","type":"RefSeq","link":"http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?val=NP_066920.1","summary":null},{"idObject":860351,"name":"6546","type":"Entrez Gene","link":"http://www.ncbi.nlm.nih.gov/gene/6546","summary":null}],"modelId":15781,"synonyms":["CNC","NCX1"],"fullName":"Carney complex, multiple neoplasia and lentiginosis","complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"CNC","bounds":{"x":11.0,"width":118.0,"y":236.0,"height":66.0},"formula":null,"id":329166,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa15","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"gfsdhj","bounds":{"x":160.0,"width":119.0,"y":332.0,"height":63.0},"formula":null,"id":329171,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa2","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s2","bounds":{"x":165.0,"width":80.0,"y":43.0,"height":50.0},"formula":null,"id":329179,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa31","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"NAD+","bounds":{"x":1197.2682370820667,"width":70.0,"y":287.5,"height":25.0},"formula":null,"id":329185,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa8","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Ion","abbreviation":null,"compartmentId":null,"name":"s8","bounds":{"x":358.5,"width":25.0,"y":125.5,"height":25.0},"formula":null,"id":329165,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa35","symbol":null,"formerSymbols":[],"notes":"","references":[{"idObject":860341,"name":"REACT_5224.1","type":"Reactome","link":"http://www.reactome.org/PathwayBrowser/#REACT_5224.1","summary":null}],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"acetoacetate","bounds":{"x":1044.7317629179333,"width":140.0,"y":27.50000000000091,"height":25.0},"formula":null,"id":329164,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa7","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Phenotype","abbreviation":null,"compartmentId":null,"name":"s7","bounds":{"x":213.0,"width":80.0,"y":128.0,"height":30.0},"formula":null,"id":329172,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa25","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"GDP","bounds":{"x":959.0,"width":70.0,"y":271.0,"height":25.0},"formula":null,"id":329156,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"csa1","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Complex","abbreviation":null,"compartmentId":null,"name":"s12","bounds":{"x":271.0,"width":101.0,"y":207.0,"height":164.0},"formula":null,"id":329158,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa6","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Antisense RNA","abbreviation":null,"compartmentId":null,"name":"s6","bounds":{"x":101.0,"width":90.0,"y":129.5,"height":25.0},"formula":null,"id":329167,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa24","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"GTP","bounds":{"x":849.0,"width":70.0,"y":309.0,"height":25.0},"formula":null,"id":329180,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa1","symbol":null,"formerSymbols":[],"notes":"description of S1\r\nthird line","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s1","bounds":{"x":12.0,"width":80.0,"y":6.0,"height":40.0},"formula":null,"id":329173,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa32","symbol":null,"formerSymbols":[],"notes":"","references":[{"idObject":860352,"name":"622","type":"Entrez Gene","link":"http://www.ncbi.nlm.nih.gov/gene/622","summary":null}],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"BDH1","bounds":{"x":1225.7682370820667,"width":80.0,"y":66.0,"height":40.0},"formula":null,"id":329170,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa26","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s23","bounds":{"x":656.0,"width":80.0,"y":42.0,"height":40.0},"formula":null,"id":329183,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa5","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"RNA","abbreviation":null,"compartmentId":null,"name":"s5","bounds":{"x":0.0,"width":90.0,"y":118.5,"height":25.0},"formula":null,"id":329168,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa4","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s4","bounds":{"x":419.0,"width":80.0,"y":45.0,"height":40.0},"formula":null,"id":329182,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa10","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Drug","abbreviation":null,"compartmentId":null,"name":"s10","bounds":{"x":0.0,"width":80.0,"y":186.0,"height":30.0},"formula":null,"id":329177,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa23","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s22","bounds":{"x":918.0,"width":80.0,"y":427.0,"height":40.0},"formula":null,"id":329162,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa34","symbol":null,"formerSymbols":[],"notes":"","references":[{"idObject":860340,"name":"REACT_2390.1","type":"Reactome","link":"http://www.reactome.org/PathwayBrowser/#REACT_2390.1","summary":null}],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"NADH","bounds":{"x":1214.2682370820667,"width":70.0,"y":128.5000000000009,"height":25.0},"formula":null,"id":329163,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa3","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s3","bounds":{"x":289.0,"width":80.0,"y":39.0,"height":40.0},"formula":null,"id":329157,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa28","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"ATP","bounds":{"x":683.0,"width":70.0,"y":132.0,"height":25.0},"formula":null,"id":329176,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa30","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"D-beta hydroxybutyrate","bounds":{"x":1022.7317629179333,"width":140.0,"y":209.5,"height":25.0},"formula":null,"id":329181,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa11","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Unknown","abbreviation":null,"compartmentId":null,"name":"s11","bounds":{"x":105.0,"width":70.0,"y":203.5,"height":25.0},"formula":null,"id":329169,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa22","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s22","bounds":{"x":712.0,"width":80.0,"y":384.0,"height":40.0},"formula":null,"id":329174,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa27","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s23","bounds":{"x":695.0,"width":80.0,"y":239.0,"height":40.0},"formula":null,"id":329178,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa33","symbol":null,"formerSymbols":[],"notes":"","references":[{"idObject":860353,"name":"REACT_5847.1","type":"Reactome","link":"http://www.reactome.org/PathwayBrowser/#REACT_5847.1","summary":null}],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Ion","abbreviation":null,"compartmentId":null,"name":"H+","bounds":{"x":1243.7682370820667,"width":25.0,"y":12.50000000000091,"height":25.0},"formula":null,"id":329184,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa12","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Degraded","abbreviation":null,"compartmentId":null,"name":"s13","bounds":{"x":401.0,"width":30.0,"y":235.0,"height":30.0},"formula":null,"id":329175,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa13","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":329158,"type":"Protein","abbreviation":null,"compartmentId":null,"name":"s14","bounds":{"x":279.0,"width":80.0,"y":233.0,"height":40.0},"formula":null,"id":329159,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]},{"elementId":"sa29","symbol":null,"formerSymbols":[],"notes":"","references":[],"modelId":15781,"synonyms":[],"fullName":null,"complexId":null,"type":"Simple molecule","abbreviation":null,"compartmentId":null,"name":"ADP","bounds":{"x":819.0,"width":70.0,"y":134.0,"height":25.0},"formula":null,"id":329160,"linkedSubmodel":null,"hierarchyVisibilityLevel":[]}] \ No newline at end of file -- GitLab