File: Kkit.help

package info (click to toggle)
genesis 2.1-1.1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 14,288 kB
  • ctags: 10,667
  • sloc: ansic: 111,959; makefile: 2,240; yacc: 1,797; lex: 976; csh: 54; sh: 13
file content (1237 lines) | stat: -rw-r--r-- 55,057 bytes parent folder | download
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
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
/**********************************************************************
** This documentation is part of kinetikit and is
**           copyright (C) 1995-1997 Upinder S. Bhalla.
** It is made available under the terms of the GNU General Public License. 
** See the file COPYRIGHT for the full notice.
** Alternatively, use the 'Help' menu for information on authorship and
** copyright.
**********************************************************************/
KINETIKIT: a Genesis/Xodus tool for developing simulations of
chemical kinetics.
	By Upinder S. Bhalla National Centre for Biological Sciences,
		Bangalore, INDIA. 1995-1997

Manual last modified Feb 6 1997.

=============================================================================
	This help manual is under construction.
=============================================================================
Sections:
1. Introduction
2. Tutorial: Building a model
3. Tutorial: Saving models
4. Tutorial: Experiments on model
5. Tutorial: Techniques for complex models.
5.1	Groups
5.2	Merging
5.3	Complex stimulus paradigms
6. Menu Options
6.1	File menu
6.2	Edit menu
6.3	Tools menu
6.4	Options menu
6.5	Graphs menu
6.6	Help menu
7. Objects in kkit
7.1	Groups
7.2	Pools
7.3	Reacs
7.4	Enzymes
7.5	Channels
7.6	Stims
7.7	Tables
7.8	Plots
8. Library of models
9. Customizing
10. Future plans
11. Acknowledgements




=============================================================================
1. Introduction

Kinetikit is an interface and utility for developing simulations of chemical
kinetics. It is designed to be 'click and drag' and is (hopefully), 
intuitive to use.

1.1 Starting Kinetikit
To run it: 
1. Obtain and install a copy of Genesis which includes the kinetics library.
2. Obtain and install kinetikit.
3. Add the kinetikit directory to your SIMPATH in .simrc
4. Type 
	genesis kkit
from the UNIX prompt.
or, if you already have a model foo.g saved from kinetikit, just type
	genesis foo

1.2 Kinetikit basics: modules

Available modules are displayed in the 'library' window. Instances of
these modules are created by dragging them
onto the edit window. They are interconnected (in the edit window) by
dragging them onto each other, and graphed by dragging them onto the graph
window. Their parameters may be changed by double-clicking on the icons
representing the modules. The basic modules are :
pools - representing available pools of reactants
reactions - representing standard chemical reactions between pools
enzymes - representing Michaelis-Menten enzyme kinetics
channels - representing ligand-gated channels
stims - representing simple two-level stimulus generators.
tables - representing more complex stimulus generators
groups - providing an organizational basis for complex models

There is also a little representation of a toothy dinosaur in the library,
affectionately known as 'Barney', who eats (deletes) any of the above
modules.


1.3 Kinetikit basics: reactions
Kinetikit models standard chemical kinetics of the form:

	A + B <---kb---kf---> C + D

For convenience, it also provides special modules for modeling Michaelis-
Menten enzyme kinetics:

	Enz + Sub <---kb---kf---> Complex ---kcat---> Prd + Enz

or, in terms of the rate constants used in kkit:

	Enz + Sub <---k1---k2---> Complex ---k3---> Prd + Enz


and ion channels which at this point are driven purely by concentration
gradients. The stim and xtab modules provide inputs to the model, typically
by controlling the concentration of one or more pools.

kkit uses a graphical representation of all interactions, which is fairly
close to common illustrative representations used in describing chemical
pathways. 


1.4 Kinetikit basics: running
Models are run using the fairly obvious start-stop-reset buttons in
appropriate colors on the control panel.
1.4.1 Start.
	When you hit the 'start' button,
the simulation starts running for a runtime specified by the Runtime dialog.
Note that the runtime is calculated from the current state of the model.
While the simulation is running, the Current time dialog monitors the
simulation time. A side-effect of changing the runtime is that the graph
x-axes are updated so that the runtime is the x maximum.
1.4.2 Stop.
	This stops the currently running simulation gracefully. The
simulator will stop at the end of the current timestep, and will be 
ready to start up where you left off if you hit the start button again.
1.4.3 Reset.
	This is drawn in red because it irreversibly halts and
wipes out the current state of the simulation. It also sets the current
time to 0.

1.5 Kinetikit basics: Editing
Everything in the edit window is edited by the simple process of double-
clicking on it. This will cause an edit panel for that element to pop up
to the right. Most fields except the 'Path' are editable. Changes made in
the dialogs are not passed on to the element until you hit 'return' on
the dialog, or until you click on the button on the dialog. The UPDATE
button refreshes the values of all dialogs, and the HIDE button does what
it says. There is a NOTES window in most edit panels. You can enter text here,
but it will not be stored till you click on the NOTES button beside it. At
this time there is a stupid limitation on the number of characters that
Genesis can handle in a text string, so try it out to see how far you get:
type in something, hit the NOTES button, and then hit UPDATE. It should be
at least 5 lines in the NOTES window.

1.6 Kinetikit basics: Rearranging
All the items in the edit window can be repositioned by click-and-drag
operations. Some items (e.g., enzymes and channels) are always attached
to pools, so if you move the pool these children also change position.
All the children of groups also move with them by default, but this 
behavior can be toggled using the appropriate button on the edit panel for
the group. Of course, the whole edit window can be panned around using the
arrow keys, and zoomed in and out using the angle bracket keys. If you
zoom too far out then the arrows interconnecting items will vanish in
the distance, but they will reappear when you zoom back in.

1.7 Kinetikit basics: Connecting
Most of the modules can be connected to each other. For example, if you
drag a pool onto a reac, then a green arrow will appear representing the
connection. If you repeat this operation, the original connection is 
removed. We will go into much more detail on setting up models below.

1.8 Kinetikit basics: Grouping
Groups are an organizational feature. Any element, including other groups,
can be dragged into a group. To remove it from the group, drag it onto
the group again. We will discuss the uses of grouping later.

1.9 Kinetikit basics: Graphing
Pools can be dragged into any of the graph windows to set up a plot.
This plot has its own little edit panel, which can be recalled by
double-clicking the plot label in the graph. Likewise, a plot can be deleted
by dragging the plot label onto Barney (the toothy dinosaur icon). The
graphs themselves have numerous features which are described in various
manual pages for Genesis. One of the useful ones is the ability to drag on
the axis labels to rescale the graph.

1.10 Kinetikit basics: Saving
Hit the 'File' option in the title bar. Type in any notes that you
want to keep for this particular model, then enter the filename
you want to use for the model in the 'save' dialog. When you hit
return or click the 'save' button, the model will be saved.

1.11 Kinetikit basics: Quitting
Hit the 'File' option in the title bar, and then the 'quit' button on the menu.
It will ask for confirmation before quitting. 


=============================================================================
2. Tutorial.
As a simple example we will go through the process of building, saving, and
editing a model. We will use most of the library components while
building this model.
The model is a simple simulation of end-product inhibition. We assume that
the product 'prd' of an enzymatic reaction interacts with the enzyme to produce
an inactive form. 

2.0.
Start up Genesis, and kinetikit. If all your simpaths are set correctly it
should be possible to type
genesis kkit
to get going.
At this point you may wish to click the 'Help' menu item to open the help
window, which displays this file.

2.1 Setting up the enzyme reaction
2.1.1 Creating the 'enz' pool.
	To start off, lets make the pool of molecules for the enzyme. Click on
	the blue 'kpool' icon in the library window, and drag it into the 
	edit window in a central-ish location. A new 'kpool' icon appears in
	the edit window, and an edit panel pops up on the right. Go to the
	edit panel, and enter the values:
	Field	  Value
        ---------------
	color	: red
	CoInit	: 1
	Name	: enz
	If you are really neat, you can hit the 'HIDE' button at this point
	to get rid of the edit panel.
2.1.2 Creating the Michaelis-Menten reaction for the enzyme pool.
	The 'enz' pool on its own is just a bunch of molecules. So we need
	to add the catalytic activity to this pool. We do so by clicking on
	the 'kenz' icon in the library window, and dragging it onto the 'enz'
	icon in the edit window. If it works, then a 'kenz' icon appears
	above the 'enz' pool icon. and the edit panel for the enzyme
	pops up. We'll use the defaults without changing.
		Note that enzyme activity _must_ be associated with a pool,
	since enzymatic activity is associated with specific molecular species.
	Try creating a new 'kenz' by dragging from the library to a blank part
	of the edit window, and it will tell you off. Also note that if you
	move the parent pool of a kenz on the edit window, the kenz will tag
	along as well. Finally, you can move the enzyme with respect to the
	parent pool by dragging it to a different place on the screen. This
	new relative position will be maintained when the parent pool is moved.
2.1.3 Create pools for substrate and product.
	Follow the same steps as for the enz pool in 2.1.1.
        Field             Substrate pool               Product pool
        -----------------------------------------------------------
        color             green                        pink
        CoInit            1                            0
        Name              sub                          prd

2.1.4 Connect up the enzyme reaction.
        This is easy. Just drag 'sub' to 'kenz', i.e., to the Michaelis-Menten
        enzyme icon attached to the icon for 'enz'. An arrow should appear
        to display this reaction. Now drag 'kenz' to 'prd', and you should
        get another arrow.
2.1.5 Graphing the reaction progress.
	Now we put in some plots. Drag each of the pools 'sub', 'enz', 'prd'
	one by one to the graph widgets. A color-coded little text icon
	will appear in the graph window to indicate the specified plot. This
	text icon can be double-clicked to put up an edit panel for the plot.
	You may prefer to put the plots in different graph windows to reduce
	clutter.
2.1.6 Initial trial run
	Just hit the 'reset', and then the 'start' buttons. If all went well
	you will see the concentrations of the reactions being plotted as a
	function of time. If open the edit panel for one of the pools,
	you can click on the 'UPDATE' button to display the current
	values for 'n' and 'Co' as the simulation is running.



2.2 Adding in a chemical reaction for the inhibition.
2.2.1 Creating the chemical reaction.
	Drag the 'kreac' icon onto a convenient spot in the edit window.
	Note that reactions, unlike enzymes, are not located on a specific
	pool.
	Change the following fields:
        Field             new value
        ---------------------------
        kf                10
        kb                1
        Name              inhib

2.2.2 Adding the final inhibited form of the product
	Drag in another pool for the inhibited form. Set the following
	fields:
        Field             Value
        ---------------------------
        color             white
        Name              inhib-enz

2.2.3 Connect up the end-product inhibition pathway.
	Click on the 'enz' pool and drag onto the reac named 'inhib' 
	Click on the 'prd' pool and drag onto the reac named 'inhib' 
	Click on the reac named 'inhib' and drag it to the 'inhib-enz' pool.

2.2.4 Graphing the inhib-enz
	This should be obvious by now. Drag the inhib-enz pool to a graph.

2.2.5 Second trial run
	Hit 'reset' again, and 'start', and off you go. See the
	difference when the inhibition is present ?

2.3 Stimulus for model
2.3.1 Creating the xtab
	Drag in the xtab from the library. As usual, an edit panel appears.
	This is quite complicated, and we won't go into the details of what
	it can do. For illustration, we will just use the xtab to generate
	a linear ramp:
	Select the stimulus waveform options.
	Click on the upper right corner of the graph to get a position
		around (100,1).
	Then click the 'interpolate' button.
	You should now have a nice line from 0 to this point. This will be
	your stimulus ramp. Flip back to the stimulus run
	options.  Now click the 'Stimulus Off: click to start' toggle to
	activate the table for delivering stimuli.

2.3.2 Connecting the xtab
	Easy. Click and drag xtab onto the 'sub' pool.

2.3.3 Third trial run
	This should be obvious by now: 
		Hit 'reset' again, and 'start', and off you go.
	For kkit < 1.1, you may find that the table is a bit temperamental.
	It is sensitive to timestep, and to whether or not the tab-loop
	mode is selected. So play around with these. Better yet, since
	you are reading this, you must have access to a more recent version
	of kkit, so why not upgrade ?

=============================================================================
3 Tutorial: Saving and restoring model
3.1	Saving
	What, you mean you haven't been saving yet ? You should know better!
	Go to the 'File' menu, open it. Enter some useful comments into 
	the text area under the NOTES sign. Then enter a filename like 
	epi.g into the 'save' dialog, and hit return. Phew! Your model
	is now safe. Use the UNIX shell to examine the file if you are 
	curious. epi.g is a text file, and in fact is a perfectly legal
	Genesis script file. The simundump commands are rather
	cryptic and meant for machine consumption, but the rest
	are fairly straightforward.
	Be warned that the saves overwrite existing files. As a general
	organizational rule and as an electronic equivalent of a page in
	a lab notebook, I normally type in a version number as part of
	each filename.
		
3.2	Restoring.
	Quit your simulation (from the 'File' menu).
	There are two ways to restore the model. The obvious one is to first
	load in kkit, and then go to the command line and type the name of
	the model file ('epi' in our example). For convenience, the saved
	files will load in kkit themselves if they are invoked directly:

	genesis epi

	will start kkit and then load in the model 'epi', without further
	user intervention. This assumes that kinetikit is set up properly
	in your Genesis SIMPATH (check your .simrc). Note
	that the state of the model is restored, but not the data in the plots.
	The plot values can be saved separately. The reason for this is
	that the plot data occupies a lot of space, and is not used often
	enough to justify saving it every time.

3.3	Restoring from the interface
	Due to an oft-lamented peculiarity of the Genesis parser, it is
	not possible to load in a file specified in a dialog. So, if you
	have already started up kkit, you will have to go to the command
	prompt to load in the model file.

3.4	Saving plots
	Plots can be individually saved using the dialog in the pop-up panel
	for the plot. The format is standard x-y format, one coordinate pair
	per line, separated by spaces. One can also save all the plots at
	once using the "Save all plots to file:" dialog in the Graphs menu
	item. This saves all the plots in a single file in xplot format,
	which is basically the same x-y format with one coordinate pair per
	line. Different plots in the same file are identified by '/newplot'
	and '/plotname ...', and it should be easy to extract the plots you
	want from this file.


=============================================================================
4 Tutorial: Experiments on model
4.1	Overlays
	For the following sections we will probably want to compare the
	progress of the reactions in time. This is done by selecting the
	overlay for the plots. In the overlay mode, the previous plots are
	retained. Run your reference reaction, and then BEFORE
	hitting reset, go to the 'graphs' item on the menu bar. Change the
	toggle from "Do not overlay plots" to "Overlay all plots". Now make
	the changes in the model, hit the 'Reset' button, and start over.
	You will now have a new set of plots which can be compared with the
	old curves. When you have enough plots piled up on each other, just
	go back to the 'graphs' menu item and change the toggle back again.
	The next Reset will clean out all the plots.

4.2	Buffering
	Lets buffer the substrate. Double click on the 'sub' icon. Flip the
	"BUFFERING OFF" toggle on the substrate pool to 'BUFFERING ON'. Now
	run the model again. You will find that the concentration of 'sub'
	is held fixed at CoInit. If your simulation is running slowly, you
	can even change CoInit on the fly by entering a new value in the 
	dialog. Turn the buffering off for the next stage.

4.3	Slope of plot
	The 'prd' in this model rises continuously. Let us see if the
	production rate approaches steady-state. One way of doing this is to
	plot the slope of the 'prd' concentration.
	Double-click on the 'prd' label in
	the graph window. An editor panel for the stim appears. Hit the toggle
	"Slope calculation mode" to change it from 'off' to 'on'. The new
	points for the prd will be displayed as slope. The time units are per
	second. This is too small to see easily, so scale it up by changing
	the Y-scale value. When scaled to 100, the plot lies almost exactly
	over the inhib-enz plot. Hmm. Can you explain this ?
	Exercise for the reader: Can you come up with another way of deriving
	the rate of production of 'prd' (the slope) ? Hint: contemplate the
	rate equations for a reac.

4.4	Second-order kinetics
	Lets say we want to change the order of the inhibition of the enz
	by the prd from first order to second. Try the obvious method: drag in
	the 'prd' to the 'inhib' reac a second time. Oops, this turns out to be
	the procedure for _removing_ an existing reac. To do this right, start
	out by replacing the first arrow from 'prd' and then going to the
	'Options' menu. Flip the toggle saying "Cooperative reacs disabled",
	and then drag the prd to the inhib reac again. This time you should get
	a second arrow parallel to the first. (Older versions of Xodus have a
	bug in which the second arrow is not displayed under some conditions.)
	You can make the reaction as high-order as you like. Mechanistically,
	be warned that true higher-order reactions are rare and should
	be considered an approximation to multi-stage reactions. As an
	exercise, build and compare nominally equivalent examples of a
	high-order reaction implemented as 
	1. a cooperative reac
	2. as a sequential multi-stage reaction (First one specific
		intermediate is formed, then the other).
	3. as a parallel multi-stage reaction (where either intermediate form
		can be formed at the fist step)

4.5	Accuracy/speed
	This is where graph overlays are specially useful.
	- Start out with a clean graph, and run the model normally.
	- Now go to the 'options' menu and change the dt from 0.01 to 0.001.
	- Then in the graph menu, turn overlays on.
	- Reset and run the model again.
	The output should be nearly identical,
	which is reassuring. It shows us that the original dt was pretty
	reasonable. See how long a dt you can get away with. Surprising, eh,
	for such a simple integration scheme?
	Frequently one encounters steeply changing transients in these models,
	for example, when you start the model up or deliver a stimulus. In
	such cases it sometimes helps to reduce the timestep to get over the
	transient, and then go to a longer timestep for speed once the 
	numerically difficult part is over. In a future version of the kinetics
	library there will be a higher-order integration solver (ksolve)
	which will use variable timestep.

4.6	Set up a degradation pathway for the prd.
	This should be a simple enough exercise for the reader, and can
	be done with what you already know.
	Hint: assume that the degradation end-product is held at a fixed level.
	Blatant hint: You can do this by buffering it.

=============================================================================

5 Tutorial: Techniques for complex models
	This section is relevant only when you have a complex enough model
	that managing it becomes a major issue. As a rough guide, when the
	icons in your model start to become really crammed together when you
	try to see them all at the same time, you can be pretty sure you
	need to start using the techniques described here.

5.1	Groups
	A group is a container for other kinetic elements, including other
	groups. These are a useful basis for modularization. Typically,
	each signaling pathway should be represented by a separate group.
	They perform no numerical operations, so be liberal in their use.
5.1.1	Creation of groups
	Creating a group element is trivial - drag it into the edit window, as
	should be obvious by now. Lets call this group epi, and color it blue.
	Other elements (including other groups) are placed
	into the group by dragging them in. For our example, try this out
	with all the elements in the current model. Note that the position
	of the elements does not change, but the color of their text labels
	changes to that of the group.
5.1.2	Color matching
	It is advisable to set the foreground color of each of the
	elements in a group to some common base color, for example, shades
	of green. In complex models this (along with the textcolor) helps
	to identify members of a group.
5.1.3 Hiding and showing (contracting and expanding)
	There are controls for this in the pop up panel for the group. The
	purpose is straightforward enough: to reduce clutter in a complex
	model. I actually find that I prefer to have all the elements of
	all the groups visible in all their glory, because this helps me to
	keep track of all the relationships. 
5.1.4 Moving
	The children of a group normally will move along with their parent
	group when it is shifted in the edit window. This behavior can
	be toggled using the "Move..." toggle in the group edit panel.
5.1.5 Saving
	Rather than saving an entire model, one can save the contents of a
	particular group. This will try to also save all elements which are
	connected to that group, even if they are not in the group itself.
	This last feature is a little temperamental at this point (kkit1.1)
	Try it out, saving the file as group_epi.g.
	We will use it later.
5.1.6	Initializing
	The 'Initialize all children to current levels' button is useful for
	models which need to start at an equilibrium level which takes a
	while to attain. Just click the 'Initialize' button, once the model
	has equilibrated. Now the 'CoInit' fields are set to the equil value,
	and the model will be equilibrated at reset. This button should be
	used with caution, however. Make sure that you have saved the version
	used to derive the equilibrium, in case you wish to change conditions
	later. This is specially applicable to models which you later wish
	to merge, since any change to the model will change equilibrium levels.

5.2	Merging
	This is one of the most important facilities for developing large,
	complex models in kkit. Basically, it allows you to simply load in
	independently developed modules (your own or from a library) in
	succession. The loading routines will hook up most things
	automatically while avoiding overlap.
5.2.1	Loading new files in
	I assume that at this point you have a group called epi, with all
	the elements moved into it as children. (If not, you can quit, start
	over, and reload the file group_epi.g). Lets now merge this with the
	original epi.g which we saved in section 2.4. To make things
	interesting, lets remove the 'prd' from the group (by dragging it
	into the group again). The idea is that the original epi.g overlaps
	with the current model on this element. We would like the merging
	process to connect up with it without duplication.
	Go to the command line and type epi.g. Amazing - it loads right in.
	(You may need to move the group 'epi' around a bit to see the newly
	loaded elements.)
	In particular, the 'prd' pool should now be connected both to the 
	group 'epi' and to the elements in the original model. This facility
	makes it very easy to hook up different signaling pathways through
	common messengers such as Ca and AA.

5.2.2 Interconnecting groups (messenger pools)
	You have just seen an example where the 'prd' pool was used as a
	common messenger which automatically got hooked up during merging.
	For this to work well, it helps to keep the
	common messengers as children of the base group /kinetics (where
	everything goes by default). 

5.2.3 Future development
	The merging facility is slated for considerable development. Some
	of the items to look forward to include:
	- Saving a complex merged model as a collection of file references
		to individual modules
	- Automatic selection of most recent version of library module.
	- Improvements to the common messenger facility
	- Automatic positioning of merged-in modules to lessen overlap.
	The long term objective is to make it possible to think in terms of
	pathways without having to worry about the details of merging and
	managing libraries.
	
5.3	Complex stimulus paradigms.
	One can manage pretty complex stimuli with the 'stim' and the
	'xtab', but these have limitations. For example, one may wish to
	reduce the timestep for computing the transients accurately during
	a large stimulus. At this time the best way for doing this is
	to write a script function. Regretfully, there is no API at this
	point for conveniently specifying calls within kkit that one may
	wish to use for writing such a stimulus function. In practice the
	one function call that I frequently use is
	do_save_all_plots(filename)
	which does just what it says.


=============================================================================

6. Menu Options
Menus are opened and closed by clicking on the menu button. In some cases
menu commands will close the menu, leaving the menu button in a depressed
state. If so, it will take two (rather than one) clicks to redisplay the menu.

6.1 File menu.
----------------------
6.1.1	Open file...
	This item pops open a panel with various loading options.
	As this item indicates, this version of Genesis will not allow
files to be loaded in from the GUI, and you have to type in the filename
at the command prompt.
6.1.2	Save [filename]
	This dialog saves the model to the specified filename. This _can_
	be done from the GUI.
6.1.3	NOTES
	This is a text entry area, for typing notes that will be saved
	along with the model.
6.1.4	Clear entire simulation
	Well, that should be clear enough !
6.1.5	quit
	Another obvious button. It pops up a further panel asking for
	confirmation in case you hit it in error.

6.2 Edit menu.
----------------------
	This space reserved for future expansion

6.3 Tools menu.
----------------------
6.3.1	Postscript...
	This provides various options for helping one to dump the contents
	of the edit window in postscript format. Oddly enough, there is
	no command for doing the actual dump. You must go to the edit window
	and type ^P (control-P) to cause the dump to happen.
6.3.2	Plot...
	This just pops up the Graphs menu, which is described below.
6.3.3	Compare models...
	This option lets one compare the kinetic parameters of a model. Simple
	'diffs' of model files do not work well for this task.
	The option pops up a self-documented window to help one compare all
	or part of a loaded model with a model in a file, or part of another
	loaded model, or part of the same model.

6.4 Options menu.
----------------------
6.4.1	Clock 0 dt for simulation
	This is the fastest clock for the simulation. It is reserved for
	special situations where one needs to run some other part of a
	combined model (e.g., a compartmental model) at a much
	shorter timestep than the kinetic model. In most cases it
	should be set to the same value as clock 1.
6.4.2	Clock 1 dt for simulation
	This is the clock for most of the kinetic components except tables.
6.4.3	Clock dt for plots
	Says what it is. One saves CPU time as well as memory if this
	is set to a value substantially larger than the simulation dt.
6.4.4	Clock dt for control
	This is the clock used for updating the 'Current time' dialog.
	This should usually be set to a value well over the fast timestep to
	avoid wasting CPU cycles.

6.4.5	Higher order reacs disabled/enabled
	This toggle allows one to build higher-order reactions. Consider
	pool A, and reac R. Normally, the first time you drag A to R you
	set up a reaction pathway, and the second time you drag A to R
	you remove it. To create a reaction with an order of 2,
	you need to flip this toggle to

		Higher order reacs enabled

	before dragging A to R a second time. Note that the toggle reverts
	to the 'disabled' state each time it is used, to avoid confusion.

	This toggle also works for dragging pools to enzymes.

6.4.6 pool-to-pool uses CONSERVE / pool-to-pool uses SUMTOTAL
	This toggle flips between using CONSERVE and SUMTOTAL when
	connecting pools to each other. Each case is described below.

	The CONSERVE message is used when you wish to explicitly set up
	conservation relationships between a group of pools. Suppose a
	molecule A can exist alone, bound to B as AB, and bound to C as
	AC. If you wish to have A calculated by conservation relationships,
	just drag AB to A and AC to A. This bypasses the normal calculations
	for A, and assures that the conservation relationships will be
	satisfied.
	Normally the differential equations for each reactant provide
	sufficient accuracy to ensure that the conservation relationships
	are satisfied.
	In some cases (e.g., very fast rates for one reaction step)
	you may prefer to use conservation instead to improve stability
	and accuracy. Be sure to check on stability - you can get
	interesting numerical oscillations in some cases. The conservation
	facility should not be used lightly, as it is easy to leave out
	something that should be part of the conservation scheme. For
	example, enzymes may contribute to the conservation scheme too.
	You may also find that you get better stability by arranging the
	conservation scheme differently: e.g., AB as the conserved
	quantity rather than A.

	The SUMTOTAL message is used when several pools have an
	identical activity, for instance a common enzyme site
	activated in several different ways.  Each of the contributing
	pools in this example would send a SUMTOTAL message to the pool
	representing the enzyme. The summed pool would behave as a
	normal enzyme except that its nTotal is now the sum of the
	SUMTOTAL messages.  It is assumed that the activity site is
	independent of the regulation site(s). In other words, the
	contributing pools do not care how much of the summed pool
	is in an enzyme complex or even taking part in other reactions.
	Thus, if one were to take a single pool A, and send a SUMTOTAL
	to another pool B, and hang an enzyme off B, this would NOT be
	the same as having the same enzyme attached to A.
	In the first case all of A would always be available for other
	reactions.
	In the second case the amount of A available for other reactions
	would be determined by how much was busy complexing with the enzyme.

6.4.7	Normal enz-to-pool: not CONSERVE / Enz-to-pool uses nComplex for
	CONSERVE
	This toggle is used when you wish to set up conservation relationships
	involving enzyme complexes. Although the number of molecules in
	the enzyme complex is usually small, you can't just ignore them
	when doing conservation relationships. See the previous
	section (6.4.6).

6.4.8	Normal enz-to-pool: not SUMTOTAL / Enz-to-pool uses nComplex for
	SUMTOTAL
	This toggle is used when you wish to use the SUMTOTAL message
	involving enzyme complexes.

6.4.9	Normal pool-to-enz: not INTRAMOL / pool-to-enz uses n for INTRAMOL
	This toggle is used when you wish to set up intra-molecular reactions.
	In this situation, the number of enzyme sites available per substrate
	is _not_ a function of concentration of the enzyme. So we need to
	divide out the enzyme conc by the concentration of the entire
	pool of enzymes. Hence the INTRAMOL message.
6.4.10	Normal pool-to-reac : not KF / pool-to-reac uses Co for kf
	This toggle allows you to add messages that specify the kf of a 
	reaction. This provides a great deal of flexibility in designing 
	models, at the expense of some rigor. As a philosophical point, I feel
	that most biological reactions do not work by directly modifying rates,
	but rather by forming different molecular species wich react at 
	different rates.
	The source of the kf message is Co from a pool, rather than
	n. The idea is that the Co field can be scaled (by the volume field)
	which lets one put in scale factors.
	As soon as this option has been used in creating a message, the toggle
	is turned off again so that the usual messaging can be resumed.
	Removal of the KF message requires that this toggle again be activated,
	otherwise the usual pool-to-reac operations will be assumed.
6.4.11	Normal pool-to-reac : not KB / pool-to-reac uses Co for kb
	This toggle controls the kb rate constant in the same manner as
	described above. Note that the KF and KB toggles are exclusive, you
	cannot have both of them on at the same time.

6.5 Graphs menu
----------------------
6.5.1	Show More graphs
	This toggle causes the display/hiding of an extra couple of graph
	widgets. These may be useful in models where there are so many
	interesting reactions that the default two are not enough.
6.5.2	X-axis Max 
	X-axis Min 
	Y-axis Max 
	Y-axis Min 
	These four dialogs do the obvious thing. The changes affect all
	graphs, including the 'moregraphs'
6.5.3	Clock dt for plots
	This sets the timestep for all the plots.
6.5.4	Do not overlay plots / Overlay all plots
	This toggle lets you flip between overlay and usual modes. In the usual
	mode, all previous points in a graph are erased on reset. In the
	overlay mode, each existing plot is retained and a new plot started
	when the reset button is hit.
6.5.5	Plots enabled / Plots disabled
	This toggle allows one to run a model with or without the plots
	active. Useful if you are using some other way of monitoring a
	simulation and wish to avoid the overhead of plotting.
	This toggle requires a reset in order to become effective.
6.5.6	Delete all plots
	Does what it says.
6.5.7	Save all plots to file:
	This saves all the plots in a single file in xplot format,
	in which each line has a pair of x,y  coordinates.
	Different plots in the same file are identified by '/newplot'
	and '/plotname ...' at the start of the coordinate list. It should
	be easy to extract the plots you want from this file.
	
6.6 Help menu
----------------------
This pops up the Help form. Most of the Help form is a text widget with the
contents of this kkit help file displayed. There is also a button for
redisplaying the 'About kkit' notice that appears on startup.

=============================================================================
7. Objects in kkit
Each kkit object has three facets: the computational entity, the icon,
and the edit panel.
The first does the actual work, and takes the form of an instance of a
Genesis object such as a pool, or a reaction, etc.
The icon represents this object and provides
a convenient handle for manipulations.
The edit panel (which pops up on double-clicking the icon) is used to
change values for the computational entity. The edit panel has several
fields which are common to all objects:

Parent:	This is the full path of the parent of the current element.
	It is a read-only field
Name:	The name of the current element. Editable.
Color:	Color of the icon.
NOTES:	There is a text widget for entering notes, and a big NOTES button
	beside it for storing the contents of the widget to the element.
	A common mistake is to forget to click the NOTES button after
	changing the text for the notes.
UPDATE:	This button refreshes the value of the dialogs. It is mainly used
	when the simulation is running, if you want to get an exact
	numerical value for the variables in an element.
HIDE:	Gets rid of the edit panel.

Note that there is only one edit panel for all elements of a given class.
In other words, when you look at the values for two different pools, you
are actually using the same edit panel, just with different values inserted.
This arrangement is nice because it saves memory (imagine having a complete
edit panel stored for each pool in a big model). However, it is annoying
when you wish to look at the values for two or more pools at the same time.
Various solutions to this problem are being considered, and ideas are welcome.

------------------------------------------------------------------
7.1	Object:		Groups

	Computation:
			Groups do not perform any calculations.
			They are the basis for organizing complex models.

	Icon:		A star

	Icon manipulations:
			Moving self and children of group.
			Dragging onto other groups

	Edit panel:	
		- Expanded/Contracted toggle
		This displays / hides the children of the group.
		When contracted the group looks overlaid.

		- Move children.../Move group alone
		The group normally pulls its children along when moved. This
		toggle lets you move the group without disturbing its kids.

		- Initialize all children to current amounts
		This button is useful for models which need to start at
		an equilibrium level which takes a while to attain. Just
		click the 'Initialize' button, once the model has
		equilibrated. Now the 'CoInit' fields are set to the
		equil value, and the model will be equilibrated at reset.
		This button should be used with caution, however. Make sure
		that you have saved the version used to derive the
		equilibrium, in case you wish to change conditions
		later. This is specially applicable to models which
		you later wish to merge, since any change to the model
		will change equilibrium levels.  

		- save_group
		This dialog lets you save the specific group and all its
		children, while leaving the rest of the model alone. The
		save routine attempts to also save all elements which 
		are directly linked to the kids of this group via messages.
		It is recommended that all such linked-in elements be on
		the /kinetics element, rather than on other groups.
------------------------------------------------------------------
7.2	Object:		Pool
	Computation:	Solves the actual differential equations. All
		computations are in terms of 'n', the number of molecules
		of the chemical species. As a useful facility, the
		concentration Co is also computed by dividing n by the volume.
		Note that one usually works out a sensible scaling factor
		to use for the 'volume', so that the units for Co are
		sensible. I typically use micro-molar.
			The pool equations use the _changes_ computed
		by the reacs, enzymes, etc. So the pools are the only
		element in the kinetics code which actually solves
		differential equations. The others provide the rates.
			Pools have numerous other numerical facilities.
		The most important of these is buffering, in which the
		pool does not compute at all, and just stays at the level
		of its nInit. Be warned that buffering and stimulus inputs
		violate conservation of mass in the reaction system,
		because they represent processes not being directly modeled.
			Conservation of mass is normally represented
		implicitly in the differential equations. There is
		provision for explicitly setting up mass conservation,
		but this can be numerically tricky. See section 6.4.
			All computations are carried out using the
		exponential Euler form. This turns out to be remarkably
		efficient and accurate, but is far from the best. There
		is some ongoing work on a fast, accurate solver 'ksolve',
		which will take over the computations in a kinetic model
		in much the same way that the hsolve does in a cell model.

	Icon:		A filled rectangle
	Icon manipulations:
		Moving self
		Dragging onto reacs - hooking up and disconnecting reactions.
		Dragging onto enzymes - hooking up and disconnecting.
		Dragging onto groups - grouping
		Dragging onto other pools - conservation
		Dragging onto other pools - SUMTOTAL. This is used when
			one wishes to have a pool whose level is the sum of
			several others. If one has numerous enzyme isoforms
			with the same activity this is one way to go about
			implementing it.
		Dragging onto graph - plot conc of pool
		Dragging from table or stim: override pool levels by table
			or stim output. Does NOT override buffering, though.
	Edit panel:
		- n fixed, conc changes/ Conc fixed, n changes toggle
		This toggle lets you choose which set of values to treat
		as a reference when changing the volume. It rarely matters
		once the volume is settled.
		- n dialog
		Set/display the current number of molecules of the pool
		- nInit dialog
		Set/display the number of molecules to which pool will be
		initialized, or buffered if buffering is ion.
		- nTotal dialog
		Set/display the total number of molecules (including in
		compounds with other pools) of this species. Used mainly for
		conservation conditions.
		- nRemaining dialog
		nRemaining = nTotal - n
		- Co, CoInit, CoTotal, CoRemaining dialogs
		Equivalents to the corresponding 'n' based dialogs, scaled by
		volume.
		- vol dialog
		Volume to use for scaling Co from n. Co = n / vol
		- Buffering OFF/ Buffering ON toggle
		Toggle for buffering by this pool. Buffering holds the 
		Co/n fixed at CoInit/nInit. It overrides all other inputs
		to pool.



------------------------------------------------------------------
7.3	Object:		Reacs
	Computation:	Computes the product of kf with 'n's for forward
		reactions, and kb with 'n's for backward reactions, and sends
		this info on to the pool for the integration. Higher order
		reactions are somewhat inefficiently represented simply as
		multiple incoming messages for the 'n's.
	Icon:	Bidirectional arrow.
	Icon manipulations: 
		Moving self
		Dragging onto pools for products
		Dragging reactant pools onto reac.
	Edit panel:
		- kf dialog: Forward rate constant
		- kb dialog: Backward rate constant

------------------------------------------------------------------
7.4	Object:		Enzymes
	Computation:
		Consider the Michaelis - Menten formulation of an
		enzymatic reaction:

		Enz + Sub <---k1---k2---> Complex ---k3---> Prd + Enz

		Given the enzyme, substrate, and product pools, this
		could be implemented as two reacs and a pool for the complex.
		The enz object does all this for you, i.e., it represents
		the reacs and the enzyme complex pool. 
		Since the enzyme object only makes sense in conjunction
		with an enzyme pool, we require that it be created on a pool.
	Icon:
		Text on black background.
	Icon manipulations:
		Movement with respect to parent pool. Note that if the pool
			is moved, the enzyme does too.
		Dragging substrates into enzyme
		Dragging enzyme onto products
		Dragging enzyme onto graph to plot CoComplex
	Edit panel:
		- k1, k2, k3 dialogs: rate constants.
		- vol dialog :
			Volume to use as scaling factor to calculate Co from n
		- Enz complex is hidden / Enz complex is available (toggle): 
			In most cases the enzyme complex is a distinct
			molecular species that cannot undergo all the same
			reactions as the free enzyme pool. So the portion of
			the enzyme pool that is bound as complex is 'hidden'
			from other reactions. Occasionally one wishes to
			make the complex form undergo the same reactions as the
			parent pool, hence this toggle.
			Note that the conc of the enz complex is usually
			vanishingly small.

		- nComplex dialog: Number of molecules of the complex
		- nComplexInit dialog: Number of molecules of the complex to
			initialize the enzyme with.
		- CoCompex, CoComplexInit: Same as above 'n' values, scaled by
			vol.
------------------------------------------------------------------
7.5	Object:		Channels
	Computation:
		Calculates concentration gradient and scales by the
		permeability to give flux of molecules through the channel.
		The number of channel molecules is determined by the
		parent pool, so we require that it be created on a pool.
		Note that at this point we do not consider any electrical
		properties of the channel. This development is under 
		consideration.

	Icon:	Figure meant to represent a ligand gated channel
	Icon manipulations:
		Movement with respect to parent pool. Note that if the pool
			is moved, the channel does too.
		Dragging conducted ions to and from channel. 
	Edit panel:
		n dialog: 
		Duplicate of value of n of parent pool.
		perm dialog: Scale factor for permeability.
		gmax : Not currently used.
------------------------------------------------------------------
7.6	Object:		Stims
	Computation:
		Generates repetitive step stimuli. Composite
		object subclassed from the on the pulsegen object.
	Icon:		Lightning bolt.
	Icon manipulations:
		Moving self
		Dragging onto pools for setting up stim
		Dragging onto graph to monitor activity.
	Edit panel:
		Stim width dialog: Specifies duration of 'on' phase of
			stimulus pulse.
		Level uses # units / Level uses concentration units toggle:
			The title says it all
		Baseline level: Specifies level of 'off' phase of stimulus.
		Stim level: Specifies level of 'on' phase of stimulus.
		Interpulse delay: Specifies duration of 'off' phase of pulse.
		Stimlus OFF: click to start / Stimlus ON: click to stop toggle:
			The title says it.
------------------------------------------------------------------
7.7	Object:		Tables
	Computation:
		Reads out a stored waveform for use as a stimulus. The
		waveform can be read in from a file, or specified graphically
		through the edit panel. The waveform can loop, i.e., 
		repeat cyclically, or go through once only. It can
		start at a specified time. Although the waveform values
		are stored in a discrete table, the output is interpolated
		on every timestep so that transitions are smooth.
		Normally 100 data points are available for graphical
		specification, but any number of points can be read in
		from a file in xplot format (x y coords, separated  by spaces,
		1 x y pair per line).
		Assorted scaling operations are also available.
	Icon:	A table, as in furniture. Pun intended.
	Icon manipulations:
		Moving self
		Dragging onto pools for setting up stimulus
		Dragging onto graph to monitor activity.
	Edit panel:
		This is a two-page panel, because there are so many options.
		Page 1:
				Stimulus run options
		Open stimulus waveform options button: pops up the
			waveform page (2).
		Looping disabled/Looping enabled: Toggles whether the
			waveform will be generated once, or cycle when
			finished.
		loop_duration: Specifies the length of the waveform in
			simulation time. No matter how many points the
			table has, it will run through them with this
			duration. Interpolation is used if the time steps
			do not fall exactly on table entries.
		loop_start: Simulation time at which to start generating
			output for the table. For example, if one
			wished to let the model equilibrate for 50 sec
			before delivering a stimulus, one would set this
			value to 50
		Stimlus OFF: click to start / Stimlus ON: click to stop toggle:
			The title says it.
		
				File loading info:
		load_xplot_file: This dialog specifies and reads in
			a file in xplot format for the data points in the
			table.
		skip_lines: This dialog tells the loading routine how
			many lines to skip from the top of the file
			when loading it.
		xdivs: Specifies the number of divisions to allocate for
			the file. The file data will be squashed or
			stretched using interpolation, to fit into exactly
			this number of _divisions_, so the number of
			points = xdivs+1.

		Page 2: 
				Stimulus waveform options
		Open stimulus run options button: pops up the run page (1).
		Graph window: This window is for displaying and editing
			the stimulus waveform. Clicking on the window
			will cause the clicked point to be entered in the
			table. The displayed waveform will change accordingly.
			In addition, the clicked coords are displayed in the
			X1, Y1, X2, Y2 dialogs in the Interpolation options
			section.
		Flat line button: Clears all the data points in the table 
			and sets them to the value in the Baseline level 
			dialog.
		Baseline level: see above.
		Output is #/ Output is conc: This toggle determines whether
			the output value is treated as # of molecules,
			or concentration.

				Interpolation options
		X1: First X coord for steps and interpolation. Normally
			set by the location of the mouse click in the
			graph window. Can be incremented/decremented by
			the adjoining + and - buttons.
		Y1: First Y coord.
		X2: This takes the previous value of X1, every time there
			is a new mouse click. Can also be explicitly set
			from the keyboard, or adjusted using the neighboring
			+ and - buttons.
		Y2: Second Y coord. 
		Step: This button causes all table entries between X1 and X2
			to be filled with the value in Y1.
		Interpolate: This button causes all table entries between
			X1 and X2 to be interpolated between Y1 and Y2.
		Smooth: This is not yet implemented. Someday it will do
			smoothing of the curve in the table.
		
				Scaling options
		General: There are two entities involved in all these
		operations. First, the table itself, which is used in 
		the simulation. Second, the plot used to display it. Normally
		the plot entries are set to the same values as the table
		entries. However, when scaling, the operations are all 
		carried out on the plot only, so as to give the user a 
		chance to reconsider. If you are sure that the waveform
		has been suitably mutated for your needs, then you can
		hit the 'Apply' button to copy the modified entries into the
		table.
		y_scale_factor: Multiplies all Y entries by factor.
		y_offset: adds offset to all Y entries.
		x_scale_factor: Multiplies all X entries in plot by factor.
			When the changes to the plot are applied to the
			original table, then the limits of the table are
			adjusted to match these changes.
		x_offset: Adds offset to all X entries.
			When the changes to the plot are applied to the
			original table, then the limits of the table are
			adjusted to match these changes.
		Log, Exp, Log10, Exp10: Performs the specified operations
			on the Y entries in the table.
		Apply: Write the changes in the plot to the original table.
		Undo: Write the entries from the original table into the
			plot, erasing any changes that may have been made to
			the plot.
------------------------------------------------------------------
7.8	Object:		Plots
	Computation:	Displays and stores simulated values. Can 
			perform compression, slope calculations and scaling
			on the data points.
	Icon:		The name of the plot in the graph window, but nothing
			on the edit window.
	Icon manipulations:
			Dragging to Barney (the delete icon) to delete the plot
			Double-clicking for manipulating the plot.
	Edit panel:
		Compression cutoff: The plot uses lossy compression: it only
			stores data points whose y values differ from the
			last stored value by more than a predefined amount.
			This dialog specifies the amount. It defaults to zero,
			which means no compression. For long simulations,
			it is a good idea to use compression as plots can
			use up enormous amounts of memory.
		Slope calculation mode OFF/ON: This toggles the 'slope' mode
			of plotting. In slope mode, the y values are
			differentiated with respect to time.
				plotval = (y(t) - y(t-1))/dt
		Y Offset: Offsets plot by specified amount in Y axis.
		Y Scale: Scales plot by specified amount in Y axis.
		Save to file: Stores plot data in specified filename. The
			format is
				x1 y1
				x2 y2
				x3 y3
			etc; i.e, one coordinate pair per line separated by
			spaces.

=============================================================================

8. Library of models
A library of 'modules' of signaling pathways developed using kinetikit
are available. These modules include
PKC
MAPK
Ras
Gq
PLC-beta
PLA2
Ca
and many others. Please contact me at bhalla@ncbs.tifrbng.res.in to get
hold of them. They will also make their way onto Babel and the ncbs and
Genesis www sites sometime in 1997.

=============================================================================
9.  Customizing
	The first and main bit of customizing you are likely to do has
to do with the default size of the windows. These are defined in
PARMS.g, with commented out values for common screen sizes.
	Most of the other user-configurable settings are also
in PARMS.g, but are unlikely to be very useful since all the info is
stored when you save a model.

=============================================================================
10. Future plans

10.0	HTML-izing this document

10.1	Embedded modules.

10.2	Merging in with the suite of 'kits' under development.

10.3	Bug reports:
Please send bug reports relating to kinetikit (and only to kinetikit) to

bhalla@ncbs.tifrbng.res.in

I cannot guarantee a quick reply, but I will try to fix things as they
turn up. Please do _not_ send me general questions regarding Genesis and
its installation. These are more appropriately addressed to the Genesis
and Babel addresses:
genesis@bbb.caltech.edu
babel@bbb.caltech.edu


=============================================================================
11. Acknowledgements

This project owes its existence to many people and organizations, of whom I
can only mention a few.

The Aaron Diamond Foundation. Part of this project was developed while I was an
Aaron Diamond Foundation Fellow at Mt. Sinai, and this work was supported
in part by a grant from the Aaron Diamond Foundation.

Ravi Iyengar, my mentor at Mt. Sinai, who encouraged me with this
modeling project while making sure I got my hands wet with experiments, too.

The Genesis development team, for providing the coding foundation, and
specially Dave Bilitch and Dave Beeman, who imposed higher
standards on my compulsively relaxed concept of a 'release' version.

Various alpha testers, including Francis Horber and Bruce Graham, who
provided valuable feedback.

The Linux, XFree86 and GNU projects, for building an amazing free OS on which
much of the development was done.

My wife and son, for quietly/vocally putting up with this distraction from
other responsibilities.

=============================================================================