icn3d 3.30.1 → 3.30.3
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 +144 -37
- package/icn3d.min.js +5 -5
- package/icn3d.module.js +144 -37
- package/package.json +1 -1
package/icn3d.module.js
CHANGED
|
@@ -12896,12 +12896,69 @@ class SetDialog {
|
|
|
12896
12896
|
|
|
12897
12897
|
group2tpl['Other'] = ['CuZnSuperoxideDismutase_1hl5C_human', 'ECadherin_4zt1A_human_n2', 'LaminAC_1ifrA_human', 'ORF7a_1xakA_virus'];
|
|
12898
12898
|
|
|
12899
|
+
let tpl2strandsig = {};
|
|
12900
|
+
tpl2strandsig['ASF1A_2iijA_human'] = "A A' B C C' E F G G+";
|
|
12901
|
+
tpl2strandsig['B2Microglobulin_7phrL_human_C1'] = "A B C C' D E F G";
|
|
12902
|
+
tpl2strandsig['BArrestin1_4jqiA_rat_n1'] = "A- A A' B C C' E F G";
|
|
12903
|
+
tpl2strandsig['BTLA_2aw2A_human_Iset'] = "A A' B C C' D E F G";
|
|
12904
|
+
tpl2strandsig['C3_2qkiD_human_n1'] = "A A' B C C' E F G";
|
|
12905
|
+
tpl2strandsig['CD19_6al5A_human_C2orV-n1'] = "A' B C C' D E F G";
|
|
12906
|
+
tpl2strandsig['CD28_1yjdC_human_V'] = "A A' B C C' C'' D E F G";
|
|
12907
|
+
tpl2strandsig['CD2_1hnfA_human_C2-n2'] = "A B C C' E F G";
|
|
12908
|
+
tpl2strandsig['CD2_1hnfA_human_V-n1'] = "A' B C C' C'' D E F G";
|
|
12909
|
+
tpl2strandsig['CD3d_6jxrd_human_Iset'] = "A B C D E F G";
|
|
12910
|
+
tpl2strandsig['CD3e_6jxrf_human_Iset'] = "A B C C' D E F G";
|
|
12911
|
+
tpl2strandsig['CD3g_6jxrg_human_Iset'] = "A B C C' E F G G+";
|
|
12912
|
+
tpl2strandsig['CD8a_1cd8A_human_V'] = "A A' B C C' C'' D E F G";
|
|
12913
|
+
tpl2strandsig['CoAtomerGamma1_1r4xA_human'] = "A- A B C D E F G";
|
|
12914
|
+
tpl2strandsig['Contactin1_2ee2A_human_FN3-n9'] = "A A' B C C' E F G";
|
|
12915
|
+
tpl2strandsig['Contactin1_3s97C_human_C2-n2'] = "A A' B C D E F G";
|
|
12916
|
+
tpl2strandsig['CuZnSuperoxideDismutase_1hl5C_human'] = "A- A B C C' E F G";
|
|
12917
|
+
tpl2strandsig['ECadherin_4zt1A_human_n2'] = "A' B C D E F G";
|
|
12918
|
+
tpl2strandsig['Endo-1,4-BetaXylanase10A_1i8aA_bacteria_n4'] = "A--- A-- A- A B C C' C'' D E F G";
|
|
12919
|
+
tpl2strandsig['FAB-HEAVY_5esv_C1-n2'] = "A B C D E F G";
|
|
12920
|
+
tpl2strandsig['FAB-HEAVY_5esv_V-n1'] = "A B C C' C'' D E F G";
|
|
12921
|
+
tpl2strandsig['FAB-LIGHT_5esv_C1-n2'] = "A B C C' E F G";
|
|
12922
|
+
tpl2strandsig['FAB-LIGHT_5esv_V-n1'] = "A A' B C C' C'' D E F G";
|
|
12923
|
+
tpl2strandsig['GHR_1axiB_human_FN3-n1'] = "A B C C' D E F G";
|
|
12924
|
+
tpl2strandsig['ICOS_6x4gA_human_V'] = "A B C C' C'' D E F G";
|
|
12925
|
+
tpl2strandsig['IL6Rb_1bquB_human_FN3-n2'] = "A B C C' E F G";
|
|
12926
|
+
tpl2strandsig['IL6Rb_1bquB_human_FN3-n3'] = "A B C C' E F G";
|
|
12927
|
+
tpl2strandsig['InsulinR_8guyE_human_FN3-n1'] = "A B C C' E F G";
|
|
12928
|
+
tpl2strandsig['InsulinR_8guyE_human_FN3-n2'] = "A B C C' E F G";
|
|
12929
|
+
tpl2strandsig['IsdA_2iteA_bacteria'] = "A- A B C C' D E F G";
|
|
12930
|
+
tpl2strandsig['JAM1_1nbqA_human_VorIset-n2'] = "A A' B C C' D E F G";
|
|
12931
|
+
tpl2strandsig['LAG3_7tzgD_human_C2-n2'] = "A A' B C C' D E F G";
|
|
12932
|
+
tpl2strandsig['LAG3_7tzgD_human_V-n1'] = "A' B C C' D E F G";
|
|
12933
|
+
tpl2strandsig['LaminAC_1ifrA_human'] = "A- A B C C' E E+ F G";
|
|
12934
|
+
tpl2strandsig['MHCIa_7phrH_human_C1'] = "A B C C' D E F G";
|
|
12935
|
+
tpl2strandsig['MPT63_1lmiA_bacteria'] = "A-- A- A BC C' E F G";
|
|
12936
|
+
tpl2strandsig['NaCaExchanger_2fwuA_dog_n2'] = "A A' B C C' E F G";
|
|
12937
|
+
tpl2strandsig['NaKATPaseTransporterBeta_2zxeB_spurdogshark']= "A A' B C D E F G";
|
|
12938
|
+
tpl2strandsig['ORF7a_1xakA_virus'] = "A' B C D E F G";
|
|
12939
|
+
tpl2strandsig['PD1_4zqkB_human_V'] = "A A' B C C' D E F G";
|
|
12940
|
+
tpl2strandsig['PDL1_4z18B_human_V-n1'] = "A A' B C C' C'' D E F G";
|
|
12941
|
+
tpl2strandsig['Palladin_2dm3A_human_Iset-n1'] = "A A' B C C' D E F G";
|
|
12942
|
+
tpl2strandsig['RBPJ_6py8C_human_Unk-n1'] = "A A' B C C' E F G";
|
|
12943
|
+
tpl2strandsig['RBPJ_6py8C_human_Unk-n2'] = "A B C D E F G";
|
|
12944
|
+
tpl2strandsig['Sidekick2_1wf5A_human_FN3-n7'] = "A B C C' E F G";
|
|
12945
|
+
tpl2strandsig['Siglec3_5j0bB_human_C2-n2'] = "A A' B C D E F G";
|
|
12946
|
+
tpl2strandsig['TCRa_6jxrm_human_C1-n2'] = "A B C D E F G";
|
|
12947
|
+
tpl2strandsig['TCRa_6jxrm_human_V-n1'] = "A A' B C C' C'' D E F G";
|
|
12948
|
+
tpl2strandsig['TEAD1_3kysC_human'] = "A A+ A' B C C' E F G G+";
|
|
12949
|
+
tpl2strandsig['TP34_2o6cA_bacteria'] = "A- A B C C' D E F G";
|
|
12950
|
+
tpl2strandsig['TP47_1o75A_bacteria'] = "A B C C' D E F G";
|
|
12951
|
+
tpl2strandsig['Titin_4uowM_human_Unk-n152'] = "A A' B C C' D E F G";
|
|
12952
|
+
tpl2strandsig['VISTA_6oilA_human_V'] = "A A' B C C' C'' D E F G G+";
|
|
12953
|
+
tpl2strandsig['VNAR_1t6vN_shark_V'] = "A A' B C C' D E F G";
|
|
12954
|
+
tpl2strandsig['VTCN1_Q7Z7D3_human_V-n2'] = "A B C C' D E F G G+";
|
|
12955
|
+
|
|
12899
12956
|
let html = '';
|
|
12900
12957
|
for(let group in group2tpl) {
|
|
12901
12958
|
html += "<optgroup label='" + group + "'>";
|
|
12902
12959
|
for(let i = 0, il = group2tpl[group].length; i < il; ++i) {
|
|
12903
12960
|
let template = group2tpl[group][i];
|
|
12904
|
-
html += me.htmlCls.optionStr + "'" + template + "'>" + template + "</option>";
|
|
12961
|
+
html += me.htmlCls.optionStr + "'" + template + "'>" + template + ", Strands: " + tpl2strandsig[template] + "</option>";
|
|
12905
12962
|
}
|
|
12906
12963
|
html += "</optgroup>";
|
|
12907
12964
|
}
|
|
@@ -13289,6 +13346,7 @@ class Events {
|
|
|
13289
13346
|
me.htmlCls.HEIGHT = $( window ).height();
|
|
13290
13347
|
ic.applyCenterCls.setWidthHeight(me.htmlCls.WIDTH, me.htmlCls.HEIGHT);
|
|
13291
13348
|
ic.drawCls.draw();
|
|
13349
|
+
|
|
13292
13350
|
ic.resizeCanvasCls.openFullscreen($("#" + me.pre + "canvas")[0]);
|
|
13293
13351
|
});
|
|
13294
13352
|
|
|
@@ -27679,7 +27737,8 @@ class Axes {
|
|
|
27679
27737
|
createArrow(dir, origin, axisLen, color, headLength, headWidth, bGlycan) { let ic = this.icn3d, me = ic.icn3dui;
|
|
27680
27738
|
if(me.bNode) return;
|
|
27681
27739
|
|
|
27682
|
-
let coneGeometry = new THREE.CylinderBufferGeometry( 0, 0.5, 1, 32, 1 );
|
|
27740
|
+
// let coneGeometry = new THREE.CylinderBufferGeometry( 0, 0.5, 1, 32, 1 );
|
|
27741
|
+
let coneGeometry = new THREE.CylinderGeometry( 0, 0.5, 1, 32, 1 );
|
|
27683
27742
|
//coneGeometry.translate( 0, - 0.5, 0 );
|
|
27684
27743
|
coneGeometry.translate( 0, 0.5, 0 );
|
|
27685
27744
|
let material;
|
|
@@ -38832,10 +38891,15 @@ class AnnoIg {
|
|
|
38832
38891
|
if(!info) continue;
|
|
38833
38892
|
|
|
38834
38893
|
let tmscore = info.score;
|
|
38835
|
-
let igType = ic.ref2igtype[info.refpdbname];
|
|
38836
|
-
let confidance = (parseFloat(tmscore) < 0.75 ) ? '?' : '';
|
|
38837
|
-
titleArray.push(igType + confidance + ' (TM:' + parseFloat(tmscore).toFixed(2) + ')');
|
|
38838
|
-
fullTitleArray.push(igType + confidance + ' (TM:' + parseFloat(tmscore).toFixed(2) + '), template: ' + info.refpdbname + ', Seq. identity: ' + parseFloat(info.seqid).toFixed(2) + ', aligned residues: ' + info.nresAlign);
|
|
38894
|
+
// let igType = ic.ref2igtype[info.refpdbname];
|
|
38895
|
+
// let confidance = (parseFloat(tmscore) < 0.75 ) ? '?' : '';
|
|
38896
|
+
// titleArray.push(igType + confidance + ' (TM:' + parseFloat(tmscore).toFixed(2) + ')');
|
|
38897
|
+
// fullTitleArray.push(igType + confidance + ' (TM:' + parseFloat(tmscore).toFixed(2) + '), template: ' + info.refpdbname + ', Seq. identity: ' + parseFloat(info.seqid).toFixed(2) + ', aligned residues: ' + info.nresAlign);
|
|
38898
|
+
|
|
38899
|
+
let igType = (parseFloat(tmscore) < 0.75 ) ? 'Ig' : ic.ref2igtype[info.refpdbname];
|
|
38900
|
+
titleArray.push(igType + ' (TM:' + parseFloat(tmscore).toFixed(2) + ')');
|
|
38901
|
+
fullTitleArray.push(igType + ' (TM:' + parseFloat(tmscore).toFixed(2) + '), template: ' + info.refpdbname + ', Seq. identity: ' + parseFloat(info.seqid).toFixed(2) + ', aligned residues: ' + info.nresAlign);
|
|
38902
|
+
|
|
38839
38903
|
domainArray.push(igType);
|
|
38840
38904
|
|
|
38841
38905
|
let segs = [];
|
|
@@ -39190,15 +39254,13 @@ class AnnoDomain {
|
|
|
39190
39254
|
let subdomainArray = domainArray[index].intervals;
|
|
39191
39255
|
// remove duplicate, e.g., at https://www.ncbi.nlm.nih.gov/Structure/mmdb/mmdb_strview.cgi?v=2&program=icn3d&domain&molinfor&uid=1itw
|
|
39192
39256
|
let domainFromHash = {}, domainToHash = {};
|
|
39193
|
-
let fromArray = [], toArray = [];
|
|
39257
|
+
let fromArray = [], toArray = [], posFromArray = [], posToArray = [];
|
|
39194
39258
|
let resiHash = {};
|
|
39195
39259
|
let resCnt = 0;
|
|
39196
39260
|
|
|
39197
39261
|
for(let i = 0, il = subdomainArray.length; i < il; ++i) {
|
|
39198
|
-
|
|
39199
|
-
|
|
39200
|
-
let domainFrom = Math.round(subdomainArray[i][0]); // convert 1-based to 0-based
|
|
39201
|
-
let domainTo = Math.round(subdomainArray[i][1]);
|
|
39262
|
+
let domainFrom = Math.round(subdomainArray[i][0]) - 1; // convert 1-based to 0-based
|
|
39263
|
+
let domainTo = Math.round(subdomainArray[i][1]) - 1;
|
|
39202
39264
|
|
|
39203
39265
|
if(domainFromHash.hasOwnProperty(domainFrom) || domainToHash.hasOwnProperty(domainTo)) {
|
|
39204
39266
|
continue; // do nothing for duplicated "from" or "to", e.g, PDBID 1ITW, 5FWI
|
|
@@ -39212,6 +39274,9 @@ class AnnoDomain {
|
|
|
39212
39274
|
// if(ic.bNCBI || bCalcDirect) {
|
|
39213
39275
|
fromArray.push(pos2resi[domainFrom]);
|
|
39214
39276
|
toArray.push(pos2resi[domainTo]);
|
|
39277
|
+
|
|
39278
|
+
posFromArray.push(domainFrom);
|
|
39279
|
+
posToArray.push(domainTo);
|
|
39215
39280
|
// }
|
|
39216
39281
|
// else {
|
|
39217
39282
|
// fromArray.push(domainFrom + ic.baseResi[chnid]);
|
|
@@ -39232,9 +39297,9 @@ class AnnoDomain {
|
|
|
39232
39297
|
|
|
39233
39298
|
if(!ic.resid2domain) ic.resid2domain = {};
|
|
39234
39299
|
if(!ic.resid2domain[chnid]) ic.resid2domain[chnid] = [];
|
|
39235
|
-
for(let i = 0, il =
|
|
39236
|
-
let from = parseInt(
|
|
39237
|
-
let to = parseInt(
|
|
39300
|
+
for(let i = 0, il = posFromArray.length; i < il; ++i) {
|
|
39301
|
+
let from = parseInt(posFromArray[i]);
|
|
39302
|
+
let to = parseInt(posToArray[i]);
|
|
39238
39303
|
for(let j = from; j <= to; ++j) {
|
|
39239
39304
|
// 0-based
|
|
39240
39305
|
let obj = {};
|
|
@@ -39246,7 +39311,7 @@ class AnnoDomain {
|
|
|
39246
39311
|
}
|
|
39247
39312
|
}
|
|
39248
39313
|
|
|
39249
|
-
let htmlTmp2 = '<div class="icn3d-seqTitle icn3d-link icn3d-blue" 3ddomain="' +(index+1).toString() + '" from="' +
|
|
39314
|
+
let htmlTmp2 = '<div class="icn3d-seqTitle icn3d-link icn3d-blue" 3ddomain="' +(index+1).toString() + '" from="' + posFromArray + '" to="' + posToArray + '" shorttitle="' + title + '" index="' + index + '" setname="' + chnid + '_3d_domain_' +(index+1).toString() + '" anno="sequence" chain="' + chnid + '" title="' + fulltitle + '">' + title + ' </div>';
|
|
39250
39315
|
let htmlTmp3 = '<span class="icn3d-residueNum" title="residue count">' + resCnt.toString() + ' Res</span>';
|
|
39251
39316
|
html3 += htmlTmp2 + htmlTmp3 + '<br>';
|
|
39252
39317
|
let htmlTmp = '<span class="icn3d-seqLine">';
|
|
@@ -39286,12 +39351,12 @@ class AnnoDomain {
|
|
|
39286
39351
|
if(ic.seqStartLen && ic.seqStartLen[chnid]) html2 += ic.showSeqCls.insertMulGapOverview(chnid, ic.seqStartLen[chnid]);
|
|
39287
39352
|
|
|
39288
39353
|
if(me.cfg.blast_rep_id != chnid) { // regular
|
|
39289
|
-
for(let i = 0, il =
|
|
39354
|
+
for(let i = 0, il = posFromArray.length; i < il; ++i) {
|
|
39290
39355
|
// let emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(fromArray[i] - ic.baseResi[chnid] - 1) / ic.maxAnnoLength) : Math.round(ic.seqAnnWidth *(fromArray[i] - toArray[i-1] - 1) / ic.maxAnnoLength);
|
|
39291
|
-
let emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(
|
|
39356
|
+
let emptyWidth =(i == 0) ? Math.round(ic.seqAnnWidth *(posFromArray[i]) / ic.maxAnnoLength) : Math.round(ic.seqAnnWidth *(posFromArray[i] - posToArray[i-1] - 1) / ic.maxAnnoLength);
|
|
39292
39357
|
|
|
39293
39358
|
html2 += '<div style="display:inline-block; width:' + emptyWidth + 'px;"> </div>';
|
|
39294
|
-
html2 += '<div style="display:inline-block; color:white!important; font-weight:bold; background-color:#' + color + '; width:' + Math.round(ic.seqAnnWidth *(
|
|
39359
|
+
html2 += '<div style="display:inline-block; color:white!important; font-weight:bold; background-color:#' + color + '; width:' + Math.round(ic.seqAnnWidth *(posToArray[i] - posFromArray[i] + 1) / ic.maxAnnoLength) + 'px;" class="icn3d-seqTitle icn3d-link icn3d-blue" 3ddomain="' +(index+1).toString() + '" from="' + posFromArray + '" to="' + posToArray + '" shorttitle="' + title + '" index="' + index + '" setname="' + chnid + '_3d_domain_' +(index+1).toString() + '" id="' + chnid + '_3d_domain_' + index + '" anno="sequence" chain="' + chnid + '" title="' + fulltitle + '">3D domain ' +(index+1).toString() + '</div>';
|
|
39295
39360
|
}
|
|
39296
39361
|
}
|
|
39297
39362
|
else { // with potential gaps
|
|
@@ -40825,7 +40890,7 @@ class Domain3d {
|
|
|
40825
40890
|
if(!ic.posid2resid) ic.posid2resid = {};
|
|
40826
40891
|
|
|
40827
40892
|
let substructItem = {};
|
|
40828
|
-
let pos2resi = {};
|
|
40893
|
+
let pos2resi = {}; // 0-based
|
|
40829
40894
|
for(let i = 0; i < residueArray.length; ++i) {
|
|
40830
40895
|
let resid = residueArray[i];
|
|
40831
40896
|
|
|
@@ -40857,7 +40922,8 @@ class Domain3d {
|
|
|
40857
40922
|
|
|
40858
40923
|
//resiArray.push(resi);
|
|
40859
40924
|
resiArray.push(i+1);
|
|
40860
|
-
pos2resi[i+1] = resi;
|
|
40925
|
+
// pos2resi[i+1] = resi;
|
|
40926
|
+
pos2resi[i] = resi;
|
|
40861
40927
|
|
|
40862
40928
|
ic.posid2resid[atom.structure + '_' + atom.chain + '_' + (i+1).toString()] = resid;
|
|
40863
40929
|
// let residNCBI = ic.resid2ncbi[resid];
|
|
@@ -41379,8 +41445,8 @@ class Domain3d {
|
|
|
41379
41445
|
//ss: sstype ss_start ss_end x1 y1 z1 x2 y2 z2
|
|
41380
41446
|
//sstype: 1 (helix), 2 (sheet)
|
|
41381
41447
|
let sstype = (substruct[k].Sheet) ? 2 : 1;
|
|
41382
|
-
let from = pos2resi[substruct[k].From];
|
|
41383
|
-
let to = pos2resi[substruct[k].To];
|
|
41448
|
+
let from = pos2resi[substruct[k].From - 1]; // 1-based to 0-based
|
|
41449
|
+
let to = pos2resi[substruct[k].To - 1];
|
|
41384
41450
|
|
|
41385
41451
|
// 1-based residue numbers
|
|
41386
41452
|
let fromPos = substruct[k].From;
|
|
@@ -63329,6 +63395,27 @@ class LoadScript {
|
|
|
63329
63395
|
return nameArray;
|
|
63330
63396
|
}
|
|
63331
63397
|
|
|
63398
|
+
updateTransformation(steps) { let ic = this.icn3d; ic.icn3dui;
|
|
63399
|
+
let commandTransformation = (ic.commands[steps-1]) ? ic.commands[steps-1].split('|||') : [];
|
|
63400
|
+
|
|
63401
|
+
if(commandTransformation.length == 2) {
|
|
63402
|
+
let transformation = JSON.parse(commandTransformation[1]);
|
|
63403
|
+
|
|
63404
|
+
ic._zoomFactor = transformation.factor;
|
|
63405
|
+
|
|
63406
|
+
ic.mouseChange.x = transformation.mouseChange.x;
|
|
63407
|
+
ic.mouseChange.y = transformation.mouseChange.y;
|
|
63408
|
+
|
|
63409
|
+
ic.quaternion._x = transformation.quaternion._x;
|
|
63410
|
+
ic.quaternion._y = transformation.quaternion._y;
|
|
63411
|
+
ic.quaternion._z = transformation.quaternion._z;
|
|
63412
|
+
ic.quaternion._w = transformation.quaternion._w;
|
|
63413
|
+
}
|
|
63414
|
+
|
|
63415
|
+
// ic.bRender = true;
|
|
63416
|
+
ic.drawCls.draw();
|
|
63417
|
+
}
|
|
63418
|
+
|
|
63332
63419
|
async execCommandsBase(start, end, steps, bFinalStep) { let ic = this.icn3d, me = ic.icn3dui;
|
|
63333
63420
|
let thisClass = this;
|
|
63334
63421
|
let i;
|
|
@@ -63508,7 +63595,10 @@ class LoadScript {
|
|
|
63508
63595
|
await thisClass.applyCommandGraphinteraction(command);
|
|
63509
63596
|
}
|
|
63510
63597
|
else if(command.indexOf('cartoon 2d domain') == 0) {
|
|
63598
|
+
ic.bRender = true;
|
|
63599
|
+
thisClass.updateTransformation(steps);
|
|
63511
63600
|
await thisClass.applyCommandCartoon2d(command);
|
|
63601
|
+
ic.bRender = false;
|
|
63512
63602
|
}
|
|
63513
63603
|
else if(command.indexOf('set half pae map') == 0) {
|
|
63514
63604
|
await thisClass.applyCommandAfmap(command);
|
|
@@ -63523,7 +63613,10 @@ class LoadScript {
|
|
|
63523
63613
|
let pos = command.lastIndexOf(' ');
|
|
63524
63614
|
let type = command.substr(pos + 1);
|
|
63525
63615
|
|
|
63616
|
+
ic.bRender = true;
|
|
63617
|
+
thisClass.updateTransformation(steps);
|
|
63526
63618
|
await ic.cartoon2dCls.draw2Dcartoon(type);
|
|
63619
|
+
ic.bRender = false;
|
|
63527
63620
|
}
|
|
63528
63621
|
else if(command.indexOf('add msa track') == 0) {
|
|
63529
63622
|
//add msa track | chainid " + chainid + " | startpos " + startpos + " | type " + type + " | fastaList " + fastaList
|
|
@@ -63561,7 +63654,7 @@ class LoadScript {
|
|
|
63561
63654
|
await ic.applyCommandCls.applyCommand(ic.commands[i]);
|
|
63562
63655
|
}
|
|
63563
63656
|
}
|
|
63564
|
-
|
|
63657
|
+
|
|
63565
63658
|
//if(i === steps - 1) {
|
|
63566
63659
|
if(i === steps || bFinalStep) {
|
|
63567
63660
|
this.renderFinalStep(i);
|
|
@@ -67060,7 +67153,7 @@ class Dssp {
|
|
|
67060
67153
|
let endResi = parseInt(segArray[m+1]);
|
|
67061
67154
|
|
|
67062
67155
|
for(let n = startResi; n <= endResi; ++n) {
|
|
67063
|
-
let resid = chainid + '_' + pos2resi[n];
|
|
67156
|
+
let resid = chainid + '_' + pos2resi[n - 1];
|
|
67064
67157
|
++resCnt;
|
|
67065
67158
|
domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
67066
67159
|
|
|
@@ -67082,7 +67175,7 @@ class Dssp {
|
|
|
67082
67175
|
let startResi = segArray[m];
|
|
67083
67176
|
let endResi = segArray[m+1];
|
|
67084
67177
|
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
67085
|
-
let resid = chainid + '_' + pos2resi[n];
|
|
67178
|
+
let resid = chainid + '_' + pos2resi[n - 1];
|
|
67086
67179
|
//domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
67087
67180
|
ic.resid2domainid[resid] = chainid + ',' + k + '_' + resiSum;
|
|
67088
67181
|
}
|
|
@@ -68191,19 +68284,25 @@ class Dssp {
|
|
|
68191
68284
|
}
|
|
68192
68285
|
|
|
68193
68286
|
// 2b. remove strands with less than 3 residues except G strand
|
|
68287
|
+
let removeDomainidHash = {};
|
|
68194
68288
|
for(let il = strandArray.length, i = il - 1; i >= 0; --i) {
|
|
68195
|
-
let strandTmp = strandArray[i].strand.substr(0, 1);
|
|
68289
|
+
// let strandTmp = strandArray[i].strand.substr(0, 1);
|
|
68290
|
+
let strandTmp = strandArray[i].strand;
|
|
68196
68291
|
if(strandTmp != 'G' && strandArray[i].endRefnum - strandArray[i].startRefnum + 1 < 3) { // remove the strand
|
|
68197
|
-
if(strandTmp == 'B' || strandTmp == 'C' || strandTmp == 'E' || strandTmp == 'F') {
|
|
68198
|
-
if(!me.bNode) console.log("Some of the Ig strands B, C, E, F are removed since they are too short...");
|
|
68199
|
-
return false;
|
|
68200
|
-
}
|
|
68201
|
-
|
|
68202
68292
|
if(i != il - 1) { // modify
|
|
68203
68293
|
strandArray[i + 1].loopResCnt += strandArray[i].loopResCnt + parseInt(strandArray[i].endResi) - parseInt(strandArray[i].startResi) + 1;
|
|
68204
68294
|
}
|
|
68205
68295
|
|
|
68206
68296
|
strandArray.splice(i, 1);
|
|
68297
|
+
|
|
68298
|
+
if(strandTmp == 'B' || strandTmp == 'C' || strandTmp == 'E' || strandTmp == 'F') {
|
|
68299
|
+
if(!me.bNode) console.log("Ig strand " + strandTmp + " is removed since it is too short...");
|
|
68300
|
+
|
|
68301
|
+
let resid = chnid + '_' + strandArray[i].startResi;
|
|
68302
|
+
let domainid = ic.resid2domainid[resid];
|
|
68303
|
+
removeDomainidHash[domainid] = 1;
|
|
68304
|
+
continue;
|
|
68305
|
+
}
|
|
68207
68306
|
}
|
|
68208
68307
|
}
|
|
68209
68308
|
|
|
@@ -68393,6 +68492,14 @@ class Dssp {
|
|
|
68393
68492
|
prevStrand = currStrand;
|
|
68394
68493
|
prevStrandCnt = strandCnt - 1;
|
|
68395
68494
|
|
|
68495
|
+
// remove domians without B,C,E,F strands
|
|
68496
|
+
if(removeDomainidHash.hasOwnProperty(domainid)) {
|
|
68497
|
+
delete ic.resid2refnum[residueid];
|
|
68498
|
+
delete ic.resid2domainid[residueid];
|
|
68499
|
+
|
|
68500
|
+
continue;
|
|
68501
|
+
}
|
|
68502
|
+
|
|
68396
68503
|
// assign the adjusted reference numbers
|
|
68397
68504
|
ic.resid2refnum[residueid] = refnumLabel;
|
|
68398
68505
|
ic.resid2domainid[residueid] = domainid;
|
|
@@ -71174,7 +71281,7 @@ class Cartoon2d {
|
|
|
71174
71281
|
idStr = idStr.substr(0, idStr.indexOf('-'));
|
|
71175
71282
|
}
|
|
71176
71283
|
else {
|
|
71177
|
-
idStr = idStr.substr(idStr.lastIndexOf('_') + 1);
|
|
71284
|
+
idStr = idStr; //idStr.substr(idStr.lastIndexOf('_') + 1);
|
|
71178
71285
|
}
|
|
71179
71286
|
|
|
71180
71287
|
return idStr;
|
|
@@ -71871,14 +71978,14 @@ class ResizeCanvas {
|
|
|
71871
71978
|
!document.webkitFullscreenElement && !document.msFullscreenElement) {
|
|
71872
71979
|
if(elem.requestFullscreen) {
|
|
71873
71980
|
elem.requestFullscreen();
|
|
71874
|
-
} else if(elem.mozRequestFullScreen) {
|
|
71981
|
+
} else if(elem.mozRequestFullScreen) { // Firefox
|
|
71875
71982
|
elem.mozRequestFullScreen();
|
|
71876
|
-
} else if(elem.webkitRequestFullscreen) {
|
|
71983
|
+
} else if(elem.webkitRequestFullscreen) { // Chrome, Safari and Opera
|
|
71877
71984
|
elem.webkitRequestFullscreen();
|
|
71878
|
-
} else if(elem.msRequestFullscreen) {
|
|
71985
|
+
} else if(elem.msRequestFullscreen) { // IE/Edge
|
|
71879
71986
|
elem.msRequestFullscreen();
|
|
71880
71987
|
}
|
|
71881
|
-
}
|
|
71988
|
+
}
|
|
71882
71989
|
}
|
|
71883
71990
|
|
|
71884
71991
|
//Rotate the structure in one of the directions: "left", "right", "up", and "down".
|
|
@@ -76569,7 +76676,7 @@ class iCn3DUI {
|
|
|
76569
76676
|
//even when multiple iCn3D viewers are shown together.
|
|
76570
76677
|
this.pre = this.cfg.divid + "_";
|
|
76571
76678
|
|
|
76572
|
-
this.REVISION = '3.30.
|
|
76679
|
+
this.REVISION = '3.30.1';
|
|
76573
76680
|
|
|
76574
76681
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
76575
76682
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|