@graphty/graph-samples 0.0.1 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +123 -0
- package/README.md +190 -1
- package/dist/chunks/build-DdCe60t3.js +47 -0
- package/dist/chunks/build-DdCe60t3.js.map +1 -0
- package/dist/chunks/meta-B6toBzaa.js +19 -0
- package/dist/chunks/meta-B6toBzaa.js.map +1 -0
- package/dist/chunks/meta-BM_YIhlA.js +28 -0
- package/dist/chunks/meta-BM_YIhlA.js.map +1 -0
- package/dist/chunks/meta-BMmtUpPx.js +30 -0
- package/dist/chunks/meta-BMmtUpPx.js.map +1 -0
- package/dist/chunks/meta-BXC7oi86.js +22 -0
- package/dist/chunks/meta-BXC7oi86.js.map +1 -0
- package/dist/chunks/meta-BaFPvhc1.js +19 -0
- package/dist/chunks/meta-BaFPvhc1.js.map +1 -0
- package/dist/chunks/meta-C58v1Oy0.js +28 -0
- package/dist/chunks/meta-C58v1Oy0.js.map +1 -0
- package/dist/chunks/meta-CQRXyexG.js +23 -0
- package/dist/chunks/meta-CQRXyexG.js.map +1 -0
- package/dist/chunks/meta-DrgM1eS0.js +23 -0
- package/dist/chunks/meta-DrgM1eS0.js.map +1 -0
- package/dist/chunks/meta-IhoaDXAV.js +19 -0
- package/dist/chunks/meta-IhoaDXAV.js.map +1 -0
- package/dist/chunks/meta-MQPbBUUB.js +29 -0
- package/dist/chunks/meta-MQPbBUUB.js.map +1 -0
- package/dist/chunks/meta-Qp4HNYAZ.js +24 -0
- package/dist/chunks/meta-Qp4HNYAZ.js.map +1 -0
- package/dist/chunks/meta-mns0uFIW.js +19 -0
- package/dist/chunks/meta-mns0uFIW.js.map +1 -0
- package/dist/datasets/celegans-neural.d.ts +1 -0
- package/dist/datasets/celegans-neural.js +7359 -0
- package/dist/datasets/celegans-neural.js.map +1 -0
- package/dist/datasets/contiguous-usa.d.ts +1 -0
- package/dist/datasets/contiguous-usa.js +501 -0
- package/dist/datasets/contiguous-usa.js.map +1 -0
- package/dist/datasets/davis-southern-women.d.ts +1 -0
- package/dist/datasets/davis-southern-women.js +235 -0
- package/dist/datasets/davis-southern-women.js.map +1 -0
- package/dist/datasets/dolphins.d.ts +1 -0
- package/dist/datasets/dolphins.js +406 -0
- package/dist/datasets/dolphins.js.map +1 -0
- package/dist/datasets/florentine-families.d.ts +1 -0
- package/dist/datasets/florentine-families.js +75 -0
- package/dist/datasets/florentine-families.js.map +1 -0
- package/dist/datasets/football.d.ts +1 -0
- package/dist/datasets/football.js +1508 -0
- package/dist/datasets/football.js.map +1 -0
- package/dist/datasets/karate.d.ts +1 -0
- package/dist/datasets/karate.js +295 -0
- package/dist/datasets/karate.js.map +1 -0
- package/dist/datasets/knuth-miles.d.ts +1 -0
- package/dist/datasets/knuth-miles.js +24933 -0
- package/dist/datasets/knuth-miles.js.map +1 -0
- package/dist/datasets/les-miserables.d.ts +1 -0
- package/dist/datasets/les-miserables.js +860 -0
- package/dist/datasets/les-miserables.js.map +1 -0
- package/dist/datasets/openflights.d.ts +1 -0
- package/dist/datasets/openflights.js +130277 -0
- package/dist/datasets/openflights.js.map +1 -0
- package/dist/datasets/political-blogs.d.ts +1 -0
- package/dist/datasets/political-blogs.js +42551 -0
- package/dist/datasets/political-blogs.js.map +1 -0
- package/dist/datasets/political-books.d.ts +1 -0
- package/dist/datasets/political-books.js +1124 -0
- package/dist/datasets/political-books.js.map +1 -0
- package/dist/generators.d.ts +1 -0
- package/dist/generators.js +4496 -0
- package/dist/generators.js.map +1 -0
- package/dist/graph-samples.d.ts +1 -0
- package/dist/graph-samples.js +142 -0
- package/dist/graph-samples.js.map +1 -0
- package/dist/src/datasets/build.d.ts +89 -0
- package/dist/src/datasets/build.d.ts.map +1 -0
- package/dist/src/datasets/build.js +53 -0
- package/dist/src/datasets/build.js.map +1 -0
- package/dist/src/datasets/catalog.d.ts +8 -0
- package/dist/src/datasets/catalog.d.ts.map +1 -0
- package/dist/src/datasets/catalog.js +34 -0
- package/dist/src/datasets/catalog.js.map +1 -0
- package/dist/src/datasets/celegans-neural/data.d.ts +3 -0
- package/dist/src/datasets/celegans-neural/data.d.ts.map +1 -0
- package/dist/src/datasets/celegans-neural/data.js +573 -0
- package/dist/src/datasets/celegans-neural/data.js.map +1 -0
- package/dist/src/datasets/celegans-neural/index.d.ts +11 -0
- package/dist/src/datasets/celegans-neural/index.d.ts.map +1 -0
- package/dist/src/datasets/celegans-neural/index.js +14 -0
- package/dist/src/datasets/celegans-neural/index.js.map +1 -0
- package/dist/src/datasets/celegans-neural/meta.d.ts +4 -0
- package/dist/src/datasets/celegans-neural/meta.d.ts.map +1 -0
- package/dist/src/datasets/celegans-neural/meta.js +21 -0
- package/dist/src/datasets/celegans-neural/meta.js.map +1 -0
- package/dist/src/datasets/contiguous-usa/data.d.ts +3 -0
- package/dist/src/datasets/contiguous-usa/data.d.ts.map +1 -0
- package/dist/src/datasets/contiguous-usa/data.js +162 -0
- package/dist/src/datasets/contiguous-usa/data.js.map +1 -0
- package/dist/src/datasets/contiguous-usa/index.d.ts +11 -0
- package/dist/src/datasets/contiguous-usa/index.d.ts.map +1 -0
- package/dist/src/datasets/contiguous-usa/index.js +14 -0
- package/dist/src/datasets/contiguous-usa/index.js.map +1 -0
- package/dist/src/datasets/contiguous-usa/meta.d.ts +4 -0
- package/dist/src/datasets/contiguous-usa/meta.d.ts.map +1 -0
- package/dist/src/datasets/contiguous-usa/meta.js +27 -0
- package/dist/src/datasets/contiguous-usa/meta.js.map +1 -0
- package/dist/src/datasets/davis-southern-women/data.d.ts +3 -0
- package/dist/src/datasets/davis-southern-women/data.d.ts.map +1 -0
- package/dist/src/datasets/davis-southern-women/data.js +57 -0
- package/dist/src/datasets/davis-southern-women/data.js.map +1 -0
- package/dist/src/datasets/davis-southern-women/index.d.ts +11 -0
- package/dist/src/datasets/davis-southern-women/index.d.ts.map +1 -0
- package/dist/src/datasets/davis-southern-women/index.js +14 -0
- package/dist/src/datasets/davis-southern-women/index.js.map +1 -0
- package/dist/src/datasets/davis-southern-women/meta.d.ts +4 -0
- package/dist/src/datasets/davis-southern-women/meta.d.ts.map +1 -0
- package/dist/src/datasets/davis-southern-women/meta.js +17 -0
- package/dist/src/datasets/davis-southern-women/meta.js.map +1 -0
- package/dist/src/datasets/dolphins/data.d.ts +3 -0
- package/dist/src/datasets/dolphins/data.d.ts.map +1 -0
- package/dist/src/datasets/dolphins/data.js +93 -0
- package/dist/src/datasets/dolphins/data.js.map +1 -0
- package/dist/src/datasets/dolphins/index.d.ts +11 -0
- package/dist/src/datasets/dolphins/index.d.ts.map +1 -0
- package/dist/src/datasets/dolphins/index.js +14 -0
- package/dist/src/datasets/dolphins/index.js.map +1 -0
- package/dist/src/datasets/dolphins/meta.d.ts +4 -0
- package/dist/src/datasets/dolphins/meta.d.ts.map +1 -0
- package/dist/src/datasets/dolphins/meta.js +17 -0
- package/dist/src/datasets/dolphins/meta.js.map +1 -0
- package/dist/src/datasets/florentine-families/data.d.ts +3 -0
- package/dist/src/datasets/florentine-families/data.d.ts.map +1 -0
- package/dist/src/datasets/florentine-families/data.js +31 -0
- package/dist/src/datasets/florentine-families/data.js.map +1 -0
- package/dist/src/datasets/florentine-families/index.d.ts +11 -0
- package/dist/src/datasets/florentine-families/index.d.ts.map +1 -0
- package/dist/src/datasets/florentine-families/index.js +14 -0
- package/dist/src/datasets/florentine-families/index.js.map +1 -0
- package/dist/src/datasets/florentine-families/meta.d.ts +4 -0
- package/dist/src/datasets/florentine-families/meta.d.ts.map +1 -0
- package/dist/src/datasets/florentine-families/meta.js +17 -0
- package/dist/src/datasets/florentine-families/meta.js.map +1 -0
- package/dist/src/datasets/football/data.d.ts +3 -0
- package/dist/src/datasets/football/data.d.ts.map +1 -0
- package/dist/src/datasets/football/data.js +210 -0
- package/dist/src/datasets/football/data.js.map +1 -0
- package/dist/src/datasets/football/index.d.ts +11 -0
- package/dist/src/datasets/football/index.d.ts.map +1 -0
- package/dist/src/datasets/football/index.js +14 -0
- package/dist/src/datasets/football/index.js.map +1 -0
- package/dist/src/datasets/football/meta.d.ts +4 -0
- package/dist/src/datasets/football/meta.d.ts.map +1 -0
- package/dist/src/datasets/football/meta.js +17 -0
- package/dist/src/datasets/football/meta.js.map +1 -0
- package/dist/src/datasets/hosted.d.ts +7 -0
- package/dist/src/datasets/hosted.d.ts.map +1 -0
- package/dist/src/datasets/hosted.js +80 -0
- package/dist/src/datasets/hosted.js.map +1 -0
- package/dist/src/datasets/karate/data.d.ts +3 -0
- package/dist/src/datasets/karate/data.d.ts.map +1 -0
- package/dist/src/datasets/karate/data.js +30 -0
- package/dist/src/datasets/karate/data.js.map +1 -0
- package/dist/src/datasets/karate/index.d.ts +11 -0
- package/dist/src/datasets/karate/index.d.ts.map +1 -0
- package/dist/src/datasets/karate/index.js +14 -0
- package/dist/src/datasets/karate/index.js.map +1 -0
- package/dist/src/datasets/karate/meta.d.ts +4 -0
- package/dist/src/datasets/karate/meta.d.ts.map +1 -0
- package/dist/src/datasets/karate/meta.js +22 -0
- package/dist/src/datasets/karate/meta.js.map +1 -0
- package/dist/src/datasets/knuth-miles/data.d.ts +3 -0
- package/dist/src/datasets/knuth-miles/data.d.ts.map +1 -0
- package/dist/src/datasets/knuth-miles/data.js +1203 -0
- package/dist/src/datasets/knuth-miles/data.js.map +1 -0
- package/dist/src/datasets/knuth-miles/index.d.ts +11 -0
- package/dist/src/datasets/knuth-miles/index.d.ts.map +1 -0
- package/dist/src/datasets/knuth-miles/index.js +14 -0
- package/dist/src/datasets/knuth-miles/index.js.map +1 -0
- package/dist/src/datasets/knuth-miles/meta.d.ts +4 -0
- package/dist/src/datasets/knuth-miles/meta.d.ts.map +1 -0
- package/dist/src/datasets/knuth-miles/meta.js +26 -0
- package/dist/src/datasets/knuth-miles/meta.js.map +1 -0
- package/dist/src/datasets/les-miserables/data.d.ts +3 -0
- package/dist/src/datasets/les-miserables/data.d.ts.map +1 -0
- package/dist/src/datasets/les-miserables/data.js +117 -0
- package/dist/src/datasets/les-miserables/data.js.map +1 -0
- package/dist/src/datasets/les-miserables/index.d.ts +11 -0
- package/dist/src/datasets/les-miserables/index.d.ts.map +1 -0
- package/dist/src/datasets/les-miserables/index.js +14 -0
- package/dist/src/datasets/les-miserables/index.js.map +1 -0
- package/dist/src/datasets/les-miserables/meta.d.ts +4 -0
- package/dist/src/datasets/les-miserables/meta.d.ts.map +1 -0
- package/dist/src/datasets/les-miserables/meta.js +21 -0
- package/dist/src/datasets/les-miserables/meta.js.map +1 -0
- package/dist/src/datasets/openflights/data.d.ts +3 -0
- package/dist/src/datasets/openflights/data.d.ts.map +1 -0
- package/dist/src/datasets/openflights/data.js +15457 -0
- package/dist/src/datasets/openflights/data.js.map +1 -0
- package/dist/src/datasets/openflights/index.d.ts +11 -0
- package/dist/src/datasets/openflights/index.d.ts.map +1 -0
- package/dist/src/datasets/openflights/index.js +14 -0
- package/dist/src/datasets/openflights/index.js.map +1 -0
- package/dist/src/datasets/openflights/meta.d.ts +4 -0
- package/dist/src/datasets/openflights/meta.d.ts.map +1 -0
- package/dist/src/datasets/openflights/meta.js +28 -0
- package/dist/src/datasets/openflights/meta.js.map +1 -0
- package/dist/src/datasets/political-blogs/data.d.ts +3 -0
- package/dist/src/datasets/political-blogs/data.d.ts.map +1 -0
- package/dist/src/datasets/political-blogs/data.js +4857 -0
- package/dist/src/datasets/political-blogs/data.js.map +1 -0
- package/dist/src/datasets/political-blogs/index.d.ts +11 -0
- package/dist/src/datasets/political-blogs/index.d.ts.map +1 -0
- package/dist/src/datasets/political-blogs/index.js +14 -0
- package/dist/src/datasets/political-blogs/index.js.map +1 -0
- package/dist/src/datasets/political-blogs/meta.d.ts +4 -0
- package/dist/src/datasets/political-blogs/meta.d.ts.map +1 -0
- package/dist/src/datasets/political-blogs/meta.js +26 -0
- package/dist/src/datasets/political-blogs/meta.js.map +1 -0
- package/dist/src/datasets/political-books/data.d.ts +3 -0
- package/dist/src/datasets/political-books/data.d.ts.map +1 -0
- package/dist/src/datasets/political-books/data.js +165 -0
- package/dist/src/datasets/political-books/data.js.map +1 -0
- package/dist/src/datasets/political-books/index.d.ts +11 -0
- package/dist/src/datasets/political-books/index.d.ts.map +1 -0
- package/dist/src/datasets/political-books/index.js +14 -0
- package/dist/src/datasets/political-books/index.js.map +1 -0
- package/dist/src/datasets/political-books/meta.d.ts +4 -0
- package/dist/src/datasets/political-books/meta.d.ts.map +1 -0
- package/dist/src/datasets/political-books/meta.js +20 -0
- package/dist/src/datasets/political-books/meta.js.map +1 -0
- package/dist/src/datasets/remote.d.ts +27 -0
- package/dist/src/datasets/remote.d.ts.map +1 -0
- package/dist/src/datasets/remote.js +30 -0
- package/dist/src/datasets/remote.js.map +1 -0
- package/dist/src/element.d.ts +20 -0
- package/dist/src/element.d.ts.map +1 -0
- package/dist/src/element.js +27 -0
- package/dist/src/element.js.map +1 -0
- package/dist/src/generators/bipartite.d.ts +51 -0
- package/dist/src/generators/bipartite.d.ts.map +1 -0
- package/dist/src/generators/bipartite.js +99 -0
- package/dist/src/generators/bipartite.js.map +1 -0
- package/dist/src/generators/block-model.d.ts +75 -0
- package/dist/src/generators/block-model.d.ts.map +1 -0
- package/dist/src/generators/block-model.js +116 -0
- package/dist/src/generators/block-model.js.map +1 -0
- package/dist/src/generators/classic.d.ts +208 -0
- package/dist/src/generators/classic.d.ts.map +1 -0
- package/dist/src/generators/classic.js +437 -0
- package/dist/src/generators/classic.js.map +1 -0
- package/dist/src/generators/degree-sequence.d.ts +273 -0
- package/dist/src/generators/degree-sequence.d.ts.map +1 -0
- package/dist/src/generators/degree-sequence.js +646 -0
- package/dist/src/generators/degree-sequence.js.map +1 -0
- package/dist/src/generators/directed.d.ts +141 -0
- package/dist/src/generators/directed.d.ts.map +1 -0
- package/dist/src/generators/directed.js +329 -0
- package/dist/src/generators/directed.js.map +1 -0
- package/dist/src/generators/erdos-renyi.d.ts +58 -0
- package/dist/src/generators/erdos-renyi.d.ts.map +1 -0
- package/dist/src/generators/erdos-renyi.js +154 -0
- package/dist/src/generators/erdos-renyi.js.map +1 -0
- package/dist/src/generators/flow.d.ts +153 -0
- package/dist/src/generators/flow.d.ts.map +1 -0
- package/dist/src/generators/flow.js +346 -0
- package/dist/src/generators/flow.js.map +1 -0
- package/dist/src/generators/geometric.d.ts +133 -0
- package/dist/src/generators/geometric.d.ts.map +1 -0
- package/dist/src/generators/geometric.js +495 -0
- package/dist/src/generators/geometric.js.map +1 -0
- package/dist/src/generators/growth.d.ts +187 -0
- package/dist/src/generators/growth.d.ts.map +1 -0
- package/dist/src/generators/growth.js +445 -0
- package/dist/src/generators/growth.js.map +1 -0
- package/dist/src/generators/hyperbolic.d.ts +84 -0
- package/dist/src/generators/hyperbolic.d.ts.map +1 -0
- package/dist/src/generators/hyperbolic.js +153 -0
- package/dist/src/generators/hyperbolic.js.map +1 -0
- package/dist/src/generators/index.d.ts +25 -0
- package/dist/src/generators/index.d.ts.map +1 -0
- package/dist/src/generators/index.js +24 -0
- package/dist/src/generators/index.js.map +1 -0
- package/dist/src/generators/lattices.d.ts +87 -0
- package/dist/src/generators/lattices.d.ts.map +1 -0
- package/dist/src/generators/lattices.js +237 -0
- package/dist/src/generators/lattices.js.map +1 -0
- package/dist/src/generators/lfr.d.ts +55 -0
- package/dist/src/generators/lfr.d.ts.map +1 -0
- package/dist/src/generators/lfr.js +178 -0
- package/dist/src/generators/lfr.js.map +1 -0
- package/dist/src/generators/named.d.ts +23 -0
- package/dist/src/generators/named.d.ts.map +1 -0
- package/dist/src/generators/named.js +191 -0
- package/dist/src/generators/named.js.map +1 -0
- package/dist/src/generators/preferential-attachment.d.ts +66 -0
- package/dist/src/generators/preferential-attachment.d.ts.map +1 -0
- package/dist/src/generators/preferential-attachment.js +157 -0
- package/dist/src/generators/preferential-attachment.js.map +1 -0
- package/dist/src/generators/trees-and-dags.d.ts +53 -0
- package/dist/src/generators/trees-and-dags.d.ts.map +1 -0
- package/dist/src/generators/trees-and-dags.js +108 -0
- package/dist/src/generators/trees-and-dags.js.map +1 -0
- package/dist/src/generators/util.d.ts +84 -0
- package/dist/src/generators/util.d.ts.map +1 -0
- package/dist/src/generators/util.js +138 -0
- package/dist/src/generators/util.js.map +1 -0
- package/dist/src/generators/variants.d.ts +85 -0
- package/dist/src/generators/variants.d.ts.map +1 -0
- package/dist/src/generators/variants.js +215 -0
- package/dist/src/generators/variants.js.map +1 -0
- package/dist/src/generators/weights.d.ts +65 -0
- package/dist/src/generators/weights.d.ts.map +1 -0
- package/dist/src/generators/weights.js +135 -0
- package/dist/src/generators/weights.js.map +1 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +10 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/random/exp.d.ts +23 -0
- package/dist/src/random/exp.d.ts.map +1 -0
- package/dist/src/random/exp.js +101 -0
- package/dist/src/random/exp.js.map +1 -0
- package/dist/src/random/log.d.ts +19 -0
- package/dist/src/random/log.d.ts.map +1 -0
- package/dist/src/random/log.js +83 -0
- package/dist/src/random/log.js.map +1 -0
- package/dist/src/random/stream.d.ts +93 -0
- package/dist/src/random/stream.d.ts.map +1 -0
- package/dist/src/random/stream.js +154 -0
- package/dist/src/random/stream.js.map +1 -0
- package/dist/src/random/threefry.d.ts +19 -0
- package/dist/src/random/threefry.d.ts.map +1 -0
- package/dist/src/random/threefry.js +43 -0
- package/dist/src/random/threefry.js.map +1 -0
- package/dist/src/random/trig.d.ts +16 -0
- package/dist/src/random/trig.d.ts.map +1 -0
- package/dist/src/random/trig.js +78 -0
- package/dist/src/random/trig.js.map +1 -0
- package/dist/src/types.d.ts +28 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +102 -5
- package/src/datasets/build.ts +140 -0
- package/src/datasets/catalog.ts +35 -0
- package/src/datasets/celegans-neural/data.ts +575 -0
- package/src/datasets/celegans-neural/index.ts +17 -0
- package/src/datasets/celegans-neural/meta.ts +25 -0
- package/src/datasets/contiguous-usa/data.ts +164 -0
- package/src/datasets/contiguous-usa/index.ts +17 -0
- package/src/datasets/contiguous-usa/meta.ts +31 -0
- package/src/datasets/davis-southern-women/data.ts +59 -0
- package/src/datasets/davis-southern-women/index.ts +17 -0
- package/src/datasets/davis-southern-women/meta.ts +20 -0
- package/src/datasets/dolphins/data.ts +95 -0
- package/src/datasets/dolphins/index.ts +17 -0
- package/src/datasets/dolphins/meta.ts +21 -0
- package/src/datasets/florentine-families/data.ts +33 -0
- package/src/datasets/florentine-families/index.ts +17 -0
- package/src/datasets/florentine-families/meta.ts +20 -0
- package/src/datasets/football/data.ts +212 -0
- package/src/datasets/football/index.ts +17 -0
- package/src/datasets/football/meta.ts +20 -0
- package/src/datasets/hosted.ts +90 -0
- package/src/datasets/karate/data.ts +32 -0
- package/src/datasets/karate/index.ts +17 -0
- package/src/datasets/karate/meta.ts +25 -0
- package/src/datasets/knuth-miles/data.ts +1205 -0
- package/src/datasets/knuth-miles/index.ts +17 -0
- package/src/datasets/knuth-miles/meta.ts +29 -0
- package/src/datasets/les-miserables/data.ts +119 -0
- package/src/datasets/les-miserables/index.ts +17 -0
- package/src/datasets/les-miserables/meta.ts +24 -0
- package/src/datasets/openflights/data.ts +15459 -0
- package/src/datasets/openflights/index.ts +17 -0
- package/src/datasets/openflights/meta.ts +31 -0
- package/src/datasets/political-blogs/data.ts +4859 -0
- package/src/datasets/political-blogs/index.ts +17 -0
- package/src/datasets/political-blogs/meta.ts +30 -0
- package/src/datasets/political-books/data.ts +167 -0
- package/src/datasets/political-books/index.ts +17 -0
- package/src/datasets/political-books/meta.ts +23 -0
- package/src/datasets/remote.ts +42 -0
- package/src/element.ts +41 -0
- package/src/generators/bipartite.ts +127 -0
- package/src/generators/block-model.ts +160 -0
- package/src/generators/classic.ts +461 -0
- package/src/generators/degree-sequence.ts +807 -0
- package/src/generators/directed.ts +418 -0
- package/src/generators/erdos-renyi.ts +188 -0
- package/src/generators/flow.ts +443 -0
- package/src/generators/geometric.ts +591 -0
- package/src/generators/growth.ts +532 -0
- package/src/generators/hyperbolic.ts +193 -0
- package/src/generators/index.ts +133 -0
- package/src/generators/lattices.ts +290 -0
- package/src/generators/lfr.ts +227 -0
- package/src/generators/named.ts +198 -0
- package/src/generators/preferential-attachment.ts +188 -0
- package/src/generators/trees-and-dags.ts +139 -0
- package/src/generators/util.ts +167 -0
- package/src/generators/variants.ts +253 -0
- package/src/generators/weights.ts +177 -0
- package/src/index.ts +12 -0
- package/src/random/exp.ts +104 -0
- package/src/random/log.ts +86 -0
- package/src/random/stream.ts +169 -0
- package/src/random/threefry.ts +45 -0
- package/src/random/trig.ts +83 -0
- package/src/types.ts +28 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural variants for testing consumers: random multigraphs, a helper that adds self-loops,
|
|
3
|
+
* parallel and anti-parallel edges to any graph, and a pack of small (and a few huge) edge-case
|
|
4
|
+
* graphs that parsers, loaders and algorithms must survive.
|
|
5
|
+
*/
|
|
6
|
+
import { type SampleGraph } from "../types.js";
|
|
7
|
+
import { type WeightOptions } from "./weights.js";
|
|
8
|
+
/** Options of {@link randomMultigraph}. */
|
|
9
|
+
export interface RandomMultigraphOptions extends WeightOptions {
|
|
10
|
+
/** The node count, >= 1 (>= 2 without self-loops). */
|
|
11
|
+
n: number;
|
|
12
|
+
/** The edge count, >= 0. */
|
|
13
|
+
m: number;
|
|
14
|
+
/** Whether the edges are directed; default false. */
|
|
15
|
+
directed?: boolean | undefined;
|
|
16
|
+
/** Whether an edge may join a node to itself; default true. */
|
|
17
|
+
selfLoops?: boolean | undefined;
|
|
18
|
+
/** The seed, an integer in [0, 2^53); default 0. */
|
|
19
|
+
seed?: number | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A random multigraph: m edges, each an independent uniform ordered pair (u, v) -- drawn with
|
|
23
|
+
* replacement, so parallel edges and (when allowed) self-loops are kept. Undirected, this is the
|
|
24
|
+
* "each endpoint uniform" model: a given self-loop is half as likely as a given pair u != v. Edge e
|
|
25
|
+
* draws u = nextBelow(n) and then v = nextBelow(n), or v = nextBelow(n - 1) shifted past u when
|
|
26
|
+
* self-loops are off, from the stream (seed, "multigraph", 0); one sequential stream, since two
|
|
27
|
+
* draws per edge are cheaper than a per-edge stream derivation. O(m).
|
|
28
|
+
* @param options - n, m, directed, selfLoops and seed
|
|
29
|
+
* @returns the multigraph
|
|
30
|
+
*/
|
|
31
|
+
export declare function randomMultigraph(options: RandomMultigraphOptions): SampleGraph;
|
|
32
|
+
/** Options of {@link addPathologicalEdges}. */
|
|
33
|
+
export interface PathologicalEdgeOptions {
|
|
34
|
+
/** How many self-loops to add at uniform nodes; default 0. */
|
|
35
|
+
selfLoops?: number | undefined;
|
|
36
|
+
/** How many copies of uniform existing edges to add; default 0. */
|
|
37
|
+
parallelEdges?: number | undefined;
|
|
38
|
+
/** How many reversed copies of uniform existing arcs to add (directed graphs only); default 0. */
|
|
39
|
+
antiParallelEdges?: number | undefined;
|
|
40
|
+
/** The seed, an integer in [0, 2^53); default 0. */
|
|
41
|
+
seed?: number | undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* A copy of `graph` with pathological edges appended after its own, in this order: `selfLoops`
|
|
45
|
+
* self-loops (v, v) at v = nextBelow(nodeCount); `parallelEdges` copies of edge e =
|
|
46
|
+
* nextBelow(original edge count); `antiParallelEdges` reversed copies (dst[e], src[e]) of
|
|
47
|
+
* e = nextBelow(original edge count). Copies are only ever of the original edges. Draws come from
|
|
48
|
+
* the stream (seed, "pathological", 0) in that order. A weighted graph's copies keep the copied
|
|
49
|
+
* edge's weight and a self-loop gets weight 1. `ids` and `nodeColumns` are shared, not copied.
|
|
50
|
+
* O(m + added).
|
|
51
|
+
* @param graph - the graph
|
|
52
|
+
* @param options - the counts and the seed
|
|
53
|
+
* @returns the new graph
|
|
54
|
+
*/
|
|
55
|
+
export declare function addPathologicalEdges(graph: SampleGraph, options: PathologicalEdgeOptions): SampleGraph;
|
|
56
|
+
/** The names of the {@link edgeCaseGraph} cases. */
|
|
57
|
+
export declare const EDGE_CASE_NAMES: readonly ["empty", "single-node", "single-self-loop", "isolated-nodes", "disconnected", "pathological-undirected", "pathological-directed", "zero-weights", "negative-weights", "negative-cycle", "duplicate-heavy", "max-node-index", "star-100k", "path-100k"];
|
|
58
|
+
/** One of {@link EDGE_CASE_NAMES}. */
|
|
59
|
+
export type EdgeCaseName = (typeof EDGE_CASE_NAMES)[number];
|
|
60
|
+
/**
|
|
61
|
+
* An edge-case graph for testing parsers, loaders and algorithms. Every case loads with
|
|
62
|
+
* graph-format's `fromEdgeArrays` default options, and each call returns fresh arrays.
|
|
63
|
+
*
|
|
64
|
+
* - `empty`: 0 nodes, 0 edges.
|
|
65
|
+
* - `single-node`: 1 node, no edges.
|
|
66
|
+
* - `single-self-loop`: 1 node with a self-loop.
|
|
67
|
+
* - `isolated-nodes`: 10 nodes, no edges.
|
|
68
|
+
* - `disconnected`: a triangle, a 3-node path, one edge and 2 isolated nodes (5 components).
|
|
69
|
+
* - `pathological-undirected`: a self-loop, a triple parallel edge (one written reversed), weights
|
|
70
|
+
* 0, negative and fractional.
|
|
71
|
+
* - `pathological-directed`: a self-loop, parallel arcs, an anti-parallel pair (a 2-cycle), a
|
|
72
|
+
* negative-weight cycle reachable from 0, zero and negative weights.
|
|
73
|
+
* - `zero-weights`: a 4-cycle plus a chord, all weights 0.
|
|
74
|
+
* - `negative-weights`: a DAG with negative weights and no negative cycle (Bellman-Ford, DAG
|
|
75
|
+
* shortest paths); distances from 0 are [0, 4, 1, 4, 3].
|
|
76
|
+
* - `negative-cycle`: a directed cycle of total weight -1 reachable from node 0.
|
|
77
|
+
* - `duplicate-heavy`: 1,000 copies of the edge (0, 1).
|
|
78
|
+
* - `max-node-index`: 2^20 nodes, 3 edges touching nodes 0, 1, 2^20 - 2 and 2^20 - 1.
|
|
79
|
+
* - `star-100k`: a hub with 100,000 leaves (degree extremes).
|
|
80
|
+
* - `path-100k`: a 100,000-node path (deep recursion, long diameters).
|
|
81
|
+
* @param name - the case
|
|
82
|
+
* @returns the graph
|
|
83
|
+
*/
|
|
84
|
+
export declare function edgeCaseGraph(name: EdgeCaseName): SampleGraph;
|
|
85
|
+
//# sourceMappingURL=variants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../../src/generators/variants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEhE,2CAA2C;AAC3C,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC1D,sDAAsD;IACtD,CAAC,EAAE,MAAM,CAAC;IACV,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,WAAW,CA0B9E;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACpC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,kGAAkG;IAClG,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,uBAAuB,GAAG,WAAW,CA6CtG;AAED,oDAAoD;AACpD,eAAO,MAAM,eAAe,kQAelB,CAAC;AAEX,sCAAsC;AACtC,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAsE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,WAAW,CAK7D"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural variants for testing consumers: random multigraphs, a helper that adds self-loops,
|
|
3
|
+
* parallel and anti-parallel edges to any graph, and a pack of small (and a few huge) edge-case
|
|
4
|
+
* graphs that parsers, loaders and algorithms must survive.
|
|
5
|
+
*/
|
|
6
|
+
import { RandomStream, resolveSeed } from "../random/stream.js";
|
|
7
|
+
import { checkEdgeCount, checkInt } from "./util.js";
|
|
8
|
+
import { applyWeights } from "./weights.js";
|
|
9
|
+
/**
|
|
10
|
+
* A random multigraph: m edges, each an independent uniform ordered pair (u, v) -- drawn with
|
|
11
|
+
* replacement, so parallel edges and (when allowed) self-loops are kept. Undirected, this is the
|
|
12
|
+
* "each endpoint uniform" model: a given self-loop is half as likely as a given pair u != v. Edge e
|
|
13
|
+
* draws u = nextBelow(n) and then v = nextBelow(n), or v = nextBelow(n - 1) shifted past u when
|
|
14
|
+
* self-loops are off, from the stream (seed, "multigraph", 0); one sequential stream, since two
|
|
15
|
+
* draws per edge are cheaper than a per-edge stream derivation. O(m).
|
|
16
|
+
* @param options - n, m, directed, selfLoops and seed
|
|
17
|
+
* @returns the multigraph
|
|
18
|
+
*/
|
|
19
|
+
export function randomMultigraph(options) {
|
|
20
|
+
const { n, m } = options;
|
|
21
|
+
const loops = options.selfLoops ?? true;
|
|
22
|
+
checkInt("n", n, 1);
|
|
23
|
+
checkInt("m", m, 0);
|
|
24
|
+
if (!loops && n < 2) {
|
|
25
|
+
throw new RangeError(`selfLoops: false needs n >= 2, got ${n}`);
|
|
26
|
+
}
|
|
27
|
+
const stream = new RandomStream(resolveSeed(options.seed), "multigraph", 0);
|
|
28
|
+
const src = new Uint32Array(m);
|
|
29
|
+
const dst = new Uint32Array(m);
|
|
30
|
+
for (let e = 0; e < m; e++) {
|
|
31
|
+
const u = stream.nextBelow(n);
|
|
32
|
+
let v;
|
|
33
|
+
if (loops) {
|
|
34
|
+
v = stream.nextBelow(n);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
v = stream.nextBelow(n - 1);
|
|
38
|
+
if (v >= u) {
|
|
39
|
+
v++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
src[e] = u;
|
|
43
|
+
dst[e] = v;
|
|
44
|
+
}
|
|
45
|
+
return applyWeights({ directed: options.directed ?? false, nodeCount: n, src, dst }, options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* A copy of `graph` with pathological edges appended after its own, in this order: `selfLoops`
|
|
49
|
+
* self-loops (v, v) at v = nextBelow(nodeCount); `parallelEdges` copies of edge e =
|
|
50
|
+
* nextBelow(original edge count); `antiParallelEdges` reversed copies (dst[e], src[e]) of
|
|
51
|
+
* e = nextBelow(original edge count). Copies are only ever of the original edges. Draws come from
|
|
52
|
+
* the stream (seed, "pathological", 0) in that order. A weighted graph's copies keep the copied
|
|
53
|
+
* edge's weight and a self-loop gets weight 1. `ids` and `nodeColumns` are shared, not copied.
|
|
54
|
+
* O(m + added).
|
|
55
|
+
* @param graph - the graph
|
|
56
|
+
* @param options - the counts and the seed
|
|
57
|
+
* @returns the new graph
|
|
58
|
+
*/
|
|
59
|
+
export function addPathologicalEdges(graph, options) {
|
|
60
|
+
const loops = options.selfLoops ?? 0;
|
|
61
|
+
const parallel = options.parallelEdges ?? 0;
|
|
62
|
+
const anti = options.antiParallelEdges ?? 0;
|
|
63
|
+
checkInt("selfLoops", loops, 0);
|
|
64
|
+
checkInt("parallelEdges", parallel, 0);
|
|
65
|
+
checkInt("antiParallelEdges", anti, 0);
|
|
66
|
+
if (anti > 0 && !graph.directed) {
|
|
67
|
+
throw new RangeError("antiParallelEdges needs a directed graph");
|
|
68
|
+
}
|
|
69
|
+
const m = graph.src.length;
|
|
70
|
+
if (loops > 0 && graph.nodeCount === 0) {
|
|
71
|
+
throw new RangeError("selfLoops needs a graph with at least one node");
|
|
72
|
+
}
|
|
73
|
+
if (parallel + anti > 0 && m === 0) {
|
|
74
|
+
throw new RangeError("parallelEdges and antiParallelEdges need a graph with at least one edge");
|
|
75
|
+
}
|
|
76
|
+
const total = m + loops + parallel + anti;
|
|
77
|
+
checkEdgeCount(total);
|
|
78
|
+
const stream = new RandomStream(resolveSeed(options.seed), "pathological", 0);
|
|
79
|
+
const src = new Uint32Array(total);
|
|
80
|
+
const dst = new Uint32Array(total);
|
|
81
|
+
src.set(graph.src);
|
|
82
|
+
dst.set(graph.dst);
|
|
83
|
+
const weights = graph.weights === undefined ? undefined : new Float32Array(total);
|
|
84
|
+
weights?.set(graph.weights ?? []);
|
|
85
|
+
let e = m;
|
|
86
|
+
for (let i = 0; i < loops; i++, e++) {
|
|
87
|
+
const v = stream.nextBelow(graph.nodeCount);
|
|
88
|
+
src[e] = v;
|
|
89
|
+
dst[e] = v;
|
|
90
|
+
if (weights !== undefined) {
|
|
91
|
+
weights[e] = 1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
for (let i = 0; i < parallel + anti; i++, e++) {
|
|
95
|
+
const f = stream.nextBelow(m);
|
|
96
|
+
const reversed = i >= parallel;
|
|
97
|
+
src[e] = reversed ? graph.dst[f] : graph.src[f];
|
|
98
|
+
dst[e] = reversed ? graph.src[f] : graph.dst[f];
|
|
99
|
+
if (weights !== undefined) {
|
|
100
|
+
weights[e] = weights[f];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return { ...graph, src, dst, weights };
|
|
104
|
+
}
|
|
105
|
+
/** The names of the {@link edgeCaseGraph} cases. */
|
|
106
|
+
export const EDGE_CASE_NAMES = [
|
|
107
|
+
"empty",
|
|
108
|
+
"single-node",
|
|
109
|
+
"single-self-loop",
|
|
110
|
+
"isolated-nodes",
|
|
111
|
+
"disconnected",
|
|
112
|
+
"pathological-undirected",
|
|
113
|
+
"pathological-directed",
|
|
114
|
+
"zero-weights",
|
|
115
|
+
"negative-weights",
|
|
116
|
+
"negative-cycle",
|
|
117
|
+
"duplicate-heavy",
|
|
118
|
+
"max-node-index",
|
|
119
|
+
"star-100k",
|
|
120
|
+
"path-100k",
|
|
121
|
+
];
|
|
122
|
+
/**
|
|
123
|
+
* A small graph from a flat edge list.
|
|
124
|
+
* @param directed - whether the edges are directed
|
|
125
|
+
* @param nodeCount - the node count
|
|
126
|
+
* @param edges - [u, v, u, v, ...], or [u, v, w, u, v, w, ...] when weighted
|
|
127
|
+
* @param weighted - whether every edge carries a weight
|
|
128
|
+
* @returns the graph
|
|
129
|
+
*/
|
|
130
|
+
function build(directed, nodeCount, edges, weighted = false) {
|
|
131
|
+
const stride = weighted ? 3 : 2;
|
|
132
|
+
const m = edges.length / stride;
|
|
133
|
+
const src = new Uint32Array(m);
|
|
134
|
+
const dst = new Uint32Array(m);
|
|
135
|
+
const weights = new Float32Array(weighted ? m : 0);
|
|
136
|
+
for (let e = 0; e < m; e++) {
|
|
137
|
+
src[e] = edges[e * stride];
|
|
138
|
+
dst[e] = edges[e * stride + 1];
|
|
139
|
+
weights[e] = weighted ? edges[e * stride + 2] : 0;
|
|
140
|
+
}
|
|
141
|
+
return weighted ? { directed, nodeCount, src, dst, weights } : { directed, nodeCount, src, dst };
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* A graph whose edge e is end(e) for e < m.
|
|
145
|
+
* @param nodeCount - the node count
|
|
146
|
+
* @param m - the edge count
|
|
147
|
+
* @param end - maps e to [source, target]
|
|
148
|
+
* @returns the undirected graph
|
|
149
|
+
*/
|
|
150
|
+
function generated(nodeCount, m, end) {
|
|
151
|
+
const src = new Uint32Array(m);
|
|
152
|
+
const dst = new Uint32Array(m);
|
|
153
|
+
for (let e = 0; e < m; e++) {
|
|
154
|
+
[src[e], dst[e]] = end(e);
|
|
155
|
+
}
|
|
156
|
+
return { directed: false, nodeCount, src, dst };
|
|
157
|
+
}
|
|
158
|
+
const CASES = {
|
|
159
|
+
empty: () => build(false, 0, []),
|
|
160
|
+
"single-node": () => build(false, 1, []),
|
|
161
|
+
"single-self-loop": () => build(false, 1, [0, 0]),
|
|
162
|
+
"isolated-nodes": () => build(false, 10, []),
|
|
163
|
+
// triangle 0-1-2, path 3-4-5, edge 6-7, isolated 8 and 9
|
|
164
|
+
disconnected: () => build(false, 10, [0, 1, 1, 2, 2, 0, 3, 4, 4, 5, 6, 7]),
|
|
165
|
+
// self-loop at 0; (1, 2) three times, once written (2, 1); weights 0, negative and fractional
|
|
166
|
+
"pathological-undirected": () => build(false, 4, [0, 0, 1, 1, 2, 0, 1, 2, -2, 2, 1, 0.5, 2, 3, 2.5, 3, 0, -1], true),
|
|
167
|
+
// self-loop at 0; parallel arcs 0 -> 1; the 2-cycle 1 <-> 2 (an anti-parallel pair, one arc
|
|
168
|
+
// of weight 0); the negative cycle 2 -> 3 -> 4 -> 2 of total weight -2, reachable from 0
|
|
169
|
+
"pathological-directed": () => build(true, 5, [0, 0, 1, 0, 1, 2, 0, 1, 3, 1, 2, 1, 2, 1, 0, 2, 3, -1, 3, 4, -2, 4, 2, 1, 1, 3, 0.5], true),
|
|
170
|
+
// a 4-cycle with the chord 0-2, every weight 0: ties everywhere for Dijkstra and MST
|
|
171
|
+
"zero-weights": () => build(false, 4, [0, 1, 0, 1, 2, 0, 2, 3, 0, 3, 0, 0, 0, 2, 0], true),
|
|
172
|
+
// a DAG with negative arcs and no negative cycle; distances from 0 are [0, 4, 1, 4, 3]
|
|
173
|
+
"negative-weights": () => build(true, 5, [0, 1, 4, 0, 2, 2, 1, 2, -3, 1, 3, 2, 2, 3, 3, 3, 4, -1, 2, 4, 5], true),
|
|
174
|
+
// 0 -> 1, then the cycle 1 -> 2 -> 3 -> 1 of total weight -1
|
|
175
|
+
"negative-cycle": () => build(true, 4, [0, 1, 1, 1, 2, -1, 2, 3, -1, 3, 1, 1], true),
|
|
176
|
+
// 1,000 copies of the edge (0, 1)
|
|
177
|
+
"duplicate-heavy": () => generated(2, 1000, () => [0, 1]),
|
|
178
|
+
// 2^20 nodes, edges only at the ends: sparse index handling and large-id output
|
|
179
|
+
"max-node-index": () => build(false, 2 ** 20, [0, 1, 2 ** 20 - 2, 2 ** 20 - 1, 0, 2 ** 20 - 1]),
|
|
180
|
+
// hub 0 with 100,000 leaves
|
|
181
|
+
"star-100k": () => generated(100001, 100000, (e) => [0, e + 1]),
|
|
182
|
+
// the path 0 - 1 - ... - 99,999
|
|
183
|
+
"path-100k": () => generated(100000, 99999, (e) => [e, e + 1]),
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* An edge-case graph for testing parsers, loaders and algorithms. Every case loads with
|
|
187
|
+
* graph-format's `fromEdgeArrays` default options, and each call returns fresh arrays.
|
|
188
|
+
*
|
|
189
|
+
* - `empty`: 0 nodes, 0 edges.
|
|
190
|
+
* - `single-node`: 1 node, no edges.
|
|
191
|
+
* - `single-self-loop`: 1 node with a self-loop.
|
|
192
|
+
* - `isolated-nodes`: 10 nodes, no edges.
|
|
193
|
+
* - `disconnected`: a triangle, a 3-node path, one edge and 2 isolated nodes (5 components).
|
|
194
|
+
* - `pathological-undirected`: a self-loop, a triple parallel edge (one written reversed), weights
|
|
195
|
+
* 0, negative and fractional.
|
|
196
|
+
* - `pathological-directed`: a self-loop, parallel arcs, an anti-parallel pair (a 2-cycle), a
|
|
197
|
+
* negative-weight cycle reachable from 0, zero and negative weights.
|
|
198
|
+
* - `zero-weights`: a 4-cycle plus a chord, all weights 0.
|
|
199
|
+
* - `negative-weights`: a DAG with negative weights and no negative cycle (Bellman-Ford, DAG
|
|
200
|
+
* shortest paths); distances from 0 are [0, 4, 1, 4, 3].
|
|
201
|
+
* - `negative-cycle`: a directed cycle of total weight -1 reachable from node 0.
|
|
202
|
+
* - `duplicate-heavy`: 1,000 copies of the edge (0, 1).
|
|
203
|
+
* - `max-node-index`: 2^20 nodes, 3 edges touching nodes 0, 1, 2^20 - 2 and 2^20 - 1.
|
|
204
|
+
* - `star-100k`: a hub with 100,000 leaves (degree extremes).
|
|
205
|
+
* - `path-100k`: a 100,000-node path (deep recursion, long diameters).
|
|
206
|
+
* @param name - the case
|
|
207
|
+
* @returns the graph
|
|
208
|
+
*/
|
|
209
|
+
export function edgeCaseGraph(name) {
|
|
210
|
+
if (!EDGE_CASE_NAMES.includes(name)) {
|
|
211
|
+
throw new RangeError(`unknown edge case "${name}"; expected one of ${EDGE_CASE_NAMES.join(", ")}`);
|
|
212
|
+
}
|
|
213
|
+
return CASES[name]();
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=variants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variants.js","sourceRoot":"","sources":["../../../src/generators/variants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge weights for any graph: the `weights` option every generator takes, and `withWeights` for a
|
|
3
|
+
* graph that already exists (a dataset, a hand-built graph).
|
|
4
|
+
*/
|
|
5
|
+
import { type SampleGraph } from "../types.js";
|
|
6
|
+
/** How to combine the two endpoint values of a node column into an edge weight. */
|
|
7
|
+
export type ColumnCombine = "source" | "target" | "sum" | "mean" | "product" | "min" | "max" | "difference";
|
|
8
|
+
/**
|
|
9
|
+
* A weight distribution. Random kinds draw one value per edge, in edge order, from stream
|
|
10
|
+
* (seed, "weights", 0).
|
|
11
|
+
*
|
|
12
|
+
* - `uniform`: a real in [min, max) (default [0, 1)).
|
|
13
|
+
* - `integer`: an integer in [min, max], both ends included -- capacities, Dijkstra demos.
|
|
14
|
+
* - `exponential`: -mean ln(1 - u), mean default 1.
|
|
15
|
+
* - `euclidean`: the distance between the endpoints' `x`, `y` (and `z`, when present) node columns;
|
|
16
|
+
* for the generators that emit positions.
|
|
17
|
+
* - `column`: from a numeric node column: the source's value, the target's, their sum, mean,
|
|
18
|
+
* product, min, max, or the absolute difference.
|
|
19
|
+
*/
|
|
20
|
+
export type WeightSpec = {
|
|
21
|
+
readonly kind: "uniform";
|
|
22
|
+
readonly min?: number | undefined;
|
|
23
|
+
readonly max?: number | undefined;
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: "integer";
|
|
26
|
+
readonly min: number;
|
|
27
|
+
readonly max: number;
|
|
28
|
+
} | {
|
|
29
|
+
readonly kind: "exponential";
|
|
30
|
+
readonly mean?: number | undefined;
|
|
31
|
+
} | {
|
|
32
|
+
readonly kind: "euclidean";
|
|
33
|
+
} | {
|
|
34
|
+
readonly kind: "column";
|
|
35
|
+
readonly column: string;
|
|
36
|
+
readonly combine?: ColumnCombine | undefined;
|
|
37
|
+
};
|
|
38
|
+
/** The options every generator accepts on top of its own. */
|
|
39
|
+
export interface WeightOptions {
|
|
40
|
+
/** Give every edge a weight from this distribution; absent means unweighted. */
|
|
41
|
+
weights?: WeightSpec | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* The seed of the weight draws, an integer in [0, 2^53); default 0. Random generators share it
|
|
44
|
+
* with their structure (the weights use their own stream domain, so adding weights never changes
|
|
45
|
+
* the edges).
|
|
46
|
+
*/
|
|
47
|
+
seed?: number | undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A copy of `graph` (sharing its arrays) with edge weights drawn from `spec`. Any graph works: a
|
|
51
|
+
* generator's output, a dataset, a hand-built SampleGraph. Existing weights are replaced.
|
|
52
|
+
* @param graph - the graph
|
|
53
|
+
* @param spec - the distribution
|
|
54
|
+
* @param seed - the seed of the draws, default 0
|
|
55
|
+
* @returns the weighted graph
|
|
56
|
+
*/
|
|
57
|
+
export declare function withWeights(graph: SampleGraph, spec: WeightSpec, seed?: number): SampleGraph;
|
|
58
|
+
/**
|
|
59
|
+
* Apply the common `weights` option, if set: the last step of every generator.
|
|
60
|
+
* @param graph - the generated graph
|
|
61
|
+
* @param options - the generator's options
|
|
62
|
+
* @returns the graph, weighted when asked
|
|
63
|
+
*/
|
|
64
|
+
export declare function applyWeights(graph: SampleGraph, options: WeightOptions): SampleGraph;
|
|
65
|
+
//# sourceMappingURL=weights.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weights.d.ts","sourceRoot":"","sources":["../../../src/generators/weights.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,CAAC;AAE5G;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAChB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAClG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;CAAE,CAAC;AAEzG,6DAA6D;AAC7D,MAAM,WAAW,aAAa;IAC1B,gFAAgF;IAChF,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAiHD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAE5F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,WAAW,CAEpF"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Edge weights for any graph: the `weights` option every generator takes, and `withWeights` for a
|
|
3
|
+
* graph that already exists (a dataset, a hand-built graph).
|
|
4
|
+
*/
|
|
5
|
+
import { detLog } from "../random/log.js";
|
|
6
|
+
import { RandomStream, resolveSeed } from "../random/stream.js";
|
|
7
|
+
/**
|
|
8
|
+
* A numeric node column of the graph, or a RangeError naming it.
|
|
9
|
+
* @param graph - the graph
|
|
10
|
+
* @param name - the column name
|
|
11
|
+
* @returns the column's values
|
|
12
|
+
*/
|
|
13
|
+
function numericColumn(graph, name) {
|
|
14
|
+
const column = graph.nodeColumns?.[name];
|
|
15
|
+
if (column === undefined || !ArrayBuffer.isView(column)) {
|
|
16
|
+
throw new RangeError(`weights: the graph has no numeric node column "${name}"`);
|
|
17
|
+
}
|
|
18
|
+
return column;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The weight of every edge under `spec`.
|
|
22
|
+
* @param graph - the graph
|
|
23
|
+
* @param spec - the distribution
|
|
24
|
+
* @param seed - the seed (already resolved)
|
|
25
|
+
* @returns one weight per edge
|
|
26
|
+
*/
|
|
27
|
+
function drawWeights(graph, spec, seed) {
|
|
28
|
+
const m = graph.src.length;
|
|
29
|
+
const out = new Float32Array(m);
|
|
30
|
+
const { src, dst } = graph;
|
|
31
|
+
const stream = new RandomStream(seed, "weights", 0);
|
|
32
|
+
switch (spec.kind) {
|
|
33
|
+
case "uniform": {
|
|
34
|
+
const min = spec.min ?? 0;
|
|
35
|
+
const max = spec.max ?? 1;
|
|
36
|
+
if (!(Number.isFinite(min) && Number.isFinite(max) && min <= max)) {
|
|
37
|
+
throw new RangeError(`weights: uniform needs finite min <= max, got ${min} and ${max}`);
|
|
38
|
+
}
|
|
39
|
+
for (let e = 0; e < m; e++) {
|
|
40
|
+
out[e] = min + (max - min) * stream.nextFloat();
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case "integer": {
|
|
45
|
+
const { min, max } = spec;
|
|
46
|
+
if (!(Number.isSafeInteger(min) && Number.isSafeInteger(max) && min <= max)) {
|
|
47
|
+
throw new RangeError(`weights: integer needs integers min <= max, got ${min} and ${max}`);
|
|
48
|
+
}
|
|
49
|
+
for (let e = 0; e < m; e++) {
|
|
50
|
+
out[e] = min + stream.nextBelow(max - min + 1);
|
|
51
|
+
}
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case "exponential": {
|
|
55
|
+
const mean = spec.mean ?? 1;
|
|
56
|
+
if (!(mean > 0 && Number.isFinite(mean))) {
|
|
57
|
+
throw new RangeError(`weights: exponential needs a positive mean, got ${mean}`);
|
|
58
|
+
}
|
|
59
|
+
for (let e = 0; e < m; e++) {
|
|
60
|
+
out[e] = -mean * detLog(1 - stream.nextFloat());
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case "euclidean": {
|
|
65
|
+
const x = numericColumn(graph, "x");
|
|
66
|
+
const y = numericColumn(graph, "y");
|
|
67
|
+
const z = graph.nodeColumns?.z === undefined ? null : numericColumn(graph, "z");
|
|
68
|
+
for (let e = 0; e < m; e++) {
|
|
69
|
+
const dx = x[src[e]] - x[dst[e]];
|
|
70
|
+
const dy = y[src[e]] - y[dst[e]];
|
|
71
|
+
const dz = z === null ? 0 : z[src[e]] - z[dst[e]];
|
|
72
|
+
out[e] = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
default: {
|
|
77
|
+
const values = numericColumn(graph, spec.column);
|
|
78
|
+
const combine = spec.combine ?? "sum";
|
|
79
|
+
for (let e = 0; e < m; e++) {
|
|
80
|
+
const a = values[src[e]];
|
|
81
|
+
const b = values[dst[e]];
|
|
82
|
+
out[e] = combineValues(combine, a, b);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Combine two endpoint values.
|
|
90
|
+
* @param combine - the rule
|
|
91
|
+
* @param a - the source value
|
|
92
|
+
* @param b - the target value
|
|
93
|
+
* @returns the weight
|
|
94
|
+
*/
|
|
95
|
+
function combineValues(combine, a, b) {
|
|
96
|
+
switch (combine) {
|
|
97
|
+
case "source":
|
|
98
|
+
return a;
|
|
99
|
+
case "target":
|
|
100
|
+
return b;
|
|
101
|
+
case "sum":
|
|
102
|
+
return a + b;
|
|
103
|
+
case "mean":
|
|
104
|
+
return (a + b) / 2;
|
|
105
|
+
case "product":
|
|
106
|
+
return a * b;
|
|
107
|
+
case "min":
|
|
108
|
+
return Math.min(a, b);
|
|
109
|
+
case "max":
|
|
110
|
+
return Math.max(a, b);
|
|
111
|
+
default:
|
|
112
|
+
return Math.abs(a - b);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A copy of `graph` (sharing its arrays) with edge weights drawn from `spec`. Any graph works: a
|
|
117
|
+
* generator's output, a dataset, a hand-built SampleGraph. Existing weights are replaced.
|
|
118
|
+
* @param graph - the graph
|
|
119
|
+
* @param spec - the distribution
|
|
120
|
+
* @param seed - the seed of the draws, default 0
|
|
121
|
+
* @returns the weighted graph
|
|
122
|
+
*/
|
|
123
|
+
export function withWeights(graph, spec, seed) {
|
|
124
|
+
return { ...graph, weights: drawWeights(graph, spec, resolveSeed(seed)) };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Apply the common `weights` option, if set: the last step of every generator.
|
|
128
|
+
* @param graph - the generated graph
|
|
129
|
+
* @param options - the generator's options
|
|
130
|
+
* @returns the graph, weighted when asked
|
|
131
|
+
*/
|
|
132
|
+
export function applyWeights(graph, options) {
|
|
133
|
+
return options.weights === undefined ? graph : withWeights(graph, options.weights, options.seed);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=weights.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"weights.js","sourceRoot":"","sources":["../../../src/generators/weights.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@graphty/graph-samples`: the shared types, the dataset catalogue, the loader for hosted
|
|
3
|
+
* datasets and the conversion to graphty-element records. The generators live in
|
|
4
|
+
* `@graphty/graph-samples/generators` and each bundled dataset in
|
|
5
|
+
* `@graphty/graph-samples/datasets/<name>`, so an application bundles only what it imports.
|
|
6
|
+
*/
|
|
7
|
+
export { type DatasetMeta } from "./datasets/build.js";
|
|
8
|
+
export { DATASETS } from "./datasets/catalog.js";
|
|
9
|
+
export { DEFAULT_DATASET_BASE_URL, fetchDataset, type FetchDatasetOptions } from "./datasets/remote.js";
|
|
10
|
+
export { type ElementData, toElementData } from "./element.js";
|
|
11
|
+
export { type SampleGraph } from "./types.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,KAAK,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@graphty/graph-samples`: the shared types, the dataset catalogue, the loader for hosted
|
|
3
|
+
* datasets and the conversion to graphty-element records. The generators live in
|
|
4
|
+
* `@graphty/graph-samples/generators` and each bundled dataset in
|
|
5
|
+
* `@graphty/graph-samples/datasets/<name>`, so an application bundles only what it imports.
|
|
6
|
+
*/
|
|
7
|
+
export { DATASETS } from "./datasets/catalog.js";
|
|
8
|
+
export { DEFAULT_DATASET_BASE_URL, fetchDataset } from "./datasets/remote.js";
|
|
9
|
+
export { toElementData } from "./element.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAA4B,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAoB,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An exponential and the power functions built on it, returning the same bits on every JavaScript
|
|
3
|
+
* engine: a port of fdlibm's `__ieee754_exp` (e_exp.c, Sun Microsystems 1993), for the same reason
|
|
4
|
+
* and with the same technique as `detLog` in log.ts -- the exponent is read and written through a
|
|
5
|
+
* little-endian DataView and everything else is IEEE-754 double addition, subtraction,
|
|
6
|
+
* multiplication and division, which ECMAScript requires to be correctly rounded. Error below 1 ulp.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* e^x, bit-identical across engines.
|
|
10
|
+
* @param x - the argument
|
|
11
|
+
* @returns e^x; +Infinity above about 709.78, 0 below about -745.13, NaN for NaN
|
|
12
|
+
*/
|
|
13
|
+
export declare function detExp(x: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* x^y as `detExp(y * detLog(x))` for x > 0: deterministic, not correctly rounded (the relative
|
|
16
|
+
* error grows with |y ln x|, about 1e-13 for the magnitudes the generators use). 0^y is 0 for
|
|
17
|
+
* y > 0.
|
|
18
|
+
* @param x - the base, >= 0
|
|
19
|
+
* @param y - the exponent
|
|
20
|
+
* @returns x^y
|
|
21
|
+
*/
|
|
22
|
+
export declare function detPow(x: number, y: number): number;
|
|
23
|
+
//# sourceMappingURL=exp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exp.d.ts","sourceRoot":"","sources":["../../../src/random/exp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA8BH;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CA4CxC;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQnD"}
|