Metadata-Version: 2.4
Name: biodiscovery
Version: 0.1.0
Summary: Unofficial Python SDK for Amazon Bio Discovery — AI-powered antibody design
Project-URL: Homepage, https://github.com/nodesbio/biodiscovery-python
Project-URL: Documentation, https://github.com/nodesbio/biodiscovery-python#readme
Project-URL: Issues, https://github.com/nodesbio/biodiscovery-python/issues
Author-email: "Nodes Bio, Inc." <john@nodes.bio>
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: antibody,aws,biodiscovery,bioinformatics,drug-discovery,protein-design
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Requires-Python: >=3.9
Requires-Dist: httpx>=0.25
Requires-Dist: pydantic>=2.0
Description-Content-Type: text/markdown

# biodiscovery-python

**The unofficial Python SDK for [Amazon Bio Discovery](https://aws.amazon.com/biodiscovery/).**

Design antibodies with AI. Programmatically.

```bash
pip install biodiscovery
```

> **⚠️ Unofficial.** This package is not affiliated with or endorsed by Amazon Web Services.
> Built by [Nodes Bio, Inc.](https://nodes.bio) — AI Synthesis for Science and Medicine.

---

## Quick Start

```python
from biodiscovery import BioDiscoveryClient

client = BioDiscoveryClient(
    application_id="your-app-id",
    access_key_id="AKIA...",
    secret_access_key="...",
    session_token="...",
)

# Get a project
project = client.get_project("f29a1f5a33504ca885d0bea53d3570ba")
print(project.name, project.status)

# Get experiment results
experiment = client.get_experiment(
    project_id=project.project_id,
    experiment_id="f4ef6a1e01c84f4ea6bf29bf2028e5e5",
)
print(f"Cost: {experiment.estimated_experiment_units} EU")
print(f"Status: {experiment.status}")

# Inspect a module's IO spec
module = client.get_module("rfantibody")
print(module.description)
print(module.io_spec.inputs)

# Get a recipe DAG
recipe = client.get_recipe("8f2e9b3c7d154aa6b2c8f1e9d0a3b5c4")
for step in recipe.steps:
    print(f"  {step.step_name} → {step.module_id}")

# List wet lab orders
orders = client.list_wetlab_orders(project.project_id, experiment.experiment_id)
```

## Authentication

Amazon Bio Discovery uses AWS SigV4 signing with temporary credentials obtained via Identity Center SSO. The SDK handles signing automatically — you provide the credentials from your Bio Discovery session.

To get your credentials:
1. Log in to [biodiscovery.aws.com](https://biodiscovery.aws.com)
2. Open browser DevTools → Network tab
3. Find the `/getcredentials` response
4. Copy `applicationId`, `credentials.accessKeyId`, `credentials.secretAccessKey`, `credentials.sessionToken`

## API Coverage

| Endpoint | Method | Description |
|----------|--------|-------------|
| `get_project()` | `getproject` | Get project details |
| `get_experiment()` | `getexperiment` | Get experiment details + parameters |
| `get_module()` | `gethostedmodule` | Get module info + IO specification |
| `get_recipe()` | `gethostedrecipe` | Get recipe DAG definition |
| `list_wetlab_orders()` | `listwetlaborders` | List CRO orders for an experiment |
| `get_user_details()` | `getuserdetails` | Get current user info |
| `list_feature_flags()` | `listfrontendfeatures` | List enabled platform features |

## Module Catalog

The SDK includes a reference catalog of known Bio Discovery modules:

```python
from biodiscovery.catalog import MODULES, RECIPES, CRO_PARTNERS

# All 40+ hosted bioFMs
for module_id, description in MODULES.items():
    print(f"{module_id}: {description}")

# Known recipe IDs
print(RECIPES["de_novo_design"])

# CRO partners
for partner, info in CRO_PARTNERS.items():
    print(f"{partner}: {info}")
```

## Models

All API responses are parsed into typed [Pydantic](https://docs.pydantic.dev/) models:

- `Project` — project metadata and status
- `Experiment` — experiment config, parameters, EU cost, timing
- `Module` — bioFM module with parsed IO specification
- `Recipe` — workflow DAG with steps and dependency piping
- `WetLabOrder` — CRO order status and assay details

## Before You Design: Understand the Biology

Amazon Bio Discovery designs antibodies. But *which* target should you design against?

**[Jarvis](https://nodes.bio/jarvis)** sends your biology question to five AI models simultaneously and returns a consensus answer with a confidence score. Use it to evaluate targets, review literature, and build confidence before you spend Experiment Units.

**[MedMap](https://nodes.bio)** turns plain-English biology questions into interactive pathway maps. Visualize the disease mechanism, identify druggable nodes, then take those targets into Bio Discovery.

*Research → Visualize → Design → Test. That's the workflow.*

## Contributing

This is an early-stage SDK built from reverse-engineering the Bio Discovery web application. Contributions welcome:

- Additional endpoint coverage (create project, run experiment, upload files)
- Async client (`httpx.AsyncClient`)
- CLI tool
- Better credential management (browser cookie extraction, SSO flow)

## License

Apache 2.0 — see [LICENSE](LICENSE).

---

Built by **[Nodes Bio, Inc.](https://nodes.bio)** — AI Synthesis for Science and Medicine.
