https://github.com/clandininlab/flystim

Visual stimulus generator for neuroscience experiments

https://github.com/clandininlab/flystim

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    4 of 10 committers (40.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.2%) to scientific vocabulary

Keywords

neuroscience-methods python scientific-computing three-dimensional virtual-reality visual-stimuli
Last synced: 5 months ago · JSON representation

Repository

Visual stimulus generator for neuroscience experiments

Basic Info
  • Host: GitHub
  • Owner: ClandininLab
  • License: mit
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 869 KB
Statistics
  • Stars: 4
  • Watchers: 6
  • Forks: 2
  • Open Issues: 6
  • Releases: 1
Topics
neuroscience-methods python scientific-computing three-dimensional virtual-reality visual-stimuli
Created almost 8 years ago · Last pushed about 1 year ago
Metadata Files
Readme Contributing License

README.md

Flystim is now deprecated and unsupported

We recommend switching to stimpack, which includes and expands flystim functionality.

flystim

Build Status

flystim is a software package for generating visual stimuli for neuroscience experiments. It was originally designed for fly labs, but can be used for any subject/viewer. The stimuli are perspective-corrected and can be displayed across multiple screens. Sample code, illustrating various use cases, is included in the examples directory.

Prerequisites

flystim only supports Python3, so in the commands below, the pip and python commands should refer to a Python3 install. You can either install Python3 directly or through a package manager like Conda.

On Linux, you'll also need to install a few packages via apt-get: ```shell

sudo apt-get install build-essential libusb-1.0.0-dev libudev-dev ```

Installation

  1. Open a terminal, and note the current directory, since the pip commands below will clone some code from GitHub and place it in a subdirectory called src. If you prefer to place the cloned code in a different directory, you can specify that by providing the --src flag to pip.
  2. Clone and install flyrpc if you haven't already: shell > git clone https://github.com/ClandininLab/flyrpc.git > cd flyrpc > pip install -e . > cd ..
  3. Clone and install flystim: shell > git clone https://github.com/ClandininLab/flystim.git > cd flystim > pip install -e . > cd ..

If you get a permissions error when running the pip command, you can try adding the --user flag. This will cause pip to install packages in your user directory rather than to a system-wide location.

Flystim depends on PyQt5. We have seen performance issues running flystim on Linux machines depending on the specific version of PyQt5 installed. Best performance is found using PyQt5==5.11.2. If you have trouble installing this specific version, you can try: pip install PyQt5==5.11.2 --no-deps

For this and other reasons, we recommend upgrading to stimpack, which uses PyQt6 and is much more stable.

Running the Example Code

In a terminal tab, navigate to the examples directory and run one of the sample programs, such as show_all.py.

```shell

cd flystim/examples python show_all.py ```

Each example can be exited at any time by pressing Ctrl+C.

Coordinate system

The coordinate system convention in flystim is defined as follows: * Yaw = rotation around the Z axis (theta) * Pitch = rotation around the X axis (phi) * Roll = rotation around the Y axis

A fly heading of (yaw=0, pitch=0, roll=0) corresponds to the fly looking down the +Y axis, the +X axis lies to the fly's right side, and +Z lies above the fly's head

Screen objects and defining subscreen geometry

A Screen object specifies a display device and a list of SubScreens, each SubScreen is defined by: 1. Physical coordinates ( (x, y, z), in meters) that specify the screen geometry in 3D space

  1. Normalized Device Coordinates ( (x, y), [-1, +1]) ) that specify a viewport for that SubScreen. This controls where on the display device the image for this SubScreen will appear.

Owner

  • Name: ClandininLab
  • Login: ClandininLab
  • Kind: organization

GitHub Events

Total
  • Watch event: 1
  • Push event: 3
Last Year
  • Watch event: 1
  • Push event: 3

Committers

Last synced: over 2 years ago

All Time
  • Total Commits: 296
  • Total Committers: 10
  • Avg Commits per committer: 29.6
  • Development Distribution Score (DDS): 0.635
Past Year
  • Commits: 44
  • Committers: 3
  • Avg Commits per committer: 14.667
  • Development Distribution Score (DDS): 0.159
Top Committers
Name Email Commits
Max Turner m****r@g****m 108
Steven Herbst s****t@s****u 64
Minseung Choi m****g@s****u 60
Max Turner m****r@s****u 24
Steven Herbst s****t 22
sgherbst s****t@g****m 6
Steven Herbst b****c@s****u 5
Andrew Berger a****r@g****m 3
javiercweddington 5****n 2
Clandinin Lab c****b@g****m 2
Committer Domains (Top 20 + Academic)