Metadata-Version: 2.5
Name: manifold-genetics
Version: 0.3.0
Summary: A lightweight, batteries-included package for genetic analysis with PCA, Admixture, and manifold learning
Project-URL: Homepage, https://github.com/MattScicluna/manifold_genetics
Project-URL: Documentation, https://mattscicluna.github.io/manifold_genetics/
Project-URL: Repository, https://github.com/MattScicluna/manifold_genetics
Project-URL: Issues, https://github.com/MattScicluna/manifold_genetics/issues
Author-email: Matthew Scicluna <mattcscicluna@gmail.com>
License-Expression: BSD-3-Clause
License-File: LICENSE
Keywords: admixture,dimensionality-reduction,genetics,genomics,manifold-learning,pca,visualization
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Requires-Python: <3.13,>=3.10
Requires-Dist: llvmlite>=0.40
Requires-Dist: matplotlib>=3.4.0
Requires-Dist: numba>=0.57
Requires-Dist: numpy>=1.20.0
Requires-Dist: pandas>=1.3.0
Requires-Dist: phate>=2.0.0
Requires-Dist: platformdirs>=3.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: scikit-learn>=1.0.0
Requires-Dist: scipy>=1.7.0
Requires-Dist: seaborn>=0.11.0
Requires-Dist: tqdm>=4.60.0
Requires-Dist: umap-learn>=0.5.0
Provides-Extra: admixture
Requires-Dist: neural-admixture==1.6.7; extra == 'admixture'
Requires-Dist: torch>=1.10.0; extra == 'admixture'
Provides-Extra: aou
Requires-Dist: pandas-gbq>=0.19.0; extra == 'aou'
Provides-Extra: dev
Requires-Dist: black>=22.0.0; extra == 'dev'
Requires-Dist: flake8>=4.0.0; extra == 'dev'
Requires-Dist: isort>=5.10.0; extra == 'dev'
Requires-Dist: pre-commit>=3.5; extra == 'dev'
Requires-Dist: pytest-cov>=3.0.0; extra == 'dev'
Requires-Dist: pytest>=7.0.0; extra == 'dev'
Requires-Dist: tomli>=2.0; (python_version < '3.11') and extra == 'dev'
Provides-Extra: docs
Requires-Dist: ipykernel>=6.29; extra == 'docs'
Requires-Dist: mkdocs-jupyter>=0.24; extra == 'docs'
Requires-Dist: mkdocs-material>=9.5; extra == 'docs'
Requires-Dist: mkdocs>=1.6; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.25; extra == 'docs'
Provides-Extra: geosketch
Requires-Dist: geosketch>=1.3; extra == 'geosketch'
Description-Content-Type: text/markdown

# manifold-genetics

<a href="https://github.com/MattScicluna/manifold_genetics/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/MattScicluna/manifold_genetics/ci.yml?branch=main&label=CI"></a>
<a href="https://coveralls.io/github/MattScicluna/manifold_genetics?branch=main"><img alt="Coverage Status" src="https://img.shields.io/coverallsCoverage/github/MattScicluna/manifold_genetics?branch=main"></a>
<a href="https://pypi.org/project/manifold-genetics/"><img alt="PyPI" src="https://img.shields.io/pypi/v/manifold-genetics"></a>
<a href="https://mattscicluna.github.io/manifold_genetics/"><img alt="Documentation" src="https://img.shields.io/badge/docs-mkdocs--material-teal"></a>

An end-to-end pipeline from PLINK genotypes to publication figures: PCA →
admixture → manifold embedding → visualisation → metrics.

<p align="center">
  <img src="assets/ukbb_phate.png" width="30%" alt="UKBB PHATE embedding coloured by self-described ancestry"/>
  <img src="assets/aou_phate.png" width="30%" alt="All of Us PHATE embedding coloured by ancestry"/>
</p>

## Installation

Requires Python 3.10–3.12, on Linux or macOS.

```bash
pip install manifold-genetics
```

Admixture is an optional extra:

```bash
pip install 'manifold-genetics[admixture]'
```

### Installation from source

```bash
pip install git+https://github.com/MattScicluna/manifold_genetics
```

## Usage

```bash
manifold-genetics acquire synthetic     # a simulated cohort and its config, in seconds
manifold-genetics run config.yaml
```

`acquire hgdp` fetches the public HGDP+1KGP cohort instead; `acquire custom`
writes a config for PLINK files you already have. For raw biobank genotypes,
`preprocess` filters and intersects SNPs and `subsample` chooses the fit
samples, each writing a directory `run` accepts.

## Documentation and tutorials

- **[Documentation](https://mattscicluna.github.io/manifold_genetics/)**
- **[Quickstart](https://mattscicluna.github.io/manifold_genetics/quickstart/)** —
  a full run on public data, and the input and output formats
- **[Tutorial](https://mattscicluna.github.io/manifold_genetics/tutorial/)** —
  a complete run on a simulated cohort, under a minute, nothing to download
- **[Install](https://mattscicluna.github.io/manifold_genetics/install/)** —
  optional extras, external tools, and developing on the repository
- **[Preprocessing](https://mattscicluna.github.io/manifold_genetics/preprocessing/)** —
  filtering raw biobank genotypes and projecting them onto a reference panel

## Help

Open an [issue](https://github.com/MattScicluna/manifold_genetics/issues).

## License

BSD 3-Clause License (see [LICENSE](LICENSE)).

## Citation

If you use this package in your research, please cite:

```
[Your citation here]
```
