diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 00000000..5abdb7a1 --- /dev/null +++ b/.codespellrc @@ -0,0 +1,7 @@ +# Ref: https://github.com/codespell-project/codespell#using-a-config-file +[codespell] +skip = .git,*.svg,package-lock.json,*.css,*.min.*,.codespellrc +check-hidden = true +# ignore all acronyms and camel cased words -- ie words with a capitalized letter +ignore-regex = \b([a-zA-Z]*[A-Z][a-zA-Z]*)\b|^.{500,}$ +ignore-words-list = bu,ot,struc,som,inout,childs diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml new file mode 100644 index 00000000..daa4072c --- /dev/null +++ b/.github/workflows/codespell.yml @@ -0,0 +1,23 @@ +# Codespell configuration is within .codespellrc +--- +name: Codespell + +on: + push: + branches: [master] + pull_request: + branches: [master] + +permissions: + contents: read + +jobs: + codespell: + name: Check for spelling errors + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Codespell + uses: codespell-project/actions-codespell@v2 diff --git a/CHANGELOG.md b/CHANGELOG.md index b5c193ee..464c85ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -107,7 +107,7 @@ [icn3d-3.13.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.13.0.zip) was release on July 21, 2022. In addition to "VAST" alignment, users can also use "TM-align" to align two chains. The feature is available in the menus "File > Align > Multiple Chains" and "File > Realign Selection > by Structure Alignment". -[icn3d-3.12.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.8.zip) was release on July 15, 2022. Expanded Python scripts to download any output in iCn3D; Added a new Node.js script to retrieve all annotations (e.g., SNP, ClinVar, domain, etc) from iCn3D; added an exmaple to add users' own annotation and hide default annotations at https://github.com/ncbi/icn3d/tree/master/example/addAnnoLocal.html. +[icn3d-3.12.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.8.zip) was release on July 15, 2022. Expanded Python scripts to download any output in iCn3D; Added a new Node.js script to retrieve all annotations (e.g., SNP, ClinVar, domain, etc) from iCn3D; added an example to add users' own annotation and hide default annotations at https://github.com/ncbi/icn3d/tree/master/example/addAnnoLocal.html. [icn3d-3.12.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.7.zip) was release on July 7, 2022. Fixed the iCn3D view from VAST search. @@ -137,7 +137,7 @@ [icn3d-3.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.3.zip) was release on April 22, 2022. Added the menu "Style > Nucl. Bases" to display the bases of nucleotides. -[icn3d-3.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.2.zip) was release on April 18, 2022. Added "[comment]" in front of logs to diferentiate from commands in the command window. If "mmdbid" is the input and the parameter "bu" is not defined, set "bu" as 1 (biological unit). +[icn3d-3.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.2.zip) was release on April 18, 2022. Added "[comment]" in front of logs to differentiate from commands in the command window. If "mmdbid" is the input and the parameter "bu" is not defined, set "bu" as 1 (biological unit). [icn3d-3.11.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.1.zip) was release on April 13, 2022. Users can input multiple PDB, MMDB, or AlphaFold IDs with the menu "File > Retrieve by ID > MMDB or AlphaFold IDs". Users can also load multiple PDB files at the same time with the menu "File > Open File > PDB Files (appendable)". The color legend became draggable. @@ -165,7 +165,7 @@ [icn3d-3.7.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.7.0.zip) was release on January 18, 2022. Now users can see the common interactions in several structures when they are aligned and their interactions are shown. iCn3D now shows asymmetric unit instead of biological unit since asymmetric unit contains all chains. Added the menu "File > Search Structure". -[icn3d-3.6.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.1.zip) was release on January 11, 2022. Enabled users to change the color for all lables in the menu "Analysis > Label > Change Label Color". +[icn3d-3.6.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.1.zip) was release on January 11, 2022. Enabled users to change the color for all labels in the menu "Analysis > Label > Change Label Color". [icn3d-3.6.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.0.zip) was release on January 7, 2022. Added some example Python scripts in the directory "icn3dpython" to export secondary structures or PNG images. Changed the background color from "transparent/white" to "black". @@ -191,7 +191,7 @@ [icn3d-3.4.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.5.zip) was release on September 28, 2021. Showed Conserved Domains for all structures in the Sequences & Annotations window. -[icn3d-3.4.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.4.zip) was release on September 16, 2021. Users can load multiple structures by appending PDB files with the menu "File > Open File > PDB File (appendable)" to othe PDB files or other structures, which are retrieved by IDs such as "mmdbid" or "mmmtfid". A new color method "Color > Hydrophobicity > Normalized" was added to show hydrophobicity for any residues with different green color. +[icn3d-3.4.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.4.zip) was release on September 16, 2021. Users can load multiple structures by appending PDB files with the menu "File > Open File > PDB File (appendable)" to other PDB files or other structures, which are retrieved by IDs such as "mmdbid" or "mmmtfid". A new color method "Color > Hydrophobicity > Normalized" was added to show hydrophobicity for any residues with different green color. [icn3d-3.4.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.3.zip) was release on September 10, 2021. Replaced delphi.fcgi with delphi.cgi. @@ -331,7 +331,7 @@ [icn3d-2.11.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.4.zip) was release on January 14, 2020. The compiling tool gulp was upgraded to version 4. -[icn3d-2.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.3.zip) was release on January 7, 2020. A bug was fixed to have predefined sets available for hydrogen bonds/interations. +[icn3d-2.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.3.zip) was release on January 7, 2020. A bug was fixed to have predefined sets available for hydrogen bonds/integrations. [icn3d-2.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.2.zip) was release on December 20, 2019. Added the style Backbone and added 'use strict' to each function. @@ -497,7 +497,7 @@ [icn3d-1.3.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.2.zip) was release on October 18, 2016. The atom specification in "Advanced set selection" was modified to use "$" instead of "#" in front of structure IDs. This modification avoids to the problem of showing multiple "#" in the urls of "Share Link". -[icn3d-1.3.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.1.zip) was release on October 4, 2016. Partial diplay of helices or beta-sheets are enabled. The side chains, if displayed, are connected to C-alphas. +[icn3d-1.3.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.1.zip) was release on October 4, 2016. Partial display of helices or beta-sheets are enabled. The side chains, if displayed, are connected to C-alphas. [icn3d-1.2.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.2.3.zip) was release on September 13, 2016. The MMTF format started to support https. diff --git a/build/icn3d.js b/build/icn3d.js index cb120d8e..292b89da 100644 --- a/build/icn3d.js +++ b/build/icn3d.js @@ -8906,7 +8906,7 @@ var icn3d = (function (exports) { //this.sh = this.icn3dui.htmlCls.setHtmlCls; } - // simpify the calls of the following functions from setHtmlCls + // simplify the calls of the following functions from setHtmlCls getLink(id, text, bSimpleMenu, selType) { let me = this.icn3dui; return me.htmlCls.setHtmlCls.getLink(id, text, bSimpleMenu, selType); } @@ -9336,7 +9336,7 @@ var icn3d = (function (exports) { let bCmdWindow, html = ""; - // check comand window + // check command window let value = me.htmlCls.setHtmlCls.getCookie('cmdwindow'); if(value != '') { bCmdWindow = (bCmdWindowInput !== undefined) ? bCmdWindowInput : parseInt(value); @@ -11708,7 +11708,7 @@ var icn3d = (function (exports) { html += "All chains will be aligned to the first chain in the comma-separated chain IDs. Each chain ID has the form of PDBID_chain (e.g., 1HHO_A, case sensitive) or UniprotID (e.g., P69905 for AlphaFold structures).

"; html += "Chain IDs: " + me.htmlCls.inputTextStr + "id='" + me.pre + "chainalignids2' value='P69905,P01942,1HHO_A' size=50>

"; - html += "The sequence alignment (followed by structure alignemnt) is based on residue numbers in the First/Master chain:
" + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
"; + html += "The sequence alignment (followed by structure alignment) is based on residue numbers in the First/Master chain:
" + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
"; html += me.htmlCls.buttonStr + "reload_chainalign_asym2' style='margin-top:3px;'>Align by Sequence Alignment

"; html += "(Note: To align chains in custom PDB files, you could load them in \"File > Open File > PDB Files (appendable)\" and click \"Analysis > Defined Sets\". Finally select multiple chains in Defined Sets and click \"File > Realign Selection\".)

"; @@ -21125,7 +21125,7 @@ var icn3d = (function (exports) { } ).then( function ( node ) { - // build node hierachy + // build node hierarchy parentObject.add( node ); @@ -23108,7 +23108,7 @@ var icn3d = (function (exports) { config[`btn${i+20}`] = btn; x += ( w + padding ); } - //4rd row + //4th row y += (height + padding); x = padding; for (let i=0; i<5; i++){ @@ -29626,7 +29626,7 @@ var icn3d = (function (exports) { if(fa !== fb && fb !== fc && fa !== fc){ if(this.header.ccp4) { - // only transfered vertices will be used + // only transferred vertices will be used if(vertTrans.hasOwnProperty(vertices[fa].index) && vertTrans.hasOwnProperty(vertices[fb].index) && vertTrans.hasOwnProperty(vertices[fc].index)) { finalfaces.push({"a":fa, "b":fb, "c":fc}); @@ -29820,7 +29820,7 @@ var icn3d = (function (exports) { let r = atom.coord.clone(); if(this.loadPhiFrom != 'delphi') { // transform to the original position if the potential file is imported if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -29895,7 +29895,7 @@ var icn3d = (function (exports) { let r; if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -30190,7 +30190,7 @@ var icn3d = (function (exports) { } } else if(type == 13) { // em - cfg.maxdist = 3; // EM map has no unit cell. It could include more gird space. + cfg.maxdist = 3; // EM map has no unit cell. It could include more grid space. cfg.header = ic.mapData.headerEm; cfg.data = ic.mapData.dataEm; @@ -30929,7 +30929,7 @@ var icn3d = (function (exports) { // show side chains for the selected atoms let atoms = me.hashUtilsCls.intHash(residueAtoms, ic.sidec); - // draw sidec separatedly + // draw sidec separately for(let k in atoms) { ic.atoms[k].style2 = 'stick'; } @@ -31848,7 +31848,7 @@ var icn3d = (function (exports) { // include calphas // atoms = me.hashUtilsCls.unionHash(atoms, calpha_atoms); - // draw sidec separatedly + // draw sidec separately for(let j in atoms) { ic.atoms[j].style2 = style; } @@ -32338,7 +32338,7 @@ var icn3d = (function (exports) { //Remove previously drawn surfaces. removeSurfaces() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevSurfaces.length; i < il; ++i) { ic.mdl.remove(ic.prevSurfaces[i]); } @@ -32347,7 +32347,7 @@ var icn3d = (function (exports) { } removeLastSurface() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevSurfaces.length > 0) { ic.mdl.remove(ic.prevSurfaces[ic.prevSurfaces.length - 1]); ic.prevSurfaces.slice(ic.prevSurfaces.length - 1, 1); @@ -32355,7 +32355,7 @@ var icn3d = (function (exports) { } removeMaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevMaps.length; i < il; ++i) { ic.mdl.remove(ic.prevMaps[i]); } @@ -32364,7 +32364,7 @@ var icn3d = (function (exports) { } removeEmmaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevEmmaps.length; i < il; ++i) { ic.mdl.remove(ic.prevEmmaps[i]); } @@ -32373,7 +32373,7 @@ var icn3d = (function (exports) { } removePhimaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevPhimaps.length; i < il; ++i) { ic.mdl.remove(ic.prevPhimaps[i]); @@ -32383,7 +32383,7 @@ var icn3d = (function (exports) { } removeLastMap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevMaps.length > 0) { ic.mdl.remove(ic.prevMaps[ic.prevMaps.length - 1]); ic.prevMaps.slice(ic.prevMaps.length - 1, 1); @@ -32391,7 +32391,7 @@ var icn3d = (function (exports) { } removeLastEmmap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevEmmaps.length > 0) { ic.mdl.remove(ic.prevEmmaps[ic.prevEmmaps.length - 1]); ic.prevEmmaps.slice(ic.prevEmmaps.length - 1, 1); @@ -32399,7 +32399,7 @@ var icn3d = (function (exports) { } removeLastPhimap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevPhimaps.length > 0) { ic.mdl.remove(ic.prevPhimaps[ic.prevPhimaps.length - 1]); ic.prevPhimaps.slice(ic.prevPhimaps.length - 1, 1); @@ -33981,7 +33981,7 @@ var icn3d = (function (exports) { if (intersects.length>0){ controller.children[0].scale.z = intersects[0].distance; // stop on the object - intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; @@ -34977,7 +34977,7 @@ var icn3d = (function (exports) { // only parallel or perpendicular if(interactionType == 'pi-stacking' && atom1.normal !== undefined && atom2.normal !== undefined) { Math.abs(atom1.normal.dot(atom2.normal)); - // perpendicular 30 degree || parellel, 30 degree + // perpendicular 30 degree || parallel, 30 degree // remove this condition on Nov 19, 2021 //if(dotResult > 0.5 && dotResult < 0.866) continue; } @@ -35354,7 +35354,7 @@ var icn3d = (function (exports) { ic.ring_mark[cur] = cyclenumber; // backtrack the vertex which are - // in the current cycle thats found + // in the current cycle that's found while (cur != u) { cur = ic.ring_par[cur]; ic.ring_mark[cur] = cyclenumber; @@ -35703,7 +35703,7 @@ var icn3d = (function (exports) { ic.style2atoms = {}; for(let i in atoms) { - // do not show water in assemly + // do not show water in assembly //if(ic.bAssembly && ic.water.hasOwnProperty(i)) { // ic.atoms[i].style = 'nothing'; //} @@ -36858,7 +36858,7 @@ var icn3d = (function (exports) { atoms = me.hashUtilsCls.intHash(ic.hAtoms, ic.water); break; } - // draw sidec separatedly + // draw sidec separately if(selectionType === 'sidec' || selectionType === 'ntbase') { for(let i in atoms) { ic.atoms[i].style2 = style; @@ -37571,7 +37571,7 @@ var icn3d = (function (exports) { let domain =(bDomain) ? domainArray[index].title.split(':')[0] : domainArray[index].title; // convert double quote domain = domain.replace(/\"/g, "``"); - // convert singe quote + // convert single quote domain = domain.replace(/'/g, "`"); if(bDomain) acc2domain[acc] = domain; @@ -37590,7 +37590,7 @@ var icn3d = (function (exports) { if(!domainRepeatArray) continue; for(let r = 0, rl = domainRepeatArray.length; r < rl; ++r) { - // each domain repeat or domain may have several segments, i.e., a domain may not be continous + // each domain repeat or domain may have several segments, i.e., a domain may not be continuous let fromArray = [], toArray = []; let resiHash = {}; let resCnt = 0; @@ -38267,7 +38267,7 @@ var icn3d = (function (exports) { html += '
'; html2 += html; html3 += html; - let stucture = chnid.substr(0, chnid.indexOf('_')); + let structure = chnid.substr(0, chnid.indexOf('_')); for(let ptm in ptmHash) { let ptmArray = ptmHash[ptm]; @@ -38279,7 +38279,7 @@ var icn3d = (function (exports) { let end = parseInt(ptmArray[i].end); for(let j = begin; j <= end; ++j) { - if(stucture.length > 5) { // UniProt + if(structure.length > 5) { // UniProt resPosArray.push(j - 1); // 0-based } else { // PDB @@ -39039,7 +39039,7 @@ var icn3d = (function (exports) { snpTitle += pos + c + '>' + resi2snp[i][j]; if(!bSnpOnly) { - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -39119,7 +39119,7 @@ var icn3d = (function (exports) { bCoord = false; } - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -40598,7 +40598,7 @@ var icn3d = (function (exports) { } } - // extract the continguous segments + // extract the contiguous segments let inseg = false; let startseg; //vector segments; @@ -42531,12 +42531,12 @@ var icn3d = (function (exports) { while (i < A.length && j < B.length) { if(A[i] != B[j]) { if(A[i] == '-') { - // inser "-" in B + // insert "-" in B B = B.substr(0, j) + '-' + B.substr(j); seqFirst = seqFirst.substr(0, j) + '-' + seqFirst.substr(j); } else { //if(B[j] == '-') { - // inser "-" in A + // insert "-" in A for(let k = 0; k < ALen; ++k) { trackSeqArray[k] = trackSeqArray[k].substr(0, i) + '-' + trackSeqArray[k].substr(i); } @@ -44555,7 +44555,7 @@ var icn3d = (function (exports) { let firstChar = (refnumLabel) ? refnumLabel.substr(0,1) : ''; if(!bStart && refnumLabel && (firstChar == 'A' || firstChar == 'B')) { // start of a new IG domain bStart = true; - resCnt = 1; // the first oen is included + resCnt = 1; // the first one is included } if(prevStrand.substr(0,1) == 'G' && !refnumLabel) { // indicate the end of an IG domain @@ -46148,14 +46148,14 @@ var icn3d = (function (exports) { //Remove the highlight. The atom selection does not change. removeHlObjects() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects[i]); } ic.prevHighlightObjects = []; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects_ghost) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects_ghost[i]); } @@ -47078,7 +47078,7 @@ var icn3d = (function (exports) { /* } catch(err) { - let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assing reference numbers to avoid overloading the server..."; + let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assign reference numbers to avoid overloading the server..."; if(!me.bNode) { alert(mess); } @@ -50867,7 +50867,7 @@ var icn3d = (function (exports) { thisClass.transformStructure(mmdbid_q, index-1, 'query'); } - // dynamicly align pairs in ic.afChainIndexHash + // dynamically align pairs in ic.afChainIndexHash let ajaxArray = [], indexArray = [], struArray = []; let urlalign = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi"; let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi"; @@ -51095,7 +51095,7 @@ var icn3d = (function (exports) { } // If all chains align to the same target, just check the query. - // If there are different targets, also just check the query. The taget should not appear again in the query. + // If there are different targets, also just check the query. The target should not appear again in the query. alignMMdbids[target] = 1; if(alignMMdbids.hasOwnProperty(query)) continue; @@ -52450,8 +52450,8 @@ var icn3d = (function (exports) { points.push(orth); // get overlap between map and atoms - let positoin = new THREE.Vector3(orth[0], orth[1], orth[2]); - let atomsNear = ic.rayCls.getAtomsFromPosition(positoin, threshold, ic.hAtoms); + let position = new THREE.Vector3(orth[0], orth[1], orth[2]); + let atomsNear = ic.rayCls.getAtomsFromPosition(position, threshold, ic.hAtoms); let map_value = (atomsNear || !bAtoms) ? grid.get_grid_value(i, j, k) : 0; @@ -53180,7 +53180,7 @@ var icn3d = (function (exports) { maxMissingResi = 0; } - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing if(!isNaN(resi) &&(prevMissingChain == '' ||(chain != prevMissingChain) ||(chain == prevMissingChain && resi > maxMissingResi)) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -54592,7 +54592,7 @@ var icn3d = (function (exports) { } // calculate secondary structures if not available - // DSSP only works for structures with all atoms. The Calpha only strucutres didn't work + // DSSP only works for structures with all atoms. The Calpha only structures didn't work //if(!ic.bSecondaryStructure && !bCalphaOnly) { let bCalcSecondary = false; if(ic.bSecondaryStructure && Object.keys(ic.structures).length == 1) { @@ -54681,7 +54681,7 @@ var icn3d = (function (exports) { // get parent CID let urlParent = "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/" + ic.inputid + "/cids/JSONP?cids_type=parent"; - let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parant CID..."); + let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parent CID..."); let cidParent = dataParent.IdentifierList.CID[0]; @@ -57015,7 +57015,7 @@ var icn3d = (function (exports) { resiPos = 0; } - // fixe some missing residue names such as residue 6 in 5C1M_A + // fix some missing residue names such as residue 6 in 5C1M_A if(seqName === '') { seqName = 'x'; } @@ -58563,7 +58563,7 @@ var icn3d = (function (exports) { let chain2 = ic.pdbid_molid2chain[mmdbid2 + '_' + molid2]; let chainid2 = mmdbid2 + '_' + chain2; - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; if(ic.alnChainsAnTtl[chainid1][0] === undefined ) ic.alnChainsAnTtl[chainid1][0] = []; if(ic.alnChainsAnTtl[chainid1][1] === undefined ) ic.alnChainsAnTtl[chainid1][1] = []; @@ -59265,7 +59265,7 @@ var icn3d = (function (exports) { hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp); } - // 3. assign the varaible ic.alnChainsAnno + // 3. assign the variable ic.alnChainsAnno for(let i = 0; i < 3 + 2*n; ++i) { if(ic.alnChainsAnno[chainid1][i] === undefined ) ic.alnChainsAnno[chainid1][i] = []; } @@ -59803,7 +59803,7 @@ var icn3d = (function (exports) { ic.atoms[j].color = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -60141,7 +60141,7 @@ var icn3d = (function (exports) { resObject.resi = resi; resObject.name = me.utilsCls.residueName2Abbr(resn).toLowerCase(); - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing //if(!isNaN(resi) && (prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain && resi > maxMissingResi)) ) { if(prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -61392,7 +61392,7 @@ var icn3d = (function (exports) { } } - // for each curernt nodes, assign its nearest neighbor and the distance + // for each current nodes, assign its nearest neighbor and the distance let mNearestNB = {}, mNearestNBCopy = {}, mNearestNBDist = {}; selI = n; @@ -63746,7 +63746,7 @@ var icn3d = (function (exports) { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); //$("#" + ic.pre + "command_desc").val(""); @@ -63867,7 +63867,7 @@ var icn3d = (function (exports) { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); @@ -65067,7 +65067,7 @@ var icn3d = (function (exports) { ic.hlUpdateCls.updateHlAll(); - // caused some problem witht the following line + // caused some problem with the following line // $.extend(ic.opts, ic.optsHistory[steps - 1]); ic.drawCls.draw(); } @@ -68218,8 +68218,8 @@ var icn3d = (function (exports) { let chainid2 = chainid2Ori; // if one chain, separate it into two chains to show seq alignment if(bOnechain) { - let stucture = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); - chainid2 = stucture + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); + let structure = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); + chainid2 = structure + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); } residuesHash[resObject1.resid] = 1; @@ -68249,7 +68249,7 @@ var icn3d = (function (exports) { ic.atomPrevColors[j] = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -68579,7 +68579,7 @@ var icn3d = (function (exports) { * @param a match score, positive * @param b mismatch score, negative * - * @return sqaure scoring matrix. The last row and column are zero, for + * @return square scoring matrix. The last row and column are zero, for * matching an ambiguous residue. */ bsa_gen_score_matrix(n, a, b) { let ic = this.icn3d; ic.icn3dui; @@ -68625,7 +68625,7 @@ var icn3d = (function (exports) { } /** - * Local or global pairwise alignemnt + * Local or global pairwise alignment * * @param is_local perform local alignment * @param target target string @@ -68749,7 +68749,7 @@ var icn3d = (function (exports) { i, k, start_i = 0; if (is_local) { i = end_i, k = end_j; - if (end_j != qlen - 1) // then add soft cliping + if (end_j != qlen - 1) // then add soft clipping this.push_cigar(cigar, 4, qlen - 1 - end_j); } else i = t.length - 1, k = (i + w + 1 < qlen ? i + w + 1 : qlen) - 1; // (i,k) points to the last cell while (i >= 0 && k >= 0) { @@ -69092,7 +69092,7 @@ var icn3d = (function (exports) { } ic.hlObjectsCls.removeHlObjects(); } - //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labeld + //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labelled //as "N-" and "C-". The termini of nucleotides are labeled as "5'" and "3'". addTerminiLabels(atoms) {var ic = this.icn3d, me = ic.icn3dui; let size = 18; @@ -72514,12 +72514,12 @@ var icn3d = (function (exports) { } //Generate a URL to capture the current state and open it in a new window. Basically the state - //file (the comand history) is concatenated in the URL to show the current state. + //file (the command history) is concatenated in the URL to show the current state. async shareLink(bPngHtml, bPngOnly) { let ic = this.icn3d, me = ic.icn3dui; let url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; - //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime + //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name every time //var inputid =(ic.inputid) ? ic.inputid : "custom"; let inputid = Object.keys(ic.structures).join('_'); @@ -72837,7 +72837,7 @@ var icn3d = (function (exports) { } getPngText() { let ic = this.icn3d; ic.icn3dui; - let url; // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + let url; // output state file if ic.bInputfile is true or the URL is more than 4000 chars let bAllCommands = true; let text = ""; @@ -72868,7 +72868,7 @@ var icn3d = (function (exports) { url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; if(bTooLong) { - url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is more than 4000 chars text += "\nStart of state file======\n"; @@ -72904,7 +72904,7 @@ var icn3d = (function (exports) { ic.dotSphereScale = 0.6; //0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - //ic.cylinderHelixRadius = 1.6; // style sylinder and plate + //ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 1.0; //0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 2.0; //1.3; // style ribbon, stand thickness @@ -72915,7 +72915,7 @@ var icn3d = (function (exports) { //Prepare for 3D printing by changing dashed lines to solid lines, changing the thickness of the model. prepareFor3Dprint( ){ let ic = this.icn3d, me = ic.icn3dui; - // turn off hilight + // turn off highlight ic.bShowHighlight = false; ic.hlObjectsCls.removeHlObjects(); @@ -72972,7 +72972,7 @@ var icn3d = (function (exports) { ic.traceRadius = 0.4; // style c alpha trace, nucleotide stick ic.dotSphereScale = 0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - ic.cylinderHelixRadius = 1.6; // style sylinder and plate + ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 1.3; // style ribbon, nucleotide cartoon, stand thickness @@ -73820,7 +73820,7 @@ var icn3d = (function (exports) { let position = mdl.position; if ( intersects.length > 0 ) { // the intersections are sorted so that the closest point is the first one. - intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; let atom = this.getAtomsFromPosition(intersects[ 0 ].point, threshold); // the second parameter is the distance threshold. The first matched atom will be returned. Use 1 angstrom, not 2 angstrom. If it's 2 angstrom, other atom will be returned. @@ -75088,7 +75088,7 @@ var icn3d = (function (exports) { //This is the sphere radius for the style 'Sphere'. It's 1.5 by default. this.sphereRadius = 1.5; // style sphere //This is the cylinder radius for the style 'Cylinder and Plate'. It's 1.6 by default. - this.cylinderHelixRadius = 1.6; // style sylinder and plate + this.cylinderHelixRadius = 1.6; // style cylinder and plate //This is the ribbon thickness for helix and sheet ribbons, and nucleotide ribbons. It's 0.4 by default. this.ribbonthickness = 0.2; // 0.4; // style ribbon, nucleotide cartoon, stand thickness @@ -75222,7 +75222,7 @@ var icn3d = (function (exports) { // these variables will not be cleared for each structure this.commands = []; // a list of commands, ordered by the operation steps. Each operation will be converted into a command. this command list can be used to go backward and forward. this.optsHistory = []; // a list of options corresponding to this.commands. - this.logs = []; // a list of comands and other logs, ordered by the operation steps. + this.logs = []; // a list of commands and other logs, ordered by the operation steps. //This is a flag to turn off the rendering part if a sequence of commands are executed. It's true by default. this.bRender = true; // a flag to turn off rendering when loading state file @@ -75246,7 +75246,7 @@ var icn3d = (function (exports) { //this.curveWidth = 3; this.threshbox = 180; // maximum possible boxsize, default 180 - this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files wil be output for 3D printing + this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files will be output for 3D printing this.tsHbond = 3.8; this.tsIonic = 6; @@ -75546,7 +75546,7 @@ var icn3d = (function (exports) { this.alnChainsAnTtl = {}; // structure_chain name -> array of annotation title //this.dAtoms = {}; // show selected atoms - //this.hAtoms = {}; // used to change color or dislay type for certain atoms + //this.hAtoms = {}; // used to change color or display type for certain atoms this.pickedAtomList = {}; // used to switch among different highlight levels @@ -75603,7 +75603,7 @@ var icn3d = (function (exports) { this.style2atoms = {}; // style -> atom hash, 13 styles: ribbon, strand, cylinder and plate, nucleotide cartoon, o3 trace, schematic, c alpha trace, b factor tube, lines, stick, ball and stick, sphere, dot, nothing this.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance this.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -75636,7 +75636,7 @@ var icn3d = (function (exports) { ic.setColorCls.setColorByOptions(ic.opts, ic.atoms); ic.dAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // show selected atoms - ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or dislay type for certain atoms + ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or display type for certain atoms ic.prevHighlightObjects = []; ic.prevHighlightObjects_ghost = []; @@ -75649,7 +75649,7 @@ var icn3d = (function (exports) { ic.prevOtherMesh = []; ic.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance ic.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -76252,7 +76252,7 @@ var icn3d = (function (exports) { alert("Density server at EBI has no corresponding EM density map for this structure."); } else if(mapType == 'rcsbEdmaps') { - alert("RCSB server has no corresponding eletron density map for this structure."); + alert("RCSB server has no corresponding electron density map for this structure."); } else { alert("The " + mapType + " file is unavailable..."); diff --git a/build/icn3d.module.js b/build/icn3d.module.js index a7061748..26024a2a 100644 --- a/build/icn3d.module.js +++ b/build/icn3d.module.js @@ -8903,7 +8903,7 @@ class SetMenu { //this.sh = this.icn3dui.htmlCls.setHtmlCls; } - // simpify the calls of the following functions from setHtmlCls + // simplify the calls of the following functions from setHtmlCls getLink(id, text, bSimpleMenu, selType) { let me = this.icn3dui; return me.htmlCls.setHtmlCls.getLink(id, text, bSimpleMenu, selType); } @@ -9333,7 +9333,7 @@ class SetMenu { let bCmdWindow, html = ""; - // check comand window + // check command window let value = me.htmlCls.setHtmlCls.getCookie('cmdwindow'); if(value != '') { bCmdWindow = (bCmdWindowInput !== undefined) ? bCmdWindowInput : parseInt(value); @@ -11705,7 +11705,7 @@ class SetDialog { html += "All chains will be aligned to the first chain in the comma-separated chain IDs. Each chain ID has the form of PDBID_chain (e.g., 1HHO_A, case sensitive) or UniprotID (e.g., P69905 for AlphaFold structures).

"; html += "Chain IDs: " + me.htmlCls.inputTextStr + "id='" + me.pre + "chainalignids2' value='P69905,P01942,1HHO_A' size=50>

"; - html += "The sequence alignment (followed by structure alignemnt) is based on residue numbers in the First/Master chain:
" + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
"; + html += "The sequence alignment (followed by structure alignment) is based on residue numbers in the First/Master chain:
" + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
"; html += me.htmlCls.buttonStr + "reload_chainalign_asym2' style='margin-top:3px;'>Align by Sequence Alignment

"; html += "(Note: To align chains in custom PDB files, you could load them in \"File > Open File > PDB Files (appendable)\" and click \"Analysis > Defined Sets\". Finally select multiple chains in Defined Sets and click \"File > Realign Selection\".)

"; @@ -21122,7 +21122,7 @@ function buildNodeHierarchy( nodeId, parentObject, json, parser ) { } ).then( function ( node ) { - // build node hierachy + // build node hierarchy parentObject.add( node ); @@ -23105,7 +23105,7 @@ class CanvasKeyboard{ config[`btn${i+20}`] = btn; x += ( w + padding ); } - //4rd row + //4th row y += (height + padding); x = padding; for (let i=0; i<5; i++){ @@ -29623,7 +29623,7 @@ ElectronMap.prototype.getFacesAndVertices = function(allatoms, atomlist) { if(fa !== fb && fb !== fc && fa !== fc){ if(this.header.ccp4) { - // only transfered vertices will be used + // only transferred vertices will be used if(vertTrans.hasOwnProperty(vertices[fa].index) && vertTrans.hasOwnProperty(vertices[fb].index) && vertTrans.hasOwnProperty(vertices[fc].index)) { finalfaces.push({"a":fa, "b":fb, "c":fc}); @@ -29817,7 +29817,7 @@ ElectronMap.prototype.fillvoxels = function(atoms, atomlist) { //(int seqinit,in let r = atom.coord.clone(); if(this.loadPhiFrom != 'delphi') { // transform to the original position if the potential file is imported if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -29892,7 +29892,7 @@ ElectronMap.prototype.fillvoxels = function(atoms, atomlist) { //(int seqinit,in let r; if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -30187,7 +30187,7 @@ class Surface { } } else if(type == 13) { // em - cfg.maxdist = 3; // EM map has no unit cell. It could include more gird space. + cfg.maxdist = 3; // EM map has no unit cell. It could include more grid space. cfg.header = ic.mapData.headerEm; cfg.data = ic.mapData.dataEm; @@ -30926,7 +30926,7 @@ class ApplyClbonds { // show side chains for the selected atoms let atoms = me.hashUtilsCls.intHash(residueAtoms, ic.sidec); - // draw sidec separatedly + // draw sidec separately for(let k in atoms) { ic.atoms[k].style2 = 'stick'; } @@ -31845,7 +31845,7 @@ class ApplySsbonds { // include calphas // atoms = me.hashUtilsCls.unionHash(atoms, calpha_atoms); - // draw sidec separatedly + // draw sidec separately for(let j in atoms) { ic.atoms[j].style2 = style; } @@ -32335,7 +32335,7 @@ class ApplyMap { //Remove previously drawn surfaces. removeSurfaces() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevSurfaces.length; i < il; ++i) { ic.mdl.remove(ic.prevSurfaces[i]); } @@ -32344,7 +32344,7 @@ class ApplyMap { } removeLastSurface() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevSurfaces.length > 0) { ic.mdl.remove(ic.prevSurfaces[ic.prevSurfaces.length - 1]); ic.prevSurfaces.slice(ic.prevSurfaces.length - 1, 1); @@ -32352,7 +32352,7 @@ class ApplyMap { } removeMaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevMaps.length; i < il; ++i) { ic.mdl.remove(ic.prevMaps[i]); } @@ -32361,7 +32361,7 @@ class ApplyMap { } removeEmmaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevEmmaps.length; i < il; ++i) { ic.mdl.remove(ic.prevEmmaps[i]); } @@ -32370,7 +32370,7 @@ class ApplyMap { } removePhimaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevPhimaps.length; i < il; ++i) { ic.mdl.remove(ic.prevPhimaps[i]); @@ -32380,7 +32380,7 @@ class ApplyMap { } removeLastMap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevMaps.length > 0) { ic.mdl.remove(ic.prevMaps[ic.prevMaps.length - 1]); ic.prevMaps.slice(ic.prevMaps.length - 1, 1); @@ -32388,7 +32388,7 @@ class ApplyMap { } removeLastEmmap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevEmmaps.length > 0) { ic.mdl.remove(ic.prevEmmaps[ic.prevEmmaps.length - 1]); ic.prevEmmaps.slice(ic.prevEmmaps.length - 1, 1); @@ -32396,7 +32396,7 @@ class ApplyMap { } removeLastPhimap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevPhimaps.length > 0) { ic.mdl.remove(ic.prevPhimaps[ic.prevPhimaps.length - 1]); ic.prevPhimaps.slice(ic.prevPhimaps.length - 1, 1); @@ -33978,7 +33978,7 @@ class Alternate { if (intersects.length>0){ controller.children[0].scale.z = intersects[0].distance; // stop on the object - intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; @@ -34974,7 +34974,7 @@ class PiHalogen { // only parallel or perpendicular if(interactionType == 'pi-stacking' && atom1.normal !== undefined && atom2.normal !== undefined) { Math.abs(atom1.normal.dot(atom2.normal)); - // perpendicular 30 degree || parellel, 30 degree + // perpendicular 30 degree || parallel, 30 degree // remove this condition on Nov 19, 2021 //if(dotResult > 0.5 && dotResult < 0.866) continue; } @@ -35351,7 +35351,7 @@ class PiHalogen { ic.ring_mark[cur] = cyclenumber; // backtrack the vertex which are - // in the current cycle thats found + // in the current cycle that's found while (cur != u) { cur = ic.ring_par[cur]; ic.ring_mark[cur] = cyclenumber; @@ -35700,7 +35700,7 @@ class SetStyle { ic.style2atoms = {}; for(let i in atoms) { - // do not show water in assemly + // do not show water in assembly //if(ic.bAssembly && ic.water.hasOwnProperty(i)) { // ic.atoms[i].style = 'nothing'; //} @@ -36855,7 +36855,7 @@ class SetOption { atoms = me.hashUtilsCls.intHash(ic.hAtoms, ic.water); break; } - // draw sidec separatedly + // draw sidec separately if(selectionType === 'sidec' || selectionType === 'ntbase') { for(let i in atoms) { ic.atoms[i].style2 = style; @@ -37568,7 +37568,7 @@ class AnnoCddSite { let domain =(bDomain) ? domainArray[index].title.split(':')[0] : domainArray[index].title; // convert double quote domain = domain.replace(/\"/g, "``"); - // convert singe quote + // convert single quote domain = domain.replace(/'/g, "`"); if(bDomain) acc2domain[acc] = domain; @@ -37587,7 +37587,7 @@ class AnnoCddSite { if(!domainRepeatArray) continue; for(let r = 0, rl = domainRepeatArray.length; r < rl; ++r) { - // each domain repeat or domain may have several segments, i.e., a domain may not be continous + // each domain repeat or domain may have several segments, i.e., a domain may not be continuous let fromArray = [], toArray = []; let resiHash = {}; let resCnt = 0; @@ -38264,7 +38264,7 @@ class AnnoPTM { html += '
'; html2 += html; html3 += html; - let stucture = chnid.substr(0, chnid.indexOf('_')); + let structure = chnid.substr(0, chnid.indexOf('_')); for(let ptm in ptmHash) { let ptmArray = ptmHash[ptm]; @@ -38276,7 +38276,7 @@ class AnnoPTM { let end = parseInt(ptmArray[i].end); for(let j = begin; j <= end; ++j) { - if(stucture.length > 5) { // UniProt + if(structure.length > 5) { // UniProt resPosArray.push(j - 1); // 0-based } else { // PDB @@ -39036,7 +39036,7 @@ class AnnoSnpClinVar { snpTitle += pos + c + '>' + resi2snp[i][j]; if(!bSnpOnly) { - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -39116,7 +39116,7 @@ class AnnoSnpClinVar { bCoord = false; } - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -40595,7 +40595,7 @@ class Domain3d { } } - // extract the continguous segments + // extract the contiguous segments let inseg = false; let startseg; //vector segments; @@ -42528,12 +42528,12 @@ class AddTrack { while (i < A.length && j < B.length) { if(A[i] != B[j]) { if(A[i] == '-') { - // inser "-" in B + // insert "-" in B B = B.substr(0, j) + '-' + B.substr(j); seqFirst = seqFirst.substr(0, j) + '-' + seqFirst.substr(j); } else { //if(B[j] == '-') { - // inser "-" in A + // insert "-" in A for(let k = 0; k < ALen; ++k) { trackSeqArray[k] = trackSeqArray[k].substr(0, i) + '-' + trackSeqArray[k].substr(i); } @@ -44552,7 +44552,7 @@ class ShowSeq { let firstChar = (refnumLabel) ? refnumLabel.substr(0,1) : ''; if(!bStart && refnumLabel && (firstChar == 'A' || firstChar == 'B')) { // start of a new IG domain bStart = true; - resCnt = 1; // the first oen is included + resCnt = 1; // the first one is included } if(prevStrand.substr(0,1) == 'G' && !refnumLabel) { // indicate the end of an IG domain @@ -46145,14 +46145,14 @@ class HlObjects { //Remove the highlight. The atom selection does not change. removeHlObjects() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects[i]); } ic.prevHighlightObjects = []; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects_ghost) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects_ghost[i]); } @@ -47075,7 +47075,7 @@ class LineGraph { /* } catch(err) { - let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assing reference numbers to avoid overloading the server..."; + let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assign reference numbers to avoid overloading the server..."; if(!me.bNode) { alert(mess); } @@ -50864,7 +50864,7 @@ class ChainalignParser { thisClass.transformStructure(mmdbid_q, index-1, 'query'); } - // dynamicly align pairs in ic.afChainIndexHash + // dynamically align pairs in ic.afChainIndexHash let ajaxArray = [], indexArray = [], struArray = []; let urlalign = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi"; let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi"; @@ -51092,7 +51092,7 @@ class ChainalignParser { } // If all chains align to the same target, just check the query. - // If there are different targets, also just check the query. The taget should not appear again in the query. + // If there are different targets, also just check the query. The target should not appear again in the query. alignMMdbids[target] = 1; if(alignMMdbids.hasOwnProperty(query)) continue; @@ -52447,8 +52447,8 @@ class Ccp4Parser { points.push(orth); // get overlap between map and atoms - let positoin = new THREE.Vector3(orth[0], orth[1], orth[2]); - let atomsNear = ic.rayCls.getAtomsFromPosition(positoin, threshold, ic.hAtoms); + let position = new THREE.Vector3(orth[0], orth[1], orth[2]); + let atomsNear = ic.rayCls.getAtomsFromPosition(position, threshold, ic.hAtoms); let map_value = (atomsNear || !bAtoms) ? grid.get_grid_value(i, j, k) : 0; @@ -53177,7 +53177,7 @@ class MmcifParser { maxMissingResi = 0; } - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing if(!isNaN(resi) &&(prevMissingChain == '' ||(chain != prevMissingChain) ||(chain == prevMissingChain && resi > maxMissingResi)) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -54589,7 +54589,7 @@ class PdbParser { } // calculate secondary structures if not available - // DSSP only works for structures with all atoms. The Calpha only strucutres didn't work + // DSSP only works for structures with all atoms. The Calpha only structures didn't work //if(!ic.bSecondaryStructure && !bCalphaOnly) { let bCalcSecondary = false; if(ic.bSecondaryStructure && Object.keys(ic.structures).length == 1) { @@ -54678,7 +54678,7 @@ class SdfParser { // get parent CID let urlParent = "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/" + ic.inputid + "/cids/JSONP?cids_type=parent"; - let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parant CID..."); + let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parent CID..."); let cidParent = dataParent.IdentifierList.CID[0]; @@ -57012,7 +57012,7 @@ class ParserUtils { resiPos = 0; } - // fixe some missing residue names such as residue 6 in 5C1M_A + // fix some missing residue names such as residue 6 in 5C1M_A if(seqName === '') { seqName = 'x'; } @@ -58560,7 +58560,7 @@ class SetSeqAlign { let chain2 = ic.pdbid_molid2chain[mmdbid2 + '_' + molid2]; let chainid2 = mmdbid2 + '_' + chain2; - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; if(ic.alnChainsAnTtl[chainid1][0] === undefined ) ic.alnChainsAnTtl[chainid1][0] = []; if(ic.alnChainsAnTtl[chainid1][1] === undefined ) ic.alnChainsAnTtl[chainid1][1] = []; @@ -59262,7 +59262,7 @@ class SetSeqAlign { hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp); } - // 3. assign the varaible ic.alnChainsAnno + // 3. assign the variable ic.alnChainsAnno for(let i = 0; i < 3 + 2*n; ++i) { if(ic.alnChainsAnno[chainid1][i] === undefined ) ic.alnChainsAnno[chainid1][i] = []; } @@ -59800,7 +59800,7 @@ class SetSeqAlign { ic.atoms[j].color = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -60138,7 +60138,7 @@ class LoadPDB { resObject.resi = resi; resObject.name = me.utilsCls.residueName2Abbr(resn).toLowerCase(); - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing //if(!isNaN(resi) && (prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain && resi > maxMissingResi)) ) { if(prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -61389,7 +61389,7 @@ class Vastplus { } } - // for each curernt nodes, assign its nearest neighbor and the distance + // for each current nodes, assign its nearest neighbor and the distance let mNearestNB = {}, mNearestNBCopy = {}, mNearestNBDist = {}; selI = n; @@ -63743,7 +63743,7 @@ class DefinedSets { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); //$("#" + ic.pre + "command_desc").val(""); @@ -63864,7 +63864,7 @@ class DefinedSets { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); @@ -65064,7 +65064,7 @@ class LoadScript { ic.hlUpdateCls.updateHlAll(); - // caused some problem witht the following line + // caused some problem with the following line // $.extend(ic.opts, ic.optsHistory[steps - 1]); ic.drawCls.draw(); } @@ -68215,8 +68215,8 @@ class Symd { let chainid2 = chainid2Ori; // if one chain, separate it into two chains to show seq alignment if(bOnechain) { - let stucture = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); - chainid2 = stucture + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); + let structure = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); + chainid2 = structure + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); } residuesHash[resObject1.resid] = 1; @@ -68246,7 +68246,7 @@ class Symd { ic.atomPrevColors[j] = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -68576,7 +68576,7 @@ class AlignSW { * @param a match score, positive * @param b mismatch score, negative * - * @return sqaure scoring matrix. The last row and column are zero, for + * @return square scoring matrix. The last row and column are zero, for * matching an ambiguous residue. */ bsa_gen_score_matrix(n, a, b) { let ic = this.icn3d; ic.icn3dui; @@ -68622,7 +68622,7 @@ class AlignSW { } /** - * Local or global pairwise alignemnt + * Local or global pairwise alignment * * @param is_local perform local alignment * @param target target string @@ -68746,7 +68746,7 @@ class AlignSW { i, k, start_i = 0; if (is_local) { i = end_i, k = end_j; - if (end_j != qlen - 1) // then add soft cliping + if (end_j != qlen - 1) // then add soft clipping this.push_cigar(cigar, 4, qlen - 1 - end_j); } else i = t.length - 1, k = (i + w + 1 < qlen ? i + w + 1 : qlen) - 1; // (i,k) points to the last cell while (i >= 0 && k >= 0) { @@ -69089,7 +69089,7 @@ class Analysis { } ic.hlObjectsCls.removeHlObjects(); } - //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labeld + //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labelled //as "N-" and "C-". The termini of nucleotides are labeled as "5'" and "3'". addTerminiLabels(atoms) {var ic = this.icn3d, me = ic.icn3dui; let size = 18; @@ -72511,12 +72511,12 @@ class ShareLink { } //Generate a URL to capture the current state and open it in a new window. Basically the state - //file (the comand history) is concatenated in the URL to show the current state. + //file (the command history) is concatenated in the URL to show the current state. async shareLink(bPngHtml, bPngOnly) { let ic = this.icn3d, me = ic.icn3dui; let url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; - //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime + //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name every time //var inputid =(ic.inputid) ? ic.inputid : "custom"; let inputid = Object.keys(ic.structures).join('_'); @@ -72834,7 +72834,7 @@ class ShareLink { } getPngText() { let ic = this.icn3d; ic.icn3dui; - let url; // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + let url; // output state file if ic.bInputfile is true or the URL is more than 4000 chars let bAllCommands = true; let text = ""; @@ -72865,7 +72865,7 @@ class ShareLink { url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; if(bTooLong) { - url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is more than 4000 chars text += "\nStart of state file======\n"; @@ -72901,7 +72901,7 @@ class ThreeDPrint { ic.dotSphereScale = 0.6; //0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - //ic.cylinderHelixRadius = 1.6; // style sylinder and plate + //ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 1.0; //0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 2.0; //1.3; // style ribbon, stand thickness @@ -72912,7 +72912,7 @@ class ThreeDPrint { //Prepare for 3D printing by changing dashed lines to solid lines, changing the thickness of the model. prepareFor3Dprint( ){ let ic = this.icn3d, me = ic.icn3dui; - // turn off hilight + // turn off highlight ic.bShowHighlight = false; ic.hlObjectsCls.removeHlObjects(); @@ -72969,7 +72969,7 @@ class ThreeDPrint { ic.traceRadius = 0.4; // style c alpha trace, nucleotide stick ic.dotSphereScale = 0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - ic.cylinderHelixRadius = 1.6; // style sylinder and plate + ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 1.3; // style ribbon, nucleotide cartoon, stand thickness @@ -73817,7 +73817,7 @@ class Ray { let position = mdl.position; if ( intersects.length > 0 ) { // the intersections are sorted so that the closest point is the first one. - intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; let atom = this.getAtomsFromPosition(intersects[ 0 ].point, threshold); // the second parameter is the distance threshold. The first matched atom will be returned. Use 1 angstrom, not 2 angstrom. If it's 2 angstrom, other atom will be returned. @@ -75085,7 +75085,7 @@ class iCn3D { //This is the sphere radius for the style 'Sphere'. It's 1.5 by default. this.sphereRadius = 1.5; // style sphere //This is the cylinder radius for the style 'Cylinder and Plate'. It's 1.6 by default. - this.cylinderHelixRadius = 1.6; // style sylinder and plate + this.cylinderHelixRadius = 1.6; // style cylinder and plate //This is the ribbon thickness for helix and sheet ribbons, and nucleotide ribbons. It's 0.4 by default. this.ribbonthickness = 0.2; // 0.4; // style ribbon, nucleotide cartoon, stand thickness @@ -75219,7 +75219,7 @@ class iCn3D { // these variables will not be cleared for each structure this.commands = []; // a list of commands, ordered by the operation steps. Each operation will be converted into a command. this command list can be used to go backward and forward. this.optsHistory = []; // a list of options corresponding to this.commands. - this.logs = []; // a list of comands and other logs, ordered by the operation steps. + this.logs = []; // a list of commands and other logs, ordered by the operation steps. //This is a flag to turn off the rendering part if a sequence of commands are executed. It's true by default. this.bRender = true; // a flag to turn off rendering when loading state file @@ -75243,7 +75243,7 @@ class iCn3D { //this.curveWidth = 3; this.threshbox = 180; // maximum possible boxsize, default 180 - this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files wil be output for 3D printing + this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files will be output for 3D printing this.tsHbond = 3.8; this.tsIonic = 6; @@ -75543,7 +75543,7 @@ iCn3D.prototype.init_base = function (bKeepCmd) { this.alnChainsAnTtl = {}; // structure_chain name -> array of annotation title //this.dAtoms = {}; // show selected atoms - //this.hAtoms = {}; // used to change color or dislay type for certain atoms + //this.hAtoms = {}; // used to change color or display type for certain atoms this.pickedAtomList = {}; // used to switch among different highlight levels @@ -75600,7 +75600,7 @@ iCn3D.prototype.init_base = function (bKeepCmd) { this.style2atoms = {}; // style -> atom hash, 13 styles: ribbon, strand, cylinder and plate, nucleotide cartoon, o3 trace, schematic, c alpha trace, b factor tube, lines, stick, ball and stick, sphere, dot, nothing this.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance this.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -75633,7 +75633,7 @@ iCn3D.prototype.reinitAfterLoad = function () { let ic = this, me = ic.icn3dui; ic.setColorCls.setColorByOptions(ic.opts, ic.atoms); ic.dAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // show selected atoms - ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or dislay type for certain atoms + ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or display type for certain atoms ic.prevHighlightObjects = []; ic.prevHighlightObjects_ghost = []; @@ -75646,7 +75646,7 @@ iCn3D.prototype.reinitAfterLoad = function () { let ic = this, me = ic.icn3dui; ic.prevOtherMesh = []; ic.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance ic.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -76249,7 +76249,7 @@ iCn3DUI.prototype.getXMLHttpRqstPromise = function(url, dataType, responseType, alert("Density server at EBI has no corresponding EM density map for this structure."); } else if(mapType == 'rcsbEdmaps') { - alert("RCSB server has no corresponding eletron density map for this structure."); + alert("RCSB server has no corresponding electron density map for this structure."); } else { alert("The " + mapType + " file is unavailable..."); diff --git a/dist/CHANGELOG.md b/dist/CHANGELOG.md index b5c193ee..464c85ea 100644 --- a/dist/CHANGELOG.md +++ b/dist/CHANGELOG.md @@ -107,7 +107,7 @@ [icn3d-3.13.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.13.0.zip) was release on July 21, 2022. In addition to "VAST" alignment, users can also use "TM-align" to align two chains. The feature is available in the menus "File > Align > Multiple Chains" and "File > Realign Selection > by Structure Alignment". -[icn3d-3.12.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.8.zip) was release on July 15, 2022. Expanded Python scripts to download any output in iCn3D; Added a new Node.js script to retrieve all annotations (e.g., SNP, ClinVar, domain, etc) from iCn3D; added an exmaple to add users' own annotation and hide default annotations at https://github.com/ncbi/icn3d/tree/master/example/addAnnoLocal.html. +[icn3d-3.12.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.8.zip) was release on July 15, 2022. Expanded Python scripts to download any output in iCn3D; Added a new Node.js script to retrieve all annotations (e.g., SNP, ClinVar, domain, etc) from iCn3D; added an example to add users' own annotation and hide default annotations at https://github.com/ncbi/icn3d/tree/master/example/addAnnoLocal.html. [icn3d-3.12.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.7.zip) was release on July 7, 2022. Fixed the iCn3D view from VAST search. @@ -137,7 +137,7 @@ [icn3d-3.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.3.zip) was release on April 22, 2022. Added the menu "Style > Nucl. Bases" to display the bases of nucleotides. -[icn3d-3.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.2.zip) was release on April 18, 2022. Added "[comment]" in front of logs to diferentiate from commands in the command window. If "mmdbid" is the input and the parameter "bu" is not defined, set "bu" as 1 (biological unit). +[icn3d-3.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.2.zip) was release on April 18, 2022. Added "[comment]" in front of logs to differentiate from commands in the command window. If "mmdbid" is the input and the parameter "bu" is not defined, set "bu" as 1 (biological unit). [icn3d-3.11.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.1.zip) was release on April 13, 2022. Users can input multiple PDB, MMDB, or AlphaFold IDs with the menu "File > Retrieve by ID > MMDB or AlphaFold IDs". Users can also load multiple PDB files at the same time with the menu "File > Open File > PDB Files (appendable)". The color legend became draggable. @@ -165,7 +165,7 @@ [icn3d-3.7.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.7.0.zip) was release on January 18, 2022. Now users can see the common interactions in several structures when they are aligned and their interactions are shown. iCn3D now shows asymmetric unit instead of biological unit since asymmetric unit contains all chains. Added the menu "File > Search Structure". -[icn3d-3.6.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.1.zip) was release on January 11, 2022. Enabled users to change the color for all lables in the menu "Analysis > Label > Change Label Color". +[icn3d-3.6.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.1.zip) was release on January 11, 2022. Enabled users to change the color for all labels in the menu "Analysis > Label > Change Label Color". [icn3d-3.6.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.0.zip) was release on January 7, 2022. Added some example Python scripts in the directory "icn3dpython" to export secondary structures or PNG images. Changed the background color from "transparent/white" to "black". @@ -191,7 +191,7 @@ [icn3d-3.4.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.5.zip) was release on September 28, 2021. Showed Conserved Domains for all structures in the Sequences & Annotations window. -[icn3d-3.4.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.4.zip) was release on September 16, 2021. Users can load multiple structures by appending PDB files with the menu "File > Open File > PDB File (appendable)" to othe PDB files or other structures, which are retrieved by IDs such as "mmdbid" or "mmmtfid". A new color method "Color > Hydrophobicity > Normalized" was added to show hydrophobicity for any residues with different green color. +[icn3d-3.4.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.4.zip) was release on September 16, 2021. Users can load multiple structures by appending PDB files with the menu "File > Open File > PDB File (appendable)" to other PDB files or other structures, which are retrieved by IDs such as "mmdbid" or "mmmtfid". A new color method "Color > Hydrophobicity > Normalized" was added to show hydrophobicity for any residues with different green color. [icn3d-3.4.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.3.zip) was release on September 10, 2021. Replaced delphi.fcgi with delphi.cgi. @@ -331,7 +331,7 @@ [icn3d-2.11.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.4.zip) was release on January 14, 2020. The compiling tool gulp was upgraded to version 4. -[icn3d-2.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.3.zip) was release on January 7, 2020. A bug was fixed to have predefined sets available for hydrogen bonds/interations. +[icn3d-2.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.3.zip) was release on January 7, 2020. A bug was fixed to have predefined sets available for hydrogen bonds/integrations. [icn3d-2.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.2.zip) was release on December 20, 2019. Added the style Backbone and added 'use strict' to each function. @@ -497,7 +497,7 @@ [icn3d-1.3.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.2.zip) was release on October 18, 2016. The atom specification in "Advanced set selection" was modified to use "$" instead of "#" in front of structure IDs. This modification avoids to the problem of showing multiple "#" in the urls of "Share Link". -[icn3d-1.3.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.1.zip) was release on October 4, 2016. Partial diplay of helices or beta-sheets are enabled. The side chains, if displayed, are connected to C-alphas. +[icn3d-1.3.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.1.zip) was release on October 4, 2016. Partial display of helices or beta-sheets are enabled. The side chains, if displayed, are connected to C-alphas. [icn3d-1.2.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.2.3.zip) was release on September 13, 2016. The MMTF format started to support https. diff --git a/dist/example/addAnnoLocal.html b/dist/example/addAnnoLocal.html index 1131176d..d55681f3 100644 --- a/dist/example/addAnnoLocal.html +++ b/dist/example/addAnnoLocal.html @@ -182,7 +182,7 @@ } var getParams = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = getParams[getParams.length - 1]; var params = {}; var inpara = ""; diff --git a/dist/example/module.html b/dist/example/module.html index b342e17d..f19a29cd 100644 --- a/dist/example/module.html +++ b/dist/example/module.html @@ -171,7 +171,7 @@ } var getParams = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = getParams[getParams.length - 1]; var params = {}; var inpara = ""; diff --git a/dist/full.html b/dist/full.html index 55e70497..177a04b9 100644 --- a/dist/full.html +++ b/dist/full.html @@ -172,7 +172,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/dist/full2.html b/dist/full2.html index 6389d55a..4ff9d944 100644 --- a/dist/full2.html +++ b/dist/full2.html @@ -210,7 +210,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/dist/full2_3.29.4.html b/dist/full2_3.29.4.html index 6389d55a..4ff9d944 100644 --- a/dist/full2_3.29.4.html +++ b/dist/full2_3.29.4.html @@ -210,7 +210,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/dist/full_3.29.4.html b/dist/full_3.29.4.html index 55e70497..177a04b9 100644 --- a/dist/full_3.29.4.html +++ b/dist/full_3.29.4.html @@ -172,7 +172,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/dist/icn3d.html b/dist/icn3d.html index e9a9be04..29a4684d 100644 --- a/dist/icn3d.html +++ b/dist/icn3d.html @@ -218,7 +218,7 @@

What is iCn3D Structure Viewer?

The most important point about using iCn3D is the current selection. Any operations on color, style, etc. are working on the current selection. By default, all atoms are selected. Once you select any subset, your operation will work ONLY on the subset. You can switch the selection using the toggle next to the Help menu.

  • VR and AR views in iCn3D
    -The Virtual Reality (VR) and Augmented Reality (AR) views are shown in this video.
    +The Virtual Reality (VR) and Augmented Reality (AR) views are shown in this video.

    You can open a bowser in your Virtual Reality (VR) headset and view a 3D structure in iCn3D. Then click the button "ENTER VR" at the bottom center of your browser to enter the VR view. You can select residues with the trigger button, open the menu with the squeeze button and click menus with the trigger, navigate with the thumbstick pressed forward/backward and press the trigger. There are menus for Select, Style, Color, and Analysis. You need to make one selection before clicking the Interaction button and make two selections before clicking the Distance button.

    @@ -252,7 +252,7 @@

    What is iCn3D Structure Viewer?


  • Align AlphaFold structures: -You can align AlphaFold structures or PDB structures with the menu "File > Align > Multiple Chains" or "File > Align > Protein Complexes > Two AlphaFold Structures". You can also load any structures as usual, then load your custom PDB file with the menu "File > Open File > PDB File (appendable)", then relaign these structures with the meu "File > Realign Selection > by Structure Alignment".
    +You can align AlphaFold structures or PDB structures with the menu "File > Align > Multiple Chains" or "File > Align > Protein Complexes > Two AlphaFold Structures". You can also load any structures as usual, then load your custom PDB file with the menu "File > Open File > PDB File (appendable)", then relaign these structures with the menu "File > Realign Selection > by Structure Alignment".

  • Alternate SNPs in 3D
    @@ -741,7 +741,7 @@

    Frequently Asked Questionshttps://structure.ncbi.nlm.nih.gov/icn3d and input PDB ID(s) or AlphaFold UniProt ID(s) with the menu "File > Retrieve by ID > MMDB or AlphaFold IDs". You can also open several PDB files with the menu "File > Open File > PDB Files (appendable)".

    - To view 3D structures in Jupyter Notebook, you can follow the instructions at icn3dpy.
    + To view 3D structures in Jupyter Notebook, you can follow the instructions at icn3dpy.

    Virtual Reality (VR) view in iCn3D:
    You need a VR headset to view 3D structures in VR using iCn3D. In your VR browser, load a 3D structure in iCn3D and click the button "ENTER VR" at the bottom center of the page to enter the VR view.
    @@ -2851,7 +2851,7 @@

    Add New Classes
  • Import iCn3D module: "import * as icn3d from './icn3d.module.js';"
  • Import your custom class (e.g., "LoadStateFile"): "import {LoadStateFile} from './loadStateFile.js';"
  • -
  • Remove "$( document ).ready(async function() {" and the coresponding "//});" since module will always be run after the document is ready.
  • +
  • Remove "$( document ).ready(async function() {" and the corresponding "//});" since module will always be run after the document is ready.
  • Call your class after the function "await icn3dui.show3DStructure()". You first define the class instance "loadStateFileCls" and pass the iCn3D instance "icn3dui.icn3d". Then call the functions of your class.
         var loadStateFileCls = new LoadStateFile(icn3dui.icn3d);
    @@ -2990,7 +2990,7 @@ 

    Codeathon/Workshop ContributorsDifferential analysis of residue interactions of a SNP based on side chain prediction:
    Zachery Mielko, Kailash Adhikari, David Bell, Jiyao Wang, Marina Herrera Sarrias, and Ravinder Abrol

  • Visualizing the effect of SNPs extracted from genomic data on protein structure using iCn3D:
    Bonface Onyango, Manoj M Wagle, Michael Sierk, and Pranavathiyani G

  • Standardization of Ig datasets using universal numbering system and auto generating Bridged 1D maps:
    Umesh Khaniya, Chirag Patel, Caesar Tawfeeq, Siddhi Jani, Sujitkumar, Prasanthkumar, and Philippe Youkharibache

  • -
  • ImmunoZoo - Making iCn3D accessble for many audiences:
    Sandra Porter, Todd Smith, Sheela Vemu, Carsten Fortmann-Grote, Yagoub Adam, Shikha Kathrani, and Jack Lin

  • +
  • ImmunoZoo - Making iCn3D accessible for many audiences:
    Sandra Porter, Todd Smith, Sheela Vemu, Carsten Fortmann-Grote, Yagoub Adam, Shikha Kathrani, and Jack Lin

  • Analysis of multiple structures for automatic capture of conformational changes:
    Tom Madej, David Bell, Chase Freschlin, Gabby Vent, and Lianna Khachikyan

  • diff --git a/dist/icn3d.js b/dist/icn3d.js index cb120d8e..292b89da 100644 --- a/dist/icn3d.js +++ b/dist/icn3d.js @@ -8906,7 +8906,7 @@ var icn3d = (function (exports) { //this.sh = this.icn3dui.htmlCls.setHtmlCls; } - // simpify the calls of the following functions from setHtmlCls + // simplify the calls of the following functions from setHtmlCls getLink(id, text, bSimpleMenu, selType) { let me = this.icn3dui; return me.htmlCls.setHtmlCls.getLink(id, text, bSimpleMenu, selType); } @@ -9336,7 +9336,7 @@ var icn3d = (function (exports) { let bCmdWindow, html = ""; - // check comand window + // check command window let value = me.htmlCls.setHtmlCls.getCookie('cmdwindow'); if(value != '') { bCmdWindow = (bCmdWindowInput !== undefined) ? bCmdWindowInput : parseInt(value); @@ -11708,7 +11708,7 @@ var icn3d = (function (exports) { html += "All chains will be aligned to the first chain in the comma-separated chain IDs. Each chain ID has the form of PDBID_chain (e.g., 1HHO_A, case sensitive) or UniprotID (e.g., P69905 for AlphaFold structures).

    "; html += "Chain IDs: " + me.htmlCls.inputTextStr + "id='" + me.pre + "chainalignids2' value='P69905,P01942,1HHO_A' size=50>

    "; - html += "The sequence alignment (followed by structure alignemnt) is based on residue numbers in the First/Master chain:
    " + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
    "; + html += "The sequence alignment (followed by structure alignment) is based on residue numbers in the First/Master chain:
    " + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
    "; html += me.htmlCls.buttonStr + "reload_chainalign_asym2' style='margin-top:3px;'>Align by Sequence Alignment

    "; html += "(Note: To align chains in custom PDB files, you could load them in \"File > Open File > PDB Files (appendable)\" and click \"Analysis > Defined Sets\". Finally select multiple chains in Defined Sets and click \"File > Realign Selection\".)

    "; @@ -21125,7 +21125,7 @@ var icn3d = (function (exports) { } ).then( function ( node ) { - // build node hierachy + // build node hierarchy parentObject.add( node ); @@ -23108,7 +23108,7 @@ var icn3d = (function (exports) { config[`btn${i+20}`] = btn; x += ( w + padding ); } - //4rd row + //4th row y += (height + padding); x = padding; for (let i=0; i<5; i++){ @@ -29626,7 +29626,7 @@ var icn3d = (function (exports) { if(fa !== fb && fb !== fc && fa !== fc){ if(this.header.ccp4) { - // only transfered vertices will be used + // only transferred vertices will be used if(vertTrans.hasOwnProperty(vertices[fa].index) && vertTrans.hasOwnProperty(vertices[fb].index) && vertTrans.hasOwnProperty(vertices[fc].index)) { finalfaces.push({"a":fa, "b":fb, "c":fc}); @@ -29820,7 +29820,7 @@ var icn3d = (function (exports) { let r = atom.coord.clone(); if(this.loadPhiFrom != 'delphi') { // transform to the original position if the potential file is imported if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -29895,7 +29895,7 @@ var icn3d = (function (exports) { let r; if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -30190,7 +30190,7 @@ var icn3d = (function (exports) { } } else if(type == 13) { // em - cfg.maxdist = 3; // EM map has no unit cell. It could include more gird space. + cfg.maxdist = 3; // EM map has no unit cell. It could include more grid space. cfg.header = ic.mapData.headerEm; cfg.data = ic.mapData.dataEm; @@ -30929,7 +30929,7 @@ var icn3d = (function (exports) { // show side chains for the selected atoms let atoms = me.hashUtilsCls.intHash(residueAtoms, ic.sidec); - // draw sidec separatedly + // draw sidec separately for(let k in atoms) { ic.atoms[k].style2 = 'stick'; } @@ -31848,7 +31848,7 @@ var icn3d = (function (exports) { // include calphas // atoms = me.hashUtilsCls.unionHash(atoms, calpha_atoms); - // draw sidec separatedly + // draw sidec separately for(let j in atoms) { ic.atoms[j].style2 = style; } @@ -32338,7 +32338,7 @@ var icn3d = (function (exports) { //Remove previously drawn surfaces. removeSurfaces() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevSurfaces.length; i < il; ++i) { ic.mdl.remove(ic.prevSurfaces[i]); } @@ -32347,7 +32347,7 @@ var icn3d = (function (exports) { } removeLastSurface() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevSurfaces.length > 0) { ic.mdl.remove(ic.prevSurfaces[ic.prevSurfaces.length - 1]); ic.prevSurfaces.slice(ic.prevSurfaces.length - 1, 1); @@ -32355,7 +32355,7 @@ var icn3d = (function (exports) { } removeMaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevMaps.length; i < il; ++i) { ic.mdl.remove(ic.prevMaps[i]); } @@ -32364,7 +32364,7 @@ var icn3d = (function (exports) { } removeEmmaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevEmmaps.length; i < il; ++i) { ic.mdl.remove(ic.prevEmmaps[i]); } @@ -32373,7 +32373,7 @@ var icn3d = (function (exports) { } removePhimaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevPhimaps.length; i < il; ++i) { ic.mdl.remove(ic.prevPhimaps[i]); @@ -32383,7 +32383,7 @@ var icn3d = (function (exports) { } removeLastMap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevMaps.length > 0) { ic.mdl.remove(ic.prevMaps[ic.prevMaps.length - 1]); ic.prevMaps.slice(ic.prevMaps.length - 1, 1); @@ -32391,7 +32391,7 @@ var icn3d = (function (exports) { } removeLastEmmap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevEmmaps.length > 0) { ic.mdl.remove(ic.prevEmmaps[ic.prevEmmaps.length - 1]); ic.prevEmmaps.slice(ic.prevEmmaps.length - 1, 1); @@ -32399,7 +32399,7 @@ var icn3d = (function (exports) { } removeLastPhimap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevPhimaps.length > 0) { ic.mdl.remove(ic.prevPhimaps[ic.prevPhimaps.length - 1]); ic.prevPhimaps.slice(ic.prevPhimaps.length - 1, 1); @@ -33981,7 +33981,7 @@ var icn3d = (function (exports) { if (intersects.length>0){ controller.children[0].scale.z = intersects[0].distance; // stop on the object - intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; @@ -34977,7 +34977,7 @@ var icn3d = (function (exports) { // only parallel or perpendicular if(interactionType == 'pi-stacking' && atom1.normal !== undefined && atom2.normal !== undefined) { Math.abs(atom1.normal.dot(atom2.normal)); - // perpendicular 30 degree || parellel, 30 degree + // perpendicular 30 degree || parallel, 30 degree // remove this condition on Nov 19, 2021 //if(dotResult > 0.5 && dotResult < 0.866) continue; } @@ -35354,7 +35354,7 @@ var icn3d = (function (exports) { ic.ring_mark[cur] = cyclenumber; // backtrack the vertex which are - // in the current cycle thats found + // in the current cycle that's found while (cur != u) { cur = ic.ring_par[cur]; ic.ring_mark[cur] = cyclenumber; @@ -35703,7 +35703,7 @@ var icn3d = (function (exports) { ic.style2atoms = {}; for(let i in atoms) { - // do not show water in assemly + // do not show water in assembly //if(ic.bAssembly && ic.water.hasOwnProperty(i)) { // ic.atoms[i].style = 'nothing'; //} @@ -36858,7 +36858,7 @@ var icn3d = (function (exports) { atoms = me.hashUtilsCls.intHash(ic.hAtoms, ic.water); break; } - // draw sidec separatedly + // draw sidec separately if(selectionType === 'sidec' || selectionType === 'ntbase') { for(let i in atoms) { ic.atoms[i].style2 = style; @@ -37571,7 +37571,7 @@ var icn3d = (function (exports) { let domain =(bDomain) ? domainArray[index].title.split(':')[0] : domainArray[index].title; // convert double quote domain = domain.replace(/\"/g, "``"); - // convert singe quote + // convert single quote domain = domain.replace(/'/g, "`"); if(bDomain) acc2domain[acc] = domain; @@ -37590,7 +37590,7 @@ var icn3d = (function (exports) { if(!domainRepeatArray) continue; for(let r = 0, rl = domainRepeatArray.length; r < rl; ++r) { - // each domain repeat or domain may have several segments, i.e., a domain may not be continous + // each domain repeat or domain may have several segments, i.e., a domain may not be continuous let fromArray = [], toArray = []; let resiHash = {}; let resCnt = 0; @@ -38267,7 +38267,7 @@ var icn3d = (function (exports) { html += '
    '; html2 += html; html3 += html; - let stucture = chnid.substr(0, chnid.indexOf('_')); + let structure = chnid.substr(0, chnid.indexOf('_')); for(let ptm in ptmHash) { let ptmArray = ptmHash[ptm]; @@ -38279,7 +38279,7 @@ var icn3d = (function (exports) { let end = parseInt(ptmArray[i].end); for(let j = begin; j <= end; ++j) { - if(stucture.length > 5) { // UniProt + if(structure.length > 5) { // UniProt resPosArray.push(j - 1); // 0-based } else { // PDB @@ -39039,7 +39039,7 @@ var icn3d = (function (exports) { snpTitle += pos + c + '>' + resi2snp[i][j]; if(!bSnpOnly) { - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -39119,7 +39119,7 @@ var icn3d = (function (exports) { bCoord = false; } - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -40598,7 +40598,7 @@ var icn3d = (function (exports) { } } - // extract the continguous segments + // extract the contiguous segments let inseg = false; let startseg; //vector segments; @@ -42531,12 +42531,12 @@ var icn3d = (function (exports) { while (i < A.length && j < B.length) { if(A[i] != B[j]) { if(A[i] == '-') { - // inser "-" in B + // insert "-" in B B = B.substr(0, j) + '-' + B.substr(j); seqFirst = seqFirst.substr(0, j) + '-' + seqFirst.substr(j); } else { //if(B[j] == '-') { - // inser "-" in A + // insert "-" in A for(let k = 0; k < ALen; ++k) { trackSeqArray[k] = trackSeqArray[k].substr(0, i) + '-' + trackSeqArray[k].substr(i); } @@ -44555,7 +44555,7 @@ var icn3d = (function (exports) { let firstChar = (refnumLabel) ? refnumLabel.substr(0,1) : ''; if(!bStart && refnumLabel && (firstChar == 'A' || firstChar == 'B')) { // start of a new IG domain bStart = true; - resCnt = 1; // the first oen is included + resCnt = 1; // the first one is included } if(prevStrand.substr(0,1) == 'G' && !refnumLabel) { // indicate the end of an IG domain @@ -46148,14 +46148,14 @@ var icn3d = (function (exports) { //Remove the highlight. The atom selection does not change. removeHlObjects() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects[i]); } ic.prevHighlightObjects = []; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects_ghost) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects_ghost[i]); } @@ -47078,7 +47078,7 @@ var icn3d = (function (exports) { /* } catch(err) { - let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assing reference numbers to avoid overloading the server..."; + let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assign reference numbers to avoid overloading the server..."; if(!me.bNode) { alert(mess); } @@ -50867,7 +50867,7 @@ var icn3d = (function (exports) { thisClass.transformStructure(mmdbid_q, index-1, 'query'); } - // dynamicly align pairs in ic.afChainIndexHash + // dynamically align pairs in ic.afChainIndexHash let ajaxArray = [], indexArray = [], struArray = []; let urlalign = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi"; let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi"; @@ -51095,7 +51095,7 @@ var icn3d = (function (exports) { } // If all chains align to the same target, just check the query. - // If there are different targets, also just check the query. The taget should not appear again in the query. + // If there are different targets, also just check the query. The target should not appear again in the query. alignMMdbids[target] = 1; if(alignMMdbids.hasOwnProperty(query)) continue; @@ -52450,8 +52450,8 @@ var icn3d = (function (exports) { points.push(orth); // get overlap between map and atoms - let positoin = new THREE.Vector3(orth[0], orth[1], orth[2]); - let atomsNear = ic.rayCls.getAtomsFromPosition(positoin, threshold, ic.hAtoms); + let position = new THREE.Vector3(orth[0], orth[1], orth[2]); + let atomsNear = ic.rayCls.getAtomsFromPosition(position, threshold, ic.hAtoms); let map_value = (atomsNear || !bAtoms) ? grid.get_grid_value(i, j, k) : 0; @@ -53180,7 +53180,7 @@ var icn3d = (function (exports) { maxMissingResi = 0; } - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing if(!isNaN(resi) &&(prevMissingChain == '' ||(chain != prevMissingChain) ||(chain == prevMissingChain && resi > maxMissingResi)) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -54592,7 +54592,7 @@ var icn3d = (function (exports) { } // calculate secondary structures if not available - // DSSP only works for structures with all atoms. The Calpha only strucutres didn't work + // DSSP only works for structures with all atoms. The Calpha only structures didn't work //if(!ic.bSecondaryStructure && !bCalphaOnly) { let bCalcSecondary = false; if(ic.bSecondaryStructure && Object.keys(ic.structures).length == 1) { @@ -54681,7 +54681,7 @@ var icn3d = (function (exports) { // get parent CID let urlParent = "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/" + ic.inputid + "/cids/JSONP?cids_type=parent"; - let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parant CID..."); + let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parent CID..."); let cidParent = dataParent.IdentifierList.CID[0]; @@ -57015,7 +57015,7 @@ var icn3d = (function (exports) { resiPos = 0; } - // fixe some missing residue names such as residue 6 in 5C1M_A + // fix some missing residue names such as residue 6 in 5C1M_A if(seqName === '') { seqName = 'x'; } @@ -58563,7 +58563,7 @@ var icn3d = (function (exports) { let chain2 = ic.pdbid_molid2chain[mmdbid2 + '_' + molid2]; let chainid2 = mmdbid2 + '_' + chain2; - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; if(ic.alnChainsAnTtl[chainid1][0] === undefined ) ic.alnChainsAnTtl[chainid1][0] = []; if(ic.alnChainsAnTtl[chainid1][1] === undefined ) ic.alnChainsAnTtl[chainid1][1] = []; @@ -59265,7 +59265,7 @@ var icn3d = (function (exports) { hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp); } - // 3. assign the varaible ic.alnChainsAnno + // 3. assign the variable ic.alnChainsAnno for(let i = 0; i < 3 + 2*n; ++i) { if(ic.alnChainsAnno[chainid1][i] === undefined ) ic.alnChainsAnno[chainid1][i] = []; } @@ -59803,7 +59803,7 @@ var icn3d = (function (exports) { ic.atoms[j].color = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -60141,7 +60141,7 @@ var icn3d = (function (exports) { resObject.resi = resi; resObject.name = me.utilsCls.residueName2Abbr(resn).toLowerCase(); - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing //if(!isNaN(resi) && (prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain && resi > maxMissingResi)) ) { if(prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -61392,7 +61392,7 @@ var icn3d = (function (exports) { } } - // for each curernt nodes, assign its nearest neighbor and the distance + // for each current nodes, assign its nearest neighbor and the distance let mNearestNB = {}, mNearestNBCopy = {}, mNearestNBDist = {}; selI = n; @@ -63746,7 +63746,7 @@ var icn3d = (function (exports) { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); //$("#" + ic.pre + "command_desc").val(""); @@ -63867,7 +63867,7 @@ var icn3d = (function (exports) { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); @@ -65067,7 +65067,7 @@ var icn3d = (function (exports) { ic.hlUpdateCls.updateHlAll(); - // caused some problem witht the following line + // caused some problem with the following line // $.extend(ic.opts, ic.optsHistory[steps - 1]); ic.drawCls.draw(); } @@ -68218,8 +68218,8 @@ var icn3d = (function (exports) { let chainid2 = chainid2Ori; // if one chain, separate it into two chains to show seq alignment if(bOnechain) { - let stucture = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); - chainid2 = stucture + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); + let structure = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); + chainid2 = structure + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); } residuesHash[resObject1.resid] = 1; @@ -68249,7 +68249,7 @@ var icn3d = (function (exports) { ic.atomPrevColors[j] = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -68579,7 +68579,7 @@ var icn3d = (function (exports) { * @param a match score, positive * @param b mismatch score, negative * - * @return sqaure scoring matrix. The last row and column are zero, for + * @return square scoring matrix. The last row and column are zero, for * matching an ambiguous residue. */ bsa_gen_score_matrix(n, a, b) { let ic = this.icn3d; ic.icn3dui; @@ -68625,7 +68625,7 @@ var icn3d = (function (exports) { } /** - * Local or global pairwise alignemnt + * Local or global pairwise alignment * * @param is_local perform local alignment * @param target target string @@ -68749,7 +68749,7 @@ var icn3d = (function (exports) { i, k, start_i = 0; if (is_local) { i = end_i, k = end_j; - if (end_j != qlen - 1) // then add soft cliping + if (end_j != qlen - 1) // then add soft clipping this.push_cigar(cigar, 4, qlen - 1 - end_j); } else i = t.length - 1, k = (i + w + 1 < qlen ? i + w + 1 : qlen) - 1; // (i,k) points to the last cell while (i >= 0 && k >= 0) { @@ -69092,7 +69092,7 @@ var icn3d = (function (exports) { } ic.hlObjectsCls.removeHlObjects(); } - //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labeld + //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labelled //as "N-" and "C-". The termini of nucleotides are labeled as "5'" and "3'". addTerminiLabels(atoms) {var ic = this.icn3d, me = ic.icn3dui; let size = 18; @@ -72514,12 +72514,12 @@ var icn3d = (function (exports) { } //Generate a URL to capture the current state and open it in a new window. Basically the state - //file (the comand history) is concatenated in the URL to show the current state. + //file (the command history) is concatenated in the URL to show the current state. async shareLink(bPngHtml, bPngOnly) { let ic = this.icn3d, me = ic.icn3dui; let url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; - //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime + //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name every time //var inputid =(ic.inputid) ? ic.inputid : "custom"; let inputid = Object.keys(ic.structures).join('_'); @@ -72837,7 +72837,7 @@ var icn3d = (function (exports) { } getPngText() { let ic = this.icn3d; ic.icn3dui; - let url; // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + let url; // output state file if ic.bInputfile is true or the URL is more than 4000 chars let bAllCommands = true; let text = ""; @@ -72868,7 +72868,7 @@ var icn3d = (function (exports) { url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; if(bTooLong) { - url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is more than 4000 chars text += "\nStart of state file======\n"; @@ -72904,7 +72904,7 @@ var icn3d = (function (exports) { ic.dotSphereScale = 0.6; //0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - //ic.cylinderHelixRadius = 1.6; // style sylinder and plate + //ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 1.0; //0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 2.0; //1.3; // style ribbon, stand thickness @@ -72915,7 +72915,7 @@ var icn3d = (function (exports) { //Prepare for 3D printing by changing dashed lines to solid lines, changing the thickness of the model. prepareFor3Dprint( ){ let ic = this.icn3d, me = ic.icn3dui; - // turn off hilight + // turn off highlight ic.bShowHighlight = false; ic.hlObjectsCls.removeHlObjects(); @@ -72972,7 +72972,7 @@ var icn3d = (function (exports) { ic.traceRadius = 0.4; // style c alpha trace, nucleotide stick ic.dotSphereScale = 0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - ic.cylinderHelixRadius = 1.6; // style sylinder and plate + ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 1.3; // style ribbon, nucleotide cartoon, stand thickness @@ -73820,7 +73820,7 @@ var icn3d = (function (exports) { let position = mdl.position; if ( intersects.length > 0 ) { // the intersections are sorted so that the closest point is the first one. - intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; let atom = this.getAtomsFromPosition(intersects[ 0 ].point, threshold); // the second parameter is the distance threshold. The first matched atom will be returned. Use 1 angstrom, not 2 angstrom. If it's 2 angstrom, other atom will be returned. @@ -75088,7 +75088,7 @@ var icn3d = (function (exports) { //This is the sphere radius for the style 'Sphere'. It's 1.5 by default. this.sphereRadius = 1.5; // style sphere //This is the cylinder radius for the style 'Cylinder and Plate'. It's 1.6 by default. - this.cylinderHelixRadius = 1.6; // style sylinder and plate + this.cylinderHelixRadius = 1.6; // style cylinder and plate //This is the ribbon thickness for helix and sheet ribbons, and nucleotide ribbons. It's 0.4 by default. this.ribbonthickness = 0.2; // 0.4; // style ribbon, nucleotide cartoon, stand thickness @@ -75222,7 +75222,7 @@ var icn3d = (function (exports) { // these variables will not be cleared for each structure this.commands = []; // a list of commands, ordered by the operation steps. Each operation will be converted into a command. this command list can be used to go backward and forward. this.optsHistory = []; // a list of options corresponding to this.commands. - this.logs = []; // a list of comands and other logs, ordered by the operation steps. + this.logs = []; // a list of commands and other logs, ordered by the operation steps. //This is a flag to turn off the rendering part if a sequence of commands are executed. It's true by default. this.bRender = true; // a flag to turn off rendering when loading state file @@ -75246,7 +75246,7 @@ var icn3d = (function (exports) { //this.curveWidth = 3; this.threshbox = 180; // maximum possible boxsize, default 180 - this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files wil be output for 3D printing + this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files will be output for 3D printing this.tsHbond = 3.8; this.tsIonic = 6; @@ -75546,7 +75546,7 @@ var icn3d = (function (exports) { this.alnChainsAnTtl = {}; // structure_chain name -> array of annotation title //this.dAtoms = {}; // show selected atoms - //this.hAtoms = {}; // used to change color or dislay type for certain atoms + //this.hAtoms = {}; // used to change color or display type for certain atoms this.pickedAtomList = {}; // used to switch among different highlight levels @@ -75603,7 +75603,7 @@ var icn3d = (function (exports) { this.style2atoms = {}; // style -> atom hash, 13 styles: ribbon, strand, cylinder and plate, nucleotide cartoon, o3 trace, schematic, c alpha trace, b factor tube, lines, stick, ball and stick, sphere, dot, nothing this.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance this.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -75636,7 +75636,7 @@ var icn3d = (function (exports) { ic.setColorCls.setColorByOptions(ic.opts, ic.atoms); ic.dAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // show selected atoms - ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or dislay type for certain atoms + ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or display type for certain atoms ic.prevHighlightObjects = []; ic.prevHighlightObjects_ghost = []; @@ -75649,7 +75649,7 @@ var icn3d = (function (exports) { ic.prevOtherMesh = []; ic.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance ic.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -76252,7 +76252,7 @@ var icn3d = (function (exports) { alert("Density server at EBI has no corresponding EM density map for this structure."); } else if(mapType == 'rcsbEdmaps') { - alert("RCSB server has no corresponding eletron density map for this structure."); + alert("RCSB server has no corresponding electron density map for this structure."); } else { alert("The " + mapType + " file is unavailable..."); diff --git a/dist/icn3d.module.js b/dist/icn3d.module.js index a7061748..26024a2a 100644 --- a/dist/icn3d.module.js +++ b/dist/icn3d.module.js @@ -8903,7 +8903,7 @@ class SetMenu { //this.sh = this.icn3dui.htmlCls.setHtmlCls; } - // simpify the calls of the following functions from setHtmlCls + // simplify the calls of the following functions from setHtmlCls getLink(id, text, bSimpleMenu, selType) { let me = this.icn3dui; return me.htmlCls.setHtmlCls.getLink(id, text, bSimpleMenu, selType); } @@ -9333,7 +9333,7 @@ class SetMenu { let bCmdWindow, html = ""; - // check comand window + // check command window let value = me.htmlCls.setHtmlCls.getCookie('cmdwindow'); if(value != '') { bCmdWindow = (bCmdWindowInput !== undefined) ? bCmdWindowInput : parseInt(value); @@ -11705,7 +11705,7 @@ class SetDialog { html += "All chains will be aligned to the first chain in the comma-separated chain IDs. Each chain ID has the form of PDBID_chain (e.g., 1HHO_A, case sensitive) or UniprotID (e.g., P69905 for AlphaFold structures).

    "; html += "Chain IDs: " + me.htmlCls.inputTextStr + "id='" + me.pre + "chainalignids2' value='P69905,P01942,1HHO_A' size=50>

    "; - html += "The sequence alignment (followed by structure alignemnt) is based on residue numbers in the First/Master chain:
    " + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
    "; + html += "The sequence alignment (followed by structure alignment) is based on residue numbers in the First/Master chain:
    " + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
    "; html += me.htmlCls.buttonStr + "reload_chainalign_asym2' style='margin-top:3px;'>Align by Sequence Alignment

    "; html += "(Note: To align chains in custom PDB files, you could load them in \"File > Open File > PDB Files (appendable)\" and click \"Analysis > Defined Sets\". Finally select multiple chains in Defined Sets and click \"File > Realign Selection\".)

    "; @@ -21122,7 +21122,7 @@ function buildNodeHierarchy( nodeId, parentObject, json, parser ) { } ).then( function ( node ) { - // build node hierachy + // build node hierarchy parentObject.add( node ); @@ -23105,7 +23105,7 @@ class CanvasKeyboard{ config[`btn${i+20}`] = btn; x += ( w + padding ); } - //4rd row + //4th row y += (height + padding); x = padding; for (let i=0; i<5; i++){ @@ -29623,7 +29623,7 @@ ElectronMap.prototype.getFacesAndVertices = function(allatoms, atomlist) { if(fa !== fb && fb !== fc && fa !== fc){ if(this.header.ccp4) { - // only transfered vertices will be used + // only transferred vertices will be used if(vertTrans.hasOwnProperty(vertices[fa].index) && vertTrans.hasOwnProperty(vertices[fb].index) && vertTrans.hasOwnProperty(vertices[fc].index)) { finalfaces.push({"a":fa, "b":fb, "c":fc}); @@ -29817,7 +29817,7 @@ ElectronMap.prototype.fillvoxels = function(atoms, atomlist) { //(int seqinit,in let r = atom.coord.clone(); if(this.loadPhiFrom != 'delphi') { // transform to the original position if the potential file is imported if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -29892,7 +29892,7 @@ ElectronMap.prototype.fillvoxels = function(atoms, atomlist) { //(int seqinit,in let r; if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -30187,7 +30187,7 @@ class Surface { } } else if(type == 13) { // em - cfg.maxdist = 3; // EM map has no unit cell. It could include more gird space. + cfg.maxdist = 3; // EM map has no unit cell. It could include more grid space. cfg.header = ic.mapData.headerEm; cfg.data = ic.mapData.dataEm; @@ -30926,7 +30926,7 @@ class ApplyClbonds { // show side chains for the selected atoms let atoms = me.hashUtilsCls.intHash(residueAtoms, ic.sidec); - // draw sidec separatedly + // draw sidec separately for(let k in atoms) { ic.atoms[k].style2 = 'stick'; } @@ -31845,7 +31845,7 @@ class ApplySsbonds { // include calphas // atoms = me.hashUtilsCls.unionHash(atoms, calpha_atoms); - // draw sidec separatedly + // draw sidec separately for(let j in atoms) { ic.atoms[j].style2 = style; } @@ -32335,7 +32335,7 @@ class ApplyMap { //Remove previously drawn surfaces. removeSurfaces() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevSurfaces.length; i < il; ++i) { ic.mdl.remove(ic.prevSurfaces[i]); } @@ -32344,7 +32344,7 @@ class ApplyMap { } removeLastSurface() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevSurfaces.length > 0) { ic.mdl.remove(ic.prevSurfaces[ic.prevSurfaces.length - 1]); ic.prevSurfaces.slice(ic.prevSurfaces.length - 1, 1); @@ -32352,7 +32352,7 @@ class ApplyMap { } removeMaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevMaps.length; i < il; ++i) { ic.mdl.remove(ic.prevMaps[i]); } @@ -32361,7 +32361,7 @@ class ApplyMap { } removeEmmaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevEmmaps.length; i < il; ++i) { ic.mdl.remove(ic.prevEmmaps[i]); } @@ -32370,7 +32370,7 @@ class ApplyMap { } removePhimaps() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevPhimaps.length; i < il; ++i) { ic.mdl.remove(ic.prevPhimaps[i]); @@ -32380,7 +32380,7 @@ class ApplyMap { } removeLastMap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevMaps.length > 0) { ic.mdl.remove(ic.prevMaps[ic.prevMaps.length - 1]); ic.prevMaps.slice(ic.prevMaps.length - 1, 1); @@ -32388,7 +32388,7 @@ class ApplyMap { } removeLastEmmap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevEmmaps.length > 0) { ic.mdl.remove(ic.prevEmmaps[ic.prevEmmaps.length - 1]); ic.prevEmmaps.slice(ic.prevEmmaps.length - 1, 1); @@ -32396,7 +32396,7 @@ class ApplyMap { } removeLastPhimap() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevPhimaps.length > 0) { ic.mdl.remove(ic.prevPhimaps[ic.prevPhimaps.length - 1]); ic.prevPhimaps.slice(ic.prevPhimaps.length - 1, 1); @@ -33978,7 +33978,7 @@ class Alternate { if (intersects.length>0){ controller.children[0].scale.z = intersects[0].distance; // stop on the object - intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; @@ -34974,7 +34974,7 @@ class PiHalogen { // only parallel or perpendicular if(interactionType == 'pi-stacking' && atom1.normal !== undefined && atom2.normal !== undefined) { Math.abs(atom1.normal.dot(atom2.normal)); - // perpendicular 30 degree || parellel, 30 degree + // perpendicular 30 degree || parallel, 30 degree // remove this condition on Nov 19, 2021 //if(dotResult > 0.5 && dotResult < 0.866) continue; } @@ -35351,7 +35351,7 @@ class PiHalogen { ic.ring_mark[cur] = cyclenumber; // backtrack the vertex which are - // in the current cycle thats found + // in the current cycle that's found while (cur != u) { cur = ic.ring_par[cur]; ic.ring_mark[cur] = cyclenumber; @@ -35700,7 +35700,7 @@ class SetStyle { ic.style2atoms = {}; for(let i in atoms) { - // do not show water in assemly + // do not show water in assembly //if(ic.bAssembly && ic.water.hasOwnProperty(i)) { // ic.atoms[i].style = 'nothing'; //} @@ -36855,7 +36855,7 @@ class SetOption { atoms = me.hashUtilsCls.intHash(ic.hAtoms, ic.water); break; } - // draw sidec separatedly + // draw sidec separately if(selectionType === 'sidec' || selectionType === 'ntbase') { for(let i in atoms) { ic.atoms[i].style2 = style; @@ -37568,7 +37568,7 @@ class AnnoCddSite { let domain =(bDomain) ? domainArray[index].title.split(':')[0] : domainArray[index].title; // convert double quote domain = domain.replace(/\"/g, "``"); - // convert singe quote + // convert single quote domain = domain.replace(/'/g, "`"); if(bDomain) acc2domain[acc] = domain; @@ -37587,7 +37587,7 @@ class AnnoCddSite { if(!domainRepeatArray) continue; for(let r = 0, rl = domainRepeatArray.length; r < rl; ++r) { - // each domain repeat or domain may have several segments, i.e., a domain may not be continous + // each domain repeat or domain may have several segments, i.e., a domain may not be continuous let fromArray = [], toArray = []; let resiHash = {}; let resCnt = 0; @@ -38264,7 +38264,7 @@ class AnnoPTM { html += '
    '; html2 += html; html3 += html; - let stucture = chnid.substr(0, chnid.indexOf('_')); + let structure = chnid.substr(0, chnid.indexOf('_')); for(let ptm in ptmHash) { let ptmArray = ptmHash[ptm]; @@ -38276,7 +38276,7 @@ class AnnoPTM { let end = parseInt(ptmArray[i].end); for(let j = begin; j <= end; ++j) { - if(stucture.length > 5) { // UniProt + if(structure.length > 5) { // UniProt resPosArray.push(j - 1); // 0-based } else { // PDB @@ -39036,7 +39036,7 @@ class AnnoSnpClinVar { snpTitle += pos + c + '>' + resi2snp[i][j]; if(!bSnpOnly) { - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -39116,7 +39116,7 @@ class AnnoSnpClinVar { bCoord = false; } - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -40595,7 +40595,7 @@ class Domain3d { } } - // extract the continguous segments + // extract the contiguous segments let inseg = false; let startseg; //vector segments; @@ -42528,12 +42528,12 @@ class AddTrack { while (i < A.length && j < B.length) { if(A[i] != B[j]) { if(A[i] == '-') { - // inser "-" in B + // insert "-" in B B = B.substr(0, j) + '-' + B.substr(j); seqFirst = seqFirst.substr(0, j) + '-' + seqFirst.substr(j); } else { //if(B[j] == '-') { - // inser "-" in A + // insert "-" in A for(let k = 0; k < ALen; ++k) { trackSeqArray[k] = trackSeqArray[k].substr(0, i) + '-' + trackSeqArray[k].substr(i); } @@ -44552,7 +44552,7 @@ class ShowSeq { let firstChar = (refnumLabel) ? refnumLabel.substr(0,1) : ''; if(!bStart && refnumLabel && (firstChar == 'A' || firstChar == 'B')) { // start of a new IG domain bStart = true; - resCnt = 1; // the first oen is included + resCnt = 1; // the first one is included } if(prevStrand.substr(0,1) == 'G' && !refnumLabel) { // indicate the end of an IG domain @@ -46145,14 +46145,14 @@ class HlObjects { //Remove the highlight. The atom selection does not change. removeHlObjects() { let ic = this.icn3d; ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects[i]); } ic.prevHighlightObjects = []; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects_ghost) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects_ghost[i]); } @@ -47075,7 +47075,7 @@ class LineGraph { /* } catch(err) { - let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assing reference numbers to avoid overloading the server..."; + let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assign reference numbers to avoid overloading the server..."; if(!me.bNode) { alert(mess); } @@ -50864,7 +50864,7 @@ class ChainalignParser { thisClass.transformStructure(mmdbid_q, index-1, 'query'); } - // dynamicly align pairs in ic.afChainIndexHash + // dynamically align pairs in ic.afChainIndexHash let ajaxArray = [], indexArray = [], struArray = []; let urlalign = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi"; let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi"; @@ -51092,7 +51092,7 @@ class ChainalignParser { } // If all chains align to the same target, just check the query. - // If there are different targets, also just check the query. The taget should not appear again in the query. + // If there are different targets, also just check the query. The target should not appear again in the query. alignMMdbids[target] = 1; if(alignMMdbids.hasOwnProperty(query)) continue; @@ -52447,8 +52447,8 @@ class Ccp4Parser { points.push(orth); // get overlap between map and atoms - let positoin = new THREE.Vector3(orth[0], orth[1], orth[2]); - let atomsNear = ic.rayCls.getAtomsFromPosition(positoin, threshold, ic.hAtoms); + let position = new THREE.Vector3(orth[0], orth[1], orth[2]); + let atomsNear = ic.rayCls.getAtomsFromPosition(position, threshold, ic.hAtoms); let map_value = (atomsNear || !bAtoms) ? grid.get_grid_value(i, j, k) : 0; @@ -53177,7 +53177,7 @@ class MmcifParser { maxMissingResi = 0; } - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing if(!isNaN(resi) &&(prevMissingChain == '' ||(chain != prevMissingChain) ||(chain == prevMissingChain && resi > maxMissingResi)) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -54589,7 +54589,7 @@ class PdbParser { } // calculate secondary structures if not available - // DSSP only works for structures with all atoms. The Calpha only strucutres didn't work + // DSSP only works for structures with all atoms. The Calpha only structures didn't work //if(!ic.bSecondaryStructure && !bCalphaOnly) { let bCalcSecondary = false; if(ic.bSecondaryStructure && Object.keys(ic.structures).length == 1) { @@ -54678,7 +54678,7 @@ class SdfParser { // get parent CID let urlParent = "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/" + ic.inputid + "/cids/JSONP?cids_type=parent"; - let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parant CID..."); + let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parent CID..."); let cidParent = dataParent.IdentifierList.CID[0]; @@ -57012,7 +57012,7 @@ class ParserUtils { resiPos = 0; } - // fixe some missing residue names such as residue 6 in 5C1M_A + // fix some missing residue names such as residue 6 in 5C1M_A if(seqName === '') { seqName = 'x'; } @@ -58560,7 +58560,7 @@ class SetSeqAlign { let chain2 = ic.pdbid_molid2chain[mmdbid2 + '_' + molid2]; let chainid2 = mmdbid2 + '_' + chain2; - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; if(ic.alnChainsAnTtl[chainid1][0] === undefined ) ic.alnChainsAnTtl[chainid1][0] = []; if(ic.alnChainsAnTtl[chainid1][1] === undefined ) ic.alnChainsAnTtl[chainid1][1] = []; @@ -59262,7 +59262,7 @@ class SetSeqAlign { hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp); } - // 3. assign the varaible ic.alnChainsAnno + // 3. assign the variable ic.alnChainsAnno for(let i = 0; i < 3 + 2*n; ++i) { if(ic.alnChainsAnno[chainid1][i] === undefined ) ic.alnChainsAnno[chainid1][i] = []; } @@ -59800,7 +59800,7 @@ class SetSeqAlign { ic.atoms[j].color = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -60138,7 +60138,7 @@ class LoadPDB { resObject.resi = resi; resObject.name = me.utilsCls.residueName2Abbr(resn).toLowerCase(); - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing //if(!isNaN(resi) && (prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain && resi > maxMissingResi)) ) { if(prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain) ) { ic.chainMissingResidueArray[chainNum].push(resObject); @@ -61389,7 +61389,7 @@ class Vastplus { } } - // for each curernt nodes, assign its nearest neighbor and the distance + // for each current nodes, assign its nearest neighbor and the distance let mNearestNB = {}, mNearestNBCopy = {}, mNearestNBDist = {}; selI = n; @@ -63743,7 +63743,7 @@ class DefinedSets { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); //$("#" + ic.pre + "command_desc").val(""); @@ -63864,7 +63864,7 @@ class DefinedSets { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); @@ -65064,7 +65064,7 @@ class LoadScript { ic.hlUpdateCls.updateHlAll(); - // caused some problem witht the following line + // caused some problem with the following line // $.extend(ic.opts, ic.optsHistory[steps - 1]); ic.drawCls.draw(); } @@ -68215,8 +68215,8 @@ class Symd { let chainid2 = chainid2Ori; // if one chain, separate it into two chains to show seq alignment if(bOnechain) { - let stucture = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); - chainid2 = stucture + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); + let structure = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); + chainid2 = structure + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); } residuesHash[resObject1.resid] = 1; @@ -68246,7 +68246,7 @@ class Symd { ic.atomPrevColors[j] = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { @@ -68576,7 +68576,7 @@ class AlignSW { * @param a match score, positive * @param b mismatch score, negative * - * @return sqaure scoring matrix. The last row and column are zero, for + * @return square scoring matrix. The last row and column are zero, for * matching an ambiguous residue. */ bsa_gen_score_matrix(n, a, b) { let ic = this.icn3d; ic.icn3dui; @@ -68622,7 +68622,7 @@ class AlignSW { } /** - * Local or global pairwise alignemnt + * Local or global pairwise alignment * * @param is_local perform local alignment * @param target target string @@ -68746,7 +68746,7 @@ class AlignSW { i, k, start_i = 0; if (is_local) { i = end_i, k = end_j; - if (end_j != qlen - 1) // then add soft cliping + if (end_j != qlen - 1) // then add soft clipping this.push_cigar(cigar, 4, qlen - 1 - end_j); } else i = t.length - 1, k = (i + w + 1 < qlen ? i + w + 1 : qlen) - 1; // (i,k) points to the last cell while (i >= 0 && k >= 0) { @@ -69089,7 +69089,7 @@ class Analysis { } ic.hlObjectsCls.removeHlObjects(); } - //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labeld + //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labelled //as "N-" and "C-". The termini of nucleotides are labeled as "5'" and "3'". addTerminiLabels(atoms) {var ic = this.icn3d, me = ic.icn3dui; let size = 18; @@ -72511,12 +72511,12 @@ class ShareLink { } //Generate a URL to capture the current state and open it in a new window. Basically the state - //file (the comand history) is concatenated in the URL to show the current state. + //file (the command history) is concatenated in the URL to show the current state. async shareLink(bPngHtml, bPngOnly) { let ic = this.icn3d, me = ic.icn3dui; let url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; - //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime + //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name every time //var inputid =(ic.inputid) ? ic.inputid : "custom"; let inputid = Object.keys(ic.structures).join('_'); @@ -72834,7 +72834,7 @@ class ShareLink { } getPngText() { let ic = this.icn3d; ic.icn3dui; - let url; // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + let url; // output state file if ic.bInputfile is true or the URL is more than 4000 chars let bAllCommands = true; let text = ""; @@ -72865,7 +72865,7 @@ class ShareLink { url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; if(bTooLong) { - url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is more than 4000 chars text += "\nStart of state file======\n"; @@ -72901,7 +72901,7 @@ class ThreeDPrint { ic.dotSphereScale = 0.6; //0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - //ic.cylinderHelixRadius = 1.6; // style sylinder and plate + //ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 1.0; //0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 2.0; //1.3; // style ribbon, stand thickness @@ -72912,7 +72912,7 @@ class ThreeDPrint { //Prepare for 3D printing by changing dashed lines to solid lines, changing the thickness of the model. prepareFor3Dprint( ){ let ic = this.icn3d, me = ic.icn3dui; - // turn off hilight + // turn off highlight ic.bShowHighlight = false; ic.hlObjectsCls.removeHlObjects(); @@ -72969,7 +72969,7 @@ class ThreeDPrint { ic.traceRadius = 0.4; // style c alpha trace, nucleotide stick ic.dotSphereScale = 0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - ic.cylinderHelixRadius = 1.6; // style sylinder and plate + ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 1.3; // style ribbon, nucleotide cartoon, stand thickness @@ -73817,7 +73817,7 @@ class Ray { let position = mdl.position; if ( intersects.length > 0 ) { // the intersections are sorted so that the closest point is the first one. - intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; let atom = this.getAtomsFromPosition(intersects[ 0 ].point, threshold); // the second parameter is the distance threshold. The first matched atom will be returned. Use 1 angstrom, not 2 angstrom. If it's 2 angstrom, other atom will be returned. @@ -75085,7 +75085,7 @@ class iCn3D { //This is the sphere radius for the style 'Sphere'. It's 1.5 by default. this.sphereRadius = 1.5; // style sphere //This is the cylinder radius for the style 'Cylinder and Plate'. It's 1.6 by default. - this.cylinderHelixRadius = 1.6; // style sylinder and plate + this.cylinderHelixRadius = 1.6; // style cylinder and plate //This is the ribbon thickness for helix and sheet ribbons, and nucleotide ribbons. It's 0.4 by default. this.ribbonthickness = 0.2; // 0.4; // style ribbon, nucleotide cartoon, stand thickness @@ -75219,7 +75219,7 @@ class iCn3D { // these variables will not be cleared for each structure this.commands = []; // a list of commands, ordered by the operation steps. Each operation will be converted into a command. this command list can be used to go backward and forward. this.optsHistory = []; // a list of options corresponding to this.commands. - this.logs = []; // a list of comands and other logs, ordered by the operation steps. + this.logs = []; // a list of commands and other logs, ordered by the operation steps. //This is a flag to turn off the rendering part if a sequence of commands are executed. It's true by default. this.bRender = true; // a flag to turn off rendering when loading state file @@ -75243,7 +75243,7 @@ class iCn3D { //this.curveWidth = 3; this.threshbox = 180; // maximum possible boxsize, default 180 - this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files wil be output for 3D printing + this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files will be output for 3D printing this.tsHbond = 3.8; this.tsIonic = 6; @@ -75543,7 +75543,7 @@ iCn3D.prototype.init_base = function (bKeepCmd) { this.alnChainsAnTtl = {}; // structure_chain name -> array of annotation title //this.dAtoms = {}; // show selected atoms - //this.hAtoms = {}; // used to change color or dislay type for certain atoms + //this.hAtoms = {}; // used to change color or display type for certain atoms this.pickedAtomList = {}; // used to switch among different highlight levels @@ -75600,7 +75600,7 @@ iCn3D.prototype.init_base = function (bKeepCmd) { this.style2atoms = {}; // style -> atom hash, 13 styles: ribbon, strand, cylinder and plate, nucleotide cartoon, o3 trace, schematic, c alpha trace, b factor tube, lines, stick, ball and stick, sphere, dot, nothing this.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance this.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -75633,7 +75633,7 @@ iCn3D.prototype.reinitAfterLoad = function () { let ic = this, me = ic.icn3dui; ic.setColorCls.setColorByOptions(ic.opts, ic.atoms); ic.dAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // show selected atoms - ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or dislay type for certain atoms + ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or display type for certain atoms ic.prevHighlightObjects = []; ic.prevHighlightObjects_ghost = []; @@ -75646,7 +75646,7 @@ iCn3D.prototype.reinitAfterLoad = function () { let ic = this, me = ic.icn3dui; ic.prevOtherMesh = []; ic.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance ic.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -76249,7 +76249,7 @@ iCn3DUI.prototype.getXMLHttpRqstPromise = function(url, dataType, responseType, alert("Density server at EBI has no corresponding EM density map for this structure."); } else if(mapType == 'rcsbEdmaps') { - alert("RCSB server has no corresponding eletron density map for this structure."); + alert("RCSB server has no corresponding electron density map for this structure."); } else { alert("The " + mapType + " file is unavailable..."); diff --git a/dist/index.html b/dist/index.html index 9da011f3..07ad7a88 100644 --- a/dist/index.html +++ b/dist/index.html @@ -172,7 +172,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/example/addAnnoLocal.html b/example/addAnnoLocal.html index 1131176d..d55681f3 100644 --- a/example/addAnnoLocal.html +++ b/example/addAnnoLocal.html @@ -182,7 +182,7 @@ } var getParams = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = getParams[getParams.length - 1]; var params = {}; var inpara = ""; diff --git a/example/module.html b/example/module.html index b342e17d..f19a29cd 100644 --- a/example/module.html +++ b/example/module.html @@ -171,7 +171,7 @@ } var getParams = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = getParams[getParams.length - 1]; var params = {}; var inpara = ""; diff --git a/full.html b/full.html index 8822d1b3..0b46270e 100644 --- a/full.html +++ b/full.html @@ -172,7 +172,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/full2.html b/full2.html index ed6633dc..6c74408a 100644 --- a/full2.html +++ b/full2.html @@ -210,7 +210,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/icn3d.html b/icn3d.html index e9a9be04..29a4684d 100644 --- a/icn3d.html +++ b/icn3d.html @@ -218,7 +218,7 @@

    What is iCn3D Structure Viewer?

    The most important point about using iCn3D is the current selection. Any operations on color, style, etc. are working on the current selection. By default, all atoms are selected. Once you select any subset, your operation will work ONLY on the subset. You can switch the selection using the toggle next to the Help menu.

  • VR and AR views in iCn3D
    -The Virtual Reality (VR) and Augmented Reality (AR) views are shown in this video.
    +The Virtual Reality (VR) and Augmented Reality (AR) views are shown in this video.

    You can open a bowser in your Virtual Reality (VR) headset and view a 3D structure in iCn3D. Then click the button "ENTER VR" at the bottom center of your browser to enter the VR view. You can select residues with the trigger button, open the menu with the squeeze button and click menus with the trigger, navigate with the thumbstick pressed forward/backward and press the trigger. There are menus for Select, Style, Color, and Analysis. You need to make one selection before clicking the Interaction button and make two selections before clicking the Distance button.

    @@ -252,7 +252,7 @@

    What is iCn3D Structure Viewer?


  • Align AlphaFold structures: -You can align AlphaFold structures or PDB structures with the menu "File > Align > Multiple Chains" or "File > Align > Protein Complexes > Two AlphaFold Structures". You can also load any structures as usual, then load your custom PDB file with the menu "File > Open File > PDB File (appendable)", then relaign these structures with the meu "File > Realign Selection > by Structure Alignment".
    +You can align AlphaFold structures or PDB structures with the menu "File > Align > Multiple Chains" or "File > Align > Protein Complexes > Two AlphaFold Structures". You can also load any structures as usual, then load your custom PDB file with the menu "File > Open File > PDB File (appendable)", then relaign these structures with the menu "File > Realign Selection > by Structure Alignment".

  • Alternate SNPs in 3D
    @@ -741,7 +741,7 @@

    Frequently Asked Questionshttps://structure.ncbi.nlm.nih.gov/icn3d and input PDB ID(s) or AlphaFold UniProt ID(s) with the menu "File > Retrieve by ID > MMDB or AlphaFold IDs". You can also open several PDB files with the menu "File > Open File > PDB Files (appendable)".

    - To view 3D structures in Jupyter Notebook, you can follow the instructions at icn3dpy.
    + To view 3D structures in Jupyter Notebook, you can follow the instructions at icn3dpy.

    Virtual Reality (VR) view in iCn3D:
    You need a VR headset to view 3D structures in VR using iCn3D. In your VR browser, load a 3D structure in iCn3D and click the button "ENTER VR" at the bottom center of the page to enter the VR view.
    @@ -2851,7 +2851,7 @@

    Add New Classes
  • Import iCn3D module: "import * as icn3d from './icn3d.module.js';"
  • Import your custom class (e.g., "LoadStateFile"): "import {LoadStateFile} from './loadStateFile.js';"
  • -
  • Remove "$( document ).ready(async function() {" and the coresponding "//});" since module will always be run after the document is ready.
  • +
  • Remove "$( document ).ready(async function() {" and the corresponding "//});" since module will always be run after the document is ready.
  • Call your class after the function "await icn3dui.show3DStructure()". You first define the class instance "loadStateFileCls" and pass the iCn3D instance "icn3dui.icn3d". Then call the functions of your class.
         var loadStateFileCls = new LoadStateFile(icn3dui.icn3d);
    @@ -2990,7 +2990,7 @@ 

    Codeathon/Workshop ContributorsDifferential analysis of residue interactions of a SNP based on side chain prediction:
    Zachery Mielko, Kailash Adhikari, David Bell, Jiyao Wang, Marina Herrera Sarrias, and Ravinder Abrol

  • Visualizing the effect of SNPs extracted from genomic data on protein structure using iCn3D:
    Bonface Onyango, Manoj M Wagle, Michael Sierk, and Pranavathiyani G

  • Standardization of Ig datasets using universal numbering system and auto generating Bridged 1D maps:
    Umesh Khaniya, Chirag Patel, Caesar Tawfeeq, Siddhi Jani, Sujitkumar, Prasanthkumar, and Philippe Youkharibache

  • -
  • ImmunoZoo - Making iCn3D accessble for many audiences:
    Sandra Porter, Todd Smith, Sheela Vemu, Carsten Fortmann-Grote, Yagoub Adam, Shikha Kathrani, and Jack Lin

  • +
  • ImmunoZoo - Making iCn3D accessible for many audiences:
    Sandra Porter, Todd Smith, Sheela Vemu, Carsten Fortmann-Grote, Yagoub Adam, Shikha Kathrani, and Jack Lin

  • Analysis of multiple structures for automatic capture of conformational changes:
    Tom Madej, David Bell, Chase Freschlin, Gabby Vent, and Lianna Khachikyan

  • diff --git a/icn3dpython/icn3d_url/batch_export_panel.py b/icn3dpython/icn3d_url/batch_export_panel.py index 56c3defe..385e919e 100644 --- a/icn3dpython/icn3d_url/batch_export_panel.py +++ b/icn3dpython/icn3d_url/batch_export_panel.py @@ -39,7 +39,7 @@ options.add_argument("--window-size=320,320") # start with specific window size (300x300 viewport/image size) options.binary_location = "/usr/local/chrome/114.0.5735.106/bin/chrome" # chrome binary location (required if chrome is not in the default path) -# start a broser +# start a browser #browser = webdriver.Chrome(executable_path='/usr/local/chromedriver/114.0.5735.90/bin/chromedriver', options=options) #service = ChromeService(executable_path='/usr/local/chromedriver/114.0.5735.90/bin/chromedriver') service = ChromeService(ChromeDriverManager().install()) diff --git a/icn3dpython/icn3d_url/batch_export_png.py b/icn3dpython/icn3d_url/batch_export_png.py index ac4f69d4..ee2fbdc1 100644 --- a/icn3dpython/icn3d_url/batch_export_png.py +++ b/icn3dpython/icn3d_url/batch_export_png.py @@ -39,7 +39,7 @@ options.add_argument("--window-size=320,320") # start with specific window size (300x300 viewport/image size) options.binary_location = "/usr/local/chrome/114.0.5735.106/bin/chrome" # chrome binary location (required if chrome is not in the default path) -# start a broser +# start a browser #browser = webdriver.Chrome(executable_path='/usr/local/chromedriver/114.0.5735.90/bin/chromedriver', options=options) #service = ChromeService(executable_path='/usr/local/chromedriver/114.0.5735.90/bin/chromedriver') service = ChromeService(ChromeDriverManager().install()) diff --git a/icn3dpython/icn3d_url/batch_export_ss.py b/icn3dpython/icn3d_url/batch_export_ss.py index b01a9907..44ed5ebe 100644 --- a/icn3dpython/icn3d_url/batch_export_ss.py +++ b/icn3dpython/icn3d_url/batch_export_ss.py @@ -39,7 +39,7 @@ options.add_argument("--window-size=320,320") # start with specific window size (300x300 viewport/image size) options.binary_location = "/usr/local/chrome/114.0.5735.106/bin/chrome" # chrome binary location (required if chrome is not in the default path) -# start a broser +# start a browser #browser = webdriver.Chrome(executable_path='/usr/local/chromedriver/114.0.5735.90/bin/chromedriver', options=options) #service = ChromeService(executable_path='/usr/local/chromedriver/114.0.5735.90/bin/chromedriver') service = ChromeService(ChromeDriverManager().install()) diff --git a/icn3dpython/web_scraping/README.md b/icn3dpython/web_scraping/README.md index effe0ad7..1de51a8a 100644 --- a/icn3dpython/web_scraping/README.md +++ b/icn3dpython/web_scraping/README.md @@ -1,7 +1,7 @@ Python Scripts by Following Interactive Steps ============================================= -Python Scripts can scrape data from iCn3D by mimicing a user to click on different menus. An example script is shown below with the following clicks. Once a structure is loaded, the script first clicks the menu "Analysis > Interaction". It then selects two sets from the popup window, and clicks "2D Interaction Network". In the resulting page, it clicks the button "JSON" to output the JSON file for the interaction. A sharable link for all steps except the last one is [https://structure.ncbi.nlm.nih.gov/icn3d/share.html?yZkg6dofei1AZwVC6](https://structure.ncbi.nlm.nih.gov/icn3d/share.html?yZkg6dofei1AZwVC6). The last button click has no associated commands, and thus can not be reproduced in the sharable link. +Python Scripts can scrape data from iCn3D by mimicking a user to click on different menus. An example script is shown below with the following clicks. Once a structure is loaded, the script first clicks the menu "Analysis > Interaction". It then selects two sets from the popup window, and clicks "2D Interaction Network". In the resulting page, it clicks the button "JSON" to output the JSON file for the interaction. A sharable link for all steps except the last one is [https://structure.ncbi.nlm.nih.gov/icn3d/share.html?yZkg6dofei1AZwVC6](https://structure.ncbi.nlm.nih.gov/icn3d/share.html?yZkg6dofei1AZwVC6). The last button click has no associated commands, and thus can not be reproduced in the sharable link. Installation ------------ diff --git a/icn3dpython/web_scraping/downloadInteraction.py b/icn3dpython/web_scraping/downloadInteraction.py index 9ce9a89a..c95a5c9b 100644 --- a/icn3dpython/web_scraping/downloadInteraction.py +++ b/icn3dpython/web_scraping/downloadInteraction.py @@ -53,7 +53,7 @@ def wait_for_download(driver): def del_ncbi_survey_box( driver ): ''' Removes NCBI survey box that occasionally - pops up when icn3d webiste is accessed ''' + pops up when icn3d website is accessed ''' driver.implicitly_wait(10) diff --git a/index.html b/index.html index fa619bc5..16c7180b 100644 --- a/index.html +++ b/index.html @@ -172,7 +172,7 @@ } var params = url.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = params[params.length - 1]; var cfg = {}; diff --git a/jupyternotebook/README.md b/jupyternotebook/README.md index dfaddd5f..c90460eb 100644 --- a/jupyternotebook/README.md +++ b/jupyternotebook/README.md @@ -4,7 +4,7 @@ icn3dpy icn3dpy is a simple [IPython/Jupyter](http://jupyter.org/) widget to embed an interactive [iCn3D](https://github.com/ncbi/icn3d) viewer in a notebook. Its source code is at [PyPI](https://pypi.org/project/icn3dpy/), and is also included at [iCn3D GitHub](https://github.com/ncbi/icn3d/tree/master/jupyternotebook). -The 3D view of icn3dpy in Jupyter Notebook is interactive, just like in any browser. The popup windows will appear under the 3D view. If you have a predefined cutom view, you can use the predefined commands in icn3dpy as shown below. +The 3D view of icn3dpy in Jupyter Notebook is interactive, just like in any browser. The popup windows will appear under the 3D view. If you have a predefined custom view, you can use the predefined commands in icn3dpy as shown below. If you experience problems, please file an [issue](https://github.com/ncbi/icn3d/issues). @@ -73,7 +73,7 @@ Use predefined commands (The Jupyter Notebook commands can be copied from the "C view = icn3dpy.view(q='mmdbid=6m0j',command='scatterplot interaction pairs | !A !E | hbonds,salt bridge,interactions,halogen,pi-cation,pi-stacking | false | threshold 3.8 6 4 3.8 6 6; show selection; add residue number labels') view -Embed a static image instead of an interactive 3D view to improve the performace of a page with multiple structures. The image is clickable to launch an interactive 3D view. The parameters are separated with the symbol "&" (e.g., "imageonly=1&showanno=1"). All parameters are described in the ["URL parameters" section](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#parameters): +Embed a static image instead of an interactive 3D view to improve the performance of a page with multiple structures. The image is clickable to launch an interactive 3D view. The parameters are separated with the symbol "&" (e.g., "imageonly=1&showanno=1"). All parameters are described in the ["URL parameters" section](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#parameters): view = icn3dpy.view(q='mmdbid=6hjr', para='imageonly=1') view diff --git a/jupyternotebook/icn3dpy/__init__.py b/jupyternotebook/icn3dpy/__init__.py index 84874914..3cedab07 100644 --- a/jupyternotebook/icn3dpy/__init__.py +++ b/jupyternotebook/icn3dpy/__init__.py @@ -6,7 +6,7 @@ class view(object): '''A class for constructing embedded iCn3D viewer in ipython notebooks. The 3D view of icn3dpy in Jupyter Notebook is interactive, just like in any browser. The popup windows will appear - under the 3D view. If you have a predefined cutom view, + under the 3D view. If you have a predefined custom view, you can use the predefined commands in icn3dpy. ''' def __init__(self,width=640,height=480,q="",para="",command="",v=""): diff --git a/simple.html b/simple.html index 33b6bf04..eb345e6e 100644 --- a/simple.html +++ b/simple.html @@ -32,7 +32,7 @@ } var getParams = document.URL.split("?"); - // transforming the GET parameters into a dictionnary + // transforming the GET parameters into a dictionary var search = getParams[getParams.length - 1]; //var params = JSON.parse('{"' + decodeURIComponent(search).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"') + '"}'); var params = {}; diff --git a/src/html/setDialog.js b/src/html/setDialog.js index 1dd6475a..a305e459 100644 --- a/src/html/setDialog.js +++ b/src/html/setDialog.js @@ -295,7 +295,7 @@ class SetDialog { html += "All chains will be aligned to the first chain in the comma-separated chain IDs. Each chain ID has the form of PDBID_chain (e.g., 1HHO_A, case sensitive) or UniprotID (e.g., P69905 for AlphaFold structures).

    "; html += "Chain IDs: " + me.htmlCls.inputTextStr + "id='" + me.pre + "chainalignids2' value='P69905,P01942,1HHO_A' size=50>

    "; - html += "The sequence alignment (followed by structure alignemnt) is based on residue numbers in the First/Master chain:
    " + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
    "; + html += "The sequence alignment (followed by structure alignment) is based on residue numbers in the First/Master chain:
    " + me.htmlCls.inputTextStr + "id='" + me.pre + "resalignids' value='1,5,10-50' size=50>
    "; html += me.htmlCls.buttonStr + "reload_chainalign_asym2' style='margin-top:3px;'>Align by Sequence Alignment

    "; html += "(Note: To align chains in custom PDB files, you could load them in \"File > Open File > PDB Files (appendable)\" and click \"Analysis > Defined Sets\". Finally select multiple chains in Defined Sets and click \"File > Realign Selection\".)

    "; diff --git a/src/html/setMenu.js b/src/html/setMenu.js index 2d031665..83b1342b 100644 --- a/src/html/setMenu.js +++ b/src/html/setMenu.js @@ -8,7 +8,7 @@ class SetMenu { //this.sh = this.icn3dui.htmlCls.setHtmlCls; } - // simpify the calls of the following functions from setHtmlCls + // simplify the calls of the following functions from setHtmlCls getLink(id, text, bSimpleMenu, selType) { let me = this.icn3dui; return me.htmlCls.setHtmlCls.getLink(id, text, bSimpleMenu, selType); } @@ -438,7 +438,7 @@ class SetMenu { let bCmdWindow, html = ""; - // check comand window + // check command window let value = me.htmlCls.setHtmlCls.getCookie('cmdwindow'); if(value != '') { bCmdWindow = (bCmdWindowInput !== undefined) ? bCmdWindowInput : parseInt(value); diff --git a/src/icn3d/analysis/alignSW.js b/src/icn3d/analysis/alignSW.js index 879d71eb..0aa9d8d9 100644 --- a/src/icn3d/analysis/alignSW.js +++ b/src/icn3d/analysis/alignSW.js @@ -103,7 +103,7 @@ class AlignSW { * @param a match score, positive * @param b mismatch score, negative * - * @return sqaure scoring matrix. The last row and column are zero, for + * @return square scoring matrix. The last row and column are zero, for * matching an ambiguous residue. */ bsa_gen_score_matrix(n, a, b) { let ic = this.icn3d, me = ic.icn3dui; @@ -149,7 +149,7 @@ class AlignSW { } /** - * Local or global pairwise alignemnt + * Local or global pairwise alignment * * @param is_local perform local alignment * @param target target string @@ -273,7 +273,7 @@ class AlignSW { i, k, start_i = 0; if (is_local) { i = end_i, k = end_j; - if (end_j != qlen - 1) // then add soft cliping + if (end_j != qlen - 1) // then add soft clipping this.push_cigar(cigar, 4, qlen - 1 - end_j); } else i = t.length - 1, k = (i + w + 1 < qlen ? i + w + 1 : qlen) - 1; // (i,k) points to the last cell while (i >= 0 && k >= 0) { diff --git a/src/icn3d/analysis/analysis.js b/src/icn3d/analysis/analysis.js index 4610eb59..818f9ba6 100644 --- a/src/icn3d/analysis/analysis.js +++ b/src/icn3d/analysis/analysis.js @@ -271,7 +271,7 @@ class Analysis { } ic.hlObjectsCls.removeHlObjects(); } - //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labeld + //Display the terminal labels for the atoms in "atomHash". The termini of proteins are labelled //as "N-" and "C-". The termini of nucleotides are labeled as "5'" and "3'". addTerminiLabels(atoms) {var ic = this.icn3d, me = ic.icn3dui; let size = 18; diff --git a/src/icn3d/analysis/refnum.js b/src/icn3d/analysis/refnum.js index 02b522c8..1d7d01b3 100644 --- a/src/icn3d/analysis/refnum.js +++ b/src/icn3d/analysis/refnum.js @@ -286,7 +286,7 @@ /* } catch(err) { - let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assing reference numbers to avoid overloading the server..."; + let mess = "Some of " + ajaxArray.length + " TM-align alignments failed. Please select a chain or a subset to assign reference numbers to avoid overloading the server..."; if(!me.bNode) { alert(mess); } diff --git a/src/icn3d/analysis/symd.js b/src/icn3d/analysis/symd.js index 5fa5fb6e..817fee5e 100644 --- a/src/icn3d/analysis/symd.js +++ b/src/icn3d/analysis/symd.js @@ -309,8 +309,8 @@ class Symd { let chainid2 = chainid2Ori; // if one chain, separate it into two chains to show seq alignment if(bOnechain) { - let stucture = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); - chainid2 = stucture + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); + let structure = chainid2Ori.substr(0, chainid2Ori.indexOf('_')); + chainid2 = structure + '2' + chainid2Ori.substr(chainid2Ori.indexOf('_')); } residuesHash[resObject1.resid] = 1; @@ -340,7 +340,7 @@ class Symd { ic.atomPrevColors[j] = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { diff --git a/src/icn3d/annotations/addTrack.js b/src/icn3d/annotations/addTrack.js index 56c94ad0..292cc51d 100644 --- a/src/icn3d/annotations/addTrack.js +++ b/src/icn3d/annotations/addTrack.js @@ -1824,12 +1824,12 @@ class AddTrack { while (i < A.length && j < B.length) { if(A[i] != B[j]) { if(A[i] == '-') { - // inser "-" in B + // insert "-" in B B = B.substr(0, j) + '-' + B.substr(j); seqFirst = seqFirst.substr(0, j) + '-' + seqFirst.substr(j); } else { //if(B[j] == '-') { - // inser "-" in A + // insert "-" in A for(let k = 0; k < ALen; ++k) { trackSeqArray[k] = trackSeqArray[k].substr(0, i) + '-' + trackSeqArray[k].substr(i); } diff --git a/src/icn3d/annotations/annoCddSite.js b/src/icn3d/annotations/annoCddSite.js index 3ae48208..736d11c1 100644 --- a/src/icn3d/annotations/annoCddSite.js +++ b/src/icn3d/annotations/annoCddSite.js @@ -288,7 +288,7 @@ class AnnoCddSite { let domain =(bDomain) ? domainArray[index].title.split(':')[0] : domainArray[index].title; // convert double quote domain = domain.replace(/\"/g, "``"); - // convert singe quote + // convert single quote domain = domain.replace(/'/g, "`"); if(bDomain) acc2domain[acc] = domain; @@ -307,7 +307,7 @@ class AnnoCddSite { if(!domainRepeatArray) continue; for(let r = 0, rl = domainRepeatArray.length; r < rl; ++r) { - // each domain repeat or domain may have several segments, i.e., a domain may not be continous + // each domain repeat or domain may have several segments, i.e., a domain may not be continuous let fromArray = [], toArray = []; let resiHash = {} let resCnt = 0; diff --git a/src/icn3d/annotations/annoPTM.js b/src/icn3d/annotations/annoPTM.js index d99d55ee..595fdc79 100644 --- a/src/icn3d/annotations/annoPTM.js +++ b/src/icn3d/annotations/annoPTM.js @@ -178,7 +178,7 @@ class AnnoPTM { html += '
    '; html2 += html; html3 += html; - let stucture = chnid.substr(0, chnid.indexOf('_')); + let structure = chnid.substr(0, chnid.indexOf('_')); for(let ptm in ptmHash) { let ptmArray = ptmHash[ptm]; @@ -190,7 +190,7 @@ class AnnoPTM { let end = parseInt(ptmArray[i].end); for(let j = begin; j <= end; ++j) { - if(stucture.length > 5) { // UniProt + if(structure.length > 5) { // UniProt resPosArray.push(j - 1); // 0-based } else { // PDB diff --git a/src/icn3d/annotations/annoSnpClinVar.js b/src/icn3d/annotations/annoSnpClinVar.js index 91c959e5..fe1d0c9d 100644 --- a/src/icn3d/annotations/annoSnpClinVar.js +++ b/src/icn3d/annotations/annoSnpClinVar.js @@ -329,7 +329,7 @@ class AnnoSnpClinVar { snpTitle += pos + c + '>' + resi2snp[i][j]; if(!bSnpOnly) { - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; @@ -412,7 +412,7 @@ class AnnoSnpClinVar { bCoord = false; } - // disease and significace + // disease and significance let diseaseArray = resi2disease[i][j].split('; '); let sigArray = resi2sig[i][j].split('; '); let diseaseTitle = ''; diff --git a/src/icn3d/annotations/domain3d.js b/src/icn3d/annotations/domain3d.js index 6af527ac..9d40bd90 100644 --- a/src/icn3d/annotations/domain3d.js +++ b/src/icn3d/annotations/domain3d.js @@ -1060,7 +1060,7 @@ class Domain3d { } } - // extract the continguous segments + // extract the contiguous segments let inseg = false; let startseg; //vector segments; diff --git a/src/icn3d/annotations/showSeq.js b/src/icn3d/annotations/showSeq.js index 0185a97f..e0afde41 100644 --- a/src/icn3d/annotations/showSeq.js +++ b/src/icn3d/annotations/showSeq.js @@ -628,7 +628,7 @@ class ShowSeq { let firstChar = (refnumLabel) ? refnumLabel.substr(0,1) : ''; if(!bStart && refnumLabel && (firstChar == 'A' || firstChar == 'B')) { // start of a new IG domain bStart = true; - resCnt = 1; // the first oen is included + resCnt = 1; // the first one is included } if(prevStrand.substr(0,1) == 'G' && !refnumLabel) { // indicate the end of an IG domain diff --git a/src/icn3d/display/applyClbonds.js b/src/icn3d/display/applyClbonds.js index 842099f3..c2e7525b 100644 --- a/src/icn3d/display/applyClbonds.js +++ b/src/icn3d/display/applyClbonds.js @@ -66,7 +66,7 @@ class ApplyClbonds { // show side chains for the selected atoms let atoms = me.hashUtilsCls.intHash(residueAtoms, ic.sidec); - // draw sidec separatedly + // draw sidec separately for(let k in atoms) { ic.atoms[k].style2 = 'stick'; } diff --git a/src/icn3d/display/applySsbonds.js b/src/icn3d/display/applySsbonds.js index dd991357..de362894 100644 --- a/src/icn3d/display/applySsbonds.js +++ b/src/icn3d/display/applySsbonds.js @@ -163,7 +163,7 @@ class ApplySsbonds { // include calphas // atoms = me.hashUtilsCls.unionHash(atoms, calpha_atoms); - // draw sidec separatedly + // draw sidec separately for(let j in atoms) { ic.atoms[j].style2 = style; } diff --git a/src/icn3d/display/draw.js b/src/icn3d/display/draw.js index 6f5d9571..97b0769c 100644 --- a/src/icn3d/display/draw.js +++ b/src/icn3d/display/draw.js @@ -150,7 +150,7 @@ if (intersects.length>0){ controller.children[0].scale.z = intersects[0].distance; // stop on the object - intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(ic.mdl.position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; diff --git a/src/icn3d/display/setOption.js b/src/icn3d/display/setOption.js index ea580d4e..865cdb2e 100644 --- a/src/icn3d/display/setOption.js +++ b/src/icn3d/display/setOption.js @@ -117,7 +117,7 @@ class SetOption { atoms = me.hashUtilsCls.intHash(ic.hAtoms, ic.water); break; } - // draw sidec separatedly + // draw sidec separately if(selectionType === 'sidec' || selectionType === 'ntbase') { for(let i in atoms) { ic.atoms[i].style2 = style; diff --git a/src/icn3d/display/setStyle.js b/src/icn3d/display/setStyle.js index a50ef60c..e3254735 100644 --- a/src/icn3d/display/setStyle.js +++ b/src/icn3d/display/setStyle.js @@ -12,7 +12,7 @@ class SetStyle { ic.style2atoms = {}; for(let i in atoms) { - // do not show water in assemly + // do not show water in assembly //if(ic.bAssembly && ic.water.hasOwnProperty(i)) { // ic.atoms[i].style = 'nothing'; //} diff --git a/src/icn3d/export/shareLink.js b/src/icn3d/export/shareLink.js index 3c2f79ae..76ad4404 100644 --- a/src/icn3d/export/shareLink.js +++ b/src/icn3d/export/shareLink.js @@ -8,12 +8,12 @@ class ShareLink { } //Generate a URL to capture the current state and open it in a new window. Basically the state - //file (the comand history) is concatenated in the URL to show the current state. + //file (the command history) is concatenated in the URL to show the current state. async shareLink(bPngHtml, bPngOnly) { let ic = this.icn3d, me = ic.icn3dui; let url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; - //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime + //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name every time //var inputid =(ic.inputid) ? ic.inputid : "custom"; let inputid = Object.keys(ic.structures).join('_'); @@ -338,7 +338,7 @@ class ShareLink { } getPngText() { let ic = this.icn3d, me = ic.icn3dui; - let url; // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + let url; // output state file if ic.bInputfile is true or the URL is more than 4000 chars let bAllCommands = true; let text = ""; @@ -369,7 +369,7 @@ class ShareLink { url = this.shareLinkUrl(); let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false; if(bTooLong) { - url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is mor than 4000 chars + url = this.shareLinkUrl(bAllCommands); // output state file if ic.bInputfile is true or the URL is more than 4000 chars text += "\nStart of state file======\n"; diff --git a/src/icn3d/export/threeDPrint.js b/src/icn3d/export/threeDPrint.js index d8ceb010..9fd98b78 100644 --- a/src/icn3d/export/threeDPrint.js +++ b/src/icn3d/export/threeDPrint.js @@ -16,7 +16,7 @@ class ThreeDPrint { ic.dotSphereScale = 0.6; //0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - //ic.cylinderHelixRadius = 1.6; // style sylinder and plate + //ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 1.0; //0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 2.0; //1.3; // style ribbon, stand thickness @@ -27,7 +27,7 @@ class ThreeDPrint { //Prepare for 3D printing by changing dashed lines to solid lines, changing the thickness of the model. prepareFor3Dprint( ){ let ic = this.icn3d, me = ic.icn3dui; - // turn off hilight + // turn off highlight ic.bShowHighlight = false; ic.hlObjectsCls.removeHlObjects(); @@ -84,7 +84,7 @@ class ThreeDPrint { ic.traceRadius = 0.4; // style c alpha trace, nucleotide stick ic.dotSphereScale = 0.3; // style ball and stick, dot ic.sphereRadius = 1.5; // style sphere - ic.cylinderHelixRadius = 1.6; // style sylinder and plate + ic.cylinderHelixRadius = 1.6; // style cylinder and plate ic.ribbonthickness = 0.2; // style ribbon, nucleotide cartoon, stand thickness ic.helixSheetWidth = 1.3; // style ribbon, nucleotide cartoon, stand thickness diff --git a/src/icn3d/highlight/hlObjects.js b/src/icn3d/highlight/hlObjects.js index 4ea0f9d5..913b629f 100644 --- a/src/icn3d/highlight/hlObjects.js +++ b/src/icn3d/highlight/hlObjects.js @@ -22,14 +22,14 @@ class HlObjects { //Remove the highlight. The atom selection does not change. removeHlObjects() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects[i]); } ic.prevHighlightObjects = []; - // remove prevous highlight + // remove previous highlight for(let i in ic.prevHighlightObjects_ghost) { if(ic.mdl) ic.mdl.remove(ic.prevHighlightObjects_ghost[i]); } diff --git a/src/icn3d/icn3d.js b/src/icn3d/icn3d.js index 9b586851..1f734b2a 100644 --- a/src/icn3d/icn3d.js +++ b/src/icn3d/icn3d.js @@ -247,7 +247,7 @@ class iCn3D { //This is the sphere radius for the style 'Sphere'. It's 1.5 by default. this.sphereRadius = 1.5; // style sphere //This is the cylinder radius for the style 'Cylinder and Plate'. It's 1.6 by default. - this.cylinderHelixRadius = 1.6; // style sylinder and plate + this.cylinderHelixRadius = 1.6; // style cylinder and plate //This is the ribbon thickness for helix and sheet ribbons, and nucleotide ribbons. It's 0.4 by default. this.ribbonthickness = 0.2; // 0.4; // style ribbon, nucleotide cartoon, stand thickness @@ -381,7 +381,7 @@ class iCn3D { // these variables will not be cleared for each structure this.commands = []; // a list of commands, ordered by the operation steps. Each operation will be converted into a command. this command list can be used to go backward and forward. this.optsHistory = []; // a list of options corresponding to this.commands. - this.logs = []; // a list of comands and other logs, ordered by the operation steps. + this.logs = []; // a list of commands and other logs, ordered by the operation steps. //This is a flag to turn off the rendering part if a sequence of commands are executed. It's true by default. this.bRender = true; // a flag to turn off rendering when loading state file @@ -405,7 +405,7 @@ class iCn3D { //this.curveWidth = 3; this.threshbox = 180; // maximum possible boxsize, default 180 - this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files wil be output for 3D printing + this.maxAtoms3DMultiFile = 40000; // above the threshold, multiple files will be output for 3D printing this.tsHbond = 3.8; this.tsIonic = 6; @@ -706,7 +706,7 @@ iCn3D.prototype.init_base = function (bKeepCmd) { this.alnChainsAnTtl = {}; // structure_chain name -> array of annotation title //this.dAtoms = {}; // show selected atoms - //this.hAtoms = {}; // used to change color or dislay type for certain atoms + //this.hAtoms = {}; // used to change color or display type for certain atoms this.pickedAtomList = {}; // used to switch among different highlight levels @@ -763,7 +763,7 @@ iCn3D.prototype.init_base = function (bKeepCmd) { this.style2atoms = {}; // style -> atom hash, 13 styles: ribbon, strand, cylinder and plate, nucleotide cartoon, o3 trace, schematic, c alpha trace, b factor tube, lines, stick, ball and stick, sphere, dot, nothing this.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance this.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance @@ -796,7 +796,7 @@ iCn3D.prototype.reinitAfterLoad = function () { let ic = this, me = ic.icn3dui; ic.setColorCls.setColorByOptions(ic.opts, ic.atoms); ic.dAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // show selected atoms - ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or dislay type for certain atoms + ic.hAtoms = me.hashUtilsCls.cloneHash(ic.atoms); // used to change color or display type for certain atoms ic.prevHighlightObjects = []; ic.prevHighlightObjects_ghost = []; @@ -809,7 +809,7 @@ iCn3D.prototype.reinitAfterLoad = function () { let ic = this, me = ic.icn3dui; ic.prevOtherMesh = []; ic.labels = {}; // hash of name -> a list of labels. Each label contains 'position', 'text', 'size', 'color', 'background' - // label name could be custom, residue, schmatic, distance + // label name could be custom, residue, schematic, distance ic.lines = {}; // hash of name -> a list of solid or dashed lines. Each line contains 'position1', 'position2', 'color', and a boolean of 'dashed' // line name could be custom, hbond, ssbond, distance diff --git a/src/icn3d/interaction/piHalogen.js b/src/icn3d/interaction/piHalogen.js index 2b233eef..c0b73981 100644 --- a/src/icn3d/interaction/piHalogen.js +++ b/src/icn3d/interaction/piHalogen.js @@ -95,7 +95,7 @@ class PiHalogen { // only parallel or perpendicular if(interactionType == 'pi-stacking' && atom1.normal !== undefined && atom2.normal !== undefined) { let dotResult = Math.abs(atom1.normal.dot(atom2.normal)); - // perpendicular 30 degree || parellel, 30 degree + // perpendicular 30 degree || parallel, 30 degree // remove this condition on Nov 19, 2021 //if(dotResult > 0.5 && dotResult < 0.866) continue; } @@ -472,7 +472,7 @@ class PiHalogen { ic.ring_mark[cur] = cyclenumber; // backtrack the vertex which are - // in the current cycle thats found + // in the current cycle that's found while (cur != u) { cur = ic.ring_par[cur]; ic.ring_mark[cur] = cyclenumber; diff --git a/src/icn3d/parsers/ccp4Parser.js b/src/icn3d/parsers/ccp4Parser.js index ce56775c..028593f5 100644 --- a/src/icn3d/parsers/ccp4Parser.js +++ b/src/icn3d/parsers/ccp4Parser.js @@ -333,8 +333,8 @@ class Ccp4Parser { points.push(orth); // get overlap between map and atoms - let positoin = new THREE.Vector3(orth[0], orth[1], orth[2]); - let atomsNear = ic.rayCls.getAtomsFromPosition(positoin, threshold, ic.hAtoms); + let position = new THREE.Vector3(orth[0], orth[1], orth[2]); + let atomsNear = ic.rayCls.getAtomsFromPosition(position, threshold, ic.hAtoms); let map_value = (atomsNear || !bAtoms) ? grid.get_grid_value(i, j, k) : 0; diff --git a/src/icn3d/parsers/chainalignParser.js b/src/icn3d/parsers/chainalignParser.js index db35bb8c..f240755b 100644 --- a/src/icn3d/parsers/chainalignParser.js +++ b/src/icn3d/parsers/chainalignParser.js @@ -63,7 +63,7 @@ class ChainalignParser { thisClass.transformStructure(mmdbid_q, index-1, 'query'); } - // dynamicly align pairs in ic.afChainIndexHash + // dynamically align pairs in ic.afChainIndexHash let ajaxArray = [], indexArray = [], struArray = []; let urlalign = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi"; let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi"; @@ -291,7 +291,7 @@ class ChainalignParser { } // If all chains align to the same target, just check the query. - // If there are different targets, also just check the query. The taget should not appear again in the query. + // If there are different targets, also just check the query. The target should not appear again in the query. alignMMdbids[target] = 1; if(alignMMdbids.hasOwnProperty(query)) continue; diff --git a/src/icn3d/parsers/loadPDB.js b/src/icn3d/parsers/loadPDB.js index debedbc9..632b4efd 100644 --- a/src/icn3d/parsers/loadPDB.js +++ b/src/icn3d/parsers/loadPDB.js @@ -208,7 +208,7 @@ class LoadPDB { maxMissingResi = 0; } - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing //if(!isNaN(resi) && (prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain && resi > maxMissingResi)) ) { if(prevMissingChain == '' || (chain != prevMissingChain) || (chain == prevMissingChain) ) { ic.chainMissingResidueArray[chainNum].push(resObject); diff --git a/src/icn3d/parsers/mmcifParser.js b/src/icn3d/parsers/mmcifParser.js index 7bacf0e7..4fb5a222 100644 --- a/src/icn3d/parsers/mmcifParser.js +++ b/src/icn3d/parsers/mmcifParser.js @@ -78,7 +78,7 @@ class MmcifParser { maxMissingResi = 0; } - // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the firts four residues are considered missing + // not all listed residues are considered missing, e.g., PDB ID 4OR2, only the first four residues are considered missing if(!isNaN(resi) &&(prevMissingChain == '' ||(chain != prevMissingChain) ||(chain == prevMissingChain && resi > maxMissingResi)) ) { ic.chainMissingResidueArray[chainNum].push(resObject); diff --git a/src/icn3d/parsers/parserUtils.js b/src/icn3d/parsers/parserUtils.js index f71f098c..ebc08c8f 100644 --- a/src/icn3d/parsers/parserUtils.js +++ b/src/icn3d/parsers/parserUtils.js @@ -158,7 +158,7 @@ class ParserUtils { resiPos = 0; } - // fixe some missing residue names such as residue 6 in 5C1M_A + // fix some missing residue names such as residue 6 in 5C1M_A if(seqName === '') { seqName = 'x'; } diff --git a/src/icn3d/parsers/pdbParser.js b/src/icn3d/parsers/pdbParser.js index 830ccd17..f27f7312 100644 --- a/src/icn3d/parsers/pdbParser.js +++ b/src/icn3d/parsers/pdbParser.js @@ -135,7 +135,7 @@ class PdbParser { } // calculate secondary structures if not available - // DSSP only works for structures with all atoms. The Calpha only strucutres didn't work + // DSSP only works for structures with all atoms. The Calpha only structures didn't work //if(!ic.bSecondaryStructure && !bCalphaOnly) { let bCalcSecondary = false; if(ic.bSecondaryStructure && Object.keys(ic.structures).length == 1) { diff --git a/src/icn3d/parsers/sdfParser.js b/src/icn3d/parsers/sdfParser.js index e8c4022f..5941788a 100644 --- a/src/icn3d/parsers/sdfParser.js +++ b/src/icn3d/parsers/sdfParser.js @@ -18,7 +18,7 @@ class SdfParser { // get parent CID let urlParent = "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/" + ic.inputid + "/cids/JSONP?cids_type=parent"; - let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parant CID..."); + let dataParent = await me.getAjaxPromise(urlParent, 'jsonp', true, "Can not retrieve the parent CID..."); let cidParent = dataParent.IdentifierList.CID[0]; diff --git a/src/icn3d/parsers/setSeqAlign.js b/src/icn3d/parsers/setSeqAlign.js index 85ed57fc..3cff25aa 100644 --- a/src/icn3d/parsers/setSeqAlign.js +++ b/src/icn3d/parsers/setSeqAlign.js @@ -69,7 +69,7 @@ class SetSeqAlign { let chain2 = ic.pdbid_molid2chain[mmdbid2 + '_' + molid2]; let chainid2 = mmdbid2 + '_' + chain2; - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; if(ic.alnChainsAnTtl[chainid1][0] === undefined ) ic.alnChainsAnTtl[chainid1][0] = []; if(ic.alnChainsAnTtl[chainid1][1] === undefined ) ic.alnChainsAnTtl[chainid1][1] = []; @@ -782,7 +782,7 @@ class SetSeqAlign { hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp); } - // 3. assign the varaible ic.alnChainsAnno + // 3. assign the variable ic.alnChainsAnno for(let i = 0; i < 3 + 2*n; ++i) { if(ic.alnChainsAnno[chainid1][i] === undefined ) ic.alnChainsAnno[chainid1][i] = []; } @@ -1328,7 +1328,7 @@ class SetSeqAlign { ic.atoms[j].color = me.parasCls.thr(color); } - // annoation title for the master seq only + // annotation title for the master seq only if(ic.alnChainsAnTtl[chainid1] === undefined ) ic.alnChainsAnTtl[chainid1] = []; for(let j = 0; j < 3; ++j) { diff --git a/src/icn3d/parsers/vastplus.js b/src/icn3d/parsers/vastplus.js index 741be7f9..3de1425a 100644 --- a/src/icn3d/parsers/vastplus.js +++ b/src/icn3d/parsers/vastplus.js @@ -548,7 +548,7 @@ class Vastplus { } } - // for each curernt nodes, assign its nearest neighbor and the distance + // for each current nodes, assign its nearest neighbor and the distance let mNearestNB = {}, mNearestNBCopy = {}, mNearestNBDist = {}; selI = n; diff --git a/src/icn3d/picking/ray.js b/src/icn3d/picking/ray.js index 2c14bdb9..f94c768e 100644 --- a/src/icn3d/picking/ray.js +++ b/src/icn3d/picking/ray.js @@ -91,7 +91,7 @@ class Ray { let position = mdl.position; if ( intersects.length > 0 ) { // the intersections are sorted so that the closest point is the first one. - intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be substracted. + intersects[ 0 ].point.sub(position); // mdl.position was moved to the original (0,0,0) after reading the molecule coordinates. The raycasting was done based on the original. The position of the original should be subtracted. let threshold = ic.rayThreshold; //0.5; let atom = this.getAtomsFromPosition(intersects[ 0 ].point, threshold); // the second parameter is the distance threshold. The first matched atom will be returned. Use 1 angstrom, not 2 angstrom. If it's 2 angstrom, other atom will be returned. diff --git a/src/icn3d/selection/definedSets.js b/src/icn3d/selection/definedSets.js index b134801a..a48cec29 100644 --- a/src/icn3d/selection/definedSets.js +++ b/src/icn3d/selection/definedSets.js @@ -378,7 +378,7 @@ class DefinedSets { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); //$("#" + ic.pre + "command_desc").val(""); @@ -499,7 +499,7 @@ class DefinedSets { // show selected chains in annotation window ic.annotationCls.showAnnoSelectedChains(); - // clear commmand + // clear command $("#" + ic.pre + "command").val(""); $("#" + ic.pre + "command_name").val(""); diff --git a/src/icn3d/selection/loadScript.js b/src/icn3d/selection/loadScript.js index 789a8d06..9b1dda23 100644 --- a/src/icn3d/selection/loadScript.js +++ b/src/icn3d/selection/loadScript.js @@ -861,7 +861,7 @@ class LoadScript { ic.hlUpdateCls.updateHlAll(); - // caused some problem witht the following line + // caused some problem with the following line // $.extend(ic.opts, ic.optsHistory[steps - 1]); ic.drawCls.draw(); } diff --git a/src/icn3d/surface/applyMap.js b/src/icn3d/surface/applyMap.js index 0b3ef04d..e8ac0e2a 100644 --- a/src/icn3d/surface/applyMap.js +++ b/src/icn3d/surface/applyMap.js @@ -193,7 +193,7 @@ class ApplyMap { //Remove previously drawn surfaces. removeSurfaces() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevSurfaces.length; i < il; ++i) { ic.mdl.remove(ic.prevSurfaces[i]); } @@ -202,7 +202,7 @@ class ApplyMap { } removeLastSurface() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevSurfaces.length > 0) { ic.mdl.remove(ic.prevSurfaces[ic.prevSurfaces.length - 1]); ic.prevSurfaces.slice(ic.prevSurfaces.length - 1, 1); @@ -210,7 +210,7 @@ class ApplyMap { } removeMaps() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevMaps.length; i < il; ++i) { ic.mdl.remove(ic.prevMaps[i]); } @@ -219,7 +219,7 @@ class ApplyMap { } removeEmmaps() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevEmmaps.length; i < il; ++i) { ic.mdl.remove(ic.prevEmmaps[i]); } @@ -228,7 +228,7 @@ class ApplyMap { } removePhimaps() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight for(let i = 0, il = ic.prevPhimaps.length; i < il; ++i) { ic.mdl.remove(ic.prevPhimaps[i]); @@ -238,7 +238,7 @@ class ApplyMap { } removeLastMap() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevMaps.length > 0) { ic.mdl.remove(ic.prevMaps[ic.prevMaps.length - 1]); ic.prevMaps.slice(ic.prevMaps.length - 1, 1); @@ -246,7 +246,7 @@ class ApplyMap { } removeLastEmmap() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevEmmaps.length > 0) { ic.mdl.remove(ic.prevEmmaps[ic.prevEmmaps.length - 1]); ic.prevEmmaps.slice(ic.prevEmmaps.length - 1, 1); @@ -254,7 +254,7 @@ class ApplyMap { } removeLastPhimap() { let ic = this.icn3d, me = ic.icn3dui; - // remove prevous highlight + // remove previous highlight if(ic.prevPhimaps.length > 0) { ic.mdl.remove(ic.prevPhimaps[ic.prevPhimaps.length - 1]); ic.prevPhimaps.slice(ic.prevPhimaps.length - 1, 1); diff --git a/src/icn3d/surface/electronMap.js b/src/icn3d/surface/electronMap.js index 710d53f9..365996fe 100644 --- a/src/icn3d/surface/electronMap.js +++ b/src/icn3d/surface/electronMap.js @@ -162,7 +162,7 @@ ElectronMap.prototype.getFacesAndVertices = function(allatoms, atomlist) { if(fa !== fb && fb !== fc && fa !== fc){ if(this.header.ccp4) { - // only transfered vertices will be used + // only transferred vertices will be used if(vertTrans.hasOwnProperty(vertices[fa].index) && vertTrans.hasOwnProperty(vertices[fb].index) && vertTrans.hasOwnProperty(vertices[fc].index)) { finalfaces.push({"a":fa, "b":fb, "c":fc}); @@ -357,7 +357,7 @@ ElectronMap.prototype.fillvoxels = function(atoms, atomlist) { //(int seqinit,in let r = atom.coord.clone(); if(this.loadPhiFrom != 'delphi') { // transform to the original position if the potential file is imported if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } @@ -432,7 +432,7 @@ ElectronMap.prototype.fillvoxels = function(atoms, atomlist) { //(int seqinit,in let r; if(this.rmsd_supr !== undefined && this.rmsd_supr.rot !== undefined) { - // revert to the orginal coord + // revert to the original coord let coord = this.transformMemPro(atom.coord, inverseRot, centerTo, centerFrom); r = coord.applyMatrix4(inverseMatrix); } diff --git a/src/icn3d/surface/surface.js b/src/icn3d/surface/surface.js index ddb7d770..a79fa801 100644 --- a/src/icn3d/surface/surface.js +++ b/src/icn3d/surface/surface.js @@ -112,7 +112,7 @@ class Surface { } } else if(type == 13) { // em - cfg.maxdist = 3; // EM map has no unit cell. It could include more gird space. + cfg.maxdist = 3; // EM map has no unit cell. It could include more grid space. cfg.header = ic.mapData.headerEm; cfg.data = ic.mapData.dataEm; diff --git a/src/icn3dui.js b/src/icn3dui.js index 2a9a2905..c54e603c 100644 --- a/src/icn3dui.js +++ b/src/icn3dui.js @@ -709,7 +709,7 @@ iCn3DUI.prototype.getXMLHttpRqstPromise = function(url, dataType, responseType, alert("Density server at EBI has no corresponding EM density map for this structure."); } else if(mapType == 'rcsbEdmaps') { - alert("RCSB server has no corresponding eletron density map for this structure."); + alert("RCSB server has no corresponding electron density map for this structure."); } else { alert("The " + mapType + " file is unavailable..."); diff --git a/src/thirdparty/three/vr/CanvasKeyboard.js b/src/thirdparty/three/vr/CanvasKeyboard.js index c3d748bb..d2f191ae 100644 --- a/src/thirdparty/three/vr/CanvasKeyboard.js +++ b/src/thirdparty/three/vr/CanvasKeyboard.js @@ -73,7 +73,7 @@ class CanvasKeyboard{ config[`btn${i+20}`] = btn; x += ( w + padding ); } - //4rd row + //4th row y += (height + padding); x = padding; for (let i=0; i<5; i++){ diff --git a/src/thirdparty/three/vr/GLTFLoader.js b/src/thirdparty/three/vr/GLTFLoader.js index f2196dcb..7cc13621 100644 --- a/src/thirdparty/three/vr/GLTFLoader.js +++ b/src/thirdparty/three/vr/GLTFLoader.js @@ -4104,7 +4104,7 @@ function buildNodeHierarchy( nodeId, parentObject, json, parser ) { } ).then( function ( node ) { - // build node hierachy + // build node hierarchy parentObject.add( node );