bluecellulab 2.6.69__tar.gz → 2.6.71__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 (117) hide show
  1. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/PKG-INFO +1 -1
  2. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/core.py +12 -1
  3. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/config/sonata_simulation_config.py +16 -2
  4. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/stimulus/circuit_stimulus_definitions.py +3 -9
  5. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/tools.py +1 -1
  6. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab.egg-info/PKG-INFO +1 -1
  7. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.compile_mod.sh +0 -0
  8. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.gitattributes +0 -0
  9. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.github/dependabot.yml +0 -0
  10. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.github/workflows/release.yml +0 -0
  11. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.github/workflows/test.yml +0 -0
  12. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.gitignore +0 -0
  13. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.gitlab-ci.yml +0 -0
  14. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.readthedocs.yml +0 -0
  15. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/.zenodo.json +0 -0
  16. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/AUTHORS.txt +0 -0
  17. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/CHANGELOG.rst +0 -0
  18. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/CITATION.cff +0 -0
  19. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/CONTRIBUTING.rst +0 -0
  20. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/LICENSE +0 -0
  21. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/MANIFEST.in +0 -0
  22. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/Makefile +0 -0
  23. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/README.rst +0 -0
  24. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/__init__.py +0 -0
  25. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/analysis/__init__.py +0 -0
  26. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/analysis/analysis.py +0 -0
  27. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/analysis/inject_sequence.py +0 -0
  28. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/analysis/plotting.py +0 -0
  29. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/analysis/utils.py +0 -0
  30. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/__init__.py +0 -0
  31. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/ballstick/__init__.py +0 -0
  32. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/ballstick/emodel.hoc +0 -0
  33. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/ballstick/morphology.asc +0 -0
  34. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/cell_dict.py +0 -0
  35. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/injector.py +0 -0
  36. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/plotting.py +0 -0
  37. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/random.py +0 -0
  38. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/recording.py +0 -0
  39. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/section_distance.py +0 -0
  40. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/section_tools.py +0 -0
  41. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/serialized_sections.py +0 -0
  42. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/sonata_proxy.py +0 -0
  43. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/stimuli_generator.py +0 -0
  44. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/cell/template.py +0 -0
  45. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/__init__.py +0 -0
  46. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/circuit_access/__init__.py +0 -0
  47. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/circuit_access/bluepy_circuit_access.py +0 -0
  48. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/circuit_access/definition.py +0 -0
  49. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/circuit_access/sonata_circuit_access.py +0 -0
  50. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/config/__init__.py +0 -0
  51. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/config/bluepy_simulation_config.py +0 -0
  52. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/config/definition.py +0 -0
  53. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/config/sections.py +0 -0
  54. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/format.py +0 -0
  55. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/iotools.py +0 -0
  56. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/node_id.py +0 -0
  57. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/simulation_access.py +0 -0
  58. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/synapse_properties.py +0 -0
  59. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit/validate.py +0 -0
  60. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/circuit_simulation.py +0 -0
  61. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/connection.py +0 -0
  62. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/dendrogram.py +0 -0
  63. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/exceptions.py +0 -0
  64. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/graph.py +0 -0
  65. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/hoc/Cell.hoc +0 -0
  66. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/hoc/RNGSettings.hoc +0 -0
  67. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/hoc/TDistFunc.hoc +0 -0
  68. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/hoc/TStim.hoc +0 -0
  69. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/hoc/fileUtils.hoc +0 -0
  70. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/importer.py +0 -0
  71. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/neuron_interpreter.py +0 -0
  72. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/plotwindow.py +0 -0
  73. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/psection.py +0 -0
  74. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/psegment.py +0 -0
  75. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/reports/__init__.py +0 -0
  76. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/reports/manager.py +0 -0
  77. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/reports/utils.py +0 -0
  78. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/reports/writers/__init__.py +0 -0
  79. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/reports/writers/base_writer.py +0 -0
  80. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/reports/writers/compartment.py +0 -0
  81. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/reports/writers/spikes.py +0 -0
  82. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/rngsettings.py +0 -0
  83. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/simulation/__init__.py +0 -0
  84. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/simulation/neuron_globals.py +0 -0
  85. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/simulation/parallel.py +0 -0
  86. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/simulation/report.py +0 -0
  87. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/simulation/simulation.py +0 -0
  88. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/stimulus/__init__.py +0 -0
  89. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/stimulus/factory.py +0 -0
  90. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/stimulus/stimulus.py +0 -0
  91. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/synapse/__init__.py +0 -0
  92. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/synapse/synapse_factory.py +0 -0
  93. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/synapse/synapse_types.py +0 -0
  94. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/type_aliases.py +0 -0
  95. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/utils.py +0 -0
  96. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/validation/validation.py +0 -0
  97. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab/verbosity.py +0 -0
  98. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab.egg-info/SOURCES.txt +0 -0
  99. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab.egg-info/dependency_links.txt +0 -0
  100. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab.egg-info/requires.txt +0 -0
  101. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/bluecellulab.egg-info/top_level.txt +0 -0
  102. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/Makefile +0 -0
  103. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/images/voltage-readme.png +0 -0
  104. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/make.bat +0 -0
  105. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/requirements_docs.txt +0 -0
  106. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/_static/.gitkeep +0 -0
  107. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/api.rst +0 -0
  108. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/changelog.rst +0 -0
  109. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/compiling-mechanisms.rst +0 -0
  110. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/conf.py +0 -0
  111. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/contributing.rst +0 -0
  112. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/index.rst +0 -0
  113. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/list_of_stim.rst +0 -0
  114. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/docs/source/logo/BlueCelluLabBanner.jpg +0 -0
  115. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/pyproject.toml +0 -0
  116. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/setup.cfg +0 -0
  117. {bluecellulab-2.6.69 → bluecellulab-2.6.71}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluecellulab
3
- Version: 2.6.69
3
+ Version: 2.6.71
4
4
  Summary: Biologically detailed neural network simulations and analysis.
5
5
  Author: Blue Brain Project, EPFL
6
6
  License: Apache2.0
@@ -840,7 +840,18 @@ class Cell(InjectableMixin, PlottableMixin):
840
840
  connected to that cell."""
841
841
  if self.sonata_proxy is None:
842
842
  raise BluecellulabError("Cell: add_synapse_replay requires a sonata proxy.")
843
- synapse_spikes: dict = get_synapse_replay_spikes(stimulus.spike_file)
843
+
844
+ file_path = Path(stimulus.spike_file).expanduser()
845
+ if not file_path.is_absolute():
846
+ config_dir = stimulus.config_dir
847
+ if config_dir is not None:
848
+ file_path = Path(config_dir) / file_path
849
+
850
+ file_path = file_path.resolve()
851
+
852
+ if not file_path.exists():
853
+ raise FileNotFoundError(f"Spike file not found: {str(file_path)}")
854
+ synapse_spikes: dict = get_synapse_replay_spikes(str(file_path))
844
855
  for synapse_id, synapse in self.synapses.items():
845
856
  source_population = synapse.syn_description["source_population_name"]
846
857
  pre_gid = CellId(
@@ -55,8 +55,9 @@ class SonataSimulationConfig:
55
55
  inputs = self.impl.config.get("inputs")
56
56
  if inputs is None:
57
57
  return result
58
+ config_dir = self._get_config_dir()
58
59
  for value in inputs.values():
59
- stimulus = Stimulus.from_sonata(value)
60
+ stimulus = Stimulus.from_sonata(value, config_dir=config_dir)
60
61
  if stimulus:
61
62
  result.append(stimulus)
62
63
  return result
@@ -84,7 +85,11 @@ class SonataSimulationConfig:
84
85
  filepath = self.impl.config.get("compartment_sets_file")
85
86
  if not filepath:
86
87
  raise ValueError("No 'compartment_sets_file' entry found in SONATA config.")
87
- with open(filepath, 'r') as f:
88
+ config_dir = self._get_config_dir()
89
+ full_path = Path(filepath)
90
+ if config_dir is not None and not full_path.is_absolute():
91
+ full_path = Path(config_dir) / filepath
92
+ with open(full_path, 'r') as f:
88
93
  return json.load(f)
89
94
 
90
95
  @lru_cache(maxsize=1)
@@ -214,3 +219,12 @@ class SonataSimulationConfig:
214
219
  connection_override: ConnectionOverrides
215
220
  ) -> None:
216
221
  self._connection_overrides.append(connection_override)
222
+
223
+ def _get_config_dir(self):
224
+ # Prefer config_path, fallback to _simulation_config_path
225
+ config_path = getattr(self.impl, "config_path", None)
226
+ if config_path is None:
227
+ sim_config_path = getattr(self.impl, "_simulation_config_path", None)
228
+ if sim_config_path is not None:
229
+ config_path = Path(sim_config_path)
230
+ return str(config_path.parent) if config_path is not None else None
@@ -19,7 +19,6 @@ Run-time validates the data via Pydantic.
19
19
  from __future__ import annotations
20
20
 
21
21
  from enum import Enum
22
- from pathlib import Path
23
22
  from typing import Optional
24
23
  import warnings
25
24
 
@@ -212,7 +211,7 @@ class Stimulus:
212
211
  raise ValueError(f"Unknown pattern {pattern}")
213
212
 
214
213
  @classmethod
215
- def from_sonata(cls, stimulus_entry: dict) -> Optional[Stimulus]:
214
+ def from_sonata(cls, stimulus_entry: dict, config_dir: Optional[str] = None) -> Optional[Stimulus]:
216
215
  pattern = Pattern.from_sonata(stimulus_entry["module"])
217
216
  if pattern == Pattern.NOISE:
218
217
  return Noise(
@@ -259,6 +258,7 @@ class Stimulus:
259
258
  delay=stimulus_entry["delay"],
260
259
  duration=stimulus_entry["duration"],
261
260
  spike_file=stimulus_entry["spike_file"],
261
+ config_dir=config_dir,
262
262
  )
263
263
  elif pattern == Pattern.SHOT_NOISE:
264
264
  return ShotNoise(
@@ -361,13 +361,7 @@ class RelativeLinear(Stimulus):
361
361
  @dataclass(frozen=True, config=dict(extra="forbid"))
362
362
  class SynapseReplay(Stimulus):
363
363
  spike_file: str
364
-
365
- @field_validator("spike_file")
366
- @classmethod
367
- def spike_file_exists(cls, v):
368
- if not Path(v).exists():
369
- raise ValueError(f"spike_file {v} does not exist")
370
- return v
364
+ config_dir: Optional[str] = None
371
365
 
372
366
 
373
367
  @dataclass(frozen=True, config=dict(extra="forbid"))
@@ -127,7 +127,7 @@ def calculate_SS_voltage_subprocess(
127
127
  simulation.run(1000, cvode=template_accepts_cvode(template_path))
128
128
  time = cell.get_time()
129
129
  voltage = cell.get_voltage_recording(section=neuron_section, segx=segx)
130
- SS_voltage = np.mean(voltage[np.where((time < 1000) & (time > 800))])
130
+ SS_voltage = np.mean(voltage[np.where((time <= 1000) & (time > 800))])
131
131
  cell.delete()
132
132
 
133
133
  if check_for_spiking:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluecellulab
3
- Version: 2.6.69
3
+ Version: 2.6.71
4
4
  Summary: Biologically detailed neural network simulations and analysis.
5
5
  Author: Blue Brain Project, EPFL
6
6
  License: Apache2.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes