Comments (3)
Hey!
After digging really deep into the code, I managed to find out the solution on three out of the four problems, however, I am stuck on the de-potentiation self-connection.
I implemented it as a coupling operator:
DisfacilitationCO:
description: >
Coupling operator that models disfacilitation assuming that the
strength of pyramidal-pyramidal connections is subject to synaptic
de-potentiation. When pyramidal cells fire at a high rate for a long time
they weaken.
base: CouplingOperator
equations:
- "V_in = c * V_out"
- "d/dt * c = (-c + c_max * (1 - r)) / tau_c_pp"
variables:
c:
description:
Connectivity constant that reflects connection strength
from one neural population on another.
unit: null
default: variable
c_max:
name: max_pp_connectivity
description: "maximum connectivity constant for pyramidal-pyramidal
connection"
unit: null
default: 2.22
r:
name: incoming_firing_rate
description: Mean incoming firing rate at a specific synapse type
unit: Hz
default: input
tau_c_pp:
name: time_constant_pp_connectivity
description: "time constant of synaptic disfacilitation for
pyramidal-pyramidal connection"
default: 10.
unit: s
and attached it to the self-connection edge between Pyramidal and Pyramidal population. However, PyRates does not allow more than 1 input on the edge, hence on compiling the circuit I got following error:
PyRatesException: Too many input variables found. Exactly one or zero input variables are required per edge.
Is there any way to circumvent this? Or any ideas how else can the temporal dependence of the edge weight modelled?
Thanks a lot!
from pyrates.
Dear jajcayn, thanks a lot for bringing up this issue and for using our software. And sorry for the late reply, we are currently still in the developmental stage and as you can see over here, we haven't dealt much with users yet, that address us over the issue system instead of in person.
Anyway, thanks a lot for bringing up this issue. Due to a recent change in how we manage the equation system in the backend, the CouplingOperator functionality was broken. However, we are working on fixing this and I will keep you updated here.
In the mean-time, I suggest the following:
Instead of setting up on edge operator, just use a normal linear edge with weight set to 1
[source, target, None, {weight: 1.0, delay: x}]
This is, by the way, the way how you add discrete delays with value x to edges in PyRates.
You can then introduce an input variable target to your node operator and scale it with C_pp.
inp = target * C_pp
Then you can move your differential equation for C_pp to the node operator, instead of creating a new CouplingOperator. In other words, just add the equation
d/dt * C_pp = (C_max*(1-r_p) - C_pp) / tau
to the same operator, where the node input enters and is scaled by C_pp.
Does this make sense? Hope I could help and I will keep you updated about the progress on re-enabling the usage of EdgeOperators.
Cheers!
from pyrates.
With the recent version (PyRates 0.9.0), coupling operators have been re-enabled and should work as implemented initially by @jajcayn. Closing this now
from pyrates.
Related Issues (20)
- Allow additional (modulating) source nodes in edges HOT 3
- Add variable setter method to CircuitIR HOT 1
- Add to_file/from_file methods HOT 4
- Found test problem caused by changes of working directory in backend HOT 4
- Removing parts of pyrates from sys.modules in the backend causes troubles in other parts of the pipeline HOT 3
- Improving user friendliness and stability of PyRates HOT 2
- Add possibility to CircuitTemplate.apply() method to change constants HOT 3
- Enable purely scalar network models by disabling vectorization HOT 2
- Implement logging
- Trouble reproducing Jansen-Rit model dynamics in current version HOT 8
- Unexpected behavior of a zero-weighted edge with delay HOT 6
- Inheriting from an operator more than once causes operator key errors HOT 1
- Remove unnecessary indexing operations and variable definitions from equation file HOT 1
- error running jansenrit.py (jrc.compile) on MacOS HOT 3
- issues when running the example codes HOT 2
- Continuous data generation HOT 3
- Rework delay-coupling implementations HOT 3
- is there an option to get an ouput of the non-state variable? HOT 2
- error while using delay DE HOT 4
- issue with time-varying edge variables when multiple nodes are used HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pyrates.