icn3d 3.31.5 → 3.31.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/icn3d.js +116 -102
- package/icn3d.min.js +4 -2
- package/icn3d.module.js +116 -102
- package/package.json +1 -1
package/icn3d.module.js
CHANGED
|
@@ -10055,7 +10055,7 @@ class ClickMenu {
|
|
|
10055
10055
|
});
|
|
10056
10056
|
|
|
10057
10057
|
me.myEventCls.onIds("#" + me.pre + "mn1_exportKabat", "click", async function(e) { let ic = me.icn3d; //e.preventDefault();
|
|
10058
|
-
|
|
10058
|
+
ic.refnumCls.exportRefnum('kabat');
|
|
10059
10059
|
thisClass.setLogCmd("export refnum kabat", true);
|
|
10060
10060
|
});
|
|
10061
10061
|
|
|
@@ -37080,7 +37080,7 @@ class Alternate {
|
|
|
37080
37080
|
|
|
37081
37081
|
ic.drawCls.draw();
|
|
37082
37082
|
|
|
37083
|
-
ic.bShowHighlight = true;
|
|
37083
|
+
ic.bShowHighlight = true; //reset
|
|
37084
37084
|
}
|
|
37085
37085
|
|
|
37086
37086
|
async alternateWrapper() { let ic = this.icn3d; ic.icn3dui;
|
|
@@ -42070,7 +42070,7 @@ class AnnoIg {
|
|
|
42070
42070
|
|
|
42071
42071
|
let tmscore = info.score;
|
|
42072
42072
|
|
|
42073
|
-
let igType = (parseFloat(tmscore) < ic.refnumCls.
|
|
42073
|
+
let igType = (parseFloat(tmscore) < ic.refnumCls.TMThresholdIgType ) ? 'Ig' : ic.ref2igtype[info.refpdbname];
|
|
42074
42074
|
titleArray.push(igType + ' (TM:' + parseFloat(tmscore).toFixed(2) + ')');
|
|
42075
42075
|
fullTitleArray.push(igType + ' (TM:' + parseFloat(tmscore).toFixed(2) + '), template: ' + info.refpdbname + ', type: ' + ic.ref2igtype[info.refpdbname] + ', Seq. identity: ' + parseFloat(info.seqid).toFixed(2) + ', aligned residues: ' + info.nresAlign);
|
|
42076
42076
|
|
|
@@ -47119,36 +47119,32 @@ class Annotation {
|
|
|
47119
47119
|
}
|
|
47120
47120
|
|
|
47121
47121
|
async updateIg(bSelection, template) { let ic = this.icn3d, me = ic.icn3dui;
|
|
47122
|
-
|
|
47123
|
-
|
|
47124
|
-
|
|
47125
|
-
|
|
47126
|
-
|
|
47127
|
-
|
|
47122
|
+
ic.opts['color'] = 'ig strand';
|
|
47123
|
+
|
|
47124
|
+
// if(!bSelection && !template) {
|
|
47125
|
+
if(!bSelection) {
|
|
47126
|
+
// select all protein chains
|
|
47127
|
+
ic.hAtoms = {};
|
|
47128
|
+
for(let chainid in ic.protein_chainid) {
|
|
47129
|
+
ic.hAtoms = me.hashUtilsCls.unionHash(ic.hAtoms, ic.chains[chainid]);
|
|
47128
47130
|
}
|
|
47129
47131
|
}
|
|
47130
47132
|
|
|
47131
|
-
//
|
|
47132
|
-
|
|
47133
|
-
|
|
47134
|
-
|
|
47135
|
-
|
|
47136
|
-
|
|
47137
|
-
|
|
47138
|
-
}
|
|
47133
|
+
// clear previous refnum
|
|
47134
|
+
let residueHash = ic.firstAtomObjCls.getResiduesFromAtoms(ic.hAtoms);
|
|
47135
|
+
for(let resid in residueHash) {
|
|
47136
|
+
if(ic.resid2refnum) delete ic.resid2refnum[resid];
|
|
47137
|
+
if(ic.residIgLoop) delete ic.residIgLoop[resid];
|
|
47138
|
+
if(ic.resid2domainid) delete ic.resid2domainid[resid];
|
|
47139
|
+
}
|
|
47139
47140
|
|
|
47140
|
-
|
|
47141
|
-
|
|
47142
|
-
|
|
47143
|
-
|
|
47144
|
-
|
|
47145
|
-
// }
|
|
47146
|
-
// ic.bIgShown = true;
|
|
47141
|
+
ic.bRunRefnumAgain = true;
|
|
47142
|
+
for(let chainid in ic.protein_chainid) {
|
|
47143
|
+
await ic.annoIgCls.showIg(chainid, template);
|
|
47144
|
+
ic.bRunRefnumAgain = false; // run it once for all chains
|
|
47145
|
+
}
|
|
47147
47146
|
|
|
47148
47147
|
if(ic.bShowRefnum) {
|
|
47149
|
-
// ic.opts.color = 'ig strand';
|
|
47150
|
-
// ic.setColorCls.setColorByOptions(ic.opts, ic.dAtoms);
|
|
47151
|
-
|
|
47152
47148
|
ic.hlUpdateCls.updateHlAll();
|
|
47153
47149
|
ic.drawCls.draw();
|
|
47154
47150
|
}
|
|
@@ -48883,10 +48879,14 @@ class HlSeq {
|
|
|
48883
48879
|
}
|
|
48884
48880
|
*/
|
|
48885
48881
|
|
|
48886
|
-
if(($(that).attr('domain') !== undefined || $(that).attr('feat') !== undefined) || $(that).attr('
|
|
48882
|
+
if(($(that).attr('domain') !== undefined || $(that).attr('feat') !== undefined) || $(that).attr('ig') !== undefined) {
|
|
48887
48883
|
let residNCBI = chainid + '_' + (j+1).toString();
|
|
48888
48884
|
residueid = ic.ncbi2resid[residNCBI];
|
|
48889
48885
|
}
|
|
48886
|
+
else if($(that).attr('3ddomain') !== undefined) {
|
|
48887
|
+
// the position of residues with coordinates
|
|
48888
|
+
residueid = ic.posid2resid[chainid + '_' + (j+1).toString()];
|
|
48889
|
+
}
|
|
48890
48890
|
else {
|
|
48891
48891
|
residueid = chainid + '_' + (j+1).toString();
|
|
48892
48892
|
}
|
|
@@ -50862,7 +50862,7 @@ class ShowInter {
|
|
|
50862
50862
|
}
|
|
50863
50863
|
}
|
|
50864
50864
|
|
|
50865
|
-
ic.bShowHighlight = false;
|
|
50865
|
+
//!!!ic.bShowHighlight = false;
|
|
50866
50866
|
}
|
|
50867
50867
|
|
|
50868
50868
|
hideHydrogens() { let ic = this.icn3d; ic.icn3dui;
|
|
@@ -52442,8 +52442,10 @@ class ContactMap {
|
|
|
52442
52442
|
// json format: [{"residue1": [1, ..., 1, ..., n, ..., n], "residue2": [1, 2, ..., n, ..., 1, 2, ..., n],
|
|
52443
52443
|
// "distance": [n*n matrix],"max_predicted_aligned_error":31.75}]
|
|
52444
52444
|
//let distMatrix = dataJson[0].distance; // version 2, one dimension
|
|
52445
|
-
let
|
|
52446
|
-
let
|
|
52445
|
+
let data = (dataJson[0]) ? dataJson[0] : dataJson; // dataJson[0] is from AlphaFold UniProt database
|
|
52446
|
+
let distMatrix = data.predicted_aligned_error || data.pae; // version 3, two dimensions
|
|
52447
|
+
let max = data.max_predicted_aligned_error || data.max_pae; // max_predicted_aligned_error is from AlphaFold UniProt database
|
|
52448
|
+
|
|
52447
52449
|
if(!distMatrix || !max) {
|
|
52448
52450
|
alert("The PAE file didn't have the right format...");
|
|
52449
52451
|
return;
|
|
@@ -53844,7 +53846,7 @@ class ChainalignParser {
|
|
|
53844
53846
|
ic.init();
|
|
53845
53847
|
}
|
|
53846
53848
|
else {
|
|
53847
|
-
ic.resetConfig();
|
|
53849
|
+
//ic.resetConfig();
|
|
53848
53850
|
|
|
53849
53851
|
ic.bResetAnno = true;
|
|
53850
53852
|
ic.bResetSets = true;
|
|
@@ -53940,7 +53942,9 @@ class ChainalignParser {
|
|
|
53940
53942
|
let hAtoms = {}, hAtomsTmp = {};
|
|
53941
53943
|
let bLastQuery = false;
|
|
53942
53944
|
|
|
53943
|
-
|
|
53945
|
+
let opts = {};
|
|
53946
|
+
|
|
53947
|
+
opts['color'] = (structArray.length > 1) ? 'structure' : ((structArray[0].length > 5) ? 'confidence' : 'chain');
|
|
53944
53948
|
|
|
53945
53949
|
for(let i = 0, il = structArray.length; i < il; ++i) {
|
|
53946
53950
|
if(i == structArray.length - 1) bLastQuery = true;
|
|
@@ -53972,11 +53976,16 @@ class ChainalignParser {
|
|
|
53972
53976
|
hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp);
|
|
53973
53977
|
}
|
|
53974
53978
|
|
|
53975
|
-
//
|
|
53976
|
-
|
|
53977
|
-
|
|
53978
|
-
|
|
53979
|
+
// add color only for the newly loaded structures
|
|
53980
|
+
ic.setColorCls.setColorByOptions(opts, hAtoms);
|
|
53981
|
+
|
|
53979
53982
|
await ic.ParserUtilsCls.renderStructure();
|
|
53983
|
+
|
|
53984
|
+
if(ic.bAnnoShown) {
|
|
53985
|
+
await ic.showAnnoCls.showAnnotations();
|
|
53986
|
+
ic.annotationCls.resetAnnoTabAll();
|
|
53987
|
+
}
|
|
53988
|
+
|
|
53980
53989
|
if(me.cfg.rotate !== undefined) ic.resizeCanvasCls.rotStruc(me.cfg.rotate, true);
|
|
53981
53990
|
|
|
53982
53991
|
if(bQuery && me.cfg.matchedchains) {
|
|
@@ -60322,7 +60331,9 @@ class ParserUtils {
|
|
|
60322
60331
|
|
|
60323
60332
|
if(data && data.pdbid) {
|
|
60324
60333
|
let question = "This is a single-spanning (bitopic) transmembrane protein according to the Membranome database. Do you want to align the protein with the model from Membranome? If you click \"OK\", you can press the letter \"a\" to alternate the structures.";
|
|
60325
|
-
|
|
60334
|
+
|
|
60335
|
+
if (me.bNode) return;
|
|
60336
|
+
|
|
60326
60337
|
if (me.cfg.afmem == 'off') {
|
|
60327
60338
|
// do nothing
|
|
60328
60339
|
/// if(ic.deferredOpm !== undefined) ic.deferredOpm.resolve();
|
|
@@ -65629,7 +65640,7 @@ class ApplyCommand {
|
|
|
65629
65640
|
else if(command == 'clear selection') {
|
|
65630
65641
|
ic.hlObjectsCls.removeHlObjects();
|
|
65631
65642
|
ic.hlUpdateCls.removeHl2D();
|
|
65632
|
-
ic.bShowHighlight = false;
|
|
65643
|
+
// !!!ic.bShowHighlight = false;
|
|
65633
65644
|
|
|
65634
65645
|
ic.bSelectResidue = false;
|
|
65635
65646
|
}
|
|
@@ -67786,6 +67797,8 @@ class SelectCollections {
|
|
|
67786
67797
|
true
|
|
67787
67798
|
);
|
|
67788
67799
|
ic.bSelectResidue = false;
|
|
67800
|
+
|
|
67801
|
+
ic.bShowHighlight = true; // reset
|
|
67789
67802
|
}
|
|
67790
67803
|
});
|
|
67791
67804
|
|
|
@@ -71214,7 +71227,8 @@ class Dssp {
|
|
|
71214
71227
|
class Refnum {
|
|
71215
71228
|
constructor(icn3d) {
|
|
71216
71229
|
this.icn3d = icn3d;
|
|
71217
|
-
this.
|
|
71230
|
+
this.TMThresholdIgType = 0.85;
|
|
71231
|
+
this.TMThresholdTemplate = 0.4;
|
|
71218
71232
|
this.topClusters = 5;
|
|
71219
71233
|
}
|
|
71220
71234
|
|
|
@@ -71336,13 +71350,13 @@ class Dssp {
|
|
|
71336
71350
|
ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
|
|
71337
71351
|
ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
|
|
71338
71352
|
ic.ref2igtype['CD2_1hnfA_human_V-n1'] = 'IgV';
|
|
71339
|
-
ic.ref2igtype['CD3d_6jxrd_human_C1'] = '
|
|
71340
|
-
ic.ref2igtype['CD3e_6jxrf_human_C1'] = '
|
|
71341
|
-
ic.ref2igtype['CD3g_6jxrg_human_C2'] = '
|
|
71353
|
+
ic.ref2igtype['CD3d_6jxrd_human_C1'] = 'IgC1';
|
|
71354
|
+
ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgC1';
|
|
71355
|
+
ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgC2';
|
|
71342
71356
|
ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
|
|
71343
71357
|
ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
|
|
71344
71358
|
ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
|
|
71345
|
-
ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = '
|
|
71359
|
+
ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = 'IgI';
|
|
71346
71360
|
ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
|
|
71347
71361
|
ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'Cadherin';
|
|
71348
71362
|
ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
|
|
@@ -71350,7 +71364,7 @@ class Dssp {
|
|
|
71350
71364
|
ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
|
|
71351
71365
|
ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
|
|
71352
71366
|
ic.ref2igtype['FAB-LIGHT_5esv_V-n1'] = 'IgV';
|
|
71353
|
-
ic.ref2igtype['GHR_1axiB_human_C1-n1'] = '
|
|
71367
|
+
ic.ref2igtype['GHR_1axiB_human_C1-n1'] = 'IgC1';
|
|
71354
71368
|
ic.ref2igtype['ICOS_6x4gA_human_V'] = 'IgV';
|
|
71355
71369
|
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n2'] = 'IgFN3';
|
|
71356
71370
|
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
|
|
@@ -71358,7 +71372,7 @@ class Dssp {
|
|
|
71358
71372
|
ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
|
|
71359
71373
|
ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
|
|
71360
71374
|
ic.ref2igtype['JAM1_1nbqA_human_Iset-n2'] = 'IgI';
|
|
71361
|
-
ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = '
|
|
71375
|
+
ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = 'IgC1';
|
|
71362
71376
|
ic.ref2igtype['LAG3_7tzgD_human_V-n1'] = 'IgV';
|
|
71363
71377
|
ic.ref2igtype['LaminAC_1ifrA_human'] = 'Lamin';
|
|
71364
71378
|
ic.ref2igtype['MHCIa_7phrH_human_C1'] = 'IgC1';
|
|
@@ -71372,7 +71386,7 @@ class Dssp {
|
|
|
71372
71386
|
ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
|
|
71373
71387
|
ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
|
|
71374
71388
|
ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
|
|
71375
|
-
ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = '
|
|
71389
|
+
ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = 'IgC1';
|
|
71376
71390
|
ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
|
|
71377
71391
|
ic.ref2igtype['TCRa_6jxrm_human_V-n1'] = 'IgV';
|
|
71378
71392
|
ic.ref2igtype['TEAD1_3kysC_human'] = 'IgE';
|
|
@@ -71381,7 +71395,7 @@ class Dssp {
|
|
|
71381
71395
|
ic.ref2igtype['Titin_4uowM_human_Iset-n152'] = 'IgI';
|
|
71382
71396
|
ic.ref2igtype['VISTA_6oilA_human_V'] = 'IgV';
|
|
71383
71397
|
ic.ref2igtype['VNAR_1t6vN_shark_V'] = 'IgV';
|
|
71384
|
-
ic.ref2igtype['VTCN1_Q7Z7D3_human_C1-n2'] = '
|
|
71398
|
+
ic.ref2igtype['VTCN1_Q7Z7D3_human_C1-n2'] = 'IgC1';
|
|
71385
71399
|
}
|
|
71386
71400
|
|
|
71387
71401
|
getPdbAjaxArray() { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -71684,9 +71698,6 @@ class Dssp {
|
|
|
71684
71698
|
|
|
71685
71699
|
parseAlignData_part1(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
71686
71700
|
// async parseAlignData(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
71687
|
-
let tmscoreThreshold = 0.45; // 0.4; //0.5;
|
|
71688
|
-
//let rmsdThreshold = 10;
|
|
71689
|
-
|
|
71690
71701
|
// find the best alignment for each chain
|
|
71691
71702
|
let domainid2segs = {};
|
|
71692
71703
|
let domainid2refpdbnamelist = {};
|
|
@@ -71710,6 +71721,7 @@ class Dssp {
|
|
|
71710
71721
|
}
|
|
71711
71722
|
|
|
71712
71723
|
if(queryData[0].score === undefined) continue;
|
|
71724
|
+
let score = parseFloat(queryData[0].score);
|
|
71713
71725
|
|
|
71714
71726
|
//let domainid_index = domainidpairArray[i].split(',');
|
|
71715
71727
|
//let domainid = domainid_index[0];
|
|
@@ -71718,13 +71730,13 @@ class Dssp {
|
|
|
71718
71730
|
//let chainid = domainid.split('-')[0];
|
|
71719
71731
|
|
|
71720
71732
|
if(!bRound1) {
|
|
71721
|
-
if(queryData[0].score <
|
|
71722
|
-
if(!me.bNode) console.log("bRound1: " + bRound1 + ": domainid " + domainid + " and refpdbname " + refpdbname + " were skipped due to a TM-score less than " +
|
|
71733
|
+
if(queryData[0].score < this.TMThresholdTemplate || queryData[0].num_res < minResidues) {
|
|
71734
|
+
if(!me.bNode) console.log("bRound1: " + bRound1 + ": domainid " + domainid + " and refpdbname " + refpdbname + " were skipped due to a TM-score less than " + this.TMThresholdTemplate);
|
|
71723
71735
|
continue;
|
|
71724
71736
|
}
|
|
71725
71737
|
}
|
|
71726
71738
|
else {
|
|
71727
|
-
if(queryData[0].score <
|
|
71739
|
+
if(queryData[0].score < this.TMThresholdTemplate || queryData[0].num_res < minResidues / 2) {
|
|
71728
71740
|
continue;
|
|
71729
71741
|
}
|
|
71730
71742
|
}
|
|
@@ -71735,6 +71747,9 @@ class Dssp {
|
|
|
71735
71747
|
else {
|
|
71736
71748
|
// if(!me.bNode) console.log("domainid: " + domainid + " refpdbname " + refpdbname + " RMSD: " + queryData[0].super_rmsd + ", num_seg: " + queryData[0].num_seg + ", 10/RMSD + num_seg/5: " + (10 / queryData[0].super_rmsd + queryData[0].num_seg / 5).toFixed(1));
|
|
71737
71749
|
if(!me.bNode) console.log("domainid: " + domainid + " refpdbname " + refpdbname + " TM-score: " + queryData[0].score);
|
|
71750
|
+
|
|
71751
|
+
if(!domainid2refpdbnamelist[domainid]) domainid2refpdbnamelist[domainid] = {};
|
|
71752
|
+
domainid2refpdbnamelist[domainid][refpdbname] = score;
|
|
71738
71753
|
}
|
|
71739
71754
|
|
|
71740
71755
|
// Ig-like domains: B (2150, 2150a, 2150b), C (3150, 3250), E (7150, 7250), F (8150, 8250) strands
|
|
@@ -71794,8 +71809,7 @@ class Dssp {
|
|
|
71794
71809
|
delete ic.domainid2refpdbname[domainid];
|
|
71795
71810
|
delete ic.domainid2score[domainid];
|
|
71796
71811
|
}
|
|
71797
|
-
continue;
|
|
71798
|
-
}
|
|
71812
|
+
continue; }
|
|
71799
71813
|
// }
|
|
71800
71814
|
|
|
71801
71815
|
}
|
|
@@ -71815,7 +71829,6 @@ class Dssp {
|
|
|
71815
71829
|
// }
|
|
71816
71830
|
|
|
71817
71831
|
// let tmAdjust = 0.1;
|
|
71818
|
-
let score = parseFloat(queryData[0].score);
|
|
71819
71832
|
|
|
71820
71833
|
// if the TM score difference is within 0.1 and more strands are found, use the template with more strands
|
|
71821
71834
|
// if(!domainid2segs.hasOwnProperty(domainid) ||
|
|
@@ -71828,9 +71841,7 @@ class Dssp {
|
|
|
71828
71841
|
ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
|
|
71829
71842
|
|
|
71830
71843
|
if(bRound1) {
|
|
71831
|
-
|
|
71832
|
-
ic.domainid2refpdbname[domainid] = score >= this.TMThreshold ? [refpdbname] : ['all_templates'];
|
|
71833
|
-
// if(me.bNode) ic.domainid2refpdbname[domainid] = ['all_templates'];
|
|
71844
|
+
ic.domainid2refpdbname[domainid] = score >= this.TMThresholdIgType ? [refpdbname] : ['all_templates'];
|
|
71834
71845
|
}
|
|
71835
71846
|
else {
|
|
71836
71847
|
ic.domainid2refpdbname[domainid] = [refpdbname];
|
|
@@ -71842,11 +71853,6 @@ class Dssp {
|
|
|
71842
71853
|
ic.domainid2ig2kabat[domainid] = queryData[0].ig2kabat;
|
|
71843
71854
|
ic.domainid2ig2imgt[domainid] = queryData[0].ig2imgt;
|
|
71844
71855
|
}
|
|
71845
|
-
|
|
71846
|
-
if(bRound1) {
|
|
71847
|
-
if(!domainid2refpdbnamelist[domainid]) domainid2refpdbnamelist[domainid] = {};
|
|
71848
|
-
domainid2refpdbnamelist[domainid][refpdbname] = score;
|
|
71849
|
-
}
|
|
71850
71856
|
}
|
|
71851
71857
|
|
|
71852
71858
|
// combine the top clusters for the 2nd round alignment
|
|
@@ -72080,7 +72086,7 @@ class Dssp {
|
|
|
72080
72086
|
|
|
72081
72087
|
if(seg.q_start.indexOf('8550') != -1) {
|
|
72082
72088
|
// check C' and D strands
|
|
72083
|
-
if(cntBtwCE == 1) {
|
|
72089
|
+
if(cntBtwCE == 1 && CAtom && EAtom && (CpAtom || DAtom)) {
|
|
72084
72090
|
let distToC = 999, distToE = 999;
|
|
72085
72091
|
for(let j = 0, jl = CAtomArray.length; j < jl; ++j) {
|
|
72086
72092
|
let dist = (bCpstrand) ? CpAtom.coord.distanceTo(CAtomArray[j].coord) : DAtom.coord.distanceTo(CAtomArray[j].coord);
|
|
@@ -72368,7 +72374,7 @@ class Dssp {
|
|
|
72368
72374
|
// 1. show IgStrand ref numbers
|
|
72369
72375
|
if(type == 'igstrand' || type == 'IgStrand') {
|
|
72370
72376
|
// iGStrand reference numbers were adjusted when showing in sequences
|
|
72371
|
-
// if(me.bNode) {
|
|
72377
|
+
// if(me.bNode) {
|
|
72372
72378
|
if(ic.bShowRefnum) {
|
|
72373
72379
|
for(let chnid in ic.chains) {
|
|
72374
72380
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chnid]);
|
|
@@ -72407,50 +72413,56 @@ class Dssp {
|
|
|
72407
72413
|
}
|
|
72408
72414
|
}
|
|
72409
72415
|
|
|
72410
|
-
let bIgDomain = (ic.domainid2info && Object.keys(ic.domainid2info).length > 0) ? 1 : 0;
|
|
72416
|
+
// let bIgDomain = (ic.domainid2info && Object.keys(ic.domainid2info).length > 0) ? 1 : 0;
|
|
72417
|
+
let stru2bIgDomain = {};
|
|
72418
|
+
for(let domainid in ic.domainid2info) {
|
|
72419
|
+
let stru = domainid.split('_')[0];
|
|
72420
|
+
stru2bIgDomain[stru] = 1;
|
|
72421
|
+
}
|
|
72411
72422
|
|
|
72412
|
-
|
|
72423
|
+
// if(bIgDomain) {
|
|
72424
|
+
for(let structure in ic.structures) {
|
|
72425
|
+
let bIgDomain = stru2bIgDomain.hasOwnProperty(structure) ? 1 : 0;
|
|
72413
72426
|
|
|
72414
|
-
|
|
72415
|
-
|
|
72416
|
-
|
|
72417
|
-
|
|
72418
|
-
|
|
72419
|
-
|
|
72420
|
-
|
|
72421
|
-
|
|
72422
|
-
|
|
72423
|
-
|
|
72424
|
-
|
|
72425
|
-
|
|
72426
|
-
|
|
72427
|
-
|
|
72428
|
-
|
|
72429
|
-
if(!info) continue;
|
|
72430
|
-
|
|
72431
|
-
refData += '"' + domainid + '": {\n';
|
|
72432
|
-
|
|
72433
|
-
refData += '"refpdbname":"' + info.refpdbname + '", "score":' + info.score + ', "seqid":' + info.seqid + ', "nresAlign":' + info.nresAlign + ', "data": [';
|
|
72434
|
-
for(let j = 0, jl = startPosArray.length; j < jl; ++j) {
|
|
72435
|
-
let startPos = startPosArray[j];
|
|
72436
|
-
let endPos = endPosArray[j];
|
|
72437
|
-
for(let k = startPos; k <= endPos; ++k) {
|
|
72438
|
-
const resid = chnid + '_' + ic.chainsSeq[chnid][k].resi + '_' + ic.chainsSeq[chnid][k].name;
|
|
72439
|
-
refData += '{"' + resid + '": "' + resid2refnum[resid] + '"},\n';
|
|
72440
|
-
}
|
|
72441
|
-
}
|
|
72442
|
-
refData += '],\n';
|
|
72427
|
+
refData += '{"' + structure + '": {"Ig domain" : ' + bIgDomain + ', "igs": [\n';
|
|
72428
|
+
|
|
72429
|
+
for(let m = 0, ml = ic.structures[structure].length; ic.bShowRefnum && m < ml; ++m) {
|
|
72430
|
+
let chnid = ic.structures[structure][m];
|
|
72431
|
+
let igArray = ic.chain2igArray[chnid];
|
|
72432
|
+
|
|
72433
|
+
if(igArray && igArray.length > 0) {
|
|
72434
|
+
refData += '{"' + chnid + '": {\n';
|
|
72435
|
+
|
|
72436
|
+
for(let i = 0, il = igArray.length; i < il; ++i) {
|
|
72437
|
+
let startPosArray = igArray[i].startPosArray;
|
|
72438
|
+
let endPosArray = igArray[i].endPosArray;
|
|
72439
|
+
let domainid = igArray[i].domainid;
|
|
72440
|
+
let info = ic.domainid2info[domainid];
|
|
72441
|
+
if(!info) continue;
|
|
72443
72442
|
|
|
72444
|
-
|
|
72443
|
+
refData += '"' + domainid + '": {\n';
|
|
72444
|
+
|
|
72445
|
+
refData += '"refpdbname":"' + info.refpdbname + '", "score":' + info.score + ', "seqid":' + info.seqid + ', "nresAlign":' + info.nresAlign + ', "data": [';
|
|
72446
|
+
for(let j = 0, jl = startPosArray.length; j < jl; ++j) {
|
|
72447
|
+
let startPos = startPosArray[j];
|
|
72448
|
+
let endPos = endPosArray[j];
|
|
72449
|
+
for(let k = startPos; k <= endPos; ++k) {
|
|
72450
|
+
const resid = chnid + '_' + ic.chainsSeq[chnid][k].resi + '_' + ic.chainsSeq[chnid][k].name;
|
|
72451
|
+
refData += '{"' + resid + '": "' + resid2refnum[resid] + '"},\n';
|
|
72452
|
+
}
|
|
72445
72453
|
}
|
|
72454
|
+
refData += '],\n';
|
|
72446
72455
|
|
|
72447
|
-
refData += '}
|
|
72456
|
+
refData += '},\n';
|
|
72448
72457
|
}
|
|
72449
|
-
}
|
|
72450
72458
|
|
|
72451
|
-
|
|
72459
|
+
refData += '}},\n';
|
|
72460
|
+
}
|
|
72452
72461
|
}
|
|
72462
|
+
|
|
72463
|
+
refData += ']}},\n';
|
|
72453
72464
|
}
|
|
72465
|
+
// }
|
|
72454
72466
|
}
|
|
72455
72467
|
// 2. show Kabat ref numbers
|
|
72456
72468
|
else if(type == 'kabat' || type == 'Kabat') {
|
|
@@ -78429,6 +78441,8 @@ class ThreeDPrint {
|
|
|
78429
78441
|
}
|
|
78430
78442
|
|
|
78431
78443
|
ic.drawCls.draw();
|
|
78444
|
+
|
|
78445
|
+
ic.bShowHighlight = true; // reset
|
|
78432
78446
|
}
|
|
78433
78447
|
|
|
78434
78448
|
//Reset the hydrogen bonds, distance lines to dashed lines. Reset the thickness to the default values.
|