Implementation of Physics Project WFR functions #462
Labels
feature
New functionality, or change in existing functionality
good first issue
Good for newcomers
help wanted
Extra attention is needed
The problem
There are many functions in the Wolfram Function Repository which would be handy to have in SetReplace.
It would be useful to make these functions more reliable, test them, possibly improve the design, and move them to SetReplace.
This issue tracks this effort. If you'd like to implement a particular function, create another issue just for that function, and link it next to one of the checkboxes below. It's best to discuss the API for the new functions before starting to implement them. The design of some of the functions needs improvement. Not all WFR functions should map into functions. It's usually better to integrate a function into an existing function (such as a
WolframModel
property). Some of them don't currently work correctly, so be careful. If you know a useful WFR function that is not mentioned below, please add it to the list.Note that
MultiwaySystem
is intentionally not included in the list below. We do want to implement it, but through the Local Multiway System, i.e., as a part of theWolframModel
function. Similarly, functions likeCausalInvariantQ
are not included as well, because they should instead be properties of theWolframModelEvolutionObject
, and have separate issues already.List of Functions
Canonicalization/Isomorphism
CanonicalWolframModelRule
CanonicalHypergraph
IsomorphicHypergraphQ
IsomorphicHypergraphQ #480FindHypergraphIsomorphism
Hypergraph Isomorphism #77With a name like this, it should only find one possible isomorphism. If we want a function that finds all isomorphism (the format for which should definitely be different from the current WFR implementation), the name should be different.
Enumeration
For all functions below, I think we should also allow a single integer as the argument, specifying the complexity,
Length[Flatten[# /. Rule -> List]] &
(assuming atom names are not lists), which would then produce all rules/hypergraphs up to that complexity, including systems of multiple rules.EnumerateWolframModelRules
Enumeration of systems #57RandomWoflramModelRule
EnumerateHypergraphs
RandomHypergraph
RandomHypergraph #510Rule Properties
ConnectedWolframModelRuleQ
Hypergraph Analysis Utilities
ConnectedHypergraphQ
ConnectedHypergraphQ #524HypergraphAdjacencyMatrix
HypergraphIncidenceMatrix
would be useful as well.HypergraphNeighborhoods
NeighborhoodHypergraph #413It should return hypergraphs (lists of lists), not graphs.
HypergraphNeighborhoodVolumes
I think we should define volume as the count of expressions, not atoms, so it should compute that instead. Maybe, we can have a second argument which would be either
"Expression"
or"Atom"
depending on how we want to define the volume.HypergraphToGraph
HypergraphToGraph #488There are multiple ways to do it. Perhaps a second argument would be useful to specify.
GraphFunctionPlot
HypergraphFunctionPlot
should do the same, but for hypergraphs.Graph/Hypergraph Construction
HexagonalGridGraph
HexagonalTorusGraph
Should be merged with the previous function, similar to
GeneralizedGridGraph
.BuckyballGraph
GeodesicSphereGraph
RegularHyperbolicTilingGraph
Utilities
ParallelMapMonitored
The text was updated successfully, but these errors were encountered: