Skip to main content

SMITE is a toolbox for using eye trackers from SMI with Python, specifically offering integration with PsychoPy.

Project description

SMITE is a toolbox for using eye trackers from SMI GmbH with Python, specifically offering integration with PsychoPy. A Matlab version that integrates with Psychtoolbox is also available from https://github.com/dcnieho/SMITE

Cite as: Niehorster, D.C., & Nyström, M., (2019). SMITE: A toolbox for creating Psychtoolbox and Psychopy experiments with SMI eye trackers. doi: 10.3758/s13428-019-01226-0.

For questions, bug reports or to check for updates, please visit www.github.com/marcus-nystrom/SMITE.

SMITE is licensed under the Creative Commons Attribution 4.0 (CC BY 4.0) license.

demos/read_me.py shows a minimal example of using the toolbox's functionality.

To run the toolbox, it is required to PsychoPy 1.90.1 standalone is recommended.

Tested on Windows PsychoPy using Python 2.7. Also tested with PsychoPy3 (Python 3.6, but see issues below)

To get started (Windows)

  1. Install the SMI iViewX SDK version 4.4.26.
  2. Download PsychoPy (e.g., StandalonePsychoPy3_PY2-3.2.3-win32.exe )
  3. Download and install git
  4. Open the command window
    1. Go the the PsychoPy folder (e.g., C:\Program Files (x86)\PsychoPy)
    2. type 'python -m pip install git+https://github.com/marcus-nystrom/SMITE.git#egg=SMITE'
  5. Download the 'examples' folder and run read_me.py (first change the monitor settings and the eye tracker name in read_me.py).

Alternatively:

  1. Install the SMI iViewX SDK version 4.4.26.
  2. Download PsychoPy (e.g., StandalonePsychoPy3_PY2-3.2.3-win32.exe )
  3. Download or clone the SMITE folder
  4. Add the downloaded SMITE-folder to path in PsychoPy (under file->preferences)
  5. Run read_me.py (first change the monitor settings and the eye tracker name in read_me.py).

Usage

As demonstrated in the demo scripts, the toolbox is configured through the following interface:

  1. retrieve (default) settings for eye tracker of interest: settings = SMITE.get_defaults('trackerName'); Supported tracker Names are HiSpeed, RED, REDm, RED250mobile, REDn_Scientific, and REDn_Professional.
  2. edit settings if wanted
  3. initialize SMITE using this settings struct: `EThndl = SMITE(settings)

API

Methods

The following method calls are available on a SMITE instance

Call inputs outputs description
get_options()
  1. settings: module with current settings
Get settings
init() Connect to the SMI eye tracker and initialize it according to the requested settings
is_connected()
  1. status: SMI status code (int). For its meaning, see the iView API documentation.
Report status of the connection to the eye tracker
calibrate()
  1. win: window pointer to PsychoPy screen where the calibration stimulus should be shown. See visual.Window()
Do participant setup, calibration and validation
start_recording()
  1. clear_buffer: optional. Boolean indicating whether the IDF file buffer should be cleared before recording starts or not. This clears all already recorded data from the idf file, so set to true with caution
Start recording eye-movement data to idf file
start_buffer()
  1. sample_buffer_length: optional. Size in number of samples of recording buffer.
Start recording eye-movement data into buffer for online use
send_message()
  1. msg: Message to be written into idf file
Insert message into idf file
get_latest_sample() sample:struct array Get most recent data sample
consume_buffer_data() list of samples Get data from the online buffer. The returned samples are removed from the buffer
peek_buffer_data() list of samples Get data from the online buffer. The returned samples remain in the buffer
stop_buffer()
  1. clear_buffer: optional. Boolean indicating whether the online buffer should be cleared
Stop recording data into buffer
stop_recording() Stop recording data into idf file
save_data()
  1. filename: filename (including path) where idf file will be stored
  2. user: optional. Indentifier that gets placed in idf file header
  3. description: optional. Description that gets placed in idf file header
  4. append_version: optional. Boolean indicating whether version numbers (_1, _2, etc) will automatically get appended to the filename if the destination file already exists
Save idf file to specified location
de_init()
  1. close: optional. Boolean indicating whether the iView eye tracker server should be shut down
Close connection to the eye tracker and clean up
set_begaze_trial_image()
  1. filename: filename of stimulus that is shown on this trial. Must have one of the following extentions: .png, .jpg, .jpeg, .bmp, or .avi
Put specially prepared message in idf file to notify BeGaze what stimulus image/video belongs to a trial
set_begaze_key_press()
  1. string: string that will show up on BeGaze's event timeline. Can be name of a key, but also other arbitrary string
Put specially prepared message in idf file that shows up as keypress in BeGaze
set_begaze_mouse_click()
  1. which: string indicating which mouse button, left or right
  2. x: horizontal pixel coordinate of mouse click
  3. y: vertical coordinate of mouse click
Put specially prepared message in idf file that shows up as mouse click in BeGaze
start_eye_image_recording()
  1. filename: filename where recorded eye images will be saved
  2. format: format to store eye images in, must be one of: jpg, bmp, xvid, huffyuv, alpary, xmp4
  3. duration: optional. If provided, runs eye image recording for this many seconds
Start recording eye images to file. Not supported on RED250mobile, REDn Scientific, and REDn Professional
stop_eye_image_recording() Stop recording eye images to file
set_dummy_mode() Enable dummy mode, which allows running the program without an eye tracker connected

ToDos (current discrepancies between the paper and the toolbox):

  1. File transfer in two computer setups not implemented
  2. do_flip_eye not implemented (fixes a bug in older versions of iViewX, e.g., v. 2.7.13, where left and right eyes are flipped)
  3. get_options returns all settings. set_options does nothing. This means that it's currently up to the user not to use functionally that is not available during recording (for instance changing the sampling frequency of the eye tracker).
  4. Images returned from the API look strange when using PsychoPy3. Affects validation screen and eye images.

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

py-smite-1.0.0rc1.tar.gz (55.2 kB view details)

Uploaded Source

Built Distribution

py_smite-1.0.0rc1-py3-none-any.whl (61.9 kB view details)

Uploaded Python 3

File details

Details for the file py-smite-1.0.0rc1.tar.gz.

File metadata

  • Download URL: py-smite-1.0.0rc1.tar.gz
  • Upload date:
  • Size: 55.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for py-smite-1.0.0rc1.tar.gz
Algorithm Hash digest
SHA256 bae94f51d24b67281f7361d6919dfd5029f412f918eeb71df8d9eea792945d16
MD5 4787a304fc9f9701c65beb58567a8949
BLAKE2b-256 ce41e6a936219830caab6a7cd154ced9d6f763c28486167d67439fa2609926c3

See more details on using hashes here.

File details

Details for the file py_smite-1.0.0rc1-py3-none-any.whl.

File metadata

  • Download URL: py_smite-1.0.0rc1-py3-none-any.whl
  • Upload date:
  • Size: 61.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for py_smite-1.0.0rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 fa6ac9669d5cfea8070ca32e23d6fcab0a1440f2d5236f6cf2c67c243b3b153b
MD5 559ec4e664a8131180715cf7a94cfc11
BLAKE2b-256 f77251f1b0bc1d61c7208230d9d0ca4eae2a4a13c309f651d83700984b3cebc9

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