icn3d 3.25.11 → 3.25.12

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
@@ -11780,7 +11780,7 @@ class Events {
11780
11780
  async searchSeq() { let me = this.icn3dui, ic = me.icn3d, thisClass = this;
11781
11781
  let select = $("#" + me.pre + "search_seq").val();
11782
11782
  if(isNaN(select) && select.indexOf('$') == -1 && select.indexOf('.') == -1 && select.indexOf(':') == -1
11783
- && select.indexOf('%') == -1 && select.indexOf('@') == -1) {
11783
+ && select.indexOf('@') == -1) {
11784
11784
  select = ':' + select;
11785
11785
  }
11786
11786
  let commandname = select.replace(/\s+/g, '_');
@@ -14216,6 +14216,22 @@ class Events {
14216
14216
  thisClass.setLogCmd('define coil sets | chain ' + chainid, true);
14217
14217
  });
14218
14218
 
14219
+ $(document).on("click", ".icn3d-igstrandsets", function(e) { let ic = me.icn3d;
14220
+ e.stopImmediatePropagation();
14221
+ //e.preventDefault();
14222
+ let chainid = $(this).attr('chainid');
14223
+ ic.addTrackCls.defineIgstrand(chainid, 'igstrand');
14224
+ thisClass.setLogCmd('define igstrand sets | chain ' + chainid, true);
14225
+ });
14226
+
14227
+ $(document).on("click", ".icn3d-igloopsets", function(e) { let ic = me.icn3d;
14228
+ e.stopImmediatePropagation();
14229
+ //e.preventDefault();
14230
+ let chainid = $(this).attr('chainid');
14231
+ ic.addTrackCls.defineIgstrand(chainid, 'igloop');
14232
+ thisClass.setLogCmd('define igloop sets | chain ' + chainid, true);
14233
+ });
14234
+
14219
14235
  me.myEventCls.onIds("#" + me.pre + "deletesets", "click", function(e) { let ic = me.icn3d;
14220
14236
  ic.definedSetsCls.deleteSelectedSets();
14221
14237
  thisClass.setLogCmd("delete selected sets", true);
@@ -34687,7 +34703,7 @@ class SetColor {
34687
34703
  // color = me.parasCls.thr(me.htmlCls.GREYB);
34688
34704
  // }
34689
34705
  // else {
34690
- let refnumStr = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').replace(/\+/g, '').replace(/\-/g, '').substr(1); // C', C''
34706
+ let refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
34691
34707
  let currStrand = refnumLabel.replace(new RegExp(refnumStr,'g'), '');
34692
34708
  color = ic.showSeqCls.getRefnumColor(currStrand);
34693
34709
 
@@ -34723,7 +34739,7 @@ class SetColor {
34723
34739
  color = me.parasCls.thr(me.htmlCls.GREYB);
34724
34740
  }
34725
34741
  else {
34726
- let refnumStr = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').replace(/\+/g, '').replace(/\-/g, '').substr(1); // C', C''
34742
+ let refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
34727
34743
  let currStrand = refnumLabel.replace(new RegExp(refnumStr,'g'), '');
34728
34744
  color = ic.showSeqCls.getProtodomainColor(currStrand);
34729
34745
 
@@ -39851,7 +39867,7 @@ class AddTrack {
39851
39867
  ++helixCnt;
39852
39868
 
39853
39869
  if(Object.keys(selectedResidues).length > 0) {
39854
- setName = currName + 'H' + helixCnt + ')';
39870
+ setName = currName + 'H' + helixCnt.toString().padStart(2, '0') + ')';
39855
39871
  if(type == 'coil') {
39856
39872
  ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
39857
39873
  if(!bUnion) bUnion = true;
@@ -39862,13 +39878,13 @@ class AddTrack {
39862
39878
 
39863
39879
  //zero =(index < 10) ? '0' : '';
39864
39880
  //currName = chainid + zero + index + '_H' + helixCnt;
39865
- currName = chainid + '_H' + helixCnt;
39881
+ currName = chainid + '_H' + helixCnt.toString().padStart(2, '0');
39866
39882
  selectedResidues[residueid] = 1;
39867
39883
 
39868
39884
  if(atom.ssend) {
39869
39885
  //zero =(index < 9) ? '0' : '';
39870
39886
  //prevName = chainid + zero +(index+1) + '_L(H' + helixCnt;
39871
- prevName = chainid + '_C(H' + helixCnt;
39887
+ prevName = chainid + '_C(H' + helixCnt.toString().padStart(2, '0');
39872
39888
  if(type == 'helix') {
39873
39889
  ic.selectionCls.selectResidueList(selectedResidues, currName, currName, bUnion, bUpdateHighlight);
39874
39890
  if(!bUnion) bUnion = true;
@@ -39881,7 +39897,7 @@ class AddTrack {
39881
39897
  ++sheetCnt;
39882
39898
 
39883
39899
  if(Object.keys(selectedResidues).length > 0) {
39884
- setName = currName + 'S' + sheetCnt + ')';
39900
+ setName = currName + 'S' + sheetCnt.toString().padStart(2, '0') + ')';
39885
39901
  if(type == 'coil') {
39886
39902
  ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
39887
39903
  if(!bUnion) bUnion = true;
@@ -39892,13 +39908,13 @@ class AddTrack {
39892
39908
 
39893
39909
  //zero =(index < 10) ? '0' : '';
39894
39910
  //currName = chainid + zero + index + '_S' + sheetCnt;
39895
- currName = chainid + '_S' + sheetCnt;
39911
+ currName = chainid + '_S' + sheetCnt.toString().padStart(2, '0');
39896
39912
  selectedResidues[residueid] = 1;
39897
39913
 
39898
39914
  if(atom.ssend) {
39899
39915
  //zero =(index < 9) ? '0' : '';
39900
39916
  //prevName = chainid + zero +(index+1) + '_L(S' + sheetCnt;
39901
- prevName = chainid + '_C(S' + sheetCnt;
39917
+ prevName = chainid + '_C(S' + sheetCnt.toString().padStart(2, '0');
39902
39918
  if(type == 'sheet') {
39903
39919
  ic.selectionCls.selectResidueList(selectedResidues, currName, currName, bUnion, bUpdateHighlight);
39904
39920
  if(!bUnion) bUnion = true;
@@ -39921,6 +39937,90 @@ class AddTrack {
39921
39937
  }
39922
39938
  }
39923
39939
 
39940
+ // type: igstrand, igloop
39941
+ defineIgstrand(chainid, type) { let ic = this.icn3d, me = ic.icn3dui;
39942
+ if(!$('#' + ic.pre + 'dl_definedsets').hasClass('ui-dialog-content') || !$('#' + ic.pre + 'dl_definedsets').dialog( 'isOpen' )) {
39943
+ me.htmlCls.dialogCls.openDlg('dl_definedsets', 'Select sets');
39944
+ $("#" + ic.pre + "atomsCustom").resizable();
39945
+ }
39946
+
39947
+ let selectedResidues = {};
39948
+ let bUnion = false, bUpdateHighlight = true;
39949
+
39950
+ let strandCnt = 0, loopCnt = 0;
39951
+ let setName, currStrand, prevStrand, prevStrandReal, currType, prevType;
39952
+
39953
+ // clear selection
39954
+ ic.hAtoms = {};
39955
+
39956
+ let bStart = false;
39957
+
39958
+ for(let i = 0, il = ic.chainsSeq[chainid].length; i < il; ++i) {
39959
+ let currResi = ic.chainsSeq[chainid][i].resi;
39960
+ let resid = chainid + '_' + currResi;
39961
+
39962
+ if(!ic.residues.hasOwnProperty(resid) ) continue;
39963
+
39964
+ let refnumLabel, refnumStr;
39965
+ refnumLabel = ic.resid2refnum[resid];
39966
+ if(!refnumLabel) continue;
39967
+
39968
+ refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
39969
+ currStrand = refnumLabel.replace(refnumStr, '');
39970
+
39971
+ if(ic.residIgLoop.hasOwnProperty(resid)) {
39972
+ currType = 'igloop';
39973
+ }
39974
+ else {
39975
+ currType = 'igstrand';
39976
+ }
39977
+
39978
+ if(bStart && currType != prevType && Object.keys(selectedResidues).length > 0) {
39979
+ if(prevType == 'igstrand') {
39980
+ ++strandCnt;
39981
+ setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
39982
+ setName = setName.replace(/'/g, '`');
39983
+ if(type == 'igstrand') {
39984
+ ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
39985
+ if(!bUnion) bUnion = true;
39986
+ }
39987
+ prevStrandReal = prevStrand;
39988
+ }
39989
+ else if(prevType == 'igloop') {
39990
+ ++loopCnt;
39991
+ setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
39992
+ setName = setName.replace(/'/g, '`');
39993
+ if(type == 'igloop') {
39994
+ ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
39995
+ if(!bUnion) bUnion = true;
39996
+ }
39997
+ }
39998
+
39999
+ selectedResidues = {};
40000
+ }
40001
+
40002
+ selectedResidues[resid] = 1;
40003
+
40004
+ prevStrand = currStrand;
40005
+ prevType = currType;
40006
+
40007
+ bStart = true;
40008
+ } // for loop
40009
+
40010
+ if(prevType == 'igstrand') {
40011
+ ++strandCnt;
40012
+ setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
40013
+ setName = setName.replace(/'/g, '`');
40014
+ if(type == 'igstrand') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
40015
+ }
40016
+ else if(prevType == 'igloop') {
40017
+ ++loopCnt;
40018
+ setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
40019
+ setName = setName.replace(/'/g, '`');
40020
+ if(type == 'igloop') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
40021
+ }
40022
+ }
40023
+
39924
40024
  simplifyText(text) { let ic = this.icn3d; ic.icn3dui;
39925
40025
  let out = ''; // 1-based text positions
39926
40026
  let bFoundText = false;
@@ -40930,6 +41030,11 @@ class ShowAnno {
40930
41030
  chainHtml += this.addButton(chnid, "icn3d-helixsets", "Helix Sets", "Define sets for each helix in this chain and add them to the menu of \"Defined Sets\"", 60, buttonStyle) + "&nbsp;"
40931
41031
  + this.addButton(chnid, "icn3d-sheetsets", "Sheet Sets", "Define sets for each sheet in this chain and add them to the menu of \"Defined Sets\"", 60, buttonStyle) + "&nbsp;"
40932
41032
  + this.addButton(chnid, "icn3d-coilsets", "Coil Sets", "Define sets for each coil in this chain and add them to the menu of \"Defined Sets\"", 60, buttonStyle);
41033
+
41034
+ if(ic.bShowRefnum && ic.chainid2refpdbname.hasOwnProperty(chnid)) {
41035
+ chainHtml += "&nbsp;" + this.addButton(chnid, "icn3d-igstrandsets", "Ig Strand Sets", "Define sets for each Ig strand in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + "&nbsp;"
41036
+ + this.addButton(chnid, "icn3d-igloopsets", "Ig Loop Sets", "Define sets for each Ig loop in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle);
41037
+ }
40933
41038
  $("#" + ic.pre + "dl_annotations").append(chainHtml);
40934
41039
  //let itemArray = ['giseq', 'cdd', 'clinvar', 'snp', 'domain', 'site', 'ptm', 'interaction', 'custom', 'ssbond', 'crosslink', 'transmem'];
40935
41040
  let itemArray = ['giseq', 'cdd', 'clinvar', 'snp', 'site', 'ptm', 'ssbond', 'crosslink', 'transmem', 'domain', 'custom', 'interaction'];
@@ -41823,7 +41928,7 @@ class ShowSeq {
41823
41928
  html += '</div>';
41824
41929
  html3 += '</div></div>';
41825
41930
  }
41826
- else if(ic.bShowRefnum && ic.chainid2index.hasOwnProperty(chnid)) {
41931
+ else if(ic.bShowRefnum && ic.chainid2refpdbname.hasOwnProperty(chnid)) {
41827
41932
  let result = this.showRefNum(giSeq, chnid);
41828
41933
  html += result.html;
41829
41934
  html3 += result.html3;
@@ -41866,10 +41971,10 @@ class ShowSeq {
41866
41971
  let html = '', html3 = '';
41867
41972
 
41868
41973
  let chainList = '';
41869
- if(!ic.chainid2index[chnid]) return {html: html, html3: html3};
41974
+ if(!ic.chainid2refpdbname[chnid]) return {html: html, html3: html3};
41870
41975
 
41871
- for(let i = 0, il = ic.chainid2index[chnid].length; i < il; ++i) {
41872
- chainList += ic.refpdbArray[ic.chainid2index[chnid][i]] + " ";
41976
+ for(let i = 0, il = ic.chainid2refpdbname[chnid].length; i < il; ++i) {
41977
+ chainList += ic.chainid2refpdbname[chnid][i] + " ";
41873
41978
  }
41874
41979
 
41875
41980
  let refStruTitle = (chainList) ? "based on " + chainList : "";
@@ -41930,13 +42035,23 @@ class ShowSeq {
41930
42035
 
41931
42036
  // sometimes one chain may have several Ig domains,set an index for each IgDomain
41932
42037
  let index = 1, bStart = false;
41933
-
42038
+
42039
+ if(!bCustom && !kabat_or_imgt) {
42040
+ // reset ic.residIgLoop for the current selection, which could be the second round of ref num assignment
42041
+ let residHash = ic.firstAtomObjCls.getResiduesFromAtoms(ic.hAtoms);
42042
+ for(let resid in residHash) {
42043
+ // not in loop any more if you assign ref numbers multiple times
42044
+ delete ic.residIgLoop[resid];
42045
+ }
42046
+ }
42047
+
41934
42048
  // 1. get the range of each strand excluding loops
41935
42049
  let strandArray = [], strandHash = {}, strandCnt = 0, resCnt = 0, resCntBfAnchor = 0, resCntAtAnchor = 0;
41936
42050
  if(!bCustom && !kabat_or_imgt) {
41937
42051
  for(let i = 0, il = giSeq.length; i < il; ++i, ++resCnt, ++resCntBfAnchor, ++resCntAtAnchor) {
41938
42052
  let currResi = ic.ParserUtilsCls.getResi(chnid, i);
41939
42053
  let residueid = chnid + '_' + currResi;
42054
+
41940
42055
  refnumLabel = ic.resid2refnum[residueid];
41941
42056
 
41942
42057
  let firstChar = (refnumLabel) ? refnumLabel.substr(0,1) : ' ';
@@ -41950,7 +42065,7 @@ class ShowSeq {
41950
42065
  }
41951
42066
 
41952
42067
  if(refnumLabel) {
41953
- refnumStr_ori = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').replace(/\+/g, '').replace(/\-/g, '').substr(1); // C', C''
42068
+ refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
41954
42069
  currStrand = refnumLabel.replace(new RegExp(refnumStr_ori,'g'), '');
41955
42070
  refnumStr_ori.substr(0, 1);
41956
42071
 
@@ -42058,7 +42173,7 @@ class ShowSeq {
42058
42173
  currStrand = strandArray[strandCnt].strand;
42059
42174
 
42060
42175
  if(refnumLabel) {
42061
- refnumStr = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').replace(/\+/g, '').replace(/\-/g, '').substr(1); // C', C''
42176
+ refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
42062
42177
  currRefnum = parseInt(refnumStr);
42063
42178
  refnumLabelNoPostfix = currStrand + currRefnum;
42064
42179
 
@@ -42140,7 +42255,7 @@ class ShowSeq {
42140
42255
  }
42141
42256
  else if(parseInt(currResi) >= parseInt(strandArray[strandCnt].startResi) && parseInt(currResi) <= parseInt(strandArray[strandCnt].endResi)) {
42142
42257
  // not in loop any more if you assign ref numbers multiple times
42143
- delete ic.residIgLoop[residueid];
42258
+ //delete ic.residIgLoop[residueid];
42144
42259
 
42145
42260
  bBeforeAstrand = false;
42146
42261
 
@@ -42230,7 +42345,7 @@ class ShowSeq {
42230
42345
  let bHidelabel = false;
42231
42346
 
42232
42347
  if(refnumLabel) {
42233
- refnumStr_ori = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').replace(/\+/g, '').replace(/\-/g, '').substr(1); // C', C''
42348
+ refnumStr_ori = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
42234
42349
  currStrand = refnumLabel.replace(new RegExp(refnumStr_ori,'g'), '');
42235
42350
  currStrand_ori = currStrand;
42236
42351
 
@@ -56926,6 +57041,18 @@ class ApplyCommand {
56926
57041
 
56927
57042
  ic.addTrackCls.defineSecondary(chainid, 'coil');
56928
57043
  }
57044
+ else if(commandOri.indexOf('define igstrand sets') == 0) {
57045
+ let chainStr = commandOri.split(' | ')[1];
57046
+ let chainid = chainStr.split(' ')[1];
57047
+
57048
+ ic.addTrackCls.defineIgstrand(chainid, 'igstrand');
57049
+ }
57050
+ else if(commandOri.indexOf('define igloop sets') == 0) {
57051
+ let chainStr = commandOri.split(' | ')[1];
57052
+ let chainid = chainStr.split(' ')[1];
57053
+
57054
+ ic.addTrackCls.defineIgstrand(chainid, 'igloop');
57055
+ }
56929
57056
  else if(commandOri.indexOf('select interaction') == 0) {
56930
57057
  let idArray = commandOri.substr(commandOri.lastIndexOf(' ') + 1).split(',');
56931
57058
  if(idArray !== null) {
@@ -59726,6 +59853,7 @@ class SelectByCommand {
59726
59853
  // $1,2,3: Structure
59727
59854
  // .A,B,C: chain
59728
59855
  // :5-10,K,chemicals: residues, could be 'proteins', 'nucleotides', 'chemicals', 'ions', and 'water'
59856
+ // :refnum_1250,anchors,strands,loops: reference numbers 1250, anchor residues (e.g., 2250), residues in strands, residues in loops
59729
59857
  // @CA,C,C*: atoms
59730
59858
  // wild card * can be used to select all
59731
59859
  //var currHighlightAtoms = {}
@@ -59733,7 +59861,7 @@ class SelectByCommand {
59733
59861
  let dollarPos = commandArray[i].indexOf('$');
59734
59862
  let periodPos = commandArray[i].indexOf('.');
59735
59863
  let colonPos = commandArray[i].indexOf(':');
59736
- let colonPos2 = commandArray[i].indexOf('%'); // for reference numbers
59864
+ let colonPos2 = commandArray[i].indexOf(':ref_'); // for reference numbers
59737
59865
  let atPos = commandArray[i].indexOf('@');
59738
59866
 
59739
59867
  let moleculeStr, chainStr, residueStr, refResStr, atomStrArray;
@@ -59750,14 +59878,14 @@ class SelectByCommand {
59750
59878
  if(colonPos === -1 && colonPos2 === -1 ) {
59751
59879
  residueStr = "*";
59752
59880
  }
59881
+ else if(colonPos2 != -1) {
59882
+ refResStr = testStr.substr(colonPos2 + 5);
59883
+ testStr = testStr.substr(0, colonPos2);
59884
+ }
59753
59885
  else if(colonPos != -1) {
59754
59886
  residueStr = testStr.substr(colonPos + 1);
59755
59887
  testStr = testStr.substr(0, colonPos);
59756
59888
  }
59757
- else if(colonPos2 != -1) {
59758
- refResStr = testStr.substr(colonPos2 + 1);
59759
- testStr = testStr.substr(0, colonPos2);
59760
- }
59761
59889
 
59762
59890
  if(periodPos === -1) {
59763
59891
  chainStr = "*";
@@ -59851,7 +59979,9 @@ class SelectByCommand {
59851
59979
  else if(residueStrArray[j] === '*') { // all resiues
59852
59980
  bAllResidues = true;
59853
59981
  }
59854
- else if(residueStrArray[j] !== 'proteins' && residueStrArray[j] !== 'nucleotides' && residueStrArray[j] !== 'chemicals' && residueStrArray[j] !== 'ions' && residueStrArray[j] !== 'water') { // residue name
59982
+ else if(residueStrArray[j] !== 'proteins' && residueStrArray[j] !== 'nucleotides'
59983
+ && residueStrArray[j] !== 'chemicals' && residueStrArray[j] !== 'ions' && residueStrArray[j] !== 'water'
59984
+ && residueStrArray[j] !== 'anchors' && residueStrArray[j] !== 'strands' && residueStrArray[j] !== 'loops') { // residue name
59855
59985
  let tmpStr = residueStrArray[j].toUpperCase();
59856
59986
  //oneLetterResidue =(residueStrArray[j].length === 1) ? tmpStr : me.utilsCls.residueName2Abbr(tmpStr);
59857
59987
  oneLetterResidueStr = tmpStr;
@@ -59920,6 +60050,16 @@ class SelectByCommand {
59920
60050
  for(let m in chainAtomHash) {
59921
60051
  // residue could also be 'proteins', 'nucleotides', 'chemicals', 'ions', and 'water'
59922
60052
  ic.atoms[m].resn.substr(0,3).toUpperCase();
60053
+ let resid = molecule_chain + '_' + ic.atoms[m].resi;
60054
+ let refnumLabel, refnumStr, refnum;
60055
+ if(bRefnum) {
60056
+ refnumLabel = ic.resid2refnum[resid];
60057
+ if(refnumLabel) {
60058
+ refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
60059
+ refnum = parseInt(refnumStr);
60060
+ }
60061
+ }
60062
+
59923
60063
  if(bAllResidues
59924
60064
  //|| me.utilsCls.residueName2Abbr(tmpStr) === oneLetterResidue
59925
60065
  ||(residueStrArray[j] === 'proteins' && m in ic.proteins)
@@ -59927,32 +60067,23 @@ class SelectByCommand {
59927
60067
  ||(residueStrArray[j] === 'chemicals' && m in ic.chemicals)
59928
60068
  ||(residueStrArray[j] === 'ions' && m in ic.ions)
59929
60069
  ||(residueStrArray[j] === 'water' && m in ic.water)
60070
+ ||(bRefnum && refnumLabel && residueStrArray[j] === 'anchors' && refnum % 100 == 50)
60071
+ ||(bRefnum && refnumLabel && residueStrArray[j] === 'strands' && !ic.residIgLoop.hasOwnProperty(resid))
60072
+ ||(bRefnum && refnumLabel && residueStrArray[j] === 'loops' && ic.residIgLoop.hasOwnProperty(resid))
59930
60073
  ) {
59931
60074
  // many duplicates
59932
60075
  if(i === 0) {
59933
- residueHash[molecule_chain + '_' + ic.atoms[m].resi] = 1;
60076
+ residueHash[resid] = 1;
59934
60077
  }
59935
60078
  else {
59936
- let residTmp = molecule_chain + '_' + ic.atoms[m].resi;
59937
- //if(!residueHash.hasOwnProperty(residTmp)) residueHash[residTmp] = undefined;
59938
- if(!residueHash.hasOwnProperty(residTmp)) delete residueHash[residTmp];
60079
+ if(!residueHash.hasOwnProperty(resid)) delete residueHash[resid];
59939
60080
  }
59940
60081
 
59941
60082
  for(let n = 0, nl = atomStrArray.length; n < nl; ++n) {
59942
60083
  let atomStr = atomStrArray[n];
59943
60084
 
59944
60085
  atomHash = this.processAtomStr(atomStr, atomHash, i, m);
59945
-
59946
- // if(atomStr === '*' || atomStr === ic.atoms[m].name) {
59947
- // if(i === 0) {
59948
- // atomHash[m] = 1;
59949
- // }
59950
- // else {
59951
- // if(!atomHash.hasOwnProperty(m)) delete atomHash[m];
59952
- // }
59953
- // }
59954
60086
  }
59955
-
59956
60087
  }
59957
60088
  } // end for(let m in atomHash) {
59958
60089
 
@@ -62069,72 +62200,168 @@ class Dssp {
62069
62200
  async showIgRefNum() { let ic = this.icn3d, me = ic.icn3dui;
62070
62201
  let thisClass = this;
62071
62202
 
62072
- // if(ic.resid2refnum && Object.keys(ic.resid2refnum).length > 0) {
62073
- // ic.bShowRefnum = true;
62074
-
62075
- // // open sequence view
62076
- // ic.hAtomsRefnum = {};
62077
- // ic.bResetAnno = true;
62078
- // await ic.showAnnoCls.showAnnotations();
62079
- // ic.annotationCls.setAnnoViewAndDisplay('detailed view');
62203
+ // if(ic.pdbDataArray) {
62204
+ // await thisClass.parseRefPdbData(ic.pdbDataArray);
62080
62205
  // }
62081
- if(ic.pdbDataArray) {
62082
- await thisClass.parseRefPdbData(ic.pdbDataArray);
62083
- }
62084
- else {
62085
- //ic.refpdbArray = ['1bqu_fn3', '1cd8_igv', '1cdh_cd4', '1dr9_cd80', '1hnf_cd2', '1hxm_d', '1hxm_g', '1ifr_lamin', '1ncn_cd86', '1t6v_vnar', '1yjd_cd28', '2atp_a', '2atp_b', '2dm3_iset', '3kys_tead1', '3pv7_ncr', '4f9l_cd277', '4gos_vtc', '4i0k_cd276', '4jqi_b', '4z18_cd274', '4zqk_pd1', '4zt1_e', '5esv_vh', '5esv_vl', '6al5_cd19', '6jxr_a', '6jxr_b', '6jxr_d', '6jxr_e', '6jxr_g', '6oil_vista', '6rp8_at', '6rp8_t', '6umt_cd273', '6x4g_cd275', '6x4g_icos', '7xq8_a', '7xq8_b', 'q71h61_ild', 'q9um44_hhl', 'p42081_cd86', 'q7z7d3_vtc', '1bqu_x', '1cdh_x', '1hnf_x', '1hxm_dx', '1hxm_gx', '4jqi_x', '4zt1_x', '5esv_vhx', '5esv_vlx', '6jxr_ax', '6jxr_bx', '1dr9_x', '3pv7_x', '4f9l_x', '4iok_x', '4z18_x', '6x4g_cd275x', 'q9um44_x'];
62086
-
62087
- //ic.refpdbArray = ['1bqu_fn3', '1cd8_igv', '1cdh_cd4', '1dr9_cd80', '1hnf_cd2', '1hxm_d', '1hxm_g', '1ifr_lamin', '1ncn_cd86', '1t6v_vnar', '1yjd_cd28', '2atp_a', '2atp_b', '2dm3_iset', '3kys_tead1', '3pv7_ncr', '4f9l_cd277', '4gos_vtc', '4i0k_cd276', '4jqi_b', '4z18_cd274', '4zqk_pd1', '4zt1_e', '5esv_vh', '5esv_vl', '6al5_cd19', '6jxr_a', '6jxr_b', '6jxr_d', '6jxr_e', '6jxr_g', '6oil_vista', '6rp8_at', '6rp8_t', '6umt_cd273', '6x4g_cd275', '6x4g_icos', '7xq8_a', '7xq8_b', 'q71h61_ild', 'q9um44_hhl'];
62088
-
62089
- //ic.refpdbArray = ['ASF1A_2iijA_human', 'BArrestin1_4jqiA_rat_n1', 'BTLA_2aw2A_human_Iset', 'C3_2qkiD_human_n1', 'CD19_6al5A_human_C2orV-n1', 'CD2_1hnfA_human_C2-n2', 'CD2_1hnfA_human_V-n1', 'CD8a_1cd8A_human_V', 'CoAtomerGamma1_1r4xA_human', 'Contactin1_3s97C_human_C2-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_FN3-n1', 'ICOS_6x4gA_human_V', 'IL6Rb_1bquB_human_FN3-n2', 'InsulinR_8guyE_human_FN3-n2', 'IsdA_2iteA_bacteria', 'LAG3_7tzgD_human_C2-n2', 'LAG3_7tzgD_human_V-n1', 'LaminAC_1ifrA_human', 'MHCIa_7phrH_human_C1', 'MPT63_1lmiA_bacteria', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'PD1_4zqkB_human_V', 'PDL1_4z18B_human_V-n1', 'Palladin_2dm3A_human_Iset-n1', 'RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2', 'TCRa_6jxrm_human_C1-n2', 'TCRa_6jxrm_human_V-n1', 'TEAD1_3kysC_human', 'TP34_2o6cA_bacteria', 'Titin_4uowM_human_Unk-n152', 'VISTA_6oilA_human_V', 'VNAR_1t6vN_shark_V', 'VTCN1_Q7Z7D3_human_V-n2'];
62090
-
62091
- //ic.refpdbArray2 = ['B2Microglobulin_7phrL_human_C1.pdb', 'Contactin1_2ee2A_human_FN3-n9.pdb', 'IL6Rb_1bquB_human_FN3-n3.pdb', 'InsulinR_8guyE_human_FN3-n1.pdb', 'JAM1_1nbqA_human_VorIset-n2.pdb', 'NaCaExchanger_2fwuA_dog_n2.pdb', 'ORF7a_1xakA_virus.pdb', 'Sidekick2_1wf5A_human_FN3-n7.pdb', 'Siglec3_5j0bB_human_C2-n2.pdb', 'TP47_1o75A_bacteria.pdb'];
62092
-
62093
- ic.refpdbArray = ['ASF1A_2iijA_human', 'BArrestin1_4jqiA_rat_n1', 'BTLA_2aw2A_human_Iset', 'C3_2qkiD_human_n1', 'CD19_6al5A_human_C2orV-n1', 'CD2_1hnfA_human_C2-n2', 'CD2_1hnfA_human_V-n1', 'CD8a_1cd8A_human_V', 'CoAtomerGamma1_1r4xA_human', 'Contactin1_3s97C_human_C2-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_FN3-n1', 'ICOS_6x4gA_human_V', 'IL6Rb_1bquB_human_FN3-n2', 'InsulinR_8guyE_human_FN3-n2', 'IsdA_2iteA_bacteria', 'LAG3_7tzgD_human_C2-n2', 'LAG3_7tzgD_human_V-n1', 'LaminAC_1ifrA_human', 'MHCIa_7phrH_human_C1', 'MPT63_1lmiA_bacteria', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'PD1_4zqkB_human_V', 'PDL1_4z18B_human_V-n1', 'Palladin_2dm3A_human_Iset-n1', 'RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2', 'TCRa_6jxrm_human_C1-n2', 'TCRa_6jxrm_human_V-n1', 'TEAD1_3kysC_human', 'TP34_2o6cA_bacteria', 'Titin_4uowM_human_Unk-n152', 'VISTA_6oilA_human_V', 'VNAR_1t6vN_shark_V', 'VTCN1_Q7Z7D3_human_V-n2', 'B2Microglobulin_7phrL_human_C1.pdb', 'Contactin1_2ee2A_human_FN3-n9.pdb', 'IL6Rb_1bquB_human_FN3-n3.pdb', 'InsulinR_8guyE_human_FN3-n1.pdb', 'JAM1_1nbqA_human_VorIset-n2.pdb', 'NaCaExchanger_2fwuA_dog_n2.pdb', 'ORF7a_1xakA_virus.pdb', 'Sidekick2_1wf5A_human_FN3-n7.pdb', 'Siglec3_5j0bB_human_C2-n2.pdb', 'TP47_1o75A_bacteria.pdb'];
62094
-
62095
- if(ic.pdbDataArray) {
62096
- await thisClass.parseRefPdbData(ic.pdbDataArray);
62097
- }
62098
- else {
62099
-
62100
- let pdbAjaxArray = [];
62101
- for(let k = 0, kl = ic.refpdbArray.length; k < kl; ++k) {
62102
- //let urlpdb = me.htmlCls.baseUrl + "icn3d/refpdb/" + ic.refpdbArray[k] + ".pdb";
62103
- let urlpdb = me.htmlCls.baseUrl + "mmcifparser/mmcifparser.cgi?refpdbid=" + ic.refpdbArray[k];
62206
+ // else {
62207
+ //ic.refpdbArray = ['ASF1A_2iijA_human', 'B2Microglobulin_7phrL_human_C1', 'BArrestin1_4jqiA_rat_n1', 'BTLA_2aw2A_human_Iset', 'C3_2qkiD_human_n1', 'CD19_6al5A_human_C2orV-n1', 'CD2_1hnfA_human_C2-n2', 'CD2_1hnfA_human_V-n1', 'CD8a_1cd8A_human_V', 'CoAtomerGamma1_1r4xA_human', 'Contactin1_2ee2A_human_FN3-n9', 'Contactin1_3s97C_human_C2-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_FN3-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_VorIset-n2', 'LAG3_7tzgD_human_C2-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_C2-n2', 'TCRa_6jxrm_human_C1-n2', 'TCRa_6jxrm_human_V-n1', 'TEAD1_3kysC_human', 'TP34_2o6cA_bacteria', 'TP47_1o75A_bacteria', 'Titin_4uowM_human_Unk-n152', 'VISTA_6oilA_human_V', 'VNAR_1t6vN_shark_V', 'VTCN1_Q7Z7D3_human_V-n2'];
62208
+
62209
+ //ic.refpdbArray = ['1ASF1A_2iijA_human', '1B2Microglobulin_7phrL_human_C1', '1BArrestin1_4jqiA_rat_n1', '1BTLA_2aw2A_human_Iset', '1C3_2qkiD_human_n1', '1CD19_6al5A_human_C2orV-n1', '1CD2_1hnfA_human_C2-n2', '1CD2_1hnfA_human_V-n1', '1CD8a_1cd8A_human_V', '1CoAtomerGamma1_1r4xA_human', '1Contactin1_2ee2A_human_FN3-n9', '1Contactin1_3s97C_human_C2-n2', '1CuZnSuperoxideDismutase_1hl5C_human', '1ECadherin_4zt1A_human_n2', '1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', '1FAB-HEAVY_5esv_C1-n2', '1FAB-HEAVY_5esv_V-n1', '1FAB-LIGHT_5esv_C1-n2', '1FAB-LIGHT_5esv_V-n1', '1GHR_1axiB_human_FN3-n1', '1ICOS_6x4gA_human_V', '1IL6Rb_1bquB_human_FN3-n2', '1IL6Rb_1bquB_human_FN3-n3', '1InsulinR_8guyE_human_FN3-n1', '1InsulinR_8guyE_human_FN3-n2', '1IsdA_2iteA_bacteria', '1JAM1_1nbqA_human_VorIset-n2', '1LAG3_7tzgD_human_C2-n2', '1LAG3_7tzgD_human_V-n1', '1LaminAC_1ifrA_human', '1MHCIa_7phrH_human_C1', '1MPT63_1lmiA_bacteria', '1NaCaExchanger_2fwuA_dog_n2', '1NaKATPaseTransporterBeta_2zxeB_spurdogshark', '1ORF7a_1xakA_virus', '1PD1_4zqkB_human_V', '1PDL1_4z18B_human_V-n1', '1Palladin_2dm3A_human_Iset-n1', '1RBPJ_6py8C_human_Unk-n1', '1RBPJ_6py8C_human_Unk-n2', '1Sidekick2_1wf5A_human_FN3-n7', '1Siglec3_5j0bB_human_C2-n2', '1TCRa_6jxrm_human_C1-n2', '1TCRa_6jxrm_human_V-n1', '1TEAD1_3kysC_human', '1TP34_2o6cA_bacteria', '1TP47_1o75A_bacteria', '1Titin_4uowM_human_Unk-n152', '1VISTA_6oilA_human_V', '1VNAR_1t6vN_shark_V', '1VTCN1_Q7Z7D3_human_V-n2'];
62210
+
62211
+ /*
62212
+ // round 1
62213
+ ic.refpdbArray = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'GHR_1axiB_human_FN3-n1', 'FAB-HEAVY_5esv_C1-n2', 'IL6Rb_1bquB_human_FN3-n2', 'LAG3_7tzgD_human_C2-n2', 'VNAR_1t6vN_shark_V', 'VISTA_6oilA_human_V', 'CD19_6al5A_human_C2orV-n1', 'TP47_1o75A_bacteria', 'TP34_2o6cA_bacteria'];
62214
+ // round 2
62215
+ ic.refpdbHash = {};
62216
+
62217
+ ic.refpdbHash['NaKATPaseTransporterBeta_2zxeB_spurdogshark'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark', 'ORF7a_1xakA_virus', 'NaCaExchanger_2fwuA_dog_n2', 'BArrestin1_4jqiA_rat_n1', 'ECadherin_4zt1A_human_n2', 'C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1'];
62218
+ ic.refpdbHash['GHR_1axiB_human_FN3-n1'] = ['GHR_1axiB_human_FN3-n1', 'Siglec3_5j0bB_human_C2-n2', 'ICOS_6x4gA_human_V', 'CD2_1hnfA_human_C2-n2', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
62219
+ ic.refpdbHash['FAB-HEAVY_5esv_C1-n2'] = ['FAB-HEAVY_5esv_C1-n2', 'B2Microglobulin_7phrL_human_C1', 'VTCN1_Q7Z7D3_human_V-n2', 'FAB-LIGHT_5esv_C1-n2', 'MHCIa_7phrH_human_C1'];
62220
+ ic.refpdbHash['IL6Rb_1bquB_human_FN3-n2'] = ['IL6Rb_1bquB_human_FN3-n2', 'Contactin1_2ee2A_human_FN3-n9', 'IL6Rb_1bquB_human_FN3-n3', 'InsulinR_8guyE_human_FN3-n1', 'Sidekick2_1wf5A_human_FN3-n7', 'InsulinR_8guyE_human_FN3-n2'];
62221
+ ic.refpdbHash['LAG3_7tzgD_human_C2-n2'] = ['LAG3_7tzgD_human_C2-n2', 'JAM1_1nbqA_human_VorIset-n2', 'Contactin1_3s97C_human_C2-n2', 'Palladin_2dm3A_human_Iset-n1', 'BTLA_2aw2A_human_Iset', 'Titin_4uowM_human_Unk-n152'];
62222
+ ic.refpdbHash['VNAR_1t6vN_shark_V'] = ['VNAR_1t6vN_shark_V', 'PD1_4zqkB_human_V', 'CD8a_1cd8A_human_V', 'TCRa_6jxrm_human_V-n1', 'FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_V-n1'];
62223
+ ic.refpdbHash['VISTA_6oilA_human_V'] = ['VISTA_6oilA_human_V', 'LAG3_7tzgD_human_V-n1', 'PDL1_4z18B_human_V-n1', 'CD2_1hnfA_human_V-n1'];
62224
+ ic.refpdbHash['CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
62225
+ ic.refpdbHash['TP47_1o75A_bacteria'] = ['TP47_1o75A_bacteria', 'TEAD1_3kysC_human', 'RBPJ_6py8C_human_Unk-n2', 'CuZnSuperoxideDismutase_1hl5C_human', 'ASF1A_2iijA_human'];
62226
+ ic.refpdbHash['TP34_2o6cA_bacteria'] = ['TP34_2o6cA_bacteria', 'TCRa_6jxrm_human_C1-n2', 'IsdA_2iteA_bacteria', 'LaminAC_1ifrA_human', 'CoAtomerGamma1_1r4xA_human', 'MPT63_1lmiA_bacteria'];
62227
+ */
62228
+ /*
62229
+ // round 1
62230
+ ic.refpdbArray = ['NaCaExchanger_2fwuA_dog_n2', 'C3_2qkiD_human_n1', 'Siglec3_5j0bB_human_C2-n2', 'ICOS_6x4gA_human_V', 'B2Microglobulin_7phrL_human_C1', 'VTCN1_Q7Z7D3_human_V-n2', 'Contactin1_2ee2A_human_FN3-n9', 'InsulinR_8guyE_human_FN3-n1', 'JAM1_1nbqA_human_VorIset-n2', 'LAG3_7tzgD_human_C2-n2', 'Palladin_2dm3A_human_Iset-n1', 'PD1_4zqkB_human_V', 'CD8a_1cd8A_human_V', 'VISTA_6oilA_human_V', 'LAG3_7tzgD_human_V-n1', 'TP47_1o75A_bacteria', 'TP34_2o6cA_bacteria', 'TEAD1_3kysC_human', 'RBPJ_6py8C_human_Unk-n2', 'TCRa_6jxrm_human_C1-n2', 'IsdA_2iteA_bacteria', 'LaminAC_1ifrA_human', 'CD19_6al5A_human_C2orV-n1'];
62231
+
62232
+ // round 2
62233
+ ic.refpdbHash = {};
62234
+ ic.refpdbHash['NaCaExchanger_2fwuA_dog_n2'] = ['NaCaExchanger_2fwuA_dog_n2', 'ORF7a_1xakA_virus', 'ECadherin_4zt1A_human_n2', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
62235
+ ic.refpdbHash['C3_2qkiD_human_n1'] = ['C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1', 'BArrestin1_4jqiA_rat_n1'];
62236
+ ic.refpdbHash['Siglec3_5j0bB_human_C2-n2'] = ['Siglec3_5j0bB_human_C2-n2', 'CD2_1hnfA_human_C2-n2', 'GHR_1axiB_human_FN3-n1'];
62237
+ ic.refpdbHash['ICOS_6x4gA_human_V'] = ['ICOS_6x4gA_human_V', 'Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
62238
+ ic.refpdbHash['B2Microglobulin_7phrL_human_C1'] = ['B2Microglobulin_7phrL_human_C1', 'FAB-HEAVY_5esv_C1-n2', 'MHCIa_7phrH_human_C1'];
62239
+ ic.refpdbHash['VTCN1_Q7Z7D3_human_V-n2'] = ['VTCN1_Q7Z7D3_human_V-n2', 'FAB-LIGHT_5esv_C1-n2'];
62240
+ ic.refpdbHash['Contactin1_2ee2A_human_FN3-n9'] = ['Contactin1_2ee2A_human_FN3-n9', 'IL6Rb_1bquB_human_FN3-n3', 'Sidekick2_1wf5A_human_FN3-n7'];
62241
+ ic.refpdbHash['InsulinR_8guyE_human_FN3-n1'] = ['InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n2'];
62242
+ ic.refpdbHash['JAM1_1nbqA_human_VorIset-n2'] = ['JAM1_1nbqA_human_VorIset-n2', 'Contactin1_3s97C_human_C2-n2'];
62243
+ ic.refpdbHash['LAG3_7tzgD_human_C2-n2'] = ['LAG3_7tzgD_human_C2-n2', 'BTLA_2aw2A_human_Iset'];
62244
+ ic.refpdbHash['Palladin_2dm3A_human_Iset-n1'] = ['Palladin_2dm3A_human_Iset-n1', 'Titin_4uowM_human_Unk-n152'];
62245
+ ic.refpdbHash['PD1_4zqkB_human_V'] = ['PD1_4zqkB_human_V', 'TCRa_6jxrm_human_V-n1', 'FAB-LIGHT_5esv_V-n1'];
62246
+ ic.refpdbHash['CD8a_1cd8A_human_V'] = ['CD8a_1cd8A_human_V', 'FAB-HEAVY_5esv_V-n1', 'VNAR_1t6vN_shark_V'];
62247
+ ic.refpdbHash['VISTA_6oilA_human_V'] = ['VISTA_6oilA_human_V', 'PDL1_4z18B_human_V-n1', 'CD2_1hnfA_human_V-n1'];
62248
+ ic.refpdbHash['LAG3_7tzgD_human_V-n1'] = ['LAG3_7tzgD_human_V-n1'];
62249
+ ic.refpdbHash['TP47_1o75A_bacteria'] = ['TP47_1o75A_bacteria'];
62250
+ ic.refpdbHash['TP34_2o6cA_bacteria'] = ['TP34_2o6cA_bacteria'];
62251
+ ic.refpdbHash['TEAD1_3kysC_human'] = ['TEAD1_3kysC_human', 'CuZnSuperoxideDismutase_1hl5C_human'];
62252
+ ic.refpdbHash['RBPJ_6py8C_human_Unk-n2'] = ['RBPJ_6py8C_human_Unk-n2', 'ASF1A_2iijA_human'];
62253
+ ic.refpdbHash['TCRa_6jxrm_human_C1-n2'] = ['TCRa_6jxrm_human_C1-n2'];
62254
+ ic.refpdbHash['IsdA_2iteA_bacteria'] = ['IsdA_2iteA_bacteria', 'CoAtomerGamma1_1r4xA_human'];
62255
+ ic.refpdbHash['LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human', 'MPT63_1lmiA_bacteria'];
62256
+ ic.refpdbHash['CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
62257
+ */
62258
+ // round 1
62259
+ ic.refpdbArray = ['1FAB-HEAVY_5esv_V-n1', '1CD2_1hnfA_human_V-n1', '1LAG3_7tzgD_human_C2-n2', '1BTLA_2aw2A_human_Iset', '1JAM1_1nbqA_human_VorIset-n2', '1Palladin_2dm3A_human_Iset-n1', '1FAB-HEAVY_5esv_C1-n2', '1FAB-LIGHT_5esv_C1-n2', '1BArrestin1_4jqiA_rat_n1', '1IL6Rb_1bquB_human_FN3-n3', '1Contactin1_2ee2A_human_FN3-n9', '1InsulinR_8guyE_human_FN3-n1', '1NaCaExchanger_2fwuA_dog_n2', '1CuZnSuperoxideDismutase_1hl5C_human', '1CoAtomerGamma1_1r4xA_human', '1RBPJ_6py8C_human_Unk-n2', '1CD2_1hnfA_human_C2-n2', '1GHR_1axiB_human_FN3-n1', '1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', '1ICOS_6x4gA_human_V', '1TCRa_6jxrm_human_C1-n2', '1LaminAC_1ifrA_human', '1IsdA_2iteA_bacteria', '1MPT63_1lmiA_bacteria', '1CD19_6al5A_human_C2orV-n1', '1ORF7a_1xakA_virus', '1ECadherin_4zt1A_human_n2', '1ASF1A_2iijA_human'];
62260
+
62261
+ // round 2
62262
+ ic.refpdbHash = {};
62263
+ ic.refpdbHash['1FAB-HEAVY_5esv_V-n1'] = ['FAB-HEAVY_5esv_V-n1', 'CD8a_1cd8A_human_V', 'FAB-LIGHT_5esv_V-n1', 'VNAR_1t6vN_shark_V'];
62264
+ ic.refpdbHash['1CD2_1hnfA_human_V-n1'] = ['CD2_1hnfA_human_V-n1', 'Contactin1_3s97C_human_C2-n2', 'LAG3_7tzgD_human_V-n1'];
62265
+ ic.refpdbHash['1LAG3_7tzgD_human_C2-n2'] = ['LAG3_7tzgD_human_C2-n2', 'Siglec3_5j0bB_human_C2-n2'];
62266
+ ic.refpdbHash['1BTLA_2aw2A_human_Iset'] = ['BTLA_2aw2A_human_Iset', 'PD1_4zqkB_human_V', 'TCRa_6jxrm_human_V-n1'];
62267
+ ic.refpdbHash['1JAM1_1nbqA_human_VorIset-n2'] = ['JAM1_1nbqA_human_VorIset-n2', 'PDL1_4z18B_human_V-n1'];
62268
+ ic.refpdbHash['1Palladin_2dm3A_human_Iset-n1'] = ['Palladin_2dm3A_human_Iset-n1', 'Titin_4uowM_human_Unk-n152', 'VISTA_6oilA_human_V'];
62269
+ ic.refpdbHash['1FAB-HEAVY_5esv_C1-n2'] = ['FAB-HEAVY_5esv_C1-n2', 'B2Microglobulin_7phrL_human_C1', 'MHCIa_7phrH_human_C1'];
62270
+ ic.refpdbHash['1FAB-LIGHT_5esv_C1-n2'] = ['FAB-LIGHT_5esv_C1-n2', 'VTCN1_Q7Z7D3_human_V-n2'];
62271
+ ic.refpdbHash['1BArrestin1_4jqiA_rat_n1'] = ['BArrestin1_4jqiA_rat_n1', 'C3_2qkiD_human_n1', 'RBPJ_6py8C_human_Unk-n1'];
62272
+ ic.refpdbHash['1IL6Rb_1bquB_human_FN3-n3'] = ['IL6Rb_1bquB_human_FN3-n3', 'Sidekick2_1wf5A_human_FN3-n7'];
62273
+ ic.refpdbHash['1Contactin1_2ee2A_human_FN3-n9'] = ['Contactin1_2ee2A_human_FN3-n9', 'IL6Rb_1bquB_human_FN3-n2'];
62274
+ ic.refpdbHash['1InsulinR_8guyE_human_FN3-n1'] = ['InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2'];
62275
+ ic.refpdbHash['1NaCaExchanger_2fwuA_dog_n2'] = ['NaCaExchanger_2fwuA_dog_n2', 'NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
62276
+ ic.refpdbHash['1CuZnSuperoxideDismutase_1hl5C_human'] = ['CuZnSuperoxideDismutase_1hl5C_human', 'TEAD1_3kysC_human'];
62277
+ ic.refpdbHash['1CoAtomerGamma1_1r4xA_human'] = ['CoAtomerGamma1_1r4xA_human', 'TP34_2o6cA_bacteria'];
62278
+ ic.refpdbHash['1RBPJ_6py8C_human_Unk-n2'] = ['RBPJ_6py8C_human_Unk-n2', 'TP47_1o75A_bacteria'];
62279
+
62280
+ ic.refpdbHash['1CD2_1hnfA_human_C2-n2'] = ['CD2_1hnfA_human_C2-n2'];
62281
+ ic.refpdbHash['1GHR_1axiB_human_FN3-n1'] = ['GHR_1axiB_human_FN3-n1'];
62282
+ ic.refpdbHash['1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
62283
+ ic.refpdbHash['1ICOS_6x4gA_human_V'] = ['ICOS_6x4gA_human_V'];
62284
+ ic.refpdbHash['1TCRa_6jxrm_human_C1-n2'] = ['TCRa_6jxrm_human_C1-n2'];
62285
+ ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human'];
62286
+ ic.refpdbHash['1IsdA_2iteA_bacteria'] = ['IsdA_2iteA_bacteria'];
62287
+ ic.refpdbHash['1MPT63_1lmiA_bacteria'] = ['MPT63_1lmiA_bacteria'];
62288
+ ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
62289
+ ic.refpdbHash['1ORF7a_1xakA_virus'] = ['ORF7a_1xakA_virus'];
62290
+ ic.refpdbHash['1ECadherin_4zt1A_human_n2'] = ['ECadherin_4zt1A_human_n2'];
62291
+ ic.refpdbHash['1ASF1A_2iijA_human'] = ['ASF1A_2iijA_human'];
62292
+
62293
+ // use known ref structure
62294
+ ic.refpdbHash['5ESV'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-LIGHT_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2', 'FAB-LIGHT_5esv_C1-n2'];
62295
+ ic.refpdbHash['8GUY'] = ['InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2'];
62296
+ ic.refpdbHash['6JXR'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
62297
+ ic.refpdbHash['1HNF'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
62298
+ ic.refpdbHash['7TZG'] = ['LAG3_7tzgD_human_V-n1', 'LAG3_7tzgD_human_C2-n2'];
62299
+ ic.refpdbHash['6PY8'] = ['RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
62300
+ ic.refpdbHash['1BQU'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
62301
+
62302
+ ic.refpdbHash['1R4X'] = ['CoAtomerGamma1_1r4xA_human'];
62303
+ ic.refpdbHash['6OIL'] = ['VISTA_6oilA_human_V'];
62304
+ ic.refpdbHash['2ZXE'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
62305
+ ic.refpdbHash['1I8A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
62306
+ ic.refpdbHash['2FWU'] = ['NaCaExchanger_2fwuA_dog_n2'];
62307
+ ic.refpdbHash['4JQI'] = ['BArrestin1_4jqiA_rat_n1'];
62308
+ ic.refpdbHash['1NBQ'] = ['JAM1_1nbqA_human_VorIset-n2'];
62309
+ ic.refpdbHash['1O75'] = ['TP47_1o75A_bacteria'];
62310
+ ic.refpdbHash['7PHR'] = ['MHCIa_7phrH_human_C1'];
62311
+ ic.refpdbHash['2IIJ'] = ['ASF1A_2iijA_human'];
62312
+ ic.refpdbHash['4Z18'] = ['PDL1_4z18B_human_V-n1'];
62313
+ ic.refpdbHash['1T6V'] = ['VNAR_1t6vN_shark_V'];
62314
+ ic.refpdbHash['2O6C'] = ['TP34_2o6cA_bacteria'];
62315
+ ic.refpdbHash['3KYS'] = ['TEAD1_3kysC_human'];
62316
+ ic.refpdbHash['7PHR'] = ['B2Microglobulin_7phrL_human_C1'];
62317
+ ic.refpdbHash['2AW2'] = ['BTLA_2aw2A_human_Iset'];
62318
+ ic.refpdbHash['1HL5'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
62319
+ ic.refpdbHash['1WF5'] = ['Sidekick2_1wf5A_human_FN3-n7'];
62320
+ ic.refpdbHash['5J0B'] = ['Siglec3_5j0bB_human_C2-n2'];
62321
+ ic.refpdbHash['1IFR'] = ['LaminAC_1ifrA_human'];
62322
+ ic.refpdbHash['Q7Z7D3'] = ['VTCN1_Q7Z7D3_human_V-n2'];
62323
+ ic.refpdbHash['4ZQK'] = ['PD1_4zqkB_human_V'];
62324
+ ic.refpdbHash['2DM3'] = ['Palladin_2dm3A_human_Iset-n1'];
62325
+ ic.refpdbHash['2ITE'] = ['IsdA_2iteA_bacteria'];
62326
+ ic.refpdbHash['1XAK'] = ['ORF7a_1xakA_virus'];
62327
+ ic.refpdbHash['4ZT1'] = ['ECadherin_4zt1A_human_n2'];
62328
+ ic.refpdbHash['1LMI'] = ['MPT63_1lmiA_bacteria'];
62329
+ ic.refpdbHash['1CD8'] = ['CD8a_1cd8A_human_V'];
62330
+ ic.refpdbHash['3S97'] = ['Contactin1_3s97C_human_C2-n2'];
62331
+ ic.refpdbHash['1AXI'] = ['GHR_1axiB_human_FN3-n1'];
62332
+ ic.refpdbHash['6X4G'] = ['ICOS_6x4gA_human_V'];
62333
+ ic.refpdbHash['2EE2'] = ['Contactin1_2ee2A_human_FN3-n9'];
62334
+ ic.refpdbHash['4UOW'] = ['Titin_4uowM_human_Unk-n152'];
62335
+ ic.refpdbHash['6A15'] = ['CD19_6al5A_human_C2orV-n1'];
62336
+ ic.refpdbHash['2QKI'] = ['C3_2qkiD_human_n1'];
62337
+
62338
+ // if(ic.pdbDataArray) {
62339
+ // await thisClass.parseRefPdbData(ic.pdbDataArray);
62340
+ // }
62341
+ // else {
62104
62342
 
62105
- let pdbAjax = me.getAjaxPromise(urlpdb, 'text');
62343
+ let pdbAjaxArray = [];
62344
+ for(let k = 0, kl = ic.refpdbArray.length; k < kl; ++k) {
62345
+ //let urlpdb = me.htmlCls.baseUrl + "icn3d/refpdb/" + ic.refpdbArray[k] + ".pdb";
62346
+ let urlpdb = me.htmlCls.baseUrl + "mmcifparser/mmcifparser.cgi?refpdbid=" + ic.refpdbArray[k];
62106
62347
 
62107
- pdbAjaxArray.push(pdbAjax);
62108
- }
62348
+ let pdbAjax = me.getAjaxPromise(urlpdb, 'text');
62109
62349
 
62110
- // try {
62111
- // if(!me.bNode) {
62112
- let allPromise = Promise.allSettled(pdbAjaxArray);
62113
- ic.pdbDataArray = await allPromise;
62114
- await thisClass.parseRefPdbData(ic.pdbDataArray);
62115
- // }
62116
- // else {
62117
- // ic.pdbDataArray = [];
62118
- // for(let i = 0, il = pdbAjaxArray.length; i < il; ++i) {
62119
- // try {
62120
- // let dataTmp = await pdbAjaxArray[i];
62121
- // ic.pdbDataArray.push({'value': dataTmp});
62122
- // }
62123
- // catch(err) {
62124
- // ic.pdbDataArray.push({'value': ''});
62125
- // }
62126
- // }
62127
-
62128
- // await thisClass.parseRefPdbData(ic.pdbDataArray);
62129
- // }
62130
- // }
62131
- // catch(err) {
62132
- // if(!me.bNode) var aaa = 1; //alert("Error in retrieveing reference PDB data...");
62133
- // //var aaa = 1; //alert("Error in retrieveing reference PDB data...");
62134
- // return;
62135
- // }
62136
- }
62350
+ pdbAjaxArray.push(pdbAjax);
62137
62351
  }
62352
+
62353
+ // try {
62354
+ let allPromise = Promise.allSettled(pdbAjaxArray);
62355
+ ic.pdbDataArray = await allPromise;
62356
+ await thisClass.parseRefPdbData(ic.pdbDataArray);
62357
+ // }
62358
+ // catch(err) {
62359
+ // if(!me.bNode) var aaa = 1; //alert("Error in retrieveing reference PDB data...");
62360
+ // //var aaa = 1; //alert("Error in retrieveing reference PDB data...");
62361
+ // return;
62362
+ // }
62363
+ // }
62364
+ // }
62138
62365
  }
62139
62366
 
62140
62367
  async parseRefPdbData(dataArray) { let ic = this.icn3d, me = ic.icn3dui;
@@ -62149,6 +62376,9 @@ class Dssp {
62149
62376
 
62150
62377
  // if(!ic.resid2domainid) ic.resid2domainid = {};
62151
62378
  ic.resid2domainid = {};
62379
+ ic.domainid2pdb = {};
62380
+
62381
+ let minResidues = 20;
62152
62382
 
62153
62383
  for(let i = 0, il = struArray.length; i < il; ++i) {
62154
62384
  let struct = struArray[i];
@@ -62159,7 +62389,7 @@ class Dssp {
62159
62389
 
62160
62390
  if(!ic.proteins.hasOwnProperty(ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chainid]).serial)
62161
62391
  && !ic.proteins.hasOwnProperty(ic.firstAtomObjCls.getMiddleAtomObj(ic.chains[chainid]).serial)) continue;
62162
- if(ic.chainsSeq[chainid].length < 50) continue; // peptide
62392
+ if(ic.chainsSeq[chainid].length < minResidues) continue; // peptide
62163
62393
 
62164
62394
  let currAtoms = me.hashUtilsCls.intHash(ic.chains[chainid], ic.hAtoms);
62165
62395
  if(Object.keys(currAtoms).length == 0) continue;
@@ -62176,11 +62406,6 @@ class Dssp {
62176
62406
  //domainAtomsArray.push(ic.chains[chainid]);
62177
62407
  domainAtomsArray.push(currAtoms);
62178
62408
 
62179
- // for(let n = 0, nl = ic.chainsSeq[chainid].length; n < nl; ++n) {
62180
- // let resid = chainid + '_' + ic.chainsSeq[chainid][n].resi;
62181
- // ic.resid2domainid[resid] = chainid + '-0';
62182
- // }
62183
-
62184
62409
  let residueArray = ic.resid2specCls.atoms2residues(Object.keys(currAtoms));
62185
62410
  for(let n = 0, nl = residueArray.length; n < nl; ++n) {
62186
62411
  let resid = residueArray[n];
@@ -62211,6 +62436,7 @@ class Dssp {
62211
62436
  for(let k = 0, kl = domainAtomsArray.length; k < kl; ++k) {
62212
62437
  let pdb_target = ic.saveFileCls.getAtomPDB(domainAtomsArray[k], undefined, undefined, undefined, undefined, struct);
62213
62438
  let domainid = chainid + '-' + k;
62439
+ ic.domainid2pdb[domainid] = pdb_target;
62214
62440
 
62215
62441
  for(let index = 0, indexl = dataArray.length; index < indexl; ++index) {
62216
62442
  let struct2 = ic.defaultPdbId + index;
@@ -62222,31 +62448,19 @@ class Dssp {
62222
62448
  let alignAjax = me.getAjaxPostPromise(urltmalign, dataObj);
62223
62449
  ajaxArray.push(alignAjax);
62224
62450
 
62225
- domainidpairArray.push(domainid + "," + index);
62451
+ domainidpairArray.push(domainid + "," + ic.refpdbArray[index]);
62226
62452
  }
62227
62453
  }
62228
62454
  }
62229
- }
62455
+ }
62230
62456
 
62231
62457
  // try {
62232
62458
  let dataArray2 = [];
62233
- // if(!me.bNode) {
62234
- let allPromise = Promise.allSettled(ajaxArray);
62235
- dataArray2 = await allPromise;
62236
- // }
62237
- // else {
62238
- // for(let i = 0, il = ajaxArray.length; i < il; ++i) {
62239
- // try {
62240
- // let dataTmp = await ajaxArray[i];
62241
- // dataArray2.push({'value': dataTmp});
62242
- // }
62243
- // catch(err) {
62244
- // dataArray2.push({'value': []});
62245
- // }
62246
- // }
62247
- // }
62248
-
62249
- await thisClass.parseAlignData(dataArray2, domainidpairArray);
62459
+ let allPromise = Promise.allSettled(ajaxArray);
62460
+ dataArray2 = await allPromise;
62461
+
62462
+ let bRound1 = true;
62463
+ await thisClass.parseAlignData(dataArray2, domainidpairArray, bRound1);
62250
62464
 
62251
62465
  /// if(ic.deferredRefnum !== undefined) ic.deferredRefnum.resolve();
62252
62466
  // }
@@ -62257,7 +62471,7 @@ class Dssp {
62257
62471
  // }
62258
62472
  }
62259
62473
 
62260
- async parseAlignData(dataArray, domainidpairArray) { let ic = this.icn3d, me = ic.icn3dui;
62474
+ async parseAlignData(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
62261
62475
  let thisClass = this;
62262
62476
 
62263
62477
  let tmscoreThreshold = 0.4; //0.5;
@@ -62265,16 +62479,18 @@ class Dssp {
62265
62479
  // find the best alignment for each chain
62266
62480
  let domainid2score = {}, domainid2segs = {}, chainid2segs = {};
62267
62481
 
62268
- if(!ic.chainid2index) ic.chainid2index = {};
62269
- if(!ic.domainid2index) ic.domainid2index = {};
62482
+ if(!ic.chainid2refpdbname) ic.chainid2refpdbname = {};
62483
+ if(!ic.domainid2refpdbname) ic.domainid2refpdbname = {};
62270
62484
  if(!ic.domainid2ig2kabat) ic.domainid2ig2kabat = {};
62271
62485
  if(!ic.domainid2ig2imgt) ic.domainid2ig2imgt = {};
62272
62486
 
62273
- // ic.chainid2index = {};
62274
- // ic.domainid2index = {};
62487
+ // ic.chainid2refpdbname = {};
62488
+ // ic.domainid2refpdbname = {};
62275
62489
  // ic.domainid2ig2kabat = {};
62276
62490
  // ic.domainid2ig2imgt = {};
62277
62491
 
62492
+ let minResidues = 20;
62493
+
62278
62494
  for(let i = 0, il = domainidpairArray.length; i < il; ++i) {
62279
62495
  let queryData = dataArray[i].value; //[0];
62280
62496
 
@@ -62284,12 +62500,14 @@ class Dssp {
62284
62500
  }
62285
62501
 
62286
62502
  if(queryData.length == 0) continue;
62503
+
62504
+ if(queryData[0].score < tmscoreThreshold || queryData[0].num_res < minResidues) continue;
62287
62505
 
62288
- if(queryData[0].score < tmscoreThreshold || queryData[0].num_res < 50) continue;
62289
-
62290
- let domainid_index = domainidpairArray[i].split(',');
62291
- let domainid = domainid_index[0];
62292
- domainid.split('-')[0];
62506
+ //let domainid_index = domainidpairArray[i].split(',');
62507
+ //let domainid = domainid_index[0];
62508
+ let domainid = domainidpairArray[i].substr(0, domainidpairArray[i].indexOf(','));
62509
+ let refpdbname = domainidpairArray[i].substr(domainidpairArray[i].indexOf(',') + 1);
62510
+ //let chainid = domainid.split('-')[0];
62293
62511
 
62294
62512
  // Ig-like domains: B (2150, 2150a, 2150b), C (3150, 3250), E (7150, 7250), F (8150, 8250) strands
62295
62513
  // Ig domain may require G (7050). But we'll leave that out for now.
@@ -62318,22 +62536,76 @@ class Dssp {
62318
62536
  if(!(bBstrand && bCstrand && bEstrand && bFstrand)) continue;
62319
62537
 
62320
62538
  if(!domainid2score.hasOwnProperty(domainid) || queryData[0].score > domainid2score[domainid]) {
62321
- domainid2score[domainid] = queryData[0].score;
62322
- if(!me.bNode) console.log(domainid + ' TM-score: ' + domainid2score[domainid] + ' matched ' + ic.refpdbArray[domainid_index[1]]);
62539
+ domainid2score[domainid] = queryData[0].score;
62323
62540
 
62324
- //ic.chainid2index[chainid] = domainid_index[1]; // could be several, just take the recent one for simplicity
62325
- ic.domainid2index[domainid] = domainid_index[1];
62541
+ ic.domainid2refpdbname[domainid] = refpdbname;
62326
62542
  domainid2segs[domainid] = queryData[0].segs;
62327
62543
  ic.domainid2ig2kabat[domainid] = queryData[0].ig2kabat;
62328
62544
  ic.domainid2ig2imgt[domainid] = queryData[0].ig2imgt;
62329
62545
  }
62330
62546
  }
62331
62547
 
62548
+ if(bRound1) {
62549
+ if(!me.bNode) console.log("Start round 2 alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
62550
+
62551
+ // start round2
62552
+ let ajaxArray = [];
62553
+ let domainidpairArray3 = [];
62554
+ let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi";
62555
+ for(let domainid in ic.domainid2refpdbname) {
62556
+ let pdbAjaxArray = [];
62557
+ let refpdbname = ic.domainid2refpdbname[domainid];
62558
+ let pdbid = domainid.substr(0, domainid.indexOf('_'));
62559
+
62560
+ if(ic.refpdbHash.hasOwnProperty(pdbid)) {
62561
+ // use itself as the ref structure
62562
+ refpdbname = pdbid;
62563
+
62564
+ if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
62565
+ }
62566
+
62567
+ for(let k = 0, kl = ic.refpdbHash[refpdbname].length; k < kl; ++k) {
62568
+ let urlpdb = me.htmlCls.baseUrl + "mmcifparser/mmcifparser.cgi?refpdbid=" + ic.refpdbHash[refpdbname][k];
62569
+
62570
+ let pdbAjax = me.getAjaxPromise(urlpdb, 'text');
62571
+
62572
+ pdbAjaxArray.push(pdbAjax);
62573
+ }
62574
+
62575
+ let allPromise2 = Promise.allSettled(pdbAjaxArray);
62576
+ ic.pdbDataArray = await allPromise2;
62577
+
62578
+ let pdb_target = ic.domainid2pdb[domainid];
62579
+ for(let index = 0, indexl = ic.pdbDataArray.length; index < indexl; ++index) {
62580
+ let struct2 = ic.defaultPdbId + index;
62581
+ let pdb_query = ic.pdbDataArray[index].value; //[0];
62582
+ let header = 'HEADER ' + struct2 + '\n';
62583
+ pdb_query = header + pdb_query;
62584
+
62585
+ let dataObj = {'pdb_query': pdb_query, 'pdb_target': pdb_target, "queryid": ic.refpdbHash[refpdbname][index]};
62586
+ let alignAjax = me.getAjaxPostPromise(urltmalign, dataObj);
62587
+ ajaxArray.push(alignAjax);
62588
+
62589
+ //domainidpairArray3.push(domainid + "," + refpdbname);
62590
+ domainidpairArray3.push(domainid + "," + ic.refpdbHash[refpdbname][index]);
62591
+ }
62592
+ }
62593
+
62594
+ let dataArray3 = [];
62595
+ let allPromise = Promise.allSettled(ajaxArray);
62596
+ dataArray3 = await allPromise;
62597
+
62598
+ await thisClass.parseAlignData(dataArray3, domainidpairArray3);
62599
+
62600
+ // end of round 2
62601
+ return;
62602
+ }
62603
+
62332
62604
  // combine domainid into chainid
62333
- for(let domainid in ic.domainid2index) {
62605
+ for(let domainid in ic.domainid2refpdbname) {
62334
62606
  let chainid = domainid.split('-')[0];
62335
- if(!ic.chainid2index.hasOwnProperty(chainid)) ic.chainid2index[chainid] = [];
62336
- ic.chainid2index[chainid].push(ic.domainid2index[domainid]);
62607
+ if(!ic.chainid2refpdbname.hasOwnProperty(chainid)) ic.chainid2refpdbname[chainid] = [];
62608
+ ic.chainid2refpdbname[chainid].push(ic.domainid2refpdbname[domainid]);
62337
62609
  }
62338
62610
 
62339
62611
  // combine domainid into chainid
@@ -62349,16 +62621,15 @@ if(!me.bNode) console.log(domainid + ' TM-score: ' + domainid2score[domainid] +
62349
62621
  if(!ic.chainsMapping) ic.chainsMapping = {};
62350
62622
  for(let chainid in chainid2segs) {
62351
62623
  let segArray = chainid2segs[chainid];
62352
- if(!me.bNode) {
62353
- let chainList = '';
62354
- for(let i = 0, il = ic.chainid2index[chainid].length; i < il; ++i) {
62355
- chainList += ic.refpdbArray[ic.chainid2index[chainid][i]] + " ";
62356
- }
62357
- console.log("The reference PDB(s) for chain " + chainid + " are " + chainList);
62358
- }
62624
+
62625
+ let chainList = '';
62626
+ for(let i = 0, il = ic.chainid2refpdbname[chainid].length; i < il; ++i) {
62627
+ chainList += ic.chainid2refpdbname[chainid][i] + " ";
62628
+ }
62629
+ if(!me.bNode) console.log("The reference PDB(s) for chain " + chainid + " are " + chainList);
62359
62630
 
62360
62631
  let prevStrand;
62361
- let bCd19 = ic.chainid2index[chainid].length == 1 && ic.refpdbArray[ic.chainid2index[chainid][0]] == '6al5_cd19';
62632
+ let bCd19 = ic.chainid2refpdbname[chainid].length == 1 && ic.chainid2refpdbname[chainid][0] == 'CD19_6al5A_human_C2orV-n1';
62362
62633
  for(let i = 0, il = segArray.length; i < il; ++i) {
62363
62634
  let seg = segArray[i];
62364
62635
  let qStart = seg.q_start;
@@ -62528,6 +62799,10 @@ if(!me.bNode) {
62528
62799
  await ic.showAnnoCls.showAnnotations();
62529
62800
  ic.annotationCls.setAnnoViewAndDisplay('detailed view');
62530
62801
  }
62802
+
62803
+ rmStrandFromRefnumlabel(refnumLabel) {
62804
+ return refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').replace(/\+/g, '').replace(/\-/g, '').substr(1); // C', C''
62805
+ }
62531
62806
  }
62532
62807
 
62533
62808
  /**