Skip to content
A library for creating and verifying orthogonal arrays for Monte Carlo sampling
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs Update badge Jul 18, 2019
oars_proc_macro Add license for oars proc macro Jul 6, 2019
.gitignore Initial commit Nov 12, 2018
.travis.yml Create travis config for CI Jan 9, 2019
Cargo.toml Move `profile` setup to root manifest Jul 4, 2019
LICENSE.txt Change license to MIT, update badge Jun 18, 2019
azure-pipelines.yml Update github connection info Jul 19, 2019


Build Status crates badge Documentation License


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.


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


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:

version = "1.1"
features = ["serialize", "parallel"] # optional features
You can’t perform that action at this time.