icn3d 3.29.3 → 3.29.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 +275 -167
- package/icn3d.min.js +3 -3
- package/icn3d.module.js +275 -167
- package/package.json +1 -1
package/icn3d.js
CHANGED
|
@@ -7972,7 +7972,7 @@ class ClickMenu {
|
|
|
7972
7972
|
}
|
|
7973
7973
|
}
|
|
7974
7974
|
}
|
|
7975
|
-
if(ic.bAddLogs && me.cfg.showcommand) {
|
|
7975
|
+
if((ic.bAddLogs || bAddLogs) && me.cfg.showcommand) {
|
|
7976
7976
|
let finalStr = (bSetCommand) ? str : '[comment] ' + str;
|
|
7977
7977
|
ic.logs.push(finalStr);
|
|
7978
7978
|
// move cursor to the end, and scroll to the end
|
|
@@ -14568,6 +14568,14 @@ class Events {
|
|
|
14568
14568
|
thisClass.setLogCmd('define coil sets | chain ' + chainid, true);
|
|
14569
14569
|
});
|
|
14570
14570
|
|
|
14571
|
+
$(document).on("click", ".icn3d-iganchorsets", function(e) { let ic = me.icn3d;
|
|
14572
|
+
e.stopImmediatePropagation();
|
|
14573
|
+
//e.preventDefault();
|
|
14574
|
+
let chainid = $(this).attr('chainid');
|
|
14575
|
+
ic.addTrackCls.defineIgstrand(chainid, 'iganchor');
|
|
14576
|
+
thisClass.setLogCmd('define iganchor sets | chain ' + chainid, true);
|
|
14577
|
+
});
|
|
14578
|
+
|
|
14571
14579
|
$(document).on("click", ".icn3d-igstrandsets", function(e) { let ic = me.icn3d;
|
|
14572
14580
|
e.stopImmediatePropagation();
|
|
14573
14581
|
//e.preventDefault();
|
|
@@ -16005,6 +16013,9 @@ class Html {
|
|
|
16005
16013
|
//this.baseUrl = "https://structure.ncbi.nlm.nih.gov/";
|
|
16006
16014
|
this.baseUrl = (window && window.location && window.location.hostname == 'structure.ncbi.nlm.nih.gov')
|
|
16007
16015
|
? "https://structure.ncbi.nlm.nih.gov/Structure/" : "https://www.ncbi.nlm.nih.gov/Structure/";
|
|
16016
|
+
|
|
16017
|
+
this.tmalignUrl = this.baseUrl + "tmalign/tmalign.cgi";
|
|
16018
|
+
|
|
16008
16019
|
this.divStr = "<div id='" + this.icn3dui.pre;
|
|
16009
16020
|
this.divNowrapStr = "<div style='white-space:nowrap'>";
|
|
16010
16021
|
this.spanNowrapStr = "<span style='white-space:nowrap'>";
|
|
@@ -40620,64 +40631,78 @@ class AddTrack {
|
|
|
40620
40631
|
|
|
40621
40632
|
if(!ic.residues.hasOwnProperty(resid) ) continue;
|
|
40622
40633
|
|
|
40623
|
-
let refnumLabel, refnumStr;
|
|
40634
|
+
let refnumLabel, refnumStr, refnum;
|
|
40624
40635
|
refnumLabel = ic.resid2refnum[resid];
|
|
40625
40636
|
if(!refnumLabel) continue;
|
|
40626
40637
|
|
|
40627
40638
|
refnumStr = ic.refnumCls.rmStrandFromRefnumlabel(refnumLabel);
|
|
40628
40639
|
currStrand = refnumLabel.replace(refnumStr, '');
|
|
40640
|
+
refnum = parseInt(refnumStr);
|
|
40629
40641
|
|
|
40630
|
-
if(
|
|
40631
|
-
|
|
40632
|
-
|
|
40642
|
+
if(type == 'iganchor') {
|
|
40643
|
+
if(refnum > 1000 && refnumStr.substr(refnumStr.length - 2, 2) == '50') {
|
|
40644
|
+
selectedResidues[resid] = 1;
|
|
40645
|
+
}
|
|
40646
|
+
}
|
|
40633
40647
|
else {
|
|
40634
|
-
|
|
40635
|
-
|
|
40648
|
+
if(ic.residIgLoop.hasOwnProperty(resid)) {
|
|
40649
|
+
currType = 'igloop';
|
|
40650
|
+
}
|
|
40651
|
+
else {
|
|
40652
|
+
currType = 'igstrand';
|
|
40653
|
+
}
|
|
40636
40654
|
|
|
40637
|
-
|
|
40638
|
-
|
|
40639
|
-
|
|
40640
|
-
|
|
40641
|
-
|
|
40642
|
-
|
|
40643
|
-
|
|
40644
|
-
|
|
40655
|
+
if(bStart && currType != prevType && Object.keys(selectedResidues).length > 0) {
|
|
40656
|
+
if(prevType == 'igstrand') {
|
|
40657
|
+
++strandCnt;
|
|
40658
|
+
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
40659
|
+
setName = setName.replace(/'/g, '`');
|
|
40660
|
+
if(type == 'igstrand') {
|
|
40661
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
40662
|
+
if(!bUnion) bUnion = true;
|
|
40663
|
+
}
|
|
40664
|
+
prevStrandReal = prevStrand;
|
|
40645
40665
|
}
|
|
40646
|
-
|
|
40647
|
-
|
|
40648
|
-
|
|
40649
|
-
|
|
40650
|
-
|
|
40651
|
-
|
|
40652
|
-
|
|
40653
|
-
|
|
40654
|
-
if(!bUnion) bUnion = true;
|
|
40666
|
+
else if(prevType == 'igloop') {
|
|
40667
|
+
++loopCnt;
|
|
40668
|
+
setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
|
|
40669
|
+
setName = setName.replace(/'/g, '`');
|
|
40670
|
+
if(type == 'igloop') {
|
|
40671
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
40672
|
+
if(!bUnion) bUnion = true;
|
|
40673
|
+
}
|
|
40655
40674
|
}
|
|
40656
|
-
}
|
|
40657
40675
|
|
|
40658
|
-
|
|
40659
|
-
|
|
40676
|
+
selectedResidues = {};
|
|
40677
|
+
}
|
|
40660
40678
|
|
|
40661
|
-
|
|
40679
|
+
selectedResidues[resid] = 1;
|
|
40662
40680
|
|
|
40663
|
-
|
|
40664
|
-
|
|
40681
|
+
prevStrand = currStrand;
|
|
40682
|
+
prevType = currType;
|
|
40665
40683
|
|
|
40666
|
-
|
|
40684
|
+
bStart = true;
|
|
40685
|
+
}
|
|
40667
40686
|
} // for loop
|
|
40668
40687
|
|
|
40669
|
-
if(
|
|
40670
|
-
|
|
40671
|
-
|
|
40672
|
-
setName = setName.replace(/'/g, '`');
|
|
40673
|
-
if(type == 'igstrand') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
40688
|
+
if(type == 'iganchor') {
|
|
40689
|
+
setName = 'Anchor-' + chainid;
|
|
40690
|
+
ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
40674
40691
|
}
|
|
40675
|
-
else
|
|
40676
|
-
|
|
40677
|
-
|
|
40678
|
-
|
|
40679
|
-
|
|
40680
|
-
|
|
40692
|
+
else {
|
|
40693
|
+
if(prevType == 'igstrand') {
|
|
40694
|
+
++strandCnt;
|
|
40695
|
+
setName = 'Strand-' + prevStrand + '-' + chainid + '-' + strandCnt.toString().padStart(3, '0');
|
|
40696
|
+
setName = setName.replace(/'/g, '`');
|
|
40697
|
+
if(type == 'igstrand') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
40698
|
+
}
|
|
40699
|
+
else if(prevType == 'igloop') {
|
|
40700
|
+
++loopCnt;
|
|
40701
|
+
currStrand = 'CT';
|
|
40702
|
+
setName = 'Loop-' + prevStrandReal + '_' + currStrand + '-' + chainid + '-' + loopCnt.toString().padStart(3, '0');
|
|
40703
|
+
setName = setName.replace(/'/g, '`');
|
|
40704
|
+
if(type == 'igloop') ic.selectionCls.selectResidueList(selectedResidues, setName, setName, bUnion, bUpdateHighlight);
|
|
40705
|
+
}
|
|
40681
40706
|
}
|
|
40682
40707
|
}
|
|
40683
40708
|
|
|
@@ -42463,7 +42488,7 @@ class ShowAnno {
|
|
|
42463
42488
|
+ this.addButton(chnid, "icn3d-coilsets", "Coil Sets", "Define sets for each coil in this chain and add them to the menu of \"Defined Sets\"", 60, buttonStyle);
|
|
42464
42489
|
|
|
42465
42490
|
if(ic.bShowRefnum && ic.chainid2refpdbname.hasOwnProperty(chnid) && ic.chainid2refpdbname[chnid].length > 0) {
|
|
42466
|
-
chainHtml += " " + this.addButton(chnid, "icn3d-igstrandsets", "Ig Strand Sets", "Define sets for each Ig strand in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + " "
|
|
42491
|
+
chainHtml += " " + this.addButton(chnid, "icn3d-iganchorsets", "Ig Anchor Set", "Define the set for all Ig anchors in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + " " + this.addButton(chnid, "icn3d-igstrandsets", "Ig Strand Sets", "Define sets for each Ig strand in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle) + " "
|
|
42467
42492
|
+ this.addButton(chnid, "icn3d-igloopsets", "Ig Loop Sets", "Define sets for each Ig loop in this chain and add them to the menu of \"Defined Sets\"", 80, buttonStyle);
|
|
42468
42493
|
}
|
|
42469
42494
|
$("#" + ic.pre + "dl_annotations").append(chainHtml);
|
|
@@ -44168,6 +44193,9 @@ class HlSeq {
|
|
|
44168
44193
|
}
|
|
44169
44194
|
});
|
|
44170
44195
|
|
|
44196
|
+
ic.selectionCls.saveSelectionPrep(true);
|
|
44197
|
+
ic.selectionCls.saveSelection(undefined, undefined, true);
|
|
44198
|
+
|
|
44171
44199
|
//ic.residueLabelsCls.addResidueLabels(ic.hAtoms, false, 0.5);
|
|
44172
44200
|
ic.hlObjectsCls.addHlObjects(); // render() is called
|
|
44173
44201
|
|
|
@@ -44251,7 +44279,10 @@ class HlSeq {
|
|
|
44251
44279
|
|
|
44252
44280
|
if(id !== undefined) {
|
|
44253
44281
|
thisClass.selectResidues(id, this);
|
|
44254
|
-
|
|
44282
|
+
|
|
44283
|
+
ic.selectionCls.saveSelectionPrep(true);
|
|
44284
|
+
ic.selectionCls.saveSelection(undefined, undefined, true);
|
|
44285
|
+
}
|
|
44255
44286
|
//});
|
|
44256
44287
|
|
|
44257
44288
|
//ic.residueLabelsCls.addResidueLabels(ic.hAtoms, false, 0.5);
|
|
@@ -45738,9 +45769,7 @@ class LineGraph {
|
|
|
45738
45769
|
ic.hlUpdateCls.updateHlAll();
|
|
45739
45770
|
}
|
|
45740
45771
|
|
|
45741
|
-
|
|
45742
|
-
let thisClass = this;
|
|
45743
|
-
|
|
45772
|
+
setRefPdbs() { let ic = this.icn3d; ic.icn3dui;
|
|
45744
45773
|
// round 1, 16 templates
|
|
45745
45774
|
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', '1NaKATPaseTransporterBeta_2zxeB_spurdogshark', '1FAB-HEAVY_5esv_V-n1', '1PDL1_4z18B_human_V-n1', '1BTLA_2aw2A_human_Iset', '1LaminAC_1ifrA_human', '1CD3g_6jxrg_human_Iset', '1CD28_1yjdC_human_V', '1CD19_6al5A_human_C2orV-n1'];
|
|
45746
45775
|
|
|
@@ -45813,7 +45842,9 @@ class LineGraph {
|
|
|
45813
45842
|
ic.refpdbHash['6JXR_d'] = ['CD3d_6jxrd_human_Iset'];
|
|
45814
45843
|
ic.refpdbHash['6JXR_f'] = ['CD3e_6jxrf_human_Iset'];
|
|
45815
45844
|
ic.refpdbHash['6JXR_g'] = ['CD3g_6jxrg_human_Iset'];
|
|
45845
|
+
}
|
|
45816
45846
|
|
|
45847
|
+
getPdbAjaxArray() { let ic = this.icn3d, me = ic.icn3dui;
|
|
45817
45848
|
let pdbAjaxArray = [];
|
|
45818
45849
|
for(let k = 0, kl = ic.refpdbArray.length; k < kl; ++k) {
|
|
45819
45850
|
let urlpdb = me.htmlCls.baseUrl + "mmcifparser/mmcifparser.cgi?refpdbid=" + ic.refpdbArray[k];
|
|
@@ -45824,6 +45855,16 @@ class LineGraph {
|
|
|
45824
45855
|
pdbAjaxArray.push(pdbAjax);
|
|
45825
45856
|
}
|
|
45826
45857
|
|
|
45858
|
+
return pdbAjaxArray;
|
|
45859
|
+
}
|
|
45860
|
+
|
|
45861
|
+
async showIgRefNum(template) { let ic = this.icn3d; ic.icn3dui;
|
|
45862
|
+
let thisClass = this;
|
|
45863
|
+
|
|
45864
|
+
this.setRefPdbs();
|
|
45865
|
+
|
|
45866
|
+
let pdbAjaxArray = this.getPdbAjaxArray();
|
|
45867
|
+
|
|
45827
45868
|
// try {
|
|
45828
45869
|
if(!template) {
|
|
45829
45870
|
//let allPromise = Promise.allSettled(pdbAjaxArray);
|
|
@@ -45851,15 +45892,13 @@ class LineGraph {
|
|
|
45851
45892
|
let ajaxArray = [];
|
|
45852
45893
|
let domainidpairArray = [];
|
|
45853
45894
|
|
|
45854
|
-
let urltmalign = me.htmlCls.
|
|
45855
|
-
me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi";
|
|
45895
|
+
let urltmalign = me.htmlCls.tmalignUrl;
|
|
45896
|
+
// let urlalign = me.htmlCls.baseUrl + "vastdyn/vastdyn.cgi";
|
|
45856
45897
|
|
|
45857
45898
|
if(!ic.resid2domainid) ic.resid2domainid = {};
|
|
45858
45899
|
//ic.resid2domainid = {};
|
|
45859
45900
|
ic.domainid2pdb = {};
|
|
45860
45901
|
|
|
45861
|
-
let minResidues = 20;
|
|
45862
|
-
|
|
45863
45902
|
for(let i = 0, il = struArray.length; i < il; ++i) {
|
|
45864
45903
|
let struct = struArray[i];
|
|
45865
45904
|
let chainidArray = ic.structures[struct];
|
|
@@ -45867,79 +45906,8 @@ class LineGraph {
|
|
|
45867
45906
|
for(let j = 0, jl = chainidArray.length; j < jl; ++j) {
|
|
45868
45907
|
let chainid = chainidArray[j];
|
|
45869
45908
|
|
|
45870
|
-
|
|
45871
|
-
|
|
45872
|
-
if(ic.chainsSeq[chainid].length < minResidues) continue; // peptide
|
|
45873
|
-
|
|
45874
|
-
let currAtoms = me.hashUtilsCls.intHash(ic.chains[chainid], ic.hAtoms);
|
|
45875
|
-
if(Object.keys(currAtoms).length == 0) continue;
|
|
45876
|
-
|
|
45877
|
-
// align each 3D domain with reference structure
|
|
45878
|
-
//let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
|
|
45879
|
-
// assign ref numbers to selected residues
|
|
45880
|
-
let result = ic.domain3dCls.c2b_NewSplitChain(currAtoms);
|
|
45881
|
-
let subdomains = result.subdomains;
|
|
45882
|
-
let pos2resi = result.pos2resi;
|
|
45883
|
-
|
|
45884
|
-
let domainAtomsArray = [];
|
|
45885
|
-
if(subdomains.length <= 1) {
|
|
45886
|
-
//domainAtomsArray.push(ic.chains[chainid]);
|
|
45887
|
-
domainAtomsArray.push(currAtoms);
|
|
45888
|
-
|
|
45889
|
-
let residueArray = ic.resid2specCls.atoms2residues(Object.keys(currAtoms));
|
|
45890
|
-
|
|
45891
|
-
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(currAtoms);
|
|
45892
|
-
let atomLast = ic.firstAtomObjCls.getLastAtomObj(currAtoms);
|
|
45893
|
-
let resiSum = atomFirst.resi + ':' + atomLast.resi;
|
|
45894
|
-
|
|
45895
|
-
for(let n = 0, nl = residueArray.length; n < nl; ++n) {
|
|
45896
|
-
let resid = residueArray[n];
|
|
45897
|
-
ic.resid2domainid[resid] = chainid + '-0' + '_' + resiSum;
|
|
45898
|
-
|
|
45899
|
-
// clear previous refnum assignment if any
|
|
45900
|
-
if(ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
45901
|
-
delete ic.resid2refnum[resid];
|
|
45902
|
-
}
|
|
45903
|
-
}
|
|
45904
|
-
}
|
|
45905
|
-
else {
|
|
45906
|
-
for(let k = 0, kl = subdomains.length; k < kl; ++k) {
|
|
45907
|
-
let domainAtoms = {};
|
|
45908
|
-
let segArray = subdomains[k];
|
|
45909
|
-
|
|
45910
|
-
for(let m = 0, ml = segArray.length; m < ml; m += 2) {
|
|
45911
|
-
let startResi = segArray[m];
|
|
45912
|
-
let endResi = segArray[m+1];
|
|
45913
|
-
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
45914
|
-
let resid = chainid + '_' + pos2resi[n];
|
|
45915
|
-
domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
45916
|
-
//ic.resid2domainid[resid] = chainid + '-' + k;
|
|
45917
|
-
|
|
45918
|
-
// clear previous refnum assignment if any
|
|
45919
|
-
if(ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
45920
|
-
delete ic.resid2refnum[resid];
|
|
45921
|
-
}
|
|
45922
|
-
}
|
|
45923
|
-
}
|
|
45924
|
-
|
|
45925
|
-
domainAtomsArray.push(domainAtoms);
|
|
45926
|
-
|
|
45927
|
-
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(domainAtoms);
|
|
45928
|
-
let atomLast = ic.firstAtomObjCls.getLastAtomObj(domainAtoms);
|
|
45929
|
-
let resiSum = atomFirst.resi + ':' + atomLast.resi;
|
|
45930
|
-
|
|
45931
|
-
for(let m = 0, ml = segArray.length; m < ml; m += 2) {
|
|
45932
|
-
let startResi = segArray[m];
|
|
45933
|
-
let endResi = segArray[m+1];
|
|
45934
|
-
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
45935
|
-
let resid = chainid + '_' + pos2resi[n];
|
|
45936
|
-
//domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
45937
|
-
ic.resid2domainid[resid] = chainid + '-' + k + '_' + resiSum;
|
|
45938
|
-
}
|
|
45939
|
-
}
|
|
45940
|
-
}
|
|
45941
|
-
}
|
|
45942
|
-
|
|
45909
|
+
let domainAtomsArray = this.getDomainAtomsArray(chainid);
|
|
45910
|
+
|
|
45943
45911
|
if(!ic.domainid2refpdbname) ic.domainid2refpdbname = {};
|
|
45944
45912
|
if(!ic.domainid2score) ic.domainid2score = {};
|
|
45945
45913
|
|
|
@@ -46003,7 +45971,7 @@ class LineGraph {
|
|
|
46003
45971
|
// start round2
|
|
46004
45972
|
let ajaxArray = [];
|
|
46005
45973
|
let domainidpairArray3 = [];
|
|
46006
|
-
let urltmalign = me.htmlCls.
|
|
45974
|
+
let urltmalign = me.htmlCls.tmalignUrl;
|
|
46007
45975
|
|
|
46008
45976
|
let urlpdb = me.htmlCls.baseUrl + "mmcifparser/mmcifparser.cgi?refpdbid=" + template;
|
|
46009
45977
|
let pdbAjax = me.getAjaxPromise(urlpdb, 'text');
|
|
@@ -46060,6 +46028,86 @@ class LineGraph {
|
|
|
46060
46028
|
*/
|
|
46061
46029
|
}
|
|
46062
46030
|
|
|
46031
|
+
getDomainAtomsArray(chainid) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46032
|
+
let domainAtomsArray = [];
|
|
46033
|
+
|
|
46034
|
+
let minResidues = 20;
|
|
46035
|
+
|
|
46036
|
+
if(!ic.proteins.hasOwnProperty(ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chainid]).serial)
|
|
46037
|
+
&& !ic.proteins.hasOwnProperty(ic.firstAtomObjCls.getMiddleAtomObj(ic.chains[chainid]).serial)) return domainAtomsArray;
|
|
46038
|
+
if(ic.chainsSeq[chainid].length < minResidues) return domainAtomsArray; // peptide
|
|
46039
|
+
|
|
46040
|
+
let currAtoms = me.hashUtilsCls.intHash(ic.chains[chainid], ic.hAtoms);
|
|
46041
|
+
if(Object.keys(currAtoms).length == 0) return domainAtomsArray;
|
|
46042
|
+
|
|
46043
|
+
// align each 3D domain with reference structure
|
|
46044
|
+
//let result = ic.domain3dCls.c2b_NewSplitChain(ic.chains[chainid]);
|
|
46045
|
+
// assign ref numbers to selected residues
|
|
46046
|
+
let result = ic.domain3dCls.c2b_NewSplitChain(currAtoms);
|
|
46047
|
+
let subdomains = result.subdomains;
|
|
46048
|
+
let pos2resi = result.pos2resi;
|
|
46049
|
+
|
|
46050
|
+
if(subdomains.length <= 1) {
|
|
46051
|
+
//domainAtomsArray.push(ic.chains[chainid]);
|
|
46052
|
+
domainAtomsArray.push(currAtoms);
|
|
46053
|
+
|
|
46054
|
+
let residueArray = ic.resid2specCls.atoms2residues(Object.keys(currAtoms));
|
|
46055
|
+
|
|
46056
|
+
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(currAtoms);
|
|
46057
|
+
let atomLast = ic.firstAtomObjCls.getLastAtomObj(currAtoms);
|
|
46058
|
+
let resiSum = atomFirst.resi + ':' + atomLast.resi;
|
|
46059
|
+
|
|
46060
|
+
for(let n = 0, nl = residueArray.length; n < nl; ++n) {
|
|
46061
|
+
let resid = residueArray[n];
|
|
46062
|
+
ic.resid2domainid[resid] = chainid + '-0' + '_' + resiSum;
|
|
46063
|
+
|
|
46064
|
+
// clear previous refnum assignment if any
|
|
46065
|
+
if(ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
46066
|
+
delete ic.resid2refnum[resid];
|
|
46067
|
+
}
|
|
46068
|
+
}
|
|
46069
|
+
}
|
|
46070
|
+
else {
|
|
46071
|
+
for(let k = 0, kl = subdomains.length; k < kl; ++k) {
|
|
46072
|
+
let domainAtoms = {};
|
|
46073
|
+
let segArray = subdomains[k];
|
|
46074
|
+
|
|
46075
|
+
for(let m = 0, ml = segArray.length; m < ml; m += 2) {
|
|
46076
|
+
let startResi = segArray[m];
|
|
46077
|
+
let endResi = segArray[m+1];
|
|
46078
|
+
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
46079
|
+
let resid = chainid + '_' + pos2resi[n];
|
|
46080
|
+
domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
46081
|
+
//ic.resid2domainid[resid] = chainid + '-' + k;
|
|
46082
|
+
|
|
46083
|
+
// clear previous refnum assignment if any
|
|
46084
|
+
if(ic.resid2refnum && ic.resid2refnum[resid]) {
|
|
46085
|
+
delete ic.resid2refnum[resid];
|
|
46086
|
+
}
|
|
46087
|
+
}
|
|
46088
|
+
}
|
|
46089
|
+
|
|
46090
|
+
domainAtomsArray.push(domainAtoms);
|
|
46091
|
+
|
|
46092
|
+
let atomFirst = ic.firstAtomObjCls.getFirstAtomObj(domainAtoms);
|
|
46093
|
+
let atomLast = ic.firstAtomObjCls.getLastAtomObj(domainAtoms);
|
|
46094
|
+
let resiSum = atomFirst.resi + ':' + atomLast.resi;
|
|
46095
|
+
|
|
46096
|
+
for(let m = 0, ml = segArray.length; m < ml; m += 2) {
|
|
46097
|
+
let startResi = segArray[m];
|
|
46098
|
+
let endResi = segArray[m+1];
|
|
46099
|
+
for(let n = parseInt(startResi); n <= parseInt(endResi); ++n) {
|
|
46100
|
+
let resid = chainid + '_' + pos2resi[n];
|
|
46101
|
+
//domainAtoms = me.hashUtilsCls.unionHash(domainAtoms, ic.residues[resid]);
|
|
46102
|
+
ic.resid2domainid[resid] = chainid + '-' + k + '_' + resiSum;
|
|
46103
|
+
}
|
|
46104
|
+
}
|
|
46105
|
+
}
|
|
46106
|
+
}
|
|
46107
|
+
|
|
46108
|
+
return domainAtomsArray;
|
|
46109
|
+
}
|
|
46110
|
+
|
|
46063
46111
|
getTemplateList(chainid) { let ic = this.icn3d; ic.icn3dui;
|
|
46064
46112
|
let domainid2refpdbname = {}, domainid2score = {};
|
|
46065
46113
|
|
|
@@ -46104,13 +46152,13 @@ class LineGraph {
|
|
|
46104
46152
|
return {'refpdbnameList': refpdbnameList, 'scoreList': scoreList, 'seqidList': seqidList, 'nresAlignList': nresAlignList};
|
|
46105
46153
|
}
|
|
46106
46154
|
|
|
46107
|
-
|
|
46108
|
-
|
|
46109
|
-
|
|
46155
|
+
parseAlignData_part1(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46156
|
+
// async parseAlignData(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46110
46157
|
let tmscoreThreshold = 0.4; // 0.4; //0.5;
|
|
46158
|
+
//let rmsdThreshold = 10;
|
|
46111
46159
|
|
|
46112
46160
|
// find the best alignment for each chain
|
|
46113
|
-
let domainid2segs = {}
|
|
46161
|
+
let domainid2segs = {};
|
|
46114
46162
|
|
|
46115
46163
|
if(!ic.chainid2refpdbname) ic.chainid2refpdbname = {};
|
|
46116
46164
|
if(!ic.chainid2score) ic.chainid2score = {};
|
|
@@ -46195,12 +46243,11 @@ class LineGraph {
|
|
|
46195
46243
|
}
|
|
46196
46244
|
|
|
46197
46245
|
if(!bRound1) {
|
|
46198
|
-
console.log("domainid: " + domainid);
|
|
46246
|
+
if(!me.bNode) console.log("domainid: " + domainid);
|
|
46199
46247
|
}
|
|
46200
46248
|
|
|
46201
46249
|
if(!domainid2segs.hasOwnProperty(domainid) || queryData[0].score >= ic.domainid2score[domainid].split('_')[0]) {
|
|
46202
46250
|
ic.domainid2score[domainid] = queryData[0].score + '_' + queryData[0].frac_identical + '_' + queryData[0].num_res ;
|
|
46203
|
-
|
|
46204
46251
|
ic.domainid2refpdbname[domainid] = refpdbname;
|
|
46205
46252
|
domainid2segs[domainid] = queryData[0].segs;
|
|
46206
46253
|
ic.domainid2ig2kabat[domainid] = queryData[0].ig2kabat;
|
|
@@ -46208,13 +46255,19 @@ class LineGraph {
|
|
|
46208
46255
|
}
|
|
46209
46256
|
}
|
|
46210
46257
|
|
|
46258
|
+
return domainid2segs;
|
|
46259
|
+
}
|
|
46260
|
+
|
|
46261
|
+
async parseAlignData(dataArray, domainidpairArray, bRound1) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46262
|
+
let domainid2segs = this.parseAlignData_part1(dataArray, domainidpairArray, bRound1);
|
|
46263
|
+
|
|
46211
46264
|
if(bRound1) {
|
|
46212
46265
|
if(!me.bNode) console.log("Start round 2 alignment with the reference culsters " + JSON.stringify(ic.domainid2refpdbname));
|
|
46213
46266
|
|
|
46214
46267
|
// start round2
|
|
46215
46268
|
let ajaxArray = [];
|
|
46216
46269
|
let domainidpairArray3 = [];
|
|
46217
|
-
let urltmalign = me.htmlCls.
|
|
46270
|
+
let urltmalign = me.htmlCls.tmalignUrl;
|
|
46218
46271
|
for(let domainid in ic.domainid2refpdbname) {
|
|
46219
46272
|
let pdbAjaxArray = [];
|
|
46220
46273
|
let refpdbname = ic.domainid2refpdbname[domainid];
|
|
@@ -46270,12 +46323,18 @@ class LineGraph {
|
|
|
46270
46323
|
|
|
46271
46324
|
dataArray3 = await this.promiseWithFixedJobs(ajaxArray);
|
|
46272
46325
|
|
|
46273
|
-
await
|
|
46326
|
+
await this.parseAlignData(dataArray3, domainidpairArray3, false);
|
|
46274
46327
|
|
|
46275
46328
|
// end of round 2
|
|
46276
46329
|
return;
|
|
46277
46330
|
}
|
|
46278
46331
|
|
|
46332
|
+
await this.parseAlignData_part3(domainid2segs);
|
|
46333
|
+
}
|
|
46334
|
+
|
|
46335
|
+
async parseAlignData_part3(domainid2segs) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46336
|
+
let chainid2segs = {};
|
|
46337
|
+
|
|
46279
46338
|
// combine domainid into chainid
|
|
46280
46339
|
let processedChainid = {};
|
|
46281
46340
|
|
|
@@ -46330,7 +46389,7 @@ class LineGraph {
|
|
|
46330
46389
|
let message = "The reference PDB(s) for chain " + chainid + " is(are) " + refpdbnameList + ". The TM-score(s) is(are) " + scoreList + ". The sequence identitie(s) is(are) " + seqidList + ". The number of aligned residue(s) is(are) " + nresAlignList + ".";
|
|
46331
46390
|
if(!me.bNode) {
|
|
46332
46391
|
console.log(message);
|
|
46333
|
-
me.htmlCls.clickMenuCls.setLogCmd(message, true);
|
|
46392
|
+
me.htmlCls.clickMenuCls.setLogCmd(message, false, true);
|
|
46334
46393
|
}
|
|
46335
46394
|
ic.refPdbList.push(message);
|
|
46336
46395
|
|
|
@@ -46354,7 +46413,7 @@ class LineGraph {
|
|
|
46354
46413
|
//let refnum = qStart + postfix;
|
|
46355
46414
|
let refnum = qStart;
|
|
46356
46415
|
|
|
46357
|
-
let refnumLabel =
|
|
46416
|
+
let refnumLabel = this.getLabelFromRefnum(refnum, prevStrand, bCd19);
|
|
46358
46417
|
prevStrand = (refnumLabel) ? refnumLabel.replace(new RegExp(refnum,'g'), '') : undefined;
|
|
46359
46418
|
|
|
46360
46419
|
ic.resid2refnum[resid] = refnumLabel;
|
|
@@ -46519,7 +46578,7 @@ class LineGraph {
|
|
|
46519
46578
|
return (!refnumLabel) ? refnumLabel : refnumLabel.replace(/'/g, '').replace(/\*/g, '').replace(/\^/g, '').replace(/\+/g, '').replace(/\-/g, '').substr(1); // C', C''
|
|
46520
46579
|
}
|
|
46521
46580
|
|
|
46522
|
-
exportRefnum(type) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46581
|
+
exportRefnum(type, bCalcRef) { let ic = this.icn3d, me = ic.icn3dui;
|
|
46523
46582
|
let refData = '';
|
|
46524
46583
|
|
|
46525
46584
|
// 1. show IgStrand ref numbers
|
|
@@ -46563,19 +46622,32 @@ class LineGraph {
|
|
|
46563
46622
|
}
|
|
46564
46623
|
}
|
|
46565
46624
|
|
|
46566
|
-
|
|
46625
|
+
let bIgDomain = (ic.refPdbList.length > 0) ? 1 : 0;
|
|
46626
|
+
|
|
46627
|
+
refData += '{"Ig domain" : ' + bIgDomain + ', "ref PDB" : ' + JSON.stringify(ic.refPdbList) + ",\n";
|
|
46567
46628
|
|
|
46568
|
-
|
|
46569
|
-
|
|
46570
|
-
|
|
46571
|
-
|
|
46572
|
-
|
|
46573
|
-
|
|
46574
|
-
|
|
46629
|
+
if(bIgDomain) {
|
|
46630
|
+
refData += '"data": {\n';
|
|
46631
|
+
for(let chnid in ic.chains) {
|
|
46632
|
+
let atom = ic.firstAtomObjCls.getFirstAtomObj(ic.chains[chnid]);
|
|
46633
|
+
if(ic.proteins.hasOwnProperty(atom.serial)) {
|
|
46634
|
+
let bIgChain = false;
|
|
46635
|
+
let chainRefData = '"' + chnid + '": [\n';
|
|
46636
|
+
for(let i = 0; i < ic.chainsSeq[chnid].length; ++i) {
|
|
46637
|
+
const resid = chnid + '_' + ic.chainsSeq[chnid][i].resi + '_' + ic.chainsSeq[chnid][i].name;
|
|
46638
|
+
chainRefData += '{"' + resid + '": "' + resid2refnum[resid] + '"},\n';
|
|
46639
|
+
if(resid2refnum[resid]) bIgChain = true;
|
|
46640
|
+
}
|
|
46641
|
+
chainRefData += '],\n';
|
|
46642
|
+
|
|
46643
|
+
if(bIgChain) {
|
|
46644
|
+
refData += chainRefData;
|
|
46645
|
+
}
|
|
46646
|
+
}
|
|
46575
46647
|
}
|
|
46648
|
+
refData += '}\n';
|
|
46576
46649
|
}
|
|
46577
|
-
|
|
46578
|
-
refData += '}\n';
|
|
46650
|
+
|
|
46579
46651
|
refData += '}\n';
|
|
46580
46652
|
}
|
|
46581
46653
|
// 2. show Kabat ref numbers
|
|
@@ -47821,7 +47893,7 @@ class ViewInterPairs {
|
|
|
47821
47893
|
// last ss
|
|
47822
47894
|
if(Object.keys(ssAtoms).length > 0) ssAtomsArray.push(ssAtoms);
|
|
47823
47895
|
let len = ssAtomsArray.length;
|
|
47824
|
-
select = "interactions " + threshold + " | sets " + nameArray2 + " " + nameArray + " | true";
|
|
47896
|
+
let select = "interactions " + threshold + " | sets " + nameArray2 + " " + nameArray + " | true";
|
|
47825
47897
|
ic.opts['contact'] = "yes";
|
|
47826
47898
|
|
|
47827
47899
|
for(let i = 0; i < len; ++i) {
|
|
@@ -51845,7 +51917,6 @@ class MmcifParser {
|
|
|
51845
51917
|
|
|
51846
51918
|
async downloadMmcifSymmetry(mmcifid, type) { let ic = this.icn3d, me = ic.icn3dui;
|
|
51847
51919
|
// https://files.rcsb.org/header/ is not accessible in Node.js and Mac
|
|
51848
|
-
//let url = (me.bNode) ? "https://files.rcsb.org/view/" + mmcifid + ".cif" : "https://files.rcsb.org/header/" + mmcifid + ".cif";
|
|
51849
51920
|
let url = (me.bNode || me.utilsCls.isMac()) ? "https://files.rcsb.org/view/" + mmcifid + ".cif" : "https://files.rcsb.org/header/" + mmcifid + ".cif";
|
|
51850
51921
|
|
|
51851
51922
|
//ic.bCid = undefined;
|
|
@@ -51853,6 +51924,7 @@ class MmcifParser {
|
|
|
51853
51924
|
|
|
51854
51925
|
url = me.htmlCls.baseUrl + "mmcifparser/mmcifparser.cgi";
|
|
51855
51926
|
let dataObj = {'mmcifheader': data1};
|
|
51927
|
+
|
|
51856
51928
|
let data = await me.getAjaxPostPromise(url, dataObj, false, "The mmCIF data of " + mmcifid + " can not be parsed...");
|
|
51857
51929
|
|
|
51858
51930
|
if(data.emd !== undefined) ic.emd = data.emd;
|
|
@@ -53769,7 +53841,7 @@ class RealignParser {
|
|
|
53769
53841
|
realign() { let ic = this.icn3d, me = ic.icn3dui;
|
|
53770
53842
|
ic.selectionCls.saveSelectionPrep();
|
|
53771
53843
|
|
|
53772
|
-
let index = Object.keys(ic.defNames2Atoms).length;
|
|
53844
|
+
let index = Object.keys(ic.defNames2Atoms).length + Object.keys(ic.defNames2Residues).length + 1;
|
|
53773
53845
|
let name = 'alseq_' + index;
|
|
53774
53846
|
|
|
53775
53847
|
ic.selectionCls.saveSelection(name, name);
|
|
@@ -60871,6 +60943,12 @@ class ApplyCommand {
|
|
|
60871
60943
|
|
|
60872
60944
|
ic.addTrackCls.defineSecondary(chainid, 'coil');
|
|
60873
60945
|
}
|
|
60946
|
+
else if(commandOri.indexOf('define iganchor sets') == 0) {
|
|
60947
|
+
let chainStr = commandOri.split(' | ')[1];
|
|
60948
|
+
let chainid = chainStr.split(' ')[1];
|
|
60949
|
+
|
|
60950
|
+
ic.addTrackCls.defineIgstrand(chainid, 'iganchor');
|
|
60951
|
+
}
|
|
60874
60952
|
else if(commandOri.indexOf('define igstrand sets') == 0) {
|
|
60875
60953
|
let chainStr = commandOri.split(' | ')[1];
|
|
60876
60954
|
let chainid = chainStr.split(' ')[1];
|
|
@@ -64576,28 +64654,46 @@ class Selection {
|
|
|
64576
64654
|
ic.annotationCls.showAnnoSelectedChains();
|
|
64577
64655
|
}
|
|
64578
64656
|
|
|
64579
|
-
saveSelection(name, description) { let ic = this.icn3d, me = ic.icn3dui;
|
|
64580
|
-
|
|
64657
|
+
saveSelection(name, description, bDragSeq) { let ic = this.icn3d, me = ic.icn3dui;
|
|
64658
|
+
if(!bDragSeq) {
|
|
64659
|
+
ic.selectedResidues = {};
|
|
64581
64660
|
|
|
64582
|
-
|
|
64661
|
+
ic.selectedResidues = ic.firstAtomObjCls.getResiduesFromCalphaAtoms(ic.hAtoms);
|
|
64662
|
+
}
|
|
64663
|
+
|
|
64664
|
+
if(!name) {
|
|
64665
|
+
let index = Object.keys(ic.defNames2Atoms).length + Object.keys(ic.defNames2Residues).length + 1;
|
|
64666
|
+
name = 'seq_' + index;
|
|
64667
|
+
description = name;
|
|
64668
|
+
}
|
|
64583
64669
|
|
|
64584
64670
|
if(Object.keys(ic.selectedResidues).length > 0) {
|
|
64585
64671
|
if(ic.pk == 1) {
|
|
64586
64672
|
let bAtom = true;
|
|
64587
|
-
this.selectResidueList(ic.hAtoms, name, description,undefined, undefined, bAtom);
|
|
64673
|
+
this.selectResidueList(ic.hAtoms, name, description, undefined, undefined, bAtom);
|
|
64588
64674
|
//ic.hlUpdateCls.updateHlAll();
|
|
64589
64675
|
|
|
64590
64676
|
this.updateSelectionNameDesc();
|
|
64591
64677
|
|
|
64592
|
-
|
|
64678
|
+
if(!bDragSeq) {
|
|
64679
|
+
me.htmlCls.clickMenuCls.setLogCmd('select ' + ic.resid2specCls.atoms2spec(ic.hAtoms) + ' | name ' + name, true);
|
|
64680
|
+
}
|
|
64681
|
+
else { // no names for temp selections
|
|
64682
|
+
me.htmlCls.clickMenuCls.setLogCmd('select ' + ic.resid2specCls.atoms2spec(ic.hAtoms), true);
|
|
64683
|
+
}
|
|
64593
64684
|
}
|
|
64594
64685
|
else {
|
|
64595
|
-
this.selectResidueList(ic.selectedResidues, name, description);
|
|
64686
|
+
this.selectResidueList(ic.selectedResidues, name, description, undefined, undefined, undefined);
|
|
64596
64687
|
//ic.hlUpdateCls.updateHlAll();
|
|
64597
64688
|
|
|
64598
64689
|
this.updateSelectionNameDesc();
|
|
64599
64690
|
|
|
64600
|
-
|
|
64691
|
+
if(!bDragSeq) {
|
|
64692
|
+
me.htmlCls.clickMenuCls.setLogCmd('select ' + ic.resid2specCls.residueids2spec(Object.keys(ic.selectedResidues)) + ' | name ' + name, true);
|
|
64693
|
+
}
|
|
64694
|
+
else { // no names for temp selections
|
|
64695
|
+
me.htmlCls.clickMenuCls.setLogCmd('select ' + ic.resid2specCls.residueids2spec(Object.keys(ic.selectedResidues)), true);
|
|
64696
|
+
}
|
|
64601
64697
|
}
|
|
64602
64698
|
}
|
|
64603
64699
|
}
|
|
@@ -64735,7 +64831,7 @@ class Selection {
|
|
|
64735
64831
|
}
|
|
64736
64832
|
}
|
|
64737
64833
|
|
|
64738
|
-
saveSelectionPrep() {var ic = this.icn3d, me = ic.icn3dui;
|
|
64834
|
+
saveSelectionPrep(bDragSeq) {var ic = this.icn3d, me = ic.icn3dui;
|
|
64739
64835
|
if(!me.cfg.notebook) {
|
|
64740
64836
|
if(!$('#' + ic.pre + 'dl_definedsets').hasClass('ui-dialog-content') || !$('#' + ic.pre + 'dl_definedsets').dialog( 'isOpen' )) {
|
|
64741
64837
|
me.htmlCls.dialogCls.openDlg('dl_definedsets', 'Select sets');
|
|
@@ -64746,8 +64842,11 @@ class Selection {
|
|
|
64746
64842
|
$('#' + ic.pre + 'dl_definedsets').show();
|
|
64747
64843
|
$("#" + ic.pre + "atomsCustom").resizable();
|
|
64748
64844
|
}
|
|
64749
|
-
|
|
64750
|
-
|
|
64845
|
+
|
|
64846
|
+
if(!bDragSeq) {
|
|
64847
|
+
ic.bSelectResidue = false;
|
|
64848
|
+
ic.bSelectAlignResidue = false;
|
|
64849
|
+
}
|
|
64751
64850
|
}
|
|
64752
64851
|
selectOneResid(idStr, bUnchecked) {var ic = this.icn3d; ic.icn3dui;
|
|
64753
64852
|
//var idStr = idArray[i]; // TYR $1KQ2.B:56@OH, $1KQ2.B:40 ASP
|
|
@@ -71384,11 +71483,17 @@ class ShareLink {
|
|
|
71384
71483
|
//statefile += ic.commands[i] + "\n";
|
|
71385
71484
|
|
|
71386
71485
|
// only output the most recent 'select saved atoms...' without " | name ..."
|
|
71387
|
-
|
|
71388
|
-
|
|
71389
|
-
|
|
71390
|
-
|
|
71391
|
-
|
|
71486
|
+
// or those select without names
|
|
71487
|
+
// if(((prevCommandStr.indexOf('select saved atoms') !== -1 || prevCommandStr.indexOf('select sets') !== -1)
|
|
71488
|
+
// &&(commandStr.indexOf('select') === 0 || commandStr.indexOf('select') === 0)
|
|
71489
|
+
// && prevCommandStr.indexOf(' name ') === -1)
|
|
71490
|
+
// ||(prevCommandStr.indexOf('pickatom') !== -1 && commandStr.indexOf('pickatom') !== -1)
|
|
71491
|
+
// ) {
|
|
71492
|
+
|
|
71493
|
+
if(prevCommandStr.indexOf('select') == 0 && prevCommandStr.indexOf('select prop') === -1
|
|
71494
|
+
&& commandStr.indexOf('select') === 0 && commandStr.indexOf('select prop') === -1
|
|
71495
|
+
&& prevCommandStr.indexOf(' name ') === -1) ;
|
|
71496
|
+
else if(prevCommandStr.indexOf('pickatom') !== -1 && commandStr.indexOf('pickatom') !== -1) ;
|
|
71392
71497
|
// remove all "show selection" except the last one
|
|
71393
71498
|
else if(prevCommandStr == 'show selection' && ic.commands.slice(i).toString().indexOf('show selection') != -1) ;
|
|
71394
71499
|
else if(prevCommandStr.indexOf(toggleStr) !== -1) {
|
|
@@ -74311,7 +74416,7 @@ class iCn3DUI {
|
|
|
74311
74416
|
//even when multiple iCn3D viewers are shown together.
|
|
74312
74417
|
this.pre = this.cfg.divid + "_";
|
|
74313
74418
|
|
|
74314
|
-
this.REVISION = '3.29.
|
|
74419
|
+
this.REVISION = '3.29.2';
|
|
74315
74420
|
|
|
74316
74421
|
// In nodejs, iCn3D defines "window = {navigator: {}}"
|
|
74317
74422
|
this.bNode = (Object.keys(window).length < 2) ? true : false;
|
|
@@ -74930,10 +75035,13 @@ iCn3DUI.prototype.getAjaxPostPromise = async function(url, data, beforeSend, ale
|
|
|
74930
75035
|
resolve(data);
|
|
74931
75036
|
},
|
|
74932
75037
|
error : function() {
|
|
74933
|
-
if(alertMess) var aaa = 1; //alert(alertMess);
|
|
75038
|
+
//if(alertMess) var aaa = 1; //alert(alertMess);
|
|
75039
|
+
if(alertMess) console.log(alertMess);
|
|
74934
75040
|
if(logMess) console.log(logMess);
|
|
74935
75041
|
|
|
74936
|
-
reject('error');
|
|
75042
|
+
// reject('error');
|
|
75043
|
+
// keep running the program
|
|
75044
|
+
resolve('error');
|
|
74937
75045
|
}
|
|
74938
75046
|
});
|
|
74939
75047
|
});
|