icn3d 3.28.6 → 3.28.8
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 +281 -132
- package/icn3d.min.js +4 -4
- package/icn3d.module.js +281 -132
- package/package.json +1 -1
- package/three.module.js +19295 -18910
package/icn3d.module.js
CHANGED
|
@@ -9357,8 +9357,8 @@ class SetMenu {
|
|
|
9357
9357
|
|
|
9358
9358
|
html += this.getMenuText('mn1_searchgrooup', 'Search Structure ' + me.htmlCls.wifiStr, undefined, 1, 1);
|
|
9359
9359
|
html += "<ul>";
|
|
9360
|
-
html += this.getMenuUrl('mn1_searchstru', 'https://www.ncbi.nlm.nih.gov/structure', 'PDB Structures ' + me.htmlCls.wifiStr,
|
|
9361
|
-
html += this.getLink('mn1_proteinname', 'AlphaFold Structures ' + me.htmlCls.wifiStr,
|
|
9360
|
+
html += this.getMenuUrl('mn1_searchstru', 'https://www.ncbi.nlm.nih.gov/structure', 'PDB Structures ' + me.htmlCls.wifiStr, 1, 2);
|
|
9361
|
+
html += this.getLink('mn1_proteinname', 'AlphaFold Structures ' + me.htmlCls.wifiStr, 1, 2);
|
|
9362
9362
|
html += this.getMenuUrl('mn1_afdatabase', 'https://alphafold.ebi.ac.uk', 'AlphaFold UniProt Database ' + me.htmlCls.wifiStr, undefined, 2);
|
|
9363
9363
|
html += "</ul>";
|
|
9364
9364
|
html += "</li>";
|
|
@@ -9428,8 +9428,8 @@ class SetMenu {
|
|
|
9428
9428
|
//html += this.getMenuText('mn1_fold', 'AlphaFold/ESM', undefined, undefined, 1);
|
|
9429
9429
|
html += this.getMenuText('mn1_fold', 'Predict by Seq.', undefined, undefined, 1);
|
|
9430
9430
|
html += "<ul>";
|
|
9431
|
-
|
|
9432
|
-
html += this.getMenuUrl('mn1_esmfold_link', "https://colab.research.google.com/github/sokrypton/ColabFold/blob/main/ESMFold.ipynb", "ESMFold via ColabFold" + me.htmlCls.wifiStr, undefined, 2);
|
|
9431
|
+
html += this.getLink('mn1_esmfold', 'ESMFold', undefined, 2);
|
|
9432
|
+
//html += this.getMenuUrl('mn1_esmfold_link', "https://colab.research.google.com/github/sokrypton/ColabFold/blob/main/ESMFold.ipynb", "ESMFold via ColabFold" + me.htmlCls.wifiStr, undefined, 2);
|
|
9433
9433
|
html += this.getLink('mn1_alphafold', 'AlphaFold2 via ColabFold' + me.htmlCls.wifiStr, undefined, 2);
|
|
9434
9434
|
html += "</ul>";
|
|
9435
9435
|
|
|
@@ -9770,7 +9770,7 @@ class SetMenu {
|
|
|
9770
9770
|
html += this.getRadio('mn6_showslab', 'mn6_showslabNo', 'Off', true, undefined, 2);
|
|
9771
9771
|
html += "</ul>";
|
|
9772
9772
|
html += "</li>";
|
|
9773
|
-
html += this.getMenuText('mn2_axes', 'XYZ-axes', undefined, 1);
|
|
9773
|
+
html += this.getMenuText('mn2_axes', 'XYZ-axes', undefined, undefined, 1);
|
|
9774
9774
|
html += "<ul>";
|
|
9775
9775
|
html += this.getRadio('mn6_showaxis', 'mn6_showaxisYes', 'Original', undefined, undefined, 2);
|
|
9776
9776
|
html += this.getRadio('mn6_showaxis', 'mn6_showaxisSel', 'Prin. Axes on Sel.', undefined, undefined, 2);
|
|
@@ -15860,7 +15860,7 @@ class SetHtml {
|
|
|
15860
15860
|
let nucleotideribbonwidth =(type == '3dprint') ? '1.4' : '0.8';
|
|
15861
15861
|
|
|
15862
15862
|
let shininess = 40;
|
|
15863
|
-
let light1 = 0.
|
|
15863
|
+
let light1 = 0.8;
|
|
15864
15864
|
let light2 = 0.4;
|
|
15865
15865
|
let light3 = 0.2;
|
|
15866
15866
|
let bGlycansCartoon = 0;
|
|
@@ -15908,7 +15908,7 @@ class SetHtml {
|
|
|
15908
15908
|
|
|
15909
15909
|
html += "<b>1. Shininess</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "shininess' value='" + shininess + "' size=4>" + me.htmlCls.space3 + "(for the shininess of the 3D objects, default 40)<br/><br/>";
|
|
15910
15910
|
html += "<b>2. Three directional lights</b>: <br>";
|
|
15911
|
-
html += "<b>Key Light</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "light1' value='" + light1 + "' size=4>" + me.htmlCls.space3 + "(for the light strength of the key light, default 0.
|
|
15911
|
+
html += "<b>Key Light</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "light1' value='" + light1 + "' size=4>" + me.htmlCls.space3 + "(for the light strength of the key light, default 0.8)<br/>";
|
|
15912
15912
|
html += "<b>Fill Light</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "light2' value='" + light2 + "' size=4>" + me.htmlCls.space3 + "(for the light strength of the fill light, default 0.4)<br/>";
|
|
15913
15913
|
html += "<b>Back Light</b>: " + me.htmlCls.inputTextStr + "id='" + me.pre + "light3' value='" + light3 + "' size=4>" + me.htmlCls.space3 + "(for the light strength of the back light, default 0.2)<br/><br/>";
|
|
15914
15914
|
html += "<b>3. Thickness</b>: <br>";
|
|
@@ -16122,7 +16122,7 @@ class SetHtml {
|
|
|
16122
16122
|
html += "</ul>";
|
|
16123
16123
|
|
|
16124
16124
|
html += me.htmlCls.divStr + name1 + "tab1'>";
|
|
16125
|
-
if(type == 'delphi') html += this.addGsizeSalt(name1) + "<br>";
|
|
16125
|
+
if(type == 'delphi') html += this.addGsizeSalt(name1 + "1") + "<br>";
|
|
16126
16126
|
|
|
16127
16127
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Potential contour at: <select id='" + me.pre + name1 + "contour'>";
|
|
16128
16128
|
|
|
@@ -16187,7 +16187,7 @@ class SetHtml {
|
|
|
16187
16187
|
html += "</div>";
|
|
16188
16188
|
|
|
16189
16189
|
html += me.htmlCls.divStr + name1 + "tab2'>";
|
|
16190
|
-
if(type == 'delphi') html += this.addGsizeSalt(name1) + "<br>";
|
|
16190
|
+
if(type == 'delphi') html += this.addGsizeSalt(name1 + "2") + "<br>";
|
|
16191
16191
|
|
|
16192
16192
|
html += "<span style='white-space:nowrap;font-weight:bold;'>Surface with max potential at: <select id='" + me.pre + name1 + "contour2'>";
|
|
16193
16193
|
|
|
@@ -23061,6 +23061,9 @@ class Scene {
|
|
|
23061
23061
|
// show cross-linkages, set side chains
|
|
23062
23062
|
ic.applyClbondsCls.applyClbondsOptions();
|
|
23063
23063
|
|
|
23064
|
+
// add dashed lines for missing residues
|
|
23065
|
+
ic.applyMissingResCls.applyMissingResOptions();
|
|
23066
|
+
|
|
23064
23067
|
ic.applyDisplayCls.applyDisplayOptions(ic.opts, ic.dAtoms);
|
|
23065
23068
|
|
|
23066
23069
|
ic.applyOtherCls.applyOtherOptions();
|
|
@@ -23154,7 +23157,7 @@ class Scene {
|
|
|
23154
23157
|
ic.lightPos3 = new THREE.Vector3(1, 1, 1); //(0, 1, 1);
|
|
23155
23158
|
}
|
|
23156
23159
|
|
|
23157
|
-
let ambientLight = new THREE.AmbientLight(0x888888); //(0x404040);
|
|
23160
|
+
let ambientLight = new THREE.AmbientLight(0x404040); //(0x888888); //(0x404040);
|
|
23158
23161
|
|
|
23159
23162
|
ic.scene.add(ic.directionalLight);
|
|
23160
23163
|
ic.scene.add(ambientLight);
|
|
@@ -26348,15 +26351,16 @@ class Strip {
|
|
|
26348
26351
|
let mesh;
|
|
26349
26352
|
|
|
26350
26353
|
if(bHighlight === 2) {
|
|
26354
|
+
//mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ transparent: true, opacity: 0.5, specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: THREE.FaceColors, side: THREE.DoubleSide }));
|
|
26351
26355
|
mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ transparent: true, opacity: 0.5, specular: ic.frac,
|
|
26352
|
-
|
|
26356
|
+
shininess: ic.shininess, emissive: ic.emissive, vertexColors: true, side: THREE.DoubleSide }));
|
|
26353
26357
|
|
|
26354
26358
|
ic.mdl.add(mesh);
|
|
26355
26359
|
ic.prevHighlightObjects.push(mesh);
|
|
26356
26360
|
}
|
|
26357
26361
|
else {
|
|
26358
|
-
mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ specular: ic.frac,
|
|
26359
|
-
|
|
26362
|
+
//mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: THREE.FaceColors, side: THREE.DoubleSide }));
|
|
26363
|
+
mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: true, side: THREE.DoubleSide }));
|
|
26360
26364
|
|
|
26361
26365
|
ic.mdl.add(mesh);
|
|
26362
26366
|
ic.objects.push(mesh);
|
|
@@ -26761,7 +26765,8 @@ class Tube {
|
|
|
26761
26765
|
*/
|
|
26762
26766
|
let mesh;
|
|
26763
26767
|
if(bHighlight === 2) {
|
|
26764
|
-
mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ transparent: true, opacity: 0.5, specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: THREE.FaceColors, side: THREE.DoubleSide }));
|
|
26768
|
+
//mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ transparent: true, opacity: 0.5, specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: THREE.FaceColors, side: THREE.DoubleSide }));
|
|
26769
|
+
mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ transparent: true, opacity: 0.5, specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: true, side: THREE.DoubleSide }));
|
|
26765
26770
|
|
|
26766
26771
|
if(ic.mdl) ic.mdl.add(mesh);
|
|
26767
26772
|
}
|
|
@@ -26772,8 +26777,8 @@ class Tube {
|
|
|
26772
26777
|
if(ic.mdl) ic.mdl.add(mesh);
|
|
26773
26778
|
}
|
|
26774
26779
|
else {
|
|
26775
|
-
mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: THREE.FaceColors, side: THREE.DoubleSide }));
|
|
26776
|
-
|
|
26780
|
+
//mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: THREE.FaceColors, side: THREE.DoubleSide }));
|
|
26781
|
+
mesh = new THREE.Mesh(geo, new THREE.MeshPhongMaterial({ specular: ic.frac, shininess: ic.shininess, emissive: ic.emissive, vertexColors: true, side: THREE.DoubleSide }));
|
|
26777
26782
|
|
|
26778
26783
|
if(ic.mdl) ic.mdl.add(mesh);
|
|
26779
26784
|
}
|
|
@@ -30184,7 +30189,8 @@ class Surface {
|
|
|
30184
30189
|
specular: ic.frac,
|
|
30185
30190
|
shininess: 0, //10, //30,
|
|
30186
30191
|
emissive: ic.emissive,
|
|
30187
|
-
vertexColors: THREE.VertexColors,
|
|
30192
|
+
//vertexColors: THREE.VertexColors,
|
|
30193
|
+
vertexColors: true,
|
|
30188
30194
|
wireframe: wireframe,
|
|
30189
30195
|
opacity: opacity,
|
|
30190
30196
|
transparent: true,
|
|
@@ -30251,7 +30257,8 @@ class Surface {
|
|
|
30251
30257
|
specular: ic.frac,
|
|
30252
30258
|
shininess: 20, //10, //30,
|
|
30253
30259
|
emissive: ic.emissive,
|
|
30254
|
-
vertexColors: THREE.VertexColors,
|
|
30260
|
+
//vertexColors: THREE.VertexColors,
|
|
30261
|
+
vertexColors: true,
|
|
30255
30262
|
wireframe: wireframe,
|
|
30256
30263
|
opacity: opacity,
|
|
30257
30264
|
transparent: true,
|
|
@@ -30529,7 +30536,7 @@ class ApplyClbonds {
|
|
|
30529
30536
|
|
|
30530
30537
|
if (options.clbonds.toLowerCase() === 'yes' && options.chemicals !== 'nothing') {
|
|
30531
30538
|
let color = '#006400';
|
|
30532
|
-
|
|
30539
|
+
me.parasCls.thr(0x006400);
|
|
30533
30540
|
|
|
30534
30541
|
ic.lines['clbond'] = [];
|
|
30535
30542
|
ic.residuesHashClbonds = {};
|
|
@@ -30548,6 +30555,8 @@ class ApplyClbonds {
|
|
|
30548
30555
|
line.color = color;
|
|
30549
30556
|
line.dashed = false;
|
|
30550
30557
|
|
|
30558
|
+
line.radius = ic.crosslinkRadius;
|
|
30559
|
+
|
|
30551
30560
|
line.serial1 = ic.clbondResid2serial[resid0 + ',' + resid1];
|
|
30552
30561
|
line.serial2 = ic.clbondResid2serial[resid1 + ',' + resid0];
|
|
30553
30562
|
|
|
@@ -30557,7 +30566,7 @@ class ApplyClbonds {
|
|
|
30557
30566
|
line.position2 = ic.atoms[line.serial2].coord;
|
|
30558
30567
|
|
|
30559
30568
|
ic.lines['clbond'].push(line);
|
|
30560
|
-
ic.cylinderCls.createCylinder(line.position1, line.position2, ic.crosslinkRadius, colorObj);
|
|
30569
|
+
//ic.cylinderCls.createCylinder(line.position1, line.position2, ic.crosslinkRadius, colorObj);
|
|
30561
30570
|
|
|
30562
30571
|
// show stick for these two residues
|
|
30563
30572
|
let residueAtoms = {};
|
|
@@ -30618,6 +30627,117 @@ class ApplyClbonds {
|
|
|
30618
30627
|
}
|
|
30619
30628
|
}
|
|
30620
30629
|
|
|
30630
|
+
/**
|
|
30631
|
+
* @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d
|
|
30632
|
+
*/
|
|
30633
|
+
|
|
30634
|
+
class ApplyMissingRes {
|
|
30635
|
+
constructor(icn3d) {
|
|
30636
|
+
this.icn3d = icn3d;
|
|
30637
|
+
}
|
|
30638
|
+
|
|
30639
|
+
applyMissingResOptions(options) { let ic = this.icn3d; ic.icn3dui;
|
|
30640
|
+
|
|
30641
|
+
if(!ic.bCalcMissingRes) {
|
|
30642
|
+
// find all bonds to chemicals
|
|
30643
|
+
ic.missingResPnts = {};
|
|
30644
|
+
ic.missingResResid2serial = {};
|
|
30645
|
+
|
|
30646
|
+
this.applyMissingResOptions_base();
|
|
30647
|
+
|
|
30648
|
+
ic.bCalcMissingRes = true;
|
|
30649
|
+
}
|
|
30650
|
+
|
|
30651
|
+
ic.lines['missingres'] = [];
|
|
30652
|
+
|
|
30653
|
+
if(ic.structures) {
|
|
30654
|
+
let strucArray = Object.keys(ic.structures);
|
|
30655
|
+
for(let i = 0, il = strucArray.length; i < il; ++i) {
|
|
30656
|
+
let struc = strucArray[i];
|
|
30657
|
+
if(!ic.missingResPnts[struc]) continue;
|
|
30658
|
+
|
|
30659
|
+
for(let j = 0, jl = ic.missingResPnts[struc].length; j < jl; j += 2) {
|
|
30660
|
+
let resid0 = ic.missingResPnts[struc][j];
|
|
30661
|
+
let resid1 = ic.missingResPnts[struc][j+1];
|
|
30662
|
+
|
|
30663
|
+
let line = {};
|
|
30664
|
+
|
|
30665
|
+
line.dashed = true;
|
|
30666
|
+
|
|
30667
|
+
line.serial1 = ic.missingResResid2serial[resid0 + ',' + resid1];
|
|
30668
|
+
line.serial2 = ic.missingResResid2serial[resid1 + ',' + resid0];
|
|
30669
|
+
|
|
30670
|
+
line.color = "#" + ic.atoms[line.serial1].color.getHexString();
|
|
30671
|
+
|
|
30672
|
+
line.radius = ic.coilWidth;
|
|
30673
|
+
|
|
30674
|
+
if(!ic.dAtoms.hasOwnProperty(line.serial1) || !ic.dAtoms.hasOwnProperty(line.serial2)) continue;
|
|
30675
|
+
|
|
30676
|
+
line.position1 = ic.atoms[line.serial1].coord;
|
|
30677
|
+
line.position2 = ic.atoms[line.serial2].coord;
|
|
30678
|
+
|
|
30679
|
+
ic.lines['missingres'].push(line);
|
|
30680
|
+
} // for j
|
|
30681
|
+
} // for i
|
|
30682
|
+
} // if
|
|
30683
|
+
}
|
|
30684
|
+
|
|
30685
|
+
applyMissingResOptions_base(type) { let ic = this.icn3d; ic.icn3dui;
|
|
30686
|
+
let misingResArray = [];
|
|
30687
|
+
for(let chainid in ic.chainsSeq) {
|
|
30688
|
+
let bStart = false;
|
|
30689
|
+
let startResid, currResid, prevResid;
|
|
30690
|
+
let bCurrCoord, bPrevCoord = false;
|
|
30691
|
+
for(let i = 0, il = ic.chainsSeq[chainid].length; i < il; ++i) {
|
|
30692
|
+
currResid = chainid + '_' + ic.chainsSeq[chainid][i].resi;
|
|
30693
|
+
|
|
30694
|
+
if(ic.residues.hasOwnProperty(currResid)) {
|
|
30695
|
+
bStart = true;
|
|
30696
|
+
|
|
30697
|
+
bCurrCoord = true;
|
|
30698
|
+
}
|
|
30699
|
+
else {
|
|
30700
|
+
bCurrCoord = false;
|
|
30701
|
+
}
|
|
30702
|
+
|
|
30703
|
+
if(!bCurrCoord && bPrevCoord) {
|
|
30704
|
+
startResid = prevResid;
|
|
30705
|
+
}
|
|
30706
|
+
else if(bStart && startResid && bCurrCoord && !bPrevCoord) {
|
|
30707
|
+
misingResArray.push(startResid);
|
|
30708
|
+
misingResArray.push(currResid);
|
|
30709
|
+
|
|
30710
|
+
startResid = undefined;
|
|
30711
|
+
}
|
|
30712
|
+
|
|
30713
|
+
bPrevCoord = bCurrCoord;
|
|
30714
|
+
prevResid = currResid;
|
|
30715
|
+
}
|
|
30716
|
+
}
|
|
30717
|
+
|
|
30718
|
+
for(let i = 0, il = misingResArray.length; i < il; i += 2) {
|
|
30719
|
+
let resid0 = misingResArray[i];
|
|
30720
|
+
let resid1 = misingResArray[i + 1];
|
|
30721
|
+
|
|
30722
|
+
let structure = resid0.substr(0, resid0.indexOf('_'));
|
|
30723
|
+
resid0.substr(0, resid1.indexOf('_'));
|
|
30724
|
+
|
|
30725
|
+
let atom0 = ic.firstAtomObjCls.getFirstCalphaAtomObj(ic.residues[resid0]);
|
|
30726
|
+
let atom1 = ic.firstAtomObjCls.getFirstCalphaAtomObj(ic.residues[resid1]);
|
|
30727
|
+
|
|
30728
|
+
// one residue may have different atom for different clbond
|
|
30729
|
+
if(atom0 && atom1) {
|
|
30730
|
+
if(ic.missingResPnts[structure] === undefined) ic.missingResPnts[structure] = [];
|
|
30731
|
+
ic.missingResPnts[structure].push(resid0);
|
|
30732
|
+
ic.missingResPnts[structure].push(resid1);
|
|
30733
|
+
|
|
30734
|
+
ic.missingResResid2serial[resid0 + ',' + resid1] = atom0.serial;
|
|
30735
|
+
ic.missingResResid2serial[resid1 + ',' + resid0] = atom1.serial;
|
|
30736
|
+
}
|
|
30737
|
+
} // for i
|
|
30738
|
+
}
|
|
30739
|
+
}
|
|
30740
|
+
|
|
30621
30741
|
/**
|
|
30622
30742
|
* @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d
|
|
30623
30743
|
*/
|
|
@@ -31257,7 +31377,7 @@ class ApplySsbonds {
|
|
|
31257
31377
|
|
|
31258
31378
|
let line = {};
|
|
31259
31379
|
line.color = color;
|
|
31260
|
-
line.dashed =
|
|
31380
|
+
line.dashed = false;
|
|
31261
31381
|
|
|
31262
31382
|
// each Cys has two S atoms
|
|
31263
31383
|
let serial1Array = [], serial2Array = [];
|
|
@@ -31358,14 +31478,17 @@ class ApplySsbonds {
|
|
|
31358
31478
|
//if(ic.lines['ssbond'] === undefined) ic.lines['ssbond'] = [];
|
|
31359
31479
|
ic.lines['ssbond'].push(line);
|
|
31360
31480
|
|
|
31361
|
-
// create bonds for disulfide bonds
|
|
31362
|
-
ic.cylinderCls.createCylinder(line.position1, line.position2, ic.cylinderRadius, colorObj);
|
|
31363
|
-
|
|
31364
31481
|
// show ball and stick for these two residues
|
|
31365
31482
|
let residueAtoms;
|
|
31366
31483
|
residueAtoms = me.hashUtilsCls.unionHash(residueAtoms, ic.residues[res1]);
|
|
31367
31484
|
residueAtoms = me.hashUtilsCls.unionHash(residueAtoms, ic.residues[res2]);
|
|
31368
31485
|
|
|
31486
|
+
let atom = ic.firstAtomObjCls.getFirstAtomObj(residueAtoms);
|
|
31487
|
+
let style = (atom.style == 'lines') ? 'lines' : 'stick';
|
|
31488
|
+
|
|
31489
|
+
// create bonds for disulfide bonds
|
|
31490
|
+
if(atom.style != 'lines') ic.cylinderCls.createCylinder(line.position1, line.position2, ic.cylinderRadius, colorObj);
|
|
31491
|
+
|
|
31369
31492
|
// show side chains for the selected atoms
|
|
31370
31493
|
let atoms = me.hashUtilsCls.intHash(residueAtoms, ic.sidec);
|
|
31371
31494
|
// let calpha_atoms = me.hashUtilsCls.intHash(residueAtoms, ic.calphas);
|
|
@@ -31374,7 +31497,7 @@ class ApplySsbonds {
|
|
|
31374
31497
|
|
|
31375
31498
|
// draw sidec separatedly
|
|
31376
31499
|
for(let j in atoms) {
|
|
31377
|
-
ic.atoms[j].style2 =
|
|
31500
|
+
ic.atoms[j].style2 = style;
|
|
31378
31501
|
}
|
|
31379
31502
|
} // for(let i = 0,
|
|
31380
31503
|
} // for(let s = 0,
|
|
@@ -33595,6 +33718,9 @@ class Alternate {
|
|
|
33595
33718
|
}
|
|
33596
33719
|
|
|
33597
33720
|
if(ic.scene) {
|
|
33721
|
+
// https://github.com/gkjohnson/three-gpu-pathtracer/blob/main/example/basic.js
|
|
33722
|
+
ic.renderer.outputEncoding = THREE.sRGBEncoding;
|
|
33723
|
+
|
|
33598
33724
|
ic.renderer.render(ic.scene, cam);
|
|
33599
33725
|
}
|
|
33600
33726
|
}
|
|
@@ -40847,26 +40973,26 @@ class AddTrack {
|
|
|
40847
40973
|
endColorStr = this.getExonColor(startExon.rangeStart, startExon.rangeEnd, to);
|
|
40848
40974
|
|
|
40849
40975
|
colorGradient = startColorStr + ' 0%, #FFF 50%, ' + endColorStr + ' 100%';
|
|
40850
|
-
htmlTmp2 += this.getExonHtml(startExon.exonIndex, colorGradient, startExon.from, endExon.to, startExon.genomeRange);
|
|
40976
|
+
htmlTmp2 += this.getExonHtml(startExon.exonIndex, colorGradient, startExon.from, endExon.to, startExon.genomeRange, chnid, simpTitle);
|
|
40851
40977
|
}
|
|
40852
40978
|
else {
|
|
40853
40979
|
if(startExon) {
|
|
40854
40980
|
startColorStr = this.getExonColor(startExon.rangeStart, startExon.rangeEnd, from);
|
|
40855
40981
|
|
|
40856
40982
|
colorGradient = startColorStr + ' 0%, #FFF 50%, #00F 100%';
|
|
40857
|
-
htmlTmp2 += this.getExonHtml(startExon.exonIndex, colorGradient, startExon.from, startExon.rangeEnd, startExon.genomeRange);
|
|
40983
|
+
htmlTmp2 += this.getExonHtml(startExon.exonIndex, colorGradient, startExon.from, startExon.rangeEnd, startExon.genomeRange, chnid, simpTitle);
|
|
40858
40984
|
}
|
|
40859
40985
|
|
|
40860
40986
|
if(startExon && endExon) {
|
|
40861
40987
|
for(let j = startExon.exonIndex + 1; j < endExon.exonIndex; ++j) {
|
|
40862
40988
|
colorGradient = '#F00 0%, #FFF 50%, #00F 100%';
|
|
40863
|
-
htmlTmp2 += this.getExonHtml(j, colorGradient, exonArray[j].resStart, exonArray[j].resEnd, exonArray[j].genomeRange);
|
|
40989
|
+
htmlTmp2 += this.getExonHtml(j, colorGradient, exonArray[j].resStart, exonArray[j].resEnd, exonArray[j].genomeRange, chnid, simpTitle);
|
|
40864
40990
|
}
|
|
40865
40991
|
|
|
40866
40992
|
endColorStr = this.getExonColor(endExon.rangeStart, endExon.rangeEnd, to);
|
|
40867
40993
|
|
|
40868
40994
|
colorGradient = '#F00 0%, #FFF 50%, ' + endColorStr + ' 100%';
|
|
40869
|
-
htmlTmp2 += this.getExonHtml(endExon.exonIndex, colorGradient, endExon.rangeStart, endExon.to, endExon.genomeRange);
|
|
40995
|
+
htmlTmp2 += this.getExonHtml(endExon.exonIndex, colorGradient, endExon.rangeStart, endExon.to, endExon.genomeRange, chnid, simpTitle);
|
|
40870
40996
|
}
|
|
40871
40997
|
}
|
|
40872
40998
|
|
|
@@ -40900,8 +41026,8 @@ class AddTrack {
|
|
|
40900
41026
|
}
|
|
40901
41027
|
}
|
|
40902
41028
|
|
|
40903
|
-
getExonHtml(exonIndex, colorGradient, from, to, genomeRange) { let ic = this.icn3d; ic.icn3dui;
|
|
40904
|
-
return '<div style="display:inline-block; color:white!important; width:' + Math.round(ic.seqAnnWidth *(to - from + 1) /(ic.maxAnnoLength + ic.nTotalGap)) + 'px;" class="icn3d-seqTitle icn3d-link icn3d-blue" title="Exon ' + (exonIndex + 1) + ': ' + genomeRange + ' genomic interval" anno="sequence"
|
|
41029
|
+
getExonHtml(exonIndex, colorGradient, from, to, genomeRange, chainid, simpTitle) { let ic = this.icn3d; ic.icn3dui;
|
|
41030
|
+
return '<div style="display:inline-block; color:white!important; width:' + Math.round(ic.seqAnnWidth *(to - from + 1) /(ic.maxAnnoLength + ic.nTotalGap)) + 'px;" class="icn3d-seqTitle icn3d-link icn3d-blue" domain="' + (exonIndex + 1) + '" from="' + from + '" to="' + to + '" setname="' + simpTitle + ', Exon ' + (exonIndex + 1) + '" title="Exon ' + (exonIndex + 1) + ': ' + genomeRange + ' genomic interval" anno="sequence" chain="' + chainid + '"><div style="height: 12px; border: 1px solid #000; background: linear-gradient(to right, ' + colorGradient + ');"></div></div>';
|
|
40905
41031
|
}
|
|
40906
41032
|
|
|
40907
41033
|
getExonColor(start, end, pos) { let ic = this.icn3d; ic.icn3dui;
|
|
@@ -46204,7 +46330,7 @@ class LineGraph {
|
|
|
46204
46330
|
let thisClass = this;
|
|
46205
46331
|
|
|
46206
46332
|
// round 1, 16 templates
|
|
46207
|
-
ic.refpdbArray = ['1InsulinR_8guyE_human_FN3-n1', '1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', '1CoAtomerGamma1_1r4xA_human', '1C3_2qkiD_human_n1', '1CuZnSuperoxideDismutase_1hl5C_human', '1ASF1A_2iijA_human', '1FAB-LIGHT_5esv_C1-n2', '1CD2_1hnfA_human_C2-n2', '1NaCaExchanger_2fwuA_dog_n2', '1FAB-HEAVY_5esv_V-n1', '1PDL1_4z18B_human_V-n1', '1BTLA_2aw2A_human_Iset', '1LaminAC_1ifrA_human', '1IsdA_2iteA_bacteria', '1TCRa_6jxrm_human_C1-n2', '1CD19_6al5A_human_C2orV-n1'];
|
|
46333
|
+
ic.refpdbArray = ['1InsulinR_8guyE_human_FN3-n1', '1Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4', '1CoAtomerGamma1_1r4xA_human', '1C3_2qkiD_human_n1', '1CuZnSuperoxideDismutase_1hl5C_human', '1ASF1A_2iijA_human', '1FAB-LIGHT_5esv_C1-n2', '1CD2_1hnfA_human_C2-n2', '1NaCaExchanger_2fwuA_dog_n2', '1FAB-HEAVY_5esv_V-n1', '1PDL1_4z18B_human_V-n1', '1BTLA_2aw2A_human_Iset', '1LaminAC_1ifrA_human', '1IsdA_2iteA_bacteria', '1TCRa_6jxrm_human_C1-n2', '1CD19_6al5A_human_C2orV-n1', '1CD28_1yjdC_human_V'];
|
|
46208
46334
|
|
|
46209
46335
|
// round 2
|
|
46210
46336
|
ic.refpdbHash = {};
|
|
@@ -46223,52 +46349,55 @@ class LineGraph {
|
|
|
46223
46349
|
ic.refpdbHash['1LaminAC_1ifrA_human'] = ['LaminAC_1ifrA_human'];
|
|
46224
46350
|
ic.refpdbHash['1IsdA_2iteA_bacteria'] = ['IsdA_2iteA_bacteria'];
|
|
46225
46351
|
ic.refpdbHash['1TCRa_6jxrm_human_C1-n2'] = ['TCRa_6jxrm_human_C1-n2'];
|
|
46226
|
-
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
46352
|
+
ic.refpdbHash['1CD19_6al5A_human_C2orV-n1'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
46353
|
+
ic.refpdbHash['1CD28_1yjdC_human_V'] = ['CD28_1yjdC_human_V'];
|
|
46227
46354
|
|
|
46228
46355
|
// use known ref structure
|
|
46229
|
-
ic.refpdbHash['
|
|
46230
|
-
ic.refpdbHash['
|
|
46231
|
-
ic.refpdbHash['
|
|
46232
|
-
ic.refpdbHash['
|
|
46233
|
-
ic.refpdbHash['
|
|
46234
|
-
ic.refpdbHash['
|
|
46235
|
-
ic.refpdbHash['
|
|
46236
|
-
|
|
46237
|
-
|
|
46238
|
-
ic.refpdbHash['
|
|
46239
|
-
ic.refpdbHash['
|
|
46240
|
-
ic.refpdbHash['
|
|
46241
|
-
ic.refpdbHash['
|
|
46242
|
-
ic.refpdbHash['
|
|
46243
|
-
ic.refpdbHash['
|
|
46244
|
-
ic.refpdbHash['
|
|
46245
|
-
ic.refpdbHash['
|
|
46246
|
-
ic.refpdbHash['
|
|
46247
|
-
ic.refpdbHash['
|
|
46248
|
-
ic.refpdbHash['
|
|
46249
|
-
ic.refpdbHash['
|
|
46250
|
-
ic.refpdbHash['
|
|
46251
|
-
ic.refpdbHash['
|
|
46252
|
-
ic.refpdbHash['
|
|
46253
|
-
ic.refpdbHash['
|
|
46254
|
-
ic.refpdbHash['
|
|
46255
|
-
ic.refpdbHash['
|
|
46256
|
-
ic.refpdbHash['
|
|
46257
|
-
ic.refpdbHash['
|
|
46258
|
-
ic.refpdbHash['
|
|
46259
|
-
ic.refpdbHash['
|
|
46260
|
-
ic.refpdbHash['
|
|
46261
|
-
ic.refpdbHash['
|
|
46262
|
-
ic.refpdbHash['
|
|
46263
|
-
ic.refpdbHash['
|
|
46264
|
-
ic.refpdbHash['
|
|
46265
|
-
ic.refpdbHash['
|
|
46266
|
-
ic.refpdbHash['
|
|
46267
|
-
ic.refpdbHash['
|
|
46268
|
-
ic.refpdbHash['
|
|
46269
|
-
ic.refpdbHash['
|
|
46270
|
-
ic.refpdbHash['
|
|
46271
|
-
ic.refpdbHash['
|
|
46356
|
+
ic.refpdbHash['5ESV_C'] = ['FAB-HEAVY_5esv_V-n1', 'FAB-HEAVY_5esv_C1-n2'];
|
|
46357
|
+
ic.refpdbHash['5ESV_D'] = ['FAB-LIGHT_5esv_V-n1', 'FAB-LIGHT_5esv_C1-n2'];
|
|
46358
|
+
ic.refpdbHash['8GUY_E'] = ['InsulinR_8guyE_human_FN3-n1', 'InsulinR_8guyE_human_FN3-n2'];
|
|
46359
|
+
ic.refpdbHash['6JXR_m'] = ['TCRa_6jxrm_human_V-n1', 'TCRa_6jxrm_human_C1-n2'];
|
|
46360
|
+
ic.refpdbHash['1HNF_A'] = ['CD2_1hnfA_human_V-n1', 'CD2_1hnfA_human_C2-n2'];
|
|
46361
|
+
ic.refpdbHash['7TZG_D'] = ['LAG3_7tzgD_human_V-n1', 'LAG3_7tzgD_human_C2-n2'];
|
|
46362
|
+
ic.refpdbHash['6PY8_C'] = ['RBPJ_6py8C_human_Unk-n1', 'RBPJ_6py8C_human_Unk-n2'];
|
|
46363
|
+
ic.refpdbHash['1BQU_B'] = ['IL6Rb_1bquB_human_FN3-n2', 'IL6Rb_1bquB_human_FN3-n3'];
|
|
46364
|
+
|
|
46365
|
+
ic.refpdbHash['1R4X_A'] = ['CoAtomerGamma1_1r4xA_human'];
|
|
46366
|
+
ic.refpdbHash['6OIL_A'] = ['VISTA_6oilA_human_V'];
|
|
46367
|
+
ic.refpdbHash['2ZXE_B'] = ['NaKATPaseTransporterBeta_2zxeB_spurdogshark'];
|
|
46368
|
+
ic.refpdbHash['1I8A_A'] = ['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'];
|
|
46369
|
+
ic.refpdbHash['2FWU_A'] = ['NaCaExchanger_2fwuA_dog_n2'];
|
|
46370
|
+
ic.refpdbHash['4JQI_A'] = ['BArrestin1_4jqiA_rat_n1'];
|
|
46371
|
+
ic.refpdbHash['1NBQ_A'] = ['JAM1_1nbqA_human_VorIset-n2'];
|
|
46372
|
+
ic.refpdbHash['1O75_A'] = ['TP47_1o75A_bacteria'];
|
|
46373
|
+
ic.refpdbHash['7PHR_H'] = ['MHCIa_7phrH_human_C1'];
|
|
46374
|
+
ic.refpdbHash['2IIJ_A'] = ['ASF1A_2iijA_human'];
|
|
46375
|
+
ic.refpdbHash['4Z18_B'] = ['PDL1_4z18B_human_V-n1'];
|
|
46376
|
+
ic.refpdbHash['1T6V_N'] = ['VNAR_1t6vN_shark_V'];
|
|
46377
|
+
ic.refpdbHash['2O6C_A'] = ['TP34_2o6cA_bacteria'];
|
|
46378
|
+
ic.refpdbHash['3KYS_C'] = ['TEAD1_3kysC_human'];
|
|
46379
|
+
ic.refpdbHash['7PHR_L'] = ['B2Microglobulin_7phrL_human_C1'];
|
|
46380
|
+
ic.refpdbHash['2AW2_A'] = ['BTLA_2aw2A_human_Iset'];
|
|
46381
|
+
ic.refpdbHash['1HL5_C'] = ['CuZnSuperoxideDismutase_1hl5C_human'];
|
|
46382
|
+
ic.refpdbHash['1WF5_A'] = ['Sidekick2_1wf5A_human_FN3-n7'];
|
|
46383
|
+
ic.refpdbHash['5J0B_B'] = ['Siglec3_5j0bB_human_C2-n2'];
|
|
46384
|
+
ic.refpdbHash['1IFR_A'] = ['LaminAC_1ifrA_human'];
|
|
46385
|
+
ic.refpdbHash['Q7Z7D3_A'] = ['VTCN1_Q7Z7D3_human_V-n2'];
|
|
46386
|
+
ic.refpdbHash['4ZQK_B'] = ['PD1_4zqkB_human_V'];
|
|
46387
|
+
ic.refpdbHash['2DM3_A'] = ['Palladin_2dm3A_human_Iset-n1'];
|
|
46388
|
+
ic.refpdbHash['2ITE_A'] = ['IsdA_2iteA_bacteria'];
|
|
46389
|
+
ic.refpdbHash['1XAK_A'] = ['ORF7a_1xakA_virus'];
|
|
46390
|
+
ic.refpdbHash['4ZT1_A'] = ['ECadherin_4zt1A_human_n2'];
|
|
46391
|
+
ic.refpdbHash['1LMI_A'] = ['MPT63_1lmiA_bacteria'];
|
|
46392
|
+
ic.refpdbHash['1CD8_A'] = ['CD8a_1cd8A_human_V'];
|
|
46393
|
+
ic.refpdbHash['3S97_C'] = ['Contactin1_3s97C_human_C2-n2'];
|
|
46394
|
+
ic.refpdbHash['1AXI_B'] = ['GHR_1axiB_human_FN3-n1'];
|
|
46395
|
+
ic.refpdbHash['6X4G_A'] = ['ICOS_6x4gA_human_V'];
|
|
46396
|
+
ic.refpdbHash['2EE2_A'] = ['Contactin1_2ee2A_human_FN3-n9'];
|
|
46397
|
+
ic.refpdbHash['4UOW_M'] = ['Titin_4uowM_human_Unk-n152'];
|
|
46398
|
+
ic.refpdbHash['6A15_A'] = ['CD19_6al5A_human_C2orV-n1'];
|
|
46399
|
+
ic.refpdbHash['2QKI_D'] = ['C3_2qkiD_human_n1'];
|
|
46400
|
+
ic.refpdbHash['1YJD_C'] = ['CD28_1yjdC_human_V'];
|
|
46272
46401
|
|
|
46273
46402
|
let pdbAjaxArray = [];
|
|
46274
46403
|
for(let k = 0, kl = ic.refpdbArray.length; k < kl; ++k) {
|
|
@@ -46527,12 +46656,12 @@ class LineGraph {
|
|
|
46527
46656
|
let domainid = domainidpairArray[i].substr(0, domainidpairArray[i].indexOf('|'));
|
|
46528
46657
|
let refpdbname = domainidpairArray[i].substr(domainidpairArray[i].indexOf('|') + 1);
|
|
46529
46658
|
//let chainid = domainid.split('-')[0];
|
|
46530
|
-
|
|
46659
|
+
|
|
46531
46660
|
if(!bRound1) {
|
|
46532
46661
|
if(!me.bNode) console.log("refpdbname " + refpdbname + " TM-score: " + queryData[0].score);
|
|
46533
46662
|
}
|
|
46534
46663
|
else {
|
|
46535
|
-
if(!me.bNode) console.log("refpdbname " + refpdbname + " RMSD: " + queryData[0].super_rmsd);
|
|
46664
|
+
if(!me.bNode) console.log("domainid: " + domainid + " refpdbname " + refpdbname + " RMSD: " + queryData[0].super_rmsd + ", num_res: " + queryData[0].num_res + ", 10/RMSD + num_res/5: " + (10 / queryData[0].super_rmsd + queryData[0].num_seg / 5).toFixed(1));
|
|
46536
46665
|
}
|
|
46537
46666
|
|
|
46538
46667
|
// Ig-like domains: B (2150, 2150a, 2150b), C (3150, 3250), E (7150, 7250), F (8150, 8250) strands
|
|
@@ -46562,11 +46691,14 @@ class LineGraph {
|
|
|
46562
46691
|
//if(!(bBstrand && bCstrand && bEstrand && bFstrand && bGstrand)) continue;
|
|
46563
46692
|
if(!(bBstrand && bCstrand && bEstrand && bFstrand)) {
|
|
46564
46693
|
if(!me.bNode) console.log("Some of the Ig strands B, C, E, F are missing in the domain " + domainid + "...");
|
|
46694
|
+
if(ic.domainid2refpdbname[domainid]) delete ic.domainid2refpdbname[domainid];
|
|
46565
46695
|
continue;
|
|
46566
46696
|
}
|
|
46567
46697
|
}
|
|
46568
46698
|
|
|
46569
46699
|
if(!bRound1) {
|
|
46700
|
+
console.log("domainid: " + domainid);
|
|
46701
|
+
|
|
46570
46702
|
if(!domainid2score.hasOwnProperty(domainid) || queryData[0].score > domainid2score[domainid]) {
|
|
46571
46703
|
domainid2score[domainid] = queryData[0].score;
|
|
46572
46704
|
|
|
@@ -46577,8 +46709,10 @@ class LineGraph {
|
|
|
46577
46709
|
}
|
|
46578
46710
|
}
|
|
46579
46711
|
else {
|
|
46580
|
-
|
|
46581
|
-
|
|
46712
|
+
let mixScore = 10 / queryData[0].super_rmsd + queryData[0].num_seg / 5;
|
|
46713
|
+
|
|
46714
|
+
if(!domainid2score.hasOwnProperty(domainid) || mixScore > domainid2score[domainid]) {
|
|
46715
|
+
domainid2score[domainid] = mixScore;
|
|
46582
46716
|
|
|
46583
46717
|
ic.domainid2refpdbname[domainid] = refpdbname;
|
|
46584
46718
|
domainid2segs[domainid] = queryData[0].segs;
|
|
@@ -46598,11 +46732,14 @@ class LineGraph {
|
|
|
46598
46732
|
for(let domainid in ic.domainid2refpdbname) {
|
|
46599
46733
|
let pdbAjaxArray = [];
|
|
46600
46734
|
let refpdbname = ic.domainid2refpdbname[domainid];
|
|
46601
|
-
let pdbid = domainid.substr(0, domainid.indexOf('_'));
|
|
46735
|
+
//let pdbid = domainid.substr(0, domainid.indexOf('_'));
|
|
46736
|
+
let chainid = domainid.substr(0, domainid.indexOf('-'));
|
|
46602
46737
|
|
|
46603
|
-
if(ic.refpdbHash.hasOwnProperty(pdbid)) {
|
|
46738
|
+
//if(ic.refpdbHash.hasOwnProperty(pdbid)) {
|
|
46739
|
+
if(ic.refpdbHash.hasOwnProperty(chainid)) {
|
|
46604
46740
|
// use itself as the ref structure
|
|
46605
|
-
refpdbname = pdbid;
|
|
46741
|
+
//refpdbname = pdbid;
|
|
46742
|
+
refpdbname = chainid;
|
|
46606
46743
|
|
|
46607
46744
|
if(!me.bNode) console.log("Adjusted refpdbname for domainid " + domainid + ": " + refpdbname);
|
|
46608
46745
|
}
|
|
@@ -46644,11 +46781,11 @@ class LineGraph {
|
|
|
46644
46781
|
dataArray3 = await allPromise;
|
|
46645
46782
|
|
|
46646
46783
|
await thisClass.parseAlignData(dataArray3, domainidpairArray3);
|
|
46647
|
-
|
|
46784
|
+
|
|
46648
46785
|
// end of round 2
|
|
46649
46786
|
return;
|
|
46650
46787
|
}
|
|
46651
|
-
|
|
46788
|
+
|
|
46652
46789
|
// combine domainid into chainid
|
|
46653
46790
|
let processedChainid = {};
|
|
46654
46791
|
for(let domainid in ic.domainid2refpdbname) {
|
|
@@ -46755,17 +46892,18 @@ class LineGraph {
|
|
|
46755
46892
|
|
|
46756
46893
|
// A-: 10xx
|
|
46757
46894
|
// A: 11xx
|
|
46895
|
+
// A+ continue A
|
|
46758
46896
|
// A': 12xx
|
|
46759
|
-
// A+: 13xx
|
|
46760
46897
|
// B: 21xx
|
|
46761
46898
|
// C: 32xx
|
|
46762
46899
|
// C': 42xx
|
|
46763
46900
|
// C'': 51xx, 52xx
|
|
46764
46901
|
// D: 61xx
|
|
46765
46902
|
// E: 71xx
|
|
46903
|
+
// E+: continue E
|
|
46766
46904
|
// F: 82xx
|
|
46767
46905
|
// G: 91xx, 92xx
|
|
46768
|
-
// G+:
|
|
46906
|
+
// G+: continue G
|
|
46769
46907
|
|
|
46770
46908
|
// if(refnum < 100) return " " + oriRefnum;
|
|
46771
46909
|
// else if(refnum >= 100 && refnum < 1000) {
|
|
@@ -46775,11 +46913,10 @@ class LineGraph {
|
|
|
46775
46913
|
if(refnum < 900) return undefined;
|
|
46776
46914
|
else if(refnum >= 900 && refnum < 1000) return " " + oriRefnum;
|
|
46777
46915
|
else if(refnum >= 1000 && refnum < 1100) return "A-" + oriRefnum;
|
|
46778
|
-
else if(refnum >= 1100 && refnum < 1200) return "A" + oriRefnum;
|
|
46916
|
+
else if(refnum >= 1100 && refnum < 1200) return "A" + oriRefnum; // could be A+
|
|
46779
46917
|
else if(refnum >= 1200 && refnum < 1300) return "A'" + oriRefnum;
|
|
46780
|
-
//else if(refnum >= 1300 && refnum < 1400) return "A
|
|
46781
|
-
else if(refnum >= 1300 && refnum <
|
|
46782
|
-
else if(refnum >= 1400 && refnum < 2000) {
|
|
46918
|
+
//else if(refnum >= 1300 && refnum < 1400) return "A+" + oriRefnum;
|
|
46919
|
+
else if(refnum >= 1300 && refnum < 2000) {
|
|
46783
46920
|
if(prevStrand && prevStrand.substr(0, 1) == 'A') {
|
|
46784
46921
|
return prevStrand + oriRefnum;
|
|
46785
46922
|
}
|
|
@@ -46792,12 +46929,11 @@ class LineGraph {
|
|
|
46792
46929
|
else if(refnum >= 4000 && refnum < 5000) return "C'" + oriRefnum;
|
|
46793
46930
|
else if(refnum >= 5000 && refnum < 6000) return "C''" + oriRefnum;
|
|
46794
46931
|
else if(refnum >= 6000 && refnum < 7000) return "D" + oriRefnum;
|
|
46795
|
-
else if(refnum >= 7000 && refnum < 8000) return "E" + oriRefnum;
|
|
46932
|
+
else if(refnum >= 7000 && refnum < 8000) return "E" + oriRefnum; // could be E+
|
|
46796
46933
|
else if(refnum >= 8000 && refnum < 9000) return "F" + oriRefnum;
|
|
46797
|
-
else if(refnum >= 9000 && refnum <
|
|
46798
|
-
//else if(refnum >= 9400 && refnum < 9500) return "G
|
|
46799
|
-
else if(refnum >=
|
|
46800
|
-
else if(refnum >= 9500) return "G" + oriRefnum;
|
|
46934
|
+
else if(refnum >= 9000 && refnum < 9300) return "G" + oriRefnum; // could be G+
|
|
46935
|
+
//else if(refnum >= 9400 && refnum < 9500) return "G+" + oriRefnum;
|
|
46936
|
+
else if(refnum >= 9300) return "G" + oriRefnum;
|
|
46801
46937
|
}
|
|
46802
46938
|
|
|
46803
46939
|
async parseCustomRefFile(data) { let ic = this.icn3d; ic.icn3dui;
|
|
@@ -46921,9 +47057,8 @@ class LineGraph {
|
|
|
46921
47057
|
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chnid]);
|
|
46922
47058
|
if(ic.proteins.hasOwnProperty(atom.serial)) {
|
|
46923
47059
|
for(let i = 0; i < ic.chainsSeq[chnid].length; ++i) {
|
|
46924
|
-
|
|
46925
|
-
|
|
46926
|
-
refData += "'" + resid + "': '" + resid2refnum[resid] + "',\n";
|
|
47060
|
+
const resid = chnid + '_' + ic.chainsSeq[chnid][i].resi + '_' + ic.chainsSeq[chnid][i].name;
|
|
47061
|
+
refData += '"' + resid + '": "' + resid2refnum[resid] + '",\n';
|
|
46927
47062
|
}
|
|
46928
47063
|
}
|
|
46929
47064
|
}
|
|
@@ -48288,22 +48423,16 @@ class ViewInterPairs {
|
|
|
48288
48423
|
}
|
|
48289
48424
|
|
|
48290
48425
|
if(ic.bD3 === undefined) {
|
|
48291
|
-
//
|
|
48292
|
-
|
|
48426
|
+
//let url = "https://d3js.org/d3.v4.min.js";
|
|
48427
|
+
let url = "https://www.ncbi.nlm.nih.gov/Structure/icn3d/script/d3v4-force-all.min.js";
|
|
48293
48428
|
await me.getAjaxPromise(url, 'script');
|
|
48294
48429
|
|
|
48295
48430
|
ic.bD3 = true;
|
|
48296
|
-
|
|
48297
|
-
$("#" + me.svgid).empty();
|
|
48298
|
-
me.htmlCls.dialogCls.openDlg('dl_graph', 'Force-directed graph');
|
|
48299
|
-
ic.drawGraphCls.drawGraph(ic.graphStr, ic.pre + 'dl_graph');
|
|
48300
|
-
/// if(ic.deferredGraphinteraction !== undefined) ic.deferredGraphinteraction.resolve();
|
|
48301
|
-
}
|
|
48302
|
-
else {
|
|
48303
|
-
$("#" + me.svgid).empty();
|
|
48304
|
-
me.htmlCls.dialogCls.openDlg('dl_graph', 'Force-directed graph');
|
|
48305
|
-
ic.drawGraphCls.drawGraph(ic.graphStr, ic.pre + 'dl_graph');
|
|
48306
48431
|
}
|
|
48432
|
+
|
|
48433
|
+
$("#" + me.svgid).empty();
|
|
48434
|
+
me.htmlCls.dialogCls.openDlg('dl_graph', 'Force-directed graph');
|
|
48435
|
+
ic.drawGraphCls.drawGraph(ic.graphStr, ic.pre + 'dl_graph');
|
|
48307
48436
|
}
|
|
48308
48437
|
|
|
48309
48438
|
return {interactionTypes: interactionTypes.toString(), bondCnt: bondCnt};
|
|
@@ -49922,7 +50051,6 @@ class ChainalignParser {
|
|
|
49922
50051
|
let ajaxArray = [], indexArray = [], struArray = [];
|
|
49923
50052
|
let urlalign = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi";
|
|
49924
50053
|
let urltmalign = me.htmlCls.baseUrl + "tmalign/tmalign.cgi";
|
|
49925
|
-
//let urltmalign = "https://test.ncbi.nlm.nih.gov/Structure/tmalign/tmalign.cgi";
|
|
49926
50054
|
|
|
49927
50055
|
for(let index in ic.afChainIndexHash) {
|
|
49928
50056
|
let idArray = ic.afChainIndexHash[index].split('_');
|
|
@@ -50711,7 +50839,12 @@ class ChainalignParser {
|
|
|
50711
50839
|
targetAjax = me.getAjaxPromise(url_t, 'text');
|
|
50712
50840
|
}
|
|
50713
50841
|
else {
|
|
50714
|
-
|
|
50842
|
+
let structureTmp = structure;
|
|
50843
|
+
if(structure.length == 5) {
|
|
50844
|
+
structureTmp = structure.substr(0,4);
|
|
50845
|
+
}
|
|
50846
|
+
|
|
50847
|
+
url_t = me.htmlCls.baseUrl + "mmdb/mmdb_strview.cgi?v=2&program=icn3d&b=1&s=1&ft=1&bu=" + me.cfg.bu + "&uid=" + structureTmp;
|
|
50715
50848
|
if(me.cfg.inpara !== undefined) url_t += me.cfg.inpara;
|
|
50716
50849
|
|
|
50717
50850
|
targetAjax = me.getAjaxPromise(url_t, 'jsonp');
|
|
@@ -50788,7 +50921,8 @@ class ChainalignParser {
|
|
|
50788
50921
|
}
|
|
50789
50922
|
else {
|
|
50790
50923
|
let bNoSeqalign = true;
|
|
50791
|
-
|
|
50924
|
+
let pdbid = structArray[i];
|
|
50925
|
+
hAtomsTmp = await ic.mmdbParserCls.parseMmdbData(queryDataArray[i], targetOrQuery, undefined, undefined, bLastQuery, bNoSeqalign, pdbid);
|
|
50792
50926
|
}
|
|
50793
50927
|
|
|
50794
50928
|
hAtoms = me.hashUtilsCls.unionHash(hAtoms, hAtomsTmp);
|
|
@@ -51450,9 +51584,10 @@ class MmdbParser {
|
|
|
51450
51584
|
}
|
|
51451
51585
|
}
|
|
51452
51586
|
|
|
51453
|
-
async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign) { let ic = this.icn3d, me = ic.icn3dui;
|
|
51587
|
+
async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTransformNoSeqalign, pdbidIn) { let ic = this.icn3d, me = ic.icn3dui;
|
|
51454
51588
|
let hAtoms;
|
|
51455
|
-
let pdbid =(data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
|
|
51589
|
+
let pdbid = (data.pdbId !== undefined) ? data.pdbId : data.mmdbId;
|
|
51590
|
+
if(pdbidIn) pdbid = pdbidIn;
|
|
51456
51591
|
|
|
51457
51592
|
this.parseMmdbDataPart1(data, type);
|
|
51458
51593
|
|
|
@@ -62799,7 +62934,7 @@ class LoadScript {
|
|
|
62799
62934
|
}
|
|
62800
62935
|
|
|
62801
62936
|
//When reading a list of commands, apply transformation at the last step.
|
|
62802
|
-
renderFinalStep(steps) { let ic = this.icn3d, me = ic.icn3dui;
|
|
62937
|
+
async renderFinalStep(steps) { let ic = this.icn3d, me = ic.icn3dui;
|
|
62803
62938
|
// enable ic.ParserUtilsCls.hideLoading
|
|
62804
62939
|
ic.bCommandLoad = false;
|
|
62805
62940
|
|
|
@@ -64517,6 +64652,15 @@ class FirstAtomObj {
|
|
|
64517
64652
|
}
|
|
64518
64653
|
}
|
|
64519
64654
|
|
|
64655
|
+
if(!firstIndex) {
|
|
64656
|
+
for(let i in atomsHash) {
|
|
64657
|
+
if(ic.atoms[i].name == "O3'" || ic.atoms[i].name == "O3*") {
|
|
64658
|
+
firstIndex = i;
|
|
64659
|
+
break;
|
|
64660
|
+
}
|
|
64661
|
+
}
|
|
64662
|
+
}
|
|
64663
|
+
|
|
64520
64664
|
return (firstIndex !== undefined) ? ic.atoms[firstIndex] : this.getFirstAtomObj(atomsHash);
|
|
64521
64665
|
}
|
|
64522
64666
|
|
|
@@ -65022,8 +65166,11 @@ class Delphi {
|
|
|
65022
65166
|
let salt = saltArray[1]; //parseFloat(saltArray[1]);
|
|
65023
65167
|
|
|
65024
65168
|
// The values should be string
|
|
65025
|
-
$("#" + ic.pre + "
|
|
65026
|
-
$("#" + ic.pre + "
|
|
65169
|
+
$("#" + ic.pre + "delphi1gsize").val(gsize);
|
|
65170
|
+
$("#" + ic.pre + "delphi1salt").val(salt);
|
|
65171
|
+
|
|
65172
|
+
$("#" + ic.pre + "delphi2gsize").val(gsize);
|
|
65173
|
+
$("#" + ic.pre + "delphi2salt").val(salt);
|
|
65027
65174
|
|
|
65028
65175
|
if(paraArray.length == 7) {
|
|
65029
65176
|
let surfaceArray = paraArray[4].split(" ");
|
|
@@ -65048,11 +65195,11 @@ class Delphi {
|
|
|
65048
65195
|
}
|
|
65049
65196
|
|
|
65050
65197
|
async loadDelphiFile(type) { let ic = this.icn3d, me = ic.icn3dui;
|
|
65051
|
-
let gsize = $("#" + ic.pre + "
|
|
65052
|
-
let salt = $("#" + ic.pre + "
|
|
65053
|
-
let contour =(type == 'delphi2') ? $("#" + ic.pre + "delphicontour2").val() : $("#" + ic.pre + "delphicontour").val();
|
|
65198
|
+
let gsize = (type == 'delphi2') ? $("#" + ic.pre + "delphi2gsize").val() : $("#" + ic.pre + "delphi1gsize").val();
|
|
65199
|
+
let salt = (type == 'delphi2') ? $("#" + ic.pre + "delphi2salt").val() : $("#" + ic.pre + "delphi1gsize").val();
|
|
65200
|
+
let contour = (type == 'delphi2') ? $("#" + ic.pre + "delphicontour2").val() : $("#" + ic.pre + "delphicontour").val();
|
|
65054
65201
|
|
|
65055
|
-
let bSurface =(type == 'delphi2') ? true: false;
|
|
65202
|
+
let bSurface = (type == 'delphi2') ? true: false;
|
|
65056
65203
|
|
|
65057
65204
|
await this.CalcPhi(gsize, salt, contour, bSurface);
|
|
65058
65205
|
|
|
@@ -68780,7 +68927,7 @@ class ResizeCanvas {
|
|
|
68780
68927
|
|
|
68781
68928
|
ic.applyCenterCls.setWidthHeight(width, heightTmp);
|
|
68782
68929
|
|
|
68783
|
-
if(bDraw === undefined || bDraw) {
|
|
68930
|
+
if(ic.structures && Object.keys(ic.structures).length > 0 && (bDraw === undefined || bDraw)) {
|
|
68784
68931
|
ic.drawCls.draw();
|
|
68785
68932
|
}
|
|
68786
68933
|
}
|
|
@@ -72816,7 +72963,7 @@ class iCn3D {
|
|
|
72816
72963
|
this.shininess = 40; //30
|
|
72817
72964
|
this.emissive = 0x111111; //0x000000
|
|
72818
72965
|
|
|
72819
|
-
this.light1 = 0.6; //1
|
|
72966
|
+
this.light1 = 0.8; //0.6; //1
|
|
72820
72967
|
this.light2 = 0.4;
|
|
72821
72968
|
this.light3 = 0.2;
|
|
72822
72969
|
|
|
@@ -73130,6 +73277,8 @@ class iCn3D {
|
|
|
73130
73277
|
|
|
73131
73278
|
this.applyCenterCls = new ApplyCenter(this);
|
|
73132
73279
|
this.applyClbondsCls = new ApplyClbonds(this);
|
|
73280
|
+
this.applyMissingResCls = new ApplyMissingRes(this);
|
|
73281
|
+
|
|
73133
73282
|
this.applyDisplayCls = new ApplyDisplay(this);
|
|
73134
73283
|
this.applyMapCls = new ApplyMap(this);
|
|
73135
73284
|
this.applyOtherCls = new ApplyOther(this);
|
|
@@ -73452,7 +73601,7 @@ class iCn3DUI {
|
|
|
73452
73601
|
//even when multiple iCn3D viewers are shown together.
|
|
73453
73602
|
this.pre = this.cfg.divid + "_";
|
|
73454
73603
|
|
|
73455
|
-
this.REVISION = '3.28.
|
|
73604
|
+
this.REVISION = '3.28.2';
|
|
73456
73605
|
|
|
73457
73606
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
73458
73607
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|
|
@@ -73658,17 +73807,17 @@ iCn3DUI.prototype.show3DStructure = async function(pdbStr) { let me = this;
|
|
|
73658
73807
|
chainidArray.push(domainidArray[i]);
|
|
73659
73808
|
}
|
|
73660
73809
|
}
|
|
73661
|
-
|
|
73662
|
-
let mmdbafid = '';
|
|
73663
|
-
for(let i = 0, il = chainidArray.length; i < il; ++i) {
|
|
73664
|
-
if(i > 0) mmdbafid += ',';
|
|
73665
|
-
mmdbafid += chainidArray[i].substr(0, chainidArray[i].indexOf('_'));
|
|
73666
|
-
}
|
|
73667
73810
|
|
|
73668
73811
|
// realign
|
|
73669
73812
|
ic.chainidArray = [chain_t].concat(chainidArray);
|
|
73670
73813
|
ic.chainidArray = ic.chainalignParserCls.addPostfixForChainids(ic.chainidArray);
|
|
73671
73814
|
|
|
73815
|
+
let mmdbafid = '';
|
|
73816
|
+
for(let i = 0, il = ic.chainidArray.length; i < il; ++i) {
|
|
73817
|
+
if(i > 0) mmdbafid += ',';
|
|
73818
|
+
mmdbafid += ic.chainidArray[i].substr(0, ic.chainidArray[i].indexOf('_'));
|
|
73819
|
+
}
|
|
73820
|
+
|
|
73672
73821
|
me.htmlCls.clickMenuCls.setLogCmd('resdef ' + me.cfg.resdef, true);
|
|
73673
73822
|
|
|
73674
73823
|
ic.loadCmd = 'vast_search_chainid ' + ic.chainidArray;
|