Releases: amkrajewski/nimplex
Releases · amkrajewski/nimplex
v0.4.0
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
-1denoting 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
Major Changes:
-
Implemented Python interface for all existing functions allowing one to use nimplex as a native Python binary. Simply:
-
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 -
Then, copy the
nimplex.soto your Python's code working directory and import just like another Python packageimport nimplex -
And you are ready! All function names follow
*_pypattern 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
v0.2.0
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
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
Minor Changes:
- Correctly adjusted the Nimble file and a small bug fix.
Full Changelog: v0.0.4...v0.0.5
v0.0.4
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
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
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
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