# [Neuro] [ml] [Noisebridge-discuss] Technical question: Directionally sensitive photosensors

John Hurliman jhurliman at jhurliman.org
Tue Jun 11 20:45:07 UTC 2013

```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:

// p1-p4 represents photosensor inputs, which each wire to a single neuron
// (n1-n4). neurons propagate their inputs from left to right,
n1->n2->n3->n4

var DECAY = 0.5;
var THRESHOLD = 5;
var n1 = 0, n2 = 0, n3 = 0, n4 = 0;

simulate();

function simulate() {
step(1, 0, 0, 0);
console.log('left-to-right, n4=' + n4);
step(0, 1, 0, 0);
console.log('left-to-right, n4=' + n4);
step(0, 0, 1, 0);
console.log('left-to-right, n4=' + n4);
step(0, 0, 0, 1);
console.log('left-to-right, n4=' + n4);

n1 = 0; n2 = 0; n3 = 0; n4 = 0;
console.log('----');

step(0, 0, 0, 1);
console.log('right-to-left, n4=' + n4);
step(0, 0, 1, 0);
console.log('right-to-left, n4=' + n4);
step(0, 1, 0, 0);
console.log('right-to-left, n4=' + n4);
step(1, 0, 0, 0);
console.log('right-to-left, n4=' + n4);
}

function step(p1, p2, p3, p4) {
// Decay
n4 *= DECAY;
n3 *= DECAY;
n2 *= DECAY;
n1 *= DECAY;

n1 += p1;
n2 += p2;
n3 += p3;
n4 += p4;

// Send inter-neuron signals
n2 += n1;
n3 += n2;
n4 += n3;

if (n4 >= THRESHOLD)
console.log('spike!');
}

On Tue, Jun 11, 2013 at 12:47 PM, Christoph Maier <
cm.hardware.software.elsewhere at gmail.com> wrote:

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