icn3d 3.47.3 → 3.48.0

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
@@ -63093,20 +63093,20 @@ class SetDialog {
63093
63093
  group2tpl['IgC1'] = ['B2Microglobulin_7phrL_human_C1', 'CD3d_6jxrd_human_C1', 'CD3e_6jxrf_human_C1', 'FAB-LIGHT_5esv_C1-n2', 'FAB-HEAVY_5esv_C1-n2', 'GHR_1axiB_human_C1-n1', 'LAG3_7tzgD_human_C1-n2', 'MHCIa_7phrH_human_C1', 'Siglec3_5j0bB_human_C1-n2', 'TCRa_6jxrm_human_C1-n2', 'VTCN1_Q7Z7D3_human_C1-n2'];
63094
63094
  group2tpl['IgC2'] = ['CD2_1hnfA_human_C2-n2', 'CD3g_6jxrg_human_C2'];
63095
63095
  group2tpl['IgI'] = ['BTLA_2aw2A_human_Iset', 'Contactin1_3s97C_human_Iset-n2', 'JAM1_1nbqA_human_Iset-n2', 'Palladin_2dm3A_human_Iset-n1', 'Titin_4uowM_human_Iset-n152'];
63096
- group2tpl['IgE'] = ['CoAtomerGamma1_1r4xA_human', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'IsdA_2iteA_bacteria', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria'];
63096
+ //group2tpl['IgE'] = ['CoAtomerGamma1_1r4xA_human', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'IsdA_2iteA_bacteria', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria'];
63097
63097
 
63098
63098
  group2tpl['IgFN3'] = ['Contactin1_2ee2A_human_FN3-n9', 'IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3', 'InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2', 'Sidekick2_1wf5A_human_FN3-n7'];
63099
63099
 
63100
- group2tpl['IgFN3-like'] = ['ASF1A_2iijA_human', 'BArrestin1_4jqiA_rat_n1', 'C3_2qkiD_human_n1', 'MPT63_1lmiA_bacteria', 'NaCaExchanger_2fwuA_dog_n2', 'RBPJ_6py8C_human_Unk-n1', 'TEAD1_3kysC_human'];
63100
+ //group2tpl['IgFN3-like'] = ['ASF1A_2iijA_human', 'BArrestin1_4jqiA_rat_n1', 'C3_2qkiD_human_n1', 'MPT63_1lmiA_bacteria', 'NaCaExchanger_2fwuA_dog_n2', 'RBPJ_6py8C_human_Unk-n1', 'TEAD1_3kysC_human'];
63101
63101
 
63102
- group2tpl['Other Ig'] = ['CD19_6al5A_human-n1', 'CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human', 'ORF7a_1xakA_virus', 'RBPJ_6py8C_human_Unk-n2'];
63102
+ group2tpl['Other Ig'] = ['CD19_6al5A_human-n1', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human'];
63103
63103
 
63104
63104
  let tpl2strandsig = {};
63105
- tpl2strandsig['ASF1A_2iijA_human'] = "A A' B C C' E F G G+";
63105
+ //tpl2strandsig['ASF1A_2iijA_human'] = "A A' B C C' E F G G+";
63106
63106
  tpl2strandsig['B2Microglobulin_7phrL_human_C1'] = "A B C C' D E F G";
63107
- tpl2strandsig['BArrestin1_4jqiA_rat_n1'] = "A- A A' B C C' E F G";
63107
+ //tpl2strandsig['BArrestin1_4jqiA_rat_n1'] = "A- A A' B C C' E F G";
63108
63108
  tpl2strandsig['BTLA_2aw2A_human_Iset'] = "A A' B C C' D E F G";
63109
- tpl2strandsig['C3_2qkiD_human_n1'] = "A A' B C C' E F G";
63109
+ //tpl2strandsig['C3_2qkiD_human_n1'] = "A A' B C C' E F G";
63110
63110
  tpl2strandsig['CD19_6al5A_human-n1'] = "A' B C C' D E F G";
63111
63111
  tpl2strandsig['CD28_1yjdC_human_V'] = "A A' B C C' C'' D E F G";
63112
63112
  tpl2strandsig['CD2_1hnfA_human_C2-n2'] = "A B C C' E F G";
@@ -63115,12 +63115,12 @@ class SetDialog {
63115
63115
  tpl2strandsig['CD3e_6jxrf_human_C1'] = "A B C C' D E F G";
63116
63116
  tpl2strandsig['CD3g_6jxrg_human_C2'] = "A B C C' E F G G+";
63117
63117
  tpl2strandsig['CD8a_1cd8A_human_V'] = "A A' B C C' C'' D E F G";
63118
- tpl2strandsig['CoAtomerGamma1_1r4xA_human'] = "A- A B C D E F G";
63118
+ //tpl2strandsig['CoAtomerGamma1_1r4xA_human'] = "A- A B C D E F G";
63119
63119
  tpl2strandsig['Contactin1_2ee2A_human_FN3-n9'] = "A A' B C C' E F G";
63120
63120
  tpl2strandsig['Contactin1_3s97C_human_Iset-n2'] = "A A' B C D E F G";
63121
- tpl2strandsig['CuZnSuperoxideDismutase_1hl5C_human'] = "A- A B C C' E F G";
63121
+ //tpl2strandsig['CuZnSuperoxideDismutase_1hl5C_human'] = "A- A B C C' E F G";
63122
63122
  tpl2strandsig['ECadherin_4zt1A_human_n2'] = "A' B C D E F G";
63123
- tpl2strandsig['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = "A--- A-- A- A B C C' C'' D E F G";
63123
+ //tpl2strandsig['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = "A--- A-- A- A B C C' C'' D E F G";
63124
63124
  tpl2strandsig['FAB-HEAVY_5esv_C1-n2'] = "A B C D E F G";
63125
63125
  tpl2strandsig['FAB-HEAVY_5esv_V-n1'] = "A B C C' C'' D E F G";
63126
63126
  tpl2strandsig['FAB-LIGHT_5esv_C1-n2'] = "A B C C' D E F G";
@@ -63131,28 +63131,28 @@ class SetDialog {
63131
63131
  tpl2strandsig['IL6Rb_1bquB_human_FN3-n3'] = "A B C C' E F G";
63132
63132
  tpl2strandsig['InsulinR_8guyE_human_FN3-n1'] = "A B C C' E F G";
63133
63133
  tpl2strandsig['InsulinR_8guyE_human_FN3-n2'] = "A B C C' E F G";
63134
- tpl2strandsig['IsdA_2iteA_bacteria'] = "A- A B C C' D E F G";
63134
+ //tpl2strandsig['IsdA_2iteA_bacteria'] = "A- A B C C' D E F G";
63135
63135
  tpl2strandsig['JAM1_1nbqA_human_Iset-n2'] = "A A' B C C' D E F G";
63136
63136
  tpl2strandsig['LAG3_7tzgD_human_C1-n2'] = "A A' B C C' D E F G";
63137
63137
  tpl2strandsig['LAG3_7tzgD_human_V-n1'] = "A' B C C' D E F G";
63138
63138
  tpl2strandsig['LaminAC_1ifrA_human'] = "A- A B C C' E E+ F G";
63139
63139
  tpl2strandsig['MHCIa_7phrH_human_C1'] = "A B C C' D E F G";
63140
- tpl2strandsig['MPT63_1lmiA_bacteria'] = "A-- A- A BC C' E F G";
63141
- tpl2strandsig['NaCaExchanger_2fwuA_dog_n2'] = "A A' B C C' E F G";
63142
- tpl2strandsig['NaKATPaseTransporterBeta_2zxeB_spurdogshark']= "A A' B C D E F G";
63143
- tpl2strandsig['ORF7a_1xakA_virus'] = "A' B C D E F G";
63140
+ //tpl2strandsig['MPT63_1lmiA_bacteria'] = "A-- A- A BC C' E F G";
63141
+ //tpl2strandsig['NaCaExchanger_2fwuA_dog_n2'] = "A A' B C C' E F G";
63142
+ //tpl2strandsig['NaKATPaseTransporterBeta_2zxeB_spurdogshark']= "A A' B C D E F G";
63143
+ //tpl2strandsig['ORF7a_1xakA_virus'] = "A' B C D E F G";
63144
63144
  tpl2strandsig['PD1_4zqkB_human_V'] = "A A' B C C' D E F G";
63145
63145
  tpl2strandsig['PDL1_4z18B_human_V-n1'] = "A A' B C C' C'' D E F G";
63146
63146
  tpl2strandsig['Palladin_2dm3A_human_Iset-n1'] = "A A' B C C' D E F G";
63147
- tpl2strandsig['RBPJ_6py8C_human_Unk-n1'] = "A A' B C C' E F G";
63148
- tpl2strandsig['RBPJ_6py8C_human_Unk-n2'] = "A B C D E F G";
63147
+ //tpl2strandsig['RBPJ_6py8C_human_Unk-n1'] = "A A' B C C' E F G";
63148
+ //tpl2strandsig['RBPJ_6py8C_human_Unk-n2'] = "A B C D E F G";
63149
63149
  tpl2strandsig['Sidekick2_1wf5A_human_FN3-n7'] = "A B C C' E F G";
63150
63150
  tpl2strandsig['Siglec3_5j0bB_human_C1-n2'] = "A A' B C D E F G";
63151
63151
  tpl2strandsig['TCRa_6jxrm_human_C1-n2'] = "A B C D E F G";
63152
63152
  tpl2strandsig['TCRa_6jxrm_human_V-n1'] = "A A' B C C' C'' D E F G";
63153
- tpl2strandsig['TEAD1_3kysC_human'] = "A A+ A' B C C' E F G G+";
63154
- tpl2strandsig['TP34_2o6cA_bacteria'] = "A- A B C C' D E F G";
63155
- tpl2strandsig['TP47_1o75A_bacteria'] = "A B C C' D E F G";
63153
+ //tpl2strandsig['TEAD1_3kysC_human'] = "A A+ A' B C C' E F G G+";
63154
+ //tpl2strandsig['TP34_2o6cA_bacteria'] = "A- A B C C' D E F G";
63155
+ //tpl2strandsig['TP47_1o75A_bacteria'] = "A B C C' D E F G";
63156
63156
  tpl2strandsig['Titin_4uowM_human_Iset-n152'] = "A A' B C C' D E F G";
63157
63157
  tpl2strandsig['VISTA_6oilA_human_V'] = "A A' B C C' C'' D E F G G+";
63158
63158
  tpl2strandsig['VNAR_1t6vN_shark_V'] = "A A' B C C' D E F G";
@@ -74518,7 +74518,7 @@ class Scene {
74518
74518
  if(ic.opts['slab'] === 'yes') ic.cameraCls.setSlab();
74519
74519
 
74520
74520
  // if(!ic.bSetVrArButtons) { // call once
74521
- if(!me.cfg.imageonly) this.setVrArButtons();
74521
+ if(!me.cfg.imageonly && ( 'xr' in navigator )) this.setVrArButtons();
74522
74522
  // }
74523
74523
 
74524
74524
  // if((ic.bVr || ic.bAr) && !ic.bSetVrAr) { // call once
@@ -83973,7 +83973,7 @@ class ApplyMissingRes {
83973
83973
  line.serial1 = ic.missingResResid2serial[resid0 + ',' + resid1];
83974
83974
  line.serial2 = ic.missingResResid2serial[resid1 + ',' + resid0];
83975
83975
 
83976
- line.color = "#" + ic.atoms[line.serial1].color.getHexString();
83976
+ line.color = (ic.atoms[line.serial1]) ? "#" + ic.atoms[line.serial1].color.getHexString() : undefined;
83977
83977
 
83978
83978
  line.radius = ic.coilWidth;
83979
83979
 
@@ -99430,7 +99430,7 @@ class HlUpdate {
99430
99430
  if(ic.mmdbid_q !== undefined && ic.mmdbid_q === ic.mmdbid_t) {
99431
99431
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[0].toUpperCase(), 1, true);
99432
99432
  }
99433
- else {
99433
+ else if(ic.mmdbidArray.length > 1) {
99434
99434
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[1].toUpperCase(), 1, true);
99435
99435
  }
99436
99436
  html2ddgm += ic.diagram2dCls.set2DdgmNote(true);
@@ -103712,16 +103712,31 @@ class ChainalignParser {
103712
103712
 
103713
103713
  // dynamically align pairs in all chainids
103714
103714
  // the resrange from VASTSrv or VAST search uses NCBI residue numbers!!!
103715
- let atomSet_t = (me.cfg.resrange) ? ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], chainidArray[0], true).hAtoms : ic.chains[chainidArray[0]];
103715
+ let atomSet_t;
103716
+ if(me.cfg.resrange) {
103717
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], chainidArray[0], true);
103718
+ atomSet_t = result.hAtoms;
103719
+ }
103720
+ else {
103721
+ atomSet_t = ic.chains[chainidArray[0]];
103722
+ }
103723
+
103716
103724
  for(let index = 1, indexl = chainidArray.length; index < indexl; ++index) {
103717
- let atomSet_q = (me.cfg.resrange) ? ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], chainidArray[index], true).hAtoms : ic.chains[chainidArray[index]];
103725
+ let atomSet_q;
103726
+ if(me.cfg.resrange) {
103727
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], chainidArray[index], true);
103728
+ atomSet_q = result.hAtoms;
103729
+ }
103730
+ else {
103731
+ atomSet_q = ic.chains[chainidArray[index]];
103732
+ }
103718
103733
  // end of new version to be done for VASTsrv ==============
103719
103734
 
103720
103735
  let alignAjax;
103721
103736
  if(me.cfg.aligntool != 'tmalign') {
103722
103737
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
103723
103738
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
103724
-
103739
+
103725
103740
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
103726
103741
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
103727
103742
  }
@@ -103757,6 +103772,7 @@ class ChainalignParser {
103757
103772
  //let bTargetTransformed = (ic.qt_start_end[0]) ? true : false;
103758
103773
 
103759
103774
  // modify the previous trans and rotation matrix
103775
+ let bAligned = false;
103760
103776
  for(let i = 0, il = dataArray.length; i < il; ++i) {
103761
103777
  // let align = (me.bNode) ? dataArray[i] : dataArray[i].value;//[0];
103762
103778
  let align = dataArray[i].value;//[0];
@@ -103772,7 +103788,7 @@ class ChainalignParser {
103772
103788
 
103773
103789
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
103774
103790
 
103775
- this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain);
103791
+ bAligned =await this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, undefined);
103776
103792
  }
103777
103793
 
103778
103794
  // do not transform the target
@@ -103780,28 +103796,34 @@ class ChainalignParser {
103780
103796
  // this.transformStructure(mmdbid_t, indexArray[0], 'target');
103781
103797
  //}
103782
103798
 
103783
- // transform the rest
103784
- for(let i = 0, il = dataArray.length; i < il; ++i) {
103785
- let mmdbid_q = struArray[i];
103786
- let index = indexArray[i];
103787
- this.transformStructure(mmdbid_q, index, 'query');
103788
- }
103799
+ if(bAligned) {
103800
+ // transform the rest
103801
+ for(let i = 0, il = dataArray.length; i < il; ++i) {
103802
+ let mmdbid_q = struArray[i];
103803
+ let index = indexArray[i];
103804
+ this.transformStructure(mmdbid_q, index, 'query');
103805
+ }
103789
103806
 
103790
- let hAtomsAll = {};
103807
+ let hAtomsAll = {};
103791
103808
 
103792
- if(ic.bFullUi && ic.q_rotation !== undefined && !me.cfg.resnum && !me.cfg.resdef) {
103793
- // set multiple sequence alignment from ic.qt_start_end
103794
- hAtomsAll = this.setMsa(chainidArray);
103795
- }
103809
+ if(ic.bFullUi && ic.q_rotation !== undefined && !me.cfg.resnum && !me.cfg.resdef) {
103810
+ // set multiple sequence alignment from ic.qt_start_end
103811
+ hAtomsAll = this.setMsa(chainidArray);
103812
+ }
103796
103813
 
103797
- // highlight all aligned atoms
103798
- //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
103799
- ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
103814
+ // highlight all aligned atoms
103815
+ //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
103816
+ ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
103800
103817
 
103801
- ic.transformCls.zoominSelection();
103818
+ ic.transformCls.zoominSelection();
103802
103819
 
103803
- // do the rest
103804
- await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
103820
+ // do the rest
103821
+ await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
103822
+ }
103823
+ else {
103824
+ me.cfg.aligntool = 'tmalign';
103825
+ await ic.chainalignParserCls.downloadChainalignment(me.cfg.chainalign);
103826
+ }
103805
103827
  }
103806
103828
 
103807
103829
  setMsa(chainidArray, bVastplus, bRealign) { let ic = this.icn3d, me = ic.icn3dui;
@@ -103872,7 +103894,7 @@ class ChainalignParser {
103872
103894
 
103873
103895
  let bNoAlert = true;
103874
103896
 
103875
- let bAligned = this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
103897
+ let bAligned = await this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
103876
103898
 
103877
103899
  if(bAligned) {
103878
103900
  bFoundAlignment = true;
@@ -104364,7 +104386,7 @@ class ChainalignParser {
104364
104386
 
104365
104387
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
104366
104388
 
104367
- this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain);
104389
+ await this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain, undefined);
104368
104390
  }
104369
104391
  }
104370
104392
  }
@@ -104374,13 +104396,13 @@ class ChainalignParser {
104374
104396
  await this.loadOpmDataForChainalign(targetData, queryDataArray, chainidArray, ic.mmdbidArray);
104375
104397
  }
104376
104398
 
104377
- processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
104399
+ async processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
104378
104400
  let bAligned = false;
104379
104401
 
104380
- if((!align || align.length == 0) && !bNoAlert) {
104381
- let serverName = (me.cfg.aligntool == 'tmalign') ? 'TM-align' : 'VAST';
104382
-
104383
- if(ic.bRender) var aaa = 1; //alert("These chains can not be aligned by " + serverName + ".");
104402
+ if((align === "error" || align === undefined || align.length == 0) && !bNoAlert) {
104403
+ // let serverName = (me.cfg.aligntool == 'tmalign') ? 'TM-align' : 'VAST';
104404
+
104405
+ // if(ic.bRender) var aaa = 1; //alert("These chains can not be aligned by " + serverName + ".");
104384
104406
  return bAligned;
104385
104407
  }
104386
104408
 
@@ -104529,7 +104551,6 @@ class ChainalignParser {
104529
104551
  let structArrayTmp = idlist.split(',');
104530
104552
 
104531
104553
  let structArray = [];
104532
-
104533
104554
  // only when bNoDuplicate is undefined/false, it's allowed to load multiple copies of the same structure
104534
104555
  if(!bNoDuplicate) {
104535
104556
  structArray = this.addPostfixForStructureids(structArrayTmp);
@@ -104542,7 +104563,7 @@ class ChainalignParser {
104542
104563
  if(!ic.structures.hasOwnProperty(id)) structArray.push(structArrayTmp[i]);
104543
104564
  }
104544
104565
  }
104545
-
104566
+
104546
104567
  if(structArray.length == 0) return;
104547
104568
 
104548
104569
  ic.structArray = ic.structArray.concat(structArray);
@@ -104642,6 +104663,8 @@ class ChainalignParser {
104642
104663
  let bNoSeqalign = true;
104643
104664
  let pdbid = structArray[i];
104644
104665
 
104666
+ if(queryDataArray[i].pdbId) queryDataArray[i].pdbId = pdbid;
104667
+
104645
104668
  //hAtomsTmp contains all atoms
104646
104669
  await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign, pdbid);
104647
104670
  }
@@ -106218,7 +106241,7 @@ class MmdbParser {
106218
106241
  return;
106219
106242
  }
106220
106243
 
106221
- if(Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
106244
+ if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
106222
106245
  // use mmtfid
106223
106246
  let pdbid = data.pdbId;
106224
106247
  await ic.bcifParserCls.downloadBcif(pdbid);
@@ -106228,6 +106251,7 @@ class MmdbParser {
106228
106251
 
106229
106252
  let bCalphaOnly = me.utilsCls.isCalphaPhosOnly(data.atoms); //, 'CA');
106230
106253
 
106254
+ //if(!data.pdbId) data.pdbId = mmdbid;
106231
106255
  if(bCalphaOnly || data.atomCount <= ic.maxatomcnt) {
106232
106256
  await this.parseMmdbData(data);
106233
106257
  }
@@ -106389,8 +106413,18 @@ class MmdbParser {
106389
106413
  async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign, pdbidIn) { let ic = this.icn3d, me = ic.icn3dui;
106390
106414
  let hAtoms;
106391
106415
  let pdbid = (data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
106416
+ if(!pdbid && chainid) {
106417
+ pdbid = chainid.substr(0, chainid.lastIndexOf('_'));
106418
+ }
106419
+
106392
106420
  if(pdbidIn) pdbid = pdbidIn;
106393
106421
 
106422
+ // if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
106423
+ // ic.bRender = false;
106424
+ // await ic.bcifParserCls.downloadBcif(pdbid);
106425
+ // return;
106426
+ // }
106427
+
106394
106428
  this.parseMmdbDataPart1(data, type);
106395
106429
 
106396
106430
  if(type === undefined) { // default mmdbid input
@@ -108057,7 +108091,7 @@ class PdbParser {
108057
108091
  }
108058
108092
 
108059
108093
  // if(!ic.bSecondaryStructure && Object.keys(ic.proteins).length > 0) {
108060
- if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108094
+ if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108061
108095
  await this.applyCommandDssp(bAppend);
108062
108096
  }
108063
108097
  else {
@@ -110032,8 +110066,7 @@ class RealignParser {
110032
110066
  // If rmsd from vastsrv is too large, realign the chains
110033
110067
  //if(me.cfg.chainalign && !me.cfg.usepdbnum && me.cfg.resdef && rmsd > 5) {
110034
110068
  // redo algnment only for VAST serv page
110035
- if(!me.cfg.usepdbnum && me.cfg.resdef && rmsd > 5 && me.cfg.chainalign) {
110036
- console.log("RMSD from VAST is larger than 5. Realign the chains with TM-align.");
110069
+ if(!me.cfg.usepdbnum && (me.cfg.resdef || me.cfg.resrange) && rmsd > 5 && me.cfg.chainalign) {
110037
110070
  //let nameArray = me.cfg.chainalign.split(',');
110038
110071
  let nameArray = Object.keys(chainidHash);
110039
110072
  if(nameArray.length > 0) {
@@ -110285,15 +110318,30 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
110285
110318
  if(bVastsearch && me.cfg.resrange) {
110286
110319
  let resRangeArray = decodeURIComponent(me.cfg.resrange).split(' | ');
110287
110320
 
110288
- let atomSet_t = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true).hAtoms;
110321
+ let atomSet_t;
110322
+ if(me.cfg.resrange) {
110323
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true);
110324
+ atomSet_t = result.hAtoms;
110325
+ }
110326
+ else {
110327
+ atomSet_t = ic.chains[ic.chainidArray[0]];
110328
+ }
110329
+
110289
110330
  for(let index = 1, indexl = ic.chainidArray.length; index < indexl; ++index) {
110290
- let atomSet_q = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], ic.chainidArray[index], true).hAtoms;
110331
+ let atomSet_q;
110332
+ if(me.cfg.resrange) {
110333
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], ic.chainidArray[index], true);
110334
+ atomSet_q = result.hAtoms;
110335
+ }
110336
+ else {
110337
+ atomSet_q = ic.chains[ic.chainidArray[index]];
110338
+ }
110291
110339
 
110292
110340
  let alignAjax;
110293
110341
  if(me.cfg.aligntool != 'tmalign') {
110294
110342
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
110295
110343
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
110296
-
110344
+
110297
110345
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
110298
110346
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
110299
110347
  }
@@ -110354,9 +110402,7 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
110354
110402
  let alignAjax;
110355
110403
  if(me.cfg.aligntool != 'tmalign') {
110356
110404
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(struct2domain[struct2][chainid2]);
110357
- console.log("@@@ realign " + struct1 + " " + chainid1 + " and " + struct2 + " " + chainid2);
110358
- console.log("@@@ jsonStr_q " + jsonStr_q);
110359
- console.log("@@@ jsonStr_t " + jsonStr_t);
110405
+
110360
110406
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
110361
110407
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
110362
110408
  }
@@ -110426,7 +110472,7 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
110426
110472
 
110427
110473
  if(me.cfg.aligntool != 'tmalign') {
110428
110474
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(chainid2domain[chainid2]);
110429
-
110475
+
110430
110476
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
110431
110477
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
110432
110478
  }
@@ -110686,6 +110732,8 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
110686
110732
  let hAtoms = {};
110687
110733
 
110688
110734
  for(let j = 0, jl = resiArray.length; j < jl; ++j) {
110735
+ if(!resiArray[j]) continue;
110736
+
110689
110737
  if(resiArray[j].indexOf('-') != -1) {
110690
110738
  let startEnd = resiArray[j].split('-');
110691
110739
  for(let k = parseInt(startEnd[0]); k <= parseInt(startEnd[1]); ++k) {
@@ -115856,7 +115904,8 @@ class LoadPDB {
115856
115904
  }
115857
115905
 
115858
115906
  isSecondary(resid, residArray, bNMR, bNonFull) { let ic = this.icn3d; ic.icn3dui;
115859
- if(bNonFull) return false;
115907
+ // still need to get the secondary info
115908
+ //if(bNonFull) return false;
115860
115909
 
115861
115910
  if(!bNMR) {
115862
115911
  return $.inArray(resid, residArray) != -1;
@@ -123762,29 +123811,29 @@ class Dssp {
123762
123811
 
123763
123812
  setRefPdbs() { let ic = this.icn3d; ic.icn3dui;
123764
123813
  // round 1, 16 templates
123765
- ic.refpdbArray = ['1InsulinR_8guyE_human_FN3-n1', '1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', '1CoAtomerGamma1_1r4xA_human', '1C3_2qkiD_human_n1', '1CuZnSuperoxideDismutase_1hl5C_human', '1ASF1A_2iijA_human', '1FAB-LIGHT_5esv_C1-n2', '1CD2_1hnfA_human_C2-n2', '1NaCaExchanger_2fwuA_dog_n2', '1NaKATPaseTransporterBeta_2zxeB_spurdogshark', '1FAB-HEAVY_5esv_V-n1', '1PDL1_4z18B_human_V-n1', '1BTLA_2aw2A_human_Iset', '1LaminAC_1ifrA_human', '1CD3g_6jxrg_human_C2', '1CD28_1yjdC_human_V', '1CD19_6al5A_human-n1'];
123814
+ ic.refpdbArray = ['1InsulinR_8guyE_human_FN3-n1', '1ICOS_6x4gA_human_V', '1FAB-LIGHT_5esv_C1-n2', '1CD2_1hnfA_human_C2-n2', '1ECadherin_4zt1A_human_n2', '1FAB-HEAVY_5esv_V-n1', '1PDL1_4z18B_human_V-n1', '1BTLA_2aw2A_human_Iset', '1LaminAC_1ifrA_human', '1CD3g_6jxrg_human_C2', '1CD28_1yjdC_human_V', '1CD19_6al5A_human-n1'];
123766
123815
 
123767
123816
  // round 2
123768
123817
  ic.refpdbHash = {};
123769
123818
  ic.refpdbHash['1InsulinR_8guyE_human_FN3-n1'] = ['InsulinR_8guyE_human_FN3-n1', 'IL6Rb_1bquB_human_FN3-n3', 'Sidekick2_1wf5A_human_FN3-n7', 'InsulinR_8guyE_human_FN3-n2', 'Contactin1_2ee2A_human_FN3-n9', 'IL6Rb_1bquB_human_FN3-n2'];
123770
- ic.refpdbHash['1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'ICOS_6x4gA_human_V'];
123771
- ic.refpdbHash['1CoAtomerGamma1_1r4xA_human'] = ['CoAtomerGamma1_1r4xA_human', 'TP34_2o6cA_bacteria'];
123772
- ic.refpdbHash['1C3_2qkiD_human_n1'] = ['C3_2qkiD_human_n1', 'BArrestin1_4jqiA_rat_n1', 'RBPJ_6py8C_human_Unk-n1'];
123773
- ic.refpdbHash['1CuZnSuperoxideDismutase_1hl5C_human'] = ['CuZnSuperoxideDismutase_1hl5C_human', 'TEAD1_3kysC_human'];
123774
- ic.refpdbHash['1ASF1A_2iijA_human'] = ['ASF1A_2iijA_human', 'RBPJ_6py8C_human_Unk-n2', 'TP47_1o75A_bacteria'];
123819
+ ic.refpdbHash['1ICOS_6x4gA_human_V'] = ['ICOS_6x4gA_human_V'];
123820
+ //ic.refpdbHash['1CoAtomerGamma1_1r4xA_human'] = ['CoAtomerGamma1_1r4xA_human', 'TP34_2o6cA_bacteria'];
123821
+ //ic.refpdbHash['1C3_2qkiD_human_n1'] = ['C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1'];
123822
+ //ic.refpdbHash['1CuZnSuperoxideDismutase_1hl5C_human'] = ['TEAD1_3kysC_human'];
123823
+ //ic.refpdbHash['1ASF1A_2iijA_human'] = ['ASF1A_2iijA_human', 'TP47_1o75A_bacteria'];
123775
123824
  ic.refpdbHash['1FAB-LIGHT_5esv_C1-n2'] = ['FAB-LIGHT_5esv_C1-n2', 'GHR_1axiB_human_C1-n1', 'VTCN1_Q7Z7D3_human_C1-n2', 'B2Microglobulin_7phrL_human_C1', 'FAB-HEAVY_5esv_C1-n2', 'MHCIa_7phrH_human_C1'];
123776
123825
  ic.refpdbHash['1CD2_1hnfA_human_C2-n2'] = ['CD2_1hnfA_human_C2-n2', 'Siglec3_5j0bB_human_C1-n2'];
123777
- ic.refpdbHash['1NaCaExchanger_2fwuA_dog_n2'] = ['NaCaExchanger_2fwuA_dog_n2', 'ORF7a_1xakA_virus', 'ECadherin_4zt1A_human_n2'];
123778
- ic.refpdbHash['1NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
123826
+ ic.refpdbHash['1ECadherin_4zt1A_human_n2'] = ['ECadherin_4zt1A_human_n2'];
123827
+ //ic.refpdbHash['1NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
123779
123828
  ic.refpdbHash['1FAB-HEAVY_5esv_V-n1'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_V-n1', 'VNAR_1t6vN_shark_V', 'TCRa_6jxrm_human_V-n1', 'VISTA_6oilA_human_V', 'CD8a_1cd8A_human_V', 'PD1_4zqkB_human_V'];
123780
123829
  ic.refpdbHash['1PDL1_4z18B_human_V-n1'] = ['PDL1_4z18B_human_V-n1', 'CD2_1hnfA_human_V-n1', 'LAG3_7tzgD_human_V-n1'];
123781
123830
  ic.refpdbHash['1BTLA_2aw2A_human_Iset'] = ['BTLA_2aw2A_human_Iset', 'Palladin_2dm3A_human_Iset-n1', 'Titin_4uowM_human_Iset-n152', 'LAG3_7tzgD_human_C1-n2', 'JAM1_1nbqA_human_Iset-n2', 'Contactin1_3s97C_human_Iset-n2'];
123782
123831
  ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human', 'CD3d_6jxrd_human_C1'];
123783
- ic.refpdbHash['1CD3g_6jxrg_human_C2'] = ['CD3g_6jxrg_human_C2', 'TCRa_6jxrm_human_C1-n2', 'IsdA_2iteA_bacteria'];
123784
- ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'MPT63_1lmiA_bacteria', 'CD3e_6jxrf_human_C1'];
123832
+ ic.refpdbHash['1CD3g_6jxrg_human_C2'] = ['CD3g_6jxrg_human_C2', 'TCRa_6jxrm_human_C1-n2'];
123833
+ ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'CD3e_6jxrf_human_C1'];
123785
123834
  ic.refpdbHash['1CD19_6al5A_human-n1'] = ['CD19_6al5A_human-n1'];
123786
123835
 
123787
- ic.refpdbHash['all_templates'] = ['ASF1A_2iijA_human', 'B2Microglobulin_7phrL_human_C1', 'BArrestin1_4jqiA_rat_n1', 'BTLA_2aw2A_human_Iset', 'C3_2qkiD_human_n1', 'CD19_6al5A_human-n1', 'CD28_1yjdC_human_V', 'CD2_1hnfA_human_C2-n2', 'CD2_1hnfA_human_V-n1', 'CD3d_6jxrd_human_C1', 'CD3e_6jxrf_human_C1', 'CD3g_6jxrg_human_C2', 'CD8a_1cd8A_human_V', 'CoAtomerGamma1_1r4xA_human', 'Contactin1_2ee2A_human_FN3-n9', 'Contactin1_3s97C_human_Iset-n2', 'CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'FAB-HEAVY_5esv_C1-n2', 'FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_C1-n2', 'FAB-LIGHT_5esv_V-n1', 'GHR_1axiB_human_C1-n1', 'ICOS_6x4gA_human_V', 'IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3', 'InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2', 'IsdA_2iteA_bacteria', 'JAM1_1nbqA_human_Iset-n2', 'LAG3_7tzgD_human_C1-n2', 'LAG3_7tzgD_human_V-n1', 'LaminAC_1ifrA_human', 'MHCIa_7phrH_human_C1', 'MPT63_1lmiA_bacteria', 'NaCaExchanger_2fwuA_dog_n2', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'ORF7a_1xakA_virus', 'PD1_4zqkB_human_V', 'PDL1_4z18B_human_V-n1', 'Palladin_2dm3A_human_Iset-n1', 'RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2', 'Sidekick2_1wf5A_human_FN3-n7', 'Siglec3_5j0bB_human_C1-n2', 'TCRa_6jxrm_human_C1-n2', 'TCRa_6jxrm_human_V-n1', 'TEAD1_3kysC_human', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria', 'Titin_4uowM_human_Iset-n152', 'VISTA_6oilA_human_V', 'VNAR_1t6vN_shark_V', 'VTCN1_Q7Z7D3_human_C1-n2'];
123836
+ ic.refpdbHash['all_templates'] = ['B2Microglobulin_7phrL_human_C1', 'BTLA_2aw2A_human_Iset', 'CD19_6al5A_human-n1', 'CD28_1yjdC_human_V', 'CD2_1hnfA_human_C2-n2', 'CD2_1hnfA_human_V-n1', 'CD3d_6jxrd_human_C1', 'CD3e_6jxrf_human_C1', 'CD3g_6jxrg_human_C2', 'CD8a_1cd8A_human_V', 'Contactin1_2ee2A_human_FN3-n9', 'Contactin1_3s97C_human_Iset-n2', 'ECadherin_4zt1A_human_n2', 'FAB-HEAVY_5esv_C1-n2', 'FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_C1-n2', 'FAB-LIGHT_5esv_V-n1', 'GHR_1axiB_human_C1-n1', 'ICOS_6x4gA_human_V', 'IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3', 'InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2', 'JAM1_1nbqA_human_Iset-n2', 'LAG3_7tzgD_human_C1-n2', 'LAG3_7tzgD_human_V-n1', 'LaminAC_1ifrA_human', 'MHCIa_7phrH_human_C1', 'PD1_4zqkB_human_V', 'PDL1_4z18B_human_V-n1', 'Palladin_2dm3A_human_Iset-n1', 'Sidekick2_1wf5A_human_FN3-n7', 'Siglec3_5j0bB_human_C1-n2', 'TCRa_6jxrm_human_C1-n2', 'TCRa_6jxrm_human_V-n1', 'Titin_4uowM_human_Iset-n152', 'VISTA_6oilA_human_V', 'VNAR_1t6vN_shark_V', 'VTCN1_Q7Z7D3_human_C1-n2'];
123788
123837
 
123789
123838
  // use known ref structure
123790
123839
  ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
@@ -123793,36 +123842,36 @@ class Dssp {
123793
123842
  ic.refpdbHash['6JXR_m'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
123794
123843
  ic.refpdbHash['1HNF_A'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
123795
123844
  ic.refpdbHash['7TZG_D'] = ['LAG3_7tzgD_human_V-n1', 'LAG3_7tzgD_human_C1-n2'];
123796
- ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
123845
+ //ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1'];
123797
123846
  ic.refpdbHash['1BQU_B'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
123798
123847
 
123799
- ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
123848
+ //ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
123800
123849
  ic.refpdbHash['6OIL_A'] = ['VISTA_6oilA_human_V'];
123801
- ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
123802
- ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
123803
- ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
123804
- ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
123850
+ //ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
123851
+ //ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
123852
+ //ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
123853
+ //ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
123805
123854
  ic.refpdbHash['1NBQ_A'] = ['JAM1_1nbqA_human_Iset-n2'];
123806
- ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
123855
+ //ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
123807
123856
  ic.refpdbHash['7PHR_H'] = ['MHCIa_7phrH_human_C1'];
123808
- ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
123857
+ //ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
123809
123858
  ic.refpdbHash['4Z18_B'] = ['PDL1_4z18B_human_V-n1'];
123810
123859
  ic.refpdbHash['1T6V_N'] = ['VNAR_1t6vN_shark_V'];
123811
- ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
123812
- ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
123860
+ //ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
123861
+ //ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
123813
123862
  ic.refpdbHash['7PHR_L'] = ['B2Microglobulin_7phrL_human_C1'];
123814
123863
  ic.refpdbHash['2AW2_A'] = ['BTLA_2aw2A_human_Iset'];
123815
- ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
123864
+ //ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
123816
123865
  ic.refpdbHash['1WF5_A'] = ['Sidekick2_1wf5A_human_FN3-n7'];
123817
123866
  ic.refpdbHash['5J0B_B'] = ['Siglec3_5j0bB_human_C1-n2'];
123818
123867
  ic.refpdbHash['1IFR_A'] = ['LaminAC_1ifrA_human'];
123819
123868
  ic.refpdbHash['Q7Z7D3_A'] = ['VTCN1_Q7Z7D3_human_C1-n2'];
123820
123869
  ic.refpdbHash['4ZQK_B'] = ['PD1_4zqkB_human_V'];
123821
123870
  ic.refpdbHash['2DM3_A'] = ['Palladin_2dm3A_human_Iset-n1'];
123822
- ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
123823
- ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
123871
+ //ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
123872
+ //ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
123824
123873
  ic.refpdbHash['4ZT1_A'] = ['ECadherin_4zt1A_human_n2'];
123825
- ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
123874
+ //ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
123826
123875
  ic.refpdbHash['1CD8_A'] = ['CD8a_1cd8A_human_V'];
123827
123876
  ic.refpdbHash['3S97_C'] = ['Contactin1_3s97C_human_Iset-n2'];
123828
123877
  ic.refpdbHash['1AXI_B'] = ['GHR_1axiB_human_C1-n1'];
@@ -123830,7 +123879,7 @@ class Dssp {
123830
123879
  ic.refpdbHash['2EE2_A'] = ['Contactin1_2ee2A_human_FN3-n9'];
123831
123880
  ic.refpdbHash['4UOW_M'] = ['Titin_4uowM_human_Iset-n152'];
123832
123881
  ic.refpdbHash['6A15_A'] = ['CD19_6al5A_human-n1'];
123833
- ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
123882
+ //ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
123834
123883
  ic.refpdbHash['1YJD_C'] = ['CD28_1yjdC_human_V'];
123835
123884
  ic.refpdbHash['6JXR_d'] = ['CD3d_6jxrd_human_C1'];
123836
123885
  ic.refpdbHash['6JXR_f'] = ['CD3e_6jxrf_human_C1'];
@@ -123839,11 +123888,11 @@ class Dssp {
123839
123888
  // assign Ig types
123840
123889
  ic.ref2igtype = {};
123841
123890
 
123842
- ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
123891
+ //ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
123843
123892
  ic.ref2igtype['B2Microglobulin_7phrL_human_C1'] = 'IgC1';
123844
- ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
123893
+ //ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
123845
123894
  ic.ref2igtype['BTLA_2aw2A_human_Iset'] = 'IgI';
123846
- ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
123895
+ //ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
123847
123896
  ic.ref2igtype['CD19_6al5A_human-n1'] = 'CD19';
123848
123897
  ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
123849
123898
  ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
@@ -123852,12 +123901,12 @@ class Dssp {
123852
123901
  ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgC1';
123853
123902
  ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgC2';
123854
123903
  ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
123855
- ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
123904
+ //ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
123856
123905
  ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
123857
123906
  ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = 'IgI';
123858
- ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
123907
+ //ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
123859
123908
  ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'Cadherin';
123860
- ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
123909
+ //ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
123861
123910
  ic.ref2igtype['FAB-HEAVY_5esv_C1-n2'] = 'IgC1';
123862
123911
  ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
123863
123912
  ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
@@ -123868,28 +123917,28 @@ class Dssp {
123868
123917
  ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
123869
123918
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = 'IgFN3';
123870
123919
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
123871
- ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
123920
+ //ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
123872
123921
  ic.ref2igtype['JAM1_1nbqA_human_Iset-n2'] = 'IgI';
123873
123922
  ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = 'IgC1';
123874
123923
  ic.ref2igtype['LAG3_7tzgD_human_V-n1'] = 'IgV';
123875
123924
  ic.ref2igtype['LaminAC_1ifrA_human'] = 'Lamin';
123876
123925
  ic.ref2igtype['MHCIa_7phrH_human_C1'] = 'IgC1';
123877
- ic.ref2igtype['MPT63_1lmiA_bacteria'] = 'IgFN3-like';
123878
- ic.ref2igtype['NaCaExchanger_2fwuA_dog_n2'] = 'IgFN3-like';
123879
- ic.ref2igtype['NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = 'IgE';
123880
- ic.ref2igtype['ORF7a_1xakA_virus'] = 'ORF';
123926
+ //ic.ref2igtype['MPT63_1lmiA_bacteria'] = 'IgFN3-like';
123927
+ //ic.ref2igtype['NaCaExchanger_2fwuA_dog_n2'] = 'IgFN3-like';
123928
+ //ic.ref2igtype['NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = 'IgE';
123929
+ //ic.ref2igtype['ORF7a_1xakA_virus'] = 'ORF';
123881
123930
  ic.ref2igtype['PD1_4zqkB_human_V'] = 'IgV';
123882
123931
  ic.ref2igtype['PDL1_4z18B_human_V-n1'] = 'IgV';
123883
123932
  ic.ref2igtype['Palladin_2dm3A_human_Iset-n1'] = 'IgI';
123884
- ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
123933
+ //ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
123885
123934
  //ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
123886
123935
  ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
123887
123936
  ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = 'IgC1';
123888
123937
  ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
123889
123938
  ic.ref2igtype['TCRa_6jxrm_human_V-n1'] = 'IgV';
123890
- ic.ref2igtype['TEAD1_3kysC_human'] = 'IgFN3-like';
123891
- ic.ref2igtype['TP34_2o6cA_bacteria'] = 'IgE';
123892
- ic.ref2igtype['TP47_1o75A_bacteria'] = 'IgE';
123939
+ //ic.ref2igtype['TEAD1_3kysC_human'] = 'IgFN3-like';
123940
+ //ic.ref2igtype['TP34_2o6cA_bacteria'] = 'IgE';
123941
+ //ic.ref2igtype['TP47_1o75A_bacteria'] = 'IgE';
123893
123942
  ic.ref2igtype['Titin_4uowM_human_Iset-n152'] = 'IgI';
123894
123943
  ic.ref2igtype['VISTA_6oilA_human_V'] = 'IgV';
123895
123944
  ic.ref2igtype['VNAR_1t6vN_shark_V'] = 'IgV';
@@ -125440,6 +125489,7 @@ class Dssp {
125440
125489
  }
125441
125490
  else {
125442
125491
  let bBefore = false, bInRange= false, bAfter = false;
125492
+ /*
125443
125493
  // 100, 100A
125444
125494
  if(parseInt(currResi) == parseInt(strandArray[strandCnt].startResi) && currResi != strandArray[strandCnt].startResi) {
125445
125495
  bBefore = currResi < strandArray[strandCnt].startResi;
@@ -125455,6 +125505,14 @@ class Dssp {
125455
125505
  else {
125456
125506
  bAfter = parseInt(currResi) > parseInt(strandArray[strandCnt].endResi);
125457
125507
  }
125508
+ */
125509
+
125510
+ let currResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, currResi);
125511
+ let startResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].startResi);
125512
+ let endResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].endResi);
125513
+
125514
+ bBefore = parseInt(currResiNcbi) < parseInt(startResiNcbi);
125515
+ bAfter = parseInt(currResiNcbi) > parseInt(endResiNcbi);
125458
125516
 
125459
125517
  bInRange = (!bBefore && !bAfter) ? true : false;
125460
125518
 
@@ -131273,8 +131331,9 @@ class ShareLink {
131273
131331
  }
131274
131332
 
131275
131333
  let paraHash = {};
131276
- for(let key in ic.cfg) {
131277
- let value = ic.cfg[key];
131334
+ /*
131335
+ for(let key in me.cfg) {
131336
+ let value = me.cfg[key];
131278
131337
  //if(key === 'inpara' || ic.key === 'command' || value === undefined) continue;
131279
131338
  if(key === 'inpara' || key === 'command' || key === 'usepdbnum'
131280
131339
  || key === 'date' || key === 'v' || value === undefined) continue;
@@ -131324,7 +131383,7 @@ class ShareLink {
131324
131383
  paraHash[key] = value;
131325
131384
  }
131326
131385
  }
131327
-
131386
+ */
131328
131387
  if(ic.bAfMem) {
131329
131388
  paraHash['afmem'] = 'on';
131330
131389
  }
@@ -131346,6 +131405,12 @@ class ShareLink {
131346
131405
  if(key_value.length == 2) paraHash[key_value[0]] = key_value[1];
131347
131406
  }
131348
131407
 
131408
+ // BLAST RID is usually added at the end of the URL. It should be included.
131409
+ if(me.cfg.rid && !paraHash['RID']) {
131410
+ url += 'RID=' + me.cfg.rid + '&';
131411
+ }
131412
+
131413
+ // sometimes idname is not part of the URL
131349
131414
  if(me.cfg.idname && !paraHash[me.cfg.idname]) { // somehow it is not included
131350
131415
  url += me.cfg.idname + '=' + me.cfg.idvalue + '&';
131351
131416
  }
@@ -134459,7 +134524,7 @@ class iCn3DUI {
134459
134524
  //even when multiple iCn3D viewers are shown together.
134460
134525
  this.pre = this.cfg.divid + "_";
134461
134526
 
134462
- this.REVISION = '3.47.1';
134527
+ this.REVISION = '3.48.0';
134463
134528
 
134464
134529
  // In nodejs, iCn3D defines "window = {navigator: {}}", and added window = {navigator: {}, "__THREE__":"177"}
134465
134530
  this.bNode = (Object.keys(window).length < 3) ? true : false;
@@ -134661,14 +134726,8 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
134661
134726
  let domainidArray = me.cfg.matchedchains.split(',');
134662
134727
  let chainidArray = [];
134663
134728
  for(let i = 0, il = domainidArray.length; i < il; ++i) {
134664
- let pos = domainidArray[i].lastIndexOf('_');
134665
- let lastId = domainidArray[i].substr(pos + 1);
134666
- if(!isNaN(lastId)) { // lastId is domain id
134667
- chainidArray.push(domainidArray[i].substr(0, pos));
134668
- }
134669
- else {
134670
- chainidArray.push(domainidArray[i]);
134671
- }
134729
+ let idArray = domainidArray[i].split('_');
134730
+ chainidArray.push(idArray[0] + '_' + idArray[1]);
134672
134731
  }
134673
134732
 
134674
134733
  // get the matched structures, do not include the template
@@ -134897,6 +134956,9 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
134897
134956
  if(me.cfg.align.indexOf('185055,') != -1) {
134898
134957
  me.cfg.align = me.cfg.align.replace('185055,', '199731,'); //the mmdbid of PDB 6M17 was changed from 185055 to 199731
134899
134958
  }
134959
+ else if(me.cfg.align == '54567,1,12161,1,2,1') {
134960
+ me.cfg.align = '3HHR,1BQU'; // somehow the VAST+ data for this published alignment were not there anymore
134961
+ }
134900
134962
 
134901
134963
  let alignArray = me.cfg.align.split(','); // e.g., 6 IDs: 103701,1,4,68563,1,167 [mmdbid1,biounit,molecule,mmdbid2,biounit,molecule], or 2IDs: 103701,68563 [mmdbid1,mmdbid2]
134902
134964