Source code for bouter.tests.test_bouter

import pytest


import numpy as np

import bouter as bt


[docs]def test_class_instantiation(embedded_exp_path): # Test instantiation modalities: assert ( bt.Experiment(embedded_exp_path) == bt.Experiment(str(embedded_exp_path)) == bt.Experiment(embedded_exp_path / "192316_metadata.json") )
# TODO if we test multiple datasets this will have to be improved
[docs]@pytest.mark.parametrize( "prop_name, outcome", [ ("protocol_name", "closed_open_loop"), ("protocol_version", None), ( "protocol_parameters", { "grating_cycle": 10, "grating_duration": 4.0, "inter_stim_pause": 0, "n_repeats": 1, "post_pause": 0.0, "pre_pause": 0.0, }, ), ("stim_start_times", [0.002]), ("stim_end_times", [600.004995]), ], ) def test_class_properties(embedded_exp_path, prop_name, outcome): exp = bt.Experiment(embedded_exp_path) val = getattr(exp, prop_name) if isinstance(val, np.ndarray): assert np.isclose(val, outcome) else: assert val == outcome
[docs]@pytest.mark.parametrize( "logname, log_props", [ ( "stimulus_log", dict( nrows=100, columns=[ "closed loop 1D_vel", "closed loop 1D_base_vel", "closed loop 1D_gain", "closed loop 1D_lag", "closed loop 1D_fish_swimming", "t", ], ), ), ("estimator_log", dict(nrows=100, columns=["vigour", "t"])), ( "behavior_log", dict( nrows=1200, columns=["tail_sum"] + [f"theta_{i:02}" for i in range(25)] + ["t"], ), ), ], ) def test_logs_loading(embedded_exp_path, logname, log_props): exp = bt.EmbeddedExperiment(embedded_exp_path) df = getattr(exp, logname) assert len(df) == log_props["nrows"] assert all(df.columns == log_props["columns"])
[docs]def test_warning_raise(embedded_exp_path): exp = bt.EmbeddedExperiment(embedded_exp_path) starts, ends = exp.stimulus_starts_ends() for s, t in zip( [starts, ends], [np.array([0.002]), np.array([600.004995])] ): assert all(s == t)