get_fixations_and_saccades.py 2.1 KB

1234567891011121314151617181920212223242526
  1. import simianpy as simi #pip install git+https://github.com/jselvan/simianpy.git@0.1.4
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. hdf_path = 'Data.h5'
  5. hdf_kwargs = dict(path_or_buf=hdf_path, complib='blosc:lz4', complevel=9)
  6. eye_data_block = pd.read_hdf(hdf_path, 'ContinuousEyeDataVideo')
  7. eye_data_block_fix = pd.read_hdf(hdf_path, 'ContinuousEyeDataFixationSlide')
  8. detect_saccades_kwargs = dict(velocity_threshold=30,duration_threshold=pd.offsets.Milli(10))
  9. detect_fixations_kwargs = dict(velocity_threshold=10,duration_threshold=pd.offsets.Milli(50),Filter=simi.signal.Smooth(11,'hamming'))
  10. video_keys = ['monkey','injection','condition','front','scrambled','treatment','video_file','block']
  11. fixslide_keys = ['monkey','injection','treatment','fixation_slide','block']
  12. saccade_data = pd.concat({idx: simi.analysis.DetectSaccades(data.reset_index().set_index('time').loc[:, ['eyeh','eyev']],**detect_saccades_kwargs) for idx, data in eye_data_block.groupby(video_keys)},names=video_keys)
  13. saccade_data = saccade_data.query('peak_radial_velocity<1500')
  14. saccade_data.to_hdf(key='saccade_data', **hdf_kwargs)
  15. fixslide_saccade_data = pd.concat({idx: simi.analysis.DetectSaccades(data.reset_index().set_index('time').loc[:, ['eyeh','eyev']],**detect_saccades_kwargs) for idx, data in eye_data_block_fix.groupby(fixslide_keys)},names=fixslide_keys)
  16. fixslide_saccade_data = fixslide_saccade_data.query('peak_radial_velocity<1500')
  17. fixslide_saccade_data.to_hdf(key='fixslide_saccade_data', **hdf_kwargs)
  18. fixation_data = pd.concat({idx: simi.analysis.DetectFixations(data.reset_index().set_index('time').loc[:, ['eyeh','eyev']],**detect_fixations_kwargs) for idx, data in eye_data_block.groupby(video_keys)},names=video_keys)
  19. fixation_data.to_hdf(key='fixation_data', **hdf_kwargs)
  20. fixslide_fixation_data = pd.concat({idx: simi.analysis.DetectFixations(data.reset_index().set_index('time').loc[:, ['eyeh','eyev']],**detect_fixations_kwargs) for idx, data in eye_data_block_fix.groupby(fixslide_keys)},names=fixslide_keys)
  21. fixslide_fixation_data.to_hdf(key='fixslide_fixation_data', **hdf_kwargs)