moorhen 0.9.0 → 0.9.2

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 (156) hide show
  1. package/README.md +12 -2
  2. package/moorhen.js +91 -14
  3. package/package.json +22 -12
  4. package/public/CootWorker.js +1 -0
  5. package/{baby-gru → public}/CootWorker.ts +58 -10
  6. package/public/favicon.ico +0 -0
  7. package/public/manifest.json +25 -0
  8. package/{baby-gru → public}/moorhen.css +18 -3
  9. package/public/moorhen.js +1 -0
  10. package/{baby-gru → public}/moorhen.wasm +0 -0
  11. package/public/pixmaps/MoorhenLogo.svg +96 -0
  12. package/public/pixmaps/README +10 -0
  13. package/public/pixmaps/add-alt-conf.png +0 -0
  14. package/public/pixmaps/add-peptide-1.png +0 -0
  15. package/public/pixmaps/atom-at-pointer.png +0 -0
  16. package/public/pixmaps/auto-fit-rotamer.png +0 -0
  17. package/public/pixmaps/delete.png +0 -0
  18. package/public/pixmaps/density-fit.svg +96 -0
  19. package/public/pixmaps/edit-chi.png +0 -0
  20. package/public/pixmaps/flip-peptide.png +0 -0
  21. package/public/pixmaps/lhasa_icons/icons/hicolor_apps_scalable_coot-layla.svg +105 -0
  22. package/public/pixmaps/lhasa_icons/layla_3c.svg +82 -0
  23. package/public/pixmaps/lhasa_icons/layla_4c.svg +82 -0
  24. package/public/pixmaps/lhasa_icons/layla_5c.svg +82 -0
  25. package/public/pixmaps/lhasa_icons/layla_6arom.svg +89 -0
  26. package/public/pixmaps/lhasa_icons/layla_6c.svg +82 -0
  27. package/public/pixmaps/lhasa_icons/layla_7c.svg +82 -0
  28. package/public/pixmaps/lhasa_icons/layla_8c.svg +82 -0
  29. package/public/pixmaps/lhasa_icons/layla_charge_tool.svg +78 -0
  30. package/public/pixmaps/lhasa_icons/layla_delete_hydrogens_tool.svg +384 -0
  31. package/public/pixmaps/lhasa_icons/layla_double_bond.svg +78 -0
  32. package/public/pixmaps/lhasa_icons/layla_format_tool.svg +283 -0
  33. package/public/pixmaps/lhasa_icons/layla_geometry_tool-dark.svg +105 -0
  34. package/public/pixmaps/lhasa_icons/layla_geometry_tool.svg +105 -0
  35. package/public/pixmaps/lhasa_icons/layla_key.svg +76 -0
  36. package/public/pixmaps/lhasa_icons/layla_move_tool.svg +110 -0
  37. package/public/pixmaps/lhasa_icons/layla_single_bond.svg +73 -0
  38. package/public/pixmaps/lhasa_icons/layla_triple_bond.svg +87 -0
  39. package/public/pixmaps/lhasa_icons/lhasa_delete_tool.svg +401 -0
  40. package/public/pixmaps/lhasa_icons/lhasa_flip_x_tool.svg +106 -0
  41. package/public/pixmaps/lhasa_icons/lhasa_flip_y_tool.svg +106 -0
  42. package/public/pixmaps/lhasa_icons/lhasa_rotate_tool.svg +112 -0
  43. package/public/pixmaps/mutate.png +0 -0
  44. package/public/pixmaps/rama_all.png +0 -0
  45. package/public/pixmaps/rama_gly.png +0 -0
  46. package/public/pixmaps/rama_non_gly_pro.png +0 -0
  47. package/public/pixmaps/rama_pro.png +0 -0
  48. package/public/pixmaps/ramachandran.png +0 -0
  49. package/public/pixmaps/refine-1.png +0 -0
  50. package/public/pixmaps/refine.png +0 -0
  51. package/public/pixmaps/rigid-body.png +0 -0
  52. package/public/pixmaps/rotamers.png +0 -0
  53. package/public/pixmaps/rtz.png +0 -0
  54. package/public/pixmaps/side-chain-180.png +0 -0
  55. package/public/pixmaps/spin-view.png +0 -0
  56. package/public/pixmaps/temperature.png +0 -0
  57. package/public/pixmaps/torsion-general.png +0 -0
  58. package/public/pixmaps/torsion-general.svg +320 -0
  59. package/public/robots.txt +3 -0
  60. package/public/web_example.js +1 -0
  61. package/{baby-gru → public}/web_example.wasm +0 -0
  62. package/types/index.d.ts +1 -0
  63. package/types/lhasa.d.ts +313 -0
  64. package/types/libcoot.d.ts +21 -2
  65. package/types/main.d.ts +57 -54
  66. package/types/mgWebGL.d.ts +4 -2
  67. package/types/moorhen.d.ts +137 -50
  68. package/baby-gru/CootWorker.js +0 -1
  69. package/baby-gru/moorhen.js +0 -1
  70. package/baby-gru/web_example.js +0 -1
  71. /package/{baby-gru → public}/coot_env_web.js +0 -0
  72. /package/{baby-gru → public}/darkly.css +0 -0
  73. /package/{baby-gru → public}/flatly.css +0 -0
  74. /package/{baby-gru → public}/monomers/a/A.cif +0 -0
  75. /package/{baby-gru → public}/monomers/a/ALA.cif +0 -0
  76. /package/{baby-gru → public}/monomers/a/ARG.cif +0 -0
  77. /package/{baby-gru → public}/monomers/a/ASN.cif +0 -0
  78. /package/{baby-gru → public}/monomers/a/ASP.cif +0 -0
  79. /package/{baby-gru → public}/monomers/c/C.cif +0 -0
  80. /package/{baby-gru → public}/monomers/c/CIT.cif +0 -0
  81. /package/{baby-gru → public}/monomers/c/CYS.cif +0 -0
  82. /package/{baby-gru → public}/monomers/d/DA.cif +0 -0
  83. /package/{baby-gru → public}/monomers/d/DC.cif +0 -0
  84. /package/{baby-gru → public}/monomers/d/DG.cif +0 -0
  85. /package/{baby-gru → public}/monomers/d/DT.cif +0 -0
  86. /package/{baby-gru → public}/monomers/e/EDO.cif +0 -0
  87. /package/{baby-gru → public}/monomers/g/G.cif +0 -0
  88. /package/{baby-gru → public}/monomers/g/GLN.cif +0 -0
  89. /package/{baby-gru → public}/monomers/g/GLU.cif +0 -0
  90. /package/{baby-gru → public}/monomers/g/GLY.cif +0 -0
  91. /package/{baby-gru → public}/monomers/g/GOL.cif +0 -0
  92. /package/{baby-gru → public}/monomers/h/HIS.cif +0 -0
  93. /package/{baby-gru → public}/monomers/h/HOH.cif +0 -0
  94. /package/{baby-gru → public}/monomers/i/ILE.cif +0 -0
  95. /package/{baby-gru → public}/monomers/l/LEU.cif +0 -0
  96. /package/{baby-gru → public}/monomers/l/LYS.cif +0 -0
  97. /package/{baby-gru → public}/monomers/m/MET.cif +0 -0
  98. /package/{baby-gru → public}/monomers/m/MSE.cif +0 -0
  99. /package/{baby-gru → public}/monomers/n/NA.cif +0 -0
  100. /package/{baby-gru → public}/monomers/p/PHE.cif +0 -0
  101. /package/{baby-gru → public}/monomers/p/PO4.cif +0 -0
  102. /package/{baby-gru → public}/monomers/p/PRO.cif +0 -0
  103. /package/{baby-gru → public}/monomers/s/SER.cif +0 -0
  104. /package/{baby-gru → public}/monomers/s/SO4.cif +0 -0
  105. /package/{baby-gru → public}/monomers/t/THR.cif +0 -0
  106. /package/{baby-gru → public}/monomers/t/TRP.cif +0 -0
  107. /package/{baby-gru → public}/monomers/t/TYR.cif +0 -0
  108. /package/{baby-gru → public}/monomers/u/U.cif +0 -0
  109. /package/{baby-gru → public}/monomers/v/VAL.cif +0 -0
  110. /package/{baby-gru → public}/moorhen.data +0 -0
  111. /package/{baby-gru → public}/moorhen.worker.js +0 -0
  112. /package/{baby-gru → public}/pixmaps/MoorhenLogo.png +0 -0
  113. /package/{baby-gru → public}/pixmaps/add-alt-conf.svg +0 -0
  114. /package/{baby-gru → public}/pixmaps/add-peptide-1.svg +0 -0
  115. /package/{baby-gru → public}/pixmaps/atom-at-pointer.svg +0 -0
  116. /package/{baby-gru → public}/pixmaps/auto-fit-rotamer.svg +0 -0
  117. /package/{baby-gru → public}/pixmaps/cis-trans.svg +0 -0
  118. /package/{baby-gru → public}/pixmaps/delete.svg +0 -0
  119. /package/{baby-gru → public}/pixmaps/drag.svg +0 -0
  120. /package/{baby-gru → public}/pixmaps/edit-chi.svg +0 -0
  121. /package/{baby-gru → public}/pixmaps/flip-peptide.svg +0 -0
  122. /package/{baby-gru → public}/pixmaps/jed-flip-reverse.svg +0 -0
  123. /package/{baby-gru → public}/pixmaps/keyboard-blank.svg +0 -0
  124. /package/{baby-gru → public}/pixmaps/map-grey.svg +0 -0
  125. /package/{baby-gru → public}/pixmaps/moorhen-ligand.svg +0 -0
  126. /package/{baby-gru → public}/pixmaps/mutate.svg +0 -0
  127. /package/{baby-gru → public}/pixmaps/rama-plot-gly-normal.png +0 -0
  128. /package/{baby-gru → public}/pixmaps/rama-plot-gly-outlier.png +0 -0
  129. /package/{baby-gru → public}/pixmaps/rama-plot-other-normal.png +0 -0
  130. /package/{baby-gru → public}/pixmaps/rama-plot-other-outlier.png +0 -0
  131. /package/{baby-gru → public}/pixmaps/rama-plot-pro-normal.png +0 -0
  132. /package/{baby-gru → public}/pixmaps/rama-plot-pro-outlier.png +0 -0
  133. /package/{baby-gru → public}/pixmaps/rama2_all.png +0 -0
  134. /package/{baby-gru → public}/pixmaps/rama2_gly.png +0 -0
  135. /package/{baby-gru → public}/pixmaps/rama2_ileval.png +0 -0
  136. /package/{baby-gru → public}/pixmaps/rama2_non_gly_pro.png +0 -0
  137. /package/{baby-gru → public}/pixmaps/rama2_non_gly_pro_pre_pro_ileval.png +0 -0
  138. /package/{baby-gru → public}/pixmaps/rama2_pre_pro.png +0 -0
  139. /package/{baby-gru → public}/pixmaps/rama2_pro.png +0 -0
  140. /package/{baby-gru → public}/pixmaps/refine-1.svg +0 -0
  141. /package/{baby-gru → public}/pixmaps/rigid-body.svg +0 -0
  142. /package/{baby-gru → public}/pixmaps/rotamers.svg +0 -0
  143. /package/{baby-gru → public}/pixmaps/rtz.svg +0 -0
  144. /package/{baby-gru → public}/pixmaps/secondary-structure-grey.svg +0 -0
  145. /package/{baby-gru → public}/pixmaps/side-chain-180.svg +0 -0
  146. /package/{baby-gru → public}/pixmaps/spin-view.svg +0 -0
  147. /package/{baby-gru → public}/pixmaps/temperature.svg +0 -0
  148. /package/{baby-gru → public}/tutorials/NUT.cif +0 -0
  149. /package/{baby-gru → public}/tutorials/moorhen-tutorial-map-number-1.mtz +0 -0
  150. /package/{baby-gru → public}/tutorials/moorhen-tutorial-map-number-2.mtz +0 -0
  151. /package/{baby-gru → public}/tutorials/moorhen-tutorial-map-number-3.mtz +0 -0
  152. /package/{baby-gru → public}/tutorials/moorhen-tutorial-map-number-4.mtz +0 -0
  153. /package/{baby-gru → public}/tutorials/moorhen-tutorial-structure-number-1.pdb +0 -0
  154. /package/{baby-gru → public}/tutorials/moorhen-tutorial-structure-number-2.pdb +0 -0
  155. /package/{baby-gru → public}/tutorials/moorhen-tutorial-structure-number-3.pdb +0 -0
  156. /package/{baby-gru → public}/tutorials/moorhen-tutorial-structure-number-4.pdb +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moorhen",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "private": false,
5
5
  "main": "moorhen.js",
6
6
  "types": "./types/main.d.ts",
@@ -26,7 +26,7 @@
26
26
  "forge": {
27
27
  "packagerConfig": {
28
28
  "ignore": [
29
- "^/public/baby-gru$",
29
+ "^/public$",
30
30
  "^/public/favicon.ico$",
31
31
  "^/public/index.html",
32
32
  "^/public/logo192.png",
@@ -64,15 +64,17 @@
64
64
  },
65
65
  "dependencies": {},
66
66
  "scripts": {
67
+ "transpile-graphql-codegen": "npx graphql-codegen",
67
68
  "transpile-protobuf": "npx pbjs -t static-module -w es6 -o ./src/protobuf/MoorhenSession.js ./src/protobuf/MoorhenSession.proto",
68
69
  "create-version": "npx genversion -e -p ./package.json -d -s ./src/version.js",
69
- "transpile-ts-worker": "npx tsc --module es2015 --lib webworker --skipLibCheck public/baby-gru/CootWorker.ts && sed -i.bak '/export {}/d' public/baby-gru/CootWorker.js && rm public/baby-gru/CootWorker.js.bak",
70
- "transpile-ts-worker-jest": "npx tsc --module es2015 --lib webworker --skipLibCheck public/baby-gru/CootWorker.ts && sed -i.bak 's/export {}/export { doCootCommand, setModules }/g' public/baby-gru/CootWorker.js && sed -i.bak '/importScripts.*;/d' public/baby-gru/CootWorker.js && sed -i.bak 's/onmessage/function setModules(arg0, arg1) { molecules_container = arg0; cootModule = arg1 }; let postMessage = () => {}; let onmessage/g' public/baby-gru/CootWorker.js && rm public/baby-gru/CootWorker.js.bak",
71
- "prestart": "npm run create-version && npm run transpile-ts-worker && npm run transpile-protobuf",
70
+ "transpile-ts-worker": "npx tsc --module es2015 --lib webworker --skipLibCheck public/CootWorker.ts && sed -i.bak '/export {}/d' public/CootWorker.js && rm public/CootWorker.js.bak",
71
+ "transpile-ts-worker-jest": "npx tsc --module es2015 --lib webworker --skipLibCheck public/CootWorker.ts && sed -i.bak 's/export {}/export { doCootCommand, setModules }/g' public/CootWorker.js && sed -i.bak '/importScripts.*;/d' public/CootWorker.js && sed -i.bak 's/onmessage/function setModules(arg0, arg1) { molecules_container = arg0; cootModule = arg1 }; let postMessage = () => {}; let onmessage/g' public/CootWorker.js && rm public/CootWorker.js.bak",
72
+ "prestart": "npm run create-version && npm run transpile-ts-worker && npm run transpile-protobuf && npm run transpile-graphql-codegen",
72
73
  "start": "vite",
73
- "prebuild": "npm run create-version && npm run transpile-ts-worker && npm run transpile-protobuf",
74
+ "prebuild": "npm run create-version && npm run transpile-ts-worker && npm run transpile-protobuf && npm run transpile-graphql-codegen",
74
75
  "build": "vite build",
75
76
  "build-release": "npm run prebuild && webpack --mode production --devtool inline-source-map",
77
+ "build-release-dev": "npm run prebuild && webpack --mode development --devtool inline-source-map",
76
78
  "dev": "concurrently -k \"BROWSER=none npm start\" \"npm:electron\"",
77
79
  "electron": "wait-on tcp:3000 && electron-forge start",
78
80
  "package": "npm run build && electron-forge package",
@@ -80,8 +82,8 @@
80
82
  "make-linux": "npm run build && electron-forge make --platform linux",
81
83
  "make-win32": "npm run build && electron-forge make --platform win32",
82
84
  "create-docs": "npm run create-version && npx jsdoc -c jsdoc.json",
83
- "test": "npm run create-version && npm run transpile-protobuf && npx tsc && npm run transpile-ts-worker-jest && ln -s ./public/baby-gru/wasm/moorhen.data ./moorhen.data && ln -s ./public/baby-gru ./baby-gru && node --trace-warnings --experimental-vm-modules --experimental-wasm-threads node_modules/jest/bin/jest.js --forceExit",
84
- "test-react": "npm run create-version && npm run transpile-protobuf && npx tsc && node --trace-warnings --experimental-vm-modules --experimental-wasm-threads node_modules/jest/bin/jest.js --forceExit --testPathIgnorePatterns=MoorhenContainer.test.jsx --testPathIgnorePatterns=MoorhenLigandMenu.test.jsx --testPathIgnorePatterns=MoorhenEditMenu.test.jsx --selectProjects react-components"
85
+ "test": "npm run create-version && npm run transpile-protobuf && npm run transpile-graphql-codegen && npx tsc && npm run transpile-ts-worker-jest && ln -s ./public/moorhen.data ./moorhen.data && ln -s ./public/ ./baby-gru && node --trace-warnings --experimental-vm-modules node_modules/jest/bin/jest.js --forceExit",
86
+ "test-react": "npm run create-version && npm run transpile-protobuf && npm run transpile-graphql-codegen && npx tsc && node --trace-warnings --experimental-vm-modules --experimental-wasm-threads node_modules/jest/bin/jest.js --forceExit --testPathIgnorePatterns=MoorhenContainer.test.jsx --testPathIgnorePatterns=MoorhenLigandMenu.test.jsx --testPathIgnorePatterns=MoorhenEditMenu.test.jsx --selectProjects react-components"
85
87
  },
86
88
  "eslintConfig": {
87
89
  "extends": [
@@ -102,6 +104,7 @@
102
104
  ]
103
105
  },
104
106
  "devDependencies": {
107
+ "@apollo/client": "^3.10.7",
105
108
  "@babel/preset-env": "^7.20.2",
106
109
  "@babel/preset-react": "^7.18.6",
107
110
  "@electron-forge/cli": "^6.0.5",
@@ -109,11 +112,14 @@
109
112
  "@electron-forge/maker-rpm": "^6.0.5",
110
113
  "@electron-forge/maker-squirrel": "^6.0.5",
111
114
  "@electron-forge/maker-zip": "^6.0.5",
112
- "@emotion/react": "^11.10.4",
113
- "@emotion/styled": "^11.10.4",
115
+ "@emotion/react": "^11.11.4",
116
+ "@emotion/styled": "^11.11.5",
117
+ "@graphql-codegen/cli": "^5.0.2",
118
+ "@graphql-codegen/client-preset": "^4.3.1",
119
+ "@graphql-typed-document-node/core": "^3.2.0",
114
120
  "@mui/icons-material": "^5.10.9",
115
121
  "@mui/lab": "^5.0.0-alpha.140",
116
- "@mui/material": "^5.10.10",
122
+ "@mui/material": "^5.15.19",
117
123
  "@mui/x-tree-view": "^6.17.0",
118
124
  "@reduxjs/toolkit": "^1.9.7",
119
125
  "@testing-library/dom": "^9.3.4",
@@ -144,6 +150,7 @@
144
150
  "express": "^4.18.2",
145
151
  "genversion": "^3.1.1",
146
152
  "gl-matrix": "^3.4.3",
153
+ "graphql": "^16.9.0",
147
154
  "html-react-parser": "^1.4.14",
148
155
  "html-webpack-plugin": "^5.5.0",
149
156
  "iris-validation": "^0.1.10",
@@ -173,17 +180,20 @@
173
180
  "rc-tree": "4.2.2",
174
181
  "re-resizable": "^6.9.11",
175
182
  "react": "^18.1.0",
176
- "react-bootstrap": "^2.3.1",
183
+ "react-bootstrap": "^2.10.4",
177
184
  "react-bootstrap-typeahead": "^6.0.0-alpha.11",
178
185
  "react-chartjs-2": "^4.1.0",
179
186
  "react-color": "^2.19.3",
180
187
  "react-colorful": "^5.6.1",
181
188
  "react-dom": "^18.1.0",
182
189
  "react-draggable": "^4.4.5",
190
+ "react-hotkeys": "^2.0.0",
183
191
  "react-plotly.js": "^2.5.1",
184
192
  "react-redux": "^8.1.3",
185
193
  "react-simple-code-editor": "^0.13.1",
186
194
  "reactcss": "^1.2.3",
195
+ "sass": "^1.77.4",
196
+ "sass-loader": "^14.2.1",
187
197
  "style-loader": "^3.3.1",
188
198
  "styled-components": "^5.3.9",
189
199
  "taffydb": "^2.7.3",
@@ -0,0 +1 @@
1
+ var cootModule,molecules_container,ccp4Module,__assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var r,a=1,t=arguments.length;a<t;a++)for(var o in r=arguments[a])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e},__assign.apply(this,arguments)};importScripts("./moorhen.js"),importScripts("./web_example.js");var guid=function(){var e=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(r){var a=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===r?a:3&a|8).toString(16)}))},print=function(e){},parseMonLibListCif=function(e){for(var r=cootModule.parse_mon_lib_list_cif(e),a=r.size(),t=[],o=0;o<a;o++){var s=r.get(o);t.push({three_letter_code:s.three_letter_code,name:s.name.replaceAll("'","").toLowerCase()})}return r.delete(),t},instancedMeshToMeshData=function(e,r,a,t){void 0===a&&(a=!1),void 0===t&&(t=1e4);for(var o=[],s=[],n=[],i=[],c=[],_=[],l=[],u=[],d=[],m=e.geom,p=e.markup,h=m.size(),g=0;g<h;g++){var f=a,v=[],y=[],b=[],S=[],M=[],z=[],A=[],T=m.get(g);"spherical-atoms"===T.name&&(f=!0);for(var x=T.vertices,F=T.triangles,k=F.size(),w=0;w<k;w++){var I=F.get(w).point_id;r?(v.push(I[0]),v.push(I[2]),v.push(I[1])):(v.push(I[0]),v.push(I[1]),v.push(I[2]))}F.delete();for(var J=x.size(),D=0;D<J;D++){var C=x.get(D),N=C.pos;y.push(N[0]),y.push(N[1]),y.push(N[2]);var R=C.normal;b.push(R[0]),b.push(R[1]),b.push(R[2])}x.delete();var P=T.instancing_data_A,L=P.size();if(L>0)for(var E=0;E<L;E++){var U=(q=P.get(E)).position;z.push(U[0]),z.push(U[1]),z.push(U[2]);var O=q.colour;M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var j=q.size;S.push(j[0]),S.push(j[1]),S.push(j[2]),A.push.apply(A,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}P.delete();var B=T.instancing_data_B,V=B.size();if(V>0)for(E=0;E<V;E++){var q;if(!((j=(q=B.get(E)).size)[2]>t)){S.push(j[0]),S.push(j[1]),S.push(j[2]);U=q.position;z.push(U[0]),z.push(U[1]),z.push(U[2]);O=q.colour;M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var H=q.orientation;A.push(H[0][0]),A.push(H[0][1]),A.push(H[0][2]),A.push(H[0][3]),A.push(H[1][0]),A.push(H[1][1]),A.push(H[1][2]),A.push(H[1][3]),A.push(H[2][0]),A.push(H[2][1]),A.push(H[2][2]),A.push(H[2][3]),A.push(H[3][0]),A.push(H[3][1]),A.push(H[3][2]),A.push(H[3][3])}}B.delete(),n.push(b),s.push(y),o.push(v),i.push(S),_.push(z),l.push(A),c.push(M),u.push(!0),f?d.push("PERFECT_SPHERES"):d.push("TRIANGLES")}m.delete();var K=simpleMeshToMeshData(p);return K.idx_tri.length>0&&K.idx_tri[0].length>0&&K.idx_tri[0][0].length>0?a?{prim_types:[d,K.prim_types[0]],idx_tri:[o,K.idx_tri[0]],vert_tri:[_,K.vert_tri[0]],norm_tri:[n,K.norm_tri[0]],col_tri:[c,K.col_tri[0]],instance_use_colors:[u,null],instance_sizes:[i,null],instance_origins:[_,null],instance_orientations:[l,null]}:{prim_types:[d,K.prim_types[0]],idx_tri:[o,K.idx_tri[0]],vert_tri:[s,K.vert_tri[0]],norm_tri:[n,K.norm_tri[0]],col_tri:[c,K.col_tri[0]],instance_use_colors:[u,null],instance_sizes:[i,null],instance_origins:[_,null],instance_orientations:[l,null]}:{prim_types:[d],idx_tri:[o],vert_tri:[s],norm_tri:[n],col_tri:[c],instance_use_colors:[u],instance_sizes:[i],instance_origins:[_],instance_orientations:[l]}},simpleMeshToMeshData=function(e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!1);var t=!1,o=(performance.now(),e.vertices),s=e.triangles,n=o.size(),i=s.size(),c=new Uint32Array(3*i),_=new Float32Array(3*n),l=new Float32Array(3*n),u=new Float32Array(4*n);cootModule.getPositionsFromSimpleMesh2(e,_),cootModule.getColoursFromSimpleMesh2(e,u),r?(a?cootModule.getReversedNormalsFromSimpleMesh3(e,l):cootModule.getReversedNormalsFromSimpleMesh2(e,l),cootModule.getPermutedTriangleIndicesFromSimpleMesh2(e,c)):(cootModule.getNormalsFromSimpleMesh2(e,l),cootModule.getTriangleIndicesFromSimpleMesh2(e,c));performance.now();var d=_,m=u,p=l,h=c;return o.delete(),s.delete(),{prim_types:[["TRIANGLES"]],idx_tri:[[h]],vert_tri:[[d]],norm_tri:[[p]],col_tri:[[m]]}},SuperposeResultsToJSArray=function(e){for(var r=e.aligned_pairs,a=r.size(),t=[],o=0;o<a;o++){var s=r.get(o),n=s.first,i=n.residue_spec,c=s.second,_=c.residue_spec,l={reference:{chainId:i.chain_id,insCode:i.ins_code,seqNum:i.res_no,restype:"UNK",value:n.function_value,label:n.label},moving:{chainId:_.chain_id,insCode:_.ins_code,seqNum:_.res_no,restype:"UNK",value:c.function_value,label:c.label}};t.push(l)}return r.delete(),{referenceSequence:e.alignment.first,movingSequence:e.alignment.second,supperposeInfo:e.superpose_info,alignedPairsData:t}},colourRulesToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},stringArrayArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){for(var o=e.get(t),s=o.size(),n=[],i=0;i<s;i++){var c=o.get(i);n.push(c)}r.push(n),o.delete()}return e.delete(),r},floatArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},mapMoleculeCentreInfoToJSObject=function(e){var r=e.updated_centre,a={updated_centre:[r.x(),r.y(),r.z()],success:e.success,suggested_radius:e.suggested_radius,suggested_contour_level:e.suggested_contour_level};return r.delete(),a},textureAsFloatsToJSTextureAsFloats=function(e){var r=e.width*e.height,a=new Float32Array(r);performance.now();cootModule.getTextureArray(e,a);performance.now();return{width:e.width,height:e.height,x_size:e.x_size,y_size:e.y_size,z_position:e.z_position,image_data:a}},fitLigandInfoArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(__assign({},o))}return e.delete(),r},intArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},stringArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},export_map_as_gltf=function(e,r,a,t,o,s){var n="".concat(guid(),".glb");molecules_container.export_map_molecule_as_gltf(e,r,a,t,o,s,n);var i=cootModule.FS.readFile(n,{encoding:"binary"});return cootModule.FS_unlink(n),i.buffer},export_molecular_represenation_as_gltf=function(e,r,a,t){var o="".concat(guid(),".glb");molecules_container.export_molecular_represenation_as_gltf(e,r,a,t,o);var s=cootModule.FS.readFile(o,{encoding:"binary"});return cootModule.FS_unlink(o),s.buffer},export_molecule_as_gltf=function(e,r,a,t,o,s,n,i,c){var _="".concat(guid(),".glb");molecules_container.export_model_molecule_as_gltf(e,r,a,t,o,s,n,i,c,_);var l=cootModule.FS.readFile(_,{encoding:"binary"});return cootModule.FS_unlink(_),l.buffer},symmetryToJSData=function(e){for(var r=[],a=e.first,t=e.second,o=a.symm_trans,s=o.size(),n=0;n<s;n++){var i=o.get(n),c=i.first,_=i.second,l=t.get(n);r.push({x:c.x(),y:c.y(),z:c.z(),asString:c.symm_as_string,isym:c.isym(),us:_.us,ws:_.ws,vs:_.vs,matrix:l}),c.delete()}return o.delete(),t.delete(),r},mmrrccStatsToJSArray=function(e){var r=function(e){for(var r=[],a=e.keys(),t=a.size(),o=0;o<t;o++){var s=a.get(o),n=e.get(s);r.push({resNum:s.res_no,insCode:s.ins_code,modelNumber:s.model_number,chainId:s.chain_id,n:n.n,correlation:n.correlation()}),n.delete()}return a.delete(),r},a=e.first,t=e.second,o={"All atoms":r(a),"Side-chains":r(t)};return a.delete(),t.delete(),o},atomSpecToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({chain_id:o.chain_id,res_no:o.res_no,ins_code:o.ins_code,atom_name:o.atom_name,alt_conf:o.alt_conf,int_user_data:o.int_user_data,float_user_data:o.float_user_data,string_user_data:o.string_user_data,model_number:o.model_number})}return e.delete(),r},residueSpecToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({resNum:o.res_no,insCode:o.ins_code,modelNumber:o.model_number,chainId:o.chain_id,intUserData:o.int_user_data})}return e.delete(),r},stringPairVectorToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({first:o.first,second:o.second})}return e.delete(),r},validationDataToJSArray=function(e,r){void 0===r&&(r=null);for(var a=[],t=e.cviv,o=t.size(),s=0;s<o;s++){var n=t.get(s);if(null!==r&&n.chain_id!==r);else{for(var i=n.rviv,c=i.size(),_=0;_<c;_++){var l=i.get(_),u=l.residue_spec;a.push({chainId:u.chain_id,insCode:u.ins_code,seqNum:u.res_no,restype:"UNK",value:l.function_value})}i.delete()}}return t.delete(),e.delete(),a},linesBoxToJSArray=function(e){for(var r=[],a=e.line_segments,t=a.size(),o=0;o<t;o++){for(var s=[],n=a.get(o),i=n.size(),c=0;c<i;c++){var _=n.get(c),l=_.getStart(),u=_.getFinish(),d=_.amplitude(),m={x:l.x(),y:l.y(),z:l.z()},p={x:u.x(),y:u.y(),z:u.z()};s.push({start:m,end:p,dist:d}),l.delete(),u.delete(),_.delete()}n.delete(),r.push(s)}return a.delete(),r},vectorHBondToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({hb_hydrogen:o.hb_hydrogen,donor:o.donor,acceptor:o.acceptor,donor_neigh:o.donor_neigh,acceptor_neigh:o.acceptor_neigh,angle_1:o.angle_1,angle_2:o.angle_2,angle_3:o.angle_3,dist:o.dist,ligand_atom_is_donor:o.ligand_atom_is_donor,hydrogen_is_ligand_atom:o.hydrogen_is_ligand_atom,bond_has_hydrogen_flag:o.bond_has_hydrogen_flag})}return e.delete(),r},interestingPlaceDataToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t),s=o.residue_spec;r.push({intUserData:s.int_user_data,modelNumber:s.model_number,chainId:s.chain_id,insCode:s.ins_code,resNum:s.res_no,featureType:o.feature_type,featureValue:o.feature_value,buttonLabel:o.button_label,badness:o.badness,coordX:o.x,coordY:o.y,coordZ:o.z})}return e.delete(),r},histogramInfoToJSData=function(e){var r=e.counts;return{counts:intArrayToJSArray(r),bin_width:e.bin_width,base:e.base}},autoReadMtzInfoVectToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({idx:o.idx,F:o.F,phi:o.phi,w:o.w,weights_used:o.weights_used,Rfree:o.Rfree?o.Rfree.split("/")[3]:"",F_obs:o.F_obs?o.F_obs.split("/")[3]:"",sigF_obs:o.sigF_obs?o.sigF_obs.split("/")[3]:""})}if(e.delete(),r.some((function(e){return-1===e.idx}))){var s=r.find((function(e){return-1===e.idx}));s&&s.F_obs&&s.Rfree&&s.sigF_obs&&r.forEach((function(e){e.F_obs=s.F_obs,e.sigF_obs=s.sigF_obs,e.Rfree=s.Rfree})),r=r.filter((function(e){return-1!==e.idx}))}return r},ramachandranDataToJSArray=function(e,r){for(var a=[],t=e.size(),o=0;o<t;o++){var s=e.get(o),n=s.phi_psi;n.chain_id===r&&a.push({chainId:n.chain_id,insCode:n.ins_code,seqNum:n.residue_number,restype:s.residue_name(),isOutlier:!s.is_allowed_flag,phi:n.phi(),psi:n.psi(),is_pre_pro:"PRO"===s.residue_name()}),s.delete(),n.delete()}return e.delete(),a},vectorPairStringIntToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t),s={residue:o.first,slice:o.second};r.push(s)}return e.delete(),r},vectorPairClipperCoordFloatToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t),s=o.second,n=o.first,i={x:n.x(),y:n.y(),z:n.z()};n.delete(),r.push({value:s,coord:i})}return e.delete(),r},simpleMeshToLineMeshData=function(e,r){var a=!1,t=(performance.now(),e.vertices),o=e.triangles,s=o.size(),n=t.size(),i=new Uint32Array(6*s),c=new Float32Array(3*n),_=new Float32Array(3*n),l=new Float32Array(4*n);cootModule.getLineIndicesFromSimpleMesh2(e,i),cootModule.getPositionsFromSimpleMesh2(e,c),cootModule.getNormalsFromSimpleMesh2(e,_),cootModule.getColoursFromSimpleMesh2(e,l);performance.now();var u=i,d=c,m=_,p=l;return t.delete(),o.delete(),r?{prim_types:[["NORMALLINES"]],useIndices:[[!0]],idx_tri:[[u]],vert_tri:[[d]],additional_norm_tri:[[m]],norm_tri:[[m]],col_tri:[[p]]}:{prim_types:[["LINES"]],useIndices:[[!0]],idx_tri:[[u]],vert_tri:[[d]],norm_tri:[[m]],col_tri:[[p]]}},auto_read_mtz=function(e){var r=guid(),a=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(r,".mtz"),a,!0,!0);var t="./".concat(r,".mtz"),o=molecules_container.auto_read_mtz(t);return cootModule.FS_unlink(t),o},replace_map_by_mtz_from_file=function(e,r,a){var t=guid(),o="./".concat(t,".mtz"),s=new Uint8Array(r);cootModule.FS_createDataFile(".",o,s,!0,!0);var n=[e,o,a.F,a.PHI,"",!1],i=molecules_container.replace_map_by_mtz_from_file.apply(molecules_container,n);return cootModule.FS_unlink(o),i},new_positions_for_residue_atoms=function(e,r){var a=0,t=new cootModule.Vectormoved_residue_t;return r.forEach((function(e){if(e.length>0){var r=e[0],a=new cootModule.moved_residue_t(r.chain_id,parseInt(r.res_no),"");e.forEach((function(e){var r=new cootModule.moved_atom_t(e.name,e.alt_loc,e.x,e.y,e.z,-1);a.add_atom(r),r.delete()})),t.push_back(a),a.delete()}})),a+=molecules_container.new_positions_for_atoms_in_residues(e,t),t.delete(),a},read_mtz=function(e,r,a){var t=guid(),o=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(t,".mtz"),o,!0,!0);var s="./".concat(t,".mtz"),n=[s,a.F,a.PHI,"",!1,a.isDifference],i=molecules_container.read_mtz.apply(molecules_container,n);return cootModule.FS_unlink(s),i},associate_data_mtz_file_with_map=function(e,r,a,t,o){var s=new Uint8Array(r.data);cootModule.FS_createDataFile(".","".concat(r.fileName,".mtz"),s,!0,!0);var n="./".concat(r.fileName,".mtz"),i=[e,n,a,t,o];return molecules_container.associate_data_mtz_file_with_map.apply(molecules_container,i),n},read_ccp4_map=function(e,r,a){var t=guid(),o=new Uint8Array(e),s="";r.endsWith(".map.gz")?s="map.gz":r.endsWith(".mrc.gz")&&(s="mrc.gz"),cootModule.FS_createDataFile(".","".concat(t).concat(s),o,!0,!0);var n="./".concat(t).concat(s),i=[n,a],c=-1;try{c=molecules_container.read_ccp4_map.apply(molecules_container,i)}catch(e){console.warn(e)}finally{cootModule.FS_unlink(n)}return c},setUserDefinedBondColours=function(e,r,a){void 0===a&&(a=!1);var t=new cootModule.MapIntFloat4,o=new cootModule.VectorStringUInt_pair;r.forEach((function(e,r){t.set(r+51,e.rgba);var a={first:e.cid,second:r+51};o.push_back(a)})),molecules_container.set_user_defined_bond_colours(e,t),molecules_container.set_user_defined_atom_colour_by_selection(e,o,a),o.delete(),t.delete()},privateerValidationToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){for(var o=e.get(t),s=[],n=o.torsions,i=n.size(),c=0;c<i;c++)s.push(n.get(c));n.delete();var _={torsions:s,svg:o.svg.replace(/: *32/g,""),id:o.id.replace(/: *32/g,""),chain:o.chain,wurcs:o.wurcs,glyconnect_id:o.glyconnect_id,glytoucan_id:o.glytoucan_id,torsion_err:o.torsion_err,anomer_err:o.anomer_err,conformation_err:o.conformation_err,puckering_err:o.puckering_err,chirality_err:o.chirality_err};r.push(_)}return e.delete(),r},headerInfoAsJSObject=function(e){var r=e.author_lines,a=stringArrayToJSArray(r),t=e.compound_lines,o=stringArrayToJSArray(t),s=e.journal_lines,n=stringArrayToJSArray(s);return{title:e.title,author_lines:a,compound_lines:o,journal_lines:n}},doCootCommand=function(e){var r=e.returnType,a=e.command,t=e.commandArgs,o=e.messageId,s=e.myTimeStamp,n=e.message;try{var i=void 0;switch(a){case"shim_new_positions_for_residue_atoms":i=new_positions_for_residue_atoms.apply(void 0,t);break;case"shim_read_mtz":i=read_mtz.apply(void 0,t);break;case"shim_auto_read_mtz":i=auto_read_mtz.apply(void 0,t);break;case"shim_read_ccp4_map":i=read_ccp4_map.apply(void 0,t);break;case"shim_associate_data_mtz_file_with_map":i=associate_data_mtz_file_with_map.apply(void 0,t);break;case"shim_replace_map_by_mtz_from_file":i=replace_map_by_mtz_from_file.apply(void 0,t);break;case"shim_set_bond_colours":i=setUserDefinedBondColours.apply(void 0,t);break;case"shim_export_map_as_gltf":i=export_map_as_gltf.apply(void 0,t);break;case"shim_export_molecule_as_gltf":i=export_molecule_as_gltf.apply(void 0,t);break;case"shim_export_molecular_represenation_as_gltf":i=export_molecular_represenation_as_gltf.apply(void 0,t);break;case"parse_mon_lib_list_cif":i=parseMonLibListCif.apply(void 0,t);break;default:i=molecules_container[a].apply(molecules_container,t)}var c=void 0;switch(r){case"header_info_t":c=headerInfoAsJSObject(i);break;case"texture_as_floats_t":c=textureAsFloatsToJSTextureAsFloats(i);break;case"fit_ligand_info_array":c=fitLigandInfoArrayToJSArray(i);break;case"string_array_array":c=stringArrayArrayToJSArray(i);break;case"instanced_mesh_perm":c=instancedMeshToMeshData(i,!0);break;case"histogram_info_t":c=histogramInfoToJSData(i);break;case"symmetry":c=symmetryToJSData(i);break;case"mmrrcc_stats":c=mmrrccStatsToJSArray(i);break;case"colour_rules":c=colourRulesToJSArray(i);break;case"instanced_mesh_perfect_spheres":c=instancedMeshToMeshData(i,!1,!0);break;case"instanced_mesh":c=instancedMeshToMeshData(i,!1,!1,5);break;case"mesh_perm3":c=simpleMeshToMeshData(i,!0,!0);break;case"mesh_perm":c=simpleMeshToMeshData(i,!0);break;case"mesh":c=simpleMeshToMeshData(i);break;case"lit_lines_mesh":c=simpleMeshToLineMeshData(i,!0);break;case"lines_mesh":c=simpleMeshToLineMeshData(i,!1);break;case"float_array":c=floatArrayToJSArray(i);break;case"int_array":c=intArrayToJSArray(i);break;case"auto_read_mtz_info_array":c=autoReadMtzInfoVectToJSArray(i);break;case"map_molecule_centre_info_t":c=mapMoleculeCentreInfoToJSObject(i);break;case"string_array":c=stringArrayToJSArray(i);break;case"residue_specs":c=residueSpecToJSArray(i);break;case"atom_specs":c=atomSpecToJSArray(i);break;case"ramachandran_data":c=ramachandranDataToJSArray(i,e.chainID);break;case"validation_data":c=validationDataToJSArray(i,e.chainID);break;case"interesting_places_data":c=interestingPlaceDataToJSArray(i);break;case"superpose_results":c=SuperposeResultsToJSArray(i);break;case"generic_3d_lines_bonds_box":c=linesBoxToJSArray(i);break;case"vector_hbond":c=vectorHBondToJSArray(i);break;case"status_instanced_mesh_pair":c={status:i.first,mesh:instancedMeshToMeshData(i.second,!1,!1,5)};break;case"string_string_pair_vector":c=stringPairVectorToJSArray(i);break;case"void":c=null;break;case"vector_pair_clipper_coord_float":c=vectorPairClipperCoordFloatToJSArray(i);break;case"vector_pair_string_int":c=vectorPairStringIntToJSArray(i);break;case"privateer_results":c=privateerValidationToJSArray(i);break;default:c=i}try{i.delete()}catch(e){}return{messageId:o,messageSendTime:Date.now(),command:a,consoleMessage:"Completed ".concat(a," in ").concat(Date.now()-s," ms"),result:{status:"Completed",result:c}}}catch(e){return{messageId:o,myTimeStamp:s,message:n,consoleMessage:"EXCEPTION RAISED IN ".concat(a,", ").concat(e),result:{status:"Exception"}}}};onmessage=function(e){if("CootInitialize"===e.data.message)createRSRModule({onRuntimeInitialized:function(){},mainScriptUrlOrBlob:"moorhen.js",print,printErr:print}).then((function(r){postMessage({consoleMessage:"Initialized molecules_container",message:e.data.message,messageId:e.data.messageId}),(molecules_container=new(cootModule=r).molecules_container_js(!1)).set_use_gemmi(!1),molecules_container.set_show_timings(!1),molecules_container.set_refinement_is_verbose(!1),molecules_container.fill_rotamer_probability_tables(),molecules_container.set_map_sampling_rate(1.7),molecules_container.set_map_is_contoured_with_thread_pool(!0),molecules_container.set_max_number_of_threads(3),cootModule.FS.mkdir("COOT_BACKUP")})).catch((function(e){print(e)})),createCCP4Module({onRuntimeInitialized:function(){},mainScriptUrlOrBlob:"web_example.js",print,printErr:print}).then((function(e){ccp4Module=e})).catch((function(e){print(e)}));else if("close"===e.data.message)null==molecules_container||molecules_container.delete(),postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Closed molecules container",message:e.data.message,result:{}});else if("get_mtz_data"===e.data.message){var r=cootModule.FS.readFile(e.data.fileName,{encoding:"binary"});postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Fetched mtz data for map ".concat(e.data.molNo),message:e.data.message,result:{molNo:e.data.molNo,mtzData:r}})}else if("get_map"===e.data.message){var a=guid(),t="./".concat(a,".map");molecules_container.writeCCP4Map(e.data.molNo,t);var o=cootModule.FS.readFile(t,{encoding:"binary"});cootModule.FS_unlink(t),postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Fetched map of map ".concat(e.data.molNo),message:e.data.message,result:{molNo:e.data.molNo,mapData:o.buffer}})}else if("delete_file_name"===e.data.message){var s=cootModule.FS_unlink(e.data.fileName);postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,messageTag:"result",result:s})}else if("coot_command_list"===e.data.message){var n=e.data.commandList.map((function(r){return doCootCommand(__assign(__assign({},e.data),r))}));postMessage({messageId:e.data.messageId,resultList:n})}if("coot_command"===e.data.message){s=doCootCommand(e.data);postMessage(s)}};
@@ -1,6 +1,6 @@
1
- import { libcootApi } from "../../src/types/libcoot"
2
- import { emscriptem } from "../../src/types/emscriptem"
3
- import { privateer } from "../../src/types/privateer";
1
+ import { libcootApi } from "../src/types/libcoot"
2
+ import { emscriptem } from "../src/types/emscriptem"
3
+ import { privateer } from "../src/types/privateer";
4
4
 
5
5
  // @ts-ignore
6
6
  importScripts('./moorhen.js')
@@ -24,7 +24,24 @@ const guid = () => {
24
24
  // @ts-ignore
25
25
  let print = (stuff) => {
26
26
  console.log(stuff)
27
- postMessage({ consoleMessage: JSON.stringify(stuff) })
27
+ }
28
+
29
+ const parseMonLibListCif = (fileContents: string): libcootApi.compoundInfo[] => {
30
+ const table = cootModule.parse_mon_lib_list_cif(fileContents)
31
+ const tableSize = table.size()
32
+
33
+ let result: libcootApi.compoundInfo[] = []
34
+ for (let i = 0; i < tableSize; i++) {
35
+ const compound = table.get(i)
36
+ result.push({
37
+ three_letter_code: compound.three_letter_code,
38
+ // @ts-ignore
39
+ name: compound.name.replaceAll("'", "").toLowerCase()
40
+ })
41
+ }
42
+
43
+ table.delete()
44
+ return result
28
45
  }
29
46
 
30
47
  const instancedMeshToMeshData = (instanceMesh: libcootApi.InstancedMeshT, perm: boolean, toSpheres: boolean = false, maxZSize: number = 10000.): libcootApi.InstancedMeshJS => {
@@ -226,7 +243,7 @@ const instancedMeshToMeshData = (instanceMesh: libcootApi.InstancedMeshT, perm:
226
243
  }
227
244
  }
228
245
 
229
- const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean = false): libcootApi.SimpleMeshJS => {
246
+ const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean = false, keepNorm: boolean = false): libcootApi.SimpleMeshJS => {
230
247
 
231
248
  const print_timing = false
232
249
  const ts = performance.now()
@@ -246,7 +263,11 @@ const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean
246
263
  cootModule.getColoursFromSimpleMesh2(simpleMesh,totCol_C)
247
264
 
248
265
  if (perm){
249
- cootModule.getReversedNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
266
+ if(keepNorm){
267
+ cootModule.getReversedNormalsFromSimpleMesh3(simpleMesh,totNorm_C)
268
+ } else {
269
+ cootModule.getReversedNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
270
+ }
250
271
  cootModule.getPermutedTriangleIndicesFromSimpleMesh2(simpleMesh,totIdxs_C)
251
272
  } else {
252
273
  cootModule.getNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
@@ -956,12 +977,12 @@ const read_ccp4_map = (mapData: ArrayBufferLike, name: string, isDiffMap: boolea
956
977
  return molNo
957
978
  }
958
979
 
959
- const setUserDefinedBondColours = (imol: number, colours: { cid: string; rgb: [number, number, number] }[], applyColourToNonCarbonAtoms: boolean = false) => {
960
- let colourMap = new cootModule.MapIntFloat3()
980
+ const setUserDefinedBondColours = (imol: number, colours: { cid: string; rgba: [number, number, number, number] }[], applyColourToNonCarbonAtoms: boolean = false) => {
981
+ let colourMap = new cootModule.MapIntFloat4()
961
982
  let indexedResiduesVec = new cootModule.VectorStringUInt_pair()
962
983
 
963
984
  colours.forEach((colour, index) => {
964
- colourMap.set(index + 51, colour.rgb)
985
+ colourMap.set(index + 51, colour.rgba)
965
986
  const i = { first: colour.cid, second: index + 51 }
966
987
  indexedResiduesVec.push_back(i)
967
988
  })
@@ -1016,7 +1037,25 @@ const privateerValidationToJSArray = (results: emscriptem.vector<privateer.Resul
1016
1037
 
1017
1038
  results.delete();
1018
1039
  return data;
1040
+ }
1041
+
1042
+ const headerInfoAsJSObject = (result: libcootApi.headerInfo): libcootApi.headerInfoJS => {
1043
+
1044
+ const authorLines = result.author_lines
1045
+ const author_lines: string[] = stringArrayToJSArray(authorLines)
1046
+
1047
+ const compoundLines = result.compound_lines
1048
+ const compound_lines: string[] = stringArrayToJSArray(compoundLines)
1049
+
1050
+ const journalLines = result.journal_lines
1051
+ const journal_lines: string[] = stringArrayToJSArray(journalLines)
1019
1052
 
1053
+ return {
1054
+ title: result.title,
1055
+ author_lines,
1056
+ compound_lines,
1057
+ journal_lines
1058
+ }
1020
1059
  }
1021
1060
 
1022
1061
  const doCootCommand = (messageData: {
@@ -1054,7 +1093,7 @@ const doCootCommand = (messageData: {
1054
1093
  cootResult = replace_map_by_mtz_from_file(...commandArgs as [number, ArrayBufferLike, { F: string; PHI: string; }])
1055
1094
  break
1056
1095
  case 'shim_set_bond_colours':
1057
- cootResult = setUserDefinedBondColours(...commandArgs as [number, { cid: string; rgb: [number, number, number] }[], boolean])
1096
+ cootResult = setUserDefinedBondColours(...commandArgs as [number, { cid: string; rgba: [number, number, number, number] }[], boolean])
1058
1097
  break
1059
1098
  case 'shim_export_map_as_gltf':
1060
1099
  cootResult = export_map_as_gltf(...commandArgs as [number, number, number, number, number, number])
@@ -1065,6 +1104,9 @@ const doCootCommand = (messageData: {
1065
1104
  case 'shim_export_molecular_represenation_as_gltf':
1066
1105
  cootResult = export_molecular_represenation_as_gltf(...commandArgs as [number, string, string, string])
1067
1106
  break
1107
+ case "parse_mon_lib_list_cif":
1108
+ cootResult = parseMonLibListCif(...commandArgs as [string])
1109
+ break
1068
1110
  default:
1069
1111
  cootResult = molecules_container[command](...commandArgs)
1070
1112
  break
@@ -1072,6 +1114,9 @@ const doCootCommand = (messageData: {
1072
1114
 
1073
1115
  let returnResult;
1074
1116
  switch (returnType) {
1117
+ case 'header_info_t':
1118
+ returnResult = headerInfoAsJSObject(cootResult)
1119
+ break
1075
1120
  case 'texture_as_floats_t':
1076
1121
  returnResult = textureAsFloatsToJSTextureAsFloats(cootResult)
1077
1122
  break;
@@ -1102,6 +1147,9 @@ const doCootCommand = (messageData: {
1102
1147
  case 'instanced_mesh':
1103
1148
  returnResult = instancedMeshToMeshData(cootResult, false, false, 5)
1104
1149
  break;
1150
+ case 'mesh_perm3':
1151
+ returnResult = simpleMeshToMeshData(cootResult, true, true)
1152
+ break;
1105
1153
  case 'mesh_perm':
1106
1154
  returnResult = simpleMeshToMeshData(cootResult, true)
1107
1155
  break;
Binary file
@@ -0,0 +1,25 @@
1
+ {
2
+ "short_name": "Moorhen",
3
+ "name": "Moorhen",
4
+ "icons": [
5
+ {
6
+ "src": "favicon.ico",
7
+ "sizes": "64x64 32x32 24x24 16x16",
8
+ "type": "image/x-icon"
9
+ },
10
+ {
11
+ "src": "logo192.png",
12
+ "type": "image/png",
13
+ "sizes": "192x192"
14
+ },
15
+ {
16
+ "src": "logo512.png",
17
+ "type": "image/png",
18
+ "sizes": "512x512"
19
+ }
20
+ ],
21
+ "start_url": ".",
22
+ "display": "standalone",
23
+ "theme_color": "#000000",
24
+ "background_color": "#ffffff"
25
+ }
@@ -127,21 +127,21 @@ div.darkly text.end-label {fill:#FFF !important;}
127
127
 
128
128
  .rama-validation-tool-container-row {
129
129
  width: 100%;
130
- margin: 0;
130
+ margin: 0 !important;
131
131
  padding: 0;
132
132
  height: 100%;
133
133
  }
134
134
 
135
135
  .big-validation-tool-container-row {
136
136
  width: 100%;
137
- margin: 0;
137
+ margin: 0 !important;
138
138
  padding: 0;
139
139
  height: calc(100% - 6rem);
140
140
  }
141
141
 
142
142
  .small-validation-tool-container-row {
143
143
  width: 100%;
144
- margin: 0;
144
+ margin: 0 !important;
145
145
  padding: 0;
146
146
  height: calc(100% - 19rem);
147
147
  }
@@ -223,6 +223,21 @@ div.darkly text.end-label {fill:#FFF !important;}
223
223
  justify-content: center;
224
224
  }
225
225
 
226
+ .moorhen-sidebar-div {
227
+ box-shadow: 0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12);
228
+ width: 14rem;
229
+ min-height: 3rem;
230
+ height: fit-content;
231
+ overflow-y: auto;
232
+ overflow-x: hidden;
233
+ padding: 0.5rem;
234
+ display: flex;
235
+ border-radius: 0.5rem;
236
+ align-items: center;
237
+ align-content: center;
238
+ justify-content: center;
239
+ }
240
+
226
241
  .moorhen-tooltip {
227
242
  display: flex;
228
243
  z-index: 9999;