Skip to content

v0.7.0

Choose a tag to compare

@amkrajewski amkrajewski released this 04 Oct 17:18
· 75 commits to main since this release

Major Changes:

  • Finalized the stitching utility (docs here) which contains functions related to the automation of combining ("stitching") of the compositional graphs to form graph complexes so that much more complex graphs can be built from simpler ones while retaining homogeneous structure of the space. Furthermore, one can keep track of the provenance of the subgraphs and use this information to deploy computational (e.g., ML) models on the per-subgraph basis, which should be extremely useful for (a) combining the power of many specialized models and (b) creating stacked spaces for multi-step problems broken down into individual steps.

  • Added a Jupyter notebook 03.CompositioalSpaceComplexes.ipynb demonstrating the new graph complex construction ("stitching") capability. The included runnable examples demonstrate how to:

    • Plot graphs using igraph, which can be done quite directly using nimplex's point grid and neighbor lists edges = [(i,n) for i in range(len(gridAtt)) for n in nList[i]]

    • Identify ordered subsystems in nimplex grids, like A-B-C and C-A-B within A-B-C-D-E and D-C-G-F-A-H-B to establish connectivity between them. We will use this to combine 3 4-component systems (tetrahedra) by 2 3-component subsystems (triangles) to create a chain.

    Screenshot 2024-10-04 at 13 10 54

    • Identify all subspaces of a given order in low dimensional and high dimensional spaces (e.g., all quantized compositions of any 3 things out of N) and combine ("stitch") them together to form a simplex graphs that intersect themselves in 3D because of high dimensionality, yet still have the same (graph) structure.

    Screenshot 2024-10-04 at 13 13 10

    • Construct a graph complex to explore all ternary combinations of ["Ti50Zr50", "Hf95Ti5", "NbTaWHf", "Mo80Nb10W10", "TiTa2", "Nb96Mo3W1", "Zr49 Hf1 Mo50"] (7 alloys) under equilibrium phase constraint (relatively expensive to compute) and then explore the space with an additional low-cost screenig constraint (RMSAD - alloy strenght surrogate) that could also be an ML surrogate.
  • Added automated tests for the new stitching capability.

  • Improvements in the (prototype!) plotting library in utils/ternaryPlot.nim. It will be finalized and officially supported in the next major future release.

    • Many code improvements, including work towards more generality.
    • Added new open-source font (MartianMono).
    • Label placing improvements.
    • Higher visibility path plotting with pathType = "highvis" option
    • Improved path visibility alongside the edges
    • Added color selection with OKlab for any N-component elemental space.
    • Added some experimental Python bindings. More will follow for the most common use cases.
    • Experimental phases-plotting example.
  • The paper has been accepted at the npj Unconventional Computing journal!

Minor Changes:

  • Documentation improvements.
  • Added .pre-commit-config.yaml hooks with some basic checks.
  • Updated installation instructions.
  • Added an example on how to call python functions from nim.

Full Changelog: v0.6.0...v0.7.0