{ "metadata": {}, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from architecture_further_formulas import *" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
lateralInhibition
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def lateralInhibition(ADDSObj, timeAndRefrac, latInhibSettings):\n", "\t# Activate lateral inhibition upon a spike to inhibit other neurons from spiking. As brian's \n", "\t# Inhibition inhibits before dend input can increase the signal to balance things out.\t\n", "\ttNorm = timeAndRefrac.time - (floor((timeAndRefrac.time/.001)*.01) * .1)\n", "\tpreliminaryV = [None]*dictionaryLongitude\n", "\tgreatestMembraneVoltage = 0.0\n", "\tgreatestNeuronNumber = None\n", "\tneuronNumberFired = None\n", "\tneuronNumberAboutToFire = None\n", "\t\n", "\tfor neuronIndex in range(dictionaryLongitude):\n", "\t\tpreliminaryV[neuronIndex] = ADDSObj.prelimV[neuronIndex]\n", "\tfor neuronIndex in range(dictionaryLongitude):\n", "\t\tfor neuronIndex2 in range(len(preliminaryV)):\n", "\t\t\tif (neuronIndex != neuronIndex2) and (preliminaryV[neuronIndex2] >= greatestMembraneVoltage): \n", "\t\t\t\tgreatestMembraneVoltage = preliminaryV[neuronIndex2]\n", "\t\t\t\tgreatestNeuronNumber = neuronIndex\n", "\t\t\tif ADDSObj.UmSpikeFired[neuronIndex2] == 1*mV: neuronNumberFired = neuronIndex2\n", "\n", "\t\tif (greatestMembraneVoltage >= (10*mV)) and (neuronNumberFired == None):\n", "\t\t\tlatInhibSettings.voltageForInhibition = greatestMembraneVoltage - (10*mV)\n", "\t\t\tneuronNumberAboutToFire = greatestNeuronNumber\n", "\t\t\tlatInhibSettings.inhibitionReduction = 1.0\n", "\t\telif (greatestMembraneVoltage < (10*mV)) and (neuronNumberFired == None): \n", "\t\t\tlatInhibSettings.voltageForInhibition = greatestMembraneVoltage\n", "\t\telse:\n", "\t\t\tlatInhibSettings.voltageForInhibition = 70*mV#(70*mV/latInhibSettings.inhibitionReduction)\n", "\t\t\tif latInhibSettings.inhibitionReduction < 150: latInhibSettings.inhibitionReduction += 0.01\n", "\n", "\t#print 't\\t',ADDSObj.t,'preliminaryV\\t',preliminaryV,'ADDSObj.prelimV\\t',ADDSObj.prelimV\n", "\n", "\tfor neuronIndex in range(dictionaryLongitude):\t\t\n", "\t\tif neuronIndex != neuronNumberAboutToFire and neuronIndex != neuronNumberFired:\n", "\t\t\tpreliminaryV[neuronIndex] -= abs(latInhibSettings.voltageForInhibition)\n", "\t\t\tADDSObj.v[neuronIndex] = preliminaryV[neuronIndex]\n", "\n", "\t#print 'latInhibSettings.voltageForInhibition\\t',latInhibSettings.voltageForInhibition\n", "\t#print 'ADDSObj.v\\t',ADDSObj.v\n", "\n", "\treturn ADDSObj.v, latInhibSettings" ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }