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.module.js CHANGED
@@ -63994,20 +63994,20 @@ class SetDialog {
63994
63994
  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'];
63995
63995
  group2tpl['IgC2'] = ['CD2_1hnfA_human_C2-n2', 'CD3g_6jxrg_human_C2'];
63996
63996
  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'];
63997
- group2tpl['IgE'] = ['CoAtomerGamma1_1r4xA_human', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'IsdA_2iteA_bacteria', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria'];
63997
+ //group2tpl['IgE'] = ['CoAtomerGamma1_1r4xA_human', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'IsdA_2iteA_bacteria', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria'];
63998
63998
 
63999
63999
  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'];
64000
64000
 
64001
- 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'];
64001
+ //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'];
64002
64002
 
64003
- 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'];
64003
+ group2tpl['Other Ig'] = ['CD19_6al5A_human-n1', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human'];
64004
64004
 
64005
64005
  let tpl2strandsig = {};
64006
- tpl2strandsig['ASF1A_2iijA_human'] = "A A' B C C' E F G G+";
64006
+ //tpl2strandsig['ASF1A_2iijA_human'] = "A A' B C C' E F G G+";
64007
64007
  tpl2strandsig['B2Microglobulin_7phrL_human_C1'] = "A B C C' D E F G";
64008
- tpl2strandsig['BArrestin1_4jqiA_rat_n1'] = "A- A A' B C C' E F G";
64008
+ //tpl2strandsig['BArrestin1_4jqiA_rat_n1'] = "A- A A' B C C' E F G";
64009
64009
  tpl2strandsig['BTLA_2aw2A_human_Iset'] = "A A' B C C' D E F G";
64010
- tpl2strandsig['C3_2qkiD_human_n1'] = "A A' B C C' E F G";
64010
+ //tpl2strandsig['C3_2qkiD_human_n1'] = "A A' B C C' E F G";
64011
64011
  tpl2strandsig['CD19_6al5A_human-n1'] = "A' B C C' D E F G";
64012
64012
  tpl2strandsig['CD28_1yjdC_human_V'] = "A A' B C C' C'' D E F G";
64013
64013
  tpl2strandsig['CD2_1hnfA_human_C2-n2'] = "A B C C' E F G";
@@ -64016,12 +64016,12 @@ class SetDialog {
64016
64016
  tpl2strandsig['CD3e_6jxrf_human_C1'] = "A B C C' D E F G";
64017
64017
  tpl2strandsig['CD3g_6jxrg_human_C2'] = "A B C C' E F G G+";
64018
64018
  tpl2strandsig['CD8a_1cd8A_human_V'] = "A A' B C C' C'' D E F G";
64019
- tpl2strandsig['CoAtomerGamma1_1r4xA_human'] = "A- A B C D E F G";
64019
+ //tpl2strandsig['CoAtomerGamma1_1r4xA_human'] = "A- A B C D E F G";
64020
64020
  tpl2strandsig['Contactin1_2ee2A_human_FN3-n9'] = "A A' B C C' E F G";
64021
64021
  tpl2strandsig['Contactin1_3s97C_human_Iset-n2'] = "A A' B C D E F G";
64022
- tpl2strandsig['CuZnSuperoxideDismutase_1hl5C_human'] = "A- A B C C' E F G";
64022
+ //tpl2strandsig['CuZnSuperoxideDismutase_1hl5C_human'] = "A- A B C C' E F G";
64023
64023
  tpl2strandsig['ECadherin_4zt1A_human_n2'] = "A' B C D E F G";
64024
- tpl2strandsig['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = "A--- A-- A- A B C C' C'' D E F G";
64024
+ //tpl2strandsig['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = "A--- A-- A- A B C C' C'' D E F G";
64025
64025
  tpl2strandsig['FAB-HEAVY_5esv_C1-n2'] = "A B C D E F G";
64026
64026
  tpl2strandsig['FAB-HEAVY_5esv_V-n1'] = "A B C C' C'' D E F G";
64027
64027
  tpl2strandsig['FAB-LIGHT_5esv_C1-n2'] = "A B C C' D E F G";
@@ -64032,28 +64032,28 @@ class SetDialog {
64032
64032
  tpl2strandsig['IL6Rb_1bquB_human_FN3-n3'] = "A B C C' E F G";
64033
64033
  tpl2strandsig['InsulinR_8guyE_human_FN3-n1'] = "A B C C' E F G";
64034
64034
  tpl2strandsig['InsulinR_8guyE_human_FN3-n2'] = "A B C C' E F G";
64035
- tpl2strandsig['IsdA_2iteA_bacteria'] = "A- A B C C' D E F G";
64035
+ //tpl2strandsig['IsdA_2iteA_bacteria'] = "A- A B C C' D E F G";
64036
64036
  tpl2strandsig['JAM1_1nbqA_human_Iset-n2'] = "A A' B C C' D E F G";
64037
64037
  tpl2strandsig['LAG3_7tzgD_human_C1-n2'] = "A A' B C C' D E F G";
64038
64038
  tpl2strandsig['LAG3_7tzgD_human_V-n1'] = "A' B C C' D E F G";
64039
64039
  tpl2strandsig['LaminAC_1ifrA_human'] = "A- A B C C' E E+ F G";
64040
64040
  tpl2strandsig['MHCIa_7phrH_human_C1'] = "A B C C' D E F G";
64041
- tpl2strandsig['MPT63_1lmiA_bacteria'] = "A-- A- A BC C' E F G";
64042
- tpl2strandsig['NaCaExchanger_2fwuA_dog_n2'] = "A A' B C C' E F G";
64043
- tpl2strandsig['NaKATPaseTransporterBeta_2zxeB_spurdogshark']= "A A' B C D E F G";
64044
- tpl2strandsig['ORF7a_1xakA_virus'] = "A' B C D E F G";
64041
+ //tpl2strandsig['MPT63_1lmiA_bacteria'] = "A-- A- A BC C' E F G";
64042
+ //tpl2strandsig['NaCaExchanger_2fwuA_dog_n2'] = "A A' B C C' E F G";
64043
+ //tpl2strandsig['NaKATPaseTransporterBeta_2zxeB_spurdogshark']= "A A' B C D E F G";
64044
+ //tpl2strandsig['ORF7a_1xakA_virus'] = "A' B C D E F G";
64045
64045
  tpl2strandsig['PD1_4zqkB_human_V'] = "A A' B C C' D E F G";
64046
64046
  tpl2strandsig['PDL1_4z18B_human_V-n1'] = "A A' B C C' C'' D E F G";
64047
64047
  tpl2strandsig['Palladin_2dm3A_human_Iset-n1'] = "A A' B C C' D E F G";
64048
- tpl2strandsig['RBPJ_6py8C_human_Unk-n1'] = "A A' B C C' E F G";
64049
- tpl2strandsig['RBPJ_6py8C_human_Unk-n2'] = "A B C D E F G";
64048
+ //tpl2strandsig['RBPJ_6py8C_human_Unk-n1'] = "A A' B C C' E F G";
64049
+ //tpl2strandsig['RBPJ_6py8C_human_Unk-n2'] = "A B C D E F G";
64050
64050
  tpl2strandsig['Sidekick2_1wf5A_human_FN3-n7'] = "A B C C' E F G";
64051
64051
  tpl2strandsig['Siglec3_5j0bB_human_C1-n2'] = "A A' B C D E F G";
64052
64052
  tpl2strandsig['TCRa_6jxrm_human_C1-n2'] = "A B C D E F G";
64053
64053
  tpl2strandsig['TCRa_6jxrm_human_V-n1'] = "A A' B C C' C'' D E F G";
64054
- tpl2strandsig['TEAD1_3kysC_human'] = "A A+ A' B C C' E F G G+";
64055
- tpl2strandsig['TP34_2o6cA_bacteria'] = "A- A B C C' D E F G";
64056
- tpl2strandsig['TP47_1o75A_bacteria'] = "A B C C' D E F G";
64054
+ //tpl2strandsig['TEAD1_3kysC_human'] = "A A+ A' B C C' E F G G+";
64055
+ //tpl2strandsig['TP34_2o6cA_bacteria'] = "A- A B C C' D E F G";
64056
+ //tpl2strandsig['TP47_1o75A_bacteria'] = "A B C C' D E F G";
64057
64057
  tpl2strandsig['Titin_4uowM_human_Iset-n152'] = "A A' B C C' D E F G";
64058
64058
  tpl2strandsig['VISTA_6oilA_human_V'] = "A A' B C C' C'' D E F G G+";
64059
64059
  tpl2strandsig['VNAR_1t6vN_shark_V'] = "A A' B C C' D E F G";
@@ -75419,7 +75419,7 @@ class Scene {
75419
75419
  if(ic.opts['slab'] === 'yes') ic.cameraCls.setSlab();
75420
75420
 
75421
75421
  // if(!ic.bSetVrArButtons) { // call once
75422
- if(!me.cfg.imageonly) this.setVrArButtons();
75422
+ if(!me.cfg.imageonly && ( 'xr' in navigator )) this.setVrArButtons();
75423
75423
  // }
75424
75424
 
75425
75425
  // if((ic.bVr || ic.bAr) && !ic.bSetVrAr) { // call once
@@ -84874,7 +84874,7 @@ class ApplyMissingRes {
84874
84874
  line.serial1 = ic.missingResResid2serial[resid0 + ',' + resid1];
84875
84875
  line.serial2 = ic.missingResResid2serial[resid1 + ',' + resid0];
84876
84876
 
84877
- line.color = "#" + ic.atoms[line.serial1].color.getHexString();
84877
+ line.color = (ic.atoms[line.serial1]) ? "#" + ic.atoms[line.serial1].color.getHexString() : undefined;
84878
84878
 
84879
84879
  line.radius = ic.coilWidth;
84880
84880
 
@@ -100331,7 +100331,7 @@ class HlUpdate {
100331
100331
  if(ic.mmdbid_q !== undefined && ic.mmdbid_q === ic.mmdbid_t) {
100332
100332
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[0].toUpperCase(), 1, true);
100333
100333
  }
100334
- else {
100334
+ else if(ic.mmdbidArray.length > 1) {
100335
100335
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[1].toUpperCase(), 1, true);
100336
100336
  }
100337
100337
  html2ddgm += ic.diagram2dCls.set2DdgmNote(true);
@@ -104613,16 +104613,31 @@ class ChainalignParser {
104613
104613
 
104614
104614
  // dynamically align pairs in all chainids
104615
104615
  // the resrange from VASTSrv or VAST search uses NCBI residue numbers!!!
104616
- let atomSet_t = (me.cfg.resrange) ? ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], chainidArray[0], true).hAtoms : ic.chains[chainidArray[0]];
104616
+ let atomSet_t;
104617
+ if(me.cfg.resrange) {
104618
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], chainidArray[0], true);
104619
+ atomSet_t = result.hAtoms;
104620
+ }
104621
+ else {
104622
+ atomSet_t = ic.chains[chainidArray[0]];
104623
+ }
104624
+
104617
104625
  for(let index = 1, indexl = chainidArray.length; index < indexl; ++index) {
104618
- let atomSet_q = (me.cfg.resrange) ? ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], chainidArray[index], true).hAtoms : ic.chains[chainidArray[index]];
104626
+ let atomSet_q;
104627
+ if(me.cfg.resrange) {
104628
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], chainidArray[index], true);
104629
+ atomSet_q = result.hAtoms;
104630
+ }
104631
+ else {
104632
+ atomSet_q = ic.chains[chainidArray[index]];
104633
+ }
104619
104634
  // end of new version to be done for VASTsrv ==============
104620
104635
 
104621
104636
  let alignAjax;
104622
104637
  if(me.cfg.aligntool != 'tmalign') {
104623
104638
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
104624
104639
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
104625
-
104640
+
104626
104641
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
104627
104642
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
104628
104643
  }
@@ -104658,6 +104673,7 @@ class ChainalignParser {
104658
104673
  //let bTargetTransformed = (ic.qt_start_end[0]) ? true : false;
104659
104674
 
104660
104675
  // modify the previous trans and rotation matrix
104676
+ let bAligned = false;
104661
104677
  for(let i = 0, il = dataArray.length; i < il; ++i) {
104662
104678
  // let align = (me.bNode) ? dataArray[i] : dataArray[i].value;//[0];
104663
104679
  let align = dataArray[i].value;//[0];
@@ -104673,7 +104689,7 @@ class ChainalignParser {
104673
104689
 
104674
104690
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
104675
104691
 
104676
- this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain);
104692
+ bAligned =await this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, undefined);
104677
104693
  }
104678
104694
 
104679
104695
  // do not transform the target
@@ -104681,28 +104697,34 @@ class ChainalignParser {
104681
104697
  // this.transformStructure(mmdbid_t, indexArray[0], 'target');
104682
104698
  //}
104683
104699
 
104684
- // transform the rest
104685
- for(let i = 0, il = dataArray.length; i < il; ++i) {
104686
- let mmdbid_q = struArray[i];
104687
- let index = indexArray[i];
104688
- this.transformStructure(mmdbid_q, index, 'query');
104689
- }
104700
+ if(bAligned) {
104701
+ // transform the rest
104702
+ for(let i = 0, il = dataArray.length; i < il; ++i) {
104703
+ let mmdbid_q = struArray[i];
104704
+ let index = indexArray[i];
104705
+ this.transformStructure(mmdbid_q, index, 'query');
104706
+ }
104690
104707
 
104691
- let hAtomsAll = {};
104708
+ let hAtomsAll = {};
104692
104709
 
104693
- if(ic.bFullUi && ic.q_rotation !== undefined && !me.cfg.resnum && !me.cfg.resdef) {
104694
- // set multiple sequence alignment from ic.qt_start_end
104695
- hAtomsAll = this.setMsa(chainidArray);
104696
- }
104710
+ if(ic.bFullUi && ic.q_rotation !== undefined && !me.cfg.resnum && !me.cfg.resdef) {
104711
+ // set multiple sequence alignment from ic.qt_start_end
104712
+ hAtomsAll = this.setMsa(chainidArray);
104713
+ }
104697
104714
 
104698
- // highlight all aligned atoms
104699
- //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
104700
- ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
104715
+ // highlight all aligned atoms
104716
+ //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
104717
+ ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
104701
104718
 
104702
- ic.transformCls.zoominSelection();
104719
+ ic.transformCls.zoominSelection();
104703
104720
 
104704
- // do the rest
104705
- await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
104721
+ // do the rest
104722
+ await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
104723
+ }
104724
+ else {
104725
+ me.cfg.aligntool = 'tmalign';
104726
+ await ic.chainalignParserCls.downloadChainalignment(me.cfg.chainalign);
104727
+ }
104706
104728
  }
104707
104729
 
104708
104730
  setMsa(chainidArray, bVastplus, bRealign) { let ic = this.icn3d, me = ic.icn3dui;
@@ -104773,7 +104795,7 @@ class ChainalignParser {
104773
104795
 
104774
104796
  let bNoAlert = true;
104775
104797
 
104776
- let bAligned = this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
104798
+ let bAligned = await this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
104777
104799
 
104778
104800
  if(bAligned) {
104779
104801
  bFoundAlignment = true;
@@ -105265,7 +105287,7 @@ class ChainalignParser {
105265
105287
 
105266
105288
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
105267
105289
 
105268
- this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain);
105290
+ await this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain, undefined);
105269
105291
  }
105270
105292
  }
105271
105293
  }
@@ -105275,13 +105297,13 @@ class ChainalignParser {
105275
105297
  await this.loadOpmDataForChainalign(targetData, queryDataArray, chainidArray, ic.mmdbidArray);
105276
105298
  }
105277
105299
 
105278
- processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
105300
+ async processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
105279
105301
  let bAligned = false;
105280
105302
 
105281
- if((!align || align.length == 0) && !bNoAlert) {
105282
- let serverName = (me.cfg.aligntool == 'tmalign') ? 'TM-align' : 'VAST';
105283
-
105284
- if(ic.bRender) var aaa = 1; //alert("These chains can not be aligned by " + serverName + ".");
105303
+ if((align === "error" || align === undefined || align.length == 0) && !bNoAlert) {
105304
+ // let serverName = (me.cfg.aligntool == 'tmalign') ? 'TM-align' : 'VAST';
105305
+
105306
+ // if(ic.bRender) var aaa = 1; //alert("These chains can not be aligned by " + serverName + ".");
105285
105307
  return bAligned;
105286
105308
  }
105287
105309
 
@@ -105430,7 +105452,6 @@ class ChainalignParser {
105430
105452
  let structArrayTmp = idlist.split(',');
105431
105453
 
105432
105454
  let structArray = [];
105433
-
105434
105455
  // only when bNoDuplicate is undefined/false, it's allowed to load multiple copies of the same structure
105435
105456
  if(!bNoDuplicate) {
105436
105457
  structArray = this.addPostfixForStructureids(structArrayTmp);
@@ -105443,7 +105464,7 @@ class ChainalignParser {
105443
105464
  if(!ic.structures.hasOwnProperty(id)) structArray.push(structArrayTmp[i]);
105444
105465
  }
105445
105466
  }
105446
-
105467
+
105447
105468
  if(structArray.length == 0) return;
105448
105469
 
105449
105470
  ic.structArray = ic.structArray.concat(structArray);
@@ -105543,6 +105564,8 @@ class ChainalignParser {
105543
105564
  let bNoSeqalign = true;
105544
105565
  let pdbid = structArray[i];
105545
105566
 
105567
+ if(queryDataArray[i].pdbId) queryDataArray[i].pdbId = pdbid;
105568
+
105546
105569
  //hAtomsTmp contains all atoms
105547
105570
  await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign, pdbid);
105548
105571
  }
@@ -107119,7 +107142,7 @@ class MmdbParser {
107119
107142
  return;
107120
107143
  }
107121
107144
 
107122
- if(Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
107145
+ if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
107123
107146
  // use mmtfid
107124
107147
  let pdbid = data.pdbId;
107125
107148
  await ic.bcifParserCls.downloadBcif(pdbid);
@@ -107129,6 +107152,7 @@ class MmdbParser {
107129
107152
 
107130
107153
  let bCalphaOnly = me.utilsCls.isCalphaPhosOnly(data.atoms); //, 'CA');
107131
107154
 
107155
+ //if(!data.pdbId) data.pdbId = mmdbid;
107132
107156
  if(bCalphaOnly || data.atomCount <= ic.maxatomcnt) {
107133
107157
  await this.parseMmdbData(data);
107134
107158
  }
@@ -107290,8 +107314,18 @@ class MmdbParser {
107290
107314
  async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign, pdbidIn) { let ic = this.icn3d, me = ic.icn3dui;
107291
107315
  let hAtoms;
107292
107316
  let pdbid = (data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
107317
+ if(!pdbid && chainid) {
107318
+ pdbid = chainid.substr(0, chainid.lastIndexOf('_'));
107319
+ }
107320
+
107293
107321
  if(pdbidIn) pdbid = pdbidIn;
107294
107322
 
107323
+ // if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
107324
+ // ic.bRender = false;
107325
+ // await ic.bcifParserCls.downloadBcif(pdbid);
107326
+ // return;
107327
+ // }
107328
+
107295
107329
  this.parseMmdbDataPart1(data, type);
107296
107330
 
107297
107331
  if(type === undefined) { // default mmdbid input
@@ -108958,7 +108992,7 @@ class PdbParser {
108958
108992
  }
108959
108993
 
108960
108994
  // if(!ic.bSecondaryStructure && Object.keys(ic.proteins).length > 0) {
108961
- if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108995
+ if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108962
108996
  await this.applyCommandDssp(bAppend);
108963
108997
  }
108964
108998
  else {
@@ -110933,8 +110967,7 @@ class RealignParser {
110933
110967
  // If rmsd from vastsrv is too large, realign the chains
110934
110968
  //if(me.cfg.chainalign && !me.cfg.usepdbnum && me.cfg.resdef && rmsd > 5) {
110935
110969
  // redo algnment only for VAST serv page
110936
- if(!me.cfg.usepdbnum && me.cfg.resdef && rmsd > 5 && me.cfg.chainalign) {
110937
- console.log("RMSD from VAST is larger than 5. Realign the chains with TM-align.");
110970
+ if(!me.cfg.usepdbnum && (me.cfg.resdef || me.cfg.resrange) && rmsd > 5 && me.cfg.chainalign) {
110938
110971
  //let nameArray = me.cfg.chainalign.split(',');
110939
110972
  let nameArray = Object.keys(chainidHash);
110940
110973
  if(nameArray.length > 0) {
@@ -111186,15 +111219,30 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
111186
111219
  if(bVastsearch && me.cfg.resrange) {
111187
111220
  let resRangeArray = decodeURIComponent(me.cfg.resrange).split(' | ');
111188
111221
 
111189
- let atomSet_t = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true).hAtoms;
111222
+ let atomSet_t;
111223
+ if(me.cfg.resrange) {
111224
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true);
111225
+ atomSet_t = result.hAtoms;
111226
+ }
111227
+ else {
111228
+ atomSet_t = ic.chains[ic.chainidArray[0]];
111229
+ }
111230
+
111190
111231
  for(let index = 1, indexl = ic.chainidArray.length; index < indexl; ++index) {
111191
- let atomSet_q = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], ic.chainidArray[index], true).hAtoms;
111232
+ let atomSet_q;
111233
+ if(me.cfg.resrange) {
111234
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], ic.chainidArray[index], true);
111235
+ atomSet_q = result.hAtoms;
111236
+ }
111237
+ else {
111238
+ atomSet_q = ic.chains[ic.chainidArray[index]];
111239
+ }
111192
111240
 
111193
111241
  let alignAjax;
111194
111242
  if(me.cfg.aligntool != 'tmalign') {
111195
111243
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
111196
111244
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
111197
-
111245
+
111198
111246
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
111199
111247
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
111200
111248
  }
@@ -111255,9 +111303,7 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
111255
111303
  let alignAjax;
111256
111304
  if(me.cfg.aligntool != 'tmalign') {
111257
111305
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(struct2domain[struct2][chainid2]);
111258
- console.log("@@@ realign " + struct1 + " " + chainid1 + " and " + struct2 + " " + chainid2);
111259
- console.log("@@@ jsonStr_q " + jsonStr_q);
111260
- console.log("@@@ jsonStr_t " + jsonStr_t);
111306
+
111261
111307
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
111262
111308
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
111263
111309
  }
@@ -111327,7 +111373,7 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
111327
111373
 
111328
111374
  if(me.cfg.aligntool != 'tmalign') {
111329
111375
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(chainid2domain[chainid2]);
111330
-
111376
+
111331
111377
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
111332
111378
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
111333
111379
  }
@@ -111587,6 +111633,8 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
111587
111633
  let hAtoms = {};
111588
111634
 
111589
111635
  for(let j = 0, jl = resiArray.length; j < jl; ++j) {
111636
+ if(!resiArray[j]) continue;
111637
+
111590
111638
  if(resiArray[j].indexOf('-') != -1) {
111591
111639
  let startEnd = resiArray[j].split('-');
111592
111640
  for(let k = parseInt(startEnd[0]); k <= parseInt(startEnd[1]); ++k) {
@@ -116757,7 +116805,8 @@ class LoadPDB {
116757
116805
  }
116758
116806
 
116759
116807
  isSecondary(resid, residArray, bNMR, bNonFull) { let ic = this.icn3d; ic.icn3dui;
116760
- if(bNonFull) return false;
116808
+ // still need to get the secondary info
116809
+ //if(bNonFull) return false;
116761
116810
 
116762
116811
  if(!bNMR) {
116763
116812
  return $.inArray(resid, residArray) != -1;
@@ -124663,29 +124712,29 @@ class Dssp {
124663
124712
 
124664
124713
  setRefPdbs() { let ic = this.icn3d; ic.icn3dui;
124665
124714
  // round 1, 16 templates
124666
- 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'];
124715
+ 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'];
124667
124716
 
124668
124717
  // round 2
124669
124718
  ic.refpdbHash = {};
124670
124719
  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'];
124671
- ic.refpdbHash['1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', 'ICOS_6x4gA_human_V'];
124672
- ic.refpdbHash['1CoAtomerGamma1_1r4xA_human'] = ['CoAtomerGamma1_1r4xA_human', 'TP34_2o6cA_bacteria'];
124673
- ic.refpdbHash['1C3_2qkiD_human_n1'] = ['C3_2qkiD_human_n1', 'BArrestin1_4jqiA_rat_n1', 'RBPJ_6py8C_human_Unk-n1'];
124674
- ic.refpdbHash['1CuZnSuperoxideDismutase_1hl5C_human'] = ['CuZnSuperoxideDismutase_1hl5C_human', 'TEAD1_3kysC_human'];
124675
- ic.refpdbHash['1ASF1A_2iijA_human'] = ['ASF1A_2iijA_human', 'RBPJ_6py8C_human_Unk-n2', 'TP47_1o75A_bacteria'];
124720
+ ic.refpdbHash['1ICOS_6x4gA_human_V'] = ['ICOS_6x4gA_human_V'];
124721
+ //ic.refpdbHash['1CoAtomerGamma1_1r4xA_human'] = ['CoAtomerGamma1_1r4xA_human', 'TP34_2o6cA_bacteria'];
124722
+ //ic.refpdbHash['1C3_2qkiD_human_n1'] = ['C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1'];
124723
+ //ic.refpdbHash['1CuZnSuperoxideDismutase_1hl5C_human'] = ['TEAD1_3kysC_human'];
124724
+ //ic.refpdbHash['1ASF1A_2iijA_human'] = ['ASF1A_2iijA_human', 'TP47_1o75A_bacteria'];
124676
124725
  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'];
124677
124726
  ic.refpdbHash['1CD2_1hnfA_human_C2-n2'] = ['CD2_1hnfA_human_C2-n2', 'Siglec3_5j0bB_human_C1-n2'];
124678
- ic.refpdbHash['1NaCaExchanger_2fwuA_dog_n2'] = ['NaCaExchanger_2fwuA_dog_n2', 'ORF7a_1xakA_virus', 'ECadherin_4zt1A_human_n2'];
124679
- ic.refpdbHash['1NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
124727
+ ic.refpdbHash['1ECadherin_4zt1A_human_n2'] = ['ECadherin_4zt1A_human_n2'];
124728
+ //ic.refpdbHash['1NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
124680
124729
  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'];
124681
124730
  ic.refpdbHash['1PDL1_4z18B_human_V-n1'] = ['PDL1_4z18B_human_V-n1', 'CD2_1hnfA_human_V-n1', 'LAG3_7tzgD_human_V-n1'];
124682
124731
  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'];
124683
124732
  ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human', 'CD3d_6jxrd_human_C1'];
124684
- ic.refpdbHash['1CD3g_6jxrg_human_C2'] = ['CD3g_6jxrg_human_C2', 'TCRa_6jxrm_human_C1-n2', 'IsdA_2iteA_bacteria'];
124685
- ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'MPT63_1lmiA_bacteria', 'CD3e_6jxrf_human_C1'];
124733
+ ic.refpdbHash['1CD3g_6jxrg_human_C2'] = ['CD3g_6jxrg_human_C2', 'TCRa_6jxrm_human_C1-n2'];
124734
+ ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'CD3e_6jxrf_human_C1'];
124686
124735
  ic.refpdbHash['1CD19_6al5A_human-n1'] = ['CD19_6al5A_human-n1'];
124687
124736
 
124688
- 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'];
124737
+ 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'];
124689
124738
 
124690
124739
  // use known ref structure
124691
124740
  ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
@@ -124694,36 +124743,36 @@ class Dssp {
124694
124743
  ic.refpdbHash['6JXR_m'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
124695
124744
  ic.refpdbHash['1HNF_A'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
124696
124745
  ic.refpdbHash['7TZG_D'] = ['LAG3_7tzgD_human_V-n1', 'LAG3_7tzgD_human_C1-n2'];
124697
- ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
124746
+ //ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1'];
124698
124747
  ic.refpdbHash['1BQU_B'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
124699
124748
 
124700
- ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
124749
+ //ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
124701
124750
  ic.refpdbHash['6OIL_A'] = ['VISTA_6oilA_human_V'];
124702
- ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
124703
- ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
124704
- ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
124705
- ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
124751
+ //ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
124752
+ //ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
124753
+ //ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
124754
+ //ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
124706
124755
  ic.refpdbHash['1NBQ_A'] = ['JAM1_1nbqA_human_Iset-n2'];
124707
- ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
124756
+ //ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
124708
124757
  ic.refpdbHash['7PHR_H'] = ['MHCIa_7phrH_human_C1'];
124709
- ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
124758
+ //ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
124710
124759
  ic.refpdbHash['4Z18_B'] = ['PDL1_4z18B_human_V-n1'];
124711
124760
  ic.refpdbHash['1T6V_N'] = ['VNAR_1t6vN_shark_V'];
124712
- ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
124713
- ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
124761
+ //ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
124762
+ //ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
124714
124763
  ic.refpdbHash['7PHR_L'] = ['B2Microglobulin_7phrL_human_C1'];
124715
124764
  ic.refpdbHash['2AW2_A'] = ['BTLA_2aw2A_human_Iset'];
124716
- ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
124765
+ //ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
124717
124766
  ic.refpdbHash['1WF5_A'] = ['Sidekick2_1wf5A_human_FN3-n7'];
124718
124767
  ic.refpdbHash['5J0B_B'] = ['Siglec3_5j0bB_human_C1-n2'];
124719
124768
  ic.refpdbHash['1IFR_A'] = ['LaminAC_1ifrA_human'];
124720
124769
  ic.refpdbHash['Q7Z7D3_A'] = ['VTCN1_Q7Z7D3_human_C1-n2'];
124721
124770
  ic.refpdbHash['4ZQK_B'] = ['PD1_4zqkB_human_V'];
124722
124771
  ic.refpdbHash['2DM3_A'] = ['Palladin_2dm3A_human_Iset-n1'];
124723
- ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
124724
- ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
124772
+ //ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
124773
+ //ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
124725
124774
  ic.refpdbHash['4ZT1_A'] = ['ECadherin_4zt1A_human_n2'];
124726
- ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
124775
+ //ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
124727
124776
  ic.refpdbHash['1CD8_A'] = ['CD8a_1cd8A_human_V'];
124728
124777
  ic.refpdbHash['3S97_C'] = ['Contactin1_3s97C_human_Iset-n2'];
124729
124778
  ic.refpdbHash['1AXI_B'] = ['GHR_1axiB_human_C1-n1'];
@@ -124731,7 +124780,7 @@ class Dssp {
124731
124780
  ic.refpdbHash['2EE2_A'] = ['Contactin1_2ee2A_human_FN3-n9'];
124732
124781
  ic.refpdbHash['4UOW_M'] = ['Titin_4uowM_human_Iset-n152'];
124733
124782
  ic.refpdbHash['6A15_A'] = ['CD19_6al5A_human-n1'];
124734
- ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
124783
+ //ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
124735
124784
  ic.refpdbHash['1YJD_C'] = ['CD28_1yjdC_human_V'];
124736
124785
  ic.refpdbHash['6JXR_d'] = ['CD3d_6jxrd_human_C1'];
124737
124786
  ic.refpdbHash['6JXR_f'] = ['CD3e_6jxrf_human_C1'];
@@ -124740,11 +124789,11 @@ class Dssp {
124740
124789
  // assign Ig types
124741
124790
  ic.ref2igtype = {};
124742
124791
 
124743
- ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
124792
+ //ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
124744
124793
  ic.ref2igtype['B2Microglobulin_7phrL_human_C1'] = 'IgC1';
124745
- ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
124794
+ //ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
124746
124795
  ic.ref2igtype['BTLA_2aw2A_human_Iset'] = 'IgI';
124747
- ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
124796
+ //ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
124748
124797
  ic.ref2igtype['CD19_6al5A_human-n1'] = 'CD19';
124749
124798
  ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
124750
124799
  ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
@@ -124753,12 +124802,12 @@ class Dssp {
124753
124802
  ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgC1';
124754
124803
  ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgC2';
124755
124804
  ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
124756
- ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
124805
+ //ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
124757
124806
  ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
124758
124807
  ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = 'IgI';
124759
- ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
124808
+ //ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
124760
124809
  ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'Cadherin';
124761
- ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
124810
+ //ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
124762
124811
  ic.ref2igtype['FAB-HEAVY_5esv_C1-n2'] = 'IgC1';
124763
124812
  ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
124764
124813
  ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
@@ -124769,28 +124818,28 @@ class Dssp {
124769
124818
  ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
124770
124819
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = 'IgFN3';
124771
124820
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
124772
- ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
124821
+ //ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
124773
124822
  ic.ref2igtype['JAM1_1nbqA_human_Iset-n2'] = 'IgI';
124774
124823
  ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = 'IgC1';
124775
124824
  ic.ref2igtype['LAG3_7tzgD_human_V-n1'] = 'IgV';
124776
124825
  ic.ref2igtype['LaminAC_1ifrA_human'] = 'Lamin';
124777
124826
  ic.ref2igtype['MHCIa_7phrH_human_C1'] = 'IgC1';
124778
- ic.ref2igtype['MPT63_1lmiA_bacteria'] = 'IgFN3-like';
124779
- ic.ref2igtype['NaCaExchanger_2fwuA_dog_n2'] = 'IgFN3-like';
124780
- ic.ref2igtype['NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = 'IgE';
124781
- ic.ref2igtype['ORF7a_1xakA_virus'] = 'ORF';
124827
+ //ic.ref2igtype['MPT63_1lmiA_bacteria'] = 'IgFN3-like';
124828
+ //ic.ref2igtype['NaCaExchanger_2fwuA_dog_n2'] = 'IgFN3-like';
124829
+ //ic.ref2igtype['NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = 'IgE';
124830
+ //ic.ref2igtype['ORF7a_1xakA_virus'] = 'ORF';
124782
124831
  ic.ref2igtype['PD1_4zqkB_human_V'] = 'IgV';
124783
124832
  ic.ref2igtype['PDL1_4z18B_human_V-n1'] = 'IgV';
124784
124833
  ic.ref2igtype['Palladin_2dm3A_human_Iset-n1'] = 'IgI';
124785
- ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
124834
+ //ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
124786
124835
  //ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
124787
124836
  ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
124788
124837
  ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = 'IgC1';
124789
124838
  ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
124790
124839
  ic.ref2igtype['TCRa_6jxrm_human_V-n1'] = 'IgV';
124791
- ic.ref2igtype['TEAD1_3kysC_human'] = 'IgFN3-like';
124792
- ic.ref2igtype['TP34_2o6cA_bacteria'] = 'IgE';
124793
- ic.ref2igtype['TP47_1o75A_bacteria'] = 'IgE';
124840
+ //ic.ref2igtype['TEAD1_3kysC_human'] = 'IgFN3-like';
124841
+ //ic.ref2igtype['TP34_2o6cA_bacteria'] = 'IgE';
124842
+ //ic.ref2igtype['TP47_1o75A_bacteria'] = 'IgE';
124794
124843
  ic.ref2igtype['Titin_4uowM_human_Iset-n152'] = 'IgI';
124795
124844
  ic.ref2igtype['VISTA_6oilA_human_V'] = 'IgV';
124796
124845
  ic.ref2igtype['VNAR_1t6vN_shark_V'] = 'IgV';
@@ -126341,6 +126390,7 @@ class Dssp {
126341
126390
  }
126342
126391
  else {
126343
126392
  let bBefore = false, bInRange= false, bAfter = false;
126393
+ /*
126344
126394
  // 100, 100A
126345
126395
  if(parseInt(currResi) == parseInt(strandArray[strandCnt].startResi) && currResi != strandArray[strandCnt].startResi) {
126346
126396
  bBefore = currResi < strandArray[strandCnt].startResi;
@@ -126356,6 +126406,14 @@ class Dssp {
126356
126406
  else {
126357
126407
  bAfter = parseInt(currResi) > parseInt(strandArray[strandCnt].endResi);
126358
126408
  }
126409
+ */
126410
+
126411
+ let currResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, currResi);
126412
+ let startResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].startResi);
126413
+ let endResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].endResi);
126414
+
126415
+ bBefore = parseInt(currResiNcbi) < parseInt(startResiNcbi);
126416
+ bAfter = parseInt(currResiNcbi) > parseInt(endResiNcbi);
126359
126417
 
126360
126418
  bInRange = (!bBefore && !bAfter) ? true : false;
126361
126419
 
@@ -132174,8 +132232,9 @@ class ShareLink {
132174
132232
  }
132175
132233
 
132176
132234
  let paraHash = {};
132177
- for(let key in ic.cfg) {
132178
- let value = ic.cfg[key];
132235
+ /*
132236
+ for(let key in me.cfg) {
132237
+ let value = me.cfg[key];
132179
132238
  //if(key === 'inpara' || ic.key === 'command' || value === undefined) continue;
132180
132239
  if(key === 'inpara' || key === 'command' || key === 'usepdbnum'
132181
132240
  || key === 'date' || key === 'v' || value === undefined) continue;
@@ -132225,7 +132284,7 @@ class ShareLink {
132225
132284
  paraHash[key] = value;
132226
132285
  }
132227
132286
  }
132228
-
132287
+ */
132229
132288
  if(ic.bAfMem) {
132230
132289
  paraHash['afmem'] = 'on';
132231
132290
  }
@@ -132247,6 +132306,12 @@ class ShareLink {
132247
132306
  if(key_value.length == 2) paraHash[key_value[0]] = key_value[1];
132248
132307
  }
132249
132308
 
132309
+ // BLAST RID is usually added at the end of the URL. It should be included.
132310
+ if(me.cfg.rid && !paraHash['RID']) {
132311
+ url += 'RID=' + me.cfg.rid + '&';
132312
+ }
132313
+
132314
+ // sometimes idname is not part of the URL
132250
132315
  if(me.cfg.idname && !paraHash[me.cfg.idname]) { // somehow it is not included
132251
132316
  url += me.cfg.idname + '=' + me.cfg.idvalue + '&';
132252
132317
  }
@@ -135360,7 +135425,7 @@ class iCn3DUI {
135360
135425
  //even when multiple iCn3D viewers are shown together.
135361
135426
  this.pre = this.cfg.divid + "_";
135362
135427
 
135363
- this.REVISION = '3.47.1';
135428
+ this.REVISION = '3.48.0';
135364
135429
 
135365
135430
  // In nodejs, iCn3D defines "window = {navigator: {}}", and added window = {navigator: {}, "__THREE__":"177"}
135366
135431
  this.bNode = (Object.keys(window).length < 3) ? true : false;
@@ -135562,14 +135627,8 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
135562
135627
  let domainidArray = me.cfg.matchedchains.split(',');
135563
135628
  let chainidArray = [];
135564
135629
  for(let i = 0, il = domainidArray.length; i < il; ++i) {
135565
- let pos = domainidArray[i].lastIndexOf('_');
135566
- let lastId = domainidArray[i].substr(pos + 1);
135567
- if(!isNaN(lastId)) { // lastId is domain id
135568
- chainidArray.push(domainidArray[i].substr(0, pos));
135569
- }
135570
- else {
135571
- chainidArray.push(domainidArray[i]);
135572
- }
135630
+ let idArray = domainidArray[i].split('_');
135631
+ chainidArray.push(idArray[0] + '_' + idArray[1]);
135573
135632
  }
135574
135633
 
135575
135634
  // get the matched structures, do not include the template
@@ -135798,6 +135857,9 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
135798
135857
  if(me.cfg.align.indexOf('185055,') != -1) {
135799
135858
  me.cfg.align = me.cfg.align.replace('185055,', '199731,'); //the mmdbid of PDB 6M17 was changed from 185055 to 199731
135800
135859
  }
135860
+ else if(me.cfg.align == '54567,1,12161,1,2,1') {
135861
+ me.cfg.align = '3HHR,1BQU'; // somehow the VAST+ data for this published alignment were not there anymore
135862
+ }
135801
135863
 
135802
135864
  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]
135803
135865