Source code for bmtk.tests.utils.sonata.test_config_validator

import pytest
from bmtk.utils.sonata.config import SonataConfig


[docs] def test_valid_config(): _ = pytest.importorskip('jsonschema') cfg = SonataConfig.from_dict({ "manifest": { "$BASE": "${configdir}" }, "target_simulator": "NEURON", "target_simulator_version": ">=7.4", 'run': { 'tstop': 3000.0, 'dt': 0.001 }, "networks": { "nodes": [ { "nodes_file": "nodes.h5", "node_types_file": "node_types.csv" }, { "nodes_file": "nodes2.h5", "node_types_file": "node_types2.csv" } ] }, "output": { 'output_dir': 'output', 'spikes_file': "null" }, "inputs": { "input1": { 'input_type': 'spikes', 'input_file': 'myspikes.csv' }, "input2": { 'input_type': 'voltage_clamp' } } }) assert(cfg.validate())
[docs] def test_negative_tstop(): _ = pytest.importorskip('jsonschema') cfg = SonataConfig.from_dict({ 'run': { 'tstop': -1.0 } }) with pytest.raises(Exception): cfg.validate()
[docs] def test_missing_nodes_file(): _ = pytest.importorskip('jsonschema') cfg = SonataConfig.from_dict({ "networks": { "nodes": [ { "node_types_file": "node_types.csv" }, ] } }) with pytest.raises(Exception): cfg.validate()
[docs] def test_inputs(): _ = pytest.importorskip('jsonschema') # valid inputs section cfg = SonataConfig.from_dict({ "inputs": { "input1": { 'input_type': 'str1', 'input_file': 'str2', 'trial': 'str2', 'module': 'str', 'electrode_file': 'str', 'node_set': 'str', 'random_seed': 100 } } }) assert(cfg.validate()) # Base inputs cfg = SonataConfig.from_dict({ "inputs": [{ 'input_type': 'spikes', 'input_file': 'myspikes.csv' }] }) with pytest.raises(Exception): cfg.validate() # missing input_type cfg = SonataConfig.from_dict({ "inputs": { "input1": { 'input_file': 'str2', 'trial': 'str2', 'module': 'myspikes.csv', 'electrode_file': 'myspikes.csv', 'node_set': 'myspikes.csv', 'random_seed': 100 } } }) with pytest.raises(Exception): cfg.validate()
if __name__ == '__main__': test_valid_config() test_negative_tstop() test_missing_nodes_file() test_inputs()