bluecellulab 2.6.21__tar.gz → 2.6.22__tar.gz

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.

Files changed (102) hide show
  1. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/PKG-INFO +1 -1
  2. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/injector.py +1 -3
  3. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/stimuli_generator.py +25 -7
  4. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/stimulus/circuit_stimulus_definitions.py +10 -3
  5. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab.egg-info/PKG-INFO +1 -1
  6. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/conf.py +4 -0
  7. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/tox.ini +1 -1
  8. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.compile_mod.sh +0 -0
  9. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.gitattributes +0 -0
  10. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.github/dependabot.yml +0 -0
  11. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.github/workflows/release.yml +0 -0
  12. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.github/workflows/test.yml +0 -0
  13. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.gitignore +0 -0
  14. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.gitlab-ci.yml +0 -0
  15. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.readthedocs.yml +0 -0
  16. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/.zenodo.json +0 -0
  17. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/AUTHORS.txt +0 -0
  18. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/CHANGELOG.rst +0 -0
  19. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/CONTRIBUTING.rst +0 -0
  20. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/LICENSE +0 -0
  21. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/MANIFEST.in +0 -0
  22. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/Makefile +0 -0
  23. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/README.rst +0 -0
  24. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/__init__.py +0 -0
  25. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/analysis/__init__.py +0 -0
  26. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/analysis/inject_sequence.py +0 -0
  27. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/__init__.py +0 -0
  28. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/ballstick/__init__.py +0 -0
  29. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/ballstick/emodel.hoc +0 -0
  30. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/ballstick/morphology.asc +0 -0
  31. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/cell_dict.py +0 -0
  32. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/core.py +0 -0
  33. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/plotting.py +0 -0
  34. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/random.py +0 -0
  35. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/recording.py +0 -0
  36. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/section_distance.py +0 -0
  37. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/serialized_sections.py +0 -0
  38. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/sonata_proxy.py +0 -0
  39. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/cell/template.py +0 -0
  40. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/__init__.py +0 -0
  41. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/circuit_access/__init__.py +0 -0
  42. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/circuit_access/bluepy_circuit_access.py +0 -0
  43. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/circuit_access/definition.py +0 -0
  44. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/circuit_access/sonata_circuit_access.py +0 -0
  45. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/config/__init__.py +0 -0
  46. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/config/bluepy_simulation_config.py +0 -0
  47. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/config/definition.py +0 -0
  48. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/config/sections.py +0 -0
  49. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/config/sonata_simulation_config.py +0 -0
  50. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/format.py +0 -0
  51. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/iotools.py +0 -0
  52. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/node_id.py +0 -0
  53. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/simulation_access.py +0 -0
  54. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/synapse_properties.py +0 -0
  55. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit/validate.py +0 -0
  56. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/circuit_simulation.py +0 -0
  57. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/connection.py +0 -0
  58. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/dendrogram.py +0 -0
  59. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/exceptions.py +0 -0
  60. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/graph.py +0 -0
  61. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/hoc/Cell.hoc +0 -0
  62. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/hoc/RNGSettings.hoc +0 -0
  63. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/hoc/TDistFunc.hoc +0 -0
  64. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/hoc/TStim.hoc +0 -0
  65. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/hoc/fileUtils.hoc +0 -0
  66. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/importer.py +0 -0
  67. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/neuron_interpreter.py +0 -0
  68. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/plotwindow.py +0 -0
  69. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/psection.py +0 -0
  70. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/psegment.py +0 -0
  71. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/rngsettings.py +0 -0
  72. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/simulation/__init__.py +0 -0
  73. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/simulation/neuron_globals.py +0 -0
  74. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/simulation/parallel.py +0 -0
  75. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/simulation/simulation.py +0 -0
  76. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/stimulus/__init__.py +0 -0
  77. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/stimulus/factory.py +0 -0
  78. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/synapse/__init__.py +0 -0
  79. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/synapse/synapse_factory.py +0 -0
  80. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/synapse/synapse_types.py +0 -0
  81. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/tools.py +0 -0
  82. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/type_aliases.py +0 -0
  83. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/utils.py +0 -0
  84. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab/verbosity.py +0 -0
  85. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab.egg-info/SOURCES.txt +0 -0
  86. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab.egg-info/dependency_links.txt +0 -0
  87. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab.egg-info/requires.txt +0 -0
  88. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/bluecellulab.egg-info/top_level.txt +0 -0
  89. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/Makefile +0 -0
  90. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/images/voltage-readme.png +0 -0
  91. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/make.bat +0 -0
  92. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/requirements_docs.txt +0 -0
  93. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/_static/.gitkeep +0 -0
  94. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/api.rst +0 -0
  95. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/changelog.rst +0 -0
  96. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/compiling-mechanisms.rst +0 -0
  97. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/contributing.rst +0 -0
  98. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/index.rst +0 -0
  99. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/list_of_stim.rst +0 -0
  100. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/docs/source/logo/BlueCelluLabBanner.jpg +0 -0
  101. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/pyproject.toml +0 -0
  102. {bluecellulab-2.6.21 → bluecellulab-2.6.22}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bluecellulab
3
- Version: 2.6.21
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
@@ -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, var, stimulus.decay_time, stimulus.rise_time, cv_square)
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, var, tau_D, tau_R, cv_square):
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
- x_peak = math.exp(-t_peak / tau_D) - math.exp(-t_peak / tau_R)
123
-
124
- rate_ms = (1 + cv_square) / 2 * (mean ** 2 / var) / (tau_D + tau_R)
125
- rate = rate_ms * 1000 # rate in 1 / s [Hz]
126
- amp_mean = mean * x_peak / rate_ms / (tau_D - tau_R)
127
- amp_var = cv_square * amp_mean ** 2
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
- amp_cv=stimulus_entry["AmpCV"],
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
- amp_cv=stimulus_entry["amp_cv"],
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
- amp_cv: float
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.21
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
@@ -19,6 +19,10 @@ autosummary_mock_imports = [ # these modules are not publicly available
19
19
  'bluepy_configfile'
20
20
  ]
21
21
 
22
+ suppress_warnings = [
23
+ 'autosummary.import_cycle',
24
+ ]
25
+
22
26
  # -- Options for HTML output -------------------------------------------------
23
27
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
24
28
 
@@ -44,7 +44,7 @@ commands =
44
44
  ruff check . --select F541,F401 --per-file-ignores="__init__.py:F401"
45
45
  pycodestyle {[base]name} --ignore=E501,W504,W503
46
46
  pycodestyle tests --ignore=E501,W504,W503,E741
47
- mypy . --ignore-missing-imports --disable-error-code=call-overload # remove once pandas-stubs makes a release after 1.5.3.230321
47
+ mypy . --ignore-missing-imports --disable-error-code=call-overload # remove once pandas-stubs makes a release after 1.5.3.230321
48
48
  docformatter --check bluecellulab -r
49
49
 
50
50
  [testenv:examples]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes