-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOrtner_Simulation - SimTest.hoc
538 lines (479 loc) · 21.8 KB
/
Ortner_Simulation - SimTest.hoc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
//Creation of SNc DA single compartment neuron with a PRE HH neuron activating an NMDA synapse
// written by Antonios Dougalis, Dec 2014, Kozani
// extended by Antonios Dougalis, Aug 2015, Innsbruck
// finalised by Antonios Dougalis, Feb 2016, Ulm
//----------------------------------------------------------------------------
// create DA compartment
//----------------------------------------------------------------------------
load_file("nrngui.hoc")
create PRE
PRE {
diam=10
L=10
Ra = 35.4
cm=1
insert hh
}
create DA
DA {
diam=30
L=30
Ra = 35.4
cm=1
insert HHHmod
insert A
insert H
insert gkca
insert cabalanmod
insert capumpmod
insert calcha
insert calchaT
insert cal2
insert cal3s
insert cal3l
}
//----------------------------------------------------------------------------
// insert IClamp in DA terminal
//----------------------------------------------------------------------------
access DA
objref stim
stim = new IClamp(0.5)
stim.del = 0
stim.dur = 10000
stim.amp = 0
objref stim1
stim1 = new IClamp(0.5)
stim1.del = 2000
stim1.dur = 2000
stim1.amp = 0
//----------------------------------------------------------------------------
// insert IClamp in PRE terminal
//----------------------------------------------------------------------------
access PRE
objectvar stim2
PRE stim2 = new IClamp(0.5)
stim2.del = 4000
stim2.dur = 100
stim2.amp = 0.2
//----------------------------------------------------------------------------
// insert DA NMDA postsynaptic mechanism
//----------------------------------------------------------------------------
access DA
objectvar synNMDA
synNMDA = new NMDA(0.5) // create synapse
DA synNMDA.loc(0.5) // assign postsynaptic compartment
setpointer synNMDA.PRENMDA, PRE.v(0.5) // assign presynaptic compartment
//----------------------------------------------------------------------------
// insert DA AMPA and GABA postsynaptic mechanisms
//----------------------------------------------------------------------------
objectvar syn, syns
syn= new AMPA(0.5)
syns=new GABA(0.7)
//for AMPA receptor
objref synstim, stimA, trignetcon, netsynstim //syn is a synapse, synstim is a NetStim object, stim is an IClamp object,
//triggernetcon & netsynstim are NetCon objects
synstim = new NetStims(0.5) //use the name of the point process mod file that is NetStims
synstim.start = 0 //define its properties
synstim.interval = 1000
synstim.number = 100
synstim.noise = 1
stimA = new IClamp(0.5) //define an IClamp that will be used to trigger the NetStims
stimA.del = 0
stimA.dur = 10000
stimA.amp = 0.0004
trignetcon = new NetCon(&IClamp[0.5].i,synstim,0.0003,0,1) //triger Netstim via IClamp using a NetCon
netsynstim = new NetCon(synstim,syn,0,0,0.00025) //make netsynstim a NetCon that connects the source NetStim[synstim] to the target syn
//for GABA receptor
objref synstims, stimG, trignetcons, netsynstims //syn is a synapse, synstim is a NetStim object, stim is an IClamp object,
//triggernetcon & netsynstim are NetCon objects
synstims = new NetStimss(0.7) //use the name of the point process mod file that is NetStimss
synstims.start = 0 //define its properties
synstims.interval = 500
synstims.number = 100
synstims.noise = 1
stimG = new IClamp(0.7) //define an IClamp that will be used to trigger the NetStimss
stimG.del = 0
stimG.dur = 10000
stimG.amp = 0.0004
trignetcons = new NetCon(&IClamp[0.7].i,synstims,0.0003,0,1) //triger Netstim via IClamp using a NetCon
netsynstims = new NetCon(synstims,syns,0,0,0.0005) //make netsynstim a NetCon that connects the source NetStim[synstim] to the target syn
//----------------------------------------------------------------------------
//vbox utilities for graphing variables
//----------------------------------------------------------------------------
objref vbox, g, h, m
vbox = new VBox()
vbox.intercept(1) //all following creations go into the "vbox" box
g = new Graph()
g.label("mV")
g.size(0,10000,-80,20) //g.size(xstart, xstop, ystart, ystop)
g.addvar("SNc DA NEURON voltage (mV)","DA.v(0.5)", 1,0) //g.addvar("label", "variable", color_index, brush_index)
g.flush()
graphList[0].append(g)
h = new Graph()
h.label("mV")
h.size(4000,4100,-80,20) //g.size(xstart, xstop, ystart, ystop)
h.addvar("PRESYNAPTIC HH NEURON voltage (mV)","PRE.v(0.5)", 2,0) //g.addvar("label", "variable", color_index, brush_index)
h.flush()
graphList[0].append(h)
m = new Graph()
m.label("mV")
m.size(4000,4200,-80,20) //g.size(xstart, xstop, ystart, ystop)
m.addvar("SNc DA NEURON voltage (mV)","DA.v(0.5)", 1,0) //g.addvar("label", "variable", color_index, brush_index)
m.flush()
graphList[0].append(m)
xpanel("")
xpanel()
vbox.intercept(0) //ends intercept mode
vbox.map("Voltage Time Series",300, 100, -1, 1) //draw the box and its contents and labels it and specify coordinates map("label", left, top, width, height)
objref vbox1, k, l
vbox1 = new VBox()
vbox1.intercept(1) //all following creations go into the "vbox" box
k = new Graph()
k.label("mM")
k.size(0,10000,0,0.001) //g.size(xstart, xstop, ystart, ystop)
k.addvar("Intracellular Calcium (mM)","DA.cai(0.5)", 3,0) //g.addvar("label", "variable", color_index, brush_index)
k.flush()
graphList[0].append(k)
l = new Graph()
l.label("nA")
l.size(0,10000,-3,0) //g.size(xstart, xstop, ystart, ystop)
l.addvar("NMDA Current(nA)","NMDA[0].ica", 4,0) //g.addvar("label", "variable", color_index, brush_index)
l.flush()
graphList[0].append(l)
xpanel("")
xpanel()
vbox1.intercept(0) //ends intercept mode
vbox1.map("Calcium and NMDA receptor",750, 100, -1, 1) //draw the box and its contents and labels it and specify coordinates map("label", left, top, width, height)
objref vbox2, p, q
vbox2 = new VBox()
vbox2.intercept(1) //all following creations go into the "vbox" box
p = new Graph()
p.label("mA/cm2")
p.size(3700,4200,0,0.1) //g.size(xstart, xstop, ystart, ystop)
//g.addvar("variable", color_index, brush_index)
p.addvar("Kdr","DA.ik_HHHmod(0.5)", 2,0)
p.addvar("A","DA.ik_A(0.5)", 3,0)
p.addvar("SK", "DA.ik_gkca(0.5)", 1, 0)
p.flush()
graphList[0].append(p)
q = new Graph()
q.label("mA/cm2")
q.size(3000, 4000,0,0.1)
q.addvar("DA all Calcium currents","DA.ica( 0.5 )", 1, 0)
q.addvar("T current","DA.ica_calchaT( 0.5 )", 2, 0)
q.addvar("N current","DA.ican_calcha( 0.5 )", 3, 0)
q.addvar("R current","DA.icar_calcha( 0.5 )", 4, 0)
q.addvar("Pump current","DA.icapump_capumpmod( 0.5 )", 5, 0)
q.addvar("All calcium again current","DA.ica_calcha( 0.5 )", 6, 0)
q.flush()
graphList[0].append(q)
xpanel("")
xpanel()
vbox2.intercept(0) //ends intercept mode
vbox2.map("Pacemaking conductances",750, 100, -1, 1) //draw the box and its contents and labels it and specify coordinates map("label", left, top, width, height)
//------------------------------------------------------------------------------------------------
// Management of Graphical user interface
//------------------------------------------------------------------------------------------------
{load_file("nrngui.hoc")}
objectvar save_window_, rvp_
objectvar scene_vector_[7]
objectvar ocbox_, ocbox_list_, scene_, scene_list_
{ocbox_list_ = new List() scene_list_ = new List()}
{pwman_place(0,0,0)}
//Begin PointProcessGroupManager
{
load_file("pointgrp.hoc")
}
{
ocbox_ = new PointProcessGroupManager(0)
}
{object_push(ocbox_)}
{
}
{object_pop() doNotify()}
{
ocbox_ = ocbox_.v1
ocbox_.map("Electrode, Synapse & Noise Controller", 285, 750, 973.8, 396)
}
objref ocbox_
//End PointProcessGroupManager
{
xpanel("RunControl", 0)
v_init = -65
xvalue("Init","v_init", 1,"stdinit()", 1, 1 )
xbutton("Init & Run","run()")
xbutton("Stop","stoprun=1")
runStopAt = 5
xvalue("Continue til","runStopAt", 1,"{continuerun(runStopAt) stoprun=1}", 1, 1 )
runStopIn = 1
xvalue("Continue for","runStopIn", 1,"{continuerun(t + runStopIn) stoprun=1}", 1, 1 )
xbutton("Single Step","steprun()")
t = 10000
xvalue("t","t", 2 )
tstop = 10000
xvalue("Tstop","tstop", 1,"tstop_changed()", 0, 1 )
dt = 0.025
xvalue("dt","dt", 1,"setdt()", 0, 1 )
steps_per_ms = 40
xvalue("Points plotted/ms","steps_per_ms", 1,"setdt()", 0, 1 )
screen_update_invl = 0.05
xvalue("Scrn update invl","screen_update_invl", 1,"", 0, 1 )
realtime = 8.95
xvalue("Real Time","realtime", 0,"", 0, 1 )
xpanel(0,115)
}
{
xpanel("SNc DA Neuron Parameter Box", 0)
xlabel("DA basal characteristics")
DA.L = 30
xvalue("L","DA.L", 1,"", 0, 0 )
DA.diam = 30
xvalue("diam","DA.diam", 1,"", 0, 0 )
DA.Ra = 35.4
xvalue("Ra","DA.Ra", 1,"DA.Ra += 0", 0, 1 )
DA.cm = 1
xvalue("cm","DA.cm", 1,"", 0, 0 )
DA.nseg = 1
xvalue("nseg","DA.nseg", 1,"", 0, 0 )
xlabel("")
xlabel("IONIC CONDUCTANCES")
DA.gnabar_HHHmod = 0.05
xvalue("gnabar_HHHmod","DA.gnabar_HHHmod", 1,"", 0, 0 )
DA.gkbar_HHHmod = 0.01
xvalue("gkbar_HHHmod","DA.gkbar_HHHmod", 1,"", 0, 0 )
DA.glbar_HHHmod = 8e-005
xvalue("glbar_HHHmod","DA.glbar_HHHmod", 1,"", 0, 0 )
DA.gkAbar_A = 0.01
xvalue("gkAbar_A","DA.gkAbar_A", 1,"", 0, 0 )
DA.ghbar_H = 0.0002
xvalue("ghbar_H","DA.ghbar_H", 1,"", 0, 0 )
DA.gkcabar_gkca = 0.0004
xvalue("gkcabar_gkca","DA.gkcabar_gkca", 1,"", 0, 0 )
DA.gcanbar_calcha = 5e-005
xvalue("gcanbar_calcha","DA.gcanbar_calcha", 1,"", 0, 0 )
DA.gcalbar_calcha = 0
xvalue("gcalbar_calcha","DA.gcalbar_calcha", 1,"", 0, 0 )
DA.gcarbar_calcha = 5e-005
xvalue("gcarbar_calcha","DA.gcarbar_calcha", 1,"", 0, 0 )
DA.gcatbar_calchaT = 7.5e-005
xvalue("gcatbar_calchaT","DA.gcatbar_calchaT", 1,"", 0, 0 )
DA.gcal2bar_cal2 = 0
xvalue("gcal2bar_cal2","DA.gcal2bar_cal2", 1,"", 0, 0 )
DA.gcal3sbar_cal3s = 0
xvalue("gcal3sbar_cal3s","DA.gcal3sbar_cal3s", 1,"", 0, 0 )
DA.gcal3lbar_cal3l = 0
xvalue("gcal3lbar_cal3l","DA.gcal3lbar_cal3l", 1,"", 0, 0 )
xlabel("")
xlabel("Ionic reversal potentials")
DA.el_HHHmod = -32
xvalue("el_HHHmod","DA.el_HHHmod", 1,"", 0, 0 )
DA.ena = 50
xvalue("ena","DA.ena", 1,"", 0, 0 )
DA.eh_H = -40
xvalue("eh_H","DA.eh_H", 1,"", 0, 0 )
DA.ek = -73
xvalue("ek","DA.ek", 1,"", 0, 0 )
xlabel("")
xpanel(1572,96)
}
xpanel("SNc DA Neuron Calcium Parameterisation Box", 0)
xlabel("")
xlabel("Calcium Parameterisation")
DA.kmkca_gkca = 0.00019
xvalue("kmkca_gkca","DA.kmkca_gkca", 1,"", 0, 0 )
DA.n_gkca = -4e-005
xvalue("n_gkca","DA.n_gkca", 1,"", 0, 0 )
DA.cainit_cabalanmod = 2e-005
xvalue("cainit_cabalanmod","DA.cainit_cabalanmod", 1,"", 0, 0 )
DA.fCa_cabalanmod = 0.025
xvalue("fCa_cabalanmod","DA.fCa_cabalanmod", 1,"", 0, 0 )
DA.icapumpmax_capumpmod = 0.01056
xvalue("icapumpmax_capumpmod","DA.icapumpmax_capumpmod", 1,"", 0, 0 )
DA.kmp_capumpmod = 0.0001
xvalue("kmp_capumpmod","DA.kmp_capumpmod", 1,"", 0, 0 )
DA.kmn_calcha = 0.0001
xvalue("kmn_calcha","DA.kmn_calcha", 1,"", 0, 0 )
DA.kml_calcha = 0.00045
xvalue("kml_calcha","DA.kml_calcha", 1,"", 0, 0 )
xpanel(1172,96)
objectvar scene_vector_[1]
{doNotify()}
//---------------------------------------------------------------------------------------------
// initiation of messaging
//---------------------------------------------------------------------------------------------
//boolean_dialog("Welcome to my SNc DA neuron model. Would you like to start simulating?", "YES", "NO")
//continue_dialog("Please read the Help File first before running simulations")
objref vbox3, vbox4
vbox3 = new VBox()
vbox3.intercept(1) //all following creations go into the "vbox" box
xpanel("Welcome to my SNc DA neuron model", 1)
xlabel("")
xlabel("Would you like to start simulating?")
xlabel("")
xbutton("YES", "YES()")
xbutton("NO", "NO()")
xpanel()
vbox3.intercept(0) //ends intercept mode
vbox3.map("Welcome to my SNc DA neuron model",600, 600, -1, 1)
proc vbox3UNMAP(){
vbox3.unmap
}
proc vbox4map(){
vbox4 = new VBox()
vbox4.intercept(1) //all following creations go into the "vbox" box
//xpanel("Please read the Help File first before running simulations", 1)
//xlabel("Please read the Help File first before running simulations")
//xpanel(100,100)
continue_dialog("Please read the Help File first before running simulations")
//vbox4.dialog("Disclaimer", "Acc")
vbox4.intercept(0) //ends intercept mode
//vbox4.dismiss_action("vbox4.unmap()")
//vbox4.map("test")
}
proc YES(){
init()
vbox3UNMAP()
vbox4map()
mkHELP()
}
proc NO(){
quit()
}
//----------------------------------------------------------------------------------------------
//creation and loading of a help file
//----------------------------------------------------------------------------------------------
proc mkHELP() {
xpanel("HELP_FILE")
xlabel("")
xlabel("Welcome to my SNc DA neuron model!")
xlabel("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
xlabel("You can minimise this help window at any time and find it again through the NEURON Main menu by clicking on the Window command")
xlabel("If you accidentally close the Help window, Click on File command of the NEURON Main Menu and choose load session then select")
xlabel("Help File.ses from your default folder where all simulation files are stored and it will reappear.")
xlabel("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
xlabel("Brief Model description")
xlabel("The model consists of two neurons, the SNc DA neuron, named DA, which is endowed with a number of conductances and a Hogdkin and Huxley neuron,")
xlabel("named PRE, that controls the activation of an NMDA receptor which is located postsynaptically on the DA neuron.")
xlabel("The PRE neuron does not fire spontaneously and in order to activate the NMDA receptor located on DA we need to excite PRE via brief current clamp injections controlled by electrodes")
xlabel("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
xlabel("How to introduce current clamp electrodes in the model")
xlabel("On the PointProcessGroupManager panel window, press and hold the Show All button and then select option IClamp.")
xlabel("Three electrodes with controllers for their parameters will automatically appear in that window.")
xlabel("They are labelled clearly to which entity they belong. Two are located on the DA neuron and one on the PRE neuron.")
xlabel("Use those to inject positive/negative current into the DA or the PRE neuron by selecting the ON time of current injection as a delay from the start of simulation, its duration and its amplitude.")
xlabel("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
xlabel("How to introduce the NMDA receptor in the model")
xlabel("On the PointProcessGroupManager window, press and hold the Show All button and select the option NMDA.")
xlabel("The NMDA receptor, which is located on the DA neuron,will automatically appear on the window")
xlabel("NB: the IClamp on the PRE neuron is controlling the timing of the activation of the NMDA receptor. Use this electrode to activate the NMDA receptor")
xlabel("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
xlabel("How to START running simulations")
xlabel("Use the RunControl box and press Init&Run. You should be able to observe the results of the simulations in the appropriate Graphic windows")
xlabel("The graphical windows are labelled with the parameter that is being monitored, i.e. DA.v(0.5) is DA neuron voltage.")
xlabel("DA.cai is the intracellular calcium and NMDA.ica is the current flowing through the NMDA receptor.")
xlabel("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
xlabel("How to SAVE simulations")
xlabel("To export any of the resultant traces simply right click and hold on the graphical window's top left corner box and select Pick Vector")
xlabel("Then click and hold on the actual trace on the graphical window and the trace would go red")
xlabel("In the NEURON main Menu, select command Vector and click on Save to File. You will be prompt to give the file a name")
xlabel("Please name the file and give it an extension, name.dat. You have just exported the simulation trace as a dat file which will be saved in the default simulation folder")
xlabel("-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")
xlabel("This model and files will be updated when necessary by the modeller and implementer.")
xlabel("For any queries or problems with this model please contact me on [email protected].")
xlabel("When contacting me about a problem please make sure you include a short description/message AND a screenshot of any messages that you get in the command prompt and state briefly your actions.")
xlabel("This would help me enormously in addressing the problem in a timely manner.")
xlabel("")
xlabel("")
xlabel("Have fun !")
xlabel("")
xlabel("Dr. Antonios Dougalis")
xlabel("Molecular Neurophysiology")
xlabel("University of Ulm")
xlabel("")
xlabel("February 2016, Ulm")
xlabel("")
xpanel(200,100)
}
//boolean_dialog("Welcome to my SNc DA neuron model. Would you like to start simulating?", "YES", "NO") // or use it in this format coupled to the vbox b = vbox.dialog("label", "Accept", "Cancel")
//--------------------------------------------------------------------------------------------------------------------------------------------
//creating panels and functionalities for saving files
//--------------------------------------------------------------------------------------------------------------------------------------------
objref vbox5
vbox5 = new VBox()
vbox5.intercept(1) //all following creations go into the "vbox" box
xpanel("Saving Simulation Data", 1)
xlabel("")
xlabel("Would you like to save simulated data?")
xlabel("")
xbutton("YES, Save my data", "savalldata()")
xbutton("Do Not Save Yet", "run()")
xbutton("Close dialogue, Do Not want to Save anything", "vbox5UNMAP()")
xpanel()
vbox5.intercept(0) //ends intercept mode
vbox5.map("Saving Simulations",300, 0, -1, 1)
proc vbox5UNMAP(){
vbox5.unmap
}
objref rect, recv, recik, recica //create vectors to hold t & v values from simulations
rect = new Vector(40001)
recv = new Vector(40001)
recik = new Vector(40001)
recica = new Vector(40001)
rect.record(&t) //record t values in the vector rect
recv.record(&DA.v(0.5)) //record v values in the vector recv
recik.record(&DA.ik(0.5)) //record ik values in the vector recik
recica.record(&DA.ica(0.5)) //record ica values in the vector recica
objref savdata //create a file to be opened and saved and to hold values from vectors rect and recv
savdata = new File()
savdata.wopen("DAanalysis.dat")
//savdata.seek()
savdata.printf("t DA.v(0.5)\n") //first line of data file
savdata.printf("ms mV mA/cm2 mA/cm2\n") //second line of data for units
savdata.printf("time voltage ik ica\n") //third line of data for labels
//savdata.printf("%d\n",rect.size())
//for i=0, rect.size()-1 {
// savdata.printf("%g\ %g\n", rect.x(i), recv.x(i), recik.x(i), recica.x(i))
//}
objref tempmatrix
tempmatrix = new Matrix(40001, 4)
tempmatrix.setcol(0, rect)
tempmatrix.setcol(1, recv)
tempmatrix.setcol(2, recik)
tempmatrix.setcol(3, recica)
tempmatrix.fprint(savdata, " %g")
proc savalldata(){
savdata.wopen("DAanalysis.dat")
//savdata.seek()
savdata.printf("t DA.v(0.5)\n") //first line of data file
savdata.printf("s mV mA/cm2 mA/cm2\n") //second line of data for units
savdata.printf("time voltage ik ica\n") //third line of data for labels
savdata.printf("%d\n",rect.size())
for i=0, rect.size()-1 {
savdata.printf("%g\ %g\ %g\ %g\n", rect.x(i), recv.x(i), recik.x(i), recica.x(i))
}
tempmatrix.fprint(savdata, " %g")
savdata.close()
}
//--------------------------------------------------------------------------------------------------------------------
//creation of an extra Hbox containing a graph and a popup asking for further parameters to graphed be saved in files
//----------------------------------------------------------------------------------------------------------------------
objref graphix
objref choose
proc newgrapher(){
graphix = new Graph(0)
choose = new SymChooser()
choose.run()
}
objref Hbox1
Hbox1 = new HBox()
Hbox1.intercept(1)
xpanel ("")
xlabel("specify more variables to file")
xbutton ("YES","newgrapher()")
xbutton("NO", "NO()")
xpanel()
Hbox1.intercept(0)
Hbox1.map
proc NO(){
Hbox1.unmap()
}