@datagrok/helm 2.0.9 → 2.1.1
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/dist/package-test.js +498 -59815
- package/dist/package.js +2449 -56787
- package/package.json +4 -4
- package/src/__jest__/remote.test.ts +11 -3
- package/src/cell-renderer.ts +110 -0
- package/src/constants.ts +10 -8
- package/src/package.ts +90 -485
- package/src/tests/helm-tests.ts +1 -27
- package/src/utils.ts +154 -29
- package/{test-Helm-3afbd4014fa1-19878b63.html → test-Helm-c4a2a41b7b00-07e4a533.html} +8 -8
- package/files/libraries/HELMCoreLibrary.json +0 -18218
package/src/utils.ts
CHANGED
|
@@ -1,35 +1,160 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import { RGROUP_CAP_GROUP_NAME, RGROUP_CAP_GROUP_SMILES, jsonSdfMonomerLibDict, MONOMER_SYMBOL, RGROUP_ALTER_ID, RGROUPS, RGROUP_LABEL, SDF_MONOMER_NAME } from "./constants";
|
|
3
3
|
|
|
4
|
-
export function
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
4
|
+
export function getParts(subParts: string[], s: string): string[] {
|
|
5
|
+
let j = 0;
|
|
6
|
+
let allParts: string[] = [];
|
|
7
|
+
for (let k = 0; k < subParts.length; ++k) {
|
|
8
|
+
let indexOfMonomer = s.indexOf(subParts[k]);
|
|
9
|
+
let helmBeforeMonomer = s.slice(j, indexOfMonomer);
|
|
10
|
+
allParts.push(helmBeforeMonomer);
|
|
11
|
+
allParts.push(subParts[k]);
|
|
12
|
+
s = s.substring(indexOfMonomer + subParts[k].length);
|
|
13
|
+
}
|
|
14
|
+
allParts.push(s);
|
|
15
|
+
return allParts;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function parseHelm(s: string) {
|
|
19
|
+
var sections = split(s, '$');
|
|
20
|
+
s = sections[0];
|
|
21
|
+
var monomers = [];
|
|
22
|
+
//@ts-ignore
|
|
23
|
+
if (!scil.Utils.isNullOrEmpty(s)) {
|
|
24
|
+
var seqs = split(s, '|');
|
|
25
|
+
for (var i = 0; i < seqs.length; ++i) {
|
|
26
|
+
var e = detachAnnotation(seqs[i]);
|
|
27
|
+
s = e.str;
|
|
28
|
+
|
|
29
|
+
var p = s.indexOf('{');
|
|
30
|
+
|
|
31
|
+
s = s.substring(p + 1);
|
|
32
|
+
p = s.indexOf('}');
|
|
33
|
+
s = s.substring(0, p);
|
|
34
|
+
|
|
35
|
+
var ss = split(s, '.');
|
|
36
|
+
for (var monomer of ss) {
|
|
37
|
+
if (monomer.includes('(') && monomer.includes(')')) {
|
|
38
|
+
var elements = monomer.replace(/[()]/g, '').split('');
|
|
39
|
+
for (var el of elements) {
|
|
40
|
+
monomers.push(el);
|
|
29
41
|
}
|
|
42
|
+
} else if (monomer.includes('[') && monomer.includes(']')) {
|
|
43
|
+
var element = monomer.match(/(?<=\[).*?(?=\])/g, '');
|
|
44
|
+
monomers.push(element[0]);
|
|
45
|
+
} else {
|
|
46
|
+
monomers.push(monomer);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return monomers;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export function findMonomers(helmString: string) {
|
|
55
|
+
//@ts-ignore
|
|
56
|
+
const types = Object.keys(org.helm.webeditor.monomerTypeList());
|
|
57
|
+
const monomers: any = [];
|
|
58
|
+
const monomer_names: any = [];
|
|
59
|
+
for (var i = 0; i < types.length; i++) {
|
|
60
|
+
//@ts-ignore
|
|
61
|
+
monomers.push(new scil.helm.Monomers.getMonomerSet(types[i]));
|
|
62
|
+
Object.keys(monomers[i]).forEach(k => {
|
|
63
|
+
monomer_names.push(monomers[i][k].id);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const split_string = parseHelm(helmString);
|
|
67
|
+
return new Set(split_string.filter(val => !monomer_names.includes(val)));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function split(s: string, sep: string) {
|
|
71
|
+
var ret = [];
|
|
72
|
+
var frag = '';
|
|
73
|
+
var parentheses = 0;
|
|
74
|
+
var bracket = 0;
|
|
75
|
+
var braces = 0;
|
|
76
|
+
var quote = 0;
|
|
77
|
+
for (var i = 0; i < s.length; ++i) {
|
|
78
|
+
var c = s.substring(i, i + 1);
|
|
79
|
+
if (c == sep && bracket == 0 && parentheses == 0 && braces == 0 && quote == 0) {
|
|
80
|
+
ret.push(frag);
|
|
81
|
+
frag = '';
|
|
82
|
+
} else {
|
|
83
|
+
frag += c;
|
|
84
|
+
if (quote > 0) {
|
|
85
|
+
if (c == '\\' && i + 1 < s.length) {
|
|
86
|
+
++i;
|
|
87
|
+
var c2 = s.substring(i, i + 1);
|
|
88
|
+
frag += c2;
|
|
89
|
+
c += c2;
|
|
30
90
|
}
|
|
31
|
-
}
|
|
32
|
-
|
|
91
|
+
}
|
|
92
|
+
if (c == '\"') {
|
|
93
|
+
if (!(i > 0 && s.substring(i - 1, i) == '\\'))
|
|
94
|
+
quote = quote == 0 ? 1 : 0;
|
|
95
|
+
} else if (c == '[')
|
|
96
|
+
++bracket;
|
|
97
|
+
else if (c == ']')
|
|
98
|
+
--bracket;
|
|
99
|
+
else if (c == '(')
|
|
100
|
+
++parentheses;
|
|
101
|
+
else if (c == ')')
|
|
102
|
+
--parentheses;
|
|
103
|
+
else if (c == '{')
|
|
104
|
+
++braces;
|
|
105
|
+
else if (c == '}')
|
|
106
|
+
--braces;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
ret.push(frag);
|
|
110
|
+
return ret;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function detachAnnotation(s: string) {
|
|
114
|
+
var ret = _detachAppendix(s, '\"');
|
|
115
|
+
if (ret.tag != null)
|
|
116
|
+
return ret;
|
|
117
|
+
|
|
118
|
+
var r = _detachAppendix(s, '\'');
|
|
119
|
+
return {tag: ret.tag, repeat: r.tag, str: r.str};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function _detachAppendix(s: string, c: string) {
|
|
123
|
+
var tag = null;
|
|
124
|
+
//@ts-ignore
|
|
125
|
+
if (scil.Utils.endswith(s, c)) {
|
|
126
|
+
var p = s.length - 1;
|
|
127
|
+
while (p > 0) {
|
|
128
|
+
p = s.lastIndexOf(c, p - 1);
|
|
129
|
+
if (p <= 0 || s.substring(p - 1, p) != '\\')
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (p > 0 && p < s.length - 1) {
|
|
134
|
+
tag = s.substring(p + 1, s.length - 1);
|
|
135
|
+
s = s.substring(0, p);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (tag != null)
|
|
139
|
+
tag = tag.replace(new RegExp('\\' + c, 'g'), c);
|
|
140
|
+
return {tag: unescape(tag), str: s};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function unescape(s: string) {
|
|
144
|
+
//@ts-ignore
|
|
145
|
+
if (scil.Utils.isNullOrEmpty(s))
|
|
146
|
+
return s;
|
|
147
|
+
|
|
148
|
+
return s.replace(/[\\]./g, function(m) {
|
|
149
|
+
switch (m) {
|
|
150
|
+
case '\\r':
|
|
151
|
+
return '\r';
|
|
152
|
+
case '\\n':
|
|
153
|
+
return '\n';
|
|
154
|
+
case '\\t':
|
|
155
|
+
return '\t';
|
|
156
|
+
default:
|
|
157
|
+
return m.substring(1);
|
|
33
158
|
}
|
|
34
|
-
|
|
35
|
-
|
|
159
|
+
});
|
|
160
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<html><head><meta charset="utf-8"/><title>Helm Test Report. Datagrok version datagrok/datagrok:
|
|
1
|
+
<html><head><meta charset="utf-8"/><title>Helm Test Report. Datagrok version datagrok/datagrok:bleeding-edge SHA=c4a2a41b7b00. Commit 07e4a533.</title><style type="text/css">html,
|
|
2
2
|
body {
|
|
3
3
|
font-family: Arial, Helvetica, sans-serif;
|
|
4
4
|
font-size: 1rem;
|
|
@@ -229,7 +229,7 @@ header {
|
|
|
229
229
|
font-size: 1rem;
|
|
230
230
|
padding: 0 0.5rem;
|
|
231
231
|
}
|
|
232
|
-
</style></head><body><div id="jesthtml-content"><header><h1 id="title">Helm Test Report. Datagrok version datagrok/datagrok:
|
|
232
|
+
</style></head><body><div id="jesthtml-content"><header><h1 id="title">Helm Test Report. Datagrok version datagrok/datagrok:bleeding-edge SHA=c4a2a41b7b00. Commit 07e4a533.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2023-01-05 12:03:23</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed">1 passed</div><div class="summary-failed summary-empty">0 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts</div><div class="suite-time warn">13.336s</div></div><div class="suite-tests"><div class="test-result passed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">passed</div><div class="test-duration">2.808s</div></div></div></div><div class="suite-consolelog"><div class="suite-consolelog-header">Console Log</div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at Object.<anonymous> (/home/runner/work/public/public/packages/Helm/src/__jest__/test-node.ts:61:11)
|
|
233
233
|
at Generator.next (<anonymous>)
|
|
234
234
|
at fulfilled (/home/runner/work/public/public/packages/Helm/src/__jest__/test-node.ts:28:58)
|
|
235
235
|
at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Using web root: http://localhost:8080</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:40:11
|
|
@@ -239,11 +239,11 @@ header {
|
|
|
239
239
|
at Object.<anonymous>.__awaiter (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:30:12)
|
|
240
240
|
at Object.<anonymous> (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:38:23)
|
|
241
241
|
at Promise.then.completed (/home/runner/work/public/public/packages/Helm/node_modules/jest-circus/build/utils.js:391:28)
|
|
242
|
-
at new Promise (<anonymous>)</pre><pre class="suite-consolelog-item-message">Testing Helm package</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:
|
|
242
|
+
at new Promise (<anonymous>)</pre><pre class="suite-consolelog-item-message">Testing Helm package</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:72:11
|
|
243
243
|
at Generator.next (<anonymous>)
|
|
244
244
|
at fulfilled (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:31:58)
|
|
245
|
-
at
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
</pre
|
|
245
|
+
at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Test result : Success : 20 : Helm.Helm.parseHelm : OK
|
|
246
|
+
</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:74:11
|
|
247
|
+
at Generator.next (<anonymous>)
|
|
248
|
+
at fulfilled (/home/runner/work/public/public/packages/Helm/src/__jest__/remote.test.ts:31:58)
|
|
249
|
+
at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message"/></div></div></div></div></body></html>
|