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.js
CHANGED
|
@@ -9154,7 +9154,7 @@ class ClickMenu {
|
|
|
9154
9154
|
});
|
|
9155
9155
|
|
|
9156
9156
|
me.myEventCls.onIds("#" + me.pre + "mn1_exportKabat", "click", async function(e) { let ic = me.icn3d; //e.preventDefault();
|
|
9157
|
-
|
|
9157
|
+
ic.refnumCls.exportRefnum('kabat');
|
|
9158
9158
|
thisClass.setLogCmd("export refnum kabat", true);
|
|
9159
9159
|
});
|
|
9160
9160
|
|
|
@@ -36179,7 +36179,7 @@ class Alternate {
|
|
|
36179
36179
|
|
|
36180
36180
|
ic.drawCls.draw();
|
|
36181
36181
|
|
|
36182
|
-
ic.bShowHighlight = true;
|
|
36182
|
+
ic.bShowHighlight = true; //reset
|
|
36183
36183
|
}
|
|
36184
36184
|
|
|
36185
36185
|
async alternateWrapper() { let ic = this.icn3d; ic.icn3dui;
|
|
@@ -41169,7 +41169,7 @@ class AnnoIg {
|
|
|
41169
41169
|
|
|
41170
41170
|
let tmscore = info.score;
|
|
41171
41171
|
|
|
41172
|
-
let igType = (parseFloat(tmscore) < ic.refnumCls.
|
|
41172
|
+
let igType = (parseFloat(tmscore) < ic.refnumCls.TMThresholdIgType ) ? 'Ig' : ic.ref2igtype[info.refpdbname];
|
|
41173
41173
|
titleArray.push(igType + ' (TM:' + parseFloat(tmscore).toFixed(2) + ')');
|
|
41174
41174
|
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);
|
|
41175
41175
|
|
|
@@ -46218,36 +46218,32 @@ class Annotation {
|
|
|
46218
46218
|
}
|
|
46219
46219
|
|
|
46220
46220
|
async updateIg(bSelection, template) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46221
|
-
|
|
46222
|
-
|
|
46223
|
-
|
|
46224
|
-
|
|
46225
|
-
|
|
46226
|
-
|
|
46221
|
+
ic.opts['color'] = 'ig strand';
|
|
46222
|
+
|
|
46223
|
+
// if(!bSelection && !template) {
|
|
46224
|
+
if(!bSelection) {
|
|
46225
|
+
// select all protein chains
|
|
46226
|
+
ic.hAtoms = {};
|
|
46227
|
+
for(let chainid in ic.protein_chainid) {
|
|
46228
|
+
ic.hAtoms = me.hashUtilsCls.unionHash(ic.hAtoms, ic.chains[chainid]);
|
|
46227
46229
|
}
|
|
46228
46230
|
}
|
|
46229
46231
|
|
|
46230
|
-
//
|
|
46231
|
-
|
|
46232
|
-
|
|
46233
|
-
|
|
46234
|
-
|
|
46235
|
-
|
|
46236
|
-
|
|
46237
|
-
}
|
|
46232
|
+
// clear previous refnum
|
|
46233
|
+
let residueHash = ic.firstAtomObjCls.getResiduesFromAtoms(ic.hAtoms);
|
|
46234
|
+
for(let resid in residueHash) {
|
|
46235
|
+
if(ic.resid2refnum) delete ic.resid2refnum[resid];
|
|
46236
|
+
if(ic.residIgLoop) delete ic.residIgLoop[resid];
|
|
46237
|
+
if(ic.resid2domainid) delete ic.resid2domainid[resid];
|
|
46238
|
+
}
|
|
46238
46239
|
|
|
46239
|
-
|
|
46240
|
-
|
|
46241
|
-
|
|
46242
|
-
|
|
46243
|
-
|
|
46244
|
-
// }
|
|
46245
|
-
// ic.bIgShown = true;
|
|
46240
|
+
ic.bRunRefnumAgain = true;
|
|
46241
|
+
for(let chainid in ic.protein_chainid) {
|
|
46242
|
+
await ic.annoIgCls.showIg(chainid, template);
|
|
46243
|
+
ic.bRunRefnumAgain = false; // run it once for all chains
|
|
46244
|
+
}
|
|
46246
46245
|
|
|
46247
46246
|
if(ic.bShowRefnum) {
|
|
46248
|
-
// ic.opts.color = 'ig strand';
|
|
46249
|
-
// ic.setColorCls.setColorByOptions(ic.opts, ic.dAtoms);
|
|
46250
|
-
|
|
46251
46247
|
ic.hlUpdateCls.updateHlAll();
|
|
46252
46248
|
ic.drawCls.draw();
|
|
46253
46249
|
}
|
|
@@ -47982,10 +47978,14 @@ class HlSeq {
|
|
|
47982
47978
|
}
|
|
47983
47979
|
*/
|
|
47984
47980
|
|
|
47985
|
-
if(($(that).attr('domain') !== undefined || $(that).attr('feat') !== undefined) || $(that).attr('
|
|
47981
|
+
if(($(that).attr('domain') !== undefined || $(that).attr('feat') !== undefined) || $(that).attr('ig') !== undefined) {
|
|
47986
47982
|
let residNCBI = chainid + '_' + (j+1).toString();
|
|
47987
47983
|
residueid = ic.ncbi2resid[residNCBI];
|
|
47988
47984
|
}
|
|
47985
|
+
else if($(that).attr('3ddomain') !== undefined) {
|
|
47986
|
+
// the position of residues with coordinates
|
|
47987
|
+
residueid = ic.posid2resid[chainid + '_' + (j+1).toString()];
|
|
47988
|
+
}
|
|
47989
47989
|
else {
|
|
47990
47990
|
residueid = chainid + '_' + (j+1).toString();
|
|
47991
47991
|
}
|
|
@@ -49961,7 +49961,7 @@ class ShowInter {
|
|
|
49961
49961
|
}
|
|
49962
49962
|
}
|
|
49963
49963
|
|
|
49964
|
-
ic.bShowHighlight = false;
|
|
49964
|
+
//!!!ic.bShowHighlight = false;
|
|
49965
49965
|
}
|
|
49966
49966
|
|
|
49967
49967
|
hideHydrogens() { let ic = this.icn3d; ic.icn3dui;
|
|
@@ -51541,8 +51541,10 @@ class ContactMap {
|
|
|
51541
51541
|
// json format: [{"residue1": [1, ..., 1, ..., n, ..., n], "residue2": [1, 2, ..., n, ..., 1, 2, ..., n],
|
|
51542
51542
|
// "distance": [n*n matrix],"max_predicted_aligned_error":31.75}]
|
|
51543
51543
|
//let distMatrix = dataJson[0].distance; // version 2, one dimension
|
|
51544
|
-
let
|
|
51545
|
-
let
|
|
51544
|
+
let data = (dataJson[0]) ? dataJson[0] : dataJson; // dataJson[0] is from AlphaFold UniProt database
|
|
51545
|
+
let distMatrix = data.predicted_aligned_error || data.pae; // version 3, two dimensions
|
|
51546
|
+
let max = data.max_predicted_aligned_error || data.max_pae; // max_predicted_aligned_error is from AlphaFold UniProt database
|
|
51547
|
+
|
|
51546
51548
|
if(!distMatrix || !max) {
|
|
51547
51549
|
var aaa = 1; //alert("The PAE file didn't have the right format...");
|
|
51548
51550
|
return;
|
|
@@ -52943,7 +52945,7 @@ class ChainalignParser {
|
|
|
52943
52945
|
ic.init();
|
|
52944
52946
|
}
|
|
52945
52947
|
else {
|
|
52946
|
-
ic.resetConfig();
|
|
52948
|
+
//ic.resetConfig();
|
|
52947
52949
|
|
|
52948
52950
|
ic.bResetAnno = true;
|
|
52949
52951
|
ic.bResetSets = true;
|
|
@@ -53039,7 +53041,9 @@ class ChainalignParser {
|
|
|
53039
53041
|
let hAtoms = {}, hAtomsTmp = {};
|
|
53040
53042
|
let bLastQuery = false;
|
|
53041
53043
|
|
|
53042
|
-
|
|
53044
|
+
let opts = {};
|
|
53045
|
+
|
|
53046
|
+
opts['color'] = (structArray.length > 1) ? 'structure' : ((structArray[0].length > 5) ? 'confidence' : 'chain');
|
|
53043
53047
|
|
|
53044
53048
|
for(let i = 0, il = structArray.length; i < il; ++i) {
|
|
53045
53049
|
if(i == structArray.length - 1) bLastQuery = true;
|
|
@@ -53071,11 +53075,16 @@ class ChainalignParser {
|
|
|
53071
53075
|
hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp);
|
|
53072
53076
|
}
|
|
53073
53077
|
|
|
53074
|
-
//
|
|
53075
|
-
|
|
53076
|
-
|
|
53077
|
-
|
|
53078
|
+
// add color only for the newly loaded structures
|
|
53079
|
+
ic.setColorCls.setColorByOptions(opts, hAtoms);
|
|
53080
|
+
|
|
53078
53081
|
await ic.ParserUtilsCls.renderStructure();
|
|
53082
|
+
|
|
53083
|
+
if(ic.bAnnoShown) {
|
|
53084
|
+
await ic.showAnnoCls.showAnnotations();
|
|
53085
|
+
ic.annotationCls.resetAnnoTabAll();
|
|
53086
|
+
}
|
|
53087
|
+
|
|
53079
53088
|
if(me.cfg.rotate !== undefined) ic.resizeCanvasCls.rotStruc(me.cfg.rotate, true);
|
|
53080
53089
|
|
|
53081
53090
|
if(bQuery && me.cfg.matchedchains) {
|
|
@@ -59421,7 +59430,9 @@ class ParserUtils {
|
|
|
59421
59430
|
|
|
59422
59431
|
if(data && data.pdbid) {
|
|
59423
59432
|
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.";
|
|
59424
|
-
|
|
59433
|
+
|
|
59434
|
+
if (me.bNode) return;
|
|
59435
|
+
|
|
59425
59436
|
if (me.cfg.afmem == 'off') {
|
|
59426
59437
|
// do nothing
|
|
59427
59438
|
/// if(ic.deferredOpm !== undefined) ic.deferredOpm.resolve();
|
|
@@ -64728,7 +64739,7 @@ class ApplyCommand {
|
|
|
64728
64739
|
else if(command == 'clear selection') {
|
|
64729
64740
|
ic.hlObjectsCls.removeHlObjects();
|
|
64730
64741
|
ic.hlUpdateCls.removeHl2D();
|
|
64731
|
-
ic.bShowHighlight = false;
|
|
64742
|
+
// !!!ic.bShowHighlight = false;
|
|
64732
64743
|
|
|
64733
64744
|
ic.bSelectResidue = false;
|
|
64734
64745
|
}
|
|
@@ -66885,6 +66896,8 @@ class SelectCollections {
|
|
|
66885
66896
|
true
|
|
66886
66897
|
);
|
|
66887
66898
|
ic.bSelectResidue = false;
|
|
66899
|
+
|
|
66900
|
+
ic.bShowHighlight = true; // reset
|
|
66888
66901
|
}
|
|
66889
66902
|
});
|
|
66890
66903
|
|
|
@@ -70313,7 +70326,8 @@ class Dssp {
|
|
|
70313
70326
|
class Refnum {
|
|
70314
70327
|
constructor(icn3d) {
|
|
70315
70328
|
this.icn3d = icn3d;
|
|
70316
|
-
this.
|
|
70329
|
+
this.TMThresholdIgType = 0.85;
|
|
70330
|
+
this.TMThresholdTemplate = 0.4;
|
|
70317
70331
|
this.topClusters = 5;
|
|
70318
70332
|
}
|
|
70319
70333
|
|
|
@@ -70435,13 +70449,13 @@ class Dssp {
|
|
|
70435
70449
|
ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
|
|
70436
70450
|
ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
|
|
70437
70451
|
ic.ref2igtype['CD2_1hnfA_human_V-n1'] = 'IgV';
|
|
70438
|
-
ic.ref2igtype['CD3d_6jxrd_human_C1'] = '
|
|
70439
|
-
ic.ref2igtype['CD3e_6jxrf_human_C1'] = '
|
|
70440
|
-
ic.ref2igtype['CD3g_6jxrg_human_C2'] = '
|
|
70452
|
+
ic.ref2igtype['CD3d_6jxrd_human_C1'] = 'IgC1';
|
|
70453
|
+
ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgC1';
|
|
70454
|
+
ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgC2';
|
|
70441
70455
|
ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
|
|
70442
70456
|
ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
|
|
70443
70457
|
ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
|
|
70444
|
-
ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = '
|
|
70458
|
+
ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = 'IgI';
|
|
70445
70459
|
ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
|
|
70446
70460
|
ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'Cadherin';
|
|
70447
70461
|
ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
|
|
@@ -70449,7 +70463,7 @@ class Dssp {
|
|
|
70449
70463
|
ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
|
|
70450
70464
|
ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
|
|
70451
70465
|
ic.ref2igtype['FAB-LIGHT_5esv_V-n1'] = 'IgV';
|
|
70452
|
-
ic.ref2igtype['GHR_1axiB_human_C1-n1'] = '
|
|
70466
|
+
ic.ref2igtype['GHR_1axiB_human_C1-n1'] = 'IgC1';
|
|
70453
70467
|
ic.ref2igtype['ICOS_6x4gA_human_V'] = 'IgV';
|
|
70454
70468
|
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n2'] = 'IgFN3';
|
|
70455
70469
|
ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
|
|
@@ -70457,7 +70471,7 @@ class Dssp {
|
|
|
70457
70471
|
ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
|
|
70458
70472
|
ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
|
|
70459
70473
|
ic.ref2igtype['JAM1_1nbqA_human_Iset-n2'] = 'IgI';
|
|
70460
|
-
ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = '
|
|
70474
|
+
ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = 'IgC1';
|
|
70461
70475
|
ic.ref2igtype['LAG3_7tzgD_human_V-n1'] = 'IgV';
|
|
70462
70476
|
ic.ref2igtype['LaminAC_1ifrA_human'] = 'Lamin';
|
|
70463
70477
|
ic.ref2igtype['MHCIa_7phrH_human_C1'] = 'IgC1';
|
|
@@ -70471,7 +70485,7 @@ class Dssp {
|
|
|
70471
70485
|
ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
|
|
70472
70486
|
ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
|
|
70473
70487
|
ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
|
|
70474
|
-
ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = '
|
|
70488
|
+
ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = 'IgC1';
|
|
70475
70489
|
ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
|
|
70476
70490
|
ic.ref2igtype['TCRa_6jxrm_human_V-n1'] = 'IgV';
|
|
70477
70491
|
ic.ref2igtype['TEAD1_3kysC_human'] = 'IgE';
|
|
@@ -70480,7 +70494,7 @@ class Dssp {
|
|
|
70480
70494
|
ic.ref2igtype['Titin_4uowM_human_Iset-n152'] = 'IgI';
|
|
70481
70495
|
ic.ref2igtype['VISTA_6oilA_human_V'] = 'IgV';
|
|
70482
70496
|
ic.ref2igtype['VNAR_1t6vN_shark_V'] = 'IgV';
|
|
70483
|
-
ic.ref2igtype['VTCN1_Q7Z7D3_human_C1-n2'] = '
|
|
70497
|
+
ic.ref2igtype['VTCN1_Q7Z7D3_human_C1-n2'] = 'IgC1';
|
|
70484
70498
|
}
|
|
70485
70499
|
|
|
70486
70500
|
getPdbAjaxArray() { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -70783,9 +70797,6 @@ class Dssp {
|
|
|
70783
70797
|
|
|
70784
70798
|
parseAlignData_part1(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
70785
70799
|
// async parseAlignData(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
70786
|
-
let tmscoreThreshold = 0.45; // 0.4; //0.5;
|
|
70787
|
-
//let rmsdThreshold = 10;
|
|
70788
|
-
|
|
70789
70800
|
// find the best alignment for each chain
|
|
70790
70801
|
let domainid2segs = {};
|
|
70791
70802
|
let domainid2refpdbnamelist = {};
|
|
@@ -70809,6 +70820,7 @@ class Dssp {
|
|
|
70809
70820
|
}
|
|
70810
70821
|
|
|
70811
70822
|
if(queryData[0].score === undefined) continue;
|
|
70823
|
+
let score = parseFloat(queryData[0].score);
|
|
70812
70824
|
|
|
70813
70825
|
//let domainid_index = domainidpairArray[i].split(',');
|
|
70814
70826
|
//let domainid = domainid_index[0];
|
|
@@ -70817,13 +70829,13 @@ class Dssp {
|
|
|
70817
70829
|
//let chainid = domainid.split('-')[0];
|
|
70818
70830
|
|
|
70819
70831
|
if(!bRound1) {
|
|
70820
|
-
if(queryData[0].score <
|
|
70821
|
-
if(!me.bNode) console.log("bRound1: " + bRound1 + ": domainid " + domainid + " and refpdbname " + refpdbname + " were skipped due to a TM-score less than " +
|
|
70832
|
+
if(queryData[0].score < this.TMThresholdTemplate || queryData[0].num_res < minResidues) {
|
|
70833
|
+
if(!me.bNode) console.log("bRound1: " + bRound1 + ": domainid " + domainid + " and refpdbname " + refpdbname + " were skipped due to a TM-score less than " + this.TMThresholdTemplate);
|
|
70822
70834
|
continue;
|
|
70823
70835
|
}
|
|
70824
70836
|
}
|
|
70825
70837
|
else {
|
|
70826
|
-
if(queryData[0].score <
|
|
70838
|
+
if(queryData[0].score < this.TMThresholdTemplate || queryData[0].num_res < minResidues / 2) {
|
|
70827
70839
|
continue;
|
|
70828
70840
|
}
|
|
70829
70841
|
}
|
|
@@ -70834,6 +70846,9 @@ class Dssp {
|
|
|
70834
70846
|
else {
|
|
70835
70847
|
// 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));
|
|
70836
70848
|
if(!me.bNode) console.log("domainid: " + domainid + " refpdbname " + refpdbname + " TM-score: " + queryData[0].score);
|
|
70849
|
+
|
|
70850
|
+
if(!domainid2refpdbnamelist[domainid]) domainid2refpdbnamelist[domainid] = {};
|
|
70851
|
+
domainid2refpdbnamelist[domainid][refpdbname] = score;
|
|
70837
70852
|
}
|
|
70838
70853
|
|
|
70839
70854
|
// Ig-like domains: B (2150, 2150a, 2150b), C (3150, 3250), E (7150, 7250), F (8150, 8250) strands
|
|
@@ -70893,8 +70908,7 @@ class Dssp {
|
|
|
70893
70908
|
delete ic.domainid2refpdbname[domainid];
|
|
70894
70909
|
delete ic.domainid2score[domainid];
|
|
70895
70910
|
}
|
|
70896
|
-
continue;
|
|
70897
|
-
}
|
|
70911
|
+
continue; }
|
|
70898
70912
|
// }
|
|
70899
70913
|
|
|
70900
70914
|
}
|
|
@@ -70914,7 +70928,6 @@ class Dssp {
|
|
|
70914
70928
|
// }
|
|
70915
70929
|
|
|
70916
70930
|
// let tmAdjust = 0.1;
|
|
70917
|
-
let score = parseFloat(queryData[0].score);
|
|
70918
70931
|
|
|
70919
70932
|
// if the TM score difference is within 0.1 and more strands are found, use the template with more strands
|
|
70920
70933
|
// if(!domainid2segs.hasOwnProperty(domainid) ||
|
|
@@ -70927,9 +70940,7 @@ class Dssp {
|
|
|
70927
70940
|
ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
|
|
70928
70941
|
|
|
70929
70942
|
if(bRound1) {
|
|
70930
|
-
|
|
70931
|
-
ic.domainid2refpdbname[domainid] = score >= this.TMThreshold ? [refpdbname] : ['all_templates'];
|
|
70932
|
-
// if(me.bNode) ic.domainid2refpdbname[domainid] = ['all_templates'];
|
|
70943
|
+
ic.domainid2refpdbname[domainid] = score >= this.TMThresholdIgType ? [refpdbname] : ['all_templates'];
|
|
70933
70944
|
}
|
|
70934
70945
|
else {
|
|
70935
70946
|
ic.domainid2refpdbname[domainid] = [refpdbname];
|
|
@@ -70941,11 +70952,6 @@ class Dssp {
|
|
|
70941
70952
|
ic.domainid2ig2kabat[domainid] = queryData[0].ig2kabat;
|
|
70942
70953
|
ic.domainid2ig2imgt[domainid] = queryData[0].ig2imgt;
|
|
70943
70954
|
}
|
|
70944
|
-
|
|
70945
|
-
if(bRound1) {
|
|
70946
|
-
if(!domainid2refpdbnamelist[domainid]) domainid2refpdbnamelist[domainid] = {};
|
|
70947
|
-
domainid2refpdbnamelist[domainid][refpdbname] = score;
|
|
70948
|
-
}
|
|
70949
70955
|
}
|
|
70950
70956
|
|
|
70951
70957
|
// combine the top clusters for the 2nd round alignment
|
|
@@ -71179,7 +71185,7 @@ class Dssp {
|
|
|
71179
71185
|
|
|
71180
71186
|
if(seg.q_start.indexOf('8550') != -1) {
|
|
71181
71187
|
// check C' and D strands
|
|
71182
|
-
if(cntBtwCE == 1) {
|
|
71188
|
+
if(cntBtwCE == 1 && CAtom && EAtom && (CpAtom || DAtom)) {
|
|
71183
71189
|
let distToC = 999, distToE = 999;
|
|
71184
71190
|
for(let j = 0, jl = CAtomArray.length; j < jl; ++j) {
|
|
71185
71191
|
let dist = (bCpstrand) ? CpAtom.coord.distanceTo(CAtomArray[j].coord) : DAtom.coord.distanceTo(CAtomArray[j].coord);
|
|
@@ -71467,7 +71473,7 @@ class Dssp {
|
|
|
71467
71473
|
// 1. show IgStrand ref numbers
|
|
71468
71474
|
if(type == 'igstrand' || type == 'IgStrand') {
|
|
71469
71475
|
// iGStrand reference numbers were adjusted when showing in sequences
|
|
71470
|
-
// if(me.bNode) {
|
|
71476
|
+
// if(me.bNode) {
|
|
71471
71477
|
if(ic.bShowRefnum) {
|
|
71472
71478
|
for(let chnid in ic.chains) {
|
|
71473
71479
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chnid]);
|
|
@@ -71506,50 +71512,56 @@ class Dssp {
|
|
|
71506
71512
|
}
|
|
71507
71513
|
}
|
|
71508
71514
|
|
|
71509
|
-
let bIgDomain = (ic.domainid2info && Object.keys(ic.domainid2info).length > 0) ? 1 : 0;
|
|
71515
|
+
// let bIgDomain = (ic.domainid2info && Object.keys(ic.domainid2info).length > 0) ? 1 : 0;
|
|
71516
|
+
let stru2bIgDomain = {};
|
|
71517
|
+
for(let domainid in ic.domainid2info) {
|
|
71518
|
+
let stru = domainid.split('_')[0];
|
|
71519
|
+
stru2bIgDomain[stru] = 1;
|
|
71520
|
+
}
|
|
71510
71521
|
|
|
71511
|
-
|
|
71522
|
+
// if(bIgDomain) {
|
|
71523
|
+
for(let structure in ic.structures) {
|
|
71524
|
+
let bIgDomain = stru2bIgDomain.hasOwnProperty(structure) ? 1 : 0;
|
|
71512
71525
|
|
|
71513
|
-
|
|
71514
|
-
|
|
71515
|
-
|
|
71516
|
-
|
|
71517
|
-
|
|
71518
|
-
|
|
71519
|
-
|
|
71520
|
-
|
|
71521
|
-
|
|
71522
|
-
|
|
71523
|
-
|
|
71524
|
-
|
|
71525
|
-
|
|
71526
|
-
|
|
71527
|
-
|
|
71528
|
-
if(!info) continue;
|
|
71529
|
-
|
|
71530
|
-
refData += '"' + domainid + '": {\n';
|
|
71531
|
-
|
|
71532
|
-
refData += '"refpdbname":"' + info.refpdbname + '", "score":' + info.score + ', "seqid":' + info.seqid + ', "nresAlign":' + info.nresAlign + ', "data": [';
|
|
71533
|
-
for(let j = 0, jl = startPosArray.length; j < jl; ++j) {
|
|
71534
|
-
let startPos = startPosArray[j];
|
|
71535
|
-
let endPos = endPosArray[j];
|
|
71536
|
-
for(let k = startPos; k <= endPos; ++k) {
|
|
71537
|
-
const resid = chnid + '_' + ic.chainsSeq[chnid][k].resi + '_' + ic.chainsSeq[chnid][k].name;
|
|
71538
|
-
refData += '{"' + resid + '": "' + resid2refnum[resid] + '"},\n';
|
|
71539
|
-
}
|
|
71540
|
-
}
|
|
71541
|
-
refData += '],\n';
|
|
71526
|
+
refData += '{"' + structure + '": {"Ig domain" : ' + bIgDomain + ', "igs": [\n';
|
|
71527
|
+
|
|
71528
|
+
for(let m = 0, ml = ic.structures[structure].length; ic.bShowRefnum && m < ml; ++m) {
|
|
71529
|
+
let chnid = ic.structures[structure][m];
|
|
71530
|
+
let igArray = ic.chain2igArray[chnid];
|
|
71531
|
+
|
|
71532
|
+
if(igArray && igArray.length > 0) {
|
|
71533
|
+
refData += '{"' + chnid + '": {\n';
|
|
71534
|
+
|
|
71535
|
+
for(let i = 0, il = igArray.length; i < il; ++i) {
|
|
71536
|
+
let startPosArray = igArray[i].startPosArray;
|
|
71537
|
+
let endPosArray = igArray[i].endPosArray;
|
|
71538
|
+
let domainid = igArray[i].domainid;
|
|
71539
|
+
let info = ic.domainid2info[domainid];
|
|
71540
|
+
if(!info) continue;
|
|
71542
71541
|
|
|
71543
|
-
|
|
71542
|
+
refData += '"' + domainid + '": {\n';
|
|
71543
|
+
|
|
71544
|
+
refData += '"refpdbname":"' + info.refpdbname + '", "score":' + info.score + ', "seqid":' + info.seqid + ', "nresAlign":' + info.nresAlign + ', "data": [';
|
|
71545
|
+
for(let j = 0, jl = startPosArray.length; j < jl; ++j) {
|
|
71546
|
+
let startPos = startPosArray[j];
|
|
71547
|
+
let endPos = endPosArray[j];
|
|
71548
|
+
for(let k = startPos; k <= endPos; ++k) {
|
|
71549
|
+
const resid = chnid + '_' + ic.chainsSeq[chnid][k].resi + '_' + ic.chainsSeq[chnid][k].name;
|
|
71550
|
+
refData += '{"' + resid + '": "' + resid2refnum[resid] + '"},\n';
|
|
71551
|
+
}
|
|
71544
71552
|
}
|
|
71553
|
+
refData += '],\n';
|
|
71545
71554
|
|
|
71546
|
-
refData += '}
|
|
71555
|
+
refData += '},\n';
|
|
71547
71556
|
}
|
|
71548
|
-
}
|
|
71549
71557
|
|
|
71550
|
-
|
|
71558
|
+
refData += '}},\n';
|
|
71559
|
+
}
|
|
71551
71560
|
}
|
|
71561
|
+
|
|
71562
|
+
refData += ']}},\n';
|
|
71552
71563
|
}
|
|
71564
|
+
// }
|
|
71553
71565
|
}
|
|
71554
71566
|
// 2. show Kabat ref numbers
|
|
71555
71567
|
else if(type == 'kabat' || type == 'Kabat') {
|
|
@@ -77528,6 +77540,8 @@ class ThreeDPrint {
|
|
|
77528
77540
|
}
|
|
77529
77541
|
|
|
77530
77542
|
ic.drawCls.draw();
|
|
77543
|
+
|
|
77544
|
+
ic.bShowHighlight = true; // reset
|
|
77531
77545
|
}
|
|
77532
77546
|
|
|
77533
77547
|
//Reset the hydrogen bonds, distance lines to dashed lines. Reset the thickness to the default values.
|