source: project/release/4/picnic/trunk/examples/GLHP.picnic @ 30693

Last change on this file since 30693 was 30693, checked in by Ivan Raikov, 7 years ago

picnic: variant of GL model with PF perturbations

File size: 9.7 KB
Line 
1;;
2;; A model of the projections between Golgi and granule cells in
3;; cerebellar granular layer.
4;;
5;; Copyright 2012-2014 Ivan Raikov and the Okinawa Institute of Science and Technology
6;;
7;; This program is free software: you can redistribute it and/or
8;; modify it under the terms of the GNU General Public License as
9;; published by the Free Software Foundation, either version 3 of the
10;; License, or (at your option) any later version.
11;;
12;; This program is distributed in the hope that it will be useful, but
13;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15;; General Public License for more details.
16;;
17;; A full copy of the GPL license can be found at
18;; <http://www.gnu.org/licenses/>.
19;;
20
21(picnic-model GL
22
23      (
24
25       (config PFlength)
26
27       (config PCLdepth)
28
29       (config numAxonGolgi)  ;; GoC axonal dimensions
30       (config GoC_Axon_Xmin)
31       (config GoC_Axon_Xmax)
32       (config GoC_Axon_Ymin)
33       (config GoC_Axon_Ymax)
34       (config GoC_Axon_Zmin)
35       (config GoC_Axon_Zmax)
36
37       (config GoC_nDendML) ;; GoC # of apical dendrites
38       (config GoC_nDendGL) ;; GoC # of basolateral dendrites
39
40       (config GoC_Ad_nseg) ;; GoC apical dendrites number of segments
41       (config GoC_Ad_nsegpts) ;; GoC apical dendrites number of points per segment
42
43       (config GoC_Bd_nseg)
44       (config GoC_Bd_nsegpts)
45
46       (config GoC_PhysApicalDendH)
47       (config GoC_PhysApicalDendR)
48       (config GoC_Atheta_min )
49       (config GoC_Atheta_max )
50       (config GoC_Atheta_stdev)
51
52       (config GoC_PhysBasolateralDendH)
53       (config GoC_PhysBasolateralDendR)
54       (config GoC_Btheta_min )
55       (config GoC_Btheta_max )
56       (config GoC_Btheta_stdev)
57
58       (config AAtoGoCzone)
59       (config PFtoGoCzone)
60       (config GoCtoGoCzone)
61       (config GoCtoGoCgapzone)
62
63       (config GoCxrange)
64       (config GoCyrange)
65
66       (const xExtent = GoCxrange)
67       (const yExtent = GoCyrange)
68
69
70       (component (type local-cell-forest) (name GC)
71
72
73         (component (type layout) (name GranuleTcoordinates)
74
75                    (s = (PointsFromFile ("GCTcoordinates.dat")))
76                 
77                    (output s)
78            )
79
80         (component (type section) (name AscendingAxons)
81                   
82                    (defun f (gid origin)
83                      (let ((dX 0)
84                            (dY 0)
85                            (dZ (neg (PCLdepth))))
86                        LineSegment (origin dX dY dZ)
87                        ))
88
89                    (const n = 1)
90
91                    (p (u) = (generator f) (npts 4))
92                   
93                    (output u n)
94
95                    )
96         
97         
98         (component (type section) (name ParallelFibers)
99
100                    (defun f (gid origin)
101                      (let ((dX (PFlength / 2))
102                            (dY 0)
103                            (dZ 0))
104                        LineSegment (origin dX dY dZ)))
105
106                    (defun g (gid origin)
107                      (let ((dX (PFlength / 2))
108                            (dY 0)
109                            (dZ 0))
110                        LineSegment (origin ~ (neg (dX)) ~ dY ~ dZ)))
111
112                    (defun pfx (x init)
113                      (let ((freq (randomUniform (1.0 100.0 init))))
114                        (tanh (PI * x) + 0.01 * sin (2 * PI * 100 * x))))
115
116                    (defun pfy (y init)
117                      (let ((freq (randomUniform (1.0 100.0 init))))
118                        (tanh (PI * y) + 0.01 * sin (2 * PI * freq * y))))
119
120                    (defun pfz (z init)
121                      (let ((freq (randomUniform (1.0 100.0 init))))
122                        (tanh (PI * z) + 0.01 * sin (2 * PI * freq * z))))
123
124                    (pc = (SimpleCurve pfx pfy pfz 10))
125                   
126                    (const n = 1)
127
128                    ;; process u grows in the positive X direction
129                    ;; process v grows in the negative X direction
130                    (p (u) = (generator f) (compose pc) (npts 200))
131                    (p (v) = (generator g) (compose pc) (npts 200))
132                   
133                    (output u n v n)
134
135                    )
136         
137         
138
139         )
140         
141
142       (component (type cell-forest) (name GoC)
143
144         (component (type layout) (name GolgiCoordinates)
145
146                    (s = (PointsFromFile ("GoCcoordinates.dat")))
147                 
148                    (output s)
149            )
150         
151         (component (type section) (name BasolateralDendrites)
152
153
154                    (defun f (gid origin init)
155                      (let (
156                            (thetaDeg (randomNormal (GoC_Btheta_min GoC_Btheta_stdev init)))
157                            (theta    ((PI / 180.) * thetaDeg))
158
159                            (dX (GoC_PhysBasolateralDendR * cos (theta)))
160                            (dY (GoC_PhysBasolateralDendR * sin (theta)))
161                            (dZ GoC_PhysBasolateralDendH)
162                            )
163                   
164                        LineSegment (origin dX dY dZ)))
165
166                    (defun g (gid origin init)
167                      (let (
168                            (thetaDeg (randomNormal (GoC_Btheta_max GoC_Btheta_stdev init)))
169                            (theta    ((PI / 180.) * thetaDeg))
170
171                            (dX (GoC_PhysBasolateralDendR * cos (theta)))
172                            (dY (GoC_PhysBasolateralDendR * sin (theta)))
173                            (dZ GoC_PhysBasolateralDendH)
174                            )
175                   
176                        LineSegment (origin dX dY dZ)))
177
178                    (const n = 1)
179
180                    (segp (u) = (generator f) (initial (randomInit (13)))
181                                (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts))
182
183                    (segp (v) = (generator g) (initial (randomInit (13)))
184                                (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts))
185                   
186                    (output u n v n)
187
188                    )
189
190         (component (type section) (name ApicalDendrites)
191
192                    (defun f (gid origin init)
193                      (let (
194                            (thetaDeg (randomNormal (GoC_Atheta_min GoC_Atheta_stdev init)))
195                            (theta    ((PI / 180.) * thetaDeg))
196
197                            (dX (GoC_PhysApicalDendR * cos (theta)))
198                            (dY (GoC_PhysApicalDendR * sin (theta)))
199                            (dZ GoC_PhysApicalDendH)
200                            )
201                   
202                        LineSegment (origin dX dY dZ)))
203                   
204                    (defun g (gid origin init)
205                      (let (
206                            (thetaDeg (randomNormal (GoC_Atheta_max GoC_Atheta_stdev init)))
207                            (theta    ((PI / 180.) * thetaDeg))
208
209                            (dX (GoC_PhysApicalDendR * cos (theta)))
210                            (dY (GoC_PhysApicalDendR * sin (theta)))
211                            (dZ GoC_PhysApicalDendH)
212                            )
213                   
214                        LineSegment (origin dX dY dZ)))
215                   
216                    (const n = 1)
217
218                    (segp (u) = (generator f) (initial (randomInit (17)))
219                                (nsegs GoC_Ad_nseg) (nsegpts GoC_Ad_nsegpts))
220                   
221                    (segp (v) = (generator g) (initial (randomInit (17)))
222                                (nsegs GoC_Ad_nseg) (nsegpts GoC_Ad_nsegpts))
223                   
224                    (output u n v n)
225
226                    )
227
228         (component (type section) (name Axons)
229                   
230                    (const n = numAxonGolgi)
231
232                    (defun f (gid origin init)
233                      (let ((dX (randomUniform (GoC_Axon_Xmin GoC_Axon_Xmax init)))
234                            (dY (randomUniform (GoC_Axon_Ymin GoC_Axon_Ymax init)))
235                            (dZ (randomUniform (GoC_Axon_Zmin GoC_Axon_Zmax init))))
236                        LineSegment (origin dX dY dZ)))
237
238                    (p (u) = (generator f) (initial (randomInit (23))))
239                   
240                    (output u n)
241
242                    )
243
244         )
245
246       (component (type projection)
247
248            (input (GC from cell-forests)
249                   (GoC from cell-forests))
250
251            (r = PFtoGoCzone)
252
253            (set source = (section GC ParallelFibers))
254            (set target = (section GoC ApicalDendrites))
255
256            (PFtoGoC = (SegmentProjection (r source target)))
257
258            (output PFtoGoC)
259            )
260
261
262       (component (type projection)
263
264            (input (GC from cell-forests)
265                   (GoC from cell-forests))
266
267            (r = AAtoGoCzone)
268
269            (set source = (section GC AscendingAxons))
270            (set target = (union
271                           (section GoC ApicalDendrites)
272                           (section GoC BasolateralDendrites)
273                           ))
274
275            (AAtoGoC = (SegmentProjection (r source target)))
276
277            (output AAtoGoC)
278            )
279
280       (component (type projection)
281
282            (input (GoC from cell-forests))
283
284            (r = GoCtoGoCzone)
285
286            (set source = (section GoC Axons))
287            (set target = (population GoC))
288
289            (GoCtoGoC = (Projection (r source target)))
290
291            (output GoCtoGoC)
292            )
293
294       (component (type projection)
295
296            (input (GoC from cell-forests))
297
298            (r = GoCtoGoCgapzone)
299
300            (set source = (population GoC))
301            (set target = (population GoC))
302
303            (GoCtoGoCgap = (Projection (r source target)))
304
305            (output GoCtoGoCgap)
306            )
307
308       
309       ))
Note: See TracBrowser for help on using the repository browser.