source: project/release/4/picnic/trunk/examples/GLH.picnic @ 30685

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

picnic: some more bug fixes in point/segment projections and in GLH example model

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