Source code for allensdk.brain_observatory.ecephys.stimulus_table.output_validation

import numpy as np
import warnings


[docs]def validate_epoch_durations(table, start_key="Start", end_key="End", fail_on_negative_durations=False): durations = table[end_key] - table[start_key] min_duration_index = durations.idxmin() min_duration = durations[min_duration_index] if min_duration == 0: warnings.warn( f"""there is an epoch in this stimulus table (index: {min_duration_index}) with duration = {min_duration}""", UserWarning, ) if min_duration < 0: msg = f"""there is an epoch with negative duration (index: {min_duration_index})""" if fail_on_negative_durations: raise ValueError(msg) warnings.warn(msg)
[docs]def validate_epoch_order(table, time_keys=("Start", "End")): for time_key in time_keys: change = np.diff(table[time_key].values) assert np.amin(change) > 0
[docs]def validate_max_spontaneous_epoch_duration( table, max_duration, get_spontanous_epochs=None, index_key="stimulus_index", start_key="Start", end_key="End", ): if get_spontanous_epochs is None: def get_spontanous_epochs(table): table[np.isnan(table[index_key])] spontaneous_epochs = get_spontanous_epochs(table) if spontaneous_epochs is not None: durations = ( spontaneous_epochs[end_key].values - spontaneous_epochs[start_key].values ) try: if np.amax(durations) > max_duration: warnings.warn( f"""there is a spontaneous activity duration longer than {max_duration}""", UserWarning, ) except ValueError: warnings.warn("No spontaneous intervals detected.", UserWarning)