Metadata-Version: 2.4
Name: dnakit
Version: 0.1.5
Summary: Deterministic tools for DNA sequence analysis
Author: DNAKit contributors
License-Expression: MIT AND MIT-0 AND Apache-2.0 AND CC-BY-4.0 AND AGPL-3.0-only
Project-URL: Homepage, https://github.com/mapengsen/DNAKit
Project-URL: Documentation, https://mapengsen.github.io/DNAKit/en/
Project-URL: Repository, https://github.com/mapengsen/DNAKit
Project-URL: Issues, https://github.com/mapengsen/DNAKit/issues
Project-URL: Changelog, https://mapengsen.github.io/DNAKit/en/changelog/
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: DISCLAIMER.md
License-File: THIRD_PARTY_NOTICES.md
License-File: licenses/skills/agentic-science/LICENSE
License-File: licenses/skills/biomcp/CITATION.cff
License-File: licenses/skills/biomcp/LICENSE
License-File: licenses/skills/bionemo/LICENSE
License-File: licenses/skills/bionemo/LICENSE-APACHE-2.0
License-File: licenses/skills/bionemo/LICENSE-CC-BY-4.0
License-File: licenses/skills/bionemo/NOTICE
License-File: licenses/skills/bioskills/LICENSE
License-File: licenses/skills/clawbio/CITATION.cff
License-File: licenses/skills/clawbio/LICENSE
License-File: licenses/skills/damlab/LICENSE
License-File: licenses/skills/deepmind/LICENSE
License-File: licenses/skills/deepmind/README.md
License-File: licenses/skills/deepmind/SKILL_LICENSES.md
License-File: licenses/skills/encode-toolkit/CITATION.cff
License-File: licenses/skills/encode-toolkit/LICENSE
License-File: licenses/skills/feynman/LICENSE
License-File: licenses/skills/genetic-counseling/LICENSE
License-File: licenses/skills/gigwa-mcp/LICENSE
License-File: licenses/skills/gigwa-mcp/NOTICE
License-File: licenses/skills/haploqtl/CITATION.cff
License-File: licenses/skills/haploqtl/LICENSE
License-File: licenses/skills/isabl/LICENSE
License-File: licenses/skills/kdense/CITATION.cff
License-File: licenses/skills/kdense/LICENSE.md
License-File: licenses/skills/misha/LICENSE
License-File: licenses/skills/misha/LICENSE.md
License-File: licenses/skills/myriad/CITATION.cff
License-File: licenses/skills/myriad/LICENSE-APACHE-2.0.txt
License-File: licenses/skills/myriad/LICENSE-CC-BY-4.0.txt
License-File: licenses/skills/myriad/LICENSE.md
License-File: licenses/skills/myriad/NOTICE.md
License-File: licenses/skills/ngs-tertiary/LICENSE
License-File: licenses/skills/omics/LICENSE
License-File: licenses/skills/pku-metagenomics/LICENSE
License-File: licenses/skills/plant-qpcr/CITATION.cff
License-File: licenses/skills/plant-qpcr/LICENSE
License-File: licenses/skills/plant-skills/LICENSE
License-File: licenses/skills/polyploid-cloning/CITATION.cff
License-File: licenses/skills/polyploid-cloning/LICENSE
License-File: licenses/skills/research-suite/LICENSE
License-File: licenses/skills/research-suite/NOTICE
License-File: licenses/skills/sciagent/LICENSE
License-File: licenses/skills/statgen-skills/LICENSE
License-File: licenses/skills/tangermeme/LICENSE
License-File: licenses/skills/tooluniverse/LICENSE
Requires-Dist: PyYAML>=6.0
Requires-Dist: rich>=13.7
Requires-Dist: tomli>=2.0; python_version < "3.11"
Requires-Dist: typer>=0.12
Requires-Dist: requests<3,>=2.32
Requires-Dist: jsonschema<5,>=4.23
Requires-Dist: graphql-core<4,>=3.2
Requires-Dist: pydantic<3,>=2
Requires-Dist: httpx<1,>=0.27
Requires-Dist: opentelemetry-sdk<2,>=1.30
Provides-Extra: reports
Requires-Dist: reportlab<5,>=4; extra == "reports"
Provides-Extra: encode-credentials
Requires-Dist: keyring<26,>=25; extra == "encode-credentials"
Requires-Dist: cryptography>=42; extra == "encode-credentials"
Provides-Extra: bio-analysis
Requires-Dist: numpy<3,>=1.26; extra == "bio-analysis"
Requires-Dist: scipy<2,>=1.11; extra == "bio-analysis"
Requires-Dist: scikit-learn<2,>=1.5; extra == "bio-analysis"
Provides-Extra: bio-formats
Requires-Dist: biopython<2,>=1.85; extra == "bio-formats"
Provides-Extra: bio-reads
Requires-Dist: pysam<0.25,>=0.22; extra == "bio-reads"
Provides-Extra: bio-plots
Requires-Dist: matplotlib<4,>=3.8; extra == "bio-plots"
Provides-Extra: bio-assembly
Requires-Dist: pydna<6,>=5.5; extra == "bio-assembly"
Provides-Extra: bio
Requires-Dist: dnakit[bio-analysis,bio-assembly,bio-formats,bio-plots,bio-reads]; extra == "bio"
Provides-Extra: bio-validation
Requires-Dist: scikit-bio<0.8,>=0.7.3; extra == "bio-validation"
Requires-Dist: statsmodels<1,>=0.14; extra == "bio-validation"
Provides-Extra: genomics-genes
Requires-Dist: pyrodigal<4,>=3.7; extra == "genomics-genes"
Provides-Extra: genomics
Requires-Dist: numpy<3,>=1.26; extra == "genomics"
Requires-Dist: pyrodigal<4,>=3.7; extra == "genomics"
Requires-Dist: pysam<0.25,>=0.22; extra == "genomics"
Requires-Dist: pyfastani<0.7,>=0.6.2; extra == "genomics"
Provides-Extra: dna-storage
Requires-Dist: Chamaeleo<2,>=1.34; extra == "dna-storage"
Provides-Extra: dna-nanotechnology
Requires-Dist: scadnano<1,>=0.21; extra == "dna-nanotechnology"
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: hypothesis>=6.100; extra == "dev"
Requires-Dist: mypy>=1.11; extra == "dev"
Requires-Dist: numpy<3,>=1.26; extra == "dev"
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov>=5.0; extra == "dev"
Requires-Dist: ruff>=0.8; extra == "dev"
Requires-Dist: scikit-learn<2,>=1.5; extra == "dev"
Requires-Dist: setuptools>=77; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Requires-Dist: types-PyYAML>=6.0; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Provides-Extra: docs
Requires-Dist: mkdocs<2,>=1.6; extra == "docs"
Requires-Dist: mkdocs-material<10,>=9.5; extra == "docs"
Requires-Dist: mkdocs-static-i18n<2,>=1.3.1; extra == "docs"
Requires-Dist: mkdocstrings[python]<1,>=0.27; extra == "docs"
Requires-Dist: nbmake<2,>=1.5; extra == "docs"
Provides-Extra: viz
Requires-Dist: CairoSVG<3,>=2.7; extra == "viz"
Requires-Dist: Pillow<13,>=10; extra == "viz"
Provides-Extra: io
Requires-Dist: pyarrow<26,>=19; extra == "io"
Provides-Extra: validation
Requires-Dist: biopython<2,>=1.85; extra == "validation"
Provides-Extra: external-tools
Requires-Dist: biopython<2,>=1.85; extra == "external-tools"
Provides-Extra: agent
Requires-Dist: fastmcp<4,>=3.4.5; extra == "agent"
Requires-Dist: httpx[socks]<1,>=0.27; extra == "agent"
Provides-Extra: neural
Requires-Dist: gdown<6,>=5.2; extra == "neural"
Requires-Dist: huggingface-hub<2,>=0.28; extra == "neural"
Requires-Dist: numpy<3,>=1.26; extra == "neural"
Requires-Dist: scikit-learn<2,>=1.5; extra == "neural"
Requires-Dist: torch<3,>=2.5; extra == "neural"
Requires-Dist: transformers<5,>=4.49; extra == "neural"
Provides-Extra: training
Requires-Dist: huggingface-hub<2,>=0.28; extra == "training"
Requires-Dist: numpy<3,>=1.26; extra == "training"
Requires-Dist: openpyxl<4,>=3.1; extra == "training"
Requires-Dist: pandas<4,>=2.2; extra == "training"
Requires-Dist: pyarrow<26,>=19; extra == "training"
Requires-Dist: scikit-learn<2,>=1.5; extra == "training"
Requires-Dist: torch<3,>=2.6; extra == "training"
Requires-Dist: transformers<5,>=4.49; extra == "training"
Requires-Dist: xlrd<3,>=2.0; extra == "training"
Provides-Extra: ml
Requires-Dist: numpy<3,>=1.26; extra == "ml"
Requires-Dist: scikit-learn<2,>=1.5; extra == "ml"
Requires-Dist: joblib<2,>=1.4; extra == "ml"
Requires-Dist: threadpoolctl<4,>=3.1; extra == "ml"
Requires-Dist: openpyxl<4,>=3.1; extra == "ml"
Requires-Dist: pandas<4,>=2.2; extra == "ml"
Requires-Dist: pyarrow<26,>=19; extra == "ml"
Requires-Dist: xlrd<3,>=2.0; extra == "ml"
Provides-Extra: xgboost
Requires-Dist: dnakit[ml]; extra == "xgboost"
Requires-Dist: xgboost<4,>=2.1; extra == "xgboost"
Provides-Extra: lightgbm
Requires-Dist: dnakit[ml]; extra == "lightgbm"
Requires-Dist: lightgbm<5,>=4.5; extra == "lightgbm"
Provides-Extra: catboost
Requires-Dist: dnakit[ml]; extra == "catboost"
Requires-Dist: catboost<2,>=1.2; extra == "catboost"
Provides-Extra: neural-caduceus
Requires-Dist: mamba-ssm<3,>=2.2; extra == "neural-caduceus"
Provides-Extra: neural-enformer
Requires-Dist: gdown<6,>=5.2; extra == "neural-enformer"
Requires-Dist: enformer-pytorch<1,>=0.8.11; extra == "neural-enformer"
Provides-Extra: neural-evo2
Requires-Dist: evo2<0.7,>=0.5.3; (python_version >= "3.11" and python_version < "3.13") and extra == "neural-evo2"
Dynamic: license-file

<p align="right">
  <a href="https://github.com/mapengsen/DNAKit/blob/main/README_CN.md">简体中文</a> | <strong>English</strong>
</p>

<p align="center">
  <img alt="DNAKit logo" src="https://raw.githubusercontent.com/mapengsen/DNAKit/main/docs/assets/images/DNAKit-icon.png" width="40%">
</p>

<p align="center">
  <a href="https://github.com/mapengsen/DNAKit/actions/workflows/ci.yml">
    <img src="https://github.com/mapengsen/DNAKit/actions/workflows/ci.yml/badge.svg?branch=main&event=push" alt="CI status">
  </a>
  <a href="https://mapengsen.github.io/DNAKit/en/">
    <img src="https://img.shields.io/badge/docs-GitHub%20Pages-4051b5" alt="Documentation">
  </a>
  <a href="https://www.python.org/downloads/">
    <img src="https://img.shields.io/badge/Python-3.10%2B-3776AB" alt="Python 3.10+">
  </a>
  <a href="https://github.com/mapengsen/DNAKit/blob/main/LICENSE">
    <img src="https://img.shields.io/github/license/mapengsen/DNAKit" alt="MIT license">
  </a>
</p>

<p align="center">
  <a href="https://pypi.org/project/dnakit/">
    <img src="https://img.shields.io/pypi/v/dnakit?include_prereleases=true&label=PyPI&logo=pypi&cacheSeconds=300" alt="PyPI version">
  </a>
  <a href="https://github.com/mapengsen/DNAKit/tree/main/packaging/bioconda">
    <img src="https://img.shields.io/badge/Bioconda-recipe-43B02A?logo=anaconda&logoColor=white" alt="Bioconda recipe">
  </a>
  <a href="https://github.com/mapengsen/DNAKit/tree/main/galaxy/dnakit">
    <img src="https://img.shields.io/badge/Galaxy-wrapper-2C3143?logo=galaxy&logoColor=white" alt="Galaxy wrapper">
  </a>
  <a href="https://github.com/mapengsen/DNAKit/tree/main/packaging/guix">
    <img src="https://img.shields.io/badge/GNU%20Guix-package-A42E2B?logo=gnu&logoColor=white" alt="GNU Guix package">
  </a>
</p>

<p align="center">
  <strong>DNAKit: A Comprehensive Toolkit for Efficient DNA Research</strong>
</p>

# What is DNAKit?

DNAKit is a reproducible Python toolkit for DNA sequence analysis, positioned as an "RDKit for
DNA." It covers standardization, sequence and annotation formats, basic operations, descriptors,
pattern scanning, thermodynamics, fingerprints, similarity analysis, clustering and dataset
splitting, comprehensive evaluation, molecular-biology simulation, and visualization. DNA
foundation models can optionally be used for direct property prediction or to extract
representations for k-means clustering.

# Installation and quick start

Install the current release:

```bash
pip install dnakit==0.1.5
```

Install the optional VEP, ClinVar, dbSNP, gnomAD, dN/dS, and Golden Gate
backend with `pip install "dnakit[external-tools]"`.

To expose DNAKit to an MCP-capable Agent, run `pip install "dnakit[agent]"` and configure the
`dnakit-mcp` command in the Agent client.

This source checkout's built-in `run_agent()` also supports optional tool generation, description optimization or compatible implementation repairs, local file result caching/resume, and retrieval from a user-selected knowledge directory (RAG). See the [Agent tutorial](docs/llm_tools/agent.en.md#agent-actions) for configuration and examples; generation and optimization require a writable checkout and explicit permission for side effects.

This source checkout also includes a curated DNA/genomics Skill catalog. Install the checkout
with `python -m pip install -e "."`, then search with `dnakit skills search "variant annotation"`
or install the discovery skill with `dnakit skills install dnakit --agent codex`.
See the [Skills tutorial](docs/llm_tools/skills.en.md) for Claude Code, Cursor, MCP, and citations.
DNAKit code remains MIT; bundled Skills retain their [original licenses and attribution](THIRD_PARTY_NOTICES.md).

This checkout adds [breeding, gene finding, methylation, DNA storage and nanostructure APIs](docs/api/features/38_genomics_extensions.en.md), plus [external analyses and MCP connections](docs/api/features/39_external_genomics.en.md).
Install selected extras locally, for example `python -m pip install -e ".[bio-analysis,genomics-genes,agent]"`.
Original projects, authors and remaining integration gaps are recorded in the [source FAQ](docs/faq/genomics_sources.en.md). The [335-project review](docs/faq/user_catalog.en.md) records every supplied project, duplicate, added interface and deferred dependency.

To contribute to development, clone the repository and create the complete Conda environment:

```bash
conda env create -f environment-dev.yml
conda activate dnakit-dev
```

# Documentation

The complete English documentation is available from the
[DNAKit documentation homepage](https://mapengsen.github.io/DNAKit/en/), including the
[feature tree](https://mapengsen.github.io/DNAKit/en/api/features/function_tree/) and
[FAQ](https://mapengsen.github.io/DNAKit/en/faq/).

# Support and community

**GitHub repository:**

[github.com/mapengsen/DNAKit](https://github.com/mapengsen/DNAKit)

For questions, feedback, or suggestions, see:

- [FAQ](https://mapengsen.github.io/DNAKit/en/faq/)
- [GitHub Issues](https://github.com/mapengsen/DNAKit/issues)

# Additional distribution platforms

The repository provides [Bioconda and GNU Guix recipes](https://github.com/mapengsen/DNAKit/tree/main/packaging)
and a [Galaxy Tool Shed wrapper](https://github.com/mapengsen/DNAKit/tree/main/galaxy/dnakit).
These files target `0.1.1`. Until they are reviewed and published by their respective platforms,
use the PyPI installation method above.

# Changelog

See [CHANGELOG.md](https://github.com/mapengsen/DNAKit/blob/main/CHANGELOG.md) for release notes.

# Citation

The DNAKit project paper has not yet been published. Cite the current version as:

```text
DNAKit contributors. DNAKit 0.1.5, 2026. https://github.com/mapengsen/DNAKit
```

This section will be updated with the paper citation after publication. When using specific algorithms, databases, or optional backends, cite their corresponding sources as well.

The working tree also provides native DNA encodings, generative metrics, statistics and specification-based optimization, plus optional format codecs and specialist alignment/NGS backends. Usage is organized by task in the [feature tutorials](docs/api/features/function_tree.en.md); see [bioinformatics notes](docs/faq/bioinformatics.en.md) for dependencies and implementation details. Install these with `python -m pip install -e ".[bio]"`.
