icn3d 3.19.3 → 3.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/icn3d.module.js CHANGED
@@ -4298,7 +4298,8 @@ var saveAs = (function(view) {
4298
4298
  var reader = new FileReader();
4299
4299
  reader.onloadend = function() {
4300
4300
  var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
4301
- var popup = view.open(url, '_blank');
4301
+ var urlTarget = '_blank';
4302
+ var popup = view.open(url, urlTarget);
4302
4303
  if(!popup) view.location.href = url;
4303
4304
  url=undefined; // release reference before dispatching
4304
4305
  filesaver.readyState = filesaver.DONE;
@@ -23858,13 +23859,18 @@ class PdbParser {
23858
23859
  //Ajax call was used to get the atom data from the "pdbid". This function was deferred so that
23859
23860
  //it can be chained together with other deferred functions for sequential execution. A wrapper
23860
23861
  //was added to support both http and https.
23861
- downloadPdb(pdbid, bAf) { let ic = this.icn3d; ic.icn3dui;
23862
+ downloadPdb(pdbid, bAf) { let ic = this.icn3d, me = ic.icn3dui;
23862
23863
  ic.deferredOpm = $.Deferred(function() {
23863
23864
  let url, dataType;
23864
23865
 
23865
23866
  if(bAf) {
23866
23867
  url = "https://alphafold.ebi.ac.uk/files/AF-" + pdbid + "-F1-model_" + ic.AFUniprotVersion + ".pdb";
23867
- ic.ParserUtilsCls.setYourNote(pdbid.toUpperCase() + '(AlphaFold) in iCn3D');
23868
+ if(me.cfg.refseqid) {
23869
+ ic.ParserUtilsCls.setYourNote(me.cfg.refseqid.toUpperCase() + '(RefSeq) in iCn3D');
23870
+ }
23871
+ else {
23872
+ ic.ParserUtilsCls.setYourNote(pdbid.toUpperCase() + '(AlphaFold) in iCn3D');
23873
+ }
23868
23874
  }
23869
23875
  else {
23870
23876
  url = "https://files.rcsb.org/view/" + pdbid + ".pdb";
@@ -25510,15 +25516,15 @@ class MmdbParser {
25510
25516
  }
25511
25517
  }
25512
25518
 
25513
- downloadUniprotid(uniprotid) { let ic = this.icn3d; ic.icn3dui;
25519
+ downloadRefseq(refseqid) { let ic = this.icn3d, me = ic.icn3dui;
25514
25520
  // get gis
25515
- let url = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=protein&retmode=json&id=" + uniprotid;
25521
+ let url = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi?refseq2uniprot=" + refseqid;
25516
25522
 
25517
25523
  ic.bCid = undefined;
25518
25524
 
25519
25525
  $.ajax({
25520
25526
  url: url,
25521
- dataType: 'json',
25527
+ dataType: 'jsonp',
25522
25528
  cache: true,
25523
25529
  tryCount : 0,
25524
25530
  retryLimit : 0, //1
@@ -25529,10 +25535,12 @@ class MmdbParser {
25529
25535
  //ic.ParserUtilsCls.hideLoading();
25530
25536
  },
25531
25537
  success: function(data) {
25532
- let giArray = data.result.uids;
25538
+ me.cfg.afid = data.uniprot;
25533
25539
 
25534
- let redirectUrl = "https://www.ncbi.nlm.nih.gov/structure?linkname=protein_structure&from_uid=" + giArray.join(',');
25535
- window.open(redirectUrl, '_self');
25540
+ let bAf = true;
25541
+ $.when(ic.pdbParserCls.downloadPdb(me.cfg.afid, bAf)).then(function() {
25542
+ ic.loadScriptCls.loadScript(me.cfg.command, undefined, true);
25543
+ });
25536
25544
  },
25537
25545
  error : function(xhr, textStatus, errorThrown ) {
25538
25546
  this.tryCount++;
@@ -29451,6 +29459,14 @@ class LoadScript {
29451
29459
  me.cfg.gi = id;
29452
29460
  ic.mmdbParserCls.downloadGi(id);
29453
29461
  }
29462
+ else if(command.indexOf('load refseq') !== -1) {
29463
+ me.cfg.refseqid = id;
29464
+ ic.mmdbParserCls.downloadRefseq(id);
29465
+ }
29466
+ // else if(command.indexOf('load proteinname') !== -1) {
29467
+ // me.cfg.proteinname = id;
29468
+ // ic.mmdbParserCls.downloadProteinname(id);
29469
+ // }
29454
29470
  else if(command.indexOf('load seq_struct_ids ') !== -1) {
29455
29471
  ic.bSmithwm = false;
29456
29472
  ic.bLocalSmithwm = false;
@@ -29929,6 +29945,7 @@ class LoadScript {
29929
29945
  if(ic.bTransparentSurface && ic.bRender) ic.drawCls.render();
29930
29946
 
29931
29947
  if(me.deferred !== undefined) me.deferred.resolve(); if(ic.deferred2 !== undefined) ic.deferred2.resolve();
29948
+ if(me.deferredMmdbaf !== undefined) me.deferredMmdbaf.resolve();
29932
29949
  }
29933
29950
 
29934
29951
  replayFirstStep(currentNumber) { let ic = this.icn3d, me = ic.icn3dui;
@@ -30149,7 +30166,7 @@ class ResizeCanvas {
30149
30166
  //let itemArray = ['dl_selectannotations', 'dl_alignment', 'dl_2ddgm', 'dl_definedsets', 'dl_graph',
30150
30167
  // 'dl_linegraph', 'dl_scatterplot', 'dl_contactmap', 'dl_allinteraction', 'dl_copyurl',
30151
30168
  // 'dl_symmetry', 'dl_symd', 'dl_rmsd', 'dl_legend', 'dl_disttable'];
30152
- let itemArray = ['dl_2ddgm', 'dl_2dctn', 'dl_alignment', 'dl_sequence2', 'dl_definedsets', 'dl_setsmenu', 'dl_command', 'dl_setoperations', 'dl_vast', 'dl_foldseek', 'dl_mmtfid', 'dl_pdbid', 'dl_afid', 'dl_opmid', 'dl_pdbfile', 'dl_pdbfile_app', 'dl_rescolorfile', 'dl_customcolor', 'dl_align', 'dl_alignaf', 'dl_chainalign', 'dl_chainalign2', 'dl_chainalign3', 'dl_mutation', 'dl_mol2file', 'dl_sdffile', 'dl_xyzfile', 'dl_afmapfile', 'dl_urlfile', 'dl_mmciffile', 'dl_mmcifid', 'dl_mmdbid', 'dl_mmdbafid', 'dl_blast_rep_id', 'dl_yournote', 'dl_gi', 'dl_uniprotid', 'dl_cid', 'dl_pngimage', 'dl_state', 'dl_fixedversion', 'dl_selection', 'dl_dsn6', 'dl_dsn6url', 'dl_clr', 'dl_symmetry', 'dl_symd', 'dl_contact', 'dl_hbonds', 'dl_realign', 'dl_realignbystruct', 'dl_allinteraction', 'dl_interactionsorted', 'dl_linegraph', 'dl_linegraphcolor', 'dl_scatterplot', 'dl_scatterplotcolor', 'dl_contactmap', 'dl_alignerrormap', 'dl_elecmap2fofc', 'dl_elecmapfofc', 'dl_emmap', 'dl_aroundsphere', 'dl_adjustmem', 'dl_selectplane', 'dl_addlabel', 'dl_addlabelselection', 'dl_labelColor', 'dl_distance', 'dl_stabilizer', 'dl_disttwosets', 'dl_distmanysets', 'dl_stabilizer_rm', 'dl_thickness', 'dl_thickness2', 'dl_addtrack', 'dl_addtrack_tabs', 'dl_saveselection', 'dl_copyurl', 'dl_selectannotations', 'dl_annotations_tabs', 'dl_anno_view_tabs', 'dl_annotations', 'dl_graph', 'dl_svgcolor', 'dl_area', 'dl_colorbyarea', 'dl_rmsd', 'dl_buriedarea', 'dl_propbypercentout', 'dl_propbybfactor', 'dl_legend', 'dl_disttable'];
30169
+ let itemArray = ['dl_2ddgm', 'dl_2dctn', 'dl_alignment', 'dl_sequence2', 'dl_definedsets', 'dl_setsmenu', 'dl_command', 'dl_setoperations', 'dl_vast', 'dl_foldseek', 'dl_mmtfid', 'dl_pdbid', 'dl_afid', 'dl_opmid', 'dl_pdbfile', 'dl_pdbfile_app', 'dl_rescolorfile', 'dl_customcolor', 'dl_align', 'dl_alignaf', 'dl_chainalign', 'dl_chainalign2', 'dl_chainalign3', 'dl_mutation', 'dl_mol2file', 'dl_sdffile', 'dl_xyzfile', 'dl_afmapfile', 'dl_urlfile', 'dl_mmciffile', 'dl_mmcifid', 'dl_mmdbid', 'dl_mmdbafid', 'dl_blast_rep_id', 'dl_yournote', 'dl_gi', 'dl_refseqid', 'dl_cid', 'dl_pngimage', 'dl_state', 'dl_fixedversion', 'dl_selection', 'dl_dsn6', 'dl_dsn6url', 'dl_clr', 'dl_symmetry', 'dl_symd', 'dl_contact', 'dl_hbonds', 'dl_realign', 'dl_realignbystruct', 'dl_allinteracton', 'dl_interactionsorted', 'dl_linegraph', 'dl_linegraphcolor', 'dl_scatterplot', 'dl_scatterploitcolor', 'dl_contactmap', 'dl_alignerrormap', 'dl_elecmap2fofc', 'dl_elecmapfofc', 'dl_emmap', 'dl_aroundsphere', 'dl_adjustmem', 'dl_selectplane', 'dl_addlabel', 'dl_addlabelselection', 'dl_labelColor', 'dl_distance', 'dl_stabilizer', 'dl_disttwosets', 'dl_distmanysets', 'dl_stabilizer_rm', 'dl_thickness', 'dl_thickness2', 'dl_addtrack', 'dl_addtrack_tabs', 'dl_saveselection', 'dl_copyurl', 'dl_selectannotations', 'dl_annotations_tabs', 'dl_anno_view_tabs', 'dl_annotations', 'dl_graph', 'dl_svgcolor', 'dl_area', 'dl_colorbyarea', 'dl_rmsd', 'dl_buriedarea', 'dl_propbypercentout', 'dl_propbybfactor', 'dl_legend', 'dl_disttable'];
30153
30170
 
30154
30171
  for(let i in itemArray) {
30155
30172
  let item = itemArray[i];
@@ -30638,7 +30655,7 @@ class Domain3d {
30638
30655
  //list< pair< pair< int, let >, let > >
30639
30656
  //c2b_AlphaContacts(let n0, let* x0, let* y0, let* z0,
30640
30657
  // const let incr = 4, const let dcut = 8.0) { let ic = this.icn3d, me = ic.icn3dui;
30641
- c2b_AlphaContacts(n0, x0, y0, z0, dcut) { let ic = this.icn3d; ic.icn3dui;
30658
+ c2b_AlphaContacts(n0, x0, y0, z0, dcut, resiArray) { let ic = this.icn3d; ic.icn3dui;
30642
30659
  //if(!incr) incr = 4;
30643
30660
  if(!dcut) dcut = this.dcut;
30644
30661
 
@@ -30652,7 +30669,8 @@ class Domain3d {
30652
30669
 
30653
30670
  //ResRec rr0;
30654
30671
  let rr0 = {};
30655
- rr0.rnum = i + 1;
30672
+ //rr0.rnum = i + 1;
30673
+ rr0.rnum = resiArray[i];
30656
30674
  rr0.x = x0[i];
30657
30675
  rr0.y = y0[i];
30658
30676
  rr0.z = z0[i];
@@ -30680,7 +30698,7 @@ class Domain3d {
30680
30698
  for (j = i + 1; j < len; ++j) {
30681
30699
  //ResRec rr2 = *rrit2;
30682
30700
  let rr2 = list_rr[j];
30683
- if ((rr1.rnum - rr2.rnum <= 3) && (rr2.rnum - rr1.rnum <= 3)) continue;
30701
+ if ((parseInt(rr1.rnum) - parseInt(rr2.rnum) <= 3) && (parseInt(rr2.rnum) - parseInt(rr1.rnum) <= 3)) continue;
30684
30702
  let x2 = rr2.x;
30685
30703
  let y2 = rr2.y;
30686
30704
  let z2 = rr2.z;
@@ -30698,7 +30716,7 @@ class Domain3d {
30698
30716
  //pair< int, let > rpair;
30699
30717
  let lpair = {}, rpair = {};
30700
30718
 
30701
- if (rr1.rnum < rr2.rnum) {
30719
+ if (parseInt(rr1.rnum) < parseInt(rr2.rnum)) {
30702
30720
  rpair.first = rr1.rnum;
30703
30721
  rpair.second = rr2.rnum;
30704
30722
  }
@@ -30788,7 +30806,7 @@ class Domain3d {
30788
30806
  // x0, y0, z0: array of x,y,z coordinates of C-alpha atoms
30789
30807
  //c2b_NewSplitChain(chnid, dcut) { let ic = this.icn3d, me = ic.icn3dui;
30790
30808
  c2b_NewSplitChain(atoms, dcut) { let ic = this.icn3d; ic.icn3dui;
30791
- let x0 = [], y0 = [], z0 = [];
30809
+ let x0 = [], y0 = [], z0 = [], resiArray = [];
30792
30810
 
30793
30811
  //substruct: array of secondary structures, each of which has the keys: From (1-based), To (1-based), Sheet (0 or 1), also add these paras: x1, y1, z1, x2, y2, z2
30794
30812
  let substruct = [];
@@ -30803,11 +30821,11 @@ class Domain3d {
30803
30821
  residueArray[0].substr(0, residueArray[0].lastIndexOf('_'));
30804
30822
 
30805
30823
  let substructItem = {};
30806
- let resiOffset = 0;
30807
30824
  for(let i = 0; i < residueArray.length; ++i) {
30808
30825
  let resid = residueArray[i];
30809
30826
 
30810
30827
  let resi = resid.substr(resid.lastIndexOf('_') + 1);
30828
+ /*
30811
30829
  if(i == 0) {
30812
30830
  resiOffset = resi - 1;
30813
30831
 
@@ -30817,10 +30835,13 @@ class Domain3d {
30817
30835
  z0.push(undefined);
30818
30836
  }
30819
30837
  }
30838
+ */
30820
30839
 
30821
30840
  //let resid = chnid + "_" + resi;
30822
30841
  let atom = ic.firstAtomObjCls.getFirstCalphaAtomObj(ic.residues[resid]);
30823
30842
 
30843
+ if(!atom) continue;
30844
+ /*
30824
30845
  if(atom) {
30825
30846
  x0.push(atom.coord.x);
30826
30847
  y0.push(atom.coord.y);
@@ -30831,8 +30852,13 @@ class Domain3d {
30831
30852
  y0.push(undefined);
30832
30853
  z0.push(undefined);
30833
30854
  }
30834
-
30835
- if(!atom) continue;
30855
+ */
30856
+ //if(!atom) continue;
30857
+
30858
+ x0.push(atom.coord.x);
30859
+ y0.push(atom.coord.y);
30860
+ z0.push(atom.coord.z);
30861
+ resiArray.push(resi);
30836
30862
 
30837
30863
  if(atom.ssend) {
30838
30864
  substructItem.To = parseInt(resi);
@@ -30866,12 +30892,13 @@ class Domain3d {
30866
30892
  return {subdomains: subdomains, substruct: substruct};
30867
30893
  }
30868
30894
 
30869
- let seqLen = residueArray.length + resiOffset;
30895
+ let seqLen = residueArray.length; // + resiOffset;
30896
+ let lastResi = resiArray[seqLen - 1];
30870
30897
 
30871
30898
  // get a list of Calpha-Calpha contacts
30872
30899
  ///list< pair< pair< int, let >, let > >
30873
- let cts = this.c2b_AlphaContacts(seqLen, x0, y0, z0, dcut);
30874
-
30900
+ let cts = this.c2b_AlphaContacts(seqLen, x0, y0, z0, dcut, resiArray);
30901
+
30875
30902
  //
30876
30903
  // Produce a "map" of the SSEs, i.e. vec_sse[i] = 0 means residue i + 1
30877
30904
  // is in a loop, and vec_sse[i] = k means residue i + 1 belongs to SSE
@@ -31116,13 +31143,17 @@ class Domain3d {
31116
31143
  let prts = list_parts[index];
31117
31144
  //vector<int> resflags;
31118
31145
  //resflags.clear();
31119
- let resflags = [];
31146
+
31147
+ //let resflags = [];
31148
+ let resflags = {};
31120
31149
 
31121
31150
  // a domain must have at least 3 SSEs...
31122
31151
  if (prts.length <= 2) continue;
31123
31152
 
31124
- for (let i = 0; i < seqLen; i++)
31125
- resflags.push(0);
31153
+ for (let i = 0; i < seqLen; i++) {
31154
+ //resflags.push(0);
31155
+ resflags[resiArray[i]] = 0;
31156
+ }
31126
31157
 
31127
31158
  for (let i = 0; i < prts.length; i++) {
31128
31159
  let k = prts[i] - 1;
@@ -31136,8 +31167,10 @@ class Domain3d {
31136
31167
  let From = sserec.From;
31137
31168
  let To = sserec.To;
31138
31169
 
31139
- for (let j = From; j <= To; j++)
31140
- resflags[j - 1] = 1;
31170
+ for (let j = From; j <= To; j++) {
31171
+ //resflags[j - 1] = 1;
31172
+ resflags[j] = 1;
31173
+ }
31141
31174
 
31142
31175
  if ((k == 0) && (From > 1)) {
31143
31176
  // residues with negative residue numbers will not be included
@@ -31145,17 +31178,21 @@ class Domain3d {
31145
31178
  //resflags[j - 1] = 1;
31146
31179
  // include at most 10 residues
31147
31180
  if(From - j <= 10) {
31148
- resflags[j - 1] = 1;
31181
+ //resflags[j - 1] = 1;
31182
+ resflags[j] = 1;
31149
31183
  }
31150
31184
  }
31151
31185
  }
31152
31186
 
31153
- if ((k == substruct.length - 1) && (To < seqLen)) {
31154
- for (let j = To + 1; j <= seqLen; j++) {
31187
+ //if ((k == substruct.length - 1) && (To < seqLen)) {
31188
+ if ((k == substruct.length - 1) && (To < parseInt(lastResi))) {
31189
+ //for (let j = To + 1; j <= seqLen; j++) {
31190
+ for (let j = To + 1; j <= parseInt(lastResi); j++) {
31155
31191
  //resflags[j - 1] = 1;
31156
31192
  // include at most 10 residues
31157
31193
  if(j - To <= 10) {
31158
- resflags[j - 1] = 1;
31194
+ //resflags[j - 1] = 1;
31195
+ resflags[j] = 1;
31159
31196
  }
31160
31197
  }
31161
31198
  }
@@ -31169,8 +31206,10 @@ class Domain3d {
31169
31206
  let ll = parseInt(0.5 * (From - To1 - 1));
31170
31207
 
31171
31208
  if (ll > 0) {
31172
- for (let j = From - ll; j <= From - 1; j++)
31173
- resflags[j - 1] = 1;
31209
+ for (let j = From - ll; j <= From - 1; j++) {
31210
+ //resflags[j - 1] = 1;
31211
+ resflags[j] = 1;
31212
+ }
31174
31213
  }
31175
31214
  }
31176
31215
 
@@ -31186,8 +31225,10 @@ class Domain3d {
31186
31225
  let ll = parseInt(0.5 * (From1 - To - 1) + 0.5);
31187
31226
 
31188
31227
  if (ll > 0) {
31189
- for (let j = To + 1; j <= To + ll; j++)
31190
- resflags[j - 1] = 1;
31228
+ for (let j = To + 1; j <= To + ll; j++) {
31229
+ //resflags[j - 1] = 1;
31230
+ resflags[j] = 1;
31231
+ }
31191
31232
  }
31192
31233
  }
31193
31234
  }
@@ -31200,11 +31241,13 @@ class Domain3d {
31200
31241
  let segments = [];
31201
31242
 
31202
31243
  for (let i = 0; i < seqLen; i++) {
31203
- let rf = resflags[i];
31244
+ //let rf = resflags[i];
31245
+ let rf = resflags[resiArray[i]];
31204
31246
 
31205
31247
  if (!inseg && (rf == 1)) {
31206
31248
  // new segment starts here
31207
- startseg = i + 1;
31249
+ //startseg = i + 1;
31250
+ startseg = resiArray[i];
31208
31251
  inseg = true;
31209
31252
  continue;
31210
31253
  }
@@ -31212,7 +31255,8 @@ class Domain3d {
31212
31255
  if (inseg && (rf == 0)) {
31213
31256
  // segment ends
31214
31257
  segments.push(startseg);
31215
- segments.push(i);
31258
+ //segments.push(i);
31259
+ segments.push(resiArray[i]);
31216
31260
  inseg = false;
31217
31261
  }
31218
31262
  }
@@ -31220,7 +31264,8 @@ class Domain3d {
31220
31264
  // check for the last segment
31221
31265
  if (inseg) {
31222
31266
  segments.push(startseg);
31223
- segments.push(seqLen);
31267
+ //segments.push(seqLen);
31268
+ segments.push(lastResi);
31224
31269
  }
31225
31270
 
31226
31271
  subdomains.push(segments);
@@ -35323,7 +35368,8 @@ class ApplyCommand {
35323
35368
  let paraArray = command.split(' | ');
35324
35369
  let url = paraArray[1];
35325
35370
 
35326
- window.open(url, '_blank');
35371
+ let urlTarget = '_blank';
35372
+ window.open(url, urlTarget);
35327
35373
  }
35328
35374
  else if(commandOri.indexOf('your note') == 0) {
35329
35375
  let paraArray = commandOri.split(' | ');
@@ -38610,7 +38656,7 @@ class ParserUtils {
38610
38656
  ic.selectionCls.saveSelectionIfSelected();
38611
38657
  ic.drawCls.draw();
38612
38658
  }
38613
-
38659
+
38614
38660
  // if(ic.bInitial && me.cfg.command !== undefined && me.cfg.command !== '') {
38615
38661
  if(!ic.bCommandLoad && ic.bInitial && me.cfg.command !== undefined && me.cfg.command !== '') {
38616
38662
  if(Object.keys(ic.structures).length == 1) {
@@ -38618,11 +38664,13 @@ class ParserUtils {
38618
38664
  me.cfg.command = me.cfg.command.replace(new RegExp('!','g'), id + '_');
38619
38665
  }
38620
38666
  // final step resolved ic.deferred
38621
- if(me.cfg.mmdbafid === undefined && me.cfg.afid === undefined) ic.loadScriptCls.loadScript(me.cfg.command, undefined, true);
38667
+ //if(me.cfg.mmdbafid === undefined && me.cfg.afid === undefined) ic.loadScriptCls.loadScript(me.cfg.command, undefined, true);
38668
+ ic.loadScriptCls.loadScript(me.cfg.command, undefined, true);
38622
38669
  //ic.loadScriptCls.loadScript(me.cfg.command);
38623
38670
  }
38624
38671
  else {
38625
38672
  if(me.deferred !== undefined) me.deferred.resolve(); if(ic.deferred2 !== undefined) ic.deferred2.resolve();
38673
+ if(me.deferredMmdbaf !== undefined) me.deferredMmdbaf.resolve();
38626
38674
  }
38627
38675
  //if(me.cfg.align !== undefined || me.cfg.chainalign !== undefined || ic.bRealign ||( ic.bInputfile && ic.InputfileType == 'pdb' && Object.keys(ic.structures).length >= 2) ) {
38628
38676
  if(Object.keys(ic.structures).length >= 2) {
@@ -55451,13 +55499,14 @@ class SaveFile {
55451
55499
  }
55452
55500
  }
55453
55501
 
55454
- setStructureTitle(url, title, titlelinkColor) {var ic = this.icn3d; ic.icn3dui;
55502
+ setStructureTitle(url, title, titlelinkColor) {var ic = this.icn3d, me = ic.icn3dui;
55455
55503
  if(ic.molTitle.length > 40) title = ic.molTitle.substr(0, 40) + "...";
55456
55504
 
55457
55505
  //var asymmetricStr =(ic.bAssemblyUseAsu) ? "(Asymmetric Unit)" : "";
55458
55506
  let asymmetricStr = "";
55459
55507
 
55460
55508
  let idName = (isNaN(ic.inputid) && ic.inputid.length > 5) ? "AlphaFold ID" : "PDB ID";
55509
+ if(me.cfg.refseqid) idName = 'NCBI RefSeq ID';
55461
55510
 
55462
55511
  $("#" + ic.pre + "title").html(idName + " <a id='" + ic.pre + "titlelink' href='" + url + "' style='color:" + titlelinkColor + "' target='_blank'>" + ic.inputid.toUpperCase() + "</a>" + asymmetricStr + ": " + title);
55463
55512
  }
@@ -55468,6 +55517,9 @@ class SaveFile {
55468
55517
  if(me.cfg.cid !== undefined) {
55469
55518
  url = "https://www.ncbi.nlm.nih.gov/pccompound/?term=";
55470
55519
  }
55520
+ else if(me.cfg.refseqid !== undefined) {
55521
+ url = "https://www.ncbi.nlm.nih.gov/protein/";
55522
+ }
55471
55523
  else if(me.cfg.afid !== undefined) {
55472
55524
  url = "https://alphafold.ebi.ac.uk/search/text/";
55473
55525
  }
@@ -55513,12 +55565,14 @@ class SaveFile {
55513
55565
  if(structArray.length === 1) {
55514
55566
  url = "https://www.ncbi.nlm.nih.gov/" + db + "/?term=" + structArray[0];
55515
55567
  me.htmlCls.clickMenuCls.setLogCmd("Entrez " + db + " about PDB " + structArray[0] + ": " + url, false);
55516
- window.open(url, '_blank');
55568
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
55569
+ window.open(url, urlTarget);
55517
55570
  }
55518
55571
  else if(structArray.length === 2) {
55519
55572
  url = "https://www.ncbi.nlm.nih.gov/" + db + "/?term=" + structArray[0] + " OR " + structArray[1];
55520
55573
  me.htmlCls.clickMenuCls.setLogCmd("Entrez " + db + " about PDB " + structArray[0] + " OR " + structArray[1] + ": " + url, false);
55521
- window.open(url, '_blank');
55574
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
55575
+ window.open(url, urlTarget);
55522
55576
  }
55523
55577
  }
55524
55578
  }
@@ -55713,6 +55767,14 @@ class ClickMenu {
55713
55767
  me.htmlCls.dialogCls.openDlg('dl_afid', 'Please input AlphaFold UniProt ID');
55714
55768
  });
55715
55769
 
55770
+ me.myEventCls.onIds("#" + me.pre + "mn1_refseqid", "click", function(e) { me.icn3d; e.preventDefault();
55771
+ me.htmlCls.dialogCls.openDlg('dl_refseqid', 'Please input NCBI RefSeq ID');
55772
+ });
55773
+
55774
+ // me.myEventCls.onIds("#" + me.pre + "mn1_proteinname", "click", function(e) { let ic = me.icn3d; e.preventDefault();
55775
+ // me.htmlCls.dialogCls.openDlg('dl_proteinname', 'Please input protein name to search');
55776
+ // });
55777
+
55716
55778
  // },
55717
55779
  // clkMn1_opmid: function() {
55718
55780
  me.myEventCls.onIds("#" + me.pre + "mn1_opmid", "click", function(e) { me.icn3d; e.preventDefault();
@@ -55785,11 +55847,12 @@ class ClickMenu {
55785
55847
  me.myEventCls.onIds("#" + me.pre + "mn1_fixedversion", "click", function(e) { me.icn3d; e.preventDefault();
55786
55848
  me.htmlCls.dialogCls.openDlg('dl_fixedversion', 'Open Share Link URL in the archived version of iCn3D');
55787
55849
  });
55788
- me.myEventCls.onIds("#" + me.pre + "reload_fixedversion", "click", function(e) { me.icn3d; e.preventDefault();
55850
+ me.myEventCls.onIds("#" + me.pre + "reload_fixedversion", "click", function(e) { let ic = me.icn3d; e.preventDefault();
55789
55851
  let url = $("#" + me.pre + "sharelinkurl").val();
55790
55852
  thisClass.setLogCmd("open " + url, false);
55791
55853
  localStorage.setItem('fixedversion', '1');
55792
- window.open(url, '_blank');
55854
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
55855
+ window.open(url, urlTarget);
55793
55856
  });
55794
55857
  // },
55795
55858
  // clkMn1_mmciffile: function() {
@@ -55821,13 +55884,6 @@ class ClickMenu {
55821
55884
  me.htmlCls.dialogCls.openDlg('dl_gi', 'Please input protein gi');
55822
55885
  });
55823
55886
 
55824
- me.myEventCls.onIds("#" + me.pre + "mn1_refseq", "click", function(e) { me.icn3d; e.preventDefault();
55825
- me.htmlCls.dialogCls.openDlg('dl_grefseq', 'Please input protein RefSeq');
55826
- });
55827
-
55828
- me.myEventCls.onIds("#" + me.pre + "mn1_uniprotid", "click", function(e) { me.icn3d; e.preventDefault();
55829
- me.htmlCls.dialogCls.openDlg('dl_uniprotid', 'Please input UniProt ID');
55830
- });
55831
55887
  // },
55832
55888
  // clkMn1_cid: function() {
55833
55889
  me.myEventCls.onIds("#" + me.pre + "mn1_cid", "click", function(e) { me.icn3d; e.preventDefault();
@@ -56168,14 +56224,16 @@ class ClickMenu {
56168
56224
  // clkMn1_link_structure: function() {
56169
56225
  me.myEventCls.onIds("#" + me.pre + "mn1_link_structure", "click", function(e) { let ic = me.icn3d; e.preventDefault();
56170
56226
  let url = ic.saveFileCls.getLinkToStructureSummary(true);
56171
- window.open(url, '_blank');
56227
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
56228
+ window.open(url, urlTarget);
56172
56229
  });
56173
56230
  // },
56174
56231
  // clkMn1_link_bind: function() {
56175
56232
  me.myEventCls.onIds("#" + me.pre + "mn1_link_bind", "click", function(e) { let ic = me.icn3d; e.preventDefault();
56176
56233
  url = "https://www.ncbi.nlm.nih.gov/pccompound?LinkName=pccompound_structure&from_uid=" + ic.inputid;
56177
56234
  thisClass.setLogCmd("link to 3D protein structures bound to CID " + ic.inputid + ": " + url, false);
56178
- window.open(url, '_blank');
56235
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
56236
+ window.open(url, urlTarget);
56179
56237
  });
56180
56238
  // },
56181
56239
  // clkMn1_link_vast: function() {
@@ -56202,8 +56260,10 @@ class ClickMenu {
56202
56260
  thisClass.setLogCmd("link to structures similar to " + idArray[0] + ": " + url, false);
56203
56261
  }
56204
56262
  }
56205
- window.open(url, '_blank');
56206
56263
  }
56264
+
56265
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
56266
+ window.open(url, urlTarget);
56207
56267
  });
56208
56268
  // },
56209
56269
  // clkMn1_link_pubmed: function() {
@@ -56212,7 +56272,8 @@ class ClickMenu {
56212
56272
  let url;
56213
56273
  url = "https://www.ncbi.nlm.nih.gov/pubmed/?term=" + ic.molTitle;
56214
56274
  thisClass.setLogCmd("link to literature about " + ic.molTitle + ": " + url, false);
56215
- window.open(url, '_blank');
56275
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
56276
+ window.open(url, urlTarget);
56216
56277
  }
56217
56278
  else if(ic.pmid) {
56218
56279
  let idArray = ic.pmid.toString().split('_');
@@ -56225,7 +56286,8 @@ class ClickMenu {
56225
56286
  url = "https://www.ncbi.nlm.nih.gov/pubmed/?term=" + idArray[0] + " OR " + idArray[1];
56226
56287
  thisClass.setLogCmd("link to PubMed IDs " + idArray[0] + ", " + idArray[1] + ": " + url, false);
56227
56288
  }
56228
- window.open(url, '_blank');
56289
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
56290
+ window.open(url, urlTarget);
56229
56291
  }
56230
56292
  else if(isNaN(ic.inputid)) {
56231
56293
  let idArray = ic.inputid.toString().split('_');
@@ -56238,7 +56300,8 @@ class ClickMenu {
56238
56300
  url = "https://www.ncbi.nlm.nih.gov/pubmed/?term=" + idArray[0] + " OR " + idArray[1];
56239
56301
  thisClass.setLogCmd("link to literature about PDB " + idArray[0] + " OR " + idArray[1] + ": " + url, false);
56240
56302
  }
56241
- window.open(url, '_blank');
56303
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
56304
+ window.open(url, urlTarget);
56242
56305
  }
56243
56306
  else {
56244
56307
  if(me.cfg.cid !== undefined) {
@@ -56265,7 +56328,8 @@ class ClickMenu {
56265
56328
  if(text.length > 0) text = text.substr(0, text.length - 4);
56266
56329
  let url = "https://www.ncbi.nlm.nih.gov/protein/?term=" + text;
56267
56330
  thisClass.setLogCmd("link to Entrez protein about PDB " + structArray + ": " + url, false);
56268
- window.open(url, '_blank');
56331
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
56332
+ window.open(url, urlTarget);
56269
56333
  });
56270
56334
  // },
56271
56335
  }
@@ -57566,7 +57630,8 @@ class ClickMenu {
57566
57630
  //else {
57567
57631
  url = url.replace("full.html", "full2.html");
57568
57632
  url += '&closepopup=1';
57569
- window.open(url, '_blank');
57633
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
57634
+ window.open(url, urlTarget);
57570
57635
  thisClass.setLogCmd('side by side | ' + url, true);
57571
57636
  //}
57572
57637
  });
@@ -57956,7 +58021,8 @@ class ClickMenu {
57956
58021
 
57957
58022
  let template = "<!doctype html>\n<head>\n<title>Loading Foldseek</title>\n<style>\n body {\n background-color: #121212;\n color: #fff;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n height: 100vh;\n display: flex;\n flex-direction: column;\n flex-wrap: wrap;\n justify-content: center;\n align-items: center;\n }\n .loader {\n display: block;\n width: 80px;\n height: 80px;\n }\n .loader:after {\n content: \" \";\n display: block;\n width: 64px;\n height: 64px;\n margin: 8px;\n border-radius: 50%;\n border: 6px solid #fff;\n border-color: #fff transparent #fff transparent;\n animation: loader 1.2s linear infinite;\n }\n @keyframes loader {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n</style>\n</head>\n<body>\n<div>Foldseek is loading...</div><div class=\"loader\"></div>\n</body>";
57958
58023
 
57959
- let w = window.open('', '_blank');
58024
+ let urlTarget = '_blank';
58025
+ let w = window.open('', urlTarget);
57960
58026
  w.document.body.innerHTML = template;
57961
58027
 
57962
58028
  $.ajax({
@@ -58544,13 +58610,20 @@ class SetMenu {
58544
58610
  html += me.htmlCls.setHtmlCls.getLink('mn1_mmdbid', 'NCBI MMDB ID (annotation) ' + me.htmlCls.wifiStr, undefined, 2);
58545
58611
  html += me.htmlCls.setHtmlCls.getLink('mn1_mmtfid', 'RCSB MMTF ID (fast) ' + me.htmlCls.wifiStr, undefined, 2);
58546
58612
  html += me.htmlCls.setHtmlCls.getLink('mn1_pdbid', 'RCSB PDB ID ' + me.htmlCls.wifiStr, undefined, 2);
58547
- html += me.htmlCls.setHtmlCls.getLink('mn1_afid', 'AlphaFold UniProt ID ' + me.htmlCls.wifiStr, undefined, 2);
58613
+
58614
+ html += me.htmlCls.setHtmlCls.getMenuText('mn1_afwrap', 'AlphaFold Structures', undefined, undefined, 2);
58615
+ html += "<ul>";
58616
+
58617
+ html += me.htmlCls.setHtmlCls.getLink('mn1_afid', 'UniProt ID ' + me.htmlCls.wifiStr, undefined, 3);
58618
+ html += me.htmlCls.setHtmlCls.getLink('mn1_refseqid', 'NCBI RefSeq ID ' + me.htmlCls.wifiStr, undefined, 3);
58619
+ // html += me.htmlCls.setHtmlCls.getLink('mn1_proteinname', 'Protein Name ' + me.htmlCls.wifiStr, undefined, 3);
58620
+ html += "</ul>";
58621
+
58622
+
58548
58623
  html += me.htmlCls.setHtmlCls.getLink('mn1_opmid', 'OPM PDB ID ' + me.htmlCls.wifiStr, undefined, 2);
58549
58624
  html += me.htmlCls.setHtmlCls.getLink('mn1_mmcifid', 'RCSB mmCIF ID ' + me.htmlCls.wifiStr, undefined, 2);
58550
- html += me.htmlCls.setHtmlCls.getLink('mn1_gi', 'NCBI gi ' + me.htmlCls.wifiStr, undefined, 2);
58551
- //html += me.htmlCls.setHtmlCls.getLink('mn1_refseq', 'NCBI RefSeq ' + me.htmlCls.wifiStr, undefined, 2);
58625
+ //html += me.htmlCls.setHtmlCls.getLink('mn1_gi', 'NCBI gi ' + me.htmlCls.wifiStr, undefined, 2);
58552
58626
 
58553
- //html += me.htmlCls.setHtmlCls.getLink('mn1_uniprotid', 'UniProt ID ' + me.htmlCls.wifiStr);
58554
58627
  html += me.htmlCls.setHtmlCls.getLink('mn1_cid', 'PubChem CID ' + me.htmlCls.wifiStr, 1, 2);
58555
58628
 
58556
58629
  html += "</ul>";
@@ -60758,6 +60831,16 @@ class SetDialog {
60758
60831
  + me.htmlCls.buttonStr + "reload_afmapfull' style='margin-left:30px'>Load Full (slow)</button>";
60759
60832
  html += "</div>";
60760
60833
 
60834
+ html += me.htmlCls.divStr + "dl_refseqid' class='" + dialogClass + "'>";
60835
+ html += "NCBI RefSeq ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "refseqid' value='0308234A' size=8> ";
60836
+ html += me.htmlCls.buttonStr + "reload_refseq'>Load</button>";
60837
+ html += "</div>";
60838
+
60839
+ // html += me.htmlCls.divStr + "dl_proteinname' class='" + dialogClass + "'>";
60840
+ // html += "PDB ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "proteinname' value='kinase' size=8> ";
60841
+ // html += me.htmlCls.buttonStr + "reload_proteinname'>Load</button>";
60842
+ // html += "</div>";
60843
+
60761
60844
  html += me.htmlCls.divStr + "dl_opmid' class='" + dialogClass + "'>";
60762
60845
  html += "<a href='https://opm.phar.umich.edu' target='_blank'>Orientations of Proteins in Membranes(OPM)</a> PDB ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "opmid' value='6JXR' size=8> ";
60763
60846
  html += me.htmlCls.buttonStr + "reload_opm'>Load</button>";
@@ -60976,17 +61059,6 @@ class SetDialog {
60976
61059
  html += me.htmlCls.buttonStr + "reload_gi'>Load</button>";
60977
61060
  html += "</div>";
60978
61061
 
60979
- html += me.htmlCls.divStr + "dl_refseq' class='" + dialogClass + "'>";
60980
- html += "Protein RefSeq: " + me.htmlCls.inputTextStr + "id='" + me.pre + "refseq' value='0308234A' size=8> ";
60981
- html += me.htmlCls.buttonStr + "reload_refseq'>Load</button>";
60982
- html += "</div>";
60983
-
60984
- html += me.htmlCls.divStr + "dl_uniprotid' class='" + dialogClass + "'>";
60985
- html += "Note: A list of structures will be shown. Click \"View in iCn3D\" to view each structure in 3D.<br><br>";
60986
- html += "UniProt ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "uniprotid' value='P0DTC2' size=8> ";
60987
- html += me.htmlCls.buttonStr + "reload_uniprotid'>Load</button>";
60988
- html += "</div>";
60989
-
60990
61062
  html += me.htmlCls.divStr + "dl_cid' class='" + dialogClass + "'>";
60991
61063
  html += "PubChem CID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "cid' value='2244' size=8> ";
60992
61064
  html += me.htmlCls.buttonStr + "reload_cid'>Load</button>";
@@ -61990,7 +62062,7 @@ class Events {
61990
62062
  $("#" + me.pre + id).resizable();
61991
62063
  }
61992
62064
 
61993
- launchMmdb(ids, bBiounit, hostUrl) { let me = this.icn3dui; me.icn3d;
62065
+ launchMmdb(ids, bBiounit, hostUrl) { let me = this.icn3dui, ic = me.icn3d;
61994
62066
  let flag = bBiounit ? '1' : '0';
61995
62067
 
61996
62068
  ids = ids.replace(/,/g, ' ').replace(/\s+/g, ',').trim();
@@ -62003,11 +62075,13 @@ class Events {
62003
62075
  let idArray = ids.split(',');
62004
62076
  if(idArray.length == 1 && (idArray[0].length == 4 || !isNaN(idArray[0])) ) {
62005
62077
  me.htmlCls.clickMenuCls.setLogCmd("load mmdb" + flag + " " + ids, false);
62006
- window.open(hostUrl + '?mmdbid=' + ids + '&bu=' + flag, '_blank');
62078
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62079
+ window.open(hostUrl + '?mmdbid=' + ids + '&bu=' + flag, urlTarget);
62007
62080
  }
62008
62081
  else {
62009
62082
  me.htmlCls.clickMenuCls.setLogCmd("load mmdbaf" + flag + " " + ids, false);
62010
- window.open(hostUrl + '?mmdbafid=' + ids + '&bu=' + flag, '_blank');
62083
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62084
+ window.open(hostUrl + '?mmdbafid=' + ids + '&bu=' + flag, urlTarget);
62011
62085
  }
62012
62086
  }
62013
62087
 
@@ -62356,18 +62430,20 @@ class Events {
62356
62430
 
62357
62431
  // },
62358
62432
  // clickReload_mmtf: function() {
62359
- me.myEventCls.onIds("#" + me.pre + "reload_vastplus", "click", function(e) { me.icn3d;
62433
+ me.myEventCls.onIds("#" + me.pre + "reload_vastplus", "click", function(e) { let ic = me.icn3d;
62360
62434
  e.preventDefault();
62361
62435
  if(!me.cfg.notebook) dialog.dialog( "close" );
62362
62436
  me.htmlCls.clickMenuCls.setLogCmd("vast+ search " + $("#" + me.pre + "vastpluspdbid").val(), false);
62363
- window.open('https://www.ncbi.nlm.nih.gov/Structure/vastplus/vastplus.cgi?uid=' + $("#" + me.pre + "vastpluspdbid").val(), '_blank');
62437
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62438
+ window.open('https://www.ncbi.nlm.nih.gov/Structure/vastplus/vastplus.cgi?uid=' + $("#" + me.pre + "vastpluspdbid").val(), urlTarget);
62364
62439
  });
62365
62440
 
62366
- me.myEventCls.onIds("#" + me.pre + "reload_vast", "click", function(e) { me.icn3d;
62441
+ me.myEventCls.onIds("#" + me.pre + "reload_vast", "click", function(e) { let ic = me.icn3d;
62367
62442
  e.preventDefault();
62368
62443
  if(!me.cfg.notebook) dialog.dialog( "close" );
62369
62444
  me.htmlCls.clickMenuCls.setLogCmd("vast search " + $("#" + me.pre + "vastpdbid").val() + "_" + $("#" + me.pre + "vastchainid").val(), false);
62370
- window.open('https://www.ncbi.nlm.nih.gov/Structure/vast/vastsrv.cgi?pdbid=' + $("#" + me.pre + "vastpdbid").val() + '&chain=' + $("#" + me.pre + "vastchainid").val(), '_blank');
62445
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62446
+ window.open('https://www.ncbi.nlm.nih.gov/Structure/vast/vastsrv.cgi?pdbid=' + $("#" + me.pre + "vastpdbid").val() + '&chain=' + $("#" + me.pre + "vastchainid").val(), urlTarget);
62371
62447
  });
62372
62448
 
62373
62449
  me.myEventCls.onIds("#" + me.pre + "reload_foldseek", "click", function(e) { me.icn3d;
@@ -62385,50 +62461,55 @@ class Events {
62385
62461
  window.open(hostUrl + '?chainalign=' + alignment_final + '&aligntool=tmalign&showalignseq=1&bu=0', '_self');
62386
62462
  });
62387
62463
 
62388
- me.myEventCls.onIds("#" + me.pre + "reload_mmtf", "click", function(e) { me.icn3d;
62464
+ me.myEventCls.onIds("#" + me.pre + "reload_mmtf", "click", function(e) { let ic = me.icn3d;
62389
62465
  e.preventDefault();
62390
62466
  if(!me.cfg.notebook) dialog.dialog( "close" );
62391
62467
  me.htmlCls.clickMenuCls.setLogCmd("load mmtf " + $("#" + me.pre + "mmtfid").val(), false);
62392
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmtfid=' + $("#" + me.pre + "mmtfid").val(), '_blank');
62393
- window.open(hostUrl + '?mmtfid=' + $("#" + me.pre + "mmtfid").val(), '_blank');
62468
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmtfid=' + $("#" + me.pre + "mmtfid").val(), urlTarget);
62469
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62470
+ window.open(hostUrl + '?mmtfid=' + $("#" + me.pre + "mmtfid").val(), urlTarget);
62394
62471
  });
62395
62472
 
62396
- me.myEventCls.onIds("#" + me.pre + "mmtfid", "keyup", function(e) { me.icn3d;
62473
+ me.myEventCls.onIds("#" + me.pre + "mmtfid", "keyup", function(e) { let ic = me.icn3d;
62397
62474
  if (e.keyCode === 13) {
62398
62475
  e.preventDefault();
62399
62476
  if(!me.cfg.notebook) dialog.dialog( "close" );
62400
62477
  me.htmlCls.clickMenuCls.setLogCmd("load mmtf " + $("#" + me.pre + "mmtfid").val(), false);
62401
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmtfid=' + $("#" + me.pre + "mmtfid").val(), '_blank');
62402
- window.open(hostUrl + '?mmtfid=' + $("#" + me.pre + "mmtfid").val(), '_blank');
62478
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmtfid=' + $("#" + me.pre + "mmtfid").val(), urlTarget);
62479
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62480
+ window.open(hostUrl + '?mmtfid=' + $("#" + me.pre + "mmtfid").val(), urlTarget);
62403
62481
  }
62404
62482
  });
62405
62483
 
62406
62484
  // },
62407
62485
  // clickReload_pdb: function() {
62408
- me.myEventCls.onIds("#" + me.pre + "reload_pdb", "click", function(e) { me.icn3d;
62486
+ me.myEventCls.onIds("#" + me.pre + "reload_pdb", "click", function(e) { let ic = me.icn3d;
62409
62487
  e.preventDefault();
62410
62488
  if(!me.cfg.notebook) dialog.dialog( "close" );
62411
62489
  me.htmlCls.clickMenuCls.setLogCmd("load pdb " + $("#" + me.pre + "pdbid").val(), false);
62412
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?pdbid=' + $("#" + me.pre + "pdbid").val(), '_blank');
62413
- window.open(hostUrl + '?pdbid=' + $("#" + me.pre + "pdbid").val(), '_blank');
62490
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?pdbid=' + $("#" + me.pre + "pdbid").val(), urlTarget);
62491
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62492
+ window.open(hostUrl + '?pdbid=' + $("#" + me.pre + "pdbid").val(), urlTarget);
62414
62493
  });
62415
62494
 
62416
- me.myEventCls.onIds("#" + me.pre + "pdbid", "keyup", function(e) { me.icn3d;
62495
+ me.myEventCls.onIds("#" + me.pre + "pdbid", "keyup", function(e) { let ic = me.icn3d;
62417
62496
  if (e.keyCode === 13) {
62418
62497
  e.preventDefault();
62419
62498
  if(!me.cfg.notebook) dialog.dialog( "close" );
62420
62499
  me.htmlCls.clickMenuCls.setLogCmd("load pdb " + $("#" + me.pre + "pdbid").val(), false);
62421
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?pdbid=' + $("#" + me.pre + "pdbid").val(), '_blank');
62422
- window.open(hostUrl + '?pdbid=' + $("#" + me.pre + "pdbid").val(), '_blank');
62500
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?pdbid=' + $("#" + me.pre + "pdbid").val(), urlTarget);
62501
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62502
+ window.open(hostUrl + '?pdbid=' + $("#" + me.pre + "pdbid").val(), urlTarget);
62423
62503
  }
62424
62504
  });
62425
62505
 
62426
- me.myEventCls.onIds("#" + me.pre + "reload_af", "click", function(e) { me.icn3d;
62506
+ me.myEventCls.onIds("#" + me.pre + "reload_af", "click", function(e) { let ic = me.icn3d;
62427
62507
  e.preventDefault();
62428
62508
  if(!me.cfg.notebook) dialog.dialog( "close" );
62429
62509
  me.htmlCls.clickMenuCls.setLogCmd("load af " + $("#" + me.pre + "afid").val(), false);
62430
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?afid=' + $("#" + me.pre + "afid").val(), '_blank');
62431
- window.open(hostUrl + '?afid=' + $("#" + me.pre + "afid").val(), '_blank');
62510
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?afid=' + $("#" + me.pre + "afid").val(), urlTarget);
62511
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62512
+ window.open(hostUrl + '?afid=' + $("#" + me.pre + "afid").val(), urlTarget);
62432
62513
  });
62433
62514
 
62434
62515
  me.myEventCls.onIds("#" + me.pre + "reload_afmap", "click", function(e) { let ic = me.icn3d;
@@ -62450,79 +62531,87 @@ class Events {
62450
62531
  ic.contactMapCls.afErrorMap(afid, true);
62451
62532
  });
62452
62533
 
62453
- me.myEventCls.onIds("#" + me.pre + "afid", "keyup", function(e) { me.icn3d;
62534
+ me.myEventCls.onIds("#" + me.pre + "afid", "keyup", function(e) { let ic = me.icn3d;
62454
62535
  if (e.keyCode === 13) {
62455
62536
  e.preventDefault();
62456
62537
  if(!me.cfg.notebook) dialog.dialog( "close" );
62457
62538
  me.htmlCls.clickMenuCls.setLogCmd("load af " + $("#" + me.pre + "afid").val(), false);
62458
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?afid=' + $("#" + me.pre + "afid").val(), '_blank');
62459
- window.open(hostUrl + '?afid=' + $("#" + me.pre + "afid").val(), '_blank');
62539
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?afid=' + $("#" + me.pre + "afid").val(), urlTarget);
62540
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62541
+ window.open(hostUrl + '?afid=' + $("#" + me.pre + "afid").val(), urlTarget);
62460
62542
  }
62461
62543
  });
62462
62544
 
62463
62545
  // },
62464
62546
  // clickReload_opm: function() {
62465
- me.myEventCls.onIds("#" + me.pre + "reload_opm", "click", function(e) { me.icn3d;
62547
+ me.myEventCls.onIds("#" + me.pre + "reload_opm", "click", function(e) { let ic = me.icn3d;
62466
62548
  e.preventDefault();
62467
62549
  if(!me.cfg.notebook) dialog.dialog( "close" );
62468
62550
  me.htmlCls.clickMenuCls.setLogCmd("load opm " + $("#" + me.pre + "opmid").val(), false);
62469
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?opmid=' + $("#" + me.pre + "opmid").val(), '_blank');
62470
- window.open(hostUrl + '?opmid=' + $("#" + me.pre + "opmid").val(), '_blank');
62551
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?opmid=' + $("#" + me.pre + "opmid").val(), urlTarget);
62552
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62553
+ window.open(hostUrl + '?opmid=' + $("#" + me.pre + "opmid").val(), urlTarget);
62471
62554
  });
62472
62555
 
62473
- me.myEventCls.onIds("#" + me.pre + "opmid", "keyup", function(e) { me.icn3d;
62556
+ me.myEventCls.onIds("#" + me.pre + "opmid", "keyup", function(e) { let ic = me.icn3d;
62474
62557
  if (e.keyCode === 13) {
62475
62558
  e.preventDefault();
62476
62559
  if(!me.cfg.notebook) dialog.dialog( "close" );
62477
62560
  me.htmlCls.clickMenuCls.setLogCmd("load opm " + $("#" + me.pre + "opmid").val(), false);
62478
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?opmid=' + $("#" + me.pre + "opmid").val(), '_blank');
62479
- window.open(hostUrl + '?opmid=' + $("#" + me.pre + "opmid").val(), '_blank');
62561
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?opmid=' + $("#" + me.pre + "opmid").val(), urlTarget);
62562
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62563
+ window.open(hostUrl + '?opmid=' + $("#" + me.pre + "opmid").val(), urlTarget);
62480
62564
  }
62481
62565
  });
62482
62566
 
62483
62567
  // },
62484
62568
  // clickReload_align_refined: function() {
62485
- me.myEventCls.onIds("#" + me.pre + "reload_align_refined", "click", function(e) { me.icn3d;
62569
+ me.myEventCls.onIds("#" + me.pre + "reload_align_refined", "click", function(e) { let ic = me.icn3d;
62486
62570
  e.preventDefault();
62487
62571
  if(!me.cfg.notebook) dialog.dialog( "close" );
62488
62572
  let alignment = $("#" + me.pre + "alignid1").val() + "," + $("#" + me.pre + "alignid2").val();
62489
62573
  me.htmlCls.clickMenuCls.setLogCmd("load alignment " + alignment + ' | parameters &atype=1&bu=1', false);
62490
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?align=' + alignment + '&showalignseq=1&atype=1', '_blank');
62491
- window.open(hostUrl + '?align=' + alignment + '&showalignseq=1&atype=1&bu=1', '_blank');
62574
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?align=' + alignment + '&showalignseq=1&atype=1', urlTarget);
62575
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62576
+ window.open(hostUrl + '?align=' + alignment + '&showalignseq=1&atype=1&bu=1', urlTarget);
62492
62577
  });
62493
62578
  // },
62494
62579
  // clickReload_align_ori: function() {
62495
- me.myEventCls.onIds("#" + me.pre + "reload_align_ori", "click", function(e) { me.icn3d;
62580
+ me.myEventCls.onIds("#" + me.pre + "reload_align_ori", "click", function(e) { let ic = me.icn3d;
62496
62581
  e.preventDefault();
62497
62582
  if(!me.cfg.notebook) dialog.dialog( "close" );
62498
62583
  let alignment = $("#" + me.pre + "alignid1").val() + "," + $("#" + me.pre + "alignid2").val();
62499
62584
  me.htmlCls.clickMenuCls.setLogCmd("load alignment " + alignment + ' | parameters &atype=0&bu=1', false);
62500
- //window.open( me.htmlCls.baseUrl + 'icn3d/full.html?align=' + alignment + '&showalignseq=1&atype=0', '_blank');
62501
- window.open(hostUrl + '?align=' + alignment + '&showalignseq=1&atype=0&bu=1', '_blank');
62585
+ //window.open( me.htmlCls.baseUrl + 'icn3d/full.html?align=' + alignment + '&showalignseq=1&atype=0', urlTarget);
62586
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62587
+ window.open(hostUrl + '?align=' + alignment + '&showalignseq=1&atype=0&bu=1', urlTarget);
62502
62588
  });
62503
62589
 
62504
- me.myEventCls.onIds("#" + me.pre + "reload_align_tmalign", "click", function(e) { me.icn3d;
62590
+ me.myEventCls.onIds("#" + me.pre + "reload_align_tmalign", "click", function(e) { let ic = me.icn3d;
62505
62591
  e.preventDefault();
62506
62592
  if(!me.cfg.notebook) dialog.dialog( "close" );
62507
62593
  let alignment = $("#" + me.pre + "alignid1").val() + "," + $("#" + me.pre + "alignid2").val();
62508
62594
  me.htmlCls.clickMenuCls.setLogCmd("load alignment " + alignment + ' | parameters &atype=2&bu=1', false);
62509
- window.open(hostUrl + '?align=' + alignment + '&showalignseq=1&atype=2&bu=1', '_blank');
62595
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62596
+ window.open(hostUrl + '?align=' + alignment + '&showalignseq=1&atype=2&bu=1', urlTarget);
62510
62597
  });
62511
62598
 
62512
- me.myEventCls.onIds("#" + me.pre + "reload_alignaf", "click", function(e) { me.icn3d;
62599
+ me.myEventCls.onIds("#" + me.pre + "reload_alignaf", "click", function(e) { let ic = me.icn3d;
62513
62600
  e.preventDefault();
62514
62601
  if(!me.cfg.notebook) dialog.dialog( "close" );
62515
62602
  let alignment = $("#" + me.pre + "alignafid1").val() + "_A," + $("#" + me.pre + "alignafid2").val() + "_A";
62516
62603
  me.htmlCls.clickMenuCls.setLogCmd("load chains " + alignment + " | residues | resdef ", false);
62517
- window.open(hostUrl + '?chainalign=' + alignment + '&resnum=&resdef=&showalignseq=1', '_blank');
62604
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62605
+ window.open(hostUrl + '?chainalign=' + alignment + '&resnum=&resdef=&showalignseq=1', urlTarget);
62518
62606
  });
62519
62607
 
62520
- me.myEventCls.onIds("#" + me.pre + "reload_alignaf_tmalign", "click", function(e) { me.icn3d;
62608
+ me.myEventCls.onIds("#" + me.pre + "reload_alignaf_tmalign", "click", function(e) { let ic = me.icn3d;
62521
62609
  e.preventDefault();
62522
62610
  if(!me.cfg.notebook) dialog.dialog( "close" );
62523
62611
  let alignment = $("#" + me.pre + "alignafid1").val() + "_A," + $("#" + me.pre + "alignafid2").val() + "_A";
62524
62612
  me.htmlCls.clickMenuCls.setLogCmd("load chains " + alignment + " | residues | resdef | align tmalign", false);
62525
- window.open(hostUrl + '?chainalign=' + alignment + '&aligntool=tmalign&resnum=&resdef=&showalignseq=1', '_blank');
62613
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62614
+ window.open(hostUrl + '?chainalign=' + alignment + '&aligntool=tmalign&resnum=&resdef=&showalignseq=1', urlTarget);
62526
62615
  });
62527
62616
  // },
62528
62617
  // clickReload_chainalign: function() {
@@ -62541,11 +62630,11 @@ class Events {
62541
62630
  }
62542
62631
 
62543
62632
  me.htmlCls.clickMenuCls.setLogCmd("load chains " + alignment_final + " | residues " + resalign + " | resdef " + predefinedres, false);
62544
- window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=' + resalign + '&resdef=' + predefinedres + '&showalignseq=1', '_blank');
62633
+ window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=' + resalign + '&resdef=' + predefinedres + '&showalignseq=1', urlTarget);
62545
62634
  });
62546
62635
  */
62547
62636
 
62548
- me.myEventCls.onIds("#" + me.pre + "reload_chainalign_asym", "click", function(e) { me.icn3d;
62637
+ me.myEventCls.onIds("#" + me.pre + "reload_chainalign_asym", "click", function(e) { let ic = me.icn3d;
62549
62638
  e.preventDefault();
62550
62639
  if(!me.cfg.notebook) dialog.dialog( "close" );
62551
62640
 
@@ -62553,10 +62642,11 @@ class Events {
62553
62642
  let alignment_final = thisClass.convertUniProtInChains(alignment);
62554
62643
 
62555
62644
  me.htmlCls.clickMenuCls.setLogCmd("load chains " + alignment_final + " on asymmetric unit | residues | resdef ", false);
62556
- window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=&resdef=&showalignseq=1&bu=0', '_blank');
62645
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62646
+ window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=&resdef=&showalignseq=1&bu=0', urlTarget);
62557
62647
  });
62558
62648
 
62559
- me.myEventCls.onIds("#" + me.pre + "reload_chainalign_asym2", "click", function(e) { me.icn3d;
62649
+ me.myEventCls.onIds("#" + me.pre + "reload_chainalign_asym2", "click", function(e) { let ic = me.icn3d;
62560
62650
  e.preventDefault();
62561
62651
  if(!me.cfg.notebook) dialog.dialog( "close" );
62562
62652
 
@@ -62565,10 +62655,11 @@ class Events {
62565
62655
  let resalign = $("#" + me.pre + "resalignids").val();
62566
62656
 
62567
62657
  me.htmlCls.clickMenuCls.setLogCmd("load chains " + alignment_final + " on asymmetric unit | residues " + resalign + " | resdef ", false);
62568
- window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=' + resalign + '&resdef=&showalignseq=1&bu=0', '_blank');
62658
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62659
+ window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=' + resalign + '&resdef=&showalignseq=1&bu=0', urlTarget);
62569
62660
  });
62570
62661
 
62571
- me.myEventCls.onIds("#" + me.pre + "reload_chainalign_asym3", "click", function(e) { me.icn3d;
62662
+ me.myEventCls.onIds("#" + me.pre + "reload_chainalign_asym3", "click", function(e) { let ic = me.icn3d;
62572
62663
  e.preventDefault();
62573
62664
  if(!me.cfg.notebook) dialog.dialog( "close" );
62574
62665
 
@@ -62582,7 +62673,8 @@ class Events {
62582
62673
  }
62583
62674
 
62584
62675
  me.htmlCls.clickMenuCls.setLogCmd("load chains " + alignment_final + " on asymmetric unit | residues | resdef " + predefinedres, false);
62585
- window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=&resdef=' + predefinedres + '&showalignseq=1&bu=0', '_blank');
62676
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62677
+ window.open(hostUrl + '?chainalign=' + alignment_final + '&resnum=&resdef=' + predefinedres + '&showalignseq=1&bu=0', urlTarget);
62586
62678
  });
62587
62679
 
62588
62680
  me.myEventCls.onIds("#" + me.pre + "reload_chainalign_asym4", "click", function(e) { let ic = me.icn3d;
@@ -62607,7 +62699,7 @@ class Events {
62607
62699
  me.htmlCls.clickMenuCls.setLogCmd("realign predefined " + alignment_final + " " + predefinedres, true);
62608
62700
  });
62609
62701
 
62610
- me.myEventCls.onIds("#" + me.pre + "reload_chainalign_tmalign", "click", function(e) { me.icn3d;
62702
+ me.myEventCls.onIds("#" + me.pre + "reload_chainalign_tmalign", "click", function(e) { let ic = me.icn3d;
62611
62703
  e.preventDefault();
62612
62704
  if(!me.cfg.notebook) dialog.dialog( "close" );
62613
62705
 
@@ -62615,7 +62707,8 @@ class Events {
62615
62707
  let alignment_final = thisClass.convertUniProtInChains(alignment);
62616
62708
 
62617
62709
  me.htmlCls.clickMenuCls.setLogCmd("load chains " + alignment_final + " on asymmetric unit | residues | resdef | align tmalign", false);
62618
- window.open(hostUrl + '?chainalign=' + alignment_final + '&aligntool=tmalign&resnum=&resdef=&showalignseq=1&bu=0', '_blank');
62710
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62711
+ window.open(hostUrl + '?chainalign=' + alignment_final + '&aligntool=tmalign&resnum=&resdef=&showalignseq=1&bu=0', urlTarget);
62619
62712
  });
62620
62713
 
62621
62714
  me.myEventCls.onIds("#" + me.pre + "reload_mutation_3d", "click", function(e) { let ic = me.icn3d;
@@ -62647,7 +62740,8 @@ class Events {
62647
62740
  else {
62648
62741
  let mmdbid = mutationids.substr(0, mutationids.indexOf('_'));
62649
62742
  me.htmlCls.clickMenuCls.setLogCmd("3d of mutation " + mutationids, false);
62650
- window.open(hostUrl + '?' + idsource + '=' + mmdbid + '&command=scap 3d ' + mutationids + '; select displayed set', '_blank');
62743
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62744
+ window.open(hostUrl + '?' + idsource + '=' + mmdbid + '&command=scap 3d ' + mutationids + '; select displayed set', urlTarget);
62651
62745
  }
62652
62746
  });
62653
62747
 
@@ -62680,7 +62774,8 @@ class Events {
62680
62774
  else {
62681
62775
  let mmdbid = mutationids.substr(0, mutationids.indexOf('_'));
62682
62776
  me.htmlCls.clickMenuCls.setLogCmd("pdb of mutation " + mutationids, false);
62683
- window.open(hostUrl + '?' + idsource + '=' + mmdbid + '&command=scap pdb ' + mutationids + '; select displayed set', '_blank');
62777
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62778
+ window.open(hostUrl + '?' + idsource + '=' + mmdbid + '&command=scap pdb ' + mutationids + '; select displayed set', urlTarget);
62684
62779
  }
62685
62780
  });
62686
62781
 
@@ -62737,44 +62832,49 @@ class Events {
62737
62832
  ic.resid2specCls.residueids2spec(residArray);
62738
62833
 
62739
62834
  me.htmlCls.clickMenuCls.setLogCmd("interaction change of mutation " + mutationids, false);
62740
- window.open(hostUrl + '?' + idsource + '=' + mmdbid + '&command=scap interaction ' + mutationids, '_blank');
62835
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62836
+ window.open(hostUrl + '?' + idsource + '=' + mmdbid + '&command=scap interaction ' + mutationids, urlTarget);
62741
62837
  }
62742
62838
  });
62743
62839
 
62744
62840
  // },
62745
62841
  // clickReload_mmcif: function() {
62746
- me.myEventCls.onIds("#" + me.pre + "reload_mmcif", "click", function(e) { me.icn3d;
62842
+ me.myEventCls.onIds("#" + me.pre + "reload_mmcif", "click", function(e) { let ic = me.icn3d;
62747
62843
  e.preventDefault();
62748
62844
  if(!me.cfg.notebook) dialog.dialog( "close" );
62749
62845
  me.htmlCls.clickMenuCls.setLogCmd("load mmcif " + $("#" + me.pre + "mmcifid").val(), false);
62750
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmcifid=' + $("#" + me.pre + "mmcifid").val(), '_blank');
62751
- window.open(hostUrl + '?mmcifid=' + $("#" + me.pre + "mmcifid").val(), '_blank');
62846
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmcifid=' + $("#" + me.pre + "mmcifid").val(), urlTarget);
62847
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62848
+ window.open(hostUrl + '?mmcifid=' + $("#" + me.pre + "mmcifid").val(), urlTarget);
62752
62849
  });
62753
62850
 
62754
- me.myEventCls.onIds("#" + me.pre + "mmcifid", "keyup", function(e) { me.icn3d;
62851
+ me.myEventCls.onIds("#" + me.pre + "mmcifid", "keyup", function(e) { let ic = me.icn3d;
62755
62852
  if (e.keyCode === 13) {
62756
62853
  e.preventDefault();
62757
62854
  if(!me.cfg.notebook) dialog.dialog( "close" );
62758
62855
  me.htmlCls.clickMenuCls.setLogCmd("load mmcif " + $("#" + me.pre + "mmcifid").val(), false);
62759
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmcifid=' + $("#" + me.pre + "mmcifid").val(), '_blank');
62760
- window.open(hostUrl + '?mmcifid=' + $("#" + me.pre + "mmcifid").val(), '_blank');
62856
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?mmcifid=' + $("#" + me.pre + "mmcifid").val(), urlTarget);
62857
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62858
+ window.open(hostUrl + '?mmcifid=' + $("#" + me.pre + "mmcifid").val(), urlTarget);
62761
62859
  }
62762
62860
  });
62763
62861
 
62764
62862
  // },
62765
62863
  // clickReload_mmdb: function() {
62766
- me.myEventCls.onIds("#" + me.pre + "reload_mmdb", "click", function(e) { me.icn3d;
62864
+ me.myEventCls.onIds("#" + me.pre + "reload_mmdb", "click", function(e) { let ic = me.icn3d;
62767
62865
  e.preventDefault();
62768
62866
  //if(!me.cfg.notebook) dialog.dialog( "close" );
62769
62867
  me.htmlCls.clickMenuCls.setLogCmd("load mmdb1 " + $("#" + me.pre + "mmdbid").val(), false);
62770
- window.open(hostUrl + '?mmdbid=' + $("#" + me.pre + "mmdbid").val() + '&bu=1', '_blank');
62868
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62869
+ window.open(hostUrl + '?mmdbid=' + $("#" + me.pre + "mmdbid").val() + '&bu=1', urlTarget);
62771
62870
  });
62772
62871
 
62773
- me.myEventCls.onIds("#" + me.pre + "reload_mmdb_asym", "click", function(e) { me.icn3d;
62872
+ me.myEventCls.onIds("#" + me.pre + "reload_mmdb_asym", "click", function(e) { let ic = me.icn3d;
62774
62873
  e.preventDefault();
62775
62874
  //if(!me.cfg.notebook) dialog.dialog( "close" );
62776
62875
  me.htmlCls.clickMenuCls.setLogCmd("load mmdb0 " + $("#" + me.pre + "mmdbid").val(), false);
62777
- window.open(hostUrl + '?mmdbid=' + $("#" + me.pre + "mmdbid").val() + '&bu=0', '_blank');
62876
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62877
+ window.open(hostUrl + '?mmdbid=' + $("#" + me.pre + "mmdbid").val() + '&bu=0', urlTarget);
62778
62878
  });
62779
62879
 
62780
62880
  me.myEventCls.onIds("#" + me.pre + "reload_mmdbaf", "click", function(e) { me.icn3d;
@@ -62796,12 +62896,13 @@ class Events {
62796
62896
  thisClass.launchMmdb(ids, 0, hostUrl);
62797
62897
  });
62798
62898
 
62799
- me.myEventCls.onIds("#" + me.pre + "mmdbid", "keyup", function(e) { me.icn3d;
62899
+ me.myEventCls.onIds("#" + me.pre + "mmdbid", "keyup", function(e) { let ic = me.icn3d;
62800
62900
  if (e.keyCode === 13) {
62801
62901
  e.preventDefault();
62802
62902
  //if(!me.cfg.notebook) dialog.dialog( "close" );
62803
62903
  me.htmlCls.clickMenuCls.setLogCmd("load mmdb1 " + $("#" + me.pre + "mmdbid").val(), false);
62804
- window.open(hostUrl + '?mmdbid=' + $("#" + me.pre + "mmdbid").val() + '&bu=1', '_blank');
62904
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62905
+ window.open(hostUrl + '?mmdbid=' + $("#" + me.pre + "mmdbid").val() + '&bu=1', urlTarget);
62805
62906
  }
62806
62907
  });
62807
62908
 
@@ -62816,7 +62917,7 @@ class Events {
62816
62917
 
62817
62918
  // },
62818
62919
  // clickReload_blast_rep_id: function() {
62819
- me.myEventCls.onIds("#" + me.pre + "reload_blast_rep_id", "click", function(e) { me.icn3d;
62920
+ me.myEventCls.onIds("#" + me.pre + "reload_blast_rep_id", "click", function(e) { let ic = me.icn3d;
62820
62921
  e.preventDefault();
62821
62922
  if(!me.cfg.notebook) dialog.dialog( "close" );
62822
62923
  let query_id = $("#" + me.pre + "query_id").val();
@@ -62825,13 +62926,14 @@ class Events {
62825
62926
  me.htmlCls.clickMenuCls.setLogCmd("load seq_struct_ids " + query_id + "," + blast_rep_id, false);
62826
62927
  query_id =(query_id !== '' && query_id !== undefined) ? query_id : query_fasta;
62827
62928
  //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?from=icn3d&blast_rep_id=' + blast_rep_id
62929
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62828
62930
  window.open(hostUrl + '?from=icn3d&alg=blast&blast_rep_id=' + blast_rep_id
62829
62931
  + '&query_id=' + query_id
62830
62932
  + '&command=view annotations; set annotation cdd; set annotation site; set view detailed view; select chain '
62831
- + blast_rep_id + '; show selection', '_blank');
62933
+ + blast_rep_id + '; show selection', urlTarget);
62832
62934
  });
62833
62935
 
62834
- me.myEventCls.onIds("#" + me.pre + "reload_alignsw", "click", function(e) { me.icn3d;
62936
+ me.myEventCls.onIds("#" + me.pre + "reload_alignsw", "click", function(e) { let ic = me.icn3d;
62835
62937
  e.preventDefault();
62836
62938
  if(!me.cfg.notebook) dialog.dialog( "close" );
62837
62939
  let query_id = $("#" + me.pre + "query_id").val();
@@ -62840,13 +62942,14 @@ class Events {
62840
62942
  me.htmlCls.clickMenuCls.setLogCmd("load seq_struct_ids_smithwm " + query_id + "," + blast_rep_id, false);
62841
62943
  query_id =(query_id !== '' && query_id !== undefined) ? query_id : query_fasta;
62842
62944
 
62945
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62843
62946
  window.open(hostUrl + '?from=icn3d&alg=smithwm&blast_rep_id=' + blast_rep_id
62844
62947
  + '&query_id=' + query_id
62845
62948
  + '&command=view annotations; set annotation cdd; set annotation site; set view detailed view; select chain '
62846
- + blast_rep_id + '; show selection', '_blank');
62949
+ + blast_rep_id + '; show selection', urlTarget);
62847
62950
  });
62848
62951
 
62849
- me.myEventCls.onIds("#" + me.pre + "reload_alignswlocal", "click", function(e) { me.icn3d;
62952
+ me.myEventCls.onIds("#" + me.pre + "reload_alignswlocal", "click", function(e) { let ic = me.icn3d;
62850
62953
  e.preventDefault();
62851
62954
  if(!me.cfg.notebook) dialog.dialog( "close" );
62852
62955
  let query_id = $("#" + me.pre + "query_id").val();
@@ -62855,75 +62958,84 @@ class Events {
62855
62958
  me.htmlCls.clickMenuCls.setLogCmd("load seq_struct_ids_local_smithwm " + query_id + "," + blast_rep_id, false);
62856
62959
  query_id =(query_id !== '' && query_id !== undefined) ? query_id : query_fasta;
62857
62960
 
62961
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62858
62962
  window.open(hostUrl + '?from=icn3d&alg=local_smithwm&blast_rep_id=' + blast_rep_id
62859
62963
  + '&query_id=' + query_id
62860
62964
  + '&command=view annotations; set annotation cdd; set annotation site; set view detailed view; select chain '
62861
- + blast_rep_id + '; show selection', '_blank');
62965
+ + blast_rep_id + '; show selection', urlTarget);
62862
62966
  });
62863
62967
 
62864
62968
  // },
62865
62969
  // clickReload_gi: function() {
62866
- me.myEventCls.onIds("#" + me.pre + "reload_gi", "click", function(e) { me.icn3d;
62970
+ me.myEventCls.onIds("#" + me.pre + "reload_gi", "click", function(e) { let ic = me.icn3d;
62867
62971
  e.preventDefault();
62868
62972
  if(!me.cfg.notebook) dialog.dialog( "close" );
62869
62973
  me.htmlCls.clickMenuCls.setLogCmd("load gi " + $("#" + me.pre + "gi").val(), false);
62870
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?gi=' + $("#" + me.pre + "gi").val(), '_blank');
62871
- window.open(hostUrl + '?gi=' + $("#" + me.pre + "gi").val(), '_blank');
62974
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?gi=' + $("#" + me.pre + "gi").val(), urlTarget);
62975
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62976
+ window.open(hostUrl + '?gi=' + $("#" + me.pre + "gi").val(), urlTarget);
62872
62977
  });
62873
62978
 
62874
- me.myEventCls.onIds("#" + me.pre + "reload_refseq", "click", function(e) { me.icn3d;
62979
+ me.myEventCls.onIds("#" + me.pre + "reload_refseq", "click", function(e) { let ic = me.icn3d;
62875
62980
  e.preventDefault();
62876
62981
  if(!me.cfg.notebook) dialog.dialog( "close" );
62877
- me.htmlCls.clickMenuCls.setLogCmd("load refseq " + $("#" + me.pre + "refseq").val(), false);
62878
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?gi=' + $("#" + me.pre + "gi").val(), '_blank');
62879
- window.open(hostUrl + '?refseq=' + $("#" + me.pre + "refseq").val(), '_blank');
62982
+ me.htmlCls.clickMenuCls.setLogCmd("load refseq " + $("#" + me.pre + "refseqid").val(), false);
62983
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?gi=' + $("#" + me.pre + "gi").val(), urlTarget);
62984
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62985
+ window.open(hostUrl + '?refseqid=' + $("#" + me.pre + "refseqid").val(), urlTarget);
62880
62986
  });
62881
62987
 
62882
- me.myEventCls.onIds("#" + me.pre + "gi", "keyup", function(e) { me.icn3d;
62988
+ me.myEventCls.onIds("#" + me.pre + "gi", "keyup", function(e) { let ic = me.icn3d;
62883
62989
  if (e.keyCode === 13) {
62884
62990
  e.preventDefault();
62885
62991
  if(!me.cfg.notebook) dialog.dialog( "close" );
62886
62992
  me.htmlCls.clickMenuCls.setLogCmd("load gi " + $("#" + me.pre + "gi").val(), false);
62887
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?gi=' + $("#" + me.pre + "gi").val(), '_blank');
62888
- window.open(hostUrl + '?gi=' + $("#" + me.pre + "gi").val(), '_blank');
62993
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?gi=' + $("#" + me.pre + "gi").val(), urlTarget);
62994
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
62995
+ window.open(hostUrl + '?gi=' + $("#" + me.pre + "gi").val(), urlTarget);
62889
62996
  }
62890
62997
  });
62891
62998
 
62892
- me.myEventCls.onIds("#" + me.pre + "reload_uniprotid", "click", function(e) { me.icn3d;
62999
+ me.myEventCls.onIds("#" + me.pre + "reload_uniprotid", "click", function(e) { let ic = me.icn3d;
62893
63000
  e.preventDefault();
62894
63001
  if(!me.cfg.notebook) dialog.dialog( "close" );
62895
63002
  me.htmlCls.clickMenuCls.setLogCmd("load uniprotid " + $("#" + me.pre + "uniprotid").val(), false);
62896
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?uniprotid=' + $("#" + me.pre + "uniprotid").val(), '_blank');
62897
- window.open(hostUrl + '?uniprotid=' + $("#" + me.pre + "uniprotid").val(), '_blank');
63003
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?uniprotid=' + $("#" + me.pre + "uniprotid").val(), urlTarget);
63004
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
63005
+ window.open(hostUrl + '?uniprotid=' + $("#" + me.pre + "uniprotid").val(), urlTarget);
62898
63006
  });
62899
63007
 
62900
- me.myEventCls.onIds("#" + me.pre + "uniprotid", "keyup", function(e) { me.icn3d;
63008
+ me.myEventCls.onIds("#" + me.pre + "uniprotid", "keyup", function(e) { let ic = me.icn3d;
62901
63009
  if (e.keyCode === 13) {
62902
63010
  e.preventDefault();
62903
63011
  if(!me.cfg.notebook) dialog.dialog( "close" );
62904
63012
  me.htmlCls.clickMenuCls.setLogCmd("load uniprotid " + $("#" + me.pre + "uniprotid").val(), false);
62905
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?uniprotid=' + $("#" + me.pre + "uniprotid").val(), '_blank');
62906
- window.open(hostUrl + '?uniprotid=' + $("#" + me.pre + "uniprotid").val(), '_blank');
63013
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?uniprotid=' + $("#" + me.pre + "uniprotid").val(), urlTarget);
63014
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
63015
+ window.open(hostUrl + '?uniprotid=' + $("#" + me.pre + "uniprotid").val(), urlTarget);
62907
63016
  }
62908
63017
  });
62909
63018
 
62910
63019
  // },
62911
63020
  // clickReload_cid: function() {
62912
- me.myEventCls.onIds("#" + me.pre + "reload_cid", "click", function(e) { me.icn3d;
63021
+ me.myEventCls.onIds("#" + me.pre
63022
+ + "reload_cid", "click", function(e) { let ic = me.icn3d;
62913
63023
  e.preventDefault();
62914
63024
  if(!me.cfg.notebook) dialog.dialog( "close" );
62915
63025
  me.htmlCls.clickMenuCls.setLogCmd("load cid " + $("#" + me.pre + "cid").val(), false);
62916
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?cid=' + $("#" + me.pre + "cid").val(), '_blank');
62917
- window.open(hostUrl + '?cid=' + $("#" + me.pre + "cid").val(), '_blank');
63026
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?cid=' + $("#" + me.pre + "cid").val(), urlTarget);
63027
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
63028
+ window.open(hostUrl + '?cid=' + $("#" + me.pre + "cid").val(), urlTarget);
62918
63029
  });
62919
63030
 
62920
- me.myEventCls.onIds("#" + me.pre + "cid", "keyup", function(e) { me.icn3d;
63031
+ me.myEventCls.onIds("#" + me.pre + "cid", "keyup", function(e) { let ic = me.icn3d;
62921
63032
  if (e.keyCode === 13) {
62922
63033
  e.preventDefault();
62923
63034
  if(!me.cfg.notebook) dialog.dialog( "close" );
62924
63035
  me.htmlCls.clickMenuCls.setLogCmd("load cid " + $("#" + me.pre + "cid").val(), false);
62925
- //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?cid=' + $("#" + me.pre + "cid").val(), '_blank');
62926
- window.open(hostUrl + '?cid=' + $("#" + me.pre + "cid").val(), '_blank');
63036
+ //window.open(me.htmlCls.baseUrl + 'icn3d/full.html?cid=' + $("#" + me.pre + "cid").val(), urlTarget);
63037
+ let urlTarget = (ic.structures && Object.keys(ic.structures).length > 0) ? '_blank' : '_self';
63038
+ window.open(hostUrl + '?cid=' + $("#" + me.pre + "cid").val(), urlTarget);
62927
63039
  }
62928
63040
  });
62929
63041
 
@@ -68757,7 +68869,8 @@ class Vastplus {
68757
68869
 
68758
68870
  let pdbAjaxArray = [];
68759
68871
  for(let k = 0, kl = ic.refpdbArray.length; k < kl; ++k) {
68760
- let urlpdb = me.htmlCls.baseUrl + "icn3d/refpdb/" + ic.refpdbArray[k] + ".pdb";
68872
+ //let urlpdb = me.htmlCls.baseUrl + "icn3d/refpdb/" + ic.refpdbArray[k] + ".pdb";
68873
+ let urlpdb = me.htmlCls.baseUrl + "mmcifparser/mmcifparser.cgi?refpdbid=" + ic.refpdbArray[k];
68761
68874
 
68762
68875
  let pdbAjax = $.ajax({
68763
68876
  url: urlpdb,
@@ -68806,7 +68919,7 @@ class Vastplus {
68806
68919
  // align each 3D domain with reference structure
68807
68920
  let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
68808
68921
  let subdomains = result.subdomains;
68809
-
68922
+
68810
68923
  let domainAtomsArray = [];
68811
68924
  if(subdomains.length <= 1) {
68812
68925
  domainAtomsArray.push(ic.chains[chainid]);
@@ -68820,6 +68933,7 @@ class Vastplus {
68820
68933
  for(let k = 0, kl = subdomains.length; k < kl; ++k) {
68821
68934
  let domainAtoms = {};
68822
68935
  let segArray = subdomains[k];
68936
+
68823
68937
  for(let m = 0, ml = segArray.length; m < ml; m += 2) {
68824
68938
  let startResi = segArray[m];
68825
68939
  let endResi = segArray[m+1];
@@ -68833,10 +68947,9 @@ class Vastplus {
68833
68947
  domainAtomsArray.push(domainAtoms);
68834
68948
  }
68835
68949
  }
68836
-
68950
+
68837
68951
  for(let k = 0, kl = domainAtomsArray.length; k < kl; ++k) {
68838
68952
  let pdb_target = ic.saveFileCls.getAtomPDB(domainAtomsArray[k], undefined, undefined, undefined, undefined, struct);
68839
-
68840
68953
  let domainid = chainid + '-' + k;
68841
68954
  for(let index = 0, indexl = dataArray.length; index < indexl; ++index) {
68842
68955
  let struct2 = "stru" + index;
@@ -68928,14 +69041,14 @@ console.log(domainid + ' TM-score: ' + domainid2score[domainid] + ' matched ' +
68928
69041
  ic.domainid2ig2kabat[domainid] = queryData[0].ig2kabat;
68929
69042
  }
68930
69043
  }
68931
-
69044
+
68932
69045
  // combine domainid into chainid
68933
69046
  for(let domainid in domainid2segs) {
68934
69047
  let chainid = domainid.split('-')[0];
68935
69048
  if(!chainid2segs[chainid]) chainid2segs[chainid] = [];
68936
69049
  chainid2segs[chainid] = chainid2segs[chainid].concat(domainid2segs[domainid]);
68937
69050
  }
68938
-
69051
+
68939
69052
  // assign ic.resid2refnum, ic.refnum2residArray, ic.chainsMapping
68940
69053
  if(!ic.resid2refnum) ic.resid2refnum = {};
68941
69054
  if(!ic.refnum2residArray) ic.refnum2residArray = {};
@@ -70698,7 +70811,7 @@ class iCn3DUI {
70698
70811
  //even when multiple iCn3D viewers are shown together.
70699
70812
  this.pre = this.cfg.divid + "_";
70700
70813
 
70701
- this.REVISION = '3.19.1';
70814
+ this.REVISION = '3.20.0';
70702
70815
 
70703
70816
  // In nodejs, iCn3D defines "window = {navigator: {}}"
70704
70817
  this.bNode = (Object.keys(window).length < 2) ? true : false;
@@ -70987,11 +71100,20 @@ iCn3DUI.prototype.show3DStructure = function(pdbStr) { let me = this;
70987
71100
  me.htmlCls.clickMenuCls.setLogCmd(ic.loadCmd, true);
70988
71101
  ic.mmdbParserCls.downloadGi(me.cfg.gi);
70989
71102
  }
70990
- else if(me.cfg.uniprotid !== undefined) {
70991
- ic.loadCmd = 'load uniprotid ' + me.cfg.uniprotid;
70992
- me.htmlCls.clickMenuCls.setLogCmd(ic.loadCmd, true);
70993
- ic.mmdbParserCls.downloadUniprotid(me.cfg.uniprotid);
70994
- }
71103
+ else if(me.cfg.refseqid !== undefined) {
71104
+ ic.inputid = me.cfg.refseqid;
71105
+
71106
+ ic.bNCBI = true;
71107
+ ic.loadCmd = 'load refseq ' + me.cfg.refseqid;
71108
+ me.htmlCls.clickMenuCls.setLogCmd(ic.loadCmd, true);
71109
+ ic.mmdbParserCls.downloadRefseq(me.cfg.refseqid);
71110
+ }
71111
+ // else if(me.cfg.proteinname !== undefined) {
71112
+ // ic.bNCBI = true;
71113
+ // ic.loadCmd = 'load proteinname ' + me.cfg.gi;
71114
+ // me.htmlCls.clickMenuCls.setLogCmd(ic.loadCmd, true);
71115
+ // ic.mmdbParserCls.downloadProteinname(me.cfg.proteinname);
71116
+ // }
70995
71117
  else if(me.cfg.blast_rep_id !== undefined) {
70996
71118
  ic.bNCBI = true;
70997
71119