Module blechpy.analysis.stat_tests
Expand source code
import numpy as np
from blechpy import dio
from scipy.stats import mannwhitneyu, sem
def check_taste_response(rec_dir, unit_name, din, win_size=1500):
h5_file = dio.h5io.get_h5_filename(rec_dir)
if isinstance(unit_name, str):
unit_num = dio.h5io.parse_unit_number(unit_name)
elif isinstance(unit_name, int):
unit_num = unit_name
unit_name = 'unit%03i' % unit_num
else:
raise ValueError('%s is not a valid input type for unit_name. str or int only')
din_str = 'dig_in_%i' % din
time, spikes = dio.h5io.get_spike_data(rec_dir, unit_num, din)
pre_idx = np.where((time >= -win_size) & (time < 0))[0]
post_idx = np.where((time >= 0) & (time < win_size))[0]
pre = 1000 * np.sum(spikes[:, pre_idx], axis=1) / win_size
post = 1000 * np.sum(spikes[:, post_idx], axis=1) / win_size
try:
stat, pval = mannwhitneyu(pre, post, alternative='two-sided')
except ValueError:
pval = 1.0
stat = 0.0
mean_delta = get_mean_difference(pre, post)
stats = {'u-stat': stat, 'p-val': pval, 'baseline': (np.mean(pre), sem(pre)),
'response': (np.mean(post), sem(post)), 'delta': mean_delta}
return pval, stats
Functions
def check_taste_response(rec_dir, unit_name, din, win_size=1500)
-
Expand source code
def check_taste_response(rec_dir, unit_name, din, win_size=1500): h5_file = dio.h5io.get_h5_filename(rec_dir) if isinstance(unit_name, str): unit_num = dio.h5io.parse_unit_number(unit_name) elif isinstance(unit_name, int): unit_num = unit_name unit_name = 'unit%03i' % unit_num else: raise ValueError('%s is not a valid input type for unit_name. str or int only') din_str = 'dig_in_%i' % din time, spikes = dio.h5io.get_spike_data(rec_dir, unit_num, din) pre_idx = np.where((time >= -win_size) & (time < 0))[0] post_idx = np.where((time >= 0) & (time < win_size))[0] pre = 1000 * np.sum(spikes[:, pre_idx], axis=1) / win_size post = 1000 * np.sum(spikes[:, post_idx], axis=1) / win_size try: stat, pval = mannwhitneyu(pre, post, alternative='two-sided') except ValueError: pval = 1.0 stat = 0.0 mean_delta = get_mean_difference(pre, post) stats = {'u-stat': stat, 'p-val': pval, 'baseline': (np.mean(pre), sem(pre)), 'response': (np.mean(post), sem(post)), 'delta': mean_delta} return pval, stats