bluecellulab 2.6.54__tar.gz → 2.6.55__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.54 → bluecellulab-2.6.55}/PKG-INFO +1 -1
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/config/sonata_simulation_config.py +1 -1
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit_simulation.py +7 -6
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/simulation/report.py +45 -8
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab.egg-info/PKG-INFO +1 -1
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.compile_mod.sh +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.gitattributes +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.github/dependabot.yml +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.github/workflows/release.yml +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.github/workflows/test.yml +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.gitignore +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.gitlab-ci.yml +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.readthedocs.yml +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/.zenodo.json +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/AUTHORS.txt +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/CHANGELOG.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/CITATION.cff +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/CONTRIBUTING.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/LICENSE +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/MANIFEST.in +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/Makefile +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/README.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/analysis/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/analysis/analysis.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/analysis/inject_sequence.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/analysis/plotting.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/analysis/utils.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/ballstick/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/ballstick/emodel.hoc +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/ballstick/morphology.asc +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/cell_dict.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/core.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/injector.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/plotting.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/random.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/recording.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/section_distance.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/serialized_sections.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/sonata_proxy.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/stimuli_generator.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/cell/template.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/circuit_access/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/circuit_access/bluepy_circuit_access.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/circuit_access/definition.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/circuit_access/sonata_circuit_access.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/config/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/config/bluepy_simulation_config.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/config/definition.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/config/sections.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/format.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/iotools.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/node_id.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/simulation_access.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/synapse_properties.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/validate.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/connection.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/dendrogram.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/exceptions.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/graph.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/hoc/Cell.hoc +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/hoc/RNGSettings.hoc +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/hoc/TDistFunc.hoc +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/hoc/TStim.hoc +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/hoc/fileUtils.hoc +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/importer.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/neuron_interpreter.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/plotwindow.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/psection.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/psegment.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/rngsettings.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/simulation/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/simulation/neuron_globals.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/simulation/parallel.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/simulation/simulation.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/stimulus/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/stimulus/circuit_stimulus_definitions.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/stimulus/factory.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/stimulus/stimulus.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/synapse/__init__.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/synapse/synapse_factory.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/synapse/synapse_types.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/tools.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/type_aliases.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/utils.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/validation/validation.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/verbosity.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab.egg-info/SOURCES.txt +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab.egg-info/dependency_links.txt +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab.egg-info/requires.txt +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab.egg-info/top_level.txt +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/Makefile +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/images/voltage-readme.png +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/make.bat +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/requirements_docs.txt +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/_static/.gitkeep +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/api.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/changelog.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/compiling-mechanisms.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/conf.py +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/contributing.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/index.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/list_of_stim.rst +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/docs/source/logo/BlueCelluLabBanner.jpg +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/pyproject.toml +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/setup.cfg +0 -0
- {bluecellulab-2.6.54 → bluecellulab-2.6.55}/tox.ini +0 -0
{bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/config/sonata_simulation_config.py
RENAMED
|
@@ -177,7 +177,7 @@ class SonataSimulationConfig:
|
|
|
177
177
|
@property
|
|
178
178
|
def spikes_file_path(self) -> Path:
|
|
179
179
|
output_dir = Path(self.output_root_path)
|
|
180
|
-
spikes_file = self.impl.config.get("output", {}).get("spikes_file", "
|
|
180
|
+
spikes_file = self.impl.config.get("output", {}).get("spikes_file", "out.h5")
|
|
181
181
|
return output_dir / spikes_file
|
|
182
182
|
|
|
183
183
|
@property
|
|
@@ -311,8 +311,8 @@ class CircuitSimulation:
|
|
|
311
311
|
|
|
312
312
|
# add spike recordings
|
|
313
313
|
for cell in self.cells.values():
|
|
314
|
-
if not cell.is_recording_spikes(
|
|
315
|
-
cell.start_recording_spikes(None, location=
|
|
314
|
+
if not cell.is_recording_spikes(self.spike_location, threshold=self.spike_threshold):
|
|
315
|
+
cell.start_recording_spikes(None, location=self.spike_location, threshold=self.spike_threshold)
|
|
316
316
|
|
|
317
317
|
def _add_stimuli(self, add_noise_stimuli=False,
|
|
318
318
|
add_hyperpolarizing_stimuli=False,
|
|
@@ -474,7 +474,6 @@ class CircuitSimulation:
|
|
|
474
474
|
filtered_dicts = [d for d in train_dicts if isinstance(d, dict) and d]
|
|
475
475
|
|
|
476
476
|
if not filtered_dicts:
|
|
477
|
-
logger.warning("merge_pre_spike_trains: No presynaptic spike trains found.")
|
|
478
477
|
return {}
|
|
479
478
|
|
|
480
479
|
all_keys = set().union(*[d.keys() for d in filtered_dicts])
|
|
@@ -832,7 +831,8 @@ class CircuitSimulation:
|
|
|
832
831
|
cells=self.cells,
|
|
833
832
|
report_cfg=report_cfg,
|
|
834
833
|
source_sets=compartment_sets,
|
|
835
|
-
source_type="compartment_set"
|
|
834
|
+
source_type="compartment_set",
|
|
835
|
+
sim_dt=self.dt,
|
|
836
836
|
)
|
|
837
837
|
|
|
838
838
|
else:
|
|
@@ -848,7 +848,8 @@ class CircuitSimulation:
|
|
|
848
848
|
cells=self.cells,
|
|
849
849
|
report_cfg=report_cfg,
|
|
850
850
|
source_sets=node_sets,
|
|
851
|
-
source_type="node_set"
|
|
851
|
+
source_type="node_set",
|
|
852
|
+
sim_dt=self.dt,
|
|
852
853
|
)
|
|
853
854
|
|
|
854
855
|
self.write_spike_report()
|
|
@@ -868,7 +869,7 @@ class CircuitSimulation:
|
|
|
868
869
|
if pop is None:
|
|
869
870
|
continue
|
|
870
871
|
try:
|
|
871
|
-
cell_spikes = cell.get_recorded_spikes(location=
|
|
872
|
+
cell_spikes = cell.get_recorded_spikes(location=self.spike_location, threshold=self.spike_threshold)
|
|
872
873
|
if cell_spikes is not None:
|
|
873
874
|
spikes_by_population[pop][gid.id] = list(cell_spikes)
|
|
874
875
|
except AttributeError:
|
|
@@ -92,6 +92,7 @@ def write_compartment_report(
|
|
|
92
92
|
report_cfg: dict,
|
|
93
93
|
source_sets: dict,
|
|
94
94
|
source_type: str,
|
|
95
|
+
sim_dt: float
|
|
95
96
|
):
|
|
96
97
|
"""Write a SONATA-compatible compartment report to an HDF5 file.
|
|
97
98
|
|
|
@@ -109,6 +110,7 @@ def write_compartment_report(
|
|
|
109
110
|
- "cells" or "compartments": Name of the node or compartment set.
|
|
110
111
|
source_sets (dict): Dictionary of either node sets or compartment sets.
|
|
111
112
|
source_type (str): Either "node_set" or "compartment_set".
|
|
113
|
+
sim_dt (float): Simulation time step used for the recorded data.
|
|
112
114
|
|
|
113
115
|
Raises:
|
|
114
116
|
ValueError: If the specified source set is not found.
|
|
@@ -157,25 +159,60 @@ def write_compartment_report(
|
|
|
157
159
|
return
|
|
158
160
|
|
|
159
161
|
write_sonata_report_file(
|
|
160
|
-
output_path, population, data_matrix, recorded_node_ids, index_pointers, element_ids, report_cfg
|
|
162
|
+
output_path, population, data_matrix, recorded_node_ids, index_pointers, element_ids, report_cfg, sim_dt
|
|
161
163
|
)
|
|
162
164
|
|
|
163
165
|
|
|
164
166
|
def write_sonata_report_file(
|
|
165
|
-
output_path,
|
|
167
|
+
output_path,
|
|
168
|
+
population,
|
|
169
|
+
data_matrix,
|
|
170
|
+
recorded_node_ids,
|
|
171
|
+
index_pointers,
|
|
172
|
+
element_ids,
|
|
173
|
+
report_cfg,
|
|
174
|
+
sim_dt
|
|
166
175
|
):
|
|
167
|
-
|
|
176
|
+
start_time = float(report_cfg.get("start_time", 0.0))
|
|
177
|
+
end_time = float(report_cfg.get("end_time", 0.0))
|
|
178
|
+
dt_report = float(report_cfg.get("dt", sim_dt))
|
|
179
|
+
|
|
180
|
+
# Clamp dt_report if finer than simuldation dt
|
|
181
|
+
if dt_report < sim_dt:
|
|
182
|
+
logger.warning(
|
|
183
|
+
f"Requested report dt={dt_report} ms is finer than simulation dt={sim_dt} ms. "
|
|
184
|
+
f"Clamping report dt to {sim_dt} ms."
|
|
185
|
+
)
|
|
186
|
+
dt_report = sim_dt
|
|
187
|
+
|
|
188
|
+
step = int(round(dt_report / sim_dt))
|
|
189
|
+
if not np.isclose(step * sim_dt, dt_report, atol=1e-9):
|
|
190
|
+
raise ValueError(
|
|
191
|
+
f"dt_report={dt_report} is not an integer multiple of dt_data={sim_dt}"
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
# Downsample the data if needed
|
|
195
|
+
# Compute start and end indices in the original data
|
|
196
|
+
start_index = int(round(start_time / sim_dt))
|
|
197
|
+
end_index = int(round(end_time / sim_dt)) + 1 # inclusive
|
|
198
|
+
|
|
199
|
+
# Now slice and downsample
|
|
200
|
+
data_matrix_downsampled = [
|
|
201
|
+
trace[start_index:end_index:step] for trace in data_matrix
|
|
202
|
+
]
|
|
203
|
+
data_array = np.stack(data_matrix_downsampled, axis=1).astype(np.float32)
|
|
204
|
+
|
|
205
|
+
# Prepare metadata arrays
|
|
168
206
|
node_ids_arr = np.array(recorded_node_ids, dtype=np.uint64)
|
|
169
207
|
index_ptr_arr = np.array(index_pointers, dtype=np.uint64)
|
|
170
208
|
element_ids_arr = np.array(element_ids, dtype=np.uint32)
|
|
171
|
-
time_array = np.array([
|
|
172
|
-
report_cfg.get("start_time", 0.0),
|
|
173
|
-
report_cfg.get("end_time", 0.0),
|
|
174
|
-
report_cfg.get("dt", 0.1)
|
|
175
|
-
], dtype=np.float64)
|
|
209
|
+
time_array = np.array([start_time, end_time, dt_report], dtype=np.float64)
|
|
176
210
|
|
|
211
|
+
# Ensure output directory exists
|
|
177
212
|
output_path = Path(output_path)
|
|
178
213
|
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
214
|
+
|
|
215
|
+
# Write to HDF5
|
|
179
216
|
with h5py.File(output_path, "w") as f:
|
|
180
217
|
grp = f.require_group(f"/report/{population}")
|
|
181
218
|
data_ds = grp.create_dataset("data", data=data_array.astype(np.float32))
|
|
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
|
|
File without changes
|
{bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/circuit_access/definition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.54 → bluecellulab-2.6.55}/bluecellulab/circuit/config/bluepy_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
|
{bluecellulab-2.6.54 → bluecellulab-2.6.55}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|