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 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
- ic.refnumCls.exportRefnum('kabat');
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.TMThreshold ) ? 'Ig' : ic.ref2igtype[info.refpdbname];
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
- if(bSelection) { // clear previous refnum
46222
- let residueHash = ic.firstAtomObjCls.getResiduesFromAtoms(ic.hAtoms);
46223
- for(let resid in residueHash) {
46224
- if(ic.resid2refnum) delete ic.resid2refnum[resid];
46225
- if(ic.residIgLoop) delete ic.residIgLoop[resid];
46226
- if(ic.resid2domainid) delete ic.resid2domainid[resid];
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
- // if(!ic.bIgShown) {
46231
- if(!bSelection && !template) {
46232
- // select all protein chains
46233
- ic.hAtoms = {};
46234
- for(let chainid in ic.protein_chainid) {
46235
- ic.hAtoms = me.hashUtilsCls.unionHash(ic.hAtoms, ic.chains[chainid]);
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
- ic.bRunRefnumAgain = true;
46240
- for(let chainid in ic.protein_chainid) {
46241
- await ic.annoIgCls.showIg(chainid, template);
46242
- ic.bRunRefnumAgain = false; // run it once for all chains
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('3ddomain') !== undefined || $(that).attr('ig') !== undefined) {
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 distMatrix = dataJson[0].predicted_aligned_error; // version 3, two dimensions
51545
- let max = dataJson[0].max_predicted_aligned_error;
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
- ic.opts['color'] = (ic.structArray.length > 1) ? 'structure' : ((structArray[0].length > 5) ? 'confidence' : 'chain');
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
- // parseMmdbData() didn't render structures for mmdbafid input
53075
- if(ic.structArray.length > 1) ic.opts['color'] = 'structure';
53076
- ic.setColorCls.setColorByOptions(ic.opts, ic.atoms);
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.TMThreshold = 0.85;
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'] = 'IgI';
70439
- ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgI';
70440
- ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgI';
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'] = 'IgC2';
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'] = 'IgFN3';
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'] = 'IgC2';
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'] = 'IgC2';
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'] = 'IgV';
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 < tmscoreThreshold || queryData[0].num_res < minResidues) {
70821
- if(!me.bNode) console.log("bRound1: " + bRound1 + ": domainid " + domainid + " and refpdbname " + refpdbname + " were skipped due to a TM-score less than " + tmscoreThreshold);
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 < tmscoreThreshold || queryData[0].num_res < minResidues / 2) {
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
- // ic.domainid2refpdbname[domainid] = score > 0.75 ? [refpdbname] : ['all_templates'];
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
- if(bIgDomain) {
71514
- for(let structure in ic.structures) {
71515
- refData += '{"' + structure + '": {"Ig domain" : ' + bIgDomain + ', "igs": [\n';
71516
- for(let m = 0, ml = ic.structures[structure].length; m < ml; ++m) {
71517
- let chnid = ic.structures[structure][m];
71518
- let igArray = ic.chain2igArray[chnid];
71519
-
71520
- if(igArray && igArray.length > 0) {
71521
- refData += '{"' + chnid + '": {\n';
71522
-
71523
- for(let i = 0, il = igArray.length; i < il; ++i) {
71524
- let startPosArray = igArray[i].startPosArray;
71525
- let endPosArray = igArray[i].endPosArray;
71526
- let domainid = igArray[i].domainid;
71527
- let info = ic.domainid2info[domainid];
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
- refData += '},\n';
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 += '}},\n';
71555
+ refData += '},\n';
71547
71556
  }
71548
- }
71549
71557
 
71550
- refData += ']}},\n';
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.