@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.
Files changed (407) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +123 -0
  3. package/README.md +190 -1
  4. package/dist/chunks/build-DdCe60t3.js +47 -0
  5. package/dist/chunks/build-DdCe60t3.js.map +1 -0
  6. package/dist/chunks/meta-B6toBzaa.js +19 -0
  7. package/dist/chunks/meta-B6toBzaa.js.map +1 -0
  8. package/dist/chunks/meta-BM_YIhlA.js +28 -0
  9. package/dist/chunks/meta-BM_YIhlA.js.map +1 -0
  10. package/dist/chunks/meta-BMmtUpPx.js +30 -0
  11. package/dist/chunks/meta-BMmtUpPx.js.map +1 -0
  12. package/dist/chunks/meta-BXC7oi86.js +22 -0
  13. package/dist/chunks/meta-BXC7oi86.js.map +1 -0
  14. package/dist/chunks/meta-BaFPvhc1.js +19 -0
  15. package/dist/chunks/meta-BaFPvhc1.js.map +1 -0
  16. package/dist/chunks/meta-C58v1Oy0.js +28 -0
  17. package/dist/chunks/meta-C58v1Oy0.js.map +1 -0
  18. package/dist/chunks/meta-CQRXyexG.js +23 -0
  19. package/dist/chunks/meta-CQRXyexG.js.map +1 -0
  20. package/dist/chunks/meta-DrgM1eS0.js +23 -0
  21. package/dist/chunks/meta-DrgM1eS0.js.map +1 -0
  22. package/dist/chunks/meta-IhoaDXAV.js +19 -0
  23. package/dist/chunks/meta-IhoaDXAV.js.map +1 -0
  24. package/dist/chunks/meta-MQPbBUUB.js +29 -0
  25. package/dist/chunks/meta-MQPbBUUB.js.map +1 -0
  26. package/dist/chunks/meta-Qp4HNYAZ.js +24 -0
  27. package/dist/chunks/meta-Qp4HNYAZ.js.map +1 -0
  28. package/dist/chunks/meta-mns0uFIW.js +19 -0
  29. package/dist/chunks/meta-mns0uFIW.js.map +1 -0
  30. package/dist/datasets/celegans-neural.d.ts +1 -0
  31. package/dist/datasets/celegans-neural.js +7359 -0
  32. package/dist/datasets/celegans-neural.js.map +1 -0
  33. package/dist/datasets/contiguous-usa.d.ts +1 -0
  34. package/dist/datasets/contiguous-usa.js +501 -0
  35. package/dist/datasets/contiguous-usa.js.map +1 -0
  36. package/dist/datasets/davis-southern-women.d.ts +1 -0
  37. package/dist/datasets/davis-southern-women.js +235 -0
  38. package/dist/datasets/davis-southern-women.js.map +1 -0
  39. package/dist/datasets/dolphins.d.ts +1 -0
  40. package/dist/datasets/dolphins.js +406 -0
  41. package/dist/datasets/dolphins.js.map +1 -0
  42. package/dist/datasets/florentine-families.d.ts +1 -0
  43. package/dist/datasets/florentine-families.js +75 -0
  44. package/dist/datasets/florentine-families.js.map +1 -0
  45. package/dist/datasets/football.d.ts +1 -0
  46. package/dist/datasets/football.js +1508 -0
  47. package/dist/datasets/football.js.map +1 -0
  48. package/dist/datasets/karate.d.ts +1 -0
  49. package/dist/datasets/karate.js +295 -0
  50. package/dist/datasets/karate.js.map +1 -0
  51. package/dist/datasets/knuth-miles.d.ts +1 -0
  52. package/dist/datasets/knuth-miles.js +24933 -0
  53. package/dist/datasets/knuth-miles.js.map +1 -0
  54. package/dist/datasets/les-miserables.d.ts +1 -0
  55. package/dist/datasets/les-miserables.js +860 -0
  56. package/dist/datasets/les-miserables.js.map +1 -0
  57. package/dist/datasets/openflights.d.ts +1 -0
  58. package/dist/datasets/openflights.js +130277 -0
  59. package/dist/datasets/openflights.js.map +1 -0
  60. package/dist/datasets/political-blogs.d.ts +1 -0
  61. package/dist/datasets/political-blogs.js +42551 -0
  62. package/dist/datasets/political-blogs.js.map +1 -0
  63. package/dist/datasets/political-books.d.ts +1 -0
  64. package/dist/datasets/political-books.js +1124 -0
  65. package/dist/datasets/political-books.js.map +1 -0
  66. package/dist/generators.d.ts +1 -0
  67. package/dist/generators.js +4496 -0
  68. package/dist/generators.js.map +1 -0
  69. package/dist/graph-samples.d.ts +1 -0
  70. package/dist/graph-samples.js +142 -0
  71. package/dist/graph-samples.js.map +1 -0
  72. package/dist/src/datasets/build.d.ts +89 -0
  73. package/dist/src/datasets/build.d.ts.map +1 -0
  74. package/dist/src/datasets/build.js +53 -0
  75. package/dist/src/datasets/build.js.map +1 -0
  76. package/dist/src/datasets/catalog.d.ts +8 -0
  77. package/dist/src/datasets/catalog.d.ts.map +1 -0
  78. package/dist/src/datasets/catalog.js +34 -0
  79. package/dist/src/datasets/catalog.js.map +1 -0
  80. package/dist/src/datasets/celegans-neural/data.d.ts +3 -0
  81. package/dist/src/datasets/celegans-neural/data.d.ts.map +1 -0
  82. package/dist/src/datasets/celegans-neural/data.js +573 -0
  83. package/dist/src/datasets/celegans-neural/data.js.map +1 -0
  84. package/dist/src/datasets/celegans-neural/index.d.ts +11 -0
  85. package/dist/src/datasets/celegans-neural/index.d.ts.map +1 -0
  86. package/dist/src/datasets/celegans-neural/index.js +14 -0
  87. package/dist/src/datasets/celegans-neural/index.js.map +1 -0
  88. package/dist/src/datasets/celegans-neural/meta.d.ts +4 -0
  89. package/dist/src/datasets/celegans-neural/meta.d.ts.map +1 -0
  90. package/dist/src/datasets/celegans-neural/meta.js +21 -0
  91. package/dist/src/datasets/celegans-neural/meta.js.map +1 -0
  92. package/dist/src/datasets/contiguous-usa/data.d.ts +3 -0
  93. package/dist/src/datasets/contiguous-usa/data.d.ts.map +1 -0
  94. package/dist/src/datasets/contiguous-usa/data.js +162 -0
  95. package/dist/src/datasets/contiguous-usa/data.js.map +1 -0
  96. package/dist/src/datasets/contiguous-usa/index.d.ts +11 -0
  97. package/dist/src/datasets/contiguous-usa/index.d.ts.map +1 -0
  98. package/dist/src/datasets/contiguous-usa/index.js +14 -0
  99. package/dist/src/datasets/contiguous-usa/index.js.map +1 -0
  100. package/dist/src/datasets/contiguous-usa/meta.d.ts +4 -0
  101. package/dist/src/datasets/contiguous-usa/meta.d.ts.map +1 -0
  102. package/dist/src/datasets/contiguous-usa/meta.js +27 -0
  103. package/dist/src/datasets/contiguous-usa/meta.js.map +1 -0
  104. package/dist/src/datasets/davis-southern-women/data.d.ts +3 -0
  105. package/dist/src/datasets/davis-southern-women/data.d.ts.map +1 -0
  106. package/dist/src/datasets/davis-southern-women/data.js +57 -0
  107. package/dist/src/datasets/davis-southern-women/data.js.map +1 -0
  108. package/dist/src/datasets/davis-southern-women/index.d.ts +11 -0
  109. package/dist/src/datasets/davis-southern-women/index.d.ts.map +1 -0
  110. package/dist/src/datasets/davis-southern-women/index.js +14 -0
  111. package/dist/src/datasets/davis-southern-women/index.js.map +1 -0
  112. package/dist/src/datasets/davis-southern-women/meta.d.ts +4 -0
  113. package/dist/src/datasets/davis-southern-women/meta.d.ts.map +1 -0
  114. package/dist/src/datasets/davis-southern-women/meta.js +17 -0
  115. package/dist/src/datasets/davis-southern-women/meta.js.map +1 -0
  116. package/dist/src/datasets/dolphins/data.d.ts +3 -0
  117. package/dist/src/datasets/dolphins/data.d.ts.map +1 -0
  118. package/dist/src/datasets/dolphins/data.js +93 -0
  119. package/dist/src/datasets/dolphins/data.js.map +1 -0
  120. package/dist/src/datasets/dolphins/index.d.ts +11 -0
  121. package/dist/src/datasets/dolphins/index.d.ts.map +1 -0
  122. package/dist/src/datasets/dolphins/index.js +14 -0
  123. package/dist/src/datasets/dolphins/index.js.map +1 -0
  124. package/dist/src/datasets/dolphins/meta.d.ts +4 -0
  125. package/dist/src/datasets/dolphins/meta.d.ts.map +1 -0
  126. package/dist/src/datasets/dolphins/meta.js +17 -0
  127. package/dist/src/datasets/dolphins/meta.js.map +1 -0
  128. package/dist/src/datasets/florentine-families/data.d.ts +3 -0
  129. package/dist/src/datasets/florentine-families/data.d.ts.map +1 -0
  130. package/dist/src/datasets/florentine-families/data.js +31 -0
  131. package/dist/src/datasets/florentine-families/data.js.map +1 -0
  132. package/dist/src/datasets/florentine-families/index.d.ts +11 -0
  133. package/dist/src/datasets/florentine-families/index.d.ts.map +1 -0
  134. package/dist/src/datasets/florentine-families/index.js +14 -0
  135. package/dist/src/datasets/florentine-families/index.js.map +1 -0
  136. package/dist/src/datasets/florentine-families/meta.d.ts +4 -0
  137. package/dist/src/datasets/florentine-families/meta.d.ts.map +1 -0
  138. package/dist/src/datasets/florentine-families/meta.js +17 -0
  139. package/dist/src/datasets/florentine-families/meta.js.map +1 -0
  140. package/dist/src/datasets/football/data.d.ts +3 -0
  141. package/dist/src/datasets/football/data.d.ts.map +1 -0
  142. package/dist/src/datasets/football/data.js +210 -0
  143. package/dist/src/datasets/football/data.js.map +1 -0
  144. package/dist/src/datasets/football/index.d.ts +11 -0
  145. package/dist/src/datasets/football/index.d.ts.map +1 -0
  146. package/dist/src/datasets/football/index.js +14 -0
  147. package/dist/src/datasets/football/index.js.map +1 -0
  148. package/dist/src/datasets/football/meta.d.ts +4 -0
  149. package/dist/src/datasets/football/meta.d.ts.map +1 -0
  150. package/dist/src/datasets/football/meta.js +17 -0
  151. package/dist/src/datasets/football/meta.js.map +1 -0
  152. package/dist/src/datasets/hosted.d.ts +7 -0
  153. package/dist/src/datasets/hosted.d.ts.map +1 -0
  154. package/dist/src/datasets/hosted.js +80 -0
  155. package/dist/src/datasets/hosted.js.map +1 -0
  156. package/dist/src/datasets/karate/data.d.ts +3 -0
  157. package/dist/src/datasets/karate/data.d.ts.map +1 -0
  158. package/dist/src/datasets/karate/data.js +30 -0
  159. package/dist/src/datasets/karate/data.js.map +1 -0
  160. package/dist/src/datasets/karate/index.d.ts +11 -0
  161. package/dist/src/datasets/karate/index.d.ts.map +1 -0
  162. package/dist/src/datasets/karate/index.js +14 -0
  163. package/dist/src/datasets/karate/index.js.map +1 -0
  164. package/dist/src/datasets/karate/meta.d.ts +4 -0
  165. package/dist/src/datasets/karate/meta.d.ts.map +1 -0
  166. package/dist/src/datasets/karate/meta.js +22 -0
  167. package/dist/src/datasets/karate/meta.js.map +1 -0
  168. package/dist/src/datasets/knuth-miles/data.d.ts +3 -0
  169. package/dist/src/datasets/knuth-miles/data.d.ts.map +1 -0
  170. package/dist/src/datasets/knuth-miles/data.js +1203 -0
  171. package/dist/src/datasets/knuth-miles/data.js.map +1 -0
  172. package/dist/src/datasets/knuth-miles/index.d.ts +11 -0
  173. package/dist/src/datasets/knuth-miles/index.d.ts.map +1 -0
  174. package/dist/src/datasets/knuth-miles/index.js +14 -0
  175. package/dist/src/datasets/knuth-miles/index.js.map +1 -0
  176. package/dist/src/datasets/knuth-miles/meta.d.ts +4 -0
  177. package/dist/src/datasets/knuth-miles/meta.d.ts.map +1 -0
  178. package/dist/src/datasets/knuth-miles/meta.js +26 -0
  179. package/dist/src/datasets/knuth-miles/meta.js.map +1 -0
  180. package/dist/src/datasets/les-miserables/data.d.ts +3 -0
  181. package/dist/src/datasets/les-miserables/data.d.ts.map +1 -0
  182. package/dist/src/datasets/les-miserables/data.js +117 -0
  183. package/dist/src/datasets/les-miserables/data.js.map +1 -0
  184. package/dist/src/datasets/les-miserables/index.d.ts +11 -0
  185. package/dist/src/datasets/les-miserables/index.d.ts.map +1 -0
  186. package/dist/src/datasets/les-miserables/index.js +14 -0
  187. package/dist/src/datasets/les-miserables/index.js.map +1 -0
  188. package/dist/src/datasets/les-miserables/meta.d.ts +4 -0
  189. package/dist/src/datasets/les-miserables/meta.d.ts.map +1 -0
  190. package/dist/src/datasets/les-miserables/meta.js +21 -0
  191. package/dist/src/datasets/les-miserables/meta.js.map +1 -0
  192. package/dist/src/datasets/openflights/data.d.ts +3 -0
  193. package/dist/src/datasets/openflights/data.d.ts.map +1 -0
  194. package/dist/src/datasets/openflights/data.js +15457 -0
  195. package/dist/src/datasets/openflights/data.js.map +1 -0
  196. package/dist/src/datasets/openflights/index.d.ts +11 -0
  197. package/dist/src/datasets/openflights/index.d.ts.map +1 -0
  198. package/dist/src/datasets/openflights/index.js +14 -0
  199. package/dist/src/datasets/openflights/index.js.map +1 -0
  200. package/dist/src/datasets/openflights/meta.d.ts +4 -0
  201. package/dist/src/datasets/openflights/meta.d.ts.map +1 -0
  202. package/dist/src/datasets/openflights/meta.js +28 -0
  203. package/dist/src/datasets/openflights/meta.js.map +1 -0
  204. package/dist/src/datasets/political-blogs/data.d.ts +3 -0
  205. package/dist/src/datasets/political-blogs/data.d.ts.map +1 -0
  206. package/dist/src/datasets/political-blogs/data.js +4857 -0
  207. package/dist/src/datasets/political-blogs/data.js.map +1 -0
  208. package/dist/src/datasets/political-blogs/index.d.ts +11 -0
  209. package/dist/src/datasets/political-blogs/index.d.ts.map +1 -0
  210. package/dist/src/datasets/political-blogs/index.js +14 -0
  211. package/dist/src/datasets/political-blogs/index.js.map +1 -0
  212. package/dist/src/datasets/political-blogs/meta.d.ts +4 -0
  213. package/dist/src/datasets/political-blogs/meta.d.ts.map +1 -0
  214. package/dist/src/datasets/political-blogs/meta.js +26 -0
  215. package/dist/src/datasets/political-blogs/meta.js.map +1 -0
  216. package/dist/src/datasets/political-books/data.d.ts +3 -0
  217. package/dist/src/datasets/political-books/data.d.ts.map +1 -0
  218. package/dist/src/datasets/political-books/data.js +165 -0
  219. package/dist/src/datasets/political-books/data.js.map +1 -0
  220. package/dist/src/datasets/political-books/index.d.ts +11 -0
  221. package/dist/src/datasets/political-books/index.d.ts.map +1 -0
  222. package/dist/src/datasets/political-books/index.js +14 -0
  223. package/dist/src/datasets/political-books/index.js.map +1 -0
  224. package/dist/src/datasets/political-books/meta.d.ts +4 -0
  225. package/dist/src/datasets/political-books/meta.d.ts.map +1 -0
  226. package/dist/src/datasets/political-books/meta.js +20 -0
  227. package/dist/src/datasets/political-books/meta.js.map +1 -0
  228. package/dist/src/datasets/remote.d.ts +27 -0
  229. package/dist/src/datasets/remote.d.ts.map +1 -0
  230. package/dist/src/datasets/remote.js +30 -0
  231. package/dist/src/datasets/remote.js.map +1 -0
  232. package/dist/src/element.d.ts +20 -0
  233. package/dist/src/element.d.ts.map +1 -0
  234. package/dist/src/element.js +27 -0
  235. package/dist/src/element.js.map +1 -0
  236. package/dist/src/generators/bipartite.d.ts +51 -0
  237. package/dist/src/generators/bipartite.d.ts.map +1 -0
  238. package/dist/src/generators/bipartite.js +99 -0
  239. package/dist/src/generators/bipartite.js.map +1 -0
  240. package/dist/src/generators/block-model.d.ts +75 -0
  241. package/dist/src/generators/block-model.d.ts.map +1 -0
  242. package/dist/src/generators/block-model.js +116 -0
  243. package/dist/src/generators/block-model.js.map +1 -0
  244. package/dist/src/generators/classic.d.ts +208 -0
  245. package/dist/src/generators/classic.d.ts.map +1 -0
  246. package/dist/src/generators/classic.js +437 -0
  247. package/dist/src/generators/classic.js.map +1 -0
  248. package/dist/src/generators/degree-sequence.d.ts +273 -0
  249. package/dist/src/generators/degree-sequence.d.ts.map +1 -0
  250. package/dist/src/generators/degree-sequence.js +646 -0
  251. package/dist/src/generators/degree-sequence.js.map +1 -0
  252. package/dist/src/generators/directed.d.ts +141 -0
  253. package/dist/src/generators/directed.d.ts.map +1 -0
  254. package/dist/src/generators/directed.js +329 -0
  255. package/dist/src/generators/directed.js.map +1 -0
  256. package/dist/src/generators/erdos-renyi.d.ts +58 -0
  257. package/dist/src/generators/erdos-renyi.d.ts.map +1 -0
  258. package/dist/src/generators/erdos-renyi.js +154 -0
  259. package/dist/src/generators/erdos-renyi.js.map +1 -0
  260. package/dist/src/generators/flow.d.ts +153 -0
  261. package/dist/src/generators/flow.d.ts.map +1 -0
  262. package/dist/src/generators/flow.js +346 -0
  263. package/dist/src/generators/flow.js.map +1 -0
  264. package/dist/src/generators/geometric.d.ts +133 -0
  265. package/dist/src/generators/geometric.d.ts.map +1 -0
  266. package/dist/src/generators/geometric.js +495 -0
  267. package/dist/src/generators/geometric.js.map +1 -0
  268. package/dist/src/generators/growth.d.ts +187 -0
  269. package/dist/src/generators/growth.d.ts.map +1 -0
  270. package/dist/src/generators/growth.js +445 -0
  271. package/dist/src/generators/growth.js.map +1 -0
  272. package/dist/src/generators/hyperbolic.d.ts +84 -0
  273. package/dist/src/generators/hyperbolic.d.ts.map +1 -0
  274. package/dist/src/generators/hyperbolic.js +153 -0
  275. package/dist/src/generators/hyperbolic.js.map +1 -0
  276. package/dist/src/generators/index.d.ts +25 -0
  277. package/dist/src/generators/index.d.ts.map +1 -0
  278. package/dist/src/generators/index.js +24 -0
  279. package/dist/src/generators/index.js.map +1 -0
  280. package/dist/src/generators/lattices.d.ts +87 -0
  281. package/dist/src/generators/lattices.d.ts.map +1 -0
  282. package/dist/src/generators/lattices.js +237 -0
  283. package/dist/src/generators/lattices.js.map +1 -0
  284. package/dist/src/generators/lfr.d.ts +55 -0
  285. package/dist/src/generators/lfr.d.ts.map +1 -0
  286. package/dist/src/generators/lfr.js +178 -0
  287. package/dist/src/generators/lfr.js.map +1 -0
  288. package/dist/src/generators/named.d.ts +23 -0
  289. package/dist/src/generators/named.d.ts.map +1 -0
  290. package/dist/src/generators/named.js +191 -0
  291. package/dist/src/generators/named.js.map +1 -0
  292. package/dist/src/generators/preferential-attachment.d.ts +66 -0
  293. package/dist/src/generators/preferential-attachment.d.ts.map +1 -0
  294. package/dist/src/generators/preferential-attachment.js +157 -0
  295. package/dist/src/generators/preferential-attachment.js.map +1 -0
  296. package/dist/src/generators/trees-and-dags.d.ts +53 -0
  297. package/dist/src/generators/trees-and-dags.d.ts.map +1 -0
  298. package/dist/src/generators/trees-and-dags.js +108 -0
  299. package/dist/src/generators/trees-and-dags.js.map +1 -0
  300. package/dist/src/generators/util.d.ts +84 -0
  301. package/dist/src/generators/util.d.ts.map +1 -0
  302. package/dist/src/generators/util.js +138 -0
  303. package/dist/src/generators/util.js.map +1 -0
  304. package/dist/src/generators/variants.d.ts +85 -0
  305. package/dist/src/generators/variants.d.ts.map +1 -0
  306. package/dist/src/generators/variants.js +215 -0
  307. package/dist/src/generators/variants.js.map +1 -0
  308. package/dist/src/generators/weights.d.ts +65 -0
  309. package/dist/src/generators/weights.d.ts.map +1 -0
  310. package/dist/src/generators/weights.js +135 -0
  311. package/dist/src/generators/weights.js.map +1 -0
  312. package/dist/src/index.d.ts +12 -0
  313. package/dist/src/index.d.ts.map +1 -0
  314. package/dist/src/index.js +10 -0
  315. package/dist/src/index.js.map +1 -0
  316. package/dist/src/random/exp.d.ts +23 -0
  317. package/dist/src/random/exp.d.ts.map +1 -0
  318. package/dist/src/random/exp.js +101 -0
  319. package/dist/src/random/exp.js.map +1 -0
  320. package/dist/src/random/log.d.ts +19 -0
  321. package/dist/src/random/log.d.ts.map +1 -0
  322. package/dist/src/random/log.js +83 -0
  323. package/dist/src/random/log.js.map +1 -0
  324. package/dist/src/random/stream.d.ts +93 -0
  325. package/dist/src/random/stream.d.ts.map +1 -0
  326. package/dist/src/random/stream.js +154 -0
  327. package/dist/src/random/stream.js.map +1 -0
  328. package/dist/src/random/threefry.d.ts +19 -0
  329. package/dist/src/random/threefry.d.ts.map +1 -0
  330. package/dist/src/random/threefry.js +43 -0
  331. package/dist/src/random/threefry.js.map +1 -0
  332. package/dist/src/random/trig.d.ts +16 -0
  333. package/dist/src/random/trig.d.ts.map +1 -0
  334. package/dist/src/random/trig.js +78 -0
  335. package/dist/src/random/trig.js.map +1 -0
  336. package/dist/src/types.d.ts +28 -0
  337. package/dist/src/types.d.ts.map +1 -0
  338. package/dist/src/types.js +2 -0
  339. package/dist/src/types.js.map +1 -0
  340. package/package.json +102 -5
  341. package/src/datasets/build.ts +140 -0
  342. package/src/datasets/catalog.ts +35 -0
  343. package/src/datasets/celegans-neural/data.ts +575 -0
  344. package/src/datasets/celegans-neural/index.ts +17 -0
  345. package/src/datasets/celegans-neural/meta.ts +25 -0
  346. package/src/datasets/contiguous-usa/data.ts +164 -0
  347. package/src/datasets/contiguous-usa/index.ts +17 -0
  348. package/src/datasets/contiguous-usa/meta.ts +31 -0
  349. package/src/datasets/davis-southern-women/data.ts +59 -0
  350. package/src/datasets/davis-southern-women/index.ts +17 -0
  351. package/src/datasets/davis-southern-women/meta.ts +20 -0
  352. package/src/datasets/dolphins/data.ts +95 -0
  353. package/src/datasets/dolphins/index.ts +17 -0
  354. package/src/datasets/dolphins/meta.ts +21 -0
  355. package/src/datasets/florentine-families/data.ts +33 -0
  356. package/src/datasets/florentine-families/index.ts +17 -0
  357. package/src/datasets/florentine-families/meta.ts +20 -0
  358. package/src/datasets/football/data.ts +212 -0
  359. package/src/datasets/football/index.ts +17 -0
  360. package/src/datasets/football/meta.ts +20 -0
  361. package/src/datasets/hosted.ts +90 -0
  362. package/src/datasets/karate/data.ts +32 -0
  363. package/src/datasets/karate/index.ts +17 -0
  364. package/src/datasets/karate/meta.ts +25 -0
  365. package/src/datasets/knuth-miles/data.ts +1205 -0
  366. package/src/datasets/knuth-miles/index.ts +17 -0
  367. package/src/datasets/knuth-miles/meta.ts +29 -0
  368. package/src/datasets/les-miserables/data.ts +119 -0
  369. package/src/datasets/les-miserables/index.ts +17 -0
  370. package/src/datasets/les-miserables/meta.ts +24 -0
  371. package/src/datasets/openflights/data.ts +15459 -0
  372. package/src/datasets/openflights/index.ts +17 -0
  373. package/src/datasets/openflights/meta.ts +31 -0
  374. package/src/datasets/political-blogs/data.ts +4859 -0
  375. package/src/datasets/political-blogs/index.ts +17 -0
  376. package/src/datasets/political-blogs/meta.ts +30 -0
  377. package/src/datasets/political-books/data.ts +167 -0
  378. package/src/datasets/political-books/index.ts +17 -0
  379. package/src/datasets/political-books/meta.ts +23 -0
  380. package/src/datasets/remote.ts +42 -0
  381. package/src/element.ts +41 -0
  382. package/src/generators/bipartite.ts +127 -0
  383. package/src/generators/block-model.ts +160 -0
  384. package/src/generators/classic.ts +461 -0
  385. package/src/generators/degree-sequence.ts +807 -0
  386. package/src/generators/directed.ts +418 -0
  387. package/src/generators/erdos-renyi.ts +188 -0
  388. package/src/generators/flow.ts +443 -0
  389. package/src/generators/geometric.ts +591 -0
  390. package/src/generators/growth.ts +532 -0
  391. package/src/generators/hyperbolic.ts +193 -0
  392. package/src/generators/index.ts +133 -0
  393. package/src/generators/lattices.ts +290 -0
  394. package/src/generators/lfr.ts +227 -0
  395. package/src/generators/named.ts +198 -0
  396. package/src/generators/preferential-attachment.ts +188 -0
  397. package/src/generators/trees-and-dags.ts +139 -0
  398. package/src/generators/util.ts +167 -0
  399. package/src/generators/variants.ts +253 -0
  400. package/src/generators/weights.ts +177 -0
  401. package/src/index.ts +12 -0
  402. package/src/random/exp.ts +104 -0
  403. package/src/random/log.ts +86 -0
  404. package/src/random/stream.ts +169 -0
  405. package/src/random/threefry.ts +45 -0
  406. package/src/random/trig.ts +83 -0
  407. package/src/types.ts +28 -0
@@ -0,0 +1,443 @@
1
+ /**
2
+ * Maximum-flow networks: a grid (the image-segmentation shape), a random layered DAG, GENRMF and
3
+ * the AK network. Every one is directed, with integer capacities as its `weights`, a `role` node
4
+ * column and its source and sink.
5
+ */
6
+
7
+ import { detLog } from "../random/log.js";
8
+ import { RandomStream, resolveSeed } from "../random/stream.js";
9
+ import { type SampleGraph } from "../types.js";
10
+ import { bernoulliSegment, checkEdgeCount, checkInt, checkProbability, EdgeBuffer } from "./util.js";
11
+
12
+ /** A maximum-flow instance: a directed graph whose `weights` are integer capacities. */
13
+ export interface FlowNetwork extends SampleGraph {
14
+ /** The source node. */
15
+ readonly source: number;
16
+ /** The sink node. */
17
+ readonly sink: number;
18
+ }
19
+
20
+ /**
21
+ * The largest capacity: 2^24, the last point where every integer is exact in a Float32 weight.
22
+ */
23
+ const MAX_CAPACITY = 2 ** 24;
24
+
25
+ /** The capacity range options of the random flow networks. */
26
+ interface CapacityOptions {
27
+ /** The smallest arc capacity, an integer >= 0; default 1. */
28
+ minCapacity?: number | undefined;
29
+ /** The largest arc capacity, an integer >= minCapacity; default 10. */
30
+ maxCapacity?: number | undefined;
31
+ /** The seed, an integer in [0, 2^53); default 0. */
32
+ seed?: number | undefined;
33
+ }
34
+
35
+ /**
36
+ * The checked capacity range.
37
+ * @param options - the options
38
+ * @param terminalFactor - the terminal arcs carry terminalFactor * maxCapacity, which must stay exact
39
+ * @returns min and max
40
+ */
41
+ function capacityRange(options: CapacityOptions, terminalFactor: number): { min: number; max: number } {
42
+ const min = options.minCapacity ?? 1;
43
+ const max = options.maxCapacity ?? 10;
44
+ checkInt("minCapacity", min, 0, MAX_CAPACITY);
45
+ checkInt("maxCapacity", max, min, Math.floor(MAX_CAPACITY / terminalFactor));
46
+ return { min, max };
47
+ }
48
+
49
+ /**
50
+ * Assemble a flow network.
51
+ * @param n - the node count
52
+ * @param out - the arcs
53
+ * @param capacities - one capacity per arc
54
+ * @param source - the source
55
+ * @param sink - the sink
56
+ * @param columns - node columns besides `role`
57
+ * @returns the network
58
+ */
59
+ function toNetwork(
60
+ n: number,
61
+ out: EdgeBuffer,
62
+ capacities: number[],
63
+ source: number,
64
+ sink: number,
65
+ columns: NonNullable<SampleGraph["nodeColumns"]>,
66
+ ): FlowNetwork {
67
+ const { src, dst } = out.finish();
68
+ const role = new Uint8Array(n);
69
+ role[source] = 1;
70
+ role[sink] = 2;
71
+ return {
72
+ directed: true,
73
+ nodeCount: n,
74
+ src,
75
+ dst,
76
+ weights: Float32Array.from(capacities),
77
+ nodeColumns: { ...columns, role },
78
+ source,
79
+ sink,
80
+ };
81
+ }
82
+
83
+ /**
84
+ * Push the arcs of node (r, c) of a rows x cols grid starting at `base` to its 4-neighbours, in
85
+ * the order right, down, left, up.
86
+ * @param out - the buffer
87
+ * @param base - the grid's first node
88
+ * @param rows - the row count
89
+ * @param cols - the column count
90
+ * @param r - the row
91
+ * @param c - the column
92
+ * @returns how many arcs were pushed
93
+ */
94
+ function gridArcs(out: EdgeBuffer, base: number, rows: number, cols: number, r: number, c: number): number {
95
+ const u = base + r * cols + c;
96
+ const before = out.length;
97
+ if (c + 1 < cols) {
98
+ out.push(u, u + 1);
99
+ }
100
+ if (r + 1 < rows) {
101
+ out.push(u, u + cols);
102
+ }
103
+ if (c > 0) {
104
+ out.push(u, u - 1);
105
+ }
106
+ if (r > 0) {
107
+ out.push(u, u - cols);
108
+ }
109
+ return out.length - before;
110
+ }
111
+
112
+ /** Options of {@link gridFlowNetwork}. */
113
+ export interface GridFlowOptions extends CapacityOptions {
114
+ /** The grid's row count, >= 1. */
115
+ rows: number;
116
+ /** The grid's column count, >= 2. */
117
+ cols: number;
118
+ }
119
+
120
+ /**
121
+ * A grid flow network, the shape of graph-cut image segmentation: node r * cols + c for pixel
122
+ * (r, c), arcs to each 4-neighbour in both directions, listed by node, in the order right, down,
123
+ * left, up; node u draws its arcs' capacities, uniform integers in [minCapacity, maxCapacity],
124
+ * from stream (seed, "grid-flow", u) in that order. Then the source rows * cols with an arc to
125
+ * every left-column node (by row), and every right-column node with an arc to the sink
126
+ * rows * cols + 1 (by row), each of capacity 4 * maxCapacity. Those terminal arcs are never a
127
+ * minimum cut: the arcs from the first column to the second already cut the network with at most
128
+ * rows * maxCapacity. Node columns `x` = c and `y` = r (Float64), the source at x = -1 and the
129
+ * sink at x = cols, both at the middle row; `role` (u8: 0 inner, 1 source, 2 sink). O(rows cols).
130
+ * @param options - rows, cols, minCapacity, maxCapacity and seed
131
+ * @returns the flow network
132
+ */
133
+ export function gridFlowNetwork(options: GridFlowOptions): FlowNetwork {
134
+ const { rows, cols } = options;
135
+ checkInt("rows", rows, 1);
136
+ checkInt("cols", cols, 2);
137
+ const cells = rows * cols;
138
+ checkInt("rows * cols + 2 (the node count)", cells + 2, 0);
139
+ const { min, max } = capacityRange(options, 4);
140
+ const seed = resolveSeed(options.seed);
141
+ const arcs = 2 * (rows * (cols - 1) + cols * (rows - 1)) + 2 * rows;
142
+ checkEdgeCount(arcs);
143
+ const out = new EdgeBuffer(arcs);
144
+ const capacities: number[] = [];
145
+ const stream = new RandomStream(seed, "grid-flow", 0);
146
+ const x = new Float64Array(cells + 2);
147
+ const y = new Float64Array(cells + 2);
148
+ for (let r = 0; r < rows; r++) {
149
+ for (let c = 0; c < cols; c++) {
150
+ const u = r * cols + c;
151
+ x[u] = c;
152
+ y[u] = r;
153
+ stream.reset(u);
154
+ const count = gridArcs(out, 0, rows, cols, r, c);
155
+ for (let i = 0; i < count; i++) {
156
+ capacities.push(min + stream.nextBelow(max - min + 1));
157
+ }
158
+ }
159
+ }
160
+ const source = cells;
161
+ const sink = cells + 1;
162
+ x[source] = -1;
163
+ x[sink] = cols;
164
+ y[source] = (rows - 1) / 2;
165
+ y[sink] = (rows - 1) / 2;
166
+ for (let r = 0; r < rows; r++) {
167
+ out.push(source, r * cols);
168
+ capacities.push(4 * max);
169
+ }
170
+ for (let r = 0; r < rows; r++) {
171
+ out.push(r * cols + cols - 1, sink);
172
+ capacities.push(4 * max);
173
+ }
174
+ return toNetwork(cells + 2, out, capacities, source, sink, { x, y });
175
+ }
176
+
177
+ /** Options of {@link layeredFlowNetwork}. */
178
+ export interface LayeredFlowOptions extends CapacityOptions {
179
+ /** The width of every inner layer, >= 1 each; layer i holds the next `layers[i]` node indices. */
180
+ layers: readonly number[];
181
+ /** The probability of each arc from a node to a node of the next layer. */
182
+ p: number;
183
+ }
184
+
185
+ /** The node layout of a layered flow network. */
186
+ interface LayeredFlowPlan {
187
+ /** starts[i] = the first node of inner layer i; starts[L] = the inner node count. */
188
+ readonly starts: readonly number[];
189
+ /** The inner layer of every inner node. */
190
+ readonly layerOf: Uint32Array;
191
+ /** The arc probability. */
192
+ readonly p: number;
193
+ /** The capacity range. */
194
+ readonly min: number;
195
+ /** The capacity range. */
196
+ readonly max: number;
197
+ /** The capacity of every terminal arc: max * (the widest layer). */
198
+ readonly terminal: number;
199
+ /** The resolved seed. */
200
+ readonly seed: number;
201
+ }
202
+
203
+ /**
204
+ * Check a layered flow network's options and lay out its nodes.
205
+ * @param options - the options
206
+ * @returns the plan
207
+ */
208
+ export function planLayeredFlow(options: LayeredFlowOptions): LayeredFlowPlan {
209
+ const { layers, p } = options;
210
+ checkInt("layers.length", layers.length, 1);
211
+ checkProbability("p", p);
212
+ const starts = [0];
213
+ let widest = 0;
214
+ for (let i = 0; i < layers.length; i++) {
215
+ checkInt(`layers[${i}]`, layers[i], 1);
216
+ starts.push(starts[i] + layers[i]);
217
+ widest = Math.max(widest, layers[i]);
218
+ }
219
+ const inner = starts[layers.length];
220
+ checkInt("the total size + 2 (the node count)", inner + 2, 0);
221
+ const { min, max } = capacityRange(options, widest);
222
+ const layerOf = new Uint32Array(inner);
223
+ for (let i = 0; i < layers.length; i++) {
224
+ layerOf.fill(i, starts[i], starts[i + 1]);
225
+ }
226
+ return { starts, layerOf, p, min, max, terminal: max * widest, seed: resolveSeed(options.seed) };
227
+ }
228
+
229
+ /**
230
+ * Rows [start, end) of the inner arcs of a layered flow network: inner node u of a layer before
231
+ * the last draws from stream (seed, "layered-flow", u) first its arcs to the next layer
232
+ * (ascending, by geometric skipping), then their capacities in the same order.
233
+ * @param plan - the plan
234
+ * @param start - the first inner node
235
+ * @param end - one past the last inner node
236
+ * @param out - receives the arcs
237
+ * @param capacities - receives their capacities
238
+ */
239
+ export function layeredFlowRows(
240
+ plan: LayeredFlowPlan,
241
+ start: number,
242
+ end: number,
243
+ out: EdgeBuffer,
244
+ capacities: number[],
245
+ ): void {
246
+ const { starts, layerOf, p, min, max } = plan;
247
+ const logQ = detLog(1 - p);
248
+ const stream = new RandomStream(plan.seed, "layered-flow", 0);
249
+ const last = starts.length - 2;
250
+ for (let u = start; u < end; u++) {
251
+ const layer = layerOf[u];
252
+ if (layer < last) {
253
+ stream.reset(u);
254
+ const before = out.length;
255
+ bernoulliSegment(stream, p, logQ, u, starts[layer + 1], starts[layer + 2], out);
256
+ for (let i = before; i < out.length; i++) {
257
+ capacities.push(min + stream.nextBelow(max - min + 1));
258
+ }
259
+ }
260
+ }
261
+ }
262
+
263
+ /**
264
+ * A random layered flow network: inner layers as in `randomDagGraph` (arcs only from layer i to
265
+ * layer i + 1, each with probability p, capacities uniform integers in [minCapacity,
266
+ * maxCapacity]), a source feeding every node of the first layer and every node of the last layer
267
+ * feeding a sink. Inner nodes come first, layer by layer; the source is node N and the sink
268
+ * N + 1 (N inner nodes). Arcs: the inner arcs by source node (see {@link layeredFlowRows}), then
269
+ * source -> first-layer nodes ascending, then last-layer nodes -> sink ascending; each terminal
270
+ * arc has capacity maxCapacity * (the widest layer), at least what any one node can pass on.
271
+ * Node column `layer` (u32): inner layer i is i + 1, the source is layer 0 and the sink layer
272
+ * L + 1, so the column is a topological layering of the whole network; `role` (u8). O(N + m).
273
+ * @param options - layers, p, minCapacity, maxCapacity and seed
274
+ * @returns the flow network
275
+ */
276
+ export function layeredFlowNetwork(options: LayeredFlowOptions): FlowNetwork {
277
+ const plan = planLayeredFlow(options);
278
+ const { starts } = plan;
279
+ const L = starts.length - 1;
280
+ const inner = starts[L];
281
+ const out = new EdgeBuffer(inner);
282
+ const capacities: number[] = [];
283
+ layeredFlowRows(plan, 0, inner, out, capacities);
284
+ const source = inner;
285
+ const sink = inner + 1;
286
+ const { terminal } = plan;
287
+ for (let u = starts[0]; u < starts[1]; u++) {
288
+ out.push(source, u);
289
+ capacities.push(terminal);
290
+ }
291
+ for (let u = starts[L - 1]; u < starts[L]; u++) {
292
+ out.push(u, sink);
293
+ capacities.push(terminal);
294
+ }
295
+ const layer = new Uint32Array(inner + 2);
296
+ for (let u = 0; u < inner; u++) {
297
+ layer[u] = plan.layerOf[u] + 1;
298
+ }
299
+ layer[sink] = L + 1;
300
+ return toNetwork(inner + 2, out, capacities, source, sink, { layer });
301
+ }
302
+
303
+ /** Options of {@link genrmfGraph}. */
304
+ export interface GenrmfOptions {
305
+ /** The side of every frame (an a x a grid), >= 1. */
306
+ a: number;
307
+ /** The number of frames, >= 1. */
308
+ b: number;
309
+ /** The smallest capacity between frames, an integer >= 0. */
310
+ c1: number;
311
+ /** The largest capacity between frames, an integer >= c1; arcs inside a frame carry c2 a^2. */
312
+ c2: number;
313
+ /** The seed, an integer in [0, 2^53); default 0. */
314
+ seed?: number | undefined;
315
+ }
316
+
317
+ /**
318
+ * GENRMF, the max-flow family of D. Goldfarb and M. D. Grigoriadis ("A computational comparison
319
+ * of the Dinic and network simplex methods for maximum flow", Annals of Operations Research 13,
320
+ * 81-123, 1988, doi:10.1007/BF02288321) as generated by Tamas Badics's `genrmf` (1991, First
321
+ * DIMACS Implementation Challenge): b frames, each an a x a grid. Node f a^2 + r a + c is (r, c)
322
+ * of frame f. Arcs, frame by frame: the frame's grid arcs to each 4-neighbour in both directions
323
+ * (by node; right, down, left, up) with capacity c2 a^2; then, for f < b - 1, node j of frame f
324
+ * -> node perm_f(j) of frame f + 1 for j ascending, with capacity uniform in [c1, c2]. Stream
325
+ * (seed, "genrmf", f) first draws perm_f, a Fisher-Yates shuffle of 0 .. a^2 - 1 (for i = a^2 - 1
326
+ * down to 1, swap i with nextBelow(i + 1)), then the a^2 capacities in j order. The source is
327
+ * node 0 (the first node of the first frame), the sink the last node of the last frame. Node
328
+ * columns `frame` (u32) and `role` (u8). Badics's own random numbers are not reproduced; the
329
+ * structure is. O(a^2 b).
330
+ * @param options - a, b, c1, c2 and seed
331
+ * @returns the flow network
332
+ */
333
+ export function genrmfGraph(options: GenrmfOptions): FlowNetwork {
334
+ const { a, b, c1, c2 } = options;
335
+ checkInt("a", a, 1);
336
+ checkInt("b", b, 1);
337
+ const side = a * a;
338
+ checkInt("a * a * b (the node count)", side * b, 2);
339
+ checkInt("c1", c1, 0, MAX_CAPACITY);
340
+ checkInt("c2", c2, c1, MAX_CAPACITY);
341
+ if (c2 * side > MAX_CAPACITY) {
342
+ throw new RangeError(`c2 * a * a must be at most 2^24 to stay exact, got ${c2 * side}`);
343
+ }
344
+ const seed = resolveSeed(options.seed);
345
+ const n = side * b;
346
+ const arcs = b * 4 * a * (a - 1) + (b - 1) * side;
347
+ checkEdgeCount(arcs);
348
+ const out = new EdgeBuffer(arcs);
349
+ const capacities: number[] = [];
350
+ const frame = new Uint32Array(n);
351
+ const perm = new Uint32Array(side);
352
+ const stream = new RandomStream(seed, "genrmf", 0);
353
+ for (let f = 0; f < b; f++) {
354
+ const base = f * side;
355
+ frame.fill(f, base, base + side);
356
+ for (let r = 0; r < a; r++) {
357
+ for (let c = 0; c < a; c++) {
358
+ const count = gridArcs(out, base, a, a, r, c);
359
+ for (let i = 0; i < count; i++) {
360
+ capacities.push(c2 * side);
361
+ }
362
+ }
363
+ }
364
+ if (f === b - 1) {
365
+ break;
366
+ }
367
+ stream.reset(f);
368
+ for (let i = 0; i < side; i++) {
369
+ perm[i] = i;
370
+ }
371
+ for (let i = side - 1; i > 0; i--) {
372
+ const j = stream.nextBelow(i + 1);
373
+ const t = perm[i];
374
+ perm[i] = perm[j];
375
+ perm[j] = t;
376
+ }
377
+ for (let j = 0; j < side; j++) {
378
+ out.push(base + j, base + side + perm[j]);
379
+ capacities.push(c1 + stream.nextBelow(c2 - c1 + 1));
380
+ }
381
+ }
382
+ return toNetwork(n, out, capacities, 0, n - 1, { frame });
383
+ }
384
+
385
+ /** Options of {@link akGraph}. */
386
+ export interface AkOptions {
387
+ /** The size parameter, in [1, 499998]: 4k + 6 nodes and 6k + 7 arcs. */
388
+ k: number;
389
+ }
390
+
391
+ /** The capacity of the AK network's terminal arcs, as in igraph's ak-4102.max instance. */
392
+ const AK_BIG = 1000000;
393
+
394
+ /**
395
+ * The AK network of B. V. Cherkassky and A. V. Goldberg ("On implementing the push-relabel method
396
+ * for the maximum flow problem", Algorithmica 19, 390-410, 1997, doi:10.1007/PL00009180), built to
397
+ * be hard for push-relabel. Deterministic; n = 4k + 6 nodes, m = 6k + 7 arcs.
398
+ *
399
+ * Nodes: s = 0, t = 1; part A a_i = 2 + i (i = 0 .. k); a hub chain h = k + 3 .. e = 2k + 3;
400
+ * part B b_i = 2k + 4 + i (i = 0 .. 2k + 1). Arcs, in this order: for i = 0 .. k - 1, a_i ->
401
+ * a_{i+1} (capacity k + 1 - i) then a_i -> h (1); a_k -> e (1), a_k -> h (1); the chain j -> j + 1
402
+ * for j = h .. e - 1 (k + 1); b_i -> b_{i+1} for i = 0 .. 2k (k); the folds b_i -> b_{2k+1-i}
403
+ * (1) for i = 0 .. k - 1; finally s -> a_0, s -> b_0, e -> t and b_{2k+1} -> t, each 1000000.
404
+ * The maximum flow is 2k + 3 and the largest inner capacity k + 1, so k is capped at 499998 to
405
+ * keep the terminal capacity 1000000 from ever binding (every value is then exact in Float32).
406
+ * Node column `role` (u8). O(k).
407
+ * @param options - k
408
+ * @returns the flow network
409
+ */
410
+ export function akGraph(options: AkOptions): FlowNetwork {
411
+ const { k } = options;
412
+ checkInt("k", k, 1, 499998);
413
+ const n = 4 * k + 6;
414
+ const out = new EdgeBuffer(6 * k + 7);
415
+ const capacities: number[] = [];
416
+ const arc = (u: number, v: number, capacity: number): void => {
417
+ out.push(u, v);
418
+ capacities.push(capacity);
419
+ };
420
+ const hub = k + 3;
421
+ const chainEnd = 2 * k + 3;
422
+ const b0 = 2 * k + 4;
423
+ for (let i = 0; i < k; i++) {
424
+ arc(2 + i, 3 + i, k + 1 - i);
425
+ arc(2 + i, hub, 1);
426
+ }
427
+ arc(2 + k, chainEnd, 1);
428
+ arc(2 + k, hub, 1);
429
+ for (let j = hub; j < chainEnd; j++) {
430
+ arc(j, j + 1, k + 1);
431
+ }
432
+ for (let i = 0; i <= 2 * k; i++) {
433
+ arc(b0 + i, b0 + i + 1, k);
434
+ }
435
+ for (let i = 0; i < k; i++) {
436
+ arc(b0 + i, b0 + 2 * k + 1 - i, 1);
437
+ }
438
+ arc(0, 2, AK_BIG);
439
+ arc(0, b0, AK_BIG);
440
+ arc(chainEnd, 1, AK_BIG);
441
+ arc(b0 + 2 * k + 1, 1, AK_BIG);
442
+ return toNetwork(n, out, capacities, 0, 1, {});
443
+ }