molstar 3.26.0 → 3.28.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 (499) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +202 -202
  3. package/build/viewer/embedded.html +52 -52
  4. package/build/viewer/index.html +115 -115
  5. package/build/viewer/molstar.css +1 -1
  6. package/build/viewer/molstar.js +1 -1
  7. package/lib/apps/docking-viewer/index.html +36 -36
  8. package/lib/apps/docking-viewer/viewport.d.ts +2 -0
  9. package/lib/apps/docking-viewer/viewport.js +1 -0
  10. package/lib/apps/viewer/app.d.ts +3 -1
  11. package/lib/apps/viewer/app.js +4 -0
  12. package/lib/apps/viewer/embedded.html +52 -52
  13. package/lib/apps/viewer/index.html +115 -115
  14. package/lib/cli/structure-info/volume.js +1 -1
  15. package/lib/commonjs/apps/docking-viewer/viewport.d.ts +2 -0
  16. package/lib/commonjs/apps/docking-viewer/viewport.js +1 -0
  17. package/lib/commonjs/apps/viewer/app.d.ts +3 -1
  18. package/lib/commonjs/apps/viewer/app.js +4 -0
  19. package/lib/commonjs/cli/structure-info/volume.js +1 -1
  20. package/lib/commonjs/examples/lighting/index.js +1 -1
  21. package/lib/commonjs/extensions/anvil/behavior.d.ts +1 -0
  22. package/lib/commonjs/extensions/cellpack/model.js +2 -1
  23. package/lib/commonjs/extensions/dnatco/confal-pyramids/behavior.d.ts +1 -0
  24. package/lib/commonjs/extensions/meshes/choice.d.ts +26 -0
  25. package/lib/commonjs/extensions/meshes/choice.js +31 -0
  26. package/lib/commonjs/extensions/meshes/examples.d.ts +26 -0
  27. package/lib/commonjs/extensions/meshes/examples.js +337 -0
  28. package/lib/commonjs/extensions/meshes/mesh-cif-schema.d.ts +29 -0
  29. package/lib/commonjs/extensions/meshes/mesh-cif-schema.js +34 -0
  30. package/lib/commonjs/extensions/meshes/mesh-extension.d.ts +66 -0
  31. package/lib/commonjs/extensions/meshes/mesh-extension.js +221 -0
  32. package/lib/commonjs/extensions/meshes/mesh-streaming/behavior.d.ts +105 -0
  33. package/lib/commonjs/extensions/meshes/mesh-streaming/behavior.js +379 -0
  34. package/lib/commonjs/extensions/meshes/mesh-streaming/server-info.d.ts +54 -0
  35. package/lib/commonjs/extensions/meshes/mesh-streaming/server-info.js +30 -0
  36. package/lib/commonjs/extensions/meshes/mesh-streaming/transformers.d.ts +42 -0
  37. package/lib/commonjs/extensions/meshes/mesh-streaming/transformers.js +273 -0
  38. package/lib/commonjs/extensions/meshes/mesh-utils.d.ts +41 -0
  39. package/lib/commonjs/extensions/meshes/mesh-utils.js +357 -0
  40. package/lib/commonjs/extensions/meshes/metadata.d.ts +108 -0
  41. package/lib/commonjs/extensions/meshes/metadata.js +72 -0
  42. package/lib/commonjs/extensions/model-archive/quality-assessment/behavior.d.ts +2 -0
  43. package/lib/commonjs/extensions/model-archive/quality-assessment/prop.d.ts +1 -0
  44. package/lib/commonjs/extensions/model-archive/quality-assessment/prop.js +16 -4
  45. package/lib/commonjs/extensions/rcsb/assembly-symmetry/behavior.d.ts +4 -2
  46. package/lib/commonjs/extensions/rcsb/validation-report/behavior.d.ts +3 -0
  47. package/lib/commonjs/extensions/volumes-and-segmentations/entry-meshes.d.ts +17 -0
  48. package/lib/commonjs/extensions/volumes-and-segmentations/entry-meshes.js +156 -0
  49. package/lib/commonjs/extensions/volumes-and-segmentations/entry-models.d.ts +12 -0
  50. package/lib/commonjs/extensions/volumes-and-segmentations/entry-models.js +96 -0
  51. package/lib/commonjs/extensions/volumes-and-segmentations/entry-root.d.ts +122 -0
  52. package/lib/commonjs/extensions/volumes-and-segmentations/entry-root.js +576 -0
  53. package/lib/commonjs/extensions/volumes-and-segmentations/entry-segmentation.d.ts +20 -0
  54. package/lib/commonjs/extensions/volumes-and-segmentations/entry-segmentation.js +200 -0
  55. package/lib/commonjs/extensions/volumes-and-segmentations/entry-state.d.ts +88 -0
  56. package/lib/commonjs/extensions/volumes-and-segmentations/entry-state.js +32 -0
  57. package/lib/commonjs/extensions/volumes-and-segmentations/entry-volume.d.ts +35 -0
  58. package/lib/commonjs/extensions/volumes-and-segmentations/entry-volume.js +234 -0
  59. package/lib/commonjs/extensions/volumes-and-segmentations/external-api.d.ts +11 -0
  60. package/lib/commonjs/extensions/volumes-and-segmentations/external-api.js +85 -0
  61. package/lib/commonjs/extensions/volumes-and-segmentations/global-state.d.ts +51 -0
  62. package/lib/commonjs/extensions/volumes-and-segmentations/global-state.js +83 -0
  63. package/lib/commonjs/extensions/volumes-and-segmentations/helpers.d.ts +56 -0
  64. package/lib/commonjs/extensions/volumes-and-segmentations/helpers.js +171 -0
  65. package/lib/commonjs/extensions/volumes-and-segmentations/index.d.ts +20 -0
  66. package/lib/commonjs/extensions/volumes-and-segmentations/index.js +130 -0
  67. package/lib/commonjs/extensions/volumes-and-segmentations/transformers.d.ts +33 -0
  68. package/lib/commonjs/extensions/volumes-and-segmentations/transformers.js +85 -0
  69. package/lib/commonjs/extensions/volumes-and-segmentations/ui.d.ts +29 -0
  70. package/lib/commonjs/extensions/volumes-and-segmentations/ui.js +232 -0
  71. package/lib/commonjs/extensions/volumes-and-segmentations/volseg-api/api.d.ts +22 -0
  72. package/lib/commonjs/extensions/volumes-and-segmentations/volseg-api/api.js +83 -0
  73. package/lib/commonjs/extensions/volumes-and-segmentations/volseg-api/data.d.ts +92 -0
  74. package/lib/commonjs/extensions/volumes-and-segmentations/volseg-api/data.js +7 -0
  75. package/lib/commonjs/extensions/volumes-and-segmentations/volseg-api/utils.d.ts +23 -0
  76. package/lib/commonjs/extensions/volumes-and-segmentations/volseg-api/utils.js +78 -0
  77. package/lib/commonjs/mol-canvas3d/canvas3d.d.ts +2 -0
  78. package/lib/commonjs/mol-canvas3d/passes/draw.js +3 -3
  79. package/lib/commonjs/mol-canvas3d/passes/image.d.ts +1 -0
  80. package/lib/commonjs/mol-canvas3d/passes/postprocessing.d.ts +2 -1
  81. package/lib/commonjs/mol-canvas3d/passes/postprocessing.js +27 -13
  82. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +2 -1
  83. package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.js +3 -2
  84. package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +0 -1
  85. package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
  86. package/lib/commonjs/mol-geo/geometry/spheres/spheres.d.ts +1 -0
  87. package/lib/commonjs/mol-geo/geometry/spheres/spheres.js +3 -2
  88. package/lib/commonjs/mol-gl/compute/histogram-pyramid/reduction.js +1 -2
  89. package/lib/commonjs/mol-gl/compute/marching-cubes/isosurface.js +4 -6
  90. package/lib/commonjs/mol-gl/renderable/cylinders.d.ts +1 -0
  91. package/lib/commonjs/mol-gl/renderable/cylinders.js +1 -1
  92. package/lib/commonjs/mol-gl/renderable/spheres.d.ts +1 -0
  93. package/lib/commonjs/mol-gl/renderable/spheres.js +1 -1
  94. package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +1 -1
  95. package/lib/commonjs/mol-gl/shader/chunks/apply-light-color.glsl.js +1 -1
  96. package/lib/commonjs/mol-gl/shader/chunks/clip-instance.glsl.d.ts +1 -1
  97. package/lib/commonjs/mol-gl/shader/chunks/clip-instance.glsl.js +1 -1
  98. package/lib/commonjs/mol-gl/shader/chunks/clip-pixel.glsl.d.ts +1 -1
  99. package/lib/commonjs/mol-gl/shader/chunks/clip-pixel.glsl.js +1 -1
  100. package/lib/commonjs/mol-gl/shader/chunks/common-clip.glsl.d.ts +2 -2
  101. package/lib/commonjs/mol-gl/shader/chunks/common-clip.glsl.js +2 -2
  102. package/lib/commonjs/mol-gl/shader/cylinders.frag.d.ts +1 -1
  103. package/lib/commonjs/mol-gl/shader/cylinders.frag.js +1 -1
  104. package/lib/commonjs/mol-gl/shader/cylinders.vert.d.ts +2 -2
  105. package/lib/commonjs/mol-gl/shader/cylinders.vert.js +2 -2
  106. package/lib/commonjs/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  107. package/lib/commonjs/mol-gl/shader/direct-volume.frag.js +1 -1
  108. package/lib/commonjs/mol-gl/shader/outlines.frag.d.ts +1 -1
  109. package/lib/commonjs/mol-gl/shader/outlines.frag.js +1 -1
  110. package/lib/commonjs/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  111. package/lib/commonjs/mol-gl/shader/postprocessing.frag.js +1 -1
  112. package/lib/commonjs/mol-gl/shader/spheres.frag.d.ts +1 -1
  113. package/lib/commonjs/mol-gl/shader/spheres.frag.js +1 -1
  114. package/lib/commonjs/mol-gl/shader/spheres.vert.d.ts +2 -2
  115. package/lib/commonjs/mol-gl/shader/spheres.vert.js +2 -2
  116. package/lib/commonjs/mol-gl/webgl/renderbuffer.d.ts +1 -1
  117. package/lib/commonjs/mol-gl/webgl/renderbuffer.js +15 -0
  118. package/lib/commonjs/mol-gl/webgl/state.d.ts +12 -0
  119. package/lib/commonjs/mol-gl/webgl/state.js +136 -0
  120. package/lib/commonjs/mol-io/reader/cif/schema/segmentation.d.ts +38 -0
  121. package/lib/commonjs/mol-io/reader/cif/schema/segmentation.js +22 -0
  122. package/lib/commonjs/mol-io/reader/cif.d.ts +3 -1
  123. package/lib/commonjs/mol-io/reader/cif.js +3 -1
  124. package/lib/commonjs/mol-model/location.d.ts +2 -1
  125. package/lib/commonjs/mol-model/loci.d.ts +11 -11
  126. package/lib/commonjs/mol-model/loci.js +13 -1
  127. package/lib/commonjs/mol-model/sequence/alignment/sequence.d.ts +4 -1
  128. package/lib/commonjs/mol-model/sequence/alignment/sequence.js +4 -1
  129. package/lib/commonjs/mol-model/structure/model/properties/atomic/hierarchy.d.ts +6 -0
  130. package/lib/commonjs/mol-model/structure/model/properties/utils/atomic-index.js +8 -0
  131. package/lib/commonjs/mol-model/structure/structure/unit/bonds/inter-compute.js +21 -5
  132. package/lib/commonjs/mol-model/structure/structure/util/superposition.d.ts +1 -0
  133. package/lib/commonjs/mol-model/structure/structure/util/superposition.js +2 -1
  134. package/lib/commonjs/mol-model/volume/volume.d.ts +35 -2
  135. package/lib/commonjs/mol-model/volume/volume.js +77 -2
  136. package/lib/commonjs/mol-model-formats/volume/segmentation.d.ts +23 -0
  137. package/lib/commonjs/mol-model-formats/volume/segmentation.js +138 -0
  138. package/lib/commonjs/mol-plugin/behavior/dynamic/representation.d.ts +2 -2
  139. package/lib/commonjs/mol-plugin/behavior/dynamic/selection/structure-focus-representation.d.ts +1 -0
  140. package/lib/commonjs/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js +2 -1
  141. package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +2 -3
  142. package/lib/commonjs/mol-plugin/commands.d.ts +1 -0
  143. package/lib/commonjs/mol-plugin-state/animation/built-in/model-index.js +4 -1
  144. package/lib/commonjs/mol-plugin-state/builder/structure/hierarchy-preset.d.ts +2 -0
  145. package/lib/commonjs/mol-plugin-state/builder/structure/hierarchy.d.ts +1 -0
  146. package/lib/commonjs/mol-plugin-state/builder/structure/representation-preset.d.ts +13 -4
  147. package/lib/commonjs/mol-plugin-state/builder/structure/representation-preset.js +6 -1
  148. package/lib/commonjs/mol-plugin-state/builder/structure/representation.d.ts +1 -0
  149. package/lib/commonjs/mol-plugin-state/formats/provider.d.ts +2 -2
  150. package/lib/commonjs/mol-plugin-state/formats/provider.js +11 -3
  151. package/lib/commonjs/mol-plugin-state/formats/registry.js +6 -5
  152. package/lib/commonjs/mol-plugin-state/formats/volume.d.ts +27 -0
  153. package/lib/commonjs/mol-plugin-state/formats/volume.js +65 -1
  154. package/lib/commonjs/mol-plugin-state/manager/structure/component.d.ts +1 -1
  155. package/lib/commonjs/mol-plugin-state/manager/structure/component.js +18 -13
  156. package/lib/commonjs/mol-plugin-state/transforms/representation.d.ts +1 -2
  157. package/lib/commonjs/mol-plugin-state/transforms/representation.js +5 -6
  158. package/lib/commonjs/mol-plugin-state/transforms/volume.d.ts +11 -1
  159. package/lib/commonjs/mol-plugin-state/transforms/volume.js +55 -2
  160. package/lib/commonjs/mol-plugin-ui/controls/line-graph/line-graph-component.d.ts +1 -0
  161. package/lib/commonjs/mol-plugin-ui/controls/line-graph/line-graph-component.js +33 -13
  162. package/lib/commonjs/mol-plugin-ui/controls/parameters.d.ts +1 -0
  163. package/lib/commonjs/mol-plugin-ui/controls/parameters.js +22 -5
  164. package/lib/commonjs/mol-plugin-ui/sequence/sequence.d.ts +25 -17
  165. package/lib/commonjs/mol-plugin-ui/sequence.d.ts +19 -1
  166. package/lib/commonjs/mol-plugin-ui/sequence.js +8 -1
  167. package/lib/commonjs/mol-plugin-ui/state/apply-action.d.ts +2 -10
  168. package/lib/commonjs/mol-plugin-ui/state/apply-action.js +2 -2
  169. package/lib/commonjs/mol-plugin-ui/structure/quick-styles.js +2 -2
  170. package/lib/commonjs/mol-plugin-ui/structure/superposition.d.ts +1 -1
  171. package/lib/commonjs/mol-plugin-ui/structure/volume.d.ts +1 -1
  172. package/lib/commonjs/mol-plugin-ui/structure/volume.js +3 -2
  173. package/lib/commonjs/mol-repr/structure/complex-visual.d.ts +1 -0
  174. package/lib/commonjs/mol-repr/structure/params.d.ts +2 -0
  175. package/lib/commonjs/mol-repr/structure/registry.d.ts +12 -0
  176. package/lib/commonjs/mol-repr/structure/representation/backbone.d.ts +3 -0
  177. package/lib/commonjs/mol-repr/structure/representation/ball-and-stick.d.ts +6 -0
  178. package/lib/commonjs/mol-repr/structure/representation/ellipsoid.d.ts +6 -0
  179. package/lib/commonjs/mol-repr/structure/representation/gaussian-surface.d.ts +3 -0
  180. package/lib/commonjs/mol-repr/structure/representation/gaussian-volume.d.ts +3 -0
  181. package/lib/commonjs/mol-repr/structure/representation/line.d.ts +3 -0
  182. package/lib/commonjs/mol-repr/structure/representation/molecular-surface.d.ts +3 -0
  183. package/lib/commonjs/mol-repr/structure/representation/point.d.ts +3 -0
  184. package/lib/commonjs/mol-repr/structure/representation/spacefill.d.ts +6 -0
  185. package/lib/commonjs/mol-repr/structure/units-visual.d.ts +2 -0
  186. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +4 -0
  187. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-cylinder.js +2 -0
  188. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-line.d.ts +1 -0
  189. package/lib/commonjs/mol-repr/structure/visual/bond-inter-unit-line.js +1 -0
  190. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +4 -0
  191. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-cylinder.js +2 -0
  192. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.d.ts +1 -0
  193. package/lib/commonjs/mol-repr/structure/visual/bond-intra-unit-line.js +1 -0
  194. package/lib/commonjs/mol-repr/structure/visual/element-cross.d.ts +1 -0
  195. package/lib/commonjs/mol-repr/structure/visual/element-cross.js +2 -1
  196. package/lib/commonjs/mol-repr/structure/visual/element-point.d.ts +1 -0
  197. package/lib/commonjs/mol-repr/structure/visual/element-point.js +2 -1
  198. package/lib/commonjs/mol-repr/structure/visual/element-sphere.d.ts +4 -0
  199. package/lib/commonjs/mol-repr/structure/visual/element-sphere.js +3 -1
  200. package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.d.ts +2 -0
  201. package/lib/commonjs/mol-repr/structure/visual/gaussian-density-volume.js +6 -2
  202. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -0
  203. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-mesh.js +9 -1
  204. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-wireframe.d.ts +1 -0
  205. package/lib/commonjs/mol-repr/structure/visual/gaussian-surface-wireframe.js +3 -1
  206. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -0
  207. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-mesh.js +4 -0
  208. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-wireframe.d.ts +1 -0
  209. package/lib/commonjs/mol-repr/structure/visual/molecular-surface-wireframe.js +2 -0
  210. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -0
  211. package/lib/commonjs/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -0
  212. package/lib/commonjs/mol-repr/structure/visual/util/bond.d.ts +7 -0
  213. package/lib/commonjs/mol-repr/structure/visual/util/bond.js +18 -7
  214. package/lib/commonjs/mol-repr/structure/visual/util/common.d.ts +4 -1
  215. package/lib/commonjs/mol-repr/structure/visual/util/common.js +10 -6
  216. package/lib/commonjs/mol-repr/structure/visual/util/element.d.ts +1 -0
  217. package/lib/commonjs/mol-repr/structure/visual/util/element.js +2 -3
  218. package/lib/commonjs/mol-repr/structure/visual/util/gaussian.d.ts +2 -0
  219. package/lib/commonjs/mol-repr/volume/direct-volume.d.ts +4 -4
  220. package/lib/commonjs/mol-repr/volume/direct-volume.js +8 -6
  221. package/lib/commonjs/mol-repr/volume/isosurface.d.ts +4 -4
  222. package/lib/commonjs/mol-repr/volume/isosurface.js +17 -16
  223. package/lib/commonjs/mol-repr/volume/registry.d.ts +54 -1
  224. package/lib/commonjs/mol-repr/volume/registry.js +3 -1
  225. package/lib/commonjs/mol-repr/volume/representation.d.ts +11 -7
  226. package/lib/commonjs/mol-repr/volume/representation.js +142 -47
  227. package/lib/commonjs/mol-repr/volume/segment.d.ts +291 -0
  228. package/lib/commonjs/mol-repr/volume/segment.js +289 -0
  229. package/lib/commonjs/mol-repr/volume/slice.d.ts +2 -2
  230. package/lib/commonjs/mol-repr/volume/slice.js +5 -5
  231. package/lib/commonjs/mol-repr/volume/util.d.ts +12 -3
  232. package/lib/commonjs/mol-repr/volume/util.js +72 -6
  233. package/lib/commonjs/mol-script/language/builder.d.ts +1 -0
  234. package/lib/commonjs/mol-theme/color/volume-segment.d.ts +41 -0
  235. package/lib/commonjs/mol-theme/color/volume-segment.js +58 -0
  236. package/lib/commonjs/mol-theme/color/volume-value.js +2 -1
  237. package/lib/commonjs/mol-theme/color.d.ts +15 -0
  238. package/lib/commonjs/mol-theme/color.js +2 -0
  239. package/lib/commonjs/mol-theme/label.d.ts +1 -1
  240. package/lib/commonjs/mol-theme/label.js +13 -1
  241. package/lib/commonjs/mol-util/param-definition.d.ts +4 -1
  242. package/lib/commonjs/mol-util/param-definition.js +5 -2
  243. package/lib/examples/alpha-orbitals/index.html +72 -72
  244. package/lib/examples/basic-wrapper/index.html +137 -137
  245. package/lib/examples/lighting/index.html +88 -88
  246. package/lib/examples/lighting/index.js +1 -1
  247. package/lib/examples/proteopedia-wrapper/index.html +236 -236
  248. package/lib/extensions/anvil/behavior.d.ts +1 -0
  249. package/lib/extensions/cellpack/model.js +2 -1
  250. package/lib/extensions/dnatco/confal-pyramids/behavior.d.ts +1 -0
  251. package/lib/extensions/meshes/choice.d.ts +26 -0
  252. package/lib/extensions/meshes/choice.js +28 -0
  253. package/lib/extensions/meshes/examples.d.ts +26 -0
  254. package/lib/extensions/meshes/examples.js +325 -0
  255. package/lib/extensions/meshes/mesh-cif-schema.d.ts +29 -0
  256. package/lib/extensions/meshes/mesh-cif-schema.js +30 -0
  257. package/lib/extensions/meshes/mesh-extension.d.ts +66 -0
  258. package/lib/extensions/meshes/mesh-extension.js +218 -0
  259. package/lib/extensions/meshes/mesh-streaming/behavior.d.ts +105 -0
  260. package/lib/extensions/meshes/mesh-streaming/behavior.js +375 -0
  261. package/lib/extensions/meshes/mesh-streaming/server-info.d.ts +54 -0
  262. package/lib/extensions/meshes/mesh-streaming/server-info.js +26 -0
  263. package/lib/extensions/meshes/mesh-streaming/transformers.d.ts +42 -0
  264. package/lib/extensions/meshes/mesh-streaming/transformers.js +270 -0
  265. package/lib/extensions/meshes/mesh-utils.d.ts +41 -0
  266. package/lib/extensions/meshes/mesh-utils.js +346 -0
  267. package/lib/extensions/meshes/metadata.d.ts +108 -0
  268. package/lib/extensions/meshes/metadata.js +69 -0
  269. package/lib/extensions/model-archive/quality-assessment/behavior.d.ts +2 -0
  270. package/lib/extensions/model-archive/quality-assessment/prop.d.ts +1 -0
  271. package/lib/extensions/model-archive/quality-assessment/prop.js +16 -4
  272. package/lib/extensions/rcsb/assembly-symmetry/behavior.d.ts +4 -2
  273. package/lib/extensions/rcsb/validation-report/behavior.d.ts +3 -0
  274. package/lib/extensions/volumes-and-segmentations/entry-meshes.d.ts +17 -0
  275. package/lib/extensions/volumes-and-segmentations/entry-meshes.js +153 -0
  276. package/lib/extensions/volumes-and-segmentations/entry-models.d.ts +12 -0
  277. package/lib/extensions/volumes-and-segmentations/entry-models.js +93 -0
  278. package/lib/extensions/volumes-and-segmentations/entry-root.d.ts +122 -0
  279. package/lib/extensions/volumes-and-segmentations/entry-root.js +571 -0
  280. package/lib/extensions/volumes-and-segmentations/entry-segmentation.d.ts +20 -0
  281. package/lib/extensions/volumes-and-segmentations/entry-segmentation.js +197 -0
  282. package/lib/extensions/volumes-and-segmentations/entry-state.d.ts +88 -0
  283. package/lib/extensions/volumes-and-segmentations/entry-state.js +29 -0
  284. package/lib/extensions/volumes-and-segmentations/entry-volume.d.ts +35 -0
  285. package/lib/extensions/volumes-and-segmentations/entry-volume.js +231 -0
  286. package/lib/extensions/volumes-and-segmentations/external-api.d.ts +11 -0
  287. package/lib/extensions/volumes-and-segmentations/external-api.js +80 -0
  288. package/lib/extensions/volumes-and-segmentations/global-state.d.ts +51 -0
  289. package/lib/extensions/volumes-and-segmentations/global-state.js +80 -0
  290. package/lib/extensions/volumes-and-segmentations/helpers.d.ts +56 -0
  291. package/lib/extensions/volumes-and-segmentations/helpers.js +163 -0
  292. package/lib/extensions/volumes-and-segmentations/index.d.ts +20 -0
  293. package/lib/extensions/volumes-and-segmentations/index.js +127 -0
  294. package/lib/extensions/volumes-and-segmentations/transformers.d.ts +33 -0
  295. package/lib/extensions/volumes-and-segmentations/transformers.js +82 -0
  296. package/lib/extensions/volumes-and-segmentations/ui.d.ts +29 -0
  297. package/lib/extensions/volumes-and-segmentations/ui.js +229 -0
  298. package/lib/extensions/volumes-and-segmentations/volseg-api/api.d.ts +22 -0
  299. package/lib/extensions/volumes-and-segmentations/volseg-api/api.js +80 -0
  300. package/lib/extensions/volumes-and-segmentations/volseg-api/data.d.ts +92 -0
  301. package/lib/extensions/volumes-and-segmentations/volseg-api/data.js +6 -0
  302. package/lib/extensions/volumes-and-segmentations/volseg-api/utils.d.ts +23 -0
  303. package/lib/extensions/volumes-and-segmentations/volseg-api/utils.js +75 -0
  304. package/lib/mol-canvas3d/canvas3d.d.ts +2 -0
  305. package/lib/mol-canvas3d/passes/draw.js +3 -3
  306. package/lib/mol-canvas3d/passes/image.d.ts +1 -0
  307. package/lib/mol-canvas3d/passes/postprocessing.d.ts +2 -1
  308. package/lib/mol-canvas3d/passes/postprocessing.js +27 -13
  309. package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +2 -1
  310. package/lib/mol-geo/geometry/cylinders/cylinders.js +3 -2
  311. package/lib/mol-geo/geometry/lines/lines.d.ts +0 -1
  312. package/lib/mol-geo/geometry/points/points.d.ts +1 -1
  313. package/lib/mol-geo/geometry/spheres/spheres.d.ts +1 -0
  314. package/lib/mol-geo/geometry/spheres/spheres.js +3 -2
  315. package/lib/mol-gl/compute/histogram-pyramid/reduction.js +1 -2
  316. package/lib/mol-gl/compute/marching-cubes/isosurface.js +4 -6
  317. package/lib/mol-gl/renderable/cylinders.d.ts +1 -0
  318. package/lib/mol-gl/renderable/cylinders.js +1 -1
  319. package/lib/mol-gl/renderable/spheres.d.ts +1 -0
  320. package/lib/mol-gl/renderable/spheres.js +1 -1
  321. package/lib/mol-gl/shader/chunks/apply-light-color.glsl.d.ts +1 -1
  322. package/lib/mol-gl/shader/chunks/apply-light-color.glsl.js +1 -1
  323. package/lib/mol-gl/shader/chunks/clip-instance.glsl.d.ts +1 -1
  324. package/lib/mol-gl/shader/chunks/clip-instance.glsl.js +1 -1
  325. package/lib/mol-gl/shader/chunks/clip-pixel.glsl.d.ts +1 -1
  326. package/lib/mol-gl/shader/chunks/clip-pixel.glsl.js +1 -1
  327. package/lib/mol-gl/shader/chunks/common-clip.glsl.d.ts +2 -2
  328. package/lib/mol-gl/shader/chunks/common-clip.glsl.js +2 -2
  329. package/lib/mol-gl/shader/cylinders.frag.d.ts +1 -1
  330. package/lib/mol-gl/shader/cylinders.frag.js +1 -1
  331. package/lib/mol-gl/shader/cylinders.vert.d.ts +2 -2
  332. package/lib/mol-gl/shader/cylinders.vert.js +2 -2
  333. package/lib/mol-gl/shader/direct-volume.frag.d.ts +1 -1
  334. package/lib/mol-gl/shader/direct-volume.frag.js +1 -1
  335. package/lib/mol-gl/shader/outlines.frag.d.ts +1 -1
  336. package/lib/mol-gl/shader/outlines.frag.js +1 -1
  337. package/lib/mol-gl/shader/postprocessing.frag.d.ts +1 -1
  338. package/lib/mol-gl/shader/postprocessing.frag.js +1 -1
  339. package/lib/mol-gl/shader/spheres.frag.d.ts +1 -1
  340. package/lib/mol-gl/shader/spheres.frag.js +1 -1
  341. package/lib/mol-gl/shader/spheres.vert.d.ts +2 -2
  342. package/lib/mol-gl/shader/spheres.vert.js +2 -2
  343. package/lib/mol-gl/webgl/renderbuffer.d.ts +1 -1
  344. package/lib/mol-gl/webgl/renderbuffer.js +15 -0
  345. package/lib/mol-gl/webgl/state.d.ts +12 -0
  346. package/lib/mol-gl/webgl/state.js +136 -0
  347. package/lib/mol-io/reader/cif/schema/segmentation.d.ts +38 -0
  348. package/lib/mol-io/reader/cif/schema/segmentation.js +19 -0
  349. package/lib/mol-io/reader/cif.d.ts +3 -1
  350. package/lib/mol-io/reader/cif.js +3 -1
  351. package/lib/mol-model/location.d.ts +2 -1
  352. package/lib/mol-model/loci.d.ts +11 -11
  353. package/lib/mol-model/loci.js +13 -1
  354. package/lib/mol-model/sequence/alignment/sequence.d.ts +4 -1
  355. package/lib/mol-model/sequence/alignment/sequence.js +3 -2
  356. package/lib/mol-model/structure/model/properties/atomic/hierarchy.d.ts +6 -0
  357. package/lib/mol-model/structure/model/properties/utils/atomic-index.js +8 -0
  358. package/lib/mol-model/structure/structure/unit/bonds/inter-compute.js +21 -5
  359. package/lib/mol-model/structure/structure/util/superposition.d.ts +1 -0
  360. package/lib/mol-model/structure/structure/util/superposition.js +1 -1
  361. package/lib/mol-model/volume/volume.d.ts +35 -2
  362. package/lib/mol-model/volume/volume.js +79 -4
  363. package/lib/mol-model-formats/volume/segmentation.d.ts +23 -0
  364. package/lib/mol-model-formats/volume/segmentation.js +135 -0
  365. package/lib/mol-plugin/behavior/dynamic/representation.d.ts +2 -2
  366. package/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.d.ts +1 -0
  367. package/lib/mol-plugin/behavior/dynamic/selection/structure-focus-representation.js +2 -1
  368. package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +2 -3
  369. package/lib/mol-plugin/commands.d.ts +1 -0
  370. package/lib/mol-plugin/version.js +2 -2
  371. package/lib/mol-plugin-state/animation/built-in/model-index.js +4 -1
  372. package/lib/mol-plugin-state/builder/structure/hierarchy-preset.d.ts +2 -0
  373. package/lib/mol-plugin-state/builder/structure/hierarchy.d.ts +1 -0
  374. package/lib/mol-plugin-state/builder/structure/representation-preset.d.ts +13 -4
  375. package/lib/mol-plugin-state/builder/structure/representation-preset.js +6 -1
  376. package/lib/mol-plugin-state/builder/structure/representation.d.ts +1 -0
  377. package/lib/mol-plugin-state/formats/provider.d.ts +2 -2
  378. package/lib/mol-plugin-state/formats/provider.js +11 -3
  379. package/lib/mol-plugin-state/formats/registry.js +6 -5
  380. package/lib/mol-plugin-state/formats/volume.d.ts +27 -0
  381. package/lib/mol-plugin-state/formats/volume.js +64 -0
  382. package/lib/mol-plugin-state/manager/structure/component.d.ts +1 -1
  383. package/lib/mol-plugin-state/manager/structure/component.js +18 -13
  384. package/lib/mol-plugin-state/transforms/representation.d.ts +1 -2
  385. package/lib/mol-plugin-state/transforms/representation.js +5 -6
  386. package/lib/mol-plugin-state/transforms/volume.d.ts +11 -1
  387. package/lib/mol-plugin-state/transforms/volume.js +54 -1
  388. package/lib/mol-plugin-ui/controls/line-graph/line-graph-component.d.ts +1 -0
  389. package/lib/mol-plugin-ui/controls/line-graph/line-graph-component.js +33 -13
  390. package/lib/mol-plugin-ui/controls/parameters.d.ts +1 -0
  391. package/lib/mol-plugin-ui/controls/parameters.js +22 -5
  392. package/lib/mol-plugin-ui/sequence/sequence.d.ts +25 -17
  393. package/lib/mol-plugin-ui/sequence.d.ts +19 -1
  394. package/lib/mol-plugin-ui/sequence.js +7 -7
  395. package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
  396. package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
  397. package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
  398. package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
  399. package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
  400. package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
  401. package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
  402. package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
  403. package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
  404. package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
  405. package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
  406. package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
  407. package/lib/mol-plugin-ui/skin/base/components/viewport.scss +137 -128
  408. package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
  409. package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
  410. package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
  411. package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
  412. package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
  413. package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
  414. package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
  415. package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
  416. package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
  417. package/lib/mol-plugin-ui/skin/blue.scss +1 -1
  418. package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
  419. package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
  420. package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
  421. package/lib/mol-plugin-ui/skin/dark.scss +1 -1
  422. package/lib/mol-plugin-ui/skin/light.scss +1 -1
  423. package/lib/mol-plugin-ui/state/apply-action.d.ts +2 -10
  424. package/lib/mol-plugin-ui/state/apply-action.js +2 -2
  425. package/lib/mol-plugin-ui/structure/quick-styles.js +2 -2
  426. package/lib/mol-plugin-ui/structure/superposition.d.ts +1 -1
  427. package/lib/mol-plugin-ui/structure/volume.d.ts +1 -1
  428. package/lib/mol-plugin-ui/structure/volume.js +3 -2
  429. package/lib/mol-repr/structure/complex-visual.d.ts +1 -0
  430. package/lib/mol-repr/structure/params.d.ts +2 -0
  431. package/lib/mol-repr/structure/registry.d.ts +12 -0
  432. package/lib/mol-repr/structure/representation/backbone.d.ts +3 -0
  433. package/lib/mol-repr/structure/representation/ball-and-stick.d.ts +6 -0
  434. package/lib/mol-repr/structure/representation/ellipsoid.d.ts +6 -0
  435. package/lib/mol-repr/structure/representation/gaussian-surface.d.ts +3 -0
  436. package/lib/mol-repr/structure/representation/gaussian-volume.d.ts +3 -0
  437. package/lib/mol-repr/structure/representation/line.d.ts +3 -0
  438. package/lib/mol-repr/structure/representation/molecular-surface.d.ts +3 -0
  439. package/lib/mol-repr/structure/representation/point.d.ts +3 -0
  440. package/lib/mol-repr/structure/representation/spacefill.d.ts +6 -0
  441. package/lib/mol-repr/structure/units-visual.d.ts +2 -0
  442. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.d.ts +4 -0
  443. package/lib/mol-repr/structure/visual/bond-inter-unit-cylinder.js +2 -0
  444. package/lib/mol-repr/structure/visual/bond-inter-unit-line.d.ts +1 -0
  445. package/lib/mol-repr/structure/visual/bond-inter-unit-line.js +1 -0
  446. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.d.ts +4 -0
  447. package/lib/mol-repr/structure/visual/bond-intra-unit-cylinder.js +2 -0
  448. package/lib/mol-repr/structure/visual/bond-intra-unit-line.d.ts +1 -0
  449. package/lib/mol-repr/structure/visual/bond-intra-unit-line.js +1 -0
  450. package/lib/mol-repr/structure/visual/element-cross.d.ts +1 -0
  451. package/lib/mol-repr/structure/visual/element-cross.js +2 -1
  452. package/lib/mol-repr/structure/visual/element-point.d.ts +1 -0
  453. package/lib/mol-repr/structure/visual/element-point.js +2 -1
  454. package/lib/mol-repr/structure/visual/element-sphere.d.ts +4 -0
  455. package/lib/mol-repr/structure/visual/element-sphere.js +3 -1
  456. package/lib/mol-repr/structure/visual/gaussian-density-volume.d.ts +2 -0
  457. package/lib/mol-repr/structure/visual/gaussian-density-volume.js +6 -2
  458. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.d.ts +4 -0
  459. package/lib/mol-repr/structure/visual/gaussian-surface-mesh.js +9 -1
  460. package/lib/mol-repr/structure/visual/gaussian-surface-wireframe.d.ts +1 -0
  461. package/lib/mol-repr/structure/visual/gaussian-surface-wireframe.js +3 -1
  462. package/lib/mol-repr/structure/visual/molecular-surface-mesh.d.ts +1 -0
  463. package/lib/mol-repr/structure/visual/molecular-surface-mesh.js +4 -0
  464. package/lib/mol-repr/structure/visual/molecular-surface-wireframe.d.ts +1 -0
  465. package/lib/mol-repr/structure/visual/molecular-surface-wireframe.js +2 -0
  466. package/lib/mol-repr/structure/visual/polymer-backbone-cylinder.d.ts +2 -0
  467. package/lib/mol-repr/structure/visual/polymer-backbone-sphere.d.ts +2 -0
  468. package/lib/mol-repr/structure/visual/util/bond.d.ts +7 -0
  469. package/lib/mol-repr/structure/visual/util/bond.js +19 -8
  470. package/lib/mol-repr/structure/visual/util/common.d.ts +4 -1
  471. package/lib/mol-repr/structure/visual/util/common.js +10 -6
  472. package/lib/mol-repr/structure/visual/util/element.d.ts +1 -0
  473. package/lib/mol-repr/structure/visual/util/element.js +3 -4
  474. package/lib/mol-repr/structure/visual/util/gaussian.d.ts +2 -0
  475. package/lib/mol-repr/volume/direct-volume.d.ts +4 -4
  476. package/lib/mol-repr/volume/direct-volume.js +8 -6
  477. package/lib/mol-repr/volume/isosurface.d.ts +4 -4
  478. package/lib/mol-repr/volume/isosurface.js +17 -16
  479. package/lib/mol-repr/volume/registry.d.ts +54 -1
  480. package/lib/mol-repr/volume/registry.js +3 -1
  481. package/lib/mol-repr/volume/representation.d.ts +11 -7
  482. package/lib/mol-repr/volume/representation.js +144 -49
  483. package/lib/mol-repr/volume/segment.d.ts +291 -0
  484. package/lib/mol-repr/volume/segment.js +279 -0
  485. package/lib/mol-repr/volume/slice.d.ts +2 -2
  486. package/lib/mol-repr/volume/slice.js +5 -5
  487. package/lib/mol-repr/volume/util.d.ts +12 -3
  488. package/lib/mol-repr/volume/util.js +71 -6
  489. package/lib/mol-script/language/builder.d.ts +1 -0
  490. package/lib/mol-theme/color/volume-segment.d.ts +41 -0
  491. package/lib/mol-theme/color/volume-segment.js +53 -0
  492. package/lib/mol-theme/color/volume-value.js +2 -1
  493. package/lib/mol-theme/color.d.ts +15 -0
  494. package/lib/mol-theme/color.js +2 -0
  495. package/lib/mol-theme/label.d.ts +1 -1
  496. package/lib/mol-theme/label.js +13 -1
  497. package/lib/mol-util/param-definition.d.ts +4 -1
  498. package/lib/mol-util/param-definition.js +5 -2
  499. package/package.json +169 -168
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
+ * @author David Sehnal <david.sehnal@gmail.com>
5
6
  */
6
7
  import { __assign } from "tslib";
7
8
  import { BondType } from '../../../../mol-model/structure/model/types';
@@ -12,11 +13,12 @@ import { LinkCylinderParams, LinkLineParams } from './link';
12
13
  import { ObjectKeys } from '../../../../mol-util/type-helpers';
13
14
  import { EmptyLoci } from '../../../../mol-model/loci';
14
15
  import { Interval, OrderedSet, SortedArray } from '../../../../mol-data/int';
15
- import { isH, isHydrogen } from './common';
16
+ import { isHydrogen } from './common';
16
17
  export var BondParams = {
17
18
  includeTypes: PD.MultiSelect(ObjectKeys(BondType.Names), PD.objectToOptions(BondType.Names)),
18
19
  excludeTypes: PD.MultiSelect([], PD.objectToOptions(BondType.Names)),
19
20
  ignoreHydrogens: PD.Boolean(false),
21
+ ignoreHydrogensVariant: PD.Select('all', PD.arrayToOptions(['all', 'non-polar'])),
20
22
  aromaticBonds: PD.Boolean(true, { description: 'Display aromatic bonds with dashes' }),
21
23
  multipleBonds: PD.Select('symmetric', PD.arrayToOptions(['off', 'symmetric', 'offset'])),
22
24
  };
@@ -30,11 +32,10 @@ export function ignoreBondType(include, exclude, f) {
30
32
  }
31
33
  export function makeIntraBondIgnoreTest(structure, unit, props) {
32
34
  var elements = unit.elements;
33
- var atomicNumber = unit.model.atomicHierarchy.derived.atom.atomicNumber;
34
35
  var bonds = unit.bonds;
35
36
  var a = bonds.a, b = bonds.b, edgeProps = bonds.edgeProps;
36
37
  var _flags = edgeProps.flags;
37
- var ignoreHydrogens = props.ignoreHydrogens, includeTypes = props.includeTypes, excludeTypes = props.excludeTypes;
38
+ var ignoreHydrogens = props.ignoreHydrogens, ignoreHydrogensVariant = props.ignoreHydrogensVariant, includeTypes = props.includeTypes, excludeTypes = props.excludeTypes;
38
39
  var include = BondType.fromNames(includeTypes);
39
40
  var exclude = BondType.fromNames(excludeTypes);
40
41
  var allBondTypes = BondType.isAll(include) && 0 /* BondType.Flag.None */ === exclude;
@@ -45,15 +46,25 @@ export function makeIntraBondIgnoreTest(structure, unit, props) {
45
46
  if (allBondTypes && !ignoreHydrogens && !child)
46
47
  return;
47
48
  return function (edgeIndex) {
48
- return ((!!childUnit && !SortedArray.has(childUnit.elements, elements[a[edgeIndex]])) ||
49
- (ignoreHydrogens && (isH(atomicNumber, elements[a[edgeIndex]]) || isH(atomicNumber, elements[b[edgeIndex]]))) ||
50
- (!allBondTypes && ignoreBondType(include, exclude, _flags[edgeIndex])));
49
+ var aI = a[edgeIndex];
50
+ var bI = b[edgeIndex];
51
+ if ((!!childUnit && !SortedArray.has(childUnit.elements, elements[aI]))) {
52
+ return true;
53
+ }
54
+ if (!allBondTypes && ignoreBondType(include, exclude, _flags[edgeIndex])) {
55
+ return true;
56
+ }
57
+ if (!ignoreHydrogens)
58
+ return false;
59
+ if (isHydrogen(structure, unit, elements[aI], ignoreHydrogensVariant) || isHydrogen(structure, unit, elements[bI], ignoreHydrogensVariant))
60
+ return true;
61
+ return false;
51
62
  };
52
63
  }
53
64
  export function makeInterBondIgnoreTest(structure, props) {
54
65
  var bonds = structure.interUnitBonds;
55
66
  var edges = bonds.edges;
56
- var ignoreHydrogens = props.ignoreHydrogens, includeTypes = props.includeTypes, excludeTypes = props.excludeTypes;
67
+ var ignoreHydrogens = props.ignoreHydrogens, ignoreHydrogensVariant = props.ignoreHydrogensVariant, includeTypes = props.includeTypes, excludeTypes = props.excludeTypes;
57
68
  var include = BondType.fromNames(includeTypes);
58
69
  var exclude = BondType.fromNames(excludeTypes);
59
70
  var allBondTypes = BondType.isAll(include) && 0 /* BondType.Flag.None */ === exclude;
@@ -75,7 +86,7 @@ export function makeInterBondIgnoreTest(structure, props) {
75
86
  var b = edges[edgeIndex];
76
87
  var uA = structure.unitMap.get(b.unitA);
77
88
  var uB = structure.unitMap.get(b.unitB);
78
- if (isHydrogen(uA, uA.elements[b.indexA]) || isHydrogen(uB, uB.elements[b.indexB]))
89
+ if (isHydrogen(structure, uA, uA.elements[b.indexA], ignoreHydrogensVariant) || isHydrogen(structure, uB, uB.elements[b.indexB], ignoreHydrogensVariant))
79
90
  return true;
80
91
  }
81
92
  if (!allBondTypes) {
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
+ * @author David Sehnal <david.sehnal@gmail.com>
5
6
  */
6
7
  import { Unit, Structure, ElementIndex, StructureElement, ResidueIndex } from '../../../../mol-model/structure';
7
8
  import { TransformData } from '../../../../mol-geo/geometry/transform-data';
@@ -52,11 +53,13 @@ export declare function ensureReasonableResolution<T>(box: Box3D, props: {
52
53
  export declare function getConformation(unit: Unit): import("../../../../mol-model/structure/model/properties/atomic").AtomicConformation | import("../../../../mol-model/structure/model/properties/coarse").CoarseSphereConformation | import("../../../../mol-model/structure/model/properties/coarse").CoarseGaussianConformation;
53
54
  export declare const CommonSurfaceParams: {
54
55
  ignoreHydrogens: PD.BooleanParam;
56
+ ignoreHydrogensVariant: PD.Select<"all" | "non-polar">;
55
57
  traceOnly: PD.BooleanParam;
56
58
  includeParent: PD.BooleanParam;
57
59
  };
58
60
  export declare const DefaultCommonSurfaceProps: PD.Values<{
59
61
  ignoreHydrogens: PD.BooleanParam;
62
+ ignoreHydrogensVariant: PD.Select<"all" | "non-polar">;
60
63
  traceOnly: PD.BooleanParam;
61
64
  includeParent: PD.BooleanParam;
62
65
  }>;
@@ -83,6 +86,6 @@ export declare function getStructureConformationAndRadius(structure: Structure,
83
86
  boundary: import("../../../../mol-math/geometry/boundary").Boundary;
84
87
  radius: (index: number) => number;
85
88
  };
86
- export declare function isHydrogen(unit: Unit, element: ElementIndex): boolean;
89
+ export declare function isHydrogen(structure: Structure, unit: Unit, element: ElementIndex, variant: 'all' | 'non-polar'): boolean;
87
90
  export declare function isH(atomicNumber: ArrayLike<number>, element: ElementIndex): boolean;
88
91
  export declare function isTrace(unit: Unit, element: ElementIndex): boolean;
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
+ * @author David Sehnal <david.sehnal@gmail.com>
5
6
  */
6
7
  import { __assign } from "tslib";
7
8
  import { Unit, StructureElement } from '../../../../mol-model/structure';
@@ -14,6 +15,7 @@ import { fillSerial } from '../../../../mol-util/array';
14
15
  import { ParamDefinition as PD } from '../../../../mol-util/param-definition';
15
16
  import { getBoundary } from '../../../../mol-math/geometry/boundary';
16
17
  import { Box3D } from '../../../../mol-math/geometry';
18
+ import { hasPolarNeighbour } from '../../../../mol-model-props/computed/chemistry/functional-group';
17
19
  /** Return a Loci for the elements of a whole residue the elementIndex belongs to. */
18
20
  export function getResidueLoci(structure, unit, elementIndex) {
19
21
  var elements = unit.elements, model = unit.model;
@@ -125,6 +127,7 @@ export function getConformation(unit) {
125
127
  }
126
128
  export var CommonSurfaceParams = {
127
129
  ignoreHydrogens: PD.Boolean(false, { description: 'Whether or not to include hydrogen atoms in the surface calculation.' }),
130
+ ignoreHydrogensVariant: PD.Select('all', PD.arrayToOptions(['all', 'non-polar'])),
128
131
  traceOnly: PD.Boolean(false, { description: 'Whether or not to only use trace atoms in the surface calculation.' }),
129
132
  includeParent: PD.Boolean(false, { description: 'Include elements of the parent structure in surface calculation to get a surface patch of the current structure.' }),
130
133
  };
@@ -149,7 +152,7 @@ function filterUnitId(id, elements, indices) {
149
152
  }
150
153
  }
151
154
  export function getUnitConformationAndRadius(structure, unit, sizeTheme, props) {
152
- var ignoreHydrogens = props.ignoreHydrogens, traceOnly = props.traceOnly, includeParent = props.includeParent;
155
+ var ignoreHydrogens = props.ignoreHydrogens, ignoreHydrogensVariant = props.ignoreHydrogensVariant, traceOnly = props.traceOnly, includeParent = props.includeParent;
153
156
  var rootUnit = includeParent ? structure.root.unitMap.get(unit.id) : unit;
154
157
  var differentRoot = includeParent && rootUnit !== unit;
155
158
  var _a = getConformation(rootUnit), x = _a.x, y = _a.y, z = _a.z;
@@ -164,7 +167,7 @@ export function getUnitConformationAndRadius(structure, unit, sizeTheme, props)
164
167
  var _id = [];
165
168
  for (var i = 0, il = elements.length; i < il; ++i) {
166
169
  var eI = elements[i];
167
- if (ignoreHydrogens && isHydrogen(rootUnit, eI))
170
+ if (ignoreHydrogens && isHydrogen(structure, rootUnit, eI, ignoreHydrogensVariant))
168
171
  continue;
169
172
  if (traceOnly && !isTrace(rootUnit, eI))
170
173
  continue;
@@ -193,7 +196,7 @@ export function getUnitConformationAndRadius(structure, unit, sizeTheme, props)
193
196
  return { position: position, boundary: boundary, radius: radius };
194
197
  }
195
198
  export function getStructureConformationAndRadius(structure, sizeTheme, props) {
196
- var ignoreHydrogens = props.ignoreHydrogens, traceOnly = props.traceOnly, includeParent = props.includeParent;
199
+ var ignoreHydrogens = props.ignoreHydrogens, ignoreHydrogensVariant = props.ignoreHydrogensVariant, traceOnly = props.traceOnly, includeParent = props.includeParent;
197
200
  var differentRoot = includeParent && !!structure.parent;
198
201
  var l = StructureElement.Location.create(structure.root);
199
202
  var _a = structure.boundary.sphere, center = _a.center, sphereRadius = _a.radius;
@@ -221,7 +224,7 @@ export function getStructureConformationAndRadius(structure, sizeTheme, props) {
221
224
  l.unit = unit;
222
225
  for (var j = 0, jl = elements.length; j < jl; ++j) {
223
226
  var eI = elements[j];
224
- if (ignoreHydrogens && isHydrogen(unit, eI))
227
+ if (ignoreHydrogens && isHydrogen(structure, unit, eI, ignoreHydrogensVariant))
225
228
  continue;
226
229
  if (traceOnly && !isTrace(unit, eI))
227
230
  continue;
@@ -283,10 +286,11 @@ export function getStructureConformationAndRadius(structure, sizeTheme, props) {
283
286
  return { position: position, boundary: boundary, radius: radius };
284
287
  }
285
288
  var _H = AtomicNumbers['H'];
286
- export function isHydrogen(unit, element) {
289
+ export function isHydrogen(structure, unit, element, variant) {
287
290
  if (Unit.isCoarse(unit))
288
291
  return false;
289
- return unit.model.atomicHierarchy.derived.atom.atomicNumber[element] === _H;
292
+ return (unit.model.atomicHierarchy.derived.atom.atomicNumber[element] === _H &&
293
+ (variant === 'all' || !hasPolarNeighbour(structure, unit, SortedArray.indexOf(unit.elements, element))));
290
294
  }
291
295
  export function isH(atomicNumber, element) {
292
296
  return atomicNumber[element] === _H;
@@ -16,6 +16,7 @@ import { Spheres } from '../../../../mol-geo/geometry/spheres/spheres';
16
16
  import { StructureGroup } from './common';
17
17
  type ElementProps = {
18
18
  ignoreHydrogens: boolean;
19
+ ignoreHydrogensVariant: 'all' | 'non-polar';
19
20
  traceOnly: boolean;
20
21
  };
21
22
  export type ElementSphereMeshProps = {
@@ -15,13 +15,12 @@ import { addSphere } from '../../../../mol-geo/geometry/mesh/builder/sphere';
15
15
  import { LocationIterator } from '../../../../mol-geo/util/location-iterator';
16
16
  import { Spheres } from '../../../../mol-geo/geometry/spheres/spheres';
17
17
  import { SpheresBuilder } from '../../../../mol-geo/geometry/spheres/spheres-builder';
18
- import { isTrace, isH } from './common';
18
+ import { isTrace, isHydrogen } from './common';
19
19
  import { Sphere3D } from '../../../../mol-math/geometry';
20
20
  // avoiding namespace lookup improved performance in Chrome (Aug 2020)
21
21
  var v3add = Vec3.add;
22
22
  export function makeElementIgnoreTest(structure, unit, props) {
23
- var ignoreHydrogens = props.ignoreHydrogens, traceOnly = props.traceOnly;
24
- var atomicNumber = unit.model.atomicHierarchy.derived.atom.atomicNumber;
23
+ var ignoreHydrogens = props.ignoreHydrogens, ignoreHydrogensVariant = props.ignoreHydrogensVariant, traceOnly = props.traceOnly;
25
24
  var isCoarse = Unit.isCoarse(unit);
26
25
  var child = structure.child;
27
26
  var childUnit = child === null || child === void 0 ? void 0 : child.unitMap.get(unit.id);
@@ -31,7 +30,7 @@ export function makeElementIgnoreTest(structure, unit, props) {
31
30
  return;
32
31
  return function (element) {
33
32
  return ((!!childUnit && !SortedArray.has(childUnit.elements, element)) ||
34
- (!isCoarse && ignoreHydrogens && isH(atomicNumber, element)) ||
33
+ (!isCoarse && ignoreHydrogens && isHydrogen(structure, unit, element, ignoreHydrogensVariant)) ||
35
34
  (traceOnly && !isTrace(unit, element)));
36
35
  };
37
36
  }
@@ -11,6 +11,7 @@ import { WebGLContext } from '../../../../mol-gl/webgl/context';
11
11
  import { SizeTheme } from '../../../../mol-theme/size';
12
12
  export declare const GaussianDensityParams: {
13
13
  ignoreHydrogens: PD.BooleanParam;
14
+ ignoreHydrogensVariant: PD.Select<"all" | "non-polar">;
14
15
  traceOnly: PD.BooleanParam;
15
16
  includeParent: PD.BooleanParam;
16
17
  resolution: PD.Numeric;
@@ -19,6 +20,7 @@ export declare const GaussianDensityParams: {
19
20
  };
20
21
  export declare const DefaultGaussianDensityProps: PD.Values<{
21
22
  ignoreHydrogens: PD.BooleanParam;
23
+ ignoreHydrogensVariant: PD.Select<"all" | "non-polar">;
22
24
  traceOnly: PD.BooleanParam;
23
25
  includeParent: PD.BooleanParam;
24
26
  resolution: PD.Numeric;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -17,11 +17,11 @@ import { Loci } from '../../mol-model/loci';
17
17
  import { PickingId } from '../../mol-geo/geometry/picking';
18
18
  export declare function createDirectVolume2d(ctx: RuntimeContext, webgl: WebGLContext, volume: Volume, directVolume?: DirectVolume): DirectVolume;
19
19
  export declare function createDirectVolume3d(ctx: RuntimeContext, webgl: WebGLContext, volume: Volume, directVolume?: DirectVolume): DirectVolume;
20
- export declare function createDirectVolume(ctx: VisualContext, volume: Volume, theme: Theme, props: PD.Values<DirectVolumeParams>, directVolume?: DirectVolume): Promise<DirectVolume>;
21
- export declare function getDirectVolumeLoci(pickingId: PickingId, volume: Volume, props: DirectVolumeProps, id: number): Volume.Cell.Loci | {
20
+ export declare function createDirectVolume(ctx: VisualContext, volume: Volume, key: number, theme: Theme, props: PD.Values<DirectVolumeParams>, directVolume?: DirectVolume): Promise<DirectVolume>;
21
+ export declare function getDirectVolumeLoci(pickingId: PickingId, volume: Volume, key: number, props: DirectVolumeProps, id: number): Volume.Cell.Loci | {
22
22
  kind: "empty-loci";
23
23
  };
24
- export declare function eachDirectVolume(loci: Loci, volume: Volume, props: DirectVolumeProps, apply: (interval: Interval) => boolean): boolean;
24
+ export declare function eachDirectVolume(loci: Loci, volume: Volume, key: number, props: DirectVolumeProps, apply: (interval: Interval) => boolean): boolean;
25
25
  export declare const DirectVolumeParams: {
26
26
  quality: {
27
27
  isEssential: boolean;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -68,7 +68,7 @@ export function createDirectVolume3d(ctx, webgl, volume, directVolume) {
68
68
  return DirectVolume.create(bbox, gridDimension, transform, unitToCartn, cellDim, texture, volume.grid.stats, false, axisOrder, directVolume);
69
69
  }
70
70
  //
71
- export function createDirectVolume(ctx, volume, theme, props, directVolume) {
71
+ export function createDirectVolume(ctx, volume, key, theme, props, directVolume) {
72
72
  return __awaiter(this, void 0, void 0, function () {
73
73
  var runtime, webgl;
74
74
  return __generator(this, function (_a) {
@@ -84,20 +84,22 @@ export function createDirectVolume(ctx, volume, theme, props, directVolume) {
84
84
  function getLoci(volume, props) {
85
85
  return Volume.Loci(volume);
86
86
  }
87
- export function getDirectVolumeLoci(pickingId, volume, props, id) {
87
+ export function getDirectVolumeLoci(pickingId, volume, key, props, id) {
88
88
  var objectId = pickingId.objectId, groupId = pickingId.groupId;
89
89
  if (id === objectId) {
90
90
  return Volume.Cell.Loci(volume, Interval.ofSingleton(groupId));
91
91
  }
92
92
  return EmptyLoci;
93
93
  }
94
- export function eachDirectVolume(loci, volume, props, apply) {
94
+ export function eachDirectVolume(loci, volume, key, props, apply) {
95
95
  return eachVolumeLoci(loci, volume, undefined, apply);
96
96
  }
97
97
  //
98
98
  export var DirectVolumeParams = __assign(__assign({}, DirectVolume.Params), { quality: __assign(__assign({}, DirectVolume.Params.quality), { isEssential: false }) });
99
99
  export function getDirectVolumeParams(ctx, volume) {
100
- return PD.clone(DirectVolumeParams);
100
+ var params = PD.clone(DirectVolumeParams);
101
+ params.controlPoints.getVolume = function () { return volume; };
102
+ return params;
101
103
  }
102
104
  export function DirectVolumeVisual(materialId) {
103
105
  return VolumeVisual({
@@ -126,5 +128,5 @@ export var DirectVolumeRepresentationProvider = VolumeRepresentationProvider({
126
128
  defaultValues: PD.getDefaultValues(DirectVolumeParams),
127
129
  defaultColorTheme: { name: 'volume-value' },
128
130
  defaultSizeTheme: { name: 'uniform' },
129
- isApplicable: function (volume) { return !Volume.isEmpty(volume); }
131
+ isApplicable: function (volume) { return !Volume.isEmpty(volume) && !Volume.Segmentation.get(volume); }
130
132
  });
@@ -41,7 +41,7 @@ export declare const VolumeIsosurfaceParams: {
41
41
  };
42
42
  export type VolumeIsosurfaceParams = typeof VolumeIsosurfaceParams;
43
43
  export type VolumeIsosurfaceProps = PD.Values<VolumeIsosurfaceParams>;
44
- export declare function IsosurfaceVisual(materialId: number, volume: Volume, props: PD.Values<IsosurfaceMeshParams>, webgl?: WebGLContext): VolumeVisual<{
44
+ export declare function IsosurfaceVisual(materialId: number, volume: Volume, key: number, props: PD.Values<IsosurfaceMeshParams>, webgl?: WebGLContext): VolumeVisual<{
45
45
  quality: {
46
46
  isEssential: boolean;
47
47
  type: "select";
@@ -114,8 +114,8 @@ export declare function IsosurfaceVisual(materialId: number, volume: Volume, pro
114
114
  }>>;
115
115
  instanceGranularity: PD.BooleanParam;
116
116
  }>;
117
- export declare function eachIsosurface(loci: Loci, volume: Volume, props: VolumeIsosurfaceProps, apply: (interval: Interval) => boolean): boolean;
118
- export declare function createVolumeIsosurfaceMesh(ctx: VisualContext, volume: Volume, theme: Theme, props: VolumeIsosurfaceProps, mesh?: Mesh): Promise<Mesh>;
117
+ export declare function eachIsosurface(loci: Loci, volume: Volume, key: number, props: VolumeIsosurfaceProps, apply: (interval: Interval) => boolean): boolean;
118
+ export declare function createVolumeIsosurfaceMesh(ctx: VisualContext, volume: Volume, key: number, theme: Theme, props: VolumeIsosurfaceProps, mesh?: Mesh): Promise<Mesh>;
119
119
  export declare const IsosurfaceMeshParams: {
120
120
  quality: {
121
121
  isEssential: boolean;
@@ -192,7 +192,7 @@ export declare const IsosurfaceMeshParams: {
192
192
  export type IsosurfaceMeshParams = typeof IsosurfaceMeshParams;
193
193
  export declare function IsosurfaceMeshVisual(materialId: number): VolumeVisual<IsosurfaceMeshParams>;
194
194
  export declare function IsosurfaceTextureMeshVisual(materialId: number): VolumeVisual<IsosurfaceMeshParams>;
195
- export declare function createVolumeIsosurfaceWireframe(ctx: VisualContext, volume: Volume, theme: Theme, props: VolumeIsosurfaceProps, lines?: Lines): Promise<Lines>;
195
+ export declare function createVolumeIsosurfaceWireframe(ctx: VisualContext, volume: Volume, key: number, theme: Theme, props: VolumeIsosurfaceProps, lines?: Lines): Promise<Lines>;
196
196
  export declare const IsosurfaceWireframeParams: {
197
197
  quality: {
198
198
  isEssential: boolean;
@@ -41,7 +41,7 @@ function suitableForGpu(volume, webgl) {
41
41
  var powerOfTwoSize = getVolumeTexture2dLayout(gridDim, Padding).powerOfTwoSize;
42
42
  return powerOfTwoSize <= webgl.maxTextureSize / 2;
43
43
  }
44
- export function IsosurfaceVisual(materialId, volume, props, webgl) {
44
+ export function IsosurfaceVisual(materialId, volume, key, props, webgl) {
45
45
  if (props.tryUseGpu && webgl && gpuSupport(webgl) && suitableForGpu(volume, webgl)) {
46
46
  return IsosurfaceTextureMeshVisual(materialId);
47
47
  }
@@ -50,7 +50,7 @@ export function IsosurfaceVisual(materialId, volume, props, webgl) {
50
50
  function getLoci(volume, props) {
51
51
  return Volume.Isosurface.Loci(volume, props.isoValue);
52
52
  }
53
- function getIsosurfaceLoci(pickingId, volume, props, id) {
53
+ function getIsosurfaceLoci(pickingId, volume, key, props, id) {
54
54
  var objectId = pickingId.objectId, groupId = pickingId.groupId;
55
55
  if (id === objectId) {
56
56
  var granularity = Volume.PickingGranularity.get(volume);
@@ -66,11 +66,11 @@ function getIsosurfaceLoci(pickingId, volume, props, id) {
66
66
  }
67
67
  return EmptyLoci;
68
68
  }
69
- export function eachIsosurface(loci, volume, props, apply) {
70
- return eachVolumeLoci(loci, volume, props.isoValue, apply);
69
+ export function eachIsosurface(loci, volume, key, props, apply) {
70
+ return eachVolumeLoci(loci, volume, { isoValue: props.isoValue }, apply);
71
71
  }
72
72
  //
73
- export function createVolumeIsosurfaceMesh(ctx, volume, theme, props, mesh) {
73
+ export function createVolumeIsosurfaceMesh(ctx, volume, key, theme, props, mesh) {
74
74
  return __awaiter(this, void 0, void 0, function () {
75
75
  var ids, surface, transform;
76
76
  return __generator(this, function (_a) {
@@ -96,7 +96,7 @@ export function createVolumeIsosurfaceMesh(ctx, volume, theme, props, mesh) {
96
96
  else {
97
97
  ValueCell.updateIfChanged(surface.varyingGroup, true);
98
98
  }
99
- surface.setBoundingSphere(Volume.getBoundingSphere(volume));
99
+ surface.setBoundingSphere(Volume.Isosurface.getBoundingSphere(volume, props.isoValue));
100
100
  return [2 /*return*/, surface];
101
101
  }
102
102
  });
@@ -115,8 +115,8 @@ export function IsosurfaceMeshVisual(materialId) {
115
115
  state.createGeometry = true;
116
116
  },
117
117
  geometryUtils: Mesh.Utils,
118
- mustRecreate: function (volume, props, webgl) {
119
- return props.tryUseGpu && !!webgl && suitableForGpu(volume, webgl);
118
+ mustRecreate: function (volumekey, props, webgl) {
119
+ return props.tryUseGpu && !!webgl && suitableForGpu(volumekey.volume, webgl);
120
120
  }
121
121
  }, materialId);
122
122
  }
@@ -157,9 +157,9 @@ var VolumeIsosurfaceTexture;
157
157
  }
158
158
  VolumeIsosurfaceTexture.get = get;
159
159
  })(VolumeIsosurfaceTexture || (VolumeIsosurfaceTexture = {}));
160
- function createVolumeIsosurfaceTextureMesh(ctx, volume, theme, props, textureMesh) {
160
+ function createVolumeIsosurfaceTextureMesh(ctx, volume, key, theme, props, textureMesh) {
161
161
  return __awaiter(this, void 0, void 0, function () {
162
- var _a, max, min, diff, value, isoLevel, _b, texture, gridDimension, gridTexDim, gridTexScale, transform, axisOrder, buffer, gv, groupCount, surface;
162
+ var _a, max, min, diff, value, isoLevel, _b, texture, gridDimension, gridTexDim, gridTexScale, transform, axisOrder, buffer, gv, groupCount, boundingSphere, surface;
163
163
  return __generator(this, function (_c) {
164
164
  if (!ctx.webgl)
165
165
  throw new Error('webgl context required to create volume isosurface texture-mesh');
@@ -175,7 +175,8 @@ function createVolumeIsosurfaceTextureMesh(ctx, volume, theme, props, textureMes
175
175
  buffer = textureMesh === null || textureMesh === void 0 ? void 0 : textureMesh.doubleBuffer.get();
176
176
  gv = extractIsosurface(ctx.webgl, texture, gridDimension, gridTexDim, gridTexScale, transform, isoLevel, value < 0, false, axisOrder, true, buffer === null || buffer === void 0 ? void 0 : buffer.vertex, buffer === null || buffer === void 0 ? void 0 : buffer.group, buffer === null || buffer === void 0 ? void 0 : buffer.normal);
177
177
  groupCount = volume.grid.cells.data.length;
178
- surface = TextureMesh.create(gv.vertexCount, groupCount, gv.vertexTexture, gv.groupTexture, gv.normalTexture, Volume.getBoundingSphere(volume), textureMesh);
178
+ boundingSphere = Volume.getBoundingSphere(volume);
179
+ surface = TextureMesh.create(gv.vertexCount, groupCount, gv.vertexTexture, gv.groupTexture, gv.normalTexture, boundingSphere, textureMesh);
179
180
  surface.meta.webgl = ctx.webgl;
180
181
  return [2 /*return*/, surface];
181
182
  });
@@ -193,8 +194,8 @@ export function IsosurfaceTextureMeshVisual(materialId) {
193
194
  state.createGeometry = true;
194
195
  },
195
196
  geometryUtils: TextureMesh.Utils,
196
- mustRecreate: function (volume, props, webgl) {
197
- return !props.tryUseGpu || !webgl || !suitableForGpu(volume, webgl);
197
+ mustRecreate: function (volumeKey, props, webgl) {
198
+ return !props.tryUseGpu || !webgl || !suitableForGpu(volumeKey.volume, webgl);
198
199
  },
199
200
  dispose: function (geometry) {
200
201
  geometry.vertexTexture.ref.value.destroy();
@@ -205,7 +206,7 @@ export function IsosurfaceTextureMeshVisual(materialId) {
205
206
  }, materialId);
206
207
  }
207
208
  //
208
- export function createVolumeIsosurfaceWireframe(ctx, volume, theme, props, lines) {
209
+ export function createVolumeIsosurfaceWireframe(ctx, volume, key, theme, props, lines) {
209
210
  return __awaiter(this, void 0, void 0, function () {
210
211
  var ids, wireframe, transform;
211
212
  return __generator(this, function (_a) {
@@ -222,7 +223,7 @@ export function createVolumeIsosurfaceWireframe(ctx, volume, theme, props, lines
222
223
  wireframe = _a.sent();
223
224
  transform = Grid.getGridToCartesianTransform(volume.grid);
224
225
  Lines.transform(wireframe, transform);
225
- wireframe.setBoundingSphere(Volume.getBoundingSphere(volume));
226
+ wireframe.setBoundingSphere(Volume.Isosurface.getBoundingSphere(volume, props.isoValue));
226
227
  return [2 /*return*/, wireframe];
227
228
  }
228
229
  });
@@ -266,5 +267,5 @@ export var IsosurfaceRepresentationProvider = VolumeRepresentationProvider({
266
267
  defaultValues: PD.getDefaultValues(IsosurfaceParams),
267
268
  defaultColorTheme: { name: 'uniform' },
268
269
  defaultSizeTheme: { name: 'uniform' },
269
- isApplicable: function (volume) { return !Volume.isEmpty(volume); }
270
+ isApplicable: function (volume) { return !Volume.isEmpty(volume) && !Volume.Segmentation.get(volume); }
270
271
  });
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -199,6 +199,59 @@ export declare namespace VolumeRepresentationRegistry {
199
199
  }>>;
200
200
  instanceGranularity: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
201
201
  }, "direct-volume">;
202
+ segment: import("./representation").VolumeRepresentationProvider<{
203
+ visuals: import("../../mol-util/param-definition").ParamDefinition.MultiSelect<"segment">;
204
+ bumpFrequency: import("../../mol-util/param-definition").ParamDefinition.Numeric;
205
+ quality: {
206
+ isEssential: boolean;
207
+ type: "select";
208
+ options: readonly (readonly ["auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest", string] | readonly ["auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest", string, string | undefined])[];
209
+ cycle?: boolean | undefined;
210
+ isOptional?: boolean | undefined;
211
+ defaultValue: "auto" | "medium" | "high" | "low" | "custom" | "highest" | "higher" | "lower" | "lowest";
212
+ label?: string | undefined;
213
+ description?: string | undefined;
214
+ legend?: import("../../mol-util/legend").Legend | undefined;
215
+ fieldLabels?: {
216
+ [name: string]: string;
217
+ } | undefined;
218
+ isHidden?: boolean | undefined;
219
+ shortLabel?: boolean | undefined;
220
+ twoColumns?: boolean | undefined;
221
+ category?: string | undefined;
222
+ hideIf?: ((currentGroup: any) => boolean) | undefined;
223
+ help?: ((value: any) => {
224
+ description?: string | undefined;
225
+ legend?: import("../../mol-util/legend").Legend | undefined;
226
+ }) | undefined;
227
+ };
228
+ tryUseGpu: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
229
+ segments: import("../../mol-util/param-definition").ParamDefinition.Converted<number[], string[]>;
230
+ doubleSided: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
231
+ flipSided: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
232
+ flatShaded: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
233
+ ignoreLight: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
234
+ xrayShaded: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
235
+ transparentBackfaces: import("../../mol-util/param-definition").ParamDefinition.Select<string>;
236
+ bumpAmplitude: import("../../mol-util/param-definition").ParamDefinition.Numeric;
237
+ alpha: import("../../mol-util/param-definition").ParamDefinition.Numeric;
238
+ material: import("../../mol-util/param-definition").ParamDefinition.Group<import("../../mol-util/param-definition").ParamDefinition.Normalize<{
239
+ metalness: number;
240
+ roughness: number;
241
+ bumpiness: number;
242
+ }>>;
243
+ clip: import("../../mol-util/param-definition").ParamDefinition.Group<import("../../mol-util/param-definition").ParamDefinition.Normalize<{
244
+ variant: import("../../mol-util/clip").Clip.Variant;
245
+ objects: import("../../mol-util/param-definition").ParamDefinition.Normalize<{
246
+ type: any;
247
+ invert: any;
248
+ position: any;
249
+ rotation: any;
250
+ scale: any;
251
+ }>[];
252
+ }>>;
253
+ instanceGranularity: import("../../mol-util/param-definition").ParamDefinition.BooleanParam;
254
+ }, "segment">;
202
255
  };
203
256
  type _BuiltIn = typeof BuiltIn;
204
257
  export type BuiltIn = keyof _BuiltIn;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
2
+ * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
3
3
  *
4
4
  * @author Alexander Rose <alexander.rose@weirdbyte.de>
5
5
  */
@@ -9,6 +9,7 @@ import { IsosurfaceRepresentationProvider } from './isosurface';
9
9
  import { objectForEach } from '../../mol-util/object';
10
10
  import { SliceRepresentationProvider } from './slice';
11
11
  import { DirectVolumeRepresentationProvider } from './direct-volume';
12
+ import { SegmentRepresentationProvider } from './segment';
12
13
  var VolumeRepresentationRegistry = /** @class */ (function (_super) {
13
14
  __extends(VolumeRepresentationRegistry, _super);
14
15
  function VolumeRepresentationRegistry() {
@@ -28,5 +29,6 @@ export { VolumeRepresentationRegistry };
28
29
  'isosurface': IsosurfaceRepresentationProvider,
29
30
  'slice': SliceRepresentationProvider,
30
31
  'direct-volume': DirectVolumeRepresentationProvider,
32
+ 'segment': SegmentRepresentationProvider,
31
33
  };
32
34
  })(VolumeRepresentationRegistry || (VolumeRepresentationRegistry = {}));
@@ -15,16 +15,20 @@ import { Interval } from '../../mol-data/int';
15
15
  import { VisualUpdateState } from '../util';
16
16
  import { Representation, RepresentationProvider, RepresentationContext, RepresentationParamsGetter } from '../representation';
17
17
  import { WebGLContext } from '../../mol-gl/webgl/context';
18
- export interface VolumeVisual<P extends VolumeParams> extends Visual<Volume, P> {
18
+ export type VolumeKey = {
19
+ volume: Volume;
20
+ key: number;
21
+ };
22
+ export interface VolumeVisual<P extends VolumeParams> extends Visual<VolumeKey, P> {
19
23
  }
20
24
  interface VolumeVisualBuilder<P extends VolumeParams, G extends Geometry> {
21
25
  defaultProps: PD.Values<P>;
22
- createGeometry(ctx: VisualContext, volume: Volume, theme: Theme, props: PD.Values<P>, geometry?: G): Promise<G> | G;
23
- createLocationIterator(volume: Volume): LocationIterator;
24
- getLoci(pickingId: PickingId, volume: Volume, props: PD.Values<P>, id: number): Loci;
25
- eachLocation(loci: Loci, volume: Volume, props: PD.Values<P>, apply: (interval: Interval) => boolean): boolean;
26
+ createGeometry(ctx: VisualContext, volume: Volume, key: number, theme: Theme, props: PD.Values<P>, geometry?: G): Promise<G> | G;
27
+ createLocationIterator(volume: Volume, key: number): LocationIterator;
28
+ getLoci(pickingId: PickingId, volume: Volume, key: number, props: PD.Values<P>, id: number): Loci;
29
+ eachLocation(loci: Loci, volume: Volume, key: number, props: PD.Values<P>, apply: (interval: Interval) => boolean): boolean;
26
30
  setUpdateState(state: VisualUpdateState, volume: Volume, newProps: PD.Values<P>, currentProps: PD.Values<P>, newTheme: Theme, currentTheme: Theme): void;
27
- mustRecreate?: (volume: Volume, props: PD.Values<P>) => boolean;
31
+ mustRecreate?: (volumeKey: VolumeKey, props: PD.Values<P>) => boolean;
28
32
  dispose?: (geometry: G) => void;
29
33
  }
30
34
  interface VolumeVisualGeometryBuilder<P extends VolumeParams, G extends Geometry> extends VolumeVisualBuilder<P, G> {
@@ -56,5 +60,5 @@ export declare const VolumeParams: {
56
60
  instanceGranularity: PD.BooleanParam;
57
61
  };
58
62
  export type VolumeParams = typeof VolumeParams;
59
- export declare function VolumeRepresentation<P extends VolumeParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<Volume, P>, visualCtor: (materialId: number, volume: Volume, props: PD.Values<P>, webgl?: WebGLContext) => VolumeVisual<P>, getLoci: (volume: Volume, props: PD.Values<P>) => Loci): VolumeRepresentation<P>;
63
+ export declare function VolumeRepresentation<P extends VolumeParams>(label: string, ctx: RepresentationContext, getParams: RepresentationParamsGetter<Volume, P>, visualCtor: (materialId: number, volume: Volume, key: number, props: PD.Values<P>, webgl?: WebGLContext) => VolumeVisual<P>, getLoci: (volume: Volume, props: PD.Values<P>) => Loci, getKeys?: (props: PD.Values<P>) => ArrayLike<number>): VolumeRepresentation<P>;
60
64
  export {};