Function Repository Resource:

MultispacePlot3D

Source Notebook

Plot multispace in 3D

Contributed by: Nikolay Murzin

ResourceFunction["MultispacePlot3D"][mwf]

returns a visualization of multispace for multiway function mwf.

ResourceFunction["MultispacePlot3D"][mwf,prop]

returns the property prop involved in computing a visualization of multispace.

Details and Options

Property prop may be one of following:
"RawGraphs"return a list of 2D graphs without computing a 3D embedding
"Association"an Association returned by an underlying algorithm
"Graph"GraphPlot3D of a multispace
"View"Graphics3D with convenient controls (default)
Options may include any option for GraphPlot3D or the resource functions MultiPerspectiveEmbedding and MultiPerspectiveEmbeddingViewer. ResourceFunction["MultispacePlot3D"] also accepts the following options:
"ObjectType""State""State" or "Event" multispace
"InfiniteDistanceIncrement"1additional distance between disconnected vertices
"DistanceMatrixWeights"Automaticvector of coefficients with which to multiply each distance matrix
Method"MPSE"algorithm to use (only one is currently supported)

Examples

Basic Examples (4) 

Return raw graphs of a multiway system:

In[1]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "RawGraphs"]
Out[1]=

Return an Association with the results of an embedding algorithm:

In[2]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Association"]
Out[2]=

Return 3D graphics for a resulting Graph:

In[3]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "Graph"]
Out[3]=

Add multiperspective controls to view the resulting Graph:

In[4]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "View"]
Out[4]=

Options (4) 

ObjectType (2) 

Plot the multispace of a Turing machine for events:

In[5]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "RawGraphs", "ObjectType" -> "Event"]
Out[5]=

Or in 3D:

In[6]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwayTuringMachine"][{1507, 2506, 3506}, {{1, 1, 0}, {0, 1, 0, 1}}, 4, ##] &, "ObjectType" -> "Event"]
Out[6]=

InfiniteDistanceIncrement (1) 

Increase distance between branchially disconnected states:

In[7]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Graph", "InfiniteDistanceIncrement" -> 100]
Out[7]=

DistanceMatrixWeights (1) 

Weights are constant multipliers of distances after normalization. In order, they are {time, space, branchial space}:

In[8]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Graph", "DistanceMatrixWeights" -> {1, 1, 2}]
Out[8]=

Scope (2) 

Options can be passed to the underlying algorithm:

In[9]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Association", "TrainingProgressReporting" -> "Verbose"]
Out[9]=

Or to the resulting Graphics3D object:

In[10]:=
ResourceFunction["MultispacePlot3D"][
 ResourceFunction["MultiwaySystem"][{"A" -> "AB", "B" -> "A"}, {"A"}, 6, ##] &, "Graph", ImageSize -> Large]
Out[10]=

Publisher

N. Murzin

Version History

  • 1.0.1 – 09 August 2021
  • 1.0.0 – 17 July 2020

Related Resources

License Information