moorhen 0.9.0 → 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 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
- * emsdk (Steps 1 and 2 below)
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`
@@ -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("./moorhen.js"),importScripts("./web_example.js");var guid=function(){var e=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(a){var r=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===a?r:3&r|8).toString(16)}))},print=function(e){console.log(e),postMessage({consoleMessage:JSON.stringify(e)})},instancedMeshToMeshData=function(e,a,r,t){void 0===r&&(r=!1),void 0===t&&(t=1e4);for(var o=[],s=[],n=[],i=[],c=[],_=[],l=[],u=[],d=[],m=e.geom,p=e.markup,g=m.size(),h=0;h<g;h++){var f=r,v=[],y=[],S=[],b=[],M=[],z=[],x=[],T=m.get(h);"spherical-atoms"===T.name&&(f=!0);for(var A=T.vertices,F=T.triangles,w=F.size(),k=0;k<w;k++){var I=F.get(k).point_id;a?(v.push(I[0]),v.push(I[2]),v.push(I[1])):(v.push(I[0]),v.push(I[1]),v.push(I[2]))}F.delete();for(var J=A.size(),D=0;D<J;D++){var C=A.get(D),N=C.pos;y.push(N[0]),y.push(N[1]),y.push(N[2]);var R=C.normal;S.push(R[0]),S.push(R[1]),S.push(R[2])}A.delete();var P=T.instancing_data_A,E=P.size();if(E>0)for(var U=0;U<E;U++){var L=(q=P.get(U)).position;z.push(L[0]),z.push(L[1]),z.push(L[2]);var O=q.colour;M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var B=q.size;b.push(B[0]),b.push(B[1]),b.push(B[2]),x.push.apply(x,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}P.delete();var j=T.instancing_data_B,V=j.size();if(V>0)for(U=0;U<V;U++){var q;if(!((B=(q=j.get(U)).size)[2]>t)){b.push(B[0]),b.push(B[1]),b.push(B[2]),L=q.position,z.push(L[0]),z.push(L[1]),z.push(L[2]),O=q.colour,M.push(O[0]),M.push(O[1]),M.push(O[2]),M.push(O[3]);var H=q.orientation;x.push(H[0][0]),x.push(H[0][1]),x.push(H[0][2]),x.push(H[0][3]),x.push(H[1][0]),x.push(H[1][1]),x.push(H[1][2]),x.push(H[1][3]),x.push(H[2][0]),x.push(H[2][1]),x.push(H[2][2]),x.push(H[2][3]),x.push(H[3][0]),x.push(H[3][1]),x.push(H[3][2]),x.push(H[3][3])}}j.delete(),n.push(S),s.push(y),o.push(v),i.push(b),_.push(z),l.push(x),c.push(M),u.push(!0),f?d.push("PERFECT_SPHERES"):d.push("TRIANGLES")}m.delete();var K=simpleMeshToMeshData(p);return K.idx_tri.length>0&&K.idx_tri[0].length>0&&K.idx_tri[0][0].length>0?r?{prim_types:[d,K.prim_types[0]],idx_tri:[o,K.idx_tri[0]],vert_tri:[_,K.vert_tri[0]],norm_tri:[n,K.norm_tri[0]],col_tri:[c,K.col_tri[0]],instance_use_colors:[u,null],instance_sizes:[i,null],instance_origins:[_,null],instance_orientations:[l,null]}:{prim_types:[d,K.prim_types[0]],idx_tri:[o,K.idx_tri[0]],vert_tri:[s,K.vert_tri[0]],norm_tri:[n,K.norm_tri[0]],col_tri:[c,K.col_tri[0]],instance_use_colors:[u,null],instance_sizes:[i,null],instance_origins:[_,null],instance_orientations:[l,null]}:{prim_types:[d],idx_tri:[o],vert_tri:[s],norm_tri:[n],col_tri:[c],instance_use_colors:[u],instance_sizes:[i],instance_origins:[_],instance_orientations:[l]}},simpleMeshToMeshData=function(e,a){void 0===a&&(a=!1),performance.now();var r=e.vertices,t=e.triangles,o=r.size(),s=t.size(),n=new Uint32Array(3*s),i=new Float32Array(3*o),c=new Float32Array(3*o),_=new Float32Array(4*o);cootModule.getPositionsFromSimpleMesh2(e,i),cootModule.getColoursFromSimpleMesh2(e,_),a?(cootModule.getReversedNormalsFromSimpleMesh2(e,c),cootModule.getPermutedTriangleIndicesFromSimpleMesh2(e,n)):(cootModule.getNormalsFromSimpleMesh2(e,c),cootModule.getTriangleIndicesFromSimpleMesh2(e,n)),performance.now();var l=i,u=_,d=c,m=n;return r.delete(),t.delete(),{prim_types:[["TRIANGLES"]],idx_tri:[[m]],vert_tri:[[l]],norm_tri:[[d]],col_tri:[[u]]}},SuperposeResultsToJSArray=function(e){for(var a=e.aligned_pairs,r=a.size(),t=[],o=0;o<r;o++){var s=a.get(o),n=s.first,i=n.residue_spec,c=s.second,_=c.residue_spec,l={reference:{chainId:i.chain_id,insCode:i.ins_code,seqNum:i.res_no,restype:"UNK",value:n.function_value,label:n.label},moving:{chainId:_.chain_id,insCode:_.ins_code,seqNum:_.res_no,restype:"UNK",value:c.function_value,label:c.label}};t.push(l)}return a.delete(),{referenceSequence:e.alignment.first,movingSequence:e.alignment.second,supperposeInfo:e.superpose_info,alignedPairsData:t}},colourRulesToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},stringArrayArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){for(var o=e.get(t),s=o.size(),n=[],i=0;i<s;i++){var c=o.get(i);n.push(c)}a.push(n),o.delete()}return e.delete(),a},floatArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},mapMoleculeCentreInfoToJSObject=function(e){var a=e.updated_centre,r={updated_centre:[a.x(),a.y(),a.z()],success:e.success,suggested_radius:e.suggested_radius,suggested_contour_level:e.suggested_contour_level};return a.delete(),r},textureAsFloatsToJSTextureAsFloats=function(e){var a=e.width*e.height,r=new Float32Array(a),t=performance.now();cootModule.getTextureArray(e,r);var o=performance.now();return console.log("Time to convert texture array to JS",o-t),{width:e.width,height:e.height,x_size:e.x_size,y_size:e.y_size,z_position:e.z_position,image_data:r}},fitLigandInfoArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(__assign({},o))}return e.delete(),a},intArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},stringArrayToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push(o)}return e.delete(),a},export_map_as_gltf=function(e,a,r,t,o,s){var n="".concat(guid(),".glb");molecules_container.export_map_molecule_as_gltf(e,a,r,t,o,s,n);var i=cootModule.FS.readFile(n,{encoding:"binary"});return cootModule.FS_unlink(n),i.buffer},export_molecular_represenation_as_gltf=function(e,a,r,t){var o="".concat(guid(),".glb");molecules_container.export_molecular_represenation_as_gltf(e,a,r,t,o);var s=cootModule.FS.readFile(o,{encoding:"binary"});return cootModule.FS_unlink(o),s.buffer},export_molecule_as_gltf=function(e,a,r,t,o,s,n,i,c){var _="".concat(guid(),".glb");molecules_container.export_model_molecule_as_gltf(e,a,r,t,o,s,n,i,c,_);var l=cootModule.FS.readFile(_,{encoding:"binary"});return cootModule.FS_unlink(_),l.buffer},symmetryToJSData=function(e){for(var a=[],r=e.first,t=e.second,o=r.symm_trans,s=o.size(),n=0;n<s;n++){var i=o.get(n),c=i.first,_=i.second,l=t.get(n);a.push({x:c.x(),y:c.y(),z:c.z(),asString:c.symm_as_string,isym:c.isym(),us:_.us,ws:_.ws,vs:_.vs,matrix:l}),c.delete()}return o.delete(),t.delete(),a},mmrrccStatsToJSArray=function(e){var a=function(e){for(var a=[],r=e.keys(),t=r.size(),o=0;o<t;o++){var s=r.get(o),n=e.get(s);a.push({resNum:s.res_no,insCode:s.ins_code,modelNumber:s.model_number,chainId:s.chain_id,n:n.n,correlation:n.correlation()}),n.delete()}return r.delete(),a},r=e.first,t=e.second,o={"All atoms":a(r),"Side-chains":a(t)};return r.delete(),t.delete(),o},atomSpecToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push({chain_id:o.chain_id,res_no:o.res_no,ins_code:o.ins_code,atom_name:o.atom_name,alt_conf:o.alt_conf,int_user_data:o.int_user_data,float_user_data:o.float_user_data,string_user_data:o.string_user_data,model_number:o.model_number})}return e.delete(),a},residueSpecToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push({resNum:o.res_no,insCode:o.ins_code,modelNumber:o.model_number,chainId:o.chain_id,intUserData:o.int_user_data})}return e.delete(),a},stringPairVectorToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push({first:o.first,second:o.second})}return e.delete(),a},validationDataToJSArray=function(e,a){void 0===a&&(a=null);for(var r=[],t=e.cviv,o=t.size(),s=0;s<o;s++){var n=t.get(s);if(null!==a&&n.chain_id!==a);else{for(var i=n.rviv,c=i.size(),_=0;_<c;_++){var l=i.get(_),u=l.residue_spec;r.push({chainId:u.chain_id,insCode:u.ins_code,seqNum:u.res_no,restype:"UNK",value:l.function_value})}i.delete()}}return t.delete(),e.delete(),r},linesBoxToJSArray=function(e){for(var a=[],r=e.line_segments,t=r.size(),o=0;o<t;o++){for(var s=[],n=r.get(o),i=n.size(),c=0;c<i;c++){var _=n.get(c),l=_.getStart(),u=_.getFinish(),d=_.amplitude(),m={x:l.x(),y:l.y(),z:l.z()},p={x:u.x(),y:u.y(),z:u.z()};s.push({start:m,end:p,dist:d}),l.delete(),u.delete(),_.delete()}n.delete(),a.push(s)}return r.delete(),a},vectorHBondToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push({hb_hydrogen:o.hb_hydrogen,donor:o.donor,acceptor:o.acceptor,donor_neigh:o.donor_neigh,acceptor_neigh:o.acceptor_neigh,angle_1:o.angle_1,angle_2:o.angle_2,angle_3:o.angle_3,dist:o.dist,ligand_atom_is_donor:o.ligand_atom_is_donor,hydrogen_is_ligand_atom:o.hydrogen_is_ligand_atom,bond_has_hydrogen_flag:o.bond_has_hydrogen_flag})}return e.delete(),a},interestingPlaceDataToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t),s=o.residue_spec;a.push({intUserData:s.int_user_data,modelNumber:s.model_number,chainId:s.chain_id,insCode:s.ins_code,resNum:s.res_no,featureType:o.feature_type,featureValue:o.feature_value,buttonLabel:o.button_label,badness:o.badness,coordX:o.x,coordY:o.y,coordZ:o.z})}return e.delete(),a},histogramInfoToJSData=function(e){var a=e.counts;return{counts:intArrayToJSArray(a),bin_width:e.bin_width,base:e.base}},autoReadMtzInfoVectToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t);a.push({idx:o.idx,F:o.F,phi:o.phi,w:o.w,weights_used:o.weights_used,Rfree:o.Rfree?o.Rfree.split("/")[3]:"",F_obs:o.F_obs?o.F_obs.split("/")[3]:"",sigF_obs:o.sigF_obs?o.sigF_obs.split("/")[3]:""})}if(e.delete(),a.some((function(e){return-1===e.idx}))){var s=a.find((function(e){return-1===e.idx}));s&&s.F_obs&&s.Rfree&&s.sigF_obs&&a.forEach((function(e){e.F_obs=s.F_obs,e.sigF_obs=s.sigF_obs,e.Rfree=s.Rfree})),a=a.filter((function(e){return-1!==e.idx}))}return a},ramachandranDataToJSArray=function(e,a){for(var r=[],t=e.size(),o=0;o<t;o++){var s=e.get(o),n=s.phi_psi;n.chain_id===a&&r.push({chainId:n.chain_id,insCode:n.ins_code,seqNum:n.residue_number,restype:s.residue_name(),isOutlier:!s.is_allowed_flag,phi:n.phi(),psi:n.psi(),is_pre_pro:"PRO"===s.residue_name()}),s.delete(),n.delete()}return e.delete(),r},vectorPairStringIntToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t),s={residue:o.first,slice:o.second};a.push(s)}return e.delete(),a},vectorPairClipperCoordFloatToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){var o=e.get(t),s=o.second,n=o.first,i={x:n.x(),y:n.y(),z:n.z()};n.delete(),a.push({value:s,coord:i})}return e.delete(),a},simpleMeshToLineMeshData=function(e,a){performance.now();var r=e.vertices,t=e.triangles,o=t.size(),s=r.size(),n=new Uint32Array(6*o),i=new Float32Array(3*s),c=new Float32Array(3*s),_=new Float32Array(4*s);cootModule.getLineIndicesFromSimpleMesh2(e,n),cootModule.getPositionsFromSimpleMesh2(e,i),cootModule.getNormalsFromSimpleMesh2(e,c),cootModule.getColoursFromSimpleMesh2(e,_),performance.now();var l=n,u=i,d=c,m=_;return r.delete(),t.delete(),a?{prim_types:[["NORMALLINES"]],useIndices:[[!0]],idx_tri:[[l]],vert_tri:[[u]],additional_norm_tri:[[d]],norm_tri:[[d]],col_tri:[[m]]}:{prim_types:[["LINES"]],useIndices:[[!0]],idx_tri:[[l]],vert_tri:[[u]],norm_tri:[[d]],col_tri:[[m]]}},auto_read_mtz=function(e){var a=guid(),r=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(a,".mtz"),r,!0,!0);var t="./".concat(a,".mtz"),o=molecules_container.auto_read_mtz(t);return cootModule.FS_unlink(t),o},replace_map_by_mtz_from_file=function(e,a,r){var t=guid(),o="./".concat(t,".mtz"),s=new Uint8Array(a);cootModule.FS_createDataFile(".",o,s,!0,!0);var n=[e,o,r.F,r.PHI,"",!1],i=molecules_container.replace_map_by_mtz_from_file.apply(molecules_container,n);return cootModule.FS_unlink(o),i},new_positions_for_residue_atoms=function(e,a){var r=0,t=new cootModule.Vectormoved_residue_t;return a.forEach((function(e){if(e.length>0){var a=e[0],r=new cootModule.moved_residue_t(a.chain_id,parseInt(a.res_no),"");e.forEach((function(e){var a=new cootModule.moved_atom_t(e.name,e.alt_loc,e.x,e.y,e.z,-1);r.add_atom(a),a.delete()})),t.push_back(r),r.delete()}})),r+=molecules_container.new_positions_for_atoms_in_residues(e,t),t.delete(),r},read_mtz=function(e,a,r){var t=guid(),o=new Uint8Array(e);cootModule.FS_createDataFile(".","".concat(t,".mtz"),o,!0,!0);var s="./".concat(t,".mtz"),n=[s,r.F,r.PHI,"",!1,r.isDifference],i=molecules_container.read_mtz.apply(molecules_container,n);return cootModule.FS_unlink(s),i},associate_data_mtz_file_with_map=function(e,a,r,t,o){var s=new Uint8Array(a.data);cootModule.FS_createDataFile(".","".concat(a.fileName,".mtz"),s,!0,!0);var n="./".concat(a.fileName,".mtz"),i=[e,n,r,t,o];return molecules_container.associate_data_mtz_file_with_map.apply(molecules_container,i),n},read_ccp4_map=function(e,a,r){var t=guid(),o=new Uint8Array(e),s="";a.endsWith(".map.gz")?s="map.gz":a.endsWith(".mrc.gz")&&(s="mrc.gz"),cootModule.FS_createDataFile(".","".concat(t).concat(s),o,!0,!0);var n="./".concat(t).concat(s),i=[n,r],c=-1;try{c=molecules_container.read_ccp4_map.apply(molecules_container,i)}catch(e){console.warn(e)}finally{cootModule.FS_unlink(n)}return c},setUserDefinedBondColours=function(e,a,r){void 0===r&&(r=!1);var t=new cootModule.MapIntFloat3,o=new cootModule.VectorStringUInt_pair;a.forEach((function(e,a){t.set(a+51,e.rgb);var r={first:e.cid,second:a+51};o.push_back(r)})),molecules_container.set_user_defined_bond_colours(e,t),molecules_container.set_user_defined_atom_colour_by_selection(e,o,r),o.delete(),t.delete()},privateerValidationToJSArray=function(e){for(var a=[],r=e.size(),t=0;t<r;t++){for(var o=e.get(t),s=[],n=o.torsions,i=n.size(),c=0;c<i;c++)s.push(n.get(c));n.delete();var _={torsions:s,svg:o.svg.replace(/: *32/g,""),id:o.id.replace(/: *32/g,""),chain:o.chain,wurcs:o.wurcs,glyconnect_id:o.glyconnect_id,glytoucan_id:o.glytoucan_id,torsion_err:o.torsion_err,anomer_err:o.anomer_err,conformation_err:o.conformation_err,puckering_err:o.puckering_err,chirality_err:o.chirality_err};a.push(_)}return e.delete(),a},doCootCommand=function(e){var a=e.returnType,r=e.command,t=e.commandArgs,o=e.messageId,s=e.myTimeStamp,n=e.message;try{var i=void 0;switch(r){case"shim_new_positions_for_residue_atoms":i=new_positions_for_residue_atoms.apply(void 0,t);break;case"shim_read_mtz":i=read_mtz.apply(void 0,t);break;case"shim_auto_read_mtz":i=auto_read_mtz.apply(void 0,t);break;case"shim_read_ccp4_map":i=read_ccp4_map.apply(void 0,t);break;case"shim_associate_data_mtz_file_with_map":i=associate_data_mtz_file_with_map.apply(void 0,t);break;case"shim_replace_map_by_mtz_from_file":i=replace_map_by_mtz_from_file.apply(void 0,t);break;case"shim_set_bond_colours":i=setUserDefinedBondColours.apply(void 0,t);break;case"shim_export_map_as_gltf":i=export_map_as_gltf.apply(void 0,t);break;case"shim_export_molecule_as_gltf":i=export_molecule_as_gltf.apply(void 0,t);break;case"shim_export_molecular_represenation_as_gltf":i=export_molecular_represenation_as_gltf.apply(void 0,t);break;default:i=molecules_container[r].apply(molecules_container,t)}var c=void 0;switch(a){case"texture_as_floats_t":c=textureAsFloatsToJSTextureAsFloats(i);break;case"fit_ligand_info_array":c=fitLigandInfoArrayToJSArray(i);break;case"string_array_array":c=stringArrayArrayToJSArray(i);break;case"instanced_mesh_perm":c=instancedMeshToMeshData(i,!0);break;case"histogram_info_t":c=histogramInfoToJSData(i);break;case"symmetry":c=symmetryToJSData(i);break;case"mmrrcc_stats":c=mmrrccStatsToJSArray(i);break;case"colour_rules":c=colourRulesToJSArray(i);break;case"instanced_mesh_perfect_spheres":c=instancedMeshToMeshData(i,!1,!0);break;case"instanced_mesh":c=instancedMeshToMeshData(i,!1,!1,5);break;case"mesh_perm":c=simpleMeshToMeshData(i,!0);break;case"mesh":c=simpleMeshToMeshData(i);break;case"lit_lines_mesh":c=simpleMeshToLineMeshData(i,!0);break;case"lines_mesh":c=simpleMeshToLineMeshData(i,!1);break;case"float_array":c=floatArrayToJSArray(i);break;case"int_array":c=intArrayToJSArray(i);break;case"auto_read_mtz_info_array":c=autoReadMtzInfoVectToJSArray(i);break;case"map_molecule_centre_info_t":c=mapMoleculeCentreInfoToJSObject(i);break;case"string_array":c=stringArrayToJSArray(i);break;case"residue_specs":c=residueSpecToJSArray(i);break;case"atom_specs":c=atomSpecToJSArray(i);break;case"ramachandran_data":c=ramachandranDataToJSArray(i,e.chainID);break;case"validation_data":c=validationDataToJSArray(i,e.chainID);break;case"interesting_places_data":c=interestingPlaceDataToJSArray(i);break;case"superpose_results":c=SuperposeResultsToJSArray(i);break;case"generic_3d_lines_bonds_box":c=linesBoxToJSArray(i);break;case"vector_hbond":c=vectorHBondToJSArray(i);break;case"status_instanced_mesh_pair":c={status:i.first,mesh:instancedMeshToMeshData(i.second,!1,!1,5)};break;case"string_string_pair_vector":c=stringPairVectorToJSArray(i);break;case"void":c=null;break;case"vector_pair_clipper_coord_float":c=vectorPairClipperCoordFloatToJSArray(i);break;case"vector_pair_string_int":c=vectorPairStringIntToJSArray(i);break;case"privateer_results":c=privateerValidationToJSArray(i);break;default:c=i}try{i.delete()}catch(e){}return{messageId:o,messageSendTime:Date.now(),command:r,consoleMessage:"Completed ".concat(r," in ").concat(Date.now()-s," ms"),result:{status:"Completed",result:c}}}catch(e){return console.log(e),{messageId:o,myTimeStamp:s,message:n,consoleMessage:"EXCEPTION RAISED IN ".concat(r,", ").concat(e),result:{status:"Exception"}}}};onmessage=function(e){if("CootInitialize"===e.data.message)createRSRModule({onRuntimeInitialized:function(){},mainScriptUrlOrBlob:"moorhen.js",print,printErr:print}).then((function(a){postMessage({consoleMessage:"Initialized molecules_container",message:e.data.message,messageId:e.data.messageId}),(molecules_container=new(cootModule=a).molecules_container_js(!1)).set_use_gemmi(!1),molecules_container.set_show_timings(!1),molecules_container.set_refinement_is_verbose(!1),molecules_container.fill_rotamer_probability_tables(),molecules_container.set_map_sampling_rate(1.7),molecules_container.set_map_is_contoured_with_thread_pool(!0),molecules_container.set_max_number_of_threads(3),cootModule.FS.mkdir("COOT_BACKUP")})).catch((function(e){console.log(e),print(e)})),createCCP4Module({onRuntimeInitialized:function(){},mainScriptUrlOrBlob:"web_example.js",print,printErr:print}).then((function(e){ccp4Module=e})).catch((function(e){console.log(e),print(e)}));else if("close"===e.data.message)null==molecules_container||molecules_container.delete(),postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Closed molecules container",message:e.data.message,result:{}});else if("get_mtz_data"===e.data.message){var a=cootModule.FS.readFile(e.data.fileName,{encoding:"binary"});postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Fetched mtz data for map ".concat(e.data.molNo),message:e.data.message,result:{molNo:e.data.molNo,mtzData:a}})}else if("get_map"===e.data.message){var r=guid(),t="./".concat(r,".map");molecules_container.writeCCP4Map(e.data.molNo,t);var o=cootModule.FS.readFile(t,{encoding:"binary"});cootModule.FS_unlink(t),postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,consoleMessage:"Fetched map of map ".concat(e.data.molNo),message:e.data.message,result:{molNo:e.data.molNo,mapData:o.buffer}})}else if("delete_file_name"===e.data.message){var s=cootModule.FS_unlink(e.data.fileName);postMessage({messageId:e.data.messageId,myTimeStamp:e.data.myTimeStamp,messageTag:"result",result:s})}else if("coot_command_list"===e.data.message){var n=e.data.commandList.map((function(a){return doCootCommand(__assign(__assign({},e.data),a))}));postMessage({messageId:e.data.messageId,resultList:n})}"coot_command"===e.data.message&&(s=doCootCommand(e.data),postMessage(s))};
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))};
@@ -24,7 +24,24 @@ const guid = () => {
24
24
  // @ts-ignore
25
25
  let print = (stuff) => {
26
26
  console.log(stuff)
27
- postMessage({ consoleMessage: JSON.stringify(stuff) })
27
+ }
28
+
29
+ const parseMonLibListCif = (fileContents: string): libcootApi.compoundInfo[] => {
30
+ const table = cootModule.parse_mon_lib_list_cif(fileContents)
31
+ const tableSize = table.size()
32
+
33
+ let result: libcootApi.compoundInfo[] = []
34
+ for (let i = 0; i < tableSize; i++) {
35
+ const compound = table.get(i)
36
+ result.push({
37
+ three_letter_code: compound.three_letter_code,
38
+ // @ts-ignore
39
+ name: compound.name.replaceAll("'", "").toLowerCase()
40
+ })
41
+ }
42
+
43
+ table.delete()
44
+ return result
28
45
  }
29
46
 
30
47
  const instancedMeshToMeshData = (instanceMesh: libcootApi.InstancedMeshT, perm: boolean, toSpheres: boolean = false, maxZSize: number = 10000.): libcootApi.InstancedMeshJS => {
@@ -226,7 +243,7 @@ const instancedMeshToMeshData = (instanceMesh: libcootApi.InstancedMeshT, perm:
226
243
  }
227
244
  }
228
245
 
229
- const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean = false): libcootApi.SimpleMeshJS => {
246
+ const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean = false, keepNorm: boolean = false): libcootApi.SimpleMeshJS => {
230
247
 
231
248
  const print_timing = false
232
249
  const ts = performance.now()
@@ -246,7 +263,11 @@ const simpleMeshToMeshData = (simpleMesh: libcootApi.SimpleMeshT, perm: boolean
246
263
  cootModule.getColoursFromSimpleMesh2(simpleMesh,totCol_C)
247
264
 
248
265
  if (perm){
249
- cootModule.getReversedNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
266
+ if(keepNorm){
267
+ cootModule.getReversedNormalsFromSimpleMesh3(simpleMesh,totNorm_C)
268
+ } else {
269
+ cootModule.getReversedNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
270
+ }
250
271
  cootModule.getPermutedTriangleIndicesFromSimpleMesh2(simpleMesh,totIdxs_C)
251
272
  } else {
252
273
  cootModule.getNormalsFromSimpleMesh2(simpleMesh,totNorm_C)
@@ -956,12 +977,12 @@ const read_ccp4_map = (mapData: ArrayBufferLike, name: string, isDiffMap: boolea
956
977
  return molNo
957
978
  }
958
979
 
959
- const setUserDefinedBondColours = (imol: number, colours: { cid: string; rgb: [number, number, number] }[], applyColourToNonCarbonAtoms: boolean = false) => {
960
- let colourMap = new cootModule.MapIntFloat3()
980
+ const setUserDefinedBondColours = (imol: number, colours: { cid: string; rgba: [number, number, number, number] }[], applyColourToNonCarbonAtoms: boolean = false) => {
981
+ let colourMap = new cootModule.MapIntFloat4()
961
982
  let indexedResiduesVec = new cootModule.VectorStringUInt_pair()
962
983
 
963
984
  colours.forEach((colour, index) => {
964
- colourMap.set(index + 51, colour.rgb)
985
+ colourMap.set(index + 51, colour.rgba)
965
986
  const i = { first: colour.cid, second: index + 51 }
966
987
  indexedResiduesVec.push_back(i)
967
988
  })
@@ -1016,7 +1037,25 @@ const privateerValidationToJSArray = (results: emscriptem.vector<privateer.Resul
1016
1037
 
1017
1038
  results.delete();
1018
1039
  return data;
1040
+ }
1041
+
1042
+ const headerInfoAsJSObject = (result: libcootApi.headerInfo): libcootApi.headerInfoJS => {
1043
+
1044
+ const authorLines = result.author_lines
1045
+ const author_lines: string[] = stringArrayToJSArray(authorLines)
1046
+
1047
+ const compoundLines = result.compound_lines
1048
+ const compound_lines: string[] = stringArrayToJSArray(compoundLines)
1049
+
1050
+ const journalLines = result.journal_lines
1051
+ const journal_lines: string[] = stringArrayToJSArray(journalLines)
1019
1052
 
1053
+ return {
1054
+ title: result.title,
1055
+ author_lines,
1056
+ compound_lines,
1057
+ journal_lines
1058
+ }
1020
1059
  }
1021
1060
 
1022
1061
  const doCootCommand = (messageData: {
@@ -1054,7 +1093,7 @@ const doCootCommand = (messageData: {
1054
1093
  cootResult = replace_map_by_mtz_from_file(...commandArgs as [number, ArrayBufferLike, { F: string; PHI: string; }])
1055
1094
  break
1056
1095
  case 'shim_set_bond_colours':
1057
- cootResult = setUserDefinedBondColours(...commandArgs as [number, { cid: string; rgb: [number, number, number] }[], boolean])
1096
+ cootResult = setUserDefinedBondColours(...commandArgs as [number, { cid: string; rgba: [number, number, number, number] }[], boolean])
1058
1097
  break
1059
1098
  case 'shim_export_map_as_gltf':
1060
1099
  cootResult = export_map_as_gltf(...commandArgs as [number, number, number, number, number, number])
@@ -1065,6 +1104,9 @@ const doCootCommand = (messageData: {
1065
1104
  case 'shim_export_molecular_represenation_as_gltf':
1066
1105
  cootResult = export_molecular_represenation_as_gltf(...commandArgs as [number, string, string, string])
1067
1106
  break
1107
+ case "parse_mon_lib_list_cif":
1108
+ cootResult = parseMonLibListCif(...commandArgs as [string])
1109
+ break
1068
1110
  default:
1069
1111
  cootResult = molecules_container[command](...commandArgs)
1070
1112
  break
@@ -1072,6 +1114,9 @@ const doCootCommand = (messageData: {
1072
1114
 
1073
1115
  let returnResult;
1074
1116
  switch (returnType) {
1117
+ case 'header_info_t':
1118
+ returnResult = headerInfoAsJSObject(cootResult)
1119
+ break
1075
1120
  case 'texture_as_floats_t':
1076
1121
  returnResult = textureAsFloatsToJSTextureAsFloats(cootResult)
1077
1122
  break;
@@ -1102,6 +1147,9 @@ const doCootCommand = (messageData: {
1102
1147
  case 'instanced_mesh':
1103
1148
  returnResult = instancedMeshToMeshData(cootResult, false, false, 5)
1104
1149
  break;
1150
+ case 'mesh_perm3':
1151
+ returnResult = simpleMeshToMeshData(cootResult, true, true)
1152
+ break;
1105
1153
  case 'mesh_perm':
1106
1154
  returnResult = simpleMeshToMeshData(cootResult, true)
1107
1155
  break;
@@ -7,34 +7,36 @@ _chem_comp.group
7
7
  _chem_comp.number_atoms_all
8
8
  _chem_comp.number_atoms_nh
9
9
  _chem_comp.desc_level
10
- PRO PRO PROLINE P-peptide 16 8 .
10
+ PRO PRO PROLINE P-peptide 17 8 .
11
11
 
12
12
  data_comp_PRO
13
13
  loop_
14
14
  _chem_comp_atom.comp_id
15
15
  _chem_comp_atom.atom_id
16
+ _chem_comp_atom.alt_atom_id
16
17
  _chem_comp_atom.type_symbol
17
18
  _chem_comp_atom.type_energy
18
19
  _chem_comp_atom.charge
19
20
  _chem_comp_atom.x
20
21
  _chem_comp_atom.y
21
22
  _chem_comp_atom.z
22
- PRO N N NR15 0 39.037 37.549 83.040
23
- PRO CA C CH1 0 38.574 38.605 82.148
24
- PRO C C C 0 37.249 39.192 82.624
25
- PRO O O O 0 36.298 38.401 82.791
26
- PRO CB C CH2 0 38.459 37.920 80.773
27
- PRO CG C CH2 0 38.237 36.468 81.113
28
- PRO CD C CH2 0 39.066 36.257 82.367
29
- PRO OXT O OC -1 37.210 40.425 82.814
30
- PRO H H H 0 39.264 37.676 83.860
31
- PRO HA H H 0 39.261 39.316 82.107
32
- PRO HB3 H H 0 39.287 38.037 80.252
33
- PRO HB2 H H 0 37.701 38.283 80.256
34
- PRO HG3 H H 0 38.544 35.886 80.387
35
- PRO HG2 H H 0 37.289 36.288 81.286
36
- PRO HD3 H H 0 38.673 35.556 82.933
37
- PRO HD2 H H 0 39.987 36.001 82.137
23
+ PRO N N N NT2 1 39.160 37.649 83.026
24
+ PRO CA CA C CH1 0 38.550 38.680 82.125
25
+ PRO C C C C 0 37.155 39.077 82.602
26
+ PRO O O O O 0 36.450 38.196 83.146
27
+ PRO CB CB C CH2 0 38.553 38.007 80.756
28
+ PRO CG CG C CH2 0 38.265 36.558 81.098
29
+ PRO CD CD C CH2 0 38.934 36.298 82.416
30
+ PRO OXT OXT O OC -1 36.821 40.268 82.409
31
+ PRO H H H H 0 40.054 37.806 83.097
32
+ PRO H2 H2 H H 0 38.800 37.681 83.862
33
+ PRO HA HA H H 0 39.125 39.473 82.102
34
+ PRO HB3 HB3 H H 0 39.422 38.100 80.320
35
+ PRO HB2 HB2 H H 0 37.858 38.378 80.178
36
+ PRO HG3 HG3 H H 0 38.625 35.964 80.410
37
+ PRO HG2 HG2 H H 0 37.302 36.406 81.169
38
+ PRO HD3 HD3 H H 0 38.363 35.755 82.994
39
+ PRO HD2 HD2 H H 0 39.785 35.835 82.289
38
40
 
39
41
  loop_
40
42
  _chem_comp_tree.comp_id
@@ -42,38 +44,40 @@ _chem_comp_tree.atom_id
42
44
  _chem_comp_tree.atom_back
43
45
  _chem_comp_tree.atom_forward
44
46
  _chem_comp_tree.connect_type
45
- PRO N n/a CA START
46
- PRO CA N C .
47
- PRO HA CA . .
48
- PRO CB CA CG .
49
- PRO HB3 CB . .
50
- PRO HB2 CB . .
51
- PRO CG CB CD .
52
- PRO HG3 CG . .
53
- PRO HG2 CG . .
54
- PRO CD CG HD2 .
55
- PRO HD3 CD . .
56
- PRO HD2 CD . .
57
- PRO C CA . END
58
- PRO O C . .
59
- PRO OXT C . .
60
- PRO H N . .
61
- PRO CD N . ADD
47
+ PRO N n/a CA START
48
+ PRO CA N C .
49
+ PRO HA CA . .
50
+ PRO CB CA CG .
51
+ PRO HB3 CB . .
52
+ PRO HB2 CB . .
53
+ PRO CG CB CD .
54
+ PRO HG3 CG . .
55
+ PRO HG2 CG . .
56
+ PRO CD CG HD2 .
57
+ PRO HD3 CD . .
58
+ PRO HD2 CD . .
59
+ PRO C CA . END
60
+ PRO O C . .
61
+ PRO OXT C . .
62
+ PRO H N . .
63
+ PRO H2 N . .
64
+ PRO CD N . ADD
62
65
 
63
66
  loop_
64
67
  _chem_comp_acedrg.comp_id
65
68
  _chem_comp_acedrg.atom_id
66
69
  _chem_comp_acedrg.atom_type
67
- PRO N N[5](C[5]C[5]CH)(C[5]C[5]HH)(H){4|H<1>}
68
- PRO CA C[5](C[5]C[5]HH)(N[5]C[5]H)(COO)(H){4|H<1>}
69
- PRO C C(C[5]C[5]N[5]H)(O)2
70
- PRO O O(CC[5]O)
71
- PRO CB C[5](C[5]C[5]HH)(C[5]N[5]CH)(H)2{3|H<1>}
72
- PRO CG C[5](C[5]C[5]HH)(C[5]N[5]HH)(H)2{1|C<3>,2|H<1>}
73
- PRO CD C[5](C[5]C[5]HH)(N[5]C[5]H)(H)2{1|C<3>,3|H<1>}
70
+ PRO N N[5](C[5]C[5]CH)(C[5]C[5]HH)(H)2{4|H<1>}
71
+ PRO CA C[5](C[5]C[5]HH)(N[5]C[5]HH)(COO)(H){4|H<1>}
72
+ PRO C C(C[5]C[5]N[5]H)(O)2
73
+ PRO O O(CC[5]O)
74
+ PRO CB C[5](C[5]C[5]HH)(C[5]N[5]CH)(H)2{4|H<1>}
75
+ PRO CG C[5](C[5]C[5]HH)(C[5]N[5]HH)(H)2{1|C<3>,3|H<1>}
76
+ PRO CD C[5](C[5]C[5]HH)(N[5]C[5]HH)(H)2{1|C<3>,3|H<1>}
74
77
  PRO OXT O(CC[5]O)
75
- PRO H H(N[5]C[5]2)
76
- PRO HA H(C[5]C[5]N[5]C)
78
+ PRO H H(N[5]C[5]2H)
79
+ PRO H2 H(N[5]C[5]2H)
80
+ PRO HA H(C[5]C[5]N[5]C)
77
81
  PRO HB3 H(C[5]C[5]2H)
78
82
  PRO HB2 H(C[5]C[5]2H)
79
83
  PRO HG3 H(C[5]C[5]2H)
@@ -85,28 +89,29 @@ loop_
85
89
  _chem_comp_bond.comp_id
86
90
  _chem_comp_bond.atom_id_1
87
91
  _chem_comp_bond.atom_id_2
88
- _chem_comp_bond.type
89
- _chem_comp_bond.aromatic
92
+ _chem_comp_bond.value_order
93
+ _chem_comp_bond.pdbx_aromatic_flag
90
94
  _chem_comp_bond.value_dist_nucleus
91
95
  _chem_comp_bond.value_dist_nucleus_esd
92
96
  _chem_comp_bond.value_dist
93
97
  _chem_comp_bond.value_dist_esd
94
- PRO N CA SINGLE n 1.457 0.0100 1.457 0.0100
95
- PRO N CD SINGLE n 1.458 0.0200 1.458 0.0200
96
- PRO CA C SINGLE n 1.524 0.0159 1.524 0.0159
97
- PRO CA CB SINGLE n 1.534 0.0192 1.534 0.0192
98
- PRO C O DOUBLE n 1.248 0.0171 1.248 0.0171
99
- PRO C OXT SINGLE n 1.248 0.0171 1.248 0.0171
100
- PRO CB CG SINGLE n 1.509 0.0200 1.509 0.0200
101
- PRO CG CD SINGLE n 1.521 0.0187 1.521 0.0187
102
- PRO N H SINGLE n 1.018 0.0520 0.860 0.0100
103
- PRO CA HA SINGLE n 1.092 0.0100 0.990 0.0200
104
- PRO CB HB3 SINGLE n 1.092 0.0100 0.986 0.0200
105
- PRO CB HB2 SINGLE n 1.092 0.0100 0.986 0.0200
106
- PRO CG HG3 SINGLE n 1.092 0.0100 0.980 0.0127
107
- PRO CG HG2 SINGLE n 1.092 0.0100 0.980 0.0127
108
- PRO CD HD3 SINGLE n 1.092 0.0100 0.983 0.0176
109
- PRO CD HD2 SINGLE n 1.092 0.0100 0.983 0.0176
98
+ PRO N CA SINGLE n 1.496 0.0142 1.496 0.0142
99
+ PRO N CD SINGLE n 1.499 0.0135 1.499 0.0135
100
+ PRO CA C SINGLE n 1.525 0.0103 1.525 0.0103
101
+ PRO CA CB SINGLE n 1.526 0.0157 1.526 0.0157
102
+ PRO C O DOUBLE n 1.252 0.0117 1.252 0.0117
103
+ PRO C OXT SINGLE n 1.252 0.0117 1.252 0.0117
104
+ PRO CB CG SINGLE n 1.516 0.0179 1.516 0.0179
105
+ PRO CG CD SINGLE n 1.497 0.0200 1.497 0.0200
106
+ PRO N H SINGLE n 1.018 0.0520 0.910 0.0200
107
+ PRO N H2 SINGLE n 1.018 0.0520 0.910 0.0200
108
+ PRO CA HA SINGLE n 1.092 0.0100 0.980 0.0200
109
+ PRO CB HB3 SINGLE n 1.092 0.0100 0.977 0.0145
110
+ PRO CB HB2 SINGLE n 1.092 0.0100 0.977 0.0145
111
+ PRO CG HG3 SINGLE n 1.092 0.0100 0.978 0.0181
112
+ PRO CG HG2 SINGLE n 1.092 0.0100 0.978 0.0181
113
+ PRO CD HD3 SINGLE n 1.092 0.0100 0.977 0.0199
114
+ PRO CD HD2 SINGLE n 1.092 0.0100 0.977 0.0199
110
115
 
111
116
  loop_
112
117
  _chem_comp_angle.comp_id
@@ -115,36 +120,39 @@ _chem_comp_angle.atom_id_2
115
120
  _chem_comp_angle.atom_id_3
116
121
  _chem_comp_angle.value_angle
117
122
  _chem_comp_angle.value_angle_esd
118
- PRO CA N CD 110.881 3.00
119
- PRO CA N H 124.203 1.50
120
- PRO CD N H 124.916 3.00
121
- PRO N CA C 111.610 3.00
122
- PRO N CA CB 102.532 3.00
123
- PRO N CA HA 109.054 1.85
124
- PRO C CA CB 112.350 1.50
125
- PRO C CA HA 109.862 1.50
126
- PRO CB CA HA 109.576 1.50
127
- PRO CA C O 117.170 3.00
128
- PRO CA C OXT 117.170 3.00
129
- PRO O C OXT 125.661 1.52
130
- PRO CA CB CG 103.478 1.50
131
- PRO CA CB HB3 110.876 1.50
132
- PRO CA CB HB2 110.876 1.50
133
- PRO CG CB HB3 110.891 1.59
134
- PRO CG CB HB2 110.891 1.59
123
+ PRO CA N CD 107.978 1.50
124
+ PRO CA N H 109.889 3.00
125
+ PRO CA N H2 109.889 3.00
126
+ PRO CD N H 110.257 3.00
127
+ PRO CD N H2 110.257 3.00
128
+ PRO H N H2 108.772 3.00
129
+ PRO N CA C 110.397 1.50
130
+ PRO N CA CB 103.994 1.50
131
+ PRO N CA HA 109.579 1.50
132
+ PRO C CA CB 113.159 3.00
133
+ PRO C CA HA 109.687 1.50
134
+ PRO CB CA HA 109.910 1.89
135
+ PRO CA C O 116.979 3.00
136
+ PRO CA C OXT 116.979 3.00
137
+ PRO O C OXT 126.043 1.52
138
+ PRO CA CB CG 101.701 3.00
139
+ PRO CA CB HB3 110.865 1.50
140
+ PRO CA CB HB2 110.865 1.50
141
+ PRO CG CB HB3 110.891 1.59
142
+ PRO CG CB HB2 110.891 1.59
135
143
  PRO HB3 CB HB2 108.880 2.25
136
- PRO CB CG CD 104.486 3.00
137
- PRO CB CG HG3 110.897 1.50
138
- PRO CB CG HG2 110.897 1.50
139
- PRO CD CG HG3 110.795 1.50
140
- PRO CD CG HG2 110.795 1.50
144
+ PRO CB CG CD 105.541 3.00
145
+ PRO CB CG HG3 110.897 1.50
146
+ PRO CB CG HG2 110.897 1.50
147
+ PRO CD CG HG3 110.621 1.50
148
+ PRO CD CG HG2 110.621 1.50
141
149
  PRO HG3 CG HG2 108.871 1.50
142
- PRO N CD CG 104.878 3.00
143
- PRO N CD HD3 110.854 1.50
144
- PRO N CD HD2 110.854 1.50
145
- PRO CG CD HD3 110.755 1.50
146
- PRO CG CD HD2 110.755 1.50
147
- PRO HD3 CD HD2 108.734 1.82
150
+ PRO N CD CG 104.386 2.30
151
+ PRO N CD HD3 110.569 1.50
152
+ PRO N CD HD2 110.569 1.50
153
+ PRO CG CD HD3 111.131 1.62
154
+ PRO CG CD HD2 111.131 1.62
155
+ PRO HD3 CD HD2 109.116 1.50
148
156
 
149
157
  loop_
150
158
  _chem_comp_tor.comp_id
@@ -156,12 +164,12 @@ _chem_comp_tor.atom_id_4
156
164
  _chem_comp_tor.value_angle
157
165
  _chem_comp_tor.value_angle_esd
158
166
  _chem_comp_tor.period
159
- PRO chi1 N CA CB CG -60.000 10.0 3
160
- PRO chi2 CA CB CG CD 180.000 10.0 3
161
- PRO sp3_sp3_1 CB CA N CD 60.000 10.0 3
162
- PRO sp3_sp3_25 N CD CG CB -60.000 10.0 3
163
- PRO sp3_sp3_34 CG CD N CA 180.000 10.0 3
164
- PRO sp2_sp3_1 O C CA N 0.000 10.0 6
167
+ PRO chi1 N CA CB CG -60.000 10.0 3
168
+ PRO chi2 CA CB CG CD 180.000 10.0 3
169
+ PRO sp3_sp3_1 CB CA N CD 60.000 10.0 3
170
+ PRO sp3_sp3_28 N CD CG CB -60.000 10.0 3
171
+ PRO sp3_sp3_37 CG CD N CA 180.000 10.0 3
172
+ PRO sp2_sp3_1 O C CA N 0.000 10.0 6
165
173
 
166
174
  loop_
167
175
  _chem_comp_chir.comp_id
@@ -172,21 +180,16 @@ _chem_comp_chir.atom_id_2
172
180
  _chem_comp_chir.atom_id_3
173
181
  _chem_comp_chir.volume_sign
174
182
  PRO chir_1 CA N C CB positive
175
- PRO chir_2 N CA CD H both
176
183
 
177
184
  loop_
178
185
  _chem_comp_plane_atom.comp_id
179
186
  _chem_comp_plane_atom.plane_id
180
187
  _chem_comp_plane_atom.atom_id
181
188
  _chem_comp_plane_atom.dist_esd
182
- PRO plan-1 CA 0.020
183
- PRO plan-1 CD 0.020
184
- PRO plan-1 H 0.020
185
- PRO plan-1 N 0.020
186
- PRO plan-2 C 0.020
187
- PRO plan-2 CA 0.020
188
- PRO plan-2 O 0.020
189
- PRO plan-2 OXT 0.020
189
+ PRO plan-1 C 0.020
190
+ PRO plan-1 CA 0.020
191
+ PRO plan-1 O 0.020
192
+ PRO plan-1 OXT 0.020
190
193
 
191
194
  loop_
192
195
  _pdbx_chem_comp_descriptor.comp_id
@@ -194,20 +197,20 @@ _pdbx_chem_comp_descriptor.type
194
197
  _pdbx_chem_comp_descriptor.program
195
198
  _pdbx_chem_comp_descriptor.program_version
196
199
  _pdbx_chem_comp_descriptor.descriptor
197
- PRO SMILES ACDLabs 10.04 O=C(O)C1NCCC1
198
- PRO SMILES_CANONICAL CACTVS 3.341 OC(=O)[C@@H]1CCCN1
199
- PRO SMILES CACTVS 3.341 OC(=O)[CH]1CCCN1
200
- PRO SMILES_CANONICAL "OpenEye OEToolkits" 1.5.0 C1C[C@H](NC1)C(=O)O
201
- PRO SMILES "OpenEye OEToolkits" 1.5.0 C1CC(NC1)C(=O)O
202
- PRO InChI InChI 1.03 InChI=1S/C5H9NO2/c7-5(8)4-2-1-3-6-4/h4,6H,1-3H2,(H,7,8)/t4-/m0/s1
203
- PRO InChIKey InChI 1.03 ONIBWKKTOPOVIA-BYPYZUCNSA-N
200
+ PRO SMILES ACDLabs 10.04 "O=C(O)C1NCCC1"
201
+ PRO SMILES_CANONICAL CACTVS 3.341 "OC(=O)[C@@H]1CCCN1"
202
+ PRO SMILES CACTVS 3.341 "OC(=O)[CH]1CCCN1"
203
+ PRO SMILES_CANONICAL "OpenEye OEToolkits" 1.5.0 "C1C[C@H](NC1)C(=O)O"
204
+ PRO SMILES "OpenEye OEToolkits" 1.5.0 "C1CC(NC1)C(=O)O"
205
+ PRO InChI InChI 1.03 "InChI=1S/C5H9NO2/c7-5(8)4-2-1-3-6-4/h4,6H,1-3H2,(H,7,8)/t4-/m0/s1"
206
+ PRO InChIKey InChI 1.03 ONIBWKKTOPOVIA-BYPYZUCNSA-N
204
207
 
205
208
  loop_
206
209
  _pdbx_chem_comp_description_generator.comp_id
207
210
  _pdbx_chem_comp_description_generator.program_name
208
211
  _pdbx_chem_comp_description_generator.program_version
209
212
  _pdbx_chem_comp_description_generator.descriptor
210
- PRO acedrg 278 "dictionary generator"
211
- PRO acedrg_database 12 "data source"
212
- PRO rdkit 2019.09.1 "Chemoinformatics tool"
213
- PRO refmac5 5.8.0419 "optimization tool"
213
+ PRO acedrg 281 "dictionary generator"
214
+ PRO acedrg_database 12 "data source"
215
+ PRO rdkit 2019.09.1 "Chemoinformatics tool"
216
+ PRO refmac5 5.8.0419 "optimization tool"
@@ -19,30 +19,30 @@ _chem_comp_atom.charge
19
19
  _chem_comp_atom.x
20
20
  _chem_comp_atom.y
21
21
  _chem_comp_atom.z
22
- TYR N N NT3 1 5.363 5.148 15.619
23
- TYR CA C CH1 0 5.352 6.374 16.467
24
- TYR C C C 0 4.808 7.551 15.649
25
- TYR O O O 0 4.011 8.328 16.222
26
- TYR CB C CH2 0 6.754 6.687 17.001
27
- TYR CG C CR6 0 7.337 5.635 17.936
28
- TYR CD1 C CR16 0 7.089 5.671 19.307
29
- TYR CD2 C CR16 0 8.139 4.603 17.449
30
- TYR CE1 C CR16 0 7.618 4.714 20.164
31
- TYR CE2 C CR16 0 8.674 3.642 18.296
32
- TYR CZ C CR6 0 8.413 3.697 19.657
33
- TYR OH O OH1 0 8.936 2.754 20.494
34
- TYR OXT O OC -1 5.198 7.654 14.465
35
- TYR H H H 0 6.035 5.195 15.019
36
- TYR H2 H H 0 4.582 5.061 15.177
37
- TYR H3 H H 0 5.479 4.415 16.133
38
- TYR HA H H 0 4.747 6.216 17.240
39
- TYR HB3 H H 0 6.719 7.546 17.478
40
- TYR HB2 H H 0 7.360 6.798 16.235
41
- TYR HD1 H H 0 6.549 6.359 19.662
42
- TYR HD2 H H 0 8.323 4.557 16.524
43
- TYR HE1 H H 0 7.439 4.755 21.088
44
- TYR HE2 H H 0 9.213 2.952 17.948
45
- TYR HH H H 0 9.793 2.799 20.487
22
+ TYR N N NT3 1 5.311 5.160 15.589
23
+ TYR CA C CH1 0 5.358 6.374 16.456
24
+ TYR C C C 0 4.823 7.578 15.662
25
+ TYR O O O 0 3.988 8.305 16.245
26
+ TYR CB C CH2 0 6.763 6.679 16.994
27
+ TYR CG C CR6 0 7.348 5.630 17.938
28
+ TYR CD1 C CR16 0 7.096 5.672 19.314
29
+ TYR CD2 C CR16 0 8.161 4.597 17.458
30
+ TYR CE1 C CR16 0 7.628 4.720 20.176
31
+ TYR CE2 C CR16 0 8.697 3.641 18.313
32
+ TYR CZ C CR6 0 8.431 3.702 19.674
33
+ TYR OH O OH1 0 8.982 2.738 20.476
34
+ TYR OXT O OC -1 5.248 7.759 14.496
35
+ TYR H H H 0 5.552 4.421 16.046
36
+ TYR H2 H H 0 5.856 5.257 14.876
37
+ TYR H3 H H 0 4.470 5.038 15.288
38
+ TYR HA H H 0 4.756 6.220 17.232
39
+ TYR HB3 H H 0 6.733 7.543 17.464
40
+ TYR HB2 H H 0 7.369 6.788 16.227
41
+ TYR HD1 H H 0 6.552 6.358 19.667
42
+ TYR HD2 H H 0 8.350 4.543 16.534
43
+ TYR HE1 H H 0 7.444 4.765 21.099
44
+ TYR HE2 H H 0 9.240 2.953 17.971
45
+ TYR HH H H 0 8.782 2.828 21.308
46
46
 
47
47
  loop_
48
48
  _chem_comp_tree.comp_id
@@ -205,7 +205,7 @@ TYR CONST_2 CG CD1 CE1 CZ 0.000 0.0 1
205
205
  TYR CONST_3 CZ CE2 CD2 CG 0.000 0.0 1
206
206
  TYR CONST_4 CD1 CE1 CZ CE2 0.000 0.0 1
207
207
  TYR CONST_5 CE1 CZ CE2 CD2 0.000 0.0 1
208
- TYR hh1 CE1 CZ OH HH 90.000 5.0 2
208
+ TYR hh1 CE1 CZ OH HH 0.000 5.0 2
209
209
  TYR sp3_sp3_1 C CA N H 180.000 10.0 3
210
210
  TYR const_21 CE2 CD2 CG CD1 0.000 0.0 1
211
211
  TYR sp2_sp3_1 O C CA N 0.000 10.0 6
@@ -265,3 +265,4 @@ TYR acedrg 278 "dictionary generator"
265
265
  TYR acedrg_database 12 "data source"
266
266
  TYR rdkit 2019.09.1 "Chemoinformatics tool"
267
267
  TYR refmac5 5.8.0419 "optimization tool"
268
+ TYR servalcat 0.4.57 'optimization tool'