loveslide
A Python interface to the SLIDE framework for latent factor discovery and statistical inference.
📘 Overview
loveslide wraps key components of the original SLIDE R package into a user-friendly Python interface, making it easier to incorporate into machine learning pipelines and bioinformatics workflows.
SLIDE (Statistical Latent Inference for Discovery and Explanation) combines:
- LOVE: A latent factor discovery algorithm using model-based overlapping clustering.
- Knockoffs: For statistically rigorous identification of significant standalone and interacting latent factors.
This Python implementation retains R underpinnings via rpy2 and is structured to be modular, extensible, and accessible from both the command line and within Python scripts or notebooks.
🔗 Related Repositories
- 📦 Original R package: https://github.com/jishnu-lab/SLIDE
- 🐍 Python wrapper: https://github.com/alw399/SLIDE_py
🚀 Installation
Set up a compatible Python environment:
module load anaconda3/2022.10
conda create -n loveslide_env python=3.9 r-base
conda activate loveslide_env
pip install loveslide
If needed, clone the environment used during development:
# On the cluster:
source activate /ix3/djishnu/alw399/envs/rhino
⚡ Quick Start
📿 Command Line
python slide.py \
--x_path /path/to/your/features.csv \
--y_path /path/to/your/labels.csv \
--out_path /path/to/output/
Use full paths if not running from the src/loveslide directory.
🧪 In a Notebook
import loveslide
from loveslide import OptimizeSLIDE
input_params = {
'x_path': '/path/to/features.csv',
'y_path': '/path/to/labels.csv',
'fdr': 0.1,
'thresh_fdr': 0.1,
'spec': 0.2,
'y_factor': True,
'niter': 500,
'SLIDE_top_feats': 20,
'rep_CV': 50,
'pure_homo': True,
'delta': [0.01],
'lambda': [0.5, 0.1],
'out_path': '/path/to/output/'
}
slider = OptimizeSLIDE(input_params)
slider.run_pipeline(verbose=True, n_workers=1)
🔬 Pipeline Overview
The run_pipeline() method follows three key stages:
🧩 Stage 1: Latent Factor Discovery
- LOVE Algorithm: Identifies overlapping latent factors in the data.
- Output: Latent factor matrix (
z_matrix) and factor loadings.
📊 Stage 2: Statistical Inference with Knockoffs
- Identifies significant standalone and interacting latent factors.
- Controls False Discovery Rate (FDR) to maintain statistical rigor.
📈 Stage 3: Visualization
- Diagnostic plots
- Top genes/features for each latent factor (loadings > |0.05|)
⚙️ Parameters
| Name | Type | Description | Default/Example |
|---|---|---|---|
x_path |
str | Path to feature matrix CSV | Required |
y_path |
str | Path to response/labels CSV | Required |
fdr |
float | Knockoff FDR threshold | 0.1 |
thresh_fdr |
float | FDR threshold in LOVE | 0.1 |
spec |
float | Minimum reproducibility for a factor | 0.2 |
y_factor |
bool | Treat y as categorical |
True |
niter |
int | Iterations for LOVE | 500 |
SLIDE_top_feats |
int | Number of top features to plot | 20 |
rep_CV |
int | Repeats for cross-validation | 50 |
pure_homo |
bool | Use pure variables with loadings = 1 | True |
delta |
list | Regularization parameters | [0.01] |
lambda |
list | Penalty parameters | [0.5, 0.1] |
out_path |
str | Output directory | Required |
🏗️ Project Structure
SLIDE_py/
├── src/
│ ├── loveslide/ # Main Python & R wrappers
│ │ ├── slide.py # Main entry point
│ │ ├── love.py
│ │ ├── knockoffs.py
│ │ ├── ...
│ │ ├── LOVE-master/ # (Legacy) Original LOVE code
│ │ └── LOVE-SLIDE/ # Customized LOVE implementation for SLIDE
├── dist/
├── example/
├── ...
🧠 Design Notes
- Core statistical inference is done using R scripts via
rpy2. - Python acts as an orchestration layer to allow integration into ML workflows.
- Most plotting is done in R (e.g.,
pheatmap,ggplot2).
📌 Known Limitations and TODOs
- YAML → dictionary conversion for easier parameter management
- Extend
y_factorhandling to non-binary variables - Parallelization of knockoff inference (e.g., in
select_short_freq) - Correlation networks visualization using
networkx
📢 Citation & Contact
If you use loveslide in your work, please cite the original R implementation and this repository. For bugs or feature requests, please open an issue on GitHub.
-
Homepage: SLIDE_py on GitHub
-
Issues: Report an Issue
-
Authors:
- Ally Wang (
alw399@pitt.edu) - Swapnil Keshari (
swk25@pitt.edu)
- Ally Wang (
Metadata
Release files for loveslide 0.0.7
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 |
|---|---|---|---|---|
| loveslide-0.0.7.tar.gz | 51.5 kB | With provenance | Details for loveslide-0.0.7.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| loveslide-0.0.7-py3-none-any.whl | Python 3 | none | any | Details for loveslide-0.0.7-py3-none-any.whl |
Total release size: 117.9 kB
Release files / loveslide-0.0.7.tar.gz
| Download URL | loveslide-0.0.7.tar.gz |
|---|---|
| Size | 51.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d8ea80583acf31a43347963a67e100e651a61443b2e731146e890051a22fc709
|
|
BLAKE2b-256 checksum How to use checksums |
059d0cfd58cb504c2e6fe99585b1cf69373c4d8bc6b801c62a4d5cca675fda46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 10, 2025.
Transparency logRelease files / loveslide-0.0.7-py3-none-any.whl
| Download URL | loveslide-0.0.7-py3-none-any.whl |
|---|---|
| Size | 66.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e07a84fa1318fc44e86a2068a423712237d3a47cc375cfe5da188692383c8bea
|
|
BLAKE2b-256 checksum How to use checksums |
487cd2e9d4407c1f964a6b1e79f6bcb2b1f570f7544357ffa946c81f6feed6c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 10, 2025.
Transparency logSecurity for loveslide 0.0.7
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for loveslide-0.0.7.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 10, 2025.
Transparency logA 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.