source: project/release/4/nemo/trunk/examples/Golgi/plot_neuron_nest_v.scm @ 28415

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

nemo: added some plotting scripts

File size: 6.1 KB
Line 
1
2(require-library srfi-1 irregex data-structures files posix extras ploticus cis)
3(import
4 (only srfi-1 filter)
5 (only files make-pathname)
6 (only posix glob)
7 (only data-structures ->string alist-ref compose)
8 (only extras fprintf)
9 (only mathh cosh tanh log10)
10 (prefix ploticus plot:)
11 )
12
13
14(define comment-pat (string->irregex "^#.*"))
15
16(define (activity-plot nest-file neuron-file stim-file)
17
18  (let* (
19         (stim-data
20          (fold
21           (lambda (data-file data)
22             (append
23              (map (lambda (line) 
24                     (let ((strs (filter (lambda (x) (not (string-null? x))) (string-split  line " "))))
25                       (map string->number strs)))
26                   (filter (lambda (line) (not (irregex-match comment-pat line)))
27                           (read-lines data-file)))
28              data))
29           '() (list stim-file)))
30
31         (nest-data
32          (fold
33           (lambda (data-file data)
34             (append
35              (map (lambda (line) 
36                     (let ((strs (filter (lambda (x) (not (string-null? x))) (string-split  line "\t"))))
37                       (map string->number strs)))
38                   (filter (lambda (line) (not (irregex-match comment-pat line)))
39                           (read-lines data-file)))
40              data))
41           '() (list nest-file)))
42
43         (neuron-data
44          (fold
45           (lambda (data-file data)
46             (append
47              (map (lambda (line) (map string->number (string-split  line " ")))
48                   (filter (lambda (line) (not (irregex-match comment-pat line)))
49                           (read-lines data-file)))
50              data))
51           '() (list neuron-file)))
52         
53
54         (stim-data1
55          (filter-map (lambda (lst) (and (pair? lst) (list (list-ref lst 0) (list-ref lst 1)))) stim-data))
56
57         (nest-data1
58          (map (lambda (lst) (list (list-ref lst 1) (list-ref lst 2))) nest-data))
59
60         (neuron-data1
61          (map (lambda (lst) (list (list-ref lst 0) (list-ref lst 1))) neuron-data))
62         )
63
64    (let-values (
65                 ((fd1 temp-path1) (file-mkstemp "/tmp/activity-plot.nest.XXXXXX"))
66                 ((fd2 temp-path2) (file-mkstemp "/tmp/activity-plot.neuron.XXXXXX"))
67                 ((fd3 temp-path3) (file-mkstemp "/tmp/activity-plot.stim.XXXXXX"))
68                 )
69     
70      (file-close fd1)
71      (file-close fd2)
72      (file-close fd3)
73     
74      (let ((dataport (open-output-file temp-path1)))
75        (for-each (lambda (x) (fprintf dataport "~A,~A~%" (car x) (cadr x))) nest-data1)
76        (close-output-port dataport))
77     
78      (let ((dataport (open-output-file temp-path2)))
79        (for-each (lambda (x) (fprintf dataport "~A,~A~%" (car x) (cadr x))) neuron-data1)
80        (close-output-port dataport))
81
82      (let ((dataport (open-output-file temp-path3)))
83        (for-each (lambda (x) (fprintf dataport "~A,~A~%" (car x) (cadr x))) stim-data1)
84        (close-output-port dataport))
85     
86      (plot:init 'svg (make-pathname "."  "nest_neuron_activity.svg"))
87     
88      (plot:arg "-pagesize"   "20,30")
89      (plot:arg "-maxrows"    "300000")
90      (plot:arg "-maxfields"  "900000")
91      (plot:arg "-maxvector"  "900000")
92
93      (plot:proc "getdata"
94                 `(
95;                   ("showdata"   . "yes")
96                   ("delim"      . "comma")
97                   ("fieldnames" . "t1 v1")
98                   ("pathname"   . ,temp-path1)
99                   ))
100
101     
102      (plot:proc "areadef"
103                 `(("title"     . "Golgi DeSouza 2010 voltage trace (NEST simulation, soma compartment)")
104                   ("titledetails"     . "adjust=0,0.2")
105                   ("rectangle" . "1 10 8 14")
106                   ("areacolor" . "white")
107                   ("xrange" . "0 6000")
108                   ("yrange" . "-80 60")
109                   ("xaxis.label"     . "t [ms]")
110                   ("xaxis.axisline"  . "yes")
111                   ("xaxis.stubs"     . "inc")
112                   ("yaxis.label"     . "V [mV]")
113                   ("yaxis.stubs"     . "inc")
114                 ))
115     
116      (plot:proc "lineplot"
117                 `(("xfield"    .  "t1")
118                   ("yfield"    .  "v1")
119                   ("linedetails" . "color=red width=0.5")
120                   ))
121
122
123      (plot:proc "getdata"
124                 `(
125;                   ("showdata"   . "yes")
126                   ("delim"      . "comma")
127                   ("fieldnames" . "t2 v2")
128                   ("pathname"   . ,temp-path2)
129                   ))
130
131     
132      (plot:proc "areadef"
133                 `(("title"     . "Golgi DeSouza 2010 voltage trace (NEURON simulation, soma compartment)")
134                   ("titledetails"     . "adjust=0,0.2")
135                   ("rectangle" . "1 5 8 9")
136                   ("areacolor" . "white")
137                   ("xrange" . "0 6000")
138                   ("yrange" . "-80 60")
139                   ("xaxis.label"     . "t [ms]")
140                   ("xaxis.axisline"  . "yes")
141                   ("xaxis.stubs"     . "inc")
142                   ("yaxis.label"     . "V [mV]")
143                   ("yaxis.stubs"     . "inc")
144                 ))
145
146      (plot:proc "lineplot"
147                 `(("xfield"    .  "t2")
148                   ("yfield"    .  "v2")
149                   ("linedetails" . "color=blue width=0.5")
150                   ))
151                   
152      (plot:proc "getdata"
153                 `(
154;                   ("showdata"   . "yes")
155                   ("delim"      . "comma")
156                   ("fieldnames" . "t i")
157                   ("pathname"   . ,temp-path3)
158                   ))
159
160     
161      (plot:proc "areadef"
162                 `(("title"     . "Stimulus current")
163                   ("titledetails"     . "adjust=0,0.2")
164                   ("rectangle" . "1 3 8 4")
165                   ("areacolor" . "white")
166                   ("xrange" . "0 6000")
167                   ("yrange" . "0 5")
168                   ("xaxis.label"     . "t [ms]")
169                   ("xaxis.axisline"  . "yes")
170                   ("xaxis.stubs"     . "inc")
171                   ("yaxis.label"     . "I [nA]")
172                   ("yaxis.stubs"     . "inc")
173                 ))
174
175      (plot:proc "lineplot"
176                 `(("xfield"    .  "t")
177                   ("yfield"    .  "i")
178                   ("stairstep"    .  "yes")
179                   ("linedetails" . "color=green width=1")
180                   ))
181                   
182
183      (plot:end)
184      ))
185    )
186
187(apply activity-plot (command-line-arguments))
188
189
Note: See TracBrowser for help on using the repository browser.