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

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

picnic: reformulated gid assignment based on layout; added mpi-aware write-layouts procedure

File size: 8.4 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
61       (config GoCxrange)
62       (config GoCyrange)
63
64       (const xExtent = GoCxrange)
65       (const yExtent = GoCyrange)
66
67
68       (component (type local-cell-forest) (name GC)
69
70
71         (component (type layout) (name GranuleTcoordinates)
72
73                    (s = (PointsFromFile ("GCTcoordinates.dat")))
74                 
75                    (output s)
76            )
77
78         (component (type section) (name AscendingAxons)
79                   
80                    (defun f (gid origin)
81                      (let ((dX 0)
82                            (dY 0)
83                            (dZ (neg (PCLdepth))))
84                        LineSegment (origin dX dY dZ)
85                        ))
86
87                    (const n = 1)
88
89                    (p (u) = (generator f) (npts 4))
90                   
91                    (output u n)
92
93                    )
94         
95         
96         (component (type section) (name ParallelFibers)
97
98                    (defun f (gid origin)
99                      (let ((dX (PFlength / 2))
100                            (dY 0)
101                            (dZ 0))
102                        LineSegment (origin dX dY dZ)))
103
104                    (defun g (gid origin)
105                      (let ((dX (PFlength / 2))
106                            (dY 0)
107                            (dZ 0))
108                        LineSegment (origin ~ (neg (dX)) ~ dY ~ dZ)))
109                   
110                    (const n = 1)
111
112                    ;; process u grows in the positive X direction
113                    ;; process v grows in the negative X direction
114                    (p (u) = (generator f) (npts 200))
115                    (p (v) = (generator g) (npts 200))
116                   
117                    (output u n v n)
118
119                    )
120         
121         
122
123         )
124         
125
126       (component (type cell-forest) (name GoC)
127
128         (component (type layout) (name GolgiCoordinates)
129
130                    (s = (PointsFromFile ("GoCcoordinates.dat")))
131                 
132                    (output s)
133            )
134         
135         (component (type section) (name BasolateralDendrites)
136
137
138                    (defun f (gid origin init)
139                      (let (
140                            (thetaDeg (randomNormal (GoC_Btheta_min GoC_Btheta_stdev init)))
141                            (theta    ((PI / 180.) * thetaDeg))
142
143                            (dX (GoC_PhysBasolateralDendR * cos (theta)))
144                            (dY (GoC_PhysBasolateralDendR * sin (theta)))
145                            (dZ GoC_PhysBasolateralDendH)
146                            )
147                   
148                        LineSegment (origin dX dY dZ)))
149
150                    (defun g (gid origin init)
151                      (let (
152                            (thetaDeg (randomNormal (GoC_Btheta_max GoC_Btheta_stdev init)))
153                            (theta    ((PI / 180.) * thetaDeg))
154
155                            (dX (GoC_PhysBasolateralDendR * cos (theta)))
156                            (dY (GoC_PhysBasolateralDendR * sin (theta)))
157                            (dZ GoC_PhysBasolateralDendH)
158                            )
159                   
160                        LineSegment (origin dX dY dZ)))
161
162                    (const n = 1)
163
164                    (segp (u) = (generator f) (initial (randomInit (13)))
165                                (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts))
166
167                    (segp (v) = (generator g) (initial (randomInit (13)))
168                                (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts))
169                   
170                    (output u n v n)
171
172                    )
173
174         (component (type section) (name ApicalDendrites)
175
176                    (defun f (gid origin init)
177                      (let (
178                            (thetaDeg (randomNormal (GoC_Atheta_min GoC_Atheta_stdev init)))
179                            (theta    ((PI / 180.) * thetaDeg))
180
181                            (dX (GoC_PhysApicalDendR * cos (theta)))
182                            (dY (GoC_PhysApicalDendR * sin (theta)))
183                            (dZ GoC_PhysApicalDendH)
184                            )
185                   
186                        LineSegment (origin dX dY dZ)))
187                   
188                    (defun g (gid origin init)
189                      (let (
190                            (thetaDeg (randomNormal (GoC_Atheta_max GoC_Atheta_stdev init)))
191                            (theta    ((PI / 180.) * thetaDeg))
192
193                            (dX (GoC_PhysApicalDendR * cos (theta)))
194                            (dY (GoC_PhysApicalDendR * sin (theta)))
195                            (dZ GoC_PhysApicalDendH)
196                            )
197                   
198                        LineSegment (origin dX dY dZ)))
199                   
200                    (const n = 1)
201
202                    (segp (u) = (generator f) (initial (randomInit (17)))
203                                (nsegs GoC_Ad_nseg) (nsegpts GoC_Ad_nsegpts))
204                   
205                    (segp (v) = (generator g) (initial (randomInit (17)))
206                                (nsegs GoC_Ad_nseg) (nsegpts GoC_Ad_nsegpts))
207                   
208                    (output u n v n)
209
210                    )
211
212         (component (type section) (name Axons)
213                   
214                    (const n = numAxonGolgi)
215
216                    (defun f (gid origin init)
217                      (let ((dX (randomUniform (GoC_Axon_Xmin GoC_Axon_Xmax init)))
218                            (dY (randomUniform (GoC_Axon_Ymin GoC_Axon_Ymax init)))
219                            (dZ (randomUniform (GoC_Axon_Zmin GoC_Axon_Zmax init))))
220                        LineSegment (origin dX dY dZ)))
221
222                    (p (u) = (generator f) (initial (randomInit (23))))
223                   
224                    (output u n)
225
226                    )
227
228         )
229
230       (component (type projection)
231
232            (input (GC from cell-forests)
233                   (GoC from cell-forests))
234
235            (r = PFtoGoCzone)
236
237            (set source = (section GC ParallelFibers))
238            (set target = (section GoC ApicalDendrites))
239
240            (PFtoGoC = (SegmentProjection (r source target)))
241
242            (output PFtoGoC)
243            )
244
245
246       (component (type projection)
247
248            (input (GC from cell-forests)
249                   (GoC from cell-forests))
250
251            (r = AAtoGoCzone)
252
253            (set source = (section GC AscendingAxons))
254            (set target = (union
255                           (section GoC ApicalDendrites)
256                           (section GoC BasolateralDendrites)
257                           ))
258
259            (AAtoGoC = (SegmentProjection (r source target)))
260
261            (output AAtoGoC)
262            )
263
264       
265       ))
Note: See TracBrowser for help on using the repository browser.