icn3d 3.47.3 → 3.48.1

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
@@ -80411,7 +80411,7 @@ class Strand {
80411
80411
  let bShowArray = [];
80412
80412
  let calphaIdArray = []; // used to store one of the final positions drawn in 3D
80413
80413
  let colors = [];
80414
- let currentChain, currentCA = null, currentO = null, currentColor = null, prevCoorCA = null, prevCoorO = null, prevColor = null;
80414
+ let currentChain, currentStyle, currentCA = null, currentO = null, currentColor = null, prevCoorCA = null, prevCoorO = null, prevColor = null;
80415
80415
  let prevCO = null, ss = null, ssend = false, atomid = null, prevAtomid = null, prevResi = null, calphaid = null, prevCalphaid = null;
80416
80416
  let strandWidth, bSheetSegment = false, bHelixSegment = false;
80417
80417
  let atom, tubeAtoms = {};
@@ -80464,15 +80464,15 @@ class Strand {
80464
80464
  }
80465
80465
  // smoothen each coil, helix and sheet separately. The joint residue has to be included both in the previous and next segment
80466
80466
  let bSameChain = true;
80467
- // if (currentChain !== atom.chain || currentResi + 1 !== atom.resi) {
80467
+
80468
80468
  if (currentChain !== atom.chain) {
80469
80469
  bSameChain = false;
80470
80470
  }
80471
80471
 
80472
- if(atom.ssend && atom.ss === 'sheet') {
80472
+ if((atom.ssend || currentStyle != atom.style)&& atom.ss === 'sheet') {
80473
80473
  bSheetSegment = true;
80474
80474
  }
80475
- else if(atom.ssend && atom.ss === 'helix') {
80475
+ else if((atom.ssend || currentStyle != atom.style) && atom.ss === 'helix') {
80476
80476
  bHelixSegment = true;
80477
80477
  }
80478
80478
 
@@ -80565,7 +80565,7 @@ class Strand {
80565
80565
  // bHelixSegment = true;
80566
80566
  // }
80567
80567
 
80568
- if ((atom.ssbegin || atom.ssend || (drawnResidueCount === totalResidueCount - 1) || bBrokenSs) && pnts[0].length > 0 && bSameChain) {
80568
+ if ((atom.ssbegin || atom.ssend || (drawnResidueCount === totalResidueCount - 1) || bBrokenSs || currentStyle != atom.style) && pnts[0].length > 0 && bSameChain) {
80569
80569
  let atomName = 'CA';
80570
80570
 
80571
80571
  let prevone = [], nexttwo = [];
@@ -80708,9 +80708,7 @@ class Strand {
80708
80708
  } // end if (atom.ssbegin || atom.ssend)
80709
80709
 
80710
80710
  // end of a chain
80711
- // if ((currentChain !== atom.chain || currentResi + 1 !== atom.resi) && pnts[0].length > 0) {
80712
- if ((currentChain !== atom.chain) && pnts[0].length > 0) {
80713
-
80711
+ if ((currentChain !== atom.chain || currentStyle != atom.style) && pnts[0].length > 0) {
80714
80712
  let atomName = 'CA';
80715
80713
 
80716
80714
  let prevone = [], nexttwo = [];
@@ -80762,7 +80760,7 @@ class Strand {
80762
80760
  }
80763
80761
 
80764
80762
  currentChain = atom.chain;
80765
- atom.resi;
80763
+ currentStyle = atom.style;
80766
80764
  ss = atom.ss;
80767
80765
  ssend = atom.ssend;
80768
80766
  prevAtomid = atom.serial;
@@ -84874,7 +84872,7 @@ class ApplyMissingRes {
84874
84872
  line.serial1 = ic.missingResResid2serial[resid0 + ',' + resid1];
84875
84873
  line.serial2 = ic.missingResResid2serial[resid1 + ',' + resid0];
84876
84874
 
84877
- line.color = "#" + ic.atoms[line.serial1].color.getHexString();
84875
+ line.color = (ic.atoms[line.serial1]) ? "#" + ic.atoms[line.serial1].color.getHexString() : undefined;
84878
84876
 
84879
84877
  line.radius = ic.coilWidth;
84880
84878
 
@@ -89729,6 +89727,9 @@ class SetStyle {
89729
89727
  setBackground(color) {var ic = this.icn3d, me = ic.icn3dui;
89730
89728
 
89731
89729
  ic.setOptionCls.setOption('background', color);
89730
+ let exdays = 3650;
89731
+ me.htmlCls.setHtmlCls.setCookie('bkgdcolor', color, exdays);
89732
+
89732
89733
  me.htmlCls.clickMenuCls.setLogCmd('set background ' + color, true);
89733
89734
  //let titleColor =(color == 'black' || color == 'transparent') ? me.htmlCls.GREYD : 'black';
89734
89735
  let titleColor = (color == 'black') ? me.htmlCls.GREYD : 'black';
@@ -100331,7 +100332,7 @@ class HlUpdate {
100331
100332
  if(ic.mmdbid_q !== undefined && ic.mmdbid_q === ic.mmdbid_t) {
100332
100333
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[0].toUpperCase(), 1, true);
100333
100334
  }
100334
- else {
100335
+ else if(ic.mmdbidArray.length > 1) {
100335
100336
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[1].toUpperCase(), 1, true);
100336
100337
  }
100337
100338
  html2ddgm += ic.diagram2dCls.set2DdgmNote(true);
@@ -104613,16 +104614,31 @@ class ChainalignParser {
104613
104614
 
104614
104615
  // dynamically align pairs in all chainids
104615
104616
  // 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]];
104617
+ let atomSet_t;
104618
+ if(me.cfg.resrange) {
104619
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], chainidArray[0], true);
104620
+ atomSet_t = result.hAtoms;
104621
+ }
104622
+ else {
104623
+ atomSet_t = ic.chains[chainidArray[0]];
104624
+ }
104625
+
104617
104626
  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]];
104627
+ let atomSet_q;
104628
+ if(me.cfg.resrange) {
104629
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], chainidArray[index], true);
104630
+ atomSet_q = result.hAtoms;
104631
+ }
104632
+ else {
104633
+ atomSet_q = ic.chains[chainidArray[index]];
104634
+ }
104619
104635
  // end of new version to be done for VASTsrv ==============
104620
104636
 
104621
104637
  let alignAjax;
104622
104638
  if(me.cfg.aligntool != 'tmalign') {
104623
104639
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
104624
104640
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
104625
-
104641
+
104626
104642
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
104627
104643
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
104628
104644
  }
@@ -104658,6 +104674,7 @@ class ChainalignParser {
104658
104674
  //let bTargetTransformed = (ic.qt_start_end[0]) ? true : false;
104659
104675
 
104660
104676
  // modify the previous trans and rotation matrix
104677
+ let bAligned = false;
104661
104678
  for(let i = 0, il = dataArray.length; i < il; ++i) {
104662
104679
  // let align = (me.bNode) ? dataArray[i] : dataArray[i].value;//[0];
104663
104680
  let align = dataArray[i].value;//[0];
@@ -104673,7 +104690,7 @@ class ChainalignParser {
104673
104690
 
104674
104691
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
104675
104692
 
104676
- this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain);
104693
+ bAligned =await this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, undefined);
104677
104694
  }
104678
104695
 
104679
104696
  // do not transform the target
@@ -104681,28 +104698,34 @@ class ChainalignParser {
104681
104698
  // this.transformStructure(mmdbid_t, indexArray[0], 'target');
104682
104699
  //}
104683
104700
 
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
- }
104701
+ if(bAligned) {
104702
+ // transform the rest
104703
+ for(let i = 0, il = dataArray.length; i < il; ++i) {
104704
+ let mmdbid_q = struArray[i];
104705
+ let index = indexArray[i];
104706
+ this.transformStructure(mmdbid_q, index, 'query');
104707
+ }
104690
104708
 
104691
- let hAtomsAll = {};
104709
+ let hAtomsAll = {};
104692
104710
 
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
- }
104711
+ if(ic.bFullUi && ic.q_rotation !== undefined && !me.cfg.resnum && !me.cfg.resdef) {
104712
+ // set multiple sequence alignment from ic.qt_start_end
104713
+ hAtomsAll = this.setMsa(chainidArray);
104714
+ }
104697
104715
 
104698
- // highlight all aligned atoms
104699
- //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
104700
- ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
104716
+ // highlight all aligned atoms
104717
+ //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
104718
+ ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
104701
104719
 
104702
- ic.transformCls.zoominSelection();
104720
+ ic.transformCls.zoominSelection();
104703
104721
 
104704
- // do the rest
104705
- await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
104722
+ // do the rest
104723
+ await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
104724
+ }
104725
+ else {
104726
+ me.cfg.aligntool = 'tmalign';
104727
+ await ic.chainalignParserCls.downloadChainalignment(me.cfg.chainalign);
104728
+ }
104706
104729
  }
104707
104730
 
104708
104731
  setMsa(chainidArray, bVastplus, bRealign) { let ic = this.icn3d, me = ic.icn3dui;
@@ -104773,7 +104796,7 @@ class ChainalignParser {
104773
104796
 
104774
104797
  let bNoAlert = true;
104775
104798
 
104776
- let bAligned = this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
104799
+ let bAligned = await this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
104777
104800
 
104778
104801
  if(bAligned) {
104779
104802
  bFoundAlignment = true;
@@ -105265,7 +105288,7 @@ class ChainalignParser {
105265
105288
 
105266
105289
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
105267
105290
 
105268
- this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain);
105291
+ await this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain, undefined);
105269
105292
  }
105270
105293
  }
105271
105294
  }
@@ -105275,13 +105298,13 @@ class ChainalignParser {
105275
105298
  await this.loadOpmDataForChainalign(targetData, queryDataArray, chainidArray, ic.mmdbidArray);
105276
105299
  }
105277
105300
 
105278
- processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
105301
+ async processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
105279
105302
  let bAligned = false;
105280
105303
 
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 + ".");
105304
+ if((align === "error" || align === undefined || align.length == 0) && !bNoAlert) {
105305
+ // let serverName = (me.cfg.aligntool == 'tmalign') ? 'TM-align' : 'VAST';
105306
+
105307
+ // if(ic.bRender) var aaa = 1; //alert("These chains can not be aligned by " + serverName + ".");
105285
105308
  return bAligned;
105286
105309
  }
105287
105310
 
@@ -105430,7 +105453,6 @@ class ChainalignParser {
105430
105453
  let structArrayTmp = idlist.split(',');
105431
105454
 
105432
105455
  let structArray = [];
105433
-
105434
105456
  // only when bNoDuplicate is undefined/false, it's allowed to load multiple copies of the same structure
105435
105457
  if(!bNoDuplicate) {
105436
105458
  structArray = this.addPostfixForStructureids(structArrayTmp);
@@ -105443,7 +105465,7 @@ class ChainalignParser {
105443
105465
  if(!ic.structures.hasOwnProperty(id)) structArray.push(structArrayTmp[i]);
105444
105466
  }
105445
105467
  }
105446
-
105468
+
105447
105469
  if(structArray.length == 0) return;
105448
105470
 
105449
105471
  ic.structArray = ic.structArray.concat(structArray);
@@ -105543,6 +105565,8 @@ class ChainalignParser {
105543
105565
  let bNoSeqalign = true;
105544
105566
  let pdbid = structArray[i];
105545
105567
 
105568
+ if(queryDataArray[i].pdbId) queryDataArray[i].pdbId = pdbid;
105569
+
105546
105570
  //hAtomsTmp contains all atoms
105547
105571
  await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign, pdbid);
105548
105572
  }
@@ -107119,7 +107143,7 @@ class MmdbParser {
107119
107143
  return;
107120
107144
  }
107121
107145
 
107122
- if(Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
107146
+ if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
107123
107147
  // use mmtfid
107124
107148
  let pdbid = data.pdbId;
107125
107149
  await ic.bcifParserCls.downloadBcif(pdbid);
@@ -107129,6 +107153,7 @@ class MmdbParser {
107129
107153
 
107130
107154
  let bCalphaOnly = me.utilsCls.isCalphaPhosOnly(data.atoms); //, 'CA');
107131
107155
 
107156
+ //if(!data.pdbId) data.pdbId = mmdbid;
107132
107157
  if(bCalphaOnly || data.atomCount <= ic.maxatomcnt) {
107133
107158
  await this.parseMmdbData(data);
107134
107159
  }
@@ -107290,8 +107315,18 @@ class MmdbParser {
107290
107315
  async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign, pdbidIn) { let ic = this.icn3d, me = ic.icn3dui;
107291
107316
  let hAtoms;
107292
107317
  let pdbid = (data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
107318
+ if(!pdbid && chainid) {
107319
+ pdbid = chainid.substr(0, chainid.lastIndexOf('_'));
107320
+ }
107321
+
107293
107322
  if(pdbidIn) pdbid = pdbidIn;
107294
107323
 
107324
+ // if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
107325
+ // ic.bRender = false;
107326
+ // await ic.bcifParserCls.downloadBcif(pdbid);
107327
+ // return;
107328
+ // }
107329
+
107295
107330
  this.parseMmdbDataPart1(data, type);
107296
107331
 
107297
107332
  if(type === undefined) { // default mmdbid input
@@ -108958,7 +108993,7 @@ class PdbParser {
108958
108993
  }
108959
108994
 
108960
108995
  // if(!ic.bSecondaryStructure && Object.keys(ic.proteins).length > 0) {
108961
- if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108996
+ if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108962
108997
  await this.applyCommandDssp(bAppend);
108963
108998
  }
108964
108999
  else {
@@ -110933,8 +110968,7 @@ class RealignParser {
110933
110968
  // If rmsd from vastsrv is too large, realign the chains
110934
110969
  //if(me.cfg.chainalign && !me.cfg.usepdbnum && me.cfg.resdef && rmsd > 5) {
110935
110970
  // 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.");
110971
+ if(!me.cfg.usepdbnum && (me.cfg.resdef || me.cfg.resrange) && rmsd > 5 && me.cfg.chainalign) {
110938
110972
  //let nameArray = me.cfg.chainalign.split(',');
110939
110973
  let nameArray = Object.keys(chainidHash);
110940
110974
  if(nameArray.length > 0) {
@@ -111186,15 +111220,30 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
111186
111220
  if(bVastsearch && me.cfg.resrange) {
111187
111221
  let resRangeArray = decodeURIComponent(me.cfg.resrange).split(' | ');
111188
111222
 
111189
- let atomSet_t = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true).hAtoms;
111223
+ let atomSet_t;
111224
+ if(me.cfg.resrange) {
111225
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true);
111226
+ atomSet_t = result.hAtoms;
111227
+ }
111228
+ else {
111229
+ atomSet_t = ic.chains[ic.chainidArray[0]];
111230
+ }
111231
+
111190
111232
  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;
111233
+ let atomSet_q;
111234
+ if(me.cfg.resrange) {
111235
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], ic.chainidArray[index], true);
111236
+ atomSet_q = result.hAtoms;
111237
+ }
111238
+ else {
111239
+ atomSet_q = ic.chains[ic.chainidArray[index]];
111240
+ }
111192
111241
 
111193
111242
  let alignAjax;
111194
111243
  if(me.cfg.aligntool != 'tmalign') {
111195
111244
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
111196
111245
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
111197
-
111246
+
111198
111247
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
111199
111248
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
111200
111249
  }
@@ -111255,9 +111304,7 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
111255
111304
  let alignAjax;
111256
111305
  if(me.cfg.aligntool != 'tmalign') {
111257
111306
  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);
111307
+
111261
111308
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
111262
111309
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
111263
111310
  }
@@ -111327,7 +111374,7 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
111327
111374
 
111328
111375
  if(me.cfg.aligntool != 'tmalign') {
111329
111376
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(chainid2domain[chainid2]);
111330
-
111377
+
111331
111378
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
111332
111379
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
111333
111380
  }
@@ -111587,6 +111634,8 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
111587
111634
  let hAtoms = {};
111588
111635
 
111589
111636
  for(let j = 0, jl = resiArray.length; j < jl; ++j) {
111637
+ if(!resiArray[j]) continue;
111638
+
111590
111639
  if(resiArray[j].indexOf('-') != -1) {
111591
111640
  let startEnd = resiArray[j].split('-');
111592
111641
  for(let k = parseInt(startEnd[0]); k <= parseInt(startEnd[1]); ++k) {
@@ -116757,7 +116806,8 @@ class LoadPDB {
116757
116806
  }
116758
116807
 
116759
116808
  isSecondary(resid, residArray, bNMR, bNonFull) { let ic = this.icn3d; ic.icn3dui;
116760
- if(bNonFull) return false;
116809
+ // still need to get the secondary info
116810
+ //if(bNonFull) return false;
116761
116811
 
116762
116812
  if(!bNMR) {
116763
116813
  return $.inArray(resid, residArray) != -1;
@@ -119127,16 +119177,18 @@ class ApplyCommand {
119127
119177
  }
119128
119178
  else if(command.indexOf('set background') == 0) {
119129
119179
  let value = command.substr(command.lastIndexOf(' ') + 1);
119130
- ic.opts['background'] = value;
119180
+ ic.setStyleCls.setBackground(value);
119131
119181
 
119132
- if(value == 'black') {
119133
- $("#" + ic.pre + "title").css("color", me.htmlCls.GREYD);
119134
- $("#" + ic.pre + "titlelink").css("color", me.htmlCls.GREYD);
119135
- }
119136
- else {
119137
- $("#" + ic.pre + "title").css("color", "black");
119138
- $("#" + ic.pre + "titlelink").css("color", "black");
119139
- }
119182
+ // ic.opts['background'] = value;
119183
+
119184
+ // if(value == 'black') {
119185
+ // $("#" + ic.pre + "title").css("color", me.htmlCls.GREYD);
119186
+ // $("#" + ic.pre + "titlelink").css("color", me.htmlCls.GREYD);
119187
+ // }
119188
+ // else {
119189
+ // $("#" + ic.pre + "title").css("color", "black");
119190
+ // $("#" + ic.pre + "titlelink").css("color", "black");
119191
+ // }
119140
119192
  }
119141
119193
  else if(command.indexOf('set label color') == 0) {
119142
119194
  ic.labelcolor = command.substr(command.lastIndexOf(' ') + 1);
@@ -124663,29 +124715,29 @@ class Dssp {
124663
124715
 
124664
124716
  setRefPdbs() { let ic = this.icn3d; ic.icn3dui;
124665
124717
  // 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'];
124718
+ 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
124719
 
124668
124720
  // round 2
124669
124721
  ic.refpdbHash = {};
124670
124722
  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'];
124723
+ ic.refpdbHash['1ICOS_6x4gA_human_V'] = ['ICOS_6x4gA_human_V'];
124724
+ //ic.refpdbHash['1CoAtomerGamma1_1r4xA_human'] = ['CoAtomerGamma1_1r4xA_human', 'TP34_2o6cA_bacteria'];
124725
+ //ic.refpdbHash['1C3_2qkiD_human_n1'] = ['C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1'];
124726
+ //ic.refpdbHash['1CuZnSuperoxideDismutase_1hl5C_human'] = ['TEAD1_3kysC_human'];
124727
+ //ic.refpdbHash['1ASF1A_2iijA_human'] = ['ASF1A_2iijA_human', 'TP47_1o75A_bacteria'];
124676
124728
  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
124729
  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'];
124730
+ ic.refpdbHash['1ECadherin_4zt1A_human_n2'] = ['ECadherin_4zt1A_human_n2'];
124731
+ //ic.refpdbHash['1NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
124680
124732
  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
124733
  ic.refpdbHash['1PDL1_4z18B_human_V-n1'] = ['PDL1_4z18B_human_V-n1', 'CD2_1hnfA_human_V-n1', 'LAG3_7tzgD_human_V-n1'];
124682
124734
  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
124735
  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'];
124736
+ ic.refpdbHash['1CD3g_6jxrg_human_C2'] = ['CD3g_6jxrg_human_C2', 'TCRa_6jxrm_human_C1-n2'];
124737
+ ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'CD3e_6jxrf_human_C1'];
124686
124738
  ic.refpdbHash['1CD19_6al5A_human-n1'] = ['CD19_6al5A_human-n1'];
124687
124739
 
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'];
124740
+ 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
124741
 
124690
124742
  // use known ref structure
124691
124743
  ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
@@ -124694,36 +124746,36 @@ class Dssp {
124694
124746
  ic.refpdbHash['6JXR_m'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
124695
124747
  ic.refpdbHash['1HNF_A'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
124696
124748
  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'];
124749
+ //ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1'];
124698
124750
  ic.refpdbHash['1BQU_B'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
124699
124751
 
124700
- ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
124752
+ //ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
124701
124753
  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'];
124754
+ //ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
124755
+ //ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
124756
+ //ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
124757
+ //ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
124706
124758
  ic.refpdbHash['1NBQ_A'] = ['JAM1_1nbqA_human_Iset-n2'];
124707
- ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
124759
+ //ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
124708
124760
  ic.refpdbHash['7PHR_H'] = ['MHCIa_7phrH_human_C1'];
124709
- ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
124761
+ //ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
124710
124762
  ic.refpdbHash['4Z18_B'] = ['PDL1_4z18B_human_V-n1'];
124711
124763
  ic.refpdbHash['1T6V_N'] = ['VNAR_1t6vN_shark_V'];
124712
- ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
124713
- ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
124764
+ //ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
124765
+ //ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
124714
124766
  ic.refpdbHash['7PHR_L'] = ['B2Microglobulin_7phrL_human_C1'];
124715
124767
  ic.refpdbHash['2AW2_A'] = ['BTLA_2aw2A_human_Iset'];
124716
- ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
124768
+ //ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
124717
124769
  ic.refpdbHash['1WF5_A'] = ['Sidekick2_1wf5A_human_FN3-n7'];
124718
124770
  ic.refpdbHash['5J0B_B'] = ['Siglec3_5j0bB_human_C1-n2'];
124719
124771
  ic.refpdbHash['1IFR_A'] = ['LaminAC_1ifrA_human'];
124720
124772
  ic.refpdbHash['Q7Z7D3_A'] = ['VTCN1_Q7Z7D3_human_C1-n2'];
124721
124773
  ic.refpdbHash['4ZQK_B'] = ['PD1_4zqkB_human_V'];
124722
124774
  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'];
124775
+ //ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
124776
+ //ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
124725
124777
  ic.refpdbHash['4ZT1_A'] = ['ECadherin_4zt1A_human_n2'];
124726
- ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
124778
+ //ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
124727
124779
  ic.refpdbHash['1CD8_A'] = ['CD8a_1cd8A_human_V'];
124728
124780
  ic.refpdbHash['3S97_C'] = ['Contactin1_3s97C_human_Iset-n2'];
124729
124781
  ic.refpdbHash['1AXI_B'] = ['GHR_1axiB_human_C1-n1'];
@@ -124731,7 +124783,7 @@ class Dssp {
124731
124783
  ic.refpdbHash['2EE2_A'] = ['Contactin1_2ee2A_human_FN3-n9'];
124732
124784
  ic.refpdbHash['4UOW_M'] = ['Titin_4uowM_human_Iset-n152'];
124733
124785
  ic.refpdbHash['6A15_A'] = ['CD19_6al5A_human-n1'];
124734
- ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
124786
+ //ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
124735
124787
  ic.refpdbHash['1YJD_C'] = ['CD28_1yjdC_human_V'];
124736
124788
  ic.refpdbHash['6JXR_d'] = ['CD3d_6jxrd_human_C1'];
124737
124789
  ic.refpdbHash['6JXR_f'] = ['CD3e_6jxrf_human_C1'];
@@ -124740,11 +124792,11 @@ class Dssp {
124740
124792
  // assign Ig types
124741
124793
  ic.ref2igtype = {};
124742
124794
 
124743
- ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
124795
+ //ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
124744
124796
  ic.ref2igtype['B2Microglobulin_7phrL_human_C1'] = 'IgC1';
124745
- ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
124797
+ //ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
124746
124798
  ic.ref2igtype['BTLA_2aw2A_human_Iset'] = 'IgI';
124747
- ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
124799
+ //ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
124748
124800
  ic.ref2igtype['CD19_6al5A_human-n1'] = 'CD19';
124749
124801
  ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
124750
124802
  ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
@@ -124753,12 +124805,12 @@ class Dssp {
124753
124805
  ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgC1';
124754
124806
  ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgC2';
124755
124807
  ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
124756
- ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
124808
+ //ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
124757
124809
  ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
124758
124810
  ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = 'IgI';
124759
- ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
124811
+ //ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
124760
124812
  ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'Cadherin';
124761
- ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
124813
+ //ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
124762
124814
  ic.ref2igtype['FAB-HEAVY_5esv_C1-n2'] = 'IgC1';
124763
124815
  ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
124764
124816
  ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
@@ -124769,28 +124821,28 @@ class Dssp {
124769
124821
  ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
124770
124822
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = 'IgFN3';
124771
124823
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
124772
- ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
124824
+ //ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
124773
124825
  ic.ref2igtype['JAM1_1nbqA_human_Iset-n2'] = 'IgI';
124774
124826
  ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = 'IgC1';
124775
124827
  ic.ref2igtype['LAG3_7tzgD_human_V-n1'] = 'IgV';
124776
124828
  ic.ref2igtype['LaminAC_1ifrA_human'] = 'Lamin';
124777
124829
  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';
124830
+ //ic.ref2igtype['MPT63_1lmiA_bacteria'] = 'IgFN3-like';
124831
+ //ic.ref2igtype['NaCaExchanger_2fwuA_dog_n2'] = 'IgFN3-like';
124832
+ //ic.ref2igtype['NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = 'IgE';
124833
+ //ic.ref2igtype['ORF7a_1xakA_virus'] = 'ORF';
124782
124834
  ic.ref2igtype['PD1_4zqkB_human_V'] = 'IgV';
124783
124835
  ic.ref2igtype['PDL1_4z18B_human_V-n1'] = 'IgV';
124784
124836
  ic.ref2igtype['Palladin_2dm3A_human_Iset-n1'] = 'IgI';
124785
- ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
124837
+ //ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
124786
124838
  //ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
124787
124839
  ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
124788
124840
  ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = 'IgC1';
124789
124841
  ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
124790
124842
  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';
124843
+ //ic.ref2igtype['TEAD1_3kysC_human'] = 'IgFN3-like';
124844
+ //ic.ref2igtype['TP34_2o6cA_bacteria'] = 'IgE';
124845
+ //ic.ref2igtype['TP47_1o75A_bacteria'] = 'IgE';
124794
124846
  ic.ref2igtype['Titin_4uowM_human_Iset-n152'] = 'IgI';
124795
124847
  ic.ref2igtype['VISTA_6oilA_human_V'] = 'IgV';
124796
124848
  ic.ref2igtype['VNAR_1t6vN_shark_V'] = 'IgV';
@@ -126341,6 +126393,7 @@ class Dssp {
126341
126393
  }
126342
126394
  else {
126343
126395
  let bBefore = false, bInRange= false, bAfter = false;
126396
+ /*
126344
126397
  // 100, 100A
126345
126398
  if(parseInt(currResi) == parseInt(strandArray[strandCnt].startResi) && currResi != strandArray[strandCnt].startResi) {
126346
126399
  bBefore = currResi < strandArray[strandCnt].startResi;
@@ -126356,6 +126409,14 @@ class Dssp {
126356
126409
  else {
126357
126410
  bAfter = parseInt(currResi) > parseInt(strandArray[strandCnt].endResi);
126358
126411
  }
126412
+ */
126413
+
126414
+ let currResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, currResi);
126415
+ let startResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].startResi);
126416
+ let endResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].endResi);
126417
+
126418
+ bBefore = parseInt(currResiNcbi) < parseInt(startResiNcbi);
126419
+ bAfter = parseInt(currResiNcbi) > parseInt(endResiNcbi);
126359
126420
 
126360
126421
  bInRange = (!bBefore && !bAfter) ? true : false;
126361
126422
 
@@ -132174,8 +132235,9 @@ class ShareLink {
132174
132235
  }
132175
132236
 
132176
132237
  let paraHash = {};
132177
- for(let key in ic.cfg) {
132178
- let value = ic.cfg[key];
132238
+ /*
132239
+ for(let key in me.cfg) {
132240
+ let value = me.cfg[key];
132179
132241
  //if(key === 'inpara' || ic.key === 'command' || value === undefined) continue;
132180
132242
  if(key === 'inpara' || key === 'command' || key === 'usepdbnum'
132181
132243
  || key === 'date' || key === 'v' || value === undefined) continue;
@@ -132225,7 +132287,7 @@ class ShareLink {
132225
132287
  paraHash[key] = value;
132226
132288
  }
132227
132289
  }
132228
-
132290
+ */
132229
132291
  if(ic.bAfMem) {
132230
132292
  paraHash['afmem'] = 'on';
132231
132293
  }
@@ -132247,6 +132309,12 @@ class ShareLink {
132247
132309
  if(key_value.length == 2) paraHash[key_value[0]] = key_value[1];
132248
132310
  }
132249
132311
 
132312
+ // BLAST RID is usually added at the end of the URL. It should be included.
132313
+ if(me.cfg.rid && !paraHash['RID']) {
132314
+ url += 'RID=' + me.cfg.rid + '&';
132315
+ }
132316
+
132317
+ // sometimes idname is not part of the URL
132250
132318
  if(me.cfg.idname && !paraHash[me.cfg.idname]) { // somehow it is not included
132251
132319
  url += me.cfg.idname + '=' + me.cfg.idvalue + '&';
132252
132320
  }
@@ -135360,7 +135428,7 @@ class iCn3DUI {
135360
135428
  //even when multiple iCn3D viewers are shown together.
135361
135429
  this.pre = this.cfg.divid + "_";
135362
135430
 
135363
- this.REVISION = '3.47.1';
135431
+ this.REVISION = '3.48.1';
135364
135432
 
135365
135433
  // In nodejs, iCn3D defines "window = {navigator: {}}", and added window = {navigator: {}, "__THREE__":"177"}
135366
135434
  this.bNode = (Object.keys(window).length < 3) ? true : false;
@@ -135562,14 +135630,8 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
135562
135630
  let domainidArray = me.cfg.matchedchains.split(',');
135563
135631
  let chainidArray = [];
135564
135632
  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
- }
135633
+ let idArray = domainidArray[i].split('_');
135634
+ chainidArray.push(idArray[0] + '_' + idArray[1]);
135573
135635
  }
135574
135636
 
135575
135637
  // get the matched structures, do not include the template
@@ -135798,6 +135860,9 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
135798
135860
  if(me.cfg.align.indexOf('185055,') != -1) {
135799
135861
  me.cfg.align = me.cfg.align.replace('185055,', '199731,'); //the mmdbid of PDB 6M17 was changed from 185055 to 199731
135800
135862
  }
135863
+ else if(me.cfg.align == '54567,1,12161,1,2,1') {
135864
+ me.cfg.align = '3HHR,1BQU'; // somehow the VAST+ data for this published alignment were not there anymore
135865
+ }
135801
135866
 
135802
135867
  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
135868