Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Spectral graph #1487

Merged
merged 14 commits into from Jun 23, 2023
Merged

feat: Spectral graph #1487

merged 14 commits into from Jun 23, 2023

Conversation

jiriminarcik
Copy link
Contributor

@jiriminarcik jiriminarcik commented Jun 14, 2023

Description

This PR adds spectral graph layout and multiple examples.

Implementation strategy and design decisions

This layout style was enabled by #1390.

Examples with steps to reproduce them

The folder spectral-graphs/examples contains the following examples (rendered using style spectral-graphs/color.style):

  • 4x4 Sudoku Graph (4x4-sudoku-graph.substance):
  • 7D Cube Graph (7d-cube.substance):
  • Circular Graph (circular-graph.substance):
  • Circular Ladder Graph (circular-latter-graph.substance):
  • Dodecahedral Graph (dodecahedral-graph.substance):
  • Flat Mesh With Defect (flat-mesh-defect.substance):
  • Flat Mesh Without Defect (flat-mesh.substance):
  • Florentine Families Graph (florentine-families-graph.substance):
  • Hexagonal Lattice (hexagonal-lattice.substance):
  • Hypercube Graph (hypercube.substance):
  • Mobius-Kantor Graph (mobius-kantor-graph.substance):
  • Mycielski Graph (mycielski-graph.substance):
  • Star Graph (star-graph.substance):
  • Theta Graph (theta-graph.substance):
  • Watts-Strogatz Random Graph (watts-strogatz-graph.substance):
  • Wheel Graph (wheel-graph.substance):

Checklist

  • I have commented my code, particularly in hard-to-understand areas
  • I have reviewed any generated registry diagram changes

Open questions

  • For larger graphs like 7d-cube.substance or watts-strogatz-graph.substance, the main bottleneck is compilation, rather than optimization.
  • This layout method is not suitable for some types of graphs and sometimes puts "similar" nodes on one line or on top of each other.
  • This method can be used for embedding in space of any dimension (see 3d.style). More sophisticated 3D style will be added in future PR.
  • The included styles do not show labels - to be added in the future.
  • The substance files can be more readable with Support sequences in Substance #1407.

@cloudflare-pages
Copy link

cloudflare-pages bot commented Jun 14, 2023

Deploying with  Cloudflare Pages  Cloudflare Pages

Latest commit: 588c187
Status: ✅  Deploy successful!
Preview URL: https://3fd0a84c.penrose-72l.pages.dev
Branch Preview URL: https://spectral-graph.penrose-72l.pages.dev

View logs

@github-actions
Copy link

github-actions bot commented Jun 14, 2023

± Registry diff

A	spectral-graphs/examples/4x4-sudoku-graph.svg
A	spectral-graphs/examples/dodecahedral-graph.svg
A	spectral-graphs/examples/hexagonal-lattice.svg

📊 Performance

Key

Note that each bar component rounds up to the nearest 100ms, so each full bar is an overestimate by up to 400ms.

     0s   1s   2s   3s   4s   5s   6s   7s   8s
     |    |    |    |    |    |    |    |    |
name ▝▀▀▀▀▀▀▀▀▀▚▄▄▄▄▄▄▄▄▞▀▀▀▀▀▀▀▀▀▀▚▄▄▄▄▄▄▄▄▄▖
      compiling labeling optimizing rendering

If a row has only one bar instead of four, that means it's not a trio and the bar just shows the total time spent for that example, again rounded up to the nearest 100ms.

Data

                                                          0s   1s   2s   3s   4s   5s
                                                          |    |    |    |    |    |
set-theory-domain/tree-venn                               ▝▀▞▖
set-theory-domain/tree-tree                               ▝▚▚
set-theory-domain/tree-venn-3d                            ▝▚▚▖
group-theory/quaternion-multiplication-table              ▝▀▚▞▄▖
group-theory/quaternion-cayley-graph                      ▝▀▞▖
atoms-and-bonds/wet-floor                                 ▝▚▀▀▀▖
atoms-and-bonds/one-water-molecule                        ▝▞▖
set-theory-domain/continuousmap                           ▝▞▖
linear-algebra-domain/two-vectors-perp                    ▝▚▚
molecules/nitricacid-lewis                                ▝▀▀▞▀▖
exterior-algebra/vector-wedge                             ▝▞▖
shape-spec/all-shapes                                     ▝▞▄▖
shape-spec/arrowheads                                     ▝▚▚
graph-domain/textbook/sec1/fig1                           ▝▀▚▀▖
graph-domain/textbook/sec1/fig2                           ▝▀▀▚▀▚
graph-domain/textbook/sec1/fig3                           ▝▀▀▚▀▀▖
graph-domain/textbook/sec1/fig4                           ▝▀▀▀▞▀▚
graph-domain/textbook/sec1/fig5                           ▝▀▀▀▚▀▀▀▖
graph-domain/textbook/sec1/fig6                           ▝▀▀▀▀▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▀▀▚
graph-domain/textbook/sec1/fig7                           ▝▀▞▖
graph-domain/textbook/sec1/fig8a                          ▝▀▀▀▀▞▀▀▖
graph-domain/textbook/sec1/fig8b                          ▝▀▀▚▀▀▚
graph-domain/textbook/sec1/fig9                           ▝▀▀▞▚▖
graph-domain/textbook/sec1/fig10                          ▝▀▚▚
graph-domain/textbook/sec1/fig11                          ▝▀▀▀▞▚▖
graph-domain/textbook/sec1/fig12                          ▝▀▀▀▀▞▀▀▖
graph-domain/textbook/sec1/fig13                          ▝▀▀▚▀▀▖
graph-domain/textbook/sec2/fig3                           ▝▀▀▀▀▀▞▀▀▀▚
graph-domain/textbook/sec2/fig4                           ▝▀▀▀▀▞▀▀▖
graph-domain/textbook/sec2/fig5                           ▝▀▀▀▀▀▞▀▀▀▚
graph-domain/textbook/sec2/fig6                           ▝▀▀▀▀▀▀▀▞▀▀▀▚
graph-domain/textbook/sec2/fig9                           ▝▀▀▀▀▀▀▀▀▞▀▀▀▀▀▚
graph-domain/textbook/sec2/fig10a                         ▝▀▀▞▀▖
graph-domain/textbook/sec2/fig10b                         ▝▀▀▞▚
graph-domain/textbook/sec2/fig11a                         ▝▀▞▖
graph-domain/textbook/sec2/fig11b                         ▝▀▞▖
graph-domain/textbook/sec2/fig11c                         ▝▀▞▖
graph-domain/textbook/sec2/fig12                          ▝▀▞▖
graph-domain/textbook/sec2/fig13                          ▝▀▀▀▀▀▀▀▀▀▀▞▀▀▀▀▀▀▀▀▀▖
graph-domain/textbook/sec2/fig14                          ▝▀▀▞▄
graph-domain/textbook/sec2/fig16b                         ▝▀▚▚▖
geometry-domain/textbook_problems/c05p13                  ▝▀▞▖
geometry-domain/textbook_problems/c01p01                  ▝▀▞▖
geometry-domain/textbook_problems/c03p01                  ▝▀▞▖
geometry-domain/textbook_problems/c05p01                  ▝▀▞▖
geometry-domain/textbook_problems/ex                      ▝▀▀▞▚
triangle-mesh-3d/two-triangles                            ▝▚▚
random-sampling/test                                      ▝▀▀▚▚
geometry-domain/textbook_problems/c11p12                  ▝▀▞▖
word-cloud/example                                        ▝▚▚
geometry-domain/siggraph-teaser                           ▝▀▚▚
minkowski-tests/maze/non-convex                           ▝▚▚
lagrange-bases/lagrange-bases                             ▝▚▚
hypergraph/hypergraph                                     ▝▀▀▞▀▀▀▀▀▀▀▚
persistent-homology/persistent-homology                   ▝▀▚▀▀▀▀▀▄▖
walk-on-spheres/laplace-estimator                         ▝▀▞▖
walk-on-spheres/poisson-estimator                         ▝▀▞▀▚
walk-on-spheres/nested-estimator                          ▝▀▚▀▚
walk-on-spheres/offcenter-estimator                       ▝▀▞▀▚▖
shape-distance/points-around-star                         ▝▀▀▞▄
shape-distance/points-around-polyline                     ▝▀▞▖
shape-distance/points-around-line                         ▝▚▚
shape-distance/lines-around-rect                          ▝▞▖
fake-3d-linear-algebra/projection                         ▝▞▖
animation/center-shrink-circle                            ▝▞▖
structural-formula/molecules/caffeine                     ▝▀▚▀▄
mobius/mobius                                             ▝▞▖
molecules/glutamine                                       ▝▀▞▖
matrix-ops/tests/matrix-matrix-addition                   ▝▚▚
matrix-ops/tests/matrix-matrix-division-elementwise       ▝▀▞▖
matrix-ops/tests/matrix-matrix-multiplication-elementwise ▝▚▚
matrix-ops/tests/matrix-matrix-multiplication             ▝▚▚
matrix-ops/tests/matrix-matrix-subtraction                ▝▚▚
matrix-ops/tests/matrix-transpose                         ▝▚▚
matrix-ops/tests/matrix-vector-left-multiplication        ▝▚▚
matrix-ops/tests/matrix-vector-right-multiplication       ▝▚▚
matrix-ops/tests/scalar-vector-division                   ▝▚▚
matrix-ops/tests/scalar-vector-left-multiplication        ▝▚▚
matrix-ops/tests/scalar-vector-right-multiplication       ▝▚▚
matrix-ops/tests/vector-vector-addition                   ▝▚▚
matrix-ops/tests/vector-vector-division-elementwise       ▝▚▚
matrix-ops/tests/vector-vector-multiplication-elementwise ▝▚▚
matrix-ops/tests/vector-vector-outerproduct               ▝▚▚
matrix-ops/tests/vector-vector-subtraction                ▝▚▚
logic-circuit-domain/half-adder                           ▝▚▚
curve-examples/cubic-bezier                               ▝▚▀▀▖
triangle-mesh-2d/diagrams/cotan-formula                   ▝▀▞▀▖
triangle-mesh-2d/diagrams/concyclic-pair                  ▝▀▞▖
triangle-mesh-2d/diagrams/halfedge-mesh                   ▝▀▞▖
triangle-mesh-2d/diagrams/relative-orientation            ▝▀▞▖
triangle-mesh-2d/diagrams/triangle-centers                ▝▚▚
triangle-mesh-2d/diagrams/angle-equivalence               ▝▀▀▞▀▀▖
timeline/penrose                                          ▝▀▚▚
graph-domain/textbook/sec5/ex32                           ▝▀▀▀▞▀▀▀▀▀▖
curve-examples/open-elastic-curve                         ▝▀▚▀▖
curve-examples/closed-elastic-curve                       ▝▀▞▀▖
graph-domain/other-examples/arpanet                       ▝▀▀▀▀▀▀▀▞▀▀▀▀▀▀▀▀▀▀▖
graph-domain/other-examples/nyc-subway                    ▝▀▀▀▚▀▀▀▖
curve-examples/blobs                                      ▝▀▀▀▀▚▀▀▀▀▀▀▀▀▀▀▀▀▀▀▚
curve-examples/space-curves                               ▝▀▀▀▀▞▀▀▚
geometric-queries/ray-intersect/test-group                ▝▀▀▀▀▀▀▚▚▖
ray-tracing/path-trace                                    ▝▀▀▞▖
ray-tracing/bidirectional                                 ▝▀▚▚
ray-tracing/next-event-estimation                         ▝▀▚▚
geometric-queries/test                                    ▝▀▞▖
geometric-queries/closest-point/test-group                ▝▚▚
geometric-queries/closest-point/test                      ▝▚▚
geometric-queries/closest-silhouette-point/test           ▝▚▚
geometric-queries/ray-intersect/test                      ▝▀▀▀▀▀▀▚▚▄
solid/eigenspace                                          ▐▌
solid/triangles                                           ▐▌
solid/vectors                                             ▐
spectral-graphs/examples/4x4-sudoku-graph                 ▝▀▀▞▖
spectral-graphs/examples/hexagonal-lattice                ▝▀▀▀▀▀▀▀▀▀▚▀▀▚▖
spectral-graphs/examples/dodecahedral-graph               ▝▚▚

@jiriminarcik jiriminarcik marked this pull request as ready for review June 14, 2023 23:53
@wodeni wodeni merged commit 9a347ad into main Jun 23, 2023
14 checks passed
@wodeni wodeni deleted the spectral-graph branch June 23, 2023 16:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants