bluecellulab 2.6.20__py3-none-any.whl → 2.6.22__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bluecellulab might be problematic. Click here for more details.
- bluecellulab/cell/injector.py +1 -3
- bluecellulab/cell/stimuli_generator.py +25 -7
- bluecellulab/stimulus/circuit_stimulus_definitions.py +10 -3
- {bluecellulab-2.6.20.dist-info → bluecellulab-2.6.22.dist-info}/METADATA +6 -1
- {bluecellulab-2.6.20.dist-info → bluecellulab-2.6.22.dist-info}/RECORD +9 -9
- {bluecellulab-2.6.20.dist-info → bluecellulab-2.6.22.dist-info}/WHEEL +1 -1
- {bluecellulab-2.6.20.dist-info → bluecellulab-2.6.22.dist-info}/AUTHORS.txt +0 -0
- {bluecellulab-2.6.20.dist-info → bluecellulab-2.6.22.dist-info}/LICENSE +0 -0
- {bluecellulab-2.6.20.dist-info → bluecellulab-2.6.22.dist-info}/top_level.txt +0 -0
bluecellulab/cell/injector.py
CHANGED
|
@@ -360,17 +360,15 @@ class InjectableMixin:
|
|
|
360
360
|
stimulus: RelativeShotNoise,
|
|
361
361
|
shotnoise_stim_count=0):
|
|
362
362
|
"""Add a replay relative shot noise stimulus."""
|
|
363
|
-
cv_square = stimulus.amp_cv**2
|
|
364
363
|
|
|
365
364
|
stim_mode = stimulus.mode
|
|
366
365
|
rel_prop = self.relativity_proportion(stim_mode)
|
|
367
366
|
|
|
368
367
|
mean = stimulus.mean_percent / 100 * rel_prop
|
|
369
368
|
sd = stimulus.sd_percent / 100 * rel_prop
|
|
370
|
-
var = sd * sd
|
|
371
369
|
|
|
372
370
|
rate, amp_mean, amp_var = get_relative_shotnoise_params(
|
|
373
|
-
mean,
|
|
371
|
+
mean, sd, stimulus.decay_time, stimulus.rise_time, stimulus.relative_skew)
|
|
374
372
|
|
|
375
373
|
rng = self._get_shotnoise_step_rand(shotnoise_stim_count, stimulus.seed)
|
|
376
374
|
tvec, svec = gen_shotnoise_signal(stimulus.decay_time, stimulus.rise_time, rate, amp_mean,
|
|
@@ -114,17 +114,35 @@ def gen_shotnoise_signal(tau_D, tau_R, rate, amp_mean, amp_var,
|
|
|
114
114
|
return tvec, P
|
|
115
115
|
|
|
116
116
|
|
|
117
|
-
def get_relative_shotnoise_params(mean,
|
|
117
|
+
def get_relative_shotnoise_params(mean, sd, tau_D, tau_R, relative_skew):
|
|
118
118
|
"""Returns Rate, amp_mean and amp_var parameters."""
|
|
119
119
|
# bi-exponential time to peak [ms]
|
|
120
120
|
t_peak = math.log(tau_D / tau_R) / (1 / tau_R - 1 / tau_D)
|
|
121
121
|
# bi-exponential peak height [1]
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
122
|
+
F_peak = math.exp(-t_peak / tau_D) - math.exp(-t_peak / tau_R)
|
|
123
|
+
|
|
124
|
+
# utility constants
|
|
125
|
+
Xi = (tau_D - tau_R) / F_peak
|
|
126
|
+
A = 1 / (tau_D + tau_R)
|
|
127
|
+
B = 1 / ((tau_D + 2 * tau_R) * (2 * tau_D + tau_R))
|
|
128
|
+
|
|
129
|
+
# skewness
|
|
130
|
+
skew_bnd_min = (8 / 3) * (B / A ** 2) * (sd / mean)
|
|
131
|
+
skew = (1 + relative_skew) * skew_bnd_min
|
|
132
|
+
if skew < skew_bnd_min or skew > 2 * skew_bnd_min:
|
|
133
|
+
raise ValueError("skewness out of bounds")
|
|
134
|
+
|
|
135
|
+
# cumulants
|
|
136
|
+
lambda2_1 = sd ** 2 / mean # lambda2 over lambda1
|
|
137
|
+
lambda3_2 = sd * skew # lambda3 over lambda2
|
|
138
|
+
theta1pk = 2 / (A * Xi) * lambda2_1 # = (1 + k) * theta
|
|
139
|
+
theta2pk = (3 * A) / (4 * B * Xi) * lambda3_2 # = (2 + k) * theta
|
|
140
|
+
|
|
141
|
+
# derived parameters
|
|
142
|
+
amp_mean = 2 * theta1pk - theta2pk # mean amplitude [nA or uS]
|
|
143
|
+
amp_var = amp_mean * (theta2pk - theta1pk) # variance of amplitude [nA^2 or uS^2]
|
|
144
|
+
rate_ms = mean / (amp_mean * Xi) # event rate in 1 / ms
|
|
145
|
+
rate = rate_ms * 1000 # event rate in 1 / s [Hz]
|
|
128
146
|
|
|
129
147
|
return rate, amp_mean, amp_var
|
|
130
148
|
|
|
@@ -170,7 +170,7 @@ class Stimulus:
|
|
|
170
170
|
decay_time=stimulus_entry["DecayTime"],
|
|
171
171
|
mean_percent=stimulus_entry["MeanPercent"],
|
|
172
172
|
sd_percent=stimulus_entry["SDPercent"],
|
|
173
|
-
|
|
173
|
+
relative_skew=stimulus_entry.get("RelativeSkew", 0.5),
|
|
174
174
|
seed=stimulus_entry.get("Seed", None),
|
|
175
175
|
mode=mode,
|
|
176
176
|
reversal=stimulus_entry.get("Reversal", 0.0)
|
|
@@ -269,7 +269,7 @@ class Stimulus:
|
|
|
269
269
|
decay_time=stimulus_entry["decay_time"],
|
|
270
270
|
mean_percent=stimulus_entry["mean_percent"],
|
|
271
271
|
sd_percent=stimulus_entry["sd_percent"],
|
|
272
|
-
|
|
272
|
+
relative_skew=stimulus_entry.get("RelativeSkew", 0.5),
|
|
273
273
|
seed=stimulus_entry.get("random_seed", None),
|
|
274
274
|
mode=ClampMode(stimulus_entry.get("input_type", "current_clamp").lower()),
|
|
275
275
|
reversal=stimulus_entry.get("reversal", 0.0)
|
|
@@ -365,7 +365,7 @@ class RelativeShotNoise(Stimulus):
|
|
|
365
365
|
decay_time: float
|
|
366
366
|
mean_percent: float
|
|
367
367
|
sd_percent: float
|
|
368
|
-
|
|
368
|
+
relative_skew: float = 0.5
|
|
369
369
|
dt: float = 0.25
|
|
370
370
|
seed: Optional[int] = None
|
|
371
371
|
mode: ClampMode = ClampMode.CURRENT
|
|
@@ -378,6 +378,13 @@ class RelativeShotNoise(Stimulus):
|
|
|
378
378
|
raise ValueError("decay_time must be greater than rise_time")
|
|
379
379
|
return v
|
|
380
380
|
|
|
381
|
+
@field_validator("relative_skew")
|
|
382
|
+
@classmethod
|
|
383
|
+
def relative_skew_in_range(cls, v):
|
|
384
|
+
if v < 0.0 or v > 1.0:
|
|
385
|
+
raise ValueError("relative skewness must be in [0,1]")
|
|
386
|
+
return v
|
|
387
|
+
|
|
381
388
|
|
|
382
389
|
@dataclass(frozen=True, config=dict(extra="forbid"))
|
|
383
390
|
class OrnsteinUhlenbeck(Stimulus):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: bluecellulab
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.22
|
|
4
4
|
Summary: Biologically detailed neural network simulations and analysis.
|
|
5
5
|
Author: Blue Brain Project, EPFL
|
|
6
6
|
License: Apache2.0
|
|
@@ -146,6 +146,11 @@ Testing is set up using `tox`:
|
|
|
146
146
|
tox -e py3 # runs the tests
|
|
147
147
|
tox -e lint # runs the format checks
|
|
148
148
|
|
|
149
|
+
Contributing
|
|
150
|
+
============
|
|
151
|
+
|
|
152
|
+
We welcome contributions to BlueCelluLab! Please see the `CONTRIBUTING.rst <https://github.com/BlueBrain/BlueCelluLab/blob/main/CONTRIBUTING.rst>`_ for guidelines on how to contribute.
|
|
153
|
+
|
|
149
154
|
Funding & Acknowledgements
|
|
150
155
|
==========================
|
|
151
156
|
|
|
@@ -19,14 +19,14 @@ bluecellulab/analysis/inject_sequence.py,sha256=Ih3wdNRn0-lM-NW8agrMUGS862CEgzn_
|
|
|
19
19
|
bluecellulab/cell/__init__.py,sha256=Sbc0QOsJ8E7tSwf3q7fsXuE_SevBN6ZmoCVyyU5zfII,208
|
|
20
20
|
bluecellulab/cell/cell_dict.py,sha256=PVmZsjhZ9jp3HC-8QmdFqp-crAcVMSVeLWujcOPLlpo,1346
|
|
21
21
|
bluecellulab/cell/core.py,sha256=2UtXXd4FA2X5A_7ljjbN4yobpMWD2FWfux67ZFND2rI,31315
|
|
22
|
-
bluecellulab/cell/injector.py,sha256=
|
|
22
|
+
bluecellulab/cell/injector.py,sha256=u6Jvf_14rNOy5azK_mIUU8C2WioiGZd-7YGKoSnbR6Y,18042
|
|
23
23
|
bluecellulab/cell/plotting.py,sha256=hW5KAmaSonJ1tgR6xRrnfVe33I5mBsBUrKJQwGvAbUc,4032
|
|
24
24
|
bluecellulab/cell/random.py,sha256=FDby9BN4eJT27COwHP59bhDE2v-c6rdOKNFj3cYZTVY,1773
|
|
25
25
|
bluecellulab/cell/recording.py,sha256=dekJspPb_5yrS6WR3aXtvZ6KWwMNbyhe5aIOVtNDHpY,342
|
|
26
26
|
bluecellulab/cell/section_distance.py,sha256=J8-oqgCHzRaJkpfjPUR6NFtXDhwbrXad9nDaTCKNkTU,3908
|
|
27
27
|
bluecellulab/cell/serialized_sections.py,sha256=sH9mV2CJU_DlhfJhwtuMs1gGnNEnKUvB_Bxx3AEmLHQ,1543
|
|
28
28
|
bluecellulab/cell/sonata_proxy.py,sha256=dLT9mLlGVpXxj2O2lXN0g7Sq4BwroPLVdPikR2yNMv4,1529
|
|
29
|
-
bluecellulab/cell/stimuli_generator.py,sha256=
|
|
29
|
+
bluecellulab/cell/stimuli_generator.py,sha256=01CjXToBYtz24QP_h_LkZnSKhmEpDFIQOk4TU-ueeXg,7129
|
|
30
30
|
bluecellulab/cell/template.py,sha256=K8Vp1-yE6-9wxjmhkLBhnjBhgciUixoMk8LU-GioTgM,7562
|
|
31
31
|
bluecellulab/cell/ballstick/__init__.py,sha256=v1Z8tHFfbpWShxOBdShCUaE0utoz-7rZumuNBQtNOFI,439
|
|
32
32
|
bluecellulab/cell/ballstick/emodel.hoc,sha256=7WcuepK-wB9bASRvNdCwO9Woc9-SpBCFqBqCXKgjsV8,1517
|
|
@@ -57,14 +57,14 @@ bluecellulab/simulation/neuron_globals.py,sha256=_8xmJPQMfCyhVn6KppK7i3jaUZaALML
|
|
|
57
57
|
bluecellulab/simulation/parallel.py,sha256=oQ_oV2EKr8gP4yF2Dq8q9MiblDyi89_wBgLzQkLV_U0,1514
|
|
58
58
|
bluecellulab/simulation/simulation.py,sha256=I__cZwV_A8I7XSefn6aJDBA_jXCI3E35-pCNCLUsnvo,6206
|
|
59
59
|
bluecellulab/stimulus/__init__.py,sha256=DgIgVaSyR-URf3JZzvO6j-tjCerzvktuK-ep8pjMRPQ,37
|
|
60
|
-
bluecellulab/stimulus/circuit_stimulus_definitions.py,sha256=
|
|
60
|
+
bluecellulab/stimulus/circuit_stimulus_definitions.py,sha256=Vt95dfvkSFAKl53wSv7CEECgYUVbkVAh1uZrD5ial1Y,15890
|
|
61
61
|
bluecellulab/stimulus/factory.py,sha256=XDbnqCuMCh1RdZLKvlRucMj3wkXDqy6mEda_Oh6Yqo4,19955
|
|
62
62
|
bluecellulab/synapse/__init__.py,sha256=RW8XoAMXOvK7OG1nHl_q8jSEKLj9ZN4oWf2nY9HAwuk,192
|
|
63
63
|
bluecellulab/synapse/synapse_factory.py,sha256=3y15LlaBoNJiU2KUeTkh70pyU5OYf6xQIMSBmmMPMak,6987
|
|
64
64
|
bluecellulab/synapse/synapse_types.py,sha256=4gne-hve2vq1Lau-LAVPsfLjffVYqAYBW3kCfC7_600,16871
|
|
65
|
-
bluecellulab-2.6.
|
|
66
|
-
bluecellulab-2.6.
|
|
67
|
-
bluecellulab-2.6.
|
|
68
|
-
bluecellulab-2.6.
|
|
69
|
-
bluecellulab-2.6.
|
|
70
|
-
bluecellulab-2.6.
|
|
65
|
+
bluecellulab-2.6.22.dist-info/AUTHORS.txt,sha256=EDs3H-2HXBojbma10psixk3C2rFiOCTIREi2ZAbXYNQ,179
|
|
66
|
+
bluecellulab-2.6.22.dist-info/LICENSE,sha256=xOouu1gC1GGklDxkITlaVl60I9Ab860O-nZsFbWydvU,11749
|
|
67
|
+
bluecellulab-2.6.22.dist-info/METADATA,sha256=P4HjDqCKyYQcCgHcv3lkM_PXRI-hHe4F9UZBl-RqDfE,7267
|
|
68
|
+
bluecellulab-2.6.22.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
|
|
69
|
+
bluecellulab-2.6.22.dist-info/top_level.txt,sha256=VSyEP8w9l3pXdRkyP_goeMwiNA8KWwitfAqUkveJkdQ,13
|
|
70
|
+
bluecellulab-2.6.22.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|