react-cheminfo 0.75.0 → 0.77.0

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 (342) hide show
  1. package/README.md +141 -31
  2. package/lib/card/core/cardAddress.d.ts +19 -2
  3. package/lib/card/core/cardAddress.d.ts.map +1 -1
  4. package/lib/card/core/cardAddress.js +35 -2
  5. package/lib/card/core/cardAddress.js.map +1 -1
  6. package/lib/card/core/cardPageUrl.d.ts +7 -1
  7. package/lib/card/core/cardPageUrl.d.ts.map +1 -1
  8. package/lib/card/core/cardPageUrl.js +4 -2
  9. package/lib/card/core/cardPageUrl.js.map +1 -1
  10. package/lib/card/core/index.d.ts +1 -1
  11. package/lib/card/core/index.d.ts.map +1 -1
  12. package/lib/card/core/index.js +1 -1
  13. package/lib/card/core/index.js.map +1 -1
  14. package/lib/credits/core/credits.d.ts +30 -0
  15. package/lib/credits/core/credits.d.ts.map +1 -1
  16. package/lib/credits/core/credits.js +35 -0
  17. package/lib/credits/core/credits.js.map +1 -1
  18. package/lib/download/core/copySvg.d.ts +12 -0
  19. package/lib/download/core/copySvg.d.ts.map +1 -0
  20. package/lib/download/core/copySvg.js +38 -0
  21. package/lib/download/core/copySvg.js.map +1 -0
  22. package/lib/download/core/downloadFigure.d.ts +12 -1
  23. package/lib/download/core/downloadFigure.d.ts.map +1 -1
  24. package/lib/download/core/downloadFigure.js +21 -0
  25. package/lib/download/core/downloadFigure.js.map +1 -1
  26. package/lib/download/core/figureDpi.d.ts +59 -0
  27. package/lib/download/core/figureDpi.d.ts.map +1 -0
  28. package/lib/download/core/figureDpi.js +75 -0
  29. package/lib/download/core/figureDpi.js.map +1 -0
  30. package/lib/download/core/figurePng.d.ts +4 -1
  31. package/lib/download/core/figurePng.d.ts.map +1 -1
  32. package/lib/download/core/figurePng.js +11 -2
  33. package/lib/download/core/figurePng.js.map +1 -1
  34. package/lib/download/core/index.d.ts +5 -1
  35. package/lib/download/core/index.d.ts.map +1 -1
  36. package/lib/download/core/index.js +4 -1
  37. package/lib/download/core/index.js.map +1 -1
  38. package/lib/download/core/pngDpi.d.ts +22 -0
  39. package/lib/download/core/pngDpi.d.ts.map +1 -0
  40. package/lib/download/core/pngDpi.js +79 -0
  41. package/lib/download/core/pngDpi.js.map +1 -0
  42. package/lib/download/ui/FigureDownloadPanel.d.ts +13 -0
  43. package/lib/download/ui/FigureDownloadPanel.d.ts.map +1 -1
  44. package/lib/download/ui/FigureDownloadPanel.js +18 -34
  45. package/lib/download/ui/FigureDownloadPanel.js.map +1 -1
  46. package/lib/download/ui/figureDownloadHint.d.ts +5 -0
  47. package/lib/download/ui/figureDownloadHint.d.ts.map +1 -1
  48. package/lib/download/ui/figureDownloadHint.js +8 -0
  49. package/lib/download/ui/figureDownloadHint.js.map +1 -1
  50. package/lib/download/ui/figureDownloadOptions.d.ts +84 -0
  51. package/lib/download/ui/figureDownloadOptions.d.ts.map +1 -0
  52. package/lib/download/ui/figureDownloadOptions.js +2 -0
  53. package/lib/download/ui/figureDownloadOptions.js.map +1 -0
  54. package/lib/download/ui/resolutionChoices.d.ts +27 -0
  55. package/lib/download/ui/resolutionChoices.d.ts.map +1 -0
  56. package/lib/download/ui/resolutionChoices.js +48 -0
  57. package/lib/download/ui/resolutionChoices.js.map +1 -0
  58. package/lib/download/ui/useFigureActions.d.ts +4 -1
  59. package/lib/download/ui/useFigureActions.d.ts.map +1 -1
  60. package/lib/download/ui/useFigureActions.js +17 -8
  61. package/lib/download/ui/useFigureActions.js.map +1 -1
  62. package/lib/download/ui/useFigureDownload.d.ts +2 -55
  63. package/lib/download/ui/useFigureDownload.d.ts.map +1 -1
  64. package/lib/download/ui/useFigureDownload.js +45 -13
  65. package/lib/download/ui/useFigureDownload.js.map +1 -1
  66. package/lib/ecosystem/core/sites.d.ts.map +1 -1
  67. package/lib/ecosystem/core/sites.js +14 -0
  68. package/lib/ecosystem/core/sites.js.map +1 -1
  69. package/lib/ecosystem/core/types.d.ts +1 -1
  70. package/lib/ecosystem/core/types.d.ts.map +1 -1
  71. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
  72. package/lib/ecosystem/ui/glyphs.js +3 -0
  73. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  74. package/lib/i18n/core/chromeCatalog.d.ts +1 -1
  75. package/lib/i18n/core/chromeCatalog.d.ts.map +1 -1
  76. package/lib/ir/core/bandAssignments.d.ts.map +1 -1
  77. package/lib/ir/core/bandAssignments.js +27 -0
  78. package/lib/ir/core/bandAssignments.js.map +1 -1
  79. package/lib/ir/ui/BandRow.d.ts +4 -4
  80. package/lib/ir/ui/BandRow.d.ts.map +1 -1
  81. package/lib/ir/ui/BandRow.js +41 -14
  82. package/lib/ir/ui/BandRow.js.map +1 -1
  83. package/lib/locales/de.json +32 -1
  84. package/lib/locales/en.json +32 -1
  85. package/lib/locales/es.json +32 -1
  86. package/lib/locales/fr.json +32 -1
  87. package/lib/locales/it.json +32 -1
  88. package/lib/molecule3d/ui/Molecule3DStage.d.ts +4 -33
  89. package/lib/molecule3d/ui/Molecule3DStage.d.ts.map +1 -1
  90. package/lib/molecule3d/ui/Molecule3DStage.js +3 -37
  91. package/lib/molecule3d/ui/Molecule3DStage.js.map +1 -1
  92. package/lib/osiris/core/barGeometry.d.ts +42 -0
  93. package/lib/osiris/core/barGeometry.d.ts.map +1 -0
  94. package/lib/osiris/core/barGeometry.js +46 -0
  95. package/lib/osiris/core/barGeometry.js.map +1 -0
  96. package/lib/osiris/core/computeProperties.d.ts +42 -0
  97. package/lib/osiris/core/computeProperties.d.ts.map +1 -0
  98. package/lib/osiris/core/computeProperties.js +115 -0
  99. package/lib/osiris/core/computeProperties.js.map +1 -0
  100. package/lib/osiris/core/constants.d.ts +70 -0
  101. package/lib/osiris/core/constants.d.ts.map +1 -0
  102. package/lib/osiris/core/constants.js +99 -0
  103. package/lib/osiris/core/constants.js.map +1 -0
  104. package/lib/osiris/core/fitness.d.ts +32 -0
  105. package/lib/osiris/core/fitness.d.ts.map +1 -0
  106. package/lib/osiris/core/fitness.js +48 -0
  107. package/lib/osiris/core/fitness.js.map +1 -0
  108. package/lib/osiris/core/index.d.ts +29 -0
  109. package/lib/osiris/core/index.d.ts.map +1 -0
  110. package/lib/osiris/core/index.js +19 -0
  111. package/lib/osiris/core/index.js.map +1 -0
  112. package/lib/osiris/core/poolSize.d.ts +17 -0
  113. package/lib/osiris/core/poolSize.d.ts.map +1 -0
  114. package/lib/osiris/core/poolSize.js +22 -0
  115. package/lib/osiris/core/poolSize.js.map +1 -0
  116. package/lib/osiris/core/poolTypes.d.ts +140 -0
  117. package/lib/osiris/core/poolTypes.d.ts.map +1 -0
  118. package/lib/osiris/core/poolTypes.js +12 -0
  119. package/lib/osiris/core/poolTypes.js.map +1 -0
  120. package/lib/osiris/core/predictIdCode.d.ts +39 -0
  121. package/lib/osiris/core/predictIdCode.d.ts.map +1 -0
  122. package/lib/osiris/core/predictIdCode.js +54 -0
  123. package/lib/osiris/core/predictIdCode.js.map +1 -0
  124. package/lib/osiris/core/predictProtocol.d.ts +67 -0
  125. package/lib/osiris/core/predictProtocol.d.ts.map +1 -0
  126. package/lib/osiris/core/predictProtocol.js +29 -0
  127. package/lib/osiris/core/predictProtocol.js.map +1 -0
  128. package/lib/osiris/core/predictionPool.d.ts +23 -0
  129. package/lib/osiris/core/predictionPool.d.ts.map +1 -0
  130. package/lib/osiris/core/predictionPool.js +186 -0
  131. package/lib/osiris/core/predictionPool.js.map +1 -0
  132. package/lib/osiris/core/predictionQueue.d.ts +46 -0
  133. package/lib/osiris/core/predictionQueue.d.ts.map +1 -0
  134. package/lib/osiris/core/predictionQueue.js +57 -0
  135. package/lib/osiris/core/predictionQueue.js.map +1 -0
  136. package/lib/osiris/core/predictors.d.ts +62 -0
  137. package/lib/osiris/core/predictors.d.ts.map +1 -0
  138. package/lib/osiris/core/predictors.js +100 -0
  139. package/lib/osiris/core/predictors.js.map +1 -0
  140. package/lib/osiris/core/propertyKeys.d.ts +32 -0
  141. package/lib/osiris/core/propertyKeys.d.ts.map +1 -0
  142. package/lib/osiris/core/propertyKeys.js +44 -0
  143. package/lib/osiris/core/propertyKeys.js.map +1 -0
  144. package/lib/osiris/core/riskAppearance.d.ts +60 -0
  145. package/lib/osiris/core/riskAppearance.d.ts.map +1 -0
  146. package/lib/osiris/core/riskAppearance.js +59 -0
  147. package/lib/osiris/core/riskAppearance.js.map +1 -0
  148. package/lib/osiris/core/riskDetail.d.ts +22 -0
  149. package/lib/osiris/core/riskDetail.d.ts.map +1 -0
  150. package/lib/osiris/core/riskDetail.js +86 -0
  151. package/lib/osiris/core/riskDetail.js.map +1 -0
  152. package/lib/osiris/core/riskDetailRequest.d.ts +31 -0
  153. package/lib/osiris/core/riskDetailRequest.d.ts.map +1 -0
  154. package/lib/osiris/core/riskDetailRequest.js +49 -0
  155. package/lib/osiris/core/riskDetailRequest.js.map +1 -0
  156. package/lib/osiris/core/riskFindings.d.ts +26 -0
  157. package/lib/osiris/core/riskFindings.d.ts.map +1 -0
  158. package/lib/osiris/core/riskFindings.js +79 -0
  159. package/lib/osiris/core/riskFindings.js.map +1 -0
  160. package/lib/osiris/core/runPredictionJob.d.ts +20 -0
  161. package/lib/osiris/core/runPredictionJob.d.ts.map +1 -0
  162. package/lib/osiris/core/runPredictionJob.js +43 -0
  163. package/lib/osiris/core/runPredictionJob.js.map +1 -0
  164. package/lib/osiris/core/scales.d.ts +70 -0
  165. package/lib/osiris/core/scales.d.ts.map +1 -0
  166. package/lib/osiris/core/scales.js +185 -0
  167. package/lib/osiris/core/scales.js.map +1 -0
  168. package/lib/osiris/core/types.d.ts +91 -0
  169. package/lib/osiris/core/types.d.ts.map +1 -0
  170. package/lib/osiris/core/types.js +19 -0
  171. package/lib/osiris/core/types.js.map +1 -0
  172. package/lib/osiris/core/valuation.d.ts +28 -0
  173. package/lib/osiris/core/valuation.d.ts.map +1 -0
  174. package/lib/osiris/core/valuation.js +39 -0
  175. package/lib/osiris/core/valuation.js.map +1 -0
  176. package/lib/osiris/ui/PropertyBar.d.ts +27 -0
  177. package/lib/osiris/ui/PropertyBar.d.ts.map +1 -0
  178. package/lib/osiris/ui/PropertyBar.js +27 -0
  179. package/lib/osiris/ui/PropertyBar.js.map +1 -0
  180. package/lib/osiris/ui/PropertyPanel.d.ts +91 -0
  181. package/lib/osiris/ui/PropertyPanel.d.ts.map +1 -0
  182. package/lib/osiris/ui/PropertyPanel.js +77 -0
  183. package/lib/osiris/ui/PropertyPanel.js.map +1 -0
  184. package/lib/osiris/ui/PropertyRows.d.ts +40 -0
  185. package/lib/osiris/ui/PropertyRows.d.ts.map +1 -0
  186. package/lib/osiris/ui/PropertyRows.js +23 -0
  187. package/lib/osiris/ui/PropertyRows.js.map +1 -0
  188. package/lib/osiris/ui/RiskFindings.d.ts +43 -0
  189. package/lib/osiris/ui/RiskFindings.d.ts.map +1 -0
  190. package/lib/osiris/ui/RiskFindings.js +51 -0
  191. package/lib/osiris/ui/RiskFindings.js.map +1 -0
  192. package/lib/osiris/ui/RiskPanel.d.ts +46 -0
  193. package/lib/osiris/ui/RiskPanel.d.ts.map +1 -0
  194. package/lib/osiris/ui/RiskPanel.js +32 -0
  195. package/lib/osiris/ui/RiskPanel.js.map +1 -0
  196. package/lib/osiris/ui/RiskSquare.d.ts +51 -0
  197. package/lib/osiris/ui/RiskSquare.d.ts.map +1 -0
  198. package/lib/osiris/ui/RiskSquare.js +23 -0
  199. package/lib/osiris/ui/RiskSquare.js.map +1 -0
  200. package/lib/osiris/ui/index.d.ts +15 -0
  201. package/lib/osiris/ui/index.d.ts.map +1 -0
  202. package/lib/osiris/ui/index.js +8 -0
  203. package/lib/osiris/ui/index.js.map +1 -0
  204. package/lib/osiris/ui/usePredictions.d.ts +81 -0
  205. package/lib/osiris/ui/usePredictions.d.ts.map +1 -0
  206. package/lib/osiris/ui/usePredictions.js +102 -0
  207. package/lib/osiris/ui/usePredictions.js.map +1 -0
  208. package/lib/osiris-ui.d.ts +11 -0
  209. package/lib/osiris-ui.d.ts.map +1 -0
  210. package/lib/osiris-ui.js +11 -0
  211. package/lib/osiris-ui.js.map +1 -0
  212. package/lib/osiris.d.ts +17 -0
  213. package/lib/osiris.d.ts.map +1 -0
  214. package/lib/osiris.js +17 -0
  215. package/lib/osiris.js.map +1 -0
  216. package/lib/panel/ui/FilterInput.d.ts.map +1 -1
  217. package/lib/panel/ui/FilterInput.js +3 -1
  218. package/lib/panel/ui/FilterInput.js.map +1 -1
  219. package/lib/panel/ui/SidePanelItem.d.ts +39 -0
  220. package/lib/panel/ui/SidePanelItem.d.ts.map +1 -0
  221. package/lib/panel/ui/SidePanelItem.js +63 -0
  222. package/lib/panel/ui/SidePanelItem.js.map +1 -0
  223. package/lib/panel/ui/SidePanelStack.d.ts +11 -10
  224. package/lib/panel/ui/SidePanelStack.d.ts.map +1 -1
  225. package/lib/panel/ui/SidePanelStack.js +22 -15
  226. package/lib/panel/ui/SidePanelStack.js.map +1 -1
  227. package/lib/panel/ui/SpectrumColorSwatch.d.ts.map +1 -1
  228. package/lib/panel/ui/SpectrumColorSwatch.js +4 -2
  229. package/lib/panel/ui/SpectrumColorSwatch.js.map +1 -1
  230. package/lib/panel/ui/usePanelFolds.d.ts +35 -0
  231. package/lib/panel/ui/usePanelFolds.d.ts.map +1 -0
  232. package/lib/panel/ui/usePanelFolds.js +73 -0
  233. package/lib/panel/ui/usePanelFolds.js.map +1 -0
  234. package/lib/shared/ui/FullscreenStage.d.ts +43 -0
  235. package/lib/shared/ui/FullscreenStage.d.ts.map +1 -0
  236. package/lib/shared/ui/FullscreenStage.js +38 -0
  237. package/lib/shared/ui/FullscreenStage.js.map +1 -0
  238. package/lib/shared/ui/canFillScreen.d.ts +7 -0
  239. package/lib/shared/ui/canFillScreen.d.ts.map +1 -0
  240. package/lib/shared/ui/canFillScreen.js +9 -0
  241. package/lib/shared/ui/canFillScreen.js.map +1 -0
  242. package/lib/shared/ui/index.d.ts +3 -0
  243. package/lib/shared/ui/index.d.ts.map +1 -1
  244. package/lib/shared/ui/index.js +2 -0
  245. package/lib/shared/ui/index.js.map +1 -1
  246. package/lib/split/ui/splitPanes.d.ts +3 -3
  247. package/lib/split/ui/splitPanes.js +1 -1
  248. package/lib/structure/core/structureNotations.d.ts +8 -1
  249. package/lib/structure/core/structureNotations.d.ts.map +1 -1
  250. package/lib/structure/core/structureNotations.js +14 -8
  251. package/lib/structure/core/structureNotations.js.map +1 -1
  252. package/lib/structure/ui/CardStructure.d.ts +43 -0
  253. package/lib/structure/ui/CardStructure.d.ts.map +1 -0
  254. package/lib/structure/ui/CardStructure.js +28 -0
  255. package/lib/structure/ui/CardStructure.js.map +1 -0
  256. package/lib/structure/ui/StructureExportPanel.d.ts +8 -0
  257. package/lib/structure/ui/StructureExportPanel.d.ts.map +1 -1
  258. package/lib/structure/ui/StructureExportPanel.js +9 -4
  259. package/lib/structure/ui/StructureExportPanel.js.map +1 -1
  260. package/lib/structure/ui/StructurePicturePane.d.ts +1 -1
  261. package/lib/structure/ui/StructurePicturePane.d.ts.map +1 -1
  262. package/lib/structure/ui/StructurePicturePane.js +5 -2
  263. package/lib/structure/ui/StructurePicturePane.js.map +1 -1
  264. package/lib/structure/ui/index.d.ts +3 -0
  265. package/lib/structure/ui/index.d.ts.map +1 -1
  266. package/lib/structure/ui/index.js +1 -0
  267. package/lib/structure/ui/index.js.map +1 -1
  268. package/package.json +4 -1
  269. package/src/card/core/cardAddress.ts +39 -3
  270. package/src/card/core/cardPageUrl.ts +10 -3
  271. package/src/card/core/index.ts +7 -1
  272. package/src/credits/core/credits.ts +40 -0
  273. package/src/download/core/copySvg.ts +40 -0
  274. package/src/download/core/downloadFigure.ts +26 -1
  275. package/src/download/core/figureDpi.ts +94 -0
  276. package/src/download/core/figurePng.ts +11 -2
  277. package/src/download/core/index.ts +14 -1
  278. package/src/download/core/pngDpi.ts +84 -0
  279. package/src/download/ui/FigureDownloadPanel.tsx +41 -51
  280. package/src/download/ui/figureDownloadHint.ts +13 -0
  281. package/src/download/ui/figureDownloadOptions.ts +85 -0
  282. package/src/download/ui/resolutionChoices.ts +67 -0
  283. package/src/download/ui/useFigureActions.ts +24 -9
  284. package/src/download/ui/useFigureDownload.tsx +57 -71
  285. package/src/ecosystem/core/sites.ts +14 -0
  286. package/src/ecosystem/core/types.ts +2 -1
  287. package/src/ecosystem/ui/glyphs.tsx +20 -0
  288. package/src/ir/core/bandAssignments.ts +27 -0
  289. package/src/ir/ui/BandRow.tsx +84 -26
  290. package/src/locales/de.json +32 -1
  291. package/src/locales/en.json +32 -1
  292. package/src/locales/es.json +32 -1
  293. package/src/locales/fr.json +32 -1
  294. package/src/locales/it.json +32 -1
  295. package/src/molecule3d/ui/Molecule3DStage.tsx +4 -88
  296. package/src/osiris/core/barGeometry.ts +74 -0
  297. package/src/osiris/core/computeProperties.ts +175 -0
  298. package/src/osiris/core/constants.ts +110 -0
  299. package/src/osiris/core/fitness.ts +59 -0
  300. package/src/osiris/core/index.ts +78 -0
  301. package/src/osiris/core/poolSize.ts +24 -0
  302. package/src/osiris/core/poolTypes.ts +140 -0
  303. package/src/osiris/core/predictIdCode.ts +69 -0
  304. package/src/osiris/core/predictProtocol.ts +78 -0
  305. package/src/osiris/core/predictionPool.ts +237 -0
  306. package/src/osiris/core/predictionQueue.ts +89 -0
  307. package/src/osiris/core/predictors.ts +142 -0
  308. package/src/osiris/core/propertyKeys.ts +54 -0
  309. package/src/osiris/core/riskAppearance.ts +86 -0
  310. package/src/osiris/core/riskDetail.ts +120 -0
  311. package/src/osiris/core/riskDetailRequest.ts +64 -0
  312. package/src/osiris/core/riskFindings.ts +92 -0
  313. package/src/osiris/core/runPredictionJob.ts +49 -0
  314. package/src/osiris/core/scales.ts +236 -0
  315. package/src/osiris/core/types.ts +103 -0
  316. package/src/osiris/core/valuation.ts +44 -0
  317. package/src/osiris/ui/PropertyBar.tsx +77 -0
  318. package/src/osiris/ui/PropertyPanel.tsx +227 -0
  319. package/src/osiris/ui/PropertyRows.tsx +92 -0
  320. package/src/osiris/ui/RiskFindings.tsx +137 -0
  321. package/src/osiris/ui/RiskPanel.tsx +81 -0
  322. package/src/osiris/ui/RiskSquare.tsx +108 -0
  323. package/src/osiris/ui/index.ts +17 -0
  324. package/src/osiris/ui/usePredictions.ts +194 -0
  325. package/src/osiris-ui.ts +11 -0
  326. package/src/osiris.ts +17 -0
  327. package/src/panel/ui/FilterInput.tsx +4 -1
  328. package/src/panel/ui/SidePanelItem.tsx +162 -0
  329. package/src/panel/ui/SidePanelStack.tsx +29 -36
  330. package/src/panel/ui/SpectrumColorSwatch.tsx +5 -3
  331. package/src/panel/ui/usePanelFolds.ts +103 -0
  332. package/src/shared/ui/FullscreenStage.tsx +96 -0
  333. package/src/shared/ui/canFillScreen.ts +8 -0
  334. package/src/shared/ui/index.ts +6 -0
  335. package/src/split/ui/splitPanes.tsx +4 -4
  336. package/src/structure/core/structureNotations.ts +25 -8
  337. package/src/structure/ui/CardStructure.tsx +76 -0
  338. package/src/structure/ui/StructureExportPanel.tsx +23 -4
  339. package/src/structure/ui/StructurePicturePane.tsx +14 -1
  340. package/src/structure/ui/index.ts +6 -0
  341. package/styles/chrome.css +3 -3
  342. package/styles/osiris.css +339 -0
@@ -0,0 +1,12 @@
1
+ /**
2
+ * What a page asks the prediction pool, and what it hears back.
3
+ *
4
+ * A prediction costs 210 to 380 ms of one thread, so a set of any size is
5
+ * answered a molecule at a time rather than all at once: a row appears as soon
6
+ * as it is read and fills in when its worker returns. Everything here is shaped
7
+ * around that — a per-result callback rather than a promise over the set, a
8
+ * progress figure, a cancel that works, and a way to say which rows the reader
9
+ * can actually see so those are computed first.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=poolTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poolTypes.js","sourceRoot":"","sources":["../../../src/osiris/core/poolTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Prediction from the only thing worth keeping per row.
3
+ *
4
+ * A row never holds an `OCL.Molecule` — ten thousand of them cost 198 MB — so
5
+ * what travels to a worker is the idCode, and the molecule is rebuilt there in
6
+ * a quarter of a millisecond against the 380 ms the prediction itself costs.
7
+ */
8
+ import type { ComputePropertiesOptions } from './computeProperties.ts';
9
+ import type { OsirisPredictors } from './predictors.ts';
10
+ import type { OsirisProperties, RiskDetail, RiskType } from './types.ts';
11
+ /**
12
+ * What is said when an idCode cannot be read.
13
+ *
14
+ * An idCode is written by a program, not typed by a chemist, so there is no
15
+ * position to point at and no parser reason worth repeating: OpenChemLib
16
+ * answers a malformed one with `Cannot set properties of undefined`, which
17
+ * names nothing anyone can act on. Worse, it does not always throw — `zzzz`
18
+ * reads as a 117-atom molecule — so this is the floor, not the whole guard.
19
+ */
20
+ export declare const UNREADABLE_ID_CODE_MESSAGE = "This structure could not be read.";
21
+ /**
22
+ * Predict everything the tool shows, from an idCode.
23
+ * @param value - The idCode, with the editor's atom coordinates after a space or without them.
24
+ * @param predictors - OpenChemLib with its resources registered and checked.
25
+ * @param options - See {@link ComputePropertiesOptions}.
26
+ * @returns The ten numbers, the four risks, and what to call the molecule.
27
+ * @throws {Error} When the idCode cannot be read, or describes no atoms.
28
+ */
29
+ export declare function predictIdCode(value: string, predictors: OsirisPredictors, options?: ComputePropertiesOptions): OsirisProperties;
30
+ /**
31
+ * Why one risk came back as it did, from an idCode.
32
+ * @param value - The idCode, coordinates included or not.
33
+ * @param risk - Which of the four risks to explain.
34
+ * @param predictors - OpenChemLib with its resources registered and checked.
35
+ * @returns The findings, with the matched atoms and bonds of every fragment.
36
+ * @throws {Error} When the idCode cannot be read.
37
+ */
38
+ export declare function riskDetailOfIdCode(value: string, risk: RiskType, predictors: OsirisPredictors): RiskDetail;
39
+ //# sourceMappingURL=predictIdCode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictIdCode.d.ts","sourceRoot":"","sources":["../../../src/osiris/core/predictIdCode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,gBAAgB,EAC5B,OAAO,GAAE,wBAA6B,GACrC,gBAAgB,CAElB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,EACd,UAAU,EAAE,gBAAgB,GAC3B,UAAU,CAEZ"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Prediction from the only thing worth keeping per row.
3
+ *
4
+ * A row never holds an `OCL.Molecule` — ten thousand of them cost 198 MB — so
5
+ * what travels to a worker is the idCode, and the molecule is rebuilt there in
6
+ * a quarter of a millisecond against the 380 ms the prediction itself costs.
7
+ */
8
+ import { splitIdCode } from "../../structure/core/editorValue.js";
9
+ import { computeProperties } from "./computeProperties.js";
10
+ import { riskDetail } from "./riskDetail.js";
11
+ /**
12
+ * What is said when an idCode cannot be read.
13
+ *
14
+ * An idCode is written by a program, not typed by a chemist, so there is no
15
+ * position to point at and no parser reason worth repeating: OpenChemLib
16
+ * answers a malformed one with `Cannot set properties of undefined`, which
17
+ * names nothing anyone can act on. Worse, it does not always throw — `zzzz`
18
+ * reads as a 117-atom molecule — so this is the floor, not the whole guard.
19
+ */
20
+ export const UNREADABLE_ID_CODE_MESSAGE = 'This structure could not be read.';
21
+ /**
22
+ * Predict everything the tool shows, from an idCode.
23
+ * @param value - The idCode, with the editor's atom coordinates after a space or without them.
24
+ * @param predictors - OpenChemLib with its resources registered and checked.
25
+ * @param options - See {@link ComputePropertiesOptions}.
26
+ * @returns The ten numbers, the four risks, and what to call the molecule.
27
+ * @throws {Error} When the idCode cannot be read, or describes no atoms.
28
+ */
29
+ export function predictIdCode(value, predictors, options = {}) {
30
+ return computeProperties(read(value, predictors), predictors, options);
31
+ }
32
+ /**
33
+ * Why one risk came back as it did, from an idCode.
34
+ * @param value - The idCode, coordinates included or not.
35
+ * @param risk - Which of the four risks to explain.
36
+ * @param predictors - OpenChemLib with its resources registered and checked.
37
+ * @returns The findings, with the matched atoms and bonds of every fragment.
38
+ * @throws {Error} When the idCode cannot be read.
39
+ */
40
+ export function riskDetailOfIdCode(value, risk, predictors) {
41
+ return riskDetail(read(value, predictors), risk, predictors);
42
+ }
43
+ function read(value, predictors) {
44
+ const { idCode, coordinates } = splitIdCode(value);
45
+ try {
46
+ return coordinates === undefined
47
+ ? predictors.Molecule.fromIDCode(idCode)
48
+ : predictors.Molecule.fromIDCode(idCode, coordinates);
49
+ }
50
+ catch (error) {
51
+ throw new Error(UNREADABLE_ID_CODE_MESSAGE, { cause: error });
52
+ }
53
+ }
54
+ //# sourceMappingURL=predictIdCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictIdCode.js","sourceRoot":"","sources":["../../../src/osiris/core/predictIdCode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAGlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,mCAAmC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,UAA4B,EAC5B,UAAoC,EAAE;IAEtC,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,IAAc,EACd,UAA4B;IAE5B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,IAAI,CAAC,KAAa,EAAE,UAA4B;IACvD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,OAAO,WAAW,KAAK,SAAS;YAC9B,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * What the page asks a prediction worker, and what it answers.
3
+ *
4
+ * One molecule per request. Two of the three answers are ordinary results; the
5
+ * third, `unavailable`, is how a worker says its resource tables did not load.
6
+ * That one travels as a *successful* answer on purpose: a rejection would be
7
+ * indistinguishable from the ordinary failure of one unreadable structure,
8
+ * whereas this one means every answer from every worker is worthless and the
9
+ * run must stop and say so.
10
+ */
11
+ import type { ResourceSource } from './predictors.ts';
12
+ import type { OsirisProperties, RiskDetail, RiskType } from './types.ts';
13
+ /** What every request carries, whichever job it asks for. */
14
+ interface BaseRequest {
15
+ /**
16
+ * Where the worker registers OpenChemLib's resources from. In a browser this
17
+ * is always the absolute URL of the site's own `openchemlib-resources.json`,
18
+ * resolved on the main thread: a worker has no `document`, so it cannot read
19
+ * the deployment's mount path itself. The parsed tables are accepted as well,
20
+ * for the in-process fallback where there is no worker to post them to.
21
+ */
22
+ resources: ResourceSource;
23
+ }
24
+ /** Predict everything the tool shows for one molecule. */
25
+ export interface PropertiesRequest extends BaseRequest {
26
+ kind: 'properties';
27
+ /** The caller's key for the row, echoed back so answers can arrive in any order. */
28
+ key: string;
29
+ /** The idCode, with the editor's atom coordinates after a space or without. */
30
+ idCode: string;
31
+ /**
32
+ * The name the source carried.
33
+ * @default the canonical SMILES
34
+ */
35
+ label?: string;
36
+ }
37
+ /** Explain why one risk came back as it did. */
38
+ export interface RiskDetailRequest extends BaseRequest {
39
+ kind: 'riskDetail';
40
+ /** The idCode, coordinates included or not. */
41
+ idCode: string;
42
+ /** Which of the four risks to explain. */
43
+ risk: RiskType;
44
+ }
45
+ /** One job for a prediction worker. */
46
+ export type PredictRequest = PropertiesRequest | RiskDetailRequest;
47
+ /** What a prediction worker answers. */
48
+ export type PredictResponse = {
49
+ kind: 'properties';
50
+ key: string;
51
+ properties: OsirisProperties;
52
+ } | {
53
+ kind: 'riskDetail';
54
+ detail: RiskDetail;
55
+ } | {
56
+ kind: 'unavailable';
57
+ message: string;
58
+ };
59
+ /**
60
+ * Whether a message is a job this worker handles, so anything else is refused
61
+ * rather than read as one.
62
+ * @param value - Whatever was posted.
63
+ * @returns True when it is a well-formed request.
64
+ */
65
+ export declare function isPredictRequest(value: unknown): value is PredictRequest;
66
+ export {};
67
+ //# sourceMappingURL=predictProtocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictProtocol.d.ts","sourceRoot":"","sources":["../../../src/osiris/core/predictProtocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEzE,6DAA6D;AAC7D,UAAU,WAAW;IACnB;;;;;;OAMG;IACH,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,0DAA0D;AAC1D,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,oFAAoF;IACpF,GAAG,EAAE,MAAM,CAAC;IACZ,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,YAAY,CAAC;IACnB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,uCAAuC;AACvC,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;AAEnE,wCAAwC;AACxC,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,gBAAgB,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAaxE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * What the page asks a prediction worker, and what it answers.
3
+ *
4
+ * One molecule per request. Two of the three answers are ordinary results; the
5
+ * third, `unavailable`, is how a worker says its resource tables did not load.
6
+ * That one travels as a *successful* answer on purpose: a rejection would be
7
+ * indistinguishable from the ordinary failure of one unreadable structure,
8
+ * whereas this one means every answer from every worker is worthless and the
9
+ * run must stop and say so.
10
+ */
11
+ /**
12
+ * Whether a message is a job this worker handles, so anything else is refused
13
+ * rather than read as one.
14
+ * @param value - Whatever was posted.
15
+ * @returns True when it is a well-formed request.
16
+ */
17
+ export function isPredictRequest(value) {
18
+ if (typeof value !== 'object' || value === null)
19
+ return false;
20
+ const request = value;
21
+ if (typeof request.idCode !== 'string')
22
+ return false;
23
+ if (request.resources === undefined)
24
+ return false;
25
+ if (request.kind === 'properties')
26
+ return typeof request.key === 'string';
27
+ return request.kind === 'riskDetail' && typeof request.risk === 'string';
28
+ }
29
+ //# sourceMappingURL=predictProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictProtocol.js","sourceRoot":"","sources":["../../../src/osiris/core/predictProtocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAiDH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,OAAO,GAAG,KAMf,CAAC;IACF,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,CAAC;IAC1E,OAAO,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A pool of prediction workers, answering one molecule at a time each.
3
+ *
4
+ * `createWorkerChannel` from `react-cheminfo/core` does the per-worker half —
5
+ * request identifiers so answers match callers whatever order they arrive in,
6
+ * timeouts, cancellation, and the in-process fallback where a page has no
7
+ * `Worker` at all. What it does not do is spread work over several workers, so
8
+ * that is what this adds: one channel per worker, a queue the pool owns, and at
9
+ * most one outstanding job per channel, which is what makes reordering possible
10
+ * at all. A channel asked for everything at once would post everything at once,
11
+ * and the row the reader is looking at would be answered forty-eighth.
12
+ */
13
+ import type { PredictionPool, PredictionPoolOptions } from './poolTypes.ts';
14
+ /**
15
+ * Start a pool of prediction workers.
16
+ *
17
+ * Workers are created lazily by the channels, on their first job, so a page
18
+ * that never predicts anything never loads OpenChemLib.
19
+ * @param options - See {@link PredictionPoolOptions}.
20
+ * @returns The pool.
21
+ */
22
+ export declare function createPredictionPool(options: PredictionPoolOptions): PredictionPool;
23
+ //# sourceMappingURL=predictionPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictionPool.d.ts","sourceRoot":"","sources":["../../../src/osiris/core/predictionPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EAEV,cAAc,EACd,qBAAqB,EAEtB,MAAM,gBAAgB,CAAC;AAexB;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,qBAAqB,GAC7B,cAAc,CA2LhB"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * A pool of prediction workers, answering one molecule at a time each.
3
+ *
4
+ * `createWorkerChannel` from `react-cheminfo/core` does the per-worker half —
5
+ * request identifiers so answers match callers whatever order they arrive in,
6
+ * timeouts, cancellation, and the in-process fallback where a page has no
7
+ * `Worker` at all. What it does not do is spread work over several workers, so
8
+ * that is what this adds: one channel per worker, a queue the pool owns, and at
9
+ * most one outstanding job per channel, which is what makes reordering possible
10
+ * at all. A channel asked for everything at once would post everything at once,
11
+ * and the row the reader is looking at would be answered forty-eighth.
12
+ */
13
+ import { errorMessage } from "../../error/core/toError.js";
14
+ import { CancelledRequestError } from "../../worker/core/errors.js";
15
+ import { createWorkerChannel } from "../../worker/core/workerChannel.js";
16
+ import { predictionPoolSize } from "./poolSize.js";
17
+ import { createPredictionQueue } from "./predictionQueue.js";
18
+ import { PredictorsUnavailableError } from "./predictors.js";
19
+ import { requestRiskDetail } from "./riskDetailRequest.js";
20
+ import { runPredictionJob } from "./runPredictionJob.js";
21
+ /**
22
+ * Start a pool of prediction workers.
23
+ *
24
+ * Workers are created lazily by the channels, on their first job, so a page
25
+ * that never predicts anything never loads OpenChemLib.
26
+ * @param options - See {@link PredictionPoolOptions}.
27
+ * @returns The pool.
28
+ */
29
+ export function createPredictionPool(options) {
30
+ const { resources, onResult, onProgress, onUnavailable, createWorker, runInProcess, timeoutMs = 60_000, } = options;
31
+ const size = predictionPoolSize(options.size);
32
+ const run = runInProcess ?? runPredictionJob;
33
+ const slots = [];
34
+ for (let index = 0; index < size; index++) {
35
+ slots.push({
36
+ channel: createWorkerChannel(createWorker, {
37
+ name: `osiris-prediction-${index}`,
38
+ defaultTimeoutMs: timeoutMs,
39
+ runInProcess: run,
40
+ }),
41
+ busy: false,
42
+ });
43
+ }
44
+ const queue = createPredictionQueue();
45
+ const inFlight = new Set();
46
+ let generation = 0;
47
+ let done = 0;
48
+ let total = 0;
49
+ let running = false;
50
+ let terminated = false;
51
+ let unavailable = null;
52
+ function progress() {
53
+ return { done, total, pending: queue.size + inFlight.size, running };
54
+ }
55
+ function report() {
56
+ onProgress?.(progress());
57
+ }
58
+ function pump() {
59
+ if (unavailable !== null)
60
+ return;
61
+ for (const slot of slots) {
62
+ if (slot.busy)
63
+ continue;
64
+ const next = queue.take();
65
+ if (next === undefined)
66
+ break;
67
+ dispatch(slot, next);
68
+ }
69
+ }
70
+ function dispatch(slot, input) {
71
+ const era = generation;
72
+ slot.busy = true;
73
+ inFlight.add(input.key);
74
+ const request = {
75
+ kind: 'properties',
76
+ resources,
77
+ key: input.key,
78
+ idCode: input.idCode,
79
+ ...(input.label === undefined ? {} : { label: input.label }),
80
+ };
81
+ slot.channel.request(request).then((response) => {
82
+ settle(slot, input, era, response, null);
83
+ }, (error) => {
84
+ settle(slot, input, era, null, error);
85
+ });
86
+ }
87
+ function settle(slot, input, era, response, error) {
88
+ slot.busy = false;
89
+ inFlight.delete(input.key);
90
+ // An answer from a cancelled run is not counted and not reported, but the
91
+ // slot it just freed is still dispatched from: a submit made in the same
92
+ // turn as the cancel found every slot busy and queued its molecules here.
93
+ if (era === generation) {
94
+ if (response?.kind === 'unavailable') {
95
+ stop(response.message);
96
+ return;
97
+ }
98
+ if (response?.kind === 'properties') {
99
+ done += 1;
100
+ onResult?.({
101
+ key: input.key,
102
+ ok: true,
103
+ properties: response.properties,
104
+ });
105
+ }
106
+ else if (error !== null && !(error instanceof CancelledRequestError)) {
107
+ done += 1;
108
+ onResult?.({ key: input.key, ok: false, message: errorMessage(error) });
109
+ }
110
+ }
111
+ pump();
112
+ if (queue.size === 0 && inFlight.size === 0)
113
+ running = false;
114
+ report();
115
+ }
116
+ function clear() {
117
+ generation += 1;
118
+ queue.clear();
119
+ inFlight.clear();
120
+ running = false;
121
+ for (const slot of slots)
122
+ slot.channel.cancel();
123
+ }
124
+ function stop(message) {
125
+ clear();
126
+ unavailable = message;
127
+ report();
128
+ onUnavailable?.(message);
129
+ }
130
+ function leastBusy() {
131
+ let best = slots[0];
132
+ for (const slot of slots) {
133
+ if (slot.channel.pendingCount < best.channel.pendingCount)
134
+ best = slot;
135
+ }
136
+ return best;
137
+ }
138
+ return {
139
+ size,
140
+ get progress() {
141
+ return progress();
142
+ },
143
+ submit(molecules) {
144
+ if (unavailable !== null)
145
+ return;
146
+ if (!running && queue.size === 0 && inFlight.size === 0) {
147
+ done = 0;
148
+ total = 0;
149
+ }
150
+ for (const input of molecules) {
151
+ if (inFlight.has(input.key))
152
+ continue;
153
+ if (queue.add(input))
154
+ total += 1;
155
+ }
156
+ running = queue.size > 0 || inFlight.size > 0;
157
+ pump();
158
+ report();
159
+ },
160
+ prioritize(keys) {
161
+ queue.prioritize(keys);
162
+ },
163
+ async riskDetail(idCode, risk) {
164
+ const response = await requestRiskDetail(() => leastBusy().channel, { kind: 'riskDetail', resources, idCode, risk }, () => !terminated && unavailable === null);
165
+ if (response.kind === 'unavailable') {
166
+ stop(response.message);
167
+ throw new PredictorsUnavailableError(response.message);
168
+ }
169
+ if (response.kind !== 'riskDetail') {
170
+ throw new Error('The worker answered something other than a detail.');
171
+ }
172
+ return response.detail;
173
+ },
174
+ cancel() {
175
+ clear();
176
+ report();
177
+ },
178
+ terminate() {
179
+ terminated = true;
180
+ clear();
181
+ for (const slot of slots)
182
+ slot.channel.terminate();
183
+ },
184
+ };
185
+ }
186
+ //# sourceMappingURL=predictionPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictionPool.js","sourceRoot":"","sources":["../../../src/osiris/core/predictionPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * What is still to be predicted, in the order it will be.
3
+ *
4
+ * Arrival order by default, because that is the order the reader read the file
5
+ * in. On top of it sits a short list of keys to answer first — the rows
6
+ * actually on screen — which is re-laid every time the reader scrolls or
7
+ * focuses a row. A key named as wanted that has since been answered or removed
8
+ * is skipped rather than looked up again.
9
+ */
10
+ import type { PredictionInput } from './poolTypes.ts';
11
+ /** The molecules waiting, and which of them to take next. */
12
+ export interface PredictionQueue {
13
+ /** How many are waiting. */
14
+ readonly size: number;
15
+ /**
16
+ * Whether one is waiting.
17
+ * @param key - The row's key.
18
+ * @returns True when it is still queued.
19
+ */
20
+ has: (key: string) => boolean;
21
+ /**
22
+ * Queue one molecule, unless its key is already waiting.
23
+ * @param input - The molecule.
24
+ * @returns True when it was added.
25
+ */
26
+ add: (input: PredictionInput) => boolean;
27
+ /**
28
+ * Take the next molecule to predict: the first still-queued key of the wanted
29
+ * list, else the one that has waited longest.
30
+ * @returns The molecule, or `undefined` when nothing is waiting.
31
+ */
32
+ take: () => PredictionInput | undefined;
33
+ /**
34
+ * Replace the list of keys to answer first.
35
+ * @param keys - The keys, most wanted first.
36
+ */
37
+ prioritize: (keys: readonly string[]) => void;
38
+ /** Forget everything waiting. */
39
+ clear: () => void;
40
+ }
41
+ /**
42
+ * A queue of molecules to predict.
43
+ * @returns The queue, empty.
44
+ */
45
+ export declare function createPredictionQueue(): PredictionQueue;
46
+ //# sourceMappingURL=predictionQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictionQueue.d.ts","sourceRoot":"","sources":["../../../src/osiris/core/predictionQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9B;;;;OAIG;IACH,GAAG,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC;IACzC;;;;OAIG;IACH,IAAI,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC;IACxC;;;OAGG;IACH,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,iCAAiC;IACjC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAyCvD"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * What is still to be predicted, in the order it will be.
3
+ *
4
+ * Arrival order by default, because that is the order the reader read the file
5
+ * in. On top of it sits a short list of keys to answer first — the rows
6
+ * actually on screen — which is re-laid every time the reader scrolls or
7
+ * focuses a row. A key named as wanted that has since been answered or removed
8
+ * is skipped rather than looked up again.
9
+ */
10
+ /**
11
+ * A queue of molecules to predict.
12
+ * @returns The queue, empty.
13
+ */
14
+ export function createPredictionQueue() {
15
+ const waiting = new Map();
16
+ let wanted = [];
17
+ let cursor = 0;
18
+ return {
19
+ get size() {
20
+ return waiting.size;
21
+ },
22
+ has: (key) => waiting.has(key),
23
+ add(input) {
24
+ if (waiting.has(input.key))
25
+ return false;
26
+ waiting.set(input.key, input);
27
+ return true;
28
+ },
29
+ take() {
30
+ while (cursor < wanted.length) {
31
+ const key = wanted[cursor];
32
+ cursor += 1;
33
+ const next = waiting.get(key);
34
+ if (next !== undefined) {
35
+ waiting.delete(key);
36
+ return next;
37
+ }
38
+ }
39
+ const first = waiting.keys().next();
40
+ if (first.done === true)
41
+ return undefined;
42
+ const next = waiting.get(first.value);
43
+ waiting.delete(first.value);
44
+ return next;
45
+ },
46
+ prioritize(keys) {
47
+ wanted = [...keys];
48
+ cursor = 0;
49
+ },
50
+ clear() {
51
+ waiting.clear();
52
+ wanted = [];
53
+ cursor = 0;
54
+ },
55
+ };
56
+ }
57
+ //# sourceMappingURL=predictionQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictionQueue.js","sourceRoot":"","sources":["../../../src/osiris/core/predictionQueue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmCH;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;IACnD,IAAI,MAAM,GAAsB,EAAE,CAAC;IACnC,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO;QACL,IAAI,IAAI;YACN,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;QACD,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;QAC9B,GAAG,CAAC,KAAK;YACP,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI;YACF,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAW,CAAC;gBACrC,MAAM,IAAI,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACpB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;gBAAE,OAAO,SAAS,CAAC;YAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAoB,CAAC;YACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,CAAC,IAAI;YACb,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YACnB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;QACD,KAAK;YACH,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * OpenChemLib, loaded once and proved to be working before anything is
3
+ * predicted with it.
4
+ *
5
+ * Both predictors throw `static resources must be registered first` until
6
+ * `Resources.register*` has run — but only when *nothing* was registered. If
7
+ * something else was, `new ToxicityPredictor()` constructs happily, prints to
8
+ * the console, and answers every `assessRisk` with `RISK_UNKNOWN`, on which
9
+ * `DrugScoreCalculator` applies no penalty at all. The failure therefore reads
10
+ * on screen as four clean molecules and a healthy score. So the tables are
11
+ * proved here, at start-up, against a molecule whose answer is known: a
12
+ * fragment match that must come back high, and a drug-likeness that must be a
13
+ * real number. Between them the two families of resource file are both covered.
14
+ *
15
+ * The check costs about 160 ms once per worker, most of which is warm-up the
16
+ * first real molecule would have paid anyway — measured, a first prediction is
17
+ * 320 ms cold against 191 ms warm.
18
+ */
19
+ import type * as OCL from 'openchemlib';
20
+ /**
21
+ * Where the resource tables come from: the URL of the site's own
22
+ * `openchemlib-resources.json`, or the parsed file itself.
23
+ *
24
+ * A URL must be absolute. `registerFromUrl` resolves a relative one against
25
+ * `import.meta.url`, which after a build is a hashed chunk under `assets/`, so
26
+ * it answers 404 and every prediction quietly becomes unknown.
27
+ */
28
+ export type ResourceSource = string | Readonly<Record<string, string>>;
29
+ /** OpenChemLib, registered, checked and ready to predict with. */
30
+ export interface OsirisPredictors {
31
+ /** Reads an idCode or a SMILES into a molecule. */
32
+ Molecule: typeof OCL.Molecule;
33
+ /** cLogP, solubility, TPSA and the four counts. */
34
+ MoleculeProperties: typeof OCL.MoleculeProperties;
35
+ /** Finds a toxicophore on a molecule, in the predictor's own match mode. */
36
+ SSSearcher: typeof OCL.SSSearcher;
37
+ /** The four spline terms and the four risk factors. */
38
+ DrugScoreCalculator: typeof OCL.DrugScoreCalculator;
39
+ /** The four risk assessments and their explanations. */
40
+ toxicity: OCL.ToxicityPredictor;
41
+ /** The 5294-fragment drug-likeness table. */
42
+ druglikeness: OCL.DruglikenessPredictor;
43
+ }
44
+ /** The tables did not load, so nothing may be predicted. */
45
+ export declare class PredictorsUnavailableError extends Error {
46
+ name: string;
47
+ }
48
+ /**
49
+ * OpenChemLib with its resources registered and checked.
50
+ *
51
+ * Loaded lazily — the library is 340 kB gzipped and does not tree-shake — and
52
+ * kept, because `Resources.register` replaces the whole map rather than merging
53
+ * into it, so registering twice with different keys silently unregisters the
54
+ * first set.
55
+ * @param source - The resources URL, or the parsed resources themselves.
56
+ * @returns The predictors, proved to answer.
57
+ * @throws {PredictorsUnavailableError} When the resources did not load, or loaded and answer nothing.
58
+ */
59
+ export declare function loadPredictors(source: ResourceSource): Promise<OsirisPredictors>;
60
+ /** Forget the loaded predictors, so the next call registers again. */
61
+ export declare function resetPredictors(): void;
62
+ //# sourceMappingURL=predictors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predictors.d.ts","sourceRoot":"","sources":["../../../src/osiris/core/predictors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,KAAK,GAAG,MAAM,aAAa,CAAC;AAQxC;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvE,kEAAkE;AAClE,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,QAAQ,EAAE,OAAO,GAAG,CAAC,QAAQ,CAAC;IAC9B,mDAAmD;IACnD,kBAAkB,EAAE,OAAO,GAAG,CAAC,kBAAkB,CAAC;IAClD,4EAA4E;IAC5E,UAAU,EAAE,OAAO,GAAG,CAAC,UAAU,CAAC;IAClC,uDAAuD;IACvD,mBAAmB,EAAE,OAAO,GAAG,CAAC,mBAAmB,CAAC;IACpD,wDAAwD;IACxD,QAAQ,EAAE,GAAG,CAAC,iBAAiB,CAAC;IAChC,6CAA6C;IAC7C,YAAY,EAAE,GAAG,CAAC,qBAAqB,CAAC;CACzC;AAED,4DAA4D;AAC5D,qBAAa,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,SAAgC;CAC9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED,sEAAsE;AACtE,wBAAgB,eAAe,IAAI,IAAI,CAEtC"}