float baseTauPSC = baseTermination.getTau();
EulerIntegrator integrator = new EulerIntegrator(Math.min(interneuronTauPSC, baseTauPSC) / 10f);
float scale = 1 / interneuronTauPSC; //output scaling to make impulse integral = 1
LinearSystem interneuronDynamics = new SimpleLTISystem(
new float[]{-1f/interneuronTauPSC},
new float[][]{new float[]{1f}},
new float[][]{new float[]{scale}},
new float[]{0f},
new Units[]{Units.UNK}
);
String biasName = baseTermination.getName()+BIAS_SUFFIX;
String interName = baseTermination.getName()+INTERNEURON_SUFFIX;
BiasTermination biasTermination = null;
try {
LinearSystem baseDynamics = (LinearSystem) baseTermination.getDynamics().clone();
biasTermination = new BiasTermination(this, biasName, baseTermination.getName(), baseDynamics, integrator, biasEncoders, false);
} catch (CloneNotSupportedException e) {
throw new StructuralException("Can't clone dynamics for bias termination", e);
}
BiasTermination interneuronTermination = new BiasTermination(this, interName, baseTermination.getName(), interneuronDynamics, integrator, biasEncoders, true);