moorhen 0.6.1 → 0.6.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "moorhen",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "private": false,
5
5
  "main": "moorhen.js",
6
6
  "types": "./types/main.d.ts",
@@ -141,6 +141,7 @@
141
141
  "gl-matrix": "^3.4.3",
142
142
  "html-react-parser": "^1.4.14",
143
143
  "html-webpack-plugin": "^5.5.0",
144
+ "jest": "^27.5.1",
144
145
  "jsdoc": "^4.0.2",
145
146
  "localforage": "^1.10.0",
146
147
  "mini-css-extract-plugin": "^2.7.6",
@@ -159,6 +160,7 @@
159
160
  "protvista-sequence": "^3.5.1",
160
161
  "protvista-track": "^3.4.0",
161
162
  "rc-tree": "4.2.2",
163
+ "re-resizable": "^6.9.11",
162
164
  "react": "^18.1.0",
163
165
  "react-bootstrap": "^2.3.1",
164
166
  "react-bootstrap-typeahead": "^6.0.0-alpha.11",
package/types/gemmi.d.ts CHANGED
@@ -3,7 +3,8 @@ import { emscriptem } from "./emscriptem"
3
3
  export namespace gemmi {
4
4
  interface NeighborSearch extends emscriptem.instance<NeighborSearch> {
5
5
  populate: (arg0: boolean) => void;
6
- find_atoms: (arg0: Position, arg1: number, arg2: number) => emscriptem.vector<Mark>
6
+ find_atoms: (arg0: Position, arg1: string, arg2: number) => emscriptem.vector<Mark>;
7
+ find_neighbors: (arg0: Atom, arg1: number, ag2: number) => emscriptem.vector<Mark>;
7
8
  }
8
9
  interface Mark extends emscriptem.instance<Mark> {
9
10
  x: number;
@@ -72,7 +73,7 @@ export namespace gemmi {
72
73
  altloc: number;
73
74
  charge: number;
74
75
  b_iso: number;
75
- serial: string;
76
+ serial: number;
76
77
  has_altloc: () => boolean;
77
78
  }
78
79
  interface ResidueSeqId extends emscriptem.instance<ResidueSeqId> {
@@ -2,6 +2,8 @@
2
2
  import { emscriptem } from "./emscriptem";
3
3
  import { gemmi } from "./gemmi"
4
4
 
5
+ // Warning: do not import moorhen namespace otherwise worker code breaks during transpilation
6
+
5
7
  declare global {
6
8
  function print(arg0: string): void;
7
9
  function createRSRModule(arg0: any): Promise<any>;
@@ -10,6 +12,9 @@ declare global {
10
12
 
11
13
  export namespace libcootApi {
12
14
  type CCP4ModuleType = {
15
+ get_sequence_info(gemmiStructure: gemmi.Structure, molName: string): emscriptem.vector<SequenceEntry>;
16
+ get_atom_info_for_selection(gemmiStructure: gemmi.Structure, arg1: string, arg2: string): emscriptem.vector<AtomInfo>;
17
+ structure_is_ligand(gemmiStructure: gemmi.Structure): boolean;
13
18
  count_residues_in_selection(gemmiStructure: gemmi.Structure, selection: gemmi.Selection): number;
14
19
  remove_non_selected_residues(gemmiStructure: gemmi.Structure, selection: gemmi.Selection): gemmi.Structure;
15
20
  check_polymer_type(polymerConst: emscriptem.instance<number>): {value: number};
@@ -30,8 +35,20 @@ export namespace libcootApi {
30
35
  Fractional: { new(x: number, y: number, z: number): gemmi.Fractional };
31
36
  cifDocument: { new(): gemmi.cifDocument }
32
37
  }
38
+ type SequenceResInfo = {
39
+ resNum: number;
40
+ resCode: string;
41
+ cid: string;
42
+ }
43
+ type SequenceEntry = {
44
+ type: number;
45
+ name: string;
46
+ chain: string;
47
+ sequence: emscriptem.vector<SequenceResInfo>;
48
+
49
+ }
50
+ // We need to define AtomInfo here because we cannot import moorhen namespace otherwise worker code breaks during transpilation
33
51
  type AtomInfo = {
34
- pos: [number, number, number];
35
52
  x: number;
36
53
  y: number;
37
54
  z: number;
@@ -39,7 +56,7 @@ export namespace libcootApi {
39
56
  element: emscriptem.instance<string>;
40
57
  symbol: string;
41
58
  tempFactor: number;
42
- serial: string;
59
+ serial: number;
43
60
  name: string;
44
61
  has_altloc: boolean;
45
62
  alt_loc: string;
@@ -154,6 +171,18 @@ export namespace libcootApi {
154
171
  hydrogen_is_ligand_atom: boolean;
155
172
  bond_has_hydrogen_flag: boolean;
156
173
  }
174
+ interface MMRCCStatsJS {
175
+ "All atoms": DensityCorrelationStatsInfoJS[];
176
+ "Side-chains": DensityCorrelationStatsInfoJS[];
177
+ }
178
+ interface DensityCorrelationStatsInfoJS {
179
+ resNum: number;
180
+ insCode: string;
181
+ modelNumber: number;
182
+ chainId: string;
183
+ n: number;
184
+ correlation: number;
185
+ }
157
186
  interface DensityCorrelationStatsInfoT extends emscriptem.instance<DensityCorrelationStatsInfoT> {
158
187
  n: number;
159
188
  sum_xy: number;
package/types/main.d.ts CHANGED
@@ -47,16 +47,18 @@ declare module 'moorhen' {
47
47
 
48
48
  class MoorhenMolecule implements _moorhen.Molecule {
49
49
  constructor(commandCentre: React.RefObject<_moorhen.CommandCentre>, glRef: React.RefObject<webGL.MGWebGL>, monomerLibrary: string)
50
+ animateRefine(n_cyc: number, n_iteration: number, final_n_cyc?: number): Promise<void>;
51
+ refineResidueRange(chainId: string, start: number, stop: number, ncyc?: number, redraw?: boolean): Promise<void>;
50
52
  SSMSuperpose(movChainId: string, refMolNo: number, refChainId: string): Promise<_moorhen.WorkerResponse>;
51
- deleteCid(cid: string, redraw?: boolean): Promise<void>;
53
+ deleteCid(cid: string, redraw?: boolean): Promise<{first: number, second: number}>;
52
54
  getNumberOfAtoms(): Promise<number>;
53
55
  moveMoleculeHere(x: number, y: number, z: number): Promise<void>;
54
56
  checkHasGlycans(): Promise<boolean>;
55
57
  fitLigandHere(mapMolNo: number, ligandMolNo: number, redraw?: boolean, useConformers?: boolean, conformerCount?: number): Promise<_moorhen.Molecule[]>;
56
- isLigand(): boolean;
58
+ checkIsLigand(): boolean;
57
59
  removeRepresentation(representationId: string): void;
58
60
  addRepresentation(style: string, cid: string, isCustom?: boolean, colour?: _moorhen.ColourRule[], bondOptions?: _moorhen.cootBondOptions, applyColourToNonCarbonAtoms?: boolean): Promise<_moorhen.MoleculeRepresentation>;
59
- getNeighborResiduesCids(selectionCid: string, radius: number, minDist: number, maxDist: number): Promise<string[]>;
61
+ getNeighborResiduesCids(selectionCid: string, maxDist: number): Promise<string[]>;
60
62
  drawWithStyleFromMesh(style: string, meshObjects: any[], cid?: string): Promise<void>;
61
63
  updateWithMovedAtoms(movedResidues: _moorhen.AtomInfo[][]): Promise<void>;
62
64
  transformedCachedAtomsAsMovedAtoms(selectionCid?: string): _moorhen.AtomInfo[][];
@@ -90,8 +92,9 @@ declare module 'moorhen' {
90
92
  drawEnvironment: (cid: string, labelled?: boolean) => Promise<void>;
91
93
  centreOn: (selectionCid?: string, animate?: boolean) => Promise<void>;
92
94
  drawHover: (cid: string) => Promise<void>;
95
+ drawResidueSelection: (cid: string) => Promise<void>;
93
96
  clearBuffersOfStyle: (style: string) => void;
94
- loadToCootFromURL: (inputFile: string, molName: string) => Promise<_moorhen.Molecule>;
97
+ loadToCootFromURL: (inputFile: string, molName: string, options?: RequestInit) => Promise<_moorhen.Molecule>;
95
98
  applyTransform: () => Promise<void>;
96
99
  getAtoms(format?: string): Promise<string>;
97
100
  hide: (style: string, cid?: string) => void;
@@ -101,6 +104,7 @@ declare module 'moorhen' {
101
104
  centreAndAlignViewOn(selectionCid: string, animate?: boolean): Promise<void>;
102
105
  buffersInclude: (bufferIn: { id: string; }) => boolean;
103
106
  redrawRepresentation: (id: string) => Promise<void>;
107
+ isLigand: boolean;
104
108
  type: string;
105
109
  excludedCids: string[];
106
110
  commandCentre: React.RefObject<_moorhen.CommandCentre>;
@@ -136,6 +140,7 @@ declare module 'moorhen' {
136
140
  hoverRepresentation: _moorhen.MoleculeRepresentation;
137
141
  unitCellRepresentation: _moorhen.MoleculeRepresentation;
138
142
  environmentRepresentation: _moorhen.MoleculeRepresentation;
143
+ selectionRepresentation: _moorhen.MoleculeRepresentation;
139
144
  hasDNA: boolean;
140
145
  hasGlycans: boolean;
141
146
  }
@@ -163,8 +168,8 @@ declare module 'moorhen' {
163
168
  doCootContour(x: number, y: number, z: number, radius: number, contourLevel: number): Promise<void>;
164
169
  fetchReflectionData(): Promise<_moorhen.WorkerResponse<Uint8Array>>;
165
170
  getMap(): Promise<_moorhen.WorkerResponse>;
166
- loadToCootFromMtzURL(url: RequestInfo | URL, name: string, selectedColumns: _moorhen.selectedMtzColumns): Promise<_moorhen.Map>;
167
- loadToCootFromMapURL(url: RequestInfo | URL, name: string, isDiffMap?: boolean): Promise<_moorhen.Map>;
171
+ loadToCootFromMtzURL(url: RequestInfo | URL, name: string, selectedColumns: _moorhen.selectedMtzColumns, options?: RequestInit): Promise<_moorhen.Map>;
172
+ loadToCootFromMapURL(url: RequestInfo | URL, name: string, isDiffMap?: boolean, options?: RequestInit): Promise<_moorhen.Map>;
168
173
  setActive(): Promise<void>;
169
174
  setupContourBuffers(objects: any[], keepCootColours?: boolean): void;
170
175
  setOtherMapForColouring(molNo: number, min?: number, max?: number): void;
@@ -142,7 +142,8 @@ export namespace webGL {
142
142
  resize(width: number, height: number) : void;
143
143
  setShadowDepthDebug(doShadowDepthDebug: boolean): void;
144
144
  setShadowsOn(doShadow: boolean): void;
145
- setSSAOOn(doShadow: boolean): void;
145
+ setSSAOOn(doSSAO: boolean): void;
146
+ setOccludeDiffuse(doOccludeDiffuse: boolean): void;
146
147
  setOutlinesOn(doOutline: boolean): void;
147
148
  setSpinTestState(doSpinTest: boolean): void;
148
149
  setBlurSize(blurSize: number): void;
@@ -238,6 +239,7 @@ export namespace webGL {
238
239
  diskVertices: number[];
239
240
  doShadow: boolean;
240
241
  doSSAO: boolean;
242
+ occludeDiffuse: boolean;
241
243
  doShadowDepthDebug: boolean;
242
244
  doSpin: boolean;
243
245
  doStenciling: boolean;
@@ -58,7 +58,7 @@ export namespace moorhen {
58
58
  element: emscriptem.instance<string>;
59
59
  symbol: string;
60
60
  tempFactor: number;
61
- serial: string;
61
+ serial: number;
62
62
  name: string;
63
63
  has_altloc: boolean;
64
64
  alt_loc: string;
@@ -89,17 +89,19 @@ export namespace moorhen {
89
89
  }
90
90
 
91
91
  interface Molecule {
92
+ animateRefine(n_cyc: number, n_iteration: number, final_n_cyc?: number): Promise<void>;
93
+ refineResidueRange(chainId: string, start: number, stop: number, ncyc?: number, redraw?: boolean): Promise<void>;
92
94
  SSMSuperpose(movChainId: string, refMolNo: number, refChainId: string): Promise<WorkerResponse>;
93
95
  refineResiduesUsingAtomCid(cid: string, mode: string, ncyc?: number, redraw?: boolean): Promise<void>;
94
- deleteCid(cid: string, redraw?: boolean): Promise<void>;
96
+ deleteCid(cid: string, redraw?: boolean): Promise<{first: number, second: number}>;
95
97
  getNumberOfAtoms(): Promise<number>;
96
98
  moveMoleculeHere(x: number, y: number, z: number): Promise<void>;
97
99
  checkHasGlycans(): Promise<boolean>;
98
100
  fitLigandHere(mapMolNo: number, ligandMolNo: number, redraw?: boolean, useConformers?: boolean, conformerCount?: number): Promise<Molecule[]>;
99
- isLigand(): boolean;
101
+ checkIsLigand(): boolean;
100
102
  removeRepresentation(representationId: string): void;
101
103
  addRepresentation(style: string, cid: string, isCustom?: boolean, colour?: ColourRule[], bondOptions?: cootBondOptions, applyColourToNonCarbonAtoms?: boolean): Promise<MoleculeRepresentation>;
102
- getNeighborResiduesCids(selectionCid: string, radius: number, minDist: number, maxDist: number): Promise<string[]>;
104
+ getNeighborResiduesCids(selectionCid: string, maxDist: number): Promise<string[]>;
103
105
  drawWithStyleFromMesh(style: string, meshObjects: any[], cid?: string): Promise<void>;
104
106
  updateWithMovedAtoms(movedResidues: AtomInfo[][]): Promise<void>;
105
107
  transformedCachedAtomsAsMovedAtoms(selectionCid?: string): AtomInfo[][];
@@ -132,8 +134,9 @@ export namespace moorhen {
132
134
  drawEnvironment: (cid: string, labelled?: boolean) => Promise<void>;
133
135
  centreOn: (selectionCid?: string, animate?: boolean) => Promise<void>;
134
136
  drawHover: (cid: string) => Promise<void>;
137
+ drawResidueSelection: (cid: string) => Promise<void>;
135
138
  clearBuffersOfStyle: (style: string) => void;
136
- loadToCootFromURL: (inputFile: string, molName: string) => Promise<Molecule>;
139
+ loadToCootFromURL: (inputFile: string, molName: string, options?: RequestInit) => Promise<Molecule>;
137
140
  applyTransform: () => Promise<void>;
138
141
  getAtoms(format?: string): Promise<string>;
139
142
  hide: (style: string, cid?: string) => void;
@@ -144,6 +147,7 @@ export namespace moorhen {
144
147
  buffersInclude: (bufferIn: { id: string; }) => boolean;
145
148
  redrawRepresentation: (id: string) => Promise<void>;
146
149
  type: string;
150
+ isLigand: boolean;
147
151
  excludedCids: string[];
148
152
  commandCentre: React.RefObject<CommandCentre>;
149
153
  glRef: React.RefObject<webGL.MGWebGL>;
@@ -178,13 +182,14 @@ export namespace moorhen {
178
182
  hoverRepresentation: MoleculeRepresentation;
179
183
  unitCellRepresentation: MoleculeRepresentation;
180
184
  environmentRepresentation: MoleculeRepresentation;
185
+ selectionRepresentation: MoleculeRepresentation;
181
186
  hasDNA: boolean;
182
187
  hasGlycans: boolean;
183
188
  }
184
189
 
185
190
  type RepresentationStyles = 'VdwSpheres' | 'ligands' | 'CAs' | 'CBs' | 'CDs' | 'gaussian' | 'allHBonds' | 'rama' |
186
191
  'rotamer' | 'CRs' | 'MolecularSurface' | 'DishyBases' | 'VdWSurface' | 'Calpha' | 'unitCell' | 'hover' | 'environment' |
187
- 'ligand_environment' | 'contact_dots' | 'chemical_features' | 'ligand_validation' | 'glycoBlocks' | 'restraints'
192
+ 'ligand_environment' | 'contact_dots' | 'chemical_features' | 'ligand_validation' | 'glycoBlocks' | 'restraints' | 'residueSelection'
188
193
 
189
194
  interface MoleculeRepresentation {
190
195
  setApplyColourToNonCarbonAtoms(newVal: boolean): void;
@@ -220,6 +225,13 @@ export namespace moorhen {
220
225
  isCustom: boolean;
221
226
  styleHasColourRules: boolean;
222
227
  }
228
+
229
+ type ResidueSelection = {
230
+ molecule: null | moorhen.Molecule;
231
+ first: null | string;
232
+ second: null | string;
233
+ cid: null | string;
234
+ }
223
235
 
224
236
  type HoveredAtom = {
225
237
  molecule: Molecule | null,
@@ -358,8 +370,8 @@ export namespace moorhen {
358
370
  doCootContour(x: number, y: number, z: number, radius: number, contourLevel: number): Promise<void>;
359
371
  fetchReflectionData(): Promise<WorkerResponse<Uint8Array>>;
360
372
  getMap(): Promise<WorkerResponse>;
361
- loadToCootFromMtzURL(url: RequestInfo | URL, name: string, selectedColumns: selectedMtzColumns): Promise<Map>;
362
- loadToCootFromMapURL(url: RequestInfo | URL, name: string, isDiffMap?: boolean): Promise<Map>;
373
+ loadToCootFromMtzURL(url: RequestInfo | URL, name: string, selectedColumns: selectedMtzColumns, options?: RequestInit): Promise<Map>;
374
+ loadToCootFromMapURL(url: RequestInfo | URL, name: string, isDiffMap?: boolean, options?: RequestInit): Promise<Map>;
363
375
  setActive(): Promise<void>;
364
376
  setupContourBuffers(objects: any[], keepCootColours?: boolean): void;
365
377
  setOtherMapForColouring(molNo: number, min?: number, max?: number): void;
@@ -521,6 +533,7 @@ export namespace moorhen {
521
533
  type AtomClickedEvent = CustomEvent<{
522
534
  buffer: { id: string };
523
535
  atom: { label: string };
536
+ isResidueSelection: boolean;
524
537
  }>
525
538
 
526
539
  type ConnectMapsEvent = CustomEvent<ConnectMapsInfo>
@@ -670,35 +683,6 @@ export namespace moorhen {
670
683
  defaultActionButtonSettings: actionButtonSettings;
671
684
  setDefaultActionButtonSettings: (arg0: {key: string; value: string}) => void;
672
685
  }
673
-
674
- type MolChange<T extends Molecule | Map> = {
675
- action: 'Add' | 'Remove' | 'AddList' | 'Empty';
676
- item?: T;
677
- items?: T[];
678
- }
679
-
680
- type EditButtonProps = {
681
- mode?: 'edit';
682
- monomerLibraryPath: string;
683
- backgroundColor: [number, number, number, number];
684
- defaultBondSmoothness: number;
685
- urlPrefix: string;
686
- shortCuts: string | { [label: string]: Shortcut; };
687
- selectedButtonIndex: string;
688
- setSelectedButtonIndex: React.Dispatch<React.SetStateAction<string>>;
689
- setToolTip: React.Dispatch<React.SetStateAction<string>>;
690
- setOverlayContents: React.Dispatch<React.SetStateAction<JSX.Element>>;
691
- buttonIndex: string;
692
- enableRefineAfterMod: boolean;
693
- refineAfterMod?: boolean;
694
- glRef: React.RefObject<webGL.MGWebGL>;
695
- commandCentre: React.RefObject<CommandCentre>;
696
- activeMap: Map;
697
- molecules: Molecule[];
698
- timeCapsuleRef: React.RefObject<TimeCapsule>;
699
- windowHeight: number;
700
- changeMolecules: (arg0: MolChange<Molecule>) => void
701
- }
702
686
 
703
687
  interface ContainerRefs {
704
688
  glRef: React.MutableRefObject<null | webGL.MGWebGL>;
@@ -810,6 +794,7 @@ export namespace moorhen {
810
794
  notificationContent: JSX.Element;
811
795
  activeMap: Map;
812
796
  theme: string;
797
+ residueSelection: ResidueSelection;
813
798
  };
814
799
  hoveringStates: {
815
800
  enableAtomHovering: boolean;