icn3d 3.30.5 → 3.30.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
@@ -12017,7 +12017,7 @@ class SetDialog {
12017
12017
  tpl2strandsig['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = "A--- A-- A- A B C C' C'' D E F G";
12018
12018
  tpl2strandsig['FAB-HEAVY_5esv_C1-n2'] = "A B C D E F G";
12019
12019
  tpl2strandsig['FAB-HEAVY_5esv_V-n1'] = "A B C C' C'' D E F G";
12020
- tpl2strandsig['FAB-LIGHT_5esv_C1-n2'] = "A B C C' E F G";
12020
+ tpl2strandsig['FAB-LIGHT_5esv_C1-n2'] = "A B C C' D E F G";
12021
12021
  tpl2strandsig['FAB-LIGHT_5esv_V-n1'] = "A A' B C C' C'' D E F G";
12022
12022
  tpl2strandsig['GHR_1axiB_human_C1-n1'] = "A B C C' D E F G";
12023
12023
  tpl2strandsig['ICOS_6x4gA_human_V'] = "A B C C' C'' D E F G";
@@ -37993,7 +37993,7 @@ class AnnoIg {
37993
37993
  // titleArray.push(igType + confidance + ' (TM:' + parseFloat(tmscore).toFixed(2) + ')');
37994
37994
  // fullTitleArray.push(igType + confidance + ' (TM:' + parseFloat(tmscore).toFixed(2) + '), template: ' + info.refpdbname + ', Seq. identity: ' + parseFloat(info.seqid).toFixed(2) + ', aligned residues: ' + info.nresAlign);
37995
37995
 
37996
- let igType = (parseFloat(tmscore) < 0.75 ) ? 'Ig' : ic.ref2igtype[info.refpdbname];
37996
+ let igType = (parseFloat(tmscore) < ic.refnumCls.TMThreshold ) ? 'Ig' : ic.ref2igtype[info.refpdbname];
37997
37997
  titleArray.push(igType + ' (TM:' + parseFloat(tmscore).toFixed(2) + ')');
37998
37998
  fullTitleArray.push(igType + ' (TM:' + parseFloat(tmscore).toFixed(2) + '), template: ' + info.refpdbname + ', Seq. identity: ' + parseFloat(info.seqid).toFixed(2) + ', aligned residues: ' + info.nresAlign);
37999
37999
 
@@ -65828,6 +65828,8 @@ class Dssp {
65828
65828
  class Refnum {
65829
65829
  constructor(icn3d) {
65830
65830
  this.icn3d = icn3d;
65831
+ this.TMThreshold = 0.85;
65832
+ this.topClusters = 5;
65831
65833
  }
65832
65834
 
65833
65835
  async hideIgRefNum() { let ic = this.icn3d; ic.icn3dui;
@@ -66385,21 +66387,30 @@ class Dssp {
66385
66387
 
66386
66388
  if(q_start > 2540 && q_start < 2560) {
66387
66389
  bBstrand = true;
66388
- let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
66389
- if(atom.ss == 'helix') bBSheet = false;
66390
66390
  }
66391
66391
  else if(q_start > 3540 && q_start < 3560) {
66392
66392
  bCstrand = true;
66393
- let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
66394
- if(atom.ss == 'helix') bCSheet = false;
66395
66393
  }
66396
66394
  else if(q_start > 7540 && q_start < 7560) {
66397
66395
  bEstrand = true;
66398
- let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
66399
- if(atom.ss == 'helix') bESheet = false;
66400
66396
  }
66401
66397
  else if(q_start > 8540 && q_start < 8560) {
66402
66398
  bFstrand = true;
66399
+ }
66400
+
66401
+ if(q_start == 2550) {
66402
+ let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
66403
+ if(atom.ss == 'helix') bBSheet = false;
66404
+ }
66405
+ else if(q_start == 3550) {
66406
+ let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
66407
+ if(atom.ss == 'helix') bCSheet = false;
66408
+ }
66409
+ else if(q_start == 7550) {
66410
+ let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
66411
+ if(atom.ss == 'helix') bESheet = false;
66412
+ }
66413
+ else if(q_start == 8550) {
66403
66414
  let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
66404
66415
  if(atom.ss == 'helix') bFSheet = false;
66405
66416
  }
@@ -66408,17 +66419,20 @@ class Dssp {
66408
66419
  if(bBstrand && bCstrand && bEstrand && bFstrand) break;
66409
66420
  }
66410
66421
 
66411
- if(!(bBstrand && bCstrand && bEstrand && bFstrand) || !(bBSheet && bCSheet && bESheet && bFSheet)) {
66412
- // if(!(bBstrand && bCstrand && bEstrand && bFstrand)) {
66413
- if(!me.bNode && !(bBstrand && bCstrand && bEstrand && bFstrand)) console.log("Some of the Ig strands B, C, E, F are missing in the domain " + domainid + "...");
66414
- if(!me.bNode && !(bBSheet && bCSheet && bESheet && bFSheet)) console.log("Some of the Ig strands B, C, E, F are not beta sheets...");
66415
- // if(!me.bNode && (BCnt < 3 || CCnt < 3 || ECnt < 3 || FCnt < 3)) console.log("Some of the Ig strands B, C, E, F are missing in the domain " + domainid + "...");
66416
- if(ic.domainid2refpdbname[domainid][0] == refpdbname) {
66417
- delete ic.domainid2refpdbname[domainid];
66418
- delete ic.domainid2score[domainid];
66422
+ // if(refpdbname != 'CD19_6al5A_human-n1') { // relax for CD19
66423
+ if(!(bBstrand && bCstrand && bEstrand && bFstrand) || !(bBSheet && bCSheet && bESheet && bFSheet)) {
66424
+ // if(!(bBstrand && bCstrand && bEstrand && bFstrand)) {
66425
+ if(!me.bNode && !(bBstrand && bCstrand && bEstrand && bFstrand)) console.log("Some of the Ig strands B, C, E, F are missing in the domain " + domainid + "...");
66426
+ if(!me.bNode && !(bBSheet && bCSheet && bESheet && bFSheet)) console.log("Some of the Ig strands B, C, E, F are not beta sheets...");
66427
+ // if(!me.bNode && (BCnt < 3 || CCnt < 3 || ECnt < 3 || FCnt < 3)) console.log("Some of the Ig strands B, C, E, F are missing in the domain " + domainid + "...");
66428
+ if(ic.domainid2refpdbname[domainid][0] == refpdbname) {
66429
+ delete ic.domainid2refpdbname[domainid];
66430
+ delete ic.domainid2score[domainid];
66431
+ }
66432
+ // continue;
66419
66433
  }
66420
- continue;
66421
- }
66434
+ // }
66435
+
66422
66436
  }
66423
66437
 
66424
66438
  if(!bRound1) {
@@ -66447,7 +66461,9 @@ class Dssp {
66447
66461
  ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
66448
66462
 
66449
66463
  if(bRound1) {
66450
- ic.domainid2refpdbname[domainid] = score > 0.75 ? [refpdbname] : ['all_templates'];
66464
+ // ic.domainid2refpdbname[domainid] = score > 0.75 ? [refpdbname] : ['all_templates'];
66465
+ ic.domainid2refpdbname[domainid] = score >= this.TMThreshold ? [refpdbname] : ['all_templates'];
66466
+ // if(me.bNode) ic.domainid2refpdbname[domainid] = ['all_templates'];
66451
66467
  }
66452
66468
  else {
66453
66469
  ic.domainid2refpdbname[domainid] = [refpdbname];
@@ -66466,7 +66482,7 @@ class Dssp {
66466
66482
  }
66467
66483
  }
66468
66484
 
66469
- // combine the top four clusters for the 2nd round alignment
66485
+ // combine the top clusters for the 2nd round alignment
66470
66486
  if(bRound1) {
66471
66487
  for(let domainid in domainid2refpdbnamelist) {
66472
66488
  if(!me.bNode && ic.domainid2refpdbname[domainid][0] == 'all_templates') {
@@ -66475,8 +66491,8 @@ class Dssp {
66475
66491
  refpdbnameList.sort(function(a, b) {
66476
66492
  return refpdbname2score[b] - refpdbname2score[a]
66477
66493
  });
66478
- // top 4 templates
66479
- ic.domainid2refpdbname[domainid] = refpdbnameList.slice(0,4);
66494
+ // top templates
66495
+ ic.domainid2refpdbname[domainid] = refpdbnameList.slice(0, this.topClusters);
66480
66496
  }
66481
66497
  }
66482
66498
  }
@@ -66713,8 +66729,8 @@ class Dssp {
66713
66729
  let seg = segArray[i];
66714
66730
  if(!seg) continue;
66715
66731
 
66716
- let qStart = seg.q_start;
66717
- parseInt(seg.q_start);
66732
+ seg.q_start;
66733
+ let qStartInt = parseInt(seg.q_start);
66718
66734
  if(isNaN(seg.q_start)) seg.q_start.substr(seg.q_start.length - 1, 1);
66719
66735
 
66720
66736
  // one item in "seq"
@@ -66727,7 +66743,8 @@ class Dssp {
66727
66743
  let resid = chainid + '_' + seg.t_start;
66728
66744
  //let refnum = qStartInt.toString() + postfix;
66729
66745
  //let refnum = qStart + postfix;
66730
- let refnum = qStart;
66746
+ //let refnum = qStart;
66747
+ let refnum = qStartInt;
66731
66748
 
66732
66749
  let refnumLabel = this.getLabelFromRefnum(refnum);
66733
66750
  currStrand = (refnumLabel) ? refnumLabel.replace(new RegExp(refnum,'g'), '') : undefined;
@@ -67142,7 +67159,7 @@ class Dssp {
67142
67159
  if(!ic.chainid2refpdbname[chnid]) return false;
67143
67160
 
67144
67161
  // auto-generate ref numbers for loops
67145
- let currStrand = '', prevStrand = '';
67162
+ let currStrand = '', prevStrand = '', prevValidStrand = '';
67146
67163
  let refnumLabel, refnumStr_ori, refnumStr, postfix, strandPostfix, refnum, refnum3c, refnum2c;
67147
67164
  let bExtendedStrand = false, bSecThird9 = false;
67148
67165
 
@@ -67206,7 +67223,8 @@ class Dssp {
67206
67223
  if(!bSecThird9 || (bExtendedStrand && !bSecThird9)) {
67207
67224
  let lastTwo = parseInt(refnum.toString().substr(refnum.toString().length - 2, 2));
67208
67225
 
67209
- if(currStrand != prevStrand) { // reset currCnt
67226
+ // reset currCnt
67227
+ if(currStrand != prevStrand && currStrand != prevValidStrand) { // sometimes the same resid appear several times, e.g, 7M7B_H_135
67210
67228
  bFoundAnchor = false;
67211
67229
 
67212
67230
  if(strandHash[currStrand + postfix]) {
@@ -67308,6 +67326,8 @@ class Dssp {
67308
67326
  }
67309
67327
  }
67310
67328
  }
67329
+
67330
+ prevValidStrand = currStrand;
67311
67331
  }
67312
67332
  }
67313
67333
 
@@ -67395,6 +67415,7 @@ class Dssp {
67395
67415
  for(let il = strandArray.length, i = il - 1; i >= 0; --i) {
67396
67416
  // let strandTmp = strandArray[i].strand.substr(0, 1);
67397
67417
  let strandTmp = strandArray[i].strand;
67418
+
67398
67419
  if(strandTmp != 'G' && strandArray[i].endRefnum - strandArray[i].startRefnum + 1 < 3) { // remove the strand
67399
67420
  if(i != il - 1) { // modify
67400
67421
  strandArray[i + 1].loopResCnt += strandArray[i].loopResCnt + parseInt(strandArray[i].endResi) - parseInt(strandArray[i].startResi) + 1;
@@ -67411,7 +67432,7 @@ class Dssp {
67411
67432
  let domainid = ic.resid2domainid[resid];
67412
67433
  removeDomainidHash[domainid] = 1;
67413
67434
  continue;
67414
- }
67435
+ }
67415
67436
  }
67416
67437
  }
67417
67438
 
@@ -67528,10 +67549,12 @@ class Dssp {
67528
67549
  let halfLen = parseInt(len / 2.0 + 0.5);
67529
67550
 
67530
67551
  if(loopCnt <= halfLen) {
67531
- currRefnum = strandArray[prevStrandCnt].endRefnum + loopCnt;
67532
- refnumLabelNoPostfix = strandArray[prevStrandCnt].strand + currRefnum;
67533
- refnumLabel = refnumLabelNoPostfix + strandArray[prevStrandCnt].strandPostfix;
67534
- domainid = strandArray[prevStrandCnt].domainid;
67552
+ if(strandArray[prevStrandCnt]) {
67553
+ currRefnum = strandArray[prevStrandCnt].endRefnum + loopCnt;
67554
+ refnumLabelNoPostfix = strandArray[prevStrandCnt].strand + currRefnum;
67555
+ refnumLabel = refnumLabelNoPostfix + strandArray[prevStrandCnt].strandPostfix;
67556
+ domainid = strandArray[prevStrandCnt].domainid;
67557
+ }
67535
67558
  }
67536
67559
  else {
67537
67560
  currRefnum = strandArray[strandCnt].startRefnum - len + loopCnt - 1;