icn3d 3.48.1 → 3.49.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
@@ -59472,6 +59472,34 @@ class ClickMenu {
59472
59472
  thisClass.setLogCmd('symmetry ' + title, true);
59473
59473
  });
59474
59474
 
59475
+ me.myEventCls.onIds("#" + me.pre + "2ddgm_r2dt", "click", function(e) { let ic = me.icn3d; //e.preventDefault();
59476
+ thisClass.SetChainsAdvancedMenu();
59477
+
59478
+ let definedAtomsHtml = ic.definedSetsCls.setAtomMenu(['protein'], true);
59479
+ if($("#" + me.pre + "atomsCustomNucleotide").length && definedAtomsHtml) {
59480
+ $("#" + me.pre + "atomsCustomNucleotide").html(definedAtomsHtml);
59481
+ me.htmlCls.dialogCls.openDlg('dl_2ddgm_r2dt', 'Show R2DT Diagram for Nucleotides');
59482
+ $("#" + me.pre + "atomsCustomNucleotide").resizable();
59483
+ }
59484
+ else {
59485
+ var aaa = 1; //alert("No nucleotide chain is found.");
59486
+ }
59487
+ });
59488
+
59489
+ me.myEventCls.onIds("#" + me.pre + "2ddgm_igdgm", "click", function(e) { let ic = me.icn3d; //e.preventDefault();
59490
+ thisClass.SetChainsAdvancedMenu();
59491
+
59492
+ let definedAtomsHtml = ic.definedSetsCls.setAtomMenu(['protein'], false, true);
59493
+ if($("#" + me.pre + "atomsCustomProtein").length && definedAtomsHtml) {
59494
+ $("#" + me.pre + "atomsCustomProtein").html(definedAtomsHtml);
59495
+ me.htmlCls.dialogCls.openDlg('dl_2ddgm_igdgm', 'Show Ig Diagram for Proteins');
59496
+ $("#" + me.pre + "atomsCustomProtein").resizable();
59497
+ }
59498
+ else {
59499
+ var aaa = 1; //alert("No protein chain is found.");
59500
+ }
59501
+ });
59502
+
59475
59503
  me.myEventCls.onIds(["#" + me.pre + "mn6_hbondsYes", "#" + me.pre + "hbondsYes"], "click", function(e) { let ic = me.icn3d; //e.preventDefault();
59476
59504
  thisClass.SetChainsAdvancedMenu();
59477
59505
 
@@ -61377,9 +61405,15 @@ class SetMenu {
61377
61405
  html += this.getLink('mn2_alignment', 'Aligned Seq. ' + me.htmlCls.wifiStr, 1, 1);
61378
61406
  //}
61379
61407
 
61408
+ html += this.getMenuText('2ddgmwrap', '2D Diagram', undefined, 1, 1);
61409
+ html += "<ul>";
61410
+ html += this.getLink('2ddgm_r2dt', 'for Nucleotides (R2DT)' + me.htmlCls.wifiStr, 1, 2);
61411
+ html += this.getLink('2ddgm_igdgm', 'for Ig Domains' + me.htmlCls.wifiStr, 1, 2);
61380
61412
  if(me.cfg.mmdbid !== undefined || me.cfg.gi !== undefined || me.cfg.blast_rep_id !== undefined || me.cfg.align !== undefined || me.cfg.chainalign !== undefined) {
61381
- html += this.getLink('mn2_2ddgm', '2D Diagram ' + me.htmlCls.wifiStr, 1, 1);
61413
+ html += this.getLink('mn2_2ddgm', 'for Chains ' + me.htmlCls.wifiStr, 1, 2);
61382
61414
  }
61415
+ html += "</ul>";
61416
+ html += "</li>";
61383
61417
 
61384
61418
  html += this.getMenuText('2dctnwrap', '2D Cartoon', undefined, undefined, 1);
61385
61419
  html += "<ul>";
@@ -61825,6 +61859,7 @@ class Dialog {
61825
61859
  let bHbondplot = $('#' + me.pre + 'dl_hbondplot').hasClass('ui-dialog-content'); // initialized
61826
61860
  let bLigplot = $('#' + me.pre + 'dl_ligplot').hasClass('ui-dialog-content'); // initialized
61827
61861
  let bContactmap = $('#' + me.pre + 'dl_contactmap').hasClass('ui-dialog-content'); // initialized
61862
+ let b2ddiagram = $('#' + me.pre + 'dl_2ddiagram').hasClass('ui-dialog-content'); // initialized
61828
61863
  let bAlignerrormap = $('#' + me.pre + 'dl_alignerrormap').hasClass('ui-dialog-content'); // initialized
61829
61864
  let bTable = $('#' + me.pre + 'dl_interactionsorted').hasClass('ui-dialog-content'); // initialized
61830
61865
  let bAlignmentInit = $('#' + me.pre + 'dl_alignment').hasClass('ui-dialog-content'); // initialized
@@ -61844,6 +61879,7 @@ class Dialog {
61844
61879
  id2flag.dl_hbondplot = 'bHbondplot2';
61845
61880
  id2flag.dl_ligplot = 'bLigplot2';
61846
61881
  id2flag.dl_contactmap = 'bContactmap2';
61882
+ id2flag.dl_2ddiagram = 'b2ddiagram2';
61847
61883
  id2flag.dl_alignerrormap = 'bAlignerrormap2';
61848
61884
  id2flag.dl_interactionsorted = 'bTable2';
61849
61885
  id2flag.dl_alignment = 'bAlignmentInit2';
@@ -61859,6 +61895,7 @@ class Dialog {
61859
61895
  if(bHbondplot) status.bHbondplot2 = $('#' + me.pre + 'dl_hbondplot').dialog( 'isOpen' );
61860
61896
  if(bLigplot) status.bLigplot2 = $('#' + me.pre + 'dl_ligplot').dialog( 'isOpen' );
61861
61897
  if(bContactmap) status.bContactmap2 = $('#' + me.pre + 'dl_contactmap').dialog( 'isOpen' );
61898
+ if(b2ddiagram) status.b2ddiagram2 = $('#' + me.pre + 'dl_2ddiagram').dialog( 'isOpen' );
61862
61899
  if(bAlignerrormap) status.bAlignerror2 = $('#' + me.pre + 'dl_alignerrormap').dialog( 'isOpen' );
61863
61900
  if(bTable) status.bTable2 = $('#' + me.pre + 'dl_interactionsorted').dialog( 'isOpen' );
61864
61901
  if(bAlignmentInit) status.bAlignmentInit2 = $('#' + me.pre + 'dl_alignment').dialog( 'isOpen' );
@@ -61944,7 +61981,7 @@ class Dialog {
61944
61981
 
61945
61982
  d3.select("#" + me.svgid).attr("width", width).attr("height", height);
61946
61983
  }
61947
- else if(id == me.pre + 'dl_linegraph' || id == me.pre + 'dl_scatterplot' || id == me.pre + 'dl_ligplot' || id == me.pre + 'dl_contactmap' || id == me.pre + 'dl_alignerrormap') {
61984
+ else if(id == me.pre + 'dl_linegraph' || id == me.pre + 'dl_scatterplot' || id == me.pre + 'dl_ligplot' || id == me.pre + 'dl_contactmap' || id == me.pre + 'dl_2ddiagram' || id == me.pre + 'dl_alignerrormap') {
61948
61985
  let oriWidth =(status.bTwoddgmInit2 || status.bSetsInit2) ?(me.htmlCls.WIDTH - twoddgmWidth)/2 : me.htmlCls.WIDTH / 2;
61949
61986
  let ratio = $("#" + id).width() / oriWidth;
61950
61987
 
@@ -61968,6 +62005,10 @@ class Dialog {
61968
62005
  let width = ic.contactmapWidth * ratio;
61969
62006
  $("#" + me.contactmapid).attr("width", width);
61970
62007
  }
62008
+ // else if(id == me.pre + 'dl_2ddiagram') {
62009
+ // let width = ic.twoddiagramWidth * ratio;
62010
+ // $("#" + me.twoddiagramid).attr("width", width);
62011
+ // }
61971
62012
  else if(id == me.pre + 'dl_alignerrormap') {
61972
62013
  let width = ic.alignerrormapWidth * ratio;
61973
62014
  $("#" + me.alignerrormapid).attr("width", width);
@@ -62046,7 +62087,7 @@ class Dialog {
62046
62087
 
62047
62088
  let status = this.getDialogStatus().status;
62048
62089
 
62049
- if(id === me.pre + 'dl_selectannotations' || id === me.pre + 'dl_graph' || id === me.pre + 'dl_linegraph' || id === me.pre + 'dl_scatterplot' || id === me.pre + 'dl_rmsdplot' || id === me.pre + 'dl_hbondplot' || id === me.pre + 'dl_ligplot' || id === me.pre + 'dl_contactmap' || id === me.pre + 'dl_alignerrormap' || id === me.pre + 'dl_interactionsorted' || id === me.pre + 'dl_alignment') {
62090
+ if(id === me.pre + 'dl_selectannotations' || id === me.pre + 'dl_graph' || id === me.pre + 'dl_linegraph' || id === me.pre + 'dl_scatterplot' || id === me.pre + 'dl_rmsdplot' || id === me.pre + 'dl_hbondplot' || id === me.pre + 'dl_ligplot' || id === me.pre + 'dl_contactmap' || id === me.pre + 'dl_2ddiagram' || id === me.pre + 'dl_alignerrormap' || id === me.pre + 'dl_interactionsorted' || id === me.pre + 'dl_alignment') {
62050
62091
  //var dialogWidth = 0.5 *(me.htmlCls.WIDTH - me.htmlCls.LESSWIDTH) - twoddgmWidth * 0.5;
62051
62092
  let dialogWidth = 0.5 *(me.htmlCls.WIDTH) - twoddgmWidth * 0.5;
62052
62093
 
@@ -62082,16 +62123,17 @@ class Dialog {
62082
62123
  modal: false,
62083
62124
  position: position,
62084
62125
  close: function(e) {
62085
- if((id === me.pre + 'dl_selectannotations' &&(!status.bAlignmentInit2) &&(!status.bGraph2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62086
- ||(id === me.pre + 'dl_graph' &&(!status.bSelectannotationsInit2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62087
- ||(id === me.pre + 'dl_alignment' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62088
- ||(id === me.pre + 'dl_interactionsorted' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62089
- ||(id === me.pre + 'dl_linegraph' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62090
- ||(id === me.pre + 'dl_scatterplot' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62091
- ||(id === me.pre + 'dl_ligplot' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62092
- ||(id === me.pre + 'dl_contactmap' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62093
- ||(id === me.pre + 'dl_alignerrormap' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bHbondplot2))
62094
- ||(id === me.pre + 'dl_hbondplot' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2))
62126
+ if((id === me.pre + 'dl_selectannotations' &&(!status.bAlignmentInit2) &&(!status.bGraph2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62127
+ ||(id === me.pre + 'dl_graph' &&(!status.bSelectannotationsInit2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62128
+ ||(id === me.pre + 'dl_alignment' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62129
+ ||(id === me.pre + 'dl_interactionsorted' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62130
+ ||(id === me.pre + 'dl_linegraph' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62131
+ ||(id === me.pre + 'dl_scatterplot' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62132
+ ||(id === me.pre + 'dl_ligplot' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62133
+ ||(id === me.pre + 'dl_contactmap' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62134
+ ||(id === me.pre + 'dl_alignerrormap' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bHbondplot2) &&(!status.b2ddiagram2))
62135
+ ||(id === me.pre + 'dl_hbondplot' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.b2ddiagram2))
62136
+ ||(id === me.pre + 'dl_2ddiagram' &&(!status.bSelectannotationsInit2) &&(!status.bGraph2) &&(!status.bAlignmentInit2) &&(!status.bTable2) &&(!status.bLineGraph2) &&(!status.bScatterplot2) &&(!status.bLigplot2) &&(!status.bContactmap2) &&(!status.bAlignerrormap2) &&(!status.bHbondplot2))
62095
62137
  ) {
62096
62138
  if(status.bTwoddgmInit2 || status.bTwodctnInit2 || status.bSetsInit2) {
62097
62139
  let canvasWidth = me.utilsCls.isMobile() ? me.htmlCls.WIDTH : me.htmlCls.WIDTH - twoddgmWidth;
@@ -62117,7 +62159,7 @@ class Dialog {
62117
62159
 
62118
62160
  d3.select("#" + me.svgid).attr("width", width).attr("height", height);
62119
62161
  }
62120
- else if(id == me.pre + 'dl_linegraph' || id == me.pre + 'dl_scatterplot' || id == me.pre + 'dl_ligplot' || id == me.pre + 'dl_contactmap' || id == me.pre + 'dl_alignerrormap') {
62162
+ else if(id == me.pre + 'dl_linegraph' || id == me.pre + 'dl_scatterplot' || id == me.pre + 'dl_ligplot' || id == me.pre + 'dl_contactmap' || id == me.pre + 'dl_2ddiagram' || id == me.pre + 'dl_alignerrormap') {
62121
62163
  let oriWidth =(status.bTwoddgmInit2 || status.bSetsInit2) ?(me.htmlCls.WIDTH - twoddgmWidth)/2 : me.htmlCls.WIDTH / 2;
62122
62164
  let ratio = $("#" + id).width() / oriWidth;
62123
62165
 
@@ -62137,6 +62179,10 @@ class Dialog {
62137
62179
  let width = ic.contactmapWidth * ratio;
62138
62180
  $("#" + me.contactmapid).attr("width", width);
62139
62181
  }
62182
+ // else if(id == me.pre + 'dl_2ddiagram') {
62183
+ // let width = ic.twoddiagramWidth * ratio;
62184
+ // $("#" + me.twoddiagramid).attr("width", width);
62185
+ // }
62140
62186
  else if(id == me.pre + 'dl_alignerrormap') {
62141
62187
  let width = ic.alignerrormapWidth * ratio;
62142
62188
  $("#" + me.alignerrormapid).attr("width", width);
@@ -62273,7 +62319,7 @@ class Dialog {
62273
62319
  let width = 400, height = 150;
62274
62320
  let twoddgmWidth = me.htmlCls.width2d + 20;
62275
62321
 
62276
- if(id === me.pre + 'dl_selectannotations' || id === me.pre + 'dl_graph' || id === me.pre + 'dl_linegraph' || id === me.pre + 'dl_scatterplot' || id === me.pre + 'dl_rmsdplot' || id === me.pre + 'dl_hbondplot' || id === me.pre + 'dl_ligplot' || id === me.pre + 'dl_contactmap' || id === me.pre + 'dl_alignerrormap' || id === me.pre + 'dl_interactionsorted' || id === me.pre + 'dl_alignment') {
62322
+ if(id === me.pre + 'dl_selectannotations' || id === me.pre + 'dl_graph' || id === me.pre + 'dl_linegraph' || id === me.pre + 'dl_scatterplot' || id === me.pre + 'dl_rmsdplot' || id === me.pre + 'dl_hbondplot' || id === me.pre + 'dl_ligplot' || id === me.pre + 'dl_contactmap' || id === me.pre + 'dl_2ddiagram' || id === me.pre + 'dl_alignerrormap' || id === me.pre + 'dl_interactionsorted' || id === me.pre + 'dl_alignment') {
62277
62323
  $( "#" + id ).show();
62278
62324
  $( "#" + id + "_nb").show();
62279
62325
  $( "#" + id + "_title").html(title);
@@ -62318,6 +62364,11 @@ class Dialog {
62318
62364
 
62319
62365
  $("#" + me.contactmapid).attr("width", width);
62320
62366
  }
62367
+ // else if(id == me.pre + 'dl_2ddiagram') {
62368
+ // let width = ic.twoddiagramWidth * ratio;
62369
+
62370
+ // $("#" + me.twoddiagramid).attr("width", width);
62371
+ // }
62321
62372
  else if(id == me.pre + 'dl_alignerrormap') {
62322
62373
  let width = ic.alignerrormapWidth * ratio;
62323
62374
 
@@ -63009,6 +63060,22 @@ class SetDialog {
63009
63060
  html += "<span style='white-space:nowrap;'>" + me.htmlCls.buttonStr + "applycontactmap'>Display</button></span><br>";
63010
63061
  html += "</div>";
63011
63062
 
63063
+ html += me.htmlCls.divStr + "dl_2ddgm_r2dt' class='" + dialogClass + "'>";
63064
+ html += this.addNotebookTitle('dl_2ddgm_r2dt', '2D Diagram for Nucleotides (R2DT)');
63065
+ html += "1. Select a nucleotide chain to show R2DT diagram:<br>";
63066
+ html += "<select style='max-width:200px' id='" + me.pre + "atomsCustomNucleotide' size='5' style='min-width:130px;'>";
63067
+ html += "</select><br>";
63068
+ html += me.htmlCls.buttonStr + "applyr2dt'>Show R2DT Diagram</button><br>";
63069
+ html += "</div>";
63070
+
63071
+ html += me.htmlCls.divStr + "dl_2ddgm_igdgm' class='" + dialogClass + "'>";
63072
+ html += this.addNotebookTitle('dl_2ddgm_igdgm', '2D Diagram for Ig Domains (R2DT)');
63073
+ html += "1. Select a protein chain to show Ig diagram. An Excel file containing <br>the Ig diagram will be saved to your computer.<br>";
63074
+ html += "<select style='max-width:200px' id='" + me.pre + "atomsCustomProtein' size='5' style='min-width:130px;'>";
63075
+ html += "</select><br>";
63076
+ html += me.htmlCls.buttonStr + "applyigdgm'>Show Ig Diagram</button><br>";
63077
+ html += "</div>";
63078
+
63012
63079
  html += me.htmlCls.divStr + "dl_hbonds' class='" + dialogClass + "'>";
63013
63080
  html += this.addNotebookTitle('dl_hbonds', 'Interaction Analysis');
63014
63081
  html += "1. Choose interaction types and their thresholds:<br>";
@@ -63336,6 +63403,11 @@ class SetDialog {
63336
63403
 
63337
63404
  html += "</div>";
63338
63405
 
63406
+ html += me.htmlCls.divStr + "dl_2ddiagram' style='background-color:white' class='" + dialogClass + "'>";
63407
+ html += this.addNotebookTitle('dl_2ddiagram', '2D Diagram');
63408
+ html += '<div id="' + me.pre + '2ddiagramDiv"></div>';
63409
+ html += "</div>";
63410
+
63339
63411
  html += me.htmlCls.divStr + "dl_alignerrormap' style='background-color:white' class='" + dialogClass + "'>";
63340
63412
  html += this.addNotebookTitle('dl_alignerrormap', 'PAE Map');
63341
63413
 
@@ -66587,6 +66659,24 @@ class Events {
66587
66659
  await ic.contactMapCls.contactMap(contactdist, contacttype);
66588
66660
  thisClass.setLogCmd('contact map | dist ' + contactdist + ' | type ' + contacttype, true);
66589
66661
  });
66662
+ me.myEventCls.onIds("#" + me.pre + "applyr2dt", "click", async function(e) { let ic = me.icn3d;
66663
+ e.preventDefault();
66664
+ //if(!me.cfg.notebook) dialog.dialog( "close" );
66665
+
66666
+ let chainid = $("#" + ic.pre + "atomsCustomNucleotide").val();
66667
+
66668
+ await ic.diagram2dCls.drawR2dt(chainid);
66669
+ thisClass.setLogCmd('diagram 2d nucleotide | ' + chainid, true);
66670
+ });
66671
+ me.myEventCls.onIds("#" + me.pre + "applyigdgm", "click", async function(e) { let ic = me.icn3d;
66672
+ e.preventDefault();
66673
+ //if(!me.cfg.notebook) dialog.dialog( "close" );
66674
+
66675
+ let chainid = $("#" + ic.pre + "atomsCustomProtein").val();
66676
+
66677
+ await ic.diagram2dCls.drawIgdgm(chainid);
66678
+ thisClass.setLogCmd('diagram 2d ig | ' + chainid, true);
66679
+ });
66590
66680
  me.myEventCls.onIds("#" + me.pre + "hbondWindow", "click", async function(e) { let ic = me.icn3d;
66591
66681
  e.preventDefault();
66592
66682
 
@@ -68938,13 +69028,15 @@ class SetHtml {
68938
69028
 
68939
69029
  this.setCookieForThickness();
68940
69030
 
68941
- if(postfix = bReset) {
69031
+ // if(postfix = '3dprint' && bReset) {
69032
+ if(bReset) {
68942
69033
  let select = "reset thickness";
68943
69034
  me.htmlCls.clickMenuCls.setLogCmd(select, true);
68944
69035
  ic.bSetThickness = false;
68945
69036
  ic.threeDPrintCls.resetAfter3Dprint();
68946
69037
  }
68947
69038
  else {
69039
+ me.htmlCls.clickMenuCls.setLogCmd('set background ' + ic.bkgdcolor, true);
68948
69040
  me.htmlCls.clickMenuCls.setLogCmd('set thickness | linerad ' + ic.lineRadius + ' | coilrad ' + ic.coilWidth + ' | stickrad ' + ic.cylinderRadius + ' | crosslinkrad ' + ic.crosslinkRadius + ' | tracerad ' + ic.traceRadius + ' | ribbonthick ' + ic.ribbonthickness + ' | proteinwidth ' + ic.helixSheetWidth + ' | nucleotidewidth ' + ic.nucleicAcidWidth + ' | ballscale ' + ic.dotSphereScale, true);
68949
69041
 
68950
69042
  me.htmlCls.clickMenuCls.setLogCmd('set glycan ' + ic.bGlycansCartoon, true);
@@ -75494,7 +75586,8 @@ class Scene {
75494
75586
  if(me.htmlCls.setHtmlCls.getCookie('bkgdcolor') != '') {
75495
75587
  let bkgdcolor = me.htmlCls.setHtmlCls.getCookie('bkgdcolor');
75496
75588
 
75497
- if(ic.bkgdcolor != bkgdcolor) {
75589
+ // if(ic.bkgdcolor != bkgdcolor) {
75590
+ if(bkgdcolor != 'black') {
75498
75591
  me.htmlCls.clickMenuCls.setLogCmd('set background ' + bkgdcolor, true);
75499
75592
  }
75500
75593
 
@@ -120458,30 +120551,19 @@ class DefinedSets {
120458
120551
  }
120459
120552
 
120460
120553
  //Set the menu of defined sets with an array of defined names "commandnameArray".
120461
- setAtomMenu(commandnameArray) { let ic = this.icn3d; ic.icn3dui;
120554
+ setAtomMenu(commandnameArray, bNucleotide, bProtein) { let ic = this.icn3d; ic.icn3dui;
120462
120555
  let html = "";
120463
120556
  let nameArray1 =(ic.defNames2Residues !== undefined) ? Object.keys(ic.defNames2Residues) : [];
120464
120557
  let nameArray2 =(ic.defNames2Atoms !== undefined) ? Object.keys(ic.defNames2Atoms) : [];
120465
120558
 
120466
120559
  let nameArrayTmp = nameArray1.concat(nameArray2).sort();
120467
120560
  let nameArray = [];
120468
- // $.each(nameArrayTmp, function(i, el){
120469
- // if($.inArray(el, nameArray) === -1) nameArray.push(el);
120470
- // });
120561
+
120471
120562
  nameArrayTmp.forEach(elem => {
120472
120563
  if($.inArray(elem, nameArray) === -1) nameArray.push(elem);
120473
120564
  });
120474
120565
 
120475
- // let structureArray = Object.keys(me.utilsCls.getStructures(ic.dAtoms));
120476
-
120477
- // nameArrayTmp.forEach((elem) => {
120478
- // structureArray.forEach((structure) => {
120479
- // if (ic.defNames2Residues[elem] && ic.defNames2Residues[elem][0] && ic.defNames2Residues[elem][0].split("_")[0].includes(structure.split("_")[0])){
120480
- // if ($.inArray(elem, nameArray) === -1) nameArray.push(elem);
120481
- // }
120482
- // });
120483
- // });
120484
- //for(let i in ic.defNames2Atoms) {
120566
+ let bFoundNucleotide = false, bFoundProtein = false;
120485
120567
  for(let i = 0, il = nameArray.length; i < il; ++i) {
120486
120568
  let name = nameArray[i];
120487
120569
 
@@ -120504,13 +120586,38 @@ class DefinedSets {
120504
120586
  let colorStr =(atom === undefined || atom.color === undefined || atom.color.getHexString().toUpperCase() === 'FFFFFF') ? 'DDDDDD' : atom.color.getHexString();
120505
120587
  let color =(atom !== undefined && atom.color !== undefined) ? colorStr : '000000';
120506
120588
 
120507
- if(commandnameArray.indexOf(name) != -1) {
120508
- html += "<option value='" + name + "' style='color:#" + color + "' selected='selected'>" + name + "</option>";
120589
+ if(bNucleotide) {
120590
+ // Handle nucleotide-specific logic
120591
+ if(ic.nucleotides.hasOwnProperty(atom.serial) && name != 'nucleotides' && !ic.structures.hasOwnProperty(name)) {
120592
+ html += "<option value='" + name + "' style='color:#" + color + "'>" + name + "</option>";
120593
+ bFoundNucleotide = true;
120594
+ }
120595
+ }
120596
+ else if(bProtein) {
120597
+ // Handle protein-specific logic
120598
+ if(ic.proteins.hasOwnProperty(atom.serial) && name != 'proteins' && !ic.structures.hasOwnProperty(name)) {
120599
+ html += "<option value='" + name + "' style='color:#" + color + "'>" + name + "</option>";
120600
+ bFoundProtein = true;
120601
+ }
120509
120602
  }
120510
120603
  else {
120511
- html += "<option value='" + name + "' style='color:#" + color + "'>" + name + "</option>";
120604
+ if(commandnameArray.indexOf(name) != -1) {
120605
+ html += "<option value='" + name + "' style='color:#" + color + "' selected='selected'>" + name + "</option>";
120606
+ }
120607
+ else {
120608
+ html += "<option value='" + name + "' style='color:#" + color + "'>" + name + "</option>";
120609
+ }
120512
120610
  }
120513
120611
  }
120612
+
120613
+ if(bNucleotide && !bFoundNucleotide) {
120614
+ html = "";
120615
+ }
120616
+
120617
+ if(bProtein && !bFoundProtein) {
120618
+ html = "";
120619
+ }
120620
+
120514
120621
  return html;
120515
120622
  }
120516
120623
 
@@ -120655,24 +120762,34 @@ class DefinedSets {
120655
120762
  ic.hlUpdateCls.updateHlMenus();
120656
120763
  }
120657
120764
 
120765
+ selectSets(nameArray) { let ic = this.icn3d, me = ic.icn3dui;
120766
+ ic.nameArray = nameArray;
120767
+
120768
+ if(nameArray !== null) {
120769
+ // log the selection
120770
+ //me.htmlCls.clickMenuCls.setLogCmd('select saved atoms ' + nameArray.toString(), true);
120771
+
120772
+ let bUpdateHlMenus = false;
120773
+ this.changeCustomAtoms(nameArray, bUpdateHlMenus);
120774
+ //me.htmlCls.clickMenuCls.setLogCmd('select saved atoms ' + nameArray.join(' ' + ic.setOperation + ' '), true);
120775
+ me.htmlCls.clickMenuCls.setLogCmd('select sets ' + nameArray.join(' ' + ic.setOperation + ' '), true);
120776
+
120777
+ ic.bSelectResidue = false;
120778
+ }
120779
+ }
120780
+
120658
120781
  clickCustomAtoms() { let ic = this.icn3d, me = ic.icn3dui;
120659
120782
  let thisClass = this;
120660
120783
  //me.myEventCls.onIds("#" + ic.pre + "atomsCustom", "change", function(e) { let ic = thisClass.icn3d;
120661
- $("#" + ic.pre + "atomsCustom").change(function(e) { let ic = thisClass.icn3d;
120784
+ $("#" + ic.pre + "atomsCustom").change(function(e) { thisClass.icn3d;
120662
120785
  let nameArray = $(this).val();
120663
- ic.nameArray = nameArray;
120664
-
120665
- if(nameArray !== null) {
120666
- // log the selection
120667
- //me.htmlCls.clickMenuCls.setLogCmd('select saved atoms ' + nameArray.toString(), true);
120668
-
120669
- let bUpdateHlMenus = false;
120670
- thisClass.changeCustomAtoms(nameArray, bUpdateHlMenus);
120671
- //me.htmlCls.clickMenuCls.setLogCmd('select saved atoms ' + nameArray.join(' ' + ic.setOperation + ' '), true);
120672
- me.htmlCls.clickMenuCls.setLogCmd('select sets ' + nameArray.join(' ' + ic.setOperation + ' '), true);
120786
+ thisClass.selectSets(nameArray);
120787
+ });
120673
120788
 
120674
- ic.bSelectResidue = false;
120675
- }
120789
+ me.myEventCls.onIds(["#" + ic.pre + "atomsCustomNucleotide", "#" + ic.pre + "atomsCustomProtein"], "change", function(e) { thisClass.icn3d;
120790
+ //$("#" + ic.pre + "atomsCustomNucleotide").change(function(e) { let ic = thisClass.icn3d;
120791
+ let chainid = $(this).val();
120792
+ thisClass.selectSets([chainid]);
120676
120793
  });
120677
120794
 
120678
120795
  me.myEventCls.onIds("#" + ic.pre + "atomsCustom", "focus", function(e) { let ic = thisClass.icn3d;
@@ -121633,6 +121750,22 @@ class LoadScript {
121633
121750
  await ic.cartoon2dCls.draw2Dcartoon(type);
121634
121751
  ic.bRender = false;
121635
121752
  }
121753
+ else if(command.indexOf('diagram 2d nucleotide') == 0) {
121754
+ let paraArray = command.split(' | ');
121755
+ let chainid = paraArray[1];
121756
+
121757
+ ic.bRender = true;
121758
+ await ic.diagram2dCls.drawR2dt(chainid);
121759
+ ic.bRender = false;
121760
+ }
121761
+ else if(command.indexOf('diagram 2d ig') == 0) {
121762
+ let paraArray = command.split(' | ');
121763
+ let chainid = paraArray[1];
121764
+
121765
+ ic.bRender = true;
121766
+ await ic.diagram2dCls.drawIgdgm(chainid);
121767
+ ic.bRender = false;
121768
+ }
121636
121769
  else if(command.indexOf('add msa track') == 0) {
121637
121770
  //add msa track | chainid " + chainid + " | startpos " + startpos + " | type " + type + " | fastaList " + fastaList
121638
121771
  let paraArray = command.split(' | ');
@@ -129166,6 +129299,118 @@ class Diagram2d {
129166
129299
 
129167
129300
  return html;
129168
129301
  }
129302
+
129303
+ async drawR2dt(chainid) { let ic = this.icn3d, me = ic.icn3dui;
129304
+ let url = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi?chainid2rnaid=" + chainid;
129305
+
129306
+ let data = await me.getAjaxPromise(url, 'jsonp');
129307
+
129308
+ let html = '';
129309
+ if(data && data.rnaid) {
129310
+ html += '<r2dt-web search=\'{"urs": "' + data.rnaid + '"}\' />';
129311
+ html += '<script type="text/javascript" src="https://rnacentral.github.io/r2dt-web/dist/r2dt-web.js"></script>';
129312
+ $("#" + me.pre + "2ddiagramDiv").html(html);
129313
+ me.htmlCls.dialogCls.openDlg('dl_2ddiagram', 'Show R2DT Diagram for chain ' + chainid);
129314
+ }
129315
+ else {
129316
+ var aaa = 1; //alert("No R2DT diagram can be found for chain " + chainid);
129317
+ }
129318
+ }
129319
+
129320
+ async drawIgdgm(chainid) { let ic = this.icn3d, me = ic.icn3dui;
129321
+ // select the current chain
129322
+ //ic.hAtoms = me.hashUtilsCls.cloneHash(ic.chains[chainid]);
129323
+
129324
+ // run ig detection
129325
+ ic.bRunRefnumAgain = true;
129326
+ if(!ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
129327
+ await ic.annotationCls.setAnnoTabIg(true);
129328
+ ic.bRunRefnumAgain = false;
129329
+
129330
+ if(!ic.chain2igArray) {
129331
+ var aaa = 1; //alert("No Ig domain was found for chain " + chainid);
129332
+ return;
129333
+ }
129334
+
129335
+ let igArray = ic.chain2igArray[chainid];
129336
+
129337
+ let igType = '', bFound = false;
129338
+ for(let i = 0, il = igArray.length; i < il; ++i) {
129339
+ let domainid = igArray[i].domainid;
129340
+ if(!ic.domainid2info) continue;
129341
+
129342
+ let info = ic.domainid2info[domainid];
129343
+ if(!info) continue;
129344
+
129345
+ igType = ic.ref2igtype[info.refpdbname];
129346
+
129347
+ if(igType == 'IgV' || igType == 'IgC1' || igType == 'IgC2' || igType == 'IgI') {
129348
+ bFound = true;
129349
+ break;
129350
+ }
129351
+ }
129352
+
129353
+ if(!bFound) {
129354
+ var aaa = 1; //alert("The Ig type for chain " + chainid + " is " + igType + ". Currently only IgV, IgC1, IgC2 and IgI types are supported for drawing Ig diagrams.");
129355
+ return;
129356
+ }
129357
+
129358
+ // get the hash of refnum to resn
129359
+ let refnum2resn = {};
129360
+ for(let resid in ic.resid2refnum) {
129361
+ let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.residues[resid]);
129362
+ if(!atom) continue;
129363
+
129364
+ // let resn = me.utilsCls.residueName2Abbr(atom.resn.substr(0, 3));
129365
+ let resn = me.utilsCls.residueName2Abbr(atom.resn);
129366
+
129367
+ let refnumStr, refnumLabel = ic.resid2refnum[resid];
129368
+
129369
+ if(refnumLabel) {
129370
+ refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
129371
+ refnum2resn[refnumStr] = resn;
129372
+ }
129373
+ }
129374
+
129375
+ if(ic.bXlsx === undefined) {
129376
+ let urlScript = "/Structure/icn3d/script/exceljs.min.js";
129377
+ await me.getAjaxPromise(urlScript, 'script');
129378
+
129379
+ ic.bXlsx = true;
129380
+ }
129381
+
129382
+ let url = "/Structure/icn3d/template/igstrand_template_" + igType + ".xlsx";
129383
+ let arrayBuffer = await me.getXMLHttpRqstPromise(url, 'GET', 'arraybuffer', 'xlsx');
129384
+
129385
+ const workbook = new ExcelJS.Workbook();
129386
+ // Load the workbook from the buffer
129387
+ await workbook.xlsx.load(arrayBuffer);
129388
+ const worksheet = workbook.getWorksheet(1);
129389
+
129390
+ // Iterate over all rows that have values
129391
+ worksheet.eachRow({ includeEmpty: true }, (row, rowNumber) => {
129392
+ // Iterate over all cells in the row
129393
+ row.eachCell({ includeEmpty: true }, (cell, colNumber) => {
129394
+ //console.log(`Cell [${rowNumber}, ${colNumber}] = ${cell.value}`);
129395
+ if (cell.value && !isNaN(cell.value) && cell.value > 1000 && cell.value < 10000) {
129396
+ if(refnum2resn.hasOwnProperty(cell.value)) {
129397
+ cell.value = refnum2resn[cell.value];
129398
+ }
129399
+ else {
129400
+ cell.value = '';
129401
+ }
129402
+ }
129403
+ });
129404
+ });
129405
+
129406
+ // Generate the workbook as a Buffer
129407
+ const data = await workbook.xlsx.writeBuffer();
129408
+
129409
+ // Access the underlying ArrayBuffer
129410
+ ic.saveFileCls.saveFile(ic.inputid + '_ig_diagram.xlsx', 'xlsx', data);
129411
+
129412
+ ic.drawCls.draw();
129413
+ }
129169
129414
  }
129170
129415
 
129171
129416
  /**
@@ -131125,7 +131370,12 @@ class SaveFile {
131125
131370
  //blob = new Blob([data],{ type: "application/octet-stream"});
131126
131371
  blob = new Blob(data,{ type: "application/octet-stream"});
131127
131372
  }
131373
+ else if(type === 'xlsx') {
131374
+ let data = text; // here text is an array of blobs
131128
131375
 
131376
+ //blob = new Blob([data],{ type: "application/octet-stream"});
131377
+ blob = new Blob([data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"} );
131378
+ }
131129
131379
  if(type !== 'png') {
131130
131380
  //https://github.com/eligrey/FileSaver.js/
131131
131381
  if(!bReturnBlobOnly) saveAs(blob, filename);
@@ -135428,7 +135678,7 @@ class iCn3DUI {
135428
135678
  //even when multiple iCn3D viewers are shown together.
135429
135679
  this.pre = this.cfg.divid + "_";
135430
135680
 
135431
- this.REVISION = '3.48.1';
135681
+ this.REVISION = '3.49.0';
135432
135682
 
135433
135683
  // In nodejs, iCn3D defines "window = {navigator: {}}", and added window = {navigator: {}, "__THREE__":"177"}
135434
135684
  this.bNode = (Object.keys(window).length < 3) ? true : false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "icn3d",
3
- "version": "3.48.1",
3
+ "version": "3.49.0",
4
4
  "main": "./icn3d.js",
5
5
  "exports": {
6
6
  ".": {