Metadata-Version: 2.4
Name: genomen
Version: 0.1.4
Summary: Polygenic Risk and Association beyond Linearity
License-Expression: Apache-2.0
Project-URL: Repository, https://github.com/AI-sandbox/genomen
Project-URL: Issues, https://github.com/AI-sandbox/genomen/issues
Keywords: polygenic risk,ensemble learning
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: fire>=0.7.0
Requires-Dist: matplotlib>=3.8.4
Requires-Dist: numpy>=1.26.4
Requires-Dist: pandas>=2.2.3
Requires-Dist: python-dotenv>=1.0.1
Requires-Dist: pyyaml>=6.0.2
Requires-Dist: scikit-learn>=1.6.0
Requires-Dist: scikit-optimize>=0.10.2
Requires-Dist: shap>=0.46.0
Requires-Dist: tqdm>=4.67.1
Requires-Dist: wandb>=0.19.7
Requires-Dist: pyarrow>=19.0.1
Requires-Dist: pgenlib>=0.92.1
Requires-Dist: statsmodels>=0.14.4
Requires-Dist: joblib>=1.5.1
Requires-Dist: dacite>=1.9.2
Requires-Dist: plotly>=6.3.0
Requires-Dist: nbformat>=5.10.4
Requires-Dist: catboost>=1.2.7
Requires-Dist: lightgbm==4.5
Requires-Dist: xgboost>=2.1.4
Provides-Extra: dev
Requires-Dist: black>=25.1.0; extra == "dev"
Requires-Dist: ipykernel>=6.29.5; extra == "dev"
Requires-Dist: isort>=6.0.1; extra == "dev"
Requires-Dist: py-spy>=0.4.0; extra == "dev"
Requires-Dist: pyranges>=0.1.4; extra == "dev"
Requires-Dist: pytest>=8.3.5; extra == "dev"
Requires-Dist: seaborn>=0.11.0; extra == "dev"
Requires-Dist: umap-learn>=0.5.9.post2; extra == "dev"
Provides-Extra: gpu
Requires-Dist: torch>=2.5.0; extra == "gpu"
Requires-Dist: cudf-cu12<26,>=25.2; extra == "gpu"
Requires-Dist: cuml-cu12<26,>=25.2; extra == "gpu"
Requires-Dist: libcudf-cu12<26,>=25.2; extra == "gpu"
Requires-Dist: rmm-cu12<26,>=25.2; extra == "gpu"
Requires-Dist: raft-dask-cu12<26,>=25.2; extra == "gpu"
Requires-Dist: cupy-cuda12x<14,>=13.4; extra == "gpu"
Provides-Extra: dnn
Requires-Dist: torch>=2.5.0; extra == "dnn"
Requires-Dist: einops>=0.6.0; extra == "dnn"
Requires-Dist: jaxtyping>=0.2.0; extra == "dnn"

<div align="center">

# GenomEn

**Polygenic Risk and Association beyond Linearity**

[![PyPI version](https://img.shields.io/pypi/v/genomen.svg)](https://pypi.org/project/genomen/)
[![PyPI downloads](https://img.shields.io/pypi/dm/genomen.svg)](https://pypi.org/project/genomen/)
[![Website](https://img.shields.io/badge/🌐%20Website-visit-blue)](https://genomen-website.vercel.app/)
[![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/downloads/release/python-3110/)
[![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/release/python-3120/)
[![Python 3.13](https://img.shields.io/badge/python-3.13-blue.svg)](https://www.python.org/downloads/release/python-3130/)
[![Format Check](https://github.com/AI-sandbox/genomen/actions/workflows/format-check.yml/badge.svg)](https://github.com/AI-sandbox/genomen/actions/workflows/format-check.yml)

</div>

## Overview

Genomic Ensembling (GenomEn) is an ensemble framework for genotype-to-phenotype prediction that uses both linear and non-linear estimators to capture gene-gene interactions often overlooked by traditional polygenic risk score (PRS) methods. For more informations on the methods, please refer to our [paper](https://github.com/AI-sandbox). 

The package enables researchers to improve predictive performance beyond conventional linear PRS approaches by modeling complex genetic interactions. GenomEn also natively supports variants on the X sex chromosome, which are often neglected due to integration challenges with autosomes, further improving predictive performance and simplifying the study of X-linked traits. Finally, GenomEn allows for local and global variant-level interpretability via [SHAP](https://arxiv.org/abs/1705.07874) values, allowing to gain new insights into complex traits.

## Installation

Install from PyPI:

```bash
pip install genomen
```

Install with optional dependency groups:

```bash
# Development dependencies (black, pytest, etc.)
pip install genomen[dev]

# GPU support (CUDA 12)
pip install genomen[gpu]

# Deep neural network support
pip install genomen[dnn]
```

## Quick Start

```python
from genomen.data import DataSet, split
from genomen.model import GenomenModel

# Load and split data
dataset = DataSet()
train_set, test_set, val_set = split(dataset)

# Train model
model = GenomenModel()
model.fit(train_set, val_set)

# Make predictions
geno_preds, covar_preds, preds = model.predict(test_set)
```

## Documentation

For detailed documentation, tutorials, and examples, please visit the [official documentation site](https://genomen-website.vercel.app/docs) or browse the local documentation in the [docs/](docs/) directory.

## Citation

If you use GenomEn in your research, please cite:

```bibtex
@article{Thomassin2025,
  title={Polygenic risk and association beyond linearity},
  author={First Author and Second Author and Third Author},
  journal={Conference/Journal Name},
  year={2024},
  url={https://your-domain.com/your-project-page}
}
```

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For development setup, see the [getting started guide](docs/notebooks/getting_started.md).

## License

This project is licensed under the Apache License 2.0. See the [LICENSE](./LICENSE) file for details.

## Links

- **Website**: https://genomen-website.vercel.app/
- **Documentation**: https://genomen-website.vercel.app/docs
- **Phenotype Browser**: https://genomen-website.vercel.app/browser
- **PyPI**: https://pypi.org/project/genomen/
- **GitHub**: https://github.com/AI-sandbox/genomen
