Skip to content

clbarnes/nblast-rs

Repository files navigation

nblast-rs

Build Status

Rust implementation of NBLAST, originally published here and implemented here, with python bindings.

This repository acts as a cargo workspace, and contains three crates:

  • nblast-rs, a cargo project representing the nblast rust crate
  • nblast-py, a maturin project representing the pynblast python project (which binds to rust)
  • nblast-js, a wasm-pack project building the nblast_js webassembly package (which binds to rust)

To build and test the python project in nblast-py (which should not be deployed as a crate), use maturin develop and pytest in the subdirectory.

See crates.io and docs.rs for the rust project, or PyPI for the python package.

Development

Requires a recent stable rust compiler.

nblast rust crate

In the nblast-rs subdirectory

  • Use cargo build / cargo test / cargo bench etc.

pynblast python package

In the nblast-py subdirectory

  • Install the development dependencies with pip install -r requirements.txt
  • Compile the rust component and install locally with maturin develop (add --release for an optimised build)

nblast_js javascript package

In the nblast-js subdirectory

  • Use make pkg (or make pkg-debug) to build the WASM bundle
  • See nblast-js/examples/nblast-app for a standalone NBLAST webapp

Notes

Installing the python wheel from a source distribution (sdist) is currently not supported and will likely fail. See here for details on how to build locally if wheels are not available for your platform.