Skip to content
This repository was archived by the owner on Feb 26, 2025. It is now read-only.

Commit c995b87

Browse files
committed
Move spine_morphologies_dir to edge population
* per BlueBrain/sonata-extension#62
1 parent f9f161f commit c995b87

File tree

6 files changed

+41
-33
lines changed

6 files changed

+41
-33
lines changed

include/bbp/sonata/config.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,6 @@ struct SONATA_API NodePopulationProperties: public CommonPopulationProperties {
9292
* mandatory.
9393
*/
9494
nonstd::optional<std::string> microdomainsFile{nonstd::nullopt};
95-
96-
/**
97-
* Path to the directory containing the dendritic spine morphologies.
98-
*/
99-
nonstd::optional<std::string> spineMorphologiesDir{nonstd::nullopt};
10095
};
10196

10297
/**
@@ -112,6 +107,11 @@ struct SONATA_API EdgePopulationProperties: public CommonPopulationProperties {
112107
* Path to spatial_segment_index
113108
*/
114109
nonstd::optional<std::string> endfeetMeshesFile{nonstd::nullopt};
110+
111+
/**
112+
* Path to the directory containing the dendritic spine morphologies.
113+
*/
114+
nonstd::optional<std::string> spineMorphologiesDir{nonstd::nullopt};
115115
};
116116

117117
/**

python/bindings.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -570,10 +570,7 @@ PYBIND11_MODULE(_libsonata, m) {
570570
DOC_NODE_POPULATION_PROPERTIES(vasculatureMesh))
571571
.def_readonly("microdomains_file",
572572
&NodePopulationProperties::microdomainsFile,
573-
DOC_NODE_POPULATION_PROPERTIES(microdomainsFile))
574-
.def_readonly("spine_morphologies_dir",
575-
&NodePopulationProperties::spineMorphologiesDir,
576-
DOC_NODE_POPULATION_PROPERTIES(spineMorphologiesDir));
573+
DOC_NODE_POPULATION_PROPERTIES(microdomainsFile));
577574

578575
py::class_<EdgePopulationProperties, CommonPopulationProperties>(
579576
m, "EdgePopulationProperties", "Stores edge population-specific network information")
@@ -582,7 +579,10 @@ PYBIND11_MODULE(_libsonata, m) {
582579
DOC_EDGE_POPULATION_PROPERTIES(spatialSynapseIndexDir))
583580
.def_readonly("endfeet_meshes_file",
584581
&EdgePopulationProperties::endfeetMeshesFile,
585-
DOC_EDGE_POPULATION_PROPERTIES(endfeetMeshesFile));
582+
DOC_EDGE_POPULATION_PROPERTIES(endfeetMeshesFile))
583+
.def_readonly("spine_morphologies_dir",
584+
&EdgePopulationProperties::spineMorphologiesDir,
585+
DOC_EDGE_POPULATION_PROPERTIES(spineMorphologiesDir));
586586

587587
py::enum_<CircuitConfig::ConfigStatus>(m, "CircuitConfigStatus")
588588
.value("invalid", CircuitConfig::ConfigStatus::invalid)

python/generated/docstrings.h

+18-16
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@ static const char *__doc_bbp_sonata_EdgePopulationProperties_endfeetMeshesFile =
181181

182182
static const char *__doc_bbp_sonata_EdgePopulationProperties_spatialSynapseIndexDir = R"doc(Path to spatial_synapse_index)doc";
183183

184+
static const char *__doc_bbp_sonata_EdgePopulationProperties_spineMorphologiesDir = R"doc(Path to the directory containing the dendritic spine morphologies.)doc";
185+
184186
static const char *__doc_bbp_sonata_EdgePopulation_EdgePopulation = R"doc()doc";
185187

186188
static const char *__doc_bbp_sonata_EdgePopulation_EdgePopulation_2 = R"doc()doc";
@@ -302,8 +304,6 @@ populations where it is mandatory.)doc";
302304

303305
static const char *__doc_bbp_sonata_NodePopulationProperties_spatialSegmentIndexDir = R"doc(Path to spatial_segment_index)doc";
304306

305-
static const char *__doc_bbp_sonata_NodePopulationProperties_spineMorphologiesDir = R"doc(Path to the directory containing the dendritic spine morphologies.)doc";
306-
307307
static const char *__doc_bbp_sonata_NodePopulationProperties_vasculatureFile =
308308
R"doc(Path to the .h5 file containing the vasculature morphology. Only for
309309
vasculature node populations where it is mandatory.)doc";
@@ -833,8 +833,6 @@ static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_ornstein_u
833833

834834
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_pulse = R"doc()doc";
835835

836-
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_sinusoidal = R"doc()doc";
837-
838836
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_relative_linear = R"doc()doc";
839837

840838
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_relative_ornstein_uhlenbeck = R"doc()doc";
@@ -845,6 +843,8 @@ static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_seclamp =
845843

846844
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_shot_noise = R"doc()doc";
847845

846+
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_sinusoidal = R"doc()doc";
847+
848848
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_subthreshold = R"doc()doc";
849849

850850
static const char *__doc_bbp_sonata_SimulationConfig_InputBase_Module_synapse_replay = R"doc()doc";
@@ -913,16 +913,6 @@ static const char *__doc_bbp_sonata_SimulationConfig_InputPulse_representsPhysic
913913

914914
static const char *__doc_bbp_sonata_SimulationConfig_InputPulse_width = R"doc(The length of time each pulse lasts (ms))doc";
915915

916-
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal = R"doc()doc";
917-
918-
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_ampStart = R"doc(The amount of current initially injected (nA))doc";
919-
920-
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_frequency = R"doc(The frequency of the waveform (Hz))doc";
921-
922-
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_dt = R"doc(Timestep of generated signal in ms. Default is 0.025 ms)doc";
923-
924-
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_representsPhysicalElectrode = R"doc(Whether this input represents a physical electrode. Default is false)doc";
925-
926916
static const char *__doc_bbp_sonata_SimulationConfig_InputRelativeLinear = R"doc()doc";
927917

928918
static const char *__doc_bbp_sonata_SimulationConfig_InputRelativeLinear_percentEnd = R"doc(The percentage of a cell's threshold current to inject at the end)doc";
@@ -1014,6 +1004,16 @@ static const char *__doc_bbp_sonata_SimulationConfig_InputShotNoise_reversal = R
10141004

10151005
static const char *__doc_bbp_sonata_SimulationConfig_InputShotNoise_riseTime = R"doc(The rise time of the bi-exponential shots (ms))doc";
10161006

1007+
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal = R"doc()doc";
1008+
1009+
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_ampStart = R"doc(The peak amplitude of the sinusoid. Given in nA.)doc";
1010+
1011+
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_dt = R"doc(Timestep of generated signal in ms. Default is 0.025 ms)doc";
1012+
1013+
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_frequency = R"doc(The frequency of the sinusoidal waveform. Given in Hz.)doc";
1014+
1015+
static const char *__doc_bbp_sonata_SimulationConfig_InputSinusoidal_representsPhysicalElectrode = R"doc(Whether this input represents a physical electrode. Default is false)doc";
1016+
10171017
static const char *__doc_bbp_sonata_SimulationConfig_InputSubthreshold = R"doc()doc";
10181018

10191019
static const char *__doc_bbp_sonata_SimulationConfig_InputSubthreshold_percentLess = R"doc(A percentage adjusted from 100 of a cell's threshold current)doc";
@@ -1334,14 +1334,16 @@ static const char *__doc_bbp_sonata_SpikeReader_Population_getRawArrays = R"doc(
13341334

13351335
static const char *__doc_bbp_sonata_SpikeReader_Population_getSorting = R"doc(Return the way data are sorted ('none', 'by_id', 'by_time'))doc";
13361336

1337-
static const char *__doc_bbp_sonata_SpikeReader_Population_getTimes = R"doc(Return (tstart, tstop) of the population)doc";
1338-
13391337
static const char *__doc_bbp_sonata_SpikeReader_Population_getTimeUnits = R"doc(Return the unit of time)doc";
13401338

1339+
static const char *__doc_bbp_sonata_SpikeReader_Population_getTimes = R"doc(Return (tstart, tstop) of the population)doc";
1340+
13411341
static const char *__doc_bbp_sonata_SpikeReader_Population_sorting = R"doc()doc";
13421342

13431343
static const char *__doc_bbp_sonata_SpikeReader_Population_spike_times = R"doc()doc";
13441344

1345+
static const char *__doc_bbp_sonata_SpikeReader_Population_time_units = R"doc()doc";
1346+
13451347
static const char *__doc_bbp_sonata_SpikeReader_Population_tstart = R"doc()doc";
13461348

13471349
static const char *__doc_bbp_sonata_SpikeReader_Population_tstop = R"doc()doc";

python/tests/test_config.py

+4
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ def test_get_population_properties(self):
6868

6969
self.assertEqual(edge_prop.types_path, '')
7070
self.assertTrue(edge_prop.elements_path.endswith('tests/data/edges1.h5'))
71+
self.assertTrue(edge_prop.spine_morphologies_dir.endswith('spine_morphologies_dir_edges-AC'))
72+
73+
edge_prop = self.config.edge_population_properties('edges-AB')
74+
self.assertTrue(edge_prop.spine_morphologies_dir.endswith('spine_morphologies_dir_component'))
7175

7276
def test_partial(self):
7377
contents = { "metadata": { "status": "NOT A TYPE" }, }

src/config.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -830,9 +830,6 @@ class CircuitConfig::Parser
830830
if (!component.microdomainsFile) {
831831
component.microdomainsFile = defaultComponents.microdomainsFile;
832832
}
833-
if (!component.spineMorphologiesDir) {
834-
component.spineMorphologiesDir = defaultComponents.spineMorphologiesDir;
835-
}
836833
}
837834
}
838835

@@ -846,6 +843,9 @@ class CircuitConfig::Parser
846843
if (!component.endfeetMeshesFile) {
847844
component.endfeetMeshesFile = defaultComponents.endfeetMeshesFile;
848845
}
846+
if (!component.spineMorphologiesDir) {
847+
component.spineMorphologiesDir = defaultComponents.spineMorphologiesDir;
848+
}
849849
}
850850
}
851851

@@ -926,8 +926,6 @@ class CircuitConfig::Parser
926926
popProperties.vasculatureFile = getOptionalJSONPath(popData, "vasculature_file");
927927
popProperties.vasculatureMesh = getOptionalJSONPath(popData, "vasculature_mesh");
928928
popProperties.microdomainsFile = getOptionalJSONPath(popData, "microdomains_file");
929-
popProperties.spineMorphologiesDir = getOptionalJSONPath(popData,
930-
"spine_morphologies_dir");
931929
});
932930
}
933931

@@ -939,6 +937,8 @@ class CircuitConfig::Parser
939937
[&](EdgePopulationProperties& popProperties, const nlohmann::json& popData) {
940938
popProperties.spatialSynapseIndexDir = getJSONPath(popData, "spatial_synapse_index_dir");
941939
popProperties.endfeetMeshesFile = getOptionalJSONPath(popData, "endfeet_meshes_file");
940+
popProperties.spineMorphologiesDir = getOptionalJSONPath(popData,
941+
"spine_morphologies_dir");
942942
});
943943
}
944944

tests/data/config/circuit_config.json

+4-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"morphologies_dir": "$COMPONENT_DIR/morphologies",
1010
"biophysical_neuron_models_dir": "$COMPONENT_DIR/biophysical_neuron_models",
1111
"vasculature_file": "$COMPONENT_DIR/some_file",
12-
"vasculature_mesh": "$COMPONENT_DIR/some_file"
12+
"vasculature_mesh": "$COMPONENT_DIR/some_file",
13+
"spine_morphologies_dir": "$COMPONENT_DIR/spine_morphologies_dir_component"
1314
},
1415
"node_sets_file": "$BASE_DIR/node_sets.json",
1516
"networks": {
@@ -33,7 +34,8 @@
3334
"populations": {
3435
"edges-AB": {},
3536
"edges-AC": {
36-
"spatial_synapse_index_dir": "$COMPONENT_DIR/spatial_synapse_index_dir"
37+
"spatial_synapse_index_dir": "$COMPONENT_DIR/spatial_synapse_index_dir",
38+
"spine_morphologies_dir": "$COMPONENT_DIR/spine_morphologies_dir_edges-AC"
3739
}
3840
}
3941
}

0 commit comments

Comments
 (0)