-
Notifications
You must be signed in to change notification settings - Fork 0
Virtual + External options for circuit extraction #155
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
Comments
In the following branch of obi-one: https://github.com/openbraininstitute/obi-one/tree/extrinsic_as_option
ping @chr-pok |
IMPORTANT: I just noticed the following: That means, if I extract "Layer4Inhibitory" from an O1 circuit, then also the extrinsic inputs from the rest of S1 are filtered so that only Layer 4 inhibitory source remain. This is obviously not applied to the inputs from VPM / POM. In any case, that logic does not make sense and should be removed. I do not foresee any use case for it! |
I just confirmed that the name of the source node population is NOT updated in the edges h5 file! This already affects the original extrinsic inputs from S1 that are propagated to the extracted circuit via "do_virtual=True". In detail, in the edges file of the extrinsic connectome "external_S1nonbarrel_neurons__S1nonbarrel_neurons__chemical" the following holds: Inside the edges h5 file there is a dataset under "edges/external_S1nonbarrel_neurons__S1nonbarrel_neurons__chemical/source_node_id". It specifies the source of an extrinsic connection. It has an attribute called "node_population" that identifies the node population of the sources. It must be updated to be the name of the correct node population, i.e., 'external_S1nonbarrel_neurons__S1nonbarrel_neurons__chemical'. Same is true for the newly created extrinsic connectivity representing the connections from O1 to the extracted circuit. |
Hmm, this sounds like a potential issue I meant before which could be tricky to handle with node sets in multi-population circuits. Assuming that "Layer4Inhibitory" is just defined as |
If I am not mistaken, the correct name of the source node population should be 'external_S1nonbarrel_neurons'. |
|
This is one for another day, but I quite strongly agree with what Michael said the other day that in the medium/long-term we ideally wouldn't do any remapping. I think its very straightforward that a neuron maintains its id from the circuit it was originally placed in I appreciate that there may be lots of analysis pipelines that expect continuous indices though! |
Just an idea, we could also add the original IDs directly as a new column to the nodes file. |
We could even remove any existing extrinsic populations before running the circuit extraction. This would require to change the circuit config in-place. In split_population.py in my custom branch
|
I have in the branch mentioned above implemented the points 1-4 listed above. With respect to point 5 I added the option to specify a prefix such that all node and edge populations with that prefix are deleted from the circuit before it goes through extraction. Not elegant, but it tackles the problem. However, all of the things would be much better to do on the level of brain builder, instead of the circuit extraction itself. To make it work, I had to hack a lot of things quite ugly. Additionally, here is another point: |
After the meeting yesterday and some more discussions and thinking, the following seems to be a working goal:
|
Sounds good! I would only suggest using "orig_id" (and "orig_population") rather than "old_id", as 1) it sounds nicer and 2) its less ambiguous I think |
Created three issues in https://github.com/openbraininstitute/brainbuilder/issues to track the requirements. I have not seen @james-isbister comment when creating them, so I used the "old_id" term instead. We can change that when it's picked up. |
Also am I right in thinking that the mapping table for say the external biophysical synapses can be of length: len(union(afferent neurons onto the subcircuit in the original circuit, subcircuit neurons)) ? |
@james-isbister : What? |
The mapping file doesn't need to be of length S1 nodes. But just of the length: (number of nodes in subcircuit) + (number of nodes which project from S1 to the subcircuit) - (number in the intersection of these two) |
it is planned for these sub-issues to be assigned & commence this week? |
No description provided.
The text was updated successfully, but these errors were encountered: