README for Neocortex simulation. Based on Traub's thalamocortical model:

Traub RD, Contreras D, Cunningham MO, Murray H, LeBeau FE, Roopun A, et al.
Single-column thalamocortical network model exhibiting gamma oscillations,
sleep spindles, and epileptogenic bursts. J Neurophysiol (2005)
93(4):2194-2232. doi:10.1152/jn.00983.2004

Modified from NeoDiffuse provided by Stan Anderson and Pawel Kudela. We removed the 

A modified version of this model was previously used in:

Boothe DL, Yu AB, Kudela P, Anderson WS, Vettel JM and Franaszczuk PJ (2017)
Impact of Neuronal Membrane Damage on the Local Field Potential in a
Large-Scale Simulation of Cerebral Cortex. Front. Neurol. 8:236.
doi:10.3389/fneur.2017.00236

########################################

2015-01-14 11:37
Alfred Yu

There are 23 cell types, with some duplicate subtypes (labeled as a,b,c,d
suffixes). Note that the duplicates are largely, but not always (see
netdefs.g), functionally identical in the current instantiation. So their
division into subtypes is to facilitate potential tweaking.

   P23RSa
   P23RSb
   P23RSc
   P23RSd
   B23FS
   P5IBa
   P5IBb
   P5IBc
   P5IBd
   B5FS
   P6RSa
   P6RSb
   P6RSc
   P6RSd
   C23FS
   C5FS
   ST4RS
   I23LTS
   I5LTS
   TCR
   nRT
   P23FRBa
   P5RSa

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

Here's a flow chart. Embedded blocks are called by their parents.

run_Neocortex: wrapper to do some basic checks on paths, existence of data directory,
MPI details. Calls pgenesis Neocortex.g 

   netparams.g: defining Network cell spacings and numbers
   syncond.g: defining synaptic conductances
      
   celldefs.g: Load cell definitions

      schema to all listed cell types (except TCR/nRT which don't use cell3D):
      include config_neuron/protodefs/{}protodefs.g
         compartments.g
         config_neuron/chan/{}chan.g
      readcell {}cell3D.p /{}
      include config_neuron/synapsedefs/{}_synapsedefs.g

      P23RSa
      P23RSb
      P23RSc
      P23RSd
      B23FS
      P5IBa
      P5IBb
      P5IBc
      P5IBd
      B5FS
      P6RSa
      P6RSb
      IFDEF COLUMNTYPE==0
         P6RSc
         P6RSd
      C23FS
      C5FS
      ST4RS
      I23LTS
      I5LTS
      IFDEF THALAMOCORTICAL==1
         include config_neuron/protodefs/TCRprotodefs.g
         readcell TCRcell.p /TCR // Note: not cell3D
         include config_neuron/synapsedefs/TCR_synapsedefs.g
         include config_neuron/protodefs/nRTprotodefs.g
         readcell nRTcell.p /nRT // Note: not cell3D
         include config_neuron/synapsedefs/nRT_synapsedefs.g
      P23FRBa
      P5RSa

   spikedefs.g: defining SPIKE elements for all somae

   config_neuron/spatiallayout/{}: Define spatial layout for all cells

   //synapticprobsbase.g <- commented in favor of Traub version???
   synapticprobsTraub.g: set Synaptic weight decay parameters and delays

   synapticdelays.g: Defines base synaptic delays and variability (stdev+maxdev)

   axonaldelays.g: Ditto

   netdefs.g: Establish wiring

      General schema:
      include config_neuron_x_neuron/{}_{allother}.g

      Special cases:
      IF COLUMNTYPE==0
         include config_neuron_x_neuron/{}_P6RS[cd].g
      IF thalamocortical==1 (only for P6RS[ab])
         include config_neuron_x_neuron/{}_TCR.g
         include config_neuron_x_neuron/{}_nRT.g
      IF thalamocortical==1 & COLUMNTYPE==0 (only for P6RS[cd])
         include config_neuron_x_neuron/{}_TCR.g
         include config_neuron_x_neuron/{}_nRT.g
      IF thalamocortical==1
         include config_neuron_x_neuron/TCR_{allother}.g
         include config_neuron_x_neuron/nRT_TCR.g
         include config_neuron_x_neuron/nRT_nRT.g
         

   IF GAP==1
      Gapdefs.g: This is a rat's nest of switch statements to determine which synapses
      get gap junctions. It is in dire need of reorganizing IF we ever want to use gap
      junctions. Example:

         include config_neuron_x_neuron/P23RSa_P23RSa_Gap.g
         include config_neuron_x_neuron/P23RSa_P23RSb_Gap.g
         include config_neuron_x_neuron/P23RSa_P23RSc_Gap.g
         include config_neuron_x_neuron/P23RSa_P23RSd_Gap.g

         include config_neuron_x_neuron/P23RSb_P23RSb_Gap.g
         include config_neuron_x_neuron/P23RSb_P23RSc_Gap.g
         include config_neuron_x_neuron/P23RSb_P23RSd_Gap.g

         include config_neuron_x_neuron/P23RSc_P23RSc_Gap.g
         include config_neuron_x_neuron/P23RSc_P23RSd_Gap.g

         include config_neuron_x_neuron/P23RSd_P23RSd_Gap.g
         .
         .
         .

   //synchansSPIKEs.g
   //randominputdefs.g
   LFP5e.g: LFP Calculation from cellular network,taken at specified point.

   IF DISPLAY==1
      (probedices.g|probedicesTraub.g)
      rasterdefspos1.g
      (probedices2.g|probedices2Traub.g)
      rasterdefspos2.g

   IF OUTPUT==1
      LFP5eASCIIwrite.g

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

I'm a little concerned about the conditionals-- even with display=0 the scripts
will crash if they can't find probedices.g, etc. Not sure if the conditional
statements are wrong, or if Genesis evaluates everything even if it's not run.

########################################

2015-03-16 08:47
Alfred Yu

Adjusted z placement to be deterministic even when model is spread over a
different number of computing nodes (merged "improvedrandomheight" branch).

Many other small fixes (see git log).

We are starting to implement long range connections, so I'm cleaning house
prior to merging a large amount of changes. The structure of these changes is
yet to be determined because we're balancing ease of implementation vs. future
flexibility.

########################################

2016-03-21 11:08
Alfred Yu

Implementing long range connections in excitatory cells.

Pyramidal: fully connected to pyramidal and B, C, I cells in other columns

ST4RS: only local connectivity. Rationale: Schubert, Kotter, Zilles, Luhmann, & Staiger (2003).

TCR: I think the outputs are typically very focused onto a corresponding
cortical column (think LGN) so not including any long-range connections other
than the existing within column connections.

########################################
