Nearly Orthogonal Latin Hypercube Generator

## Project description

This library allows to generate Nearly Orthogonal Latin Hypercubes (NOLH) according to Cioppa (2007) and De Rainville et al. (2012) and reference therein.

## Installation

Clone the repository

```\$ git clone http://github.com/fmder/pynolh.git
```

and from the cloned directory type

```\$ python setup.py install
```

PyNOLH requires Numpy.

## Usage

The library contains a single generator and a function to retrieve the necessary parameters from a desired dimensionality. To generate a 6 dimension NOLH from the indentity permutation:

```import pynolh

dim = 6
m, q, r = pynolh.params(dim)
conf = range(q)
remove = range(dim - r, dim)
nolh = pynolh.nolh(conf, remove)
```

The NOLH returned is a numpy array with one row being one sample.

You can also produce a NOLH from a random permutation configuration vector and remove random columns:

```import pynolh
import random

dim = 6
m, q, r = pynolh.params(dim)
conf = random.sample(range(q), q)
remove = random.sample(range(q), r)
nolh = pynolh.nolh(conf, remove)
```

The nolh() function accepts configurations with either numbers in [0 q-1] or [1 q].

```import pynolh

dim = 6
m, q, r = pynolh.params(dim)
conf = range(1, q + 1)
remove = range(dim - r + 1, dim + 1)
nolh = pynolh.nolh(conf, remove)
```

Some prebuilt configurations are given within the library. The CONF module attribute is a dictionary with the dimension as key and a configuration, columns to remove pair as value.

```import pynolh

conf, remove = pynolh.CONF
nolh = pynolh.nolh(conf, remove)
```

The configurations for dimensions 2 to 7 are from Cioppa (2007) and 8 to 29 are from De Rainville et al. 2012.

## Configuration Repository

See the Quasi Random Sequences Repository for more configurations.

## Project details

This version 0.1

Uploaded `source`