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.module.js
CHANGED
|
@@ -8279,6 +8279,8 @@ class ClickMenu {
|
|
|
8279
8279
|
thisClass.setLogCmd('ig refnum on', true);
|
|
8280
8280
|
// await ic.refnumCls.showIgRefNum();
|
|
8281
8281
|
// thisClass.setLogCmd('set annotation ig', true);
|
|
8282
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
8283
|
+
|
|
8282
8284
|
let bSelection = true;
|
|
8283
8285
|
await ic.annotationCls.setAnnoTabIg(bSelection);
|
|
8284
8286
|
|
|
@@ -8303,6 +8305,7 @@ class ClickMenu {
|
|
|
8303
8305
|
thisClass.setLogCmd('ig template ' + template, true);
|
|
8304
8306
|
let bSelection = true;
|
|
8305
8307
|
// await ic.refnumCls.showIgRefNum(template);
|
|
8308
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
8306
8309
|
await ic.annotationCls.setAnnoTabIg(bSelection, template);
|
|
8307
8310
|
});
|
|
8308
8311
|
|
|
@@ -10428,8 +10431,8 @@ class SetMenu {
|
|
|
10428
10431
|
//}
|
|
10429
10432
|
|
|
10430
10433
|
//!!!
|
|
10431
|
-
//html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
10432
|
-
//html += this.getRadio('mn4_clr', 'mn4_clrIgproto', 'Ig Protodomain', undefined, undefined, 2);
|
|
10434
|
+
// html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
10435
|
+
// html += this.getRadio('mn4_clr', 'mn4_clrIgproto', 'Ig Protodomain', undefined, undefined, 2);
|
|
10433
10436
|
}
|
|
10434
10437
|
else {
|
|
10435
10438
|
//if(!me.cfg.hidelicense) html += this.getRadio('mn4_clr', 'mn1_delphi2', 'DelPhi<br><span style="padding-left:1.5em;">Potential ' + me.htmlCls.licenseStr + '</span>');
|
|
@@ -10560,7 +10563,7 @@ class SetMenu {
|
|
|
10560
10563
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelResidues', 'per Residue', undefined, 1, 2);
|
|
10561
10564
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelResnum', 'per Residue & Number', undefined, 1, 2);
|
|
10562
10565
|
//!!!
|
|
10563
|
-
//html += this.getRadio('mn6_addlabel', 'mn6_addlabelRefnum', 'per Reference Number', undefined, 1, 2);
|
|
10566
|
+
// html += this.getRadio('mn6_addlabel', 'mn6_addlabelRefnum', 'per Reference Number', undefined, 1, 2);
|
|
10564
10567
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelChains', 'per Chain', undefined, undefined, 2);
|
|
10565
10568
|
html += this.getRadio('mn6_addlabel', 'mn6_addlabelTermini', 'N- & C-Termini', undefined, 1, 2);
|
|
10566
10569
|
}
|
|
@@ -10658,8 +10661,9 @@ class SetMenu {
|
|
|
10658
10661
|
html += this.getLink('mn6_igrefYes', 'Show Ig for Selection', undefined, 2);
|
|
10659
10662
|
html += this.getLink('mn6_igrefTpl', 'Ig w/ Specified Template', undefined, 2);
|
|
10660
10663
|
html += this.getLink('mn6_igrefNo', 'Reset Ig Ref. Number', undefined, 2);
|
|
10661
|
-
|
|
10664
|
+
|
|
10662
10665
|
html += this.getMenuSep();
|
|
10666
|
+
*/
|
|
10663
10667
|
|
|
10664
10668
|
html += this.getLink('mn6_customref', 'Custom Ref. Number', undefined, 2);
|
|
10665
10669
|
html += "</ul>";
|
|
@@ -12810,12 +12814,17 @@ class SetDialog {
|
|
|
12810
12814
|
|
|
12811
12815
|
//html += me.htmlCls.setHtmlCls.getOptionHtml(['0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100'], 3);
|
|
12812
12816
|
let group2tpl = {};
|
|
12813
|
-
group2tpl['V'] = ['
|
|
12814
|
-
group2tpl['C1'] = ['FAB-LIGHT_5esv_C1-n2', '
|
|
12815
|
-
group2tpl['C2'] = ['CD2_1hnfA_human_C2-n2', '
|
|
12816
|
-
group2tpl['
|
|
12817
|
-
group2tpl['
|
|
12818
|
-
|
|
12817
|
+
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'];
|
|
12818
|
+
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'];
|
|
12819
|
+
group2tpl['C2'] = ['CD2_1hnfA_human_C2-n2', 'Contactin1_3s97C_human_C2-n2', 'LAG3_7tzgD_human_C2-n2', 'Siglec3_5j0bB_human_C2-n2'];
|
|
12820
|
+
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'];
|
|
12821
|
+
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'];
|
|
12822
|
+
|
|
12823
|
+
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'];
|
|
12824
|
+
|
|
12825
|
+
group2tpl['FN3-like'] = ['BArrestin1_4jqiA_rat_n1', 'C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
|
|
12826
|
+
|
|
12827
|
+
group2tpl['Other'] = ['CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human', 'ORF7a_1xakA_virus'];
|
|
12819
12828
|
|
|
12820
12829
|
for(let group in group2tpl) {
|
|
12821
12830
|
html += "<optgroup label='" + group + "'>";
|
|
@@ -12869,10 +12878,10 @@ class SetDialog {
|
|
|
12869
12878
|
html += "<td></td>";
|
|
12870
12879
|
html += "</tr><tr>";
|
|
12871
12880
|
html += tmpStr1 + me.htmlCls.inputCheckStr + "id='" + me.pre + "anno_ig'>Ig Domains" + me.htmlCls.space2 + "</span></td>";
|
|
12872
|
-
|
|
12881
|
+
|
|
12873
12882
|
html += "<td></td>";
|
|
12874
12883
|
html += "</tr></table></div></div>";
|
|
12875
|
-
|
|
12884
|
+
*/
|
|
12876
12885
|
return html;
|
|
12877
12886
|
}
|
|
12878
12887
|
}
|
|
@@ -15595,6 +15604,14 @@ class Events {
|
|
|
15595
15604
|
thisClass.setLogCmd('define igloop sets | chain ' + chainid, true);
|
|
15596
15605
|
});
|
|
15597
15606
|
|
|
15607
|
+
$(document).on("click", ".icn3d-igdomainsets", function(e) { let ic = me.icn3d;
|
|
15608
|
+
e.stopImmediatePropagation();
|
|
15609
|
+
//e.preventDefault();
|
|
15610
|
+
let chainid = $(this).attr('chainid');
|
|
15611
|
+
ic.addTrackCls.defineIgstrand(chainid, 'igdomain');
|
|
15612
|
+
thisClass.setLogCmd('define igdomain sets | chain ' + chainid, true);
|
|
15613
|
+
});
|
|
15614
|
+
|
|
15598
15615
|
me.myEventCls.onIds("#" + me.pre + "deletesets", "click", function(e) { let ic = me.icn3d;
|
|
15599
15616
|
ic.definedSetsCls.deleteSelectedSets();
|
|
15600
15617
|
thisClass.setLogCmd("delete selected sets", true);
|
|
@@ -33374,7 +33391,7 @@ class Instancing {
|
|
|
33374
33391
|
}
|
|
33375
33392
|
|
|
33376
33393
|
if(ic.mdlImpostor !== undefined) {
|
|
33377
|
-
// after three.js version 128, the cylinder impostor seemed to have a problem in cloning
|
|
33394
|
+
// after three.js version 128, the cylinder impostor seemed to have a problem in cloning
|
|
33378
33395
|
symmetryMate = ic.mdlImpostor.clone();
|
|
33379
33396
|
//symmetryMate.applyMatrix(mat);
|
|
33380
33397
|
this.applyMat(symmetryMate, mat);
|
|
@@ -37654,7 +37671,8 @@ class AnnoCddSite {
|
|
|
37654
37671
|
|
|
37655
37672
|
//var setname = chnid + "_" + domain + "_" + index + "_" + r; //chnid + "_" + type + "_" + index + "_" + r;
|
|
37656
37673
|
let setname = chnid + "_" + domain;
|
|
37657
|
-
if(type != 'domain') setname += "_" + index + "_" + r;
|
|
37674
|
+
// if(type != 'domain') setname += "_" + index + "_" + r;
|
|
37675
|
+
if(type != 'domain') setname = chnid + "_" + index + "_" + r + "_" + domain;
|
|
37658
37676
|
|
|
37659
37677
|
if(type == 'domain') pssmid2fromArray[pssmid] = fromArray;
|
|
37660
37678
|
if(type == 'domain') pssmid2toArray[pssmid] = toArray;
|
|
@@ -37733,7 +37751,13 @@ class AnnoCddSite {
|
|
|
37733
37751
|
|
|
37734
37752
|
if(me.cfg.blast_rep_id != chnid) { // regular
|
|
37735
37753
|
for(let i = 0, il = fromArray.length; i < il; ++i) {
|
|
37736
|
-
let emptyWidth
|
|
37754
|
+
let emptyWidth;
|
|
37755
|
+
if(titleArray) {
|
|
37756
|
+
emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i]) / ic.maxAnnoLength) : Math.round(ic.seqAnnWidth *(fromArray[i] - toArray[i-1] - 1) / ic.maxAnnoLength);
|
|
37757
|
+
}
|
|
37758
|
+
else {
|
|
37759
|
+
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);
|
|
37760
|
+
}
|
|
37737
37761
|
|
|
37738
37762
|
html2 += '<div style="display:inline-block; width:' + emptyWidth + 'px;"> </div>';
|
|
37739
37763
|
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>';
|
|
@@ -38987,7 +39011,7 @@ class AnnoIg {
|
|
|
38987
39011
|
refnumLabel = ic.resid2refnum[residueid];
|
|
38988
39012
|
let bHidelabel = false;
|
|
38989
39013
|
|
|
38990
|
-
if(refnumLabel) {
|
|
39014
|
+
if(refnumLabel) {
|
|
38991
39015
|
refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
38992
39016
|
currStrand = refnumLabel.replace(new RegExp(refnumStr_ori,'g'), '');
|
|
38993
39017
|
currStrand_ori = currStrand;
|
|
@@ -39019,8 +39043,9 @@ class AnnoIg {
|
|
|
39019
39043
|
|
|
39020
39044
|
igElem = {};
|
|
39021
39045
|
igElem.startPos = i;
|
|
39022
|
-
igElem.domainid = domainid;
|
|
39023
39046
|
}
|
|
39047
|
+
|
|
39048
|
+
if(domainid) igElem.domainid = domainid;
|
|
39024
39049
|
|
|
39025
39050
|
if(bCustom) {
|
|
39026
39051
|
if(!refnumStr) {
|
|
@@ -39107,11 +39132,11 @@ class AnnoIg {
|
|
|
39107
39132
|
htmlTmp += '<span class="icn3d-residueNum"></span>';
|
|
39108
39133
|
}
|
|
39109
39134
|
else if(kabat_or_imgt == 1) {
|
|
39110
|
-
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="Kabat Reference Numbers
|
|
39135
|
+
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="Kabat Reference Numbers">Kabat Ref. No.</div>';
|
|
39111
39136
|
htmlTmp += '<span class="icn3d-residueNum"></span>';
|
|
39112
39137
|
}
|
|
39113
39138
|
else if(kabat_or_imgt == 2) {
|
|
39114
|
-
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="IMGT Reference Numbers
|
|
39139
|
+
htmlTmp += '<div class="icn3d-annoTitle" anno="0" title="IMGT Reference Numbers">IMGT Ref. No.</div>';
|
|
39115
39140
|
htmlTmp += '<span class="icn3d-residueNum"></span>';
|
|
39116
39141
|
}
|
|
39117
39142
|
else {
|
|
@@ -39135,9 +39160,10 @@ class AnnoIg {
|
|
|
39135
39160
|
html += '</div>';
|
|
39136
39161
|
html += '</div>';
|
|
39137
39162
|
|
|
39138
|
-
let igArray = ic.chain2igArray[chnid];
|
|
39163
|
+
let igArray = ic.chain2igArray[chnid];
|
|
39139
39164
|
if(igArray.length == 0) return {html: '', html2: '', html3: ''};
|
|
39140
39165
|
let rangeArray = [], titleArray = [], fullTitleArray = [], domainArray = [];
|
|
39166
|
+
|
|
39141
39167
|
for(let i = 0, il = igArray.length; i < il; ++i) {
|
|
39142
39168
|
let domainid = igArray[i].domainid;
|
|
39143
39169
|
let info = ic.domainid2info[domainid];
|
|
@@ -39163,10 +39189,10 @@ class AnnoIg {
|
|
|
39163
39189
|
let colorStr =(atom.color === undefined || atom.color.getHexString() === 'FFFFFF') ? 'DDDDDD' : atom.color.getHexString();
|
|
39164
39190
|
let color =(atom.color !== undefined) ? colorStr : "CCCCCC";
|
|
39165
39191
|
|
|
39166
|
-
let emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i]
|
|
39192
|
+
let emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i]) / ic.maxAnnoLength) :
|
|
39167
39193
|
Math.round(ic.seqAnnWidth *(fromArray[i] - toArray[i-1] - 1) / ic.maxAnnoLength);
|
|
39168
39194
|
html2 += '<div style="display:inline-block; width:' + emptyWidth + 'px;"> </div>';
|
|
39169
|
-
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] + '">' +
|
|
39195
|
+
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>';
|
|
39170
39196
|
}
|
|
39171
39197
|
|
|
39172
39198
|
html2 += htmlCnt;
|
|
@@ -40539,12 +40565,16 @@ class Domain3d {
|
|
|
40539
40565
|
|
|
40540
40566
|
// this.elements from the this.top of the this.stack
|
|
40541
40567
|
//elts = &this.elements[this.stack[this.top - 1]];
|
|
40568
|
+
|
|
40542
40569
|
for(i = this.stack[this.top - 1], il = this.elements.length; i < il; ++i) {
|
|
40543
40570
|
elts.push(this.elements[i]);
|
|
40544
40571
|
}
|
|
40545
40572
|
|
|
40546
40573
|
// generate the partition based on the cut //
|
|
40547
|
-
for (i = ne = ne0 = ne1 = 0, prt = prt0, t = -1; i < k; i++) {
|
|
40574
|
+
// for (i = ne = ne0 = ne1 = 0, prt = prt0, t = -1; i < k; i++) {
|
|
40575
|
+
let bAtZero = true;
|
|
40576
|
+
prt = prt0;
|
|
40577
|
+
for (i = ne = ne0 = ne1 = 0, t = -1; i < k; i++) {
|
|
40548
40578
|
// write the this.elements into prt //
|
|
40549
40579
|
for (j = t + 1; j <= cut[i]; j++)
|
|
40550
40580
|
prt[ne++] = elts[j];
|
|
@@ -40552,15 +40582,20 @@ class Domain3d {
|
|
|
40552
40582
|
t = cut[i];
|
|
40553
40583
|
|
|
40554
40584
|
// switch the partition //
|
|
40555
|
-
if (prt == prt0) {
|
|
40585
|
+
// if (prt == prt0) {
|
|
40586
|
+
if (bAtZero) {
|
|
40556
40587
|
ne0 = ne;
|
|
40557
40588
|
prt = prt1;
|
|
40558
40589
|
ne = ne1;
|
|
40590
|
+
|
|
40591
|
+
bAtZero = false;
|
|
40559
40592
|
}
|
|
40560
40593
|
else {
|
|
40561
40594
|
ne1 = ne;
|
|
40562
40595
|
prt = prt0;
|
|
40563
40596
|
ne = ne0;
|
|
40597
|
+
|
|
40598
|
+
bAtZero = true;
|
|
40564
40599
|
}
|
|
40565
40600
|
}
|
|
40566
40601
|
|
|
@@ -40568,7 +40603,8 @@ class Domain3d {
|
|
|
40568
40603
|
for (j = t + 1; j < n; j++)
|
|
40569
40604
|
prt[ne++] = elts[j];
|
|
40570
40605
|
|
|
40571
|
-
if (prt == prt0)
|
|
40606
|
+
// if (prt == prt0)
|
|
40607
|
+
if (bAtZero)
|
|
40572
40608
|
ne0 = ne;
|
|
40573
40609
|
else
|
|
40574
40610
|
ne1 = ne;
|
|
@@ -41237,6 +41273,8 @@ class Domain3d {
|
|
|
41237
41273
|
let ss1 = parseInt(ssPair[0]);
|
|
41238
41274
|
let ss2 = parseInt(ssPair[1]);
|
|
41239
41275
|
|
|
41276
|
+
if(ctable[pair] < this.min_contacts) ctable[pair] = 0;
|
|
41277
|
+
|
|
41240
41278
|
// both are sheets
|
|
41241
41279
|
// min number of contacts: this.min_contacts
|
|
41242
41280
|
if(substruct[ss1 - 1].Sheet && substruct[ss2 - 1].Sheet && ctable[pair] >= this.min_contacts ) {
|
|
@@ -41247,7 +41285,7 @@ class Domain3d {
|
|
|
41247
41285
|
sheetNeighbor[ss2][ss1] = 1;
|
|
41248
41286
|
}
|
|
41249
41287
|
}
|
|
41250
|
-
|
|
41288
|
+
|
|
41251
41289
|
//https://www.geeksforgeeks.org/number-groups-formed-graph-friends/
|
|
41252
41290
|
let existing_groups = 0;
|
|
41253
41291
|
let sheet2sheetnum = {};
|
|
@@ -41270,12 +41308,13 @@ class Domain3d {
|
|
|
41270
41308
|
// get sheet2sheetnum
|
|
41271
41309
|
// each neighboring sheet will be represented by the sheet with the smallest sse
|
|
41272
41310
|
for(let groupnum in this.groupnum2sheet) {
|
|
41273
|
-
let ssArray = this.groupnum2sheet[groupnum].sort();
|
|
41311
|
+
let ssArray = this.groupnum2sheet[groupnum].sort(function(a, b){return a-b});
|
|
41274
41312
|
for(let i = 0, il = ssArray.length; i < il; ++i) {
|
|
41275
41313
|
sheet2sheetnum[ssArray[i]] = ssArray[0];
|
|
41276
41314
|
}
|
|
41277
41315
|
}
|
|
41278
41316
|
|
|
41317
|
+
let invalidSheethash = {};
|
|
41279
41318
|
for (let i = 0; i < nsse; i++) {
|
|
41280
41319
|
if(substruct[i].Sheet) {
|
|
41281
41320
|
let sheetsItem = {};
|
|
@@ -41288,6 +41327,8 @@ class Domain3d {
|
|
|
41288
41327
|
sheetsItem.sheet_num = 0;
|
|
41289
41328
|
sheetsItem.adj_strand2 = 0;
|
|
41290
41329
|
sheetsItem.sse = i + 1;
|
|
41330
|
+
|
|
41331
|
+
invalidSheethash[sheetsItem.sse] = 1;
|
|
41291
41332
|
}
|
|
41292
41333
|
|
|
41293
41334
|
sheets.push(sheetsItem);
|
|
@@ -41319,7 +41360,7 @@ class Domain3d {
|
|
|
41319
41360
|
}
|
|
41320
41361
|
}
|
|
41321
41362
|
|
|
41322
|
-
let minStrand = 6;
|
|
41363
|
+
let minStrand = 6; // number of residues in a strand
|
|
41323
41364
|
|
|
41324
41365
|
if (hasSheets) {
|
|
41325
41366
|
//sheets: array of sheets, each of which has the key: sheet_num (number of strands), adj_strand1, adj_strand2
|
|
@@ -41343,7 +41384,8 @@ class Domain3d {
|
|
|
41343
41384
|
if (cnt> 0) {
|
|
41344
41385
|
for (let i = 0; i < sheets.length; i++) {
|
|
41345
41386
|
let bsrec = sheets[i];
|
|
41346
|
-
this.group_num[bsrec.sse - 1] = bsrec.sheet_num;
|
|
41387
|
+
// this.group_num[bsrec.sse - 1] = bsrec.sheet_num;
|
|
41388
|
+
if(bsrec.sheet_num != 0) this.group_num[bsrec.sse - 1] = bsrec.sheet_num;
|
|
41347
41389
|
}
|
|
41348
41390
|
}
|
|
41349
41391
|
}
|
|
@@ -41399,11 +41441,25 @@ class Domain3d {
|
|
|
41399
41441
|
}
|
|
41400
41442
|
}
|
|
41401
41443
|
}
|
|
41402
|
-
|
|
41444
|
+
|
|
41403
41445
|
list_parts.sort(function(v1, v2) {
|
|
41404
41446
|
return v1[0] - v2[0];
|
|
41405
41447
|
});
|
|
41406
41448
|
|
|
41449
|
+
// remove sheets less than 3 residues
|
|
41450
|
+
let list_partsTmp = [];
|
|
41451
|
+
for(let i = 0, il = list_parts.length; i < il; ++i) {
|
|
41452
|
+
let list_parts_item = [];
|
|
41453
|
+
for(let j = 0, jl = list_parts[i].length; j < jl; ++j) {
|
|
41454
|
+
let sse = list_parts[i][j];
|
|
41455
|
+
if(!invalidSheethash.hasOwnProperty(sse)) {
|
|
41456
|
+
list_parts_item.push(sse);
|
|
41457
|
+
}
|
|
41458
|
+
}
|
|
41459
|
+
if(list_parts_item.length >= this.min_sse) list_partsTmp.push(list_parts[i]);
|
|
41460
|
+
}
|
|
41461
|
+
list_parts = list_partsTmp;
|
|
41462
|
+
|
|
41407
41463
|
//for (lplet = list_parts.begin(); lplet != list_parts.end(); lpint++) {
|
|
41408
41464
|
for (let index = 0, indexl = list_parts.length; index < indexl; ++index) {
|
|
41409
41465
|
//vector<int> prts = *lpint;
|
|
@@ -42490,91 +42546,115 @@ class AddTrack {
|
|
|
42490
42546
|
let selectedResidues = {};
|
|
42491
42547
|
let bUnion = false, bUpdateHighlight = true;
|
|
42492
42548
|
|
|
42493
|
-
let strandCnt = 0, loopCnt = 0;
|
|
42494
|
-
let setName, currStrand, prevStrand, prevStrandReal = 'NT', currType, prevType;
|
|
42495
|
-
|
|
42496
42549
|
// clear selection
|
|
42497
42550
|
ic.hAtoms = {};
|
|
42498
42551
|
|
|
42499
|
-
|
|
42500
|
-
|
|
42501
|
-
for(let i = 0, il = ic.chainsSeq[chainid].length; i < il; ++i) {
|
|
42502
|
-
let currResi = ic.chainsSeq[chainid][i].resi;
|
|
42503
|
-
let resid = chainid + '_' + currResi;
|
|
42552
|
+
if(type == 'igdomain') {
|
|
42553
|
+
let igArray = ic.chain2igArray[chainid];
|
|
42504
42554
|
|
|
42505
|
-
if(
|
|
42506
|
-
|
|
42507
|
-
|
|
42508
|
-
|
|
42509
|
-
|
|
42555
|
+
if(igArray && igArray.length > 0) {
|
|
42556
|
+
|
|
42557
|
+
for(let i = 0, il = igArray.length; i < il; ++i) {
|
|
42558
|
+
let startPos = igArray[i].startPos;
|
|
42559
|
+
let endPos = igArray[i].endPos;
|
|
42560
|
+
let domainid = igArray[i].domainid;
|
|
42510
42561
|
|
|
42511
|
-
|
|
42512
|
-
|
|
42513
|
-
|
|
42562
|
+
selectedResidues = {};
|
|
42563
|
+
for(let j = parseInt(startPos); j <= parseInt(endPos); ++j) {
|
|
42564
|
+
let currResi = ic.chainsSeq[chainid][j].resi;
|
|
42565
|
+
let resid = chainid + '_' + currResi;
|
|
42566
|
+
selectedResidues[resid] = 1;
|
|
42567
|
+
}
|
|
42514
42568
|
|
|
42515
|
-
|
|
42516
|
-
|
|
42517
|
-
selectedResidues[resid] = 1;
|
|
42518
|
-
}
|
|
42519
|
-
}
|
|
42520
|
-
else {
|
|
42521
|
-
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
42522
|
-
currType = 'igloop';
|
|
42569
|
+
let setName = domainid;
|
|
42570
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
42523
42571
|
}
|
|
42572
|
+
}
|
|
42573
|
+
}
|
|
42574
|
+
else {
|
|
42575
|
+
let strandCnt = 0, loopCnt = 0;
|
|
42576
|
+
let setName, currStrand, prevStrand, prevStrandReal = 'NT', currType, prevType;
|
|
42577
|
+
|
|
42578
|
+
let bStart = false;
|
|
42579
|
+
|
|
42580
|
+
for(let i = 0, il = ic.chainsSeq[chainid].length; i < il; ++i) {
|
|
42581
|
+
let currResi = ic.chainsSeq[chainid][i].resi;
|
|
42582
|
+
let resid = chainid + '_' + currResi;
|
|
42583
|
+
|
|
42584
|
+
if(!ic.residues.hasOwnProperty(resid) ) continue;
|
|
42585
|
+
|
|
42586
|
+
let refnumLabel, refnumStr, refnum;
|
|
42587
|
+
refnumLabel = ic.resid2refnum[resid];
|
|
42588
|
+
if(!refnumLabel) continue;
|
|
42589
|
+
|
|
42590
|
+
refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
42591
|
+
currStrand = refnumLabel.replace(refnumStr, '');
|
|
42592
|
+
refnum = parseInt(refnumStr);
|
|
42593
|
+
|
|
42594
|
+
if(type == 'iganchor') {
|
|
42595
|
+
if(refnum > 1000 && refnumStr.substr(refnumStr.length - 2, 2) == '50') {
|
|
42596
|
+
selectedResidues[resid] = 1;
|
|
42597
|
+
}
|
|
42598
|
+
}
|
|
42524
42599
|
else {
|
|
42525
|
-
|
|
42526
|
-
|
|
42600
|
+
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
42601
|
+
currType = 'igloop';
|
|
42602
|
+
}
|
|
42603
|
+
else {
|
|
42604
|
+
currType = 'igstrand';
|
|
42605
|
+
}
|
|
42527
42606
|
|
|
42528
|
-
|
|
42529
|
-
|
|
42530
|
-
|
|
42531
|
-
|
|
42532
|
-
|
|
42533
|
-
|
|
42534
|
-
|
|
42535
|
-
|
|
42607
|
+
if(bStart && currType != prevType && Object.keys(selectedResidues).length > 0) {
|
|
42608
|
+
if(prevType == 'igstrand') {
|
|
42609
|
+
++strandCnt;
|
|
42610
|
+
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
42611
|
+
setName = setName.replace(/'/g, '`');
|
|
42612
|
+
if(type == 'igstrand') {
|
|
42613
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
42614
|
+
if(!bUnion) bUnion = true;
|
|
42615
|
+
}
|
|
42616
|
+
prevStrandReal = prevStrand;
|
|
42536
42617
|
}
|
|
42537
|
-
|
|
42538
|
-
|
|
42539
|
-
|
|
42540
|
-
|
|
42541
|
-
|
|
42542
|
-
|
|
42543
|
-
|
|
42544
|
-
|
|
42545
|
-
if(!bUnion) bUnion = true;
|
|
42618
|
+
else if(prevType == 'igloop') {
|
|
42619
|
+
++loopCnt;
|
|
42620
|
+
setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
|
|
42621
|
+
setName = setName.replace(/'/g, '`');
|
|
42622
|
+
if(type == 'igloop') {
|
|
42623
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
42624
|
+
if(!bUnion) bUnion = true;
|
|
42625
|
+
}
|
|
42546
42626
|
}
|
|
42547
|
-
}
|
|
42548
42627
|
|
|
42549
|
-
|
|
42550
|
-
|
|
42628
|
+
selectedResidues = {};
|
|
42629
|
+
}
|
|
42551
42630
|
|
|
42552
|
-
|
|
42631
|
+
selectedResidues[resid] = 1;
|
|
42553
42632
|
|
|
42554
|
-
|
|
42555
|
-
|
|
42633
|
+
prevStrand = currStrand;
|
|
42634
|
+
prevType = currType;
|
|
42556
42635
|
|
|
42557
|
-
|
|
42558
|
-
|
|
42559
|
-
|
|
42636
|
+
bStart = true;
|
|
42637
|
+
}
|
|
42638
|
+
} // for loop
|
|
42560
42639
|
|
|
42561
|
-
|
|
42562
|
-
|
|
42563
|
-
|
|
42564
|
-
}
|
|
42565
|
-
else {
|
|
42566
|
-
if(prevType == 'igstrand') {
|
|
42567
|
-
++strandCnt;
|
|
42568
|
-
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
42569
|
-
setName = setName.replace(/'/g, '`');
|
|
42570
|
-
if(type == 'igstrand') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
42640
|
+
if(type == 'iganchor') {
|
|
42641
|
+
setName = 'Anchor-' + chainid;
|
|
42642
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
42571
42643
|
}
|
|
42572
|
-
else
|
|
42573
|
-
|
|
42574
|
-
|
|
42575
|
-
|
|
42576
|
-
|
|
42577
|
-
|
|
42644
|
+
else {
|
|
42645
|
+
if(prevType == 'igstrand') {
|
|
42646
|
+
++strandCnt;
|
|
42647
|
+
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
42648
|
+
setName = setName.replace(/'/g, '`');
|
|
42649
|
+
if(type == 'igstrand') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
42650
|
+
}
|
|
42651
|
+
else if(prevType == 'igloop') {
|
|
42652
|
+
++loopCnt;
|
|
42653
|
+
currStrand = 'CT';
|
|
42654
|
+
setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
|
|
42655
|
+
setName = setName.replace(/'/g, '`');
|
|
42656
|
+
if(type == 'igloop') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
42657
|
+
}
|
|
42578
42658
|
}
|
|
42579
42659
|
}
|
|
42580
42660
|
}
|
|
@@ -44433,10 +44513,12 @@ class ShowAnno {
|
|
|
44433
44513
|
+ 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) + " "
|
|
44434
44514
|
+ 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);
|
|
44435
44515
|
|
|
44436
|
-
if(ic.bShowRefnum && ic.chainid2refpdbname.hasOwnProperty(chnid) && ic.chainid2refpdbname[chnid].length > 0) {
|
|
44437
|
-
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) + " "
|
|
44438
|
-
+ this.addButton(chnid, "icn3d-
|
|
44439
|
-
|
|
44516
|
+
// if(ic.bShowRefnum && ic.chainid2refpdbname.hasOwnProperty(chnid) && ic.chainid2refpdbname[chnid].length > 0) {
|
|
44517
|
+
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) + " "
|
|
44518
|
+
+ 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) + " "
|
|
44519
|
+
+ 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) + " "
|
|
44520
|
+
+ 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);
|
|
44521
|
+
// }
|
|
44440
44522
|
$("#" + ic.pre + "dl_annotations").append(chainHtml);
|
|
44441
44523
|
//let itemArray = ['giseq', 'cdd', 'clinvar', 'snp', 'domain', 'site', 'ptm', 'interaction', 'custom', 'ssbond', 'crosslink', 'transmem'];
|
|
44442
44524
|
let itemArray = ['giseq', 'cdd', 'clinvar', 'snp', 'site', 'ptm', 'ssbond', 'crosslink', 'transmem', 'domain', 'custom', 'interaction', 'ig'];
|
|
@@ -61079,6 +61161,7 @@ class ApplyCommand {
|
|
|
61079
61161
|
await ic.annotationCls.setAnnoTabIg();
|
|
61080
61162
|
}
|
|
61081
61163
|
else if(command == 'ig refnum on') {
|
|
61164
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
61082
61165
|
await ic.annotationCls.setAnnoTabIg(true);
|
|
61083
61166
|
}
|
|
61084
61167
|
else if(command == 'highlight level up') {
|
|
@@ -63568,6 +63651,7 @@ class LoadScript {
|
|
|
63568
63651
|
else if(command.indexOf('ig template') == 0 ) {
|
|
63569
63652
|
let template = command.substr(command.lastIndexOf(' ') + 1);
|
|
63570
63653
|
// await ic.refnumCls.showIgRefNum(template);
|
|
63654
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
63571
63655
|
await ic.annotationCls.setAnnoTabIg(true, template);
|
|
63572
63656
|
}
|
|
63573
63657
|
else if(command.indexOf('set annotation 3ddomain') == 0) { // the command may have "|||{"factor"...
|
|
@@ -63771,6 +63855,7 @@ class LoadScript {
|
|
|
63771
63855
|
}
|
|
63772
63856
|
else if(lastCommand.indexOf('ig refnum on') == 0) {
|
|
63773
63857
|
// await ic.refnumCls.showIgRefNum();
|
|
63858
|
+
if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
63774
63859
|
await ic.annotationCls.setAnnoTabIg(true);
|
|
63775
63860
|
}
|
|
63776
63861
|
else if(lastCommand.indexOf('set annotation 3ddomain') == 0) {
|
|
@@ -63897,7 +63982,7 @@ class LoadScript {
|
|
|
63897
63982
|
let idNew = '';
|
|
63898
63983
|
for(let i = 0, il = idArray.length; i < il; ++i) {
|
|
63899
63984
|
if(!(ic.structures && ic.structures.hasOwnProperty(idArray[i]))) {
|
|
63900
|
-
if(
|
|
63985
|
+
if(idNew) idNew += ',';
|
|
63901
63986
|
idNew += idArray[i];
|
|
63902
63987
|
}
|
|
63903
63988
|
}
|
|
@@ -66818,7 +66903,9 @@ class Dssp {
|
|
|
66818
66903
|
ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human', 'CD3d_6jxrd_human_Iset'];
|
|
66819
66904
|
ic.refpdbHash['1CD3g_6jxrg_human_Iset'] = ['CD3g_6jxrg_human_Iset', 'TCRa_6jxrm_human_C1-n2', 'IsdA_2iteA_bacteria'];
|
|
66820
66905
|
ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'MPT63_1lmiA_bacteria', 'CD3e_6jxrf_human_Iset'];
|
|
66821
|
-
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
66906
|
+
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
66907
|
+
|
|
66908
|
+
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'];
|
|
66822
66909
|
|
|
66823
66910
|
// use known ref structure
|
|
66824
66911
|
ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
|
|
@@ -66875,9 +66962,9 @@ class Dssp {
|
|
|
66875
66962
|
|
|
66876
66963
|
ic.ref2igtype['ASF1A_2iijA_human'] = 'IgE';
|
|
66877
66964
|
ic.ref2igtype['B2Microglobulin_7phrL_human_C1'] = 'IgC1';
|
|
66878
|
-
ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = '
|
|
66965
|
+
ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
|
|
66879
66966
|
ic.ref2igtype['BTLA_2aw2A_human_Iset'] = 'IgI';
|
|
66880
|
-
ic.ref2igtype['C3_2qkiD_human_n1'] = '
|
|
66967
|
+
ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
|
|
66881
66968
|
ic.ref2igtype['CD19_6al5A_human_C2orV-n1'] = 'other Ig'; //'CD19';
|
|
66882
66969
|
ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
|
|
66883
66970
|
ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
|
|
@@ -66887,7 +66974,7 @@ class Dssp {
|
|
|
66887
66974
|
ic.ref2igtype['CD3g_6jxrg_human_Iset'] = 'IgI';
|
|
66888
66975
|
ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
|
|
66889
66976
|
ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
|
|
66890
|
-
ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = '
|
|
66977
|
+
ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
|
|
66891
66978
|
ic.ref2igtype['Contactin1_3s97C_human_C2-n2'] = 'IgC2';
|
|
66892
66979
|
ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'other Ig'; //'SOD';
|
|
66893
66980
|
ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'other Ig'; //'Cadherin';
|
|
@@ -66896,12 +66983,12 @@ class Dssp {
|
|
|
66896
66983
|
ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
|
|
66897
66984
|
ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
|
|
66898
66985
|
ic.ref2igtype['FAB-LIGHT_5esv_V-n1'] = 'IgV';
|
|
66899
|
-
ic.ref2igtype['GHR_1axiB_human_FN3-n1'] = '
|
|
66986
|
+
ic.ref2igtype['GHR_1axiB_human_FN3-n1'] = 'IgFN3';
|
|
66900
66987
|
ic.ref2igtype['ICOS_6x4gA_human_V'] = 'IgV';
|
|
66901
|
-
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n2'] = '
|
|
66902
|
-
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = '
|
|
66903
|
-
ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = '
|
|
66904
|
-
ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = '
|
|
66988
|
+
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n2'] = 'IgFN3';
|
|
66989
|
+
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
|
|
66990
|
+
ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = 'IgFN3';
|
|
66991
|
+
ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
|
|
66905
66992
|
ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
|
|
66906
66993
|
ic.ref2igtype['JAM1_1nbqA_human_VorIset-n2'] = 'IgI';
|
|
66907
66994
|
ic.ref2igtype['LAG3_7tzgD_human_C2-n2'] = 'IgC2';
|
|
@@ -66915,9 +67002,9 @@ class Dssp {
|
|
|
66915
67002
|
ic.ref2igtype['PD1_4zqkB_human_V'] = 'IgV';
|
|
66916
67003
|
ic.ref2igtype['PDL1_4z18B_human_V-n1'] = 'IgV';
|
|
66917
67004
|
ic.ref2igtype['Palladin_2dm3A_human_Iset-n1'] = 'IgI';
|
|
66918
|
-
ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = '
|
|
66919
|
-
ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = '
|
|
66920
|
-
ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = '
|
|
67005
|
+
ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
|
|
67006
|
+
ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
|
|
67007
|
+
ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
|
|
66921
67008
|
ic.ref2igtype['Siglec3_5j0bB_human_C2-n2'] = 'IgC2';
|
|
66922
67009
|
ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
|
|
66923
67010
|
ic.ref2igtype['TCRa_6jxrm_human_V-n1'] = 'IgV';
|
|
@@ -66982,7 +67069,7 @@ class Dssp {
|
|
|
66982
67069
|
let thisClass = this;
|
|
66983
67070
|
|
|
66984
67071
|
let struArray = Object.keys(ic.structures);
|
|
66985
|
-
|
|
67072
|
+
|
|
66986
67073
|
let ajaxArray = [];
|
|
66987
67074
|
let domainidpairArray = [];
|
|
66988
67075
|
|
|
@@ -67001,7 +67088,7 @@ class Dssp {
|
|
|
67001
67088
|
for(let j = 0, jl = chainidArray.length; j < jl; ++j) {
|
|
67002
67089
|
let chainid = chainidArray[j];
|
|
67003
67090
|
|
|
67004
|
-
// for selected atoms only
|
|
67091
|
+
// for selected atoms only, assign ic.resid2domainid[resid]
|
|
67005
67092
|
let domainAtomsArray = this.getDomainAtomsArray(chainid, bRerun);
|
|
67006
67093
|
|
|
67007
67094
|
if(!ic.domainid2refpdbname) ic.domainid2refpdbname = {};
|
|
@@ -67018,8 +67105,8 @@ class Dssp {
|
|
|
67018
67105
|
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(domainAtomsArray[k]);
|
|
67019
67106
|
let atomLast = ic.firstAtomObjCls.getLastAtomObj(domainAtomsArray[k]);
|
|
67020
67107
|
let resiSum = atomFirst.resi + ':' + atomLast.resi + ':' + Object.keys(domainAtomsArray[k]).length;
|
|
67021
|
-
//let domainid = chainid + '-' + k + '_' + Object.keys(domainAtomsArray[k]).length;
|
|
67022
|
-
let domainid = chainid + ',' + k + '_' + resiSum;
|
|
67108
|
+
//let domainid = chainid + '-' + k + '_' + Object.keys(domainAtomsArray[k]).length;
|
|
67109
|
+
let domainid = chainid + ',' + k + '_' + resiSum;
|
|
67023
67110
|
ic.domainid2pdb[domainid] = pdb_target;
|
|
67024
67111
|
|
|
67025
67112
|
if(!template) {
|
|
@@ -67037,7 +67124,7 @@ class Dssp {
|
|
|
67037
67124
|
// let alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
|
|
67038
67125
|
|
|
67039
67126
|
ajaxArray.push(alignAjax);
|
|
67040
|
-
|
|
67127
|
+
|
|
67041
67128
|
domainidpairArray.push(domainid + "|" + ic.refpdbArray[index]);
|
|
67042
67129
|
}
|
|
67043
67130
|
}
|
|
@@ -67057,14 +67144,14 @@ class Dssp {
|
|
|
67057
67144
|
// dataArray2 = await allPromise;
|
|
67058
67145
|
|
|
67059
67146
|
dataArray2 = await this.promiseWithFixedJobs(ajaxArray);
|
|
67060
|
-
|
|
67147
|
+
|
|
67061
67148
|
let bRound1 = true;
|
|
67062
|
-
await thisClass.parseAlignData(dataArray2, domainidpairArray, bRound1);
|
|
67149
|
+
bNoMoreIg = await thisClass.parseAlignData(dataArray2, domainidpairArray, bRound1);
|
|
67063
67150
|
|
|
67064
67151
|
/// if(ic.deferredRefnum !== undefined) ic.deferredRefnum.resolve();
|
|
67065
67152
|
}
|
|
67066
67153
|
else {
|
|
67067
|
-
if(!me.bNode) console.log("Start alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
67154
|
+
if(!me.bNode) console.log("Start alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
67068
67155
|
|
|
67069
67156
|
// start round2
|
|
67070
67157
|
let ajaxArray = [];
|
|
@@ -67079,36 +67166,36 @@ class Dssp {
|
|
|
67079
67166
|
//let allPromise2 = Promise.allSettled(pdbAjaxArray);
|
|
67080
67167
|
//ic.pdbDataArray = await allPromise2;
|
|
67081
67168
|
|
|
67082
|
-
|
|
67169
|
+
let pdbDataArray = await this.promiseWithFixedJobs(pdbAjaxArray);
|
|
67083
67170
|
|
|
67084
67171
|
for(let domainid in ic.domainid2refpdbname) {
|
|
67085
67172
|
ic.domainid2refpdbname[domainid];
|
|
67086
67173
|
domainid.substr(0, domainid.indexOf(','));
|
|
67087
67174
|
|
|
67088
67175
|
let pdb_target = ic.domainid2pdb[domainid];
|
|
67089
|
-
for(let index = 0, indexl =
|
|
67176
|
+
for(let index = 0, indexl = pdbDataArray.length; index < indexl; ++index) {
|
|
67090
67177
|
let struct2 = ic.defaultPdbId + index;
|
|
67091
|
-
let pdb_query =
|
|
67178
|
+
let pdb_query = pdbDataArray[index].value; //[0];
|
|
67092
67179
|
|
|
67093
67180
|
let header = 'HEADER ' + struct2 + '\n';
|
|
67094
67181
|
pdb_query = header + pdb_query;
|
|
67095
|
-
|
|
67182
|
+
|
|
67096
67183
|
let dataObj = {'pdb_query': pdb_query, 'pdb_target': pdb_target, "queryid": template};
|
|
67097
67184
|
let alignAjax = me.getAjaxPostPromise(urltmalign, dataObj);
|
|
67098
67185
|
ajaxArray.push(alignAjax);
|
|
67099
|
-
|
|
67186
|
+
|
|
67100
67187
|
//domainidpairArray3.push(domainid + "," + refpdbname);
|
|
67101
67188
|
domainidpairArray3.push(domainid + "|" + template);
|
|
67102
67189
|
}
|
|
67103
67190
|
}
|
|
67104
|
-
|
|
67191
|
+
|
|
67105
67192
|
let dataArray3 = [];
|
|
67106
67193
|
//let allPromise = Promise.allSettled(ajaxArray);
|
|
67107
67194
|
//dataArray3 = await allPromise;
|
|
67108
67195
|
|
|
67109
67196
|
dataArray3 = await this.promiseWithFixedJobs(ajaxArray);
|
|
67110
|
-
|
|
67111
|
-
await thisClass.parseAlignData(dataArray3, domainidpairArray3);
|
|
67197
|
+
|
|
67198
|
+
bNoMoreIg = await thisClass.parseAlignData(dataArray3, domainidpairArray3);
|
|
67112
67199
|
}
|
|
67113
67200
|
|
|
67114
67201
|
return bNoMoreIg;
|
|
@@ -67124,8 +67211,8 @@ class Dssp {
|
|
|
67124
67211
|
}
|
|
67125
67212
|
//console.log("Error in aligning with TM-align...");
|
|
67126
67213
|
return;
|
|
67127
|
-
}
|
|
67128
|
-
*/
|
|
67214
|
+
}
|
|
67215
|
+
*/
|
|
67129
67216
|
}
|
|
67130
67217
|
|
|
67131
67218
|
getDomainAtomsArray(chainid, bRerunDomain) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -67168,21 +67255,22 @@ class Dssp {
|
|
|
67168
67255
|
//let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
|
|
67169
67256
|
// assign ref numbers to selected residues
|
|
67170
67257
|
let result = ic.domain3dCls.c2b_NewSplitChain(currAtoms, undefined);
|
|
67171
|
-
let subdomains = result.subdomains;
|
|
67258
|
+
let subdomains = result.subdomains;
|
|
67172
67259
|
let pos2resi = result.pos2resi;
|
|
67173
67260
|
|
|
67174
67261
|
if(subdomains.length <= 1) {
|
|
67175
67262
|
let residueArray = ic.resid2specCls.atoms2residues(Object.keys(currAtoms));
|
|
67176
67263
|
if(residueArray.length < minResidues) return domainAtomsArray;
|
|
67177
|
-
|
|
67264
|
+
/*
|
|
67178
67265
|
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(currAtoms);
|
|
67179
67266
|
let atomLast = ic.firstAtomObjCls.getLastAtomObj(currAtoms);
|
|
67180
67267
|
let resiSum = atomFirst.resi + ':' + atomLast.resi + ':' + Object.keys(currAtoms).length;
|
|
67181
|
-
|
|
67268
|
+
*/
|
|
67182
67269
|
for(let n = 0, nl = residueArray.length; n < nl; ++n) {
|
|
67183
67270
|
let resid = residueArray[n];
|
|
67184
|
-
|
|
67185
|
-
|
|
67271
|
+
/*
|
|
67272
|
+
ic.resid2domainid[resid] = chainid + ',0' + '_' + resiSum;
|
|
67273
|
+
*/
|
|
67186
67274
|
// clear previous refnum assignment if any
|
|
67187
67275
|
// if(!bRerunDomain && ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
67188
67276
|
// if(ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
@@ -67193,7 +67281,7 @@ class Dssp {
|
|
|
67193
67281
|
|
|
67194
67282
|
domainAtomsArray.push(currAtoms);
|
|
67195
67283
|
}
|
|
67196
|
-
else {
|
|
67284
|
+
else {
|
|
67197
67285
|
for(let k = 0, kl = subdomains.length; k < kl; ++k) {
|
|
67198
67286
|
let domainAtoms = {};
|
|
67199
67287
|
let segArray = subdomains[k];
|
|
@@ -67220,7 +67308,7 @@ class Dssp {
|
|
|
67220
67308
|
if(resCnt < minResidues) continue;
|
|
67221
67309
|
|
|
67222
67310
|
domainAtomsArray.push(domainAtoms);
|
|
67223
|
-
|
|
67311
|
+
/*
|
|
67224
67312
|
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(domainAtoms);
|
|
67225
67313
|
let atomLast = ic.firstAtomObjCls.getLastAtomObj(domainAtoms);
|
|
67226
67314
|
let resiSum = atomFirst.resi + ':' + atomLast.resi + ':' + Object.keys(domainAtoms).length;
|
|
@@ -67231,15 +67319,16 @@ class Dssp {
|
|
|
67231
67319
|
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
67232
67320
|
let resid = chainid + '_' + pos2resi[n];
|
|
67233
67321
|
//domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
67234
|
-
ic.resid2domainid[resid] = chainid + ',' + k + '_' + resiSum;
|
|
67322
|
+
ic.resid2domainid[resid] = chainid + ',' + k + '_' + resiSum;
|
|
67235
67323
|
}
|
|
67236
67324
|
}
|
|
67325
|
+
*/
|
|
67237
67326
|
}
|
|
67238
67327
|
}
|
|
67239
67328
|
|
|
67240
67329
|
return domainAtomsArray;
|
|
67241
67330
|
}
|
|
67242
|
-
|
|
67331
|
+
|
|
67243
67332
|
getTemplateList(domainid) { let ic = this.icn3d; ic.icn3dui;
|
|
67244
67333
|
let refpdbname = '', score = '', seqid = '', nresAlign = '';
|
|
67245
67334
|
|
|
@@ -67272,7 +67361,6 @@ class Dssp {
|
|
|
67272
67361
|
if(!ic.domainid2ig2imgt) ic.domainid2ig2imgt = {};
|
|
67273
67362
|
|
|
67274
67363
|
let minResidues = 20;
|
|
67275
|
-
|
|
67276
67364
|
for(let i = 0, il = domainidpairArray.length; i < il; ++i) {
|
|
67277
67365
|
//let queryData = (me.bNode) ? dataArray[i] : dataArray[i].value; //[0];
|
|
67278
67366
|
let queryData = (dataArray[i]) ? dataArray[i].value : undefined; //[0];
|
|
@@ -67283,7 +67371,7 @@ class Dssp {
|
|
|
67283
67371
|
}
|
|
67284
67372
|
|
|
67285
67373
|
if(queryData[0].score === undefined) continue;
|
|
67286
|
-
|
|
67374
|
+
|
|
67287
67375
|
//let domainid_index = domainidpairArray[i].split(',');
|
|
67288
67376
|
//let domainid = domainid_index[0];
|
|
67289
67377
|
let domainid = domainidpairArray[i].substr(0, domainidpairArray[i].indexOf('|'));
|
|
@@ -67304,7 +67392,7 @@ class Dssp {
|
|
|
67304
67392
|
continue;
|
|
67305
67393
|
}
|
|
67306
67394
|
}
|
|
67307
|
-
|
|
67395
|
+
|
|
67308
67396
|
if(!bRound1) {
|
|
67309
67397
|
if(!me.bNode) console.log("refpdbname " + refpdbname + " TM-score: " + queryData[0].score);
|
|
67310
67398
|
}
|
|
@@ -67367,8 +67455,13 @@ class Dssp {
|
|
|
67367
67455
|
}
|
|
67368
67456
|
|
|
67369
67457
|
if(!domainid2segs.hasOwnProperty(domainid) || queryData[0].score >= ic.domainid2score[domainid].split('_')[0]) {
|
|
67370
|
-
ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
|
|
67371
|
-
|
|
67458
|
+
ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
|
|
67459
|
+
if(bRound1) {
|
|
67460
|
+
ic.domainid2refpdbname[domainid] = parseFloat(queryData[0].score) > 0.75 ? refpdbname : 'all_templates';
|
|
67461
|
+
}
|
|
67462
|
+
else {
|
|
67463
|
+
ic.domainid2refpdbname[domainid] = refpdbname;
|
|
67464
|
+
}
|
|
67372
67465
|
domainid2segs[domainid] = queryData[0].segs;
|
|
67373
67466
|
ic.domainid2ig2kabat[domainid] = queryData[0].ig2kabat;
|
|
67374
67467
|
ic.domainid2ig2imgt[domainid] = queryData[0].ig2imgt;
|
|
@@ -67379,10 +67472,17 @@ class Dssp {
|
|
|
67379
67472
|
}
|
|
67380
67473
|
|
|
67381
67474
|
async parseAlignData(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
67475
|
+
let bNoMoreIg = false;
|
|
67476
|
+
|
|
67382
67477
|
let domainid2segs = this.parseAlignData_part1(dataArray, domainidpairArray, bRound1);
|
|
67383
67478
|
|
|
67479
|
+
if(Object.keys(domainid2segs).length == 0) {
|
|
67480
|
+
bNoMoreIg = true;
|
|
67481
|
+
return bNoMoreIg;
|
|
67482
|
+
}
|
|
67483
|
+
|
|
67384
67484
|
if(bRound1) {
|
|
67385
|
-
if(!me.bNode) console.log("Start round 2 alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
67485
|
+
if(!me.bNode) console.log("Start round 2 alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
67386
67486
|
|
|
67387
67487
|
// start round2
|
|
67388
67488
|
let ajaxArray = [];
|
|
@@ -67400,7 +67500,7 @@ class Dssp {
|
|
|
67400
67500
|
//refpdbname = pdbid;
|
|
67401
67501
|
refpdbname = chainid;
|
|
67402
67502
|
|
|
67403
|
-
if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
|
|
67503
|
+
if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
|
|
67404
67504
|
}
|
|
67405
67505
|
|
|
67406
67506
|
if(!ic.refpdbHash[refpdbname]) {
|
|
@@ -67418,20 +67518,20 @@ class Dssp {
|
|
|
67418
67518
|
//let allPromise2 = Promise.allSettled(pdbAjaxArray);
|
|
67419
67519
|
//ic.pdbDataArray = await allPromise2;
|
|
67420
67520
|
|
|
67421
|
-
|
|
67521
|
+
let pdbDataArray = await this.promiseWithFixedJobs(pdbAjaxArray);
|
|
67422
67522
|
|
|
67423
67523
|
let pdb_target = ic.domainid2pdb[domainid];
|
|
67424
|
-
for(let index = 0, indexl =
|
|
67524
|
+
for(let index = 0, indexl = pdbDataArray.length; index < indexl; ++index) {
|
|
67425
67525
|
let struct2 = ic.defaultPdbId + index;
|
|
67426
|
-
//let pdb_query = (me.bNode) ?
|
|
67427
|
-
let pdb_query =
|
|
67526
|
+
//let pdb_query = (me.bNode) ? pdbDataArray[index] : pdbDataArray[index].value; //[0];
|
|
67527
|
+
let pdb_query = pdbDataArray[index].value; //[0];
|
|
67428
67528
|
let header = 'HEADER ' + struct2 + '\n';
|
|
67429
67529
|
pdb_query = header + pdb_query;
|
|
67430
67530
|
|
|
67431
67531
|
let dataObj = {'pdb_query': pdb_query, 'pdb_target': pdb_target, "queryid": ic.refpdbHash[refpdbname][index]};
|
|
67432
67532
|
let alignAjax = me.getAjaxPostPromise(urltmalign, dataObj);
|
|
67433
67533
|
ajaxArray.push(alignAjax);
|
|
67434
|
-
|
|
67534
|
+
|
|
67435
67535
|
//domainidpairArray3.push(domainid + "," + refpdbname);
|
|
67436
67536
|
domainidpairArray3.push(domainid + "|" + ic.refpdbHash[refpdbname][index]);
|
|
67437
67537
|
}
|
|
@@ -67444,12 +67544,14 @@ class Dssp {
|
|
|
67444
67544
|
dataArray3 = await this.promiseWithFixedJobs(ajaxArray);
|
|
67445
67545
|
|
|
67446
67546
|
await this.parseAlignData(dataArray3, domainidpairArray3, false);
|
|
67447
|
-
|
|
67547
|
+
|
|
67448
67548
|
// end of round 2
|
|
67449
|
-
return;
|
|
67549
|
+
return bNoMoreIg;
|
|
67450
67550
|
}
|
|
67451
67551
|
|
|
67452
67552
|
await this.parseAlignData_part3(domainid2segs);
|
|
67553
|
+
|
|
67554
|
+
return bNoMoreIg;
|
|
67453
67555
|
}
|
|
67454
67556
|
|
|
67455
67557
|
async parseAlignData_part3(domainid2segs) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -67595,7 +67697,7 @@ class Dssp {
|
|
|
67595
67697
|
for(let i = 0, il = segArray.length; i < il; ++i) {
|
|
67596
67698
|
let seg = segArray[i];
|
|
67597
67699
|
if(!seg) continue;
|
|
67598
|
-
|
|
67700
|
+
|
|
67599
67701
|
let qStart = seg.q_start;
|
|
67600
67702
|
parseInt(seg.q_start);
|
|
67601
67703
|
if(isNaN(seg.q_start)) seg.q_start.substr(seg.q_start.length - 1, 1);
|
|
@@ -67636,9 +67738,10 @@ class Dssp {
|
|
|
67636
67738
|
if(currStrand != currStrandFinal) {
|
|
67637
67739
|
refnumLabel = this.getLabelFromRefnum(refnum, currStrandFinal);
|
|
67638
67740
|
}
|
|
67639
|
-
|
|
67640
|
-
ic.resid2refnum[resid] = refnumLabel;
|
|
67741
|
+
|
|
67742
|
+
ic.resid2refnum[resid] = refnumLabel;
|
|
67641
67743
|
ic.resid2refnum_ori[resid] = refnumLabel;
|
|
67744
|
+
ic.resid2domainid[resid] = domainid;
|
|
67642
67745
|
|
|
67643
67746
|
// final reference numbers will be assign in ic.annoIgCls.showRefNum()
|
|
67644
67747
|
|
|
@@ -67685,7 +67788,7 @@ class Dssp {
|
|
|
67685
67788
|
else {
|
|
67686
67789
|
await ic.showAnnoCls.showAnnotations();
|
|
67687
67790
|
}
|
|
67688
|
-
|
|
67791
|
+
|
|
67689
67792
|
ic.annotationCls.setAnnoViewAndDisplay('detailed view');
|
|
67690
67793
|
}
|
|
67691
67794
|
else if(!me.bNode) {
|
|
@@ -67726,13 +67829,13 @@ class Dssp {
|
|
|
67726
67829
|
// loops may have numbers such as 1310, 1410
|
|
67727
67830
|
|
|
67728
67831
|
let refnumLabel;
|
|
67729
|
-
|
|
67832
|
+
|
|
67730
67833
|
if(refnum < 1000) refnumLabel = undefined;
|
|
67731
67834
|
else if(refnum >= 1200 && refnum < 1290) refnumLabel = "A---" + oriRefnum;
|
|
67732
67835
|
else if(refnum >= 1320 && refnum < 1390) refnumLabel = "A--" + oriRefnum;
|
|
67733
67836
|
else if(refnum >= 1420 && refnum < 1490) refnumLabel = "A-" + oriRefnum;
|
|
67734
|
-
else if(refnum >= 1520 && refnum < 1590) refnumLabel = "A" + oriRefnum;
|
|
67735
|
-
else if(refnum >= 1620 && refnum < 1690) refnumLabel = "A+" + oriRefnum;
|
|
67837
|
+
else if(refnum >= 1520 && refnum < 1590) refnumLabel = "A" + oriRefnum;
|
|
67838
|
+
else if(refnum >= 1620 && refnum < 1690) refnumLabel = "A+" + oriRefnum;
|
|
67736
67839
|
else if(refnum >= 1820 && refnum < 1890) refnumLabel = "A'" + oriRefnum;
|
|
67737
67840
|
else if(refnum >= 2000 && refnum < 2900) refnumLabel = "B" + oriRefnum;
|
|
67738
67841
|
else if(refnum >= 3300 && refnum < 3390) refnumLabel = "C--" + oriRefnum;
|
|
@@ -67741,8 +67844,8 @@ class Dssp {
|
|
|
67741
67844
|
else if(refnum >= 4000 && refnum < 4900) refnumLabel = "C'" + oriRefnum;
|
|
67742
67845
|
else if(refnum >= 5000 && refnum < 5900) refnumLabel = "C''" + oriRefnum;
|
|
67743
67846
|
else if(refnum >= 6000 && refnum < 6900) refnumLabel = "D" + oriRefnum;
|
|
67744
|
-
else if(refnum >= 7500 && refnum < 7590) refnumLabel = "E" + oriRefnum;
|
|
67745
|
-
else if(refnum >= 7620 && refnum < 7900) refnumLabel = "E+" + oriRefnum;
|
|
67847
|
+
else if(refnum >= 7500 && refnum < 7590) refnumLabel = "E" + oriRefnum;
|
|
67848
|
+
else if(refnum >= 7620 && refnum < 7900) refnumLabel = "E+" + oriRefnum;
|
|
67746
67849
|
else if(refnum >= 8000 && refnum < 8900) refnumLabel = "F" + oriRefnum;
|
|
67747
67850
|
else if(refnum >= 9500 && refnum < 9590) refnumLabel = "G" + oriRefnum;
|
|
67748
67851
|
else if(refnum >= 9620 && refnum < 9690) refnumLabel = "G+" + oriRefnum;
|
|
@@ -67831,7 +67934,7 @@ class Dssp {
|
|
|
67831
67934
|
if(type == 'igstrand' || type == 'IgStrand') {
|
|
67832
67935
|
// iGStrand reference numbers were adjusted when showing in sequences
|
|
67833
67936
|
if(me.bNode) {
|
|
67834
|
-
for(let chnid in ic.chains) {
|
|
67937
|
+
for(let chnid in ic.chains) {
|
|
67835
67938
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chnid]);
|
|
67836
67939
|
if(ic.proteins.hasOwnProperty(atom.serial)) {
|
|
67837
67940
|
let giSeq = [];
|
|
@@ -67842,22 +67945,22 @@ class Dssp {
|
|
|
67842
67945
|
}
|
|
67843
67946
|
}
|
|
67844
67947
|
}
|
|
67845
|
-
|
|
67948
|
+
|
|
67846
67949
|
let resid2refnum = {};
|
|
67847
67950
|
for(let resid in ic.resid2refnum) {
|
|
67848
67951
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
|
|
67849
67952
|
if(!atom) continue;
|
|
67850
|
-
|
|
67953
|
+
|
|
67851
67954
|
let resn = me.utilsCls.residueName2Abbr(atom.resn.substr(0, 3));
|
|
67852
|
-
|
|
67955
|
+
|
|
67853
67956
|
let domainid = ic.resid2domainid[resid];
|
|
67854
67957
|
let refnumLabel = ic.resid2refnum[resid];
|
|
67855
|
-
|
|
67958
|
+
|
|
67856
67959
|
if(refnumLabel) {
|
|
67857
67960
|
let refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
67858
67961
|
(ic.domainid2ig2kabat[domainid]) ? ic.domainid2ig2kabat[domainid][refnumStr_ori] : undefined;
|
|
67859
67962
|
}
|
|
67860
|
-
|
|
67963
|
+
|
|
67861
67964
|
if(ic.resid2refnum[resid]) {
|
|
67862
67965
|
if(ic.residIgLoop.hasOwnProperty(resid)) { // loop
|
|
67863
67966
|
resid2refnum[resid + '_' + resn] = ic.resid2refnum[resid] + '_loop';
|
|
@@ -67938,18 +68041,18 @@ class Dssp {
|
|
|
67938
68041
|
for(let resid in ic.resid2refnum) {
|
|
67939
68042
|
let domainid = ic.resid2domainid[resid];
|
|
67940
68043
|
let refnumStr, refnumLabel = ic.resid2refnum[resid];
|
|
67941
|
-
|
|
68044
|
+
|
|
67942
68045
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
|
|
67943
68046
|
let resn = me.utilsCls.residueName2Abbr(atom.resn.substr(0, 3));
|
|
67944
|
-
|
|
68047
|
+
|
|
67945
68048
|
if(refnumLabel) {
|
|
67946
68049
|
let refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
67947
68050
|
refnumStr = (ic.domainid2ig2kabat[domainid]) ? ic.domainid2ig2kabat[domainid][refnumStr_ori] : undefined;
|
|
67948
68051
|
}
|
|
67949
|
-
|
|
68052
|
+
|
|
67950
68053
|
resid2kabat[resid + '_' + resn] = refnumStr;
|
|
67951
68054
|
}
|
|
67952
|
-
|
|
68055
|
+
|
|
67953
68056
|
refData += JSON.stringify(resid2kabat);
|
|
67954
68057
|
}
|
|
67955
68058
|
// 3. show IMGT ref numbers
|
|
@@ -67958,25 +68061,25 @@ class Dssp {
|
|
|
67958
68061
|
for(let resid in ic.resid2refnum) {
|
|
67959
68062
|
let domainid = ic.resid2domainid[resid];
|
|
67960
68063
|
let refnumStr, refnumLabel = ic.resid2refnum[resid];
|
|
67961
|
-
|
|
68064
|
+
|
|
67962
68065
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
|
|
67963
68066
|
let resn = me.utilsCls.residueName2Abbr(atom.resn.substr(0, 3));
|
|
67964
|
-
|
|
68067
|
+
|
|
67965
68068
|
if(refnumLabel) {
|
|
67966
68069
|
let refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
67967
68070
|
refnumStr = (ic.domainid2ig2imgt[domainid]) ? ic.domainid2ig2imgt[domainid][refnumStr_ori] : undefined;
|
|
67968
68071
|
}
|
|
67969
|
-
|
|
68072
|
+
|
|
67970
68073
|
resid2imgt[resid + '_' + resn] = refnumStr;
|
|
67971
68074
|
}
|
|
67972
|
-
|
|
68075
|
+
|
|
67973
68076
|
refData += JSON.stringify(resid2imgt);
|
|
67974
68077
|
}
|
|
67975
68078
|
|
|
67976
68079
|
|
|
67977
68080
|
if(!me.bNode) {
|
|
67978
68081
|
let file_pref = Object.keys(me.utilsCls.getHlStructures()).join(',');
|
|
67979
|
-
|
|
68082
|
+
|
|
67980
68083
|
ic.saveFileCls.saveFile(file_pref + '_refnum_' + type + '.txt', 'text', [refData]);
|
|
67981
68084
|
}
|
|
67982
68085
|
else {
|
|
@@ -67994,7 +68097,7 @@ class Dssp {
|
|
|
67994
68097
|
|
|
67995
68098
|
for(let i = 0, il = parseInt((ajaxArray.length - 1) / n + 1); i < il; ++i) {
|
|
67996
68099
|
let currAjaxArray = [];
|
|
67997
|
-
if(i == il - 1) { // last one
|
|
68100
|
+
if(i == il - 1) { // last one
|
|
67998
68101
|
currAjaxArray = ajaxArray.slice(i * n, ajaxArray.length);
|
|
67999
68102
|
}
|
|
68000
68103
|
else {
|