#math #orthogonal #arrays #monte #carlo

oars

A library providing construction methods and utility functions for orthogonal arrays and strong orthogonal arrays

17 releases (stable)

✓ Uses Rust 2018 edition

2.0.4 Sep 29, 2019
2.0.3 Sep 18, 2019
2.0.1 Jul 24, 2019
1.1.2 Jul 21, 2019
0.2.0 Jun 5, 2019

#48 in Math

Download history 60/week @ 2019-06-15 70/week @ 2019-06-22 60/week @ 2019-06-29 118/week @ 2019-07-06 59/week @ 2019-07-20 27/week @ 2019-07-27 75/week @ 2019-08-03 37/week @ 2019-08-10 257/week @ 2019-08-24 32/week @ 2019-08-31 46/week @ 2019-09-07 62/week @ 2019-09-14 180/week @ 2019-09-21

312 downloads per month

MIT license

50KB
901 lines

oars

Build Status crates badge Documentation License

Summary

oa-rs/oars is a library for constructing orthogonal arrays (OAs) with various parameters, with the ability to construct OAs using multiple construction methods. It also provides utilities for constructing strong orthogonal arrays that work with the facilities for existing OAs or constructing SOAs from scratch. On top of being able to generated orthogonal arrays, this crate provides utilities to verify orthogonal arrays given a set of parameters.

These orthogonal arrays are not predefined and are constructed on the fly. If you want to create orthogonal arrays using predefined lookup tables, there are many resources online that provide the numbers for you to use.

For more information about orthogonal arrays and their use in Monte Carlo sampling, check out Chapter 10 of Art Owen's Monte Carlo book.

This library only guarantees stability against stable Rust, unless there is significant interest in supporting older versions. In such case, please let me know by either filing an issue on Github or contacting me.

Development

This project only relies on the ndarray crate. There are several optimizations that can be applied to the crate for compilation, such as BLAS acceleration. You can optionally enable serde support for the orthogonal array structs with features = ["serialize"].

This crate was made for the stable compiler, so building is as simple as

cargo build
# or
cargo build --release

Usage

You can use this library with your Rust project via cargo. It targets the stable Rust compiler, so as long as you keep Rust updated, you'll probably be good.

I test this library on Mac/Linux with Travis, and also on my personal Mac and Linux machines.

Of course, if you find any issues, please file an issue or send a PR. Feature requests are also welcome.

If you want to enable serialization support for this library, include your dependency as such:

[dependencies.oars]
version = "1.1"
features = ["serialize", "parallel"] # optional features

Dependencies

~3MB
~59K SLoC