import moose def deleteSolver(modelRoot): compts = moose.wildcardFind(modelRoot+'/##[ISA=ChemCompt]') for compt in compts: if moose.exists(compt.path+'/stoich'): st = moose.element(compt.path+'/stoich') st_ksolve = st.ksolve moose.delete(st) if moose.exists((st_ksolve).path): moose.delete(st_ksolve) def setCompartmentSolver(modelRoot,solver): compts = moose.wildcardFind(modelRoot+'/##[ISA=ChemCompt]') for compt in compts: if ( solver == 'gsl' ) or (solver == 'Runge Kutta'): ksolve = moose.Ksolve( compt.path+'/ksolve' ) if ( solver == 'gssa' ) or (solver == 'Gillespie'): ksolve = moose.Gsolve( compt.path+'/gsolve' ) if ( solver != 'ee' ): stoich = moose.Stoich( compt.path+'/stoich' ) stoich.compartment = compt stoich.ksolve = ksolve if moose.exists(compt.path): stoich.path = compt.path+"/##" stoichList = moose.wildcardFind(modelRoot+'/##[ISA=Stoich]') if len( stoichList ) == 2: stoichList[1].buildXreacs( stoichList[0] ) if len( stoichList ) == 3: stoichList[1].buildXreacs (stoichList [0]) stoichList[1].buildXreacs (stoichList [2]) for i in stoichList: i.filterXreacs() for x in moose.wildcardFind( modelRoot+'/data/graph#/#' ): x.tick = 18 #model is loaded modelRoot = '/psd52' moose.loadModel('psd52.g',modelRoot,'gsl') deleteSolver(modelRoot) print " solver is deleted before adding a new object" t = moose.Pool('/psd52[0]/kinetics[0]/test') print "new object pool called test is added ",t moose.connect('/psd52/compartment_2/Ca_reac',"prd","/psd52[0]/kinetics[0]/test","reac") moose.connect('/psd52/compartment_2/psd_activate_CaN',"sub","/psd[0]/kinetics[0]/test","reac") print "++++",(moose.element('/psd52/kinetics/test')).neighbors["reac"] print "solver is set after this" setCompartmentSolver(modelRoot,"gsl")