bluecellulab 2.6.66__tar.gz → 2.6.67__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.66 → bluecellulab-2.6.67}/PKG-INFO +3 -1
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/core.py +81 -9
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/tools.py +105 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab.egg-info/PKG-INFO +3 -1
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab.egg-info/requires.txt +3 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/pyproject.toml +5 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/tox.ini +1 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.compile_mod.sh +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.gitattributes +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.github/dependabot.yml +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.github/workflows/release.yml +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.github/workflows/test.yml +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.gitignore +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.gitlab-ci.yml +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.readthedocs.yml +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/.zenodo.json +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/AUTHORS.txt +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/CHANGELOG.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/CITATION.cff +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/CONTRIBUTING.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/LICENSE +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/MANIFEST.in +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/Makefile +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/README.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/analysis/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/analysis/analysis.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/analysis/inject_sequence.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/analysis/plotting.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/analysis/utils.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/ballstick/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/ballstick/emodel.hoc +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/ballstick/morphology.asc +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/cell_dict.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/injector.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/plotting.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/random.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/recording.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/section_distance.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/serialized_sections.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/sonata_proxy.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/stimuli_generator.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/cell/template.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/circuit_access/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/circuit_access/bluepy_circuit_access.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/circuit_access/definition.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/circuit_access/sonata_circuit_access.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/config/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/config/bluepy_simulation_config.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/config/definition.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/config/sections.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/config/sonata_simulation_config.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/format.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/iotools.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/node_id.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/simulation_access.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/synapse_properties.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/validate.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit_simulation.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/connection.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/dendrogram.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/exceptions.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/graph.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/hoc/Cell.hoc +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/hoc/RNGSettings.hoc +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/hoc/TDistFunc.hoc +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/hoc/TStim.hoc +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/hoc/fileUtils.hoc +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/importer.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/neuron_interpreter.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/plotwindow.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/psection.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/psegment.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/reports/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/reports/manager.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/reports/utils.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/reports/writers/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/reports/writers/base_writer.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/reports/writers/compartment.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/reports/writers/spikes.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/rngsettings.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/simulation/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/simulation/neuron_globals.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/simulation/parallel.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/simulation/report.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/simulation/simulation.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/stimulus/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/stimulus/circuit_stimulus_definitions.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/stimulus/factory.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/stimulus/stimulus.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/synapse/__init__.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/synapse/synapse_factory.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/synapse/synapse_types.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/type_aliases.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/utils.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/validation/validation.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/verbosity.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab.egg-info/SOURCES.txt +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab.egg-info/dependency_links.txt +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab.egg-info/top_level.txt +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/Makefile +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/images/voltage-readme.png +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/make.bat +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/requirements_docs.txt +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/_static/.gitkeep +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/api.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/changelog.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/compiling-mechanisms.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/conf.py +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/contributing.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/index.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/list_of_stim.rst +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/docs/source/logo/BlueCelluLabBanner.jpg +0 -0
- {bluecellulab-2.6.66 → bluecellulab-2.6.67}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluecellulab
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.67
|
|
4
4
|
Summary: Biologically detailed neural network simulations and analysis.
|
|
5
5
|
Author: Blue Brain Project, EPFL
|
|
6
6
|
License: Apache2.0
|
|
@@ -28,6 +28,8 @@ Requires-Dist: typing-extensions>=4.8.0
|
|
|
28
28
|
Requires-Dist: networkx>=3.1
|
|
29
29
|
Requires-Dist: h5py>=3.8.0
|
|
30
30
|
Requires-Dist: seaborn
|
|
31
|
+
Provides-Extra: examples
|
|
32
|
+
Requires-Dist: ipywidgets; extra == "examples"
|
|
31
33
|
Dynamic: license-file
|
|
32
34
|
|
|
33
35
|
|banner|
|
|
@@ -316,6 +316,7 @@ class Cell(InjectableMixin, PlottableMixin):
|
|
|
316
316
|
"""Adds recording to AIS."""
|
|
317
317
|
self.add_recording("self.axonal[1](0.5)._ref_v", dt=dt)
|
|
318
318
|
|
|
319
|
+
@deprecated("Use add_variable_recording('v', ...) instead.")
|
|
319
320
|
def add_voltage_recording(
|
|
320
321
|
self, section: Optional[NeuronSection] = None, segx: float = 0.5, dt: Optional[float] = None
|
|
321
322
|
) -> None:
|
|
@@ -334,6 +335,7 @@ class Cell(InjectableMixin, PlottableMixin):
|
|
|
334
335
|
var_name = section_to_voltage_recording_str(section, segx)
|
|
335
336
|
self.add_recording(var_name, dt)
|
|
336
337
|
|
|
338
|
+
@deprecated("Use get_variable_recording('v', ...) instead.")
|
|
337
339
|
def get_voltage_recording(
|
|
338
340
|
self, section: Optional[NeuronSection] = None, segx: float = 0.5
|
|
339
341
|
) -> np.ndarray:
|
|
@@ -760,17 +762,66 @@ class Cell(InjectableMixin, PlottableMixin):
|
|
|
760
762
|
"""Get a vector of AIS voltage."""
|
|
761
763
|
return self.get_recording('self.axonal[1](0.5)._ref_v')
|
|
762
764
|
|
|
763
|
-
def add_variable_recording(
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
765
|
+
def add_variable_recording(
|
|
766
|
+
self,
|
|
767
|
+
variable: str,
|
|
768
|
+
section: Optional[NeuronSection] = None,
|
|
769
|
+
segx: float = 0.5,
|
|
770
|
+
dt: Optional[float] = None
|
|
771
|
+
) -> None:
|
|
772
|
+
"""Add a recording of any NEURON RANGE variable (e.g., gna, gk, ina)
|
|
773
|
+
from a given section and segment.
|
|
768
774
|
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
775
|
+
Args:
|
|
776
|
+
variable: The NEURON variable name to record (e.g., "gna").
|
|
777
|
+
section: The section to record from (defaults to soma).
|
|
778
|
+
segx: Segment position between 0 and 1.
|
|
779
|
+
dt: Optional recording time step.
|
|
780
|
+
"""
|
|
781
|
+
|
|
782
|
+
if section is None:
|
|
783
|
+
section = self.soma
|
|
784
|
+
|
|
785
|
+
# Optional: validate before constructing the string
|
|
786
|
+
seg = section(segx)
|
|
787
|
+
if "." in variable:
|
|
788
|
+
mech, var = variable.split(".", 1)
|
|
789
|
+
mobj = getattr(seg, mech, None)
|
|
790
|
+
if mobj is None or not hasattr(mobj, f"_ref_{var}"):
|
|
791
|
+
raise ValueError(
|
|
792
|
+
f"'{variable}' not recordable at {section.name()}({segx}). "
|
|
793
|
+
f"Mechanisms here: {list(section.psection()['density_mechs'].keys())}"
|
|
794
|
+
)
|
|
772
795
|
else:
|
|
773
|
-
|
|
796
|
+
if not hasattr(seg, f"_ref_{variable}"):
|
|
797
|
+
raise ValueError(
|
|
798
|
+
f"'{variable}' not recordable at {section.name()}({segx}). "
|
|
799
|
+
f"(Top-level vars are typically v/ina/ik/ica)"
|
|
800
|
+
)
|
|
801
|
+
|
|
802
|
+
var_name = section_to_variable_recording_str(section, segx, variable)
|
|
803
|
+
self.add_recording(var_name, dt)
|
|
804
|
+
|
|
805
|
+
def get_variable_recording(
|
|
806
|
+
self, variable: str, section: Optional[NeuronSection], segx: float
|
|
807
|
+
) -> np.ndarray:
|
|
808
|
+
"""Get a recording of any variable recorded from a section and segment.
|
|
809
|
+
|
|
810
|
+
Args:
|
|
811
|
+
variable: The name of the recorded variable (e.g., 'v', 'gna').
|
|
812
|
+
section: The NEURON section object.
|
|
813
|
+
segx: Segment location from 0 to 1.
|
|
814
|
+
|
|
815
|
+
Returns:
|
|
816
|
+
NumPy array of recorded values.
|
|
817
|
+
|
|
818
|
+
Raises:
|
|
819
|
+
ValueError: If the recording is not found.
|
|
820
|
+
"""
|
|
821
|
+
if section is None:
|
|
822
|
+
section = self.soma
|
|
823
|
+
recording_name = section_to_variable_recording_str(section, segx, variable)
|
|
824
|
+
return self.get_recording(recording_name)
|
|
774
825
|
|
|
775
826
|
@property
|
|
776
827
|
def n_segments(self) -> int:
|
|
@@ -843,3 +894,24 @@ class Cell(InjectableMixin, PlottableMixin):
|
|
|
843
894
|
|
|
844
895
|
def __del__(self):
|
|
845
896
|
self.delete()
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
def section_to_variable_recording_str(section, segx: float, variable: str) -> str:
|
|
900
|
+
"""Build an evaluable NEURON pointer string for `add_recording`.
|
|
901
|
+
|
|
902
|
+
Accepts:
|
|
903
|
+
- top-level vars: "v", "ina", "ik", ...
|
|
904
|
+
- mechanism-scoped vars: "kca.gkca", "na3.m", "na3.h", ...
|
|
905
|
+
|
|
906
|
+
Returns examples:
|
|
907
|
+
neuron.h.soma[0](0.5)._ref_v
|
|
908
|
+
neuron.h.soma[0](0.5)._ref_ina
|
|
909
|
+
neuron.h.soma[0](0.5).kca._ref_gkca
|
|
910
|
+
neuron.h.dend[3](0.7).na3._ref_m
|
|
911
|
+
"""
|
|
912
|
+
sec_name = section.name()
|
|
913
|
+
if "." in variable:
|
|
914
|
+
mech, var = variable.split(".", 1)
|
|
915
|
+
return f"neuron.h.{sec_name}({segx}).{mech}._ref_{var}"
|
|
916
|
+
else:
|
|
917
|
+
return f"neuron.h.{sec_name}({segx})._ref_{variable}"
|
|
@@ -632,3 +632,108 @@ def compute_memodel_properties(
|
|
|
632
632
|
)
|
|
633
633
|
|
|
634
634
|
return {"holding_current": holding_current, "rheobase": rheobase, "rin": rin}
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
def list_segment_ion_variables(cell, xs=(0.5,)):
|
|
638
|
+
"""Enumerate top-level ionic variables (e.g. v, ina, ik, gna) available for
|
|
639
|
+
each section at specified segment locations.
|
|
640
|
+
|
|
641
|
+
Includes:
|
|
642
|
+
- Membrane potential (v)
|
|
643
|
+
- Standard ionic currents (ina, ik, ica, icl)
|
|
644
|
+
- Reversal potentials (ena, ek, eca, ecl)
|
|
645
|
+
- Conductances if exposed (gna, gk, gca, gcl)
|
|
646
|
+
"""
|
|
647
|
+
out = {}
|
|
648
|
+
for sec in cell.sections.values():
|
|
649
|
+
xmap = {}
|
|
650
|
+
for x in xs:
|
|
651
|
+
seg = sec(x)
|
|
652
|
+
|
|
653
|
+
vars_ = []
|
|
654
|
+
# voltage always there
|
|
655
|
+
if hasattr(seg, "_ref_v"):
|
|
656
|
+
vars_.append("v")
|
|
657
|
+
|
|
658
|
+
# ionic currents (present if mechanisms with ions are inserted)
|
|
659
|
+
for ion in ("na", "k", "ca", "cl"):
|
|
660
|
+
if hasattr(seg, f"_ref_i{ion}"):
|
|
661
|
+
vars_.append(f"i{ion}")
|
|
662
|
+
if hasattr(seg, f"_ref_e{ion}"):
|
|
663
|
+
vars_.append(f"e{ion}")
|
|
664
|
+
if hasattr(seg, f"_ref_g{ion}"):
|
|
665
|
+
vars_.append(f"g{ion}")
|
|
666
|
+
|
|
667
|
+
xmap[float(x)] = sorted(set(vars_))
|
|
668
|
+
|
|
669
|
+
out[sec.name()] = xmap
|
|
670
|
+
return out
|
|
671
|
+
|
|
672
|
+
|
|
673
|
+
def list_segment_mechanism_variables(cell, xs=(0.5,), include_point_mechs=False):
|
|
674
|
+
"""Enumerate mechanism-scoped recordables per section/segment.
|
|
675
|
+
|
|
676
|
+
Returns:
|
|
677
|
+
dict: A nested dictionary of the form::
|
|
678
|
+
|
|
679
|
+
{
|
|
680
|
+
"<secname>": {
|
|
681
|
+
x: {
|
|
682
|
+
"mech": {
|
|
683
|
+
"<density_mech>": [<vars>],
|
|
684
|
+
...
|
|
685
|
+
},
|
|
686
|
+
"point": {
|
|
687
|
+
"<point_mech>": [<vars>],
|
|
688
|
+
...
|
|
689
|
+
} # present only if include_point_mechs
|
|
690
|
+
},
|
|
691
|
+
...
|
|
692
|
+
},
|
|
693
|
+
...
|
|
694
|
+
}
|
|
695
|
+
"""
|
|
696
|
+
out = {}
|
|
697
|
+
for sec in cell.sections.values():
|
|
698
|
+
dens = sec.psection().get("density_mechs", {}) or {}
|
|
699
|
+
points = sec.psection().get("point_mechs", {}) or {}
|
|
700
|
+
xmap = {}
|
|
701
|
+
|
|
702
|
+
for x in xs:
|
|
703
|
+
seg = sec(x)
|
|
704
|
+
|
|
705
|
+
# Density mechanisms
|
|
706
|
+
mech_map = {}
|
|
707
|
+
for mech, vardict in dens.items():
|
|
708
|
+
mobj = getattr(seg, mech, None)
|
|
709
|
+
if mobj is None:
|
|
710
|
+
continue
|
|
711
|
+
# take var names advertised by psection(), keep those that are actually _ref_-exposed
|
|
712
|
+
vars_found = sorted(
|
|
713
|
+
v for v in vardict.keys()
|
|
714
|
+
if hasattr(mobj, f"_ref_{v}")
|
|
715
|
+
)
|
|
716
|
+
if vars_found:
|
|
717
|
+
mech_map[mech] = vars_found
|
|
718
|
+
|
|
719
|
+
entry = {"mech": mech_map}
|
|
720
|
+
|
|
721
|
+
# Point processes
|
|
722
|
+
if include_point_mechs:
|
|
723
|
+
pp_map = {}
|
|
724
|
+
for pp, vardict in points.items():
|
|
725
|
+
pobj = getattr(seg, pp, None)
|
|
726
|
+
if pobj is None:
|
|
727
|
+
continue
|
|
728
|
+
vars_found = sorted(
|
|
729
|
+
v for v in vardict.keys()
|
|
730
|
+
if hasattr(pobj, f"_ref_{v}")
|
|
731
|
+
)
|
|
732
|
+
if vars_found:
|
|
733
|
+
pp_map[pp] = vars_found
|
|
734
|
+
entry["point"] = pp_map
|
|
735
|
+
|
|
736
|
+
xmap[float(x)] = entry
|
|
737
|
+
|
|
738
|
+
out[sec.name()] = xmap
|
|
739
|
+
return out
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluecellulab
|
|
3
|
-
Version: 2.6.
|
|
3
|
+
Version: 2.6.67
|
|
4
4
|
Summary: Biologically detailed neural network simulations and analysis.
|
|
5
5
|
Author: Blue Brain Project, EPFL
|
|
6
6
|
License: Apache2.0
|
|
@@ -28,6 +28,8 @@ Requires-Dist: typing-extensions>=4.8.0
|
|
|
28
28
|
Requires-Dist: networkx>=3.1
|
|
29
29
|
Requires-Dist: h5py>=3.8.0
|
|
30
30
|
Requires-Dist: seaborn
|
|
31
|
+
Provides-Extra: examples
|
|
32
|
+
Requires-Dist: ipywidgets; extra == "examples"
|
|
31
33
|
Dynamic: license-file
|
|
32
34
|
|
|
33
35
|
|banner|
|
|
@@ -41,6 +41,11 @@ dependencies = [
|
|
|
41
41
|
]
|
|
42
42
|
requires-python = ">=3.9"
|
|
43
43
|
|
|
44
|
+
[project.optional-dependencies]
|
|
45
|
+
examples = [
|
|
46
|
+
"ipywidgets",
|
|
47
|
+
]
|
|
48
|
+
|
|
44
49
|
[project.urls]
|
|
45
50
|
Homepage = "https://github.com/openbraininstitute/BlueCelluLab"
|
|
46
51
|
Documentation = "https://bluecellulab.readthedocs.io/"
|
|
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.66 → bluecellulab-2.6.67}/bluecellulab/circuit/circuit_access/definition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.66 → bluecellulab-2.6.67}/bluecellulab/circuit/config/bluepy_simulation_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.66 → bluecellulab-2.6.67}/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
|
|
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.66 → bluecellulab-2.6.67}/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
|