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

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

picnic: updated GLHP example

File size: 9.9 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         (component (type perturbation)
101
102                    (define pc (gid origin init)
103                      (let ((freq (randomUniform (1.0 ~ (PFlength / 40.0) ~ init))))
104
105                        ;; SineCurve (frequency, amplitude)
106                        (SineCurve (freq 1.0))))
107
108                    (const n = 4)
109
110                    (output pc n)
111                     
112                    )
113
114         (component (type perturbation)
115
116                    (define pc (gid origin init)
117                      (let ((slope (randomUniform (1.0 ~ (PFlength / 40.0) ~ init))))
118
119                        ;; TanhCurve (onset, slope, amplitude)
120                        (TanhCurve (0.0 freq 1.0))))
121
122                    (const n = 4)
123
124                    (output pc n)
125                     
126                    )
127|#
128
129                    (defun f (gid origin)
130                      (let ((dX (PFlength / 2))
131                            (dY 0)
132                            (dZ 0))
133                        (LineSegment (origin dX dY dZ))))
134
135                    (defun g (gid origin)
136                      (let ((dX (PFlength / 2))
137                            (dY 0)
138                            (dZ 0))
139                        (LineSegment (origin ~ (neg (dX)) ~ dY ~ dZ))))
140                   
141                    (const n = 1)
142
143                    ;; process u grows in the positive X direction
144                    ;; process v grows in the negative X direction
145                    (p (u) = (generator f) (npts 200))
146                    (p (v) = (generator g) (npts 200))
147                   
148                    (output u n v n)
149
150                    )
151         
152         
153
154         )
155         
156
157       (component (type cell-forest) (name GoC)
158
159         (component (type layout) (name GolgiCoordinates)
160
161                    (s = (PointsFromFile ("GoCcoordinates.dat")))
162                 
163                    (output s)
164            )
165         
166         (component (type section) (name BasolateralDendrites)
167
168
169                    (defun f (gid origin init)
170                      (let (
171                            (thetaDeg (randomNormal (GoC_Btheta_min GoC_Btheta_stdev init)))
172                            (theta    ((PI / 180.) * thetaDeg))
173
174                            (dX (GoC_PhysBasolateralDendR * cos (theta)))
175                            (dY (GoC_PhysBasolateralDendR * sin (theta)))
176                            (dZ GoC_PhysBasolateralDendH)
177                            )
178                   
179                        LineSegment (origin dX dY dZ)))
180
181                    (defun g (gid origin init)
182                      (let (
183                            (thetaDeg (randomNormal (GoC_Btheta_max GoC_Btheta_stdev init)))
184                            (theta    ((PI / 180.) * thetaDeg))
185
186                            (dX (GoC_PhysBasolateralDendR * cos (theta)))
187                            (dY (GoC_PhysBasolateralDendR * sin (theta)))
188                            (dZ GoC_PhysBasolateralDendH)
189                            )
190                   
191                        LineSegment (origin dX dY dZ)))
192
193                    (const n = 1)
194
195                    (segp (u) = (generator f) (initial (randomInit (13)))
196                                (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts))
197
198                    (segp (v) = (generator g) (initial (randomInit (13)))
199                                (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts))
200                   
201                    (output u n v n)
202
203                    )
204
205         (component (type section) (name ApicalDendrites)
206
207                    (defun f (gid origin init)
208                      (let (
209                            (thetaDeg (randomNormal (GoC_Atheta_min GoC_Atheta_stdev init)))
210                            (theta    ((PI / 180.) * thetaDeg))
211
212                            (dX (GoC_PhysApicalDendR * cos (theta)))
213                            (dY (GoC_PhysApicalDendR * sin (theta)))
214                            (dZ GoC_PhysApicalDendH)
215                            )
216                   
217                        LineSegment (origin dX dY dZ)))
218                   
219                    (defun g (gid origin init)
220                      (let (
221                            (thetaDeg (randomNormal (GoC_Atheta_max GoC_Atheta_stdev init)))
222                            (theta    ((PI / 180.) * thetaDeg))
223
224                            (dX (GoC_PhysApicalDendR * cos (theta)))
225                            (dY (GoC_PhysApicalDendR * sin (theta)))
226                            (dZ GoC_PhysApicalDendH)
227                            )
228                   
229                        LineSegment (origin dX dY dZ)))
230                   
231                    (const n = 1)
232
233                    (segp (u) = (generator f) (initial (randomInit (17)))
234                                (nsegs GoC_Ad_nseg) (nsegpts GoC_Ad_nsegpts))
235                   
236                    (segp (v) = (generator g) (initial (randomInit (17)))
237                                (nsegs GoC_Ad_nseg) (nsegpts GoC_Ad_nsegpts))
238                   
239                    (output u n v n)
240
241                    )
242
243         (component (type section) (name Axons)
244                   
245                    (const n = numAxonGolgi)
246
247                    (defun f (gid origin init)
248                      (let ((dX (randomUniform (GoC_Axon_Xmin GoC_Axon_Xmax init)))
249                            (dY (randomUniform (GoC_Axon_Ymin GoC_Axon_Ymax init)))
250                            (dZ (randomUniform (GoC_Axon_Zmin GoC_Axon_Zmax init))))
251                        LineSegment (origin dX dY dZ)))
252
253                    (p (u) = (generator f) (initial (randomInit (23))))
254                   
255                    (output u n)
256
257                    )
258
259         )
260
261       (component (type projection)
262
263            (input (GC from cell-forests)
264                   (GoC from cell-forests))
265
266            (r = PFtoGoCzone)
267
268            (set source = (section GC ParallelFibers))
269            (set target = (section GoC ApicalDendrites))
270
271            (PFtoGoC = (SegmentProjection (r source target)))
272
273            (output PFtoGoC)
274            )
275
276
277       (component (type projection)
278
279            (input (GC from cell-forests)
280                   (GoC from cell-forests))
281
282            (r = AAtoGoCzone)
283
284            (set source = (section GC AscendingAxons))
285            (set target = (union
286                           (section GoC ApicalDendrites)
287                           (section GoC BasolateralDendrites)
288                           ))
289
290            (AAtoGoC = (SegmentProjection (r source target)))
291
292            (output AAtoGoC)
293            )
294
295       (component (type projection)
296
297            (input (GoC from cell-forests))
298
299            (r = GoCtoGoCzone)
300
301            (set source = (section GoC Axons))
302            (set target = (population GoC))
303
304            (GoCtoGoC = (Projection (r source target)))
305
306            (output GoCtoGoC)
307            )
308
309       (component (type projection)
310
311            (input (GoC from cell-forests))
312
313            (r = GoCtoGoCgapzone)
314
315            (set source = (population GoC))
316            (set target = (population GoC))
317
318            (GoCtoGoCgap = (Projection (r source target)))
319
320            (output GoCtoGoCgap)
321            )
322
323       
324       ))
Note: See TracBrowser for help on using the repository browser.