@@ -50,6 +50,9 @@ numNewton = util.GetParamNumber("-numNewton", 5)
5050-- voltage data sampling rate
5151vSampleRate = util .GetParamNumber (" -vSampleRate" , 25e-3 )
5252
53+ -- does it have an axon?
54+ -- withAxon = util.GetParam("-axon","AX")
55+
5356-- vm folder
5457vmData = util .GetParam (" -vmData" , " vmData" )
5558-- which ER mechanisms are to be activated?
@@ -273,9 +276,32 @@ print("*************************************************************************
273276---- ---------------------------
274277-- setup approximation space --
275278---- ---------------------------
276- -- load domain
279+
277280reqSubsets = {" dend" , " apic" , " soma" ," axon" }
278- dom = util .CreateDomain (gridName , 0 , reqSubsets )
281+ dom = util .CreateDomain (gridName , 0 ) -- , reqSubsets)
282+ chk_axon = util .CheckSubsets (dom ,reqSubsets )
283+
284+ if not util .CheckSubsets (dom ,reqSubsets ) then
285+ withAxon = " noAX"
286+ print (" check " .. tostring (chk_axon ) .. " , no axon found!" )
287+ print (" adjusting required subsets" )
288+ reqSubsets = {" dend" , " apic" , " soma" }
289+ dom = util .CreateDomain (gridName ,0 ,reqSubsets )
290+ else
291+ withAxon = " AX"
292+ print (" check " .. tostring (chk_axon ) .. " , axon found!" )
293+ print (" required subsets okay" )
294+ reqSubsets = {" dend" , " apic" , " soma" ," axon" }
295+ dom = util .CreateDomain (gridName ,0 ,reqSubsets )
296+ end
297+
298+ -- load domain
299+ if withAxon == " AX" then
300+ reqSubsets = {" dend" , " apic" , " soma" ," axon" }
301+ else
302+ reqSubsets = {" dend" , " apic" , " soma" }
303+ end
304+
279305scale_domain (dom , 1e6 )
280306
281307if numRefs > 0 then
@@ -407,14 +433,16 @@ diffClb:set_mass_scale(volScaleCyt)
407433diffClb :set_diffusion (D_clb * volScaleCyt )
408434
409435-- for axon part --
410- diffCaCytAxon = ConvectionDiffusion (" ca_cyt" ," axon" ," fv1" )
411- diffCaCytAxon :set_mass_scale (1 )
436+ if withAxon == " AX" then
437+ diffCaCytAxon = ConvectionDiffusion (" ca_cyt" ," axon" ," fv1" )
438+ diffCaCytAxon :set_mass_scale (1 )
412439
413- diffCaERAxon = ConvectionDiffusion (" ca_er" ," axon" ," fv1" )
414- diffCaERAxon :set_mass_scale (1 )
440+ diffCaERAxon = ConvectionDiffusion (" ca_er" ," axon" ," fv1" )
441+ diffCaERAxon :set_mass_scale (1 )
415442
416- diffClbAxon = ConvectionDiffusion (" clb" ," axon" ," fv1" )
417- diffClbAxon :set_mass_scale (1 )
443+ diffClbAxon = ConvectionDiffusion (" clb" ," axon" ," fv1" )
444+ diffClbAxon :set_mass_scale (1 )
445+ end
418446---- ----------------------------------------------------
419447
420448if withIP3R then
@@ -463,15 +491,23 @@ if withSERCAandLeak then
463491 serca :set_scale_inputs ({1e3 ,1e3 })
464492 serca :set_scale_fluxes ({1e15 }) -- from mol/(um^2 s) to (mol um)/(dm^3 s)
465493
466- discSERCA = MembraneTransport1d (" soma, apic, dend,axon" , serca )
494+ if withAxon == " AX" then
495+ discSERCA = MembraneTransport1d (" soma, apic, dend,axon" , serca )
496+ else
497+ discSERCA = MembraneTransport1d (" soma, apic, dend" , serca )
498+ end
467499 discSERCA :set_density_function (SERCAdensity )
468500 discSERCA :set_radius_factor (erRadiusFactor )
469501
470502 leakER = Leak ({" ca_er" , " ca_cyt" })
471503 leakER :set_scale_inputs ({1e3 ,1e3 })
472504 leakER :set_scale_fluxes ({1e3 }) -- from mol/(m^2 s) to (mol um)/(dm^3 s)
473505
474- discERLeak = MembraneTransport1d (" soma, apic, dend,axon" , leakER )
506+ if withAxon == " AX" then
507+ discERLeak = MembraneTransport1d (" soma, apic, dend,axon" , leakER )
508+ else
509+ discERLeak = MembraneTransport1d (" soma, apic, dend" , leakER )
510+ end
475511 discERLeak :set_density_function (1e12 * leakERconstant / (1e3 )) -- from mol/(um^2 s M) to m/s
476512 discERLeak :set_radius_factor (erRadiusFactor )
477513end
@@ -519,7 +555,13 @@ function ap_membranePotential(x,y,z,t,si)
519555return math.sin(t)*0.065
520556end
521557--]]
522- vdcc = VDCC_BG_UserData ({" ca_cyt" , " " }, {" soma" , " apic" , " dend" ," axon" }, approxSpace )
558+
559+ if withAxon == " AX" then
560+ vdcc = VDCC_BG_UserData ({" ca_cyt" , " " }, {" soma" , " apic" , " dend" ," axon" }, approxSpace )
561+ else
562+ vdcc = VDCC_BG_UserData ({" ca_cyt" , " " }, {" soma" , " apic" , " dend" }, approxSpace )
563+ end
564+
523565vdcc :set_potential_function (" membranePotential" )
524566vdcc :set_constant (1 , 1.0 )
525567vdcc :set_scale_inputs ({1e3 , 1.0 })
@@ -556,9 +598,11 @@ domDisc:add(diffCaCyt)
556598domDisc :add (diffCaER )
557599domDisc :add (diffClb )
558600
559- domDisc :add (diffCaCytAxon )
560- domDisc :add (diffCaERAxon )
561- domDisc :add (diffClbAxon )
601+ if withAxon == " AX" then
602+ domDisc :add (diffCaCytAxon )
603+ domDisc :add (diffCaERAxon )
604+ domDisc :add (diffClbAxon )
605+ end
562606
563607domDisc :add (discBuffer )
564608
@@ -760,7 +804,11 @@ lineToWrite = ' '
760804for j = 1 ,table .getn (index ) do
761805
762806 measPosVector = MakeVec (xcrd [j ],ycrd [j ],zcrd [j ])
763- ca_at_measPt = EvaluateAtClosestVertex (measPosVector , u , " ca_cyt" , " soma,apic,dend,axon" , dom :subset_handler ())
807+ if withAxon == " AX" then
808+ ca_at_measPt = EvaluateAtClosestVertex (measPosVector , u , " ca_cyt" , " soma,apic,dend,axon" , dom :subset_handler ())
809+ else
810+ ca_at_measPt = EvaluateAtClosestVertex (measPosVector , u , " ca_cyt" , " soma,apic,dend" , dom :subset_handler ())
811+ end
764812 if j == table .getn (index ) then
765813 lineToWrite = lineToWrite .. ca_at_measPt
766814 else
@@ -852,7 +900,11 @@ while endTime-time > 0.001*dt do
852900 for j = 1 ,table .getn (index ) do
853901
854902 measPosVector = MakeVec (xcrd [j ],ycrd [j ],zcrd [j ])
855- ca_at_measPt = EvaluateAtClosestVertex (measPosVector , u , " ca_cyt" , " soma,apic,dend,axon" , dom :subset_handler ())
903+ if withAxon == " AX" then
904+ ca_at_measPt = EvaluateAtClosestVertex (measPosVector , u , " ca_cyt" , " soma,apic,dend,axon" , dom :subset_handler ())
905+ else
906+ ca_at_measPt = EvaluateAtClosestVertex (measPosVector , u , " ca_cyt" , " soma,apic,dend" , dom :subset_handler ())
907+ end
856908 if j == table .getn (index ) then
857909 lineToWrite = lineToWrite .. ca_at_measPt
858910 else
0 commit comments