Skip to main content

A library for computing samplings in arbitrary dimensions

Project description

Latest Version on PyPI PyPI downloads Code Quality Test Results Test Suite Results CodeFactor Coveralls ReadTheDocs Pyup This code is formatted in black BSD 3-Clause License

A Python library for generating space-filling sample sets of low to moderate dimensional data from domains including:

  • Euclidean space

  • Grassmannian atlas

  • Surface of an n-Sphere

A Collection of Space-filling Sampling Designs for Arbitrary Dimensions. The API is structured such that the top level packages represent the shape of the domain you are interested in:

  • ball - The n-dimensional solid unit ball

  • directional - The space of unit length directions in n-dimensional space. You can also consider this a sampling of the boundary of the n-dimensional unit ball.

  • hypercube - The n-dimensional solid unit hypercube \(x \\in [0,1]^n\).

  • subspace - Sampling a n-1-dimensional subspace orthogonal to a unit vector or sampling the Grassmanian Atlas of projections from a dimension n to a lower dimension m.

  • shape - a collection of (n-1)-manifold and non-manifold shapes embedded in an n dimensional space. For now these must all be sampled using a uniform distribution.

Within each module is a list of ways to fill the space of the samples. Note, that not all of the methods listed below are applicable to the modules listed above. They include:

  • Uniform - a random, uniform distribution of points (available for ball, directional, hypercube, subspace, and shape)

  • Normal - a Gaussian distribution of points (available for hypercube)

  • Multimodal - a mixture of Gaussian distributions of points (available for hypercube)

  • CVT - an approximate centroidal Voronoi tessellation of the points constrained to the given space (available for hypercube and directional)

  • LHS - a Latin hypercube sampling design of points constrained to the space (available for hypercube)

The python CVT code is adapted from a C++ implementation provided by Carlos Correa. The Grassmannian sampler is adapted from code from Shusen Liu.

Installation

A preliminary version is available on PyPI:

pip install samply

Otherwise, you can download the repository for the most cutting edge additions:

git clone https://github.com/maljovec/samply.git
cd samply
python setup.py [build|develop|install]

Usage

You can use the library from python such as the examples below:

import samply

direction_samples = samply.directional.uniform(10000, 2)
ball_samples = samply.ball.uniform(10000, 2)
scvt_samples = samply.directional.cvt(10000, 2)
cvt_samples = samply.hypercube.cvt(10000, 2)

projection_samples = samply.subspace.grassmannian(10000, 3, 2)

The *samples variables will be NxD matrices where N is the number of samples requested and D is the dimensionality of the sampler or the requested dimensionality.

Testing

The test suite can be run through the setup script:

python setup.py test

Example

To test drive a subset of the different samplers in action, check out this little web app hosted on the Google Cloud Platform which is using samply under the covers. Note, the CVT is still rather inefficient for larger sample sizes.

What’s Next

Forthcoming:
  • Improved documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

samply-0.1.1.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

samply-0.1.1-py2.py3-none-any.whl (15.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file samply-0.1.1.tar.gz.

File metadata

  • Download URL: samply-0.1.1.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for samply-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c4977043daf44bdae73458e8860d3408770237426fc1d5473c18cd9a964db55f
MD5 d7d57305a6bd58eced0088ba8863394a
BLAKE2b-256 42a856d25389352e09f95a875d8626d491f139007fca3b4d2583ac1f9a301f5b

See more details on using hashes here.

File details

Details for the file samply-0.1.1-py2.py3-none-any.whl.

File metadata

  • Download URL: samply-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.15

File hashes

Hashes for samply-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2fbaf88e02f87a7ac50e0c04a47eeecf7f77536d88cbc1c6a14e6376ec789e2a
MD5 901c0a34203c0595942d350abecf2b34
BLAKE2b-256 e0b1accbd87205980a44e24e13ab88b1b454b3b4b1d3955e3e1c8a73fd0a7ac3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page