1313** copyright (C) 2003-2017 Upinder S. Bhalla. and NCBS
1414Created : Thu May 13 10:19:00 2016(+0530)
1515Version
16- Last-Updated: Tue Dec 3 17 :30:00 2018 (+0530)
16+ Last-Updated: Sat Jan 19 10 :30:00 2019 (+0530)
1717 By:HarshaRani
1818**********************************************************************/
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
19232018
2024Dec 3: - reading motor and diffconstant from pool
2125Nov 30: - groups and subgroups are read from xml to moose
8286except ImportError :
8387 pass
8488
85- def mooseReadSBML (filepath , loadpath , solver = "ee" ,validate = "True " ):
89+ def mooseReadSBML (filepath , loadpath , solver = "ee" ,validate = "on " ):
8690 """Load SBML model
8791 """
8892 global foundLibSBML_
@@ -102,13 +106,15 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
102106 with open (filepath , "r" ) as filep :
103107 loadpath = loadpath [loadpath .find ('/' )+ 1 :]
104108 loaderror = None
109+ errorFlag = ""
105110 filep = open (filepath , "r" )
106111 document = libsbml .readSBML (filepath )
107112 tobecontinue = False
108- if validate == "True " :
109- tobecontinue = validateModel (document )
113+ if validate == "on " :
114+ tobecontinue , errorFlag = validateModel (document )
110115 else :
111116 tobecontinue = True
117+
112118 if tobecontinue :
113119 level = document .getLevel ()
114120 version = document .getVersion ()
@@ -126,6 +132,7 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
126132 loadpath = '/' + loadpath
127133 baseId = moose .Neutral (loadpath )
128134 basePath = baseId
135+
129136 # All the model will be created under model as
130137 # a thumbrule
131138 basePath = moose .Neutral (baseId .path )
@@ -150,7 +157,7 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
150157 errorFlag ,msgCmpt = createCompartment (
151158 basePath , model , comptSbmlidMooseIdMap )
152159
153- groupInfo = checkGroup (basePath ,model )
160+ groupInfo = checkGroup (basePath ,model , comptSbmlidMooseIdMap )
154161 funcDef = checkFuncDef (model )
155162 if errorFlag :
156163 specInfoMap = {}
@@ -207,8 +214,11 @@ def mooseReadSBML(filepath, loadpath, solver="ee",validate="True"):
207214 loaderror = loaderror
208215 return moose .element (loadpath ), loaderror
209216 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"
212222
213223def checkFuncDef (model ):
214224 funcDef = {}
@@ -229,35 +239,41 @@ def checkFuncDef(model):
229239 funcDef [f .getName ()] = {'bvar' :bvar , "MathML" : fmath .getRightChild ()}
230240 return funcDef
231241
232- def checkGroup (basePath ,model ):
242+ def checkGroup (basePath ,model , comptSbmlidMooseIdMap ):
233243 groupInfo = {}
234244 modelAnnotaInfo = {}
235245 if model .getPlugin ("groups" ) != None :
236246 mplugin = model .getPlugin ("groups" )
237247 modelgn = mplugin .getNumGroups ()
238248 for gindex in range (0 , mplugin .getNumGroups ()):
239249 p = mplugin .getGroup (gindex )
250+ grpName = ""
240251 groupAnnoInfo = {}
241252 groupAnnoInfo = getObjAnnotation (p , modelAnnotaInfo )
253+
242254 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 ()
244259 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 )
248263 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 )
250265 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 )
254269 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 )
256271 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 )
259274 else :
260- moosegrp = moose .element (basePath .path + '/' + groupAnnoInfo ["Compartment" ]+ '/' + p .getName ())
275+ moosegrp = moose .element (basePath .path + '/' + comptSbmlidMooseIdMap [groupAnnoInfo ["Compartment" ]]["MooseId" ].name + '/' + groupName )
276+
261277 moosegrpinfo = moose .Annotator (moosegrp .path + '/info' )
262278 moosegrpinfo .color = groupAnnoInfo ["bgColor" ]
263279 else :
@@ -1206,20 +1222,21 @@ def createSpecies(basePath, model, comptSbmlidMooseIdMap,
12061222 poolInfo = moose .Annotator (poolId .path + '/info' )
12071223 else :
12081224 poolInfo = moose .element (poolId .path + '/info' )
1209-
1225+
12101226 for k , v in list (specAnnoInfo .items ()):
12111227 if k == 'xCord' :
12121228 poolInfo .x = float (v )
12131229 elif k == 'yCord' :
12141230 poolInfo .y = float (v )
12151231 elif k == 'bgColor' :
12161232 poolInfo .color = v
1217- elif k == 'Color ' :
1233+ elif k == 'textColor ' :
12181234 poolInfo .textColor = v
12191235 elif k == 'diffConstant' :
12201236 poolId .diffConst = float (v )
12211237 elif k == 'motorConstant' :
1222- poolId .motorConst = float (v )
1238+ poolId .motorConst = float (v )
1239+
12231240 specInfoMap [sId ] = {
12241241 "Mpath" : poolId ,
12251242 "const" : constant ,
0 commit comments