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.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
- ic.refnumCls.exportRefnum('kabat');
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.TMThreshold ) ? 'Ig' : ic.ref2igtype[info.refpdbname];
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
- if(bSelection) { // clear previous refnum
47123
- let residueHash = ic.firstAtomObjCls.getResiduesFromAtoms(ic.hAtoms);
47124
- for(let resid in residueHash) {
47125
- if(ic.resid2refnum) delete ic.resid2refnum[resid];
47126
- if(ic.residIgLoop) delete ic.residIgLoop[resid];
47127
- if(ic.resid2domainid) delete ic.resid2domainid[resid];
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
- // if(!ic.bIgShown) {
47132
- if(!bSelection && !template) {
47133
- // select all protein chains
47134
- ic.hAtoms = {};
47135
- for(let chainid in ic.protein_chainid) {
47136
- ic.hAtoms = me.hashUtilsCls.unionHash(ic.hAtoms, ic.chains[chainid]);
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
- ic.bRunRefnumAgain = true;
47141
- for(let chainid in ic.protein_chainid) {
47142
- await ic.annoIgCls.showIg(chainid, template);
47143
- ic.bRunRefnumAgain = false; // run it once for all chains
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('3ddomain') !== undefined || $(that).attr('ig') !== undefined) {
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 distMatrix = dataJson[0].predicted_aligned_error; // version 3, two dimensions
52446
- let max = dataJson[0].max_predicted_aligned_error;
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
- ic.opts['color'] = (ic.structArray.length > 1) ? 'structure' : ((structArray[0].length > 5) ? 'confidence' : 'chain');
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
- // parseMmdbData() didn't render structures for mmdbafid input
53976
- if(ic.structArray.length > 1) ic.opts['color'] = 'structure';
53977
- ic.setColorCls.setColorByOptions(ic.opts, ic.atoms);
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.TMThreshold = 0.85;
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'] = 'IgI';
71340
- ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgI';
71341
- ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgI';
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'] = 'IgC2';
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'] = 'IgFN3';
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'] = 'IgC2';
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'] = 'IgC2';
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'] = 'IgV';
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 < tmscoreThreshold || queryData[0].num_res < minResidues) {
71722
- if(!me.bNode) console.log("bRound1: " + bRound1 + ": domainid " + domainid + " and refpdbname " + refpdbname + " were skipped due to a TM-score less than " + tmscoreThreshold);
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 < tmscoreThreshold || queryData[0].num_res < minResidues / 2) {
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
- // ic.domainid2refpdbname[domainid] = score > 0.75 ? [refpdbname] : ['all_templates'];
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
- if(bIgDomain) {
72415
- for(let structure in ic.structures) {
72416
- refData += '{"' + structure + '": {"Ig domain" : ' + bIgDomain + ', "igs": [\n';
72417
- for(let m = 0, ml = ic.structures[structure].length; m < ml; ++m) {
72418
- let chnid = ic.structures[structure][m];
72419
- let igArray = ic.chain2igArray[chnid];
72420
-
72421
- if(igArray && igArray.length > 0) {
72422
- refData += '{"' + chnid + '": {\n';
72423
-
72424
- for(let i = 0, il = igArray.length; i < il; ++i) {
72425
- let startPosArray = igArray[i].startPosArray;
72426
- let endPosArray = igArray[i].endPosArray;
72427
- let domainid = igArray[i].domainid;
72428
- let info = ic.domainid2info[domainid];
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
- refData += '},\n';
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 += '}},\n';
72456
+ refData += '},\n';
72448
72457
  }
72449
- }
72450
72458
 
72451
- refData += ']}},\n';
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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "icn3d",
3
- "version": "3.31.5",
3
+ "version": "3.31.7",
4
4
  "main": "./icn3d.js",
5
5
  "exports": {
6
6
  ".": {