@Szabolcs I also noticed that the syntax PropertyValue[{g, someEdge}, {edgeProp1, edgeProp2, ...}] does not evaluate. It is mentioned in the documentation as the third syntax variant (but no examples is given). Can you (or anyone else confirm this)?
For generality it might be nice if the result of such a function would not be a list of the edges but a graph containing only the selected edges. One would then have to call EdgeList on the Graph to get just the list of course
@Szabolcs Concerning my issue from before, a Select-like utility function would be a nice replacement for using the second argument of EdgeList (and VertexList).
When comparing the result of FindIndependentEdgeSet and equivalent formulation for FindMinimumCostFlow for weighted bipartide graphs at some point FindMinimumCostFlow does give a different result than FindIndependentEdgeSet
Despite your philosophy to not duplicate build-in functionality in IGraphM, have you though about a IGPropertyValue function that remedies at least the syntactic issues with PropertyValue?
This is again something that should be easy but isn't. I don't get why the Patterntest for EdgeList does not get passed a "self reference" i.e. {graph, edge} instead of just edge
@Szabolcs Does IGraphM offer any way to write `graph // EdgeList[#, _?(Function[edge, PropertyValue[{#, edge}, "Selected"]])] &` in a more compact and intuitive way?
@Szabolcs As far as I could test mathematica's build-in FindIndependentEdgeSet works reasonably well. FindMinimumCostFlow on the other hand is not very reliable.
In the above picture every blue line is a possible match between to samples, the line thickness indicates the goodness of the match and the color i.e. red which matches were selected
@Szabolcs I have played around with IGraphM in the last week and I am very impressed! I hope you won't mind comments/feature requests from me in the future as I already have one: IGEdgeApply would be a useful function to have e.g. to use Rescale on the EdgeWeights as a whole.
I currently use FindIndependendEdgeSet and this seems to solve the problem but since the documentation is so thin here (and I am no expert on graphs) I doubt myself a bit.
I work with weighted, undirected adjacency graphs for solving a combinatorical problem (matching from a pool of individual samples by some distance metric).