stAge is a professional desktop application for analyzing aging signatures in spatial transcriptomics data. Built with PyQt5 and powered by tAge aging clocks, stAge provides an intuitive interface for visualizing spatial gene expression patterns and aging-related features in tissue samples.
- Interactive Spatial Visualization - Plot spatial distribution of cells with high-quality rendering
- UMAP Projections - Generate and visualize 2D and 3D UMAP embeddings
- Gene Expression Mapping - Color cells by any gene expression with autocomplete search
- Metadata Integration - Visualize cell metadata and annotations
- tAge Aging Clocks (Coming Soon) - Apply transcriptomic aging clocks to spatial data
- Dark/Light Theme - Eye-friendly themes for any environment
- Customizable Color Schemes - 10+ scientific colormaps (viridis, plasma, etc.)
- Adjustable Point Size - Fine-tune visualization density
- Interactive Controls - Pan, zoom, and export with matplotlib toolbar
- High-Resolution Export - Save plots as PNG, PDF, or SVG at 300 DPI
- Multithreaded UMAP - Background computation with progress tracking
- Large Dataset Support - Handle thousands of cells efficiently
- Responsive UI - Smooth interaction even during computation
- Go to the Releases page
- Download the latest version for your operating system:
- Windows:
stAge-windows-v1.0.0.zip - macOS:
stAge-macos-v1.0.0.zip - Linux:
stAge-linux-v1.0.0.tar.gz
- Windows:
- Extract the archive
- Run the executable:
- Windows: Double-click
stAge.exe - macOS: Double-click
stAge.app(you may need to right-click and select "Open" the first time) - Linux: Run
./stAgefrom terminal
- Windows: Double-click
Note for macOS users: If you see a security warning, go to System Preferences β Security & Privacy β General, and click "Open Anyway"
# Clone the repository
git clone https://github.com/yourusername/stAge.git
cd stAge
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the application
python main.pyRequirements:
- Python 3.8+
- PyQt5
- matplotlib
- scanpy
- anndata
- numpy
- pandas
-
Launch stAge
- Run the executable or
python main.py
- Run the executable or
-
Load Your Data
- Click "π Load AnnData File (.h5ad)"
- Select your spatial transcriptomics dataset in h5ad format
-
Explore Spatial Patterns
- View spatial distribution of cells in tissue coordinates
- Color by gene expression or cell metadata
-
Compute UMAP
- Click "β‘ Compute UMAP" to generate dimensionality reduction
- Configure parameters (2D/3D, neighbors, minimum distance)
- Switch between Spatial, UMAP 2D, and UMAP 3D views
-
Export Results
- Adjust visualization settings (colormap, point size)
- Click "πΎ Export Plot" to save high-quality figures
Spatial distribution of cells colored by gene expression
UMAP 2D projection with cluster coloring
Interactive UMAP 3D projection for advanced exploration
Dark theme for comfortable extended analysis sessions
stAge integrates tAge transcriptomic aging clocks to provide:
- Biological Age Estimation - Calculate tissue-specific biological age from spatial transcriptomics
- Aging Signature Mapping - Visualize spatial distribution of aging-related gene signatures
- Comparative Analysis - Compare chronological vs. biological age across tissue regions
- Custom Clock Models - Apply pre-trained or custom-trained aging clock models
Stay tuned for updates on this exciting feature!
stAge accepts AnnData files (.h5ad) with the following structure:
adata.X- Gene expression matrix (cells Γ genes)adata.obsm['spatial']oradata.obsm['X_spatial']- Spatial coordinates (cells Γ 2)
adata.obs- Cell metadata (cluster labels, cell types, etc.)adata.obsm['X_umap']- Pre-computed UMAP coordinatesadata.uns['neighbors']- Pre-computed neighbor graph
import scanpy as sc
import numpy as np
# Load your data
adata = sc.read_h5ad("your_data.h5ad")
# Ensure spatial coordinates exist
# If you have x, y coordinates in adata.obs:
adata.obsm['spatial'] = adata.obs[['x', 'y']].values
# Optional: Precompute UMAP for faster loading
sc.pp.neighbors(adata)
sc.tl.umap(adata, n_components=2)
# Save
adata.write("your_data_prepared.h5ad")- Solution: Ensure your h5ad file contains
adata.obsm['spatial']oradata.obsm['X_spatial']
- Solution: Right-click the app, select "Open", and click "Open" in the security dialog
- Solution: Try reducing the number of neighbors or check that your data has enough cells (minimum ~100)
- Solution: Consider downsampling your data or using a machine with more RAM
For additional help, please open an issue on GitHub.
This project is licensed under the MIT License - see the LICENSE file for details.
- Victor Vicente - Initial
- Dmitrii Glubokov - Development - dglubokov
- Built with PyQt5 for the user interface
- Powered by Scanpy for single-cell analysis
- Uses AnnData for data structures
- Visualization with Matplotlib
- Issues: GitHub Issues
Made with β€οΈ for the spatial transcriptomics community



