Skip to main content

A lightweight memory first, model agnostic version of SuPreMo

Project description

supremo_lite

A lightweight memory-first, model-agnostic version of SuPreMo.

Key Features

  • 🧬 Personalized Genome Generation: Apply variants from VCF files to reference genomes
  • 🎯 Variant-Centered Sequences: Generate sequence windows around variants
  • ✂️ PAM Site Analysis: Identify variants that disrupt CRISPR PAM sites
  • 🧪 Saturation Mutagenesis: Systematic single-nucleotide mutations at every position for predictive modeling
  • 🔧 Memory Efficient: Chunked processing for large VCF files
  • 🗺️ Chromosome Matching: Optional handling of chromosome naming differences (chr1 ↔ 1, chrM ↔ MT) via auto_map_chromosomes=True
  • PyTorch Integration: Automatic tensor support when PyTorch is available

Installation

Install from GitHub (Recommended)

For the latest features and bug fixes:

# Install directly latest release
pip install supremo-lite

# Or install a specific version/tag
pip install git+https://github.com/gladstone-institutes/supremo_lite.git@v0.5.0

Dependencies

Required dependencies will be installed automatically:

  • pandas - For VCF data handling
  • numpy - For numerical operations
  • pyfaidx - For FASTA file reading

Optional dependencies:

  • torch - For PyTorch tensor support (automatically detected)
  • brisket - Cython powered faster 1 hot encoding for DNA sequences (automatically detected)

Quick Start

import supremo_lite as sl
from pyfaidx import Fasta

# Load reference genome and variants
reference = Fasta('hg38.fa')
variants = sl.read_vcf('variants.vcf')

DNA Sequence Encoding

supremo_lite uses one-hot encoding by default:

  • A = [1,0,0,0], C = [0,1,0,0], G = [0,0,1,0], T = [0,0,0,1]
  • Ambiguous bases = [0,0,0,0]
  • Returns PyTorch tensors when available, otherwise NumPy arrays

Personalized Genome Generation

# Apply variants to create personalized genome
personal_genome = sl.get_personal_genome(
    reference_fn=reference,
    variants_fn=variants,
    encode=True,      # One-hot encoded (or False for strings)
    chunk_size=10000, # Process 10k variants at a time
    verbose=True      # Show progress
)

# If your VCF uses 'chr1' and reference uses '1', enable chromosome mapping
personal_genome = sl.get_personal_genome(
    reference_fn=reference,
    variants_fn=variants,
    auto_map_chromosomes=True  # Handle chromosome name differences
)

📖 Full Guide: Personalized Genomes | Tutorial Notebook

Variant-Centered Sequences

# Generate reference and alternate sequences around variants
# Note: get_alt_ref_sequences is a generator that yields chunks
results = list(sl.get_alt_ref_sequences(
    reference_fn=reference,
    variants_fn=variants,
    seq_len=1000,
    encode=True
))
# Unpack from the first chunk
alt_seqs, ref_seqs, metadata = results[0]
# Returns: (n_variants, seq_len, 4) shaped arrays

📖 Full Guide: Variant-Centered Sequences | Getting Started Notebook

Prediction Alignment

# Align model predictions accounting for variant coordinate changes
from supremo_lite.mock_models import TestModel

model = TestModel(n_targets=2, bin_size=8, crop_length=10)
ref_preds = model(ref_seqs)
alt_preds = model(alt_seqs)

ref_aligned, alt_aligned = sl.align_predictions_by_coordinate(
    ref_pred=ref_preds[0],
    alt_pred=alt_preds[0],
    metadata=metadata[0],
    prediction_type="1D",
    bin_size=8,
    crop_length=10
)

📖 Full Guide: Prediction Alignment | Tutorial with Visualizations

Saturation Mutagenesis

# Mutate every position in a region
ref_seq, alt_seqs, metadata = sl.get_sm_sequences(
    chrom='chr1',
    start=1000,
    end=1100,  # 100 bp → 300 mutations (3 per position)
    reference_fasta=reference
)

📖 Full Guide: Mutagenesis

Documentation

📚 User Guides

Detailed documentation for each major feature:

📓 Interactive Tutorials

Hands-on Jupyter notebooks with visualizations:

🔍 API Reference

Core Functions:

  • get_personal_genome() - Generate personalized genomes
  • get_alt_ref_sequences() - Generate variant-centered sequences
  • align_predictions_by_coordinate() - Align model predictions
  • get_sm_sequences() - Saturation mutagenesis
  • read_vcf() - Read VCF files

For complete API documentation with all parameters, see the docs/ directory.

Issues and Support

We welcome feedback, bug reports, and feature requests! If you encounter any issues or have suggestions for improvements, please:

  1. Check existing issues first to see if your problem has already been reported
  2. File a new issue on our GitHub Issues page
  3. Provide detailed information including:
    • Python version and operating system
    • Package version (supremo_lite.__version__)
    • Complete error messages and stack traces
    • Minimal reproducible example
    • Expected vs. actual behavior

Common Issues to Report

  • Performance problems with large genomes or variant files
  • Unexpected behavior with edge cases
  • Documentation gaps or unclear examples
  • Feature requests for new functionality

Contributing

Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

License

supremo_lite was created by Natalie Gill and Sean Whalen, based on Sequence Mutator for Predictive Models (SuPreMo) by Katie Gjoni. It is licensed under the terms of the MIT license.

Credits

supremo_lite was created with cookiecutter and the py-pkgs-cookiecutter template.

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

supremo_lite-0.5.5.tar.gz (63.5 kB view details)

Uploaded Source

Built Distribution

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

supremo_lite-0.5.5-py3-none-any.whl (68.5 kB view details)

Uploaded Python 3

File details

Details for the file supremo_lite-0.5.5.tar.gz.

File metadata

  • Download URL: supremo_lite-0.5.5.tar.gz
  • Upload date:
  • Size: 63.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for supremo_lite-0.5.5.tar.gz
Algorithm Hash digest
SHA256 c72a8a8adcd6c0a10cf9b72fa76a1092f91219442d85649646b34a71e717fa0b
MD5 105f33427ed6e16c886124e5961d7b61
BLAKE2b-256 c7eb5cdd74ce98d82a9549b6d52a7cd77d9c3ed4e111cec82de150133cc7ad6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for supremo_lite-0.5.5.tar.gz:

Publisher: test.yml on gladstone-institutes/supremo_lite

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

File details

Details for the file supremo_lite-0.5.5-py3-none-any.whl.

File metadata

  • Download URL: supremo_lite-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 68.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for supremo_lite-0.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fef1fc109e6b760cd9a1612bd79306ef5d8114db8772945f78cb4ba48bbf2a48
MD5 dc70fc982bcb78d947eceb94efbd92f6
BLAKE2b-256 6004e95d484d5fde5296d45b68049b7e2ab598f97e5c27f0fb1adfafd051089e

See more details on using hashes here.

Provenance

The following attestation bundles were made for supremo_lite-0.5.5-py3-none-any.whl:

Publisher: test.yml on gladstone-institutes/supremo_lite

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