icn3d 3.29.9 → 3.29.11
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 +284 -181
- package/icn3d.min.js +4 -4
- package/icn3d.module.js +284 -181
- package/package.json +1 -1
package/icn3d.js
CHANGED
|
@@ -7378,6 +7378,8 @@ class ClickMenu {
|
|
|
7378
7378
|
thisClass.setLogCmd('ig refnum on', true);
|
|
7379
7379
|
// await ic.refnumCls.showIgRefNum();
|
|
7380
7380
|
// thisClass.setLogCmd('set annotation ig', true);
|
|
7381
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
7382
|
+
|
|
7381
7383
|
let bSelection = true;
|
|
7382
7384
|
await ic.annotationCls.setAnnoTabIg(bSelection);
|
|
7383
7385
|
|
|
@@ -7402,6 +7404,7 @@ class ClickMenu {
|
|
|
7402
7404
|
thisClass.setLogCmd('ig template ' + template, true);
|
|
7403
7405
|
let bSelection = true;
|
|
7404
7406
|
// await ic.refnumCls.showIgRefNum(template);
|
|
7407
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
7405
7408
|
await ic.annotationCls.setAnnoTabIg(bSelection, template);
|
|
7406
7409
|
});
|
|
7407
7410
|
|
|
@@ -9527,8 +9530,8 @@ class SetMenu {
|
|
|
9527
9530
|
//}
|
|
9528
9531
|
|
|
9529
9532
|
//!!!
|
|
9530
|
-
//html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
9531
|
-
//html += this.getRadio('mn4_clr', 'mn4_clrIgproto', 'Ig Protodomain', undefined, undefined, 2);
|
|
9533
|
+
// html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
9534
|
+
// html += this.getRadio('mn4_clr', 'mn4_clrIgproto', 'Ig Protodomain', undefined, undefined, 2);
|
|
9532
9535
|
}
|
|
9533
9536
|
else {
|
|
9534
9537
|
//if(!me.cfg.hidelicense) html += this.getRadio('mn4_clr', 'mn1_delphi2', 'DelPhi<br><span style="padding-left:1.5em;">Potential ' + me.htmlCls.licenseStr + '</span>');
|
|
@@ -9659,7 +9662,7 @@ class SetMenu {
|
|
|
9659
9662
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelResidues', 'per Residue', undefined, 1, 2);
|
|
9660
9663
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelResnum', 'per Residue & Number', undefined, 1, 2);
|
|
9661
9664
|
//!!!
|
|
9662
|
-
//html += this.getRadio('mn6_addlabel', 'mn6_addlabelRefnum', 'per Reference Number', undefined, 1, 2);
|
|
9665
|
+
// html += this.getRadio('mn6_addlabel', 'mn6_addlabelRefnum', 'per Reference Number', undefined, 1, 2);
|
|
9663
9666
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelChains', 'per Chain', undefined, undefined, 2);
|
|
9664
9667
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelTermini', 'N- & C-Termini', undefined, 1, 2);
|
|
9665
9668
|
}
|
|
@@ -9757,8 +9760,9 @@ class SetMenu {
|
|
|
9757
9760
|
html += this.getLink('mn6_igrefYes', 'Show Ig for Selection', undefined, 2);
|
|
9758
9761
|
html += this.getLink('mn6_igrefTpl', 'Ig w/ Specified Template', undefined, 2);
|
|
9759
9762
|
html += this.getLink('mn6_igrefNo', 'Reset Ig Ref. Number', undefined, 2);
|
|
9760
|
-
|
|
9763
|
+
|
|
9761
9764
|
html += this.getMenuSep();
|
|
9765
|
+
*/
|
|
9762
9766
|
|
|
9763
9767
|
html += this.getLink('mn6_customref', 'Custom Ref. Number', undefined, 2);
|
|
9764
9768
|
html += "</ul>";
|
|
@@ -11909,12 +11913,17 @@ class SetDialog {
|
|
|
11909
11913
|
|
|
11910
11914
|
//html += me.htmlCls.setHtmlCls.getOptionHtml(['0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100'], 3);
|
|
11911
11915
|
let group2tpl = {};
|
|
11912
|
-
group2tpl['V'] = ['
|
|
11913
|
-
group2tpl['C1'] = ['FAB-LIGHT_5esv_C1-n2', '
|
|
11914
|
-
group2tpl['C2'] = ['CD2_1hnfA_human_C2-n2', '
|
|
11915
|
-
group2tpl['
|
|
11916
|
-
group2tpl['
|
|
11917
|
-
|
|
11916
|
+
group2tpl['V'] = ['CD28_1yjdC_human_V', 'CD2_1hnfA_human_V-n1', 'CD8a_1cd8A_human_V', 'FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_V-n1', 'ICOS_6x4gA_human_V', 'LAG3_7tzgD_human_V-n1', 'PDL1_4z18B_human_V-n1', 'PD1_4zqkB_human_V', 'TCRa_6jxrm_human_V-n1', 'VISTA_6oilA_human_V', 'VNAR_1t6vN_shark_V'];
|
|
11917
|
+
group2tpl['C1'] = ['B2Microglobulin_7phrL_human_C1', 'FAB-LIGHT_5esv_C1-n2', 'FAB-HEAVY_5esv_C1-n2', 'GHR_1axiB_human_FN3-n1', 'MHCIa_7phrH_human_C1', 'TCRa_6jxrm_human_C1-n2', 'VTCN1_Q7Z7D3_human_V-n2'];
|
|
11918
|
+
group2tpl['C2'] = ['CD2_1hnfA_human_C2-n2', 'Contactin1_3s97C_human_C2-n2', 'LAG3_7tzgD_human_C2-n2', 'Siglec3_5j0bB_human_C2-n2'];
|
|
11919
|
+
group2tpl['I'] = ['BTLA_2aw2A_human_Iset', 'CD19_6al5A_human_C2orV-n1', 'JAM1_1nbqA_human_VorIset-n2', 'Palladin_2dm3A_human_Iset-n1', 'Titin_4uowM_human_Unk-n152'];
|
|
11920
|
+
group2tpl['E'] = ['ASF1A_2iijA_human', 'CoAtomerGamma1_1r4xA_human', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'IsdA_2iteA_bacteria', 'MPT63_1lmiA_bacteria', 'NaCaExchanger_2fwuA_dog_n2', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria', 'TEAD1_3kysC_human'];
|
|
11921
|
+
|
|
11922
|
+
group2tpl['FN3'] = ['Contactin1_2ee2A_human_FN3-n9', 'IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3', 'InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2', 'Sidekick2_1wf5A_human_FN3-n7'];
|
|
11923
|
+
|
|
11924
|
+
group2tpl['FN3-like'] = ['BArrestin1_4jqiA_rat_n1', 'C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
|
|
11925
|
+
|
|
11926
|
+
group2tpl['Other'] = ['CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human', 'ORF7a_1xakA_virus'];
|
|
11918
11927
|
|
|
11919
11928
|
for(let group in group2tpl) {
|
|
11920
11929
|
html += "<optgroup label='" + group + "'>";
|
|
@@ -11968,10 +11977,10 @@ class SetDialog {
|
|
|
11968
11977
|
html += "<td></td>";
|
|
11969
11978
|
html += "</tr><tr>";
|
|
11970
11979
|
html += tmpStr1 + me.htmlCls.inputCheckStr + "id='" + me.pre + "anno_ig'>Ig Domains" + me.htmlCls.space2 + "</span></td>";
|
|
11971
|
-
|
|
11980
|
+
|
|
11972
11981
|
html += "<td></td>";
|
|
11973
11982
|
html += "</tr></table></div></div>";
|
|
11974
|
-
|
|
11983
|
+
*/
|
|
11975
11984
|
return html;
|
|
11976
11985
|
}
|
|
11977
11986
|
}
|
|
@@ -14694,6 +14703,14 @@ class Events {
|
|
|
14694
14703
|
thisClass.setLogCmd('define igloop sets | chain ' + chainid, true);
|
|
14695
14704
|
});
|
|
14696
14705
|
|
|
14706
|
+
$(document).on("click", ".icn3d-igdomainsets", function(e) { let ic = me.icn3d;
|
|
14707
|
+
e.stopImmediatePropagation();
|
|
14708
|
+
//e.preventDefault();
|
|
14709
|
+
let chainid = $(this).attr('chainid');
|
|
14710
|
+
ic.addTrackCls.defineIgstrand(chainid, 'igdomain');
|
|
14711
|
+
thisClass.setLogCmd('define igdomain sets | chain ' + chainid, true);
|
|
14712
|
+
});
|
|
14713
|
+
|
|
14697
14714
|
me.myEventCls.onIds("#" + me.pre + "deletesets", "click", function(e) { let ic = me.icn3d;
|
|
14698
14715
|
ic.definedSetsCls.deleteSelectedSets();
|
|
14699
14716
|
thisClass.setLogCmd("delete selected sets", true);
|
|
@@ -32473,7 +32490,7 @@ class Instancing {
|
|
|
32473
32490
|
}
|
|
32474
32491
|
|
|
32475
32492
|
if(ic.mdlImpostor !== undefined) {
|
|
32476
|
-
// after three.js version 128, the cylinder impostor seemed to have a problem in cloning
|
|
32493
|
+
// after three.js version 128, the cylinder impostor seemed to have a problem in cloning
|
|
32477
32494
|
symmetryMate = ic.mdlImpostor.clone();
|
|
32478
32495
|
//symmetryMate.applyMatrix(mat);
|
|
32479
32496
|
this.applyMat(symmetryMate, mat);
|
|
@@ -36753,7 +36770,8 @@ class AnnoCddSite {
|
|
|
36753
36770
|
|
|
36754
36771
|
//var setname = chnid + "_" + domain + "_" + index + "_" + r; //chnid + "_" + type + "_" + index + "_" + r;
|
|
36755
36772
|
let setname = chnid + "_" + domain;
|
|
36756
|
-
if(type != 'domain') setname += "_" + index + "_" + r;
|
|
36773
|
+
// if(type != 'domain') setname += "_" + index + "_" + r;
|
|
36774
|
+
if(type != 'domain') setname = chnid + "_" + index + "_" + r + "_" + domain;
|
|
36757
36775
|
|
|
36758
36776
|
if(type == 'domain') pssmid2fromArray[pssmid] = fromArray;
|
|
36759
36777
|
if(type == 'domain') pssmid2toArray[pssmid] = toArray;
|
|
@@ -36832,7 +36850,13 @@ class AnnoCddSite {
|
|
|
36832
36850
|
|
|
36833
36851
|
if(me.cfg.blast_rep_id != chnid) { // regular
|
|
36834
36852
|
for(let i = 0, il = fromArray.length; i < il; ++i) {
|
|
36835
|
-
let emptyWidth
|
|
36853
|
+
let emptyWidth;
|
|
36854
|
+
if(titleArray) {
|
|
36855
|
+
emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i]) / ic.maxAnnoLength) : Math.round(ic.seqAnnWidth *(fromArray[i] - toArray[i-1] - 1) / ic.maxAnnoLength);
|
|
36856
|
+
}
|
|
36857
|
+
else {
|
|
36858
|
+
emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i] - ic.baseResi[chnid] - 1) / ic.maxAnnoLength) : Math.round(ic.seqAnnWidth *(fromArray[i] - toArray[i-1] - 1) / ic.maxAnnoLength);
|
|
36859
|
+
}
|
|
36836
36860
|
|
|
36837
36861
|
html2 += '<div style="display:inline-block; width:' + emptyWidth + 'px;"> </div>';
|
|
36838
36862
|
html2 += '<div style="display:inline-block; color:white!important; font-weight:bold; background-color:#' + color + '; width:' + Math.round(ic.seqAnnWidth *(toArray[i] - fromArray[i] + 1) / ic.maxAnnoLength) + 'px;" class="icn3d-seqTitle ' + linkStr + '" ' + type + '="' +(index+1).toString() + '" from="' + fromArray + '" to="' + toArray + '" shorttitle="' + title + '" index="' + index + '" setname="' + setname + '" id="' + chnid + '_domain_' + index + '_' + r + '" anno="sequence" chain="' + chnid + '" title="' + fulltitle + '">' + domain + ' </div>';
|
|
@@ -38086,7 +38110,7 @@ class AnnoIg {
|
|
|
38086
38110
|
refnumLabel = ic.resid2refnum[residueid];
|
|
38087
38111
|
let bHidelabel = false;
|
|
38088
38112
|
|
|
38089
|
-
if(refnumLabel) {
|
|
38113
|
+
if(refnumLabel) {
|
|
38090
38114
|
refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
38091
38115
|
currStrand = refnumLabel.replace(new RegExp(refnumStr_ori,'g'), '');
|
|
38092
38116
|
currStrand_ori = currStrand;
|
|
@@ -38118,8 +38142,9 @@ class AnnoIg {
|
|
|
38118
38142
|
|
|
38119
38143
|
igElem = {};
|
|
38120
38144
|
igElem.startPos = i;
|
|
38121
|
-
igElem.domainid = domainid;
|
|
38122
38145
|
}
|
|
38146
|
+
|
|
38147
|
+
if(domainid) igElem.domainid = domainid;
|
|
38123
38148
|
|
|
38124
38149
|
if(bCustom) {
|
|
38125
38150
|
if(!refnumStr) {
|
|
@@ -38206,11 +38231,11 @@ class AnnoIg {
|
|
|
38206
38231
|
htmlTmp += '<span class="icn3d-residueNum"></span>';
|
|
38207
38232
|
}
|
|
38208
38233
|
else if(kabat_or_imgt == 1) {
|
|
38209
|
-
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="Kabat Reference Numbers
|
|
38234
|
+
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="Kabat Reference Numbers">Kabat Ref. No.</div>';
|
|
38210
38235
|
htmlTmp += '<span class="icn3d-residueNum"></span>';
|
|
38211
38236
|
}
|
|
38212
38237
|
else if(kabat_or_imgt == 2) {
|
|
38213
|
-
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="IMGT Reference Numbers
|
|
38238
|
+
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="IMGT Reference Numbers">IMGT Ref. No.</div>';
|
|
38214
38239
|
htmlTmp += '<span class="icn3d-residueNum"></span>';
|
|
38215
38240
|
}
|
|
38216
38241
|
else {
|
|
@@ -38234,9 +38259,10 @@ class AnnoIg {
|
|
|
38234
38259
|
html += '</div>';
|
|
38235
38260
|
html += '</div>';
|
|
38236
38261
|
|
|
38237
|
-
let igArray = ic.chain2igArray[chnid];
|
|
38262
|
+
let igArray = ic.chain2igArray[chnid];
|
|
38238
38263
|
if(igArray.length == 0) return {html: '', html2: '', html3: ''};
|
|
38239
38264
|
let rangeArray = [], titleArray = [], fullTitleArray = [], domainArray = [];
|
|
38265
|
+
|
|
38240
38266
|
for(let i = 0, il = igArray.length; i < il; ++i) {
|
|
38241
38267
|
let domainid = igArray[i].domainid;
|
|
38242
38268
|
let info = ic.domainid2info[domainid];
|
|
@@ -38262,10 +38288,10 @@ class AnnoIg {
|
|
|
38262
38288
|
let colorStr =(atom.color === undefined || atom.color.getHexString() === 'FFFFFF') ? 'DDDDDD' : atom.color.getHexString();
|
|
38263
38289
|
let color =(atom.color !== undefined) ? colorStr : "CCCCCC";
|
|
38264
38290
|
|
|
38265
|
-
let emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i]
|
|
38291
|
+
let emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i]) / ic.maxAnnoLength) :
|
|
38266
38292
|
Math.round(ic.seqAnnWidth *(fromArray[i] - toArray[i-1] - 1) / ic.maxAnnoLength);
|
|
38267
38293
|
html2 += '<div style="display:inline-block; width:' + emptyWidth + 'px;"> </div>';
|
|
38268
|
-
html2 += '<div style="display:inline-block; color:white!important; font-weight:bold; background-color:#' + color + '; width:' + Math.round(ic.seqAnnWidth *(toArray[i] - fromArray[i] + 1) / ic.maxAnnoLength) + 'px;" class="icn3d-seqTitle ' + linkStr + '" ig="0" from="' + fromArray + '" to="' + toArray + '" shorttitle="' + domainArray[i] + '" index="0" setname="' + chnid + '_igs" id="' + chnid + '_igs" anno="sequence" chain="' + chnid + '" title="' + domainArray[i] + '">' +
|
|
38294
|
+
html2 += '<div style="display:inline-block; color:white!important; font-weight:bold; background-color:#' + color + '; width:' + Math.round(ic.seqAnnWidth *(toArray[i] - fromArray[i] + 1) / ic.maxAnnoLength) + 'px;" class="icn3d-seqTitle ' + linkStr + '" ig="0" from="' + fromArray + '" to="' + toArray + '" shorttitle="' + domainArray[i] + '" index="0" setname="' + chnid + '_igs" id="' + chnid + '_igs" anno="sequence" chain="' + chnid + '" title="' + domainArray[i] + '">' + domainArray[i] + ' </div>';
|
|
38269
38295
|
}
|
|
38270
38296
|
|
|
38271
38297
|
html2 += htmlCnt;
|
|
@@ -39638,12 +39664,16 @@ class Domain3d {
|
|
|
39638
39664
|
|
|
39639
39665
|
// this.elements from the this.top of the this.stack
|
|
39640
39666
|
//elts = &this.elements[this.stack[this.top - 1]];
|
|
39667
|
+
|
|
39641
39668
|
for(i = this.stack[this.top - 1], il = this.elements.length; i < il; ++i) {
|
|
39642
39669
|
elts.push(this.elements[i]);
|
|
39643
39670
|
}
|
|
39644
39671
|
|
|
39645
39672
|
// generate the partition based on the cut //
|
|
39646
|
-
for (i = ne = ne0 = ne1 = 0, prt = prt0, t = -1; i < k; i++) {
|
|
39673
|
+
// for (i = ne = ne0 = ne1 = 0, prt = prt0, t = -1; i < k; i++) {
|
|
39674
|
+
let bAtZero = true;
|
|
39675
|
+
prt = prt0;
|
|
39676
|
+
for (i = ne = ne0 = ne1 = 0, t = -1; i < k; i++) {
|
|
39647
39677
|
// write the this.elements into prt //
|
|
39648
39678
|
for (j = t + 1; j <= cut[i]; j++)
|
|
39649
39679
|
prt[ne++] = elts[j];
|
|
@@ -39651,15 +39681,20 @@ class Domain3d {
|
|
|
39651
39681
|
t = cut[i];
|
|
39652
39682
|
|
|
39653
39683
|
// switch the partition //
|
|
39654
|
-
if (prt == prt0) {
|
|
39684
|
+
// if (prt == prt0) {
|
|
39685
|
+
if (bAtZero) {
|
|
39655
39686
|
ne0 = ne;
|
|
39656
39687
|
prt = prt1;
|
|
39657
39688
|
ne = ne1;
|
|
39689
|
+
|
|
39690
|
+
bAtZero = false;
|
|
39658
39691
|
}
|
|
39659
39692
|
else {
|
|
39660
39693
|
ne1 = ne;
|
|
39661
39694
|
prt = prt0;
|
|
39662
39695
|
ne = ne0;
|
|
39696
|
+
|
|
39697
|
+
bAtZero = true;
|
|
39663
39698
|
}
|
|
39664
39699
|
}
|
|
39665
39700
|
|
|
@@ -39667,7 +39702,8 @@ class Domain3d {
|
|
|
39667
39702
|
for (j = t + 1; j < n; j++)
|
|
39668
39703
|
prt[ne++] = elts[j];
|
|
39669
39704
|
|
|
39670
|
-
if (prt == prt0)
|
|
39705
|
+
// if (prt == prt0)
|
|
39706
|
+
if (bAtZero)
|
|
39671
39707
|
ne0 = ne;
|
|
39672
39708
|
else
|
|
39673
39709
|
ne1 = ne;
|
|
@@ -40336,6 +40372,8 @@ class Domain3d {
|
|
|
40336
40372
|
let ss1 = parseInt(ssPair[0]);
|
|
40337
40373
|
let ss2 = parseInt(ssPair[1]);
|
|
40338
40374
|
|
|
40375
|
+
if(ctable[pair] < this.min_contacts) ctable[pair] = 0;
|
|
40376
|
+
|
|
40339
40377
|
// both are sheets
|
|
40340
40378
|
// min number of contacts: this.min_contacts
|
|
40341
40379
|
if(substruct[ss1 - 1].Sheet && substruct[ss2 - 1].Sheet && ctable[pair] >= this.min_contacts ) {
|
|
@@ -40346,7 +40384,7 @@ class Domain3d {
|
|
|
40346
40384
|
sheetNeighbor[ss2][ss1] = 1;
|
|
40347
40385
|
}
|
|
40348
40386
|
}
|
|
40349
|
-
|
|
40387
|
+
|
|
40350
40388
|
//https://www.geeksforgeeks.org/number-groups-formed-graph-friends/
|
|
40351
40389
|
let existing_groups = 0;
|
|
40352
40390
|
let sheet2sheetnum = {};
|
|
@@ -40369,12 +40407,13 @@ class Domain3d {
|
|
|
40369
40407
|
// get sheet2sheetnum
|
|
40370
40408
|
// each neighboring sheet will be represented by the sheet with the smallest sse
|
|
40371
40409
|
for(let groupnum in this.groupnum2sheet) {
|
|
40372
|
-
let ssArray = this.groupnum2sheet[groupnum].sort();
|
|
40410
|
+
let ssArray = this.groupnum2sheet[groupnum].sort(function(a, b){return a-b});
|
|
40373
40411
|
for(let i = 0, il = ssArray.length; i < il; ++i) {
|
|
40374
40412
|
sheet2sheetnum[ssArray[i]] = ssArray[0];
|
|
40375
40413
|
}
|
|
40376
40414
|
}
|
|
40377
40415
|
|
|
40416
|
+
let invalidSheethash = {};
|
|
40378
40417
|
for (let i = 0; i < nsse; i++) {
|
|
40379
40418
|
if(substruct[i].Sheet) {
|
|
40380
40419
|
let sheetsItem = {};
|
|
@@ -40387,6 +40426,8 @@ class Domain3d {
|
|
|
40387
40426
|
sheetsItem.sheet_num = 0;
|
|
40388
40427
|
sheetsItem.adj_strand2 = 0;
|
|
40389
40428
|
sheetsItem.sse = i + 1;
|
|
40429
|
+
|
|
40430
|
+
invalidSheethash[sheetsItem.sse] = 1;
|
|
40390
40431
|
}
|
|
40391
40432
|
|
|
40392
40433
|
sheets.push(sheetsItem);
|
|
@@ -40418,7 +40459,7 @@ class Domain3d {
|
|
|
40418
40459
|
}
|
|
40419
40460
|
}
|
|
40420
40461
|
|
|
40421
|
-
let minStrand = 6;
|
|
40462
|
+
let minStrand = 6; // number of residues in a strand
|
|
40422
40463
|
|
|
40423
40464
|
if (hasSheets) {
|
|
40424
40465
|
//sheets: array of sheets, each of which has the key: sheet_num (number of strands), adj_strand1, adj_strand2
|
|
@@ -40442,7 +40483,8 @@ class Domain3d {
|
|
|
40442
40483
|
if (cnt> 0) {
|
|
40443
40484
|
for (let i = 0; i < sheets.length; i++) {
|
|
40444
40485
|
let bsrec = sheets[i];
|
|
40445
|
-
this.group_num[bsrec.sse - 1] = bsrec.sheet_num;
|
|
40486
|
+
// this.group_num[bsrec.sse - 1] = bsrec.sheet_num;
|
|
40487
|
+
if(bsrec.sheet_num != 0) this.group_num[bsrec.sse - 1] = bsrec.sheet_num;
|
|
40446
40488
|
}
|
|
40447
40489
|
}
|
|
40448
40490
|
}
|
|
@@ -40498,11 +40540,25 @@ class Domain3d {
|
|
|
40498
40540
|
}
|
|
40499
40541
|
}
|
|
40500
40542
|
}
|
|
40501
|
-
|
|
40543
|
+
|
|
40502
40544
|
list_parts.sort(function(v1, v2) {
|
|
40503
40545
|
return v1[0] - v2[0];
|
|
40504
40546
|
});
|
|
40505
40547
|
|
|
40548
|
+
// remove sheets less than 3 residues
|
|
40549
|
+
let list_partsTmp = [];
|
|
40550
|
+
for(let i = 0, il = list_parts.length; i < il; ++i) {
|
|
40551
|
+
let list_parts_item = [];
|
|
40552
|
+
for(let j = 0, jl = list_parts[i].length; j < jl; ++j) {
|
|
40553
|
+
let sse = list_parts[i][j];
|
|
40554
|
+
if(!invalidSheethash.hasOwnProperty(sse)) {
|
|
40555
|
+
list_parts_item.push(sse);
|
|
40556
|
+
}
|
|
40557
|
+
}
|
|
40558
|
+
if(list_parts_item.length >= this.min_sse) list_partsTmp.push(list_parts[i]);
|
|
40559
|
+
}
|
|
40560
|
+
list_parts = list_partsTmp;
|
|
40561
|
+
|
|
40506
40562
|
//for (lplet = list_parts.begin(); lplet != list_parts.end(); lpint++) {
|
|
40507
40563
|
for (let index = 0, indexl = list_parts.length; index < indexl; ++index) {
|
|
40508
40564
|
//vector<int> prts = *lpint;
|
|
@@ -41589,91 +41645,115 @@ class AddTrack {
|
|
|
41589
41645
|
let selectedResidues = {};
|
|
41590
41646
|
let bUnion = false, bUpdateHighlight = true;
|
|
41591
41647
|
|
|
41592
|
-
let strandCnt = 0, loopCnt = 0;
|
|
41593
|
-
let setName, currStrand, prevStrand, prevStrandReal = 'NT', currType, prevType;
|
|
41594
|
-
|
|
41595
41648
|
// clear selection
|
|
41596
41649
|
ic.hAtoms = {};
|
|
41597
41650
|
|
|
41598
|
-
|
|
41599
|
-
|
|
41600
|
-
for(let i = 0, il = ic.chainsSeq[chainid].length; i < il; ++i) {
|
|
41601
|
-
let currResi = ic.chainsSeq[chainid][i].resi;
|
|
41602
|
-
let resid = chainid + '_' + currResi;
|
|
41651
|
+
if(type == 'igdomain') {
|
|
41652
|
+
let igArray = ic.chain2igArray[chainid];
|
|
41603
41653
|
|
|
41604
|
-
if(
|
|
41605
|
-
|
|
41606
|
-
|
|
41607
|
-
|
|
41608
|
-
|
|
41654
|
+
if(igArray && igArray.length > 0) {
|
|
41655
|
+
|
|
41656
|
+
for(let i = 0, il = igArray.length; i < il; ++i) {
|
|
41657
|
+
let startPos = igArray[i].startPos;
|
|
41658
|
+
let endPos = igArray[i].endPos;
|
|
41659
|
+
let domainid = igArray[i].domainid;
|
|
41609
41660
|
|
|
41610
|
-
|
|
41611
|
-
|
|
41612
|
-
|
|
41661
|
+
selectedResidues = {};
|
|
41662
|
+
for(let j = parseInt(startPos); j <= parseInt(endPos); ++j) {
|
|
41663
|
+
let currResi = ic.chainsSeq[chainid][j].resi;
|
|
41664
|
+
let resid = chainid + '_' + currResi;
|
|
41665
|
+
selectedResidues[resid] = 1;
|
|
41666
|
+
}
|
|
41613
41667
|
|
|
41614
|
-
|
|
41615
|
-
|
|
41616
|
-
selectedResidues[resid] = 1;
|
|
41617
|
-
}
|
|
41618
|
-
}
|
|
41619
|
-
else {
|
|
41620
|
-
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
41621
|
-
currType = 'igloop';
|
|
41668
|
+
let setName = domainid;
|
|
41669
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
41622
41670
|
}
|
|
41671
|
+
}
|
|
41672
|
+
}
|
|
41673
|
+
else {
|
|
41674
|
+
let strandCnt = 0, loopCnt = 0;
|
|
41675
|
+
let setName, currStrand, prevStrand, prevStrandReal = 'NT', currType, prevType;
|
|
41676
|
+
|
|
41677
|
+
let bStart = false;
|
|
41678
|
+
|
|
41679
|
+
for(let i = 0, il = ic.chainsSeq[chainid].length; i < il; ++i) {
|
|
41680
|
+
let currResi = ic.chainsSeq[chainid][i].resi;
|
|
41681
|
+
let resid = chainid + '_' + currResi;
|
|
41682
|
+
|
|
41683
|
+
if(!ic.residues.hasOwnProperty(resid) ) continue;
|
|
41684
|
+
|
|
41685
|
+
let refnumLabel, refnumStr, refnum;
|
|
41686
|
+
refnumLabel = ic.resid2refnum[resid];
|
|
41687
|
+
if(!refnumLabel) continue;
|
|
41688
|
+
|
|
41689
|
+
refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
41690
|
+
currStrand = refnumLabel.replace(refnumStr, '');
|
|
41691
|
+
refnum = parseInt(refnumStr);
|
|
41692
|
+
|
|
41693
|
+
if(type == 'iganchor') {
|
|
41694
|
+
if(refnum > 1000 && refnumStr.substr(refnumStr.length - 2, 2) == '50') {
|
|
41695
|
+
selectedResidues[resid] = 1;
|
|
41696
|
+
}
|
|
41697
|
+
}
|
|
41623
41698
|
else {
|
|
41624
|
-
|
|
41625
|
-
|
|
41699
|
+
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
41700
|
+
currType = 'igloop';
|
|
41701
|
+
}
|
|
41702
|
+
else {
|
|
41703
|
+
currType = 'igstrand';
|
|
41704
|
+
}
|
|
41626
41705
|
|
|
41627
|
-
|
|
41628
|
-
|
|
41629
|
-
|
|
41630
|
-
|
|
41631
|
-
|
|
41632
|
-
|
|
41633
|
-
|
|
41634
|
-
|
|
41706
|
+
if(bStart && currType != prevType && Object.keys(selectedResidues).length > 0) {
|
|
41707
|
+
if(prevType == 'igstrand') {
|
|
41708
|
+
++strandCnt;
|
|
41709
|
+
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
41710
|
+
setName = setName.replace(/'/g, '`');
|
|
41711
|
+
if(type == 'igstrand') {
|
|
41712
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
41713
|
+
if(!bUnion) bUnion = true;
|
|
41714
|
+
}
|
|
41715
|
+
prevStrandReal = prevStrand;
|
|
41635
41716
|
}
|
|
41636
|
-
|
|
41637
|
-
|
|
41638
|
-
|
|
41639
|
-
|
|
41640
|
-
|
|
41641
|
-
|
|
41642
|
-
|
|
41643
|
-
|
|
41644
|
-
if(!bUnion) bUnion = true;
|
|
41717
|
+
else if(prevType == 'igloop') {
|
|
41718
|
+
++loopCnt;
|
|
41719
|
+
setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
|
|
41720
|
+
setName = setName.replace(/'/g, '`');
|
|
41721
|
+
if(type == 'igloop') {
|
|
41722
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
41723
|
+
if(!bUnion) bUnion = true;
|
|
41724
|
+
}
|
|
41645
41725
|
}
|
|
41646
|
-
}
|
|
41647
41726
|
|
|
41648
|
-
|
|
41649
|
-
|
|
41727
|
+
selectedResidues = {};
|
|
41728
|
+
}
|
|
41650
41729
|
|
|
41651
|
-
|
|
41730
|
+
selectedResidues[resid] = 1;
|
|
41652
41731
|
|
|
41653
|
-
|
|
41654
|
-
|
|
41732
|
+
prevStrand = currStrand;
|
|
41733
|
+
prevType = currType;
|
|
41655
41734
|
|
|
41656
|
-
|
|
41657
|
-
|
|
41658
|
-
|
|
41735
|
+
bStart = true;
|
|
41736
|
+
}
|
|
41737
|
+
} // for loop
|
|
41659
41738
|
|
|
41660
|
-
|
|
41661
|
-
|
|
41662
|
-
|
|
41663
|
-
}
|
|
41664
|
-
else {
|
|
41665
|
-
if(prevType == 'igstrand') {
|
|
41666
|
-
++strandCnt;
|
|
41667
|
-
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
41668
|
-
setName = setName.replace(/'/g, '`');
|
|
41669
|
-
if(type == 'igstrand') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
41739
|
+
if(type == 'iganchor') {
|
|
41740
|
+
setName = 'Anchor-' + chainid;
|
|
41741
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
41670
41742
|
}
|
|
41671
|
-
else
|
|
41672
|
-
|
|
41673
|
-
|
|
41674
|
-
|
|
41675
|
-
|
|
41676
|
-
|
|
41743
|
+
else {
|
|
41744
|
+
if(prevType == 'igstrand') {
|
|
41745
|
+
++strandCnt;
|
|
41746
|
+
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
41747
|
+
setName = setName.replace(/'/g, '`');
|
|
41748
|
+
if(type == 'igstrand') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
41749
|
+
}
|
|
41750
|
+
else if(prevType == 'igloop') {
|
|
41751
|
+
++loopCnt;
|
|
41752
|
+
currStrand = 'CT';
|
|
41753
|
+
setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
|
|
41754
|
+
setName = setName.replace(/'/g, '`');
|
|
41755
|
+
if(type == 'igloop') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
41756
|
+
}
|
|
41677
41757
|
}
|
|
41678
41758
|
}
|
|
41679
41759
|
}
|
|
@@ -43532,10 +43612,12 @@ class ShowAnno {
|
|
|
43532
43612
|
+ this.addButton(chnid, "icn3d-sheetsets", "Sheet Sets", "Define sets for each sheet in this chain and add them to the menu of \"Defined Sets\"", 60, buttonStyle) + " "
|
|
43533
43613
|
+ this.addButton(chnid, "icn3d-coilsets", "Coil Sets", "Define sets for each coil in this chain and add them to the menu of \"Defined Sets\"", 60, buttonStyle);
|
|
43534
43614
|
|
|
43535
|
-
if(ic.bShowRefnum && ic.chainid2refpdbname.hasOwnProperty(chnid) && ic.chainid2refpdbname[chnid].length > 0) {
|
|
43536
|
-
chainHtml += " " + this.addButton(chnid, "icn3d-iganchorsets", "Ig Anchor Set", "Define the set for all Ig anchors in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + " "
|
|
43537
|
-
+ this.addButton(chnid, "icn3d-
|
|
43538
|
-
|
|
43615
|
+
// if(ic.bShowRefnum && ic.chainid2refpdbname.hasOwnProperty(chnid) && ic.chainid2refpdbname[chnid].length > 0) {
|
|
43616
|
+
chainHtml += " " + this.addButton(chnid, "icn3d-iganchorsets", "Ig Anchor Set", "Define the set for all Ig anchors in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + " "
|
|
43617
|
+
+ this.addButton(chnid, "icn3d-igstrandsets", "Ig Strand Sets", "Define sets for each Ig strand in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + " "
|
|
43618
|
+
+ this.addButton(chnid, "icn3d-igloopsets", "Ig Loop Sets", "Define sets for each Ig loop in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + " "
|
|
43619
|
+
+ this.addButton(chnid, "icn3d-igdomainsets", "Ig Domain Sets", "Define sets for each Ig domain in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle);
|
|
43620
|
+
// }
|
|
43539
43621
|
$("#" + ic.pre + "dl_annotations").append(chainHtml);
|
|
43540
43622
|
//let itemArray = ['giseq', 'cdd', 'clinvar', 'snp', 'domain', 'site', 'ptm', 'interaction', 'custom', 'ssbond', 'crosslink', 'transmem'];
|
|
43541
43623
|
let itemArray = ['giseq', 'cdd', 'clinvar', 'snp', 'site', 'ptm', 'ssbond', 'crosslink', 'transmem', 'domain', 'custom', 'interaction', 'ig'];
|
|
@@ -60178,6 +60260,7 @@ class ApplyCommand {
|
|
|
60178
60260
|
await ic.annotationCls.setAnnoTabIg();
|
|
60179
60261
|
}
|
|
60180
60262
|
else if(command == 'ig refnum on') {
|
|
60263
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
60181
60264
|
await ic.annotationCls.setAnnoTabIg(true);
|
|
60182
60265
|
}
|
|
60183
60266
|
else if(command == 'highlight level up') {
|
|
@@ -62667,6 +62750,7 @@ class LoadScript {
|
|
|
62667
62750
|
else if(command.indexOf('ig template') == 0 ) {
|
|
62668
62751
|
let template = command.substr(command.lastIndexOf(' ') + 1);
|
|
62669
62752
|
// await ic.refnumCls.showIgRefNum(template);
|
|
62753
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
62670
62754
|
await ic.annotationCls.setAnnoTabIg(true, template);
|
|
62671
62755
|
}
|
|
62672
62756
|
else if(command.indexOf('set annotation 3ddomain') == 0) { // the command may have "|||{"factor"...
|
|
@@ -62870,6 +62954,7 @@ class LoadScript {
|
|
|
62870
62954
|
}
|
|
62871
62955
|
else if(lastCommand.indexOf('ig refnum on') == 0) {
|
|
62872
62956
|
// await ic.refnumCls.showIgRefNum();
|
|
62957
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
62873
62958
|
await ic.annotationCls.setAnnoTabIg(true);
|
|
62874
62959
|
}
|
|
62875
62960
|
else if(lastCommand.indexOf('set annotation 3ddomain') == 0) {
|
|
@@ -62996,7 +63081,7 @@ class LoadScript {
|
|
|
62996
63081
|
let idNew = '';
|
|
62997
63082
|
for(let i = 0, il = idArray.length; i < il; ++i) {
|
|
62998
63083
|
if(!(ic.structures && ic.structures.hasOwnProperty(idArray[i]))) {
|
|
62999
|
-
if(
|
|
63084
|
+
if(idNew) idNew += ',';
|
|
63000
63085
|
idNew += idArray[i];
|
|
63001
63086
|
}
|
|
63002
63087
|
}
|
|
@@ -65917,7 +66002,9 @@ class Dssp {
|
|
|
65917
66002
|
ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human', 'CD3d_6jxrd_human_Iset'];
|
|
65918
66003
|
ic.refpdbHash['1CD3g_6jxrg_human_Iset'] = ['CD3g_6jxrg_human_Iset', 'TCRa_6jxrm_human_C1-n2', 'IsdA_2iteA_bacteria'];
|
|
65919
66004
|
ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'MPT63_1lmiA_bacteria', 'CD3e_6jxrf_human_Iset'];
|
|
65920
|
-
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
66005
|
+
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
66006
|
+
|
|
66007
|
+
ic.refpdbHash['all_templates'] = ['ASF1A_2iijA_human', 'B2Microglobulin_7phrL_human_C1', 'BArrestin1_4jqiA_rat_n1', 'BTLA_2aw2A_human_Iset', 'C3_2qkiD_human_n1', 'CD19_6al5A_human_C2orV-n1', 'CD28_1yjdC_human_V', 'CD2_1hnfA_human_C2-n2', 'CD2_1hnfA_human_V-n1', 'CD3d_6jxrd_human_Iset', 'CD3e_6jxrf_human_Iset', 'CD3g_6jxrg_human_Iset', 'CD8a_1cd8A_human_V', 'CoAtomerGamma1_1r4xA_human', 'Contactin1_2ee2A_human_FN3-n9', 'Contactin1_3s97C_human_C2-n2', 'CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'FAB-HEAVY_5esv_C1-n2', 'FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_C1-n2', 'FAB-LIGHT_5esv_V-n1', 'GHR_1axiB_human_FN3-n1', 'ICOS_6x4gA_human_V', 'IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3', 'InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2', 'IsdA_2iteA_bacteria', 'JAM1_1nbqA_human_VorIset-n2', 'LAG3_7tzgD_human_C2-n2', 'LAG3_7tzgD_human_V-n1', 'LaminAC_1ifrA_human', 'MHCIa_7phrH_human_C1', 'MPT63_1lmiA_bacteria', 'NaCaExchanger_2fwuA_dog_n2', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'ORF7a_1xakA_virus', 'PD1_4zqkB_human_V', 'PDL1_4z18B_human_V-n1', 'Palladin_2dm3A_human_Iset-n1', 'RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2', 'Sidekick2_1wf5A_human_FN3-n7', 'Siglec3_5j0bB_human_C2-n2', 'TCRa_6jxrm_human_C1-n2', 'TCRa_6jxrm_human_V-n1', 'TEAD1_3kysC_human', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria', 'Titin_4uowM_human_Unk-n152', 'VISTA_6oilA_human_V', 'VNAR_1t6vN_shark_V', 'VTCN1_Q7Z7D3_human_V-n2'];
|
|
65921
66008
|
|
|
65922
66009
|
// use known ref structure
|
|
65923
66010
|
ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
|
|
@@ -65974,9 +66061,9 @@ class Dssp {
|
|
|
65974
66061
|
|
|
65975
66062
|
ic.ref2igtype['ASF1A_2iijA_human'] = 'IgE';
|
|
65976
66063
|
ic.ref2igtype['B2Microglobulin_7phrL_human_C1'] = 'IgC1';
|
|
65977
|
-
ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = '
|
|
66064
|
+
ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
|
|
65978
66065
|
ic.ref2igtype['BTLA_2aw2A_human_Iset'] = 'IgI';
|
|
65979
|
-
ic.ref2igtype['C3_2qkiD_human_n1'] = '
|
|
66066
|
+
ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
|
|
65980
66067
|
ic.ref2igtype['CD19_6al5A_human_C2orV-n1'] = 'other Ig'; //'CD19';
|
|
65981
66068
|
ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
|
|
65982
66069
|
ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
|
|
@@ -65986,7 +66073,7 @@ class Dssp {
|
|
|
65986
66073
|
ic.ref2igtype['CD3g_6jxrg_human_Iset'] = 'IgI';
|
|
65987
66074
|
ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
|
|
65988
66075
|
ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
|
|
65989
|
-
ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = '
|
|
66076
|
+
ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
|
|
65990
66077
|
ic.ref2igtype['Contactin1_3s97C_human_C2-n2'] = 'IgC2';
|
|
65991
66078
|
ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'other Ig'; //'SOD';
|
|
65992
66079
|
ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'other Ig'; //'Cadherin';
|
|
@@ -65995,12 +66082,12 @@ class Dssp {
|
|
|
65995
66082
|
ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
|
|
65996
66083
|
ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
|
|
65997
66084
|
ic.ref2igtype['FAB-LIGHT_5esv_V-n1'] = 'IgV';
|
|
65998
|
-
ic.ref2igtype['GHR_1axiB_human_FN3-n1'] = '
|
|
66085
|
+
ic.ref2igtype['GHR_1axiB_human_FN3-n1'] = 'IgFN3';
|
|
65999
66086
|
ic.ref2igtype['ICOS_6x4gA_human_V'] = 'IgV';
|
|
66000
|
-
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n2'] = '
|
|
66001
|
-
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = '
|
|
66002
|
-
ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = '
|
|
66003
|
-
ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = '
|
|
66087
|
+
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n2'] = 'IgFN3';
|
|
66088
|
+
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
|
|
66089
|
+
ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = 'IgFN3';
|
|
66090
|
+
ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
|
|
66004
66091
|
ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
|
|
66005
66092
|
ic.ref2igtype['JAM1_1nbqA_human_VorIset-n2'] = 'IgI';
|
|
66006
66093
|
ic.ref2igtype['LAG3_7tzgD_human_C2-n2'] = 'IgC2';
|
|
@@ -66014,9 +66101,9 @@ class Dssp {
|
|
|
66014
66101
|
ic.ref2igtype['PD1_4zqkB_human_V'] = 'IgV';
|
|
66015
66102
|
ic.ref2igtype['PDL1_4z18B_human_V-n1'] = 'IgV';
|
|
66016
66103
|
ic.ref2igtype['Palladin_2dm3A_human_Iset-n1'] = 'IgI';
|
|
66017
|
-
ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = '
|
|
66018
|
-
ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = '
|
|
66019
|
-
ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = '
|
|
66104
|
+
ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
|
|
66105
|
+
ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
|
|
66106
|
+
ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
|
|
66020
66107
|
ic.ref2igtype['Siglec3_5j0bB_human_C2-n2'] = 'IgC2';
|
|
66021
66108
|
ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
|
|
66022
66109
|
ic.ref2igtype['TCRa_6jxrm_human_V-n1'] = 'IgV';
|
|
@@ -66081,7 +66168,7 @@ class Dssp {
|
|
|
66081
66168
|
let thisClass = this;
|
|
66082
66169
|
|
|
66083
66170
|
let struArray = Object.keys(ic.structures);
|
|
66084
|
-
|
|
66171
|
+
|
|
66085
66172
|
let ajaxArray = [];
|
|
66086
66173
|
let domainidpairArray = [];
|
|
66087
66174
|
|
|
@@ -66100,7 +66187,7 @@ class Dssp {
|
|
|
66100
66187
|
for(let j = 0, jl = chainidArray.length; j < jl; ++j) {
|
|
66101
66188
|
let chainid = chainidArray[j];
|
|
66102
66189
|
|
|
66103
|
-
// for selected atoms only
|
|
66190
|
+
// for selected atoms only, assign ic.resid2domainid[resid]
|
|
66104
66191
|
let domainAtomsArray = this.getDomainAtomsArray(chainid, bRerun);
|
|
66105
66192
|
|
|
66106
66193
|
if(!ic.domainid2refpdbname) ic.domainid2refpdbname = {};
|
|
@@ -66117,8 +66204,8 @@ class Dssp {
|
|
|
66117
66204
|
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(domainAtomsArray[k]);
|
|
66118
66205
|
let atomLast = ic.firstAtomObjCls.getLastAtomObj(domainAtomsArray[k]);
|
|
66119
66206
|
let resiSum = atomFirst.resi + ':' + atomLast.resi + ':' + Object.keys(domainAtomsArray[k]).length;
|
|
66120
|
-
//let domainid = chainid + '-' + k + '_' + Object.keys(domainAtomsArray[k]).length;
|
|
66121
|
-
let domainid = chainid + ',' + k + '_' + resiSum;
|
|
66207
|
+
//let domainid = chainid + '-' + k + '_' + Object.keys(domainAtomsArray[k]).length;
|
|
66208
|
+
let domainid = chainid + ',' + k + '_' + resiSum;
|
|
66122
66209
|
ic.domainid2pdb[domainid] = pdb_target;
|
|
66123
66210
|
|
|
66124
66211
|
if(!template) {
|
|
@@ -66136,7 +66223,7 @@ class Dssp {
|
|
|
66136
66223
|
// let alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
|
|
66137
66224
|
|
|
66138
66225
|
ajaxArray.push(alignAjax);
|
|
66139
|
-
|
|
66226
|
+
|
|
66140
66227
|
domainidpairArray.push(domainid + "|" + ic.refpdbArray[index]);
|
|
66141
66228
|
}
|
|
66142
66229
|
}
|
|
@@ -66156,14 +66243,14 @@ class Dssp {
|
|
|
66156
66243
|
// dataArray2 = await allPromise;
|
|
66157
66244
|
|
|
66158
66245
|
dataArray2 = await this.promiseWithFixedJobs(ajaxArray);
|
|
66159
|
-
|
|
66246
|
+
|
|
66160
66247
|
let bRound1 = true;
|
|
66161
|
-
await thisClass.parseAlignData(dataArray2, domainidpairArray, bRound1);
|
|
66248
|
+
bNoMoreIg = await thisClass.parseAlignData(dataArray2, domainidpairArray, bRound1);
|
|
66162
66249
|
|
|
66163
66250
|
/// if(ic.deferredRefnum !== undefined) ic.deferredRefnum.resolve();
|
|
66164
66251
|
}
|
|
66165
66252
|
else {
|
|
66166
|
-
if(!me.bNode) console.log("Start alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
66253
|
+
if(!me.bNode) console.log("Start alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
66167
66254
|
|
|
66168
66255
|
// start round2
|
|
66169
66256
|
let ajaxArray = [];
|
|
@@ -66178,36 +66265,36 @@ class Dssp {
|
|
|
66178
66265
|
//let allPromise2 = Promise.allSettled(pdbAjaxArray);
|
|
66179
66266
|
//ic.pdbDataArray = await allPromise2;
|
|
66180
66267
|
|
|
66181
|
-
|
|
66268
|
+
let pdbDataArray = await this.promiseWithFixedJobs(pdbAjaxArray);
|
|
66182
66269
|
|
|
66183
66270
|
for(let domainid in ic.domainid2refpdbname) {
|
|
66184
66271
|
ic.domainid2refpdbname[domainid];
|
|
66185
66272
|
domainid.substr(0, domainid.indexOf(','));
|
|
66186
66273
|
|
|
66187
66274
|
let pdb_target = ic.domainid2pdb[domainid];
|
|
66188
|
-
for(let index = 0, indexl =
|
|
66275
|
+
for(let index = 0, indexl = pdbDataArray.length; index < indexl; ++index) {
|
|
66189
66276
|
let struct2 = ic.defaultPdbId + index;
|
|
66190
|
-
let pdb_query =
|
|
66277
|
+
let pdb_query = pdbDataArray[index].value; //[0];
|
|
66191
66278
|
|
|
66192
66279
|
let header = 'HEADER ' + struct2 + '\n';
|
|
66193
66280
|
pdb_query = header + pdb_query;
|
|
66194
|
-
|
|
66281
|
+
|
|
66195
66282
|
let dataObj = {'pdb_query': pdb_query, 'pdb_target': pdb_target, "queryid": template};
|
|
66196
66283
|
let alignAjax = me.getAjaxPostPromise(urltmalign, dataObj);
|
|
66197
66284
|
ajaxArray.push(alignAjax);
|
|
66198
|
-
|
|
66285
|
+
|
|
66199
66286
|
//domainidpairArray3.push(domainid + "," + refpdbname);
|
|
66200
66287
|
domainidpairArray3.push(domainid + "|" + template);
|
|
66201
66288
|
}
|
|
66202
66289
|
}
|
|
66203
|
-
|
|
66290
|
+
|
|
66204
66291
|
let dataArray3 = [];
|
|
66205
66292
|
//let allPromise = Promise.allSettled(ajaxArray);
|
|
66206
66293
|
//dataArray3 = await allPromise;
|
|
66207
66294
|
|
|
66208
66295
|
dataArray3 = await this.promiseWithFixedJobs(ajaxArray);
|
|
66209
|
-
|
|
66210
|
-
await thisClass.parseAlignData(dataArray3, domainidpairArray3);
|
|
66296
|
+
|
|
66297
|
+
bNoMoreIg = await thisClass.parseAlignData(dataArray3, domainidpairArray3);
|
|
66211
66298
|
}
|
|
66212
66299
|
|
|
66213
66300
|
return bNoMoreIg;
|
|
@@ -66223,8 +66310,8 @@ class Dssp {
|
|
|
66223
66310
|
}
|
|
66224
66311
|
//console.log("Error in aligning with TM-align...");
|
|
66225
66312
|
return;
|
|
66226
|
-
}
|
|
66227
|
-
*/
|
|
66313
|
+
}
|
|
66314
|
+
*/
|
|
66228
66315
|
}
|
|
66229
66316
|
|
|
66230
66317
|
getDomainAtomsArray(chainid, bRerunDomain) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -66267,21 +66354,22 @@ class Dssp {
|
|
|
66267
66354
|
//let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
|
|
66268
66355
|
// assign ref numbers to selected residues
|
|
66269
66356
|
let result = ic.domain3dCls.c2b_NewSplitChain(currAtoms, undefined);
|
|
66270
|
-
let subdomains = result.subdomains;
|
|
66357
|
+
let subdomains = result.subdomains;
|
|
66271
66358
|
let pos2resi = result.pos2resi;
|
|
66272
66359
|
|
|
66273
66360
|
if(subdomains.length <= 1) {
|
|
66274
66361
|
let residueArray = ic.resid2specCls.atoms2residues(Object.keys(currAtoms));
|
|
66275
66362
|
if(residueArray.length < minResidues) return domainAtomsArray;
|
|
66276
|
-
|
|
66363
|
+
/*
|
|
66277
66364
|
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(currAtoms);
|
|
66278
66365
|
let atomLast = ic.firstAtomObjCls.getLastAtomObj(currAtoms);
|
|
66279
66366
|
let resiSum = atomFirst.resi + ':' + atomLast.resi + ':' + Object.keys(currAtoms).length;
|
|
66280
|
-
|
|
66367
|
+
*/
|
|
66281
66368
|
for(let n = 0, nl = residueArray.length; n < nl; ++n) {
|
|
66282
66369
|
let resid = residueArray[n];
|
|
66283
|
-
|
|
66284
|
-
|
|
66370
|
+
/*
|
|
66371
|
+
ic.resid2domainid[resid] = chainid + ',0' + '_' + resiSum;
|
|
66372
|
+
*/
|
|
66285
66373
|
// clear previous refnum assignment if any
|
|
66286
66374
|
// if(!bRerunDomain && ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
66287
66375
|
// if(ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
@@ -66292,7 +66380,7 @@ class Dssp {
|
|
|
66292
66380
|
|
|
66293
66381
|
domainAtomsArray.push(currAtoms);
|
|
66294
66382
|
}
|
|
66295
|
-
else {
|
|
66383
|
+
else {
|
|
66296
66384
|
for(let k = 0, kl = subdomains.length; k < kl; ++k) {
|
|
66297
66385
|
let domainAtoms = {};
|
|
66298
66386
|
let segArray = subdomains[k];
|
|
@@ -66319,7 +66407,7 @@ class Dssp {
|
|
|
66319
66407
|
if(resCnt < minResidues) continue;
|
|
66320
66408
|
|
|
66321
66409
|
domainAtomsArray.push(domainAtoms);
|
|
66322
|
-
|
|
66410
|
+
/*
|
|
66323
66411
|
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(domainAtoms);
|
|
66324
66412
|
let atomLast = ic.firstAtomObjCls.getLastAtomObj(domainAtoms);
|
|
66325
66413
|
let resiSum = atomFirst.resi + ':' + atomLast.resi + ':' + Object.keys(domainAtoms).length;
|
|
@@ -66330,15 +66418,16 @@ class Dssp {
|
|
|
66330
66418
|
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
66331
66419
|
let resid = chainid + '_' + pos2resi[n];
|
|
66332
66420
|
//domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
66333
|
-
ic.resid2domainid[resid] = chainid + ',' + k + '_' + resiSum;
|
|
66421
|
+
ic.resid2domainid[resid] = chainid + ',' + k + '_' + resiSum;
|
|
66334
66422
|
}
|
|
66335
66423
|
}
|
|
66424
|
+
*/
|
|
66336
66425
|
}
|
|
66337
66426
|
}
|
|
66338
66427
|
|
|
66339
66428
|
return domainAtomsArray;
|
|
66340
66429
|
}
|
|
66341
|
-
|
|
66430
|
+
|
|
66342
66431
|
getTemplateList(domainid) { let ic = this.icn3d; ic.icn3dui;
|
|
66343
66432
|
let refpdbname = '', score = '', seqid = '', nresAlign = '';
|
|
66344
66433
|
|
|
@@ -66371,7 +66460,6 @@ class Dssp {
|
|
|
66371
66460
|
if(!ic.domainid2ig2imgt) ic.domainid2ig2imgt = {};
|
|
66372
66461
|
|
|
66373
66462
|
let minResidues = 20;
|
|
66374
|
-
|
|
66375
66463
|
for(let i = 0, il = domainidpairArray.length; i < il; ++i) {
|
|
66376
66464
|
//let queryData = (me.bNode) ? dataArray[i] : dataArray[i].value; //[0];
|
|
66377
66465
|
let queryData = (dataArray[i]) ? dataArray[i].value : undefined; //[0];
|
|
@@ -66382,7 +66470,7 @@ class Dssp {
|
|
|
66382
66470
|
}
|
|
66383
66471
|
|
|
66384
66472
|
if(queryData[0].score === undefined) continue;
|
|
66385
|
-
|
|
66473
|
+
|
|
66386
66474
|
//let domainid_index = domainidpairArray[i].split(',');
|
|
66387
66475
|
//let domainid = domainid_index[0];
|
|
66388
66476
|
let domainid = domainidpairArray[i].substr(0, domainidpairArray[i].indexOf('|'));
|
|
@@ -66403,7 +66491,7 @@ class Dssp {
|
|
|
66403
66491
|
continue;
|
|
66404
66492
|
}
|
|
66405
66493
|
}
|
|
66406
|
-
|
|
66494
|
+
|
|
66407
66495
|
if(!bRound1) {
|
|
66408
66496
|
if(!me.bNode) console.log("refpdbname " + refpdbname + " TM-score: " + queryData[0].score);
|
|
66409
66497
|
}
|
|
@@ -66466,8 +66554,13 @@ class Dssp {
|
|
|
66466
66554
|
}
|
|
66467
66555
|
|
|
66468
66556
|
if(!domainid2segs.hasOwnProperty(domainid) || queryData[0].score >= ic.domainid2score[domainid].split('_')[0]) {
|
|
66469
|
-
ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
|
|
66470
|
-
|
|
66557
|
+
ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
|
|
66558
|
+
if(bRound1) {
|
|
66559
|
+
ic.domainid2refpdbname[domainid] = parseFloat(queryData[0].score) > 0.75 ? refpdbname : 'all_templates';
|
|
66560
|
+
}
|
|
66561
|
+
else {
|
|
66562
|
+
ic.domainid2refpdbname[domainid] = refpdbname;
|
|
66563
|
+
}
|
|
66471
66564
|
domainid2segs[domainid] = queryData[0].segs;
|
|
66472
66565
|
ic.domainid2ig2kabat[domainid] = queryData[0].ig2kabat;
|
|
66473
66566
|
ic.domainid2ig2imgt[domainid] = queryData[0].ig2imgt;
|
|
@@ -66478,10 +66571,17 @@ class Dssp {
|
|
|
66478
66571
|
}
|
|
66479
66572
|
|
|
66480
66573
|
async parseAlignData(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
66574
|
+
let bNoMoreIg = false;
|
|
66575
|
+
|
|
66481
66576
|
let domainid2segs = this.parseAlignData_part1(dataArray, domainidpairArray, bRound1);
|
|
66482
66577
|
|
|
66578
|
+
if(Object.keys(domainid2segs).length == 0) {
|
|
66579
|
+
bNoMoreIg = true;
|
|
66580
|
+
return bNoMoreIg;
|
|
66581
|
+
}
|
|
66582
|
+
|
|
66483
66583
|
if(bRound1) {
|
|
66484
|
-
if(!me.bNode) console.log("Start round 2 alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
66584
|
+
if(!me.bNode) console.log("Start round 2 alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
66485
66585
|
|
|
66486
66586
|
// start round2
|
|
66487
66587
|
let ajaxArray = [];
|
|
@@ -66499,7 +66599,7 @@ class Dssp {
|
|
|
66499
66599
|
//refpdbname = pdbid;
|
|
66500
66600
|
refpdbname = chainid;
|
|
66501
66601
|
|
|
66502
|
-
if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
|
|
66602
|
+
if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
|
|
66503
66603
|
}
|
|
66504
66604
|
|
|
66505
66605
|
if(!ic.refpdbHash[refpdbname]) {
|
|
@@ -66517,20 +66617,20 @@ class Dssp {
|
|
|
66517
66617
|
//let allPromise2 = Promise.allSettled(pdbAjaxArray);
|
|
66518
66618
|
//ic.pdbDataArray = await allPromise2;
|
|
66519
66619
|
|
|
66520
|
-
|
|
66620
|
+
let pdbDataArray = await this.promiseWithFixedJobs(pdbAjaxArray);
|
|
66521
66621
|
|
|
66522
66622
|
let pdb_target = ic.domainid2pdb[domainid];
|
|
66523
|
-
for(let index = 0, indexl =
|
|
66623
|
+
for(let index = 0, indexl = pdbDataArray.length; index < indexl; ++index) {
|
|
66524
66624
|
let struct2 = ic.defaultPdbId + index;
|
|
66525
|
-
//let pdb_query = (me.bNode) ?
|
|
66526
|
-
let pdb_query =
|
|
66625
|
+
//let pdb_query = (me.bNode) ? pdbDataArray[index] : pdbDataArray[index].value; //[0];
|
|
66626
|
+
let pdb_query = pdbDataArray[index].value; //[0];
|
|
66527
66627
|
let header = 'HEADER ' + struct2 + '\n';
|
|
66528
66628
|
pdb_query = header + pdb_query;
|
|
66529
66629
|
|
|
66530
66630
|
let dataObj = {'pdb_query': pdb_query, 'pdb_target': pdb_target, "queryid": ic.refpdbHash[refpdbname][index]};
|
|
66531
66631
|
let alignAjax = me.getAjaxPostPromise(urltmalign, dataObj);
|
|
66532
66632
|
ajaxArray.push(alignAjax);
|
|
66533
|
-
|
|
66633
|
+
|
|
66534
66634
|
//domainidpairArray3.push(domainid + "," + refpdbname);
|
|
66535
66635
|
domainidpairArray3.push(domainid + "|" + ic.refpdbHash[refpdbname][index]);
|
|
66536
66636
|
}
|
|
@@ -66543,12 +66643,14 @@ class Dssp {
|
|
|
66543
66643
|
dataArray3 = await this.promiseWithFixedJobs(ajaxArray);
|
|
66544
66644
|
|
|
66545
66645
|
await this.parseAlignData(dataArray3, domainidpairArray3, false);
|
|
66546
|
-
|
|
66646
|
+
|
|
66547
66647
|
// end of round 2
|
|
66548
|
-
return;
|
|
66648
|
+
return bNoMoreIg;
|
|
66549
66649
|
}
|
|
66550
66650
|
|
|
66551
66651
|
await this.parseAlignData_part3(domainid2segs);
|
|
66652
|
+
|
|
66653
|
+
return bNoMoreIg;
|
|
66552
66654
|
}
|
|
66553
66655
|
|
|
66554
66656
|
async parseAlignData_part3(domainid2segs) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -66694,7 +66796,7 @@ class Dssp {
|
|
|
66694
66796
|
for(let i = 0, il = segArray.length; i < il; ++i) {
|
|
66695
66797
|
let seg = segArray[i];
|
|
66696
66798
|
if(!seg) continue;
|
|
66697
|
-
|
|
66799
|
+
|
|
66698
66800
|
let qStart = seg.q_start;
|
|
66699
66801
|
parseInt(seg.q_start);
|
|
66700
66802
|
if(isNaN(seg.q_start)) seg.q_start.substr(seg.q_start.length - 1, 1);
|
|
@@ -66735,9 +66837,10 @@ class Dssp {
|
|
|
66735
66837
|
if(currStrand != currStrandFinal) {
|
|
66736
66838
|
refnumLabel = this.getLabelFromRefnum(refnum, currStrandFinal);
|
|
66737
66839
|
}
|
|
66738
|
-
|
|
66739
|
-
ic.resid2refnum[resid] = refnumLabel;
|
|
66840
|
+
|
|
66841
|
+
ic.resid2refnum[resid] = refnumLabel;
|
|
66740
66842
|
ic.resid2refnum_ori[resid] = refnumLabel;
|
|
66843
|
+
ic.resid2domainid[resid] = domainid;
|
|
66741
66844
|
|
|
66742
66845
|
// final reference numbers will be assign in ic.annoIgCls.showRefNum()
|
|
66743
66846
|
|
|
@@ -66784,7 +66887,7 @@ class Dssp {
|
|
|
66784
66887
|
else {
|
|
66785
66888
|
await ic.showAnnoCls.showAnnotations();
|
|
66786
66889
|
}
|
|
66787
|
-
|
|
66890
|
+
|
|
66788
66891
|
ic.annotationCls.setAnnoViewAndDisplay('detailed view');
|
|
66789
66892
|
}
|
|
66790
66893
|
else if(!me.bNode) {
|
|
@@ -66825,13 +66928,13 @@ class Dssp {
|
|
|
66825
66928
|
// loops may have numbers such as 1310, 1410
|
|
66826
66929
|
|
|
66827
66930
|
let refnumLabel;
|
|
66828
|
-
|
|
66931
|
+
|
|
66829
66932
|
if(refnum < 1000) refnumLabel = undefined;
|
|
66830
66933
|
else if(refnum >= 1200 && refnum < 1290) refnumLabel = "A---" + oriRefnum;
|
|
66831
66934
|
else if(refnum >= 1320 && refnum < 1390) refnumLabel = "A--" + oriRefnum;
|
|
66832
66935
|
else if(refnum >= 1420 && refnum < 1490) refnumLabel = "A-" + oriRefnum;
|
|
66833
|
-
else if(refnum >= 1520 && refnum < 1590) refnumLabel = "A" + oriRefnum;
|
|
66834
|
-
else if(refnum >= 1620 && refnum < 1690) refnumLabel = "A+" + oriRefnum;
|
|
66936
|
+
else if(refnum >= 1520 && refnum < 1590) refnumLabel = "A" + oriRefnum;
|
|
66937
|
+
else if(refnum >= 1620 && refnum < 1690) refnumLabel = "A+" + oriRefnum;
|
|
66835
66938
|
else if(refnum >= 1820 && refnum < 1890) refnumLabel = "A'" + oriRefnum;
|
|
66836
66939
|
else if(refnum >= 2000 && refnum < 2900) refnumLabel = "B" + oriRefnum;
|
|
66837
66940
|
else if(refnum >= 3300 && refnum < 3390) refnumLabel = "C--" + oriRefnum;
|
|
@@ -66840,8 +66943,8 @@ class Dssp {
|
|
|
66840
66943
|
else if(refnum >= 4000 && refnum < 4900) refnumLabel = "C'" + oriRefnum;
|
|
66841
66944
|
else if(refnum >= 5000 && refnum < 5900) refnumLabel = "C''" + oriRefnum;
|
|
66842
66945
|
else if(refnum >= 6000 && refnum < 6900) refnumLabel = "D" + oriRefnum;
|
|
66843
|
-
else if(refnum >= 7500 && refnum < 7590) refnumLabel = "E" + oriRefnum;
|
|
66844
|
-
else if(refnum >= 7620 && refnum < 7900) refnumLabel = "E+" + oriRefnum;
|
|
66946
|
+
else if(refnum >= 7500 && refnum < 7590) refnumLabel = "E" + oriRefnum;
|
|
66947
|
+
else if(refnum >= 7620 && refnum < 7900) refnumLabel = "E+" + oriRefnum;
|
|
66845
66948
|
else if(refnum >= 8000 && refnum < 8900) refnumLabel = "F" + oriRefnum;
|
|
66846
66949
|
else if(refnum >= 9500 && refnum < 9590) refnumLabel = "G" + oriRefnum;
|
|
66847
66950
|
else if(refnum >= 9620 && refnum < 9690) refnumLabel = "G+" + oriRefnum;
|
|
@@ -66930,7 +67033,7 @@ class Dssp {
|
|
|
66930
67033
|
if(type == 'igstrand' || type == 'IgStrand') {
|
|
66931
67034
|
// iGStrand reference numbers were adjusted when showing in sequences
|
|
66932
67035
|
if(me.bNode) {
|
|
66933
|
-
for(let chnid in ic.chains) {
|
|
67036
|
+
for(let chnid in ic.chains) {
|
|
66934
67037
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chnid]);
|
|
66935
67038
|
if(ic.proteins.hasOwnProperty(atom.serial)) {
|
|
66936
67039
|
let giSeq = [];
|
|
@@ -66941,22 +67044,22 @@ class Dssp {
|
|
|
66941
67044
|
}
|
|
66942
67045
|
}
|
|
66943
67046
|
}
|
|
66944
|
-
|
|
67047
|
+
|
|
66945
67048
|
let resid2refnum = {};
|
|
66946
67049
|
for(let resid in ic.resid2refnum) {
|
|
66947
67050
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
|
|
66948
67051
|
if(!atom) continue;
|
|
66949
|
-
|
|
67052
|
+
|
|
66950
67053
|
let resn = me.utilsCls.residueName2Abbr(atom.resn.substr(0, 3));
|
|
66951
|
-
|
|
67054
|
+
|
|
66952
67055
|
let domainid = ic.resid2domainid[resid];
|
|
66953
67056
|
let refnumLabel = ic.resid2refnum[resid];
|
|
66954
|
-
|
|
67057
|
+
|
|
66955
67058
|
if(refnumLabel) {
|
|
66956
67059
|
let refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
66957
67060
|
(ic.domainid2ig2kabat[domainid]) ? ic.domainid2ig2kabat[domainid][refnumStr_ori] : undefined;
|
|
66958
67061
|
}
|
|
66959
|
-
|
|
67062
|
+
|
|
66960
67063
|
if(ic.resid2refnum[resid]) {
|
|
66961
67064
|
if(ic.residIgLoop.hasOwnProperty(resid)) { // loop
|
|
66962
67065
|
resid2refnum[resid + '_' + resn] = ic.resid2refnum[resid] + '_loop';
|
|
@@ -67037,18 +67140,18 @@ class Dssp {
|
|
|
67037
67140
|
for(let resid in ic.resid2refnum) {
|
|
67038
67141
|
let domainid = ic.resid2domainid[resid];
|
|
67039
67142
|
let refnumStr, refnumLabel = ic.resid2refnum[resid];
|
|
67040
|
-
|
|
67143
|
+
|
|
67041
67144
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
|
|
67042
67145
|
let resn = me.utilsCls.residueName2Abbr(atom.resn.substr(0, 3));
|
|
67043
|
-
|
|
67146
|
+
|
|
67044
67147
|
if(refnumLabel) {
|
|
67045
67148
|
let refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
67046
67149
|
refnumStr = (ic.domainid2ig2kabat[domainid]) ? ic.domainid2ig2kabat[domainid][refnumStr_ori] : undefined;
|
|
67047
67150
|
}
|
|
67048
|
-
|
|
67151
|
+
|
|
67049
67152
|
resid2kabat[resid + '_' + resn] = refnumStr;
|
|
67050
67153
|
}
|
|
67051
|
-
|
|
67154
|
+
|
|
67052
67155
|
refData += JSON.stringify(resid2kabat);
|
|
67053
67156
|
}
|
|
67054
67157
|
// 3. show IMGT ref numbers
|
|
@@ -67057,25 +67160,25 @@ class Dssp {
|
|
|
67057
67160
|
for(let resid in ic.resid2refnum) {
|
|
67058
67161
|
let domainid = ic.resid2domainid[resid];
|
|
67059
67162
|
let refnumStr, refnumLabel = ic.resid2refnum[resid];
|
|
67060
|
-
|
|
67163
|
+
|
|
67061
67164
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
|
|
67062
67165
|
let resn = me.utilsCls.residueName2Abbr(atom.resn.substr(0, 3));
|
|
67063
|
-
|
|
67166
|
+
|
|
67064
67167
|
if(refnumLabel) {
|
|
67065
67168
|
let refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
67066
67169
|
refnumStr = (ic.domainid2ig2imgt[domainid]) ? ic.domainid2ig2imgt[domainid][refnumStr_ori] : undefined;
|
|
67067
67170
|
}
|
|
67068
|
-
|
|
67171
|
+
|
|
67069
67172
|
resid2imgt[resid + '_' + resn] = refnumStr;
|
|
67070
67173
|
}
|
|
67071
|
-
|
|
67174
|
+
|
|
67072
67175
|
refData += JSON.stringify(resid2imgt);
|
|
67073
67176
|
}
|
|
67074
67177
|
|
|
67075
67178
|
|
|
67076
67179
|
if(!me.bNode) {
|
|
67077
67180
|
let file_pref = Object.keys(me.utilsCls.getHlStructures()).join(',');
|
|
67078
|
-
|
|
67181
|
+
|
|
67079
67182
|
ic.saveFileCls.saveFile(file_pref + '_refnum_' + type + '.txt', 'text', [refData]);
|
|
67080
67183
|
}
|
|
67081
67184
|
else {
|
|
@@ -67093,7 +67196,7 @@ class Dssp {
|
|
|
67093
67196
|
|
|
67094
67197
|
for(let i = 0, il = parseInt((ajaxArray.length - 1) / n + 1); i < il; ++i) {
|
|
67095
67198
|
let currAjaxArray = [];
|
|
67096
|
-
if(i == il - 1) { // last one
|
|
67199
|
+
if(i == il - 1) { // last one
|
|
67097
67200
|
currAjaxArray = ajaxArray.slice(i * n, ajaxArray.length);
|
|
67098
67201
|
}
|
|
67099
67202
|
else {
|