This is a summary of the changes which I (Dave Beeman) have made to neurokit.
(May 1992 - August 1993)
===========================================================================
(May 1992) changes which were incorporated into the GENESIS 1.4 release:

---------------------------------------------------------------------------

README:  I've cleaned it up a bit clarifying some things which I felt to be
ambigous or confusing, and made a few corrections.  A version number (1.4,
to go along with GENESIS 1.4) has been provided.  In order to eliminate
confusion, it now refers to the Neurokit program as "Neurokit", rather than
"NEURON".

---------------------------------------------------------------------------

Neurokit.g: This is a copy of the main script, "NEURON.g".  (NEURON.g will be
kept around until the old name has fallen into disuse.  It is a short file,
so there is little point in using a symlink to make an alias.)

---------------------------------------------------------------------------

xtitle.g:

The file for the xtext ({help_form}/text) was changed from
../neurokit/README to {user_help}.  defaults.g now sets user_help =
"../neurokit/README".  This lets you specify your own help file in the
"usrprefs.g" file.  This also deals with the problem of the error message if
your directory is not a sibling of "neurokit".

xtitle.g/choose_cell:
before setting draw/cell path, set {cellw} autofat TRUE
after setting draw/cell path, set {cellw} autofat FALSE

This prevents the fatmin/fatmax fields from being set to something
nonsensical when the fieldpath is set to a channel.

---------------------------------------------------------------------------

defaults.g:

As mentioned above, it now sets user_help = "../neurokit/README".

The variable "table" was changed to "gate" in the definitions of the
functions tweak_tabchan, tau_tweak, setup_tabchan, and setup_tabchan_tau.
This purely cosmetic change was introduced to avoid confusion, as the X, Y,
and Z fields are called "gates" and the fields X_A, Y_B, etc. are called
"tables".  Also, setup_tabchan and setup_tabchan_tau were simplified along
the lines of Erik's faster version which correctly does the table filling
without calls to setup_table3 and the tweaking functions.

Upi's check for X initialization was added to the "setpostscript" calls.

Although user_fatfix1/2 are ignored in the current version of neurokit,
they are set to 1, in order to agree with the way they are initialized:
user_fatfix1 = 1
user_fatfix2 = 1

For centering of the cell within the draw widget, new user variables
have been added:

        float user_cx = 0.0
        float user_cy = 0.0
        float user_cz = 0.2e-3


------------------------------------------------------------------------

xout_funcs.g/scalecell:  changes made to insure that the autofat/fatfix
toggle labels agree with the initial state

    create xtoggle autofat [1%,3,48%,20] \
        -widgets [NULL,autocol.bottom,NULL,NULL] -state 0
(was -state 1)

    set fatfix label0 "Fatfix OFF" label1 "Fatfix ON" state 1

(This causes the "Fatfix ON" label to be displayed.  "label1" is not
displayed if the state is set at the time the xtoggle widget is created.)

xout_funcs.g/do_xout: after creating the draw widget, set

	cx {user_cx} cy {user_cy} cz {user_cz}

---------------------------------------------------------------------------

xselect.g/do_xselect_funcs: as with xout_funcs.g/do_xout, set the
/compt_select/draw fields to use the user variables.

    set ^ wx {user_wx} wy {user_wy} cx {user_cx} cy {user_cy} cz {user_cz}

(compt_select previously ignored user_wx and user_wy)
---------------------------------------------------------------------------

xchannel_funcs.g:

The value of the "gate" dialog is initialized to "X" instead of "m", to go
better with tabchannels and hh_channels.

------------------------------------------------------------------------
xcompt_funcs.g:

Removed incorrect factor of 2.0 in "calc_len" at line 63.

xcompt_funcs.g/set_dia(widget):
Added "set {comptpath} dia {dia}" so that the new diameter field will be set,
as well as Rm, etc.  set_dia indirectly calls calc_dia via
update_compt_params.  Before the "dia" field was added to compartments,
calc_dia used Rm and len to get the diameter, so the new diameter was
calculated.  Now it gets it from the compartment "dia" field, which was not
set in set_dia.)

------------------------------------------------------------------------

xrun.g:

Added statements to function setdt in order to change the number of steps
performed ("nstep") when "clock" (dt) is changed.  This keeps "runtime"
constant.

xrun.g/remplot:

In order to properly remove current injection with "Remove all physiology
probes", added "/" after "{cellpath}" in the statements

foreach name ({element_list({cellpath}/##[TYPE=symcompartment])})
foreach name ({element_list({cellpath}/##[TYPE=compartment])})

xrun.g/update_inject:
Added message to state that injection value was changed

------------------------------------------------------------------------
prototypes:

Added traub91chan.g - This implements the new 1991 Traub set of CA3 channels.
As it is also intended to be used with a tutorial as an example of the use
of the tabchannel and vdep_channel objects to implement concentration
dependent channels, it has extensive comments.

Corrected yamadachan.g to add 'sendmsg4  ".. mgate VOLTAGE Vm"' to
Ca_bsg_yka environment.

Updated "LIST" to show the new channels in traub91chan.g; removed some extra
tabs and spaces

NOTE: there is a rumored error in the BSFchab.g Na channel (not fixed)

------------------------------------------------------------------------

Unfinished business:

For ver 1.4, I need to set rooticon to "none" in xout_funcs.g/do_xout
(Done in ver 1.4 neurokit)

Check out Fellous' NewYamadachan.g and replace yamadachan.g if it looks OK?
[It makes use of his own objects which may have some problems.  It will not
be included in the 1.4 distribution.]

There are still some bugs which seem to be inherent in xcell.  (Fixed by
Upi?)

1) "colfix ON" does not prevent the color of compartments from changing with
   Vm. (Still a problem)

2) The scaling of the compartment diameter for the cell representation is
   messed up if the fieldpath is a channel or other element which does not
   have a "dia" field.  This is true, even if "fieldpath" is changed from a
   compartment while fatfix is TRUE. (fixed by Upi)

Other bugs which I've tracked down, but which aren't worth fixing at this
time:

3) user_fatfix is ignored. (No big deal - it should initially be TRUE.)

4) Although user_colfix is used, the toggle isn't properly initialized if
user_colfix = 1.  This shouldn't be hard to fix, but colfix doesn't seem to
work anyway.

5) There is code to calculate "user_symcomps" so that it shouldn't have to
be set in userprefs.  However, the default value is used in a critical place
before this calculation.  It would require rewriting and reorganization of
do_cell_load and choose_cell (in xtitle.g) to fix this.

6) When going back to a previously loaded model (by entering its name in the
"Selected cell name" dialog") you can't change its injection current from
the old value without re-planting an injection electrode.  Similarly,
the ELECTROPHYSIOLOGY toggle states are messed up.  If it was in Iclamp mode,
before selecting a different cell, it will go into SynSpike mode, but the
toggle lable wil show "Recording"!

7) When changing between one and two cell windows, the displayed
electrophysiology mode changes from "Recording" to SynSpike (although the
toggle label does not change).  This is likely related to the previous bug.

8) The Vclamp injection does not work when using the hsolve methods. (Methods
10 and 11.)  Although the PID is sending an INJECT message to the soma
compartment, it has no effect.  This is because new messagesa re ignored,
once the hsolver is set up.

9) The "field" dialog for the graph scale doesn't work as advertised.  (You
can step through the fields with a mouse click or "Return", but can't enter a
value directly.)

10) "Remove all physiology probes" gives an error message and doesn't remove
"Syn rand" activations.  This is because "remplot" incorrectly uses "delete
/stimulus/axon:0".  However, "delete_connection" requires a specific target
name, and can't use wildcards.  This may not be easy to fix, and should wait
until the new GENESIS 2.0 implementation of connections.

11) After loading a cell, one gets the (harmless, but annoying) warnings:
	variable 'widgets' not known - skipping
	variable 'widgets' not known - skipping
(fixed in GENESIS 1.4)

12) (A "feature", not a bug.)  Selecting "new_colors" for a graph changes
all recording electrodes to the same new color, making it difficult to
distinguish between multiple plots.  (This option would be less necessary if
the available colors were "pruned" to eliminate pale yellow and some of the
colors which are very similar to each other.)

===========================================================================
The above changes were incorporated into the GENESIS 1.4 release version

Additional changes made in Feb 1993 for "edit channel" were incorporated
into the GENESIS 1.4.1 distribution.  (August 1993)

Changes were made to xchannel_funcs.g to allow use of "scale_tabchan" to
independently modify alpha.beta, tau, minf.

Also made some changes to olf/new_interp.c, to allow this to work.  (See
new_interp.changes) Upi fixed bugs in tab_dup_func, and I made the following
changes to ScaleTabchan:

(1) cosmetic changes to call the second argument "gate" instead of "table"
(2) change in the way the index "j" is computed.  This makes ox and sx
    behave in a way which is consistent with setting these fields using
    scale_table.  (However, as before, ScaleTabchan modifies table values
    instead of changing xmin and xmax.)
(3) Return with error for sx <= 0.  (sx = 0 would cause a divide by zero.)
(4) Fixed bug which kept it from working with tabgates.  In order to use the
    same code for scaling, the tabgate "beta" table is temporarily changed
    to alpha + beta.  As before, it is changed back after scaling.

2/5/93

function do_xchannel_funcs:

Add buttons to modify alpha, beta, tau, minf.  These invoke "scale_gate
alpha", etc.  The dialogs for sx, sy, ox, oy no longer invoke this function.
"push" and "pop" were added, instead of "ce".  A "Dup Gate" button was added
to invoke "dup_gate", which uses the GENESIS "duplicate_table" function.

function scale_gate:

was modified to take a "mode" argument (alpha, beta, tau, or minf).  The
mode, instead of the state of an alpha/beta toggle is used to select what
will be modified by the scaling and offset parameters.

For tabchannels, scaling was done with

                gate = get(/channel_params/gate,value)
                scale_tabchan {channelpath} {gate} {mode} {sx} {sy} {ox} {oy}

For tabgates,

                gate = {channelpath} + "/" + {get(/channel_params/gate,value)}
                scale_tabchan {gate} {gate} {mode} {sx} {sy} {ox} {oy}


Added "do_plot_kinetics /channel_params/gate" after making changes, so that
they will be seen.  (Otherwise, the user might be tempted to click the MODIFY
buttons again!)  This change requires "function scale_gate" to be moved to
the end of the script, after "do_plot_kinetics".

function dup_gate:

similar to "scale_gate", but calls "duplicate_table {channelpath} {gate}"
for tabchannels and "duplicate_table {gate} {gate}" for tabgates.  (The
second argument is unnecessary for tabgates.)

2/15/93

Added a button for "Restore", but the function has not yet been implemented.

---------------------------------------------------------------------------
YET TO DO -

Implement "Restore" - There will be some problems with this:

1) There is a bug in tools/cell_parser.c do_paste_channel prevents
paste_channel from working with vdep_channels (see paste_channel.corr)

2) A "feature" in Neurokit causes a channel paste to use the recently
modified version, not the original library version.  I need to either
make extensive changes in Neurokit, or make my own "restore_chan" function
in Neurokit.  I'm saving this for later.  (see select.bugs)

---------------------------------------------------------------------------
August 17, 1993

Revised README, added CHANGES (this file)

neurokit/prototypes:
  revised LIST to include added prototypes
  added LIST.description, thalchan.g
  traub91chan.g uses newer syntax, but is equivalent to old
  ASTchan.g - many changes, additions and corrections to 1.4 version, 

Not done: replace bulbchan.g with newer version from jneurophys.jun93.
