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
@@ -4,6 +4,7 @@ import { gemmi } from "./gemmi";
4
4
  import { webGL } from "./mgWebGL";
5
5
  import { MoorhenMolecule } from "../moorhen";
6
6
  import { ToolkitStore } from "@reduxjs/toolkit/dist/configureStore";
7
+ import { AnyAction, Dispatch } from "@reduxjs/toolkit";
7
8
 
8
9
  export namespace moorhen {
9
10
 
@@ -81,6 +82,39 @@ export namespace moorhen {
81
82
  width: number;
82
83
  atomRadiusBondRatio: number;
83
84
  }
85
+
86
+ type gaussianSurfSettings = {
87
+ sigma: number;
88
+ countourLevel: number;
89
+ boxRadius: number;
90
+ gridScale: number;
91
+ bFactor: number;
92
+ }
93
+
94
+ type m2tParameters = {
95
+ ribbonStyleCoilThickness: number;
96
+ ribbonStyleHelixWidth: number;
97
+ ribbonStyleStrandWidth: number;
98
+ ribbonStyleArrowWidth: number;
99
+ ribbonStyleDNARNAWidth: number;
100
+ ribbonStyleAxialSampling: number;
101
+ cylindersStyleAngularSampling: number;
102
+ cylindersStyleCylinderRadius: number;
103
+ cylindersStyleBallRadius: number;
104
+ surfaceStyleProbeRadius: number;
105
+ ballsStyleRadiusMultiplier: number;
106
+ nucleotideRibbonStyle: "StickBases" | "DishyBases";
107
+ dishStyleAngularSampling: number;
108
+ }
109
+
110
+ type residueEnvironmentOptions = {
111
+ maxDist: number;
112
+ backgroundRepresentation: RepresentationStyles;
113
+ focusRepresentation: RepresentationStyles;
114
+ labelled: boolean;
115
+ showHBonds: boolean;
116
+ showContacts: boolean;
117
+ }
84
118
 
85
119
  type ColourRuleObject = {
86
120
  cid: string;
@@ -109,6 +143,7 @@ export namespace moorhen {
109
143
  uniqueId: string;
110
144
  static initFromDataObject(data: ColourRuleObject, commandCentre: React.RefObject<CommandCentre>, molecule: Molecule): ColourRule;
111
145
  static initFromString(stringData: string, commandCentre: React.RefObject<CommandCentre>, molecule: Molecule): ColourRule;
146
+ static parseHexToRgba(hex: string): [number, number, number, number];
112
147
  objectify(): ColourRuleObject;
113
148
  stringify(): string;
114
149
  setLabel(label: string): void;
@@ -116,12 +151,11 @@ export namespace moorhen {
116
151
  setParentMolecule(molecule: Molecule): void;
117
152
  setParentRepresentation(representation: MoleculeRepresentation): void;
118
153
  setApplyColourToNonCarbonAtoms(newVal: boolean): void;
119
- getUserDefinedColours(): { cid: string; rgb: [number, number, number]; applyColourToNonCarbonAtoms: boolean }[];
120
- apply(style: string, ruleIndex: number): Promise<void>;
154
+ getUserDefinedColours(): { cid: string; rgba: [number, number, number, number]; applyColourToNonCarbonAtoms: boolean }[];
155
+ apply(style?: string, ruleIndex: number): Promise<void>;
121
156
  }
122
157
 
123
- type coorFormats = 'pdb' | 'mmcif';
124
-
158
+ type coorFormats = 'pdb' | 'mmcif' | 'unk' | 'mmjson' | 'xml';
125
159
  interface Molecule {
126
160
  transferLigandDicts(toMolecule: Molecule, override?: boolean): Promise<void>;
127
161
  minimizeEnergyUsingCidAnimated(cid: string, ncyc: number, nIterations: number, useRamaRestraints: boolean, ramaWeight: number, useTorsionRestraints: boolean, torsionWeight: number): Promise<void>;
@@ -129,7 +163,7 @@ export namespace moorhen {
129
163
  splitMultiModels(draw?: boolean): Promise<Molecule[]>;
130
164
  getActiveAtom(): Promise<string>;
131
165
  setDrawAdaptativeBonds(newValue: boolean): Promise<void>;
132
- redrawAdaptativeBonds(selectionString?: string, maxDist?: number): Promise<void>;
166
+ redrawAdaptativeBonds(selectionString?: string): Promise<void>;
133
167
  changeChainId(oldId: string, newId: string, redraw?: boolean, startResNo?: number, endResNo?: number): Promise<number>;
134
168
  refineResiduesUsingAtomCidAnimated(cid: string, activeMap: Map, dist?: number, redraw?: boolean, redrawFragmentFirst?: boolean): Promise<void>;
135
169
  mergeFragmentFromRefinement(cid: string, fragmentMolecule: Molecule, acceptTransform?: boolean, refineAfterMerge?: boolean): Promise<void>;
@@ -138,12 +172,13 @@ export namespace moorhen {
138
172
  getSecondaryStructInfo(modelNumber?: number): Promise<libcootApi.ResidueSpecJS[]>;
139
173
  getNonSelectedCids(cid: string): string[];
140
174
  parseCidIntoSelection(selectedCid: string): Promise<ResidueSelection>;
141
- downloadAtoms(format?: 'mmcif' | 'pdb'): Promise<void>;
175
+ downloadAtoms(format?: coorFormats, fileName?: string): Promise<void>;
142
176
  getResidueBFactors(): { cid: string; bFactor: number; normalised_bFactor: number }[];
143
177
  getNcsRelatedChains(): Promise<string[][]>;
144
178
  animateRefine(n_cyc: number, n_iteration: number, final_n_cyc?: number): Promise<void>;
145
179
  refineResidueRange(chainId: string, start: number, stop: number, ncyc?: number, redraw?: boolean): Promise<void>;
146
- SSMSuperpose(movChainId: string, refMolNo: number, refChainId: string): Promise<WorkerResponse>;
180
+ SSMSuperpose(movChainId: string, refMolNo: number, refChainId: string, redraw?: boolean): Promise<void>;
181
+ lsqkbSuperpose(refMolNo: number, residueMatches: lskqbResidueRangeMatch[], matchType?: number, redraw?: boolean): Promise<void>;
147
182
  refineResiduesUsingAtomCid(cid: string, mode: string, ncyc?: number, redraw?: boolean): Promise<void>;
148
183
  deleteCid(cid: string, redraw?: boolean): Promise<{first: number, second: number}>;
149
184
  getNumberOfAtoms(): Promise<number>;
@@ -152,7 +187,7 @@ export namespace moorhen {
152
187
  fitLigand(mapMolNo: number, ligandMolNo: number, fitRightHere?: boolean, redraw?: boolean, useConformers?: boolean, conformerCount?: number): Promise<Molecule[]>;
153
188
  checkIsLigand(): boolean;
154
189
  removeRepresentation(representationId: string): void;
155
- addRepresentation(style: string, cid: string, isCustom?: boolean, colour?: ColourRule[], bondOptions?: cootBondOptions): Promise<MoleculeRepresentation>;
190
+ addRepresentation(style: string, cid: string, isCustom?: boolean, colour?: ColourRule[], bondOptions?: cootBondOptions, m2tParams?: m2tParameters, residueEnvOptions?: residueEnvironmentOptions): Promise<MoleculeRepresentation>;
156
191
  getNeighborResiduesCids(selectionCid: string, maxDist: number): Promise<string[]>;
157
192
  drawWithStyleFromMesh(style: string, meshObjects: any[], cid?: string, fetchAtomBuffers?: boolean): Promise<void>;
158
193
  updateWithMovedAtoms(movedResidues: AtomInfo[][]): Promise<void>;
@@ -177,7 +212,7 @@ export namespace moorhen {
177
212
  clearExtraRestraints(): Promise<WorkerResponse>;
178
213
  redo(): Promise<void>;
179
214
  undo(): Promise<void>;
180
- show(style: string, cid?: string): void;
215
+ show(style: string, cid?: string): Promise<MoleculeRepresentation>;
181
216
  setSymmetryRadius(radius: number): Promise<void>;
182
217
  drawSymmetry: (fetchSymMatrix?: boolean) => Promise<void>;
183
218
  drawBiomolecule(fetchSymMatrix?: boolean) : void;
@@ -187,15 +222,15 @@ export namespace moorhen {
187
222
  delete(popBackImol?: boolean): Promise<WorkerResponse>;
188
223
  fetchDefaultColourRules(): Promise<void>;
189
224
  fetchIfDirtyAndDraw(arg0: string): Promise<void>;
190
- drawEnvironment: (cid: string, labelled?: boolean) => Promise<void>;
225
+ drawEnvironment: (cid?: string) => Promise<void>;
191
226
  centreOn: (selectionCid?: string, animate?: boolean, setZoom?: boolean) => Promise<void>;
192
227
  drawHover: (cid: string) => Promise<void>;
193
228
  drawResidueSelection: (cid: string) => Promise<void>;
194
229
  clearBuffersOfStyle: (style: string) => void;
195
230
  loadToCootFromURL: (inputFile: string, molName: string, options?: RequestInit) => Promise<Molecule>;
196
231
  applyTransform: () => Promise<void>;
197
- getAtoms(format?: string): Promise<string>;
198
- hide: (style: string, cid?: string) => void;
232
+ getAtoms(format?: coorFormats): Promise<string>;
233
+ hide: (style: string, cid?: string) => MoleculeRepresentation;
199
234
  redraw: () => Promise<void>;
200
235
  setAtomsDirty: (newVal: boolean) => void;
201
236
  isVisible: (excludeBuffers?: string[]) => boolean;
@@ -205,12 +240,14 @@ export namespace moorhen {
205
240
  getPrivateerValidation(useCache?: boolean): Promise<privateer.ResultsEntry[]>;
206
241
  getLigandSVG(resName: string, useCache?: boolean): Promise<string>;
207
242
  isValidSelection(cid: string): Promise<boolean>;
243
+ fetchHeaderInfo(useCache?: boolean): Promise<libcootApi.headerInfoJS>;
208
244
  type: string;
209
245
  adaptativeBondsEnabled: boolean;
210
246
  cachedLigandSVGs: {[key: string]: string};
211
247
  cachedGemmiAtoms: AtomInfo[];
212
248
  cachedPrivateerValidation: privateer.ResultsEntry[];
213
249
  isLigand: boolean;
250
+ isMRSearchModel: boolean;
214
251
  excludedCids: string[];
215
252
  commandCentre: React.RefObject<CommandCentre>;
216
253
  glRef: React.RefObject<webGL.MGWebGL>;
@@ -229,13 +266,9 @@ export namespace moorhen {
229
266
  biomolOn: boolean;
230
267
  symmetryRadius : number;
231
268
  symmetryMatrices: number[][][];
232
- gaussianSurfaceSettings: {
233
- sigma: number;
234
- countourLevel: number;
235
- boxRadius: number;
236
- gridScale: number;
237
- bFactor: number;
238
- };
269
+ gaussianSurfaceSettings: gaussianSurfSettings;
270
+ defaultM2tParams: m2tParameters;
271
+ defaultResidueEnvironmentOptions: residueEnvironmentOptions
239
272
  isDarkBackground: boolean;
240
273
  representations: MoleculeRepresentation[];
241
274
  defaultBondOptions: cootBondOptions;
@@ -253,12 +286,20 @@ export namespace moorhen {
253
286
  hasGlycans: boolean;
254
287
  coordsFormat: coorFormats;
255
288
  moleculeDiameter: number;
289
+ headerInfo: libcootApi.headerInfoJS;
290
+ }
291
+
292
+ type lskqbResidueRangeMatch = {
293
+ refChainId: string;
294
+ movChainId: string;
295
+ refResidueRange: [number, number];
296
+ movResidueRange: [number, number];
256
297
  }
257
298
 
258
299
  type RepresentationStyles = 'VdwSpheres' | 'ligands' | 'CAs' | 'CBs' | 'CDs' | 'gaussian' | 'allHBonds' | 'rama' |
259
300
  'rotamer' | 'CRs' | 'MolecularSurface' | 'DishyBases' | 'VdWSurface' | 'Calpha' | 'unitCell' | 'hover' | 'environment' |
260
301
  'ligand_environment' | 'contact_dots' | 'chemical_features' | 'ligand_validation' | 'glycoBlocks' | 'restraints' |
261
- 'residueSelection' | 'MetaBalls' | 'adaptativeBonds'
302
+ 'residueSelection' | 'MetaBalls' | 'adaptativeBonds' | 'StickBases' | 'residue_environment' | 'transformation'
262
303
 
263
304
  interface MoleculeRepresentation {
264
305
  addColourRule(ruleType: string, cid: string, color: string, args: (string | number)[], isMultiColourRule?: boolean, applyColourToNonCarbonAtoms?: boolean, label?: string): void;
@@ -266,24 +307,31 @@ export namespace moorhen {
266
307
  applyColourRules(): Promise<void>;
267
308
  exportAsGltf(): Promise<ArrayBuffer>;
268
309
  setBondOptions(bondOptions: cootBondOptions): void;
310
+ setResidueEnvOptions(newOptions: residueEnvironmentOptions): void;
269
311
  setStyle(style: string): void;
270
312
  setUseDefaultColourRules(arg0: boolean): void;
271
313
  setColourRules(ruleList: ColourRule[]): void;
272
- buildBuffers(arg0: DisplayObject[]): Promise<void>;
314
+ buildBuffers(arg0: DisplayObject[]): void;
273
315
  setBuffers(meshObjects: DisplayObject[]): void;
274
316
  drawSymmetry(): void
275
317
  deleteBuffers(): void;
276
318
  draw(): Promise<void>;
277
319
  redraw(): Promise<void>;
278
320
  setParentMolecule(arg0: Molecule): void;
279
- show(): void;
321
+ show(): Promise<void>;
280
322
  hide(): void;
281
323
  setAtomBuffers(arg0: AtomInfo[]): void;
324
+ setM2tParams(arg0: m2tParameters): void;
325
+ static mergeBufferObjects(bufferObj1: libcootApi.InstancedMeshJS[], bufferObj2: libcootApi.InstancedMeshJS[]): libcootApi.InstancedMeshJS[];
282
326
  bondOptions: cootBondOptions;
327
+ m2tParams: m2tParameters;
328
+ residueEnvironmentOptions: residueEnvironmentOptions;
329
+ useDefaultM2tParams: boolean;
330
+ useDefaultResidueEnvironmentOptions: boolean;
283
331
  useDefaultColourRules: boolean;
284
332
  useDefaultBondOptions: boolean;
285
333
  uniqueId: string;
286
- style: string;
334
+ style: RepresentationStyles;
287
335
  cid: string;
288
336
  visible: boolean;
289
337
  buffers: DisplayObject[];
@@ -427,7 +475,7 @@ export namespace moorhen {
427
475
  startRecording: () => void;
428
476
  isRecording: () => boolean;
429
477
  downloadVideo: (blob: Blob) => Promise<void>;
430
- takeScreenShot: (fileName: string) => void;
478
+ takeScreenShot: (fileName: string, doTransparentBackground?: boolean) => void;
431
479
  }
432
480
 
433
481
  interface Map {
@@ -510,17 +558,25 @@ export namespace moorhen {
510
558
  name: string;
511
559
  molNo: number;
512
560
  coordString: string;
561
+ coordFormat: coorFormats;
513
562
  representations: {
514
563
  cid: string;
515
564
  style: strin;
516
565
  isCustom: boolean;
517
566
  colourRules: ColourRuleObject[];
518
567
  bondOptions: cootBondOptions;
568
+ m2tParams: m2tParameters;
569
+ resEnvOptions: residueEnvironmentOptions;
519
570
  }[];
520
571
  defaultBondOptions: cootBondOptions;
572
+ defaultM2tParams: m2tParameters;
573
+ defaultResEnvOptions: residueEnvironmentOptions;
521
574
  defaultColourRules: ColourRuleObject[];
522
575
  connectedToMaps: number[];
523
576
  ligandDicts: {[comp_id: string]: string};
577
+ symmetryOn: boolean;
578
+ biomolOn: boolean;
579
+ symmetryRadius: number;
524
580
  }
525
581
 
526
582
  type mapDataSession = {
@@ -569,6 +625,7 @@ export namespace moorhen {
569
625
  depthThreshold: number;
570
626
  normalThreshold: number;
571
627
  };
628
+ doPerspectiveProjection: boolean;
572
629
  blur: {enabled: boolean; depth: number; radius: number};
573
630
  }
574
631
 
@@ -591,6 +648,54 @@ export namespace moorhen {
591
648
  createBackup(keyString: string, sessionString: string): Promise<string>;
592
649
  fetchSession(includeAdditionalMapData: boolean): Promise<backupSession>;
593
650
  toggleDisableBackups(): void;
651
+ addModification: () => Promise<string>;
652
+ init: () => Promise<void>;
653
+ retrieveBackup: (arg0: string) => Promise<string | ArrayBuffer>;
654
+ static getBackupLabel(key: backupKey): string;
655
+ static loadSessionData(
656
+ sessionData: backupSession,
657
+ monomerLibraryPath: string,
658
+ molecules: Molecule[],
659
+ maps: Map[],
660
+ commandCentre: React.RefObject<CommandCentre>,
661
+ timeCapsuleRef: React.RefObject<TimeCapsule>,
662
+ glRef: React.RefObject<webGL.MGWebGL>,
663
+ store: ToolkitStore,
664
+ dispatch: Dispatch<AnyAction>
665
+ ): Promise<number>;
666
+ static loadSessionFromArrayBuffer(
667
+ sessionArrayBuffer: ArrayBuffer,
668
+ monomerLibraryPath: string,
669
+ molecules: Molecule[],
670
+ maps: Map[],
671
+ commandCentre: React.RefObject<CommandCentre>,
672
+ timeCapsuleRef: React.RefObject<TimeCapsule>,
673
+ glRef: React.RefObject<webGL.MGWebGL>,
674
+ store: ToolkitStore,
675
+ dispatch: Dispatch<AnyAction>
676
+ ): Promise<number>;
677
+ static loadSessionFromProtoMessage(
678
+ sessionProtoMessage: any,
679
+ monomerLibraryPath: string,
680
+ molecules: Molecule[],
681
+ maps: Map[],
682
+ commandCentre: React.RefObject<CommandCentre>,
683
+ timeCapsuleRef: React.RefObject<TimeCapsule>,
684
+ glRef: React.RefObject<webGL.MGWebGL>,
685
+ store: ToolkitStore,
686
+ dispatch: Dispatch<AnyAction>
687
+ ): Promise<number>;
688
+ static loadSessionFromJsonString(
689
+ sessionDataString: string,
690
+ monomerLibraryPath: string,
691
+ molecules: Molecule[],
692
+ maps: Map[],
693
+ commandCentre: React.RefObject<CommandCentre>,
694
+ timeCapsuleRef: React.RefObject<TimeCapsule>,
695
+ glRef: React.RefObject<webGL.MGWebGL>,
696
+ store: ToolkitStore,
697
+ dispatch: Dispatch<AnyAction>
698
+ ): Promise<number>;
594
699
  store: ToolkitStore;
595
700
  moleculesRef: React.RefObject<Molecule[]>;
596
701
  mapsRef: React.RefObject<Map[]>;
@@ -603,9 +708,6 @@ export namespace moorhen {
603
708
  version: string;
604
709
  disableBackups: boolean;
605
710
  storageInstance: LocalStorageInstance;
606
- addModification: () => Promise<string>;
607
- init: () => Promise<void>;
608
- retrieveBackup: (arg0: string) => Promise<string | ArrayBuffer>;
609
711
  }
610
712
 
611
713
  type AtomRightClickEventInfo = {
@@ -730,7 +832,6 @@ export namespace moorhen {
730
832
  drawAxes: boolean;
731
833
  drawFPS: boolean;
732
834
  drawMissingLoops: boolean;
733
- drawInteractions: boolean;
734
835
  doPerspectiveProjection: boolean;
735
836
  useOffScreenBuffers: boolean;
736
837
  depthBlurRadius: number;
@@ -832,6 +933,7 @@ export namespace moorhen {
832
933
  moleculeList: Molecule[];
833
934
  visibleMolecules: number[];
834
935
  customRepresentations: MoleculeRepresentation[];
936
+ generalRepresentations: MoleculeRepresentation[];
835
937
  };
836
938
  maps: Map[];
837
939
  mouseSettings: {
@@ -863,7 +965,6 @@ export namespace moorhen {
863
965
  drawAxes: boolean;
864
966
  drawFPS: boolean;
865
967
  drawMissingLoops: boolean;
866
- drawInteractions: boolean;
867
968
  doPerspectiveProjection: boolean;
868
969
  useOffScreenBuffers: boolean;
869
970
  depthBlurRadius: number;
@@ -919,27 +1020,10 @@ export namespace moorhen {
919
1020
  hoveredAtom: HoveredAtom;
920
1021
  cursorStyle: string;
921
1022
  };
922
- activeModals: {
923
- showModelsModal: boolean;
924
- showMapsModal: boolean;
925
- showCreateAcedrgLinkModal: boolean;
926
- showQuerySequenceModal: boolean;
927
- showScriptingModal: boolean;
928
- showControlsModal: boolean;
929
- showFitLigandModal: boolean;
930
- showRamaPlotModal: boolean;
931
- showDiffMapPeaksModal: boolean;
932
- showValidationPlotModal: boolean;
933
- showLigandValidationModal: boolean;
934
- showCarbohydrateModal: boolean;
935
- showPepFlipsValidationModal: boolean;
936
- showFillPartialResValidationModal: boolean;
937
- showUnmodelledBlobsModal: boolean;
938
- showMmrrccModal: boolean;
939
- showWaterValidationModal: boolean;
940
- showSceneSettingsModal: boolean;
941
- showSliceNDiceModal: boolean;
1023
+ modals: {
1024
+ activeModals: string[];
942
1025
  focusHierarchy: string[];
1026
+ modalsAttachedToSideBar: { key: string; isCollapsed: boolean }[];
943
1027
  };
944
1028
  mapContourSettings: {
945
1029
  visibleMaps: number[];
@@ -971,11 +1055,14 @@ export namespace moorhen {
971
1055
  };
972
1056
  refinementSettings: {
973
1057
  useRamaRefinementRestraints: boolean;
974
- useTorsionRefinementRestraints: boolean;
1058
+ useTorsionRefinementRestraints: boolean;
975
1059
  enableRefineAfterMod: boolean;
976
1060
  animateRefine: boolean;
977
1061
  refinementSelection: 'SINGLE' | 'TRIPLE' | 'SPHERE';
978
1062
  };
1063
+ lhasa: {
1064
+ rdkitMoleculePickleList: { cid: string; moleculeMolNo: number; ligandName: string; pickle: string; id: string }[];
1065
+ }
979
1066
  }
980
1067
 
981
1068
  type actionButtonSettings = {
@@ -1 +0,0 @@
1
- var cootModule,molecules_container,ccp4Module,__assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var a,r=1,t=arguments.length;r<t;r++)for(var o in a=arguments[r])Object.prototype.hasOwnProperty.call(a,o)&&(e[o]=a[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(a){var r=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===a?r:3&r|8).toString(16)}))},print=function(e){console.log(e),postMessage({consoleMessage:JSON.stringify(e)})},instancedMeshToMeshData=function(e,a,r,t){void 0===r&&(r=!1),void 0===t&&(t=1e4);for(var o=[],s=[],n=[],i=[],c=[],_=[],l=[],u=[],d=[],m=e.geom,p=e.markup,g=m.size(),h=0;h<g;h++){var f=r,v=[],y=[],S=[],b=[],M=[],z=[],x=[],T=m.get(h);"spherical-atoms"===T.name&&(f=!0);for(var A=T.vertices,F=T.triangles,w=F.size(),k=0;k<w;k++){var I=F.get(k).point_id;a?(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=A.size(),D=0;D<J;D++){var C=A.get(D),N=C.pos;y.push(N[0]),y.push(N[1]),y.push(N[2]);var R=C.normal;S.push(R[0]),S.push(R[1]),S.push(R[2])}A.delete();var P=T.instancing_data_A,E=P.size();if(E>0)for(var U=0;U<E;U++){var L=(q=P.get(U)).position;z.push(L[0]),z.push(L[1]),z.push(L[2]);var O=q.colour;M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var B=q.size;b.push(B[0]),b.push(B[1]),b.push(B[2]),x.push.apply(x,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}P.delete();var j=T.instancing_data_B,V=j.size();if(V>0)for(U=0;U<V;U++){var q;if(!((B=(q=j.get(U)).size)[2]>t)){b.push(B[0]),b.push(B[1]),b.push(B[2]),L=q.position,z.push(L[0]),z.push(L[1]),z.push(L[2]),O=q.colour,M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var H=q.orientation;x.push(H[0][0]),x.push(H[0][1]),x.push(H[0][2]),x.push(H[0][3]),x.push(H[1][0]),x.push(H[1][1]),x.push(H[1][2]),x.push(H[1][3]),x.push(H[2][0]),x.push(H[2][1]),x.push(H[2][2]),x.push(H[2][3]),x.push(H[3][0]),x.push(H[3][1]),x.push(H[3][2]),x.push(H[3][3])}}j.delete(),n.push(S),s.push(y),o.push(v),i.push(b),_.push(z),l.push(x),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?r?{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,a){void 0===a&&(a=!1),performance.now();var r=e.vertices,t=e.triangles,o=r.size(),s=t.size(),n=new Uint32Array(3*s),i=new Float32Array(3*o),c=new Float32Array(3*o),_=new Float32Array(4*o);cootModule.getPositionsFromSimpleMesh2(e,i),cootModule.getColoursFromSimpleMesh2(e,_),a?(cootModule.getReversedNormalsFromSimpleMesh2(e,c),cootModule.getPermutedTriangleIndicesFromSimpleMesh2(e,n)):(cootModule.getNormalsFromSimpleMesh2(e,c),cootModule.getTriangleIndicesFromSimpleMesh2(e,n)),performance.now();var l=i,u=_,d=c,m=n;return r.delete(),t.delete(),{prim_types:[["TRIANGLES"]],idx_tri:[[m]],vert_tri:[[l]],norm_tri:[[d]],col_tri:[[u]]}},SuperposeResultsToJSArray=function(e){for(var a=e.aligned_pairs,r=a.size(),t=[],o=0;o<r;o++){var s=a.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 a.delete(),{referenceSequence:e.alignment.first,movingSequence:e.alignment.second,supperposeInfo:e.superpose_info,alignedPairsData:t}},colourRulesToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},stringArrayArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){for(var o=e.get(t),s=o.size(),n=[],i=0;i<s;i++){var c=o.get(i);n.push(c)}a.push(n),o.delete()}return e.delete(),a},floatArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},mapMoleculeCentreInfoToJSObject=function(e){var a=e.updated_centre,r={updated_centre:[a.x(),a.y(),a.z()],success:e.success,suggested_radius:e.suggested_radius,suggested_contour_level:e.suggested_contour_level};return a.delete(),r},textureAsFloatsToJSTextureAsFloats=function(e){var a=e.width*e.height,r=new Float32Array(a),t=performance.now();cootModule.getTextureArray(e,r);var o=performance.now();return console.log("Time to convert texture array to JS",o-t),{width:e.width,height:e.height,x_size:e.x_size,y_size:e.y_size,z_position:e.z_position,image_data:r}},fitLigandInfoArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(__assign({},o))}return e.delete(),a},intArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},stringArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},export_map_as_gltf=function(e,a,r,t,o,s){var n="".concat(guid(),".glb");molecules_container.export_map_molecule_as_gltf(e,a,r,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,a,r,t){var o="".concat(guid(),".glb");molecules_container.export_molecular_represenation_as_gltf(e,a,r,t,o);var s=cootModule.FS.readFile(o,{encoding:"binary"});return cootModule.FS_unlink(o),s.buffer},export_molecule_as_gltf=function(e,a,r,t,o,s,n,i,c){var _="".concat(guid(),".glb");molecules_container.export_model_molecule_as_gltf(e,a,r,t,o,s,n,i,c,_);var l=cootModule.FS.readFile(_,{encoding:"binary"});return cootModule.FS_unlink(_),l.buffer},symmetryToJSData=function(e){for(var a=[],r=e.first,t=e.second,o=r.symm_trans,s=o.size(),n=0;n<s;n++){var i=o.get(n),c=i.first,_=i.second,l=t.get(n);a.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(),a},mmrrccStatsToJSArray=function(e){var a=function(e){for(var a=[],r=e.keys(),t=r.size(),o=0;o<t;o++){var s=r.get(o),n=e.get(s);a.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 r.delete(),a},r=e.first,t=e.second,o={"All atoms":a(r),"Side-chains":a(t)};return r.delete(),t.delete(),o},atomSpecToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.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(),a},residueSpecToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.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(),a},stringPairVectorToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push({first:o.first,second:o.second})}return e.delete(),a},validationDataToJSArray=function(e,a){void 0===a&&(a=null);for(var r=[],t=e.cviv,o=t.size(),s=0;s<o;s++){var n=t.get(s);if(null!==a&&n.chain_id!==a);else{for(var i=n.rviv,c=i.size(),_=0;_<c;_++){var l=i.get(_),u=l.residue_spec;r.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(),r},linesBoxToJSArray=function(e){for(var a=[],r=e.line_segments,t=r.size(),o=0;o<t;o++){for(var s=[],n=r.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(),a.push(s)}return r.delete(),a},vectorHBondToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.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(),a},interestingPlaceDataToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t),s=o.residue_spec;a.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(),a},histogramInfoToJSData=function(e){var a=e.counts;return{counts:intArrayToJSArray(a),bin_width:e.bin_width,base:e.base}},autoReadMtzInfoVectToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.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(),a.some((function(e){return-1===e.idx}))){var s=a.find((function(e){return-1===e.idx}));s&&s.F_obs&&s.Rfree&&s.sigF_obs&&a.forEach((function(e){e.F_obs=s.F_obs,e.sigF_obs=s.sigF_obs,e.Rfree=s.Rfree})),a=a.filter((function(e){return-1!==e.idx}))}return a},ramachandranDataToJSArray=function(e,a){for(var r=[],t=e.size(),o=0;o<t;o++){var s=e.get(o),n=s.phi_psi;n.chain_id===a&&r.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(),r},vectorPairStringIntToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t),s={residue:o.first,slice:o.second};a.push(s)}return e.delete(),a},vectorPairClipperCoordFloatToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t),s=o.second,n=o.first,i={x:n.x(),y:n.y(),z:n.z()};n.delete(),a.push({value:s,coord:i})}return e.delete(),a},simpleMeshToLineMeshData=function(e,a){performance.now();var r=e.vertices,t=e.triangles,o=t.size(),s=r.size(),n=new Uint32Array(6*o),i=new Float32Array(3*s),c=new Float32Array(3*s),_=new Float32Array(4*s);cootModule.getLineIndicesFromSimpleMesh2(e,n),cootModule.getPositionsFromSimpleMesh2(e,i),cootModule.getNormalsFromSimpleMesh2(e,c),cootModule.getColoursFromSimpleMesh2(e,_),performance.now();var l=n,u=i,d=c,m=_;return r.delete(),t.delete(),a?{prim_types:[["NORMALLINES"]],useIndices:[[!0]],idx_tri:[[l]],vert_tri:[[u]],additional_norm_tri:[[d]],norm_tri:[[d]],col_tri:[[m]]}:{prim_types:[["LINES"]],useIndices:[[!0]],idx_tri:[[l]],vert_tri:[[u]],norm_tri:[[d]],col_tri:[[m]]}},auto_read_mtz=function(e){var a=guid(),r=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(a,".mtz"),r,!0,!0);var t="./".concat(a,".mtz"),o=molecules_container.auto_read_mtz(t);return cootModule.FS_unlink(t),o},replace_map_by_mtz_from_file=function(e,a,r){var t=guid(),o="./".concat(t,".mtz"),s=new Uint8Array(a);cootModule.FS_createDataFile(".",o,s,!0,!0);var n=[e,o,r.F,r.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,a){var r=0,t=new cootModule.Vectormoved_residue_t;return a.forEach((function(e){if(e.length>0){var a=e[0],r=new cootModule.moved_residue_t(a.chain_id,parseInt(a.res_no),"");e.forEach((function(e){var a=new cootModule.moved_atom_t(e.name,e.alt_loc,e.x,e.y,e.z,-1);r.add_atom(a),a.delete()})),t.push_back(r),r.delete()}})),r+=molecules_container.new_positions_for_atoms_in_residues(e,t),t.delete(),r},read_mtz=function(e,a,r){var t=guid(),o=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(t,".mtz"),o,!0,!0);var s="./".concat(t,".mtz"),n=[s,r.F,r.PHI,"",!1,r.isDifference],i=molecules_container.read_mtz.apply(molecules_container,n);return cootModule.FS_unlink(s),i},associate_data_mtz_file_with_map=function(e,a,r,t,o){var s=new Uint8Array(a.data);cootModule.FS_createDataFile(".","".concat(a.fileName,".mtz"),s,!0,!0);var n="./".concat(a.fileName,".mtz"),i=[e,n,r,t,o];return molecules_container.associate_data_mtz_file_with_map.apply(molecules_container,i),n},read_ccp4_map=function(e,a,r){var t=guid(),o=new Uint8Array(e),s="";a.endsWith(".map.gz")?s="map.gz":a.endsWith(".mrc.gz")&&(s="mrc.gz"),cootModule.FS_createDataFile(".","".concat(t).concat(s),o,!0,!0);var n="./".concat(t).concat(s),i=[n,r],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,a,r){void 0===r&&(r=!1);var t=new cootModule.MapIntFloat3,o=new cootModule.VectorStringUInt_pair;a.forEach((function(e,a){t.set(a+51,e.rgb);var r={first:e.cid,second:a+51};o.push_back(r)})),molecules_container.set_user_defined_bond_colours(e,t),molecules_container.set_user_defined_atom_colour_by_selection(e,o,r),o.delete(),t.delete()},privateerValidationToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;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};a.push(_)}return e.delete(),a},doCootCommand=function(e){var a=e.returnType,r=e.command,t=e.commandArgs,o=e.messageId,s=e.myTimeStamp,n=e.message;try{var i=void 0;switch(r){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;default:i=molecules_container[r].apply(molecules_container,t)}var c=void 0;switch(a){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_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:r,consoleMessage:"Completed ".concat(r," in ").concat(Date.now()-s," ms"),result:{status:"Completed",result:c}}}catch(e){return console.log(e),{messageId:o,myTimeStamp:s,message:n,consoleMessage:"EXCEPTION RAISED IN ".concat(r,", ").concat(e),result:{status:"Exception"}}}};onmessage=function(e){if("CootInitialize"===e.data.message)createRSRModule({onRuntimeInitialized:function(){},mainScriptUrlOrBlob:"moorhen.js",print,printErr:print}).then((function(a){postMessage({consoleMessage:"Initialized molecules_container",message:e.data.message,messageId:e.data.messageId}),(molecules_container=new(cootModule=a).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){console.log(e),print(e)})),createCCP4Module({onRuntimeInitialized:function(){},mainScriptUrlOrBlob:"web_example.js",print,printErr:print}).then((function(e){ccp4Module=e})).catch((function(e){console.log(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 a=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:a}})}else if("get_map"===e.data.message){var r=guid(),t="./".concat(r,".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(a){return doCootCommand(__assign(__assign({},e.data),a))}));postMessage({messageId:e.data.messageId,resultList:n})}"coot_command"===e.data.message&&(s=doCootCommand(e.data),postMessage(s))};