Really great to see such a user friendly tool for posets. For current users of SimplePosets.jl, should we upgrade to this package? What’s the relationship between these two packages.
There’s a significant design difference between Graphs vs SimpleGraphs that is replicated in Posets vs SimplePosets. In Graphs, the vertex set is always of the form {1,2,...,n} whereas in SimpleGraphs, the vertices can be lots of different types and, even if integers, can be arbitrary sets of integers.
There’s a whole team of people supporting the Graphs package and its ecosystem. I thought it reasonable then to have a posets package that plays nicely with Graphs, hence Posets. I also suspect that there a lot more users of Graphs than SimpleGraphs because of the well developed ecosystem for Graphs.
To answer your question “…should we upgrade to this package?” I’m not sure. The Graphs package was designed to be performant, so if you’re dealing with large graphs/posets, it might be better. But there’s no “upgrade” path per se.
What I should (will!?) do is make a tool to convert between SimplePoset type and Poset type like I did in SimpleGraphConverters. I think I’ll put that code in the extras folder in the Poset repository.
Also: I’ve got Posets to a reasonable state, but I’m sure there will be more to be done. That’s where I’m likely to put my efforts.
The work I’ve been involved with uses posets as a centerpiece, but it’s all manually constructed with Arrays. It’s pretty terse code that doesn’t generalize well, and also doesn’t have any structural guarantees that the elements form a partial order.
I am looking forward to refactoring some of it on top of Posets, I imagine it will be significantly more intuitive, and more importantly safer by disallowing relation violations. Not to mention the wonderful toolkit of poset operations that are implemented.
I hadn’t encountered SimplePosets before, I’ll investigate that as well.
For somebody coming into it fresh (not from the Graphs ecosystem), do you recommend one of Posets or SimplePosets over the other for a pretty extensive poset problem? My guess here is that SimplePosets, like SimpleGraphs, is a standalone, featureful implementation, and that Posets, like Graphs, is implemented with the goal of being the interface on which other packages are built. Is that fair to say?
Thanks for the clarification on the design of the two packages @scheinerman! I think that it makes sense for me to “upgrade” to using Posets.jl, it looks like the cost of moving is not large and especially if that is where more future development will be, I would like to be able to take advantage of the most up to date features, so to speak.
Yes. SimplePosets doesn’t connect to a larger community, so I started afresh to make Posets in order to be in close alignment with JuliaGraphs. Graphs
Any further development in Graphs will benefit Posets.
I’m open to suggestions about how to improve Posets. Thanks for the interest!