bluecellulab 2.6.56__tar.gz → 2.6.58__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.
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/PKG-INFO +1 -1
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/analysis/analysis.py +0 -1
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/validation/validation.py +59 -9
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab.egg-info/PKG-INFO +1 -1
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.compile_mod.sh +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.gitattributes +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.github/dependabot.yml +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.github/workflows/release.yml +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.github/workflows/test.yml +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.gitignore +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.gitlab-ci.yml +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.readthedocs.yml +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/.zenodo.json +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/AUTHORS.txt +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/CHANGELOG.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/CITATION.cff +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/CONTRIBUTING.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/LICENSE +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/MANIFEST.in +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/Makefile +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/README.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/analysis/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/analysis/inject_sequence.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/analysis/plotting.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/analysis/utils.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/ballstick/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/ballstick/emodel.hoc +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/ballstick/morphology.asc +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/cell_dict.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/core.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/injector.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/plotting.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/random.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/recording.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/section_distance.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/serialized_sections.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/sonata_proxy.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/stimuli_generator.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/cell/template.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/circuit_access/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/circuit_access/bluepy_circuit_access.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/circuit_access/definition.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/circuit_access/sonata_circuit_access.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/config/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/config/bluepy_simulation_config.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/config/definition.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/config/sections.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/config/sonata_simulation_config.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/format.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/iotools.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/node_id.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/simulation_access.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/synapse_properties.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/validate.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit_simulation.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/connection.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/dendrogram.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/exceptions.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/graph.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/hoc/Cell.hoc +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/hoc/RNGSettings.hoc +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/hoc/TDistFunc.hoc +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/hoc/TStim.hoc +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/hoc/fileUtils.hoc +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/importer.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/neuron_interpreter.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/plotwindow.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/psection.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/psegment.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/rngsettings.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/simulation/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/simulation/neuron_globals.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/simulation/parallel.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/simulation/report.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/simulation/simulation.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/stimulus/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/stimulus/circuit_stimulus_definitions.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/stimulus/factory.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/stimulus/stimulus.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/synapse/__init__.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/synapse/synapse_factory.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/synapse/synapse_types.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/tools.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/type_aliases.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/utils.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/verbosity.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab.egg-info/SOURCES.txt +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab.egg-info/dependency_links.txt +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab.egg-info/requires.txt +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab.egg-info/top_level.txt +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/Makefile +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/images/voltage-readme.png +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/make.bat +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/requirements_docs.txt +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/_static/.gitkeep +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/api.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/changelog.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/compiling-mechanisms.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/conf.py +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/contributing.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/index.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/list_of_stim.rst +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/docs/source/logo/BlueCelluLabBanner.jpg +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/pyproject.toml +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/setup.cfg +0 -0
- {bluecellulab-2.6.56 → bluecellulab-2.6.58}/tox.ini +0 -0
|
@@ -25,6 +25,7 @@ from bluecellulab.analysis.analysis import compute_plot_iv_curve
|
|
|
25
25
|
from bluecellulab.analysis.inject_sequence import run_multirecordings_stimulus
|
|
26
26
|
from bluecellulab.analysis.inject_sequence import run_stimulus
|
|
27
27
|
from bluecellulab.cell.core import Cell
|
|
28
|
+
from bluecellulab.simulation.neuron_globals import NeuronGlobals
|
|
28
29
|
from bluecellulab.stimulus.factory import IDRestTimings
|
|
29
30
|
from bluecellulab.stimulus.factory import StimulusFactory
|
|
30
31
|
from bluecellulab.tools import calculate_input_resistance
|
|
@@ -33,15 +34,17 @@ from bluecellulab.tools import calculate_rheobase
|
|
|
33
34
|
logger = logging.getLogger(__name__)
|
|
34
35
|
|
|
35
36
|
|
|
36
|
-
def plot_trace(recording, out_dir, fname, title):
|
|
37
|
+
def plot_trace(recording, out_dir, fname, title, plot_current=True):
|
|
37
38
|
"""Plot a trace with inout current given a recording."""
|
|
38
39
|
outpath = out_dir / fname
|
|
39
40
|
fig, ax1 = plt.subplots(figsize=(10, 6))
|
|
40
41
|
plt.plot(recording.time, recording.voltage, color="black")
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
if plot_current:
|
|
43
|
+
current_axis = ax1.twinx()
|
|
44
|
+
current_axis.plot(recording.time, recording.current, color="gray", alpha=0.6)
|
|
45
|
+
current_axis.set_ylabel("Stimulus Current [nA]")
|
|
46
|
+
if title:
|
|
47
|
+
fig.suptitle(title)
|
|
45
48
|
ax1.set_xlabel("Time [ms]")
|
|
46
49
|
ax1.set_ylabel("Voltage [mV]")
|
|
47
50
|
fig.tight_layout()
|
|
@@ -291,15 +294,17 @@ def hyperpolarization_test(template_params, rheobase, out_dir):
|
|
|
291
294
|
"stim_end": [IDRestTimings.PRE_DELAY.value + IDRestTimings.DURATION.value],
|
|
292
295
|
}
|
|
293
296
|
features_results = efel.get_feature_values([trace], ["voltage_base", "steady_state_voltage_stimend"])
|
|
294
|
-
rmp = features_results[0]["voltage_base"]
|
|
295
|
-
ss_voltage = features_results[0]["steady_state_voltage_stimend"]
|
|
296
|
-
if rmp is None or ss_voltage is None:
|
|
297
|
+
rmp = features_results[0]["voltage_base"]
|
|
298
|
+
ss_voltage = features_results[0]["steady_state_voltage_stimend"]
|
|
299
|
+
if rmp is None or len(rmp) == 0 or ss_voltage is None or len(ss_voltage) == 0:
|
|
297
300
|
return {
|
|
298
301
|
"name": name,
|
|
299
302
|
"passed": False,
|
|
300
303
|
"validation_details": "Validation failed: Could not determine RMP or steady state voltage.",
|
|
301
304
|
"figures": [outpath],
|
|
302
305
|
}
|
|
306
|
+
rmp = rmp[0]
|
|
307
|
+
ss_voltage = ss_voltage[0]
|
|
303
308
|
hyperpol_bool = bool(ss_voltage < rmp)
|
|
304
309
|
|
|
305
310
|
notes = (
|
|
@@ -408,8 +413,42 @@ def fi_test(template_params, rheobase, out_dir, spike_threshold_voltage=-30.):
|
|
|
408
413
|
}
|
|
409
414
|
|
|
410
415
|
|
|
416
|
+
def thumbnail_test(template_params, rheobase, out_dir):
|
|
417
|
+
"""Thumbnail test: creating a thumbnail."""
|
|
418
|
+
stim_factory = StimulusFactory(dt=1.0)
|
|
419
|
+
step_stimulus = stim_factory.idrest(threshold_current=rheobase, threshold_percentage=130)
|
|
420
|
+
recording = run_stimulus(
|
|
421
|
+
template_params,
|
|
422
|
+
step_stimulus,
|
|
423
|
+
"soma[0]",
|
|
424
|
+
0.5,
|
|
425
|
+
add_hypamp=True,
|
|
426
|
+
)
|
|
427
|
+
|
|
428
|
+
# plotting
|
|
429
|
+
outpath = plot_trace(
|
|
430
|
+
recording,
|
|
431
|
+
out_dir,
|
|
432
|
+
fname="thumbnail.pdf",
|
|
433
|
+
title="",
|
|
434
|
+
plot_current=False
|
|
435
|
+
)
|
|
436
|
+
|
|
437
|
+
return {
|
|
438
|
+
"name": "thumbnail",
|
|
439
|
+
"passed": True,
|
|
440
|
+
"validation_details": "",
|
|
441
|
+
"figures": [outpath],
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
|
|
411
445
|
def run_validations(
|
|
412
|
-
cell,
|
|
446
|
+
cell,
|
|
447
|
+
cell_name,
|
|
448
|
+
spike_threshold_voltage=-30,
|
|
449
|
+
v_init=-80.0,
|
|
450
|
+
celsius=34.0,
|
|
451
|
+
output_dir="./memodel_validation_figures"
|
|
413
452
|
):
|
|
414
453
|
"""Run all the validations on the cell.
|
|
415
454
|
|
|
@@ -417,11 +456,18 @@ def run_validations(
|
|
|
417
456
|
cell (Cell): The cell to validate.
|
|
418
457
|
cell_name (str): The name of the cell, used in the output directory.
|
|
419
458
|
spike_threshold_voltage (float): The voltage threshold for spike detection.
|
|
459
|
+
v_init: Initial membrane potential. Default is -80.0 mV.
|
|
460
|
+
celsius: Temperature in Celsius. Default is 34.0.
|
|
420
461
|
output_dir (str): The directory to save the validation figures.
|
|
421
462
|
"""
|
|
422
463
|
out_dir = pathlib.Path(output_dir) / cell_name
|
|
423
464
|
out_dir.mkdir(parents=True, exist_ok=True)
|
|
424
465
|
|
|
466
|
+
# set initial voltage and temperature
|
|
467
|
+
neuron_globals = NeuronGlobals.get_instance()
|
|
468
|
+
neuron_globals.temperature = celsius
|
|
469
|
+
neuron_globals.v_init = v_init
|
|
470
|
+
|
|
425
471
|
# get me-model properties
|
|
426
472
|
holding_current = cell.hypamp if cell.hypamp else 0.0
|
|
427
473
|
if cell.threshold:
|
|
@@ -471,6 +517,9 @@ def run_validations(
|
|
|
471
517
|
# Validation 9: FI Test
|
|
472
518
|
fi_test_result = fi_test(cell.template_params, rheobase, out_dir, spike_threshold_voltage)
|
|
473
519
|
|
|
520
|
+
# Validation 10: Thumbnail Test
|
|
521
|
+
thumbnail_result = thumbnail_test(cell.template_params, rheobase, out_dir)
|
|
522
|
+
|
|
474
523
|
return {
|
|
475
524
|
"memodel_properties": {
|
|
476
525
|
"holding_current": holding_current,
|
|
@@ -485,4 +534,5 @@ def run_validations(
|
|
|
485
534
|
"rin_test": rin_result,
|
|
486
535
|
"iv_test": iv_test_result,
|
|
487
536
|
"fi_test": fi_test_result,
|
|
537
|
+
"thumbnail_test": thumbnail_result,
|
|
488
538
|
}
|
|
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.56 → bluecellulab-2.6.58}/bluecellulab/circuit/circuit_access/definition.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.56 → bluecellulab-2.6.58}/bluecellulab/circuit/config/bluepy_simulation_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bluecellulab-2.6.56 → bluecellulab-2.6.58}/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
|
{bluecellulab-2.6.56 → bluecellulab-2.6.58}/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
|