schlegelp / fastcore-rs

Reimplementation of navis functions in Rust.
GNU General Public License v3.0
1 stars 0 forks source link

Consider tree libraries for heavy graph traversal algorithms #2

Open clbarnes opened 5 months ago

clbarnes commented 5 months ago

I am onto my 3rd attempt at prototype libraries for connectomics-y graph things.

  1. https://github.com/clbarnes/arbor-rs was a pretty direct port of some of CATMAID's Arbor.js, but it's not very rust-y
  2. https://github.com/clbarnes/neurarbor is built around a 3rd party tree library, but it turns out it wasn't a very good fit for the neuron surgery element because of the arena ownership required
  3. https://github.com/clbarnes/rhodo is my current attempt; it has some advantages over the other two, including actually using iterators properly

3rd party graph libraries mainly use Vec arenas, which is fast but not great for surgery and involves a lot of mapping back and forth between external-facing node indices and internal node indices. Rhodo uses a hashmap with a very fast hash function, which could potentially be made faster still for a limited set of node types.

Happy to accept feature priorities for rhodo!

schlegelp commented 5 months ago

Will have a look, thanks!