13
13
** copyright (C) 2003-2017 Upinder S. Bhalla. and NCBS
14
14
Created : Thu May 13 10:19:00 2016(+0530)
15
15
Version
16
- Last-Updated: Tue Dec 3 17 :30:00 2018 (+0530)
16
+ Last-Updated: Sat Jan 19 10 :30:00 2019 (+0530)
17
17
By:HarshaRani
18
18
**********************************************************************/
19
+ 2019:
20
+ Jan 19: - validator flag is set 'on' from True
21
+ - groupname if missing in the sbml file then groupid is taken,
22
+ if both are missing then its not a valide sbml file
19
23
2018
20
24
Dec 3: - reading motor and diffconstant from pool
21
25
Nov 30: - groups and subgroups are read from xml to moose
82
86
except ImportError :
83
87
pass
84
88
85
- def mooseReadSBML (filepath , loadpath , solver = "ee" ,validate = "True " ):
89
+ def mooseReadSBML (filepath , loadpath , solver = "ee" ,validate = "on " ):
86
90
"""Load SBML model
87
91
"""
88
92
global foundLibSBML_
@@ -102,13 +106,15 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
102
106
with open (filepath , "r" ) as filep :
103
107
loadpath = loadpath [loadpath .find ('/' )+ 1 :]
104
108
loaderror = None
109
+ errorFlag = ""
105
110
filep = open (filepath , "r" )
106
111
document = libsbml .readSBML (filepath )
107
112
tobecontinue = False
108
- if validate == "True " :
109
- tobecontinue = validateModel (document )
113
+ if validate == "on " :
114
+ tobecontinue , errorFlag = validateModel (document )
110
115
else :
111
116
tobecontinue = True
117
+
112
118
if tobecontinue :
113
119
level = document .getLevel ()
114
120
version = document .getVersion ()
@@ -126,6 +132,7 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
126
132
loadpath = '/' + loadpath
127
133
baseId = moose .Neutral (loadpath )
128
134
basePath = baseId
135
+
129
136
# All the model will be created under model as
130
137
# a thumbrule
131
138
basePath = moose .Neutral (baseId .path )
@@ -150,7 +157,7 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
150
157
errorFlag ,msgCmpt = createCompartment (
151
158
basePath , model , comptSbmlidMooseIdMap )
152
159
153
- groupInfo = checkGroup (basePath ,model )
160
+ groupInfo = checkGroup (basePath ,model , comptSbmlidMooseIdMap )
154
161
funcDef = checkFuncDef (model )
155
162
if errorFlag :
156
163
specInfoMap = {}
@@ -207,8 +214,11 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
207
214
loaderror = loaderror
208
215
return moose .element (loadpath ), loaderror
209
216
else :
210
- print ("Validation failed while reading the model." )
211
- return moose .element ('/' ), "This document is not valid SBML"
217
+ print ("Validation failed while reading the model." + "\n " + errorFlag )
218
+ if errorFlag != "" :
219
+ return moose .element ('/' ),errorFlag
220
+ else :
221
+ return moose .element ('/' ), "This document is not valid SBML"
212
222
213
223
def checkFuncDef (model ):
214
224
funcDef = {}
@@ -229,35 +239,41 @@ def checkFuncDef(model):
229
239
funcDef [f .getName ()] = {'bvar' :bvar , "MathML" : fmath .getRightChild ()}
230
240
return funcDef
231
241
232
- def checkGroup (basePath ,model ):
242
+ def checkGroup (basePath ,model , comptSbmlidMooseIdMap ):
233
243
groupInfo = {}
234
244
modelAnnotaInfo = {}
235
245
if model .getPlugin ("groups" ) != None :
236
246
mplugin = model .getPlugin ("groups" )
237
247
modelgn = mplugin .getNumGroups ()
238
248
for gindex in range (0 , mplugin .getNumGroups ()):
239
249
p = mplugin .getGroup (gindex )
250
+ grpName = ""
240
251
groupAnnoInfo = {}
241
252
groupAnnoInfo = getObjAnnotation (p , modelAnnotaInfo )
253
+
242
254
if groupAnnoInfo != {}:
243
- if moose .exists (basePath .path + '/' + groupAnnoInfo ["Compartment" ]):
255
+ if moose .exists (basePath .path + '/' + comptSbmlidMooseIdMap [groupAnnoInfo ["Compartment" ]]["MooseId" ].name ):
256
+ groupName = p .getName ()
257
+ if groupName == " " :
258
+ groupName = p .getId ()
244
259
if "Group" in groupAnnoInfo :
245
- if moose .exists (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ]):
246
- if moose .exists (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ]+ '/' + p . getName () ):
247
- moosegrp = moose .element (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ]+ '/' + p . getName () )
260
+ if moose .exists (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ]):
261
+ if moose .exists (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ]+ '/' + groupName ):
262
+ moosegrp = moose .element (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ]+ '/' + groupName )
248
263
else :
249
- moosegrp = moose .Neutral (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ]+ '/' + p . getName () )
264
+ moosegrp = moose .Neutral (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ]+ '/' + groupName )
250
265
else :
251
- moose .Neutral (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ])
252
- if moose .exists (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ]+ '/' + p . getName () ):
253
- moosegrp = moose .element (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ]+ '/' + p . getName () )
266
+ moose .Neutral (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ])
267
+ if moose .exists (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ]+ '/' + groupName ):
268
+ moosegrp = moose .element (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ]+ '/' + groupName )
254
269
else :
255
- moosegrp = moose .Neutral (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + groupAnnoInfo ["Group" ]+ '/' + p . getName () )
270
+ moosegrp = moose .Neutral (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupAnnoInfo ["Group" ]+ '/' + groupName )
256
271
else :
257
- if not moose .exists (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + p . getName () ):
258
- moosegrp = moose .Neutral (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + p . getName () )
272
+ if not moose .exists (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupName ):
273
+ moosegrp = moose .Neutral (basePath .path + '/' + comptSbmlidMooseIdMap [ groupAnnoInfo ["Compartment" ]][ "MooseId" ]. name + '/' + groupName )
259
274
else :
260
- moosegrp = moose .element (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + p .getName ())
275
+ moosegrp = moose .element (basePath .path + '/' + comptSbmlidMooseIdMap [groupAnnoInfo ["Compartment" ]]["MooseId" ].name + '/' + groupName )
276
+
261
277
moosegrpinfo = moose .Annotator (moosegrp .path + '/info' )
262
278
moosegrpinfo .color = groupAnnoInfo ["bgColor" ]
263
279
else :
@@ -1206,20 +1222,21 @@ def createSpecies(basePath, model, comptSbmlidMooseIdMap,
1206
1222
poolInfo = moose .Annotator (poolId .path + '/info' )
1207
1223
else :
1208
1224
poolInfo = moose .element (poolId .path + '/info' )
1209
-
1225
+
1210
1226
for k , v in list (specAnnoInfo .items ()):
1211
1227
if k == 'xCord' :
1212
1228
poolInfo .x = float (v )
1213
1229
elif k == 'yCord' :
1214
1230
poolInfo .y = float (v )
1215
1231
elif k == 'bgColor' :
1216
1232
poolInfo .color = v
1217
- elif k == 'Color ' :
1233
+ elif k == 'textColor ' :
1218
1234
poolInfo .textColor = v
1219
1235
elif k == 'diffConstant' :
1220
1236
poolId .diffConst = float (v )
1221
1237
elif k == 'motorConstant' :
1222
- poolId .motorConst = float (v )
1238
+ poolId .motorConst = float (v )
1239
+
1223
1240
specInfoMap [sId ] = {
1224
1241
"Mpath" : poolId ,
1225
1242
"const" : constant ,
0 commit comments