Skip to main content

MoCoO

Momentum Contrast ODE-Regularized VAE for Single-Cell RNA Velocity

A unified deep learning framework combining Variational Autoencoders (VAE), Neural Ordinary Differential Equations (ODE), and Momentum Contrast (MoCo) for robust single-cell trajectory inference and representation learning.


Features

  • VAE-based dimensionality reduction with multiple count-based likelihoods (MSE, NB, ZINB, Poisson, ZIP)
  • Neural ODE for continuous trajectory modeling and pseudotime inference
  • Momentum Contrast (MoCo) for robust contrastive representation learning
  • Information bottleneck for hierarchical feature extraction
  • Disentanglement losses (DIP-VAE, β-TC-VAE, InfoVAE) for interpretable latents
  • Vector field analysis for RNA velocity visualization

Installation

From PyPI (recommended)

pip install mocoo

From source

git clone https://github.com/PeterPonyu/MoCoO.git
cd MoCoO
pip install -e .

Development installation

git clone https://github.com/PeterPonyu/MoCoO.git
cd MoCoO
pip install -e ".[dev]"

Publishing

The package is automatically published to PyPI when a GitHub release is created.

To create a new release:

  1. Bump version:

    python release.py patch  # For bug fixes (0.0.1 → 0.0.2)
    python release.py minor  # For new features (0.0.1 → 0.1.0)
    python release.py major  # For breaking changes (0.0.1 → 1.0.0)
    
  2. Commit and push:

    git add -A
    git commit -m "Bump version to X.Y.Z"
    git push
    
  3. Create GitHub release:

    • Go to Releases
    • Click "Create a new release"
    • Tag: vX.Y.Z (e.g., v0.1.0)
    • Title: Release X.Y.Z
    • Description: List changes
    • Click "Publish release"
  4. Automated publishing:

    • GitHub Actions will automatically build and publish to PyPI
    • Check the Actions tab for build status

Quick Start

Basic VAE

import scanpy as sc
from mocoo import MoCoO

adata = sc.read_h5ad('data.h5ad')

model = MoCoO(
    adata,
    layer='counts',
    loss_mode='nb',
    batch_size=128
)
model.fit(epochs=100)

latent = model.get_latent()
adata.obsm['X_mocoo'] = latent

With ODE + MoCo

model = MoCoO(
    adata,
    use_ode=True,
    use_moco=True,
    latent_dim=10,
    i_dim=2,
    moco_K=4096,
    aug_prob=0.5,
    batch_size=256
)
model.fit(epochs=400, patience=25)

latent = model.get_latent()
velocity = model.get_velocity()
pseudotime = model.get_time()
transition = model.get_transition(top_k=30)

Parameters

Parameter Type Default Description
adata AnnData required Annotated data matrix
layer str 'counts' Layer containing raw counts
loss_mode str 'nb' Likelihood: 'mse', 'nb', 'zinb', 'poisson', 'zip'
latent_dim int 10 Latent space dimension
i_dim int 2 Bottleneck dimension (< latent_dim)
use_ode bool False Enable Neural ODE
use_moco bool False Enable MoCo
moco_K int 4096 MoCo queue size
batch_size int 128 Mini-batch size
lr float 1e-4 Learning rate

See docstrings for complete parameter list.


API

Training

model.fit(epochs=400, patience=25, val_every=5)

Inference

latent = model.get_latent()           # Latent embeddings
bottleneck = model.get_bottleneck()   # Bottleneck features
time = model.get_time()               # Pseudotime (ODE only)
velocity = model.get_velocity()       # RNA velocity (ODE only)
transition = model.get_transition()   # Transition matrix (ODE only)

Metrics

loss_hist = model.get_loss_history()
metrics_hist = model.get_metrics_history()
resources = model.get_resource_metrics()

Architecture

Input (n_genes)
    ↓
Encoder (log1p → MLP → latent_dim)
    ↓
[Optional ODE] Neural ODE dynamics
    ↓
Bottleneck (latent_dim → i_dim → latent_dim)
    ↓
Decoder (MLP → n_genes)
    ↓
Reconstruction (NB/ZINB/MSE/Poisson/ZIP)

[Optional MoCo] Contrastive learning on augmented views

Loss Functions

  • Reconstruction: MSE, NB, ZINB, Poisson, ZIP
  • KL Divergence: β-weighted regularization
  • Disentanglement: DIP-VAE, β-TC-VAE, InfoVAE (MMD)
  • ODE Regularization: MSE between VAE and ODE latents
  • MoCo Contrastive: InfoNCE loss

Validation Metrics

  • ARI: Adjusted Rand Index
  • NMI: Normalized Mutual Information
  • ASW: Silhouette Score
  • CH: Calinski-Harabasz Index
  • DB: Davies-Bouldin Index
  • Corr: Latent correlation

Citation

@article{mocoo2025,
  title={MoCoO: Momentum Contrast ODE-Regularized VAE for Single-Cell Trajectory Inference},
  author={Ponyu, Peter},
  year={2025}
}

License

MIT License


Contact

GitHub: @PeterPonyu
Repository: MoCoO

Release files for mocoo 0.0.3

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

Source distribution (sdist)

Source distribution for mocoo 0.0.3
File Size Uploaded
mocoo-0.0.3.tar.gz 22.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mocoo 0.0.3
File Interpreter ABI Platform
mocoo-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 43.9 kB

Release files / mocoo-0.0.3.tar.gz

Download URL mocoo-0.0.3.tar.gz
Size 22.8 kB
Tags Source
SHA-256 checksum
How to use checksums
6070bf0c5b55a0dc90ff2c4f6a75f5af7287dd1fda57b7c2c71cbbb7f278aa41
BLAKE2b-256 checksum
How to use checksums
b6b6bd0d88258ece64d20f3679a9eb821c199608f4954ff7fbd5fb061244246c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / mocoo-0.0.3-py3-none-any.whl

Download URL mocoo-0.0.3-py3-none-any.whl
Size 21.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a74c2caf729dd28689dbfa5cb7b627713be9d4284be7693346e615b5899c7cdb
BLAKE2b-256 checksum
How to use checksums
a89f0bc4f9ce878cf6c9dc3b5581804a751761df61b08953b1a8a6231b2690e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.0.3 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