<div dir="ltr">Ahh, ok. I didn't pick up the entire context when reading the email thread. I'm not familiar enough with electrical engineering to offer any help with the circuitry, but this simple simulation is an example of the decay Mike was referring to:<div>
<br></div><div><div><br></div><div style><div>// p1-p4 represents photosensor inputs, which each wire to a single neuron</div><div>// (n1-n4). neurons propagate their inputs from left to right, n1->n2->n3->n4</div>
</div><div><br></div><div>var DECAY = 0.5;</div><div>var THRESHOLD = 5;</div><div>var n1 = 0, n2 = 0, n3 = 0, n4 = 0;</div><div><br></div><div>simulate();</div><div><br></div><div>function simulate() {</div><div>  step(1, 0, 0, 0);</div>
<div>  console.log('left-to-right, n4=' + n4);</div><div>  step(0, 1, 0, 0);</div><div>  console.log('left-to-right, n4=' + n4);</div><div>  step(0, 0, 1, 0);</div><div>  console.log('left-to-right, n4=' + n4);</div>
<div>  step(0, 0, 0, 1);</div><div>  console.log('left-to-right, n4=' + n4);</div><div><br></div><div>  n1 = 0; n2 = 0; n3 = 0; n4 = 0;</div><div>  console.log('----');</div><div><br></div><div>  step(0, 0, 0, 1);</div>
<div>  console.log('right-to-left, n4=' + n4);</div><div>  step(0, 0, 1, 0);</div><div>  console.log('right-to-left, n4=' + n4);</div><div>  step(0, 1, 0, 0);</div><div>  console.log('right-to-left, n4=' + n4);</div>
<div>  step(1, 0, 0, 0);</div><div>  console.log('right-to-left, n4=' + n4);</div><div>}</div><div><br></div><div>function step(p1, p2, p3, p4) {</div><div>  // Decay</div><div>  n4 *= DECAY;</div><div>  n3 *= DECAY;</div>
<div>  n2 *= DECAY;</div><div>  n1 *= DECAY;</div><div><br></div><div>  // Add the inputs</div><div>  n1 += p1;</div><div>  n2 += p2;</div><div>  n3 += p3;</div><div>  n4 += p4;</div><div><br></div><div>  // Send inter-neuron signals</div>
<div>  n2 += n1;</div><div>  n3 += n2;</div><div>  n4 += n3;</div><div><br></div><div>  if (n4 >= THRESHOLD)</div><div>    console.log('spike!');</div><div>}</div></div><div><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Tue, Jun 11, 2013 at 12:47 PM, Christoph Maier <span dir="ltr"><<a href="mailto:cm.hardware.software.elsewhere@gmail.com" target="_blank">cm.hardware.software.elsewhere@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Tue, Jun 11, 2013 at 10:59 AM, John Hurliman <<a href="mailto:jhurliman@jhurliman.org">jhurliman@jhurliman.org</a>> wrote:<br>

> It sounds like you are implementing some form of the Rall cable equation<br>
> (<a href="http://www.scholarpedia.org/article/Rall_model" target="_blank">http://www.scholarpedia.org/article/Rall_model</a>) to model signal decay? I<br>
> don't have any code off-hand, but both of the neuroscience Coursera classes<br>
> I'm taking right now (<a href="https://class.coursera.org/bluebrain-001" target="_blank">https://class.coursera.org/bluebrain-001</a> and<br>
> <a href="https://class.coursera.org/compneuro-001" target="_blank">https://class.coursera.org/compneuro-001</a>) covered this. Particularly, the<br>
> video "Dendritic computation"<br>
> (<a href="https://class.coursera.org/bluebrain-001/lecture/115" target="_blank">https://class.coursera.org/bluebrain-001/lecture/115</a>). I'm not sure if the<br>
> videos are accessible unless you enroll in the class though.<br>
<br>
</div>I really don't know what the birds are called that I'm trying to put<br>
together ... for now, I call them "fireflies".<br>
As for Coursera, I'm just downloading a lot of courses without really<br>
trying to digest them yet, including the bluebrain one.<br>
i find <a href="https://github.com/jplehmann/coursera/" target="_blank">https://github.com/jplehmann/coursera/</a> a helpful tool for that.<br>
<div class="im"><br>
> You might try posting to the openworm-discuss mailing list, since many of<br>
> the devs there have been experimenting with a variety of neuron simulators<br>
> and might be able to point you to some working code.<br>
<br>
</div>I'm trying to do this in hardware, with about 4 transistors and a<br>
handful of passives (where the unknown one is the photosensor I'm<br>
asking about),<br>
so the working code would be the relative positioning of the<br>
4-transistor units, and the regions of sensitivity of the photosensors<br>
[hence the question]<br>
<div class="HOEnZb"><div class="h5"><br>
> On Tue, Jun 11, 2013 at 9:34 AM, Mike Schachter <<a href="mailto:mschachter@eigenminds.com">mschachter@eigenminds.com</a>><br>
> wrote:<br>
>><br>
>> Also cc'ing this discussion to the neuro and ML lists, there are might be<br>
>> people there that could help with the problem.<br>
>><br>
>>  mike<br>
>><br>
>><br>
>><br>
>> On Tue, Jun 11, 2013 at 9:25 AM, Mike Schachter<br>
>> <<a href="mailto:mschachter@eigenminds.com">mschachter@eigenminds.com</a>> wrote:<br>
>>><br>
>>> I suppose the basic idea is to create a chain of integrate-and-fire<br>
>>> neurons.<br>
>>><br>
>>> Referring to the attached diagram, each neuron gets input from it's own<br>
>>> photosensor, and from the neuron to the left of it. You will also have to<br>
>>> make it so that the signal from the photosensor to neuron *decreases* as you<br>
>>> move right on the chain.<br>
>>><br>
>>> The general idea is that movement to the right makes each neuron spike,<br>
>>> which sends a spike to the neighboring neuron. If the inputs are timed right<br>
>>> (which is probably the most tricky part), each successive neuron will spike<br>
>>> more and send more input to it's neighbors. The last neuron, the readout<br>
>>> neuron, will spike the most. You can look at the spike rate of the last<br>
>>> neuron, and if it's high enough, then you declare movement to the right. The<br>
>>> number of spikes of the last neuron could even be related to the velocity of<br>
>>> the movement.<br>
>>><br>
>>> Movement to the left shouldn't elicit a single spike from the readout<br>
>>> neuron.<br>
>>><br>
>>> Another option might be to build a Reichardt correlator:<br>
>>><br>
>>> <a href="http://people.csail.mit.edu/rondror/Ronfiles/Research/reichardt.htm" target="_blank">http://people.csail.mit.edu/rondror/Ronfiles/Research/reichardt.htm</a><br>
>>><br>
>>> mike<br>
>>><br>
>>><br>
>>><br>
>>> On Mon, Jun 10, 2013 at 11:46 PM, Christoph Maier<br>
>>> <<a href="mailto:cm.hardware.software.elsewhere@gmail.com">cm.hardware.software.elsewhere@gmail.com</a>> wrote:<br>
>>>><br>
>>>> On Mon, Jun 10, 2013 at 5:49 PM, Mike Schachter<br>
>>>> <<a href="mailto:mschachter@eigenminds.com">mschachter@eigenminds.com</a>> wrote:<br>
>>>> > Oh ok! Well I'd be happy to help Chris with code to do<br>
>>>> > directional-selection<br>
>>>> > given data from an array of photo-sensitive inputs if that would be<br>
>>>> > useful.<br>
>>>> ><br>
>>>> >  mike<br>
>>>> ><br>
>>>> ><br>
>>>> ><br>
>>>> > On Mon, Jun 10, 2013 at 5:20 PM, Norman <<a href="mailto:pryankster@gmail.com">pryankster@gmail.com</a>> wrote:<br>
>>>> >><br>
>>>> >> Mike, that is exactly how a phased array works.<br>
>>>> >><br>
>>>> >> Norman<br>
>>>> >><br>
>>>> >><br>
>>>> >> On 6/10/2013 5:07 PM, Mike Schachter wrote:<br>
>>>> >><br>
>>>> >> Can you just get an array of non-directional photosensors and do the<br>
>>>> >> direction-selectivity computationally on an arduino or something?<br>
>>>> >><br>
>>>> >>  mike<br>
>>>><br>
>>>> Great!<br>
>>>> Just tell me how to put code into this kind of computer ...<br>
>>>> <a href="http://pony.noisebridge.net/~cmaier/neuromorphic/BIL2011/html/img10.html" target="_blank">http://pony.noisebridge.net/~cmaier/neuromorphic/BIL2011/html/img10.html</a><br>
>>><br>
>>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> ml mailing list<br>
>> <a href="mailto:ml@lists.noisebridge.net">ml@lists.noisebridge.net</a><br>
>> <a href="https://www.noisebridge.net/mailman/listinfo/ml" target="_blank">https://www.noisebridge.net/mailman/listinfo/ml</a><br>
>><br>
><br>
</div></div></blockquote></div><br></div>