Skip to content

Commit 716b803

Browse files
authored
Fixed calcium simulation for models with no axon
1 parent 8ff38c6 commit 716b803

File tree

1 file changed

+68
-16
lines changed

1 file changed

+68
-16
lines changed

Model_Generation/TMS_package/Calcium/vdccFullCellCalcium.lua

Lines changed: 68 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ numNewton = util.GetParamNumber("-numNewton", 5)
5050
--voltage data sampling rate
5151
vSampleRate = util.GetParamNumber("-vSampleRate", 25e-3)
5252

53+
--does it have an axon?
54+
--withAxon = util.GetParam("-axon","AX")
55+
5356
-- vm folder
5457
vmData = 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+
277280
reqSubsets = {"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+
279305
scale_domain(dom, 1e6)
280306

281307
if numRefs > 0 then
@@ -407,14 +433,16 @@ diffClb:set_mass_scale(volScaleCyt)
407433
diffClb: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

420448
if 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)
477513
end
@@ -519,7 +555,13 @@ function ap_membranePotential(x,y,z,t,si)
519555
return math.sin(t)*0.065
520556
end
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+
523565
vdcc:set_potential_function("membranePotential")
524566
vdcc:set_constant(1, 1.0)
525567
vdcc:set_scale_inputs({1e3, 1.0})
@@ -556,9 +598,11 @@ domDisc:add(diffCaCyt)
556598
domDisc:add(diffCaER)
557599
domDisc: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

563607
domDisc:add(discBuffer)
564608

@@ -760,7 +804,11 @@ lineToWrite = ' '
760804
for 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

Comments
 (0)