Metadata-Version: 2.4
Name: zendock
Version: 0.2.4
Summary: a focused Python package for molecular preparation, docking simulation, visualization, and analysis workflows
Project-URL: Homepage, https://github.com/dhiyowiweka/zendock
Project-URL: Repository, https://github.com/dhiyowiweka/zendock
Author: Dhiyowiweka
License: MIT
License-File: LICENSE
Keywords: autodock-vina,bioinformatics,computational-chemistry,docking,drug-discovery
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
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
Classifier: Typing :: Typed
Requires-Python: <3.13,>=3.10
Requires-Dist: joblib>=1.5.3
Requires-Dist: polars>=1.0
Provides-Extra: all
Requires-Dist: biopython>=1.83; extra == 'all'
Requires-Dist: gemmi; extra == 'all'
Requires-Dist: meeko; extra == 'all'
Requires-Dist: molscrub; extra == 'all'
Requires-Dist: pandamap>=4.2.1; extra == 'all'
Requires-Dist: prody>=2.4; extra == 'all'
Requires-Dist: py3dmol>=2.0.4; extra == 'all'
Requires-Dist: rdkit>=2023.9.1; extra == 'all'
Requires-Dist: vina>=1.2.5; extra == 'all'
Provides-Extra: dev
Requires-Dist: build>=1.2.2; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: twine>=5.1.1; extra == 'dev'
Provides-Extra: dock
Requires-Dist: vina>=1.2.5; extra == 'dock'
Provides-Extra: prep
Requires-Dist: gemmi; extra == 'prep'
Requires-Dist: joblib; extra == 'prep'
Requires-Dist: meeko; extra == 'prep'
Requires-Dist: molscrub; extra == 'prep'
Requires-Dist: prody>=2.4; extra == 'prep'
Requires-Dist: rdkit>=2023.9.1; extra == 'prep'
Provides-Extra: viz
Requires-Dist: biopython>=1.83; extra == 'viz'
Requires-Dist: pandamap>=4.2.1; extra == 'viz'
Requires-Dist: py3dmol>=2.0.4; extra == 'viz'
Requires-Dist: rdkit>=2023.9.1; extra == 'viz'
Description-Content-Type: text/markdown

# zendock

[![Open demo in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/dhiyowiweka/zendock/blob/main/notebooks/zendock_colab_demo.ipynb)

`zendock` is a focused Python package for the molecular docking workflow sketched in `notebooks/zendock_colab_demo.ipynb`.

This package provides the stack needed to perform molecular docking for scientific use, prioritizing access and ease of use.

The base package keeps imports lightweight. Install extras for ligand/receptor preparation, docking, and visualization workflows.

## Demo

Try the interactive Google Colab notebook:

[Open the Zendock demo in Colab](https://colab.research.google.com/github/dhiyowiweka/zendock/blob/main/notebooks/zendock_colab_demo.ipynb)

## Philosophy

- Lightweight import by default, optional extras for full workflows
- Notebook prototype, package implementation
- `uv` for development
- `pip` works for end users

## Install

### Users

Install from PyPI with regular `pip`:

```bash
pip install zendock
```

Install the complete workflow stack with:

```bash
pip install "zendock[all]"
```

Targeted extras are also available:

```bash
pip install "zendock[prep]"  # ligand/receptor preparation
pip install "zendock[dock]"  # Vina docking
pip install "zendock[viz]"   # 3D/interaction visualization
```

### Development with `uv`

Create an environment and install the package in editable mode:

```bash
uv venv
source .venv/bin/activate
uv pip install -e ".[all]"
```

Install developer tools too:

```bash
uv pip install -e ".[dev]"
```

## Development Workflow

Typical loop:

```bash
uv venv
source .venv/bin/activate
uv pip install -e ".[all,dev]"
pytest
python -m build
```

## Project Layout

```text
src/zendock/
  __init__.py
  docking.py
  exceptions.py
  fetching.py
  ligand.py
  models.py
  receptor.py
  result_store.py
  results.py
  tools.py
  utils.py
  workspace.py
tests/
Docking.ipynb
pyproject.toml
```

## Current Public API

```python
from zendock import DockingRunner, Ligand, OutputLayout, Receptor
```

`DockingRunner` is the notebook-friendly facade. New code can pass an
`OutputLayout` to centralize output directories and use the typed result objects
cached on `runner.last_result` after docking.

After `run_docking()`, cached results can be inspected as a Polars table:

```python
results = runner.display_docking_results(ligand_name="ligand")
# Columns: pose, binding energy, lRMSD, uRMSD
```

Interaction outputs are generated from saved docking results. Export methods return
paths, while display helpers render the generated files in notebooks (or print a
fallback in non-notebook environments):

```python
runner.display_2d_interaction_map(ligand_name="ligand")
runner.display_3d_interaction_map(ligand_name="ligand")
runner.display_interaction_table(ligand_name="ligand")
```

The equivalent export methods are `export_2d_interaction_diagram`,
`export_3d_interaction_diagram`, and `export_interaction_table`.

## Notes

- Polars is used for tabular docking-result display.
- The package is licensed under MIT.
