Skip to content

Releases: amkrajewski/nimplex

v0.4.0

12 Jan 14:18

Choose a tag to compare

Major Changes:

  • Finished implementing procedures for the generation of simplex graphs, where all points of uniform grids are connected to their neighbors using just combinatorics in O(N) time, as described in the upcoming manuscript.
  • Added graph generation to the task routing based on configured or interactive CLI.
  • Added Python interface for graph generating algorithms.
  • Added NumPy output for graph generating algorithms, where a grid of nodes is exported as usual NDArray and the neighborhood sequence of sequences is exported as a sparse NDArray with size N x d(d-1) and -1 denoting no neighbor spots.
  • Added independent test scripts with several suits of several tests, for:
    1. Simplex grid generation (full/internal, integer/fractional, print output / shape)
    2. Simplex graph generation (integer/fractional, print output / shape)
    3. Command Line Interface (CLI) interactions covering grids, graphs, and NumPy outputs runtime and correctness.

Minor Changes:

  • Added 3-component-specific graph generation algorithm, which (1) accesses the neighbor list sequentially, allowing further optimizations, and (2) doesn't calculate binom, allowing for approximately 30% speed up relative to arbitrary-dimensional algorithm.
  • Numerous small optimizations and style improvements.

Full Changelog: v0.3.0...v0.4.0

v0.3.0

09 Jan 15:34

Choose a tag to compare

Major Changes:

  • Implemented Python interface for all existing functions allowing one to use nimplex as a native Python binary. Simply:

    1. Start by compiling it on your machine

      nim c --app:lib --out:nimplex.so --d:release --threads:on --passC:-flto --passc:-ffast-math --passL:-flto nimplex
      
    2. Then, copy the nimplex.so to your Python's code working directory and import just like another Python package

      import nimplex
      
    3. And you are ready! All function names follow *_py pattern relative to the nim ones, e.g.,

      nimplex.simplex_grid_fractional_py(dimension, num_points)
      

Full Changelog: v0.2.1...v0.3.0

v0.2.1

03 Nov 02:59

Choose a tag to compare

Minor Changes:

  • Added benchmarking functions.

Full Changelog: v0.2.0...v0.2.1

v0.2.0

09 Jan 15:25

Choose a tag to compare

Major Changes:

  • Reorganized task routing in both interactive and configured modes to be more clear and extensible to allow for clean implementation of upcoming features on top of the existing ones.
  • Added NumPy output option for simplex grids and samplings.
  • Improved input validation.

Minor Changes:

  • Import optimizations to further shrink the (already very compact) binary.
  • Help function polishing all around.

Full Changelog: v0.1.0...v0.2.0

v0.1.0

03 Nov 03:07

Choose a tag to compare

Major Changes:

  • Added ability to run configured (-c) mode, where all arguments are passed as CLI arguments.
  • A help function with instructions has been added to support enabling non-interactive mode and elaborate on interactive options.
  • CLI handling restructure - CLI handling routines were moved outside of the "main" function to improve code clarity and maintainability.

Minor Changes:

  • Small bug fixes in CLI.

Full Changelog: v0.0.5...v0.1.0

v0.0.5

03 Nov 02:53

Choose a tag to compare

Minor Changes:

  • Correctly adjusted the Nimble file and a small bug fix.

Full Changelog: v0.0.4...v0.0.5

v0.0.4

14 Aug 22:42

Choose a tag to compare

Major Changes:

  • Added random simplex sampling based on the exponential distribution, resulting in a homogenous sampling
  • Added some assertions for configuration options when running from CLI

Full Changelog: v0.0.3...v0.0.4

v0.0.3

14 Aug 18:07

Choose a tag to compare

Major Changes:

  • Modified the literature grid generating algorithm into a brand new one to create only "internal" points that belong to the given order of a simplex (e.g. tetrahedron), thus excluding lower order ones (e.g. for a tetrahedron -> points, lines, triangles). The effect is the same as removing all points containing zeros, but it is ((M+N-1) choose (N-1)) / ((M-1) choose (N-1)) times faster, or e.g. 763 times faster to find internal grid of 9-simplex with dimensions divided by 12 :)
  • Added internal grid generator with fractional output
  • Added a simple command line interface for some quick single-time results convenience and testing

Full Changelog: v0.0.2...v0.0.3

v0.0.2

14 Aug 17:53

Choose a tag to compare

Major Changes:

  • Added a small secondary function that converts the grid from an integer form to the fractional form
  • Improved variable names to make them more readable and avoid confusion between dimensions and divisions variables

Full Changelog: v0.0.1...v0.0.2

v0.0.1

14 Aug 17:35

Choose a tag to compare

First Release Notes:

  • Came up with a neat name!
  • Implemented a grid-generating algorithm for an N-dimensional simplex space in Nim based on the NEXCOM algorithm common in the literature (nothing new science-wise until this point but we will get there soon), and it works great. Blazing fast.

Full Changelog: https://github.com/amkrajewski/nimplex/commits/v0.0.1