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

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

picnic: use default value for npts argument of processes

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