bluecellulab 2.6.45__tar.gz → 2.6.47__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.
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/PKG-INFO +3 -2
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/stimulus/factory.py +36 -5
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/stimulus/stimulus.py +66 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/tools.py +20 -12
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab.egg-info/PKG-INFO +3 -2
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.compile_mod.sh +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.gitattributes +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.github/dependabot.yml +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.github/workflows/release.yml +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.github/workflows/test.yml +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.gitignore +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.gitlab-ci.yml +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.readthedocs.yml +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/.zenodo.json +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/AUTHORS.txt +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/CHANGELOG.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/CITATION.cff +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/CONTRIBUTING.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/LICENSE +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/MANIFEST.in +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/Makefile +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/README.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/analysis/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/analysis/analysis.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/analysis/inject_sequence.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/analysis/plotting.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/ballstick/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/ballstick/emodel.hoc +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/ballstick/morphology.asc +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/cell_dict.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/core.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/injector.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/plotting.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/random.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/recording.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/section_distance.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/serialized_sections.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/sonata_proxy.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/stimuli_generator.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/cell/template.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/circuit_access/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/circuit_access/bluepy_circuit_access.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/circuit_access/definition.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/circuit_access/sonata_circuit_access.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/config/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/config/bluepy_simulation_config.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/config/definition.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/config/sections.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/config/sonata_simulation_config.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/format.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/iotools.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/node_id.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/simulation_access.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/synapse_properties.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/validate.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit_simulation.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/connection.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/dendrogram.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/exceptions.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/graph.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/hoc/Cell.hoc +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/hoc/RNGSettings.hoc +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/hoc/TDistFunc.hoc +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/hoc/TStim.hoc +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/hoc/fileUtils.hoc +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/importer.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/neuron_interpreter.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/plotwindow.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/psection.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/psegment.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/rngsettings.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/simulation/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/simulation/neuron_globals.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/simulation/parallel.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/simulation/simulation.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/stimulus/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/stimulus/circuit_stimulus_definitions.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/synapse/__init__.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/synapse/synapse_factory.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/synapse/synapse_types.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/type_aliases.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/utils.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/verbosity.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab.egg-info/SOURCES.txt +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab.egg-info/dependency_links.txt +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab.egg-info/requires.txt +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab.egg-info/top_level.txt +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/Makefile +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/images/voltage-readme.png +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/make.bat +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/requirements_docs.txt +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/_static/.gitkeep +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/api.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/changelog.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/compiling-mechanisms.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/conf.py +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/contributing.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/index.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/list_of_stim.rst +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/docs/source/logo/BlueCelluLabBanner.jpg +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/pyproject.toml +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/setup.cfg +0 -0
- {bluecellulab-2.6.45 → bluecellulab-2.6.47}/tox.ini +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: bluecellulab
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.47
|
|
4
4
|
Summary: Biologically detailed neural network simulations and analysis.
|
|
5
5
|
Author: Blue Brain Project, EPFL
|
|
6
6
|
License: Apache2.0
|
|
@@ -27,6 +27,7 @@ Requires-Dist: pydantic<3.0.0,>=2.5.2
|
|
|
27
27
|
Requires-Dist: typing-extensions>=4.8.0
|
|
28
28
|
Requires-Dist: networkx>=3.1
|
|
29
29
|
Requires-Dist: h5py>=3.8.0
|
|
30
|
+
Dynamic: license-file
|
|
30
31
|
|
|
31
32
|
|banner|
|
|
32
33
|
|
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
from __future__ import annotations
|
|
17
17
|
from typing import Optional
|
|
18
18
|
import logging
|
|
19
|
-
from bluecellulab.stimulus.stimulus import DelayedZap, Empty, Ramp, Slope, Step, StepNoise, Stimulus, OrnsteinUhlenbeck, ShotNoise, Sinusoidal
|
|
20
|
-
from bluecellulab.stimulus.circuit_stimulus_definitions import Stimulus as CircuitStimulus
|
|
19
|
+
from bluecellulab.stimulus.stimulus import DelayedZap, Empty, Ramp, Slope, Step, StepNoise, Stimulus, OrnsteinUhlenbeck, ShotNoise, Sinusoidal, Pulse
|
|
21
20
|
|
|
22
21
|
logger = logging.getLogger(__name__)
|
|
23
22
|
|
|
@@ -678,6 +677,38 @@ class StimulusFactory:
|
|
|
678
677
|
|
|
679
678
|
raise TypeError("You must provide either `mean` and `sigma`, or `threshold_current` and `mean_percent` and `sigma_percent` with percentage values.")
|
|
680
679
|
|
|
681
|
-
def
|
|
682
|
-
|
|
683
|
-
|
|
680
|
+
def pulse(
|
|
681
|
+
self,
|
|
682
|
+
pre_delay: float,
|
|
683
|
+
duration: float,
|
|
684
|
+
post_delay: float,
|
|
685
|
+
frequency: float,
|
|
686
|
+
width: float,
|
|
687
|
+
threshold_current: Optional[float] = None,
|
|
688
|
+
threshold_percentage: Optional[float] = None,
|
|
689
|
+
amplitude: Optional[float] = None,
|
|
690
|
+
) -> Stimulus:
|
|
691
|
+
"""Creates a pulse stimulus.
|
|
692
|
+
|
|
693
|
+
Args:
|
|
694
|
+
threshold_current: The threshold current of the Cell.
|
|
695
|
+
threshold_percentage: Percentage of desired threshold_current amplification.
|
|
696
|
+
amplitude: Raw amplitude of input current.
|
|
697
|
+
pre_delay: Delay before the first pulse (ms).
|
|
698
|
+
duration: Duration of the pulse train (ms).
|
|
699
|
+
post_delay: Delay after the last pulse (ms).
|
|
700
|
+
frequency: Frequency of the pulses (Hz).
|
|
701
|
+
width: Width of each pulse (ms).
|
|
702
|
+
"""
|
|
703
|
+
if amplitude is not None:
|
|
704
|
+
if threshold_current is not None and threshold_current != 0 and threshold_percentage is not None:
|
|
705
|
+
logger.info(
|
|
706
|
+
"amplitude, threshold_current and threshold_percentage are all set in pulse."
|
|
707
|
+
" Will only keep amplitude value."
|
|
708
|
+
)
|
|
709
|
+
return Pulse.amplitude_based(self.dt, pre_delay, duration, post_delay, amplitude, frequency, width)
|
|
710
|
+
|
|
711
|
+
if threshold_current is not None and threshold_current != 0 and threshold_percentage is not None:
|
|
712
|
+
return Pulse.threshold_based(self.dt, pre_delay, duration, post_delay, threshold_current, threshold_percentage, frequency, width)
|
|
713
|
+
|
|
714
|
+
raise TypeError("You have to give either threshold_current or amplitude")
|
|
@@ -369,6 +369,41 @@ class SinusoidalWave(Stimulus):
|
|
|
369
369
|
return np.array(tvec.to_python()), np.array(stim.to_python())
|
|
370
370
|
|
|
371
371
|
|
|
372
|
+
class PulseTrain(Stimulus):
|
|
373
|
+
"""Generates a pulse train signal."""
|
|
374
|
+
|
|
375
|
+
def __init__(self, dt: float, duration: float, amplitude: float, frequency: float, width: float):
|
|
376
|
+
super().__init__(dt)
|
|
377
|
+
self.duration = duration
|
|
378
|
+
self.amplitude = amplitude
|
|
379
|
+
self.frequency = frequency
|
|
380
|
+
self.width = width
|
|
381
|
+
|
|
382
|
+
self._time, self._current = self._generate_pulse_train()
|
|
383
|
+
|
|
384
|
+
@property
|
|
385
|
+
def time(self) -> np.ndarray:
|
|
386
|
+
return self._time
|
|
387
|
+
|
|
388
|
+
@property
|
|
389
|
+
def current(self) -> np.ndarray:
|
|
390
|
+
return self._current
|
|
391
|
+
|
|
392
|
+
def _generate_pulse_train(self):
|
|
393
|
+
total_duration = self.duration
|
|
394
|
+
time_steps = int(total_duration / self.dt)
|
|
395
|
+
time = np.linspace(0, total_duration, time_steps)
|
|
396
|
+
current = np.zeros_like(time)
|
|
397
|
+
|
|
398
|
+
start_time = 0
|
|
399
|
+
while start_time + self.width < self.duration:
|
|
400
|
+
pulse_indices = (time >= start_time) & (time < start_time + self.width)
|
|
401
|
+
current[pulse_indices] = self.amplitude
|
|
402
|
+
start_time += 1000.0 / self.frequency
|
|
403
|
+
|
|
404
|
+
return time, current
|
|
405
|
+
|
|
406
|
+
|
|
372
407
|
class Step(Stimulus):
|
|
373
408
|
|
|
374
409
|
def __init__(self):
|
|
@@ -878,3 +913,34 @@ class Sinusoidal(Stimulus):
|
|
|
878
913
|
amplitude=amplitude,
|
|
879
914
|
frequency=frequency,
|
|
880
915
|
)
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
class Pulse(Stimulus):
|
|
919
|
+
"""Factory-compatible Pulse Stimulus."""
|
|
920
|
+
|
|
921
|
+
def __init__(self):
|
|
922
|
+
"""Prevents direct instantiation of the class."""
|
|
923
|
+
raise NotImplementedError(
|
|
924
|
+
"This class cannot be instantiated directly. "
|
|
925
|
+
"Please use 'amplitude_based' or 'threshold_based' methods."
|
|
926
|
+
)
|
|
927
|
+
|
|
928
|
+
@classmethod
|
|
929
|
+
def amplitude_based(
|
|
930
|
+
cls, dt: float, pre_delay: float, duration: float, post_delay: float, amplitude: float, frequency: float, width: float
|
|
931
|
+
) -> CombinedStimulus:
|
|
932
|
+
"""Creates a Pulse stimulus from given time events and amplitude."""
|
|
933
|
+
return (
|
|
934
|
+
Empty(dt, duration=pre_delay)
|
|
935
|
+
+ PulseTrain(dt, duration, amplitude, frequency, width)
|
|
936
|
+
+ Empty(dt, duration=post_delay)
|
|
937
|
+
)
|
|
938
|
+
|
|
939
|
+
@classmethod
|
|
940
|
+
def threshold_based(
|
|
941
|
+
cls, dt: float, pre_delay: float, duration: float, post_delay: float, threshold_current: float, threshold_percentage: float,
|
|
942
|
+
frequency: float, width: float
|
|
943
|
+
) -> CombinedStimulus:
|
|
944
|
+
"""Creates a Pulse stimulus with respect to the threshold current."""
|
|
945
|
+
amplitude = threshold_current * (threshold_percentage / 100)
|
|
946
|
+
return cls.amplitude_based(dt, pre_delay, duration, post_delay, amplitude, frequency, width)
|
|
@@ -268,7 +268,8 @@ def detect_spike_step(
|
|
|
268
268
|
inj_stop: float,
|
|
269
269
|
step_level: float,
|
|
270
270
|
section: str = "soma[0]",
|
|
271
|
-
segx: float = 0.5
|
|
271
|
+
segx: float = 0.5,
|
|
272
|
+
step_thresh: float = -20.
|
|
272
273
|
) -> bool:
|
|
273
274
|
"""Detect if there is a spike at a certain step level."""
|
|
274
275
|
with IsolatedProcess() as runner:
|
|
@@ -284,7 +285,8 @@ def detect_spike_step(
|
|
|
284
285
|
inj_stop,
|
|
285
286
|
step_level,
|
|
286
287
|
section,
|
|
287
|
-
segx
|
|
288
|
+
segx,
|
|
289
|
+
step_thresh
|
|
288
290
|
],
|
|
289
291
|
)
|
|
290
292
|
return spike_detected
|
|
@@ -300,7 +302,8 @@ def detect_spike_step_subprocess(
|
|
|
300
302
|
inj_stop: float,
|
|
301
303
|
step_level: float,
|
|
302
304
|
section: str = "soma[0]",
|
|
303
|
-
segx: float = 0.5
|
|
305
|
+
segx: float = 0.5,
|
|
306
|
+
step_thresh: float = -20.
|
|
304
307
|
) -> bool:
|
|
305
308
|
"""Detect if there is a spike at a certain step level."""
|
|
306
309
|
cell = bluecellulab.Cell(
|
|
@@ -321,19 +324,19 @@ def detect_spike_step_subprocess(
|
|
|
321
324
|
time = cell.get_time()
|
|
322
325
|
voltage = cell.get_voltage_recording(section=neuron_section, segx=segx)
|
|
323
326
|
voltage_step = voltage[np.where((time > inj_start) & (time < inj_stop))]
|
|
324
|
-
spike_detected = detect_spike(voltage_step)
|
|
327
|
+
spike_detected = detect_spike(voltage_step, step_thresh)
|
|
325
328
|
|
|
326
329
|
cell.delete()
|
|
327
330
|
|
|
328
331
|
return spike_detected
|
|
329
332
|
|
|
330
333
|
|
|
331
|
-
def detect_spike(voltage: np.ndarray) -> bool:
|
|
334
|
+
def detect_spike(voltage: np.ndarray, step_thresh: float = -20.) -> bool:
|
|
332
335
|
"""Detect if there is a spike in the voltage trace."""
|
|
333
336
|
if len(voltage) == 0:
|
|
334
337
|
return False
|
|
335
338
|
else:
|
|
336
|
-
return bool(np.max(voltage) >
|
|
339
|
+
return bool(np.max(voltage) > step_thresh) # bool not np.bool_
|
|
337
340
|
|
|
338
341
|
|
|
339
342
|
def search_threshold_current(
|
|
@@ -348,7 +351,8 @@ def search_threshold_current(
|
|
|
348
351
|
max_current: float,
|
|
349
352
|
current_precision: float = 0.01,
|
|
350
353
|
section: str = "soma[0]",
|
|
351
|
-
segx: float = 0.5
|
|
354
|
+
segx: float = 0.5,
|
|
355
|
+
step_thresh: float = -20.
|
|
352
356
|
):
|
|
353
357
|
"""Search current necessary to reach threshold."""
|
|
354
358
|
if abs(max_current - min_current) < current_precision:
|
|
@@ -359,7 +363,7 @@ def search_threshold_current(
|
|
|
359
363
|
spike_detected = detect_spike_step(
|
|
360
364
|
template_name, morphology_path, template_format, emodel_properties,
|
|
361
365
|
hyp_level, inj_start, inj_stop, med_current,
|
|
362
|
-
section=section, segx=segx
|
|
366
|
+
section=section, segx=segx, step_thresh=step_thresh
|
|
363
367
|
)
|
|
364
368
|
logger.info("Spike threshold detection at: %f nA" % med_current)
|
|
365
369
|
|
|
@@ -369,14 +373,16 @@ def search_threshold_current(
|
|
|
369
373
|
hyp_level, inj_start, inj_stop,
|
|
370
374
|
min_current, med_current,
|
|
371
375
|
current_precision,
|
|
372
|
-
section=section, segx=segx
|
|
376
|
+
section=section, segx=segx,
|
|
377
|
+
step_thresh=step_thresh)
|
|
373
378
|
else:
|
|
374
379
|
return search_threshold_current(template_name, morphology_path,
|
|
375
380
|
template_format, emodel_properties,
|
|
376
381
|
hyp_level, inj_start, inj_stop,
|
|
377
382
|
med_current, max_current,
|
|
378
383
|
current_precision,
|
|
379
|
-
section=section, segx=segx
|
|
384
|
+
section=section, segx=segx,
|
|
385
|
+
step_thresh=step_thresh)
|
|
380
386
|
|
|
381
387
|
|
|
382
388
|
def check_empty_topology() -> bool:
|
|
@@ -435,7 +441,8 @@ def calculate_rheobase(cell: Cell,
|
|
|
435
441
|
threshold_search_stim_start: float = 300.0,
|
|
436
442
|
threshold_search_stim_stop: float = 1000.0,
|
|
437
443
|
section: str = "soma[0]",
|
|
438
|
-
segx: float = 0.5
|
|
444
|
+
segx: float = 0.5,
|
|
445
|
+
step_thresh: float = -20.) -> float:
|
|
439
446
|
"""Calculate the rheobase by first computing the upper bound threshold
|
|
440
447
|
current.
|
|
441
448
|
|
|
@@ -474,7 +481,8 @@ def calculate_rheobase(cell: Cell,
|
|
|
474
481
|
max_current=upperbound_threshold_current,
|
|
475
482
|
current_precision=0.005,
|
|
476
483
|
section=section,
|
|
477
|
-
segx=segx
|
|
484
|
+
segx=segx,
|
|
485
|
+
step_thresh=threshold_voltage
|
|
478
486
|
)
|
|
479
487
|
|
|
480
488
|
return rheobase
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: bluecellulab
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.47
|
|
4
4
|
Summary: Biologically detailed neural network simulations and analysis.
|
|
5
5
|
Author: Blue Brain Project, EPFL
|
|
6
6
|
License: Apache2.0
|
|
@@ -27,6 +27,7 @@ Requires-Dist: pydantic<3.0.0,>=2.5.2
|
|
|
27
27
|
Requires-Dist: typing-extensions>=4.8.0
|
|
28
28
|
Requires-Dist: networkx>=3.1
|
|
29
29
|
Requires-Dist: h5py>=3.8.0
|
|
30
|
+
Dynamic: license-file
|
|
30
31
|
|
|
31
32
|
|banner|
|
|
32
33
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/circuit_access/definition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/config/bluepy_simulation_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/circuit/config/sonata_simulation_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.45 → bluecellulab-2.6.47}/bluecellulab/stimulus/circuit_stimulus_definitions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|