Omnicell is a comprehensive benchmarking and generalization framework for single-cell perturbation response prediction methods. It provides a unified pipeline for training, evaluating, and comparing various single-cell methods.
The framework standardizes the process of:
omnicell/
├── configs/
│ ├── ETL/ # Data preprocessing configs
│ ├── models/ # Model architecture configs
│ └── {dataset}/ # Dataset-specific configs
│ └── random_splits/ # Train/test split configurations
├── jobs/ # SLURM job submission scripts
├── omnicell/
│ ├── models/ # Model implementations
│ │ ├── sclambda/ # SCLambda model
│ │ ├── VAE/ # Variational autoencoders
│ │ ├── llm/ # Language model-based approaches
│ │ └── ...
│ ├── data/ # Data loading utilities
│ └── processing/ # Data processing utilities
└── train.py # Main training script
The framework currently supports multiple model architectures:
With more model architectures coming!
The framework uses a hierarchical YAML-based configuration system with four main components:
Example model config (SCLambda):
name: sclambda_large_no_clip
latent_dim: 30
hidden_dim: 512
training_epochs: 200
batch_size: 500
lambda_MI: 200
eps: 0.001
seed: 1234
validation_frac: 0.2
large: True
clip: False
python train.py \
--etl_config configs/ETL/your_etl_config.yaml \
--datasplit_config configs/your_dataset/splits/split_config.yaml \
--eval_config configs/your_dataset/splits/eval_config.yaml \
--model_config configs/models/your_model_config.yaml \
-l DEBUG
Define the environment variable OMNICELL_ROOT in your ~/.bashrc file like such:
export OMNICELL_ROOT='/orcd/data/omarabu/001/opitcho/omnicell'`
The repository includes SLURM job scripts for running experiments on HPC clusters:
sbatch jobs/sc_lambda_large_repogle_no_clip.sh
The framework provides comprehensive logging with configurable levels:
Logs are saved as output_{slurm_id}_{model_name}_{split_config_name}.log
Results are automatically saved in a structured format:
results/
└── {dataset}/
└── {etl_config}/
└── {model}/
├── predictions.npz
├── control.npz
└── ground_truth.npz
To add a new model:
omnicell/models/train, predict, save, load)configs/models/get_model function in train.pyJupyter Notebook
97.6%
Python
1.9%
Omnicell is a comprehensive benchmarking and generalization framework for single-cell perturbation response prediction methods. It provides a unified pipeline for training, evaluating, and comparing various single-cell methods.
The framework standardizes the process of:
omnicell/
├── configs/
│ ├── ETL/ # Data preprocessing configs
│ ├── models/ # Model architecture configs
│ └── {dataset}/ # Dataset-specific configs
│ └── random_splits/ # Train/test split configurations
├── jobs/ # SLURM job submission scripts
├── omnicell/
│ ├── models/ # Model implementations
│ │ ├── sclambda/ # SCLambda model
│ │ ├── VAE/ # Variational autoencoders
│ │ ├── llm/ # Language model-based approaches
│ │ └── ...
│ ├── data/ # Data loading utilities
│ └── processing/ # Data processing utilities
└── train.py # Main training script
The framework currently supports multiple model architectures:
With more model architectures coming!
The framework uses a hierarchical YAML-based configuration system with four main components:
Example model config (SCLambda):
name: sclambda_large_no_clip
latent_dim: 30
hidden_dim: 512
training_epochs: 200
batch_size: 500
lambda_MI: 200
eps: 0.001
seed: 1234
validation_frac: 0.2
large: True
clip: False
python train.py \
--etl_config configs/ETL/your_etl_config.yaml \
--datasplit_config configs/your_dataset/splits/split_config.yaml \
--eval_config configs/your_dataset/splits/eval_config.yaml \
--model_config configs/models/your_model_config.yaml \
-l DEBUG
Define the environment variable OMNICELL_ROOT in your ~/.bashrc file like such:
export OMNICELL_ROOT='/orcd/data/omarabu/001/opitcho/omnicell'`
The repository includes SLURM job scripts for running experiments on HPC clusters:
sbatch jobs/sc_lambda_large_repogle_no_clip.sh
The framework provides comprehensive logging with configurable levels:
Logs are saved as output_{slurm_id}_{model_name}_{split_config_name}.log
Results are automatically saved in a structured format:
results/
└── {dataset}/
└── {etl_config}/
└── {model}/
├── predictions.npz
├── control.npz
└── ground_truth.npz
To add a new model:
omnicell/models/train, predict, save, load)configs/models/get_model function in train.pyJupyter Notebook
97.6%
Python
1.9%