Skip to content

Contributing to SSM-Simulators

Thank you for your interest in contributing to ssm-simulators! This directory contains guides to help you contribute effectively.

Contribution Guides

Adding New Models

The main contribution pathway for researchers is adding new sequential sampling models to the package.

๐Ÿ“– Complete Guide: Adding New Models

This comprehensive tutorial covers: - Level 1: Boundary/Drift Variants - Add model variants using existing simulators (~15 min) - Level 2: Python Simulators - Implement new models in Python (~20 min) - Level 3: Cython Simulators - Create high-performance implementations (~30 min)

Each level includes: - Step-by-step instructions with code examples - Testing requirements and templates - Documentation guidelines - PR submission checklist

Custom Parameter Adaptations

๐Ÿ“– Guide: Custom Parameter Adaptations

Learn how to create custom parameter transformations for your models. This guide covers: - Using built-in parameter adaptations - Creating custom adaptations - Real-world examples and best practices

Other Ways to Contribute

  • Bug Reports: Found a bug? Open an issue with a minimal reproducible example
  • Documentation: Improve tutorials, fix typos, add examples
  • Feature Requests: Suggest new features or improvements
  • Code Review: Review open pull requests

Code of Conduct

We are committed to providing a welcoming and inclusive environment for all contributors. Please be respectful and constructive in all interactions.

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Set up the development environment (requires uv):
    cd ssm-simulators
    uv pip install -e ".[dev]"
    
    The development dependencies include JAX so RLSSM differentiable-backend tests can run locally. For a minimal editable install with only the optional JAX backend, use:
    uv pip install -e ".[jax]"
    
    Or sync only the optional JAX extra for RLSSM backend work:
    uv sync --extra jax
    
    Or, if you want to sync all dependency groups for development:
    uv sync --all-groups
    
    If you don't have uv yet:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  4. Create a branch for your contribution
  5. Make your changes following the relevant guide
  6. Run tests to ensure nothing broke
  7. Submit a pull request with a clear description

Questions?

If you have questions about contributing: - Search existing issues - Post in our GitHub Discussions forum for general questions or help - Open a new issue with the question label if needed

Thank you for helping make ssm-simulators better for the research community!