@datagrok/helm 2.1.15 → 2.1.16
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/.eslintrc.json +10 -20
- package/dist/package-test.js +1 -1
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/package.json +2 -2
- package/src/cell-renderer.ts +8 -14
- package/src/constants.ts +21 -21
- package/src/helm-monomer-placer.ts +10 -10
- package/src/helm-web-editor.ts +3 -0
- package/src/package.ts +45 -35
- package/src/utils.ts +3 -3
- package/tsconfig.json +1 -1
- package/webpack.config.js +2 -2
package/.eslintrc.json
CHANGED
|
@@ -15,14 +15,8 @@
|
|
|
15
15
|
"@typescript-eslint"
|
|
16
16
|
],
|
|
17
17
|
"rules": {
|
|
18
|
-
"indent": [
|
|
19
|
-
|
|
20
|
-
2
|
|
21
|
-
],
|
|
22
|
-
"max-len": [
|
|
23
|
-
"error",
|
|
24
|
-
120
|
|
25
|
-
],
|
|
18
|
+
"indent": ["error", 2, {"SwitchCase": 1}],
|
|
19
|
+
"max-len": ["error", 120],
|
|
26
20
|
"no-unused-vars": "off",
|
|
27
21
|
"@typescript-eslint/no-unused-vars": "warn",
|
|
28
22
|
"require-jsdoc": "off",
|
|
@@ -34,20 +28,16 @@
|
|
|
34
28
|
"multi-or-nest",
|
|
35
29
|
"consistent"
|
|
36
30
|
],
|
|
37
|
-
"brace-style": [
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
{
|
|
41
|
-
"
|
|
31
|
+
"brace-style": ["error", "1tbs", {"allowSingleLine": true}],
|
|
32
|
+
"block-spacing": [2, "always"],
|
|
33
|
+
"comma-dangle": [
|
|
34
|
+
"error", {
|
|
35
|
+
"arrays": "only-multiline",
|
|
36
|
+
"functions": "never",
|
|
37
|
+
"objects": "only-multiline",
|
|
38
|
+
"imports": "only-multiline"
|
|
42
39
|
}
|
|
43
40
|
],
|
|
44
|
-
"block-spacing": [2, "always"],
|
|
45
|
-
"comma-dangle": ["error", {
|
|
46
|
-
"arrays": "only-multiline",
|
|
47
|
-
"functions": "never",
|
|
48
|
-
"objects": "only-multiline",
|
|
49
|
-
"imports": "only-multiline"
|
|
50
|
-
}],
|
|
51
41
|
"guard-for-in": "off"
|
|
52
42
|
}
|
|
53
43
|
}
|
package/dist/package-test.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var helm_test;(()=>{"use strict";var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{_package:()=>ot,test:()=>it,tests:()=>o});const n=DG,r=grok;var s=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};const o={},i={};let a;var l;!function(t){t.notNull=function(t,e){if(null==t)throw new Error(`${null==e?"Value":e} not defined`)}}(l||(l={}));class c{constructor(t,e){this.catchUnhandled=!0,this.report=!1,void 0!==t&&(this.catchUnhandled=t),void 0!==e&&(this.report=e)}}class u{constructor(t,e,n,r){var o;this.category=t,this.name=e,null!=r||(r={}),null!==(o=r.timeout)&&void 0!==o||(r.timeout=3e4),this.options=r,this.test=()=>s(this,void 0,void 0,(function*(){return new Promise(((t,e)=>s(this,void 0,void 0,(function*(){let r="";try{r=yield n()}catch(t){e(t)}t(r)}))))}))}}function h(t,e,n){null==o[a]&&(o[a]={}),null==o[a].tests&&(o[a].tests=[]),o[a].tests.push(new u(a,t,e,n))}function g(t,e=!0,n){if(n=n?`${n}, `:"",t!==e)throw new Error(`${n}Expected "${e}", got "${t}"`)}function f(t,e,n=.001,r){if(t===Number.POSITIVE_INFINITY&&e===Number.POSITIVE_INFINITY||t===Number.NEGATIVE_INFINITY&&e===Number.NEGATIVE_INFINITY||t===Number.NaN&&e===Number.NaN||isNaN(t)&&isNaN(e))return;const s=Math.abs(t-e)<n;if(g(s,!0,`${null!=r?r:""} (tolerance = ${n})`),!s)throw new Error(`Expected ${e}, got ${t} (tolerance = ${n})`)}function p(t,e){for(const[n,r]of Object.entries(e)){if(!t.hasOwnProperty(n))throw new Error(`Expected property "${n}" not found`);const e=t[n];if(e instanceof Array&&r instanceof Array)C(e,r);else if(e instanceof Object&&r instanceof Object)p(e,r);else if(Number.isFinite(e)&&Number.isFinite(r))f(e,r);else if(e!=r)throw new Error(`Expected (${r}) for key '${n}', got (${e})`)}}function C(t,e){const n=t.length,r=e.length;if(n!=r)throw new Error(`Arrays are of different length: actual array length is ${n} and expected array length is ${r}`);for(let r=0;r<n;r++)if(t[r]instanceof Array&&e[r]instanceof Array)C(t[r],e[r]);else if(t[r]instanceof Object&&e[r]instanceof Object)p(t[r],e[r]);else if(t[r]!=e[r])throw new Error(`Expected ${e[r]} at position ${r}, got ${t[r]}`)}function d(t,e){a=t,e()}function m(t){null==o[a]&&(o[a]={}),o[a].before=t}function E(t){null==o[a]&&(o[a]={}),o[a].after=t}function T(t,e){return t.replace(new RegExp(e.name,"gi"),e.nqName)}function b(t){var e,a,l,h,g;return s(this,void 0,void 0,(function*(){const f=null===(a=null===(e=r.functions.getCurrentCall())||void 0===e?void 0:e.func)||void 0===a?void 0:a.package;yield function(t,e){return s(this,void 0,void 0,(function*(){if(i[t])return;const e=o;if(void 0!==e["Auto Tests"])return void(i[t]=!0);const n=[],a=yield r.dapi.functions.filter(`package.id = "${t}"`).list();for(const t of a){const e=t.options.test;if(e&&Array.isArray(e)&&e.length)for(let o=0;o<e.length;o++)n.push(new u("Auto Tests",1===e.length?t.name:`${t.name} ${o+1}`,(()=>s(this,void 0,void 0,(function*(){if(!0!==(yield r.functions.eval(T(e[o],t))))throw`Failed: ${e[o]}`})))))}i[t]=!0,n.length&&(e["Auto Tests"]={tests:n})}))}(f.id);const p=[];console.log("Running tests"),null!=t||(t={}),null!==(l=(g=t).testContext)&&void 0!==l||(g.testContext=new c),r.shell.lastError="";for(const[e,n]of Object.entries(o)){if(null!=(null==t?void 0:t.category)&&!e.toLowerCase().startsWith(null==t?void 0:t.category.toLowerCase()))continue;console.log(`Started ${e} category`);try{n.before&&(yield n.before())}catch(t){n.beforeStatus=t.toString()}const r=null!==(h=n.tests)&&void 0!==h?h:[],s=[];for(let e=0;e<r.length;e++)s.push(yield A(r[e],null==t?void 0:t.test));const o=(yield Promise.all(s)).filter((t=>"skipped"!=t.result));try{n.after&&(yield n.after())}catch(t){n.afterStatus=t.toString()}n.afterStatus&&o.push({category:e,name:"init",result:n.afterStatus,success:!1,ms:0,skipped:!1}),n.beforeStatus&&o.push({category:e,name:"init",result:n.beforeStatus,success:!1,ms:0,skipped:!1}),p.push(...o)}if(t.testContext.catchUnhandled&&(yield function(t){return s(this,void 0,void 0,(function*(){yield new Promise((e=>setTimeout(e,t)))}))}(1e3),r.shell.lastError.length>0&&p.push({category:"Unhandled exceptions",name:"exceptions",result:r.shell.lastError,success:!1,ms:0,skipped:!1})),t.testContext.report){const t=new n.Logger,e=p.filter((t=>t.success)).length,r=p.filter((t=>t.skipped)).length,s=p.filter((t=>!t.success)),o="Package @package tested: @successful successful, @skipped skipped, @failed failed tests",i={successful:e,skipped:r,failed:s.length,package:f};for(const t of s)Object.assign(i,{[`${t.category} | ${t.name}`]:t.result});t.log(o,i,"package-tested")}return p}))}function A(t,e){var n,r,o;return s(this,void 0,void 0,(function*(){let s;const i=null!=e&&!t.name.toLowerCase().startsWith(e.toLowerCase()),a=(null===(n=t.options)||void 0===n?void 0:n.skipReason)||i,l=i?"skipped":null===(r=t.options)||void 0===r?void 0:r.skipReason;a||console.log(`Started ${t.category} ${t.name}`);const c=new Date;try{s=a?{success:!0,result:l,ms:0,skipped:!0}:{success:!0,result:null!==(o=yield t.test())&&void 0!==o?o:"OK",ms:0,skipped:!1}}catch(t){s={success:!1,result:t.toString(),ms:0,skipped:!1}}const u=new Date;return s.ms=u-c,a||console.log(`Finished ${t.category} ${t.name} for ${s.ms} ms`),s.category=t.category,s.name=t.name,s}))}function N(t){t=y(t,"$")[0];const e=[];if(!scil.Utils.isNullOrEmpty(t)){const n=y(t,"|");for(let r=0;r<n.length;++r){let s=(t=w(n[r]).str).indexOf("{");s=(t=t.substring(s+1)).indexOf("}");const o=y(t=t.substring(0,s),".");for(const t of o)if(t&&""!==t)if(t.startsWith("[")&&t.includes("]")){const n=t.substring(1,t.indexOf("]"));e.push(n);const r=t.substring(t.indexOf("]")+1);o.push(r)}else if(t.includes("[")&&t.endsWith("]")){const n=t.substring(t.lastIndexOf("[")+1,t.length-1);e.push(n);const r=t.substring(0,t.lastIndexOf("["));o.push(r)}else if(t.includes("(")&&t.includes(")")){const e=t.substring(0,t.indexOf("(")),n=t.substring(t.lastIndexOf(")")+1),r=[e,t.substring(e.length+1,t.length-n.length-1),n];for(const t of r)o.push(t)}else e.push(t)}}return e}function y(t,e){const n=[];let r="",s=0,o=0,i=0,a=0;for(let l=0;l<t.length;++l){let c=t.substring(l,l+1);if(c==e&&0==o&&0==s&&0==i&&0==a)n.push(r),r="";else{if(r+=c,a>0&&"\\"==c&&l+1<t.length){++l;const e=t.substring(l,l+1);r+=e,c+=e}'"'==c?l>0&&"\\"==t.substring(l-1,l)||(a=0==a?1:0):"["==c?++o:"]"==c?--o:"("==c?++s:")"==c?--s:"{"==c?++i:"}"==c&&--i}}return n.push(r),n}function w(t){const e=S(t,'"');if(null!=e.tag)return e;const n=S(t,"'");return{tag:e.tag,repeat:n.tag,str:n.str}}function S(t,e){let n=null;if(scil.Utils.endswith(t,e)){let r=t.length-1;for(;r>0&&(r=t.lastIndexOf(e,r-1),!(r<=0||"\\"!=t.substring(r-1,r))););r>0&&r<t.length-1&&(n=t.substring(r+1,t.length-1),t=t.substring(0,r))}return null!=n&&(n=n.replace(new RegExp("\\"+e,"g"),e)),{tag:O(n),str:t}}function O(t){return scil.Utils.isNullOrEmpty(t)?t:t.replace(/[\\]./g,(function(t){switch(t){case"\\r":return"\r";case"\\n":return"\n";case"\\t":return"\t";default:return t.substring(1)}}))}var M=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};d("Helm",(()=>{const t=[["L-hArg(Et,Et)","E","F","G","C","E"],["L-hArg(Et,Et)","L-hArg(Et,Et)","E","F","G"],["dhp","m1A","p","r","T","p","r","T","p","r","G","p"],["r","mo6pur","p","r","T","p","r","T","p","r","G","p"],["afhna","mo6pur","36SS","r","T","p"]],e=["comples-monomer","complex-monomer+side-chain","complex-monomer+side-chain-RNA","complex-side-chain","complex+side-chain+linker"];h("parseHelm",(()=>M(void 0,void 0,void 0,(function*(){const t=[["meI","hHis","Aca","N","T","dK","Thr_PO3H2","D-Tyr_Et","Aze","dV","E","Phe_4Me"],["A","C","T","G","W","E","Q"],["R","U","P","T","A"],["A","*","G","C"]],e=["PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Aze.dV.E.N.dV.Phe_4Me}$$$","PEPTIDE1{A.C.T.G.C.T.W.G.T.W.E.C.W.C.Q.W}|PEPTIDE2{A.C.T.G.C.T.W.G.T.W.E.Q}$PEPTIDE1,PEPTIDE1,5:R3-14:R3|PEPTIDE2,PEPTIDE1,2:R3-12:R3$$$","RNA1{R(U)P.R(T)P}|RNA2{P.R(A)P.R(A)}$RNA1,RNA2,2:pair-6:pair|RNA1,RNA2,5:pair-3:pair$$$","PEPTIDE1{A.*.G.C}$$$$V2.0"];for(let n=0;n<e.length;++n){const r=new Set(N(e[n])),s=Array.from(r);g(JSON.stringify(s),JSON.stringify(t[n]))}})))),["PEPTIDE1{[L-hArg(Et,Et)].E.F.G}|PEPTIDE2{C.E}$PEPTIDE1,PEPTIDE2,2:R3-1:R1$$$V2.0","PEPTIDE1{[L-hArg(Et,Et)]([L-hArg(Et,Et)]).E.F.G}$$$$","RNA1{[dhp]([m1A])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{r([mo6pur])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{[afhna]([mo6pur])[36SS].r(T)p}$$$$V2.0"].forEach(((n,r)=>{h(e[r],(()=>M(void 0,void 0,void 0,(function*(){const e=N(n);e.sort();const s=t[r];s.sort(),C(e,s)}))))}))})),wu;class P{constructor(t,e,n){this.name=t,this.alphabet=e,this.cutoff=n}}class v extends P{constructor(t,e,n){super(t.name,t.alphabet,t.cutoff),this.freq=e,this.similarity=n}}const I=/(\[[A-Za-z0-9-_]+\]|.)/g,L=new class{constructor(){this.fasta={peptide:new Set(["G","L","Y","S","E","Q","D","N","F","A","K","R","H","C","V","P","W","I","M","T"]),dna:new Set(["A","C","G","T"]),rna:new Set(["A","C","G","U"])}}},H=[new P("PT",L.fasta.peptide,.5),new P("DNA",L.fasta.dna,.55),new P("RNA",L.fasta.rna,.55)],G=new Uint32Array(65536),_={gapOpen:8,gapExtend:2,scoringMatrix:[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],alphabetIndexes:{A:0,R:1,N:2,D:3,C:4,Q:5,E:6,G:7,H:8,I:9,L:10,K:11,M:12,F:13,P:14,S:15,T:16,W:17,Y:18,V:19,B:20,Z:21,X:22,"*":23}};var R;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch"}(R||(R={}));const x={[R.HAMMING]:function(){return(t,e)=>{let n=0;t.length!==e.length&&(n=Math.abs(t.length-e.length));let r=0;for(let n=0;n<Math.min(t.length,e.length);n++)t[n]!==e[n]&&r++;return r+=n,r/=Math.max(t.length,e.length),r}},[R.LEVENSHTEIN]:function(){return(t,e)=>((t,e)=>{if(t.length<e.length){const n=e;e=t,t=n}return 0===e.length?t.length:t.length<=32?((t,e)=>{const n=t.length,r=e.length,s=1<<n-1;let o=-1,i=0,a=n,l=n;for(;l--;)G[t.charCodeAt(l)]|=1<<l;for(l=0;l<r;l++){let t=G[e.charCodeAt(l)];const n=t|i;t|=(t&o)+o^o,i|=~(t|o),o&=t,i&s&&a++,o&s&&a--,i=i<<1|1,o=o<<1|~(n|i),i&=n}for(l=n;l--;)G[t.charCodeAt(l)]=0;return a})(t,e):((t,e)=>{const n=e.length,r=t.length,s=[],o=[],i=Math.ceil(n/32),a=Math.ceil(r/32);for(let t=0;t<i;t++)o[t]=-1,s[t]=0;let l=0;for(;l<a-1;l++){let i=0,a=-1;const c=32*l,u=Math.min(32,r)+c;for(let e=c;e<u;e++)G[t.charCodeAt(e)]|=1<<e;for(let t=0;t<n;t++){const n=G[e.charCodeAt(t)],r=o[t/32|0]>>>t&1,l=s[t/32|0]>>>t&1,c=n|i,u=((n|l)&a)+a^a|n|l;let h=i|~(u|a),g=a&u;h>>>31^r&&(o[t/32|0]^=1<<t),g>>>31^l&&(s[t/32|0]^=1<<t),h=h<<1|r,g=g<<1|l,a=g|~(c|h),i=h&c}for(let e=c;e<u;e++)G[t.charCodeAt(e)]=0}let c=0,u=-1;const h=32*l,g=Math.min(32,r-h)+h;for(let e=h;e<g;e++)G[t.charCodeAt(e)]|=1<<e;let f=r;for(let t=0;t<n;t++){const n=G[e.charCodeAt(t)],i=o[t/32|0]>>>t&1,a=s[t/32|0]>>>t&1,l=n|c,h=((n|a)&u)+u^u|n|a;let g=c|~(h|u),p=u&h;f+=g>>>r-1&1,f-=p>>>r-1&1,g>>>31^i&&(o[t/32|0]^=1<<t),p>>>31^a&&(s[t/32|0]^=1<<t),g=g<<1|i,p=p<<1|a,u=p|~(l|g),c=g&l}for(let e=h;e<g;e++)G[t.charCodeAt(e)]=0;return f})(t,e)})(t,e)/Math.max(t.length,e.length)},[R.NEEDLEMANN_WUNSCH]:function(t){return(e,n)=>{const{gapOpen:r,gapExtend:s,scoringMatrix:o,alphabetIndexes:i}={..._,...t},a=[new Array(e.length+1).fill(0),new Array(e.length+1).fill(0)],l=new Array(e.length+1).fill(!1),c=new Array(e.length+1).fill(!1);let u=0,h=1;for(let t=1;t<e.length+1;t++)a[0][t]=-r-(t-1)*s;for(let t=1;t<n.length+1;t++){a[h][0]=-r-(t-1)*s;for(let g=1;g<e.length+1;g++){const f=a[u][g-1]+o[i[e[g-1]]][i[n[t-1]]],p=a[u][g]-(l[g]?s:r),C=a[h][g-1]-(c[g-1]?s:r);a[h][g]=Math.max(f,C,p),a[h][g]===f?(l[g]=!1,c[g]=!1):a[h][g]===C?(l[g]=!1,c[g]=!0):(l[g]=!0,c[g]=!1)}u=h,h=(h+1)%2}const g=e.split("").map((t=>o[i[t]][i[t]])).reduce(((t,e)=>t+e),0),f=n.split("").map((t=>o[i[t]][i[t]])).reduce(((t,e)=>t+e),0),p=Math.max(g,f);return(p-a[u][e.length])/p}}},D=new class{constructor(){this.uhTemp=`units-handler.${n.SEMTYPE.MACROMOLECULE}`}};class U{static setUnitsToFastaColumn(t){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE||"fasta"!==t.column.getTag(n.TAGS.UNITS))throw new Error(`The column of notation 'fasta' must be '${n.SEMTYPE.MACROMOLECULE}'.`);t.column.setTag(n.TAGS.UNITS,"fasta"),U.setTags(t)}static setUnitsToSeparatorColumn(t,e){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE||"separator"!==t.column.getTag(n.TAGS.UNITS))throw new Error(`The column of notation 'separator' must be '${n.SEMTYPE.MACROMOLECULE}'.`);if(!e)throw new Error("The column of notation 'separator' must have the separator tag.");t.column.setTag(n.TAGS.UNITS,"separator"),t.column.setTag("separator",e),U.setTags(t)}static setUnitsToHelmColumn(t){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE)throw new Error(`The column of notation 'helm' must be '${n.SEMTYPE.MACROMOLECULE}'`);t.column.setTag(n.TAGS.UNITS,"helm"),U.setTags(t)}static setTags(t){const e=t.column.getTag(n.TAGS.UNITS),r=t.stats;if(Object.keys(r.freq).some((t=>t.length>1)),["fasta","separator"].includes(e)){if(0===Object.keys(r.freq).length)throw new Error("Alphabet is empty");const e=r.sameLength?"SEQ.MSA":"SEQ";t.column.setTag("aligned",e);const n=function(t,e,n="-"){const r=e.map((e=>{const r=function(t,e,n="-"){const r=new Set([...new Set(Object.keys(t)),...e]);r.delete(n);const s=[],o=[];for(const n of r)s.push(n in t?t[n]:0),o.push(e.has(n)?1:0);const i=new F(s),a=new F(o);return function(t,e){if(t.length!=e.length)throw new Error("The dimensionality of the vectors must match");let n=0;for(let r=0;r<t.length;r++)n+=t[r]*e[r];return n}(i,a)/(k(i)*k(a))}(t,e.alphabet,n);return new v(e,t,r)}));let s;const o=Math.max(...r.map((t=>t.similarity>t.cutoff?t.similarity:-1)));s=o>0?r.find((t=>t.similarity===o)).name:"UN";return s}(r.freq,H);if(t.column.setTag("alphabet",n),"UN"===n){const e=Object.keys(r.freq).length,n=Object.keys(r.freq).some((t=>t.length>1));t.column.setTag(".alphabetSize",e.toString()),t.column.setTag(".alphabetIsMultichar",n?"true":"false")}}}get column(){return this._column}get units(){return this._units}get notation(){return this._notation}get defaultGapSymbol(){return this._defaultGapSymbol}get separator(){const t=this.column.getTag("separator")??void 0;if("separator"===this.notation&&void 0===t)throw new Error(`Separator is mandatory for column '${this.column.name}' of notation '${this.notation}'.`);return t}get aligned(){const t=this.column.getTag("aligned");if(!t&&(this.isFasta()||this.isSeparator()))throw new Error("Tag aligned not set");return t}get alphabet(){const t=this.column.getTag("alphabet");if(!t&&(this.isFasta()||this.isSeparator()))throw new Error("Tag alphabet not set");return t}get helmCompatible(){return this.column.getTag(".isHelmCompatible")}getAlphabetSize(){if("helm"==this.notation||"UN"==this.alphabet){const t=this.column.getTag(".alphabetSize");let e;if(t)e=parseInt(t);else{const t=this.stats;e=Object.keys(t.freq).length}return e}switch(this.alphabet){case"PT":return 20;case"DNA":case"RNA":return 4;case"NT":return console.warn("Unexpected alphabet 'NT'."),4;default:throw new Error(`Unexpected alphabet '${this.alphabet}'.`)}}getAlphabetIsMultichar(){return"helm"===this.notation||"UN"===this.alphabet&&"true"===this.column.getTag(".alphabetIsMultichar")}get splitted(){if(null===this._splitted){const t=this.getSplitter(),e=this._column.length;this._splitted=new Array(e);const n=this._column.getRawData(),r=this._column.categories;for(let s=0;s<e;s++){const e=r[n[s]];this._splitted[s]=t(e)}}return this._splitted}get stats(){if(null===this._stats){const t={};let e=!0,n=null;for(const r of this.splitted){null==n?n=r.length:r.length!==n&&(e=!1);for(const e of r)e in t||(t[e]=0),t[e]+=1}this._stats={freq:t,sameLength:e}}return this._stats}isFasta(){return"fasta"===this.notation}isSeparator(){return"separator"===this.notation}isHelm(){return"helm"===this.notation}isRna(){return"RNA"===this.alphabet}isDna(){return"DNA"===this.alphabet}isPeptide(){return"PT"===this.alphabet}isMsa(){return!!this.aligned&&this.aligned.toUpperCase().includes("MSA")}isHelmCompatible(){return"true"===this.helmCompatible}getNotation(){if(this.units.toLowerCase().startsWith("fasta"))return"fasta";if(this.units.toLowerCase().startsWith("separator"))return"separator";if(this.units.toLowerCase().startsWith("helm"))return"helm";throw new Error(`Column '${this.column.name}' has unexpected notation '${this.units}'.`)}getNewColumn(t,e){const r=this.column,s=r.length,o=t.toLowerCase()+"("+r.name+")",i=r.dataFrame.columns.getUnusedName(o),a=n.Column.fromList("string",i,new Array(s).fill(""));if(a.semType=n.SEMTYPE.MACROMOLECULE,a.setTag(n.TAGS.UNITS,t),"separator"===t){if(!e)throw new Error("Notation 'separator' requires separator value.");a.setTag("separator",e)}a.setTag(n.TAGS.CELL_RENDERER,"Macromolecule");const l=r.getTag("aligned");l&&a.setTag("aligned",l);const c=r.getTag("alphabet");c&&a.setTag("alphabet",c);let u=r.getTag(".alphabetSize");u&&a.setTag(".alphabetSize",u);const h=r.getTag(".alphabetIsMultichar");return void 0!==h&&a.setTag(".alphabetIsMultichar",h),"helm"==t&&(u=this.getAlphabetSize().toString(),a.setTag(".alphabetSize",u)),a}static getNewColumn(t){const e=U.getOrCreate(t),n=e.notation;return e.getNewColumn(n)}static unitsStringIsValid(t){return t=t.toLowerCase(),["fasta","separator","helm"].some((e=>t.startsWith(e.toLowerCase())))}static getNewColumnFromParams(t,e,r){if(!U.unitsStringIsValid(r))throw new Error("Invalid format of 'units' parameter");const s=n.Column.fromList("string",e,new Array(t).fill(""));return s.semType=n.SEMTYPE.MACROMOLECULE,s.setTag(n.TAGS.UNITS,r),s}getSplitter(){return function(t){if(t.semType!==n.SEMTYPE.MACROMOLECULE)throw new Error(`Get splitter for semType "${n.SEMTYPE.MACROMOLECULE}" only.`);return function(t,e,n){if(t.toLowerCase().startsWith("fasta"))return q;if(t.toLowerCase().startsWith("separator"))return K(e,void 0);if(t.toLowerCase().startsWith("helm"))return J;throw new Error(`Unexpected units ${t} .`)}(t.getTag(n.TAGS.UNITS),t.getTag("separator"))}(this._column)}getDistanceFunctionName(){if(!this.isFasta())throw new Error("Only FASTA notation is supported");if(this.isMsa())return R.HAMMING;switch(this.alphabet){case"DNA":case"RNA":default:return R.LEVENSHTEIN;case"PT":return R.NEEDLEMANN_WUNSCH}}getDistanceFunction(){return x[this.getDistanceFunctionName()]()}async checkHelmCompatibility(){if(this.column.tags.has(".isHelmCompatible"))return"true"===this.column.getTag(".isHelmCompatible");const t=(await Z()).getBioLib().getMonomerSymbolsByType("PEPTIDE".toString()),e=new Set(t),n=K(this.separator);for(const t of this.column.categories){const r=n(t);for(const t of r)if(!e.has(t))return this.column.setTag(".isHelmCompatible","false"),!1}return this.column.setTag(".isHelmCompatible","true"),!0}constructor(t){if(this._splitted=null,this._stats=null,t.type!=n.TYPE.STRING)throw new Error(`Unexpected column type '${t.type}', must be '${n.TYPE.STRING}'.`);this._column=t;const e=this._column.getTag(n.TAGS.UNITS);if(null==e)throw new Error("Units are not specified in column");if(this._units=e,this._notation=this.getNotation(),this._defaultGapSymbol=this.isFasta()?U._defaultGapSymbolsDict.FASTA:this.isHelm()?U._defaultGapSymbolsDict.HELM:U._defaultGapSymbolsDict.SEPARATOR,!this.column.tags.has("aligned")||!this.column.tags.has("alphabet")||!this.column.tags.has(".alphabetIsMultichar")&&!this.isHelm()&&"UN"===this.alphabet)if(this.isFasta())U.setUnitsToFastaColumn(this);else if(this.isSeparator()){const e=t.getTag("separator");U.setUnitsToSeparatorColumn(this,e)}else{if(!this.isHelm())throw new Error(`Unexpected units '${this.column.getTag(n.TAGS.UNITS)}'.`);U.setUnitsToHelmColumn(this)}if(!this.column.tags.has(".alphabetIsMultichar"))if(this.isHelm())this.column.setTag(".alphabetIsMultichar","true");else if(["UN"].includes(this.alphabet))throw new Error(`For column '${this.column.name}' of alphabet '${this.alphabet}' tag '.alphabetIsMultichar' is mandatory.`)}static getOrCreate(t){return D.uhTemp in t.temp||(t.temp[D.uhTemp]=new U(t)),t.temp[D.uhTemp]}}U._defaultGapSymbolsDict={HELM:"*",SEPARATOR:"",FASTA:"-"};class F extends Float32Array{}function k(t){let e=0;for(let n=0;n<t.length;n++)e+=t[n]*t[n];return Math.sqrt(e)}class W{static makePalette(t,e=!1,n=W){const r={};return t.forEach((t=>{const n=t[0],s=t[1];n.forEach(((t,n)=>{r[t]=this.colourPalette[s][e?0:n]}))})),new n(r)}constructor(t){this._palette=t}get(t){return this._palette[t]}}W.undefinedColor="rgb(100,100,100)",W.colourPalette={orange:["rgb(255,187,120)","rgb(245,167,100)","rgb(235,137,70)","rgb(205, 111, 71)"],all_green:["rgb(44,160,44)","rgb(74,160,74)","rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)","rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],all_blue:["rgb(31,119,180)","rgb(23,190,207)","rgb(122, 102, 189)","rgb(158,218,229)","rgb(141, 124, 217)","rgb(31, 120, 150)"],magenta:["rgb(162,106,192)","rgb(197,165,224)","rgb(208,113,218)"],red:["rgb(214,39,40)","rgb(255,152,150)"],st_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(31,119,180)"],dark_blue:["rgb(31,119,180)","rgb(31, 120, 150)"],light_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(108, 218, 229)","rgb(23,190,227)"],lilac_blue:["rgb(124,102,211)","rgb(149,134,217)","rgb(97, 81, 150)"],dark_green:["rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)"],green:["rgb(44,160,44)","rgb(74,160,74)"],light_green:["rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],st_green:["rgb(44,160,44)","rgb(152,223,138)","rgb(39, 174, 96)","rgb(74,160,74)"],pink:["rgb(247,182,210)"],brown:["rgb(140,86,75)","rgb(102, 62, 54)"],gray:["rgb(127,127,127)","rgb(199,199,199)","rgb(196,156,148)","rgb(222, 222, 180)"],yellow:["rgb(188,189,34)"],white:["rgb(230,230,230)"]};class V extends W{static get Lesk(){return void 0===this.lesk&&(this.lesk=this.makePalette([[["G","A","S","T"],"orange"],[["C","V","I","L","P","F","Y","M","W"],"all_green"],[["N","Q","H"],"magenta"],[["D","E"],"red"],[["K","R"],"all_blue"]],!1,V)),this.lesk}static get GrokGroups(){return void 0===this.grokGroups&&(this.grokGroups=this.makePalette([[["C","U"],"yellow"],[["G","P"],"red"],[["A","V","I","L","M","F","Y","W"],"all_green"],[["R","H","K"],"light_blue"],[["D","E"],"dark_blue"],[["S","T","N","Q"],"orange"]],!1,V)),this.grokGroups}static get RasMol(){return void 0===this.rasMol&&(this.rasMol=new V({D:"#E60A0A",E:"#E60A0A",C:"#E6E600",M:"#E6E600",K:"#145AFF",R:"#145AFF",S:"#FA9600",T:"#FA9600",F:"#3232AA",Y:"#3232AA",N:"#00DCDC",Q:"#00DCDC",G:"#EBEBEB",L:"#0F820F",V:"#0F820F",I:"#0F820F",A:"#C8C8C8",W:"#B45AB4",H:"#8282D2",P:"#DC9682",others:"#BEA06E"})),this.rasMol}get(t){const e=t in V.aaSynonyms?V.aaSynonyms[t]:t;return super.get(e)}}V.aaSynonyms={MeNle:"L",MeA:"A",MeG:"G",MeF:"F"};class Y{static getPalette(t="grok"){switch(t){case"grok":return V.GrokGroups;case"lesk":return V.Lesk;default:throw new Error(`ChemPalette: scheme \`${t}\` does not exist`)}}static getInnerOuter(t){let e=0,n="",r="";for(const s of t)"("==s?e++:")"==s?e--:e?n+=s:r+=s;return isNaN(parseInt(n))?[r,n]:[r,""]}static getColorAAPivot(t="",e="grok"){const n=this.getPalette(e);let[r,s]=this.getInnerOuter(t);if(r=r.length>6?`${r.slice(0,3)}...`:r,s=s.length>6?`${s.slice(0,3)}...`:s,1==t.length||"("==t[1]){const e=t[0]?.toUpperCase();return e in n?[n.get(e),e,s,1]:[this.undefinedColor,r,s,1]}if("d"==t[0]&&t[1]in n&&(2==t.length||"("==t[2])){const e=t[1]?.toUpperCase();return e in n?[n.get(e),e,s,2]:[this.undefinedColor,r,s,2]}if(t.substring(0,3)in this.AAFullNames&&(3==t.length||"("==t[3])){const e=this.AAFullNames[t.substring(0,3)];return e in n?[n.get(e),e,s,3]:[this.undefinedColor,r,s,3]}if(t[0]?.toLowerCase()==t[0]&&t.substring(1,3)in this.AAFullNames&&(4==t.length||"("==t[4])){const e=this.AAFullNames[t.substring(1,3)];return e in n?[n.get(e),e,s,4]:[this.undefinedColor,r,s,4]}return[this.undefinedColor,r,s,0]}}Y.SemType="Aminoacids",Y.SemTypeMultipleAlignment="AminoacidsMultipleAlignment",Y.undefinedColor="rgb(100,100,100)",Y.Names={G:"Glycine",L:"Leucine",Y:"Tyrosine",S:"Serine",E:"Glutamic acid",Q:"Glutamine",D:"Aspartic acid",N:"Asparagine",F:"Phenylalanine",A:"Alanine",K:"Lysine",R:"Arginine",H:"Histidine",C:"Cysteine",V:"Valine",P:"Proline",W:"Tryptophan",I:"Isoleucine",M:"Methionine",T:"Threonine"},Y.AASmiles={G:"NCC(=O)O",L:"N[C@H](CC(C)C)C(=O)O",Y:"NC(CC1=CC=C(O)C=C1)C(=O)O",S:"NC(CO)C(=O)O",E:"N[C@@H](CCC(O)=O)C(=O)O",Q:"N[C@@H](CCC(N)=O)C(=O)O",D:"N[C@@H](CC(O)=O)C(=O)O",N:"N[C@@H](CC(N)=O)C(=O)O",F:"NC(CC1=CC=CC=C1)C(=O)O",A:"N[C@H](C)C(=O)O",K:"NC(CCCCN)C(=O)O",R:"N[C@H](CCCNC(=N)C)C(=O)O",H:"NC(CC1=CN=C[N]1)C(=O)O",C:"N[C@@H](CS)C(=O)O",V:"NC(C(C)C)C(=O)O",P:"N(CCC1)C1C(=O)O",W:"N[C@@H](Cc1c2ccccc2n([H])c1)C(=O)O",I:"N[C@H]([C@H](C)CC)C(=O)O",M:"NC(CCSC)C(=O)O",T:"NC(C(O)C)C(=O)O"},Y.AASmilesTruncated={G:"*C*",L:"CC(C)C[C@H](*)*",Y:"C1=CC(=CC=C1CC(*)*)O",S:"OCC(*)C*",E:"*[C@@H](CCC(O)=O)*",Q:"*N[C@@H](CCC(N)=O)*",D:"*[C@@H](CC(O)=O)*",N:"*[C@@H](CC(N)=O)*",F:"C1=CC=C(C=C1)CC(*)*",A:"C[C@H](*)*",K:"C(CCN)CC(*)*",R:"*[C@H](CCCNC(=N)C)*",H:"C1=C(NC=N1)CC(*)*",C:"C([C@@H](*)*)S",V:"CC(C)C(*)*",P:"C1CCN(*)C1*",W:"*[C@@H](Cc1c2ccccc2n([H])c1)*",I:"CC[C@H](C)[C@H](*)*",M:"CSCCC(*)*",T:"CC(O)C(*)*"},Y.AAFullNames={Ala:"A",Arg:"R",Asn:"N",Asp:"D",Cys:"C",Gln:"Q",Glu:"E",Gly:"G",His:"H",Ile:"I",Leu:"L",Lys:"K",Met:"M",Phe:"F",Pro:"P",Ser:"S",Thr:"T",Trp:"W",Tyr:"Y",Val:"V"};class j{}j.SemType="Nucleotides",j.SemTypeMultipleAlignment="NucleotidesMultipleAlignment",j.Names={A:"Adenine",C:"Cytosine",G:"Guanine",T:"Thymine",U:"Uracil"};class Q extends class{}{static buildPalette(){return[].concat(...Object.values(W.colourPalette))}get(t){const e=class{static hashCode(t){let e=0;if(0===t.length)return e;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e|=0;return e}}.hashCode(t)%Q.palette.length;return function(t){if(null==t)return"rgb(100,100,100)";const e=n.Color.fromHtml(t),r=n.Color.g(e),s=n.Color.r(e),o=n.Color.b(e),i=Math.sqrt(Math.pow(0-s,2)+Math.pow(0-r,2)+Math.pow(0-o,2));return i>210?`rgb(${s/i*210},${r/i*210},${o/i*210})`:n.Color.toRgb(e)}(Q.palette[e])}}function q(t){return t.toString().replace(I,".$1").slice(1).split(".").map((t=>t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):"-"===t?"":t))}function K(t,e){return n=>n.split(t,e)}Q.palette=Q.buildPalette();const B=/(PEPTIDE1|DNA1|RNA1)\{([^}]+)}/g,z=/\[([^\[\]]+)]/g;function J(t){B.lastIndex=0;const e=B.exec(t.toString()),n=e?e[2]:null;return(n?n.split("."):[]).map((t=>{z.lastIndex=0;const e=z.exec(t);return e&&e.length>=2?e[1]:t}))}async function Z(){const t=n.Func.find({package:"Bio",name:"getMonomerLibHelper"});if(0===t.length)throw new Error('Package "Bio" must be installed for MonomerLibHelper.');return(await t[0].prepare().call()).getOutputParamValue()}var X=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};const tt="Libraries",et={"HELMCoreLibrary.json":"HELMCoreLibrary.json"};d("findMonomers",(()=>{let t,e=null;m((()=>X(void 0,void 0,void 0,(function*(){t=yield Z(),e=yield r.dapi.userDataStorage.get(tt,!0),yield r.dapi.userDataStorage.post(tt,et,!0),yield t.loadLibraries(!0)})))),E((()=>X(void 0,void 0,void 0,(function*(){yield r.dapi.userDataStorage.put(tt,e,!0)}))));const n={withoutMissed:{test:"PEPTIDE1{meI.hHis.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set},withMissed:{test:"PEPTIDE1{meI.missed2.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set(["missed2"])}};for(const[t,e]of Object.entries(n))h(t,(()=>X(void 0,void 0,void 0,(function*(){s(e.test,e.tgt)}))));function s(t,e){p(function(t){const e=Object.keys(org.helm.webeditor.monomerTypeList()),n=[],r=[];for(let t=0;t<e.length;t++)n.push(new scil.helm.Monomers.getMonomerSet(e[t])),Object.keys(n[t]).forEach((e=>{r.push(n[t][e].id)}));return new Set(t.filter((t=>!r.includes(t))))}(N(t)),e)}}));const nt=$;var rt=t.n(nt),st=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};d("renderers",(()=>{h("missedInLib",(()=>st(void 0,void 0,void 0,(function*(){yield function(){return st(this,void 0,void 0,(function*(){const t=yield r.dapi.files.readCsv("System:AppData/Helm/tests/sample_HELM-missedInLib.csv"),e=t.getCol("HELM"),o=r.shell.addTableView(t);yield function(t,e="Timeout exceeded",n=500){return s(this,void 0,void 0,(function*(){return new Promise(((r,s)=>{setTimeout((()=>{clearInterval(o),s(new Error(e))}),n);const o=setInterval((()=>{t()&&(clearInterval(o),r())}),50)}))}))}((()=>rt()(o.root).find(".d4-grid canvas").length>0),"Table view canvas not found",100),g(e.semType,n.SEMTYPE.MACROMOLECULE),g(e.getTag(n.TAGS.UNITS),"helm"),g(e.getTag(n.TAGS.CELL_RENDERER),"helm");const i=e.getTag(".cell-renderer.render.error");if(i){const t=JSON.parse(i),e=new Error(t.message);throw e.stack=t.stack,e}}))}()}))))}));const ot=new n.Package;function it(t,e,r){return s=this,o=void 0,a=function*(){const s=yield b({category:t,test:e,testContext:r});return n.DataFrame.fromObjects(s)},new((i=void 0)||(i=Promise))((function(t,e){function n(t){try{l(a.next(t))}catch(t){e(t)}}function r(t){try{l(a.throw(t))}catch(t){e(t)}}function l(e){var s;e.done?t(e.value):(s=e.value,s instanceof i?s:new i((function(t){t(s)}))).then(n,r)}l((a=a.apply(s,o||[])).next())}));var s,o,i,a}helm_test=e})();
|
|
1
|
+
var helm_test;(()=>{"use strict";var t={n:e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},d:(e,n)=>{for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{_package:()=>it,test:()=>at,tests:()=>o});const n=DG,r=grok;var s=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};const o={},i="Auto Tests",a={};let l;var c;!function(t){t.notNull=function(t,e){if(null==t)throw new Error(`${null==e?"Value":e} not defined`)}}(c||(c={}));class u{constructor(t,e){this.catchUnhandled=!0,this.report=!1,void 0!==t&&(this.catchUnhandled=t),void 0!==e&&(this.report=e)}}class h{constructor(t,e,n,r){var o;this.category=t,this.name=e,null!=r||(r={}),null!==(o=r.timeout)&&void 0!==o||(r.timeout=3e4),this.options=r,this.test=()=>s(this,void 0,void 0,(function*(){return new Promise(((t,e)=>s(this,void 0,void 0,(function*(){let r="";try{r=yield n()}catch(t){e(t)}t(r)}))))}))}}function g(t,e,n){null==o[l]&&(o[l]={}),null==o[l].tests&&(o[l].tests=[]),o[l].tests.push(new h(l,t,e,n))}function f(t,e=!0,n){if(n=n?`${n}, `:"",t!==e)throw new Error(`${n}Expected "${e}", got "${t}"`)}function p(t,e,n=.001,r){if(t===Number.POSITIVE_INFINITY&&e===Number.POSITIVE_INFINITY||t===Number.NEGATIVE_INFINITY&&e===Number.NEGATIVE_INFINITY||t===Number.NaN&&e===Number.NaN||isNaN(t)&&isNaN(e))return;const s=Math.abs(t-e)<n;if(f(s,!0,`${null!=r?r:""} (tolerance = ${n})`),!s)throw new Error(`Expected ${e}, got ${t} (tolerance = ${n})`)}function d(t,e){for(const[n,r]of Object.entries(e)){if(!t.hasOwnProperty(n))throw new Error(`Expected property "${n}" not found`);const e=t[n];if(e instanceof Array&&r instanceof Array)m(e,r);else if(e instanceof Object&&r instanceof Object)d(e,r);else if(Number.isFinite(e)&&Number.isFinite(r))p(e,r);else if(e!=r)throw new Error(`Expected (${r}) for key '${n}', got (${e})`)}}function m(t,e){const n=t.length,r=e.length;if(n!=r)throw new Error(`Arrays are of different length: actual array length is ${n} and expected array length is ${r}`);for(let r=0;r<n;r++)if(t[r]instanceof Array&&e[r]instanceof Array)m(t[r],e[r]);else if(t[r]instanceof Object&&e[r]instanceof Object)d(t[r],e[r]);else if(t[r]!=e[r])throw new Error(`Expected ${e[r]} at position ${r}, got ${t[r]}`)}function C(t,e,n){var r;l=t,e(),o[l]&&(o[l].clear=null===(r=null==n?void 0:n.clear)||void 0===r||r,o[l].timeout=null==n?void 0:n.timeout)}function E(t){null==o[l]&&(o[l]={}),o[l].before=t}function T(t){null==o[l]&&(o[l]={}),o[l].after=t}function b(t,e){return t.replace(new RegExp(e.name,"gi"),e.nqName)}function A(t,e,r){var o,i,a,l,c;return s(this,void 0,void 0,(function*(){let s;const u=null!=e&&!t.name.toLowerCase().startsWith(e.toLowerCase()),h=(null===(o=t.options)||void 0===o?void 0:o.skipReason)||u,g=u?"skipped":null===(i=t.options)||void 0===i?void 0:i.skipReason;h||console.log(`Started ${t.category} ${t.name}`);const f=new Date;try{if(h)s={success:!0,result:g,ms:0,skipped:!0};else{const e=3e4===(null===(a=t.options)||void 0===a?void 0:a.timeout)&&r?r:null===(l=t.options)||void 0===l?void 0:l.timeout;s={success:!0,result:null!==(c=yield y(t.test,n.Test.isInBenchmark?12e5:e))&&void 0!==c?c:"OK",ms:0,skipped:!1}}}catch(t){s={success:!1,result:t.toString(),ms:0,skipped:!1}}const p=new Date;return s.ms=p-f,h||console.log(`Finished ${t.category} ${t.name} for ${s.ms} ms`),s.category=t.category,s.name=t.name,s}))}function N(t){return s(this,void 0,void 0,(function*(){yield new Promise((e=>setTimeout(e,t)))}))}function y(t,e){return s(this,void 0,void 0,(function*(){let n=null;const r=new Promise(((t,r)=>{n=setTimeout((()=>{r("EXECUTION TIMEOUT")}),e)}));try{return yield Promise.race([t(),r])}finally{n&&clearTimeout(n)}}))}function w(t){t=S(t,"$")[0];const e=[];if(!scil.Utils.isNullOrEmpty(t)){const n=S(t,"|");for(let r=0;r<n.length;++r){let s=(t=O(n[r]).str).indexOf("{");s=(t=t.substring(s+1)).indexOf("}");const o=S(t=t.substring(0,s),".");for(const t of o)if(t&&""!==t)if(t.startsWith("[")&&t.includes("]")){const n=t.substring(1,t.indexOf("]"));e.push(n);const r=t.substring(t.indexOf("]")+1);o.push(r)}else if(t.includes("[")&&t.endsWith("]")){const n=t.substring(t.lastIndexOf("[")+1,t.length-1);e.push(n);const r=t.substring(0,t.lastIndexOf("["));o.push(r)}else if(t.includes("(")&&t.includes(")")){const e=t.substring(0,t.indexOf("(")),n=t.substring(t.lastIndexOf(")")+1),r=[e,t.substring(e.length+1,t.length-n.length-1),n];for(const t of r)o.push(t)}else e.push(t)}}return e}function S(t,e){const n=[];let r="",s=0,o=0,i=0,a=0;for(let l=0;l<t.length;++l){let c=t.substring(l,l+1);if(c==e&&0==o&&0==s&&0==i&&0==a)n.push(r),r="";else{if(r+=c,a>0&&"\\"==c&&l+1<t.length){++l;const e=t.substring(l,l+1);r+=e,c+=e}'"'==c?l>0&&"\\"==t.substring(l-1,l)||(a=0==a?1:0):"["==c?++o:"]"==c?--o:"("==c?++s:")"==c?--s:"{"==c?++i:"}"==c&&--i}}return n.push(r),n}function O(t){const e=v(t,'"');if(null!=e.tag)return e;const n=v(t,"'");return{tag:e.tag,repeat:n.tag,str:n.str}}function v(t,e){let n=null;if(scil.Utils.endswith(t,e)){let r=t.length-1;for(;r>0&&(r=t.lastIndexOf(e,r-1),!(r<=0||"\\"!=t.substring(r-1,r))););r>0&&r<t.length-1&&(n=t.substring(r+1,t.length-1),t=t.substring(0,r))}return null!=n&&(n=function(t){return scil.Utils.isNullOrEmpty(t)?t:t.replace(/[\\]./g,(function(t){switch(t){case"\\r":return"\r";case"\\n":return"\n";case"\\t":return"\t";default:return t.substring(1)}}))}(n.replace(new RegExp("\\"+e,"g"),e))),{tag:n,str:t}}var M=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};C("Helm",(()=>{const t=[["L-hArg(Et,Et)","E","F","G","C","E"],["L-hArg(Et,Et)","L-hArg(Et,Et)","E","F","G"],["dhp","m1A","p","r","T","p","r","T","p","r","G","p"],["r","mo6pur","p","r","T","p","r","T","p","r","G","p"],["afhna","mo6pur","36SS","r","T","p"]],e=["comples-monomer","complex-monomer+side-chain","complex-monomer+side-chain-RNA","complex-side-chain","complex+side-chain+linker"];g("parseHelm",(()=>M(void 0,void 0,void 0,(function*(){const t=[["meI","hHis","Aca","N","T","dK","Thr_PO3H2","D-Tyr_Et","Aze","dV","E","Phe_4Me"],["A","C","T","G","W","E","Q"],["R","U","P","T","A"],["A","*","G","C"]],e=["PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.Aze.dV.E.N.dV.Phe_4Me}$$$","PEPTIDE1{A.C.T.G.C.T.W.G.T.W.E.C.W.C.Q.W}|PEPTIDE2{A.C.T.G.C.T.W.G.T.W.E.Q}$PEPTIDE1,PEPTIDE1,5:R3-14:R3|PEPTIDE2,PEPTIDE1,2:R3-12:R3$$$","RNA1{R(U)P.R(T)P}|RNA2{P.R(A)P.R(A)}$RNA1,RNA2,2:pair-6:pair|RNA1,RNA2,5:pair-3:pair$$$","PEPTIDE1{A.*.G.C}$$$$V2.0"];for(let n=0;n<e.length;++n){const r=new Set(w(e[n])),s=Array.from(r);f(JSON.stringify(s),JSON.stringify(t[n]))}})))),["PEPTIDE1{[L-hArg(Et,Et)].E.F.G}|PEPTIDE2{C.E}$PEPTIDE1,PEPTIDE2,2:R3-1:R1$$$V2.0","PEPTIDE1{[L-hArg(Et,Et)]([L-hArg(Et,Et)]).E.F.G}$$$$","RNA1{[dhp]([m1A])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{r([mo6pur])p.r(T)p.r(T)p.r(G)p}$$$$V2.0","RNA1{[afhna]([mo6pur])[36SS].r(T)p}$$$$V2.0"].forEach(((n,r)=>{g(e[r],(()=>M(void 0,void 0,void 0,(function*(){const e=w(n);e.sort();const s=t[r];s.sort(),m(e,s)}))))}))})),wu;class P{constructor(t,e,n){this.name=t,this.alphabet=e,this.cutoff=n}}class I extends P{constructor(t,e,n){super(t.name,t.alphabet,t.cutoff),this.freq=e,this.similarity=n}}const L=/(\[[A-Za-z0-9-_]+\]|.)/g,H=new class{constructor(){this.fasta={peptide:new Set(["G","L","Y","S","E","Q","D","N","F","A","K","R","H","C","V","P","W","I","M","T"]),dna:new Set(["A","C","G","T"]),rna:new Set(["A","C","G","U"])}}},G=[new P("PT",H.fasta.peptide,.5),new P("DNA",H.fasta.dna,.55),new P("RNA",H.fasta.rna,.55)],R=new Uint32Array(65536),_={gapOpen:8,gapExtend:2,scoringMatrix:[[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4],[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4],[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4],[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,-4],[0,-3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4],[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4],[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4],[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4],[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4],[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,1,-4,-3,-1,-4],[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4],[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4],[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4],[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4],[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4],[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4],[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,1,-4,-3,-2,11,2,-3,-4,-3,-2,-4],[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4],[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4],[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4],[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4],[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4],[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1]],alphabetIndexes:{A:0,R:1,N:2,D:3,C:4,Q:5,E:6,G:7,H:8,I:9,L:10,K:11,M:12,F:13,P:14,S:15,T:16,W:17,Y:18,V:19,B:20,Z:21,X:22,"*":23}};var x;!function(t){t.HAMMING="Hamming",t.LEVENSHTEIN="Levenshtein",t.NEEDLEMANN_WUNSCH="Needlemann-Wunsch"}(x||(x={}));const k={[x.HAMMING]:function(){return(t,e)=>{let n=0;t.length!==e.length&&(n=Math.abs(t.length-e.length));let r=0;for(let n=0;n<Math.min(t.length,e.length);n++)t[n]!==e[n]&&r++;return r+=n,r/=Math.max(t.length,e.length),r}},[x.LEVENSHTEIN]:function(){return(t,e)=>((t,e)=>{if(t.length<e.length){const n=e;e=t,t=n}return 0===e.length?t.length:t.length<=32?((t,e)=>{const n=t.length,r=e.length,s=1<<n-1;let o=-1,i=0,a=n,l=n;for(;l--;)R[t.charCodeAt(l)]|=1<<l;for(l=0;l<r;l++){let t=R[e.charCodeAt(l)];const n=t|i;t|=(t&o)+o^o,i|=~(t|o),o&=t,i&s&&a++,o&s&&a--,i=i<<1|1,o=o<<1|~(n|i),i&=n}for(l=n;l--;)R[t.charCodeAt(l)]=0;return a})(t,e):((t,e)=>{const n=e.length,r=t.length,s=[],o=[],i=Math.ceil(n/32),a=Math.ceil(r/32);for(let t=0;t<i;t++)o[t]=-1,s[t]=0;let l=0;for(;l<a-1;l++){let i=0,a=-1;const c=32*l,u=Math.min(32,r)+c;for(let e=c;e<u;e++)R[t.charCodeAt(e)]|=1<<e;for(let t=0;t<n;t++){const n=R[e.charCodeAt(t)],r=o[t/32|0]>>>t&1,l=s[t/32|0]>>>t&1,c=n|i,u=((n|l)&a)+a^a|n|l;let h=i|~(u|a),g=a&u;h>>>31^r&&(o[t/32|0]^=1<<t),g>>>31^l&&(s[t/32|0]^=1<<t),h=h<<1|r,g=g<<1|l,a=g|~(c|h),i=h&c}for(let e=c;e<u;e++)R[t.charCodeAt(e)]=0}let c=0,u=-1;const h=32*l,g=Math.min(32,r-h)+h;for(let e=h;e<g;e++)R[t.charCodeAt(e)]|=1<<e;let f=r;for(let t=0;t<n;t++){const n=R[e.charCodeAt(t)],i=o[t/32|0]>>>t&1,a=s[t/32|0]>>>t&1,l=n|c,h=((n|a)&u)+u^u|n|a;let g=c|~(h|u),p=u&h;f+=g>>>r-1&1,f-=p>>>r-1&1,g>>>31^i&&(o[t/32|0]^=1<<t),p>>>31^a&&(s[t/32|0]^=1<<t),g=g<<1|i,p=p<<1|a,u=p|~(l|g),c=g&l}for(let e=h;e<g;e++)R[t.charCodeAt(e)]=0;return f})(t,e)})(t,e)/Math.max(t.length,e.length)},[x.NEEDLEMANN_WUNSCH]:function(t){return(e,n)=>{const{gapOpen:r,gapExtend:s,scoringMatrix:o,alphabetIndexes:i}={..._,...t},a=[new Array(e.length+1).fill(0),new Array(e.length+1).fill(0)],l=new Array(e.length+1).fill(!1),c=new Array(e.length+1).fill(!1);let u=0,h=1;for(let t=1;t<e.length+1;t++)a[0][t]=-r-(t-1)*s;for(let t=1;t<n.length+1;t++){a[h][0]=-r-(t-1)*s;for(let g=1;g<e.length+1;g++){const f=a[u][g-1]+o[i[e[g-1]]][i[n[t-1]]],p=a[u][g]-(l[g]?s:r),d=a[h][g-1]-(c[g-1]?s:r);a[h][g]=Math.max(f,d,p),a[h][g]===f?(l[g]=!1,c[g]=!1):a[h][g]===d?(l[g]=!1,c[g]=!0):(l[g]=!0,c[g]=!1)}u=h,h=(h+1)%2}const g=e.split("").map((t=>o[i[t]][i[t]])).reduce(((t,e)=>t+e),0),f=n.split("").map((t=>o[i[t]][i[t]])).reduce(((t,e)=>t+e),0),p=Math.max(g,f);return(p-a[u][e.length])/p}}},U=new class{constructor(){this.uhTemp=`units-handler.${n.SEMTYPE.MACROMOLECULE}`}};class D{static setUnitsToFastaColumn(t){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE||"fasta"!==t.column.getTag(n.TAGS.UNITS))throw new Error(`The column of notation 'fasta' must be '${n.SEMTYPE.MACROMOLECULE}'.`);t.column.setTag(n.TAGS.UNITS,"fasta"),D.setTags(t)}static setUnitsToSeparatorColumn(t,e){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE||"separator"!==t.column.getTag(n.TAGS.UNITS))throw new Error(`The column of notation 'separator' must be '${n.SEMTYPE.MACROMOLECULE}'.`);if(!e)throw new Error("The column of notation 'separator' must have the separator tag.");t.column.setTag(n.TAGS.UNITS,"separator"),t.column.setTag("separator",e),D.setTags(t)}static setUnitsToHelmColumn(t){if(t.column.semType!==n.SEMTYPE.MACROMOLECULE)throw new Error(`The column of notation 'helm' must be '${n.SEMTYPE.MACROMOLECULE}'`);t.column.setTag(n.TAGS.UNITS,"helm"),D.setTags(t)}static setTags(t){const e=t.column.getTag(n.TAGS.UNITS),r=t.stats;if(Object.keys(r.freq).some((t=>t.length>1)),["fasta","separator"].includes(e)){if(0===Object.keys(r.freq).length)throw new Error("Alphabet is empty");const e=r.sameLength?"SEQ.MSA":"SEQ";t.column.setTag("aligned",e);const n=function(t,e,n="-"){const r=e.map((e=>{const r=function(t,e,n="-"){const r=new Set([...new Set(Object.keys(t)),...e]);r.delete(n);const s=[],o=[];for(const n of r)s.push(n in t?t[n]:0),o.push(e.has(n)?1:0);const i=new F(s),a=new F(o);return function(t,e){if(t.length!=e.length)throw new Error("The dimensionality of the vectors must match");let n=0;for(let r=0;r<t.length;r++)n+=t[r]*e[r];return n}(i,a)/(W(i)*W(a))}(t,e.alphabet,n);return new I(e,t,r)}));let s;const o=Math.max(...r.map((t=>t.similarity>t.cutoff?t.similarity:-1)));s=o>0?r.find((t=>t.similarity===o)).name:"UN";return s}(r.freq,G);if(t.column.setTag("alphabet",n),"UN"===n){const e=Object.keys(r.freq).length,n=Object.keys(r.freq).some((t=>t.length>1));t.column.setTag(".alphabetSize",e.toString()),t.column.setTag(".alphabetIsMultichar",n?"true":"false")}}}get column(){return this._column}get units(){return this._units}get notation(){return this._notation}get defaultGapSymbol(){return this._defaultGapSymbol}get separator(){const t=this.column.getTag("separator")??void 0;if("separator"===this.notation&&void 0===t)throw new Error(`Separator is mandatory for column '${this.column.name}' of notation '${this.notation}'.`);return t}get aligned(){const t=this.column.getTag("aligned");if(!t&&(this.isFasta()||this.isSeparator()))throw new Error("Tag aligned not set");return t}get alphabet(){const t=this.column.getTag("alphabet");if(!t&&(this.isFasta()||this.isSeparator()))throw new Error("Tag alphabet not set");return t}get helmCompatible(){return this.column.getTag(".isHelmCompatible")}getAlphabetSize(){if("helm"==this.notation||"UN"==this.alphabet){const t=this.column.getTag(".alphabetSize");let e;if(t)e=parseInt(t);else{const t=this.stats;e=Object.keys(t.freq).length}return e}switch(this.alphabet){case"PT":return 20;case"DNA":case"RNA":return 4;case"NT":return console.warn("Unexpected alphabet 'NT'."),4;default:throw new Error(`Unexpected alphabet '${this.alphabet}'.`)}}getAlphabetIsMultichar(){return"helm"===this.notation||"UN"===this.alphabet&&"true"===this.column.getTag(".alphabetIsMultichar")}get splitted(){if(null===this._splitted){const t=this.getSplitter(),e=this._column.length;this._splitted=new Array(e);const n=this._column.getRawData(),r=this._column.categories;for(let s=0;s<e;s++){const e=r[n[s]];this._splitted[s]=t(e)}}return this._splitted}get stats(){if(null===this._stats){const t={};let e=!0,n=null;for(const r of this.splitted){null==n?n=r.length:r.length!==n&&(e=!1);for(const e of r)e in t||(t[e]=0),t[e]+=1}this._stats={freq:t,sameLength:e}}return this._stats}isFasta(){return"fasta"===this.notation}isSeparator(){return"separator"===this.notation}isHelm(){return"helm"===this.notation}isRna(){return"RNA"===this.alphabet}isDna(){return"DNA"===this.alphabet}isPeptide(){return"PT"===this.alphabet}isMsa(){return!!this.aligned&&this.aligned.toUpperCase().includes("MSA")}isHelmCompatible(){return"true"===this.helmCompatible}getNotation(){if(this.units.toLowerCase().startsWith("fasta"))return"fasta";if(this.units.toLowerCase().startsWith("separator"))return"separator";if(this.units.toLowerCase().startsWith("helm"))return"helm";throw new Error(`Column '${this.column.name}' has unexpected notation '${this.units}'.`)}getNewColumn(t,e){const r=this.column,s=r.length,o=t.toLowerCase()+"("+r.name+")",i=r.dataFrame.columns.getUnusedName(o),a=n.Column.fromList("string",i,new Array(s).fill(""));if(a.semType=n.SEMTYPE.MACROMOLECULE,a.setTag(n.TAGS.UNITS,t),"separator"===t){if(!e)throw new Error("Notation 'separator' requires separator value.");a.setTag("separator",e)}a.setTag(n.TAGS.CELL_RENDERER,"Macromolecule");const l=r.getTag("aligned");l&&a.setTag("aligned",l);const c=r.getTag("alphabet");c&&a.setTag("alphabet",c);let u=r.getTag(".alphabetSize");u&&a.setTag(".alphabetSize",u);const h=r.getTag(".alphabetIsMultichar");return void 0!==h&&a.setTag(".alphabetIsMultichar",h),"helm"==t&&(u=this.getAlphabetSize().toString(),a.setTag(".alphabetSize",u)),a}static getNewColumn(t){const e=D.getOrCreate(t),n=e.notation;return e.getNewColumn(n)}static unitsStringIsValid(t){return t=t.toLowerCase(),["fasta","separator","helm"].some((e=>t.startsWith(e.toLowerCase())))}static getNewColumnFromParams(t,e,r){if(!D.unitsStringIsValid(r))throw new Error("Invalid format of 'units' parameter");const s=n.Column.fromList("string",e,new Array(t).fill(""));return s.semType=n.SEMTYPE.MACROMOLECULE,s.setTag(n.TAGS.UNITS,r),s}getSplitter(){return function(t){if(t.semType!==n.SEMTYPE.MACROMOLECULE)throw new Error(`Get splitter for semType "${n.SEMTYPE.MACROMOLECULE}" only.`);return function(t,e,n){if(t.toLowerCase().startsWith("fasta"))return q;if(t.toLowerCase().startsWith("separator"))return K(e,void 0);if(t.toLowerCase().startsWith("helm"))return X;throw new Error(`Unexpected units ${t} .`)}(t.getTag(n.TAGS.UNITS),t.getTag("separator"))}(this._column)}getDistanceFunctionName(){if(!this.isFasta())throw new Error("Only FASTA notation is supported");if(this.isMsa())return x.HAMMING;switch(this.alphabet){case"DNA":case"RNA":default:return x.LEVENSHTEIN;case"PT":return x.NEEDLEMANN_WUNSCH}}getDistanceFunction(){return k[this.getDistanceFunctionName()]()}async checkHelmCompatibility(){if(this.column.tags.has(".isHelmCompatible"))return"true"===this.column.getTag(".isHelmCompatible");const t=(await Z()).getBioLib().getMonomerSymbolsByType("PEPTIDE".toString()),e=new Set(t),n=K(this.separator);for(const t of this.column.categories){const r=n(t);for(const t of r)if(!e.has(t))return this.column.setTag(".isHelmCompatible","false"),!1}return this.column.setTag(".isHelmCompatible","true"),!0}constructor(t){if(this._splitted=null,this._stats=null,t.type!=n.TYPE.STRING)throw new Error(`Unexpected column type '${t.type}', must be '${n.TYPE.STRING}'.`);this._column=t;const e=this._column.getTag(n.TAGS.UNITS);if(null==e)throw new Error("Units are not specified in column");if(this._units=e,this._notation=this.getNotation(),this._defaultGapSymbol=this.isFasta()?D._defaultGapSymbolsDict.FASTA:this.isHelm()?D._defaultGapSymbolsDict.HELM:D._defaultGapSymbolsDict.SEPARATOR,!this.column.tags.has("aligned")||!this.column.tags.has("alphabet")||!this.column.tags.has(".alphabetIsMultichar")&&!this.isHelm()&&"UN"===this.alphabet)if(this.isFasta())D.setUnitsToFastaColumn(this);else if(this.isSeparator()){const e=t.getTag("separator");D.setUnitsToSeparatorColumn(this,e)}else{if(!this.isHelm())throw new Error(`Unexpected units '${this.column.getTag(n.TAGS.UNITS)}'.`);D.setUnitsToHelmColumn(this)}if(!this.column.tags.has(".alphabetIsMultichar"))if(this.isHelm())this.column.setTag(".alphabetIsMultichar","true");else if(["UN"].includes(this.alphabet))throw new Error(`For column '${this.column.name}' of alphabet '${this.alphabet}' tag '.alphabetIsMultichar' is mandatory.`)}static getOrCreate(t){return U.uhTemp in t.temp||(t.temp[U.uhTemp]=new D(t)),t.temp[U.uhTemp]}}D._defaultGapSymbolsDict={HELM:"*",SEPARATOR:"",FASTA:"-"};class F extends Float32Array{}function W(t){let e=0;for(let n=0;n<t.length;n++)e+=t[n]*t[n];return Math.sqrt(e)}class V{static makePalette(t,e=!1,n=V){const r={};return t.forEach((t=>{const n=t[0],s=t[1];n.forEach(((t,n)=>{r[t]=this.colourPalette[s][e?0:n]}))})),new n(r)}constructor(t){this._palette=t}get(t){return this._palette[t]}}V.undefinedColor="rgb(100,100,100)",V.colourPalette={orange:["rgb(255,187,120)","rgb(245,167,100)","rgb(235,137,70)","rgb(205, 111, 71)"],all_green:["rgb(44,160,44)","rgb(74,160,74)","rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)","rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],all_blue:["rgb(31,119,180)","rgb(23,190,207)","rgb(122, 102, 189)","rgb(158,218,229)","rgb(141, 124, 217)","rgb(31, 120, 150)"],magenta:["rgb(162,106,192)","rgb(197,165,224)","rgb(208,113,218)"],red:["rgb(214,39,40)","rgb(255,152,150)"],st_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(31,119,180)"],dark_blue:["rgb(31,119,180)","rgb(31, 120, 150)"],light_blue:["rgb(23,190,207)","rgb(158,218,229)","rgb(108, 218, 229)","rgb(23,190,227)"],lilac_blue:["rgb(124,102,211)","rgb(149,134,217)","rgb(97, 81, 150)"],dark_green:["rgb(23,103,57)","rgb(30,110,96)","rgb(60,131,95)","rgb(24,110,79)"],green:["rgb(44,160,44)","rgb(74,160,74)"],light_green:["rgb(152,223,138)","rgb(182, 223, 138)","rgb(152, 193, 138)"],st_green:["rgb(44,160,44)","rgb(152,223,138)","rgb(39, 174, 96)","rgb(74,160,74)"],pink:["rgb(247,182,210)"],brown:["rgb(140,86,75)","rgb(102, 62, 54)"],gray:["rgb(127,127,127)","rgb(199,199,199)","rgb(196,156,148)","rgb(222, 222, 180)"],yellow:["rgb(188,189,34)"],white:["rgb(230,230,230)"]};class Y extends V{static get Lesk(){return void 0===this.lesk&&(this.lesk=this.makePalette([[["G","A","S","T"],"orange"],[["C","V","I","L","P","F","Y","M","W"],"all_green"],[["N","Q","H"],"magenta"],[["D","E"],"red"],[["K","R"],"all_blue"]],!1,Y)),this.lesk}static get GrokGroups(){return void 0===this.grokGroups&&(this.grokGroups=this.makePalette([[["C","U"],"yellow"],[["G","P"],"red"],[["A","V","I","L","M","F","Y","W"],"all_green"],[["R","H","K"],"light_blue"],[["D","E"],"dark_blue"],[["S","T","N","Q"],"orange"]],!1,Y)),this.grokGroups}static get RasMol(){return void 0===this.rasMol&&(this.rasMol=new Y({D:"#E60A0A",E:"#E60A0A",C:"#E6E600",M:"#E6E600",K:"#145AFF",R:"#145AFF",S:"#FA9600",T:"#FA9600",F:"#3232AA",Y:"#3232AA",N:"#00DCDC",Q:"#00DCDC",G:"#EBEBEB",L:"#0F820F",V:"#0F820F",I:"#0F820F",A:"#C8C8C8",W:"#B45AB4",H:"#8282D2",P:"#DC9682",others:"#BEA06E"})),this.rasMol}get(t){const e=t in Y.aaSynonyms?Y.aaSynonyms[t]:t;return super.get(e)}}Y.aaSynonyms={MeNle:"L",MeA:"A",MeG:"G",MeF:"F"};class j{static getPalette(t="grok"){switch(t){case"grok":return Y.GrokGroups;case"lesk":return Y.Lesk;default:throw new Error(`ChemPalette: scheme \`${t}\` does not exist`)}}static getInnerOuter(t){let e=0,n="",r="";for(const s of t)"("==s?e++:")"==s?e--:e?n+=s:r+=s;return isNaN(parseInt(n))?[r,n]:[r,""]}static getColorAAPivot(t="",e="grok"){const n=this.getPalette(e);let[r,s]=this.getInnerOuter(t);if(r=r.length>6?`${r.slice(0,3)}...`:r,s=s.length>6?`${s.slice(0,3)}...`:s,1==t.length||"("==t[1]){const e=t[0]?.toUpperCase();return e in n?[n.get(e),e,s,1]:[this.undefinedColor,r,s,1]}if("d"==t[0]&&t[1]in n&&(2==t.length||"("==t[2])){const e=t[1]?.toUpperCase();return e in n?[n.get(e),e,s,2]:[this.undefinedColor,r,s,2]}if(t.substring(0,3)in this.AAFullNames&&(3==t.length||"("==t[3])){const e=this.AAFullNames[t.substring(0,3)];return e in n?[n.get(e),e,s,3]:[this.undefinedColor,r,s,3]}if(t[0]?.toLowerCase()==t[0]&&t.substring(1,3)in this.AAFullNames&&(4==t.length||"("==t[4])){const e=this.AAFullNames[t.substring(1,3)];return e in n?[n.get(e),e,s,4]:[this.undefinedColor,r,s,4]}return[this.undefinedColor,r,s,0]}}j.SemType="Aminoacids",j.SemTypeMultipleAlignment="AminoacidsMultipleAlignment",j.undefinedColor="rgb(100,100,100)",j.Names={G:"Glycine",L:"Leucine",Y:"Tyrosine",S:"Serine",E:"Glutamic acid",Q:"Glutamine",D:"Aspartic acid",N:"Asparagine",F:"Phenylalanine",A:"Alanine",K:"Lysine",R:"Arginine",H:"Histidine",C:"Cysteine",V:"Valine",P:"Proline",W:"Tryptophan",I:"Isoleucine",M:"Methionine",T:"Threonine"},j.AASmiles={G:"NCC(=O)O",L:"N[C@H](CC(C)C)C(=O)O",Y:"NC(CC1=CC=C(O)C=C1)C(=O)O",S:"NC(CO)C(=O)O",E:"N[C@@H](CCC(O)=O)C(=O)O",Q:"N[C@@H](CCC(N)=O)C(=O)O",D:"N[C@@H](CC(O)=O)C(=O)O",N:"N[C@@H](CC(N)=O)C(=O)O",F:"NC(CC1=CC=CC=C1)C(=O)O",A:"N[C@H](C)C(=O)O",K:"NC(CCCCN)C(=O)O",R:"N[C@H](CCCNC(=N)C)C(=O)O",H:"NC(CC1=CN=C[N]1)C(=O)O",C:"N[C@@H](CS)C(=O)O",V:"NC(C(C)C)C(=O)O",P:"N(CCC1)C1C(=O)O",W:"N[C@@H](Cc1c2ccccc2n([H])c1)C(=O)O",I:"N[C@H]([C@H](C)CC)C(=O)O",M:"NC(CCSC)C(=O)O",T:"NC(C(O)C)C(=O)O"},j.AASmilesTruncated={G:"*C*",L:"CC(C)C[C@H](*)*",Y:"C1=CC(=CC=C1CC(*)*)O",S:"OCC(*)C*",E:"*[C@@H](CCC(O)=O)*",Q:"*N[C@@H](CCC(N)=O)*",D:"*[C@@H](CC(O)=O)*",N:"*[C@@H](CC(N)=O)*",F:"C1=CC=C(C=C1)CC(*)*",A:"C[C@H](*)*",K:"C(CCN)CC(*)*",R:"*[C@H](CCCNC(=N)C)*",H:"C1=C(NC=N1)CC(*)*",C:"C([C@@H](*)*)S",V:"CC(C)C(*)*",P:"C1CCN(*)C1*",W:"*[C@@H](Cc1c2ccccc2n([H])c1)*",I:"CC[C@H](C)[C@H](*)*",M:"CSCCC(*)*",T:"CC(O)C(*)*"},j.AAFullNames={Ala:"A",Arg:"R",Asn:"N",Asp:"D",Cys:"C",Gln:"Q",Glu:"E",Gly:"G",His:"H",Ile:"I",Leu:"L",Lys:"K",Met:"M",Phe:"F",Pro:"P",Ser:"S",Thr:"T",Trp:"W",Tyr:"Y",Val:"V"};class Q{}Q.SemType="Nucleotides",Q.SemTypeMultipleAlignment="NucleotidesMultipleAlignment",Q.Names={A:"Adenine",C:"Cytosine",G:"Guanine",T:"Thymine",U:"Uracil"};class B extends class{}{static buildPalette(){return[].concat(...Object.values(V.colourPalette))}get(t){const e=class{static hashCode(t){let e=0;if(0===t.length)return e;for(let n=0;n<t.length;n++)e=(e<<5)-e+t.charCodeAt(n),e|=0;return e}}.hashCode(t)%B.palette.length;return function(t){if(null==t)return"rgb(100,100,100)";const e=n.Color.fromHtml(t),r=n.Color.g(e),s=n.Color.r(e),o=n.Color.b(e),i=Math.sqrt(Math.pow(0-s,2)+Math.pow(0-r,2)+Math.pow(0-o,2));return i>210?`rgb(${s/i*210},${r/i*210},${o/i*210})`:n.Color.toRgb(e)}(B.palette[e])}}function q(t){return t.toString().replace(L,".$1").slice(1).split(".").map((t=>t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):"-"===t?"":t))}function K(t,e){return n=>n.split(t,e)}B.palette=B.buildPalette();const z=/(PEPTIDE1|DNA1|RNA1)\{([^}]+)}/g,J=/\[([^\[\]]+)]/g;function X(t){z.lastIndex=0;const e=z.exec(t.toString()),n=e?e[2]:null;return(n?n.split("."):[]).map((t=>{J.lastIndex=0;const e=J.exec(t);return e&&e.length>=2?e[1]:t}))}async function Z(){const t=n.Func.find({package:"Bio",name:"getMonomerLibHelper"});if(0===t.length)throw new Error('Package "Bio" must be installed for MonomerLibHelper.');return(await t[0].prepare().call()).getOutputParamValue()}var tt=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};const et="Libraries",nt={"HELMCoreLibrary.json":"HELMCoreLibrary.json"};C("findMonomers",(()=>{let t,e=null;E((()=>tt(void 0,void 0,void 0,(function*(){t=yield Z(),e=yield r.dapi.userDataStorage.get(et,!0),yield r.dapi.userDataStorage.post(et,nt,!0),yield t.loadLibraries(!0)})))),T((()=>tt(void 0,void 0,void 0,(function*(){yield r.dapi.userDataStorage.put(et,e,!0)}))));const n={withoutMissed:{test:"PEPTIDE1{meI.hHis.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set},withMissed:{test:"PEPTIDE1{meI.missed2.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et}$$$$",tgt:new Set(["missed2"])}};for(const[t,e]of Object.entries(n))g(t,(()=>tt(void 0,void 0,void 0,(function*(){s(e.test,e.tgt)}))));function s(t,e){d(function(t){const e=Object.keys(org.helm.webeditor.monomerTypeList()),n=[],r=[];for(let t=0;t<e.length;t++)n.push(new scil.helm.Monomers.getMonomerSet(e[t])),Object.keys(n[t]).forEach((e=>{r.push(n[t][e].id)}));return new Set(t.filter((t=>!r.includes(t))))}(w(t)),e)}}));const rt=$;var st=t.n(rt),ot=function(t,e,n,r){return new(n||(n=Promise))((function(s,o){function i(t){try{l(r.next(t))}catch(t){o(t)}}function a(t){try{l(r.throw(t))}catch(t){o(t)}}function l(t){var e;t.done?s(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(i,a)}l((r=r.apply(t,e||[])).next())}))};C("renderers",(()=>{g("missedInLib",(()=>ot(void 0,void 0,void 0,(function*(){yield function(){return ot(this,void 0,void 0,(function*(){const t=yield r.dapi.files.readCsv("System:AppData/Helm/tests/sample_HELM-missedInLib.csv"),e=t.getCol("HELM"),o=r.shell.addTableView(t);yield function(t,e="Timeout exceeded",n=500,r=50){return s(this,void 0,void 0,(function*(){return new Promise(((s,o)=>{setTimeout((()=>{clearInterval(i),o(new Error(e))}),n);const i=setInterval((()=>{t()&&(clearInterval(i),s())}),r)}))}))}((()=>st()(o.root).find(".d4-grid canvas").length>0),"Table view canvas not found",100),f(e.semType,n.SEMTYPE.MACROMOLECULE),f(e.getTag(n.TAGS.UNITS),"helm"),f(e.getTag(n.TAGS.CELL_RENDERER),"helm");const i=e.getTag(".cell-renderer.render.error");if(i){const t=JSON.parse(i),e=new Error(t.message);throw e.stack=t.stack,e}}))}()}))))}));const it=new n.Package;function at(t,e,l){return c=this,g=void 0,p=function*(){const c=yield function(t){var e,l,c,g,f;return s(this,void 0,void 0,(function*(){const p=null===(l=null===(e=r.functions.getCurrentCall())||void 0===e?void 0:e.func)||void 0===l?void 0:l.package;yield function(t,e){return s(this,void 0,void 0,(function*(){if(a[t])return;const e=o;if(void 0!==e["Auto Tests"]||Object.keys(e).find((t=>t.startsWith(i))))return void(a[t]=!0);const n=[],l=yield r.dapi.functions.filter(`package.id = "${t}"`).list(),c=new RegExp(/skip:\s*([^,\s]+)|wait:\s*(\d+)|cat:\s*([^,\s]+)/g);for(const t of l){const o=t.options.test;if(o&&Array.isArray(o)&&o.length)for(let a=0;a<o.length;a++){const l=o[a].matchAll(c),u={};Array.from(l).forEach((t=>{t[0].startsWith("skip")?u.skip=t[1]:t[0].startsWith("wait")?u.wait=parseInt(t[2]):t[0].startsWith("cat")&&(u.cat=t[3])}));const g=new h(i,1===o.length?t.name:`${t.name} ${a+1}`,(()=>s(this,void 0,void 0,(function*(){const e=yield r.functions.eval(b(o[a],t));if(u.wait&&(yield N(u.wait)),"boolean"==typeof e&&!e)throw`Failed: ${o[a]}, expected true, got ${e}`}))),{skipReason:u.skip});if(u.cat){const t="Auto Tests: "+u.cat;g.category=t,void 0===e[t]&&(e[t]={tests:[],clear:!0}),e[t].tests.push(g)}else n.push(g)}}a[t]=!0,n.length&&(e["Auto Tests"]={tests:n,clear:!0})}))}(p.id);const d=[];console.log("Running tests"),null!=t||(t={}),null!==(c=(f=t).testContext)&&void 0!==c||(f.testContext=new u),r.shell.lastError="";for(const[e,s]of Object.entries(o)){if(null!=(null==t?void 0:t.category)&&!e.toLowerCase().startsWith(null==t?void 0:t.category.toLowerCase()))continue;console.log(`Started ${e} category`);try{s.before&&(yield s.before())}catch(t){s.beforeStatus=t.toString()}const o=null!==(g=s.tests)&&void 0!==g?g:[],i=[];if(s.clear)for(let e=0;e<o.length;e++)i.push(yield A(o[e],null==t?void 0:t.test,s.timeout)),r.shell.closeAll(),n.Balloon.closeAll();else for(let e=0;e<o.length;e++)i.push(yield A(o[e],null==t?void 0:t.test,s.timeout));const a=(yield Promise.all(i)).filter((t=>"skipped"!=t.result));try{s.after&&(yield s.after())}catch(t){s.afterStatus=t.toString()}s.afterStatus&&a.push({category:e,name:"init",result:s.afterStatus,success:!1,ms:0,skipped:!1}),s.beforeStatus&&a.push({category:e,name:"init",result:s.beforeStatus,success:!1,ms:0,skipped:!1}),d.push(...a)}if(t.testContext.catchUnhandled&&(yield N(1e3),r.shell.lastError.length>0&&d.push({category:"Unhandled exceptions",name:"exceptions",result:r.shell.lastError,success:!1,ms:0,skipped:!1})),t.testContext.report){const t=new n.Logger,e=d.filter((t=>t.success)).length,r=d.filter((t=>t.skipped)).length,s=d.filter((t=>!t.success)),o="Package @package tested: @successful successful, @skipped skipped, @failed failed tests",i={successful:e,skipped:r,failed:s.length,package:p};for(const t of s)Object.assign(i,{[`${t.category} | ${t.name}`]:t.result});t.log(o,i,"package-tested")}return d}))}({category:t,test:e,testContext:l});return n.DataFrame.fromObjects(c)},new((f=void 0)||(f=Promise))((function(t,e){function n(t){try{s(p.next(t))}catch(t){e(t)}}function r(t){try{s(p.throw(t))}catch(t){e(t)}}function s(e){var s;e.done?t(e.value):(s=e.value,s instanceof f?s:new f((function(t){t(s)}))).then(n,r)}s((p=p.apply(c,g||[])).next())}));var c,g,f,p}helm_test=e})();
|
|
2
2
|
//# sourceMappingURL=package-test.js.map
|