Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connection of ports between any Components #46

Open
ajc158 opened this issue Oct 31, 2014 · 6 comments
Open

Connection of ports between any Components #46

ajc158 opened this issue Oct 31, 2014 · 6 comments

Comments

@ajc158
Copy link

ajc158 commented Oct 31, 2014

I some circumstances it is useful to connect ports between any pairs of Components. One example is a Dopamine source that is global to the model, but can influence plasticity in several synapses.

Do we want this? It will make implementation more difficult...

@tclose
Copy link
Contributor

tclose commented Mar 26, 2015

Would this be the same as a Projection from two Selection objects (each possibly containing only 1 cell)?

@tclose
Copy link
Contributor

tclose commented Mar 26, 2015

Ah, I see the connection is onto the synapse. Could we perhaps allow Projections from Populations onto Projections, with the meaning that the "destination" is the synapse model (which is the combined plasticity and post-synaptic response if we accept #88)

@ajc158
Copy link
Author

ajc158 commented Mar 26, 2015

I would be against this, as it becomes an unimplementable nightmare if a
user wants to then connect a projection to that new projection, then a
projection to that projection, and so on. It is better to draw a clean
line and say projections must be between Populations and Selections (in
which case Selections must not contain anything but neurons...)

On 26 March 2015 at 05:39, Tom Close notifications@github.com wrote:

Ah, I see the connection is onto the synapse. Could we perhaps allow
Projections from Populations onto Projections, with the meaning that the
"destination" is the synapse model (which is the combined plasticity and
post-synaptic response if we accept #88
#88)


Reply to this email directly or view it on GitHub
#46 (comment).

Alex Cope
Research Associate
Behavioural and Evolutionary Theory Lab
Department of Computer Science, University of Sheffield
www.alexcope.co.uk

@tclose
Copy link
Contributor

tclose commented Mar 26, 2015

As long as there aren't circular references (which of would have to be invalid) it shouldn't be too difficult to resolve should it?

I agree that it is a little messy but then what you are asking to be able to do is a bit out there in terms of typical models.

@tclose tclose added the Priority label Apr 1, 2015
@NineML-Committee
Copy link
Contributor

The Committee decided that the solution to this issue and additionally to the issue of Hierarchical Components is a NineML Core comprising only the simplest network primitives. These are:

ComponentArray:
A ComponentArray is an instantiated array of Components.

<ComponentArray name="">
 <Size>X</Size>
 <Prototype>
  <Reference url="">AComponentName</Reference>
 </Prototype>
</ComponentArray>

ConnectionGroup:
A ConnectionGroup describes a connection between an output port on one ComponentArray and an input port on another ComponentArray. A delay can be specified for each element of the connection or globally for all elements. The data type of the connection is inferred from the source and destination ports (i.e. if the ports are Event or Analog ports).

<ConnectionGroup>
 <Terminus>
  <Reference>AComponentArrayName</Reference>
  <AnalogPortConnection sender="APort" receiver="AnotherPort"/>
  <EventPortConnection sender="BPort" receiver="BnotherPort"/>
 </Terminus>
 <Terminus>
  <Reference>AnotherOrTheSameComponentArray</Reference>
  <AnalogPortConnection sender="APort2" receiver="AnotherPort2"/>
  <EventPortConnection sender="BPort2" receiver="BnotherPort2"/>
</Terminus>
<ConnectionList>
 <One of ExplicitList, OneToOne or AllToAll (see issue #72)>
</ConnectionList>
</ConnectionGroup>

@tclose
Copy link
Contributor

tclose commented Apr 4, 2015

In the above example we decided to use Source and Destination instead of Terminus as it allows us to differentiate the two populations even though technically they are equivalent

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants