In Pull Request #27, we changed the config file to include a directed label under each reconstruction algorithm. This is either true or false, and is used to determine whether to write summary statistics and graphspace JSON files for a directed graph or an undirected graph. This may not be the ideal way to handle algorithm-level attributes. A couple thoughts:
- We may want to have a way to designate the input network files as
directed or undirected as well. For example, the shortest-paths reconstruction algorithm could probably take either a directed or undirected graph. The algorithm's prepare-inputs would handle that according to the dataset.
- There are cases where the output should be considered
directed (e.g, visualizing a graph) and it should be considered undirected (e.g., we often compute precision-recall in an undirected manner, so if an algorithm returns (u,v) or (v,u) the two edges are counted the same way). This motivates some directed tag later under analysis -> precrec when we get that implemented.
- There may be other algorithm-level attributes that we would want to consider. Output may be
ranked or unranked (e.g., analysis should consider the set of edges, even for pathlinker, as a single subnetwork rather than a ranked list of edges). I do not know whether they should be algorithm-level or analysis-level labels, or some combination of both.
In Pull Request #27, we changed the config file to include a
directedlabel under each reconstruction algorithm. This is eithertrueorfalse, and is used to determine whether to write summary statistics and graphspace JSON files for a directed graph or an undirected graph. This may not be the ideal way to handle algorithm-level attributes. A couple thoughts:directedorundirectedas well. For example, theshortest-pathsreconstruction algorithm could probably take either a directed or undirected graph. The algorithm'sprepare-inputswould handle that according to the dataset.directed(e.g, visualizing a graph) and it should be consideredundirected(e.g., we often compute precision-recall in an undirected manner, so if an algorithm returns(u,v)or(v,u)the two edges are counted the same way). This motivates somedirectedtag later underanalysis -> precrecwhen we get that implemented.rankedorunranked(e.g., analysis should consider the set of edges, even for pathlinker, as a single subnetwork rather than a ranked list of edges). I do not know whether they should be algorithm-level or analysis-level labels, or some combination of both.