source: project/release/4/picnic/trunk/examples/GLHPswc.picnic @ 31145

Last change on this file since 31145 was 31145, checked in by Ivan Raikov, 6 years ago

picnic: tweaks to swc example

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
21picnic-model
22  GL
23       config PFlength
24       config PFlengthSlope ;; how much the PF length decreases with depth
25                            ;; PFs deeper in the molecular layer tend to be shorter
26                            ;; (Pichitpornchai et al, 1994)
27       
28       config MLdepth
29       config PCLdepth
30       
31       config numAxonGolgi  ;; GoC axonal dimensions
32       config GoC_Axon_Xmin
33       config GoC_Axon_Xmax
34       config GoC_Axon_Ymin
35       config GoC_Axon_Ymax
36       config GoC_Axon_Zmin
37       config GoC_Axon_Zmax
38       
39       config GoC_nDendML ;; GoC # of apical dendrites
40       config GoC_nDendGL ;; GoC # of basolateral dendrites
41       
42       config GoC_Ad_nseg ;; GoC apical dendrites number of segments
43       config GoC_Ad_nsegpts ;; GoC apical dendrites number of points per segment
44       
45       config GoC_Bd_nseg
46       config GoC_Bd_nsegpts
47       
48       config GoC_PhysApicalDendH
49       config GoC_PhysApicalDendR
50       config GoC_Atheta_min
51       config GoC_Atheta_max
52       config GoC_Atheta_stdev
53
54       config GoC_PhysBasolateralDendH
55       config GoC_PhysBasolateralDendR
56       config GoC_Btheta_min
57       config GoC_Btheta_max
58       config GoC_Btheta_stdev
59       
60       config AAtoGoCzone
61       config PFtoGoCzone
62       config GoCtoGoCzone
63       config GoCtoGoCgapzone
64       
65       config GoCxrange
66       config GoCyrange
67       
68       const xExtent = GoCxrange
69       const yExtent = GoCyrange
70       
71       component (type local-cell-forest) (name GC)
72       
73       
74         component (type layout) (name GCTcoordinates)
75                   
76                    s = (PointsFromFile ("GCTcoordinates1.dat"))
77                   
78                    output s
79
80         component (type pointset) (name GC)
81                   
82                    s = (PointsFromFile ("GCcoordinates.dat"))
83                   
84                    output s
85
86         component (type pointset) (name GCT)
87                   
88                    s = (PointsFromFile ("GCTcoordinates.dat"))
89                   
90                    output s
91
92         component (type section) (name AscendingAxons)
93                   
94                    fun f (gid origin)
95                      let ((dX 0) (dY 0) (dZ (neg (PCLdepth))))
96                        LineSegment (origin dX dY dZ)
97                   
98                    const n = 1
99                   
100                    p (u) = (generator f) (npts 4)
101                   
102                    output u n
103         
104         
105        component (type section) (name ParallelFibers)
106         
107                    component (type perturbation)
108                               
109                               fun pf (gid origin init)
110                                 let ((period (randomUniform ((PFlength / 50.0) ~ (PFlength / 30.0) ~ init)))
111                                      (phase  (randomUniform (0.0 ~ 10.0 ~ init))))
112                                   ;; Harmonic (amplitude period phase npts)
113                                   Harmonic (0 5.0 period phase 50)
114                               
115                               const n = 2
116                               
117                               p (s) = (generator pf) (initial (randomInit (randomSeed ())))
118                               
119                               output s n
120                                                   
121                    component (type perturbation)
122                               
123                               fun pf (gid origin init)
124                                 let ((period (randomUniform ((PFlength / 4.0) ~ (PFlength / 10.0) ~ init)))
125                                      (phase  (randomUniform (0.0 ~ 10.0 ~ init))))
126                                   ;; Harmonic (amplitude period phase npts)
127                                   Harmonic (1 0.5 period phase 50)
128                               
129                               const n = 2
130                               
131                               p (s) = (generator pf) (initial (randomInit (randomSeed ())))
132                               
133                               output s n
134                   
135                   
136                    fun f (gid origin)
137                      let ((z (pointCoord (2 origin))) ;; depth of this PF
138                           (dX (PFlengthSlope * (z - MLdepth) + (PFlength / 2))) (dY 0) (dZ 0))
139                        LineSegment (origin dX dY dZ)
140                   
141                    fun g (gid origin)
142                      let ((z (pointCoord (2 origin))) ;; depth of this PF
143                           (dX (PFlengthSlope * (z - MLdepth) + (PFlength / 2))) (dY 0) (dZ 0))
144                        LineSegment (origin ~ (neg (dX)) ~ dY ~ dZ)
145                   
146                    const n = 1
147                   
148                    ;; process u grows in the positive X direction
149                    ;; process v grows in the negative X direction
150                    p (u) = (generator f) (sampler (polynomial 0.003 0.0085 0.0085 )) (npts 200)
151                    p (v) = (generator g) (sampler (polynomial 0.003 0.0085 0.0085 )) (npts 200)
152                   
153                    output u n v n
154
155       
156       component (type cell-forest) (name GoC)
157         component (type layout) (name GolgiCoordinates)
158                    s = (PointsFromFile ("GoCcoordinates.dat"))
159                    output s
160         component (type section) (name BasolateralDendrites)
161                    fun f (gid origin init)
162                      let (
163                           (thetaDeg (randomNormal (GoC_Btheta_min GoC_Btheta_stdev init)))
164                           (theta    ((PI / 180) * thetaDeg))
165                           (dX (GoC_PhysBasolateralDendR * cos (theta)))
166                           (dY (GoC_PhysBasolateralDendR * sin (theta)))
167                           (dZ GoC_PhysBasolateralDendH)
168                          )
169                        LineSegment (origin dX dY dZ)
170                    fun g (gid origin init)
171                      let (
172                           (thetaDeg (randomNormal (GoC_Btheta_max GoC_Btheta_stdev init)))
173                           (theta    ((PI / 180) * thetaDeg))
174                           (dX (GoC_PhysBasolateralDendR * cos (theta)))
175                           (dY (GoC_PhysBasolateralDendR * sin (theta)))
176                           (dZ GoC_PhysBasolateralDendH)
177                          )
178                        LineSegment (origin dX dY dZ)
179                    const n = 1
180                    segp (u) = (generator f) (initial (randomInit (randomSeed ()))) (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts)
181                    segp (v) = (generator g) (initial (randomInit (randomSeed ()))) (nsegs GoC_Bd_nseg) (nsegpts GoC_Bd_nsegpts)
182                    output u n v n
183
184         component (type swc-section) (name ApicalDendrites)
185                    swcdir (u) = (type 3) (nsegs GoC_Ad_nseg) (path "/home/igr/src/model/GL/brep/ivan_2000")
186                    output u
187
188         component (type section) (name Axons)
189                    const n = numAxonGolgi
190                    fun f (gid origin init)
191                      let (
192                           (dX (randomUniform (GoC_Axon_Xmin GoC_Axon_Xmax init)))
193                           (dY (randomUniform (GoC_Axon_Ymin GoC_Axon_Ymax init)))
194                           (dZ (randomUniform (GoC_Axon_Zmin GoC_Axon_Zmax init)))
195                          )
196                        LineSegment (origin dX dY dZ)
197                    p (u) = (generator f) (initial (randomInit (randomSeed ())))
198                    output u n
199       
200       component (type projection)
201           
202            input (GC from cell-forests) (GoC from cell-forests)
203           
204            r = PFtoGoCzone
205           
206            set source = (section GC ParallelFibers)
207            set target = (section GoC ApicalDendrites)
208             
209            PFtoGoC = (SegmentProjection (r source target))
210           
211            output PFtoGoC
212           
213       component (type projection)
214           
215            input (GC from cell-forests) (GoC from cell-forests)
216           
217            r = AAtoGoCzone
218             
219            set source = (section GC AscendingAxons)
220            set target =
221                         union
222                           section GoC ApicalDendrites
223                           section GoC BasolateralDendrites
224           
225            AAtoGoC = (SegmentProjection (r source target))
226           
227            output AAtoGoC
228           
229       component (type projection)
230           
231            input (GoC from cell-forests)
232           
233            r = GoCtoGoCzone
234           
235            set source = (section GoC Axons)
236            set target = (population GoC)
237           
238            GoCtoGoC = (Projection (r source target))
239             
240            output GoCtoGoC
241
242       component (type projection)
243           
244            input (GoC from cell-forests)
245           
246            r = GoCtoGoCgapzone
247             
248            set source = (population GoC)
249            set target = (population GoC)
250           
251            GoCtoGoCgap = (Projection (r source target))
252           
253            output GoCtoGoCgap
Note: See TracBrowser for help on using the repository browser.