@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,445 @@
1
+ /**
2
+ * Sequential growth models: the random recursive tree, forest fire, duplication-divergence,
3
+ * Newman-Watts, Bianconi-Barabasi fitness, the random Apollonian network and Wilson's uniform
4
+ * spanning tree of a grid (a perfect maze). Each draws from one stream (seed, domain, 0): the
5
+ * processes are sequential, so there is no row-parallel form.
6
+ */
7
+ import { detLog } from "../random/log.js";
8
+ import { RandomStream, resolveSeed } from "../random/stream.js";
9
+ import { checkEdgeCount, checkInt, checkProbability, EdgeBuffer, toGraph } from "./util.js";
10
+ import { applyWeights } from "./weights.js";
11
+ /**
12
+ * The random recursive tree (R. T. Smythe and H. M. Mahmoud, "A survey of recursive trees",
13
+ * Theory Probab. Math. Statist. 51, 1-27, 1995): node t = 1 .. n - 1 attaches to a uniform earlier
14
+ * node, drawn as nextBelow(t) from the stream (seed, "recursive-tree", 0). Edge t - 1 is
15
+ * (parent, t), in t order. O(n). Depth about ln n, root degree about ln n.
16
+ * @param options - n and seed
17
+ * @returns the undirected tree
18
+ */
19
+ export function randomRecursiveTreeGraph(options) {
20
+ const { n } = options;
21
+ checkInt("n", n, 1);
22
+ const stream = new RandomStream(resolveSeed(options.seed), "recursive-tree", 0);
23
+ const src = new Uint32Array(n - 1);
24
+ const dst = new Uint32Array(n - 1);
25
+ for (let t = 1; t < n; t++) {
26
+ src[t - 1] = stream.nextBelow(t);
27
+ dst[t - 1] = t;
28
+ }
29
+ return applyWeights({ directed: false, nodeCount: n, src, dst }, options);
30
+ }
31
+ /**
32
+ * Pick `count` of `candidates` uniformly without replacement (a partial Fisher-Yates shuffle in
33
+ * place): the picks are candidates[0 .. count).
34
+ * @param stream - the stream
35
+ * @param candidates - the candidates, reordered in place
36
+ * @param count - how many to pick, <= candidates.length
37
+ */
38
+ function pickPrefix(stream, candidates, count) {
39
+ for (let i = 0; i < count; i++) {
40
+ const j = i + stream.nextBelow(candidates.length - i);
41
+ const t = candidates[i];
42
+ candidates[i] = candidates[j];
43
+ candidates[j] = t;
44
+ }
45
+ }
46
+ /**
47
+ * The forest fire model (J. Leskovec, J. Kleinberg and C. Faloutsos, "Graphs over time:
48
+ * densification laws, shrinking diameters and possible explanations", KDD 2005,
49
+ * doi:10.1145/1081870.1081893). Directed; heavy-tailed degrees, densification, community locality.
50
+ *
51
+ * Node 0 starts alone. Each new node v = 1 .. n - 1 draws an ambassador w = nextBelow(v) and burns
52
+ * breadth-first from it: for each burning node x in burn order, draw x_out = floor(ln(1 - u) / ln p)
53
+ * (geometric, P(x_out >= k) = p^k, mean p / (1 - p)) and then x_in the same way with r p; then pick
54
+ * x_out of x's out-neighbours and then x_in of its in-neighbours uniformly among those not yet
55
+ * burned (adjacency order, partial Fisher-Yates; all of them when there are fewer), and burn them.
56
+ * Burning stops at `maxBurn` nodes. v then links to every burned node: arcs (v, t) in burn order.
57
+ * Edges are listed by v. All draws come from the stream (seed, "forest-fire", 0).
58
+ *
59
+ * Cost: O(sum over burning nodes of their degree), since each burning node's lists are scanned;
60
+ * the edge count explodes for p above about 0.37, which `maxBurn` bounds at n maxBurn arcs.
61
+ * @param options - n, forward, backward, maxBurn and seed
62
+ * @returns the directed graph
63
+ */
64
+ export function forestFireGraph(options) {
65
+ const { n, forward: p, backward: r } = options;
66
+ const maxBurn = options.maxBurn ?? 1000;
67
+ checkInt("n", n, 1);
68
+ if (!(p >= 0 && p < 1)) {
69
+ throw new RangeError(`forward must be a probability in [0, 1), got ${String(p)}`);
70
+ }
71
+ if (!(r >= 0 && r * p < 1)) {
72
+ throw new RangeError(`backward must be >= 0 with backward * forward < 1, got ${String(r)}`);
73
+ }
74
+ checkInt("maxBurn", maxBurn, 1);
75
+ const stream = new RandomStream(resolveSeed(options.seed), "forest-fire", 0);
76
+ const pb = r * p;
77
+ const logForward = detLog(p);
78
+ const logBackward = detLog(pb);
79
+ // ponytail: number[][] adjacency, fine to a few million arcs; a growable CSR beyond
80
+ const out = Array.from({ length: n }, () => []);
81
+ const inn = Array.from({ length: n }, () => []);
82
+ const stamp = new Uint32Array(n);
83
+ const edges = new EdgeBuffer(4 * n);
84
+ const burned = [];
85
+ const burn = (v, list, count) => {
86
+ const candidates = list.filter((t) => stamp[t] !== v);
87
+ const take = Math.min(count, candidates.length, maxBurn - burned.length);
88
+ pickPrefix(stream, candidates, take);
89
+ for (let i = 0; i < take; i++) {
90
+ stamp[candidates[i]] = v;
91
+ burned.push(candidates[i]);
92
+ }
93
+ };
94
+ for (let v = 1; v < n; v++) {
95
+ burned.length = 0;
96
+ const w = stream.nextBelow(v);
97
+ stamp[w] = v;
98
+ burned.push(w);
99
+ for (let head = 0; head < burned.length && burned.length < maxBurn; head++) {
100
+ const x = burned[head];
101
+ const xOut = p === 0 ? 0 : stream.nextSkip(logForward);
102
+ const xIn = pb === 0 ? 0 : stream.nextSkip(logBackward);
103
+ burn(v, out[x], xOut);
104
+ burn(v, inn[x], xIn);
105
+ }
106
+ for (const t of burned) {
107
+ edges.push(v, t);
108
+ out[v].push(t);
109
+ inn[t].push(v);
110
+ }
111
+ }
112
+ return applyWeights(toGraph(n, edges, true), options);
113
+ }
114
+ /**
115
+ * The duplication-divergence model (I. Ispolatov, P. L. Krapivsky and A. Yuryev,
116
+ * "Duplication-divergence model of protein interaction network", Phys. Rev. E 71, 061911, 2005,
117
+ * doi:10.1103/PhysRevE.71.061911), as networkx's `duplication_divergence_graph`: protein-network
118
+ * like, with many nodes sharing neighbours.
119
+ *
120
+ * Start with the edge (0, 1). While there are fewer than n nodes, draw a node x = nextBelow(i) for
121
+ * the next index i, then one float per neighbour of x (in the order they were joined to x): below
122
+ * `retention`, the edge (i, neighbour). If i got at least one edge it is kept, otherwise the attempt
123
+ * is discarded. All draws come from the stream (seed, "duplication-divergence", 0). Edges are
124
+ * listed by new node. Simple and connected.
125
+ *
126
+ * Cost: O(sum of the copied nodes' degrees). Each attempt succeeds with probability at least
127
+ * `retention`; after 1000 n attempts in total it throws a RangeError rather than loop on.
128
+ * @param options - n, retention and seed
129
+ * @returns the undirected graph
130
+ */
131
+ export function duplicationDivergenceGraph(options) {
132
+ const { n, retention } = options;
133
+ checkInt("n", n, 2);
134
+ if (!(retention > 0 && retention <= 1)) {
135
+ throw new RangeError(`retention must be a probability in (0, 1], got ${String(retention)}`);
136
+ }
137
+ const stream = new RandomStream(resolveSeed(options.seed), "duplication-divergence", 0);
138
+ // ponytail: number[][] adjacency, fine to a few million edges; a growable CSR beyond
139
+ const adj = Array.from({ length: n }, () => []);
140
+ const edges = new EdgeBuffer(4 * n);
141
+ edges.push(0, 1);
142
+ adj[0].push(1);
143
+ adj[1].push(0);
144
+ const maxAttempts = 1000 * n;
145
+ let attempts = 0;
146
+ for (let i = 2; i < n;) {
147
+ if (++attempts > maxAttempts) {
148
+ throw new RangeError(`duplicationDivergenceGraph gave up after ${maxAttempts} attempts at ${i} of ${n} nodes: retention ${retention} is too small`);
149
+ }
150
+ const copied = adj[stream.nextBelow(i)];
151
+ for (const t of copied) {
152
+ if (stream.nextFloat() < retention) {
153
+ edges.push(i, t);
154
+ adj[i].push(t);
155
+ }
156
+ }
157
+ for (const t of adj[i]) {
158
+ adj[t].push(i);
159
+ }
160
+ if (adj[i].length > 0) {
161
+ i++;
162
+ }
163
+ }
164
+ return applyWeights(toGraph(n, edges, false), options);
165
+ }
166
+ /**
167
+ * The Newman-Watts small world (M. E. J. Newman and D. J. Watts, "Renormalization group analysis
168
+ * of the small-world network model", Phys. Lett. A 263, 341-346, 1999,
169
+ * doi:10.1016/S0375-9601(99)00757-4): Watts-Strogatz with shortcuts added instead of rewired, so
170
+ * the graph stays connected.
171
+ *
172
+ * The ring lattice of `wattsStrogatzGraph` comes first: edge slot u k/2 + (j - 1) is
173
+ * (u, (u + j) mod n). Then for each slot in order, with source u: draw a float; if it is below p and
174
+ * u is not joined to every other node, redraw w = nextBelow(n) until w is neither u nor a
175
+ * neighbour of u, and append the shortcut (u, w). All draws come from the stream (seed,
176
+ * "newman-watts", 0). O(n k) expected.
177
+ * @param options - n, k, p and seed
178
+ * @returns the undirected graph
179
+ */
180
+ export function newmanWattsGraph(options) {
181
+ const { n, k, p } = options;
182
+ checkInt("k", k, 2);
183
+ if (k % 2 !== 0) {
184
+ throw new RangeError(`k must be even, got ${k}`);
185
+ }
186
+ checkInt("n", n, k + 1);
187
+ checkProbability("p", p);
188
+ const half = k / 2;
189
+ const ring = n * half;
190
+ checkEdgeCount(2 * ring);
191
+ const edges = new EdgeBuffer(ring + Math.ceil(ring * p + 6 * Math.sqrt(ring) + 16));
192
+ const degree = new Uint32Array(n).fill(k);
193
+ // ponytail: a Set of u * n + v keys, like wattsStrogatzGraph; a hashed typed table beyond millions
194
+ const present = new Set();
195
+ const key = (a, b) => (a < b ? a * n + b : b * n + a);
196
+ for (let u = 0; u < n; u++) {
197
+ for (let j = 1; j <= half; j++) {
198
+ const v = (u + j) % n;
199
+ edges.push(u, v);
200
+ present.add(key(u, v));
201
+ }
202
+ }
203
+ const stream = new RandomStream(resolveSeed(options.seed), "newman-watts", 0);
204
+ for (let slot = 0; slot < ring; slot++) {
205
+ const u = edges.src[slot];
206
+ if (stream.nextFloat() >= p || degree[u] >= n - 1) {
207
+ continue;
208
+ }
209
+ let w = stream.nextBelow(n);
210
+ while (w === u || present.has(key(u, w))) {
211
+ w = stream.nextBelow(n);
212
+ }
213
+ edges.push(u, w);
214
+ present.add(key(u, w));
215
+ degree[u]++;
216
+ degree[w]++;
217
+ }
218
+ return applyWeights(toGraph(n, edges, false), options);
219
+ }
220
+ /**
221
+ * The Bianconi-Barabasi fitness model (G. Bianconi and A.-L. Barabasi, "Competition and
222
+ * multiscaling in evolving networks", Europhys. Lett. 54, 436-442, 2001,
223
+ * doi:10.1209/epl/i2001-00260-6): preferential attachment weighted by fitness, so a fit latecomer
224
+ * can overtake older hubs ("fit get richer").
225
+ *
226
+ * Start from the clique on nodes 0 .. m, edges (a, b) for a < b in lexicographic order. Each new
227
+ * node s = m + 1 .. n - 1 picks m distinct existing nodes, one at a time, with probability
228
+ * proportional to fitness_i * degree_i among those not yet picked: x = nextFloat() * total, then a
229
+ * descent of a Fenwick tree over the Float64 weights. Edges (s, t) follow in pick order. Draws
230
+ * come from the stream (seed, "bianconi-barabasi", 0). O(n m log n). Emits the Float64 node column
231
+ * `fitness`.
232
+ * @param options - n, m, fitness and seed
233
+ * @returns the undirected graph
234
+ */
235
+ export function bianconiBarabasiGraph(options) {
236
+ const { n, m } = options;
237
+ checkInt("m", m, 1);
238
+ checkInt("n", n, m + 1);
239
+ const seed = resolveSeed(options.seed);
240
+ checkEdgeCount((m * (m + 1)) / 2 + (n - m - 1) * m);
241
+ const fitness = new Float64Array(n);
242
+ if (options.fitness === undefined) {
243
+ const draw = new RandomStream(seed, "fitness", 0);
244
+ for (let i = 0; i < n; i++) {
245
+ draw.reset(i);
246
+ fitness[i] = 1 - draw.nextFloat();
247
+ }
248
+ }
249
+ else {
250
+ if (options.fitness.length !== n) {
251
+ throw new RangeError(`fitness must have n = ${n} values, got ${options.fitness.length}`);
252
+ }
253
+ for (let i = 0; i < n; i++) {
254
+ const f = options.fitness[i];
255
+ if (!(f > 0 && Number.isFinite(f))) {
256
+ throw new RangeError(`fitness[${i}] must be finite and positive, got ${String(f)}`);
257
+ }
258
+ fitness[i] = f;
259
+ }
260
+ }
261
+ const edges = new EdgeBuffer((m * (m + 1)) / 2 + (n - m - 1) * m);
262
+ const degree = new Uint32Array(n);
263
+ for (let a = 0; a <= m; a++) {
264
+ for (let b = a + 1; b <= m; b++) {
265
+ edges.push(a, b);
266
+ }
267
+ degree[a] = m;
268
+ }
269
+ // Fenwick tree over weight[i] = fitness[i] * degree[i] (1-based internally)
270
+ const weight = new Float64Array(n);
271
+ const tree = new Float64Array(n + 1);
272
+ const add = (i, delta) => {
273
+ weight[i] += delta;
274
+ for (let j = i + 1; j <= n; j += j & -j) {
275
+ tree[j] += delta;
276
+ }
277
+ };
278
+ let top = 1;
279
+ while (top * 2 <= n) {
280
+ top *= 2;
281
+ }
282
+ const find = (x, limit) => {
283
+ let pos = 0;
284
+ let rest = x;
285
+ for (let step = top; step >= 1; step = Math.floor(step / 2)) {
286
+ if (pos + step <= n && tree[pos + step] <= rest) {
287
+ pos += step;
288
+ rest -= tree[pos];
289
+ }
290
+ }
291
+ // rounding guard: land on a node with weight, below the newcomer
292
+ pos = Math.min(pos, limit - 1);
293
+ while (weight[pos] === 0) {
294
+ pos--;
295
+ }
296
+ return pos;
297
+ };
298
+ let total = 0;
299
+ for (let i = 0; i <= m; i++) {
300
+ add(i, fitness[i] * m);
301
+ total += fitness[i] * m;
302
+ }
303
+ const stream = new RandomStream(seed, "bianconi-barabasi", 0);
304
+ const picked = new Uint32Array(m);
305
+ for (let s = m + 1; s < n; s++) {
306
+ let remaining = total;
307
+ for (let i = 0; i < m; i++) {
308
+ const t = find(stream.nextFloat() * remaining, s);
309
+ picked[i] = t;
310
+ remaining -= weight[t];
311
+ add(t, -weight[t]);
312
+ }
313
+ for (let i = 0; i < m; i++) {
314
+ const t = picked[i];
315
+ edges.push(s, t);
316
+ degree[t]++;
317
+ add(t, fitness[t] * degree[t]);
318
+ }
319
+ degree[s] = m;
320
+ add(s, fitness[s] * m);
321
+ total = 0;
322
+ // recompute the total from the tree's roots so it never drifts from the tree
323
+ for (let j = n; j > 0; j -= j & -j) {
324
+ total += tree[j];
325
+ }
326
+ }
327
+ return applyWeights(toGraph(n, edges, false, { fitness }), options);
328
+ }
329
+ /**
330
+ * The random Apollonian network (T. Zhou, G. Yan and B.-H. Wang, "Maximal planar networks with
331
+ * large clustering coefficient and power-law degree distribution", Phys. Rev. E 71, 046141, 2005,
332
+ * doi:10.1103/PhysRevE.71.046141; the deterministic one is J. S. Andrade et al., Phys. Rev. Lett. 94,
333
+ * 018702, 2005): maximal planar, power-law degrees, high clustering.
334
+ *
335
+ * Start from the triangle 0, 1, 2 (edges (0, 1), (0, 2), (1, 2)) whose inner face is face 0; the
336
+ * outer face is never split. Each new node v = 3 .. n - 1 picks face f = nextBelow(faceCount) =
337
+ * (a, b, c), adds the edges (v, a), (v, b), (v, c), and splits f: face f becomes (a, b, v), and
338
+ * (b, c, v) and (a, c, v) are appended. Draws come from the stream (seed, "apollonian", 0).
339
+ * 3n - 6 edges. O(n).
340
+ * @param options - n and seed
341
+ * @returns the undirected graph
342
+ */
343
+ export function randomApollonianGraph(options) {
344
+ const { n } = options;
345
+ checkInt("n", n, 3);
346
+ const m = 3 * n - 6;
347
+ checkEdgeCount(m);
348
+ const stream = new RandomStream(resolveSeed(options.seed), "apollonian", 0);
349
+ const faces = 2 * n - 5;
350
+ const fa = new Uint32Array(faces);
351
+ const fb = new Uint32Array(faces);
352
+ const fc = new Uint32Array(faces);
353
+ fa[0] = 0;
354
+ fb[0] = 1;
355
+ fc[0] = 2;
356
+ let faceCount = 1;
357
+ const src = new Uint32Array(m);
358
+ const dst = new Uint32Array(m);
359
+ src.set([0, 0, 1]);
360
+ dst.set([1, 2, 2]);
361
+ let e = 3;
362
+ for (let v = 3; v < n; v++) {
363
+ const f = stream.nextBelow(faceCount);
364
+ const a = fa[f];
365
+ const b = fb[f];
366
+ const c = fc[f];
367
+ src.fill(v, e, e + 3);
368
+ dst[e++] = a;
369
+ dst[e++] = b;
370
+ dst[e++] = c;
371
+ fc[f] = v;
372
+ fa[faceCount] = b;
373
+ fb[faceCount] = c;
374
+ fc[faceCount++] = v;
375
+ fa[faceCount] = a;
376
+ fb[faceCount] = c;
377
+ fc[faceCount++] = v;
378
+ }
379
+ return applyWeights({ directed: false, nodeCount: n, src, dst }, options);
380
+ }
381
+ /**
382
+ * A uniform spanning tree of the rows x cols grid, a perfect maze, by Wilson's algorithm
383
+ * (D. B. Wilson, "Generating random spanning trees more quickly than the cover time", STOC 1996,
384
+ * doi:10.1145/237814.237880): loop-erased random walks.
385
+ *
386
+ * Node (r, c) is index r cols + c. The root is node 0. For each start node in index order that is
387
+ * not yet in the tree, walk until the tree is hit, each step to a uniform grid neighbour
388
+ * (candidates in the order left, right, up, down; nextBelow(count)), remembering only the last exit
389
+ * from each node (which erases the loops); then add the path: edges (u, next(u)) from the start to
390
+ * the tree, in that order. Draws come from the stream (seed, "wilson", 0). rows cols - 1 edges.
391
+ * Float64 node columns `x` = column and `y` = row. Expected cost is the mean hitting time of the
392
+ * root, about O(n log n) on a grid.
393
+ * @param options - rows, cols and seed
394
+ * @returns the undirected tree
395
+ */
396
+ export function wilsonMazeGraph(options) {
397
+ const { rows, cols } = options;
398
+ checkInt("rows", rows, 1);
399
+ checkInt("cols", cols, 1);
400
+ const n = rows * cols;
401
+ checkInt("rows * cols", n, 1);
402
+ const stream = new RandomStream(resolveSeed(options.seed), "wilson", 0);
403
+ const inTree = new Uint8Array(n);
404
+ const next = new Uint32Array(n);
405
+ const src = new Uint32Array(n - 1);
406
+ const dst = new Uint32Array(n - 1);
407
+ const options4 = new Uint32Array(4);
408
+ inTree[0] = 1;
409
+ let e = 0;
410
+ for (let start = 1; start < n; start++) {
411
+ let u = start;
412
+ while (inTree[u] === 0) {
413
+ const r = Math.floor(u / cols);
414
+ const c = u - r * cols;
415
+ let count = 0;
416
+ if (c > 0) {
417
+ options4[count++] = u - 1;
418
+ }
419
+ if (c + 1 < cols) {
420
+ options4[count++] = u + 1;
421
+ }
422
+ if (r > 0) {
423
+ options4[count++] = u - cols;
424
+ }
425
+ if (r + 1 < rows) {
426
+ options4[count++] = u + cols;
427
+ }
428
+ next[u] = options4[stream.nextBelow(count)];
429
+ u = next[u];
430
+ }
431
+ for (u = start; inTree[u] === 0; u = next[u]) {
432
+ inTree[u] = 1;
433
+ src[e] = u;
434
+ dst[e++] = next[u];
435
+ }
436
+ }
437
+ const x = new Float64Array(n);
438
+ const y = new Float64Array(n);
439
+ for (let i = 0; i < n; i++) {
440
+ y[i] = Math.floor(i / cols);
441
+ x[i] = i - y[i] * cols;
442
+ }
443
+ return applyWeights({ directed: false, nodeCount: n, src, dst, nodeColumns: { x, y } }, options);
444
+ }
445
+ //# sourceMappingURL=growth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"growth.js","sourceRoot":"","sources":["../../../src/generators/growth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Random hyperbolic graphs (D. Krioukov, F. Papadopoulos, M. Kitsak, A. Vahdat and M. Boguna,
3
+ * "Hyperbolic geometry of complex networks", Phys. Rev. E 82, 036106, 2010,
4
+ * doi:10.1103/PhysRevE.82.036106): power-law degrees, high clustering and a native 2D embedding.
5
+ */
6
+ import { type SampleGraph } from "../types.js";
7
+ import { EdgeBuffer } from "./util.js";
8
+ import { type WeightOptions } from "./weights.js";
9
+ /** Options of {@link hyperbolicGraph}. */
10
+ export interface HyperbolicOptions extends WeightOptions {
11
+ /** The node count, in [0, 20000]. */
12
+ n: number;
13
+ /** The target mean degree, a finite number > 0 (approximate: see {@link hyperbolicGraph}). */
14
+ averageDegree: number;
15
+ /** The power-law exponent gamma of the degree distribution, a finite number > 2. */
16
+ exponent: number;
17
+ /** The temperature T in [0, 1); 0 (default) is the threshold model, higher T lowers clustering. */
18
+ temperature?: number | undefined;
19
+ /** The seed, an integer in [0, 2^53); default 0. */
20
+ seed?: number | undefined;
21
+ }
22
+ /** The checked options, the disk radius and the points. */
23
+ interface HyperbolicPlan {
24
+ readonly n: number;
25
+ readonly seed: number;
26
+ readonly temperature: number;
27
+ /** The disk radius R. */
28
+ readonly R: number;
29
+ readonly coshR: number;
30
+ readonly cosT: Float64Array<ArrayBuffer>;
31
+ readonly sinT: Float64Array<ArrayBuffer>;
32
+ readonly coshr: Float64Array<ArrayBuffer>;
33
+ readonly sinhr: Float64Array<ArrayBuffer>;
34
+ readonly x: Float64Array<ArrayBuffer>;
35
+ readonly y: Float64Array<ArrayBuffer>;
36
+ readonly radius: Float64Array<ArrayBuffer>;
37
+ }
38
+ /**
39
+ * Check the options, compute the disk radius and draw the points.
40
+ * @param options - the options
41
+ * @returns the plan
42
+ */
43
+ export declare function planHyperbolic(options: HyperbolicOptions): HyperbolicPlan;
44
+ /**
45
+ * Rows [start, end) of the hyperbolic graph: row u holds the pairs (u, v), v = u + 1 .. n - 1 in
46
+ * ascending v, with cosh d = cosh r_u cosh r_v - sinh r_u sinh r_v cos(theta_u - theta_v) (the
47
+ * cosine of the angle difference expanded from the stored cosines and sines). At T = 0 the pair is
48
+ * an edge iff cosh d < cosh R (no draws). At T > 0 row u draws one nextFloat() t per pair from
49
+ * stream (seed, "hyperbolic", u) and the pair is an edge iff t < 1 / (1 + exp((d - R) / (2 T))),
50
+ * decided as acosh(cosh d) < R + 2 T ln((1 - t) / t) with no exp. Any split of [0, n) into
51
+ * consecutive ranges gives the whole graph.
52
+ * @param plan - the checked options and points
53
+ * @param start - the first row
54
+ * @param end - one past the last row
55
+ * @param out - receives the edges
56
+ */
57
+ export declare function hyperbolicRows(plan: HyperbolicPlan, start: number, end: number, out: EdgeBuffer): void;
58
+ /**
59
+ * A random hyperbolic graph (Krioukov et al. 2010): n points in a hyperbolic disk of radius R,
60
+ * angles uniform and radii with density proportional to sinh(alpha r), alpha = (gamma - 1) / 2,
61
+ * so the degrees follow a power law with exponent gamma. At temperature 0 two nodes are joined iff
62
+ * their hyperbolic distance is below R; at T > 0 with probability 1 / (1 + exp((d - R) / (2 T))).
63
+ *
64
+ * R comes from the paper's approximation of the mean degree, R = 2 ln(2 xi^2 n / (pi k)) with
65
+ * xi = alpha / (alpha - 1/2), times (pi T / sin(pi T)) inside the logarithm for T > 0. It is an
66
+ * approximation, so the measured mean degree only lands near `averageDegree`: measured at n = 3000
67
+ * and 10000, within about 10% for exponent >= 2.5 and T <= 0.7, but about 0.6x at exponent 2.2 and
68
+ * about 0.5x at T = 0.9 (the approximation degrades as gamma approaches 2 and T approaches 1).
69
+ *
70
+ * Node i draws its angle theta = 2 pi u and then its radius r = acosh(1 + (cosh(alpha R) - 1) u') /
71
+ * alpha (inverse CDF) from stream (seed, "hyperbolic-points", i); the pairs are decided by
72
+ * {@link hyperbolicRows}. Edges are the pairs (u, v), u < v, ascending u then v. Node columns (all
73
+ * Float64Array): `x`, `y` (the native polar embedding r cos theta, r sin theta) and `radius` (r).
74
+ *
75
+ * Cost: O(n^2) pairs (and one draw per pair at T > 0), so n is capped at 20000.
76
+ * ponytail: naive pair loop, n <= 20000; the band algorithm of M. von Looz, H. Meyerhenke and
77
+ * R. Prutkin, "Generating random hyperbolic graphs in subquadratic time", ISAAC 2015,
78
+ * doi:10.1007/978-3-662-48971-0_40, is the upgrade path.
79
+ * @param options - n, averageDegree, exponent, temperature and seed
80
+ * @returns the undirected graph
81
+ */
82
+ export declare function hyperbolicGraph(options: HyperbolicOptions): SampleGraph;
83
+ export {};
84
+ //# sourceMappingURL=hyperbolic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hyperbolic.d.ts","sourceRoot":"","sources":["../../../src/generators/hyperbolic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAY,UAAU,EAAW,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAKhE,0CAA0C;AAC1C,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACpD,qCAAqC;IACrC,CAAC,EAAE,MAAM,CAAC;IACV,8FAA8F;IAC9F,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,2DAA2D;AAC3D,UAAU,cAAc;IACpB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,yBAAyB;IACzB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAC1C,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;CAC9C;AAoBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAwDzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAmBtG;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,WAAW,CAKvE"}