AlgebraicJulia / CSetAutomorphisms.jl

Automorphism groups for CSets - generalizing the nauty algorithm to a broad class of data structures
MIT License
12 stars 2 forks source link

Attributes don't move around #26

Closed lcnbr closed 2 years ago

lcnbr commented 2 years ago

Although the end goal should be that attributes are taken into account by the algorithm, one thing that I think is definitely an issue is that if you call_nauty on an ACset it will only permute the Cset structure. So when you do call_nauty(ac::ACSet).cset it gives a Frankenstein ACset with attributes and cset not linked anymore..

kris-brown commented 2 years ago

You're right that actually supporting ACSets (https://github.com/AlgebraicJulia/CSetAutomorphisms.jl/issues/18) is the right way to go. The options for you now are:

  1. Use the (slow) Julia implementation rather than call_nauty to actually incorporate attribute data
  2. If you're fine ignoring attribute data, take the NautyRes.cset and then use the NautyRes.cmap information to permute the attributes yourself (via the permutations on their source objects)

Alternatively, until the issue is addressed I could just throw an error if an ACSet has attributes in the call_nauty code?

jpfairbanks commented 2 years ago

Option 2 seems like a pretty contained PR project for anyone trying to get involved in the development. Throwing an exception until that gets patched seems fine, although it doesn't sound like that much more work to add proper support based on option 2.

kris-brown commented 2 years ago

addressed by https://github.com/AlgebraicJulia/CSetAutomorphisms.jl/pull/28