Skip to content

Commit 3588295

Browse files
authored
Merge pull request #71 from MetaCell/load_json_model
Load json models
2 parents 66f1676 + 6b3265b commit 3588295

1 file changed

Lines changed: 39 additions & 18 deletions

File tree

netpyne_ui/netpyne_geppetto.py

Lines changed: 39 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -109,24 +109,45 @@ def importModel(self, modelParameters):
109109
self.compileModMechFiles(modelParameters['compileMod'], modelParameters['modFolder'])
110110

111111
import netpyne_geppetto
112-
# NetParams
113-
netParamsPath = str(modelParameters["netParamsPath"])
114-
sys.path.append(netParamsPath)
115-
os.chdir(netParamsPath)
116-
# Import Module
117-
netParamsModuleName = importlib.import_module(str(modelParameters["netParamsModuleName"]))
118-
# Import Model attributes
119-
netpyne_geppetto.netParams = getattr(netParamsModuleName, str(modelParameters["netParamsVariable"]))
120-
121-
# SimConfig
122-
simConfigPath = str(modelParameters["simConfigPath"])
123-
sys.path.append(simConfigPath)
124-
os.chdir(simConfigPath)
125-
# Import Module
126-
simConfigModuleName = importlib.import_module(str(modelParameters["simConfigModuleName"]))
127-
# Import Model attributes
128-
netpyne_geppetto.simConfig = getattr(simConfigModuleName, str(modelParameters["simConfigVariable"]))
129112

113+
if modelParameters['importFormat']=='py':
114+
# NetParams
115+
netParamsPath = str(modelParameters["netParamsPath"])
116+
sys.path.append(netParamsPath)
117+
os.chdir(netParamsPath)
118+
# Import Module
119+
netParamsModuleName = importlib.import_module(str(modelParameters["netParamsModuleName"]))
120+
# Import Model attributes
121+
netpyne_geppetto.netParams = getattr(netParamsModuleName, str(modelParameters["netParamsVariable"]))
122+
123+
for key, value in netpyne_geppetto.netParams.cellParams.iteritems():
124+
if hasattr(value, 'todict'):
125+
netpyne_geppetto.netParams.cellParams[key] = value.todict()
126+
127+
# SimConfig
128+
simConfigPath = str(modelParameters["simConfigPath"])
129+
sys.path.append(simConfigPath)
130+
os.chdir(simConfigPath)
131+
# Import Module
132+
simConfigModuleName = importlib.import_module(str(modelParameters["simConfigModuleName"]))
133+
# Import Model attributes
134+
netpyne_geppetto.simConfig = getattr(simConfigModuleName, str(modelParameters["simConfigVariable"]))
135+
136+
elif modelParameters['importFormat']=='json':
137+
with open(modelParameters['jsonModelFolder'], 'r') as file:
138+
jsonData = json.load(file)
139+
140+
if 'net' in jsonData:
141+
if 'params' in jsonData['net'] and 'simConfig' in jsonData:
142+
netpyne_geppetto.netParams = specs.NetParams(jsonData['net']['params'])
143+
netpyne_geppetto.simConfig = specs.SimConfig(jsonData['simConfig'])
144+
netpyne_geppetto.netParams.cellParams = jsonData['net']['params']['cellParams']
145+
else:
146+
return self.getJSONError("Assertion error while importing the NetPyNE model", "The json file does not contain the following keys: [params, simConfig]")
147+
else:
148+
return self.getJSONError("Assertion error while importing the NetPyNE model", "The json file does not contain the following keys: [net]")
149+
else:
150+
return self.getJSONError("Assertion error while importing the NetPyNE model", "frontend sent a wrong option for 'importFormat'. allowed values are py and json")
130151
return self.getJSONReply()
131152
except:
132153
return self.getJSONError("Error while importing the NetPyNE model",traceback.format_exc())
@@ -288,7 +309,7 @@ def deleteParam(self, paramToDel):
288309

289310
def validateFunction(self, functionString):
290311
return utils.ValidateFunction(functionString, netParams.__dict__)
291-
312+
292313
def generateScript(self, metadata):
293314
def convert2bool(string):
294315
return string.replace('true', 'True').replace('false', 'False')

0 commit comments

Comments
 (0)