From 4c75c50b73db837f97b98b6b1cded5bf9888330d Mon Sep 17 00:00:00 2001 From: Werner Van Geit Date: Tue, 20 Nov 2018 09:14:39 +0100 Subject: [PATCH] First version of sim test suite --- .../soma_cm2/bmtk_build/build_network.py | 24 +++++++ .../one_cell/soma_cm2/bmtk_test/.gitignore | 1 + .../one_cell/soma_cm2/bmtk_test/run.sh | 10 +++ .../soma_cm2/bmtk_test/test_output.py | 58 +++++++++++++++ .../expected_output/membrane_potential.h5 | Bin 0 -> 33712 bytes .../soma_cm2/expected_output/spikes.h5 | Bin 0 -> 7112 bytes .../soma_cm2/input/circuit_config.json | 20 ++++++ .../one_cell/soma_cm2/input/config.json | 1 + .../input/network/biophysical_node_types.csv | 2 + .../input/network/biophysical_nodes.h5 | Bin 0 -> 8536 bytes .../one_cell/soma_cm2/input/node_sets.json | 5 ++ .../soma_cm2/input/simulation_config.json | 55 +++++++++++++++ .../biophysical/one_cell/soma_cm2/pytest.ini | 3 + .../one_cell/soma_cm2/shared_components | 1 + .../soma_cm2_hh/bmtk_build/build_network.py | 24 +++++++ .../one_cell/soma_cm2_hh/bmtk_test/.gitignore | 1 + .../one_cell/soma_cm2_hh/bmtk_test/run.sh | 8 +++ .../soma_cm2_hh/bmtk_test/test_output.py | 66 ++++++++++++++++++ .../expected_output/membrane_potential.h5 | Bin 0 -> 33712 bytes .../soma_cm2_hh/expected_output/spikes.h5 | Bin 0 -> 7112 bytes .../soma_cm2_hh/input/circuit_config.json | 20 ++++++ .../one_cell/soma_cm2_hh/input/config.json | 1 + .../input/network/biophysical_node_types.csv | 2 + .../input/network/biophysical_nodes.h5 | Bin 0 -> 8536 bytes .../one_cell/soma_cm2_hh/input/node_sets.json | 5 ++ .../soma_cm2_hh/input/simulation_config.json | 55 +++++++++++++++ .../one_cell/soma_cm2_hh/pytest.ini | 3 + .../one_cell/soma_cm2_hh/shared_components | 1 + .../shared_components/configs/config.json | 4 ++ .../shared_components/morphologies/soma1.swc | 5 ++ .../shared_components/scripts/run_bionet.py | 19 +++++ .../templates/nml/soma_cm2.nml | 9 +++ .../templates/nml/soma_cm2_hh.nml | 13 ++++ 33 files changed, 416 insertions(+) create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_build/build_network.py create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/.gitignore create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/run.sh create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/test_output.py create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/expected_output/membrane_potential.h5 create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/expected_output/spikes.h5 create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2/input/circuit_config.json create mode 120000 examples/sim_tests/biophysical/one_cell/soma_cm2/input/config.json create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/input/network/biophysical_node_types.csv create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/input/network/biophysical_nodes.h5 create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/input/node_sets.json create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2/input/simulation_config.json create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2/pytest.ini create mode 120000 examples/sim_tests/biophysical/one_cell/soma_cm2/shared_components create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/bmtk_build/build_network.py create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/bmtk_test/.gitignore create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/bmtk_test/run.sh create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/bmtk_test/test_output.py create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/expected_output/membrane_potential.h5 create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/expected_output/spikes.h5 create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/circuit_config.json create mode 120000 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/config.json create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/network/biophysical_node_types.csv create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/network/biophysical_nodes.h5 create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/node_sets.json create mode 100755 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/simulation_config.json create mode 100644 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/pytest.ini create mode 120000 examples/sim_tests/biophysical/one_cell/soma_cm2_hh/shared_components create mode 100755 examples/sim_tests/shared_components/configs/config.json create mode 100644 examples/sim_tests/shared_components/morphologies/soma1.swc create mode 100755 examples/sim_tests/shared_components/scripts/run_bionet.py create mode 100755 examples/sim_tests/shared_components/templates/nml/soma_cm2.nml create mode 100755 examples/sim_tests/shared_components/templates/nml/soma_cm2_hh.nml diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_build/build_network.py b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_build/build_network.py new file mode 100755 index 0000000..7174787 --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_build/build_network.py @@ -0,0 +1,24 @@ +#!/bin/env python + +# Sonata Simulator Test Suite +# 1-cell circuit, single soma, only cm, 1 step current + +# Authors: Werner Van Geit @ BBP + +import bmtk.builder + +cell_models = [ + {'model_name': 'soma_cm', 'x': [0.0], + 'y': [0.0], + 'z': [0.0], + 'morphology': 'soma1', + 'model_template': 'nml:soma_cm2.nml'}] + +bio_cells = bmtk.builder.NetworkBuilder("biophysical") +for model_props in cell_models: + bio_cells.add_nodes( + model_type='biophysical', + **model_props) + +bio_cells.build() +bio_cells.save_nodes(output_dir='../input/network') diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/.gitignore b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/.gitignore new file mode 100644 index 0000000..1f57b97 --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/.gitignore @@ -0,0 +1 @@ +/output diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/run.sh b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/run.sh new file mode 100755 index 0000000..275a227 --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/run.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +set -e + +rm -rf output +rm -rf __pycache__ +# python -m trace --trace ../shared_components/scripts/run_bionet.py ../input/config.json +python ../shared_components/scripts/run_bionet.py ../input/config.json + +pytest -vvs diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/test_output.py b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/test_output.py new file mode 100644 index 0000000..46548ee --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2/bmtk_test/test_output.py @@ -0,0 +1,58 @@ +import os + +import numpy +import h5py +import pytest + +output_path = os.path.abspath( + os.path.join( + os.path.dirname(__file__), + 'output')) + +dt = 0.025 +tstop = 60.0 +stim_start = 20.0 +stim_end = 50.0 + +start_voltage = -80.0 +end_voltage = -20.0 + +# Using as 'raw' code as possible here, so as not to depend on other code +# that could contain errors + + +def test_soma_voltage(): + """Check soma voltages""" + + soma_voltage_path = os.path.join(output_path, 'membrane_potential.h5') + + assert os.path.exists(soma_voltage_path) + + voltage = h5py.File(soma_voltage_path)['data'].value + + assert len(voltage) == tstop / dt + + time = numpy.arange(0, len(voltage)) * dt + + soma_voltage_path = os.path.join(output_path, 'membrane_potential.h5') + + assert os.path.exists(soma_voltage_path) + assert voltage[0] == pytest.approx(start_voltage) + assert numpy.mean( + voltage[ + numpy.where(time < stim_start)]) == pytest.approx(start_voltage) + assert start_voltage < numpy.mean(voltage[numpy.where( + (time >= stim_start) & (time <= stim_end))]) < end_voltage + assert voltage[-1] == pytest.approx(end_voltage) + + +def test_spikes(): + """Check spike times""" + + spikes_path = os.path.join(output_path, 'spikes.h5') + + assert os.path.exists(spikes_path) + + spikes = h5py.File(spikes_path)['spikes']['timestamps'].value + + assert len(spikes) == 0 diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2/expected_output/membrane_potential.h5 b/examples/sim_tests/biophysical/one_cell/soma_cm2/expected_output/membrane_potential.h5 new file mode 100644 index 0000000000000000000000000000000000000000..04c7302269766da24d4f4ddc85a96014375281c2 GIT binary patch literal 33712 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 Ru;&4L9dqeeZLc!4M(8^cdnVvHw_`UXCNkHFO% zkHFC<@D+4AZ4Frsq8^CSNtkxqPG{!Zwq$!>+TK}6C<2OrBA^H;0*Zhlpa>`eiojn$0Q;l%o1Z`Y9qvdv z+~1TtNWVW}^k|y(H@No`Kw%yVuiXDh8Y$}C1iAItU&3|81-3e*Z3Iiq;+nmumvev{ x*>WP3`daRLU$&PYeGIusd32j)w3C0R{eE0!Y`|a}iZBffh+A;st_uzt&}MZ*RS_DvkS44Thvo9zNRS2-dhe!g-;7 zlW{zx`llJ;5<|Y9_kFmQ)$*zB+T=EmsAnj#pjH~`b;KcO?~5snXGq`w+7ve zEz%XpY_sv{=QE=BGB756ZA|9jrr{892si{B0uBL(z~~W>x-v%*Ue&rTj4f&mdjR?H zrsxA9RK5l#g%qK$>W6ZQoqpGTUq~^4n(Hra;Z>pI){nlfq(xb?A|}$f)|LN*$M5%s z>231LV= stim_start) & (time <= stim_end))]) < end_voltage + assert voltage[-1] == pytest.approx(end_voltage) + + +def test_spikes(): + """Check spike times""" + + spikes_path = os.path.join(output_path, 'spikes.h5') + + assert os.path.exists(spikes_path) + + spikes = h5py.File(spikes_path)['spikes']['timestamps'].value + + assert len(spikes) == 0 +''' diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/expected_output/membrane_potential.h5 b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/expected_output/membrane_potential.h5 new file mode 100644 index 0000000000000000000000000000000000000000..04c7302269766da24d4f4ddc85a96014375281c2 GIT binary patch literal 33712 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 Ru;&4L9dqeeZLc!4M(8^cdnVvHw_`UXCNkHFO% zkHFC<@D+4AZ4Frsq8^CSNtkxqPG{!Zwq$!>+TK}6C<2OrBA^H;0*Zhlpa>`eiojn$0Q;l%o1Z`Y9qvdv z+~1TtNWVW}^k|y(H@No`Kw%yVuiXDh8Y$}C1iAItU&3|81-3e*Z3Iiq;+nmumvev{ x*>WP3`daRLU$&PYeGIusd32j)w3C0R{eE0!Y`|a}iZBf1gh5T3Jfa!MR2K@k`T;*cmPU8G3IA;st_uzX+4jkQK$D>YqL?mB?7aKd27V!JKeD6pqdm z0#WIHnHOBqRU=BjX`BI!W~)~37yipFa^uJcqhdxhUKM|tw;_0~>f+sHgG z))NJ`$2|6AhZ);YpYsi0pm+7%PNUWAf6kL9u{=YuAiQX_+Aq7E#`e}Lt3up|Fc^|PdH86PBN%aaq~`_v z#^ZQM_cLRjln2aFZ`)nn-)VW^WL4~ucV`Abw@`}!^1xTcqpY;JHd=t@epgo!!+VC*mp;M!s6ra_p6>ob3dV<(cXnHE+dTTG+^p3x4fF4bG|Z!_@_Cct z^Re7#tOWOZ_a5tuw0^4h&&hdtb-+B-gW$ZEI*>o9d-!%o+QzN3AH%78oN~`sP&ZL< Xw!di^y|}nqn~1o&I6Ur51RlQtOqIQ) literal 0 HcmV?d00001 diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/node_sets.json b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/node_sets.json new file mode 100644 index 0000000..2ebb09c --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/node_sets.json @@ -0,0 +1,5 @@ +{ + "soma_cm2": { + "model_type": "biophysical" + } +} diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/simulation_config.json b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/simulation_config.json new file mode 100755 index 0000000..d8d5f03 --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/input/simulation_config.json @@ -0,0 +1,55 @@ +{ + "manifest": { + "$OUTPUT_DIR": "./output", + "$INPUT_DIR": "../input" + }, + + "run": { + "tstop": 60.0, + "dt": 0.025, + "dL": 20.0, + "spike_threshold": -15, + "nsteps_block": 5000 + }, + + "target_simulator":"NEURON", + + "network": "$INPUT_DIR/circuit_config.json", + + "conditions": { + "celsius": 34.0, + "v_init": -80 + }, + + "node_sets_file": "$INPUT_DIR/node_sets.json", + + "mechanisms_dir": "../shared_components_mechanisms", + + + "inputs": { + "current_clamp_1": { + "input_type": "current_clamp", + "module": "IClamp", + "node_set": "soma_cm2", + "amp": 0.002, + "delay": 20.0, + "duration": 30.0 + } + }, + + "output": { + "log_file": "log.txt", + "output_dir": "$OUTPUT_DIR", + "spikes_file": "spikes.h5", + "spikes_sort_order": "time" + }, + + "reports": { + "membrane_potential": { + "cells": "soma_cm2", + "variable_name": "v", + "module": "membrane_report", + "sections": "soma" + } + } +} diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/pytest.ini b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/pytest.ini new file mode 100644 index 0000000..3d8fe4a --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +filterwarnings = + ignore::FutureWarning diff --git a/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/shared_components b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/shared_components new file mode 120000 index 0000000..d3ced13 --- /dev/null +++ b/examples/sim_tests/biophysical/one_cell/soma_cm2_hh/shared_components @@ -0,0 +1 @@ +../../../shared_components \ No newline at end of file diff --git a/examples/sim_tests/shared_components/configs/config.json b/examples/sim_tests/shared_components/configs/config.json new file mode 100755 index 0000000..890caa3 --- /dev/null +++ b/examples/sim_tests/shared_components/configs/config.json @@ -0,0 +1,4 @@ +{ + "network": "./circuit_config.json", + "simulation": "./simulation_config.json" +} diff --git a/examples/sim_tests/shared_components/morphologies/soma1.swc b/examples/sim_tests/shared_components/morphologies/soma1.swc new file mode 100644 index 0000000..fa8360a --- /dev/null +++ b/examples/sim_tests/shared_components/morphologies/soma1.swc @@ -0,0 +1,5 @@ +# 3-point soma with diameter of 1 +# id,type,x,y,z,r,pid +1 1 0.0 0.0 0.0 0.5 -1 +2 1 0.0 -0.5 0.0 0.5 1 +3 1 0.0 0.5 0.0 0.5 1 diff --git a/examples/sim_tests/shared_components/scripts/run_bionet.py b/examples/sim_tests/shared_components/scripts/run_bionet.py new file mode 100755 index 0000000..b7f65d2 --- /dev/null +++ b/examples/sim_tests/shared_components/scripts/run_bionet.py @@ -0,0 +1,19 @@ +#!/bin/env python + +import sys +from bmtk.simulator import bionet + + +def run(config_file): + conf = bionet.Config.from_json(config_file, validate=True) + conf.build_env() + net = bionet.BioNetwork.from_config(conf) + sim = bionet.BioSimulator.from_config(conf, network=net) + sim.run() + + +if __name__ == '__main__': + if __file__ != sys.argv[-1]: + run(sys.argv[-1]) + else: + run('config.json') diff --git a/examples/sim_tests/shared_components/templates/nml/soma_cm2.nml b/examples/sim_tests/shared_components/templates/nml/soma_cm2.nml new file mode 100755 index 0000000..46c8595 --- /dev/null +++ b/examples/sim_tests/shared_components/templates/nml/soma_cm2.nml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/examples/sim_tests/shared_components/templates/nml/soma_cm2_hh.nml b/examples/sim_tests/shared_components/templates/nml/soma_cm2_hh.nml new file mode 100755 index 0000000..9bf5c55 --- /dev/null +++ b/examples/sim_tests/shared_components/templates/nml/soma_cm2_hh.nml @@ -0,0 +1,13 @@ + + + + + + + + + + + + +