Metadata-Version: 2.4
Name: nucleopt
Version: 0.1.7
Summary: Optimizers from the nucleobench package.
Author-email: Move37 Labs <joel.shor@move37labs.com>
Project-URL: Homepage, https://github.com/move37-labs/nucleobench
Project-URL: Bug Tracker, https://github.com/move37-labs/nucleobench/issues
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: torch>=2.2
Requires-Dist: numpy>=1.16
Requires-Dist: scipy
Requires-Dist: pandas
Requires-Dist: h5py
Requires-Dist: pyarrow
Requires-Dist: google-cloud-storage
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Requires-Dist: pyclean; extra == "dev"
Dynamic: license-file

# NucleoBench

This is the initial repo for an upcoming paper, `NucleoBench: A Large-Scale Benchmark of Neural Nucleic Acid Design Algorithms`.

This repo is covered by the Apache-2.0 license.

This repo is intended to be used in a few ways:

1. Reproducing the results from our paper.
1. Running the NucleoBench sequence designers on custom problems.
1. Using our new designer, AdaBeam, on a custom problem.

To do these, you can clone this repo, use the Docker image (for the benchmark), or use the PyPi package for our designers.

## Results

![Summary of results.](https://raw.githubusercontent.com/move37-labs/nucleobench/main/assets/images/results_summary.png)

## Installation from PyPi

```bash
pip install nucleobench
```

Then you can use it in python:
```python
from nucleobench import optimizations
opt = optimizations.get_optimization('beam_search_unordered')  # Any optimizer name.
```

## Installation & testing from GitHub

```bash
# Clone the repo.
git clone https://github.com/move37-labs/nucleobench.git
cd nucleobench

# Create and activate the conda environment.
conda env create -f environment.yml
conda activate nucleobench

# Run all the unittests.
pytest nucleobench/
```

You can also run the integration tests, which require an internet connection:

```bash
pytest docker_entrypoint_test.py
```

## Running NucleoBench from PyPi or Docker

See the `recipes/colab` folder for examples of how to run the designers with PyPi.
See the `recipes/docker` folder for examples of how to run the designers with Docker.
See the `recipes/python` folder for examples of how to run the designers with the cloned github repo.

## Building a Docker image

To help deploy NucleoBench to the cloud, we've created a docker container. To build it yourself, see the top of `Dockerfile` for instructions. One way of creating a docker file is:

```bash
docker build -t nucleobench -f Dockerfile .
```
