moorhen 0.8.5 → 0.9.1
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 +11 -1
- package/baby-gru/CootWorker.js +1 -1
- package/baby-gru/CootWorker.ts +77 -22
- package/baby-gru/monomers/p/PRO.cif +118 -115
- package/baby-gru/monomers/t/TYR.cif +26 -25
- package/baby-gru/moorhen.css +15 -0
- package/baby-gru/{wasm/moorhen.data → moorhen.data} +381 -379
- package/baby-gru/moorhen.js +1 -0
- package/baby-gru/{wasm/moorhen.wasm → moorhen.wasm} +0 -0
- package/baby-gru/moorhen.worker.js +1 -0
- package/baby-gru/web_example.js +1 -0
- package/baby-gru/web_example.wasm +0 -0
- package/moorhen.js +91 -14
- package/package.json +4 -2
- package/types/libcoot.d.ts +24 -4
- package/types/main.d.ts +68 -317
- package/types/mgWebGL.d.ts +14 -0
- package/types/moorhen.d.ts +136 -57
- package/baby-gru/wasm/RDKit_minimal.js +0 -1
- package/baby-gru/wasm/RDKit_minimal.wasm +0 -0
- 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/moorhen.js +0 -1
- package/baby-gru/wasm/moorhen.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/baby-gru/wasm/web_example.js +0 -1
- package/baby-gru/wasm/web_example.wasm +0 -0
- /package/baby-gru/{wasm/coot_env_web.js → coot_env_web.js} +0 -0
package/README.md
CHANGED
|
@@ -43,11 +43,21 @@ Binaries are available on the releases page. Please read the instructions there
|
|
|
43
43
|
* git
|
|
44
44
|
* curl
|
|
45
45
|
* patch
|
|
46
|
-
*
|
|
46
|
+
* ninja
|
|
47
|
+
* meson
|
|
47
48
|
* cmake
|
|
49
|
+
* flex
|
|
50
|
+
* bison
|
|
48
51
|
* A *native* C++ compiler. (This is required for part of the `boost` build system).
|
|
49
52
|
* `autoconf`,`autotools`
|
|
50
53
|
* `libtool`
|
|
54
|
+
* emsdk/emscripten (Steps 1 and 2 below)
|
|
55
|
+
\
|
|
56
|
+
\
|
|
57
|
+
Most of these (except emscripten) can be installed by somelike like `sudo apt install git cmake curl patch meson ninja-build autoconf automake libtool flex bison g++` on a Debian like system. All of these should be available through Homebrew or Ports on macOS.
|
|
58
|
+
\
|
|
59
|
+
\
|
|
60
|
+
Moorhen should build on any reasonably recent version of macOS (Intel or Arm64) and any reasonly recent Linux distribution (x86_64 or aarch64). Tested on Ubuntu 22.04 x86_64, Raspberry Pi OS Bookworm/Debian 12 on Pi5, macOS Monteray and Sonama and others.
|
|
51
61
|
|
|
52
62
|
1. Install emscripten (following [https://emscripten.org/docs/getting_started/downloads.html](https://emscripten.org/docs/getting_started/downloads.html)):
|
|
53
63
|
`git clone https://github.com/emscripten-core/emsdk.git`
|
package/baby-gru/CootWorker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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("./wasm/moorhen.js"),importScripts("./wasm/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=[],T=[],x=m.get(h);"spherical-atoms"===x.name&&(f=!0);for(var A=x.vertices,F=x.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=x.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]),T.push.apply(T,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}P.delete();var j=x.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;T.push(H[0][0]),T.push(H[0][1]),T.push(H[0][2]),T.push(H[0][3]),T.push(H[1][0]),T.push(H[1][1]),T.push(H[1][2]),T.push(H[1][3]),T.push(H[2][0]),T.push(H[2][1]),T.push(H[2][2]),T.push(H[2][3]),T.push(H[3][0]),T.push(H[3][1]),T.push(H[3][2]),T.push(H[3][3])}}j.delete(),n.push(S),s.push(y),o.push(v),i.push(b),_.push(z),l.push(T),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=[],r=e.image_data.size();console.log(r);for(var t=0;t<r;t++){var o=e.image_data.get(t);a.push(o)}return e.image_data.delete(),{width:e.width,height:e.height,x_size:e.x_size,y_size:e.y_size,z_position:e.z_position,image_data:a}},fitLigandInfoArrayToJSArray=function(e){for(var 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_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_open_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_open_mtz":i=auto_open_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;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({locateFile:function(e){return"./wasm/".concat(e)},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({locateFile:function(e){return"./wasm/".concat(e)},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))};
|
|
1
|
+
var cootModule,molecules_container,ccp4Module,__assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var r,a=1,t=arguments.length;a<t;a++)for(var o in r=arguments[a])Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o]);return e},__assign.apply(this,arguments)};importScripts("./moorhen.js"),importScripts("./web_example.js");var guid=function(){var e=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(r){var a=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===r?a:3&a|8).toString(16)}))},print=function(e){console.log(e)},parseMonLibListCif=function(e){for(var r=cootModule.parse_mon_lib_list_cif(e),a=r.size(),t=[],o=0;o<a;o++){var s=r.get(o);t.push({three_letter_code:s.three_letter_code,name:s.name.replaceAll("'","").toLowerCase()})}return r.delete(),t},instancedMeshToMeshData=function(e,r,a,t){void 0===a&&(a=!1),void 0===t&&(t=1e4);for(var o=[],s=[],n=[],i=[],c=[],l=[],_=[],u=[],d=[],m=e.geom,p=e.markup,g=m.size(),h=0;h<g;h++){var f=a,v=[],y=[],b=[],S=[],M=[],z=[],A=[],T=m.get(h);"spherical-atoms"===T.name&&(f=!0);for(var x=T.vertices,F=T.triangles,k=F.size(),w=0;w<k;w++){var I=F.get(w).point_id;r?(v.push(I[0]),v.push(I[2]),v.push(I[1])):(v.push(I[0]),v.push(I[1]),v.push(I[2]))}F.delete();for(var J=x.size(),D=0;D<J;D++){var C=x.get(D),N=C.pos;y.push(N[0]),y.push(N[1]),y.push(N[2]);var R=C.normal;b.push(R[0]),b.push(R[1]),b.push(R[2])}x.delete();var P=T.instancing_data_A,L=P.size();if(L>0)for(var E=0;E<L;E++){var U=(q=P.get(E)).position;z.push(U[0]),z.push(U[1]),z.push(U[2]);var O=q.colour;M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var j=q.size;S.push(j[0]),S.push(j[1]),S.push(j[2]),A.push.apply(A,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}P.delete();var B=T.instancing_data_B,V=B.size();if(V>0)for(E=0;E<V;E++){var q;if(!((j=(q=B.get(E)).size)[2]>t)){S.push(j[0]),S.push(j[1]),S.push(j[2]),U=q.position,z.push(U[0]),z.push(U[1]),z.push(U[2]),O=q.colour,M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var H=q.orientation;A.push(H[0][0]),A.push(H[0][1]),A.push(H[0][2]),A.push(H[0][3]),A.push(H[1][0]),A.push(H[1][1]),A.push(H[1][2]),A.push(H[1][3]),A.push(H[2][0]),A.push(H[2][1]),A.push(H[2][2]),A.push(H[2][3]),A.push(H[3][0]),A.push(H[3][1]),A.push(H[3][2]),A.push(H[3][3])}}B.delete(),n.push(b),s.push(y),o.push(v),i.push(S),l.push(z),_.push(A),c.push(M),u.push(!0),f?d.push("PERFECT_SPHERES"):d.push("TRIANGLES")}m.delete();var K=simpleMeshToMeshData(p);return K.idx_tri.length>0&&K.idx_tri[0].length>0&&K.idx_tri[0][0].length>0?a?{prim_types:[d,K.prim_types[0]],idx_tri:[o,K.idx_tri[0]],vert_tri:[l,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:[l,null],instance_orientations:[_,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:[l,null],instance_orientations:[_,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:[l],instance_orientations:[_]}},simpleMeshToMeshData=function(e,r,a){void 0===r&&(r=!1),void 0===a&&(a=!1);var t=(performance.now(),e.vertices),o=e.triangles,s=t.size(),n=o.size(),i=new Uint32Array(3*n),c=new Float32Array(3*s),l=new Float32Array(3*s),_=new Float32Array(4*s);cootModule.getPositionsFromSimpleMesh2(e,c),cootModule.getColoursFromSimpleMesh2(e,_),r?(a?cootModule.getReversedNormalsFromSimpleMesh3(e,l):cootModule.getReversedNormalsFromSimpleMesh2(e,l),cootModule.getPermutedTriangleIndicesFromSimpleMesh2(e,i)):(cootModule.getNormalsFromSimpleMesh2(e,l),cootModule.getTriangleIndicesFromSimpleMesh2(e,i)),performance.now();var u=c,d=_,m=l,p=i;return t.delete(),o.delete(),{prim_types:[["TRIANGLES"]],idx_tri:[[p]],vert_tri:[[u]],norm_tri:[[m]],col_tri:[[d]]}},SuperposeResultsToJSArray=function(e){for(var r=e.aligned_pairs,a=r.size(),t=[],o=0;o<a;o++){var s=r.get(o),n=s.first,i=n.residue_spec,c=s.second,l=c.residue_spec,_={reference:{chainId:i.chain_id,insCode:i.ins_code,seqNum:i.res_no,restype:"UNK",value:n.function_value,label:n.label},moving:{chainId:l.chain_id,insCode:l.ins_code,seqNum:l.res_no,restype:"UNK",value:c.function_value,label:c.label}};t.push(_)}return r.delete(),{referenceSequence:e.alignment.first,movingSequence:e.alignment.second,supperposeInfo:e.superpose_info,alignedPairsData:t}},colourRulesToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},stringArrayArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){for(var o=e.get(t),s=o.size(),n=[],i=0;i<s;i++){var c=o.get(i);n.push(c)}r.push(n),o.delete()}return e.delete(),r},floatArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},mapMoleculeCentreInfoToJSObject=function(e){var r=e.updated_centre,a={updated_centre:[r.x(),r.y(),r.z()],success:e.success,suggested_radius:e.suggested_radius,suggested_contour_level:e.suggested_contour_level};return r.delete(),a},textureAsFloatsToJSTextureAsFloats=function(e){var r=e.width*e.height,a=new Float32Array(r),t=performance.now();cootModule.getTextureArray(e,a);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:a}},fitLigandInfoArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(__assign({},o))}return e.delete(),r},intArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},stringArrayToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push(o)}return e.delete(),r},export_map_as_gltf=function(e,r,a,t,o,s){var n="".concat(guid(),".glb");molecules_container.export_map_molecule_as_gltf(e,r,a,t,o,s,n);var i=cootModule.FS.readFile(n,{encoding:"binary"});return cootModule.FS_unlink(n),i.buffer},export_molecular_represenation_as_gltf=function(e,r,a,t){var o="".concat(guid(),".glb");molecules_container.export_molecular_represenation_as_gltf(e,r,a,t,o);var s=cootModule.FS.readFile(o,{encoding:"binary"});return cootModule.FS_unlink(o),s.buffer},export_molecule_as_gltf=function(e,r,a,t,o,s,n,i,c){var l="".concat(guid(),".glb");molecules_container.export_model_molecule_as_gltf(e,r,a,t,o,s,n,i,c,l);var _=cootModule.FS.readFile(l,{encoding:"binary"});return cootModule.FS_unlink(l),_.buffer},symmetryToJSData=function(e){for(var r=[],a=e.first,t=e.second,o=a.symm_trans,s=o.size(),n=0;n<s;n++){var i=o.get(n),c=i.first,l=i.second,_=t.get(n);r.push({x:c.x(),y:c.y(),z:c.z(),asString:c.symm_as_string,isym:c.isym(),us:l.us,ws:l.ws,vs:l.vs,matrix:_}),c.delete()}return o.delete(),t.delete(),r},mmrrccStatsToJSArray=function(e){var r=function(e){for(var r=[],a=e.keys(),t=a.size(),o=0;o<t;o++){var s=a.get(o),n=e.get(s);r.push({resNum:s.res_no,insCode:s.ins_code,modelNumber:s.model_number,chainId:s.chain_id,n:n.n,correlation:n.correlation()}),n.delete()}return a.delete(),r},a=e.first,t=e.second,o={"All atoms":r(a),"Side-chains":r(t)};return a.delete(),t.delete(),o},atomSpecToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({chain_id:o.chain_id,res_no:o.res_no,ins_code:o.ins_code,atom_name:o.atom_name,alt_conf:o.alt_conf,int_user_data:o.int_user_data,float_user_data:o.float_user_data,string_user_data:o.string_user_data,model_number:o.model_number})}return e.delete(),r},residueSpecToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({resNum:o.res_no,insCode:o.ins_code,modelNumber:o.model_number,chainId:o.chain_id,intUserData:o.int_user_data})}return e.delete(),r},stringPairVectorToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({first:o.first,second:o.second})}return e.delete(),r},validationDataToJSArray=function(e,r){void 0===r&&(r=null);for(var a=[],t=e.cviv,o=t.size(),s=0;s<o;s++){var n=t.get(s);if(null!==r&&n.chain_id!==r);else{for(var i=n.rviv,c=i.size(),l=0;l<c;l++){var _=i.get(l),u=_.residue_spec;a.push({chainId:u.chain_id,insCode:u.ins_code,seqNum:u.res_no,restype:"UNK",value:_.function_value})}i.delete()}}return t.delete(),e.delete(),a},linesBoxToJSArray=function(e){for(var r=[],a=e.line_segments,t=a.size(),o=0;o<t;o++){for(var s=[],n=a.get(o),i=n.size(),c=0;c<i;c++){var l=n.get(c),_=l.getStart(),u=l.getFinish(),d=l.amplitude(),m={x:_.x(),y:_.y(),z:_.z()},p={x:u.x(),y:u.y(),z:u.z()};s.push({start:m,end:p,dist:d}),_.delete(),u.delete(),l.delete()}n.delete(),r.push(s)}return a.delete(),r},vectorHBondToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({hb_hydrogen:o.hb_hydrogen,donor:o.donor,acceptor:o.acceptor,donor_neigh:o.donor_neigh,acceptor_neigh:o.acceptor_neigh,angle_1:o.angle_1,angle_2:o.angle_2,angle_3:o.angle_3,dist:o.dist,ligand_atom_is_donor:o.ligand_atom_is_donor,hydrogen_is_ligand_atom:o.hydrogen_is_ligand_atom,bond_has_hydrogen_flag:o.bond_has_hydrogen_flag})}return e.delete(),r},interestingPlaceDataToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t),s=o.residue_spec;r.push({intUserData:s.int_user_data,modelNumber:s.model_number,chainId:s.chain_id,insCode:s.ins_code,resNum:s.res_no,featureType:o.feature_type,featureValue:o.feature_value,buttonLabel:o.button_label,badness:o.badness,coordX:o.x,coordY:o.y,coordZ:o.z})}return e.delete(),r},histogramInfoToJSData=function(e){var r=e.counts;return{counts:intArrayToJSArray(r),bin_width:e.bin_width,base:e.base}},autoReadMtzInfoVectToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t);r.push({idx:o.idx,F:o.F,phi:o.phi,w:o.w,weights_used:o.weights_used,Rfree:o.Rfree?o.Rfree.split("/")[3]:"",F_obs:o.F_obs?o.F_obs.split("/")[3]:"",sigF_obs:o.sigF_obs?o.sigF_obs.split("/")[3]:""})}if(e.delete(),r.some((function(e){return-1===e.idx}))){var s=r.find((function(e){return-1===e.idx}));s&&s.F_obs&&s.Rfree&&s.sigF_obs&&r.forEach((function(e){e.F_obs=s.F_obs,e.sigF_obs=s.sigF_obs,e.Rfree=s.Rfree})),r=r.filter((function(e){return-1!==e.idx}))}return r},ramachandranDataToJSArray=function(e,r){for(var a=[],t=e.size(),o=0;o<t;o++){var s=e.get(o),n=s.phi_psi;n.chain_id===r&&a.push({chainId:n.chain_id,insCode:n.ins_code,seqNum:n.residue_number,restype:s.residue_name(),isOutlier:!s.is_allowed_flag,phi:n.phi(),psi:n.psi(),is_pre_pro:"PRO"===s.residue_name()}),s.delete(),n.delete()}return e.delete(),a},vectorPairStringIntToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t),s={residue:o.first,slice:o.second};r.push(s)}return e.delete(),r},vectorPairClipperCoordFloatToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){var o=e.get(t),s=o.second,n=o.first,i={x:n.x(),y:n.y(),z:n.z()};n.delete(),r.push({value:s,coord:i})}return e.delete(),r},simpleMeshToLineMeshData=function(e,r){var a=(performance.now(),e.vertices),t=e.triangles,o=t.size(),s=a.size(),n=new Uint32Array(6*o),i=new Float32Array(3*s),c=new Float32Array(3*s),l=new Float32Array(4*s);cootModule.getLineIndicesFromSimpleMesh2(e,n),cootModule.getPositionsFromSimpleMesh2(e,i),cootModule.getNormalsFromSimpleMesh2(e,c),cootModule.getColoursFromSimpleMesh2(e,l),performance.now();var _=n,u=i,d=c,m=l;return a.delete(),t.delete(),r?{prim_types:[["NORMALLINES"]],useIndices:[[!0]],idx_tri:[[_]],vert_tri:[[u]],additional_norm_tri:[[d]],norm_tri:[[d]],col_tri:[[m]]}:{prim_types:[["LINES"]],useIndices:[[!0]],idx_tri:[[_]],vert_tri:[[u]],norm_tri:[[d]],col_tri:[[m]]}},auto_read_mtz=function(e){var r=guid(),a=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(r,".mtz"),a,!0,!0);var t="./".concat(r,".mtz"),o=molecules_container.auto_read_mtz(t);return cootModule.FS_unlink(t),o},replace_map_by_mtz_from_file=function(e,r,a){var t=guid(),o="./".concat(t,".mtz"),s=new Uint8Array(r);cootModule.FS_createDataFile(".",o,s,!0,!0);var n=[e,o,a.F,a.PHI,"",!1],i=molecules_container.replace_map_by_mtz_from_file.apply(molecules_container,n);return cootModule.FS_unlink(o),i},new_positions_for_residue_atoms=function(e,r){var a=0,t=new cootModule.Vectormoved_residue_t;return r.forEach((function(e){if(e.length>0){var r=e[0],a=new cootModule.moved_residue_t(r.chain_id,parseInt(r.res_no),"");e.forEach((function(e){var r=new cootModule.moved_atom_t(e.name,e.alt_loc,e.x,e.y,e.z,-1);a.add_atom(r),r.delete()})),t.push_back(a),a.delete()}})),a+=molecules_container.new_positions_for_atoms_in_residues(e,t),t.delete(),a},read_mtz=function(e,r,a){var t=guid(),o=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(t,".mtz"),o,!0,!0);var s="./".concat(t,".mtz"),n=[s,a.F,a.PHI,"",!1,a.isDifference],i=molecules_container.read_mtz.apply(molecules_container,n);return cootModule.FS_unlink(s),i},associate_data_mtz_file_with_map=function(e,r,a,t,o){var s=new Uint8Array(r.data);cootModule.FS_createDataFile(".","".concat(r.fileName,".mtz"),s,!0,!0);var n="./".concat(r.fileName,".mtz"),i=[e,n,a,t,o];return molecules_container.associate_data_mtz_file_with_map.apply(molecules_container,i),n},read_ccp4_map=function(e,r,a){var t=guid(),o=new Uint8Array(e),s="";r.endsWith(".map.gz")?s="map.gz":r.endsWith(".mrc.gz")&&(s="mrc.gz"),cootModule.FS_createDataFile(".","".concat(t).concat(s),o,!0,!0);var n="./".concat(t).concat(s),i=[n,a],c=-1;try{c=molecules_container.read_ccp4_map.apply(molecules_container,i)}catch(e){console.warn(e)}finally{cootModule.FS_unlink(n)}return c},setUserDefinedBondColours=function(e,r,a){void 0===a&&(a=!1);var t=new cootModule.MapIntFloat4,o=new cootModule.VectorStringUInt_pair;r.forEach((function(e,r){t.set(r+51,e.rgba);var a={first:e.cid,second:r+51};o.push_back(a)})),molecules_container.set_user_defined_bond_colours(e,t),molecules_container.set_user_defined_atom_colour_by_selection(e,o,a),o.delete(),t.delete()},privateerValidationToJSArray=function(e){for(var r=[],a=e.size(),t=0;t<a;t++){for(var o=e.get(t),s=[],n=o.torsions,i=n.size(),c=0;c<i;c++)s.push(n.get(c));n.delete();var l={torsions:s,svg:o.svg.replace(/: *32/g,""),id:o.id.replace(/: *32/g,""),chain:o.chain,wurcs:o.wurcs,glyconnect_id:o.glyconnect_id,glytoucan_id:o.glytoucan_id,torsion_err:o.torsion_err,anomer_err:o.anomer_err,conformation_err:o.conformation_err,puckering_err:o.puckering_err,chirality_err:o.chirality_err};r.push(l)}return e.delete(),r},headerInfoAsJSObject=function(e){var r=e.author_lines,a=stringArrayToJSArray(r),t=e.compound_lines,o=stringArrayToJSArray(t),s=e.journal_lines,n=stringArrayToJSArray(s);return{title:e.title,author_lines:a,compound_lines:o,journal_lines:n}},doCootCommand=function(e){var r=e.returnType,a=e.command,t=e.commandArgs,o=e.messageId,s=e.myTimeStamp,n=e.message;try{var i=void 0;switch(a){case"shim_new_positions_for_residue_atoms":i=new_positions_for_residue_atoms.apply(void 0,t);break;case"shim_read_mtz":i=read_mtz.apply(void 0,t);break;case"shim_auto_read_mtz":i=auto_read_mtz.apply(void 0,t);break;case"shim_read_ccp4_map":i=read_ccp4_map.apply(void 0,t);break;case"shim_associate_data_mtz_file_with_map":i=associate_data_mtz_file_with_map.apply(void 0,t);break;case"shim_replace_map_by_mtz_from_file":i=replace_map_by_mtz_from_file.apply(void 0,t);break;case"shim_set_bond_colours":i=setUserDefinedBondColours.apply(void 0,t);break;case"shim_export_map_as_gltf":i=export_map_as_gltf.apply(void 0,t);break;case"shim_export_molecule_as_gltf":i=export_molecule_as_gltf.apply(void 0,t);break;case"shim_export_molecular_represenation_as_gltf":i=export_molecular_represenation_as_gltf.apply(void 0,t);break;case"parse_mon_lib_list_cif":i=parseMonLibListCif.apply(void 0,t);break;default:i=molecules_container[a].apply(molecules_container,t)}var c=void 0;switch(r){case"header_info_t":c=headerInfoAsJSObject(i);break;case"texture_as_floats_t":c=textureAsFloatsToJSTextureAsFloats(i);break;case"fit_ligand_info_array":c=fitLigandInfoArrayToJSArray(i);break;case"string_array_array":c=stringArrayArrayToJSArray(i);break;case"instanced_mesh_perm":c=instancedMeshToMeshData(i,!0);break;case"histogram_info_t":c=histogramInfoToJSData(i);break;case"symmetry":c=symmetryToJSData(i);break;case"mmrrcc_stats":c=mmrrccStatsToJSArray(i);break;case"colour_rules":c=colourRulesToJSArray(i);break;case"instanced_mesh_perfect_spheres":c=instancedMeshToMeshData(i,!1,!0);break;case"instanced_mesh":c=instancedMeshToMeshData(i,!1,!1,5);break;case"mesh_perm3":c=simpleMeshToMeshData(i,!0,!0);break;case"mesh_perm":c=simpleMeshToMeshData(i,!0);break;case"mesh":c=simpleMeshToMeshData(i);break;case"lit_lines_mesh":c=simpleMeshToLineMeshData(i,!0);break;case"lines_mesh":c=simpleMeshToLineMeshData(i,!1);break;case"float_array":c=floatArrayToJSArray(i);break;case"int_array":c=intArrayToJSArray(i);break;case"auto_read_mtz_info_array":c=autoReadMtzInfoVectToJSArray(i);break;case"map_molecule_centre_info_t":c=mapMoleculeCentreInfoToJSObject(i);break;case"string_array":c=stringArrayToJSArray(i);break;case"residue_specs":c=residueSpecToJSArray(i);break;case"atom_specs":c=atomSpecToJSArray(i);break;case"ramachandran_data":c=ramachandranDataToJSArray(i,e.chainID);break;case"validation_data":c=validationDataToJSArray(i,e.chainID);break;case"interesting_places_data":c=interestingPlaceDataToJSArray(i);break;case"superpose_results":c=SuperposeResultsToJSArray(i);break;case"generic_3d_lines_bonds_box":c=linesBoxToJSArray(i);break;case"vector_hbond":c=vectorHBondToJSArray(i);break;case"status_instanced_mesh_pair":c={status:i.first,mesh:instancedMeshToMeshData(i.second,!1,!1,5)};break;case"string_string_pair_vector":c=stringPairVectorToJSArray(i);break;case"void":c=null;break;case"vector_pair_clipper_coord_float":c=vectorPairClipperCoordFloatToJSArray(i);break;case"vector_pair_string_int":c=vectorPairStringIntToJSArray(i);break;case"privateer_results":c=privateerValidationToJSArray(i);break;default:c=i}try{i.delete()}catch(e){}return{messageId:o,messageSendTime:Date.now(),command:a,consoleMessage:"Completed ".concat(a," in ").concat(Date.now()-s," ms"),result:{status:"Completed",result:c}}}catch(e){return console.log(e),{messageId:o,myTimeStamp:s,message:n,consoleMessage:"EXCEPTION RAISED IN ".concat(a,", ").concat(e),result:{status:"Exception"}}}};onmessage=function(e){if("CootInitialize"===e.data.message)createRSRModule({onRuntimeInitialized:function(){},mainScriptUrlOrBlob:"moorhen.js",print,printErr:print}).then((function(r){postMessage({consoleMessage:"Initialized molecules_container",message:e.data.message,messageId:e.data.messageId}),(molecules_container=new(cootModule=r).molecules_container_js(!1)).set_use_gemmi(!1),molecules_container.set_show_timings(!1),molecules_container.set_refinement_is_verbose(!1),molecules_container.fill_rotamer_probability_tables(),molecules_container.set_map_sampling_rate(1.7),molecules_container.set_map_is_contoured_with_thread_pool(!0),molecules_container.set_max_number_of_threads(3),cootModule.FS.mkdir("COOT_BACKUP")})).catch((function(e){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 r=cootModule.FS.readFile(e.data.fileName,{encoding:"binary"});postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Fetched mtz data for map ".concat(e.data.molNo),message:e.data.message,result:{molNo:e.data.molNo,mtzData:r}})}else if("get_map"===e.data.message){var a=guid(),t="./".concat(a,".map");molecules_container.writeCCP4Map(e.data.molNo,t);var o=cootModule.FS.readFile(t,{encoding:"binary"});cootModule.FS_unlink(t),postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Fetched map of map ".concat(e.data.molNo),message:e.data.message,result:{molNo:e.data.molNo,mapData:o.buffer}})}else if("delete_file_name"===e.data.message){var s=cootModule.FS_unlink(e.data.fileName);postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,messageTag:"result",result:s})}else if("coot_command_list"===e.data.message){var n=e.data.commandList.map((function(r){return doCootCommand(__assign(__assign({},e.data),r))}));postMessage({messageId:e.data.messageId,resultList:n})}"coot_command"===e.data.message&&(s=doCootCommand(e.data),postMessage(s))};
|
package/baby-gru/CootWorker.ts
CHANGED
|
@@ -3,9 +3,9 @@ import { emscriptem } from "../../src/types/emscriptem"
|
|
|
3
3
|
import { privateer } from "../../src/types/privateer";
|
|
4
4
|
|
|
5
5
|
// @ts-ignore
|
|
6
|
-
importScripts('./
|
|
6
|
+
importScripts('./moorhen.js')
|
|
7
7
|
// @ts-ignore
|
|
8
|
-
importScripts('./
|
|
8
|
+
importScripts('./web_example.js')
|
|
9
9
|
|
|
10
10
|
let cootModule: libcootApi.CootModule;
|
|
11
11
|
let molecules_container: libcootApi.MoleculesContainerJS;
|
|
@@ -24,7 +24,24 @@ const guid = () => {
|
|
|
24
24
|
// @ts-ignore
|
|
25
25
|
let print = (stuff) => {
|
|
26
26
|
console.log(stuff)
|
|
27
|
-
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const parseMonLibListCif = (fileContents: string): libcootApi.compoundInfo[] => {
|
|
30
|
+
const table = cootModule.parse_mon_lib_list_cif(fileContents)
|
|
31
|
+
const tableSize = table.size()
|
|
32
|
+
|
|
33
|
+
let result: libcootApi.compoundInfo[] = []
|
|
34
|
+
for (let i = 0; i < tableSize; i++) {
|
|
35
|
+
const compound = table.get(i)
|
|
36
|
+
result.push({
|
|
37
|
+
three_letter_code: compound.three_letter_code,
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
name: compound.name.replaceAll("'", "").toLowerCase()
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
table.delete()
|
|
44
|
+
return result
|
|
28
45
|
}
|
|
29
46
|
|
|
30
47
|
const instancedMeshToMeshData = (instanceMesh: libcootApi.InstancedMeshT, perm: boolean, toSpheres: boolean = false, maxZSize: number = 10000.): libcootApi.InstancedMeshJS => {
|
|
@@ -226,7 +243,7 @@ const instancedMeshToMeshData = (instanceMesh: libcootApi.InstancedMeshT, perm:
|
|
|
226
243
|
}
|
|
227
244
|
}
|
|
228
245
|
|
|
229
|
-
const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean = false): libcootApi.SimpleMeshJS => {
|
|
246
|
+
const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean = false, keepNorm: boolean = false): libcootApi.SimpleMeshJS => {
|
|
230
247
|
|
|
231
248
|
const print_timing = false
|
|
232
249
|
const ts = performance.now()
|
|
@@ -246,7 +263,11 @@ const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean
|
|
|
246
263
|
cootModule.getColoursFromSimpleMesh2(simpleMesh,totCol_C)
|
|
247
264
|
|
|
248
265
|
if (perm){
|
|
249
|
-
|
|
266
|
+
if(keepNorm){
|
|
267
|
+
cootModule.getReversedNormalsFromSimpleMesh3(simpleMesh,totNorm_C)
|
|
268
|
+
} else {
|
|
269
|
+
cootModule.getReversedNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
|
|
270
|
+
}
|
|
250
271
|
cootModule.getPermutedTriangleIndicesFromSimpleMesh2(simpleMesh,totIdxs_C)
|
|
251
272
|
} else {
|
|
252
273
|
cootModule.getNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
|
|
@@ -381,16 +402,14 @@ const mapMoleculeCentreInfoToJSObject = (mapMoleculeCentreInfo: libcootApi.MapMo
|
|
|
381
402
|
|
|
382
403
|
const textureAsFloatsToJSTextureAsFloats = (data:libcootApi.textureAsFloats): libcootApi.textureAsFloatsJS => {
|
|
383
404
|
|
|
384
|
-
|
|
405
|
+
const imageDataVecSize = data.width * data.height
|
|
385
406
|
|
|
386
|
-
|
|
387
|
-
console.log(imageDataVecSize);
|
|
388
|
-
for (let i = 0; i < imageDataVecSize; i++) {
|
|
389
|
-
const texVal = data.image_data.get(i)
|
|
390
|
-
image_data.push(texVal)
|
|
391
|
-
}
|
|
407
|
+
let image_data = new Float32Array(imageDataVecSize)
|
|
392
408
|
|
|
393
|
-
|
|
409
|
+
const t1 = performance.now()
|
|
410
|
+
cootModule.getTextureArray(data,image_data)
|
|
411
|
+
const t2 = performance.now()
|
|
412
|
+
console.log("Time to convert texture array to JS",t2-t1)
|
|
394
413
|
|
|
395
414
|
return {
|
|
396
415
|
width:data.width,
|
|
@@ -445,6 +464,14 @@ const export_map_as_gltf = (imol: number, x: number, y: number, z: number, radiu
|
|
|
445
464
|
return fileContents.buffer
|
|
446
465
|
}
|
|
447
466
|
|
|
467
|
+
const export_molecular_represenation_as_gltf = (imol: number, cid: string, colourScheme: string, style: string) => {
|
|
468
|
+
const fileName = `${guid()}.glb`
|
|
469
|
+
molecules_container.export_molecular_represenation_as_gltf(imol, cid, colourScheme, style, fileName)
|
|
470
|
+
const fileContents = cootModule.FS.readFile(fileName, { encoding: 'binary' }) as Uint8Array
|
|
471
|
+
cootModule.FS_unlink(fileName)
|
|
472
|
+
return fileContents.buffer
|
|
473
|
+
}
|
|
474
|
+
|
|
448
475
|
const export_molecule_as_gltf = (
|
|
449
476
|
imol: number, cid: string, mode: string, isDark: boolean, bondWidth: number,
|
|
450
477
|
atomRadius: number, bondSmoothness: number, drawHydrogens: boolean, drawMissingResidues: boolean
|
|
@@ -863,7 +890,7 @@ const simpleMeshToLineMeshData = (simpleMesh: libcootApi.SimpleMeshT, normalLigh
|
|
|
863
890
|
|
|
864
891
|
}
|
|
865
892
|
|
|
866
|
-
const
|
|
893
|
+
const auto_read_mtz = (mtzData: ArrayBufferLike) => {
|
|
867
894
|
const theGuid = guid()
|
|
868
895
|
const asUint8Array = new Uint8Array(mtzData)
|
|
869
896
|
cootModule.FS_createDataFile(".", `${theGuid}.mtz`, asUint8Array, true, true);
|
|
@@ -950,12 +977,12 @@ const read_ccp4_map = (mapData: ArrayBufferLike, name: string, isDiffMap: boolea
|
|
|
950
977
|
return molNo
|
|
951
978
|
}
|
|
952
979
|
|
|
953
|
-
const setUserDefinedBondColours = (imol: number, colours: { cid: string;
|
|
954
|
-
let colourMap = new cootModule.
|
|
980
|
+
const setUserDefinedBondColours = (imol: number, colours: { cid: string; rgba: [number, number, number, number] }[], applyColourToNonCarbonAtoms: boolean = false) => {
|
|
981
|
+
let colourMap = new cootModule.MapIntFloat4()
|
|
955
982
|
let indexedResiduesVec = new cootModule.VectorStringUInt_pair()
|
|
956
983
|
|
|
957
984
|
colours.forEach((colour, index) => {
|
|
958
|
-
colourMap.set(index + 51, colour.
|
|
985
|
+
colourMap.set(index + 51, colour.rgba)
|
|
959
986
|
const i = { first: colour.cid, second: index + 51 }
|
|
960
987
|
indexedResiduesVec.push_back(i)
|
|
961
988
|
})
|
|
@@ -1010,7 +1037,25 @@ const privateerValidationToJSArray = (results: emscriptem.vector<privateer.Resul
|
|
|
1010
1037
|
|
|
1011
1038
|
results.delete();
|
|
1012
1039
|
return data;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
const headerInfoAsJSObject = (result: libcootApi.headerInfo): libcootApi.headerInfoJS => {
|
|
1043
|
+
|
|
1044
|
+
const authorLines = result.author_lines
|
|
1045
|
+
const author_lines: string[] = stringArrayToJSArray(authorLines)
|
|
1046
|
+
|
|
1047
|
+
const compoundLines = result.compound_lines
|
|
1048
|
+
const compound_lines: string[] = stringArrayToJSArray(compoundLines)
|
|
1013
1049
|
|
|
1050
|
+
const journalLines = result.journal_lines
|
|
1051
|
+
const journal_lines: string[] = stringArrayToJSArray(journalLines)
|
|
1052
|
+
|
|
1053
|
+
return {
|
|
1054
|
+
title: result.title,
|
|
1055
|
+
author_lines,
|
|
1056
|
+
compound_lines,
|
|
1057
|
+
journal_lines
|
|
1058
|
+
}
|
|
1014
1059
|
}
|
|
1015
1060
|
|
|
1016
1061
|
const doCootCommand = (messageData: {
|
|
@@ -1035,8 +1080,8 @@ const doCootCommand = (messageData: {
|
|
|
1035
1080
|
case 'shim_read_mtz':
|
|
1036
1081
|
cootResult = read_mtz(...commandArgs as [ArrayBufferLike, string, { F: string; PHI: string; isDifference: boolean; }])
|
|
1037
1082
|
break
|
|
1038
|
-
case '
|
|
1039
|
-
cootResult =
|
|
1083
|
+
case 'shim_auto_read_mtz':
|
|
1084
|
+
cootResult = auto_read_mtz(...commandArgs as [ArrayBuffer])
|
|
1040
1085
|
break
|
|
1041
1086
|
case 'shim_read_ccp4_map':
|
|
1042
1087
|
cootResult = read_ccp4_map(...commandArgs as [ArrayBuffer, string, boolean])
|
|
@@ -1048,7 +1093,7 @@ const doCootCommand = (messageData: {
|
|
|
1048
1093
|
cootResult = replace_map_by_mtz_from_file(...commandArgs as [number, ArrayBufferLike, { F: string; PHI: string; }])
|
|
1049
1094
|
break
|
|
1050
1095
|
case 'shim_set_bond_colours':
|
|
1051
|
-
cootResult = setUserDefinedBondColours(...commandArgs as [number, { cid: string;
|
|
1096
|
+
cootResult = setUserDefinedBondColours(...commandArgs as [number, { cid: string; rgba: [number, number, number, number] }[], boolean])
|
|
1052
1097
|
break
|
|
1053
1098
|
case 'shim_export_map_as_gltf':
|
|
1054
1099
|
cootResult = export_map_as_gltf(...commandArgs as [number, number, number, number, number, number])
|
|
@@ -1056,6 +1101,12 @@ const doCootCommand = (messageData: {
|
|
|
1056
1101
|
case 'shim_export_molecule_as_gltf':
|
|
1057
1102
|
cootResult = export_molecule_as_gltf(...commandArgs as [number, string, string, boolean, number, number, number, boolean, boolean])
|
|
1058
1103
|
break
|
|
1104
|
+
case 'shim_export_molecular_represenation_as_gltf':
|
|
1105
|
+
cootResult = export_molecular_represenation_as_gltf(...commandArgs as [number, string, string, string])
|
|
1106
|
+
break
|
|
1107
|
+
case "parse_mon_lib_list_cif":
|
|
1108
|
+
cootResult = parseMonLibListCif(...commandArgs as [string])
|
|
1109
|
+
break
|
|
1059
1110
|
default:
|
|
1060
1111
|
cootResult = molecules_container[command](...commandArgs)
|
|
1061
1112
|
break
|
|
@@ -1063,6 +1114,9 @@ const doCootCommand = (messageData: {
|
|
|
1063
1114
|
|
|
1064
1115
|
let returnResult;
|
|
1065
1116
|
switch (returnType) {
|
|
1117
|
+
case 'header_info_t':
|
|
1118
|
+
returnResult = headerInfoAsJSObject(cootResult)
|
|
1119
|
+
break
|
|
1066
1120
|
case 'texture_as_floats_t':
|
|
1067
1121
|
returnResult = textureAsFloatsToJSTextureAsFloats(cootResult)
|
|
1068
1122
|
break;
|
|
@@ -1093,6 +1147,9 @@ const doCootCommand = (messageData: {
|
|
|
1093
1147
|
case 'instanced_mesh':
|
|
1094
1148
|
returnResult = instancedMeshToMeshData(cootResult, false, false, 5)
|
|
1095
1149
|
break;
|
|
1150
|
+
case 'mesh_perm3':
|
|
1151
|
+
returnResult = simpleMeshToMeshData(cootResult, true, true)
|
|
1152
|
+
break;
|
|
1096
1153
|
case 'mesh_perm':
|
|
1097
1154
|
returnResult = simpleMeshToMeshData(cootResult, true)
|
|
1098
1155
|
break;
|
|
@@ -1194,7 +1251,6 @@ const doCootCommand = (messageData: {
|
|
|
1194
1251
|
onmessage = function (e) {
|
|
1195
1252
|
if (e.data.message === 'CootInitialize') {
|
|
1196
1253
|
createRSRModule({
|
|
1197
|
-
locateFile: (file) => `./wasm/${file}`,
|
|
1198
1254
|
onRuntimeInitialized: () => { },
|
|
1199
1255
|
mainScriptUrlOrBlob: "moorhen.js",
|
|
1200
1256
|
print: print,
|
|
@@ -1219,7 +1275,6 @@ onmessage = function (e) {
|
|
|
1219
1275
|
});
|
|
1220
1276
|
|
|
1221
1277
|
createCCP4Module({
|
|
1222
|
-
locateFile: (file) => `./wasm/${file}`,
|
|
1223
1278
|
onRuntimeInitialized: () => { },
|
|
1224
1279
|
mainScriptUrlOrBlob: "web_example.js",
|
|
1225
1280
|
print: print,
|