Pseudocode for the identification of firing pattern elements

 

(i)   IF HAS_DELAY(): add "D."

 

(ii) IF HAS_TSTUT():

If swa > MIN_SWA: add "TSWB."

Else: add "TSTUT."

 

(iii)   RUN_SOLVER_STAT_TESTS()

 

(iv) IF STEADY_STATE_FIRING:

IF HAS_PSTUT():

If swa> MIN_SWA: add "PSWB"

ELSE: add "PSTUT"

 

(v)   IF HAS_SLN(): add "SLN"

 

Function definitions:

HAS_DELAY()

IF fsl > DELAY_FACTOR * ISI_AVG(1,2):

Return TRUE

ELSE:

Return FALSE

 

HAS_TSTUT()

For ISIs i = 2, 3 and 4:

IF ISIi > ISIi-1 * TSTUT_PRE_FACTOR &&

ISIi > ISIi+1 * TSTUT_POST_FACTOR &&

Avg(ISIi:n) > Avg(ISI1:i-1) * TSTUT_PRE_FACTOR &&

Freq(ISI1:i-1) > MIN_TSTUT_FREQ

Return TRUE

IF pss > ISIn * TSTUT_PRE_FACTOR &&

Freq(ISI1:n) > MIN_TSTUT_FREQ &&

swa > MIN_SWA

Return TRUE

 

RUN_SOLVER_STAT_TESTS()

Fit ISIs against their latencies using 1 parameter (Y=c0), 2 parameter (Y=m1X+c1), 3 parameter (Y=m2X+c2, Y=c3) and 4 parameter (Y=m4X+c4, Y=m5X+c5) piecewise linear fits

 

IF NOT significant improvement from 1 parm to 2 parm linear fit:

Add "NASP/STEADY_STATE"

Return

IF NOT significant improvement from 2 parm to 3 parm linear fit:

IF slope > SLOPE_THRESHOLD:

Add "ASP."

ELSE:

Add "NASP"

Return

IF NOT significant improvement from 3 parm to 4 parm linear fit:

Add "ASP."

Add "NASP"

Return

Add "ASP."

Add "ASP."

Return

 

HAS_PSTUT()

ISIi = maximum of ISIs

factor_1 = ISIi/ISIi-1

factor_2 = ISIi/ISIi+1

IF factor_1 + factor_2 > PSTUT_FACTOR

Return TRUE

 

HAS_SLN()

IF pss > SLN_FACTOR * ISI_AVG(n,n-1) &&

pss > SLN_FACTOR * ISI_MAX:

Return TRUE

ELSE:

Return FALSE

 

Abbreviations: ISI - inter spike interval, fsl - first spike latency, pss - post spike silence, swa - slow after hyperpolarizing wave amplitude.

Constants: MIN_SWA = 5mV, DELAY_FACTOR = 2, SLN_FACTOR = 2, TSTUT_PRE_FACTOR=2.5, TSTUT_POST_FACTOR=1.5, PSTUT_FACTOR = 5, SLOPE_THRESHOLD=0.003, MIN_TSTUT_FREQ = 25Hz