icn3d 3.23.4 → 3.23.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/icn3d.js +146 -36
- package/icn3d.min.js +2 -2
- package/icn3d.module.js +146 -36
- package/package.json +1 -1
package/icn3d.js
CHANGED
|
@@ -7039,6 +7039,12 @@ class ClickMenu {
|
|
|
7039
7039
|
thisClass.setLogCmd('color confidence', true);
|
|
7040
7040
|
});
|
|
7041
7041
|
|
|
7042
|
+
me.myEventCls.onIds("#" + me.pre + "mn4_clrIgstrand", "click", function(e) { let ic = me.icn3d; //e.preventDefault();
|
|
7043
|
+
//ic.legendClick = 6;
|
|
7044
|
+
ic.setOptionCls.setOption('color', 'ig strand');
|
|
7045
|
+
thisClass.setLogCmd('color ig strand', true);
|
|
7046
|
+
});
|
|
7047
|
+
|
|
7042
7048
|
|
|
7043
7049
|
me.myEventCls.onIds("#" + me.pre + "mn4_clrArea", "click", function(e) { me.icn3d; //e.preventDefault();
|
|
7044
7050
|
me.htmlCls.dialogCls.openDlg('dl_colorbyarea', "Color based on residue's solvent accessibility");
|
|
@@ -9354,6 +9360,8 @@ class SetMenu {
|
|
|
9354
9360
|
//if(!me.cfg.mmtfid && !me.cfg.pdbid && !me.cfg.opmid && !me.cfg.mmdbid && !me.cfg.gi && !me.cfg.uniprotid && !me.cfg.blast_rep_id && !me.cfg.cid && !me.cfg.mmcifid && !me.cfg.align && !me.cfg.chainalign) {
|
|
9355
9361
|
html += this.getRadio('mn4_clr', 'mn4_clrConfidence', 'AlphaFold<br><span style="padding-left:1.5em;">Confidence</span>', undefined, 1, 1);
|
|
9356
9362
|
//}
|
|
9363
|
+
|
|
9364
|
+
html += this.getRadio('mn4_clr', 'mn4_clrIgstrand', 'Ig Strand', undefined, undefined, 2);
|
|
9357
9365
|
}
|
|
9358
9366
|
else {
|
|
9359
9367
|
//if(!me.cfg.hidelicense) html += this.getRadio('mn4_clr', 'mn1_delphi2', 'DelPhi<br><span style="padding-left:1.5em;">Potential ' + me.htmlCls.licenseStr + '</span>');
|
|
@@ -9572,12 +9580,12 @@ class SetMenu {
|
|
|
9572
9580
|
html += this.getMenuText('mn6_igrefwrap', 'Ref. Number', undefined, undefined, 1);
|
|
9573
9581
|
|
|
9574
9582
|
html += "<ul>";
|
|
9575
|
-
|
|
9583
|
+
|
|
9576
9584
|
html += this.getLink('mn6_igrefYes', 'Show Ig Ref. Number', undefined, 2);
|
|
9577
9585
|
html += this.getLink('mn6_igrefNo', 'Hide Ig Ref. Number', undefined, 2);
|
|
9578
9586
|
|
|
9579
9587
|
html += this.getMenuSep();
|
|
9580
|
-
|
|
9588
|
+
|
|
9581
9589
|
html += this.getLink('mn6_customref', 'Custom Ref. Number', undefined, 2);
|
|
9582
9590
|
html += "</ul>";
|
|
9583
9591
|
html += "</li>";
|
|
@@ -10677,7 +10685,7 @@ class SetDialog {
|
|
|
10677
10685
|
html += me.htmlCls.divStr + "dl_mmdbafid' class='" + dialogClass + "' style='max-width:600px'>";
|
|
10678
10686
|
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>";
|
|
10679
10687
|
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/>";
|
|
10680
|
-
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
|
|
10688
|
+
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/>";
|
|
10681
10689
|
|
|
10682
10690
|
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="'
|
|
10683
10691
|
+ me.pre + 'asu_bu2_expand" class="ui-icon ui-icon-plus icn3d-expand icn3d-link" style="width:15px;" title="Expand"></span><span id="'
|
|
@@ -11811,9 +11819,16 @@ class Events {
|
|
|
11811
11819
|
else {
|
|
11812
11820
|
ic.loadCmd = 'load mmdbaf0 ' + me.cfg.mmdbafid;
|
|
11813
11821
|
}
|
|
11814
|
-
me.htmlCls.clickMenuCls.setLogCmd(ic.loadCmd, true);
|
|
11822
|
+
me.htmlCls.clickMenuCls.setLogCmd(ic.loadCmd, true);
|
|
11823
|
+
|
|
11824
|
+
let bStructures = (ic.structures && Object.keys(ic.structures).length > 0) ? true : false;
|
|
11815
11825
|
|
|
11816
11826
|
await ic.chainalignParserCls.downloadMmdbAf(me.cfg.mmdbafid);
|
|
11827
|
+
|
|
11828
|
+
if(bStructures) {
|
|
11829
|
+
if(ic.bSetChainsAdvancedMenu) ic.definedSetsCls.showSets();
|
|
11830
|
+
if(ic.bAnnoShown) await ic.showAnnoCls.showAnnotations();
|
|
11831
|
+
}
|
|
11817
11832
|
}
|
|
11818
11833
|
}
|
|
11819
11834
|
}
|
|
@@ -34366,6 +34381,35 @@ class SetColor {
|
|
|
34366
34381
|
|
|
34367
34382
|
break;
|
|
34368
34383
|
|
|
34384
|
+
case 'ig strand':
|
|
34385
|
+
if(ic.bShowRefnum) {
|
|
34386
|
+
for(let resid in ic.resid2refnum) {
|
|
34387
|
+
let refnumLabel = ic.resid2refnum[resid];
|
|
34388
|
+
let color;
|
|
34389
|
+
if(!refnumLabel) {
|
|
34390
|
+
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34391
|
+
}
|
|
34392
|
+
else {
|
|
34393
|
+
let refnumStr = refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').substr(1); // C', C''
|
|
34394
|
+
let currStrand = refnumLabel.replace(new RegExp(refnumStr,'g'), '');
|
|
34395
|
+
color = ic.showSeqCls.getRefnumColor(currStrand);
|
|
34396
|
+
|
|
34397
|
+
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
34398
|
+
color = me.parasCls.thr(me.htmlCls.GREYB);
|
|
34399
|
+
}
|
|
34400
|
+
}
|
|
34401
|
+
|
|
34402
|
+
for (let i in ic.residues[resid]) {
|
|
34403
|
+
let atom = ic.atoms[i];
|
|
34404
|
+
atom.color = me.parasCls.thr(color);
|
|
34405
|
+
|
|
34406
|
+
ic.atomPrevColors[i] = atom.color;
|
|
34407
|
+
}
|
|
34408
|
+
}
|
|
34409
|
+
}
|
|
34410
|
+
|
|
34411
|
+
break;
|
|
34412
|
+
|
|
34369
34413
|
case 'residue custom':
|
|
34370
34414
|
for (let i in atoms) {
|
|
34371
34415
|
let atom = ic.atoms[i];
|
|
@@ -35027,6 +35071,9 @@ class SetOption {
|
|
|
35027
35071
|
else if(colorType == 'hydrophobic') {
|
|
35028
35072
|
colorLabel = 'Hydrophobicity';
|
|
35029
35073
|
}
|
|
35074
|
+
else if(colorType == 'ig strand') {
|
|
35075
|
+
colorLabel = 'Ig Strand';
|
|
35076
|
+
}
|
|
35030
35077
|
|
|
35031
35078
|
let html = "Color by <b>" + colorLabel + "</b><br><br>";
|
|
35032
35079
|
|
|
@@ -35047,6 +35094,9 @@ class SetOption {
|
|
|
35047
35094
|
else if (colorType == 'charge'){
|
|
35048
35095
|
html += this.getColorLegendForCharge(ic.hAtoms);
|
|
35049
35096
|
}
|
|
35097
|
+
else if (colorType == 'ig strand'){
|
|
35098
|
+
html += this.getColorLegendForIgstrand(ic.hAtoms);
|
|
35099
|
+
}
|
|
35050
35100
|
//else if (ic.legendClick == 4){
|
|
35051
35101
|
else if (colorType == 'normalized hydrophobic' || colorType == 'hydrophobic') {
|
|
35052
35102
|
let bOriResn = true;
|
|
@@ -35270,6 +35320,40 @@ class SetOption {
|
|
|
35270
35320
|
|
|
35271
35321
|
return html;
|
|
35272
35322
|
}
|
|
35323
|
+
|
|
35324
|
+
getColorLegendForIgstrand(atomHash) { let ic = this.icn3d; ic.icn3dui;
|
|
35325
|
+
let html = '';
|
|
35326
|
+
|
|
35327
|
+
const name2color = {
|
|
35328
|
+
"A^ Strand": "FF00FF",
|
|
35329
|
+
"A Strand": "663399",
|
|
35330
|
+
"A* Strand": "FFC0CB",
|
|
35331
|
+
"A Strand": "9370db",
|
|
35332
|
+
"B Strand": "ba55d3",
|
|
35333
|
+
"C Strand": "0000FF",
|
|
35334
|
+
"C' Strand": "6495ED",
|
|
35335
|
+
"C'' Strand": "006400",
|
|
35336
|
+
"D Strand": "00FF00",
|
|
35337
|
+
"E Strand": "FFFF00",
|
|
35338
|
+
"F Strand": "FFA500",
|
|
35339
|
+
"G Strand": "FF0000",
|
|
35340
|
+
"G* Strand": "8B0000",
|
|
35341
|
+
"Loop": "CCCCCC"
|
|
35342
|
+
};
|
|
35343
|
+
|
|
35344
|
+
html += "<div>";
|
|
35345
|
+
for (let name in name2color) {
|
|
35346
|
+
let color = name2color[name];
|
|
35347
|
+
html += "<span>";
|
|
35348
|
+
html += "<div style='width: 10px; height: 10px; background-color:#" + color + "; border: 0px;display:inline-block;' ></div> ";
|
|
35349
|
+
html += name;
|
|
35350
|
+
html += "</span><br>";
|
|
35351
|
+
}
|
|
35352
|
+
|
|
35353
|
+
html += "</div>";
|
|
35354
|
+
|
|
35355
|
+
return html;
|
|
35356
|
+
}
|
|
35273
35357
|
}
|
|
35274
35358
|
|
|
35275
35359
|
/**
|
|
@@ -40388,6 +40472,14 @@ class ShowAnno {
|
|
|
40388
40472
|
} // align seq to structure
|
|
40389
40473
|
}
|
|
40390
40474
|
ic.bAnnoShown = true;
|
|
40475
|
+
|
|
40476
|
+
if(ic.bShowRefnum) {
|
|
40477
|
+
ic.opts.color = 'ig strand';
|
|
40478
|
+
ic.setColorCls.setColorByOptions(ic.opts, ic.atoms);
|
|
40479
|
+
|
|
40480
|
+
ic.selectionCls.selectAll_base();
|
|
40481
|
+
ic.hlUpdateCls.updateHlAll();
|
|
40482
|
+
}
|
|
40391
40483
|
}
|
|
40392
40484
|
|
|
40393
40485
|
async showAnnoSeqData(nucleotide_chainid, chemical_chainid, chemical_set) { let ic = this.icn3d, me = ic.icn3dui;
|
|
@@ -41678,6 +41770,7 @@ class ShowSeq {
|
|
|
41678
41770
|
else {
|
|
41679
41771
|
if(bShowRefnum && currStrand != ' ') {
|
|
41680
41772
|
html += this.getRefnumHtml(residueid, refnumStr, refnumStr_ori, refnumLabel, currStrand, bLoop, bHidelabel);
|
|
41773
|
+
if(bLoop) ic.residIgLoop[residueid] = 1;
|
|
41681
41774
|
}
|
|
41682
41775
|
else {
|
|
41683
41776
|
html += '<span></span>';
|
|
@@ -41725,6 +41818,7 @@ class ShowSeq {
|
|
|
41725
41818
|
|
|
41726
41819
|
if(bShowRefnum && currStrand != ' ') {
|
|
41727
41820
|
html += this.getRefnumHtml(residueid, refnumStr, refnumStr_ori, refnumLabel, currStrand, bLoop, bHidelabel);
|
|
41821
|
+
if(bLoop) ic.residIgLoop[residueid] = 1;
|
|
41728
41822
|
}
|
|
41729
41823
|
else {
|
|
41730
41824
|
html += '<span></span>';
|
|
@@ -41857,48 +41951,48 @@ class ShowSeq {
|
|
|
41857
41951
|
return html;
|
|
41858
41952
|
}
|
|
41859
41953
|
|
|
41860
|
-
getRefnumColor(currStrand) { let ic = this.icn3d
|
|
41861
|
-
if(currStrand == "A^") { // deep sky blue
|
|
41862
|
-
return '#9900ff'; //'#00BFFF';
|
|
41954
|
+
getRefnumColor(currStrand) { let ic = this.icn3d, me = ic.icn3dui;
|
|
41955
|
+
if(currStrand == "A^") { //magenta // deep sky blue
|
|
41956
|
+
return '#FF00FF'; //'#9900ff'; //'#00BFFF';
|
|
41863
41957
|
}
|
|
41864
|
-
else if(currStrand == "A") { // blue
|
|
41865
|
-
return '#9900ff'; //'#0000FF';
|
|
41958
|
+
else if(currStrand == "A") { //rebecca purple // blue
|
|
41959
|
+
return '#663399'; //'#9900ff'; //'#0000FF';
|
|
41866
41960
|
}
|
|
41867
|
-
else if(currStrand == "A*") { // sky blue
|
|
41868
|
-
return '#9900ff'; //'#87CEEB';
|
|
41961
|
+
else if(currStrand == "A*") { //pink // sky blue
|
|
41962
|
+
return '#FFC0CB'; //'#9900ff'; //'#87CEEB';
|
|
41869
41963
|
}
|
|
41870
|
-
else if(currStrand == "A'") { // steel blue
|
|
41871
|
-
return '#9900ff'; //'#4682B4';
|
|
41964
|
+
else if(currStrand == "A'") { //medium purple // steel blue
|
|
41965
|
+
return '#9370db'; //'#9900ff'; //'#4682B4';
|
|
41872
41966
|
}
|
|
41873
|
-
else if(currStrand == "B") { // cyan
|
|
41874
|
-
return '#4a86e8'; //'#00FFFF';
|
|
41967
|
+
else if(currStrand == "B") { //medium orchid // cyan
|
|
41968
|
+
return '#ba55d3'; //'#0000FF'; //'#4a86e8'; //'#00FFFF';
|
|
41875
41969
|
}
|
|
41876
|
-
else if(currStrand == "C") { // green
|
|
41877
|
-
return '#76d6ff'; //'#00FF00';
|
|
41970
|
+
else if(currStrand == "C") { //blue // green
|
|
41971
|
+
return '#0000FF'; //'#76d6ff'; //'#00FF00';
|
|
41878
41972
|
}
|
|
41879
|
-
else if(currStrand == "C'") { // yellow
|
|
41880
|
-
return '#00b050'; //'#FFFF00';
|
|
41973
|
+
else if(currStrand == "C'") { //corn blue // yellow
|
|
41974
|
+
return '#6495ED'; //'#006400'; //'#00b050'; //'#FFFF00';
|
|
41881
41975
|
}
|
|
41882
|
-
else if(currStrand == "C''") { // orange
|
|
41883
|
-
return '#00ff00'; //'#FFA500';
|
|
41976
|
+
else if(currStrand == "C''") { //dark green // orange
|
|
41977
|
+
return '#006400'; //'#00ff00'; //'#FFA500';
|
|
41884
41978
|
}
|
|
41885
|
-
else if(currStrand == "D") { // brown
|
|
41886
|
-
return '#fffb00'; //'#A52A2A';
|
|
41979
|
+
else if(currStrand == "D") { //green // brown
|
|
41980
|
+
return '#00FF00'; //'#fffb00'; //'#A52A2A';
|
|
41887
41981
|
}
|
|
41888
|
-
else if(currStrand == "E") { // pink
|
|
41889
|
-
return '#ffd966'; //'#FFC0CB';
|
|
41982
|
+
else if(currStrand == "E") { //yellow // pink
|
|
41983
|
+
return '#F0E68C'; //'#ff9900'; //'#ffd966'; //'#FFC0CB';
|
|
41890
41984
|
}
|
|
41891
|
-
else if(currStrand == "F") { // magenta
|
|
41892
|
-
return '#ff9900'; //'#FF00FF';
|
|
41985
|
+
else if(currStrand == "F") { //orange // magenta
|
|
41986
|
+
return '#FFA500'; //'#FF00FF'; //'#ff9900'; //'#FF00FF';
|
|
41893
41987
|
}
|
|
41894
|
-
else if(currStrand == "G") { // red
|
|
41895
|
-
return '#ff2600'; //'#FF0000';
|
|
41988
|
+
else if(currStrand == "G") { //red // red
|
|
41989
|
+
return '#FF0000'; //'#ff2600'; //'#FF0000';
|
|
41896
41990
|
}
|
|
41897
|
-
else if(currStrand == "G*") { // salmon
|
|
41898
|
-
return '#ff2600'; //'#FA8072';
|
|
41991
|
+
else if(currStrand == "G*") { //dark red // salmon
|
|
41992
|
+
return '#8B0000'; //'#ff2600'; //'#FA8072';
|
|
41899
41993
|
}
|
|
41900
41994
|
else {
|
|
41901
|
-
return
|
|
41995
|
+
return me.htmlCls.GREYB;
|
|
41902
41996
|
}
|
|
41903
41997
|
}
|
|
41904
41998
|
|
|
@@ -47140,7 +47234,18 @@ class ChainalignParser {
|
|
|
47140
47234
|
}
|
|
47141
47235
|
|
|
47142
47236
|
// ic.deferredMmdbaf = $.Deferred(function() {
|
|
47143
|
-
let
|
|
47237
|
+
let structArrayTmp = idlist.split(',');
|
|
47238
|
+
|
|
47239
|
+
let structArray = [];
|
|
47240
|
+
// remove redundant structures
|
|
47241
|
+
for(let i = 0, il = structArrayTmp.length; i < il; ++i) {
|
|
47242
|
+
if(!ic.structures.hasOwnProperty(structArrayTmp[i].toUpperCase())) {
|
|
47243
|
+
structArray.push(structArrayTmp[i]);
|
|
47244
|
+
}
|
|
47245
|
+
}
|
|
47246
|
+
|
|
47247
|
+
if(structArray.length == 0) return;
|
|
47248
|
+
|
|
47144
47249
|
ic.structArray = ic.structArray.concat(structArray);
|
|
47145
47250
|
|
|
47146
47251
|
let ajaxArray = [];
|
|
@@ -58627,6 +58732,10 @@ class LoadScript {
|
|
|
58627
58732
|
|
|
58628
58733
|
// load pdb, mmcif, mmdb, cid
|
|
58629
58734
|
let id = loadStr.substr(loadStr.lastIndexOf(' ') + 1);
|
|
58735
|
+
|
|
58736
|
+
// skip loading the structure if it was loaded before
|
|
58737
|
+
if(ic.structures.hasOwnProperty(id)) return;
|
|
58738
|
+
|
|
58630
58739
|
ic.inputid = id;
|
|
58631
58740
|
if(command.indexOf('load mmtf') !== -1) {
|
|
58632
58741
|
me.cfg.mmtfid = id;
|
|
@@ -58701,7 +58810,7 @@ class LoadScript {
|
|
|
58701
58810
|
else if(command.indexOf('load alignment') !== -1) {
|
|
58702
58811
|
me.cfg.align = id;
|
|
58703
58812
|
|
|
58704
|
-
if(me.cfg.inpara.indexOf('atype=2') == -1) {
|
|
58813
|
+
if(me.cfg.inpara || me.cfg.inpara.indexOf('atype=2') == -1) {
|
|
58705
58814
|
await ic.alignParserCls.downloadAlignment(me.cfg.align);
|
|
58706
58815
|
}
|
|
58707
58816
|
else {
|
|
@@ -69257,7 +69366,7 @@ class iCn3D {
|
|
|
69257
69366
|
this.optsOri = {};
|
|
69258
69367
|
this.optsOri['camera'] = 'perspective'; //perspective, orthographic
|
|
69259
69368
|
this.optsOri['background'] = 'black'; //transparent, black, grey, white
|
|
69260
|
-
this.optsOri['color'] = 'chain'; //spectrum, secondary structure, charge, hydrophobic, conserved, chain, residue, atom, b factor, red, green, blue, magenta, yellow, cyan, white, grey, custom
|
|
69369
|
+
this.optsOri['color'] = 'chain'; //spectrum, secondary structure, charge, hydrophobic, conserved, chain, residue, atom, b factor, red, green, blue, magenta, yellow, cyan, white, grey, custom, ig strand
|
|
69261
69370
|
this.optsOri['proteins'] = 'ribbon'; //ribbon, strand, cylinder and plate, schematic, c alpha trace, backbone, b factor tube, lines, stick, ball and stick, sphere, nothing
|
|
69262
69371
|
this.optsOri['sidec'] = 'nothing'; //lines2, stick2, ball and stick2, sphere2, nothing
|
|
69263
69372
|
this.optsOri['nucleotides'] = 'nucleotide cartoon'; //nucleotide cartoon, o3 trace, backbone, schematic, lines, stick,
|
|
@@ -69524,6 +69633,7 @@ iCn3D.prototype.init_base = function (bKeepCmd) {
|
|
|
69524
69633
|
|
|
69525
69634
|
this.chainsMapping = {}; // structure_chain name -> residue id hash such as {'structure_chain_resi1': 'reference residue such as K10', ...}
|
|
69526
69635
|
this.resid2refnum = {}; // residue id -> reference number, e.g., {'1WIO_A_16': '2150', ...}
|
|
69636
|
+
this.residIgLoop = {}; // residue ids in the loop regions of ig domain
|
|
69527
69637
|
this.refnum2residArray = {}; // reference number -> array of residue id, e.g., {'2150': ['1WIO_A_16', ...], ...}
|
|
69528
69638
|
this.bShowRefnum = false;
|
|
69529
69639
|
|
|
@@ -69696,7 +69806,7 @@ class iCn3DUI {
|
|
|
69696
69806
|
//even when multiple iCn3D viewers are shown together.
|
|
69697
69807
|
this.pre = this.cfg.divid + "_";
|
|
69698
69808
|
|
|
69699
|
-
this.REVISION = '3.23.
|
|
69809
|
+
this.REVISION = '3.23.2';
|
|
69700
69810
|
|
|
69701
69811
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
69702
69812
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|