The GENESIS distribution contains a large number of predefined element types, known as ``objects''. These are the templates from which simulation elements may be created. This terminology can be somewhat confusing, because a GENESIS object is similar to what object-oriented languages such as Java or C++ call a ``class'', and a GENESIS element corresponds to an ``object'' in these languages. Elements are created as instantiations of a particular object.
An object contains specification information needed to construct a particular type of element. The information contained in a object are the functions needed to create and simulate this type of element, and its data structure, as well as the messages that it can receive, and the actions that it can perform. The documentation on Actions gives more information about GENESIS actions. Objects can also contain additional information such as a description of the object and its data fields, and the author of the object. Information about a particular object can be displayed using the showobject command.
The following objects are currently available within GENESIS:
Object | Description |
neutral | Empty object used for grouping, or basis for an extended object |
Membrane Objects:
Object | Description |
compartment | Axially asymmetric compartment; Ra is located on one side |
symcompartment | Like compartment, with Ra divided into two equal components |
unit | An isolated compartment that receives INJECT messages |
Channel/Gate Objects:
Object | Description |
Kpores | K channel with Markovian (stochastic) kinetics |
Mg_block | Provides voltage and [Mg]-dependent blocking of a channel |
Napores | Na channel with Markovian (stochastic) kinetics |
ddsyn | Modified synchan for dendrodendritic synapses |
facsynchan | Like synchan, with synaptic facilitation and/or depression |
hebbsynchan | Like synchan, with Hebbian modification of weights |
hh_channel | Voltage dependent conductance using Hodgkin-Huxley parameters |
leakage | Passive ``leakage'' channel with constant conductance |
manuelconduct | Implements Perkel's receptor-mediated conductance model |
synchan | Synaptically activated channel with presynaptic weights/delays |
synchan2 | Same as synchan; for backwards compatibility |
tab2Dchannel | Channel with 2-D tables, e.g. for dependence on Vm and [Ca] |
tabchannel | Hodgkin-Huxley type channel with tabulated parameters |
tabcurrent | Tabulated non-ohmic ion current; also solves GHK equation |
tabgate | Gate with tables for alpha/beta rate variables |
vdep_channel | H-H channel; gets activation gate values from other elements |
vdep_gate | Gate with Hodgkin-Huxley parameters for rate variables |
Ion Concentration Objects:
Object | Description |
Ca_concen | Calculates ion concentration from current |
concpool | Concentration pool without diffusion |
difbuffer | First order diffusible buffer; constant total concentration |
dif2buffer | First order diffusible buffer; variable total concentration |
difshell | Concentration shell with one-dimensional diffusion |
fixbuffer | First order fixed (non-mobile) buffer |
fura2 | Computes fura2 fluorescence in a single difshell |
ghk | Calculates the Goldman-Hodgkin-Katz (constant field) equation |
hillpump | Variation of Michaelis-Menten store pump |
mmpump | Models a Ca-ATPase pump obeying Michaelis-Menten kinetics |
nernst | Calculates Nernst potential from concentration and temperature |
taupump | Simple pump with a variable time constant of removal |
When it is necessary to provide a more detailed model of variations of calcium concentration within a compartment, the difshell is used to divide the compartment into a number of shells and to model diffusion between them. It is typically coupled to buffers and/or pumps. The concpool provides a single shell model of a "well-mixed" concentration pool without diffusion between shells. As it can also couple to buffers and pumps, it provides for multiple mechanisms for calcium removal.
The buffers (e.g., fixbuffer) interact with a difshell or concpool to model the binding of calcium to buffer molecules and to calculate the concentrations of free and bound buffer molecules, using a kinetic scheme with forward and backward rate constants for the binding and release of calcium. Diffusible (mobile) buffers are modeled with the difbuffer and dif2buffer objects, which also provide for the diffusion of buffer molecules (carrying bound calcium) between buffers. The ionic pumps provide various mechanisms to remove ions from the shell.
Miscellaneous Neural Objects:
Object | Description |
hsolve | Implements Hines method for fast implicit solution of DEs |
randomspike | Generates random spike events |
receptor | Olfactory receptor-gives activation from weighted sum of odors |
receptor2 | More realistic implementation of receptor |
site | Simple synaptic transformation that maps input to current |
spikegen | Generates a spike when input crosses a threshold |
Obsolete objects used with GENESIS 1 axonal connections:
axon | axonlink | channelA | channelB |
channelC | channelC2 | channelC3 | defsynapse |
random | synapse | synapseA | synapseB |
spike | |||
Miscellaneous Objects:
Object | Description |
graded | undocumented buffer object - obsolete ??? |
linear | undocumented buffer object - obsolete ??? |
passive_buffer | undocumented buffer object - obsolete ??? |
periodic | undocumented buffer object - obsolete ??? |
playback | Updates its state from a pre-filled buffer |
script_out | Executes a script function at each simulation step |
sigmoid | Computes the sigmoidal transformation of the input |
table | 1-D table with various modes for output of contents |
table2D | Has an internal 2-D table, with interpolation |
Device Objects:
Object | Description |
PID | Proportional, Integral, Derivative feedback controller |
RC | A resistance R, shunted by a capacitance C |
autocorr | Calculates histograms of auto-correlations |
calculator | Adds, subtracts, multiplies, and divides using messages |
crosscorr | Calculates histograms of cross-correlations |
diffamp | Difference amplifier-output proportional to input difference |
efield | Extracellular field potential recording electrode |
event_tofile | Records event times; e.g spikes or threshold crossings |
expthresh | undocumented - obsolete ??? |
freq_monitor | Calculates running event (spike) frequency |
funcgen | Function generator (sine, square, triangle, constant) |
interspike | Generates an interspike interval histogram |
peristim | Generates a peristimulus spike histogram |
pulsegen | Pulse generator that can generate a variety of patterns |
timetable | A table of time values for change of synaptic activation |
Input/Output Objects:
Object | Description |
asc_file | Clocked write of data to a file in ASCII format |
disk_in | Reads in a 2-d array of data from an ascii or binary file |
disk_out | Clocked write of data to a file in binary format |
diskio | Similar to disk_in/disk_out with portable binary NETCDF format |
metadata | Used with diskio to read/write descriptive content |
par_asc_file | Variation of asc_file for use with parallel GENESIS |
par_disk_out | Variation of disk_out for use with parallel GENESIS |
print_out | undocumented - obsolete ??? |
res_asc_file | Like asc_file, for changes outside a given range |
spikehistory | Outputs neuron ID and spike times to an ascii file |
variable | Used with diskio to read/write binary data |
Object | Description |
concchan | Handles 1-D diffusion of molecules across a membrane |
enz | Handles Michaelis-Menten enzyme kinetics with pool object |
pool | A concentration pool used in kinetic reactions |
reac | Handles standard kinetic reaction schemes with pool object |
Object | Description |
paramtableBF | Implements "brute-force" parametersearch |
paramtableCG | Implements conjugate-gradient descent parameter search |
paramtableGA | Implements genetic algorithm parameter search |
paramtableSA | Implements simulated annealing parameter search |
paramtableSS | Implements stochastic parameter search |
Object | Description |
xaxis | Makes axis for plots -- automatically created by xgraph |
xbutton | A button which executes script actions from mouse clicks |
xcell | Similar to xview, but specialized for compartmental cell display |
xcoredraw | The core class from which other draw widgets are subclassed |
xdialog | A dialog box containing a text string |
xdraw | Main object class for the display of pixes, with transforms |
xdumbdraw | Simple example window for the display of pixes |
xfastplot | High-speed graphic display similar to an oscilloscope |
xform | The window containing other graphical elements |
xgif | Draws GIF format images as a pix inside a draw |
xgraph | Specialized draw widget for the display of plots |
ximage | Displays a GIF format bitmapped image inside a form |
xlabel | Rectangular label containing a text string |
xpix | Basic object for drawing graphical objects (pixes) in 3-D space |
xplot | Displays plots within a graph -- created by messages to xgraph |
xshape | Pix used for drawing shapes -- often used for icons |
xsphere | Example pix which draws a filled circle |
xtext | A widget for the display and editing of text |
xtoggle | Maintains toggle state and executes actions from mouse clicks |
xtree | Displays and manipulates elements and their messages |
xvar | Uses shapes to display numerical values with color, size, etc. |
xview | Like an array of xvars, displaying multiple points in 3-D space |
The GENESIS routines used to establish and work with objects include the following. (Remember: the following routines refer to these element types in general, not specific instantiations of these objects).
Routine | Description |
getdefault | Returns the default value of an object field |
listactions | Lists the actions which are defined for GENESIS objects |
listclasses | Displays list of currently defined element classes |
listobjects | Lists the available objects |
setdefault | Sets the default value of an object field |
showobject | Displays description of a specified object |
In addition, there are a number of routines that are used in the specification and creation of Extended Objects. To compile a new object into GENESIS, see Customizing GENESIS.