moorhen 0.8.2 → 0.8.3
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/README.md +7 -0
- package/baby-gru/CootWorker.js +1 -1
- package/baby-gru/CootWorker.ts +1 -1
- package/baby-gru/monomers/p/PRO.cif +118 -115
- package/baby-gru/monomers/t/TYR.cif +26 -25
- package/baby-gru/wasm/moorhen.data +198 -196
- package/baby-gru/wasm/moorhen.js +1 -1
- package/baby-gru/wasm/moorhen.wasm +0 -0
- package/baby-gru/wasm/moorhen.worker.js +1 -1
- package/baby-gru/wasm/web_example.js +1 -1
- package/baby-gru/wasm/web_example.wasm +0 -0
- package/moorhen.js +14 -14
- package/package.json +8 -5
- package/types/main.d.ts +77 -1
- package/types/mgWebGL.d.ts +4 -0
- package/types/moorhen.d.ts +3 -1
- package/baby-gru/wasm/cif_pdb_worker.js +0 -1
- package/baby-gru/wasm/crystallography_worker.js +0 -1
- package/baby-gru/wasm/mini_rsr_worker.js +0 -1
- package/baby-gru/wasm/monid_to_pdb_worker.js +0 -1
- package/baby-gru/wasm/mtz_arraybuffer_worker.js +0 -1
- package/baby-gru/wasm/mtz_worker.js +0 -1
- package/baby-gru/wasm/nma_worker.js +0 -1
- package/baby-gru/wasm/papaparse.min.js +0 -2
- package/baby-gru/wasm/papaparse.min.js.LICENSE.txt +0 -6
- package/baby-gru/wasm/pdb_worker.js +0 -1
- package/baby-gru/wasm/smiles_to_pdb_worker.js +0 -1
- package/baby-gru/wasm/superpose_worker.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "moorhen",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"main": "moorhen.js",
|
|
6
6
|
"types": "./types/main.d.ts",
|
|
@@ -64,12 +64,13 @@
|
|
|
64
64
|
},
|
|
65
65
|
"dependencies": {},
|
|
66
66
|
"scripts": {
|
|
67
|
+
"transpile-protobuf": "npx pbjs -t static-module -w es6 -o ./src/protobuf/MoorhenSession.js ./src/protobuf/MoorhenSession.proto",
|
|
67
68
|
"create-version": "npx genversion -e -p ./package.json -d -s ./src/version.js",
|
|
68
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",
|
|
69
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",
|
|
70
|
-
"prestart": "npm run create-version && npm run transpile-ts-worker",
|
|
71
|
+
"prestart": "npm run create-version && npm run transpile-ts-worker && npm run transpile-protobuf",
|
|
71
72
|
"start": "vite",
|
|
72
|
-
"prebuild": "npm run create-version && npm run transpile-ts-worker",
|
|
73
|
+
"prebuild": "npm run create-version && npm run transpile-ts-worker && npm run transpile-protobuf",
|
|
73
74
|
"build": "vite build",
|
|
74
75
|
"build-release": "npm run prebuild && webpack --mode production --devtool inline-source-map",
|
|
75
76
|
"dev": "concurrently -k \"BROWSER=none npm start\" \"npm:electron\"",
|
|
@@ -79,8 +80,8 @@
|
|
|
79
80
|
"make-linux": "npm run build && electron-forge make --platform linux",
|
|
80
81
|
"make-win32": "npm run build && electron-forge make --platform win32",
|
|
81
82
|
"create-docs": "npm run create-version && npx jsdoc -c jsdoc.json",
|
|
82
|
-
"test": "npm run create-version && 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",
|
|
83
|
-
"test-react": "npm run create-version && npx tsc && node --trace-warnings --experimental-vm-modules --experimental-wasm-threads node_modules/jest/bin/jest.js --forceExit --testPathIgnorePatterns=
|
|
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"
|
|
84
85
|
},
|
|
85
86
|
"eslintConfig": {
|
|
86
87
|
"extends": [
|
|
@@ -162,6 +163,8 @@
|
|
|
162
163
|
"plotly.js": "^2.12.1",
|
|
163
164
|
"prismjs": "^1.29.0",
|
|
164
165
|
"prop-types": "^15.8.1",
|
|
166
|
+
"protobufjs": "^7.2.6",
|
|
167
|
+
"protobufjs-cli": "^1.1.2",
|
|
165
168
|
"protvista-manager": "^3.4.0",
|
|
166
169
|
"protvista-navigation": "^3.5.1",
|
|
167
170
|
"protvista-sequence": "^3.5.1",
|
package/types/main.d.ts
CHANGED
|
@@ -5,6 +5,56 @@ import { gemmi } from "./gemmi";
|
|
|
5
5
|
import { privateer } from "./privateer";
|
|
6
6
|
|
|
7
7
|
declare module 'moorhen' {
|
|
8
|
+
let moleculesReducer: any;
|
|
9
|
+
module.exports = moleculesReducer
|
|
10
|
+
|
|
11
|
+
let mapsReducer: any;
|
|
12
|
+
module.exports = mapsReducer
|
|
13
|
+
|
|
14
|
+
let mouseSettingsReducer: any;
|
|
15
|
+
module.exports = mouseSettingsReducer
|
|
16
|
+
|
|
17
|
+
let backupSettingsReducer: any;
|
|
18
|
+
module.exports = backupSettingsReducer
|
|
19
|
+
|
|
20
|
+
let shortcutSettingsReducer: any;
|
|
21
|
+
module.exports = shortcutSettingsReducer
|
|
22
|
+
|
|
23
|
+
let labelSettingsReducer: any;
|
|
24
|
+
module.exports = labelSettingsReducer
|
|
25
|
+
|
|
26
|
+
let sceneSettingsReducer: any;
|
|
27
|
+
module.exports = sceneSettingsReducer
|
|
28
|
+
|
|
29
|
+
let miscAppSettingsReducer: any;
|
|
30
|
+
module.exports = miscAppSettingsReducer
|
|
31
|
+
|
|
32
|
+
let generalStatesReducer: any;
|
|
33
|
+
module.exports = generalStatesReducer
|
|
34
|
+
|
|
35
|
+
let hoveringStatesReducer: any;
|
|
36
|
+
module.exports = hoveringStatesReducer
|
|
37
|
+
|
|
38
|
+
let activeModalsReducer: any;
|
|
39
|
+
module.exports = activeModalsReducer
|
|
40
|
+
|
|
41
|
+
let activePopUpsReducer: any;
|
|
42
|
+
module.exports = activePopUpsReducer
|
|
43
|
+
|
|
44
|
+
let mapContourSettingsReducer: any;
|
|
45
|
+
module.exports = mapContourSettingsReducer
|
|
46
|
+
|
|
47
|
+
let moleculeMapUpdateReducer: any;
|
|
48
|
+
module.exports = moleculeMapUpdateReducer
|
|
49
|
+
|
|
50
|
+
let sharedSessionReducer: any;
|
|
51
|
+
module.exports = sharedSessionReducer
|
|
52
|
+
|
|
53
|
+
let refinementSettingsReducer: any;
|
|
54
|
+
module.exports = refinementSettingsReducer
|
|
55
|
+
|
|
56
|
+
let MoorhenReduxStore: any;
|
|
57
|
+
module.exports = MoorhenReduxStore
|
|
8
58
|
|
|
9
59
|
let MoorhenContainer: any;
|
|
10
60
|
module.exports = MoorhenContainer;
|
|
@@ -119,6 +169,7 @@ declare module 'moorhen' {
|
|
|
119
169
|
|
|
120
170
|
class MoorhenMolecule implements _moorhen.Molecule {
|
|
121
171
|
constructor(commandCentre: React.RefObject<_moorhen.CommandCentre>, glRef: React.RefObject<webGL.MGWebGL>, monomerLibrary: string)
|
|
172
|
+
transferLigandDicts(toMolecule: _moorhen.Molecule, override?: boolean): Promise<void>;
|
|
122
173
|
minimizeEnergyUsingCidAnimated(cid: string, ncyc: number, nIterations: number, useRamaRestraints: boolean, ramaWeight: number, useTorsionRestraints: boolean, torsionWeight: number): Promise<void>;
|
|
123
174
|
addColourRule(ruleType: string, cid: string, color: string, args: (string | number)[], isMultiColourRule?: boolean, applyColourToNonCarbonAtoms?: boolean, label?: string): void;
|
|
124
175
|
splitMultiModels(draw?: boolean): Promise<_moorhen.Molecule[]>;
|
|
@@ -312,7 +363,7 @@ declare module 'moorhen' {
|
|
|
312
363
|
}
|
|
313
364
|
module.exports.MoorhenMap = MoorhenMap
|
|
314
365
|
|
|
315
|
-
function
|
|
366
|
+
function loadSessionFromJsonString(
|
|
316
367
|
sessionDataString: string,
|
|
317
368
|
monomerLibraryPath: string,
|
|
318
369
|
molecules: _moorhen.Molecule[],
|
|
@@ -322,6 +373,31 @@ declare module 'moorhen' {
|
|
|
322
373
|
glRef: React.RefObject<webGL.MGWebGL>,
|
|
323
374
|
dispatch: (reduxStoreAction: any) => void,
|
|
324
375
|
): Promise<number>;
|
|
376
|
+
module.exports = loadSessionFromJsonString;
|
|
377
|
+
|
|
378
|
+
function loadSessionFromProtoMessage(
|
|
379
|
+
sessionProtoMessage: any,
|
|
380
|
+
monomerLibraryPath: string,
|
|
381
|
+
molecules: _moorhen.Molecule[],
|
|
382
|
+
maps: _moorhen.Map[],
|
|
383
|
+
commandCentre: React.RefObject<_moorhen.CommandCentre>,
|
|
384
|
+
timeCapsuleRef: React.RefObject<_moorhen.TimeCapsule>,
|
|
385
|
+
glRef: React.RefObject<webGL.MGWebGL>,
|
|
386
|
+
dispatch: (reduxStoreAction: any) => void,
|
|
387
|
+
): Promise<number>;
|
|
388
|
+
module.exports = loadSessionFromProtoMessage;
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
function loadSessionData(
|
|
392
|
+
sessionData: _moorhen.backupSession,
|
|
393
|
+
monomerLibraryPath: string,
|
|
394
|
+
molecules: _moorhen.Molecule[],
|
|
395
|
+
maps: _moorhen.Map[],
|
|
396
|
+
commandCentre: React.RefObject<_moorhen.CommandCentre>,
|
|
397
|
+
timeCapsuleRef: React.RefObject<_moorhen.TimeCapsule>,
|
|
398
|
+
glRef: React.RefObject<webGL.MGWebGL>,
|
|
399
|
+
dispatch: (reduxStoreAction: any) => void,
|
|
400
|
+
): Promise<number>;
|
|
325
401
|
module.exports = loadSessionData;
|
|
326
402
|
|
|
327
403
|
function setPositiveMapColours(arg0: {molNo: number, rgb: {r: number; g: number; b: number}}): any;
|
package/types/mgWebGL.d.ts
CHANGED
|
@@ -267,6 +267,8 @@ export namespace webGL {
|
|
|
267
267
|
normalThreshold: number;
|
|
268
268
|
scaleDepth: number;
|
|
269
269
|
scaleNormal: number;
|
|
270
|
+
xPixelOffset: number;
|
|
271
|
+
yPixelOffset: number;
|
|
270
272
|
occludeDiffuse: boolean;
|
|
271
273
|
doShadowDepthDebug: boolean;
|
|
272
274
|
doSpin: boolean;
|
|
@@ -434,5 +436,7 @@ export namespace webGL {
|
|
|
434
436
|
initializeShaders() : void;
|
|
435
437
|
axesTexture: any;
|
|
436
438
|
|
|
439
|
+
hoverSize: number;
|
|
440
|
+
|
|
437
441
|
}
|
|
438
442
|
}
|
package/types/moorhen.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import React from "react"
|
|
|
2
2
|
import { emscriptem } from "./emscriptem";
|
|
3
3
|
import { gemmi } from "./gemmi";
|
|
4
4
|
import { webGL } from "./mgWebGL";
|
|
5
|
+
import { MoorhenMolecule } from "../moorhen";
|
|
5
6
|
|
|
6
7
|
export namespace moorhen {
|
|
7
8
|
|
|
@@ -121,6 +122,7 @@ export namespace moorhen {
|
|
|
121
122
|
type coorFormats = 'pdb' | 'mmcif';
|
|
122
123
|
|
|
123
124
|
interface Molecule {
|
|
125
|
+
transferLigandDicts(toMolecule: Molecule, override?: boolean): Promise<void>;
|
|
124
126
|
minimizeEnergyUsingCidAnimated(cid: string, ncyc: number, nIterations: number, useRamaRestraints: boolean, ramaWeight: number, useTorsionRestraints: boolean, torsionWeight: number): Promise<void>;
|
|
125
127
|
addColourRule(ruleType: string, cid: string, color: string, args: (string | number)[], isMultiColourRule?: boolean, applyColourToNonCarbonAtoms?: boolean, label?: string): void;
|
|
126
128
|
splitMultiModels(draw?: boolean): Promise<Molecule[]>;
|
|
@@ -580,7 +582,7 @@ export namespace moorhen {
|
|
|
580
582
|
removeBackup(key: string): Promise<void>;
|
|
581
583
|
updateDataFiles(): Promise<(string | void)[]>;
|
|
582
584
|
createBackup(keyString: string, sessionString: string): Promise<string>;
|
|
583
|
-
fetchSession(
|
|
585
|
+
fetchSession(includeAdditionalMapData: boolean): Promise<backupSession>;
|
|
584
586
|
toggleDisableBackups(): void;
|
|
585
587
|
moleculesRef: React.RefObject<Molecule[]>;
|
|
586
588
|
mapsRef: React.RefObject<Map[]>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module;importScripts("web_example.js"),createCCP4Module({print(t){postMessage(["output",t])},printErr(t){postMessage(["output",t])}}).then((function(t){CCP4Module=t})).catch((t=>{console.log("CCP4 problem :("),console.log(t)})),onmessage=function(t){var e=t.data[0],a=t.data[1],o=t.data[2],l=t.data[3];try{CCP4Module.FS_createDataFile(".",a,e,!0,!0)}catch(t){}try{CCP4Module.FS_createDataFile(".",l,o,!0,!0)}catch(t){}var r=CCP4Module.initialize_cif_pdb(l,a,0,.75);CCP4Module.printMapStats(r),postMessage(["result",r])};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
let CCP4Module,RSRModule,currentTaskName="";function rsrPrint(e){postMessage({messageTag:"output",result:e,taskName:currentTaskName})}let molecules_container=null;importScripts("./web_example.js"),importScripts("./pako.js"),createCCP4Module({print:rsrPrint,printErr:rsrPrint}).then((function(e){CCP4Module=e})).catch((e=>{console.log("CCP4 problem :("),console.log(e)})),importScripts("./moorhen.js");const Lib={locateFile:e=>e,onRuntimeInitialized:()=>{console.log("onRuntimeInitialized")},mainScriptUrlOrBlob:"./moorhen.js",print:rsrPrint,printErr:rsrPrint};createRSRModule(Lib).then((function(e){RSRModule=e,molecules_container=new RSRModule.molecules_container_js,molecules_container.geometry_init_standard(),molecules_container.fill_rotamer_probability_tables(),console.log("##################################################"),console.log(molecules_container),console.log("##################################################")})).catch((e=>{console.log("RSR problem :("),console.log(e)}));let dataObjects={pdbFiles:{},mtzFiles:{},cifFiles:{}},dataObjectsNames={pdbFiles:{},mtzFiles:{},cifFiles:{},ramaInfo:{},bvalInfo:{},mol_cont_idx:{},map_cont_idx:{},densityFitInfo:{},rotamersInfo:{}};function guid(){var e=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(a){var t=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===a?t:3&t|8).toString(16)}))}function updateDataObjectsNames(){postMessage({messageTag:"dataObjectsNames",result:dataObjectsNames})}function downLoadFiles(e){let a=[],t=[],s=[],o=[],n=[];for(let i=0;i<e.length;i++)e[i].endsWith(".mtz")?n.push(e[i]):e[i].endsWith(".pdb")||e[i].endsWith(".ent")?s.push(e[i]):e[i].endsWith(".cif")?a.push(e[i]):e[i].endsWith(".pdb.gz")||e[i].endsWith(".ent.gz")?o.push(e[i]):e[i].endsWith(".cif.gz")?t.push(e[i]):console.log("Unknown file suffix");console.log(t),Promise.all(t.map((function(e){return fetch(e).then((e=>e.blob())).then((a=>[e,a]))}))).then((e=>{for(ires=0;ires<e.length;ires++){const a=e[ires];console.log(a),guid()}}))}function loadFiles(e){let a=[],t=[];for(let s=0;s<e.length;s++)e[s].name.endsWith(".mtz")?t.push(e[s]):(e[s].name.endsWith(".pdb")||e[s].name.endsWith(".ent"))&&a.push(e[s]);Promise.all(a.map((function(e){return e.text().then((a=>[e.name,a]))}))).then((function(e){for(ires=0;ires<e.length;ires++){const a=e[ires],t=guid();CCP4Module.FS_createDataFile(".",t+".pdb",a[1],!0,!0),RSRModule.FS_createDataFile(".",t+".pdb",a[1],!0,!0),dataObjects.pdbFiles[t]={fileName:t+".pdb",originalFileName:a[0],contents:a[1]},dataObjectsNames.pdbFiles[t]={fileName:t+".pdb",originalFileName:a[0]};const s=molecules_container.read_pdb(t+".pdb");dataObjectsNames.mol_cont_idx[t]=s}updateDataObjectsNames()})).catch((function(e){console.log(e)})),Promise.all(t.map((function(e){return e.arrayBuffer().then((a=>[e.name,a]))}))).then((function(e){for(ires=0;ires<e.length;ires++){const a=e[ires],t=guid(),s=new Uint8Array(a[1]);CCP4Module.FS_createDataFile(".",t+".mtz",s,!0,!0),RSRModule.FS_createDataFile(".",t+".mtz",s,!0,!0),dataObjects.mtzFiles[t]={fileName:t+".mtz",originalFileName:a[0],contents:s},dataObjectsNames.mtzFiles[t]={fileName:t+".mtz",originalFileName:a[0]};const o="FC",n="PHIC",i="",r=!1,d=!1,l=molecules_container.read_mtz(t+".mtz",o,n,i,r,d);dataObjectsNames.map_cont_idx[t]=l}updateDataObjectsNames()})).catch((function(e){console.log(e)}))}function getDensityFit(e){console.log(e.data),e.data.jobId,dataObjects.pdbFiles[e.data.pdbinKey].fileName;const a=e.data.chainId,t=(dataObjects.mtzFiles[e.data.hklinKey].fileName,dataObjectsNames.mol_cont_idx[e.data.pdbinKey]),s=dataObjectsNames.map_cont_idx[e.data.hklinKey];console.log(t,s);const o=molecules_container.density_fit_analysis(t,s);console.log(o);const n=o.get_index_for_chain(a);console.log(n),console.log(o.cviv.get(n));const i=o.cviv.get(n).rviv;console.log(i),console.log(i.size());let r=[];for(let e=0;e<i.size();e++){const a=i.get(e).residue_spec.chain_id,t=i.get(e).residue_spec.res_no,s=i.get(e).distortion,o={chainId:a,insCode:i.get(e).residue_spec.ins_code,seqNum:t,restype:"UNK",density_fit:1/s};r.push(o)}postMessage({messageId:e.data.messageId,messageTag:"result",result:r,taskName:currentTaskName})}function getBVals(e){console.log(e.data),e.data.jobId;const a=dataObjects.pdbFiles[e.data.pdbinKey].fileName,t=e.data.chainId,s=RSRModule.getBVals(a,t);let o=[];for(let e=0;e<s.size();e++){const a=s.get(e),t={chainId:a.chainId,insCode:a.insCode,seqNum:a.seqNum,restype:a.restype,bval:a.property};o.push(t)}postMessage({messageId:e.data.messageId,messageTag:"result",result:o,taskName:currentTaskName})}function getRama(e){console.log(e.data),e.data.jobId;const a=dataObjects.pdbFiles[e.data.pdbinKey].fileName,t=e.data.chainId,s=RSRModule.getRamachandranData(a,t);console.log(s);let o=[];for(let e=0;e<s.size();e++){const a=s.get(e),t={chainId:a.chainId,insCode:a.insCode,seqNum:a.seqNum,restype:a.restype,phi:a.phi,psi:a.psi,isOutlier:a.isOutlier,is_pre_pro:a.is_pre_pro};o.push(t)}postMessage({messageId:e.data.messageId,messageTag:"result",result:o,taskName:currentTaskName})}function drawMesh(e,a){molecules_container.count_simple_mesh_vertices(e);const t=e.vertices,s=(t.size(),e.triangles);s.size();let o=[],n=[],i=[],r=[];for(let e=0;e<s.size();e++){const a=s.get(e).point_id;o.push(...a)}for(let e=0;e<t.size();e++){const a=t.get(e);n.push(...a.pos),i.push(...a.normal),r.push(...a.color)}const d={prim_types:[["TRIANGLES"]],idx_tri:[[o]],vert_tri:[[n]],norm_tri:[[i]],col_tri:[[r]]};postMessage({messageId:a.data.messageId,messageTag:"result",result:d,taskName:currentTaskName})}function drawDodos(e){const a=dataObjectsNames.mol_cont_idx[e.data.pdbinKey];drawMesh(molecules_container.get_rotamer_dodecs(a),e)}function drawRamaBalls(e){const a=dataObjectsNames.mol_cont_idx[e.data.pdbinKey];drawMesh(molecules_container.ramachandran_validation_markup_mesh(a),e)}function drawCube(e){drawMesh(molecules_container.test_origin_cube(),e)}function getRotamers(e){e.data.jobId;const a=dataObjects.pdbFiles[e.data.pdbinKey].fileName,t=e.data.chainId,s=RSRModule.getRotamersMap();let o=[];const n=RSRModule.getResidueListForChain(a,t),i=RSRModule.getResidueSpecListForChain(a,t);for(let e=0;e<n.size();e++){const a=s.get(n.get(e));if(a){let s=0,r=[];for(s=0;s<a.size();s++){const e=a.get(s),t=e.get_chi(1),o=e.get_chi(2),n=e.get_chi(3),i=e.get_chi(4);r.push([t,o,n,i])}o.push({chainId:t,seqNum:i.get(e).res_no,insCode:i.get(e).ins_code,restype:n.get(e),data:r})}else o.push({chainId:t,seqNum:i.get(e).res_no,insCode:i.get(e).ins_code,restype:n.get(e),data:[]})}postMessage({messageId:e.data.messageId,messageTag:"result",result:o,taskName:currentTaskName})}function autoFitRotamer(e){const a=e.data.jobId,t=(dataObjects.pdbFiles[e.data.pdbinKey].fileName,e.data.chainId),s=e.data.resno,o=a+"out.pdb",n=dataObjectsNames.mol_cont_idx[e.data.pdbinKey],i=dataObjectsNames.map_cont_idx[e.data.hklinKey],r=molecules_container.auto_fit_rotamer(n,t,s,"","",i),d=molecules_container.writePDBASCII(dataObjectsNames.mol_cont_idx[e.data.pdbinKey],o);console.log("result of which is",r,d);var l=RSRModule.FS.readFile(o,{encoding:"utf8"});postMessage({messageId:e.data.messageId,messageTag:"result",result:r,taskName:currentTaskName}),postMessage({messageId:e.data.messageId,messageTag:"pdb_out",jobId:a,result:l,taskName:currentTaskName})}function flipPeptide(e){const a=e.data.jobId,t=(dataObjects.pdbFiles[e.data.pdbinKey].fileName,e.data.chainId),s=e.data.resnoFlip,o=a+"out.pdb",n=new RSRModule.residue_spec_t(t,s,"");console.log("Should in fact call molecules_container.flipPeptide_rs with",dataObjectsNames.mol_cont_idx[e.data.pdbinKey]);const i=molecules_container.flipPeptide_rs(dataObjectsNames.mol_cont_idx[e.data.pdbinKey],n,""),r=molecules_container.writePDBASCII(dataObjectsNames.mol_cont_idx[e.data.pdbinKey],o);console.log("result of which is",i,r);var d=RSRModule.FS.readFile(o,{encoding:"utf8"});postMessage({messageId:e.data.messageId,messageTag:"result",result:i,taskName:currentTaskName}),postMessage({messageId:e.data.messageId,messageTag:"pdb_out",jobId:a,result:d,taskName:currentTaskName})}function miniRSR(e){console.log(e.data);const a=e.data.jobId;var t=new RSRModule.VectorString;t.push_back("mini_rsr"),t.push_back("--pdbin"),t.push_back(dataObjects.pdbFiles[e.data.pdbinKey].fileName),t.push_back("--hklin"),t.push_back(dataObjects.mtzFiles[e.data.hklinKey].fileName),t.push_back("--pdbout"),t.push_back(a+"out.pdb"),t.push_back("--resno-start"),t.push_back(e.data.resnoStart.toString()),t.push_back("--resno-end"),t.push_back(e.data.resnoEnd.toString()),t.push_back("--chain-id"),t.push_back(e.data.chainId),t.push_back("--debug"),console.log("Calling");var s=RSRModule.mini_rsr(t),o=RSRModule.FS.readFile(a+"out.pdb",{encoding:"utf8"});postMessage({messageId:e.data.messageId,messageTag:"result",result:s,taskName:currentTaskName}),postMessage({messageId:e.data.messageId,messageTag:"pdb_out",jobId:a,result:o,taskName:currentTaskName})}onmessage=function(e){switch(e.data.method){case"loadFile":console.log("Load file(s)",e.data.files),loadFiles(e.data.files);break;case"loadUrl":console.log("Download file(s)",e.data.urls),downLoadFiles(e.data.urls);break;case"get_rama":currentTaskName="get_rama",getRama(e),currentTaskName="";break;case"flip_peptide":console.log("Do peptide-flip in cryst worker ..."),currentTaskName="flip_peptide",flipPeptide(e),currentTaskName="";break;case"mini_rsr":console.log("Do mini-rsr in cryst worker ..."),currentTaskName="mini_rsr",miniRSR(e),currentTaskName="";break;case"auto_fit_rotamer":console.log("Do auto-fit rotamer in cryst worker ..."),currentTaskName="mini_rsr",autoFitRotamer(e),currentTaskName="";break;case"get_bvals":currentTaskName="get_bvals",getBVals(e),currentTaskName="";break;case"density_fit":currentTaskName="density_fit",getDensityFit(e),currentTaskName="";break;case"get_xyz":currentTaskName="get_xyz";const a=/.pdb$/,t=Object.keys(dataObjectsNames.pdbFiles);let s;if(e.data.resInfo.molKey)s=e.data.resInfo.molKey;else for(let o=0;o<t.length;o++){const n=t[o];if(dataObjectsNames.pdbFiles[n].originalFileName.replace(a,"")===e.data.resInfo.molName){console.log("Use",n,dataObjects.pdbFiles[n]),s=n;break}}if(s){let a;a=e.data.resInfo.seqNum?CCP4Module.getXYZSeqNumInsCode(dataObjects.pdbFiles[s].fileName,e.data.resInfo.chain,e.data.resInfo.seqNum,""):CCP4Module.getXYZResNo(dataObjects.pdbFiles[s].fileName,e.data.resInfo.chain,e.data.resInfo.resNo),3===a.size()&&postMessage({messageId:e.data.messageId,messageTag:"result",result:[-a.get(0),-a.get(1),-a.get(2)],taskName:currentTaskName})}currentTaskName="";break;case"get_rotamers":currentTaskName="rotamers",getRotamers(e),currentTaskName="";break;case"draw_cube":currentTaskName="draw_cube",drawCube(e),currentTaskName="";break;case"rotamer_dodecs":currentTaskName="rotamer_dodecs",drawDodos(e),currentTaskName="";break;case"rama_balls":currentTaskName="rama_balls",drawRamaBalls(e),currentTaskName="";break;default:console.log("default, do nothing",e.data.method)}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module;importScripts("./mini-rsr-web.js");const Lib={locateFile:a=>a,onRuntimeInitialized:()=>{console.log("onRuntimeInitialized")},mainScriptUrlOrBlob:"./mini-rsr-web.js",print(a){postMessage(["output",a])},printErr(a){postMessage(["output",a])}};createRSRModule(Lib).then((function(a){CCP4Module=a})).catch((a=>{console.log("CCP4 problem :("),console.log(a)})),onmessage=function(a){console.log(a.data);const e=a.data.jobId;var t=new CCP4Module.VectorString;t.push_back("mini_rsr"),CCP4Module.FS_createDataFile(".",e+a.data.pdbinName,a.data.pdbinData,!0,!0),t.push_back("--pdbin"),t.push_back(e+a.data.pdbinName),CCP4Module.FS_createDataFile(".",e+a.data.hklinName,a.data.hklinData,!0,!0),t.push_back("--hklin"),t.push_back(e+a.data.hklinName),t.push_back("--pdbout"),t.push_back(e+"out.pdb"),t.push_back("--resno-start"),t.push_back(a.data.resnoStart.toString()),t.push_back("--resno-end"),t.push_back(a.data.resnoEnd.toString()),t.push_back("--chain-id"),t.push_back(a.data.chainId),t.push_back("--debug"),console.log(t);var o=CCP4Module.mini_rsr(t),n=CCP4Module.FS.readFile(e+"out.pdb",{encoding:"utf8"});CCP4Module.FS_unlink(e+a.data.pdbinName),CCP4Module.FS_unlink(e+a.data.hklinName),CCP4Module.FS_unlink(e+"out.pdb"),postMessage(["result",o]),postMessage(["pdb_out",n,e])};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module,RDKit;function makeRequest(e,o){return new Promise((function(t,_){var c=new XMLHttpRequest;c.open(e,o,!0),c.onload=function(){this.status>=200&&this.status<300?t(c.response):_({status:this.status,statusText:c.statusText})},c.onerror=function(){_({status:this.status,statusText:c.statusText})},c.send()}))}function getLoop(e,o){let t=o+".",_=!1,c=[],m=e.length;for(let o=0;o<m;o++){let m=e[o].replace(/(^\s+|\s+$)/g,"");if("loop_"===m||"_"===m.substring(0,1)&&m.substring(0,t.length)!==t){if(_)break;o<e.length&&e[o+1].substring(0,t.length)===t&&(_=!0)}else _&&c.push(m)}return c}function splitQuotedCIFString(e){return 0===e.length?[]:e.match(/(?:[^\s"]+|"[^"]*")+/g)}function addCIFAtomTypes(e,o){let t=[],_=getLoop(o.split("\n"),"_chem_comp_atom"),c=[];for(let e=0;e<_.length;e++)if("#"!==_[e].substr(0,1)&&""!==_[e].trim())if("_"===_[e].substr(0,1))t.push(_[e]);else{let o=splitQuotedCIFString(_[e]);if("."!==o[0]){let e={};for(let _=0;_<o.length;_++)e[t[_]]=o[_];c.push(e)}}return c}function addCIFBondTypes(e,o){let t=[],_=getLoop(o.split("\n"),"_chem_comp_bond"),c=[];for(let e=0;e<_.length;e++)if("#"!==_[e].substr(0,1)&&""!==_[e].trim())if("_"===_[e].substr(0,1))t.push(_[e]);else{let o=_[e].match(/(?:[^\s"]+|"[^"]*")+/g);if("."!==o[0]){let e={};for(let _=0;_<o.length;_++)e[t[_]]=o[_];void 0!==e["_chem_comp_bond.type"]&&e["_chem_comp_bond.type"].length>0&&void 0!==e["_chem_comp_bond.comp_id"]&&e["_chem_comp_bond.comp_id"].length>0&&void 0!==e["_chem_comp_bond.atom_id_1"]&&e["_chem_comp_bond.atom_id_1"].length>0&&void 0!==e["_chem_comp_bond.atom_id_2"]&&e["_chem_comp_bond.atom_id_2"].length>0?c.push(e):void 0!==e["_chem_comp_bond.value_order"]&&e["_chem_comp_bond.value_order"].length>0&&void 0!==e["_chem_comp_bond.comp_id"]&&e["_chem_comp_bond.comp_id"].length>0&&void 0!==e["_chem_comp_bond.atom_id_1"]&&e["_chem_comp_bond.atom_id_1"].length>0&&void 0!==e["_chem_comp_bond.atom_id_2"]&&e["_chem_comp_bond.atom_id_2"].length>0&&("Y"===e["_chem_comp_bond.pdbx_aromatic_flag"]?e["_chem_comp_bond.type"]="aromatic":"SING"===e["_chem_comp_bond.value_order"]||"SINGLE"===e["_chem_comp_bond.value_order"]?e["_chem_comp_bond.type"]="single":"DOUB"===e["_chem_comp_bond.value_order"]||"DOUBLE"===e["_chem_comp_bond.value_order"]?e["_chem_comp_bond.type"]="double":"TRIP"===e["_chem_comp_bond.value_order"]||"TRIPLE"===e["_chem_comp_bond.value_order"]?e["_chem_comp_bond.type"]="triple":e["_chem_comp_bond.type"]="single",c.push(e))}}return c}function dictToMolBlock(e,o){let t=addCIFAtomTypes(e,o),_=addCIFBondTypes(e,o),c=t.length,m=_.length,n=e+"\n CCP4-MonomerLibrary-WebToCif\n\n";n+=(" "+c).slice(-3)+(" "+m).slice(-3)+" 0 0 0 0 0 0 0 0999 V2000\n";let s=0,p="";for(let e=0;e<c;e++){let o=parseFloat(t[e]["_chem_comp_atom.x"]),_=parseFloat(t[e]["_chem_comp_atom.y"]),c=parseFloat(t[e]["_chem_comp_atom.z"]);"."!=t[e]["_chem_comp_atom.charge"]&&"0"!=t[e]["_chem_comp_atom.charge"]&&(s++,p+=(" "+(e+1)).slice(-4)+(" "+t[e]["_chem_comp_atom.charge"]).slice(-4));let m=t[e]["_chem_comp_atom.type_symbol"];n+=(" "+o.toFixed(4)).slice(-10)+(" "+_.toFixed(4)).slice(-10)+(" "+c.toFixed(4)).slice(-10)+(" "+m).slice(-3)+" 0 0 0 0 0 0 0 0 0 0 0 0\n"}for(let e=0;e<m;e++){let o=t.find((o=>o["_chem_comp_atom.atom_id"]===_[e]["_chem_comp_bond.atom_id_1"])),c=t.find((o=>o["_chem_comp_atom.atom_id"]===_[e]["_chem_comp_bond.atom_id_2"])),m=t.indexOf(o),s=t.indexOf(c),p=(" "+(m+1)).slice(-3),i=(" "+(s+1)).slice(-3),l=1;!(["_chem_comp_bond.aromatic"]in _[e])||"y_XXX"!==_[e]["_chem_comp_bond.aromatic"]&&"Y_XXX"!==_[e]["_chem_comp_bond.aromatic"]?!(["_chem_comp_bond.type"]in _[e])||"TRIPLE"!==_[e]["_chem_comp_bond.type"]&&"triple"!==_[e]["_chem_comp_bond.type"]?!(["_chem_comp_bond.type"]in _[e])||"DOUBLE"!==_[e]["_chem_comp_bond.type"]&&"double"!==_[e]["_chem_comp_bond.type"]?!(["_chem_comp_bond.type"]in _[e])||"SINGLE"!==_[e]["_chem_comp_bond.type"]&&"single"!==_[e]["_chem_comp_bond.type"]?(console.log("Unknown bond type"),console.log(_[e])):l=1:l=2:l=3:l=4,n+=p+i+(" "+l).slice(-2)+" 0 0 0 0\n"}return s>0&&(n+="M CHG"+(" "+s).slice(-3)+p+"\n"),n+="M END",n}importScripts("web_example.js","RDKit_minimal.js"),createCCP4Module({print(e){postMessage(["output",e])},printErr(e){postMessage(["output",e])}}).then((function(e){CCP4Module=e})).catch((e=>{console.log("CCP4 problem :("),console.log(e)})),initRDKitModule({print(e){postMessage(["output",e])},printErr(e){postMessage(["output",e])}}).then((function(e){RDKit=e})).catch((e=>{console.log("RDKit problem :("),console.log(e)})),onmessage=function(e){let o=e.data[0],t=[],_=[o],c=o,m="/monomers/"+c.toLowerCase()[0]+"/"+c.toUpperCase()+".cif";t.push(makeRequest("GET",m,!0));let n={};t.length>0&&Promise.all(t).then((e=>{let o=_[0],t=dictToMolBlock(o,e[0]),c=RDKit.get_mol(t),m=RDKit.get_mol(c.remove_hs()).get_smiles(),s=RDKit.get_mol(m);n[o]=s.get_svg(),postMessage(["result",n])})).catch((e=>{console.error(e),postMessage(["result",n])}))};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module;importScripts("web_example.js"),createCCP4Module({print(e){postMessage(["output",e])},printErr(e){postMessage(["output",e])}}).then((function(e){CCP4Module=e})).catch((e=>{console.log("CCP4 problem :("),console.log(e)})),onmessage=function(e){var o=e.data[0];const l=new Uint8Array(o);var t=e.data[1];let a="FC",c="PHIC";void 0!==e.data[2]&&void 0!==e.data[3]&&(a=e.data[2],c=e.data[3]);try{CCP4Module.FS_createDataFile(".",t,l,!0,!0)}catch(e){}const n=CCP4Module.get_mtz_columns(t);console.log(n);for(let e=0;e<n.size();e+=2)console.log(n.get(e),n.get(e+1));console.log("Send",t,"to clipper");var r=CCP4Module.clipper_example_with_cols(t,a,c,2);console.log("In the worker..."),console.log(r),console.log(r.cell()),console.log(r.cell().a()),console.log(r.cell().b()),console.log(r.cell().c()),console.log(r.cell().alpha()),console.log(r.cell().beta()),console.log(r.cell().gamma()),CCP4Module.printMapStats(r);var s=new CCP4Module.CCP4MAPfile,C=new CCP4Module.Clipper_String("mapout.map");s.open_write(C),CCP4Module.exportXMapToMapFile(s,r),s.close_write(),console.log("Written",CCP4Module.clipperStringToString(C));var p=CCP4Module.FS.readFile(CCP4Module.clipperStringToString(C));postMessage(["result",p,t,l])};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module;importScripts("web_example.js"),createCCP4Module({print(e){postMessage(["output",e])},printErr(e){postMessage(["output",e])}}).then((function(e){CCP4Module=e})).catch((e=>{console.log("CCP4 problem :("),console.log(e)})),onmessage=function(e){var o=atob(e.data[0]),l=e.data[1];const t=new Array(o.length);for(let e=0;e<o.length;e++)t[e]=o.charCodeAt(e);const r=new Uint8Array(t);try{CCP4Module.FS_createDataFile(".",l,r,!0,!0)}catch(e){}console.log("Send",l,"to clipper");var n=CCP4Module.clipper_example(l);console.log("In the worker..."),console.log(n),console.log(n.cell()),console.log(n.cell().a()),CCP4Module.printMapStats(n);var a=new CCP4Module.CCP4MAPfile,p=new CCP4Module.Clipper_String("mapout.map");a.open_write(p),CCP4Module.exportXMapToMapFile(a,n),a.close_write(),console.log("Written",CCP4Module.clipperStringToString(p));var C=CCP4Module.FS.readFile(CCP4Module.clipperStringToString(p));postMessage(["result",C])};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module;importScripts("web_example.js"),importScripts("papaparse.min.js"),createCCP4Module({print(e){postMessage(["output",e])},printErr(e){postMessage(["output",e])}}).then((function(e){CCP4Module=e})).catch((e=>{console.log("CCP4 problem :("),console.log(e)})),onmessage=function(e){new CCP4Module.VectorString;try{CCP4Module.FS_createDataFile(".",e.data[1],e.data[0],!0,!0)}catch(e){}var t=CCP4Module.calculate_normal_modes(e.data[1],1);const s=t.GetBValues(),o=s.size();let l=[],a=[];const p=CCP4Module.get_CA_bvalues_from_file(e.data[1]);let r;if(o>0){r=0;for(let e=0;e<o;e++)r+=s.get(e)/p.get(e);r/=o,r=1/r}else r=1;const u=CCP4Module.GetCorrelations(t,r);for(let e=0;e<o;e++)l.push({x:e+1,y:s.get(e)*r}),a.push({x:e+1,y:p.get(e)});const n=u.get_rows(),c=u.get_columns();let g={x:[],y:[],z:[]};for(let e=0;e<n;e++)for(let t=0;t<c;t++)g.x.push(e),g.y.push(t),g.z.push(u.get(e,t));postMessage(["corrMat",g]),postMessage(["bvalues",[l,a]]),postMessage(["result",0]);let C=CCP4Module.calculate_normal_modes(e.data[1],0);const d=CCP4Module.GetEigen(C).get(1),m=d.get_rows();d.get_columns(),postMessage(["output","Normal modes"]);let i=[];for(let e=6;e<m;e++)i.push(d.get(e,0));postMessage(["energies",i]);const M=CCP4Module.GetDisplacements(C),_=M.nModes(),f=M.nSteps();let h={modes:[]};for(let e=0;e<_;e++){h.modes.push({steps:[]});for(let t=0;t<f;t++){h.modes[e].steps.push({xyz:[]});const s=M.getDisplacements(e,t),o=s.size();for(let l=0;l<o;l++)h.modes[e].steps[t].xyz.push(s.get(l))}}postMessage(["displacements",h])};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! For license information please see papaparse.min.js.LICENSE.txt */
|
|
2
|
-
!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof module&&"undefined"!=typeof exports?module.exports=t():e.Papa=t()}(this,(function e(){"use strict";var t="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==t?t:{},i=!t.document&&!!t.postMessage,r=t.IS_PAPA_WORKER||!1,n={},s=0,a={parse:function(i,r){var o=(r=r||{}).dynamicTyping||!1;if(b(o)&&(r.dynamicTypingFunction=o,o={}),r.dynamicTyping=o,r.transform=!!b(r.transform)&&r.transform,r.worker&&a.WORKERS_SUPPORTED){var u=function(){if(!a.WORKERS_SUPPORTED)return!1;var i,r,o=(i=t.URL||t.webkitURL||null,r=e.toString(),a.BLOB_URL||(a.BLOB_URL=i.createObjectURL(new Blob(["var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; ","(",r,")();"],{type:"text/javascript"})))),u=new t.Worker(o);return u.onmessage=_,u.id=s++,n[u.id]=u}();return u.userStep=r.step,u.userChunk=r.chunk,u.userComplete=r.complete,u.userError=r.error,r.step=b(r.step),r.chunk=b(r.chunk),r.complete=b(r.complete),r.error=b(r.error),delete r.worker,void u.postMessage({input:i,config:r,workerId:u.id})}var c=null;return a.NODE_STREAM_INPUT,"string"==typeof i?(i=function(e){return 65279===e.charCodeAt(0)?e.slice(1):e}(i),c=r.download?new h(r):new d(r)):!0===i.readable&&b(i.read)&&b(i.on)?c=new l(r):(t.File&&i instanceof File||i instanceof Object)&&(c=new f(r)),c.stream(i)},unparse:function(e,t){var i=!1,r=!0,n=",",s="\r\n",o='"',u=o+o,h=!1,f=null,d=!1;!function(){if("object"==typeof t){if("string"!=typeof t.delimiter||a.BAD_DELIMITERS.filter((function(e){return-1!==t.delimiter.indexOf(e)})).length||(n=t.delimiter),("boolean"==typeof t.quotes||"function"==typeof t.quotes||Array.isArray(t.quotes))&&(i=t.quotes),"boolean"!=typeof t.skipEmptyLines&&"string"!=typeof t.skipEmptyLines||(h=t.skipEmptyLines),"string"==typeof t.newline&&(s=t.newline),"string"==typeof t.quoteChar&&(o=t.quoteChar),"boolean"==typeof t.header&&(r=t.header),Array.isArray(t.columns)){if(0===t.columns.length)throw new Error("Option columns is empty");f=t.columns}void 0!==t.escapeChar&&(u=t.escapeChar+o),("boolean"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(d=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\-@\t\r].*$/)}}();var l=new RegExp(p(o),"g");if("string"==typeof e&&(e=JSON.parse(e)),Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return c(null,e,h);if("object"==typeof e[0])return c(f||Object.keys(e[0]),e,h)}else if("object"==typeof e)return"string"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||f),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:"object"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||"object"==typeof e.data[0]||(e.data=[e.data])),c(e.fields||[],e.data||[],h);throw new Error("Unable to serialize unrecognized input");function c(e,t,i){var a="";"string"==typeof e&&(e=JSON.parse(e)),"string"==typeof t&&(t=JSON.parse(t));var o=Array.isArray(e)&&0<e.length,u=!Array.isArray(t[0]);if(o&&r){for(var h=0;h<e.length;h++)0<h&&(a+=n),a+=g(e[h],h);0<t.length&&(a+=s)}for(var f=0;f<t.length;f++){var d=o?e.length:t[f].length,l=!1,c=o?0===Object.keys(t[f]).length:0===t[f].length;if(i&&!o&&(l="greedy"===i?""===t[f].join("").trim():1===t[f].length&&0===t[f][0].length),"greedy"===i&&o){for(var p=[],_=0;_<d;_++){var m=u?e[_]:_;p.push(t[f][m])}l=""===p.join("").trim()}if(!l){for(var y=0;y<d;y++){0<y&&!c&&(a+=n);var v=o&&u?e[y]:y;a+=g(t[f][v],y)}f<t.length-1&&(!i||0<d&&!c)&&(a+=s)}}return a}function g(e,t){if(null==e)return"";if(e.constructor===Date)return JSON.stringify(e).slice(1,25);var r=!1;d&&"string"==typeof e&&d.test(e)&&(e="'"+e,r=!0);var s=e.toString().replace(l,u);return(r=r||!0===i||"function"==typeof i&&i(e,t)||Array.isArray(i)&&i[t]||function(e,t){for(var i=0;i<t.length;i++)if(-1<e.indexOf(t[i]))return!0;return!1}(s,a.BAD_DELIMITERS)||-1<s.indexOf(n)||" "===s.charAt(0)||" "===s.charAt(s.length-1))?o+s+o:s}}};if(a.RECORD_SEP=String.fromCharCode(30),a.UNIT_SEP=String.fromCharCode(31),a.BYTE_ORDER_MARK="\ufeff",a.BAD_DELIMITERS=["\r","\n",'"',a.BYTE_ORDER_MARK],a.WORKERS_SUPPORTED=!i&&!!t.Worker,a.NODE_STREAM_INPUT=1,a.LocalChunkSize=10485760,a.RemoteChunkSize=5242880,a.DefaultDelimiter=",",a.Parser=g,a.ParserHandle=c,a.NetworkStreamer=h,a.FileStreamer=f,a.StringStreamer=d,a.ReadableStreamStreamer=l,t.jQuery){var o=t.jQuery;o.fn.parse=function(e){var i=e.config||{},r=[];return this.each((function(e){if("INPUT"!==o(this).prop("tagName").toUpperCase()||"file"!==o(this).attr("type").toLowerCase()||!t.FileReader||!this.files||0===this.files.length)return!0;for(var n=0;n<this.files.length;n++)r.push({file:this.files[n],inputElem:this,instanceConfig:o.extend({},i)})})),n(),this;function n(){if(0!==r.length){var t,i,n,u=r[0];if(b(e.before)){var h=e.before(u.file,u.inputElem);if("object"==typeof h){if("abort"===h.action)return t=u.file,i=u.inputElem,n=h.reason,void(b(e.error)&&e.error({name:"AbortError"},t,i,n));if("skip"===h.action)return void s();"object"==typeof h.config&&(u.instanceConfig=o.extend(u.instanceConfig,h.config))}else if("skip"===h)return void s()}var f=u.instanceConfig.complete;u.instanceConfig.complete=function(e){b(f)&&f(e,u.file,u.inputElem),s()},a.parse(u.file,u.instanceConfig)}else b(e.complete)&&e.complete()}function s(){r.splice(0,1),n()}}}function u(e){this._handle=null,this._finished=!1,this._completed=!1,this._halted=!1,this._input=null,this._baseIndex=0,this._partialLine="",this._rowCount=0,this._start=0,this._nextChunk=null,this.isFirstChunk=!0,this._completeResults={data:[],errors:[],meta:{}},function(e){var t=v(e);t.chunkSize=parseInt(t.chunkSize),e.step||e.chunk||(t.chunkSize=null),this._handle=new c(t),(this._handle.streamer=this)._config=t}.call(this,e),this.parseChunk=function(e,i){if(this.isFirstChunk&&b(this._config.beforeFirstChunk)){var n=this._config.beforeFirstChunk(e);void 0!==n&&(e=n)}this.isFirstChunk=!1,this._halted=!1;var s=this._partialLine+e;this._partialLine="";var o=this._handle.parse(s,this._baseIndex,!this._finished);if(!this._handle.paused()&&!this._handle.aborted()){var u=o.meta.cursor;this._finished||(this._partialLine=s.substring(u-this._baseIndex),this._baseIndex=u),o&&o.data&&(this._rowCount+=o.data.length);var h=this._finished||this._config.preview&&this._rowCount>=this._config.preview;if(r)t.postMessage({results:o,workerId:a.WORKER_ID,finished:h});else if(b(this._config.chunk)&&!i){if(this._config.chunk(o,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);o=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(o.data),this._completeResults.errors=this._completeResults.errors.concat(o.errors),this._completeResults.meta=o.meta),this._completed||!h||!b(this._config.complete)||o&&o.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),h||o&&o.meta.paused||this._nextChunk(),o}this._halted=!0},this._sendError=function(e){b(this._config.error)?this._config.error(e):r&&this._config.error&&t.postMessage({workerId:a.WORKER_ID,error:e,finished:!1})}}function h(e){var t;(e=e||{}).chunkSize||(e.chunkSize=a.RemoteChunkSize),u.call(this,e),this._nextChunk=i?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(t=new XMLHttpRequest,this._config.withCredentials&&(t.withCredentials=this._config.withCredentials),i||(t.onload=k(this._chunkLoaded,this),t.onerror=k(this._chunkError,this)),t.open(this._config.downloadRequestBody?"POST":"GET",this._input,!i),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var r in e)t.setRequestHeader(r,e[r])}if(this._config.chunkSize){var n=this._start+this._config.chunkSize-1;t.setRequestHeader("Range","bytes="+this._start+"-"+n)}try{t.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}i&&0===t.status&&this._chunkError()}},this._chunkLoaded=function(){4===t.readyState&&(t.status<200||400<=t.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:t.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader("Content-Range");return null===t?-1:parseInt(t.substring(t.lastIndexOf("/")+1))}(t),this.parseChunk(t.responseText)))},this._chunkError=function(e){var i=t.statusText||e;this._sendError(new Error(i))}}function f(e){var t,i;(e=e||{}).chunkSize||(e.chunkSize=a.LocalChunkSize),u.call(this,e);var r="undefined"!=typeof FileReader;this.stream=function(e){this._input=e,i=e.slice||e.webkitSlice||e.mozSlice,r?((t=new FileReader).onload=k(this._chunkLoaded,this),t.onerror=k(this._chunkError,this)):t=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount<this._config.preview)||this._readChunk()},this._readChunk=function(){var e=this._input;if(this._config.chunkSize){var n=Math.min(this._start+this._config.chunkSize,this._input.size);e=i.call(e,this._start,n)}var s=t.readAsText(e,this._config.encoding);r||this._chunkLoaded({target:{result:s}})},this._chunkLoaded=function(e){this._start+=this._config.chunkSize,this._finished=!this._config.chunkSize||this._start>=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(t.error)}}function d(e){var t;u.call(this,e=e||{}),this.stream=function(e){return t=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,i=this._config.chunkSize;return i?(e=t.substring(0,i),t=t.substring(i)):(e=t,t=""),this._finished=!t,this.parseChunk(e)}}}function l(e){u.call(this,e=e||{});var t=[],i=!0,r=!1;this.pause=function(){u.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){u.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){r&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):i=!0},this._streamData=k((function(e){try{t.push("string"==typeof e?e:e.toString(this._config.encoding)),i&&(i=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}}),this),this._streamError=k((function(e){this._streamCleanUp(),this._sendError(e)}),this),this._streamEnd=k((function(){this._streamCleanUp(),r=!0,this._streamData("")}),this),this._streamCleanUp=k((function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)}),this)}function c(e){var t,i,r,n=Math.pow(2,53),s=-n,o=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)([eE][-+]?\d+)?\s*$/,u=/^((\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z)))$/,h=this,f=0,d=0,l=!1,c=!1,_=[],m={data:[],errors:[],meta:{}};if(b(e.step)){var y=e.step;e.step=function(t){if(m=t,w())E();else{if(E(),0===m.data.length)return;f+=t.data.length,e.preview&&f>e.preview?i.abort():(m.data=m.data[0],y(m,h))}}}function k(t){return"greedy"===e.skipEmptyLines?""===t.join("").trim():1===t.length&&0===t[0].length}function E(){return m&&r&&(C("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+a.DefaultDelimiter+"'"),r=!1),e.skipEmptyLines&&(m.data=m.data.filter((function(e){return!k(e)}))),w()&&function(){if(m)if(Array.isArray(m.data[0])){for(var t=0;w()&&t<m.data.length;t++)m.data[t].forEach(i);m.data.splice(0,1)}else m.data.forEach(i);function i(t,i){b(e.transformHeader)&&(t=e.transformHeader(t,i)),_.push(t)}}(),function(){if(!m||!e.header&&!e.dynamicTyping&&!e.transform)return m;function t(t,i){var r,n=e.header?{}:[];for(r=0;r<t.length;r++){var s=r,a=t[r];e.header&&(s=r>=_.length?"__parsed_extra":_[r]),e.transform&&(a=e.transform(a,s)),a=R(s,a),"__parsed_extra"===s?(n[s]=n[s]||[],n[s].push(a)):n[s]=a}return e.header&&(r>_.length?C("FieldMismatch","TooManyFields","Too many fields: expected "+_.length+" fields but parsed "+r,d+i):r<_.length&&C("FieldMismatch","TooFewFields","Too few fields: expected "+_.length+" fields but parsed "+r,d+i)),n}var i=1;return!m.data.length||Array.isArray(m.data[0])?(m.data=m.data.map(t),i=m.data.length):m.data=t(m.data,0),e.header&&m.meta&&(m.meta.fields=_),d+=i,m}()}function w(){return e.header&&0===_.length}function R(t,i){return r=t,e.dynamicTypingFunction&&void 0===e.dynamicTyping[r]&&(e.dynamicTyping[r]=e.dynamicTypingFunction(r)),!0===(e.dynamicTyping[r]||e.dynamicTyping)?"true"===i||"TRUE"===i||"false"!==i&&"FALSE"!==i&&(function(e){if(o.test(e)){var t=parseFloat(e);if(s<t&&t<n)return!0}return!1}(i)?parseFloat(i):u.test(i)?new Date(i):""===i?null:i):i;var r}function C(e,t,i,r){var n={type:e,code:t,message:i};void 0!==r&&(n.row=r),m.errors.push(n)}this.parse=function(n,s,o){var u=e.quoteChar||'"';if(e.newline||(e.newline=function(e,t){e=e.substring(0,1048576);var i=new RegExp(p(t)+"([^]*?)"+p(t),"gm"),r=(e=e.replace(i,"")).split("\r"),n=e.split("\n"),s=1<n.length&&n[0].length<r[0].length;if(1===r.length||s)return"\n";for(var a=0,o=0;o<r.length;o++)"\n"===r[o][0]&&a++;return a>=r.length/2?"\r\n":"\r"}(n,u)),r=!1,e.delimiter)b(e.delimiter)&&(e.delimiter=e.delimiter(n),m.meta.delimiter=e.delimiter);else{var h=function(t,i,r,n,s){var o,u,h,f;s=s||[",","\t","|",";",a.RECORD_SEP,a.UNIT_SEP];for(var d=0;d<s.length;d++){var l=s[d],c=0,p=0,_=0;h=void 0;for(var m=new g({comments:n,delimiter:l,newline:i,preview:10}).parse(t),y=0;y<m.data.length;y++)if(r&&k(m.data[y]))_++;else{var v=m.data[y].length;p+=v,void 0!==h?0<v&&(c+=Math.abs(v-h),h=v):h=v}0<m.data.length&&(p/=m.data.length-_),(void 0===u||c<=u)&&(void 0===f||f<p)&&1.99<p&&(u=c,o=l,f=p)}return{successful:!!(e.delimiter=o),bestDelimiter:o}}(n,e.newline,e.skipEmptyLines,e.comments,e.delimitersToGuess);h.successful?e.delimiter=h.bestDelimiter:(r=!0,e.delimiter=a.DefaultDelimiter),m.meta.delimiter=e.delimiter}var f=v(e);return e.preview&&e.header&&f.preview++,t=n,i=new g(f),m=i.parse(t,s,o),E(),l?{meta:{paused:!0}}:m||{meta:{paused:!1}}},this.paused=function(){return l},this.pause=function(){l=!0,i.abort(),t=b(e.chunk)?"":t.substring(i.getCharIndex())},this.resume=function(){h.streamer._halted?(l=!1,h.streamer.parseChunk(t,!0)):setTimeout(h.resume,3)},this.aborted=function(){return c},this.abort=function(){c=!0,i.abort(),m.meta.aborted=!0,b(e.complete)&&e.complete(m),t=""}}function p(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function g(e){var t,i=(e=e||{}).delimiter,r=e.newline,n=e.comments,s=e.step,o=e.preview,u=e.fastMode,h=t=void 0===e.quoteChar||null===e.quoteChar?'"':e.quoteChar;if(void 0!==e.escapeChar&&(h=e.escapeChar),("string"!=typeof i||-1<a.BAD_DELIMITERS.indexOf(i))&&(i=","),n===i)throw new Error("Comment character same as delimiter");!0===n?n="#":("string"!=typeof n||-1<a.BAD_DELIMITERS.indexOf(n))&&(n=!1),"\n"!==r&&"\r"!==r&&"\r\n"!==r&&(r="\n");var f=0,d=!1;this.parse=function(a,l,c){if("string"!=typeof a)throw new Error("Input must be a string");var g=a.length,_=i.length,m=r.length,y=n.length,v=b(s),k=[],E=[],w=[],R=f=0;if(!a)return Q();if(e.header&&!l){var C=a.split(r)[0].split(i),S=[],O={},x=!1;for(var I in C){var A=C[I];b(e.transformHeader)&&(A=e.transformHeader(A,I));var T=A,D=O[A]||0;for(0<D&&(x=!0,T=A+"_"+D),O[A]=D+1;S.includes(T);)T=T+"_"+D;S.push(T)}if(x){var L=a.split(r);L[0]=S.join(i),a=L.join(r)}}if(u||!1!==u&&-1===a.indexOf(t)){for(var F=a.split(r),j=0;j<F.length;j++){if(w=F[j],f+=w.length,j!==F.length-1)f+=r.length;else if(c)return Q();if(!n||w.substring(0,y)!==n){if(v){if(k=[],B(w.split(i)),J(),d)return Q()}else B(w.split(i));if(o&&o<=j)return k=k.slice(0,o),Q(!0)}}return Q()}for(var z=a.indexOf(i,f),M=a.indexOf(r,f),P=new RegExp(p(h)+p(t),"g"),U=a.indexOf(t,f);;)if(a[f]!==t)if(n&&0===w.length&&a.substring(f,f+y)===n){if(-1===M)return Q();f=M+m,M=a.indexOf(r,f),z=a.indexOf(i,f)}else if(-1!==z&&(z<M||-1===M))w.push(a.substring(f,z)),f=z+_,z=a.indexOf(i,f);else{if(-1===M)break;if(w.push(a.substring(f,M)),H(M+m),v&&(J(),d))return Q();if(o&&k.length>=o)return Q(!0)}else for(U=f,f++;;){if(-1===(U=a.indexOf(t,U+1)))return c||E.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:k.length,index:f}),W();if(U===g-1)return W(a.substring(f,U).replace(P,t));if(t!==h||a[U+1]!==h){if(t===h||0===U||a[U-1]!==h){-1!==z&&z<U+1&&(z=a.indexOf(i,U+1)),-1!==M&&M<U+1&&(M=a.indexOf(r,U+1));var q=K(-1===M?z:Math.min(z,M));if(a.substr(U+1+q,_)===i){w.push(a.substring(f,U).replace(P,t)),a[f=U+1+q+_]!==t&&(U=a.indexOf(t,f)),z=a.indexOf(i,f),M=a.indexOf(r,f);break}var N=K(M);if(a.substring(U+1+N,U+1+N+m)===r){if(w.push(a.substring(f,U).replace(P,t)),H(U+1+N+m),z=a.indexOf(i,f),U=a.indexOf(t,f),v&&(J(),d))return Q();if(o&&k.length>=o)return Q(!0);break}E.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:k.length,index:f}),U++}}else U++}return W();function B(e){k.push(e),R=f}function K(e){var t=0;if(-1!==e){var i=a.substring(U+1,e);i&&""===i.trim()&&(t=i.length)}return t}function W(e){return c||(void 0===e&&(e=a.substring(f)),w.push(e),f=g,B(w),v&&J()),Q()}function H(e){f=e,B(w),w=[],M=a.indexOf(r,f)}function Q(e){return{data:k,errors:E,meta:{delimiter:i,linebreak:r,aborted:d,truncated:!!e,cursor:R+(l||0)}}}function J(){s(Q()),k=[],E=[]}},this.abort=function(){d=!0},this.getCharIndex=function(){return f}}function _(e){var t=e.data,i=n[t.workerId],r=!1;if(t.error)i.userError(t.error,t.file);else if(t.results&&t.results.data){var s={abort:function(){r=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(b(i.userStep)){for(var a=0;a<t.results.data.length&&(i.userStep({data:t.results.data[a],errors:t.results.errors,meta:t.results.meta},s),!r);a++);delete t.results}else b(i.userChunk)&&(i.userChunk(t.results,s,t.file),delete t.results)}t.finished&&!r&&m(t.workerId,t.results)}function m(e,t){var i=n[e];b(i.userComplete)&&i.userComplete(t),i.terminate(),delete n[e]}function y(){throw new Error("Not implemented.")}function v(e){if("object"!=typeof e||null===e)return e;var t=Array.isArray(e)?[]:{};for(var i in e)t[i]=v(e[i]);return t}function k(e,t){return function(){e.apply(t,arguments)}}function b(e){return"function"==typeof e}return r&&(t.onmessage=function(e){var i=e.data;if(void 0===a.WORKER_ID&&i&&(a.WORKER_ID=i.workerId),"string"==typeof i.input)t.postMessage({workerId:a.WORKER_ID,results:a.parse(i.input,i.config),finished:!0});else if(t.File&&i.input instanceof File||i.input instanceof Object){var r=a.parse(i.input,i.config);r&&t.postMessage({workerId:a.WORKER_ID,results:r,finished:!0})}}),(h.prototype=Object.create(u.prototype)).constructor=h,(f.prototype=Object.create(u.prototype)).constructor=f,(d.prototype=Object.create(d.prototype)).constructor=d,(l.prototype=Object.create(u.prototype)).constructor=l,a}));
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module,RDKit;function makeRequest(e,o){return new Promise((function(t,_){var c=new XMLHttpRequest;c.open(e,o,!0),c.onload=function(){this.status>=200&&this.status<300?t(c.response):_({status:this.status,statusText:c.statusText})},c.onerror=function(){_({status:this.status,statusText:c.statusText})},c.send()}))}function onlyUnique(e,o,t){return t.indexOf(e)===o}function getLoop(e,o){let t=o+".",_=!1,c=[],n=e.length;for(let o=0;o<n;o++){let n=e[o].replace(/(^\s+|\s+$)/g,"");if("loop_"===n||"_"===n.substring(0,1)&&n.substring(0,t.length)!==t){if(_)break;o<e.length&&e[o+1].substring(0,t.length)===t&&(_=!0)}else _&&c.push(n)}return c}function splitQuotedCIFString(e){return 0===e.length?[]:e.match(/(?:[^\s"]+|"[^"]*")+/g)}function addCIFAtomTypes(e,o){let t=[],_=getLoop(o.split("\n"),"_chem_comp_atom"),c=[];for(let e=0;e<_.length;e++)if("#"!==_[e].substr(0,1)&&""!==_[e].trim())if("_"===_[e].substr(0,1))t.push(_[e]);else{let o=splitQuotedCIFString(_[e]);if("."!==o[0]){let e={};for(let _=0;_<o.length;_++)e[t[_]]=o[_];c.push(e)}}return c}function addCIFBondTypes(e,o){let t=[],_=getLoop(o.split("\n"),"_chem_comp_bond"),c=[];for(let e=0;e<_.length;e++)if("#"!==_[e].substr(0,1)&&""!==_[e].trim())if("_"===_[e].substr(0,1))t.push(_[e]);else{let o=_[e].match(/(?:[^\s"]+|"[^"]*")+/g);if("."!==o[0]){let e={};for(let _=0;_<o.length;_++)e[t[_]]=o[_];void 0!==e["_chem_comp_bond.type"]&&e["_chem_comp_bond.type"].length>0&&void 0!==e["_chem_comp_bond.comp_id"]&&e["_chem_comp_bond.comp_id"].length>0&&void 0!==e["_chem_comp_bond.atom_id_1"]&&e["_chem_comp_bond.atom_id_1"].length>0&&void 0!==e["_chem_comp_bond.atom_id_2"]&&e["_chem_comp_bond.atom_id_2"].length>0?c.push(e):void 0!==e["_chem_comp_bond.value_order"]&&e["_chem_comp_bond.value_order"].length>0&&void 0!==e["_chem_comp_bond.comp_id"]&&e["_chem_comp_bond.comp_id"].length>0&&void 0!==e["_chem_comp_bond.atom_id_1"]&&e["_chem_comp_bond.atom_id_1"].length>0&&void 0!==e["_chem_comp_bond.atom_id_2"]&&e["_chem_comp_bond.atom_id_2"].length>0&&("Y"===e["_chem_comp_bond.pdbx_aromatic_flag"]?e["_chem_comp_bond.type"]="aromatic":"SING"===e["_chem_comp_bond.value_order"]||"SINGLE"===e["_chem_comp_bond.value_order"]?e["_chem_comp_bond.type"]="single":"DOUB"===e["_chem_comp_bond.value_order"]||"DOUBLE"===e["_chem_comp_bond.value_order"]?e["_chem_comp_bond.type"]="double":"TRIP"===e["_chem_comp_bond.value_order"]||"TRIPLE"===e["_chem_comp_bond.value_order"]?e["_chem_comp_bond.type"]="triple":e["_chem_comp_bond.type"]="single",c.push(e))}}return c}function dictToMolBlock(e,o){let t=addCIFAtomTypes(e,o),_=addCIFBondTypes(e,o),c=t.length,n=_.length,m=e+"\n CCP4-MonomerLibrary-WebToCif\n\n";m+=(" "+c).slice(-3)+(" "+n).slice(-3)+" 0 0 0 0 0 0 0 0999 V2000\n";let i=0,l="";for(let e=0;e<c;e++){let o=parseFloat(t[e]["_chem_comp_atom.x"]),_=parseFloat(t[e]["_chem_comp_atom.y"]),c=parseFloat(t[e]["_chem_comp_atom.z"]);"."!=t[e]["_chem_comp_atom.charge"]&&"0"!=t[e]["_chem_comp_atom.charge"]&&(i++,l+=(" "+(e+1)).slice(-4)+(" "+t[e]["_chem_comp_atom.charge"]).slice(-4));let n=t[e]["_chem_comp_atom.type_symbol"];m+=(" "+o.toFixed(4)).slice(-10)+(" "+_.toFixed(4)).slice(-10)+(" "+c.toFixed(4)).slice(-10)+(" "+n).slice(-3)+" 0 0 0 0 0 0 0 0 0 0 0 0\n"}for(let e=0;e<n;e++){let o=t.find((o=>o["_chem_comp_atom.atom_id"]===_[e]["_chem_comp_bond.atom_id_1"])),c=t.find((o=>o["_chem_comp_atom.atom_id"]===_[e]["_chem_comp_bond.atom_id_2"])),n=t.indexOf(o),i=t.indexOf(c),l=(" "+(n+1)).slice(-3),s=(" "+(i+1)).slice(-3),p=1;!(["_chem_comp_bond.aromatic"]in _[e])||"y_XXX"!==_[e]["_chem_comp_bond.aromatic"]&&"Y_XXX"!==_[e]["_chem_comp_bond.aromatic"]?!(["_chem_comp_bond.type"]in _[e])||"TRIPLE"!==_[e]["_chem_comp_bond.type"]&&"triple"!==_[e]["_chem_comp_bond.type"]?!(["_chem_comp_bond.type"]in _[e])||"DOUBLE"!==_[e]["_chem_comp_bond.type"]&&"double"!==_[e]["_chem_comp_bond.type"]?!(["_chem_comp_bond.type"]in _[e])||"SINGLE"!==_[e]["_chem_comp_bond.type"]&&"single"!==_[e]["_chem_comp_bond.type"]?(console.log("Unknown bond type"),console.log(_[e])):p=1:p=2:p=3:p=4,m+=l+s+(" "+p).slice(-2)+" 0 0 0 0\n"}return i>0&&(m+="M CHG"+(" "+i).slice(-3)+l+"\n"),m+="M END",m}importScripts("web_example.js","RDKit_minimal.js"),createCCP4Module({print(e){postMessage(["output",e])},printErr(e){postMessage(["output",e])}}).then((function(e){CCP4Module=e})).catch((e=>{console.log("CCP4 problem :("),console.log(e)})),initRDKitModule({print(e){postMessage(["output",e])},printErr(e){postMessage(["output",e])}}).then((function(e){RDKit=e})).catch((e=>{console.log("RDKit problem :("),console.log(e)})),onmessage=function(e){let o=e.data[0],t=e.data[1];try{CCP4Module.FS_createDataFile(".",t,o,!0,!0)}catch(e){}let _=CCP4Module.get_annotated_glycans_hierarchical(t,!1,"undefined"),c={};c[t]=_,postMessage(["glycan_result",c]);let n=CCP4Module.mmdb2_example(t),m=[];for(let e=0;e<n.size();e++)m.push(n.get(e));let i=m.filter(onlyUnique),l=[];for(ilig=0;ilig<i.length;ilig++){let e=i[ilig],o="/monomers/"+e.toLowerCase()[0]+"/"+e.toUpperCase()+".cif";l.push(makeRequest("GET",o,!0))}let s={};l.length>0&&Promise.all(l).then((e=>{for(ilig=0;ilig<e.length;ilig++){let o=i[ilig],t=dictToMolBlock(o,e[ilig]),_=RDKit.get_mol(t),c=RDKit.get_mol(_.remove_hs()).get_smiles(),n=RDKit.get_mol(c);s[o]=n.get_svg()}postMessage(["result",s])})).catch((e=>{for(console.error(e),ilig=0;ilig<i.length;ilig++){let e=i[ilig];s[e]=""}postMessage(["result",s])}))};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module,RDKit;function makeRequest(o,e){return new Promise((function(t,_){var c=new XMLHttpRequest;c.open(o,e,!0),c.onload=function(){this.status>=200&&this.status<300?t(c.response):_({status:this.status,statusText:c.statusText})},c.onerror=function(){_({status:this.status,statusText:c.statusText})},c.send()}))}function onlyUnique(o,e,t){return t.indexOf(o)===e}function getLoop(o,e){let t=e+".",_=!1,c=[],n=o.length;for(let e=0;e<n;e++){let n=o[e].replace(/(^\s+|\s+$)/g,"");if("loop_"===n||"_"===n.substring(0,1)&&n.substring(0,t.length)!==t){if(_)break;e<o.length&&o[e+1].substring(0,t.length)===t&&(_=!0)}else _&&c.push(n)}return c}function splitQuotedCIFString(o){return 0===o.length?[]:o.match(/(?:[^\s"]+|"[^"]*")+/g)}function addCIFAtomTypes(o,e){let t=[],_=getLoop(e.split("\n"),"_chem_comp_atom"),c=[];for(let o=0;o<_.length;o++)if("#"!==_[o].substr(0,1)&&""!==_[o].trim())if("_"===_[o].substr(0,1))t.push(_[o]);else{let e=splitQuotedCIFString(_[o]);if("."!==e[0]){let o={};for(let _=0;_<e.length;_++)o[t[_]]=e[_];c.push(o)}}return c}function addCIFBondTypes(o,e){let t=[],_=getLoop(e.split("\n"),"_chem_comp_bond"),c=[];for(let o=0;o<_.length;o++)if("#"!==_[o].substr(0,1)&&""!==_[o].trim())if("_"===_[o].substr(0,1))t.push(_[o]);else{let e=_[o].match(/(?:[^\s"]+|"[^"]*")+/g);if("."!==e[0]){let o={};for(let _=0;_<e.length;_++)o[t[_]]=e[_];void 0!==o["_chem_comp_bond.type"]&&o["_chem_comp_bond.type"].length>0&&void 0!==o["_chem_comp_bond.comp_id"]&&o["_chem_comp_bond.comp_id"].length>0&&void 0!==o["_chem_comp_bond.atom_id_1"]&&o["_chem_comp_bond.atom_id_1"].length>0&&void 0!==o["_chem_comp_bond.atom_id_2"]&&o["_chem_comp_bond.atom_id_2"].length>0?c.push(o):void 0!==o["_chem_comp_bond.value_order"]&&o["_chem_comp_bond.value_order"].length>0&&void 0!==o["_chem_comp_bond.comp_id"]&&o["_chem_comp_bond.comp_id"].length>0&&void 0!==o["_chem_comp_bond.atom_id_1"]&&o["_chem_comp_bond.atom_id_1"].length>0&&void 0!==o["_chem_comp_bond.atom_id_2"]&&o["_chem_comp_bond.atom_id_2"].length>0&&("Y"===o["_chem_comp_bond.pdbx_aromatic_flag"]?o["_chem_comp_bond.type"]="aromatic":"SING"===o["_chem_comp_bond.value_order"]||"SINGLE"===o["_chem_comp_bond.value_order"]?o["_chem_comp_bond.type"]="single":"DOUB"===o["_chem_comp_bond.value_order"]||"DOUBLE"===o["_chem_comp_bond.value_order"]?o["_chem_comp_bond.type"]="double":"TRIP"===o["_chem_comp_bond.value_order"]||"TRIPLE"===o["_chem_comp_bond.value_order"]?o["_chem_comp_bond.type"]="triple":o["_chem_comp_bond.type"]="single",c.push(o))}}return c}function dictToMolBlock(o,e){let t=addCIFAtomTypes(o,e),_=addCIFBondTypes(o,e),c=t.length,n=_.length,m=o+"\n CCP4-MonomerLibrary-WebToCif\n\n";m+=(" "+c).slice(-3)+(" "+n).slice(-3)+" 0 0 0 0 0 0 0 0999 V2000\n";let s=0,l="";for(let o=0;o<c;o++){let e=parseFloat(t[o]["_chem_comp_atom.x"]),_=parseFloat(t[o]["_chem_comp_atom.y"]),c=parseFloat(t[o]["_chem_comp_atom.z"]);"."!=t[o]["_chem_comp_atom.charge"]&&"0"!=t[o]["_chem_comp_atom.charge"]&&(s++,l+=(" "+(o+1)).slice(-4)+(" "+t[o]["_chem_comp_atom.charge"]).slice(-4));let n=t[o]["_chem_comp_atom.type_symbol"];m+=(" "+e.toFixed(4)).slice(-10)+(" "+_.toFixed(4)).slice(-10)+(" "+c.toFixed(4)).slice(-10)+(" "+n).slice(-3)+" 0 0 0 0 0 0 0 0 0 0 0 0\n"}for(let o=0;o<n;o++){let e=t.find((e=>e["_chem_comp_atom.atom_id"]===_[o]["_chem_comp_bond.atom_id_1"])),c=t.find((e=>e["_chem_comp_atom.atom_id"]===_[o]["_chem_comp_bond.atom_id_2"])),n=t.indexOf(e),s=t.indexOf(c),l=(" "+(n+1)).slice(-3),p=(" "+(s+1)).slice(-3),i=1;!(["_chem_comp_bond.aromatic"]in _[o])||"y_XXX"!==_[o]["_chem_comp_bond.aromatic"]&&"Y_XXX"!==_[o]["_chem_comp_bond.aromatic"]?!(["_chem_comp_bond.type"]in _[o])||"TRIPLE"!==_[o]["_chem_comp_bond.type"]&&"triple"!==_[o]["_chem_comp_bond.type"]?!(["_chem_comp_bond.type"]in _[o])||"DOUBLE"!==_[o]["_chem_comp_bond.type"]&&"double"!==_[o]["_chem_comp_bond.type"]?!(["_chem_comp_bond.type"]in _[o])||"SINGLE"!==_[o]["_chem_comp_bond.type"]&&"single"!==_[o]["_chem_comp_bond.type"]?(console.log("Unknown bond type"),console.log(_[o])):i=1:i=2:i=3:i=4,m+=l+p+(" "+i).slice(-2)+" 0 0 0 0\n"}return s>0&&(m+="M CHG"+(" "+s).slice(-3)+l+"\n"),m+="M END",m}importScripts("web_example.js","RDKit_minimal.js"),createCCP4Module({print(o){postMessage(["output",o])},printErr(o){postMessage(["output",o])}}).then((function(o){CCP4Module=o})).catch((o=>{console.log("CCP4 problem :("),console.log(o)})),initRDKitModule({print(o){postMessage(["output",o])},printErr(o){postMessage(["output",o])}}).then((function(o){RDKit=o})).catch((o=>{console.log("RDKit problem :("),console.log(o)})),onmessage=function(o){let e=[o.data[0]],t=[o.data[1]];console.log(e);let _={};e.length>0&&Promise.all(e).then((o=>{console.log("Do RDKit stuff");let e=RDKit.get_mol(o[0]),c=RDKit.get_mol(e.add_hs());console.log("Done get_mol"),_[t[0]]=c.get_svg(),console.log("Done get_svg"),postMessage(["result",_]),console.log("Done postMessage")})).catch((o=>{console.error(o),postMessage(["result",_])}))};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var CCP4Module;importScripts("web_example.js"),importScripts("papaparse.min.js"),createCCP4Module({print(t){postMessage(["output",t])},printErr(t){postMessage(["output",t])}}).then((function(t){CCP4Module=t})).catch((t=>{console.log("CCP4 problem :("),console.log(t)})),onmessage=function(t){var e=new CCP4Module.VectorString;e.push_back("gesamt");var a=new CCP4Module.VectorString;for(let s=0;s<t.data[0].length;s++){try{CCP4Module.FS_createDataFile(".",t.data[1][s],t.data[0][s],!0,!0)}catch(t){}e.push_back(t.data[1][s]),a.push_back("dummy")}e.push_back("-csv"),e.push_back("out.csv");var s=CCP4Module.gesamt(e),l=CCP4Module.FS.readFile("out.csv",{encoding:"utf8"});let r=Papa.parse(l).data;if(2==t.data[0].length){let e=!1,a=!1,s=[],l=[],p=-1;for(let t=0;t<r.length;t++){if(e&&t<p+4&&(l.push(parseFloat(r[t][0])),l.push(parseFloat(r[t][1])),l.push(parseFloat(r[t][2])),l.push(parseFloat(r[t][3]))),a){if(r[t][0].length>0){let e=parseFloat(r[t][0]),a=parseFloat(r[t][4].trim().split(" ")[r[t][4].trim().split(" ").length-1]);s.push({x:a,y:e})}if(r[t].length<5)break}4==r[t].length&&"Rx"===r[t][0].trim()&&"Ry"===r[t][1].trim()&&"Rz"===r[t][2].trim()&&"T"===r[t][3].trim()&&(e=!0,p=t),r[t].length>4&&"Dist [A]"===r[t][0].trim()&&"Query"===r[t][3].trim()&&"Target"===r[t][4].trim()&&(a=!0)}12==l.length&&(l.push(0),l.push(0),l.push(0),l.push(1));let o={};o.alignData=s,o.transformMatrices=[l],t.data.length>2&&(o.jobid=t.data[2]),postMessage(["csvResult",o])}else{let e=!1,a=!1,s=[],l=[],p=[],o=-1;for(let i=0;i<r.length;i++){if(e&&i<o+4&&(l.push(parseFloat(r[i][0])),l.push(parseFloat(r[i][1])),l.push(parseFloat(r[i][2])),l.push(parseFloat(r[i][3]))),12==l.length&&(l.push(0),l.push(0),l.push(0),l.push(1),p.push(l),l=[],e=!1),4==r[i].length&&"Rx"===r[i][0].trim()&&"Ry"===r[i][1].trim()&&"Rz"===r[i][2].trim()&&"T"===r[i][3].trim()&&(e=!0,o=i),a){if(r[i][0].length>0){let t=parseFloat(r[i][0]),e=parseFloat(r[i][1].trim().split(" ")[r[i][1].trim().split(" ").length-1]);s.push({x:e,y:t})}if(r[i].length<t.data[0].length+1)break}"Disp.[A]"===r[i][0].trim()&&i>2&&"RESIDUE ALIGNMENT"===r[i-2][0].trim()&&(a=!0)}let i={};i.transformMatrices=p,i.alignData=s,t.data.length>2&&(i.jobid=t.data[2]),postMessage(["csvResult",i])}postMessage(["result",s])};
|