I loved AxisArrays.jl. However AxisArrays is old (designed pre1.0). It still works…ok, but I miss broadcasting and Not-.indexing. I did not learn about its newer counterparts until I had written a few weeks of analysis and got annoyed about missing functionality and namespace conflict of axes
.
As those of you know, the ecosystem here is kind of a mess. (Too) many really nice, functional packages. All working as expected with greater or fewer bugs on the corner cases. Obligatory link to a detailed thread long thread on AxisArray replacements Has anyone waded through and come back with a strong opinion? Heres what Ive found:
- AxisKeys.jl and parent NamedDims.jl (@mcabbot is a core contributor, and so inclined in this direction on the weight of the name. keyedarray[:, Key(“Person”)] is understandable for disambiguation but not as nice as keyedarray[:, “Person”] .)
- DimensionalData.jl (@rafaqz is an amazingly energetic contributor with wonderful depth of knowledge on reducing abstraction cost to zero, very up to date. I avoided this one at first only because of the package name which makes me think meters/sec etc.)
- (EDIT) NamedArrays.jl Old, but showing recent maintenance! Great name, use of pair syntax
:Person => "sally
instead of “=”, no bias toward continuum representation. - AxisIndices.jl (@Tokazama is super talented, but this out of date by several years. Im glad they are putting their ideas into ArrayInterface because I really like this style.)
SciML backed options:
- LabeledArrays
- ArrayInterface
Maybe not exactly in the same space, closer to the output of DifferentialEquations.jl?
Finally, I wonder if anyone has tips on the meta problem of finding the best packages. Currently I look at last updated src, stars, and “do I recognize the contributors from discourse”. I guess I can now add “search Juliahub rather than Google”…
Thanks!