Calcium Dynamics in Atrial Tissues

Cell+Cell+Cell+…+Cell$\neq$Tissue!

This is an ongoing project, and it consists of investigating the emergent phenomena resulting from coupling cells (from the model presented here) by coupling the membrane potential $V_m(r,t)$ of every cell and distributing alternating-non alternating domains of cells and see what happens.

Cells are coupled by junctions as:

With:

  • $\Delta r=0.025[\mu m]$ ,
  • $dt=0.01$ $[ms]$ (so $[D]=[\mu m]^2/[ms]$).
  • $T_{stim}=400$ $[ms]$ (Alternating regime)

Early versions of these experiments showed wave blockage and re-entry waves in the $V_m$ field. Although I haven’t considered real human atria geometries I have dozens of cool results by setting up a variety of arrangements for domains of sick and healthy cells.

The one I show in this post is very interesting, it exhibits discordant alternans, induced only by the geometry. This means that the alternans within the sick cells domain occurs completely out of phase.

For a better understanding of what I am trying to communicate check the movies below.

$[Ca^{2+}]_{i}(x,y,t):$

And, $V_m(x,y,t):$

This is still an open project, although some results have been published, we are still looking for a reduction of some dynamical aspects ot the RyR dynamics, as well as to realistic homeomorphims of human atrial geometries.

Movie Scripts.

To conclude with the post, I’m going to briefly discuss the scripts I use to make the movies. These are tweaked versions of the examples discussed in the matplotlib documentation, and basically are created reading data files labeled using time containing a “picture” of a particular field variable at that given instant.

It requires the initial and final times, and the encoder FFMpeg installed, and of course python and matplotlib. The movie is encoded in mp4 format, for web usage perhaps is better to use “webm” (using ffmpeg -i V2D.mp4 V2D.webm , for example).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as manimation

FFMpegWriter = manimation.writers['ffmpeg']
metadata = dict(title='Movie Test', artist='Matplotlib',
        comment='Movie support!')
writer = FFMpegWriter(fps=15, metadata=metadata)

fig = plt.figure()
To=6000
Tf=20000
tmk=[]
zi=To
while zi<=Tf:
	tmk.append(zi)
	zi+=5

print tmk
raw_input()

#Initial Setup
Sn='Cai'
Fn="../snaps/"+str(To)+".000000"+Sn+".dat"
print Fn
Nk=np.loadtxt(Fn)

with writer.saving(fig, "CAI2D.mp4", 100):
	plt.imshow(Nk)#, extent = [0,50, 100, 0] )
	cax = plt.axes([0.80, 0.1, 0.04, 0.8])
	zmin=0.0000
	zmax=0.0014
	plt.clim(zmin,zmax)
	plt.colorbar(cax=cax)
	#plt.colorbar()
	fig.suptitle('T= '+str(To), fontsize=14, fontweight='bold')
        writer.grab_frame()
	plt.clf()
	#for i in range(1+To,1+Tf):
	for i in tmk:
		Fn="../snaps/"+str(i)+".000000"+Sn+".dat"
		print Fn
		Nk=np.loadtxt(Fn)
		plt.imshow(Nk)#, extent = [0,50, 100, 0] )
		cax = plt.axes([0.80, 0.1, 0.04, 0.8])
		plt.colorbar(cax=cax)
		plt.clim(zmin,zmax)
		#plt.colorbar(cax=cax)
		#plt.colorbar()
		fig.suptitle('T= '+str(i), fontsize=14, fontweight='bold')
        	writer.grab_frame()
		plt.clf()


Comments