icn3d 3.23.6 → 3.24.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/css/icn3d.css +8 -3
- package/icn3d.js +322 -156
- package/icn3d.min.js +3 -3
- package/icn3d.module.js +322 -156
- package/package.json +1 -1
package/icn3d.js
CHANGED
|
@@ -5685,7 +5685,7 @@ class ClickMenu {
|
|
|
5685
5685
|
if(!bOneset) $("#" + me.pre + id2).resizable();
|
|
5686
5686
|
}
|
|
5687
5687
|
|
|
5688
|
-
applyShownMenus() { let me = this.icn3dui; me.icn3d;
|
|
5688
|
+
applyShownMenus(bNoSave) { let me = this.icn3dui; me.icn3d;
|
|
5689
5689
|
let idArray = [];
|
|
5690
5690
|
for(let id in me.htmlCls.allMenus) {
|
|
5691
5691
|
if(me.htmlCls.shownMenus.hasOwnProperty(id)) {
|
|
@@ -5705,7 +5705,7 @@ class ClickMenu {
|
|
|
5705
5705
|
}
|
|
5706
5706
|
|
|
5707
5707
|
// save to localStorage
|
|
5708
|
-
if(localStorage) localStorage.setItem('hiddenmenus', JSON.stringify(idArray));
|
|
5708
|
+
if(localStorage && !bNoSave) localStorage.setItem('hiddenmenus', JSON.stringify(idArray));
|
|
5709
5709
|
}
|
|
5710
5710
|
|
|
5711
5711
|
getHiddenMenusFromCache() { let me = this.icn3dui; me.icn3d;
|
|
@@ -6956,7 +6956,7 @@ class ClickMenu {
|
|
|
6956
6956
|
|
|
6957
6957
|
let legendHtml = thisClass.setLegendHtml();
|
|
6958
6958
|
//$("#" + me.pre + "legend").html(legendHtml).show();
|
|
6959
|
-
$("#" + me.pre + "
|
|
6959
|
+
$("#" + me.pre + "dl_legend_html").html(legendHtml);
|
|
6960
6960
|
me.htmlCls.dialogCls.openDlg('dl_legend', 'Color range');
|
|
6961
6961
|
|
|
6962
6962
|
ic.addTrackCls.setCustomFile('color', ic.startColor, ic.midColor, ic.endColor);
|
|
@@ -7308,11 +7308,27 @@ class ClickMenu {
|
|
|
7308
7308
|
me.myEventCls.onIds("#" + me.pre + "mn6_igrefYes", "click", async function(e) { let ic = me.icn3d; //e.preventDefault();
|
|
7309
7309
|
thisClass.setLogCmd('ig refnum on', true);
|
|
7310
7310
|
await ic.refnumCls.showIgRefNum();
|
|
7311
|
+
|
|
7312
|
+
if(ic.bShowRefnum) {
|
|
7313
|
+
ic.opts.color = 'ig strand';
|
|
7314
|
+
ic.setColorCls.setColorByOptions(ic.opts, ic.atoms);
|
|
7315
|
+
|
|
7316
|
+
ic.selectionCls.selectAll_base();
|
|
7317
|
+
ic.hlUpdateCls.updateHlAll();
|
|
7318
|
+
ic.drawCls.draw();
|
|
7319
|
+
}
|
|
7311
7320
|
});
|
|
7312
7321
|
|
|
7313
7322
|
me.myEventCls.onIds("#" + me.pre + "mn6_igrefNo", "click", async function(e) { let ic = me.icn3d; //e.preventDefault();
|
|
7314
7323
|
thisClass.setLogCmd('ig refnum off', true);
|
|
7315
7324
|
await ic.refnumCls.hideIgRefNum();
|
|
7325
|
+
|
|
7326
|
+
ic.opts.color = 'chain';
|
|
7327
|
+
ic.setColorCls.setColorByOptions(ic.opts, ic.atoms);
|
|
7328
|
+
|
|
7329
|
+
ic.selectionCls.selectAll_base();
|
|
7330
|
+
ic.hlUpdateCls.updateHlAll();
|
|
7331
|
+
ic.drawCls.draw();
|
|
7316
7332
|
});
|
|
7317
7333
|
|
|
7318
7334
|
|
|
@@ -9368,8 +9384,8 @@ class SetMenu {
|
|
|
9368
9384
|
//}
|
|
9369
9385
|
|
|
9370
9386
|
//!!!
|
|
9371
|
-
|
|
9372
|
-
|
|
9387
|
+
//!!!html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
9388
|
+
//!!!html += this.getRadio('mn4_clr', 'mn4_clrIgproto', 'Ig Protodomain', undefined, undefined, 2);
|
|
9373
9389
|
}
|
|
9374
9390
|
else {
|
|
9375
9391
|
//if(!me.cfg.hidelicense) html += this.getRadio('mn4_clr', 'mn1_delphi2', 'DelPhi<br><span style="padding-left:1.5em;">Potential ' + me.htmlCls.licenseStr + '</span>');
|
|
@@ -9450,14 +9466,15 @@ class SetMenu {
|
|
|
9450
9466
|
|
|
9451
9467
|
html += this.getLink('mn6_contactmap', 'Contact Map', undefined, 1);
|
|
9452
9468
|
|
|
9453
|
-
if(!me.cfg.notebook) {
|
|
9469
|
+
//if(!me.cfg.notebook) {
|
|
9454
9470
|
html += this.getLink('mn1_mutation', 'Mutation ' + me.htmlCls.wifiStr, 1, 1);
|
|
9455
|
-
}
|
|
9471
|
+
//}
|
|
9456
9472
|
|
|
9457
9473
|
//html += this.getMenuSep();
|
|
9458
9474
|
}
|
|
9459
9475
|
|
|
9460
|
-
if(!me.cfg.notebook && !me.cfg.hidelicense) {
|
|
9476
|
+
//if(!me.cfg.notebook && !me.cfg.hidelicense) {
|
|
9477
|
+
if(!me.cfg.hidelicense) {
|
|
9461
9478
|
html += this.getMenuText('mn1_delphiwrap', 'DelPhi Potential', undefined, 1, 1);
|
|
9462
9479
|
|
|
9463
9480
|
html += "<ul>";
|
|
@@ -10271,6 +10288,7 @@ class Dialog {
|
|
|
10271
10288
|
|
|
10272
10289
|
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_contactmap' || id === me.pre + 'dl_alignerrormap' || id === me.pre + 'dl_interactionsorted' || id === me.pre + 'dl_alignment') {
|
|
10273
10290
|
$( "#" + id ).show();
|
|
10291
|
+
$( "#" + id + "_nb").show();
|
|
10274
10292
|
|
|
10275
10293
|
height =(me.htmlCls.HEIGHT) * 0.5;
|
|
10276
10294
|
|
|
@@ -10315,7 +10333,10 @@ class Dialog {
|
|
|
10315
10333
|
});
|
|
10316
10334
|
}
|
|
10317
10335
|
else {
|
|
10318
|
-
if(ic.bRender)
|
|
10336
|
+
if(ic.bRender) {
|
|
10337
|
+
$( "#" + id ).show();
|
|
10338
|
+
$( "#" + id + "_nb").show();
|
|
10339
|
+
}
|
|
10319
10340
|
|
|
10320
10341
|
height = 'auto';
|
|
10321
10342
|
width = 'auto';
|
|
@@ -10365,6 +10386,18 @@ class SetDialog {
|
|
|
10365
10386
|
return html;
|
|
10366
10387
|
}
|
|
10367
10388
|
|
|
10389
|
+
addNotebookTitle(id, title, bAddExtraDiv) { let me = this.icn3dui; me.icn3d;
|
|
10390
|
+
//return '<div id="' + me.pre + id + '_nb" style="display:none; background-color:#1c94c4; width:100%"><span style="color:white; font-weight:bold">' + title + '</span> <span onclick="$(\'#' + me.pre + id + '\').hide(); return false;" class="icn3d-nbclose" title="Close">x</span></div>';
|
|
10391
|
+
|
|
10392
|
+
let html = '<div id="' + me.pre + id + '_nb" style="display:none; background-color:#5C9CCC; width:100%"><span style="color:white; font-weight:bold">' + title + '</span> <div onclick="$(\'#' + me.pre + id + '\').hide(); return false;" class="icn3d-nbclose ui-icon ui-icon-close" title="Close"></div></div>';
|
|
10393
|
+
|
|
10394
|
+
if(bAddExtraDiv) {
|
|
10395
|
+
html += '<div id="' + me.pre + id + '_html"></div>';
|
|
10396
|
+
}
|
|
10397
|
+
|
|
10398
|
+
return html;
|
|
10399
|
+
}
|
|
10400
|
+
|
|
10368
10401
|
//Set the html for all popup dialogs.
|
|
10369
10402
|
setDialogs() { let me = this.icn3dui, ic = me.icn3d;
|
|
10370
10403
|
if(me.bNode) return '';
|
|
@@ -10379,12 +10412,15 @@ class SetDialog {
|
|
|
10379
10412
|
|
|
10380
10413
|
let divClass =(me.cfg.notebook) ? '' : 'icn3d-hidden';
|
|
10381
10414
|
let dialogClass =(me.cfg.notebook) ? 'icn3d-hidden' : '';
|
|
10382
|
-
html += me.htmlCls.divStr + "alldialogs' class='" + divClass + " icn3d-dialog'>";
|
|
10415
|
+
//html += me.htmlCls.divStr + "alldialogs' class='" + divClass + " icn3d-dialog' style='margin-top:" + me.htmlCls.CMD_HEIGHT + "px'>";
|
|
10416
|
+
html += me.htmlCls.divStr + "alldialogs' class='" + divClass + " icn3d-dialog' style='margin-top:12px'>";
|
|
10383
10417
|
|
|
10384
10418
|
html += me.htmlCls.divStr + "dl_2ddgm' class='" + dialogClass + " icn3d-dl_2ddgm' style='background-color:white'>";
|
|
10419
|
+
html += this.addNotebookTitle('dl_2ddgm', '2D Diagram', true);
|
|
10385
10420
|
html += "</div>";
|
|
10386
10421
|
|
|
10387
10422
|
html += me.htmlCls.divStr + "dl_2dctn' class='" + dialogClass + " icn3d-dl_2dctn' style='background-color:white'>";
|
|
10423
|
+
html += this.addNotebookTitle('dl_2dctn', '2D Cartoon');
|
|
10388
10424
|
|
|
10389
10425
|
me.svgid_ct = me.pre + "icn3d_cartoon";
|
|
10390
10426
|
|
|
@@ -10412,14 +10448,17 @@ class SetDialog {
|
|
|
10412
10448
|
|
|
10413
10449
|
// if(me.cfg.align !== undefined || me.cfg.chainalign !== undefined || ic.bRealign || ic.bSymd) {
|
|
10414
10450
|
html += me.htmlCls.divStr + "dl_alignment' class='" + dialogClass + "' style='background-color:white;'>";
|
|
10451
|
+
html += this.addNotebookTitle('dl_alignment', 'Dynamically Calculated Symmetry using SymD');
|
|
10415
10452
|
html += me.htmlCls.divStr + "symd_info'></div>";
|
|
10416
10453
|
html += me.htmlCls.divStr + "alignseqguide_wrapper'><br>" + me.htmlCls.setHtmlCls.setAlignSequenceGuide() + "</div>";
|
|
10417
10454
|
html += me.htmlCls.divStr + "dl_sequence2' class='icn3d-dl_sequence'>";
|
|
10455
|
+
html += this.addNotebookTitle('dl_sequence2', 'Select Residues in Aligned Sequences');
|
|
10418
10456
|
html += "</div>";
|
|
10419
10457
|
html += "</div>";
|
|
10420
10458
|
// }
|
|
10421
10459
|
|
|
10422
10460
|
html += me.htmlCls.divStr + "dl_definedsets' class='" + dialogClass + "'>";
|
|
10461
|
+
html += this.addNotebookTitle('dl_definedsets', 'Defined Sets');
|
|
10423
10462
|
html += me.htmlCls.divStr + "dl_setsmenu'>";
|
|
10424
10463
|
html += "<b>Defined Sets:</b> <br/>";
|
|
10425
10464
|
html += "<select id='" + me.pre + "atomsCustom' multiple size='6' style='min-width:130px;'>";
|
|
@@ -10443,12 +10482,14 @@ class SetDialog {
|
|
|
10443
10482
|
html += me.htmlCls.setHtmlCls.setAdvanced(2);
|
|
10444
10483
|
|
|
10445
10484
|
html += me.htmlCls.divStr + "dl_vastplus' class='" + dialogClass + "' style='max-width:500px'>";
|
|
10485
|
+
html += this.addNotebookTitle('dl_vastplus', 'Please input PDB ID for VAST+');
|
|
10446
10486
|
html += "Note: <b>VAST+</b> finds other macromolecular structures that have a similar biological unit. To do this, VAST+ takes into consideration the complete set of 3D domains that VAST identified within a query structure, throughout all of its component protein molecules, and finds other macromolecular structures that have a similar set of proteins/3D domains.<br><br>";
|
|
10447
10487
|
html += "PDB ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "vastpluspdbid' value='6VXX' size=8><br>";
|
|
10448
10488
|
html += me.htmlCls.buttonStr + "reload_vastplus'>VAST+</button>";
|
|
10449
10489
|
html += "</div>";
|
|
10450
10490
|
|
|
10451
10491
|
html += me.htmlCls.divStr + "dl_vast' class='" + dialogClass + "' style='max-width:500px'>";
|
|
10492
|
+
html += this.addNotebookTitle('dl_vast', 'Pleaes input chain or PDB file for VAST');
|
|
10452
10493
|
html += 'Note: <b>VAST</b> identifies 3D domains (substructures) within each protein structure in the Molecular Modeling Database (MMDB), and then finds other protein structures that have one or more similar 3D domains, using purely geometric criteria. You have two ways to do a VAST search.<br><br>';
|
|
10453
10494
|
|
|
10454
10495
|
html += '<b>Optione 1</b>, search with your selection (all residues are selected by default) in the loaded structures:<br>';
|
|
@@ -10477,6 +10518,7 @@ class SetDialog {
|
|
|
10477
10518
|
html += "</div>";
|
|
10478
10519
|
|
|
10479
10520
|
html += me.htmlCls.divStr + "dl_foldseek' class='" + dialogClass + "' style='max-width:500px'>";
|
|
10521
|
+
html += this.addNotebookTitle('dl_foldseek', 'Submit your selection to Foldseek');
|
|
10480
10522
|
html += '1. <input type="submit" id="' + me.pre + 'fssubmit" name="fssubmit" value="Submit"></input> your selection (all residues are selected by default) in the loaded structures to <a href="https://search.foldseek.com/search" target="_blank">Foldseek</a> web server.<br><br>';
|
|
10481
10523
|
html += '2 (Optional). Once you see the structure neighbors, you can view the alignment in iCn3D by inputing a list of PDB chain IDs or AlphaFold UniProt IDs below. <br><br>The PDB chain IDs are the same as the record names such as "1HHO_A". The UniProt ID is the text between "AF-" and "-F1". For example, the UniProt ID for the record name "AF-P69905-F1-model_v4" is "P69905".<br><br>';
|
|
10482
10524
|
|
|
@@ -10485,16 +10527,19 @@ class SetDialog {
|
|
|
10485
10527
|
html += "</div>";
|
|
10486
10528
|
|
|
10487
10529
|
html += me.htmlCls.divStr + "dl_mmtfid' class='" + dialogClass + "'>";
|
|
10530
|
+
html += this.addNotebookTitle('dl_mmtfid', 'Please input an MMTF ID');
|
|
10488
10531
|
html += "MMTF ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "mmtfid' value='1TUP' size=8> ";
|
|
10489
10532
|
html += me.htmlCls.buttonStr + "reload_mmtf'>Load</button>";
|
|
10490
10533
|
html += "</div>";
|
|
10491
10534
|
|
|
10492
10535
|
html += me.htmlCls.divStr + "dl_pdbid' class='" + dialogClass + "'>";
|
|
10536
|
+
html += this.addNotebookTitle('dl_pdbid', 'Please input a PDB ID');
|
|
10493
10537
|
html += "PDB ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "pdbid' value='1TUP' size=8> ";
|
|
10494
10538
|
html += me.htmlCls.buttonStr + "reload_pdb'>Load</button>";
|
|
10495
10539
|
html += "</div>";
|
|
10496
10540
|
|
|
10497
10541
|
html += me.htmlCls.divStr + "dl_afid' class='" + dialogClass + "'>";
|
|
10542
|
+
html += this.addNotebookTitle('dl_afid', 'Please input an AlphaFold UniProt ID');
|
|
10498
10543
|
html += "Note: AlphaFold produces a per-residue confidence score (pLDDT) between 0 and 100:<br>";
|
|
10499
10544
|
html += me.htmlCls.clickMenuCls.setAlphaFoldLegend() + "<br>";
|
|
10500
10545
|
|
|
@@ -10507,27 +10552,32 @@ class SetDialog {
|
|
|
10507
10552
|
html += "</div>";
|
|
10508
10553
|
|
|
10509
10554
|
html += me.htmlCls.divStr + "dl_refseqid' class='" + dialogClass + "'>";
|
|
10555
|
+
html += this.addNotebookTitle('dl_refseqid', 'Please input an NCBI protein accession');
|
|
10510
10556
|
html += "NCBI Protein Accession: " + me.htmlCls.inputTextStr + "id='" + me.pre + "refseqid' value='NP_001743.1' size=8> ";
|
|
10511
10557
|
html += me.htmlCls.buttonStr + "reload_refseq'>Load</button>";
|
|
10512
10558
|
html += "</div>";
|
|
10513
10559
|
|
|
10514
10560
|
html += me.htmlCls.divStr + "dl_opmid' class='" + dialogClass + "'>";
|
|
10561
|
+
html += this.addNotebookTitle('dl_opmid', 'Please input an OPM PDB ID');
|
|
10515
10562
|
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> ";
|
|
10516
10563
|
html += me.htmlCls.buttonStr + "reload_opm'>Load</button>";
|
|
10517
10564
|
html += "</div>";
|
|
10518
10565
|
|
|
10519
10566
|
html += me.htmlCls.divStr + "dl_pdbfile' class='" + dialogClass + "'>";
|
|
10567
|
+
html += this.addNotebookTitle('dl_pdbfile', 'Please input a PDB file');
|
|
10520
10568
|
html += "Note: Several PDB files could be concatenated into a single PDB file. Use the line \"ENDMDL\" to separate PDB files.<br><br>";
|
|
10521
10569
|
html += "PDB File: " + me.htmlCls.inputFileStr + " id='" + me.pre + "pdbfile' size=8> ";
|
|
10522
10570
|
html += me.htmlCls.buttonStr + "reload_pdbfile'>Load</button>";
|
|
10523
10571
|
html += "</div>";
|
|
10524
10572
|
|
|
10525
10573
|
html += me.htmlCls.divStr + "dl_pdbfile_app' class='" + dialogClass + "'>";
|
|
10574
|
+
html += this.addNotebookTitle('dl_pdbfile_app', 'Please append PDB files');
|
|
10526
10575
|
html += "Multiple PDB Files: <input type='file' multiple id='" + me.pre + "pdbfile_app' size=8> ";
|
|
10527
10576
|
html += me.htmlCls.buttonStr + "reload_pdbfile_app'>Append</button>";
|
|
10528
10577
|
html += "</div>";
|
|
10529
10578
|
|
|
10530
10579
|
html += me.htmlCls.divStr + "dl_rescolorfile' class='" + dialogClass + "'>";
|
|
10580
|
+
html += this.addNotebookTitle('dl_rescolorfile', 'Please input a residue color file');
|
|
10531
10581
|
html += '<div style="width:450px;">The custom JSON file on residue colors has the following format for proteins("ALA" and "ARG") and nucleotides("G" and "A"):<br>';
|
|
10532
10582
|
html += '{"ALA":"#C8C8C8", "ARG":"#145AFF", ..., "G":"#008000", "A":"#6080FF", ...}</div><br>';
|
|
10533
10583
|
html += "Residue Color File: " + me.htmlCls.inputFileStr + "id='" + me.pre + "rescolorfile' size=8> ";
|
|
@@ -10535,6 +10585,7 @@ class SetDialog {
|
|
|
10535
10585
|
html += "</div>";
|
|
10536
10586
|
|
|
10537
10587
|
html += me.htmlCls.divStr + "dl_customcolor' class='" + dialogClass + "'>";
|
|
10588
|
+
html += this.addNotebookTitle('dl_customcolor', 'Please input a custom color file');
|
|
10538
10589
|
html += " <input type='hidden' id='" + me.pre + "customcolor_chainid' value=''>";
|
|
10539
10590
|
html += '<div style="width:450px;">The custom file for the structure has two columns separated by space or tab: ';
|
|
10540
10591
|
html += 'residue number, and score in the range of 0-100. If you click "Apply Custom Color" button, ';
|
|
@@ -10562,6 +10613,7 @@ class SetDialog {
|
|
|
10562
10613
|
html += "</div>";
|
|
10563
10614
|
|
|
10564
10615
|
html += me.htmlCls.divStr + "dl_customref' class='" + dialogClass + "'>";
|
|
10616
|
+
html += this.addNotebookTitle('dl_customref', 'Please input a reference number file');
|
|
10565
10617
|
html += '<div style="width:550px;">You can define your own reference numbers in a custom file using Excel, and then export it as a CSV file. An example file is shown below with cells separated by commas.<br>';
|
|
10566
10618
|
html += '<pre>refnum,11,12,,21,22,,10C,11C,20C<br>';
|
|
10567
10619
|
html += '1TUP_A,100,101,,,132,,,,<br>';
|
|
@@ -10575,17 +10627,20 @@ class SetDialog {
|
|
|
10575
10627
|
html += "</div>";
|
|
10576
10628
|
|
|
10577
10629
|
html += me.htmlCls.divStr + "dl_align' class='" + dialogClass + "'>";
|
|
10630
|
+
html += this.addNotebookTitle('dl_align', 'Please select residues in aligned sequences');
|
|
10578
10631
|
html += "Enter the PDB IDs or MMDB IDs of the structures: <br/><br/>ID1: " + me.htmlCls.inputTextStr + "id='" + me.pre + "alignid1' value='2DN3' size=8>" + me.htmlCls.space3 + me.htmlCls.space3 + "ID2: " + me.htmlCls.inputTextStr + "id='" + me.pre + "alignid2' value='4N7N' size=8><br/><br/>";
|
|
10579
10632
|
html += "<b>VAST+ based on VAST</b>: " + me.htmlCls.buttonStr + "reload_align_ori'>All Matching Molecules Superposed</button>" + me.htmlCls.space3 + me.htmlCls.buttonStr + "reload_align_refined'>Invariant Substructure Superposed</button><br><br>";
|
|
10580
10633
|
html += "<b>VAST+ based on TM-align</b>: " + me.htmlCls.buttonStr + "reload_align_tmalign'>All Matching Molecules Superposed</button><br><br>";
|
|
10581
10634
|
html += "</div>";
|
|
10582
10635
|
|
|
10583
10636
|
html += me.htmlCls.divStr + "dl_alignaf' class='" + dialogClass + "'>";
|
|
10637
|
+
html += this.addNotebookTitle('dl_alignaf', 'Align AlphaFold structures');
|
|
10584
10638
|
html += "Enter two <a href='https://alphafold.ebi.ac.uk/' target='_blank'>AlphaFold Uniprot</a> IDs: <br/><br/>ID1: " + me.htmlCls.inputTextStr + "id='" + me.pre + "alignafid1' value='P41327' size=8>" + me.htmlCls.space3 + me.htmlCls.space3 + "ID2: " + me.htmlCls.inputTextStr + "id='" + me.pre + "alignafid2' value='P41331' size=8><br/><br/>";
|
|
10585
10639
|
html += me.htmlCls.buttonStr + "reload_alignaf_tmalign'>Align with TM-align</button>" + me.htmlCls.buttonStr + "reload_alignaf' style='margin-left:30px'>Align with VAST</button>";
|
|
10586
10640
|
html += "</div>";
|
|
10587
10641
|
|
|
10588
10642
|
html += me.htmlCls.divStr + "dl_chainalign' class='" + dialogClass + "'>";
|
|
10643
|
+
html += this.addNotebookTitle('dl_chainalign', 'Align chains');
|
|
10589
10644
|
html += "<div style='width:550px'>";
|
|
10590
10645
|
html += "All chains will be aligned to the first chain in the comma-separated chain IDs. Each chain ID has the form of PDBID_chain (e.g., 1HHO_A, case sensitive) or UniprotID (e.g., P69905 for AlphaFold structures).<br/><br/>";
|
|
10591
10646
|
html += "<b>Chain IDs</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "chainalignids' value='P69905,P01942,1HHO_A' size=50><br/><br/>";
|
|
@@ -10595,6 +10650,7 @@ class SetDialog {
|
|
|
10595
10650
|
html += "</div></div>";
|
|
10596
10651
|
|
|
10597
10652
|
html += me.htmlCls.divStr + "dl_chainalign2' class='" + dialogClass + "'>";
|
|
10653
|
+
html += this.addNotebookTitle('dl_chainalign2', 'Align chains');
|
|
10598
10654
|
html += "<div style='width:550px'>";
|
|
10599
10655
|
html += "All chains will be aligned to the first chain in the comma-separated chain IDs. Each chain ID has the form of PDBID_chain (e.g., 1HHO_A, case sensitive) or UniprotID (e.g., P69905 for AlphaFold structures).<br/><br/>";
|
|
10600
10656
|
html += "<b>Chain IDs</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "chainalignids2' value='P69905,P01942,1HHO_A' size=50><br/><br/>";
|
|
@@ -10606,11 +10662,13 @@ class SetDialog {
|
|
|
10606
10662
|
html += "</div></div>";
|
|
10607
10663
|
|
|
10608
10664
|
html += me.htmlCls.divStr + "dl_chainalign3' class='" + dialogClass + "'>";
|
|
10665
|
+
html += this.addNotebookTitle('dl_chainalign3', 'Align chains');
|
|
10609
10666
|
html += "<div style='width:550px'>";
|
|
10610
10667
|
html += this.getHtmlAlignResidueByResidue('chainalignids3', 'predefinedres', 'reload_chainalign_asym3');
|
|
10611
10668
|
html += "</div></div>";
|
|
10612
10669
|
|
|
10613
10670
|
html += me.htmlCls.divStr + "dl_realignresbyres' class='" + dialogClass + "'>";
|
|
10671
|
+
html += this.addNotebookTitle('dl_realignresbyres', 'Realign residue by residue');
|
|
10614
10672
|
html += "<div style='width:550px'>";
|
|
10615
10673
|
html += "<b>Option 1</b>: " + me.htmlCls.buttonStr + "realignSelection'><b>Realign Current Selection Residue by Residue</b></button><br/><br/>";
|
|
10616
10674
|
html += "<b>Option 2</b>: <br>";
|
|
@@ -10618,6 +10676,7 @@ class SetDialog {
|
|
|
10618
10676
|
html += "</div></div>";
|
|
10619
10677
|
|
|
10620
10678
|
html += me.htmlCls.divStr + "dl_mutation' class='" + dialogClass + "'>";
|
|
10679
|
+
html += this.addNotebookTitle('dl_mutation', 'Mutation analysis');
|
|
10621
10680
|
html += "<div style='width:500px'>";
|
|
10622
10681
|
html += 'Please specify the mutations with a comma separated mutation list. Each mutation can be specified as "[<b>uppercase</b> PDB ID or AlphaFold UniProt ID]_[Chain Name]_[Residue Number]_[One Letter Mutant Residue]". E.g., the mutation of N501Y in the E chain of PDB 6M0J can be specified as "6M0J_E_501_Y". For AlphaFold structures, the "Chain ID" is "A".<br/>If you load a custom structure without PDB or UniProt ID, you can open "Seq. & Annotations" window and find the chain ID such as "stru_A". The part before the underscore is the structure ID, which can be used to specify the mutation such as "stru_A_...". Remember to choose "Show Mutation in: Current Page".<br/><br/>';
|
|
10623
10682
|
html += "<div style='display:inline-block; width:110px'>Mutations: </div>" + me.htmlCls.inputTextStr + "id='" + me.pre + "mutationids' value='6M0J_E_484_K,6M0J_E_501_Y,6M0J_E_417_N' size=50><br/><br/>";
|
|
@@ -10636,25 +10695,30 @@ class SetDialog {
|
|
|
10636
10695
|
html += "<br/><br/></div></div>";
|
|
10637
10696
|
|
|
10638
10697
|
html += me.htmlCls.divStr + "dl_mol2file' class='" + dialogClass + "'>";
|
|
10698
|
+
html += this.addNotebookTitle('dl_mol2file', 'Please input a Mol2 file');
|
|
10639
10699
|
html += "Mol2 File: " + me.htmlCls.inputFileStr + "id='" + me.pre + "mol2file' size=8> ";
|
|
10640
10700
|
html += me.htmlCls.buttonStr + "reload_mol2file'>Load</button>";
|
|
10641
10701
|
html += "</div>";
|
|
10642
10702
|
html += me.htmlCls.divStr + "dl_sdffile' class='" + dialogClass + "'>";
|
|
10703
|
+
html += this.addNotebookTitle('dl_sdffile', 'Please input an SDF file');
|
|
10643
10704
|
html += "SDF File: " + me.htmlCls.inputFileStr + "id='" + me.pre + "sdffile' size=8> ";
|
|
10644
10705
|
html += me.htmlCls.buttonStr + "reload_sdffile'>Load</button>";
|
|
10645
10706
|
html += "</div>";
|
|
10646
10707
|
html += me.htmlCls.divStr + "dl_xyzfile' class='" + dialogClass + "'>";
|
|
10708
|
+
html += this.addNotebookTitle('dl_xyzfile', 'Please input an XYZ file');
|
|
10647
10709
|
html += "XYZ File: " + me.htmlCls.inputFileStr + "id='" + me.pre + "xyzfile' size=8> ";
|
|
10648
10710
|
html += me.htmlCls.buttonStr + "reload_xyzfile'>Load</button>";
|
|
10649
10711
|
html += "</div>";
|
|
10650
10712
|
|
|
10651
10713
|
html += me.htmlCls.divStr + "dl_afmapfile' class='" + dialogClass + "'>";
|
|
10714
|
+
html += this.addNotebookTitle('dl_afmapfile', 'Please input an AlphaFold PAE file');
|
|
10652
10715
|
html += "AlphaFold PAE File: " + me.htmlCls.inputFileStr + "id='" + me.pre + "afmapfile' size=8> <br><br>";
|
|
10653
10716
|
html += me.htmlCls.buttonStr + "reload_afmapfile'>Load Half PAE Map</button>"
|
|
10654
10717
|
+ me.htmlCls.buttonStr + "reload_afmapfilefull' style='margin-left:30px'>Load Full PAE Map (slow)</button>";
|
|
10655
10718
|
html += "</div>";
|
|
10656
10719
|
|
|
10657
10720
|
html += me.htmlCls.divStr + "dl_urlfile' class='" + dialogClass + "'>";
|
|
10721
|
+
html += this.addNotebookTitle('dl_urlfile', 'Please input a file via URL');
|
|
10658
10722
|
html += "File type: ";
|
|
10659
10723
|
html += "<select id='" + me.pre + "filetype'>";
|
|
10660
10724
|
html += me.htmlCls.optionStr + "'pdb' selected>PDB</option>";
|
|
@@ -10670,16 +10734,19 @@ class SetDialog {
|
|
|
10670
10734
|
html += "</div>";
|
|
10671
10735
|
|
|
10672
10736
|
html += me.htmlCls.divStr + "dl_mmciffile' class='" + dialogClass + "'>";
|
|
10737
|
+
html += this.addNotebookTitle('dl_mmciffile', 'Please input an mmCIF file');
|
|
10673
10738
|
html += "mmCIF File: " + me.htmlCls.inputFileStr + "id='" + me.pre + "mmciffile' value='1TUP' size=8> ";
|
|
10674
10739
|
html += me.htmlCls.buttonStr + "reload_mmciffile'>Load</button>";
|
|
10675
10740
|
html += "</div>";
|
|
10676
10741
|
|
|
10677
10742
|
html += me.htmlCls.divStr + "dl_mmcifid' class='" + dialogClass + "'>";
|
|
10743
|
+
html += this.addNotebookTitle('dl_mmcifid', 'Please input an mmCIF ID');
|
|
10678
10744
|
html += "mmCIF ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "mmcifid' value='1TUP' size=8> ";
|
|
10679
10745
|
html += me.htmlCls.buttonStr + "reload_mmcif'>Load</button>";
|
|
10680
10746
|
html += "</div>";
|
|
10681
10747
|
|
|
10682
10748
|
html += me.htmlCls.divStr + "dl_mmdbid' class='" + dialogClass + "' style='max-width:500px'>";
|
|
10749
|
+
html += this.addNotebookTitle('dl_mmdbid', 'Please input an MMDB ID');
|
|
10683
10750
|
html += "MMDB or PDB ID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "mmdbid' value='1TUP' size=8> <br><br>";
|
|
10684
10751
|
html += me.htmlCls.buttonStr + "reload_mmdb_asym'>Load Asymmetric Unit (All Chains)</button>" + me.htmlCls.buttonStr + "reload_mmdb' style='margin-left:30px'>Load Biological Unit</button><br/><br/><br>";
|
|
10685
10752
|
html += '<b>Note</b>: The "<b>biological unit</b>" is the <b>biochemically active form of a biomolecule</b>, <div style="width:20px; margin:6px 0 0 20px; display:inline-block;"><span id="'
|
|
@@ -10692,6 +10759,7 @@ class SetDialog {
|
|
|
10692
10759
|
html += "</div>";
|
|
10693
10760
|
|
|
10694
10761
|
html += me.htmlCls.divStr + "dl_mmdbafid' class='" + dialogClass + "' style='max-width:600px'>";
|
|
10762
|
+
html += this.addNotebookTitle('dl_mmdbafid', 'Please input a list of PDB/AlphaFold IDs');
|
|
10695
10763
|
html += "List of PDB, MMDB, or AlphaFold UniProt structures: " + me.htmlCls.inputTextStr + "id='" + me.pre + "mmdbafid' placeholder='e.g., 1HHO,4N7N,P69905,P01942' size=30> <br><br>";
|
|
10696
10764
|
html += "<div style='display:inline-block; width:20px'></div>" + me.htmlCls.buttonStr + "reload_mmdbaf' style='width:150px'>Load Biological Unit</button>" + me.htmlCls.buttonStr + "reload_mmdbaf_asym' style='margin-left:30px; width:250px'>Load Asymmetric Unit (All Chains)</button>" + "<br/><br/>";
|
|
10697
10765
|
html += "<div style='display:inline-block; width:20px'>or</div>" + me.htmlCls.buttonStr + "reload_mmdbaf_append' style='width:150px'>Append Biological Unit</button>" + me.htmlCls.buttonStr + "reload_mmdbaf_asym_append' style='margin-left:30px; width:250px'>Append Asymmetric Unit (All Chains)</button>" + "<br/><br/>";
|
|
@@ -10706,6 +10774,7 @@ class SetDialog {
|
|
|
10706
10774
|
html += "</div>";
|
|
10707
10775
|
|
|
10708
10776
|
html += me.htmlCls.divStr + "dl_blast_rep_id' style='max-width:600px;' class='" + dialogClass + "'>";
|
|
10777
|
+
html += this.addNotebookTitle('dl_blast_rep_id', 'Align sequence to structure');
|
|
10709
10778
|
html += "Enter a Sequence ID (or FASTA sequence) and the aligned protein accession, which can be found using the <a href='https://blast.ncbi.nlm.nih.gov/Blast.cgi?PROGRAM=blastp&PAGE_TYPE=BlastSearch' target='_blank'>BLAST</a> search with the Sequence ID or FASTA sequence as input. If the protein accession is not a PDB chain, the corresponding AlphaFold UniProt structure is used.<br><br> ";
|
|
10710
10779
|
html += "<b>Sequence ID</b>(NCBI protein accession of a sequence): " + me.htmlCls.inputTextStr + "id='" + me.pre + "query_id' value='NP_001108451.1' size=8><br> ";
|
|
10711
10780
|
html += "or FASTA sequence: <br><textarea id='" + me.pre + "query_fasta' rows='5' style='width: 100%; height: " +(me.htmlCls.LOG_HEIGHT) + "px; padding: 0px; border: 0px;'></textarea><br><br>";
|
|
@@ -10717,32 +10786,38 @@ class SetDialog {
|
|
|
10717
10786
|
html += "</div>";
|
|
10718
10787
|
|
|
10719
10788
|
html += me.htmlCls.divStr + "dl_yournote' class='" + dialogClass + "'>";
|
|
10789
|
+
html += this.addNotebookTitle('dl_yournote', 'Your Note');
|
|
10720
10790
|
html += "Your note will be saved in the HTML file when you click \"File > Save File > iCn3D PNG Image\".<br><br>";
|
|
10721
10791
|
html += "<textarea id='" + me.pre + "yournote' rows='5' style='width: 100%; height: " +(me.htmlCls.LOG_HEIGHT) + "px; padding: 0px; border: 0px;' placeholder='Enter your note here'></textarea><br>";
|
|
10722
10792
|
html += me.htmlCls.buttonStr + "applyyournote'>Save</button>";
|
|
10723
10793
|
html += "</div>";
|
|
10724
10794
|
|
|
10725
10795
|
html += me.htmlCls.divStr + "dl_gi' class='" + dialogClass + "'>";
|
|
10796
|
+
html += this.addNotebookTitle('dl_gi', 'Please input an NCBI gi');
|
|
10726
10797
|
html += "Protein gi: " + me.htmlCls.inputTextStr + "id='" + me.pre + "gi' value='1310960' size=8> ";
|
|
10727
10798
|
html += me.htmlCls.buttonStr + "reload_gi'>Load</button>";
|
|
10728
10799
|
html += "</div>";
|
|
10729
10800
|
|
|
10730
10801
|
html += me.htmlCls.divStr + "dl_cid' class='" + dialogClass + "'>";
|
|
10802
|
+
html += this.addNotebookTitle('dl_cid', 'Please input a PubChem CID');
|
|
10731
10803
|
html += "PubChem CID: " + me.htmlCls.inputTextStr + "id='" + me.pre + "cid' value='2244' size=8> ";
|
|
10732
10804
|
html += me.htmlCls.buttonStr + "reload_cid'>Load</button>";
|
|
10733
10805
|
html += "</div>";
|
|
10734
10806
|
|
|
10735
10807
|
html += me.htmlCls.divStr + "dl_pngimage' class='" + dialogClass + "'>";
|
|
10808
|
+
html += this.addNotebookTitle('dl_pngimage', 'Please input an iCn3D PNG Image file');
|
|
10736
10809
|
html += "iCn3D PNG image: " + me.htmlCls.inputFileStr + "id='" + me.pre + "pngimage'><br/>";
|
|
10737
10810
|
html += me.htmlCls.buttonStr + "reload_pngimage' style='margin-top: 6px;'>Load</button>";
|
|
10738
10811
|
html += "</div>";
|
|
10739
10812
|
|
|
10740
10813
|
html += me.htmlCls.divStr + "dl_state' class='" + dialogClass + "'>";
|
|
10814
|
+
html += this.addNotebookTitle('dl_state', 'Please input a state file');
|
|
10741
10815
|
html += "State file: " + me.htmlCls.inputFileStr + "id='" + me.pre + "state'><br/>";
|
|
10742
10816
|
html += me.htmlCls.buttonStr + "reload_state' style='margin-top: 6px;'>Load</button>";
|
|
10743
10817
|
html += "</div>";
|
|
10744
10818
|
|
|
10745
10819
|
html += me.htmlCls.divStr + "dl_fixedversion' style='max-width:500px' class='" + dialogClass + "'>";
|
|
10820
|
+
html += this.addNotebookTitle('dl_fixedversion', 'Use fixed version of iCn3D');
|
|
10746
10821
|
html += "Since January 6, 2021, you can show the original view with the archived version of iCn3D by pasting your URL below and click \"Show Originial View\". Note the version in the parameter \"v\" was used to replace \"full.html\" with \"full_[v].html\" in the URL.<br><br>";
|
|
10747
10822
|
html += "Share Link URL: " + me.htmlCls.inputTextStr + "id='" + me.pre + "sharelinkurl' size=60><br>";
|
|
10748
10823
|
html += me.htmlCls.buttonStr + "reload_fixedversion'>Show Original View</button><br><br>";
|
|
@@ -10750,16 +10825,19 @@ class SetDialog {
|
|
|
10750
10825
|
|
|
10751
10826
|
|
|
10752
10827
|
html += me.htmlCls.divStr + "dl_selection' class='" + dialogClass + "'>";
|
|
10828
|
+
html += this.addNotebookTitle('dl_selection', 'Load a selection file');
|
|
10753
10829
|
html += "Selection file: " + me.htmlCls.inputFileStr + "id='" + me.pre + "selectionfile'><br/>";
|
|
10754
10830
|
html += me.htmlCls.buttonStr + "reload_selectionfile' style='margin-top: 6px;'>Load</button>";
|
|
10755
10831
|
html += "</div>";
|
|
10756
10832
|
|
|
10757
10833
|
html += me.htmlCls.divStr + "dl_menuloadpref' class='" + dialogClass + "'>";
|
|
10834
|
+
html += this.addNotebookTitle('dl_menuloadpref', 'Load a preference file');
|
|
10758
10835
|
html += "Preference file: " + me.htmlCls.inputFileStr + "id='" + me.pre + "menupreffile'><br/>";
|
|
10759
10836
|
html += me.htmlCls.buttonStr + "reload_menupreffile' style='margin-top: 6px;'>Load</button>";
|
|
10760
10837
|
html += "</div>";
|
|
10761
10838
|
|
|
10762
10839
|
html += me.htmlCls.divStr + "dl_dsn6' class='" + dialogClass + "'>";
|
|
10840
|
+
html += this.addNotebookTitle('dl_dsn6', 'Load a DSN6 file');
|
|
10763
10841
|
html += "<b>Note</b>: Always load a PDB file before loading DSN6 files. <br/><br/><br/>";
|
|
10764
10842
|
|
|
10765
10843
|
html += "<span style='white-space:nowrap;font-weight:bold;'>2fofc contour at: <select id='" + me.pre + "dsn6sigma2fofc'>";
|
|
@@ -10782,6 +10860,7 @@ class SetDialog {
|
|
|
10782
10860
|
html += "</div>";
|
|
10783
10861
|
|
|
10784
10862
|
html += me.htmlCls.divStr + "dl_dsn6url' class='" + dialogClass + "'>";
|
|
10863
|
+
html += this.addNotebookTitle('dl_dsn6url', 'Load a selection file via a URL');
|
|
10785
10864
|
html += "<b>Note</b>: Always load a PDB file before loading DSN6 files. <br/><br/><br/>";
|
|
10786
10865
|
|
|
10787
10866
|
html += "<span style='white-space:nowrap;font-weight:bold;'>2fofc contour at: <select id='" + me.pre + "dsn6sigmaurl2fofc'>";
|
|
@@ -10803,6 +10882,7 @@ class SetDialog {
|
|
|
10803
10882
|
html += "</div>";
|
|
10804
10883
|
|
|
10805
10884
|
html += me.htmlCls.divStr + "dl_clr' class='" + dialogClass + "'>";
|
|
10885
|
+
html += this.addNotebookTitle('dl_clr', 'Pick a color');
|
|
10806
10886
|
html += "Click in the input box to use the color picker:<br><br> ";
|
|
10807
10887
|
html += "Custom Color: " + me.htmlCls.inputTextStr + "id='" + me.pre + "colorcustom' value='FF0000' size=8> ";
|
|
10808
10888
|
html += me.htmlCls.buttonStr + "applycustomcolor'>Apply</button>";
|
|
@@ -10814,6 +10894,7 @@ class SetDialog {
|
|
|
10814
10894
|
html += me.htmlCls.setHtmlCls.getPotentialHtml('url', dialogClass);
|
|
10815
10895
|
|
|
10816
10896
|
html += me.htmlCls.divStr + "dl_symmetry' class='" + dialogClass + "'><br>";
|
|
10897
|
+
html += this.addNotebookTitle('dl_symmetry', 'Symmetry');
|
|
10817
10898
|
html += me.htmlCls.divNowrapStr + "Symmetry: <select id='" + me.pre + "selectSymmetry'>";
|
|
10818
10899
|
html += "</select>" + me.htmlCls.space3;
|
|
10819
10900
|
html += me.htmlCls.buttonStr + "applysymmetry'>Apply</button>" + me.htmlCls.space3;
|
|
@@ -10821,10 +10902,12 @@ class SetDialog {
|
|
|
10821
10902
|
html += "</div>";
|
|
10822
10903
|
|
|
10823
10904
|
html += me.htmlCls.divStr + "dl_symd' style='max-width:400px' class='" + dialogClass + "'><br>";
|
|
10905
|
+
html += this.addNotebookTitle('dl_symd', 'Dynamically symmetry calculation using SymD');
|
|
10824
10906
|
|
|
10825
10907
|
html += "</div>";
|
|
10826
10908
|
|
|
10827
10909
|
html += me.htmlCls.divStr + "dl_contact' class='" + dialogClass + "'>";
|
|
10910
|
+
html += this.addNotebookTitle('dl_contact', 'Contact Map');
|
|
10828
10911
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Distance: <select id='" + me.pre + "contactdist'>";
|
|
10829
10912
|
html += me.htmlCls.setHtmlCls.getOptionHtml(['4', '5', '6', '7', '8', '9', '10'], 4);
|
|
10830
10913
|
html += "</select></span>";
|
|
@@ -10837,6 +10920,7 @@ class SetDialog {
|
|
|
10837
10920
|
html += "</div>";
|
|
10838
10921
|
|
|
10839
10922
|
html += me.htmlCls.divStr + "dl_hbonds' class='" + dialogClass + "'>";
|
|
10923
|
+
html += this.addNotebookTitle('dl_hbonds', 'Interaction Analysis');
|
|
10840
10924
|
html += "1. Choose interaction types and their thresholds:<br>";
|
|
10841
10925
|
html += "<div class='icn3d-box'><table border=0 width=450><tr>";
|
|
10842
10926
|
html += "<td style='white-space:nowrap'>" + me.htmlCls.inputCheckStr + "id='" + me.pre + "analysis_hbond' checked>Hydrogen Bonds <span style='background-color:#" + me.htmlCls.hbondColor + "'>" + me.htmlCls.space3 + "</span></td>";
|
|
@@ -10935,6 +11019,7 @@ class SetDialog {
|
|
|
10935
11019
|
html += "</div>";
|
|
10936
11020
|
|
|
10937
11021
|
html += me.htmlCls.divStr + "dl_realign' class='" + dialogClass + "'>";
|
|
11022
|
+
html += this.addNotebookTitle('dl_realign', 'Realign by sequence');
|
|
10938
11023
|
|
|
10939
11024
|
html += me.htmlCls.divNowrapStr + "1. Select sets below <br>or use your current selection:</div><br>";
|
|
10940
11025
|
html += "<div style='text-indent:1.1em'><select id='" + me.pre + "atomsCustomRealign' multiple size='5' style='min-width:130px;'>";
|
|
@@ -10944,6 +11029,7 @@ class SetDialog {
|
|
|
10944
11029
|
html += "</div>";
|
|
10945
11030
|
|
|
10946
11031
|
html += me.htmlCls.divStr + "dl_realignbystruct' class='" + dialogClass + "' style='max-width:500px'>";
|
|
11032
|
+
html += this.addNotebookTitle('dl_realignbystruct', 'Realign by structure');
|
|
10947
11033
|
|
|
10948
11034
|
//html += "<div><b>1</b>. There are two options to align chains. Option \"a\" is to select a list of chains below, and align all chains to the first chain. Option \"b\" is to select sets below or use your current selection, and align all chains pairwise.</div><br>";
|
|
10949
11035
|
html += "<div><b>1</b>. Select sets below or use your current selection.</div><br>";
|
|
@@ -10959,6 +11045,7 @@ class SetDialog {
|
|
|
10959
11045
|
html += "</div>";
|
|
10960
11046
|
|
|
10961
11047
|
html += me.htmlCls.divStr + "dl_realigntwostru' class='" + dialogClass + "'>";
|
|
11048
|
+
html += this.addNotebookTitle('dl_realigntwostru', 'Realign two structure complexes');
|
|
10962
11049
|
|
|
10963
11050
|
html += me.htmlCls.divNowrapStr + "1. Select sets below or use your current selection:</div><br>";
|
|
10964
11051
|
html += "<div style='text-indent:1.1em'><select id='" + me.pre + "atomsCustomRealignByStruct2' multiple size='5' style='min-width:130px;'>";
|
|
@@ -10971,6 +11058,7 @@ class SetDialog {
|
|
|
10971
11058
|
|
|
10972
11059
|
|
|
10973
11060
|
html += me.htmlCls.divStr + "dl_colorspectrumacrosssets' class='" + dialogClass + "'>";
|
|
11061
|
+
html += this.addNotebookTitle('dl_colorspectrumacrosssets', 'Set color spectrum across sets');
|
|
10974
11062
|
|
|
10975
11063
|
html += me.htmlCls.divNowrapStr + "1. Select sets below:</div><br>";
|
|
10976
11064
|
html += "<div style='text-indent:1.1em'><select id='" + me.pre + "atomsCustomColorSpectrumAcross' multiple size='5' style='min-width:130px;'>";
|
|
@@ -10981,7 +11069,7 @@ class SetDialog {
|
|
|
10981
11069
|
|
|
10982
11070
|
|
|
10983
11071
|
html += me.htmlCls.divStr + "dl_colorspectrumbysets' class='" + dialogClass + "'>";
|
|
10984
|
-
|
|
11072
|
+
html += this.addNotebookTitle('dl_colorspectrumbysets', 'Set color spectrum for residues in sets');
|
|
10985
11073
|
html += me.htmlCls.divNowrapStr + "1. Select sets below:</div><br>";
|
|
10986
11074
|
html += "<div style='text-indent:1.1em'><select id='" + me.pre + "atomsCustomColorSpectrum' multiple size='5' style='min-width:130px;'>";
|
|
10987
11075
|
html += "</select></div>";
|
|
@@ -10991,7 +11079,7 @@ class SetDialog {
|
|
|
10991
11079
|
|
|
10992
11080
|
|
|
10993
11081
|
html += me.htmlCls.divStr + "dl_colorrainbowacrosssets' class='" + dialogClass + "'>";
|
|
10994
|
-
|
|
11082
|
+
html += this.addNotebookTitle('dl_colorrainbowacrosssets', 'Set color rainbow across sets');
|
|
10995
11083
|
html += me.htmlCls.divNowrapStr + "1. Select sets below:</div><br>";
|
|
10996
11084
|
html += "<div style='text-indent:1.1em'><select id='" + me.pre + "atomsCustomColorRainbowAcross' multiple size='5' style='min-width:130px;'>";
|
|
10997
11085
|
html += "</select></div>";
|
|
@@ -11001,7 +11089,7 @@ class SetDialog {
|
|
|
11001
11089
|
|
|
11002
11090
|
|
|
11003
11091
|
html += me.htmlCls.divStr + "dl_colorrainbowbysets' class='" + dialogClass + "'>";
|
|
11004
|
-
|
|
11092
|
+
html += this.addNotebookTitle('dl_colorrainbowbysets', 'Set color rainbow for residues in sets');
|
|
11005
11093
|
html += me.htmlCls.divNowrapStr + "1. Select sets below:</div><br>";
|
|
11006
11094
|
html += "<div style='text-indent:1.1em'><select id='" + me.pre + "atomsCustomColorRainbow' multiple size='5' style='min-width:130px;'>";
|
|
11007
11095
|
html += "</select></div>";
|
|
@@ -11011,12 +11099,15 @@ class SetDialog {
|
|
|
11011
11099
|
|
|
11012
11100
|
|
|
11013
11101
|
html += me.htmlCls.divStr + "dl_allinteraction' style='background-color:white' class='" + dialogClass + "'>";
|
|
11102
|
+
html += this.addNotebookTitle('dl_allinteraction', 'All interactions', true);
|
|
11014
11103
|
html += "</div>";
|
|
11015
11104
|
|
|
11016
11105
|
html += me.htmlCls.divStr + "dl_interactionsorted' style='background-color:white' class='" + dialogClass + "'>";
|
|
11106
|
+
html += this.addNotebookTitle('dl_interactionsorted', 'Sorted interactions', true);
|
|
11017
11107
|
html += "</div>";
|
|
11018
11108
|
|
|
11019
11109
|
html += me.htmlCls.divStr + "dl_linegraph' style='background-color:white' class='" + dialogClass + "'>";
|
|
11110
|
+
html += this.addNotebookTitle('dl_linegraph', '2D Interaction Network');
|
|
11020
11111
|
|
|
11021
11112
|
html += me.htmlCls.divNowrapStr + '<div style="width:20px; margin-top:6px; display:inline-block;"><span id="'
|
|
11022
11113
|
+ me.pre + 'dl_linegraphcolor_expand" class="ui-icon ui-icon-plus icn3d-expand icn3d-link" style="display:none; width:15px;" title="Expand"></span><span id="'
|
|
@@ -11047,6 +11138,7 @@ class SetDialog {
|
|
|
11047
11138
|
html += "</div>";
|
|
11048
11139
|
|
|
11049
11140
|
html += me.htmlCls.divStr + "dl_scatterplot' style='background-color:white' class='" + dialogClass + "'>";
|
|
11141
|
+
html += this.addNotebookTitle('dl_scatterplot', '2D Interaction Map');
|
|
11050
11142
|
|
|
11051
11143
|
html += me.htmlCls.divNowrapStr + "Hold Ctrl key to select multiple nodes." + me.htmlCls.space3;
|
|
11052
11144
|
|
|
@@ -11073,6 +11165,7 @@ class SetDialog {
|
|
|
11073
11165
|
html += "</div>";
|
|
11074
11166
|
|
|
11075
11167
|
html += me.htmlCls.divStr + "dl_contactmap' style='background-color:white' class='" + dialogClass + "'>";
|
|
11168
|
+
html += this.addNotebookTitle('dl_contactmap', 'Contact Map');
|
|
11076
11169
|
|
|
11077
11170
|
html += me.htmlCls.divNowrapStr + "Hold Ctrl key to select multiple nodes." + me.htmlCls.space3 + "</div>";
|
|
11078
11171
|
|
|
@@ -11091,6 +11184,7 @@ class SetDialog {
|
|
|
11091
11184
|
html += "</div>";
|
|
11092
11185
|
|
|
11093
11186
|
html += me.htmlCls.divStr + "dl_alignerrormap' style='background-color:white' class='" + dialogClass + "'>";
|
|
11187
|
+
html += this.addNotebookTitle('dl_alignerrormap', 'PAE Map');
|
|
11094
11188
|
|
|
11095
11189
|
html += me.htmlCls.divNowrapStr + "Hold Ctrl key to select multiple nodes." + me.htmlCls.space3 + "</div>";
|
|
11096
11190
|
|
|
@@ -11118,6 +11212,7 @@ class SetDialog {
|
|
|
11118
11212
|
html += "</div>";
|
|
11119
11213
|
|
|
11120
11214
|
html += me.htmlCls.divStr + "dl_elecmap2fofc' class='" + dialogClass + "'>";
|
|
11215
|
+
html += this.addNotebookTitle('dl_elecmap2fofc', 'Electron Density 2F0-Fc Map');
|
|
11121
11216
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Contour at: <select id='" + me.pre + "sigma2fofc'>";
|
|
11122
11217
|
|
|
11123
11218
|
html += me.htmlCls.setHtmlCls.getOptionHtml(optArray1, 3);
|
|
@@ -11126,6 +11221,7 @@ class SetDialog {
|
|
|
11126
11221
|
html += "</div>";
|
|
11127
11222
|
|
|
11128
11223
|
html += me.htmlCls.divStr + "dl_elecmapfofc' class='" + dialogClass + "'>";
|
|
11224
|
+
html += this.addNotebookTitle('dl_elecmapfofc', 'Electron Density F0-Fc Map');
|
|
11129
11225
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Contour at: <select id='" + me.pre + "sigmafofc'>";
|
|
11130
11226
|
|
|
11131
11227
|
html += me.htmlCls.setHtmlCls.getOptionHtml(optArray1, 5);
|
|
@@ -11134,6 +11230,7 @@ class SetDialog {
|
|
|
11134
11230
|
html += "</div>";
|
|
11135
11231
|
|
|
11136
11232
|
html += me.htmlCls.divStr + "dl_emmap' class='" + dialogClass + "'>";
|
|
11233
|
+
html += this.addNotebookTitle('dl_emmap', 'EM Density Map');
|
|
11137
11234
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Contour at: <select id='" + me.pre + "empercentage'>";
|
|
11138
11235
|
|
|
11139
11236
|
html += me.htmlCls.setHtmlCls.getOptionHtml(['0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100'], 3);
|
|
@@ -11142,6 +11239,7 @@ class SetDialog {
|
|
|
11142
11239
|
html += "</div>";
|
|
11143
11240
|
|
|
11144
11241
|
html += me.htmlCls.divStr + "dl_aroundsphere' class='" + dialogClass + "'>";
|
|
11242
|
+
html += this.addNotebookTitle('dl_aroundsphere', 'Select a sphere around a set of residues');
|
|
11145
11243
|
html += me.htmlCls.divNowrapStr + "1. Select the first set:</div>";
|
|
11146
11244
|
html += "<div style='text-indent:1.1em'><select id='" + me.pre + "atomsCustomSphere2' multiple size='3' style='min-width:130px;'>";
|
|
11147
11245
|
html += "</select></div><br>";
|
|
@@ -11156,6 +11254,7 @@ class SetDialog {
|
|
|
11156
11254
|
html += "</div>";
|
|
11157
11255
|
|
|
11158
11256
|
html += me.htmlCls.divStr + "dl_adjustmem' class='" + dialogClass + "'>";
|
|
11257
|
+
html += this.addNotebookTitle('dl_adjustmem', 'Adjust membranes');
|
|
11159
11258
|
html += "<b>Note</b>: The membranes are parallel to the X-Y plane. The center of the membranes is at Z = 0. <br/><br/>";
|
|
11160
11259
|
html += me.htmlCls.divNowrapStr + "1. Extracellular membrane Z-axis position: " + me.htmlCls.inputTextStr + "id='" + me.pre + "extra_mem_z' value='' size='3'> Å</div><br/>";
|
|
11161
11260
|
html += me.htmlCls.divNowrapStr + "2. intracellular membrane Z-axis position: " + me.htmlCls.inputTextStr + "id='" + me.pre + "intra_mem_z' value='' size='3'> Å</div><br/>";
|
|
@@ -11163,6 +11262,7 @@ class SetDialog {
|
|
|
11163
11262
|
html += "</div>";
|
|
11164
11263
|
|
|
11165
11264
|
html += me.htmlCls.divStr + "dl_selectplane' class='" + dialogClass + "'>";
|
|
11265
|
+
html += this.addNotebookTitle('dl_selectplane', 'Select a plane');
|
|
11166
11266
|
html += "<b>Note</b>: The membranes are parallel to the X-Y plane. The center of the membranes is at Z = 0. <br/><br/>";
|
|
11167
11267
|
html += me.htmlCls.divNowrapStr + "1. Z-axis position of the first X-Y plane: " + me.htmlCls.inputTextStr + "id='" + me.pre + "selectplane_z1' value='15' size='3'> Å</div><br/>";
|
|
11168
11268
|
html += me.htmlCls.divNowrapStr + "2. Z-axis position of the second X-Y plane: " + me.htmlCls.inputTextStr + "id='" + me.pre + "selectplane_z2' value='-15' size='3'> Å</div><br/>";
|
|
@@ -11170,6 +11270,7 @@ class SetDialog {
|
|
|
11170
11270
|
html += "</div>";
|
|
11171
11271
|
|
|
11172
11272
|
html += me.htmlCls.divStr + "dl_addlabel' class='" + dialogClass + "'>";
|
|
11273
|
+
html += this.addNotebookTitle('dl_addlabel', 'Add labels between two atoms');
|
|
11173
11274
|
html += "1. Text: " + me.htmlCls.inputTextStr + "id='" + me.pre + "labeltext' value='Text' size=4><br/>";
|
|
11174
11275
|
html += "2. Size: " + me.htmlCls.inputTextStr + "id='" + me.pre + "labelsize' value='18' size=4 maxlength=2><br/>";
|
|
11175
11276
|
html += "3. Color: " + me.htmlCls.inputTextStr + "id='" + me.pre + "labelcolor' value='" + defaultColor + "' size=4><br/>";
|
|
@@ -11184,6 +11285,7 @@ class SetDialog {
|
|
|
11184
11285
|
html += "</div>";
|
|
11185
11286
|
|
|
11186
11287
|
html += me.htmlCls.divStr + "dl_addlabelselection' class='" + dialogClass + "'>";
|
|
11288
|
+
html += this.addNotebookTitle('dl_addlabelselection', 'Add labels for your selection');
|
|
11187
11289
|
html += "1. Text: " + me.htmlCls.inputTextStr + "id='" + me.pre + "labeltext2' value='Text' size=4><br/>";
|
|
11188
11290
|
html += "2. Size: " + me.htmlCls.inputTextStr + "id='" + me.pre + "labelsize2' value='18' size=4 maxlength=2><br/>";
|
|
11189
11291
|
html += "3. Color: " + me.htmlCls.inputTextStr + "id='" + me.pre + "labelcolor2' value='" + defaultColor + "' size=4><br/>";
|
|
@@ -11192,11 +11294,13 @@ class SetDialog {
|
|
|
11192
11294
|
html += "</div>";
|
|
11193
11295
|
|
|
11194
11296
|
html += me.htmlCls.divStr + "dl_labelColor' class='" + dialogClass + "'>";
|
|
11297
|
+
html += this.addNotebookTitle('dl_labelColor', 'Change label color');
|
|
11195
11298
|
html += "Color for all labels: " + me.htmlCls.inputTextStr + "id='" + me.pre + "labelcolorall' value='" + defaultColor + "' size=4><br/><br/>";
|
|
11196
11299
|
html += me.htmlCls.spanNowrapStr + me.htmlCls.buttonStr + "applylabelcolor'>Display</button></span>";
|
|
11197
11300
|
html += "</div>";
|
|
11198
11301
|
|
|
11199
11302
|
html += me.htmlCls.divStr + "dl_distance' class='" + dialogClass + "'>";
|
|
11303
|
+
html += this.addNotebookTitle('dl_distance', 'Measure distance');
|
|
11200
11304
|
if(me.utilsCls.isMobile()) {
|
|
11201
11305
|
html += me.htmlCls.spanNowrapStr + "1. Touch TWO atoms</span><br/>";
|
|
11202
11306
|
}
|
|
@@ -11208,6 +11312,7 @@ class SetDialog {
|
|
|
11208
11312
|
html += "</div>";
|
|
11209
11313
|
|
|
11210
11314
|
html += me.htmlCls.divStr + "dl_stabilizer' class='" + dialogClass + "'>";
|
|
11315
|
+
html += this.addNotebookTitle('dl_stabilizer', 'Add a stabilizer');
|
|
11211
11316
|
if(me.utilsCls.isMobile()) {
|
|
11212
11317
|
html += me.htmlCls.spanNowrapStr + "1. Touch TWO atoms</span><br/>";
|
|
11213
11318
|
}
|
|
@@ -11219,6 +11324,7 @@ class SetDialog {
|
|
|
11219
11324
|
html += "</div>";
|
|
11220
11325
|
|
|
11221
11326
|
html += me.htmlCls.divStr + "dl_disttwosets' class='" + dialogClass + "'>";
|
|
11327
|
+
html += this.addNotebookTitle('dl_disttwosets', 'Measure the distance between two sets');
|
|
11222
11328
|
html += me.htmlCls.spanNowrapStr + "1. Select two sets</span><br/>";
|
|
11223
11329
|
html += "<table border=0 width=400 cellspacing=10><tr><td>";
|
|
11224
11330
|
|
|
@@ -11240,6 +11346,7 @@ class SetDialog {
|
|
|
11240
11346
|
|
|
11241
11347
|
|
|
11242
11348
|
html += me.htmlCls.divStr + "dl_linebtwsets' class='" + dialogClass + "'>";
|
|
11349
|
+
html += this.addNotebookTitle('dl_linebtwsets', 'Add a line between two sets');
|
|
11243
11350
|
html += me.htmlCls.spanNowrapStr + "1. Select two sets</span><br/>";
|
|
11244
11351
|
html += "<table border=0 width=400 cellspacing=10><tr><td>";
|
|
11245
11352
|
|
|
@@ -11273,6 +11380,7 @@ class SetDialog {
|
|
|
11273
11380
|
|
|
11274
11381
|
|
|
11275
11382
|
html += me.htmlCls.divStr + "dl_cartoonshape' class='" + dialogClass + "'>";
|
|
11383
|
+
html += this.addNotebookTitle('dl_cartoonshape', 'Cartoon Shape');
|
|
11276
11384
|
html += me.htmlCls.spanNowrapStr + "1. Select a set:</span><br/>";
|
|
11277
11385
|
html += "<div style='text-indent:1.1em'><select style='max-width:200px' id='" + me.pre + "cartoonshape' multiple size='5' style='min-width:130px;'>";
|
|
11278
11386
|
html += "</select></div><br>";
|
|
@@ -11295,6 +11403,7 @@ class SetDialog {
|
|
|
11295
11403
|
|
|
11296
11404
|
|
|
11297
11405
|
html += me.htmlCls.divStr + "dl_distmanysets' class='" + dialogClass + "'>";
|
|
11406
|
+
html += this.addNotebookTitle('dl_distmanysets', 'Measure distances among many sets');
|
|
11298
11407
|
html += me.htmlCls.spanNowrapStr + "1. Select sets for pairwise distances</span><br/>";
|
|
11299
11408
|
html += "<table border=0 width=400 cellspacing=10><tr><td>";
|
|
11300
11409
|
|
|
@@ -11314,6 +11423,7 @@ class SetDialog {
|
|
|
11314
11423
|
html += "</div>";
|
|
11315
11424
|
|
|
11316
11425
|
html += me.htmlCls.divStr + "dl_stabilizer_rm' class='" + dialogClass + "'>";
|
|
11426
|
+
html += this.addNotebookTitle('dl_stabilizer_rm', 'Remove a stabilizer');
|
|
11317
11427
|
if(me.utilsCls.isMobile()) {
|
|
11318
11428
|
html += me.htmlCls.spanNowrapStr + "1. Touch TWO atoms</span><br/>";
|
|
11319
11429
|
}
|
|
@@ -11324,14 +11434,17 @@ class SetDialog {
|
|
|
11324
11434
|
html += "</div>";
|
|
11325
11435
|
|
|
11326
11436
|
html += me.htmlCls.divStr + "dl_thickness' class='" + dialogClass + "'>";
|
|
11437
|
+
html += this.addNotebookTitle('dl_thickness', 'Set thickness');
|
|
11327
11438
|
html += me.htmlCls.setHtmlCls.setThicknessHtml('3dprint');
|
|
11328
11439
|
html += "</div>";
|
|
11329
11440
|
|
|
11330
11441
|
html += me.htmlCls.divStr + "dl_thickness2' class='" + dialogClass + "'>";
|
|
11442
|
+
html += this.addNotebookTitle('dl_thickness2', 'Set thickness');
|
|
11331
11443
|
html += me.htmlCls.setHtmlCls.setThicknessHtml('style');
|
|
11332
11444
|
html += "</div>";
|
|
11333
11445
|
|
|
11334
11446
|
html += me.htmlCls.divStr + "dl_menupref' class='" + dialogClass + "'>";
|
|
11447
|
+
html += this.addNotebookTitle('dl_menupref', 'Preferences for menus');
|
|
11335
11448
|
html += "<b>Note</b>: The following parameters will be saved in cache. You just need to set them once. <br><br>";
|
|
11336
11449
|
|
|
11337
11450
|
html += me.htmlCls.spanNowrapStr + "" + me.htmlCls.buttonStr + "apply_menupref'>Apply</button></span>";
|
|
@@ -11347,6 +11460,7 @@ class SetDialog {
|
|
|
11347
11460
|
html += "</div>";
|
|
11348
11461
|
|
|
11349
11462
|
html += me.htmlCls.divStr + "dl_addtrack' class='" + dialogClass + "'>";
|
|
11463
|
+
html += this.addNotebookTitle('dl_addtrack', 'Add a track');
|
|
11350
11464
|
html += " <input type='hidden' id='" + me.pre + "track_chainid' value=''>";
|
|
11351
11465
|
|
|
11352
11466
|
html += me.htmlCls.divStr + "dl_addtrack_tabs' style='border:0px;'>";
|
|
@@ -11402,6 +11516,7 @@ class SetDialog {
|
|
|
11402
11516
|
html += "</div>";
|
|
11403
11517
|
|
|
11404
11518
|
html += me.htmlCls.divStr + "dl_saveselection' class='" + dialogClass + "'>";
|
|
11519
|
+
html += this.addNotebookTitle('dl_saveselection', 'Save Selection');
|
|
11405
11520
|
let index =(ic && ic.defNames2Atoms) ? Object.keys(ic.defNames2Atoms).length : 1;
|
|
11406
11521
|
let suffix = '';
|
|
11407
11522
|
html += "Name: " + me.htmlCls.inputTextStr + "id='" + me.pre + "seq_command_name" + suffix + "' value='seq_" + index + "' size='5'> <br>";
|
|
@@ -11411,6 +11526,7 @@ class SetDialog {
|
|
|
11411
11526
|
|
|
11412
11527
|
|
|
11413
11528
|
html += me.htmlCls.divStr + "dl_copyurl' style='width:520px;' class='" + dialogClass + "'>";
|
|
11529
|
+
html += this.addNotebookTitle('dl_copyurl', 'Share Link');
|
|
11414
11530
|
html += "Please copy one of the URLs below. They show the same result.<br>(To add a title to share link, click \"Windows > Your Note\" and click \"File > Share Link\" again.)<br><br>";
|
|
11415
11531
|
html += "Original URL with commands: <br><textarea id='" + me.pre + "ori_url' rows='4' style='width:100%'></textarea><br><br>";
|
|
11416
11532
|
html += "Lifelong Short URL:(To replace this URL, send a pull request to update share.html at <a href='https://github.com/ncbi/icn3d' target='_blank'>iCn3D GitHub</a>)<br>" + me.htmlCls.inputTextStr + "id='" + me.pre + "short_url' value='' style='width:100%'><br><br>";
|
|
@@ -11418,6 +11534,7 @@ class SetDialog {
|
|
|
11418
11534
|
html += "</div>";
|
|
11419
11535
|
|
|
11420
11536
|
html += me.htmlCls.divStr + "dl_selectannotations' class='" + dialogClass + " icn3d-annotation' style='background-color:white;'>";
|
|
11537
|
+
html += this.addNotebookTitle('dl_selectannotations', 'Sequences & Annotations');
|
|
11421
11538
|
|
|
11422
11539
|
html += me.htmlCls.divStr + "dl_annotations_tabs'>";
|
|
11423
11540
|
|
|
@@ -11446,6 +11563,7 @@ class SetDialog {
|
|
|
11446
11563
|
html += "</div>";
|
|
11447
11564
|
|
|
11448
11565
|
html += me.htmlCls.divStr + "dl_graph' style='background-color:white;' class='" + dialogClass + "'>";
|
|
11566
|
+
html += this.addNotebookTitle('dl_graph', 'Interactions');
|
|
11449
11567
|
me.svgid = me.pre + 'icn3d_viz';
|
|
11450
11568
|
html += '<style>';
|
|
11451
11569
|
html += '#' + me.svgid + ' svg { border: 1px solid; font: 13px sans-serif; text-anchor: end; }';
|
|
@@ -11500,6 +11618,7 @@ class SetDialog {
|
|
|
11500
11618
|
html += "</div>";
|
|
11501
11619
|
|
|
11502
11620
|
html += me.htmlCls.divStr + "dl_area' class='" + dialogClass + "'>";
|
|
11621
|
+
html += this.addNotebookTitle('dl_area', 'Surface Area');
|
|
11503
11622
|
html += "Solvent Accessible Surface Area(SASA) calculated using the <a href='https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0008140' target='_blank'>EDTSurf algorithm</a>: <br>";
|
|
11504
11623
|
html += '(0-20% out is considered "in". 50-100% out is considered "out".)<br><br>';
|
|
11505
11624
|
html += "<b>Toal</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "areavalue' value='' size='10'> Å<sup>2</sup><br><br>";
|
|
@@ -11507,19 +11626,23 @@ class SetDialog {
|
|
|
11507
11626
|
html += "</div>";
|
|
11508
11627
|
|
|
11509
11628
|
html += me.htmlCls.divStr + "dl_colorbyarea' class='" + dialogClass + "'>";
|
|
11629
|
+
html += this.addNotebookTitle('dl_colorbyarea', 'Color by surface area');
|
|
11510
11630
|
html += "<div style='width:500px'>Color each residue based on the percentage of solvent accessilbe surface area. The color ranges from blue, to white, to red for a percentage of 0, 35(variable), and 100, respectively.</div><br>";
|
|
11511
11631
|
html += "<b>Middle Percentage(White)</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "midpercent' value='35' size='10'>% <br><br>";
|
|
11512
11632
|
html += "<button style='white-space:nowrap;' id='" + me.pre + "applycolorbyarea'>Color</button><br/><br/>";
|
|
11513
11633
|
html += "</div>";
|
|
11514
11634
|
|
|
11515
11635
|
html += me.htmlCls.divStr + "dl_rmsd' class='" + dialogClass + "' style='max-width:300px'>";
|
|
11636
|
+
html += this.addNotebookTitle('dl_rmsd', 'RMSD', true);
|
|
11516
11637
|
|
|
11517
11638
|
html += "</div>";
|
|
11518
11639
|
|
|
11519
11640
|
html += me.htmlCls.divStr + "dl_buriedarea' class='" + dialogClass + "'>";
|
|
11641
|
+
html += this.addNotebookTitle('dl_buriedarea', 'Buried surface area', true);
|
|
11520
11642
|
html += "</div>";
|
|
11521
11643
|
|
|
11522
11644
|
html += me.htmlCls.divStr + "dl_propbypercentout' class='" + dialogClass + "'>";
|
|
11645
|
+
html += this.addNotebookTitle('dl_propbypercentout', 'Select residues basen on solvent accessilbe surface area');
|
|
11523
11646
|
html += "<div style='width:400px'>Select residue based on the percentage of solvent accessilbe surface area. The values are in the range of 0-100.</div><br>";
|
|
11524
11647
|
html += "<b>Min Percentage</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "minpercentout' value='0' size='10'>% <br>";
|
|
11525
11648
|
html += "<b>Max Percentage</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "maxpercentout' value='100' size='10'>% <br>";
|
|
@@ -11527,6 +11650,7 @@ class SetDialog {
|
|
|
11527
11650
|
html += "</div>";
|
|
11528
11651
|
|
|
11529
11652
|
html += me.htmlCls.divStr + "dl_propbybfactor' class='" + dialogClass + "'>";
|
|
11653
|
+
html += this.addNotebookTitle('dl_propbybfactor', 'Select residues basen on B-factor');
|
|
11530
11654
|
html += "<div style='width:400px'>Select residue based on B-factor. The values are in the range of 0-100.</div><br>";
|
|
11531
11655
|
html += "<b>Min B-factor</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "minbfactor' value='0' size='10'>% <br>";
|
|
11532
11656
|
html += "<b>Max B-factor</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "maxbfactor' value='100' size='10'>% <br>";
|
|
@@ -11534,9 +11658,11 @@ class SetDialog {
|
|
|
11534
11658
|
html += "</div>";
|
|
11535
11659
|
|
|
11536
11660
|
html += me.htmlCls.divStr + "dl_legend' class='" + dialogClass + "' style='max-width:500px; background-color:white'>";
|
|
11661
|
+
html += this.addNotebookTitle('dl_legend', 'Legend', true);
|
|
11537
11662
|
html += "</div>";
|
|
11538
11663
|
|
|
11539
11664
|
html += me.htmlCls.divStr + "dl_disttable' class='" + dialogClass + "'>";
|
|
11665
|
+
html += this.addNotebookTitle('dl_disttable', 'Distance Table', true);
|
|
11540
11666
|
html += "</div>";
|
|
11541
11667
|
|
|
11542
11668
|
html += "</div>";
|
|
@@ -14852,6 +14978,8 @@ class SetHtml {
|
|
|
14852
14978
|
}
|
|
14853
14979
|
|
|
14854
14980
|
html += me.htmlCls.divStr + "dl_" + name1 + "' class='" + dialogClass + "'>";
|
|
14981
|
+
html += me.htmlCls.setDialogCls.addNotebookTitle("dl_" + name1, 'DelPhi Potential');
|
|
14982
|
+
|
|
14855
14983
|
html += me.htmlCls.divStr + "dl_" + name1 + "_tabs' style='border:0px;'>";
|
|
14856
14984
|
html += "<ul>";
|
|
14857
14985
|
html += "<li><a href='#" + me.pre + name1 + "tab1'>" + tab1 + "</a></li>";
|
|
@@ -15165,7 +15293,7 @@ class SetHtml {
|
|
|
15165
15293
|
statefile = imageStr.substr(posState + matchedStrState.length, posStateEnd - posState- matchedStrState.length);
|
|
15166
15294
|
//statefile = decodeURIComponent(statefile);
|
|
15167
15295
|
statefile = decodeURIComponent(statefile + "\n" + commandStr);
|
|
15168
|
-
|
|
15296
|
+
|
|
15169
15297
|
if(type === 'pdb') {
|
|
15170
15298
|
await ic.pdbParserCls.loadPdbData(data);
|
|
15171
15299
|
|
|
@@ -22167,7 +22295,7 @@ class Scene {
|
|
|
22167
22295
|
ic.cam.remove( ic.canvasUI.mesh );
|
|
22168
22296
|
}
|
|
22169
22297
|
|
|
22170
|
-
if (controllerInfo !== undefined){
|
|
22298
|
+
if (controller && controllerInfo !== undefined){
|
|
22171
22299
|
// "trigger":{"button":0},
|
|
22172
22300
|
// "squeeze":{"button":1},
|
|
22173
22301
|
// "thumbstick":{"button":3,"xAxis":2,"yAxis":3}, "touchpad":{"button":2,"xAxis":0,"yAxis":1},
|
|
@@ -22249,8 +22377,11 @@ class Scene {
|
|
|
22249
22377
|
ic.cam.remove( ic.canvasUI.mesh );
|
|
22250
22378
|
} },
|
|
22251
22379
|
sphere: { type: "button", position:{ top: margin + (btnHeight + margin), left: margin + 4*(btnWidth + margin) }, width: btnWidth, height: btnHeight, fontColor: fontColor, fontSize: fontSize, backgroundColor: bkgdColor, hover: hoverColor, onSelect: function() {
|
|
22252
|
-
ic.setOptionCls.setStyle("proteins", "sphere");
|
|
22253
|
-
ic.setOptionCls.setStyle("nucleotides", "sphere");
|
|
22380
|
+
// ic.setOptionCls.setStyle("proteins", "sphere");
|
|
22381
|
+
// ic.setOptionCls.setStyle("nucleotides", "sphere");
|
|
22382
|
+
ic.opts['surface'] = 'molecular surface';
|
|
22383
|
+
ic.applyMapCls.applySurfaceOptions();
|
|
22384
|
+
|
|
22254
22385
|
ic.cam.remove( ic.canvasUI.mesh );
|
|
22255
22386
|
} },
|
|
22256
22387
|
|
|
@@ -22316,14 +22447,17 @@ class Scene {
|
|
|
22316
22447
|
//ic.canvasUILog.updateElement( "info", "ERROR: " + err );
|
|
22317
22448
|
}
|
|
22318
22449
|
} },
|
|
22319
|
-
|
|
22320
|
-
|
|
22321
|
-
|
|
22322
|
-
|
|
22323
|
-
|
|
22324
|
-
|
|
22325
|
-
|
|
22326
|
-
|
|
22450
|
+
delphi: { type: "button", position:{ top: margin + 4*(btnHeight + margin), left: margin + 2*(btnWidth + margin)}, width: btnWidth, height: btnHeight, fontColor: fontColor, fontSize: fontSize, backgroundColor: bkgdColor, hover: hoverColor, onSelect: async function() {
|
|
22451
|
+
let gsize = 65, salt = 0.15, contour = 2, bSurface = true;
|
|
22452
|
+
ic.phisurftype = 22; // molecular surface
|
|
22453
|
+
ic.phisurfop = 1.0; // opacity
|
|
22454
|
+
ic.phisurfwf = 'no'; // wireframe
|
|
22455
|
+
await ic.delphiCls.CalcPhi(gsize, salt, contour, bSurface);
|
|
22456
|
+
|
|
22457
|
+
//ic.canvasUILog.updateElement( "info", "debug: " + ic.debugStr );
|
|
22458
|
+
ic.cam.remove( ic.canvasUI.mesh );
|
|
22459
|
+
} },
|
|
22460
|
+
removeLabel: { type: "button", position:{ top: margin + 4*(btnHeight + margin), left: margin + 3*(btnWidth + margin) }, width: btnWidth, height: btnHeight, fontColor: fontColor, fontSize: fontSize, backgroundColor: bkgdColor, hover: hoverColor, onSelect: function() {
|
|
22327
22461
|
for(let name in ic.labels) {
|
|
22328
22462
|
//if(name === 'residue' || name === 'custom') {
|
|
22329
22463
|
ic.labels[name] = [];
|
|
@@ -22333,7 +22467,7 @@ class Scene {
|
|
|
22333
22467
|
ic.drawCls.draw();
|
|
22334
22468
|
ic.cam.remove( ic.canvasUI.mesh );
|
|
22335
22469
|
} },
|
|
22336
|
-
reset: { type: "button", position:{ top: margin + 4*(btnHeight + margin), left: margin +
|
|
22470
|
+
reset: { type: "button", position:{ top: margin + 4*(btnHeight + margin), left: margin + 4*(btnWidth + margin) }, width: btnWidth, height: btnHeight, fontColor: fontColor, fontSize: fontSize, backgroundColor: bkgdColor, hover: hoverColor, onSelect: function() {
|
|
22337
22471
|
ic.selectionCls.resetAll();
|
|
22338
22472
|
|
|
22339
22473
|
ic.cam.remove( ic.canvasUI.mesh );
|
|
@@ -22353,7 +22487,8 @@ class Scene {
|
|
|
22353
22487
|
ribbon: "Ribbon",
|
|
22354
22488
|
schematic: "Schem.",
|
|
22355
22489
|
stick: "Stick",
|
|
22356
|
-
sphere: "Sphere",
|
|
22490
|
+
//sphere: "Sphere",
|
|
22491
|
+
sphere: "Surface",
|
|
22357
22492
|
|
|
22358
22493
|
color: "Color",
|
|
22359
22494
|
rainbow: "Rainbow",
|
|
@@ -22373,7 +22508,7 @@ class Scene {
|
|
|
22373
22508
|
|
|
22374
22509
|
analysis: "Analysis",
|
|
22375
22510
|
interaction: "Interact",
|
|
22376
|
-
|
|
22511
|
+
delphi: "DelPhi",
|
|
22377
22512
|
removeLabel: "No Label",
|
|
22378
22513
|
reset: "Reset"
|
|
22379
22514
|
};
|
|
@@ -22424,6 +22559,8 @@ class Scene {
|
|
|
22424
22559
|
|
|
22425
22560
|
for(let i=0; i<=1; i++){
|
|
22426
22561
|
const controller = ic.renderer.xr.getController( i );
|
|
22562
|
+
if(!controller) continue;
|
|
22563
|
+
|
|
22427
22564
|
ic.dolly.add( controller );
|
|
22428
22565
|
|
|
22429
22566
|
controller.add( line.clone() );
|
|
@@ -25733,6 +25870,8 @@ class TextSprite {
|
|
|
25733
25870
|
sprite.scale.set(expandWidthFactor * factor, factor, 1.0);
|
|
25734
25871
|
}
|
|
25735
25872
|
|
|
25873
|
+
sprite.renderOrder = 1; // larger than the default 0
|
|
25874
|
+
|
|
25736
25875
|
return sprite;
|
|
25737
25876
|
}
|
|
25738
25877
|
|
|
@@ -28522,11 +28661,12 @@ class Surface {
|
|
|
28522
28661
|
cfg.isovalue = ic.mapData.contourPhi;
|
|
28523
28662
|
cfg.type = 'phi';
|
|
28524
28663
|
cfg.loadPhiFrom = ic.loadPhiFrom;
|
|
28525
|
-
|
|
28664
|
+
|
|
28526
28665
|
ps = this.SetupMap(cfg);
|
|
28527
28666
|
}
|
|
28528
28667
|
else {
|
|
28529
28668
|
//1: van der waals surface, 2: molecular surface, 3: solvent accessible surface
|
|
28669
|
+
|
|
28530
28670
|
|
|
28531
28671
|
//exclude water
|
|
28532
28672
|
let atomsToShow = me.hashUtilsCls.exclHash(atoms, ic.water);
|
|
@@ -28560,7 +28700,7 @@ class Surface {
|
|
|
28560
28700
|
|
|
28561
28701
|
ps = this.SetupSurface(cfg);
|
|
28562
28702
|
}
|
|
28563
|
-
|
|
28703
|
+
|
|
28564
28704
|
if(ic.bCalcArea) {
|
|
28565
28705
|
ic.areavalue = ps.area.toFixed(2);
|
|
28566
28706
|
let serial2area = ps.serial2area;
|
|
@@ -28639,7 +28779,7 @@ class Surface {
|
|
|
28639
28779
|
//geo = new THREE.Geometry();
|
|
28640
28780
|
geo = new THREE.BufferGeometry();
|
|
28641
28781
|
let verticeArray = [], colorArray = [], indexArray = [], color;
|
|
28642
|
-
|
|
28782
|
+
|
|
28643
28783
|
//var geoVertices = verts.map(function (v) {
|
|
28644
28784
|
let offset = 0;
|
|
28645
28785
|
for(let i = 0, il = verts.length; i < il; ++i, offset += 3) {
|
|
@@ -28714,9 +28854,8 @@ class Surface {
|
|
|
28714
28854
|
//geo.normalsNeedUpdate = true;
|
|
28715
28855
|
|
|
28716
28856
|
geo.computeVertexNormals();
|
|
28717
|
-
|
|
28857
|
+
|
|
28718
28858
|
geo.type = 'Surface'; // to be recognized in vrml.js for 3D printing
|
|
28719
|
-
|
|
28720
28859
|
// use the regular way to show transparency for type == 15 (surface with potential)
|
|
28721
28860
|
// if(ic.transparentRenderOrder && (type == 1 || type == 2 || type == 3)) { // WebGL has some ordering problem when dealing with transparency
|
|
28722
28861
|
if(ic.transparentRenderOrder) { // WebGL has some ordering problem when dealing with transparency
|
|
@@ -28904,7 +29043,7 @@ class Surface {
|
|
|
28904
29043
|
mesh.renderOrder = -2; // default: 0, picking: -1
|
|
28905
29044
|
|
|
28906
29045
|
ic.mdl.add(mesh);
|
|
28907
|
-
|
|
29046
|
+
|
|
28908
29047
|
if(type == 11 || type == 12) {
|
|
28909
29048
|
ic.prevMaps.push(mesh);
|
|
28910
29049
|
}
|
|
@@ -28987,7 +29126,7 @@ class Surface {
|
|
|
28987
29126
|
|
|
28988
29127
|
SetupMap(data) { let ic = this.icn3d; ic.icn3dui;
|
|
28989
29128
|
let ps = new ElectronMap(ic);
|
|
28990
|
-
|
|
29129
|
+
|
|
28991
29130
|
ps.initparm(data.header, data.data, data.matrix, data.isovalue, data.center, data.maxdist,
|
|
28992
29131
|
data.pmin, data.pmax, data.water, data.type, data.rmsd_supr, data.loadPhiFrom, data.icn3d);
|
|
28993
29132
|
|
|
@@ -28996,7 +29135,7 @@ class Surface {
|
|
|
28996
29135
|
if(!data.header.bSurface) ps.buildboundary();
|
|
28997
29136
|
|
|
28998
29137
|
if(!data.header.bSurface) ps.marchingcube();
|
|
28999
|
-
|
|
29138
|
+
|
|
29000
29139
|
ps.vpBits = null; // uint8 array of bitmasks
|
|
29001
29140
|
//ps.vpDistance = null; // floatarray of _squared_ distances
|
|
29002
29141
|
ps.vpAtomID = null; // intarray
|
|
@@ -32023,7 +32162,7 @@ class Alternate {
|
|
|
32023
32162
|
//if(window.dialog) window.dialog.dialog( "close" );
|
|
32024
32163
|
|
|
32025
32164
|
let html = me.utilsCls.getMemDesc();
|
|
32026
|
-
$("#" + ic.pre + "
|
|
32165
|
+
$("#" + ic.pre + "dl_rmsd_html").html(html);
|
|
32027
32166
|
if(!me.cfg.bSidebyside) me.htmlCls.dialogCls.openDlg('dl_rmsd', 'Membranes');
|
|
32028
32167
|
}
|
|
32029
32168
|
}
|
|
@@ -32194,6 +32333,8 @@ class Alternate {
|
|
|
32194
32333
|
|
|
32195
32334
|
for(let i = 0, il = ic.controllers.length; i < il; ++i) {
|
|
32196
32335
|
let controller = ic.controllers[i];
|
|
32336
|
+
if(!controller) continue;
|
|
32337
|
+
|
|
32197
32338
|
dt = (i % 2 == 0) ? dt : -dt; // dt * y;
|
|
32198
32339
|
thisClass.handleController( controller, dt, controller.userData.selectPressed, controller.userData.squeezePressed, result.xArray, result.yArray );
|
|
32199
32340
|
//thisClass.handleController( controller, dt, pressed );
|
|
@@ -32202,13 +32343,13 @@ class Alternate {
|
|
|
32202
32343
|
|
|
32203
32344
|
if ( ic.renderer.xr.isPresenting){
|
|
32204
32345
|
if(ic.canvasUI) ic.canvasUI.update();
|
|
32205
|
-
|
|
32346
|
+
if(ic.canvasUILog) ic.canvasUILog.update();
|
|
32206
32347
|
}
|
|
32207
32348
|
}
|
|
32208
32349
|
else if(ic.bAr) {
|
|
32209
32350
|
if ( ic.renderer.xr.isPresenting ){
|
|
32210
32351
|
ic.gestures.update();
|
|
32211
|
-
|
|
32352
|
+
if(ic.canvasUILog) ic.canvasUILog.update();
|
|
32212
32353
|
}
|
|
32213
32354
|
}
|
|
32214
32355
|
|
|
@@ -34404,22 +34545,28 @@ class SetColor {
|
|
|
34404
34545
|
|
|
34405
34546
|
case 'ig strand':
|
|
34406
34547
|
if(ic.bShowRefnum) {
|
|
34407
|
-
|
|
34408
|
-
|
|
34409
|
-
|
|
34410
|
-
|
|
34411
|
-
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34548
|
+
let color;
|
|
34549
|
+
for(let resid in ic.residues) {
|
|
34550
|
+
if(!ic.resid2refnum[resid]) {
|
|
34551
|
+
color = me.parasCls.thr('#FFFFFF');
|
|
34412
34552
|
}
|
|
34413
34553
|
else {
|
|
34414
|
-
let
|
|
34415
|
-
|
|
34416
|
-
|
|
34417
|
-
|
|
34418
|
-
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
34554
|
+
let refnumLabel = ic.resid2refnum[resid];
|
|
34555
|
+
|
|
34556
|
+
if(!refnumLabel) {
|
|
34419
34557
|
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34420
34558
|
}
|
|
34559
|
+
else {
|
|
34560
|
+
let refnumStr = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').substr(1); // C', C''
|
|
34561
|
+
let currStrand = refnumLabel.replace(new RegExp(refnumStr,'g'), '');
|
|
34562
|
+
color = ic.showSeqCls.getRefnumColor(currStrand);
|
|
34563
|
+
|
|
34564
|
+
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
34565
|
+
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34566
|
+
}
|
|
34567
|
+
}
|
|
34421
34568
|
}
|
|
34422
|
-
|
|
34569
|
+
|
|
34423
34570
|
for (let i in ic.residues[resid]) {
|
|
34424
34571
|
let atom = ic.atoms[i];
|
|
34425
34572
|
atom.color = me.parasCls.thr(color);
|
|
@@ -34433,20 +34580,26 @@ class SetColor {
|
|
|
34433
34580
|
|
|
34434
34581
|
case 'ig protodomain':
|
|
34435
34582
|
if(ic.bShowRefnum) {
|
|
34436
|
-
|
|
34437
|
-
|
|
34438
|
-
|
|
34439
|
-
|
|
34440
|
-
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34583
|
+
let color;
|
|
34584
|
+
for(let resid in ic.residues) {
|
|
34585
|
+
if(!ic.resid2refnum[resid]) {
|
|
34586
|
+
color = me.parasCls.thr('#FFFFFF');
|
|
34441
34587
|
}
|
|
34442
34588
|
else {
|
|
34443
|
-
let
|
|
34444
|
-
let currStrand = refnumLabel.replace(new RegExp(refnumStr,'g'), '');
|
|
34445
|
-
color = ic.showSeqCls.getProtodomainColor(currStrand);
|
|
34589
|
+
let refnumLabel = ic.resid2refnum[resid];
|
|
34446
34590
|
|
|
34447
|
-
if(
|
|
34591
|
+
if(!refnumLabel) {
|
|
34448
34592
|
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34449
34593
|
}
|
|
34594
|
+
else {
|
|
34595
|
+
let refnumStr = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').substr(1); // C', C''
|
|
34596
|
+
let currStrand = refnumLabel.replace(new RegExp(refnumStr,'g'), '');
|
|
34597
|
+
color = ic.showSeqCls.getProtodomainColor(currStrand);
|
|
34598
|
+
|
|
34599
|
+
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
34600
|
+
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34601
|
+
}
|
|
34602
|
+
}
|
|
34450
34603
|
}
|
|
34451
34604
|
|
|
34452
34605
|
for (let i in ic.residues[resid]) {
|
|
@@ -35224,7 +35377,7 @@ class SetOption {
|
|
|
35224
35377
|
bClose = true;
|
|
35225
35378
|
}
|
|
35226
35379
|
|
|
35227
|
-
$("#" + me.pre + "
|
|
35380
|
+
$("#" + me.pre + "dl_legend_html").html(html);
|
|
35228
35381
|
me.htmlCls.dialogCls.openDlg('dl_legend', 'Color Legend');
|
|
35229
35382
|
|
|
35230
35383
|
if(bClose) {
|
|
@@ -35390,7 +35543,7 @@ class SetOption {
|
|
|
35390
35543
|
"C' Strand": "6495ED",
|
|
35391
35544
|
"C'' Strand": "006400",
|
|
35392
35545
|
"D Strand": "00FF00",
|
|
35393
|
-
"E Strand": "
|
|
35546
|
+
"E Strand": "FFFF00", //"F0E68C",
|
|
35394
35547
|
"F Strand": "FFA500",
|
|
35395
35548
|
"G Strand": "FF0000",
|
|
35396
35549
|
"G* Strand": "8B0000",
|
|
@@ -35417,12 +35570,12 @@ class SetOption {
|
|
|
35417
35570
|
const name2color = {
|
|
35418
35571
|
"A Strand": "0000FF",
|
|
35419
35572
|
"B Strand": "006400",
|
|
35420
|
-
"C Strand": "
|
|
35573
|
+
"C Strand": "FFFF00", //"F0E68C",
|
|
35421
35574
|
"C' Strand": "FFA500",
|
|
35422
35575
|
"C'' Strand": "FF0000",
|
|
35423
35576
|
"D Strand": "0000FF",
|
|
35424
35577
|
"E Strand": "006400",
|
|
35425
|
-
"F Strand": "
|
|
35578
|
+
"F Strand": "FFFF00", //"F0E68C",
|
|
35426
35579
|
"G Strand": "FFA500",
|
|
35427
35580
|
"Loop": "CCCCCC"
|
|
35428
35581
|
};
|
|
@@ -37642,6 +37795,7 @@ class Domain3d {
|
|
|
37642
37795
|
this.icn3d = icn3d;
|
|
37643
37796
|
|
|
37644
37797
|
//this.dcut = 8; // threshold for C-alpha interactions
|
|
37798
|
+
|
|
37645
37799
|
// It seemed the threshold 7 angstrom works better
|
|
37646
37800
|
this.dcut = 7; // threshold for C-alpha interactions
|
|
37647
37801
|
|
|
@@ -37677,6 +37831,9 @@ class Domain3d {
|
|
|
37677
37831
|
this.c_delta = 3; // cut set parameter
|
|
37678
37832
|
this.nc_fact = 0.0; // size factor for internal contacts
|
|
37679
37833
|
|
|
37834
|
+
// added by Jiyao
|
|
37835
|
+
this.min_contacts = 10; // minimum number of contacts to be considered as neighbors
|
|
37836
|
+
|
|
37680
37837
|
//let this.elements[2*this.MAX_SSE]; // sets of this.elements to be split
|
|
37681
37838
|
this.elements = [];
|
|
37682
37839
|
this.elements.length = 2*this.MAX_SSE;
|
|
@@ -38225,6 +38382,7 @@ class Domain3d {
|
|
|
38225
38382
|
//https://www.geeksforgeeks.org/number-groups-formed-graph-friends/
|
|
38226
38383
|
countUtil(ss1, sheetNeighbor, existing_groups) {
|
|
38227
38384
|
this.visited[ss1] = true;
|
|
38385
|
+
|
|
38228
38386
|
if(!this.groupnum2sheet[existing_groups]) this.groupnum2sheet[existing_groups] = [];
|
|
38229
38387
|
this.groupnum2sheet[existing_groups].push(parseInt(ss1));
|
|
38230
38388
|
|
|
@@ -38268,6 +38426,7 @@ class Domain3d {
|
|
|
38268
38426
|
let chnid = residueArray[0].substr(0, residueArray[0].lastIndexOf('_'));
|
|
38269
38427
|
|
|
38270
38428
|
let substructItem = {};
|
|
38429
|
+
let pos2resi = {};
|
|
38271
38430
|
for(let i = 0; i < residueArray.length; ++i) {
|
|
38272
38431
|
let resid = residueArray[i];
|
|
38273
38432
|
|
|
@@ -38305,22 +38464,26 @@ class Domain3d {
|
|
|
38305
38464
|
x0.push(atom.coord.x);
|
|
38306
38465
|
y0.push(atom.coord.y);
|
|
38307
38466
|
z0.push(atom.coord.z);
|
|
38308
|
-
resiArray.push(resi);
|
|
38467
|
+
//resiArray.push(resi);
|
|
38468
|
+
resiArray.push(i+1);
|
|
38469
|
+
pos2resi[i+1] = resi;
|
|
38309
38470
|
|
|
38310
38471
|
if(atom.ssend) {
|
|
38311
|
-
substructItem.To = parseInt(resi);
|
|
38472
|
+
//substructItem.To = parseInt(resi);
|
|
38473
|
+
substructItem.To = i + 1;
|
|
38312
38474
|
substructItem.x2 = atom.coord.x;
|
|
38313
38475
|
substructItem.y2 = atom.coord.y;
|
|
38314
38476
|
substructItem.z2 = atom.coord.z;
|
|
38315
38477
|
|
|
38316
38478
|
substructItem.Sheet = (atom.ss == 'sheet') ? true : false;
|
|
38317
38479
|
substruct.push(substructItem);
|
|
38318
|
-
substructItem = {};
|
|
38480
|
+
substructItem = {};
|
|
38319
38481
|
}
|
|
38320
38482
|
|
|
38321
38483
|
// a residue could be both start and end. check ssend first, then check ssbegin
|
|
38322
38484
|
if(atom.ssbegin) {
|
|
38323
|
-
substructItem.From = parseInt(resi);
|
|
38485
|
+
//substructItem.From = parseInt(resi);
|
|
38486
|
+
substructItem.From = i + 1;
|
|
38324
38487
|
substructItem.x1 = atom.coord.x;
|
|
38325
38488
|
substructItem.y1 = atom.coord.y;
|
|
38326
38489
|
substructItem.z1 = atom.coord.z;
|
|
@@ -38340,7 +38503,8 @@ class Domain3d {
|
|
|
38340
38503
|
}
|
|
38341
38504
|
|
|
38342
38505
|
let seqLen = residueArray.length; // + resiOffset;
|
|
38343
|
-
let lastResi = resiArray[seqLen - 1];
|
|
38506
|
+
//let lastResi = resiArray[seqLen - 1];
|
|
38507
|
+
let lastResi = seqLen;
|
|
38344
38508
|
|
|
38345
38509
|
// get a list of Calpha-Calpha contacts
|
|
38346
38510
|
///list< pair< pair< int, let >, let > >
|
|
@@ -38419,7 +38583,8 @@ class Domain3d {
|
|
|
38419
38583
|
let ss2 = parseInt(ssPair[1]);
|
|
38420
38584
|
|
|
38421
38585
|
// both are sheets
|
|
38422
|
-
|
|
38586
|
+
// min number of contacts: this.min_contacts
|
|
38587
|
+
if(substruct[ss1 - 1].Sheet && substruct[ss2 - 1].Sheet && ctable[pair] >= this.min_contacts ) {
|
|
38423
38588
|
if(!sheetNeighbor[ss1]) sheetNeighbor[ss1] = {};
|
|
38424
38589
|
if(!sheetNeighbor[ss2]) sheetNeighbor[ss2] = {};
|
|
38425
38590
|
|
|
@@ -38442,13 +38607,13 @@ class Domain3d {
|
|
|
38442
38607
|
// If not in any group.
|
|
38443
38608
|
if (this.visited[ss1] == false) {
|
|
38444
38609
|
existing_groups++;
|
|
38445
|
-
|
|
38610
|
+
|
|
38446
38611
|
this.countUtil(ss1, sheetNeighbor, existing_groups);
|
|
38447
38612
|
}
|
|
38448
38613
|
}
|
|
38449
38614
|
|
|
38450
38615
|
// get sheet2sheetnum
|
|
38451
|
-
// each neighboring sheet
|
|
38616
|
+
// each neighboring sheet will be represented by the sheet with the smallest sse
|
|
38452
38617
|
for(let groupnum in this.groupnum2sheet) {
|
|
38453
38618
|
let ssArray = this.groupnum2sheet[groupnum].sort();
|
|
38454
38619
|
for(let i = 0, il = ssArray.length; i < il; ++i) {
|
|
@@ -38551,7 +38716,7 @@ class Domain3d {
|
|
|
38551
38716
|
this.parts[2*i] = this.parts[2*i + 1] = 0;
|
|
38552
38717
|
ratios[i] = 0.0;
|
|
38553
38718
|
}
|
|
38554
|
-
|
|
38719
|
+
|
|
38555
38720
|
n_saved = this.new_split_chain(nsse, sratio, minSize, minSSE, maxCsz, avgCts, cDelta, ncFact, this.parts, n_saved, ratios);
|
|
38556
38721
|
|
|
38557
38722
|
// save domain data
|
|
@@ -38592,14 +38757,14 @@ class Domain3d {
|
|
|
38592
38757
|
//resflags.clear();
|
|
38593
38758
|
|
|
38594
38759
|
//let resflags = [];
|
|
38595
|
-
let resflags = {};
|
|
38760
|
+
let resflags = {}; // keys are 1-based positions
|
|
38596
38761
|
|
|
38597
38762
|
// a domain must have at least 3 SSEs...
|
|
38598
38763
|
if (prts.length <= 2) continue;
|
|
38599
38764
|
|
|
38600
38765
|
for (let i = 0; i < seqLen; i++) {
|
|
38601
38766
|
//resflags.push(0);
|
|
38602
|
-
resflags[
|
|
38767
|
+
resflags[i + 1] = 0;
|
|
38603
38768
|
}
|
|
38604
38769
|
|
|
38605
38770
|
for (let i = 0; i < prts.length; i++) {
|
|
@@ -38615,17 +38780,14 @@ class Domain3d {
|
|
|
38615
38780
|
let To = sserec.To;
|
|
38616
38781
|
|
|
38617
38782
|
for (let j = From; j <= To; j++) {
|
|
38618
|
-
//resflags[j - 1] = 1;
|
|
38619
38783
|
resflags[j] = 1;
|
|
38620
38784
|
}
|
|
38621
38785
|
|
|
38622
38786
|
if ((k == 0) && (From > 1)) {
|
|
38623
38787
|
// residues with negative residue numbers will not be included
|
|
38624
38788
|
for (let j = 1; j < From; j++) {
|
|
38625
|
-
//resflags[j - 1] = 1;
|
|
38626
38789
|
// include at most 10 residues
|
|
38627
38790
|
if(From - j <= 10) {
|
|
38628
|
-
//resflags[j - 1] = 1;
|
|
38629
38791
|
resflags[j] = 1;
|
|
38630
38792
|
}
|
|
38631
38793
|
}
|
|
@@ -38635,10 +38797,8 @@ class Domain3d {
|
|
|
38635
38797
|
if ((k == substruct.length - 1) && (To < parseInt(lastResi))) {
|
|
38636
38798
|
//for (let j = To + 1; j <= seqLen; j++) {
|
|
38637
38799
|
for (let j = To + 1; j <= parseInt(lastResi); j++) {
|
|
38638
|
-
//resflags[j - 1] = 1;
|
|
38639
38800
|
// include at most 10 residues
|
|
38640
38801
|
if(j - To <= 10) {
|
|
38641
|
-
//resflags[j - 1] = 1;
|
|
38642
38802
|
resflags[j] = 1;
|
|
38643
38803
|
}
|
|
38644
38804
|
}
|
|
@@ -38654,7 +38814,6 @@ class Domain3d {
|
|
|
38654
38814
|
|
|
38655
38815
|
if (ll > 0) {
|
|
38656
38816
|
for (let j = From - ll; j <= From - 1; j++) {
|
|
38657
|
-
//resflags[j - 1] = 1;
|
|
38658
38817
|
resflags[j] = 1;
|
|
38659
38818
|
}
|
|
38660
38819
|
}
|
|
@@ -38673,7 +38832,6 @@ class Domain3d {
|
|
|
38673
38832
|
|
|
38674
38833
|
if (ll > 0) {
|
|
38675
38834
|
for (let j = To + 1; j <= To + ll; j++) {
|
|
38676
|
-
//resflags[j - 1] = 1;
|
|
38677
38835
|
resflags[j] = 1;
|
|
38678
38836
|
}
|
|
38679
38837
|
}
|
|
@@ -38685,16 +38843,15 @@ class Domain3d {
|
|
|
38685
38843
|
let startseg;
|
|
38686
38844
|
//vector<int> segments;
|
|
38687
38845
|
//segments.clear();
|
|
38688
|
-
let segments = [];
|
|
38846
|
+
let segments = []; //use position instead of residue number
|
|
38689
38847
|
|
|
38690
38848
|
for (let i = 0; i < seqLen; i++) {
|
|
38691
38849
|
//let rf = resflags[i];
|
|
38692
|
-
let rf = resflags[
|
|
38850
|
+
let rf = resflags[i + 1];
|
|
38693
38851
|
|
|
38694
38852
|
if (!inseg && (rf == 1)) {
|
|
38695
38853
|
// new segment starts here
|
|
38696
|
-
|
|
38697
|
-
startseg = resiArray[i];
|
|
38854
|
+
startseg = i + 1;
|
|
38698
38855
|
inseg = true;
|
|
38699
38856
|
continue;
|
|
38700
38857
|
}
|
|
@@ -38702,8 +38859,7 @@ class Domain3d {
|
|
|
38702
38859
|
if (inseg && (rf == 0)) {
|
|
38703
38860
|
// segment ends
|
|
38704
38861
|
segments.push(startseg);
|
|
38705
|
-
|
|
38706
|
-
segments.push(resiArray[i]);
|
|
38862
|
+
segments.push(i);
|
|
38707
38863
|
inseg = false;
|
|
38708
38864
|
}
|
|
38709
38865
|
}
|
|
@@ -38711,7 +38867,6 @@ class Domain3d {
|
|
|
38711
38867
|
// check for the last segment
|
|
38712
38868
|
if (inseg) {
|
|
38713
38869
|
segments.push(startseg);
|
|
38714
|
-
//segments.push(seqLen);
|
|
38715
38870
|
segments.push(lastResi);
|
|
38716
38871
|
}
|
|
38717
38872
|
|
|
@@ -38732,8 +38887,8 @@ class Domain3d {
|
|
|
38732
38887
|
}
|
|
38733
38888
|
}
|
|
38734
38889
|
}
|
|
38735
|
-
|
|
38736
|
-
return {subdomains: subdomains, substruct: substruct};
|
|
38890
|
+
|
|
38891
|
+
return {subdomains: subdomains, substruct: substruct, pos2resi:pos2resi };
|
|
38737
38892
|
} // end c2b_NewSplitChain
|
|
38738
38893
|
|
|
38739
38894
|
getDomainJsonForAlign(atoms) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -38741,6 +38896,7 @@ class Domain3d {
|
|
|
38741
38896
|
|
|
38742
38897
|
let subdomains = result.subdomains;
|
|
38743
38898
|
let substruct = result.substruct;
|
|
38899
|
+
let pos2resi = result.pos2resi;
|
|
38744
38900
|
|
|
38745
38901
|
let residueHash = ic.firstAtomObjCls.getResiduesFromAtoms(atoms);
|
|
38746
38902
|
let residueArray = Object.keys(residueHash);
|
|
@@ -38768,8 +38924,8 @@ class Domain3d {
|
|
|
38768
38924
|
//ss: sstype ss_start ss_end x1 y1 z1 x2 y2 z2
|
|
38769
38925
|
//sstype: 1 (helix), 2 (sheet)
|
|
38770
38926
|
let sstype = (substruct[k].Sheet) ? 2 : 1;
|
|
38771
|
-
let from = substruct[k].From;
|
|
38772
|
-
let to = substruct[k].To;
|
|
38927
|
+
let from = pos2resi[substruct[k].From];
|
|
38928
|
+
let to = pos2resi[substruct[k].To];
|
|
38773
38929
|
|
|
38774
38930
|
let residFrom = chnid + "_" + from;
|
|
38775
38931
|
let atomFrom = ic.firstAtomObjCls.getFirstCalphaAtomObj(ic.residues[residFrom]);
|
|
@@ -39786,7 +39942,7 @@ class AddTrack {
|
|
|
39786
39942
|
let legendHtml = me.htmlCls.clickMenuCls.setLegendHtml();
|
|
39787
39943
|
|
|
39788
39944
|
//$("#" + me.pre + "legend").html(legendHtml);
|
|
39789
|
-
$("#" + me.pre + "
|
|
39945
|
+
$("#" + me.pre + "dl_legend_html").html(legendHtml);
|
|
39790
39946
|
me.htmlCls.dialogCls.openDlg('dl_legend', 'Color range');
|
|
39791
39947
|
}
|
|
39792
39948
|
else if(type == 'tube') {
|
|
@@ -41842,7 +41998,7 @@ class ShowSeq {
|
|
|
41842
41998
|
}
|
|
41843
41999
|
else {
|
|
41844
42000
|
let refnum = parseInt(refnumStr).toString();
|
|
41845
|
-
let color = this.getRefnumColor(currStrand);
|
|
42001
|
+
let color = this.getRefnumColor(currStrand, true);
|
|
41846
42002
|
let colorStr = 'style="color:' + color + '"';
|
|
41847
42003
|
|
|
41848
42004
|
let lastTwo = parseInt(refnum.substr(refnum.length - 2, 2));
|
|
@@ -42013,7 +42169,7 @@ class ShowSeq {
|
|
|
42013
42169
|
|
|
42014
42170
|
getRefnumHtml(residueid, refnumStr, refnumStr_ori, refnumLabel, currStrand, bLoop, bHidelabel) { let ic = this.icn3d, me = ic.icn3dui;
|
|
42015
42171
|
let refnum = parseInt(refnumStr).toString();
|
|
42016
|
-
let color = this.getRefnumColor(currStrand);
|
|
42172
|
+
let color = this.getRefnumColor(currStrand, true);
|
|
42017
42173
|
let colorStr = (!bLoop) ? 'style="color:' + color + '; text-decoration: underline overline;"' : 'style="color:' + color + '"';
|
|
42018
42174
|
|
|
42019
42175
|
let lastTwo = parseInt(refnum.substr(refnum.length - 2, 2));
|
|
@@ -42039,45 +42195,45 @@ class ShowSeq {
|
|
|
42039
42195
|
return html;
|
|
42040
42196
|
}
|
|
42041
42197
|
|
|
42042
|
-
getRefnumColor(currStrand) { let ic = this.icn3d, me = ic.icn3dui;
|
|
42043
|
-
if(currStrand == "A^") {
|
|
42044
|
-
return '#FF00FF';
|
|
42198
|
+
getRefnumColor(currStrand, bText) { let ic = this.icn3d, me = ic.icn3dui;
|
|
42199
|
+
if(currStrand == "A^") {
|
|
42200
|
+
return '#FF00FF';
|
|
42045
42201
|
}
|
|
42046
|
-
else if(currStrand == "A") {
|
|
42047
|
-
return '#663399';
|
|
42202
|
+
else if(currStrand == "A") {
|
|
42203
|
+
return '#663399';
|
|
42048
42204
|
}
|
|
42049
|
-
else if(currStrand == "A*") {
|
|
42050
|
-
return '#FFC0CB';
|
|
42205
|
+
else if(currStrand == "A*") {
|
|
42206
|
+
return '#FFC0CB';
|
|
42051
42207
|
}
|
|
42052
|
-
else if(currStrand == "A'") {
|
|
42053
|
-
return '#663399';
|
|
42208
|
+
else if(currStrand == "A'") {
|
|
42209
|
+
return '#663399';
|
|
42054
42210
|
}
|
|
42055
|
-
else if(currStrand == "B") {
|
|
42056
|
-
return '#ba55d3';
|
|
42211
|
+
else if(currStrand == "B") {
|
|
42212
|
+
return '#ba55d3';
|
|
42057
42213
|
}
|
|
42058
|
-
else if(currStrand == "C") {
|
|
42059
|
-
return '#0000FF';
|
|
42214
|
+
else if(currStrand == "C") {
|
|
42215
|
+
return '#0000FF';
|
|
42060
42216
|
}
|
|
42061
|
-
else if(currStrand == "C'") {
|
|
42062
|
-
return '#6495ED';
|
|
42217
|
+
else if(currStrand == "C'") {
|
|
42218
|
+
return '#6495ED';
|
|
42063
42219
|
}
|
|
42064
|
-
else if(currStrand == "C''") {
|
|
42065
|
-
return '#006400';
|
|
42220
|
+
else if(currStrand == "C''") {
|
|
42221
|
+
return '#006400';
|
|
42066
42222
|
}
|
|
42067
|
-
else if(currStrand == "D") {
|
|
42068
|
-
return '#00FF00';
|
|
42223
|
+
else if(currStrand == "D") {
|
|
42224
|
+
return '#00FF00';
|
|
42069
42225
|
}
|
|
42070
|
-
else if(currStrand == "E") {
|
|
42071
|
-
return "#F7DC6F"
|
|
42226
|
+
else if(currStrand == "E") {
|
|
42227
|
+
return (bText) ? "#F7DC6F" : "#FFFF00";
|
|
42072
42228
|
}
|
|
42073
|
-
else if(currStrand == "F") {
|
|
42074
|
-
return '#FFA500';
|
|
42229
|
+
else if(currStrand == "F") {
|
|
42230
|
+
return '#FFA500';
|
|
42075
42231
|
}
|
|
42076
|
-
else if(currStrand == "G") {
|
|
42077
|
-
return '#FF0000';
|
|
42232
|
+
else if(currStrand == "G") {
|
|
42233
|
+
return '#FF0000';
|
|
42078
42234
|
}
|
|
42079
|
-
else if(currStrand == "G*") {
|
|
42080
|
-
return '#8B0000';
|
|
42235
|
+
else if(currStrand == "G*") {
|
|
42236
|
+
return '#8B0000';
|
|
42081
42237
|
}
|
|
42082
42238
|
else {
|
|
42083
42239
|
return me.htmlCls.GREYB;
|
|
@@ -42092,7 +42248,7 @@ class ShowSeq {
|
|
|
42092
42248
|
return '#006400';
|
|
42093
42249
|
}
|
|
42094
42250
|
else if(currStrand == "C" || currStrand == "F") {
|
|
42095
|
-
return "#
|
|
42251
|
+
return "#FFFF00"; //'#F0E68C';
|
|
42096
42252
|
}
|
|
42097
42253
|
else if(currStrand == "C'" || (currStrand && currStrand.substr(0, 1) == "G")) {
|
|
42098
42254
|
return '#FFA500';
|
|
@@ -42676,7 +42832,7 @@ class HlUpdate {
|
|
|
42676
42832
|
html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData, ic.inputid, undefined, true);
|
|
42677
42833
|
html2ddgm += ic.diagram2dCls.set2DdgmNote();
|
|
42678
42834
|
|
|
42679
|
-
$("#" + ic.pre + "
|
|
42835
|
+
$("#" + ic.pre + "dl_2ddgm_html").html(html2ddgm);
|
|
42680
42836
|
}
|
|
42681
42837
|
else if(ic.mmdbidArray &&(me.cfg.align !== undefined || me.cfg.chainalign !== undefined || ic.bRealign)) {
|
|
42682
42838
|
html2ddgm += ic.diagram2dCls.draw2Ddgm(ic.interactionData1, ic.mmdbidArray[0].toUpperCase(), 0, true);
|
|
@@ -42688,7 +42844,7 @@ class HlUpdate {
|
|
|
42688
42844
|
}
|
|
42689
42845
|
html2ddgm += ic.diagram2dCls.set2DdgmNote(true);
|
|
42690
42846
|
|
|
42691
|
-
$("#" + ic.pre + "
|
|
42847
|
+
$("#" + ic.pre + "dl_2ddgm_html").html(html2ddgm);
|
|
42692
42848
|
}
|
|
42693
42849
|
}
|
|
42694
42850
|
|
|
@@ -43225,8 +43381,8 @@ class LineGraph {
|
|
|
43225
43381
|
linkedNodeCnt[mappingid] = 1;
|
|
43226
43382
|
linkedNodeInterDiff[mappingid] = link.n;
|
|
43227
43383
|
}
|
|
43228
|
-
else {
|
|
43229
|
-
++linkedNodeCnt[mappingid];
|
|
43384
|
+
else {
|
|
43385
|
+
++linkedNodeCnt[mappingid];
|
|
43230
43386
|
linkedNodeInterDiff[mappingid] -= link.n; // show difference
|
|
43231
43387
|
}
|
|
43232
43388
|
}
|
|
@@ -43576,9 +43732,9 @@ class LineGraph {
|
|
|
43576
43732
|
if(pos1 === undefined || pos2 === undefined) continue;
|
|
43577
43733
|
let linestrokewidth;
|
|
43578
43734
|
if(link.v == me.htmlCls.contactValue) {
|
|
43579
|
-
linestrokewidth = 1;
|
|
43735
|
+
linestrokewidth = (link.n == 1) ? 1 : 3;
|
|
43580
43736
|
} else {
|
|
43581
|
-
linestrokewidth = 2;
|
|
43737
|
+
linestrokewidth = (link.n == 1) ? 2 : 4;
|
|
43582
43738
|
}
|
|
43583
43739
|
let strokecolor;
|
|
43584
43740
|
if(link.v == me.htmlCls.hbondValue) {
|
|
@@ -43595,8 +43751,9 @@ class LineGraph {
|
|
|
43595
43751
|
strokecolor = "#" + me.htmlCls.contactColor;
|
|
43596
43752
|
}
|
|
43597
43753
|
html += "<g class='icn3d-interaction' resid1='" + resid1 + "' resid2='" + resid2 + "' >";
|
|
43598
|
-
|
|
43599
|
-
html += "<
|
|
43754
|
+
let interactStr = (link.n == 1) ? 'Interaction' : link.n + ' interactions';
|
|
43755
|
+
if(link.n > 1) html += "<title>" + interactStr + " of residue " + node1.id + " with residue " + node2.id + "</title>";
|
|
43756
|
+
html += "<line x1='" + pos1.x + "' y1='" + pos1.y + "' x2='" + pos2.x + "' y2='" + pos2.y + "' stroke='" + strokecolor + "' stroke-width='" + linestrokewidth + "'/></g>";
|
|
43600
43757
|
}
|
|
43601
43758
|
// show nodes later
|
|
43602
43759
|
html += nodeHtml;
|
|
@@ -43689,9 +43846,9 @@ class LineGraph {
|
|
|
43689
43846
|
|
|
43690
43847
|
let linestrokewidth;
|
|
43691
43848
|
if(link.v == me.htmlCls.contactValue) {
|
|
43692
|
-
linestrokewidth = 1;
|
|
43849
|
+
linestrokewidth = (link.n == 1) ? 1 : 3;
|
|
43693
43850
|
} else {
|
|
43694
|
-
linestrokewidth = 2;
|
|
43851
|
+
linestrokewidth = (link.n == 1) ? 2 : 4;
|
|
43695
43852
|
}
|
|
43696
43853
|
|
|
43697
43854
|
if(bAfMap && ic.hex2skip[link.c]) ;
|
|
@@ -43706,7 +43863,8 @@ class LineGraph {
|
|
|
43706
43863
|
}
|
|
43707
43864
|
else {
|
|
43708
43865
|
html += "<g class='icn3d-interaction' resid1='" + resid1 + "' resid2='" + resid2 + "' >";
|
|
43709
|
-
|
|
43866
|
+
let interactStr = (link.n == 1) ? 'Interaction' : link.n + ' interactions';
|
|
43867
|
+
if(link.n > 1) html += "<title>" + interactStr + " of residue " + node1.id + " with residue " + node2.id + "</title>";
|
|
43710
43868
|
if(bContactMap) {
|
|
43711
43869
|
html += "<rect x='" +(pos2.x - halfSize).toString() + "' y='" +(pos1.y - halfSize).toString() + "' width='" + rectSize + "' height='" + rectSize + "' fill='" + strokecolor + "' stroke-width='" + linestrokewidth + "' stroke='" + strokecolor + "' />";
|
|
43712
43870
|
}
|
|
@@ -44222,11 +44380,9 @@ class GetGraph {
|
|
|
44222
44380
|
|
|
44223
44381
|
if(!linkstr2cnt.hasOwnProperty(linkStr)) {
|
|
44224
44382
|
linkstr2cnt[linkStr] = 1;
|
|
44225
|
-
linkstr2cnt[linkStr] = 1;
|
|
44226
44383
|
}
|
|
44227
44384
|
else {
|
|
44228
|
-
linkstr2cnt[linkStr]
|
|
44229
|
-
linkstr2cnt[linkStr] += 1;
|
|
44385
|
+
++linkstr2cnt[linkStr];
|
|
44230
44386
|
}
|
|
44231
44387
|
}
|
|
44232
44388
|
}
|
|
@@ -44950,11 +45106,11 @@ class ViewInterPairs {
|
|
|
44950
45106
|
html += result.html;
|
|
44951
45107
|
bondCnt = result.bondCnt;
|
|
44952
45108
|
|
|
44953
|
-
$("#" + ic.pre + "
|
|
45109
|
+
$("#" + ic.pre + "dl_interactionsorted_html").html(html);
|
|
44954
45110
|
me.htmlCls.dialogCls.openDlg('dl_interactionsorted', 'Show sorted interactions');
|
|
44955
45111
|
}
|
|
44956
45112
|
else if(type == 'view') {
|
|
44957
|
-
$("#" + ic.pre + "
|
|
45113
|
+
$("#" + ic.pre + "dl_allinteraction_html").html(html);
|
|
44958
45114
|
me.htmlCls.dialogCls.openDlg('dl_allinteraction', 'Show interactions');
|
|
44959
45115
|
}
|
|
44960
45116
|
else if(type == 'linegraph') {
|
|
@@ -47282,7 +47438,7 @@ class ChainalignParser {
|
|
|
47282
47438
|
me.htmlCls.clickMenuCls.setLogCmd(logStr, false);
|
|
47283
47439
|
let html = "<br><b>Alignment RMSD</b>: " + rmsd.toPrecision(4) + " Å<br>";
|
|
47284
47440
|
if(me.cfg.aligntool == 'tmalign') html += "<b>TM-score</b>: " + align[0].score.toPrecision(4) + "<br><br>";
|
|
47285
|
-
$("#" + ic.pre + "
|
|
47441
|
+
$("#" + ic.pre + "dl_rmsd_html").html(html);
|
|
47286
47442
|
if(!me.cfg.bSidebyside) me.htmlCls.dialogCls.openDlg('dl_rmsd', 'RMSD of alignment');
|
|
47287
47443
|
|
|
47288
47444
|
bAligned = true;
|
|
@@ -51548,7 +51704,7 @@ class ParserUtils {
|
|
|
51548
51704
|
//if(window.dialog) window.dialog.dialog( "close" );
|
|
51549
51705
|
html += me.utilsCls.getMemDesc();
|
|
51550
51706
|
}
|
|
51551
|
-
$("#" + ic.pre + "
|
|
51707
|
+
$("#" + ic.pre + "dl_rmsd_html").html(html);
|
|
51552
51708
|
if(!me.cfg.bSidebyside) me.htmlCls.dialogCls.openDlg('dl_rmsd', 'Realignment RMSD');
|
|
51553
51709
|
}
|
|
51554
51710
|
|
|
@@ -51729,7 +51885,7 @@ class ParserUtils {
|
|
|
51729
51885
|
ic.diagram2dCls.draw2Ddgm(ic.interactionData2, mmdbid2, 1);
|
|
51730
51886
|
|
|
51731
51887
|
ic.html2ddgm += "<br>" + ic.diagram2dCls.set2DdgmNote(true);
|
|
51732
|
-
$("#" + ic.pre + "
|
|
51888
|
+
$("#" + ic.pre + "dl_2ddgm_html").html(ic.html2ddgm);
|
|
51733
51889
|
|
|
51734
51890
|
ic.b2DShown = true;
|
|
51735
51891
|
|
|
@@ -51782,7 +51938,7 @@ class ParserUtils {
|
|
|
51782
51938
|
ic.html2ddgm += "<br>" + ic.diagram2dCls.set2DdgmNote(true);
|
|
51783
51939
|
|
|
51784
51940
|
ic.b2DShown = true;
|
|
51785
|
-
$("#" + ic.pre + "
|
|
51941
|
+
$("#" + ic.pre + "dl_2ddgm_html").html(ic.html2ddgm);
|
|
51786
51942
|
if(me.cfg.show2d) me.htmlCls.dialogCls.openDlg('dl_2ddgm', 'Interactions');
|
|
51787
51943
|
|
|
51788
51944
|
/// if(ic.deferredViewinteraction !== undefined) ic.deferredViewinteraction.resolve();
|
|
@@ -51800,7 +51956,7 @@ class ParserUtils {
|
|
|
51800
51956
|
ic.diagram2dCls.draw2Ddgm(ic.interactionData, mmdbid);
|
|
51801
51957
|
|
|
51802
51958
|
ic.html2ddgm += "<br>" + ic.diagram2dCls.set2DdgmNote();
|
|
51803
|
-
$("#" + ic.pre + "
|
|
51959
|
+
$("#" + ic.pre + "dl_2ddgm_html").html(ic.html2ddgm);
|
|
51804
51960
|
}
|
|
51805
51961
|
|
|
51806
51962
|
ic.b2DShown = true;
|
|
@@ -51903,7 +52059,7 @@ class ParserUtils {
|
|
|
51903
52059
|
let rmsd = ic.rmsd_supr.rmsd;
|
|
51904
52060
|
|
|
51905
52061
|
me.htmlCls.clickMenuCls.setLogCmd("RMSD of alignment to OPM: " + rmsd.toPrecision(4), false);
|
|
51906
|
-
//$("#" + ic.pre + "
|
|
52062
|
+
//$("#" + ic.pre + "dl_rmsd_html").html("<br><b>RMSD of alignment to OPM</b>: " + rmsd.toPrecision(4) + " Å<br><br>");
|
|
51907
52063
|
//if(!me.cfg.bSidebyside) me.htmlCls.dialogCls.openDlg('dl_rmsd', 'RMSD of alignment to OPM');
|
|
51908
52064
|
|
|
51909
52065
|
let dxymaxsq = 0;
|
|
@@ -52109,6 +52265,16 @@ class ParserUtils {
|
|
|
52109
52265
|
|
|
52110
52266
|
// set defined sets before loadScript
|
|
52111
52267
|
if(ic.bInitial) {
|
|
52268
|
+
if(me.cfg.mobilemenu) {
|
|
52269
|
+
me.htmlCls.shownMenus = me.hashUtilsCls.cloneHash(me.htmlCls.simpleMenus);
|
|
52270
|
+
let bNoSave = true;
|
|
52271
|
+
me.htmlCls.clickMenuCls.applyShownMenus(bNoSave);
|
|
52272
|
+
}
|
|
52273
|
+
// else {
|
|
52274
|
+
// me.htmlCls.shownMenus = me.hashUtilsCls.cloneHash(me.htmlCls.allMenus);
|
|
52275
|
+
// me.htmlCls.clickMenuCls.applyShownMenus();
|
|
52276
|
+
// }
|
|
52277
|
+
|
|
52112
52278
|
if(me.cfg.showsets) {
|
|
52113
52279
|
ic.definedSetsCls.showSets();
|
|
52114
52280
|
}
|
|
@@ -55549,7 +55715,7 @@ class Vastplus {
|
|
|
55549
55715
|
bAligned = true;
|
|
55550
55716
|
|
|
55551
55717
|
me.htmlCls.clickMenuCls.setLogCmd("realignment RMSD: " + rmsd.toPrecision(4), false);
|
|
55552
|
-
$("#" + ic.pre + "
|
|
55718
|
+
$("#" + ic.pre + "dl_rmsd_html").html("<br><b>Realignment RMSD</b>: " + rmsd.toPrecision(4) + " Å<br><br>");
|
|
55553
55719
|
if(!me.cfg.bSidebyside) me.htmlCls.dialogCls.openDlg('dl_rmsd', 'Realignment RMSD');
|
|
55554
55720
|
|
|
55555
55721
|
// apply matrix for each atom
|
|
@@ -57495,7 +57661,7 @@ class ApplyCommand {
|
|
|
57495
57661
|
|
|
57496
57662
|
let legendHtml = me.htmlCls.clickMenuCls.setLegendHtml();
|
|
57497
57663
|
//$("#" + me.pre + "legend").html(legendHtml).show();
|
|
57498
|
-
$("#" + me.pre + "
|
|
57664
|
+
$("#" + me.pre + "dl_legend_html").html(legendHtml);
|
|
57499
57665
|
me.htmlCls.dialogCls.openDlg('dl_legend', 'Color Range');
|
|
57500
57666
|
}
|
|
57501
57667
|
}
|
|
@@ -61011,7 +61177,7 @@ class Delphi {
|
|
|
61011
61177
|
let phidata = await this.CalcPhiPrms(gsize, salt, contour, bSurface, data);
|
|
61012
61178
|
|
|
61013
61179
|
this.loadPhiData(phidata, contour, bSurface);
|
|
61014
|
-
|
|
61180
|
+
|
|
61015
61181
|
ic.bAjaxPhi = true;
|
|
61016
61182
|
|
|
61017
61183
|
if(bSurface) {
|
|
@@ -61775,8 +61941,8 @@ class Dssp {
|
|
|
61775
61941
|
|
|
61776
61942
|
// align each 3D domain with reference structure
|
|
61777
61943
|
let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
|
|
61778
|
-
let subdomains = result.subdomains;
|
|
61779
|
-
|
|
61944
|
+
let subdomains = result.subdomains;
|
|
61945
|
+
|
|
61780
61946
|
let domainAtomsArray = [];
|
|
61781
61947
|
if(subdomains.length <= 1) {
|
|
61782
61948
|
domainAtomsArray.push(ic.chains[chainid]);
|
|
@@ -61806,9 +61972,9 @@ class Dssp {
|
|
|
61806
61972
|
}
|
|
61807
61973
|
|
|
61808
61974
|
for(let k = 0, kl = domainAtomsArray.length; k < kl; ++k) {
|
|
61809
|
-
|
|
61810
61975
|
let pdb_target = ic.saveFileCls.getAtomPDB(domainAtomsArray[k], undefined, undefined, undefined, undefined, struct);
|
|
61811
61976
|
let domainid = chainid + '-' + k;
|
|
61977
|
+
|
|
61812
61978
|
for(let index = 0, indexl = dataArray.length; index < indexl; ++index) {
|
|
61813
61979
|
let struct2 = ic.defaultPdbId + index;
|
|
61814
61980
|
let pdb_query = dataArray[index].value; //[0];
|
|
@@ -62029,7 +62195,7 @@ if(!me.bNode) {
|
|
|
62029
62195
|
else if(refnum >= 1200 && refnum < 1300) return "A'" + oriRefnum;
|
|
62030
62196
|
else if(refnum >= 1300 && refnum < 1400) return "A*" + oriRefnum;
|
|
62031
62197
|
else if(refnum >= 1400 && refnum < 2000) {
|
|
62032
|
-
if(prevStrand.substr(0, 1) == 'A') {
|
|
62198
|
+
if(prevStrand && prevStrand.substr(0, 1) == 'A') {
|
|
62033
62199
|
return prevStrand + oriRefnum;
|
|
62034
62200
|
}
|
|
62035
62201
|
else {
|
|
@@ -63398,7 +63564,7 @@ class Analysis {
|
|
|
63398
63564
|
//html += '<b>Buried Surface for both Sets</b>: ' + buriedArea + ' Å<sup>2</sup><br>';
|
|
63399
63565
|
html += '<b>Buried Surface for Set 1</b>: ' + buriedArea2 + ' Å<sup>2</sup><br>';
|
|
63400
63566
|
html += '<b>Buried Surface for Set 2</b>: ' + buriedArea1 + ' Å<sup>2</sup><br><br>';
|
|
63401
|
-
$("#" + ic.pre + "
|
|
63567
|
+
$("#" + ic.pre + "dl_buriedarea_html").html(html);
|
|
63402
63568
|
me.htmlCls.dialogCls.openDlg('dl_buriedarea', 'Buried solvent accessible surface area in the interface');
|
|
63403
63569
|
me.htmlCls.clickMenuCls.setLogCmd('buried surface ' + buriedArea, false);
|
|
63404
63570
|
}
|
|
@@ -63504,7 +63670,7 @@ class Analysis {
|
|
|
63504
63670
|
|
|
63505
63671
|
tableHtml += '</table><br><br>';
|
|
63506
63672
|
|
|
63507
|
-
$("#" + me.pre + "
|
|
63673
|
+
$("#" + me.pre + "dl_disttable_html").html(tableHtml);
|
|
63508
63674
|
}
|
|
63509
63675
|
}
|
|
63510
63676
|
|
|
@@ -64061,7 +64227,7 @@ class Diagram2d {
|
|
|
64061
64227
|
|
|
64062
64228
|
ic.html2ddgm += html;
|
|
64063
64229
|
|
|
64064
|
-
$("#" + ic.pre + "
|
|
64230
|
+
$("#" + ic.pre + "dl_2ddgm_html").html(ic.html2ddgm);
|
|
64065
64231
|
|
|
64066
64232
|
return html;
|
|
64067
64233
|
}
|
|
@@ -69946,7 +70112,7 @@ class iCn3DUI {
|
|
|
69946
70112
|
//even when multiple iCn3D viewers are shown together.
|
|
69947
70113
|
this.pre = this.cfg.divid + "_";
|
|
69948
70114
|
|
|
69949
|
-
this.REVISION = '3.
|
|
70115
|
+
this.REVISION = '3.24.0';
|
|
69950
70116
|
|
|
69951
70117
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
69952
70118
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|