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.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
@@ -79510,7 +79510,7 @@ class Strand {
79510
79510
  let bShowArray = [];
79511
79511
  let calphaIdArray = []; // used to store one of the final positions drawn in 3D
79512
79512
  let colors = [];
79513
- let currentChain, currentCA = null, currentO = null, currentColor = null, prevCoorCA = null, prevCoorO = null, prevColor = null;
79513
+ let currentChain, currentStyle, currentCA = null, currentO = null, currentColor = null, prevCoorCA = null, prevCoorO = null, prevColor = null;
79514
79514
  let prevCO = null, ss = null, ssend = false, atomid = null, prevAtomid = null, prevResi = null, calphaid = null, prevCalphaid = null;
79515
79515
  let strandWidth, bSheetSegment = false, bHelixSegment = false;
79516
79516
  let atom, tubeAtoms = {};
@@ -79563,15 +79563,15 @@ class Strand {
79563
79563
  }
79564
79564
  // smoothen each coil, helix and sheet separately. The joint residue has to be included both in the previous and next segment
79565
79565
  let bSameChain = true;
79566
- // if (currentChain !== atom.chain || currentResi + 1 !== atom.resi) {
79566
+
79567
79567
  if (currentChain !== atom.chain) {
79568
79568
  bSameChain = false;
79569
79569
  }
79570
79570
 
79571
- if(atom.ssend && atom.ss === 'sheet') {
79571
+ if((atom.ssend || currentStyle != atom.style)&& atom.ss === 'sheet') {
79572
79572
  bSheetSegment = true;
79573
79573
  }
79574
- else if(atom.ssend && atom.ss === 'helix') {
79574
+ else if((atom.ssend || currentStyle != atom.style) && atom.ss === 'helix') {
79575
79575
  bHelixSegment = true;
79576
79576
  }
79577
79577
 
@@ -79664,7 +79664,7 @@ class Strand {
79664
79664
  // bHelixSegment = true;
79665
79665
  // }
79666
79666
 
79667
- if ((atom.ssbegin || atom.ssend || (drawnResidueCount === totalResidueCount - 1) || bBrokenSs) && pnts[0].length > 0 && bSameChain) {
79667
+ if ((atom.ssbegin || atom.ssend || (drawnResidueCount === totalResidueCount - 1) || bBrokenSs || currentStyle != atom.style) && pnts[0].length > 0 && bSameChain) {
79668
79668
  let atomName = 'CA';
79669
79669
 
79670
79670
  let prevone = [], nexttwo = [];
@@ -79807,9 +79807,7 @@ class Strand {
79807
79807
  } // end if (atom.ssbegin || atom.ssend)
79808
79808
 
79809
79809
  // end of a chain
79810
- // if ((currentChain !== atom.chain || currentResi + 1 !== atom.resi) && pnts[0].length > 0) {
79811
- if ((currentChain !== atom.chain) && pnts[0].length > 0) {
79812
-
79810
+ if ((currentChain !== atom.chain || currentStyle != atom.style) && pnts[0].length > 0) {
79813
79811
  let atomName = 'CA';
79814
79812
 
79815
79813
  let prevone = [], nexttwo = [];
@@ -79861,7 +79859,7 @@ class Strand {
79861
79859
  }
79862
79860
 
79863
79861
  currentChain = atom.chain;
79864
- atom.resi;
79862
+ currentStyle = atom.style;
79865
79863
  ss = atom.ss;
79866
79864
  ssend = atom.ssend;
79867
79865
  prevAtomid = atom.serial;
@@ -83973,7 +83971,7 @@ class ApplyMissingRes {
83973
83971
  line.serial1 = ic.missingResResid2serial[resid0 + ',' + resid1];
83974
83972
  line.serial2 = ic.missingResResid2serial[resid1 + ',' + resid0];
83975
83973
 
83976
- line.color = "#" + ic.atoms[line.serial1].color.getHexString();
83974
+ line.color = (ic.atoms[line.serial1]) ? "#" + ic.atoms[line.serial1].color.getHexString() : undefined;
83977
83975
 
83978
83976
  line.radius = ic.coilWidth;
83979
83977
 
@@ -88828,6 +88826,9 @@ class SetStyle {
88828
88826
  setBackground(color) {var ic = this.icn3d, me = ic.icn3dui;
88829
88827
 
88830
88828
  ic.setOptionCls.setOption('background', color);
88829
+ let exdays = 3650;
88830
+ me.htmlCls.setHtmlCls.setCookie('bkgdcolor', color, exdays);
88831
+
88831
88832
  me.htmlCls.clickMenuCls.setLogCmd('set background ' + color, true);
88832
88833
  //let titleColor =(color == 'black' || color == 'transparent') ? me.htmlCls.GREYD : 'black';
88833
88834
  let titleColor = (color == 'black') ? me.htmlCls.GREYD : 'black';
@@ -99430,7 +99431,7 @@ class HlUpdate {
99430
99431
  if(ic.mmdbid_q !== undefined && ic.mmdbid_q === ic.mmdbid_t) {
99431
99432
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[0].toUpperCase(), 1, true);
99432
99433
  }
99433
- else {
99434
+ else if(ic.mmdbidArray.length > 1) {
99434
99435
  html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData2, ic.mmdbidArray[1].toUpperCase(), 1, true);
99435
99436
  }
99436
99437
  html2ddgm += ic.diagram2dCls.set2DdgmNote(true);
@@ -103712,16 +103713,31 @@ class ChainalignParser {
103712
103713
 
103713
103714
  // dynamically align pairs in all chainids
103714
103715
  // 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]];
103716
+ let atomSet_t;
103717
+ if(me.cfg.resrange) {
103718
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], chainidArray[0], true);
103719
+ atomSet_t = result.hAtoms;
103720
+ }
103721
+ else {
103722
+ atomSet_t = ic.chains[chainidArray[0]];
103723
+ }
103724
+
103716
103725
  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]];
103726
+ let atomSet_q;
103727
+ if(me.cfg.resrange) {
103728
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], chainidArray[index], true);
103729
+ atomSet_q = result.hAtoms;
103730
+ }
103731
+ else {
103732
+ atomSet_q = ic.chains[chainidArray[index]];
103733
+ }
103718
103734
  // end of new version to be done for VASTsrv ==============
103719
103735
 
103720
103736
  let alignAjax;
103721
103737
  if(me.cfg.aligntool != 'tmalign') {
103722
103738
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
103723
103739
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
103724
-
103740
+
103725
103741
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
103726
103742
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
103727
103743
  }
@@ -103757,6 +103773,7 @@ class ChainalignParser {
103757
103773
  //let bTargetTransformed = (ic.qt_start_end[0]) ? true : false;
103758
103774
 
103759
103775
  // modify the previous trans and rotation matrix
103776
+ let bAligned = false;
103760
103777
  for(let i = 0, il = dataArray.length; i < il; ++i) {
103761
103778
  // let align = (me.bNode) ? dataArray[i] : dataArray[i].value;//[0];
103762
103779
  let align = dataArray[i].value;//[0];
@@ -103772,7 +103789,7 @@ class ChainalignParser {
103772
103789
 
103773
103790
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
103774
103791
 
103775
- this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain);
103792
+ bAligned =await this.processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, undefined);
103776
103793
  }
103777
103794
 
103778
103795
  // do not transform the target
@@ -103780,28 +103797,34 @@ class ChainalignParser {
103780
103797
  // this.transformStructure(mmdbid_t, indexArray[0], 'target');
103781
103798
  //}
103782
103799
 
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
- }
103800
+ if(bAligned) {
103801
+ // transform the rest
103802
+ for(let i = 0, il = dataArray.length; i < il; ++i) {
103803
+ let mmdbid_q = struArray[i];
103804
+ let index = indexArray[i];
103805
+ this.transformStructure(mmdbid_q, index, 'query');
103806
+ }
103789
103807
 
103790
- let hAtomsAll = {};
103808
+ let hAtomsAll = {};
103791
103809
 
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
- }
103810
+ if(ic.bFullUi && ic.q_rotation !== undefined && !me.cfg.resnum && !me.cfg.resdef) {
103811
+ // set multiple sequence alignment from ic.qt_start_end
103812
+ hAtomsAll = this.setMsa(chainidArray);
103813
+ }
103796
103814
 
103797
- // highlight all aligned atoms
103798
- //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
103799
- ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
103815
+ // highlight all aligned atoms
103816
+ //ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsTmp);
103817
+ ic.hAtoms = me.hashUtilsCls.cloneHash(hAtomsAll);
103800
103818
 
103801
- ic.transformCls.zoominSelection();
103819
+ ic.transformCls.zoominSelection();
103802
103820
 
103803
- // do the rest
103804
- await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
103821
+ // do the rest
103822
+ await this.downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ic.hAtoms);
103823
+ }
103824
+ else {
103825
+ me.cfg.aligntool = 'tmalign';
103826
+ await ic.chainalignParserCls.downloadChainalignment(me.cfg.chainalign);
103827
+ }
103805
103828
  }
103806
103829
 
103807
103830
  setMsa(chainidArray, bVastplus, bRealign) { let ic = this.icn3d, me = ic.icn3dui;
@@ -103872,7 +103895,7 @@ class ChainalignParser {
103872
103895
 
103873
103896
  let bNoAlert = true;
103874
103897
 
103875
- let bAligned = this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
103898
+ let bAligned = await this.processAlign(align, i, queryData, bEqualMmdbid, bEqualChain, bNoAlert);
103876
103899
 
103877
103900
  if(bAligned) {
103878
103901
  bFoundAlignment = true;
@@ -104364,7 +104387,7 @@ class ChainalignParser {
104364
104387
 
104365
104388
  me.htmlCls.clickMenuCls.setLogCmd("Align " + mmdbid_t + " with " + mmdbid_q, false);
104366
104389
 
104367
- this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain);
104390
+ await this.processAlign(align, index-1, queryData, bEqualMmdbid, bEqualChain, undefined);
104368
104391
  }
104369
104392
  }
104370
104393
  }
@@ -104374,13 +104397,13 @@ class ChainalignParser {
104374
104397
  await this.loadOpmDataForChainalign(targetData, queryDataArray, chainidArray, ic.mmdbidArray);
104375
104398
  }
104376
104399
 
104377
- processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
104400
+ async processAlign(align, index, queryData, bEqualMmdbid, bEqualChain, bNoAlert) { let ic = this.icn3d, me = ic.icn3dui;
104378
104401
  let bAligned = false;
104379
104402
 
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 + ".");
104403
+ if((align === "error" || align === undefined || align.length == 0) && !bNoAlert) {
104404
+ // let serverName = (me.cfg.aligntool == 'tmalign') ? 'TM-align' : 'VAST';
104405
+
104406
+ // if(ic.bRender) var aaa = 1; //alert("These chains can not be aligned by " + serverName + ".");
104384
104407
  return bAligned;
104385
104408
  }
104386
104409
 
@@ -104529,7 +104552,6 @@ class ChainalignParser {
104529
104552
  let structArrayTmp = idlist.split(',');
104530
104553
 
104531
104554
  let structArray = [];
104532
-
104533
104555
  // only when bNoDuplicate is undefined/false, it's allowed to load multiple copies of the same structure
104534
104556
  if(!bNoDuplicate) {
104535
104557
  structArray = this.addPostfixForStructureids(structArrayTmp);
@@ -104542,7 +104564,7 @@ class ChainalignParser {
104542
104564
  if(!ic.structures.hasOwnProperty(id)) structArray.push(structArrayTmp[i]);
104543
104565
  }
104544
104566
  }
104545
-
104567
+
104546
104568
  if(structArray.length == 0) return;
104547
104569
 
104548
104570
  ic.structArray = ic.structArray.concat(structArray);
@@ -104642,6 +104664,8 @@ class ChainalignParser {
104642
104664
  let bNoSeqalign = true;
104643
104665
  let pdbid = structArray[i];
104644
104666
 
104667
+ if(queryDataArray[i].pdbId) queryDataArray[i].pdbId = pdbid;
104668
+
104645
104669
  //hAtomsTmp contains all atoms
104646
104670
  await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign, pdbid);
104647
104671
  }
@@ -106218,7 +106242,7 @@ class MmdbParser {
106218
106242
  return;
106219
106243
  }
106220
106244
 
106221
- if(Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
106245
+ if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
106222
106246
  // use mmtfid
106223
106247
  let pdbid = data.pdbId;
106224
106248
  await ic.bcifParserCls.downloadBcif(pdbid);
@@ -106228,6 +106252,7 @@ class MmdbParser {
106228
106252
 
106229
106253
  let bCalphaOnly = me.utilsCls.isCalphaPhosOnly(data.atoms); //, 'CA');
106230
106254
 
106255
+ //if(!data.pdbId) data.pdbId = mmdbid;
106231
106256
  if(bCalphaOnly || data.atomCount <= ic.maxatomcnt) {
106232
106257
  await this.parseMmdbData(data);
106233
106258
  }
@@ -106389,8 +106414,18 @@ class MmdbParser {
106389
106414
  async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign, pdbidIn) { let ic = this.icn3d, me = ic.icn3dui;
106390
106415
  let hAtoms;
106391
106416
  let pdbid = (data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
106417
+ if(!pdbid && chainid) {
106418
+ pdbid = chainid.substr(0, chainid.lastIndexOf('_'));
106419
+ }
106420
+
106392
106421
  if(pdbidIn) pdbid = pdbidIn;
106393
106422
 
106423
+ // if(!data.atoms || Object.keys(data.atoms).length == 0) { // for large structures such as 3J3Q
106424
+ // ic.bRender = false;
106425
+ // await ic.bcifParserCls.downloadBcif(pdbid);
106426
+ // return;
106427
+ // }
106428
+
106394
106429
  this.parseMmdbDataPart1(data, type);
106395
106430
 
106396
106431
  if(type === undefined) { // default mmdbid input
@@ -108057,7 +108092,7 @@ class PdbParser {
108057
108092
  }
108058
108093
 
108059
108094
  // if(!ic.bSecondaryStructure && Object.keys(ic.proteins).length > 0) {
108060
- if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108095
+ if((!ic.bSecondaryStructure || bCalcSecondary) && Object.keys(ic.proteins).length > 0 && !bNoDssp) {
108061
108096
  await this.applyCommandDssp(bAppend);
108062
108097
  }
108063
108098
  else {
@@ -110032,8 +110067,7 @@ class RealignParser {
110032
110067
  // If rmsd from vastsrv is too large, realign the chains
110033
110068
  //if(me.cfg.chainalign && !me.cfg.usepdbnum && me.cfg.resdef && rmsd > 5) {
110034
110069
  // 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.");
110070
+ if(!me.cfg.usepdbnum && (me.cfg.resdef || me.cfg.resrange) && rmsd > 5 && me.cfg.chainalign) {
110037
110071
  //let nameArray = me.cfg.chainalign.split(',');
110038
110072
  let nameArray = Object.keys(chainidHash);
110039
110073
  if(nameArray.length > 0) {
@@ -110285,15 +110319,30 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
110285
110319
  if(bVastsearch && me.cfg.resrange) {
110286
110320
  let resRangeArray = decodeURIComponent(me.cfg.resrange).split(' | ');
110287
110321
 
110288
- let atomSet_t = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true).hAtoms;
110322
+ let atomSet_t;
110323
+ if(me.cfg.resrange) {
110324
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[0]], ic.chainidArray[0], true);
110325
+ atomSet_t = result.hAtoms;
110326
+ }
110327
+ else {
110328
+ atomSet_t = ic.chains[ic.chainidArray[0]];
110329
+ }
110330
+
110289
110331
  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;
110332
+ let atomSet_q;
110333
+ if(me.cfg.resrange) {
110334
+ let result = ic.realignParserCls.getSeqCoorResid([resRangeArray[index]], ic.chainidArray[index], true);
110335
+ atomSet_q = result.hAtoms;
110336
+ }
110337
+ else {
110338
+ atomSet_q = ic.chains[ic.chainidArray[index]];
110339
+ }
110291
110340
 
110292
110341
  let alignAjax;
110293
110342
  if(me.cfg.aligntool != 'tmalign') {
110294
110343
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(atomSet_q);
110295
110344
  let jsonStr_t = ic.domain3dCls.getDomainJsonForAlign(atomSet_t);
110296
-
110345
+
110297
110346
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
110298
110347
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
110299
110348
  }
@@ -110354,9 +110403,7 @@ let resRangeArray = (me.cfg.resrange) ? decodeURIComponent(me.cfg.resrange).spli
110354
110403
  let alignAjax;
110355
110404
  if(me.cfg.aligntool != 'tmalign') {
110356
110405
  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);
110406
+
110360
110407
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
110361
110408
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
110362
110409
  }
@@ -110426,7 +110473,7 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
110426
110473
 
110427
110474
  if(me.cfg.aligntool != 'tmalign') {
110428
110475
  let jsonStr_q = ic.domain3dCls.getDomainJsonForAlign(chainid2domain[chainid2]);
110429
-
110476
+
110430
110477
  let dataObj = {'domains1': jsonStr_q, 'domains2': jsonStr_t};
110431
110478
  alignAjax = me.getAjaxPostPromise(urlalign, dataObj);
110432
110479
  }
@@ -110686,6 +110733,8 @@ console.log("@@@ jsonStr_t " + jsonStr_t);
110686
110733
  let hAtoms = {};
110687
110734
 
110688
110735
  for(let j = 0, jl = resiArray.length; j < jl; ++j) {
110736
+ if(!resiArray[j]) continue;
110737
+
110689
110738
  if(resiArray[j].indexOf('-') != -1) {
110690
110739
  let startEnd = resiArray[j].split('-');
110691
110740
  for(let k = parseInt(startEnd[0]); k <= parseInt(startEnd[1]); ++k) {
@@ -115856,7 +115905,8 @@ class LoadPDB {
115856
115905
  }
115857
115906
 
115858
115907
  isSecondary(resid, residArray, bNMR, bNonFull) { let ic = this.icn3d; ic.icn3dui;
115859
- if(bNonFull) return false;
115908
+ // still need to get the secondary info
115909
+ //if(bNonFull) return false;
115860
115910
 
115861
115911
  if(!bNMR) {
115862
115912
  return $.inArray(resid, residArray) != -1;
@@ -118226,16 +118276,18 @@ class ApplyCommand {
118226
118276
  }
118227
118277
  else if(command.indexOf('set background') == 0) {
118228
118278
  let value = command.substr(command.lastIndexOf(' ') + 1);
118229
- ic.opts['background'] = value;
118279
+ ic.setStyleCls.setBackground(value);
118230
118280
 
118231
- if(value == 'black') {
118232
- $("#" + ic.pre + "title").css("color", me.htmlCls.GREYD);
118233
- $("#" + ic.pre + "titlelink").css("color", me.htmlCls.GREYD);
118234
- }
118235
- else {
118236
- $("#" + ic.pre + "title").css("color", "black");
118237
- $("#" + ic.pre + "titlelink").css("color", "black");
118238
- }
118281
+ // ic.opts['background'] = value;
118282
+
118283
+ // if(value == 'black') {
118284
+ // $("#" + ic.pre + "title").css("color", me.htmlCls.GREYD);
118285
+ // $("#" + ic.pre + "titlelink").css("color", me.htmlCls.GREYD);
118286
+ // }
118287
+ // else {
118288
+ // $("#" + ic.pre + "title").css("color", "black");
118289
+ // $("#" + ic.pre + "titlelink").css("color", "black");
118290
+ // }
118239
118291
  }
118240
118292
  else if(command.indexOf('set label color') == 0) {
118241
118293
  ic.labelcolor = command.substr(command.lastIndexOf(' ') + 1);
@@ -123762,29 +123814,29 @@ class Dssp {
123762
123814
 
123763
123815
  setRefPdbs() { let ic = this.icn3d; ic.icn3dui;
123764
123816
  // 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'];
123817
+ 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
123818
 
123767
123819
  // round 2
123768
123820
  ic.refpdbHash = {};
123769
123821
  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'];
123822
+ ic.refpdbHash['1ICOS_6x4gA_human_V'] = ['ICOS_6x4gA_human_V'];
123823
+ //ic.refpdbHash['1CoAtomerGamma1_1r4xA_human'] = ['CoAtomerGamma1_1r4xA_human', 'TP34_2o6cA_bacteria'];
123824
+ //ic.refpdbHash['1C3_2qkiD_human_n1'] = ['C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1'];
123825
+ //ic.refpdbHash['1CuZnSuperoxideDismutase_1hl5C_human'] = ['TEAD1_3kysC_human'];
123826
+ //ic.refpdbHash['1ASF1A_2iijA_human'] = ['ASF1A_2iijA_human', 'TP47_1o75A_bacteria'];
123775
123827
  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
123828
  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'];
123829
+ ic.refpdbHash['1ECadherin_4zt1A_human_n2'] = ['ECadherin_4zt1A_human_n2'];
123830
+ //ic.refpdbHash['1NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
123779
123831
  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
123832
  ic.refpdbHash['1PDL1_4z18B_human_V-n1'] = ['PDL1_4z18B_human_V-n1', 'CD2_1hnfA_human_V-n1', 'LAG3_7tzgD_human_V-n1'];
123781
123833
  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
123834
  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'];
123835
+ ic.refpdbHash['1CD3g_6jxrg_human_C2'] = ['CD3g_6jxrg_human_C2', 'TCRa_6jxrm_human_C1-n2'];
123836
+ ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V', 'CD3e_6jxrf_human_C1'];
123785
123837
  ic.refpdbHash['1CD19_6al5A_human-n1'] = ['CD19_6al5A_human-n1'];
123786
123838
 
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'];
123839
+ 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
123840
 
123789
123841
  // use known ref structure
123790
123842
  ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
@@ -123793,36 +123845,36 @@ class Dssp {
123793
123845
  ic.refpdbHash['6JXR_m'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
123794
123846
  ic.refpdbHash['1HNF_A'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
123795
123847
  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'];
123848
+ //ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1'];
123797
123849
  ic.refpdbHash['1BQU_B'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
123798
123850
 
123799
- ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
123851
+ //ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
123800
123852
  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'];
123853
+ //ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
123854
+ //ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
123855
+ //ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
123856
+ //ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
123805
123857
  ic.refpdbHash['1NBQ_A'] = ['JAM1_1nbqA_human_Iset-n2'];
123806
- ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
123858
+ //ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
123807
123859
  ic.refpdbHash['7PHR_H'] = ['MHCIa_7phrH_human_C1'];
123808
- ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
123860
+ //ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
123809
123861
  ic.refpdbHash['4Z18_B'] = ['PDL1_4z18B_human_V-n1'];
123810
123862
  ic.refpdbHash['1T6V_N'] = ['VNAR_1t6vN_shark_V'];
123811
- ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
123812
- ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
123863
+ //ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
123864
+ //ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
123813
123865
  ic.refpdbHash['7PHR_L'] = ['B2Microglobulin_7phrL_human_C1'];
123814
123866
  ic.refpdbHash['2AW2_A'] = ['BTLA_2aw2A_human_Iset'];
123815
- ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
123867
+ //ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
123816
123868
  ic.refpdbHash['1WF5_A'] = ['Sidekick2_1wf5A_human_FN3-n7'];
123817
123869
  ic.refpdbHash['5J0B_B'] = ['Siglec3_5j0bB_human_C1-n2'];
123818
123870
  ic.refpdbHash['1IFR_A'] = ['LaminAC_1ifrA_human'];
123819
123871
  ic.refpdbHash['Q7Z7D3_A'] = ['VTCN1_Q7Z7D3_human_C1-n2'];
123820
123872
  ic.refpdbHash['4ZQK_B'] = ['PD1_4zqkB_human_V'];
123821
123873
  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'];
123874
+ //ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
123875
+ //ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
123824
123876
  ic.refpdbHash['4ZT1_A'] = ['ECadherin_4zt1A_human_n2'];
123825
- ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
123877
+ //ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
123826
123878
  ic.refpdbHash['1CD8_A'] = ['CD8a_1cd8A_human_V'];
123827
123879
  ic.refpdbHash['3S97_C'] = ['Contactin1_3s97C_human_Iset-n2'];
123828
123880
  ic.refpdbHash['1AXI_B'] = ['GHR_1axiB_human_C1-n1'];
@@ -123830,7 +123882,7 @@ class Dssp {
123830
123882
  ic.refpdbHash['2EE2_A'] = ['Contactin1_2ee2A_human_FN3-n9'];
123831
123883
  ic.refpdbHash['4UOW_M'] = ['Titin_4uowM_human_Iset-n152'];
123832
123884
  ic.refpdbHash['6A15_A'] = ['CD19_6al5A_human-n1'];
123833
- ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
123885
+ //ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
123834
123886
  ic.refpdbHash['1YJD_C'] = ['CD28_1yjdC_human_V'];
123835
123887
  ic.refpdbHash['6JXR_d'] = ['CD3d_6jxrd_human_C1'];
123836
123888
  ic.refpdbHash['6JXR_f'] = ['CD3e_6jxrf_human_C1'];
@@ -123839,11 +123891,11 @@ class Dssp {
123839
123891
  // assign Ig types
123840
123892
  ic.ref2igtype = {};
123841
123893
 
123842
- ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
123894
+ //ic.ref2igtype['ASF1A_2iijA_human'] = 'IgFN3-like';
123843
123895
  ic.ref2igtype['B2Microglobulin_7phrL_human_C1'] = 'IgC1';
123844
- ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
123896
+ //ic.ref2igtype['BArrestin1_4jqiA_rat_n1'] = 'IgFN3-like';
123845
123897
  ic.ref2igtype['BTLA_2aw2A_human_Iset'] = 'IgI';
123846
- ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
123898
+ //ic.ref2igtype['C3_2qkiD_human_n1'] = 'IgFN3-like';
123847
123899
  ic.ref2igtype['CD19_6al5A_human-n1'] = 'CD19';
123848
123900
  ic.ref2igtype['CD28_1yjdC_human_V'] = 'IgV';
123849
123901
  ic.ref2igtype['CD2_1hnfA_human_C2-n2'] = 'IgC2';
@@ -123852,12 +123904,12 @@ class Dssp {
123852
123904
  ic.ref2igtype['CD3e_6jxrf_human_C1'] = 'IgC1';
123853
123905
  ic.ref2igtype['CD3g_6jxrg_human_C2'] = 'IgC2';
123854
123906
  ic.ref2igtype['CD8a_1cd8A_human_V'] = 'IgV';
123855
- ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
123907
+ //ic.ref2igtype['CoAtomerGamma1_1r4xA_human'] = 'IgE';
123856
123908
  ic.ref2igtype['Contactin1_2ee2A_human_FN3-n9'] = 'IgFN3';
123857
123909
  ic.ref2igtype['Contactin1_3s97C_human_Iset-n2'] = 'IgI';
123858
- ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
123910
+ //ic.ref2igtype['CuZnSuperoxideDismutase_1hl5C_human'] = 'SOD';
123859
123911
  ic.ref2igtype['ECadherin_4zt1A_human_n2'] = 'Cadherin';
123860
- ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
123912
+ //ic.ref2igtype['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = 'IgE';
123861
123913
  ic.ref2igtype['FAB-HEAVY_5esv_C1-n2'] = 'IgC1';
123862
123914
  ic.ref2igtype['FAB-HEAVY_5esv_V-n1'] = 'IgV';
123863
123915
  ic.ref2igtype['FAB-LIGHT_5esv_C1-n2'] = 'IgC1';
@@ -123868,28 +123920,28 @@ class Dssp {
123868
123920
  ic.ref2igtype['IL6Rb_1bquB_human_FN3-n3'] = 'IgFN3';
123869
123921
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n1'] = 'IgFN3';
123870
123922
  ic.ref2igtype['InsulinR_8guyE_human_FN3-n2'] = 'IgFN3';
123871
- ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
123923
+ //ic.ref2igtype['IsdA_2iteA_bacteria'] = 'IgE';
123872
123924
  ic.ref2igtype['JAM1_1nbqA_human_Iset-n2'] = 'IgI';
123873
123925
  ic.ref2igtype['LAG3_7tzgD_human_C1-n2'] = 'IgC1';
123874
123926
  ic.ref2igtype['LAG3_7tzgD_human_V-n1'] = 'IgV';
123875
123927
  ic.ref2igtype['LaminAC_1ifrA_human'] = 'Lamin';
123876
123928
  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';
123929
+ //ic.ref2igtype['MPT63_1lmiA_bacteria'] = 'IgFN3-like';
123930
+ //ic.ref2igtype['NaCaExchanger_2fwuA_dog_n2'] = 'IgFN3-like';
123931
+ //ic.ref2igtype['NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = 'IgE';
123932
+ //ic.ref2igtype['ORF7a_1xakA_virus'] = 'ORF';
123881
123933
  ic.ref2igtype['PD1_4zqkB_human_V'] = 'IgV';
123882
123934
  ic.ref2igtype['PDL1_4z18B_human_V-n1'] = 'IgV';
123883
123935
  ic.ref2igtype['Palladin_2dm3A_human_Iset-n1'] = 'IgI';
123884
- ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
123936
+ //ic.ref2igtype['RBPJ_6py8C_human_Unk-n1'] = 'IgFN3-like';
123885
123937
  //ic.ref2igtype['RBPJ_6py8C_human_Unk-n2'] = 'IgFN3-like';
123886
123938
  ic.ref2igtype['Sidekick2_1wf5A_human_FN3-n7'] = 'IgFN3';
123887
123939
  ic.ref2igtype['Siglec3_5j0bB_human_C1-n2'] = 'IgC1';
123888
123940
  ic.ref2igtype['TCRa_6jxrm_human_C1-n2'] = 'IgC1';
123889
123941
  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';
123942
+ //ic.ref2igtype['TEAD1_3kysC_human'] = 'IgFN3-like';
123943
+ //ic.ref2igtype['TP34_2o6cA_bacteria'] = 'IgE';
123944
+ //ic.ref2igtype['TP47_1o75A_bacteria'] = 'IgE';
123893
123945
  ic.ref2igtype['Titin_4uowM_human_Iset-n152'] = 'IgI';
123894
123946
  ic.ref2igtype['VISTA_6oilA_human_V'] = 'IgV';
123895
123947
  ic.ref2igtype['VNAR_1t6vN_shark_V'] = 'IgV';
@@ -125440,6 +125492,7 @@ class Dssp {
125440
125492
  }
125441
125493
  else {
125442
125494
  let bBefore = false, bInRange= false, bAfter = false;
125495
+ /*
125443
125496
  // 100, 100A
125444
125497
  if(parseInt(currResi) == parseInt(strandArray[strandCnt].startResi) && currResi != strandArray[strandCnt].startResi) {
125445
125498
  bBefore = currResi < strandArray[strandCnt].startResi;
@@ -125455,6 +125508,14 @@ class Dssp {
125455
125508
  else {
125456
125509
  bAfter = parseInt(currResi) > parseInt(strandArray[strandCnt].endResi);
125457
125510
  }
125511
+ */
125512
+
125513
+ let currResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, currResi);
125514
+ let startResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].startResi);
125515
+ let endResiNcbi = ic.ParserUtilsCls.getResiNCBI(chnid, strandArray[strandCnt].endResi);
125516
+
125517
+ bBefore = parseInt(currResiNcbi) < parseInt(startResiNcbi);
125518
+ bAfter = parseInt(currResiNcbi) > parseInt(endResiNcbi);
125458
125519
 
125459
125520
  bInRange = (!bBefore && !bAfter) ? true : false;
125460
125521
 
@@ -131273,8 +131334,9 @@ class ShareLink {
131273
131334
  }
131274
131335
 
131275
131336
  let paraHash = {};
131276
- for(let key in ic.cfg) {
131277
- let value = ic.cfg[key];
131337
+ /*
131338
+ for(let key in me.cfg) {
131339
+ let value = me.cfg[key];
131278
131340
  //if(key === 'inpara' || ic.key === 'command' || value === undefined) continue;
131279
131341
  if(key === 'inpara' || key === 'command' || key === 'usepdbnum'
131280
131342
  || key === 'date' || key === 'v' || value === undefined) continue;
@@ -131324,7 +131386,7 @@ class ShareLink {
131324
131386
  paraHash[key] = value;
131325
131387
  }
131326
131388
  }
131327
-
131389
+ */
131328
131390
  if(ic.bAfMem) {
131329
131391
  paraHash['afmem'] = 'on';
131330
131392
  }
@@ -131346,6 +131408,12 @@ class ShareLink {
131346
131408
  if(key_value.length == 2) paraHash[key_value[0]] = key_value[1];
131347
131409
  }
131348
131410
 
131411
+ // BLAST RID is usually added at the end of the URL. It should be included.
131412
+ if(me.cfg.rid && !paraHash['RID']) {
131413
+ url += 'RID=' + me.cfg.rid + '&';
131414
+ }
131415
+
131416
+ // sometimes idname is not part of the URL
131349
131417
  if(me.cfg.idname && !paraHash[me.cfg.idname]) { // somehow it is not included
131350
131418
  url += me.cfg.idname + '=' + me.cfg.idvalue + '&';
131351
131419
  }
@@ -134459,7 +134527,7 @@ class iCn3DUI {
134459
134527
  //even when multiple iCn3D viewers are shown together.
134460
134528
  this.pre = this.cfg.divid + "_";
134461
134529
 
134462
- this.REVISION = '3.47.1';
134530
+ this.REVISION = '3.48.1';
134463
134531
 
134464
134532
  // In nodejs, iCn3D defines "window = {navigator: {}}", and added window = {navigator: {}, "__THREE__":"177"}
134465
134533
  this.bNode = (Object.keys(window).length < 3) ? true : false;
@@ -134661,14 +134729,8 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
134661
134729
  let domainidArray = me.cfg.matchedchains.split(',');
134662
134730
  let chainidArray = [];
134663
134731
  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
- }
134732
+ let idArray = domainidArray[i].split('_');
134733
+ chainidArray.push(idArray[0] + '_' + idArray[1]);
134672
134734
  }
134673
134735
 
134674
134736
  // get the matched structures, do not include the template
@@ -134897,6 +134959,9 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
134897
134959
  if(me.cfg.align.indexOf('185055,') != -1) {
134898
134960
  me.cfg.align = me.cfg.align.replace('185055,', '199731,'); //the mmdbid of PDB 6M17 was changed from 185055 to 199731
134899
134961
  }
134962
+ else if(me.cfg.align == '54567,1,12161,1,2,1') {
134963
+ me.cfg.align = '3HHR,1BQU'; // somehow the VAST+ data for this published alignment were not there anymore
134964
+ }
134900
134965
 
134901
134966
  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
134967