LiVAE: Lorentzian Interpretable Variational Autoencoder
LiVAE (Lorentzian Interpretable Variational Autoencoder) learns interpretable latent representations for single-cell RNA-seq data using Lorentzian (hyperbolic) geometry and multi-component regularization.
Installation
# Install from PyPI (recommended)
pip install livae
# Or install from source for development
git clone https://github.com/PeterPonyu/LiVAE.git
cd LiVAE
pip install -e .
Core Requirements
torch>=2.3.0,<2.5.0
torchvision>=0.18.0,<0.20.0
scanpy>=1.10.0,<1.11.0
scvi-tools>=1.1.0,<1.2.0
anndata>=0.10.0,<0.11.0
scib>=1.0.0
numpy>=1.26.0,<1.27.0
pandas>=2.2.0,<2.3.0
scipy>=1.12.0,<1.13.0
scikit-learn>=1.5.0,<1.6.0
tqdm>=4.66.0,<5.0.0
fastapi>=0.117.0,<0.118.0
uvicorn[standard]>=0.36.0,<0.37.0
python-multipart>=0.0.6
Python Quick Start
import scanpy as sc
from livae import agent
# Load your single-cell data
adata = sc.read_h5ad('your_data.h5ad')
# Initialize LiVAE agent
model = agent(
adata=adata,
layer='counts', # Data layer to use
latent_dim=10, # Primary latent dimension
i_dim=2, # Interpretable latent dimension
hidden_dim=128, # Hidden layer dimension
lr=1e-4, # Learning rate
# Regularization weights
beta=1.0, # β-VAE weight
lorentz=1.0, # Lorentzian regularization
irecon=1.0, # Interpretable reconstruction
)
# Train the model
model.fit(epochs=100)
# Extract embeddings
latent = model.get_latent() # Primary latent representation
interpretable = model.get_iembed() # Interpretable embedding (i_dim)
# Access results
print(f"Latent shape: {latent.shape}")
print(f"Interpretable embedding shape: {interpretable.shape}")
Web Interface
LiVAE includes an integrated web interface for interactive training and visualization.
Launch the Application
# Start the FastAPI server (serves both API and frontend)
uvicorn api.main:app --host 0.0.0.0 --port 8000
Access the web interface at http://localhost:8000
Features
- Data Upload: Upload single-cell datasets (H5AD format)
- Training Configuration: Configure model parameters and hyperparameters
- Real-time Monitoring: Track loss curves and metrics during training
- Results Visualization: Download embeddings and view training summaries
API Endpoints
POST /upload- Upload datasetPOST /train/start- Start trainingGET /train/metrics- Get training metricsGET /embeddings/interpretable- Get interpretable embeddingsGET /embeddings/latent- Get latent embeddingsGET /download/embeddings/{type}- Download embeddings as CSV
Architecture Overview
LiVAE consists of three main components working in concert:
1. Encoder Network
Input (gene expression) → Hidden → Hidden → μ, σ (latent parameters)
- Maps high-dimensional gene expression to latent distribution parameters
- Uses reparameterization trick for differentiable sampling
2. Hyperbolic Transformation
Latent Sample → Tangent Space → Exponential Map → Lorentzian Manifold
- Projects latent vectors onto hyperbolic manifold
- Enables natural representation of hierarchical relationships
3. Dual Decoder Pathway
Primary: Latent → Decoder → Reconstruction
Interpretable: Latent → Compress → Decompress → Decoder → Reconstruction
- Dual reconstruction paths for enhanced representation learning
- Compression bottleneck encourages essential feature extraction
Loss Function
LiVAE optimizes a composite loss function:
L_total = L_recon + L_irecon + L_lorentz + L_KL
Where:
- L_recon: Negative binomial reconstruction loss
- L_irecon: Interpretable reconstruction loss
- L_lorentz: Lorentz distance regularization
- L_KL: KL divergence
Evaluation Metrics
Clustering Quality
- ARI (Adjusted Rand Index): Clustering agreement with ground truth
- NMI (Normalized Mutual Information): Information-theoretic clustering measure
- ASW (Average Silhouette Width): Cluster cohesion and separation
Cluster Validity
- C_H (Calinski-Harabasz): Ratio of between to within cluster variance
- D_B (Davies-Bouldin): Average similarity between clusters
- P_C (Graph Connectivity): Connectivity within clusters
Batch Integration
- cLISI: Cluster-specific Local Inverse Simpson Index
- iLISI: Integration LISI for batch mixing
- bASW: Batch-corrected Average Silhouette Width
Performance Tips
Memory Optimization
# For large datasets, reduce batch size
model = agent(adata, percent=0.005) # Use 0.5% of data per batch
# Use CPU if GPU memory is limited
import torch
model = agent(adata, device=torch.device('cpu'))
Training Efficiency
# Progressive training with increasing regularization
model = agent(adata, beta=0.1, lorentz=0.0)
model.fit(epochs=500)
# Increase regularization for fine-tuning
model.beta = 1.0
model.lorentz = 0.1
model.fit(epochs=500)
License
This project is licensed under the MIT License - see the LICENSE file for details.
Metadata
Release files for livae 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| livae-0.2.1.tar.gz | 18.1 kB | Without provenance | Details for livae-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| livae-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for livae-0.2.1-py3-none-any.whl |
Total release size: 35.8 kB
Release files / livae-0.2.1.tar.gz
| Download URL | livae-0.2.1.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2083913118522f0a5cc64b5de2dfdc7f5a3ba358826419dcb6df331dbd1a26c1
|
|
BLAKE2b-256 checksum How to use checksums |
f6b6898d0a857d9f4db3ec5236d48b3a2e7159c8f0fe4c39065d5a6fef5269c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / livae-0.2.1-py3-none-any.whl
| Download URL | livae-0.2.1-py3-none-any.whl |
|---|---|
| Size | 17.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a34eeed5b82563938bc6a10275e4bb082fd8cbcae5b1629e008487ddebc9818b
|
|
BLAKE2b-256 checksum How to use checksums |
202e4334baaeea54de3314f2beb39e05164e673dc0d05efc98aa086b3024fbfd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Security for livae 0.2.1
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.