Skip to content
snigdha edited this page Jun 18, 2015 · 3 revisions

Welcome to the org.neuroml.export wiki!

##Issues :

The Integrate and Fire Neuron Model with refractory period is defined in Cells.xml

<ComponentType name="iafTauRefCell"
        extends="iafTauCell"
        description="Integrate and fire cell which returns to its leak reversal potential of _leakReversal with a time course _tau. It has a refractory period of _refract after spiking">

        <Parameter name="refract" dimension="time"/>

        <Dynamics>
            <StateVariable name="v" exposure="v" dimension="voltage"/>
            <StateVariable name="lastSpikeTime" dimension="time"/>

            <OnStart>
                <StateAssignment variable="v" value="reset"/>
            </OnStart>

            <Regime name="refractory">
                <OnEntry>
                    <StateAssignment variable="lastSpikeTime" value="t" />
                    <StateAssignment variable="v" value="reset" />
                </OnEntry>
                <OnCondition test="t .gt. lastSpikeTime + refract">
                    <Transition regime="integrating" />
                </OnCondition>
            </Regime>

            <Regime name="integrating" initial="true">
                <TimeDerivative variable="v" value="(leakReversal - v) / tau" />
                <OnCondition test="v .gt. thresh">
                    <EventOut port="spike"/>
                    <Transition regime="refractory" />
                </OnCondition>
          <!--<OnEvent port="in">
            <StateAssignment variable="v" value="v + deltaV"/>
          </OnEvent>-->
            </Regime>

        </Dynamics>

    </ComponentType>

The equations generated for this model by BrianWriter are :

iafTauRef_eqs=Equations('''
    dv/dt = 0 * 1/second :  volt
    dlastSpikeTime/dt = 0 * 1/second :  second
''')

This is because of the following piece of code in BrianWriter :

for(StateVariable svar : dyn.getStateVariables())
	{
		String localName = prefix + svar.getName();
		String units = " " + getBrianSIUnits(svar.getDimension());
		if(units.contains(Unit.NO_UNIT)) units = " 1";
		if(!stateVars.contains(localName)) // i.e. no TimeDerivative of
											// StateVariable
		{
			stateVars.add(localName);
			compInfo.eqns.append("    d" + localName + "/dt = 0 * 1/second : " + units + "\n");
		}
	}

The above mentioned error has been corrected. However, the action to be taken when a Regime, OnEntry, OnEvent or Transition is encountered needs to be defined.

Regimes and Refractoriness

Regimes are now added to ComponentFlattener : https://github.com/SnigdhaD/jLEMS/commit/2261e9c99217ece8099bd47cef689beefbd5b405

https://github.com/LEMS/jLEMS/commit/dc9f0e0be0dd423535e031336ae720944af6b4f6

https://github.com/LEMS/jLEMS/commit/82860ba63158b7dea1b8a5a40d2afed05b3b9e78

Changes to BrianWriter to incorporate refractoriness : https://github.com/brian-team/org.neuroml.export/commit/e5cdbcc8397cd390cbe74b26b5158f744bb4f54d

Clone this wiki locally