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/README.md +3 -3
- package/icn3d.js +176 -151
- package/icn3d.min.js +3 -3
- package/icn3d.module.js +176 -151
- package/package.json +1 -1
package/icn3d.module.js
CHANGED
|
@@ -6666,7 +6666,7 @@ class ClickMenu {
|
|
|
6666
6666
|
continue;
|
|
6667
6667
|
}
|
|
6668
6668
|
|
|
6669
|
-
if(id == '
|
|
6669
|
+
if(id == 'mn1_searchgrooup') {
|
|
6670
6670
|
html += "<td valign='top'>";
|
|
6671
6671
|
}
|
|
6672
6672
|
else if(id == 'mn2_definedsets') {
|
|
@@ -9429,11 +9429,11 @@ class SetMenu {
|
|
|
9429
9429
|
html += this.getMenuText('mn1_fold', 'Predict by Seq.', undefined, undefined, 1);
|
|
9430
9430
|
html += "<ul>";
|
|
9431
9431
|
html += this.getLink('mn1_esmfold', 'ESMFold', undefined, 2);
|
|
9432
|
-
html += this.
|
|
9432
|
+
//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);
|
|
9433
|
+
html += this.getLink('mn1_alphafold', 'AlphaFold2 via ColabFold' + me.htmlCls.wifiStr, undefined, 2);
|
|
9433
9434
|
html += "</ul>";
|
|
9434
9435
|
|
|
9435
9436
|
|
|
9436
|
-
|
|
9437
9437
|
html += this.getMenuText('mn1_alignwrap', 'Align', undefined, 1, 1);
|
|
9438
9438
|
html += "<ul>";
|
|
9439
9439
|
|
|
@@ -10672,7 +10672,7 @@ class SetMenu {
|
|
|
10672
10672
|
html += this.getMenuUrl('abouticn3d', me.htmlCls.baseUrl + "icn3d/icn3d.html#about", "About iCn3D<span style='font-size:0.9em'> " + me.REVISION + "</span>", 1, 1);
|
|
10673
10673
|
|
|
10674
10674
|
html += this.getMenuUrl('gallery', me.htmlCls.baseUrl + "icn3d/icn3d.html#gallery", "Live Gallery " + me.htmlCls.wifiStr, 1, 1);
|
|
10675
|
-
html += this.getMenuUrl('video', me.htmlCls.baseUrl + "icn3d/icn3d.html#videos", "
|
|
10675
|
+
html += this.getMenuUrl('video', me.htmlCls.baseUrl + "icn3d/icn3d.html#videos", "Videos & Tutorials", 1, 1);
|
|
10676
10676
|
|
|
10677
10677
|
html += this.getMenuText('mn6_faq', 'FAQ', undefined, 1, 1);
|
|
10678
10678
|
|
|
@@ -11489,7 +11489,7 @@ class SetDialog {
|
|
|
11489
11489
|
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>';
|
|
11490
11490
|
|
|
11491
11491
|
html += '<b>Option 1</b>, search with your selection (all residues are selected by default) in the loaded structures:<br>';
|
|
11492
|
-
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">';
|
|
11492
|
+
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">';
|
|
11493
11493
|
html += '<input type=hidden id="' + me.pre + 'pdbstr" name="pdbstr">';
|
|
11494
11494
|
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>";
|
|
11495
11495
|
// the submit value has to be "Submit" in order to make the backend cgi works
|
|
@@ -11503,12 +11503,12 @@ class SetDialog {
|
|
|
11503
11503
|
html += me.htmlCls.buttonStr + "reload_vast'>VAST</button><br><br>";
|
|
11504
11504
|
|
|
11505
11505
|
html += '<b>Option 3</b>, search with a PDB file:<br>';
|
|
11506
|
-
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">';
|
|
11506
|
+
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">';
|
|
11507
11507
|
html += "PDB File: " + me.htmlCls.inputFileStr + " name='pdbfile' size=8><br>";
|
|
11508
11508
|
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>";
|
|
11509
11509
|
// the submit value has to be "Submit" in order to make the backend cgi works
|
|
11510
11510
|
//html += '<input type="submit" name="' + me.pre + 'cmdVSMmdb" value="VAST Search"></input>';
|
|
11511
|
-
html += '<input type="submit" name="cmdVSMmdb" value="Submit"></input>';
|
|
11511
|
+
html += '<input type="submit" id="' + me.pre + 'cmdVSMmdb" name="cmdVSMmdb" value="Submit"></input>';
|
|
11512
11512
|
html += "</form><br>";
|
|
11513
11513
|
|
|
11514
11514
|
html += "</div>";
|
|
@@ -11744,7 +11744,7 @@ class SetDialog {
|
|
|
11744
11744
|
html += me.htmlCls.divStr + "dl_mmdbid' class='" + dialogClass + "' style='max-width:500px'>";
|
|
11745
11745
|
html += this.addNotebookTitle('dl_mmdbid', 'Please input an MMDB ID');
|
|
11746
11746
|
html += "MMDB or PDB ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "mmdbid' value='1TUP' size=8> <br><br>";
|
|
11747
|
-
html += me.htmlCls.buttonStr + "
|
|
11747
|
+
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/>";
|
|
11748
11748
|
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="'
|
|
11749
11749
|
+ me.pre + 'asu_bu_expand" class="ui-icon ui-icon-plus icn3d-expand icn3d-link" style="width:15px;" title="Expand"></span><span id="'
|
|
11750
11750
|
+ me.pre + 'asu_bu_shrink" class="ui-icon ui-icon-minus icn3d-shrink icn3d-link" style="display:none; width:15px;" title="Shrink"></span></div>';
|
|
@@ -15704,7 +15704,7 @@ class SetHtml {
|
|
|
15704
15704
|
if(selType) me.htmlCls.allMenusSel[id] = selType;
|
|
15705
15705
|
if(bSimpleMenu) me.htmlCls.simpleMenus[id] = 1;
|
|
15706
15706
|
|
|
15707
|
-
return "<li><span id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
|
|
15707
|
+
return "<li><span data-pinger id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
|
|
15708
15708
|
}
|
|
15709
15709
|
|
|
15710
15710
|
// a group of menus
|
|
@@ -15716,7 +15716,7 @@ class SetHtml {
|
|
|
15716
15716
|
let styleStr = (classname == 'icn3d-menupd') ? " style='padding-left:1.5em!important;'" : "";
|
|
15717
15717
|
|
|
15718
15718
|
// no ending "</li>"" since this is usually the start of a group of menus
|
|
15719
|
-
return "<li><span id='" + me.pre + id + "'" + styleStr + ">" + text + "</span>";
|
|
15719
|
+
return "<li><span data-pinger id='" + me.pre + id + "'" + styleStr + ">" + text + "</span>";
|
|
15720
15720
|
}
|
|
15721
15721
|
|
|
15722
15722
|
getMenuUrl(id, url, text, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
|
|
@@ -15737,7 +15737,7 @@ class SetHtml {
|
|
|
15737
15737
|
if(bSimpleMenu) me.htmlCls.simpleMenus[id] = 1;
|
|
15738
15738
|
|
|
15739
15739
|
let hideStr = (bHide) ? ' style="display:none"' : '';
|
|
15740
|
-
return "<li id='" + me.pre + wrapper + "'" + hideStr + "><span id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
|
|
15740
|
+
return "<li id='" + me.pre + wrapper + "'" + hideStr + "><span data-pinger id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span></li>";
|
|
15741
15741
|
}
|
|
15742
15742
|
|
|
15743
15743
|
getLinkWrapper2(id, text, wrapper, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
|
|
@@ -15745,7 +15745,7 @@ class SetHtml {
|
|
|
15745
15745
|
if(selType) me.htmlCls.allMenusSel[id] = selType;
|
|
15746
15746
|
if(bSimpleMenu) me.htmlCls.simpleMenus[id] = 1;
|
|
15747
15747
|
|
|
15748
|
-
return "<li id='" + me.pre + wrapper + "'><span id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span>";
|
|
15748
|
+
return "<li id='" + me.pre + wrapper + "'><span data-pinger id='" + me.pre + id + "' class='icn3d-link'>" + text + "</span>";
|
|
15749
15749
|
}
|
|
15750
15750
|
|
|
15751
15751
|
getRadio(radioid, id, text, bChecked, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
|
|
@@ -15756,8 +15756,7 @@ class SetHtml {
|
|
|
15756
15756
|
let checkedStr =(bChecked) ? ' checked' : '';
|
|
15757
15757
|
|
|
15758
15758
|
//https://stackoverflow.com/questions/17541614/use-images-instead-of-radio-buttons/17541916
|
|
15759
|
-
|
|
15760
|
-
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>";
|
|
15759
|
+
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>";
|
|
15761
15760
|
}
|
|
15762
15761
|
|
|
15763
15762
|
getRadioColor(radioid, id, text, color, bChecked, bSimpleMenu, selType) { let me = this.icn3dui; me.icn3d;
|
|
@@ -15768,8 +15767,7 @@ class SetHtml {
|
|
|
15768
15767
|
let checkedStr =(bChecked) ? ' checked' : '';
|
|
15769
15768
|
|
|
15770
15769
|
//https://stackoverflow.com/questions/17541614/use-images-instead-of-radio-buttons/17541916
|
|
15771
|
-
|
|
15772
|
-
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>";
|
|
15770
|
+
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>";
|
|
15773
15771
|
}
|
|
15774
15772
|
|
|
15775
15773
|
setAdvanced(index) { let me = this.icn3dui; me.icn3d;
|
|
@@ -16124,7 +16122,7 @@ class SetHtml {
|
|
|
16124
16122
|
html += "</ul>";
|
|
16125
16123
|
|
|
16126
16124
|
html += me.htmlCls.divStr + name1 + "tab1'>";
|
|
16127
|
-
if(type == 'delphi') html += this.addGsizeSalt(name1) + "<br>";
|
|
16125
|
+
if(type == 'delphi') html += this.addGsizeSalt(name1 + "1") + "<br>";
|
|
16128
16126
|
|
|
16129
16127
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Potential contour at: <select id='" + me.pre + name1 + "contour'>";
|
|
16130
16128
|
|
|
@@ -16189,7 +16187,7 @@ class SetHtml {
|
|
|
16189
16187
|
html += "</div>";
|
|
16190
16188
|
|
|
16191
16189
|
html += me.htmlCls.divStr + name1 + "tab2'>";
|
|
16192
|
-
if(type == 'delphi') html += this.addGsizeSalt(name1) + "<br>";
|
|
16190
|
+
if(type == 'delphi') html += this.addGsizeSalt(name1 + "2") + "<br>";
|
|
16193
16191
|
|
|
16194
16192
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Surface with max potential at: <select id='" + me.pre + name1 + "contour2'>";
|
|
16195
16193
|
|
|
@@ -36823,7 +36821,7 @@ class AnnoCddSite {
|
|
|
36823
36821
|
//if(me.cfg.afid) {
|
|
36824
36822
|
|
|
36825
36823
|
// use precalculated CDD annotation if
|
|
36826
|
-
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))
|
|
36824
|
+
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))
|
|
36827
36825
|
|| (Object.keys(ic.structures).length == 2 && me.cfg.align) ) {
|
|
36828
36826
|
let data = {};
|
|
36829
36827
|
try {
|
|
@@ -40660,7 +40658,7 @@ class AddTrack {
|
|
|
40660
40658
|
if(exonArray) {
|
|
40661
40659
|
for(let j = 0, jl = exonArray.length; j < jl; ++j) {
|
|
40662
40660
|
let start = exonArray[j].resStart, end = exonArray[j].resEnd;
|
|
40663
|
-
let genStart = exonArray[j].genomeRange.split('-')[0];
|
|
40661
|
+
let genStart = parseInt(exonArray[j].genomeRange.split('-')[0]);
|
|
40664
40662
|
|
|
40665
40663
|
for(let k = 0, kl = end - start + 1; k < kl; ++k) {
|
|
40666
40664
|
let colorStr = this.getExonColor(start, end, cnt);
|
|
@@ -42925,7 +42923,7 @@ class ShowAnno {
|
|
|
42925
42923
|
url = "https://rest.uniprot.org/uniprotkb/search?format=json&fields=xref_geneid,gene_names&query=" + structure;
|
|
42926
42924
|
let geneData = await me.getAjaxPromise(url, 'json');
|
|
42927
42925
|
let geneId = (geneData.results[0] && geneData.results[0].uniProtKBCrossReferences && geneData.results[0].uniProtKBCrossReferences[0]) ? geneData.results[0].uniProtKBCrossReferences[0].id : undefined;
|
|
42928
|
-
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 :
|
|
42926
|
+
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;
|
|
42929
42927
|
ic.chainsGene[chnid] = {geneId: geneId, geneSymbol: geneSymbol};
|
|
42930
42928
|
}
|
|
42931
42929
|
}
|
|
@@ -46206,7 +46204,7 @@ class LineGraph {
|
|
|
46206
46204
|
let thisClass = this;
|
|
46207
46205
|
|
|
46208
46206
|
// round 1, 16 templates
|
|
46209
|
-
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'];
|
|
46207
|
+
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'];
|
|
46210
46208
|
|
|
46211
46209
|
// round 2
|
|
46212
46210
|
ic.refpdbHash = {};
|
|
@@ -46225,52 +46223,55 @@ class LineGraph {
|
|
|
46225
46223
|
ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human'];
|
|
46226
46224
|
ic.refpdbHash['1IsdA_2iteA_bacteria'] = ['IsdA_2iteA_bacteria'];
|
|
46227
46225
|
ic.refpdbHash['1TCRa_6jxrm_human_C1-n2'] = ['TCRa_6jxrm_human_C1-n2'];
|
|
46228
|
-
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
46226
|
+
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
46227
|
+
ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V'];
|
|
46229
46228
|
|
|
46230
46229
|
// use known ref structure
|
|
46231
|
-
ic.refpdbHash['
|
|
46232
|
-
ic.refpdbHash['
|
|
46233
|
-
ic.refpdbHash['
|
|
46234
|
-
ic.refpdbHash['
|
|
46235
|
-
ic.refpdbHash['
|
|
46236
|
-
ic.refpdbHash['
|
|
46237
|
-
ic.refpdbHash['
|
|
46238
|
-
|
|
46239
|
-
|
|
46240
|
-
ic.refpdbHash['
|
|
46241
|
-
ic.refpdbHash['
|
|
46242
|
-
ic.refpdbHash['
|
|
46243
|
-
ic.refpdbHash['
|
|
46244
|
-
ic.refpdbHash['
|
|
46245
|
-
ic.refpdbHash['
|
|
46246
|
-
ic.refpdbHash['
|
|
46247
|
-
ic.refpdbHash['
|
|
46248
|
-
ic.refpdbHash['
|
|
46249
|
-
ic.refpdbHash['
|
|
46250
|
-
ic.refpdbHash['
|
|
46251
|
-
ic.refpdbHash['
|
|
46252
|
-
ic.refpdbHash['
|
|
46253
|
-
ic.refpdbHash['
|
|
46254
|
-
ic.refpdbHash['
|
|
46255
|
-
ic.refpdbHash['
|
|
46256
|
-
ic.refpdbHash['
|
|
46257
|
-
ic.refpdbHash['
|
|
46258
|
-
ic.refpdbHash['
|
|
46259
|
-
ic.refpdbHash['
|
|
46260
|
-
ic.refpdbHash['
|
|
46261
|
-
ic.refpdbHash['
|
|
46262
|
-
ic.refpdbHash['
|
|
46263
|
-
ic.refpdbHash['
|
|
46264
|
-
ic.refpdbHash['
|
|
46265
|
-
ic.refpdbHash['
|
|
46266
|
-
ic.refpdbHash['
|
|
46267
|
-
ic.refpdbHash['
|
|
46268
|
-
ic.refpdbHash['
|
|
46269
|
-
ic.refpdbHash['
|
|
46270
|
-
ic.refpdbHash['
|
|
46271
|
-
ic.refpdbHash['
|
|
46272
|
-
ic.refpdbHash['
|
|
46273
|
-
ic.refpdbHash['
|
|
46230
|
+
ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
|
|
46231
|
+
ic.refpdbHash['5ESV_D'] = ['FAB-LIGHT_5esv_V-n1', 'FAB-LIGHT_5esv_C1-n2'];
|
|
46232
|
+
ic.refpdbHash['8GUY_E'] = ['InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2'];
|
|
46233
|
+
ic.refpdbHash['6JXR_m'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
|
|
46234
|
+
ic.refpdbHash['1HNF_A'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
|
|
46235
|
+
ic.refpdbHash['7TZG_D'] = ['LAG3_7tzgD_human_V-n1', 'LAG3_7tzgD_human_C2-n2'];
|
|
46236
|
+
ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
|
|
46237
|
+
ic.refpdbHash['1BQU_B'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
|
|
46238
|
+
|
|
46239
|
+
ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
|
|
46240
|
+
ic.refpdbHash['6OIL_A'] = ['VISTA_6oilA_human_V'];
|
|
46241
|
+
ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
|
|
46242
|
+
ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
|
|
46243
|
+
ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
|
|
46244
|
+
ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
|
|
46245
|
+
ic.refpdbHash['1NBQ_A'] = ['JAM1_1nbqA_human_VorIset-n2'];
|
|
46246
|
+
ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
|
|
46247
|
+
ic.refpdbHash['7PHR_H'] = ['MHCIa_7phrH_human_C1'];
|
|
46248
|
+
ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
|
|
46249
|
+
ic.refpdbHash['4Z18_B'] = ['PDL1_4z18B_human_V-n1'];
|
|
46250
|
+
ic.refpdbHash['1T6V_N'] = ['VNAR_1t6vN_shark_V'];
|
|
46251
|
+
ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
|
|
46252
|
+
ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
|
|
46253
|
+
ic.refpdbHash['7PHR_L'] = ['B2Microglobulin_7phrL_human_C1'];
|
|
46254
|
+
ic.refpdbHash['2AW2_A'] = ['BTLA_2aw2A_human_Iset'];
|
|
46255
|
+
ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
|
|
46256
|
+
ic.refpdbHash['1WF5_A'] = ['Sidekick2_1wf5A_human_FN3-n7'];
|
|
46257
|
+
ic.refpdbHash['5J0B_B'] = ['Siglec3_5j0bB_human_C2-n2'];
|
|
46258
|
+
ic.refpdbHash['1IFR_A'] = ['LaminAC_1ifrA_human'];
|
|
46259
|
+
ic.refpdbHash['Q7Z7D3_A'] = ['VTCN1_Q7Z7D3_human_V-n2'];
|
|
46260
|
+
ic.refpdbHash['4ZQK_B'] = ['PD1_4zqkB_human_V'];
|
|
46261
|
+
ic.refpdbHash['2DM3_A'] = ['Palladin_2dm3A_human_Iset-n1'];
|
|
46262
|
+
ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
|
|
46263
|
+
ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
|
|
46264
|
+
ic.refpdbHash['4ZT1_A'] = ['ECadherin_4zt1A_human_n2'];
|
|
46265
|
+
ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
|
|
46266
|
+
ic.refpdbHash['1CD8_A'] = ['CD8a_1cd8A_human_V'];
|
|
46267
|
+
ic.refpdbHash['3S97_C'] = ['Contactin1_3s97C_human_C2-n2'];
|
|
46268
|
+
ic.refpdbHash['1AXI_B'] = ['GHR_1axiB_human_FN3-n1'];
|
|
46269
|
+
ic.refpdbHash['6X4G_A'] = ['ICOS_6x4gA_human_V'];
|
|
46270
|
+
ic.refpdbHash['2EE2_A'] = ['Contactin1_2ee2A_human_FN3-n9'];
|
|
46271
|
+
ic.refpdbHash['4UOW_M'] = ['Titin_4uowM_human_Unk-n152'];
|
|
46272
|
+
ic.refpdbHash['6A15_A'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
46273
|
+
ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
|
|
46274
|
+
ic.refpdbHash['1YJD_C'] = ['CD28_1yjdC_human_V'];
|
|
46274
46275
|
|
|
46275
46276
|
let pdbAjaxArray = [];
|
|
46276
46277
|
for(let k = 0, kl = ic.refpdbArray.length; k < kl; ++k) {
|
|
@@ -46564,11 +46565,14 @@ class LineGraph {
|
|
|
46564
46565
|
//if(!(bBstrand && bCstrand && bEstrand && bFstrand && bGstrand)) continue;
|
|
46565
46566
|
if(!(bBstrand && bCstrand && bEstrand && bFstrand)) {
|
|
46566
46567
|
if(!me.bNode) console.log("Some of the Ig strands B, C, E, F are missing in the domain " + domainid + "...");
|
|
46568
|
+
if(ic.domainid2refpdbname[domainid]) delete ic.domainid2refpdbname[domainid];
|
|
46567
46569
|
continue;
|
|
46568
46570
|
}
|
|
46569
46571
|
}
|
|
46570
46572
|
|
|
46571
46573
|
if(!bRound1) {
|
|
46574
|
+
console.log("domainid: " + domainid);
|
|
46575
|
+
|
|
46572
46576
|
if(!domainid2score.hasOwnProperty(domainid) || queryData[0].score > domainid2score[domainid]) {
|
|
46573
46577
|
domainid2score[domainid] = queryData[0].score;
|
|
46574
46578
|
|
|
@@ -46600,11 +46604,14 @@ class LineGraph {
|
|
|
46600
46604
|
for(let domainid in ic.domainid2refpdbname) {
|
|
46601
46605
|
let pdbAjaxArray = [];
|
|
46602
46606
|
let refpdbname = ic.domainid2refpdbname[domainid];
|
|
46603
|
-
let pdbid = domainid.substr(0, domainid.indexOf('_'));
|
|
46607
|
+
//let pdbid = domainid.substr(0, domainid.indexOf('_'));
|
|
46608
|
+
let chainid = domainid.substr(0, domainid.indexOf('-'));
|
|
46604
46609
|
|
|
46605
|
-
if(ic.refpdbHash.hasOwnProperty(pdbid)) {
|
|
46610
|
+
//if(ic.refpdbHash.hasOwnProperty(pdbid)) {
|
|
46611
|
+
if(ic.refpdbHash.hasOwnProperty(chainid)) {
|
|
46606
46612
|
// use itself as the ref structure
|
|
46607
|
-
refpdbname = pdbid;
|
|
46613
|
+
//refpdbname = pdbid;
|
|
46614
|
+
refpdbname = chainid;
|
|
46608
46615
|
|
|
46609
46616
|
if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
|
|
46610
46617
|
}
|
|
@@ -46646,11 +46653,11 @@ class LineGraph {
|
|
|
46646
46653
|
dataArray3 = await allPromise;
|
|
46647
46654
|
|
|
46648
46655
|
await thisClass.parseAlignData(dataArray3, domainidpairArray3);
|
|
46649
|
-
|
|
46656
|
+
|
|
46650
46657
|
// end of round 2
|
|
46651
46658
|
return;
|
|
46652
46659
|
}
|
|
46653
|
-
|
|
46660
|
+
|
|
46654
46661
|
// combine domainid into chainid
|
|
46655
46662
|
let processedChainid = {};
|
|
46656
46663
|
for(let domainid in ic.domainid2refpdbname) {
|
|
@@ -46757,17 +46764,18 @@ class LineGraph {
|
|
|
46757
46764
|
|
|
46758
46765
|
// A-: 10xx
|
|
46759
46766
|
// A: 11xx
|
|
46767
|
+
// A+ continue A
|
|
46760
46768
|
// A': 12xx
|
|
46761
|
-
// A+: 13xx
|
|
46762
46769
|
// B: 21xx
|
|
46763
46770
|
// C: 32xx
|
|
46764
46771
|
// C': 42xx
|
|
46765
46772
|
// C'': 51xx, 52xx
|
|
46766
46773
|
// D: 61xx
|
|
46767
46774
|
// E: 71xx
|
|
46775
|
+
// E+: continue E
|
|
46768
46776
|
// F: 82xx
|
|
46769
46777
|
// G: 91xx, 92xx
|
|
46770
|
-
// G+:
|
|
46778
|
+
// G+: continue G
|
|
46771
46779
|
|
|
46772
46780
|
// if(refnum < 100) return " " + oriRefnum;
|
|
46773
46781
|
// else if(refnum >= 100 && refnum < 1000) {
|
|
@@ -46777,11 +46785,10 @@ class LineGraph {
|
|
|
46777
46785
|
if(refnum < 900) return undefined;
|
|
46778
46786
|
else if(refnum >= 900 && refnum < 1000) return " " + oriRefnum;
|
|
46779
46787
|
else if(refnum >= 1000 && refnum < 1100) return "A-" + oriRefnum;
|
|
46780
|
-
else if(refnum >= 1100 && refnum < 1200) return "A" + oriRefnum;
|
|
46788
|
+
else if(refnum >= 1100 && refnum < 1200) return "A" + oriRefnum; // could be A+
|
|
46781
46789
|
else if(refnum >= 1200 && refnum < 1300) return "A'" + oriRefnum;
|
|
46782
|
-
//else if(refnum >= 1300 && refnum < 1400) return "A
|
|
46783
|
-
else if(refnum >= 1300 && refnum <
|
|
46784
|
-
else if(refnum >= 1400 && refnum < 2000) {
|
|
46790
|
+
//else if(refnum >= 1300 && refnum < 1400) return "A+" + oriRefnum;
|
|
46791
|
+
else if(refnum >= 1300 && refnum < 2000) {
|
|
46785
46792
|
if(prevStrand && prevStrand.substr(0, 1) == 'A') {
|
|
46786
46793
|
return prevStrand + oriRefnum;
|
|
46787
46794
|
}
|
|
@@ -46794,12 +46801,11 @@ class LineGraph {
|
|
|
46794
46801
|
else if(refnum >= 4000 && refnum < 5000) return "C'" + oriRefnum;
|
|
46795
46802
|
else if(refnum >= 5000 && refnum < 6000) return "C''" + oriRefnum;
|
|
46796
46803
|
else if(refnum >= 6000 && refnum < 7000) return "D" + oriRefnum;
|
|
46797
|
-
else if(refnum >= 7000 && refnum < 8000) return "E" + oriRefnum;
|
|
46804
|
+
else if(refnum >= 7000 && refnum < 8000) return "E" + oriRefnum; // could be E+
|
|
46798
46805
|
else if(refnum >= 8000 && refnum < 9000) return "F" + oriRefnum;
|
|
46799
|
-
else if(refnum >= 9000 && refnum <
|
|
46800
|
-
//else if(refnum >= 9400 && refnum < 9500) return "G
|
|
46801
|
-
else if(refnum >=
|
|
46802
|
-
else if(refnum >= 9500) return "G" + oriRefnum;
|
|
46806
|
+
else if(refnum >= 9000 && refnum < 9300) return "G" + oriRefnum; // could be G+
|
|
46807
|
+
//else if(refnum >= 9400 && refnum < 9500) return "G+" + oriRefnum;
|
|
46808
|
+
else if(refnum >= 9300) return "G" + oriRefnum;
|
|
46803
46809
|
}
|
|
46804
46810
|
|
|
46805
46811
|
async parseCustomRefFile(data) { let ic = this.icn3d; ic.icn3dui;
|
|
@@ -50713,7 +50719,12 @@ class ChainalignParser {
|
|
|
50713
50719
|
targetAjax = me.getAjaxPromise(url_t, 'text');
|
|
50714
50720
|
}
|
|
50715
50721
|
else {
|
|
50716
|
-
|
|
50722
|
+
let structureTmp = structure;
|
|
50723
|
+
if(structure.length == 5) {
|
|
50724
|
+
structureTmp = structure.substr(0,4);
|
|
50725
|
+
}
|
|
50726
|
+
|
|
50727
|
+
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;
|
|
50717
50728
|
if(me.cfg.inpara !== undefined) url_t += me.cfg.inpara;
|
|
50718
50729
|
|
|
50719
50730
|
targetAjax = me.getAjaxPromise(url_t, 'jsonp');
|
|
@@ -50790,7 +50801,8 @@ class ChainalignParser {
|
|
|
50790
50801
|
}
|
|
50791
50802
|
else {
|
|
50792
50803
|
let bNoSeqalign = true;
|
|
50793
|
-
|
|
50804
|
+
let pdbid = structArray[i];
|
|
50805
|
+
hAtomsTmp = await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign, pdbid);
|
|
50794
50806
|
}
|
|
50795
50807
|
|
|
50796
50808
|
hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp);
|
|
@@ -51287,7 +51299,7 @@ class MmdbParser {
|
|
|
51287
51299
|
if(Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
|
|
51288
51300
|
// use mmtfid
|
|
51289
51301
|
let pdbid = data.pdbId;
|
|
51290
|
-
ic.mmtfParserCls.downloadMmtf(pdbid);
|
|
51302
|
+
await ic.mmtfParserCls.downloadMmtf(pdbid);
|
|
51291
51303
|
|
|
51292
51304
|
return;
|
|
51293
51305
|
}
|
|
@@ -51452,9 +51464,10 @@ class MmdbParser {
|
|
|
51452
51464
|
}
|
|
51453
51465
|
}
|
|
51454
51466
|
|
|
51455
|
-
async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign) { let ic = this.icn3d, me = ic.icn3dui;
|
|
51467
|
+
async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign, pdbidIn) { let ic = this.icn3d, me = ic.icn3dui;
|
|
51456
51468
|
let hAtoms;
|
|
51457
|
-
let pdbid =(data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
|
|
51469
|
+
let pdbid = (data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
|
|
51470
|
+
if(pdbidIn) pdbid = pdbidIn;
|
|
51458
51471
|
|
|
51459
51472
|
this.parseMmdbDataPart1(data, type);
|
|
51460
51473
|
|
|
@@ -51679,7 +51692,7 @@ class MmdbParser {
|
|
|
51679
51692
|
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;
|
|
51680
51693
|
}
|
|
51681
51694
|
|
|
51682
|
-
// use asymmetric unit for BLAST search, e.g., https://www.ncbi.nlm.nih.gov/Structure/icn3d
|
|
51695
|
+
// 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
|
|
51683
51696
|
if(me.cfg.blast_rep_id !== undefined) url += '&bu=0';
|
|
51684
51697
|
|
|
51685
51698
|
//ic.bCid = undefined;
|
|
@@ -51711,57 +51724,31 @@ class MmtfParser {
|
|
|
51711
51724
|
|
|
51712
51725
|
//MMTF is a new binary data format besides the previous PDB and mmCIF formats for 3D structures.
|
|
51713
51726
|
//The JavaScript Methods at http://mmtf.rcsb.org/ was used to load and parse the data.
|
|
51714
|
-
downloadMmtf(mmtfid) { let ic = this.icn3d
|
|
51727
|
+
async downloadMmtf(mmtfid) { let ic = this.icn3d, me = ic.icn3dui;
|
|
51715
51728
|
ic.ParserUtilsCls.setYourNote(mmtfid.toUpperCase() + '(MMTF) in iCn3D');
|
|
51716
51729
|
//ic.bCid = undefined;
|
|
51717
51730
|
|
|
51718
|
-
|
|
51719
|
-
|
|
51720
|
-
|
|
51721
|
-
|
|
51722
|
-
|
|
51723
|
-
|
|
51724
|
-
|
|
51725
|
-
alert('This PDB structure is not found at RCSB...');
|
|
51726
|
-
return;
|
|
51727
|
-
}
|
|
51731
|
+
let mmtfData = await me.getMmtfReducedPromise(mmtfid);
|
|
51732
|
+
if(mmtfData.numAtoms * 10 > ic.maxatomcnt) {
|
|
51733
|
+
let bFull = false;
|
|
51734
|
+
if(Object.keys(mmtfData).length == 0) {
|
|
51735
|
+
alert('This PDB structure is not found at RCSB...');
|
|
51736
|
+
return;
|
|
51737
|
+
}
|
|
51728
51738
|
|
|
51729
|
-
|
|
51730
|
-
|
|
51731
|
-
|
|
51732
|
-
|
|
51733
|
-
|
|
51734
|
-
|
|
51735
|
-
|
|
51736
|
-
|
|
51737
|
-
|
|
51738
|
-
let bFull = true;
|
|
51739
|
-
if(Object.keys(mmtfData2).length == 0) {
|
|
51740
|
-
alert('This PDB structure is not found at RCSB...');
|
|
51741
|
-
return;
|
|
51742
|
-
}
|
|
51743
|
-
// ic.deferredOpm = $.Deferred(function() {
|
|
51744
|
-
// ic.opmParserCls.loadOpmData(mmtfData2, mmtfid, bFull, 'mmtf');
|
|
51745
|
-
// });
|
|
51746
|
-
|
|
51747
|
-
// return ic.deferredOpm.promise();
|
|
51748
|
-
|
|
51749
|
-
await ic.opmParserCls.loadOpmData(mmtfData2, mmtfid, bFull, 'mmtf');
|
|
51750
|
-
},
|
|
51751
|
-
// onError callback
|
|
51752
|
-
function( error ){
|
|
51753
|
-
//alert('This PDB structure is not found at RCSB...');
|
|
51754
|
-
//console.error( error )
|
|
51755
|
-
}
|
|
51756
|
-
);
|
|
51757
|
-
}
|
|
51758
|
-
},
|
|
51759
|
-
// onError callback
|
|
51760
|
-
function( error ){
|
|
51761
|
-
//alert('This PDB structure is not found at RCSB...');
|
|
51762
|
-
//console.error( error )
|
|
51739
|
+
await ic.opmParserCls.loadOpmData(mmtfData, mmtfid, bFull, 'mmtf');
|
|
51740
|
+
}
|
|
51741
|
+
else {
|
|
51742
|
+
let mmtfData2 = await me.getMmtfPromise(mmtfid);
|
|
51743
|
+
|
|
51744
|
+
let bFull = true;
|
|
51745
|
+
if(Object.keys(mmtfData2).length == 0) {
|
|
51746
|
+
alert('This PDB structure is not found at RCSB...');
|
|
51747
|
+
return;
|
|
51763
51748
|
}
|
|
51764
|
-
|
|
51749
|
+
|
|
51750
|
+
await ic.opmParserCls.loadOpmData(mmtfData2, mmtfid, bFull, 'mmtf');
|
|
51751
|
+
}
|
|
51765
51752
|
}
|
|
51766
51753
|
|
|
51767
51754
|
async parseMmtfData(mmtfData, mmtfid, bFull) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -59646,7 +59633,6 @@ class ApplyCommand {
|
|
|
59646
59633
|
let command = commandOri.toLowerCase();
|
|
59647
59634
|
|
|
59648
59635
|
// exact match =============
|
|
59649
|
-
|
|
59650
59636
|
//var file_pref =(ic.inputid) ? ic.inputid : "custom";
|
|
59651
59637
|
if(command == 'share link') {
|
|
59652
59638
|
await ic.shareLinkCls.shareLink();
|
|
@@ -62560,6 +62546,7 @@ class LoadScript {
|
|
|
62560
62546
|
ic.inputid = id;
|
|
62561
62547
|
if(command.indexOf('load mmtf') !== -1) {
|
|
62562
62548
|
me.cfg.mmtfid = id;
|
|
62549
|
+
|
|
62563
62550
|
await ic.mmtfParserCls.downloadMmtf(id);
|
|
62564
62551
|
}
|
|
62565
62552
|
else if(command.indexOf('load pdb') !== -1) {
|
|
@@ -65050,8 +65037,11 @@ class Delphi {
|
|
|
65050
65037
|
let salt = saltArray[1]; //parseFloat(saltArray[1]);
|
|
65051
65038
|
|
|
65052
65039
|
// The values should be string
|
|
65053
|
-
$("#" + ic.pre + "
|
|
65054
|
-
$("#" + ic.pre + "
|
|
65040
|
+
$("#" + ic.pre + "delphi1gsize").val(gsize);
|
|
65041
|
+
$("#" + ic.pre + "delphi1salt").val(salt);
|
|
65042
|
+
|
|
65043
|
+
$("#" + ic.pre + "delphi2gsize").val(gsize);
|
|
65044
|
+
$("#" + ic.pre + "delphi2salt").val(salt);
|
|
65055
65045
|
|
|
65056
65046
|
if(paraArray.length == 7) {
|
|
65057
65047
|
let surfaceArray = paraArray[4].split(" ");
|
|
@@ -65076,11 +65066,11 @@ class Delphi {
|
|
|
65076
65066
|
}
|
|
65077
65067
|
|
|
65078
65068
|
async loadDelphiFile(type) { let ic = this.icn3d, me = ic.icn3dui;
|
|
65079
|
-
let gsize = $("#" + ic.pre + "
|
|
65080
|
-
let salt = $("#" + ic.pre + "
|
|
65081
|
-
let contour =(type == 'delphi2') ? $("#" + ic.pre + "delphicontour2").val() : $("#" + ic.pre + "delphicontour").val();
|
|
65069
|
+
let gsize = (type == 'delphi2') ? $("#" + ic.pre + "delphi2gsize").val() : $("#" + ic.pre + "delphi1gsize").val();
|
|
65070
|
+
let salt = (type == 'delphi2') ? $("#" + ic.pre + "delphi2salt").val() : $("#" + ic.pre + "delphi1gsize").val();
|
|
65071
|
+
let contour = (type == 'delphi2') ? $("#" + ic.pre + "delphicontour2").val() : $("#" + ic.pre + "delphicontour").val();
|
|
65082
65072
|
|
|
65083
|
-
let bSurface =(type == 'delphi2') ? true: false;
|
|
65073
|
+
let bSurface = (type == 'delphi2') ? true: false;
|
|
65084
65074
|
|
|
65085
65075
|
await this.CalcPhi(gsize, salt, contour, bSurface);
|
|
65086
65076
|
|
|
@@ -68808,7 +68798,7 @@ class ResizeCanvas {
|
|
|
68808
68798
|
|
|
68809
68799
|
ic.applyCenterCls.setWidthHeight(width, heightTmp);
|
|
68810
68800
|
|
|
68811
|
-
if(bDraw === undefined || bDraw) {
|
|
68801
|
+
if(ic.structures && Object.keys(ic.structures).length > 0 && (bDraw === undefined || bDraw)) {
|
|
68812
68802
|
ic.drawCls.draw();
|
|
68813
68803
|
}
|
|
68814
68804
|
}
|
|
@@ -70306,7 +70296,8 @@ class ShareLink {
|
|
|
70306
70296
|
let url = this.shareLinkUrl();
|
|
70307
70297
|
|
|
70308
70298
|
let bTooLong =(url.length > 4000 || url.indexOf('http') !== 0) ? true : false;
|
|
70309
|
-
if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime
|
|
70299
|
+
//if(bPngHtml) url += "&random=" + parseInt(Math.random() * 1000); // generate a new shorten URL and thus image name everytime
|
|
70300
|
+
|
|
70310
70301
|
//var inputid =(ic.inputid) ? ic.inputid : "custom";
|
|
70311
70302
|
let inputid = Object.keys(ic.structures).join('_');
|
|
70312
70303
|
if(inputid == ic.defaultPdbId) {
|
|
@@ -70414,7 +70405,7 @@ class ShareLink {
|
|
|
70414
70405
|
}
|
|
70415
70406
|
|
|
70416
70407
|
shareLinkUrl(bAllCommands, bOutputCmd) { let ic = this.icn3d, me = ic.icn3dui;
|
|
70417
|
-
let url = me.htmlCls.baseUrl + "icn3d
|
|
70408
|
+
let url = me.htmlCls.baseUrl + "icn3d/?";
|
|
70418
70409
|
let outputCmd = '';
|
|
70419
70410
|
if(me.cfg.bSidebyside) url = me.htmlCls.baseUrl + "icn3d/full2.html?";
|
|
70420
70411
|
|
|
@@ -73479,7 +73470,7 @@ class iCn3DUI {
|
|
|
73479
73470
|
//even when multiple iCn3D viewers are shown together.
|
|
73480
73471
|
this.pre = this.cfg.divid + "_";
|
|
73481
73472
|
|
|
73482
|
-
this.REVISION = '3.28.
|
|
73473
|
+
this.REVISION = '3.28.1';
|
|
73483
73474
|
|
|
73484
73475
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
73485
73476
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|
|
@@ -73685,17 +73676,17 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
|
|
|
73685
73676
|
chainidArray.push(domainidArray[i]);
|
|
73686
73677
|
}
|
|
73687
73678
|
}
|
|
73688
|
-
|
|
73689
|
-
let mmdbafid = '';
|
|
73690
|
-
for(let i = 0, il = chainidArray.length; i < il; ++i) {
|
|
73691
|
-
if(i > 0) mmdbafid += ',';
|
|
73692
|
-
mmdbafid += chainidArray[i].substr(0, chainidArray[i].indexOf('_'));
|
|
73693
|
-
}
|
|
73694
73679
|
|
|
73695
73680
|
// realign
|
|
73696
73681
|
ic.chainidArray = [chain_t].concat(chainidArray);
|
|
73697
73682
|
ic.chainidArray = ic.chainalignParserCls.addPostfixForChainids(ic.chainidArray);
|
|
73698
73683
|
|
|
73684
|
+
let mmdbafid = '';
|
|
73685
|
+
for(let i = 0, il = ic.chainidArray.length; i < il; ++i) {
|
|
73686
|
+
if(i > 0) mmdbafid += ',';
|
|
73687
|
+
mmdbafid += ic.chainidArray[i].substr(0, ic.chainidArray[i].indexOf('_'));
|
|
73688
|
+
}
|
|
73689
|
+
|
|
73699
73690
|
me.htmlCls.clickMenuCls.setLogCmd('resdef ' + me.cfg.resdef, true);
|
|
73700
73691
|
|
|
73701
73692
|
ic.loadCmd = 'vast_search_chainid ' + ic.chainidArray;
|
|
@@ -73966,6 +73957,40 @@ iCn3DUI.prototype.setIcn3d = function() { let me = this;
|
|
|
73966
73957
|
me.setDialogAjax();
|
|
73967
73958
|
};
|
|
73968
73959
|
|
|
73960
|
+
iCn3DUI.prototype.getMmtfPromise = function(mmtfid) { return new Promise(function(resolve, reject) {
|
|
73961
|
+
MMTF.fetch(
|
|
73962
|
+
mmtfid,
|
|
73963
|
+
// onLoad callback
|
|
73964
|
+
async function( mmtfData ){
|
|
73965
|
+
resolve(mmtfData);
|
|
73966
|
+
},
|
|
73967
|
+
// onError callback
|
|
73968
|
+
function( error ){
|
|
73969
|
+
//alert('This PDB structure is not found at RCSB...');
|
|
73970
|
+
//console.error( error )
|
|
73971
|
+
reject('error');
|
|
73972
|
+
}
|
|
73973
|
+
);
|
|
73974
|
+
});
|
|
73975
|
+
};
|
|
73976
|
+
|
|
73977
|
+
iCn3DUI.prototype.getMmtfReducedPromise = function(mmtfid) { return new Promise(function(resolve, reject) {
|
|
73978
|
+
MMTF.fetchReduced(
|
|
73979
|
+
mmtfid,
|
|
73980
|
+
// onLoad callback
|
|
73981
|
+
async function( mmtfData ){
|
|
73982
|
+
resolve(mmtfData);
|
|
73983
|
+
},
|
|
73984
|
+
// onError callback
|
|
73985
|
+
function( error ){
|
|
73986
|
+
//alert('This PDB structure is not found at RCSB...');
|
|
73987
|
+
//console.error( error )
|
|
73988
|
+
reject('error');
|
|
73989
|
+
}
|
|
73990
|
+
);
|
|
73991
|
+
});
|
|
73992
|
+
};
|
|
73993
|
+
|
|
73969
73994
|
iCn3DUI.prototype.getAjaxPromise = function(url, dataType, beforeSend, alertMess, logMess, complete, bNode) { let me = this;
|
|
73970
73995
|
// if(!bNode || dataType != 'json') {
|
|
73971
73996
|
return new Promise(function(resolve, reject) {
|