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

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

picnic: added GoC/GoC connections to GL example

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