Skip to main content

DynVision: A Modeling Toolbox for Biologically Plausible Recurrent Visual Networks

Python 3.11+ PyTorch PyPI CI License: MIT Preprint

Docs

DynVision is a modular toolbox for constructing and evaluating recurrent convolutional neural networks (RCNNs) with biologically inspired dynamics. It provides a flexible framework for exploring how recurrent connections and temporal dynamics shape visual processing in artificial neural networks and how these networks can be aligned with properties of biological visual systems.

DynVision Overview

Key Features

  • Biologically Plausible Dynamics: Implement neural dynamics governed by continuous differential equations with realistic time constants and delays
  • Diverse Recurrent Architectures: Explore various recurrent connection types (self, full, depthwise, pointwise, local topographic)
  • Minimal Coding Requirements: Customization of models, training hyperparameters, testing scenarios, data selection, parameter sweeps, visualizations can be achieved by editing by human-readable config files. For more elaborate extensions there are template files and guides.
  • Modular Components: Easily combine and reconfigure biologically-inspired features:
    • Recurrent processing within and across areas
    • Skip and feedback connections
    • Retinal preprocessing
    • Supralinear activation
    • Adaptive input gain
  • Modular Operation Order: Easily rearrange the execution order of layer operations like convolution, adding recurrence, applying delays, nonlinearity, pooling, recording activity, etc.
  • Efficient Workflow Management: Leverages Snakemake for reproducible experiments and parameter sweeps
  • PyTorch Lightning Integration: Standardized training with minimal boilerplate
  • Optimized Performance: Fast data loading with FFCV, GPU acceleration, mixed precision
  • Pre-built Model Zoo: Access pre-implemented architectures like AlexNet, CorNetRT, ResNet variants, CordsNet, and DyRCNNx4/8

Installation

Python requirement: Python 3.11+ (3.12 support pending FFCV compatibility testing — see Python 3.12 Compatibility).

# Clone repository
git clone https://github.com/Lindsay-Lab/dynvision.git
cd dynvision

# Create conda environment (recommended)
conda create -n dynvision python=3.11
conda activate dynvision

# Install PyTorch with CUDA (adjust as needed)
conda install pytorch torchvision pytorch-cuda=11.8 -c pytorch -c nvidia

# Install DynVision in editable mode
pip install -e .

For more detailed installation instructions, see the Installation Guide.

Quick Start

import torch
from dynvision.models import DyRCNNx4

# Create a 4-layer RCNN with recurrent connections
model = DyRCNNx4(
    n_classes=10,
    input_dims=(20, 3, 224, 224),  # (timesteps, channels, height, width)
    recurrence_type="full",        # Full recurrent connectivity
    dt=2,                          # Integration time step (ms)
    tau=5,                         # Neural time constant (ms)
    tff=8,                         # feedforward delay (ms)
    trc=4,                         # recurrence delay (ms)
)

# Forward pass with a batch of inputs
batch = torch.randn(1, 20, 3, 224, 224)  # (batch, timesteps, channels, height, width)
outputs = model(batch)

For a step-by-step tutorial, see the Getting Started guide.

Example Experiments

DynVision includes pre-configured experiments to explore temporal response properties of different recurrent architectures:

# Train and run contrast response experiment with on multiple models
snakemake --config experiment=contrast model_name=['AlexNet', 'ResNet18', 'CorNetRT'] data_name=cifar100

# Evaluate stimulus duration effects with different recurrence types
snakemake -j4 --config experiment=duration model_name=DyRCNNx4 model_args="{rctype: [full, self, pointdepthwise]}"

Temporal Dynamics Example

Documentation

For Claude Code Users: The comprehensive developer guide (formerly CLAUDE.md in project root) is now at docs/development/guides/claude-guide.md.

Citation

If you use DynVision in your research, please cite both the software and the preprint:

@software{Gutzen_DynVision,
  author       = {Gutzen, Robin and Lindsay, Grace W.},
  title        = {DynVision: A Modeling Toolbox for Biologically Plausible
                   Recurrent Visual Networks},
  year         = 2026,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.XXXXXXXX},
  url          = {https://github.com/Lindsay-Lab/DynVision},
  note         = {Replace XXXXXXXX with DOI from https://zenodo.org after first release}
}

@article{Gutzen2025_2025.08.11.669756,
  title        = {DynVision: A Toolbox for Biologically Plausible Recurrent
                   Convolutional Networks},
  shorttitle   = {{{DynVision}}},
  author       = {Gutzen, Robin and Lindsay, Grace W.},
  year         = 2025,
  pages        = {2025.08.11.669756},
  publisher    = {bioRxiv},
  doi          = {10.1101/2025.08.11.669756},
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

Release files for dynvision 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dynvision 0.1.0
File Size Uploaded
dynvision-0.1.0.tar.gz 7.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for dynvision 0.1.0
File Interpreter ABI Platform
dynvision-0.1.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 8.0 MB

Release files / dynvision-0.1.0.tar.gz

Download URL dynvision-0.1.0.tar.gz
Size 7.6 MB
Tags Source
SHA-256 checksum
How to use checksums
65d911c9c8fa3619115c17a188c63c03a020a60f845de59f7854e007f36b0775
BLAKE2b-256 checksum
How to use checksums
d5c50d287183a38b4c771d7d70658cb9852eda6f3123507fa1d0026c23021453
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.

Transparency log

Release files / dynvision-0.1.0-py2.py3-none-any.whl

Download URL dynvision-0.1.0-py2.py3-none-any.whl
Size 414.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
cddd4be5e87abfe2c78c9f0e02420b1da9ffe576a05d75c38e8d11473178149f
BLAKE2b-256 checksum
How to use checksums
21da8edf38fa21608f6a81a8412c6671c78ab60e8a75849d3ea91add32b835dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 25, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page