Skip to content

Commit fe34088

Browse files
committed
SBML export / import implemented
1 parent 79e8a25 commit fe34088

4 files changed

Lines changed: 59 additions & 6 deletions

File tree

javascript/common/tremppi.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,7 @@ tremppi = {
654654
var file = $('#fileSelect')[0].files[0];
655655
if (typeof file === 'undefined')
656656
{
657-
tremppi.logError("No file selected");
657+
tremppi.log("No file selected", 'error');
658658
} else {
659659
data.append('file', file);
660660
var oReq = new XMLHttpRequest();
@@ -664,7 +664,7 @@ tremppi = {
664664
tremppi.log("Project uploaded. " + oReq.responseText);
665665
location.reload(true);
666666
} else {
667-
tremppi.logError("Error " + oReq.responseText + " occurred when trying to upload the project.");
667+
tremppi.log("Error " + oReq.responseText + " occurred when trying to upload the project.", 'error');
668668
}
669669
};
670670
oReq.send(data);
@@ -676,7 +676,7 @@ tremppi = {
676676
var file = $('#fileSelect')[0].files[0];
677677
if (typeof file === 'undefined')
678678
{
679-
tremppi.logError("No file selected");
679+
tremppi.log("No file selected", 'error');
680680
} else {
681681
data.append('file', file);
682682
var oReq = new XMLHttpRequest();
@@ -686,7 +686,7 @@ tremppi = {
686686
tremppi.log("Project imported. " + oReq.responseText);
687687
location.reload(true);
688688
} else {
689-
tremppi.logError("Error " + oReq.responseText + " occurred when trying to import the project.");
689+
tremppi.log("Error " + oReq.responseText + " occurred when trying to import the project.", 'error');
690690
}
691691
};
692692
oReq.send(data);

python/tremppi/db2sbml.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,48 @@ def writeDBModelToSBML(database_path, sbml_output_path, modelRow=1):
195195
return 1
196196
libsbml.writeSBML(document, sbml_output_path)
197197

198+
conn.close()
199+
200+
201+
def database_to_editor(comps, regs):
202+
203+
model_root = { 'nodes' : [], 'edges' : [] }
204+
205+
id = 0
206+
nodeIds = {}
207+
for comp_name, comp_max in comps:
208+
nodeIds[comp_name] = 'n' + str(id)
209+
model_root['nodes'].append(
210+
{
211+
'data' :
212+
{
213+
'Name' : comp_name,
214+
'MaxActivity': str(comp_max),
215+
'Label' : comp_name + ':' + str(comp_max),
216+
'id' : nodeIds[comp_name]
217+
}
218+
}
219+
)
220+
id += 1
221+
222+
223+
id = 0
224+
for source, threshold, target in regs:
225+
model_root['edges'].append(
226+
{
227+
'data' :
228+
{
229+
'source' : nodeIds[source],
230+
'target' : nodeIds[target],
231+
'Threshold': str(threshold),
232+
'Label': 'Free',
233+
'id' : 'e' + str(id)
234+
}
235+
}
236+
)
237+
id += 1
238+
239+
return model_root
198240

199241
#writeDBModelToSBML('./data/databases/bacteriophage.sqlite', './data/sbml/db2sbml_output.sbml', modelRow=3)
200242
#writeDBModelToSBML('./data/databases/modelDB.sqlite', './data/sbml/db2sbml_output.sbml', modelRow=1)

python/tremppi/query_responses.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import sys
1919
import zipfile
2020
import shutil
21+
import sqlite3
22+
import json
2123
from os import replace, remove, makedirs, pathsep
2224
from os.path import dirname, join, basename, exists, split, commonprefix
2325

@@ -30,8 +32,9 @@
3032
from .header import last_page_filename, data_folder, database_file, configure_filename, system
3133
from .project_files import write_projects, delete_project, save_file, get_log_data, is_project_folder
3234
from .server_errors import InvalidUsage, Conflict
33-
from .db2sbml import writeDBModelToSBML
35+
from .db2sbml import writeDBModelToSBML, database_to_editor
3436
from .sbml2db import writeSBMLToDBModel
37+
from .database_reader import read_regulations, read_components
3538

3639
def wrong_get(app, url):
3740
raise InvalidUsage('unknown GET command ' + request.args['command'])
@@ -255,9 +258,16 @@ def importSBML(app, url):
255258

256259
try:
257260
writeSBMLToDBModel(join(target_folder, data_folder, database_file), sbml_file)
261+
with sqlite3.connect(join(target_folder, data_folder, database_file)) as conn:
262+
comps = read_components(conn)
263+
regs = read_regulations(conn)
264+
json_root = database_to_editor(comps, regs)
265+
json_string = json.dumps(json_root)
266+
with open(join(target_folder, data_folder, 'editor.json'), "w+") as editor_file:
267+
editor_file.write(json_string)
258268
except:
259269
shutil.rmtree(target_folder)
260-
raise InvalidUsage('Failed to convert the file ' + file.filename)
270+
raise InvalidUsage('Failed to convert the file ' + file.filename + ' error: ' + sys.exc_info()[0])
261271

262272
write_projects(app.projects_path())
263273
return 'import successful'

python/tremppi/sbml2db.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ def writeSBMLToDBModel(database_path, sbml_input_path, use_species_name_attribut
347347
c.execute('INSERT INTO Parametrizations VALUES ({0})'.format(target_value_string))
348348

349349
conn.commit()
350+
conn.close()
350351
return(0)
351352

352353
#end writeSBMLToDBModel

0 commit comments

Comments
 (0)