Skip to main content

Detect microsaccades

Project description

pycrosaccade

Detect microsaccades

Installation

Use pip install

> pip install pycrosaccade

Usage

Use in combination with https://github.com/smathot/python-eyelinkparser/tree/master/eyelinkparser

Preprocessing

from pycrosaccade import microsaccades, ms_diagnostics
from eyelinkparser import parse, defaulttraceprocessor

# Parse data as usual
dm = parse(
    traceprocessor=defaulttraceprocessor(
      blinkreconstruct=True, 
      downsample=None, 
      mode = "advanced"
    )
)

Out:

data/sub_1.asc............................................data/sub_2.asc............................................data/sub_3.asc............................................

Microsaccades

For each phase in the experiment, add 5 columns (saccetlist_phase, saccstlist_phase, saccdurlist_phase, saccdistlist_phase, saccfreq_phase)

microsaccades(dm)

print(dm.saccstlist_fixation)

Out:

Calculating microsaccades in phase "baseline"
Calculating microsaccades in phase "feedback"
Calculating microsaccades in phase "fixation"
Calculating microsaccades in phase "problem"
Calculating microsaccades in phase "response"
col[[  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [1101.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 487.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 399.  590.   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 613.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [1378.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [1036.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 194.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 785.  898. 1056. 1191. 2360.]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 884. 1068.   nan   nan   nan]
 [ 663.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 209.   nan   nan   nan   nan]
 [1237.   nan   nan   nan   nan]
 [1268.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 275.   nan   nan   nan   nan]
 [1066. 1552.   nan   nan   nan]
 [ 143.  779.   nan   nan   nan]
 [ 705.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 569.  792. 1396.   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  16.   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  91.  609.  738. 1633. 2209.]
 [ 385.   nan   nan   nan   nan]
 [1558.   nan   nan   nan   nan]
 [ 474.  715.   nan   nan   nan]
 [ 354.  926.   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 629. 1065.   nan   nan   nan]
 [1291. 1590.   nan   nan   nan]
 [  55.  608.  862. 1088. 1940.]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [ 478. 1020. 1177. 2420.   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]
 [  nan   nan   nan   nan   nan]]

Visualisation

from matplotlib import pyplot as plt
fig, ax = plt.subplots()
ax.plot(dm.saccfreq_fixation.mean)
fig.savefig('plot.png')

Out:


alt text

To compare the results with different parameters, use ms_diagnostics

microsaccades(dm, varname='default')
microsaccades(dm, varname='thres3', msVthres=3)

Out:

Calculating microsaccades in phase "baseline"
Calculating microsaccades in phase "feedback"
Calculating microsaccades in phase "fixation"
Calculating microsaccades in phase "problem"
Calculating microsaccades in phase "response"
Calculating microsaccades in phase "baseline"
Calculating microsaccades in phase "feedback"
Calculating microsaccades in phase "fixation"
Calculating microsaccades in phase "problem"
Calculating microsaccades in phase "response"
fig, axs = ms_diagnostics(dm, phase='fixation', varname='default')
fig.savefig('defaults.png')
fig, axs = ms_diagnostics(dm, phase='fixation', varname='thres3')
fig.savefig('thres3.png')

Out:


alt text alt text

Parameters

TODO (but see functions)

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycrosaccade-0.5.0.tar.gz (7.3 MB view details)

Uploaded Source

Built Distribution

pycrosaccade-0.5.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file pycrosaccade-0.5.0.tar.gz.

File metadata

  • Download URL: pycrosaccade-0.5.0.tar.gz
  • Upload date:
  • Size: 7.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.29.0

File hashes

Hashes for pycrosaccade-0.5.0.tar.gz
Algorithm Hash digest
SHA256 ed46da3bbc2e0e631ef49e63794746298db003eabfddfcdcd08dc81c1a8e6449
MD5 92b494d117a37e48d40edd44b76c9527
BLAKE2b-256 7706ce81550312ce52696012fd719764208f755e7e16b19cc7bdace3b6083150

See more details on using hashes here.

File details

Details for the file pycrosaccade-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pycrosaccade-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd04ad75e33ccc0c75fd03f0956c519f4426b2eca5683fc67778ef7cfd31d08f
MD5 a78f7222460e0a9241872420db552154
BLAKE2b-256 aa2a03cebb30d32584e7838d17de3a0eab0c4fc965ba262c32c92b75d76c2edd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page