icn3d 3.28.5 → 3.28.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/icn3d.js CHANGED
@@ -5765,7 +5765,7 @@ class ClickMenu {
5765
5765
  continue;
5766
5766
  }
5767
5767
 
5768
- if(id == 'mn1_searchstru') {
5768
+ if(id == 'mn1_searchgrooup') {
5769
5769
  html += "<td valign='top'>";
5770
5770
  }
5771
5771
  else if(id == 'mn2_definedsets') {
@@ -8528,11 +8528,11 @@ class SetMenu {
8528
8528
  html += this.getMenuText('mn1_fold', 'Predict by Seq.', undefined, undefined, 1);
8529
8529
  html += "<ul>";
8530
8530
  html += this.getLink('mn1_esmfold', 'ESMFold', undefined, 2);
8531
- html += this.getLink('mn1_alphafold', 'AlphaFold2 via ColabFold', undefined, 2);
8531
+ //html += this.getMenuUrl('mn1_esmfold_link', "https://colab.research.google.com/github/sokrypton/ColabFold/blob/main/ESMFold.ipynb", "ESMFold via ColabFold" + me.htmlCls.wifiStr, undefined, 2);
8532
+ html += this.getLink('mn1_alphafold', 'AlphaFold2 via ColabFold' + me.htmlCls.wifiStr, undefined, 2);
8532
8533
  html += "</ul>";
8533
8534
 
8534
8535
 
8535
-
8536
8536
  html += this.getMenuText('mn1_alignwrap', 'Align', undefined, 1, 1);
8537
8537
  html += "<ul>";
8538
8538
 
@@ -9771,7 +9771,7 @@ class SetMenu {
9771
9771
  html += this.getMenuUrl('abouticn3d', me.htmlCls.baseUrl + "icn3d/icn3d.html#about", "About iCn3D<span style='font-size:0.9em'> " + me.REVISION + "</span>", 1, 1);
9772
9772
 
9773
9773
  html += this.getMenuUrl('gallery', me.htmlCls.baseUrl + "icn3d/icn3d.html#gallery", "Live Gallery " + me.htmlCls.wifiStr, 1, 1);
9774
- html += this.getMenuUrl('video', me.htmlCls.baseUrl + "icn3d/icn3d.html#videos", "iCn3D Videos", 1, 1);
9774
+ html += this.getMenuUrl('video', me.htmlCls.baseUrl + "icn3d/icn3d.html#videos", "Videos & Tutorials", 1, 1);
9775
9775
 
9776
9776
  html += this.getMenuText('mn6_faq', 'FAQ', undefined, 1, 1);
9777
9777
 
@@ -10588,7 +10588,7 @@ class SetDialog {
10588
10588
  html += 'Note: <b>VAST</b> identifies 3D domains (substructures) within each protein structure in the Molecular Modeling Database (MMDB), and then finds other protein structures that have one or more similar 3D domains, using purely geometric criteria. You have two ways to do a VAST search.<br><br>';
10589
10589
 
10590
10590
  html += '<b>Option 1</b>, search with your selection (all residues are selected by default) in the loaded structures:<br>';
10591
- html += '<form method=post enctype=multipart/form-data action="https://www.ncbi.nlm.nih.gov/Structure/vast/VSMmdb.cgi" id="' + me.pre + 'newvs2" name="newvs2" target="_blank">';
10591
+ html += '<form data-ncbi-sg-search="true" method=post enctype=multipart/form-data action="https://www.ncbi.nlm.nih.gov/Structure/vast/VSMmdb.cgi" id="' + me.pre + 'newvs2" name="newvs2" target="_blank">';
10592
10592
  html += '<input type=hidden id="' + me.pre + 'pdbstr" name="pdbstr">';
10593
10593
  html += "Searching against: <input type='radio' name='dataset' value='Non-redundant subset' checked> Medium-redundancy Subset of PDB <a href='https://www.ncbi.nlm.nih.gov/Structure/VAST/vasthelp.html#VASTNR' title='Medium-redundancy Subset' target='_blank'>?</a> <input type='radio' name='dataset' value='All'>All of PDB <br>";
10594
10594
  // the submit value has to be "Submit" in order to make the backend cgi works
@@ -10602,12 +10602,12 @@ class SetDialog {
10602
10602
  html += me.htmlCls.buttonStr + "reload_vast'>VAST</button><br><br>";
10603
10603
 
10604
10604
  html += '<b>Option 3</b>, search with a PDB file:<br>';
10605
- html += '<form method=post enctype=multipart/form-data action="https://www.ncbi.nlm.nih.gov/Structure/vast/VSMmdb.cgi" id="' + me.pre + 'newvs" name="newvs" target="_blank">';
10605
+ html += '<form data-ncbi-sg-search="true" method=post enctype=multipart/form-data action="https://www.ncbi.nlm.nih.gov/Structure/vast/VSMmdb.cgi" id="' + me.pre + 'newvs" name="newvs" target="_blank">';
10606
10606
  html += "PDB File: " + me.htmlCls.inputFileStr + " name='pdbfile' size=8><br>";
10607
10607
  html += "Searching against: <input type='radio' name='dataset' value='Non-redundant subset' checked> Medium-redundancy Subset of PDB <a href='https://www.ncbi.nlm.nih.gov/Structure/VAST/vasthelp.html#VASTNR' title='Medium-redundancy Subset' target='_blank'>?</a> <input type='radio' name='dataset' value='All'>All of PDB <br>";
10608
10608
  // the submit value has to be "Submit" in order to make the backend cgi works
10609
10609
  //html += '<input type="submit" name="' + me.pre + 'cmdVSMmdb" value="VAST Search"></input>';
10610
- html += '<input type="submit" name="cmdVSMmdb" value="Submit"></input>';
10610
+ html += '<input type="submit" id="' + me.pre + 'cmdVSMmdb" name="cmdVSMmdb" value="Submit"></input>';
10611
10611
  html += "</form><br>";
10612
10612
 
10613
10613
  html += "</div>";
@@ -10843,7 +10843,7 @@ class SetDialog {
10843
10843
  html += me.htmlCls.divStr + "dl_mmdbid' class='" + dialogClass + "' style='max-width:500px'>";
10844
10844
  html += this.addNotebookTitle('dl_mmdbid', 'Please input an MMDB ID');
10845
10845
  html += "MMDB or PDB ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "mmdbid' value='1TUP' size=8> <br><br>";
10846
- html += me.htmlCls.buttonStr + "reload_mmdb_asym'>Load Asymmetric Unit (All Chains)</button>" + me.htmlCls.buttonStr + "reload_mmdb' style='margin-left:30px'>Load Biological Unit</button><br/><br/><br>";
10846
+ html += me.htmlCls.buttonStr + "reload_mmdb'>Load Biological Unit</button>" + me.htmlCls.buttonStr + "reload_mmdb_asym' style='margin-left:30px'>Load Asymmetric Unit (All Chains)</button><br/><br/><br/>";
10847
10847
  html += '<b>Note</b>: The "<b>biological unit</b>" is the <b>biochemically active form of a biomolecule</b>, <div style="width:20px; margin:6px 0 0 20px; display:inline-block;"><span id="'
10848
10848
  + me.pre + 'asu_bu_expand" class="ui-icon ui-icon-plus icn3d-expand icn3d-link" style="width:15px;" title="Expand"></span><span id="'
10849
10849
  + me.pre + 'asu_bu_shrink" class="ui-icon ui-icon-minus icn3d-shrink icn3d-link" style="display:none; width:15px;" title="Shrink"></span></div>';
@@ -14803,7 +14803,7 @@ class SetHtml {
14803
14803
  if(selType) me.htmlCls.allMenusSel[id] = selType;
14804
14804
  if(bSimpleMenu) me.htmlCls.simpleMenus[id] = 1;
14805
14805
 
14806
- return "<li><span id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
14806
+ return "<li><span data-pinger id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
14807
14807
  }
14808
14808
 
14809
14809
  // a group of menus
@@ -14815,7 +14815,7 @@ class SetHtml {
14815
14815
  let styleStr = (classname == 'icn3d-menupd') ? " style='padding-left:1.5em!important;'" : "";
14816
14816
 
14817
14817
  // no ending "</li>"" since this is usually the start of a group of menus
14818
- return "<li><span id='" + me.pre + id + "'" + styleStr + ">" + text + "</span>";
14818
+ return "<li><span data-pinger id='" + me.pre + id + "'" + styleStr + ">" + text + "</span>";
14819
14819
  }
14820
14820
 
14821
14821
  getMenuUrl(id, url, text, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
@@ -14836,7 +14836,7 @@ class SetHtml {
14836
14836
  if(bSimpleMenu) me.htmlCls.simpleMenus[id] = 1;
14837
14837
 
14838
14838
  let hideStr = (bHide) ? ' style="display:none"' : '';
14839
- return "<li id='" + me.pre + wrapper + "'" + hideStr + "><span id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
14839
+ return "<li id='" + me.pre + wrapper + "'" + hideStr + "><span data-pinger id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
14840
14840
  }
14841
14841
 
14842
14842
  getLinkWrapper2(id, text, wrapper, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
@@ -14844,7 +14844,7 @@ class SetHtml {
14844
14844
  if(selType) me.htmlCls.allMenusSel[id] = selType;
14845
14845
  if(bSimpleMenu) me.htmlCls.simpleMenus[id] = 1;
14846
14846
 
14847
- return "<li id='" + me.pre + wrapper + "'><span id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span>";
14847
+ return "<li id='" + me.pre + wrapper + "'><span data-pinger id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span>";
14848
14848
  }
14849
14849
 
14850
14850
  getRadio(radioid, id, text, bChecked, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
@@ -14855,8 +14855,7 @@ class SetHtml {
14855
14855
  let checkedStr =(bChecked) ? ' checked' : '';
14856
14856
 
14857
14857
  //https://stackoverflow.com/questions/17541614/use-images-instead-of-radio-buttons/17541916
14858
- //return "<li><label for='" + me.pre + id + "' class='icn3d-rad'>" + me.htmlCls.inputRadioStr + "name='" + me.pre + radioid + "' " + "class='" + me.pre + radioid + "' " + "v='" + text + "' id='" + me.pre + id + "'" + checkedStr + "><span class='ui-icon ui-icon-blank'></span> <span class='icn3d-rad-text'>" + text + "</span></label></li>";
14859
- return "<li><label id='" + me.pre + id + "' class='icn3d-rad'>" + me.htmlCls.inputRadioStr + "name='" + me.pre + radioid + "' " + "class='" + me.pre + radioid + "' " + "v='" + text + "'" + checkedStr + "><span class='ui-icon ui-icon-blank'></span> <span class='icn3d-rad-text'>" + text + "</span></label></li>";
14858
+ return "<li><label data-pinger id='" + me.pre + id + "' class='icn3d-rad'>" + me.htmlCls.inputRadioStr + "name='" + me.pre + radioid + "' " + "class='" + me.pre + radioid + "' " + "v='" + text + "'" + checkedStr + "><span class='ui-icon ui-icon-blank'></span> <span class='icn3d-rad-text'>" + text + "</span></label></li>";
14860
14859
  }
14861
14860
 
14862
14861
  getRadioColor(radioid, id, text, color, bChecked, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
@@ -14867,8 +14866,7 @@ class SetHtml {
14867
14866
  let checkedStr =(bChecked) ? ' checked' : '';
14868
14867
 
14869
14868
  //https://stackoverflow.com/questions/17541614/use-images-instead-of-radio-buttons/17541916
14870
- //return "<li><label for='" + me.pre + id + "' class='icn3d-rad'>" + me.htmlCls.inputRadioStr + "name='" + me.pre + radioid + "' id='" + me.pre + id + "'" + checkedStr + "><span class='ui-icon ui-icon-blank'></span> <span class='icn3d-color-rad-text' color='" + color + "'><span style='background-color:#" + color + "'>" + me.htmlCls.space3 + "</span> " + text + "</span></label></li>";
14871
- return "<li><label id='" + me.pre + id + "' class='icn3d-rad'>" + me.htmlCls.inputRadioStr + "name='" + me.pre + radioid + "'" + checkedStr + "><span class='ui-icon ui-icon-blank'></span> <span class='icn3d-color-rad-text' color='" + color + "'><span style='background-color:#" + color + "'>" + me.htmlCls.space3 + "</span> " + text + "</span></label></li>";
14869
+ return "<li><label data-pinger id='" + me.pre + id + "' class='icn3d-rad'>" + me.htmlCls.inputRadioStr + "name='" + me.pre + radioid + "'" + checkedStr + "><span class='ui-icon ui-icon-blank'></span> <span class='icn3d-color-rad-text' color='" + color + "'><span style='background-color:#" + color + "'>" + me.htmlCls.space3 + "</span> " + text + "</span></label></li>";
14872
14870
  }
14873
14871
 
14874
14872
  setAdvanced(index) { let me = this.icn3dui; me.icn3d;
@@ -15223,7 +15221,7 @@ class SetHtml {
15223
15221
  html += "</ul>";
15224
15222
 
15225
15223
  html += me.htmlCls.divStr + name1 + "tab1'>";
15226
- if(type == 'delphi') html += this.addGsizeSalt(name1) + "<br>";
15224
+ if(type == 'delphi') html += this.addGsizeSalt(name1 + "1") + "<br>";
15227
15225
 
15228
15226
  html += "<span style='white-space:nowrap;font-weight:bold;'>Potential contour at: <select id='" + me.pre + name1 + "contour'>";
15229
15227
 
@@ -15288,7 +15286,7 @@ class SetHtml {
15288
15286
  html += "</div>";
15289
15287
 
15290
15288
  html += me.htmlCls.divStr + name1 + "tab2'>";
15291
- if(type == 'delphi') html += this.addGsizeSalt(name1) + "<br>";
15289
+ if(type == 'delphi') html += this.addGsizeSalt(name1 + "2") + "<br>";
15292
15290
 
15293
15291
  html += "<span style='white-space:nowrap;font-weight:bold;'>Surface with max potential at: <select id='" + me.pre + name1 + "contour2'>";
15294
15292
 
@@ -35922,7 +35920,7 @@ class AnnoCddSite {
35922
35920
  //if(me.cfg.afid) {
35923
35921
 
35924
35922
  // use precalculated CDD annotation if
35925
- if( (Object.keys(ic.structures).length == 1 && (me.cfg.mmtfid || me.cfg.pdbid || me.cfg.opmid || me.cfg.mmdbid || me.cfg.gi || me.cfg.uniprotid || me.cfg.blast_rep_id || me.cfg.cid || me.cfg.mmcifid))
35923
+ if( (Object.keys(ic.structures).length == 1 && !me.cfg.afid && (me.cfg.mmtfid || me.cfg.pdbid || me.cfg.opmid || me.cfg.mmdbid || me.cfg.gi || me.cfg.uniprotid || me.cfg.blast_rep_id || me.cfg.cid || me.cfg.mmcifid))
35926
35924
  || (Object.keys(ic.structures).length == 2 && me.cfg.align) ) {
35927
35925
  let data = {};
35928
35926
  try {
@@ -39759,7 +39757,7 @@ class AddTrack {
39759
39757
  if(exonArray) {
39760
39758
  for(let j = 0, jl = exonArray.length; j < jl; ++j) {
39761
39759
  let start = exonArray[j].resStart, end = exonArray[j].resEnd;
39762
- let genStart = exonArray[j].genomeRange.split('-')[0];
39760
+ let genStart = parseInt(exonArray[j].genomeRange.split('-')[0]);
39763
39761
 
39764
39762
  for(let k = 0, kl = end - start + 1; k < kl; ++k) {
39765
39763
  let colorStr = this.getExonColor(start, end, cnt);
@@ -42024,7 +42022,7 @@ class ShowAnno {
42024
42022
  url = "https://rest.uniprot.org/uniprotkb/search?format=json&fields=xref_geneid,gene_names&query=" + structure;
42025
42023
  let geneData = await me.getAjaxPromise(url, 'json');
42026
42024
  let geneId = (geneData.results[0] && geneData.results[0].uniProtKBCrossReferences && geneData.results[0].uniProtKBCrossReferences[0]) ? geneData.results[0].uniProtKBCrossReferences[0].id : undefined;
42027
- let geneSymbol = (geneData.results[0] && geneData.results[0].genes && geneData.results[0].genes[0] && geneData.results[0].genes[0].geneName) ? geneData.results[0].genes[0].geneName.value : undefined;
42025
+ let geneSymbol = (geneData.results[0] && geneData.results[0].genes && geneData.results[0].genes[0] && geneData.results[0].genes[0].geneName) ? geneData.results[0].genes[0].geneName.value : 'ID ' + geneId;
42028
42026
  ic.chainsGene[chnid] = {geneId: geneId, geneSymbol: geneSymbol};
42029
42027
  }
42030
42028
  }
@@ -45305,7 +45303,7 @@ class LineGraph {
45305
45303
  let thisClass = this;
45306
45304
 
45307
45305
  // round 1, 16 templates
45308
- ic.refpdbArray = ['1InsulinR_8guyE_human_FN3-n1', '1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', '1CoAtomerGamma1_1r4xA_human', '1C3_2qkiD_human_n1', '1CuZnSuperoxideDismutase_1hl5C_human', '1ASF1A_2iijA_human', '1FAB-LIGHT_5esv_C1-n2', '1CD2_1hnfA_human_C2-n2', '1NaCaExchanger_2fwuA_dog_n2', '1FAB-HEAVY_5esv_V-n1', '1PDL1_4z18B_human_V-n1', '1BTLA_2aw2A_human_Iset', '1LaminAC_1ifrA_human', '1IsdA_2iteA_bacteria', '1TCRa_6jxrm_human_C1-n2', '1CD19_6al5A_human_C2orV-n1'];
45306
+ ic.refpdbArray = ['1InsulinR_8guyE_human_FN3-n1', '1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', '1CoAtomerGamma1_1r4xA_human', '1C3_2qkiD_human_n1', '1CuZnSuperoxideDismutase_1hl5C_human', '1ASF1A_2iijA_human', '1FAB-LIGHT_5esv_C1-n2', '1CD2_1hnfA_human_C2-n2', '1NaCaExchanger_2fwuA_dog_n2', '1FAB-HEAVY_5esv_V-n1', '1PDL1_4z18B_human_V-n1', '1BTLA_2aw2A_human_Iset', '1LaminAC_1ifrA_human', '1IsdA_2iteA_bacteria', '1TCRa_6jxrm_human_C1-n2', '1CD19_6al5A_human_C2orV-n1', '1CD28_1yjdC_human_V'];
45309
45307
 
45310
45308
  // round 2
45311
45309
  ic.refpdbHash = {};
@@ -45324,52 +45322,55 @@ class LineGraph {
45324
45322
  ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human'];
45325
45323
  ic.refpdbHash['1IsdA_2iteA_bacteria'] = ['IsdA_2iteA_bacteria'];
45326
45324
  ic.refpdbHash['1TCRa_6jxrm_human_C1-n2'] = ['TCRa_6jxrm_human_C1-n2'];
45327
- ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
45325
+ ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
45326
+ ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V'];
45328
45327
 
45329
45328
  // use known ref structure
45330
- ic.refpdbHash['5ESV'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2', 'FAB-LIGHT_5esv_C1-n2'];
45331
- ic.refpdbHash['8GUY'] = ['InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2'];
45332
- ic.refpdbHash['6JXR'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
45333
- ic.refpdbHash['1HNF'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
45334
- ic.refpdbHash['7TZG'] = ['LAG3_7tzgD_human_V-n1', 'LAG3_7tzgD_human_C2-n2'];
45335
- ic.refpdbHash['6PY8'] = ['RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
45336
- ic.refpdbHash['1BQU'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
45337
-
45338
- ic.refpdbHash['1R4X'] = ['CoAtomerGamma1_1r4xA_human'];
45339
- ic.refpdbHash['6OIL'] = ['VISTA_6oilA_human_V'];
45340
- ic.refpdbHash['2ZXE'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
45341
- ic.refpdbHash['1I8A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
45342
- ic.refpdbHash['2FWU'] = ['NaCaExchanger_2fwuA_dog_n2'];
45343
- ic.refpdbHash['4JQI'] = ['BArrestin1_4jqiA_rat_n1'];
45344
- ic.refpdbHash['1NBQ'] = ['JAM1_1nbqA_human_VorIset-n2'];
45345
- ic.refpdbHash['1O75'] = ['TP47_1o75A_bacteria'];
45346
- ic.refpdbHash['7PHR'] = ['MHCIa_7phrH_human_C1'];
45347
- ic.refpdbHash['2IIJ'] = ['ASF1A_2iijA_human'];
45348
- ic.refpdbHash['4Z18'] = ['PDL1_4z18B_human_V-n1'];
45349
- ic.refpdbHash['1T6V'] = ['VNAR_1t6vN_shark_V'];
45350
- ic.refpdbHash['2O6C'] = ['TP34_2o6cA_bacteria'];
45351
- ic.refpdbHash['3KYS'] = ['TEAD1_3kysC_human'];
45352
- ic.refpdbHash['7PHR'] = ['B2Microglobulin_7phrL_human_C1'];
45353
- ic.refpdbHash['2AW2'] = ['BTLA_2aw2A_human_Iset'];
45354
- ic.refpdbHash['1HL5'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
45355
- ic.refpdbHash['1WF5'] = ['Sidekick2_1wf5A_human_FN3-n7'];
45356
- ic.refpdbHash['5J0B'] = ['Siglec3_5j0bB_human_C2-n2'];
45357
- ic.refpdbHash['1IFR'] = ['LaminAC_1ifrA_human'];
45358
- ic.refpdbHash['Q7Z7D3'] = ['VTCN1_Q7Z7D3_human_V-n2'];
45359
- ic.refpdbHash['4ZQK'] = ['PD1_4zqkB_human_V'];
45360
- ic.refpdbHash['2DM3'] = ['Palladin_2dm3A_human_Iset-n1'];
45361
- ic.refpdbHash['2ITE'] = ['IsdA_2iteA_bacteria'];
45362
- ic.refpdbHash['1XAK'] = ['ORF7a_1xakA_virus'];
45363
- ic.refpdbHash['4ZT1'] = ['ECadherin_4zt1A_human_n2'];
45364
- ic.refpdbHash['1LMI'] = ['MPT63_1lmiA_bacteria'];
45365
- ic.refpdbHash['1CD8'] = ['CD8a_1cd8A_human_V'];
45366
- ic.refpdbHash['3S97'] = ['Contactin1_3s97C_human_C2-n2'];
45367
- ic.refpdbHash['1AXI'] = ['GHR_1axiB_human_FN3-n1'];
45368
- ic.refpdbHash['6X4G'] = ['ICOS_6x4gA_human_V'];
45369
- ic.refpdbHash['2EE2'] = ['Contactin1_2ee2A_human_FN3-n9'];
45370
- ic.refpdbHash['4UOW'] = ['Titin_4uowM_human_Unk-n152'];
45371
- ic.refpdbHash['6A15'] = ['CD19_6al5A_human_C2orV-n1'];
45372
- ic.refpdbHash['2QKI'] = ['C3_2qkiD_human_n1'];
45329
+ ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
45330
+ ic.refpdbHash['5ESV_D'] = ['FAB-LIGHT_5esv_V-n1', 'FAB-LIGHT_5esv_C1-n2'];
45331
+ ic.refpdbHash['8GUY_E'] = ['InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2'];
45332
+ ic.refpdbHash['6JXR_m'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
45333
+ ic.refpdbHash['1HNF_A'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
45334
+ ic.refpdbHash['7TZG_D'] = ['LAG3_7tzgD_human_V-n1', 'LAG3_7tzgD_human_C2-n2'];
45335
+ ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
45336
+ ic.refpdbHash['1BQU_B'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
45337
+
45338
+ ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
45339
+ ic.refpdbHash['6OIL_A'] = ['VISTA_6oilA_human_V'];
45340
+ ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
45341
+ ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
45342
+ ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
45343
+ ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
45344
+ ic.refpdbHash['1NBQ_A'] = ['JAM1_1nbqA_human_VorIset-n2'];
45345
+ ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
45346
+ ic.refpdbHash['7PHR_H'] = ['MHCIa_7phrH_human_C1'];
45347
+ ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
45348
+ ic.refpdbHash['4Z18_B'] = ['PDL1_4z18B_human_V-n1'];
45349
+ ic.refpdbHash['1T6V_N'] = ['VNAR_1t6vN_shark_V'];
45350
+ ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
45351
+ ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
45352
+ ic.refpdbHash['7PHR_L'] = ['B2Microglobulin_7phrL_human_C1'];
45353
+ ic.refpdbHash['2AW2_A'] = ['BTLA_2aw2A_human_Iset'];
45354
+ ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
45355
+ ic.refpdbHash['1WF5_A'] = ['Sidekick2_1wf5A_human_FN3-n7'];
45356
+ ic.refpdbHash['5J0B_B'] = ['Siglec3_5j0bB_human_C2-n2'];
45357
+ ic.refpdbHash['1IFR_A'] = ['LaminAC_1ifrA_human'];
45358
+ ic.refpdbHash['Q7Z7D3_A'] = ['VTCN1_Q7Z7D3_human_V-n2'];
45359
+ ic.refpdbHash['4ZQK_B'] = ['PD1_4zqkB_human_V'];
45360
+ ic.refpdbHash['2DM3_A'] = ['Palladin_2dm3A_human_Iset-n1'];
45361
+ ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
45362
+ ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
45363
+ ic.refpdbHash['4ZT1_A'] = ['ECadherin_4zt1A_human_n2'];
45364
+ ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
45365
+ ic.refpdbHash['1CD8_A'] = ['CD8a_1cd8A_human_V'];
45366
+ ic.refpdbHash['3S97_C'] = ['Contactin1_3s97C_human_C2-n2'];
45367
+ ic.refpdbHash['1AXI_B'] = ['GHR_1axiB_human_FN3-n1'];
45368
+ ic.refpdbHash['6X4G_A'] = ['ICOS_6x4gA_human_V'];
45369
+ ic.refpdbHash['2EE2_A'] = ['Contactin1_2ee2A_human_FN3-n9'];
45370
+ ic.refpdbHash['4UOW_M'] = ['Titin_4uowM_human_Unk-n152'];
45371
+ ic.refpdbHash['6A15_A'] = ['CD19_6al5A_human_C2orV-n1'];
45372
+ ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
45373
+ ic.refpdbHash['1YJD_C'] = ['CD28_1yjdC_human_V'];
45373
45374
 
45374
45375
  let pdbAjaxArray = [];
45375
45376
  for(let k = 0, kl = ic.refpdbArray.length; k < kl; ++k) {
@@ -45663,11 +45664,14 @@ class LineGraph {
45663
45664
  //if(!(bBstrand && bCstrand && bEstrand && bFstrand && bGstrand)) continue;
45664
45665
  if(!(bBstrand && bCstrand && bEstrand && bFstrand)) {
45665
45666
  if(!me.bNode) console.log("Some of the Ig strands B, C, E, F are missing in the domain " + domainid + "...");
45667
+ if(ic.domainid2refpdbname[domainid]) delete ic.domainid2refpdbname[domainid];
45666
45668
  continue;
45667
45669
  }
45668
45670
  }
45669
45671
 
45670
45672
  if(!bRound1) {
45673
+ console.log("domainid: " + domainid);
45674
+
45671
45675
  if(!domainid2score.hasOwnProperty(domainid) || queryData[0].score > domainid2score[domainid]) {
45672
45676
  domainid2score[domainid] = queryData[0].score;
45673
45677
 
@@ -45699,11 +45703,14 @@ class LineGraph {
45699
45703
  for(let domainid in ic.domainid2refpdbname) {
45700
45704
  let pdbAjaxArray = [];
45701
45705
  let refpdbname = ic.domainid2refpdbname[domainid];
45702
- let pdbid = domainid.substr(0, domainid.indexOf('_'));
45706
+ //let pdbid = domainid.substr(0, domainid.indexOf('_'));
45707
+ let chainid = domainid.substr(0, domainid.indexOf('-'));
45703
45708
 
45704
- if(ic.refpdbHash.hasOwnProperty(pdbid)) {
45709
+ //if(ic.refpdbHash.hasOwnProperty(pdbid)) {
45710
+ if(ic.refpdbHash.hasOwnProperty(chainid)) {
45705
45711
  // use itself as the ref structure
45706
- refpdbname = pdbid;
45712
+ //refpdbname = pdbid;
45713
+ refpdbname = chainid;
45707
45714
 
45708
45715
  if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
45709
45716
  }
@@ -45745,11 +45752,11 @@ class LineGraph {
45745
45752
  dataArray3 = await allPromise;
45746
45753
 
45747
45754
  await thisClass.parseAlignData(dataArray3, domainidpairArray3);
45748
-
45755
+
45749
45756
  // end of round 2
45750
45757
  return;
45751
45758
  }
45752
-
45759
+
45753
45760
  // combine domainid into chainid
45754
45761
  let processedChainid = {};
45755
45762
  for(let domainid in ic.domainid2refpdbname) {
@@ -45856,17 +45863,18 @@ class LineGraph {
45856
45863
 
45857
45864
  // A-: 10xx
45858
45865
  // A: 11xx
45866
+ // A+ continue A
45859
45867
  // A': 12xx
45860
- // A+: 13xx
45861
45868
  // B: 21xx
45862
45869
  // C: 32xx
45863
45870
  // C': 42xx
45864
45871
  // C'': 51xx, 52xx
45865
45872
  // D: 61xx
45866
45873
  // E: 71xx
45874
+ // E+: continue E
45867
45875
  // F: 82xx
45868
45876
  // G: 91xx, 92xx
45869
- // G+: 94xx
45877
+ // G+: continue G
45870
45878
 
45871
45879
  // if(refnum < 100) return " " + oriRefnum;
45872
45880
  // else if(refnum >= 100 && refnum < 1000) {
@@ -45876,11 +45884,10 @@ class LineGraph {
45876
45884
  if(refnum < 900) return undefined;
45877
45885
  else if(refnum >= 900 && refnum < 1000) return " " + oriRefnum;
45878
45886
  else if(refnum >= 1000 && refnum < 1100) return "A-" + oriRefnum;
45879
- else if(refnum >= 1100 && refnum < 1200) return "A" + oriRefnum;
45887
+ else if(refnum >= 1100 && refnum < 1200) return "A" + oriRefnum; // could be A+
45880
45888
  else if(refnum >= 1200 && refnum < 1300) return "A'" + oriRefnum;
45881
- //else if(refnum >= 1300 && refnum < 1400) return "A*" + oriRefnum;
45882
- else if(refnum >= 1300 && refnum < 1400) return "A+" + oriRefnum;
45883
- else if(refnum >= 1400 && refnum < 2000) {
45889
+ //else if(refnum >= 1300 && refnum < 1400) return "A+" + oriRefnum;
45890
+ else if(refnum >= 1300 && refnum < 2000) {
45884
45891
  if(prevStrand && prevStrand.substr(0, 1) == 'A') {
45885
45892
  return prevStrand + oriRefnum;
45886
45893
  }
@@ -45893,12 +45900,11 @@ class LineGraph {
45893
45900
  else if(refnum >= 4000 && refnum < 5000) return "C'" + oriRefnum;
45894
45901
  else if(refnum >= 5000 && refnum < 6000) return "C''" + oriRefnum;
45895
45902
  else if(refnum >= 6000 && refnum < 7000) return "D" + oriRefnum;
45896
- else if(refnum >= 7000 && refnum < 8000) return "E" + oriRefnum;
45903
+ else if(refnum >= 7000 && refnum < 8000) return "E" + oriRefnum; // could be E+
45897
45904
  else if(refnum >= 8000 && refnum < 9000) return "F" + oriRefnum;
45898
- else if(refnum >= 9000 && refnum < 9400) return "G" + oriRefnum;
45899
- //else if(refnum >= 9400 && refnum < 9500) return "G*" + oriRefnum;
45900
- else if(refnum >= 9400 && refnum < 9500) return "G+" + oriRefnum;
45901
- else if(refnum >= 9500) return "G" + oriRefnum;
45905
+ else if(refnum >= 9000 && refnum < 9300) return "G" + oriRefnum; // could be G+
45906
+ //else if(refnum >= 9400 && refnum < 9500) return "G+" + oriRefnum;
45907
+ else if(refnum >= 9300) return "G" + oriRefnum;
45902
45908
  }
45903
45909
 
45904
45910
  async parseCustomRefFile(data) { let ic = this.icn3d; ic.icn3dui;
@@ -49812,7 +49818,12 @@ class ChainalignParser {
49812
49818
  targetAjax = me.getAjaxPromise(url_t, 'text');
49813
49819
  }
49814
49820
  else {
49815
- url_t = me.htmlCls.baseUrl + "mmdb/mmdb_strview.cgi?v=2&program=icn3d&b=1&s=1&ft=1&bu=" + me.cfg.bu + "&uid=" + structure;
49821
+ let structureTmp = structure;
49822
+ if(structure.length == 5) {
49823
+ structureTmp = structure.substr(0,4);
49824
+ }
49825
+
49826
+ url_t = me.htmlCls.baseUrl + "mmdb/mmdb_strview.cgi?v=2&program=icn3d&b=1&s=1&ft=1&bu=" + me.cfg.bu + "&uid=" + structureTmp;
49816
49827
  if(me.cfg.inpara !== undefined) url_t += me.cfg.inpara;
49817
49828
 
49818
49829
  targetAjax = me.getAjaxPromise(url_t, 'jsonp');
@@ -49889,7 +49900,8 @@ class ChainalignParser {
49889
49900
  }
49890
49901
  else {
49891
49902
  let bNoSeqalign = true;
49892
- hAtomsTmp = await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign);
49903
+ let pdbid = structArray[i];
49904
+ hAtomsTmp = await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign, pdbid);
49893
49905
  }
49894
49906
 
49895
49907
  hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp);
@@ -50386,7 +50398,7 @@ class MmdbParser {
50386
50398
  if(Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
50387
50399
  // use mmtfid
50388
50400
  let pdbid = data.pdbId;
50389
- ic.mmtfParserCls.downloadMmtf(pdbid);
50401
+ await ic.mmtfParserCls.downloadMmtf(pdbid);
50390
50402
 
50391
50403
  return;
50392
50404
  }
@@ -50551,9 +50563,10 @@ class MmdbParser {
50551
50563
  }
50552
50564
  }
50553
50565
 
50554
- async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign) { let ic = this.icn3d, me = ic.icn3dui;
50566
+ async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign, pdbidIn) { let ic = this.icn3d, me = ic.icn3dui;
50555
50567
  let hAtoms;
50556
- let pdbid =(data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
50568
+ let pdbid = (data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
50569
+ if(pdbidIn) pdbid = pdbidIn;
50557
50570
 
50558
50571
  this.parseMmdbDataPart1(data, type);
50559
50572
 
@@ -50778,7 +50791,7 @@ class MmdbParser {
50778
50791
  url = me.htmlCls.baseUrl + "mmdb/mmdb_strview.cgi?v=2&program=icn3d&b=1&s=1&ft=1&bu=" + me.cfg.bu + "&simple=1&uid=" + mmdbid;
50779
50792
  }
50780
50793
 
50781
- // use asymmetric unit for BLAST search, e.g., https://www.ncbi.nlm.nih.gov/Structure/icn3d/full.html?from=blast&blast_rep_id=5XZC_B&query_id=1TUP_A&command=view+annotations;set+annotation+cdd;set+annotation+site;set+view+detailed+view;select+chain+5XZC_B;show+selection&log$=align&blast_rank=1&RID=EPUCYNVV014&bu=0
50794
+ // use asymmetric unit for BLAST search, e.g., https://www.ncbi.nlm.nih.gov/Structure/icn3d/?from=blast&blast_rep_id=5XZC_B&query_id=1TUP_A&command=view+annotations;set+annotation+cdd;set+annotation+site;set+view+detailed+view;select+chain+5XZC_B;show+selection&log$=align&blast_rank=1&RID=EPUCYNVV014&bu=0
50782
50795
  if(me.cfg.blast_rep_id !== undefined) url += '&bu=0';
50783
50796
 
50784
50797
  //ic.bCid = undefined;
@@ -50810,57 +50823,31 @@ class MmtfParser {
50810
50823
 
50811
50824
  //MMTF is a new binary data format besides the previous PDB and mmCIF formats for 3D structures.
50812
50825
  //The JavaScript Methods at http://mmtf.rcsb.org/ was used to load and parse the data.
50813
- downloadMmtf(mmtfid) { let ic = this.icn3d; ic.icn3dui;
50826
+ async downloadMmtf(mmtfid) { let ic = this.icn3d, me = ic.icn3dui;
50814
50827
  ic.ParserUtilsCls.setYourNote(mmtfid.toUpperCase() + '(MMTF) in iCn3D');
50815
50828
  //ic.bCid = undefined;
50816
50829
 
50817
- MMTF.fetchReduced(
50818
- mmtfid,
50819
- // onLoad callback
50820
- async function( mmtfData ){
50821
- if(mmtfData.numAtoms * 10 > ic.maxatomcnt) {
50822
- let bFull = false;
50823
- if(Object.keys(mmtfData).length == 0) {
50824
- var aaa = 1; //alert('This PDB structure is not found at RCSB...');
50825
- return;
50826
- }
50830
+ let mmtfData = await me.getMmtfReducedPromise(mmtfid);
50831
+ if(mmtfData.numAtoms * 10 > ic.maxatomcnt) {
50832
+ let bFull = false;
50833
+ if(Object.keys(mmtfData).length == 0) {
50834
+ var aaa = 1; //alert('This PDB structure is not found at RCSB...');
50835
+ return;
50836
+ }
50827
50837
 
50828
- await ic.opmParserCls.loadOpmData(mmtfData, mmtfid, bFull, 'mmtf');
50829
- }
50830
- else {
50831
- mmtfData = null;
50832
-
50833
- MMTF.fetch(
50834
- mmtfid,
50835
- // onLoad callback
50836
- async function( mmtfData2 ){
50837
- let bFull = true;
50838
- if(Object.keys(mmtfData2).length == 0) {
50839
- var aaa = 1; //alert('This PDB structure is not found at RCSB...');
50840
- return;
50841
- }
50842
- // ic.deferredOpm = $.Deferred(function() {
50843
- // ic.opmParserCls.loadOpmData(mmtfData2, mmtfid, bFull, 'mmtf');
50844
- // });
50845
-
50846
- // return ic.deferredOpm.promise();
50847
-
50848
- await ic.opmParserCls.loadOpmData(mmtfData2, mmtfid, bFull, 'mmtf');
50849
- },
50850
- // onError callback
50851
- function( error ){
50852
- //var aaa = 1; //alert('This PDB structure is not found at RCSB...');
50853
- //console.error( error )
50854
- }
50855
- );
50856
- }
50857
- },
50858
- // onError callback
50859
- function( error ){
50860
- //var aaa = 1; //alert('This PDB structure is not found at RCSB...');
50861
- //console.error( error )
50838
+ await ic.opmParserCls.loadOpmData(mmtfData, mmtfid, bFull, 'mmtf');
50839
+ }
50840
+ else {
50841
+ let mmtfData2 = await me.getMmtfPromise(mmtfid);
50842
+
50843
+ let bFull = true;
50844
+ if(Object.keys(mmtfData2).length == 0) {
50845
+ var aaa = 1; //alert('This PDB structure is not found at RCSB...');
50846
+ return;
50862
50847
  }
50863
- );
50848
+
50849
+ await ic.opmParserCls.loadOpmData(mmtfData2, mmtfid, bFull, 'mmtf');
50850
+ }
50864
50851
  }
50865
50852
 
50866
50853
  async parseMmtfData(mmtfData, mmtfid, bFull) { let ic = this.icn3d, me = ic.icn3dui;
@@ -58745,7 +58732,6 @@ class ApplyCommand {
58745
58732
  let command = commandOri.toLowerCase();
58746
58733
 
58747
58734
  // exact match =============
58748
-
58749
58735
  //var file_pref =(ic.inputid) ? ic.inputid : "custom";
58750
58736
  if(command == 'share link') {
58751
58737
  await ic.shareLinkCls.shareLink();
@@ -61659,6 +61645,7 @@ class LoadScript {
61659
61645
  ic.inputid = id;
61660
61646
  if(command.indexOf('load mmtf') !== -1) {
61661
61647
  me.cfg.mmtfid = id;
61648
+
61662
61649
  await ic.mmtfParserCls.downloadMmtf(id);
61663
61650
  }
61664
61651
  else if(command.indexOf('load pdb') !== -1) {
@@ -64149,8 +64136,11 @@ class Delphi {
64149
64136
  let salt = saltArray[1]; //parseFloat(saltArray[1]);
64150
64137
 
64151
64138
  // The values should be string
64152
- $("#" + ic.pre + "delphigsize").val(gsize);
64153
- $("#" + ic.pre + "delphisalt").val(salt);
64139
+ $("#" + ic.pre + "delphi1gsize").val(gsize);
64140
+ $("#" + ic.pre + "delphi1salt").val(salt);
64141
+
64142
+ $("#" + ic.pre + "delphi2gsize").val(gsize);
64143
+ $("#" + ic.pre + "delphi2salt").val(salt);
64154
64144
 
64155
64145
  if(paraArray.length == 7) {
64156
64146
  let surfaceArray = paraArray[4].split(" ");
@@ -64175,11 +64165,11 @@ class Delphi {
64175
64165
  }
64176
64166
 
64177
64167
  async loadDelphiFile(type) { let ic = this.icn3d, me = ic.icn3dui;
64178
- let gsize = $("#" + ic.pre + "delphigsize").val();
64179
- let salt = $("#" + ic.pre + "delphisalt").val();
64180
- let contour =(type == 'delphi2') ? $("#" + ic.pre + "delphicontour2").val() : $("#" + ic.pre + "delphicontour").val();
64168
+ let gsize = (type == 'delphi2') ? $("#" + ic.pre + "delphi2gsize").val() : $("#" + ic.pre + "delphi1gsize").val();
64169
+ let salt = (type == 'delphi2') ? $("#" + ic.pre + "delphi2salt").val() : $("#" + ic.pre + "delphi1gsize").val();
64170
+ let contour = (type == 'delphi2') ? $("#" + ic.pre + "delphicontour2").val() : $("#" + ic.pre + "delphicontour").val();
64181
64171
 
64182
- let bSurface =(type == 'delphi2') ? true: false;
64172
+ let bSurface = (type == 'delphi2') ? true: false;
64183
64173
 
64184
64174
  await this.CalcPhi(gsize, salt, contour, bSurface);
64185
64175
 
@@ -67907,7 +67897,7 @@ class ResizeCanvas {
67907
67897
 
67908
67898
  ic.applyCenterCls.setWidthHeight(width, heightTmp);
67909
67899
 
67910
- if(bDraw === undefined || bDraw) {
67900
+ if(ic.structures && Object.keys(ic.structures).length > 0 && (bDraw === undefined || bDraw)) {
67911
67901
  ic.drawCls.draw();
67912
67902
  }
67913
67903
  }
@@ -69405,7 +69395,8 @@ class ShareLink {
69405
69395
  let url = this.shareLinkUrl();
69406
69396
 
69407
69397
  let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false;
69408
- if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime
69398
+ //if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime
69399
+
69409
69400
  //var inputid =(ic.inputid) ? ic.inputid : "custom";
69410
69401
  let inputid = Object.keys(ic.structures).join('_');
69411
69402
  if(inputid == ic.defaultPdbId) {
@@ -69513,7 +69504,7 @@ class ShareLink {
69513
69504
  }
69514
69505
 
69515
69506
  shareLinkUrl(bAllCommands, bOutputCmd) { let ic = this.icn3d, me = ic.icn3dui;
69516
- let url = me.htmlCls.baseUrl + "icn3d/full.html?";
69507
+ let url = me.htmlCls.baseUrl + "icn3d/?";
69517
69508
  let outputCmd = '';
69518
69509
  if(me.cfg.bSidebyside) url = me.htmlCls.baseUrl + "icn3d/full2.html?";
69519
69510
 
@@ -72578,7 +72569,7 @@ class iCn3DUI {
72578
72569
  //even when multiple iCn3D viewers are shown together.
72579
72570
  this.pre = this.cfg.divid + "_";
72580
72571
 
72581
- this.REVISION = '3.28.0';
72572
+ this.REVISION = '3.28.1';
72582
72573
 
72583
72574
  // In nodejs, iCn3D defines "window = {navigator: {}}"
72584
72575
  this.bNode = (Object.keys(window).length < 2) ? true : false;
@@ -72784,17 +72775,17 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
72784
72775
  chainidArray.push(domainidArray[i]);
72785
72776
  }
72786
72777
  }
72787
-
72788
- let mmdbafid = '';
72789
- for(let i = 0, il = chainidArray.length; i < il; ++i) {
72790
- if(i > 0) mmdbafid += ',';
72791
- mmdbafid += chainidArray[i].substr(0, chainidArray[i].indexOf('_'));
72792
- }
72793
72778
 
72794
72779
  // realign
72795
72780
  ic.chainidArray = [chain_t].concat(chainidArray);
72796
72781
  ic.chainidArray = ic.chainalignParserCls.addPostfixForChainids(ic.chainidArray);
72797
72782
 
72783
+ let mmdbafid = '';
72784
+ for(let i = 0, il = ic.chainidArray.length; i < il; ++i) {
72785
+ if(i > 0) mmdbafid += ',';
72786
+ mmdbafid += ic.chainidArray[i].substr(0, ic.chainidArray[i].indexOf('_'));
72787
+ }
72788
+
72798
72789
  me.htmlCls.clickMenuCls.setLogCmd('resdef ' + me.cfg.resdef, true);
72799
72790
 
72800
72791
  ic.loadCmd = 'vast_search_chainid ' + ic.chainidArray;
@@ -73065,6 +73056,40 @@ iCn3DUI.prototype.setIcn3d = function() { let me = this;
73065
73056
  me.setDialogAjax();
73066
73057
  };
73067
73058
 
73059
+ iCn3DUI.prototype.getMmtfPromise = function(mmtfid) { return new Promise(function(resolve, reject) {
73060
+ MMTF.fetch(
73061
+ mmtfid,
73062
+ // onLoad callback
73063
+ async function( mmtfData ){
73064
+ resolve(mmtfData);
73065
+ },
73066
+ // onError callback
73067
+ function( error ){
73068
+ //var aaa = 1; //alert('This PDB structure is not found at RCSB...');
73069
+ //console.error( error )
73070
+ reject('error');
73071
+ }
73072
+ );
73073
+ });
73074
+ };
73075
+
73076
+ iCn3DUI.prototype.getMmtfReducedPromise = function(mmtfid) { return new Promise(function(resolve, reject) {
73077
+ MMTF.fetchReduced(
73078
+ mmtfid,
73079
+ // onLoad callback
73080
+ async function( mmtfData ){
73081
+ resolve(mmtfData);
73082
+ },
73083
+ // onError callback
73084
+ function( error ){
73085
+ //var aaa = 1; //alert('This PDB structure is not found at RCSB...');
73086
+ //console.error( error )
73087
+ reject('error');
73088
+ }
73089
+ );
73090
+ });
73091
+ };
73092
+
73068
73093
  iCn3DUI.prototype.getAjaxPromise = function(url, dataType, beforeSend, alertMess, logMess, complete, bNode) { let me = this;
73069
73094
  // if(!bNode || dataType != 'json') {
73070
73095
  return new Promise(function(resolve, reject) {