Thank you! That was the problem indeed... but now I'm getting a different error:
Traceback (most recent call last):
File "/home/mariaduda/Desktop/workflow.py", line 147, in <module>
run()
File "/usr/local/lib/python3.9/dist-packages/carputils/tools.py", line 528, in wrapped
ret = run(args, job)
File "/home/mariaduda/Desktop/workflow.py", line 134, in run
'-simID', simID]
NameError: name 'simID' is not defined
The "fixed" version of the code:
import os
from datetime import date
# import required carputils modules
from carputils import settings
from carputils import tools
from carputils import mesh
from carputils import testing
from numpy import array as nplist
from carputils import ep
def parser():
parser = tools.standard_parser()
group = parser.add_argument_group('experiment specific options')
group.add_argument('--ionic_model', default='COURTEMANCHE',
choices=['TT2', 'COURTEMANCHE', 'HH'],
help= 'pick ionic model')
group.add_argument('--duration',
type=float, default=1000.,
help='duration of simulation (ms) (default is 1000.)')
group.add_argument('--sourceModel',
type=str, default='monodomain',
help='use mono- or bidomain')
group.add_argument('--stim-strength',
type=float, default=30.,
help='pick transmembrane current stimulus strenght in [uA/cm²] (default is 30.)')
group.add_argument('--stim-dur',
type=float, default=2.,
help='pick transmembrane current stimulus duration in [ms] (default is 2.)')
return parser
def jobID(args):
today = date.today()
return '{}_basic_{}'.format(today.isoformat(), args.duration)
@tools.carpexample(parser, jobID)
def run(args, job):
##### define mesh #####
# Generate mesh, units in mm, centered around origin
x = 5.0 #(mm)
y = 5.0 #(mm)
z = 1.0 #(mm)
res = 0.1
geom = mesh.Block(centre=(0.0,0.0,0.0), size=(x, y, z), resolution=res, etype='tetra')
reg1 = mesh.BoxRegion((-x/2, -y/2, -z/2), (0, y/2, z/2), tag=10)
geom.add_region(reg1)
reg2 = mesh.BoxRegion((0, -y/2, -z/2), (x, y/2, z/2), tag=11)
geom.add_region(reg2)
geom.corner_at_origin()
# Set fibre angle to 0°, sheet angle to 90° both on "endo" and "epi" surfaces
geom.set_fibres(0, 0, 0, 0)
# Generate and return base name
meshname = mesh.generate(geom)
######## define ionic models and conductivities for each region #######
imp_reg = ['-num_imp_regions', 2,
#for the first region:
'-imp_region[0].im', "COURTEMANCHE",
'-imp_region[0]num_IDs', 1,
'-imp_region[0].ID[0]', "10",
#for the second region:
'-imp_region[1].im', "COURTEMANCHE",
'-imp_region[1].im_param', "g_Kr*2., g_Ks*2", ##increase in potassium conductance
'-imp_region[1]num_IDs', 1,
'-imp_region[1].ID[0]', "11"]
g_reg = ['-num_gregions', 2,
'-gregion[0].num_IDs', 1,
'-gregion[0].ID[0]', 10,
'-gregion[0].g_il', 0.174,
'-gregion[0].g_it', 0.174,
'-gregion[0].g_in', 0.174,
'-gregion[0].g_el', 0.625,
'-gregion[0].g_et', 0.625,
'-gregion[0].g_en', 0.625,
'-gregion[1].num_IDs', 1,
'-gregion[1].ID[0]', 11,
'-gregion[1].g_il', 0.074,
'-gregion[1].g_it', 0.074,
'-gregion[1].g_in', 0.074,
'-gregion[1].g_el', 0.025,
'-gregion[1].g_et', 0.025,
'-gregion[1].g_en', 0.025]
##### define stimulation #####
E1_lower_bound = nplist([0, 0, z])
E1_upper_bound = nplist([2*res, 2*res, z])
electrode1 = mesh.block_region(geom, 'stimulus', 0, E1_lower_bound, E1_upper_bound, False)
electrode = electrode1
stim = ['-num_stim', 1,
'-stimulus[0].stimtype', 0,
'-stimulus[0].strength', 2500.0, #(uA/cm²)
'-stimulus[0].duration', 2.0, #(ms)
'-stimulus[0].start', 0, #(ms)
'-stimulus[0].npls', 1]
#### define simulator options #####
Src = ep.model_type_opts(args.sourceModel)
num_par = [ '-dt', 100]
IO_par = ['-spacedt', 0.1,
'-timedt', 5.0]
cmd = tools.carp_cmd()
cmd += imp_reg
cmd += g_reg
cmd += stim + electrode
cmd += num_par
cmd += IO_par
cmd += Src
cmd = job.ID
cmd += ['meshname', meshname,
'-tend', args.duration,
'-simID', simID]
#### visualization ####
if args.visualize:
cmd += ['-gridout_i', 4,
'-gridout_e', 4]
# Run simulation
job.carp(cmd)
if __name__ == '__main__':
run()