Skip to main content

Extract motion energy features from video using spatio-temporal Gabors

Project description

Zenodo Github Codecov Python

What is pymoten?

pymoten is a python package that provides a convenient way to extract motion energy features from video using a pyramid of spatio-temporal Gabor filters [1] [2]. The filters are created at multiple spatial and temporal frequencies, directions of motion, x-y positions, and sizes. Each filter quadrature-pair is convolved with the video and their activation energy is computed for each frame. These features provide a good basis to model brain responses to natural movies [3] [4].

Installation

Using pip, install the latest version from git:

pip install git+https://github.com/gallantlab/pymoten.git

Or the most recent release:

pip install pymoten

Getting started

Example using synthetic data

import moten
import numpy as np

# Generate synthetic data
nimages, vdim, hdim = (100, 90, 180)
noise_movie = np.random.randn(nimages, vdim, hdim)

# Create a pyramid of spatio-temporal gabor filters
pyramid = moten.get_default_pyramid(vhsize=(vdim, hdim), fps=24)

# Compute motion energy features
moten_features = pyramid.project_stimulus(noise_movie)

Simple example using a video file

import moten

# Stream and convert the RGB video into a sequence of luminance images
video_file = 'http://anwarnunez.github.io/downloads/avsnr150s24fps_tiny.mp4'
luminance_images = moten.io.video2luminance(video_file, nimages=100)

# Create a pyramid of spatio-temporal gabor filters
nimages, vdim, hdim = luminance_images.shape
pyramid = moten.get_default_pyramid(vhsize=(vdim, hdim), fps=24)

# Compute motion energy features
moten_features = pyramid.project_stimulus(luminance_images)

GPU acceleration

pymoten supports multiple computational backends. By default it runs on the CPU with NumPy, but it can also run on the GPU using PyTorch, which is much faster for large stimuli. The available backends are "numpy" (default), "torch", "torch_cuda" (NVIDIA GPUs), and "torch_mps" (Apple Silicon GPUs). The torch backends require PyTorch to be installed.

import moten
from moten.backend import set_backend

# Switch to a GPU backend (returns the backend module)
backend = set_backend("torch_cuda")

pyramid = moten.get_default_pyramid(vhsize=(vdim, hdim), fps=24)

# Move the stimulus onto the GPU, project, then bring the result back
stimulus_gpu = backend.asarray(luminance_images)
moten_features = pyramid.project_stimulus_batched(stimulus_gpu)
moten_features = backend.to_numpy(moten_features)

See the examples gallery for a complete walkthrough.

Cite as

Nunez-Elizalde AO, Deniz F, Dupré la Tour T, Visconti di Oleggio Castello M, and Gallant JL (2021). pymoten: scientific python package for computing motion energy features from video. Zenodo. https://doi.org/10.5281/zenodo.6349625

References


A MATLAB implementation can be found here.

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

pymoten-0.1.3.tar.gz (64.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymoten-0.1.3-py3-none-any.whl (55.7 kB view details)

Uploaded Python 3

File details

Details for the file pymoten-0.1.3.tar.gz.

File metadata

  • Download URL: pymoten-0.1.3.tar.gz
  • Upload date:
  • Size: 64.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymoten-0.1.3.tar.gz
Algorithm Hash digest
SHA256 c43e8185018bbea69add5e9624bc74bb6b7e9f02560561de3631bb6e23657c1d
MD5 06b993a44f16e7371564d7ecb108c168
BLAKE2b-256 069b7eae11ebb64fdc5602671b9f67406066611790018a1f58284161163a2fb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymoten-0.1.3.tar.gz:

Publisher: publish_to_pypi.yml on gallantlab/pymoten

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pymoten-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pymoten-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 55.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pymoten-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1ce81e3a76d3c737c5c5d7fad96d0bf768eb7e09f5f585c2cac5502e2312d65b
MD5 033c06d8f2dedb7284161de9cc3ee29a
BLAKE2b-256 ae261cf8c321fb6069e743d4116fbe02308f6fe743ca4109074d1bf87e8be8c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymoten-0.1.3-py3-none-any.whl:

Publisher: publish_to_pypi.yml on gallantlab/pymoten

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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