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