@datagrok/bio 1.7.4 → 1.7.7
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/detectors.js +1 -1
- package/dist/package-test.js +406 -123
- package/dist/package.js +335 -98
- package/files/samples/sample_SEPARATOR_PT.csv +101 -0
- package/files/tests/testCereal.csv +78 -0
- package/package.json +3 -2
- package/src/__jest__/remote.test.ts +30 -16
- package/src/__jest__/test-node.ts +1 -1
- package/src/const.ts +21 -0
- package/src/package-test.ts +1 -1
- package/src/package.ts +13 -5
- package/src/tests/convert-test.ts +34 -10
- package/src/tests/detectors-test.ts +6 -0
- package/src/tests/{renderer-test.ts → renderers-test.ts} +25 -16
- package/src/tests/splitters-test.ts +7 -0
- package/src/utils/cell-renderer.ts +59 -16
- package/src/utils/convert.ts +40 -15
- package/src/utils/multiple-sequence-alignment.ts +2 -2
- package/src/utils/utils.ts +35 -0
- package/test-Bio-34f75e5127b8-7c42ea4b.html +335 -0
- package/test-Bio-34f75e5127b8-1314754e.html +0 -256
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
id,sequence
|
|
2
|
+
1,M-F-I-T-M-F-C-M-F-W-L-F-I-F-I-L-M-M-L-I-F-F-M-E-A-M-I-K-P-M-L
|
|
3
|
+
2,A-Q-M-T-M-F-C-I-M-F-F-L-M-L-M-F-I-I-M-I-M-F-M-I-L-E-A-M-K-K-M-L-N-A-I
|
|
4
|
+
3,I-L-M-T-M-F-C-I-C-W-M-I-M-I-F-F-L-L-L-I-M-F-M-L-M-A-M-M-K-M-L-I-F-L
|
|
5
|
+
4,F-Q-M-T-M-I-C-M-L-F-F-L-M-M-F-M-F-D-L-I-I-L-F-I-M-M-E-A-M-M-K-P-D-L-M-F-I
|
|
6
|
+
5,L-L-M-T-M-F-C-F-F-M-M-L-L-M-F-F-M-F-M-I-M-F-M-Y-F-E-A-M-K-K-F-F-I-L-F
|
|
7
|
+
6,A-M-M-T-M-F-C-F-M-L-I-M-M-F-I-L-L-F-I-D-I-I-M-E-A-M-L-K-L-D-N-F-I
|
|
8
|
+
7,L-L-M-T-M-F-C-M-I-L-I-S-M-I-M-I-L-M-M-I-M-F-L-M-E-A-M-K-K-I-F-F-A-V
|
|
9
|
+
8,L-I-M-T-M-F-C-M-L-I-L-I-F-M-L-M-D-F-M-I-I-M-I-F-F-E-A-M-F-K-M-L-F-L-M-F
|
|
10
|
+
9,F-Q-M-T-M-F-C-L-M-I-F-M-W-I-F-M-M-M-M-I-L-D-I-F-I-E-A-M-I-K-F-I-N-L-F-M
|
|
11
|
+
10,F-L-M-T-M-F-C-I-L-I-N-I-M-I-I-W-M-I-I-M-L-M-F-E-A-M-F-K-L-D-I-I-F
|
|
12
|
+
11,F-F-M-T-M-F-C-M-M-I-F-L-L-L-I-M-I-I-I-M-I-M-D-M-I-M-E-A-M-K-K-M-M-D-I-I-I
|
|
13
|
+
12,I-M-M-T-M-F-C-I-C-L-L-F-W-L-L-F-M-L-L-I-M-D-M-M-F-E-A-M-L-K-F-I-M-M-I
|
|
14
|
+
13,M-Q-M-T-M-F-C-F-M-L-L-L-M-F-F-M-D-I-M-I-I-M-L-L-D-E-A-M-L-K-L-D-L-I-L
|
|
15
|
+
14,L-Q-M-T-M-F-C-I-F-W-M-L-F-M-L-F-M-L-F-I-F-F-L-F-L-E-A-M-L-K-F-I-N-L-I
|
|
16
|
+
15,I-I-M-T-M-F-C-M-I-M-I-I-S-I-F-F-I-I-M-I-M-L-F-I-F-E-A-M-I-K-L-D-I-I-A-M
|
|
17
|
+
16,F-L-M-T-M-L-C-M-C-F-I-L-F-F-F-L-F-M-F-I-M-L-S-F-F-L-E-A-L-I-K-I-L-I-L-I
|
|
18
|
+
17,F-Q-M-T-M-F-C-M-M-I-F-L-F-I-M-W-M-I-I-F-I-I-F-F-I-F-E-A-M-K-M-L-L-L-L
|
|
19
|
+
18,M-F-M-T-M-F-C-M-C-I-M-F-W-I-F-D-I-I-I-I-I-L-F-L-I-E-A-M-L-K-L-F-F-I-I-V
|
|
20
|
+
19,I-M-L-M-T-M-F-C-M-F-F-F-M-W-I-F-M-F-M-L-I-I-F-S-L-I-L-E-A-M-M-K-P-D-I-I-I
|
|
21
|
+
20,A-F-L-T-M-F-C-F-M-W-L-L-M-L-M-F-L-F-L-I-M-I-I-I-D-E-A-M-I-K-L-F-F-L
|
|
22
|
+
21,F-Q-M-T-M-F-C-F-L-L-M-S-F-L-M-I-I-M-I-F-I-L-M-F-F-D-E-A-M-F-K-I-L-N-F-I
|
|
23
|
+
22,M-I-M-T-M-F-C-M-L-M-N-L-L-M-F-F-M-L-I-I-L-I-L-M-I-E-A-M-L-K-L-M-M-A-I
|
|
24
|
+
23,M-I-M-T-M-F-C-M-I-I-L-M-F-H-M-M-M-F-L-I-F-I-L-Y-E-A-M-K-K-L-F-N-M-I-V
|
|
25
|
+
24,L-F-T-M-F-C-M-C-W-M-I-M-I-F-W-I-I-I-L-M-I-M-I-F-L-A-M-K-K-P-M-F-L-F
|
|
26
|
+
25,A-F-L-M-T-M-F-C-I-C-W-F-L-F-F-L-F-M-I-L-I-M-L-M-F-F-E-A-M-K-K-F-F-L-V
|
|
27
|
+
26,L-L-M-T-M-F-C-M-C-M-N-M-M-M-F-M-L-I-M-M-I-L-M-S-Y-I-E-A-M-F-K-F-F-L-I
|
|
28
|
+
27,L-Q-L-T-M-F-C-F-I-L-L-I-F-L-M-I-L-L-I-L-M-I-L-F-E-A-M-M-K-M-F-F-A-L
|
|
29
|
+
28,I-Q-M-T-M-F-C-M-M-M-M-F-L-M-L-F-F-I-D-I-M-F-L-M-M-E-M-M-F-K-M-D-L-M-F-F
|
|
30
|
+
29,M-M-T-M-F-C-I-W-I-F-M-M-I-L-D-M-M-F-F-I-I-M-I-I-A-M-M-M-F-L-L-I-I-V
|
|
31
|
+
30,F-Q-M-T-M-F-C-M-M-L-F-M-F-I-L-W-D-I-F-I-M-I-S-M-L-E-A-M-M-K-L-D-I-I-M
|
|
32
|
+
31,L-F-M-T-M-F-C-M-M-M-N-F-M-I-F-W-L-I-L-I-F-F-S-L-F-E-A-M-K-K-L-I-L-A-M
|
|
33
|
+
32,A-F-M-T-M-F-C-M-F-L-W-F-I-L-H-L-W-I-F-F-I-M-M-L-I-M-I-E-A-M-I-K-I-D-I-A-V
|
|
34
|
+
33,L-L-T-M-F-C-M-I-L-I-F-W-H-F-M-F-M-D-I-M-M-M-M-I-F-E-A-M-L-M-I-F-I-M-I
|
|
35
|
+
34,I-M-M-T-M-F-C-F-C-F-L-I-F-H-M-M-I-F-D-I-M-I-S-M-I-E-A-M-K-K-I-I-M-L-L
|
|
36
|
+
35,F-M-M-T-M-F-C-M-M-M-L-F-I-I-M-F-L-I-M-M-I-D-I-L-L-F-I-D-E-A-M-M-K-D-F-I-L
|
|
37
|
+
36,I-M-M-T-M-F-C-M-I-I-L-F-M-F-M-F-M-M-I-I-I-M-L-F-F-M-L-E-A-M-F-K-M-M-F-F
|
|
38
|
+
37,L-L-M-T-M-F-C-M-L-W-M-M-L-F-I-F-F-I-M-L-I-F-I-S-L-F-E-A-M-K-K-I-F-I-I-M
|
|
39
|
+
38,F-I-M-T-M-F-C-M-M-L-L-L-F-F-F-I-I-L-D-I-M-L-M-F-I-E-A-M-K-K-L-L-L-L
|
|
40
|
+
39,I-M-M-T-M-F-C-F-M-M-M-S-M-M-F-F-F-L-I-I-I-I-L-F-M-F-D-M-A-M-K-I-L-L-I
|
|
41
|
+
40,M-F-M-T-M-F-C-M-F-I-L-I-L-L-L-W-I-I-D-I-M-F-M-L-D-E-A-M-K-K-P-D-F-L
|
|
42
|
+
41,L-I-M-T-M-F-C-M-C-M-F-L-I-L-W-M-M-F-I-M-L-I-I-I-E-A-M-K-K-P-I-I-L-I
|
|
43
|
+
42,A-F-M-T-M-F-C-F-M-M-M-F-M-H-F-M-L-I-F-I-F-M-I-F-M-E-A-M-K-K-F-F-L-F-L-M
|
|
44
|
+
43,A-F-I-Q-M-T-M-L-C-M-C-M-L-L-M-F-F-L-D-I-F-I-I-I-I-F-L-D-E-A-M-M-K-P-L-M-L-L
|
|
45
|
+
44,L-Q-M-T-M-F-C-M-F-M-I-I-L-F-D-M-I-M-M-M-M-M-E-A-M-L-K-I-M-I-F
|
|
46
|
+
45,A-L-M-T-M-F-C-F-I-W-N-S-I-F-I-F-I-F-D-I-L-M-I-L-L-I-E-A-M-F-K-M-D-N-I-I
|
|
47
|
+
46,L-M-M-T-M-F-C-L-M-L-F-S-W-L-M-W-L-M-I-I-F-I-I-M-M-I-L-E-A-M-L-K-P-L-F-A-F-V
|
|
48
|
+
47,F-F-M-T-M-F-C-M-F-F-I-M-F-L-I-F-F-L-L-L-I-M-L-F-M-M-E-A-M-L-K-I-F-L
|
|
49
|
+
48,L-M-M-M-T-M-F-C-I-F-M-L-L-F-F-F-F-M-F-I-M-M-M-F-D-E-A-M-F-K-M-D-M-I-L
|
|
50
|
+
49,Q-I-T-M-F-C-I-F-F-M-F-I-I-M-W-L-F-F-F-L-F-F-L-F-E-A-M-L-K-M-I-M-A-L
|
|
51
|
+
50,I-I-M-T-M-F-C-I-M-L-I-L-W-I-F-L-F-I-I-I-I-M-I-L-I-A-M-K-K-L-I-L-L-L
|
|
52
|
+
51,I-L-M-T-M-F-C-M-M-L-I-I-F-F-F-M-L-F-F-I-L-I-I-L-D-F-F-F-E-A-M-L-K-I-D-M-M-I
|
|
53
|
+
52,F-I-M-T-M-F-C-M-C-W-F-I-L-L-I-M-M-I-I-I-F-L-I-D-E-A-M-M-K-M-F-L-M-M
|
|
54
|
+
53,F-I-M-T-M-F-C-M-L-L-M-F-S-L-M-F-F-M-M-M-I-L-I-F-Y-I-E-A-M-I-K-M-M-L-F-I
|
|
55
|
+
54,I-Q-M-T-M-F-C-M-C-W-M-F-L-H-M-M-F-L-D-I-L-F-I-F-L-D-E-A-M-L-K-M-I-I-F-L
|
|
56
|
+
55,F-M-M-T-M-F-C-M-L-I-L-M-M-H-L-F-F-F-I-I-M-D-M-I-E-A-M-L-K-M-D-M-L-V
|
|
57
|
+
56,L-M-M-T-M-F-C-M-F-I-N-S-M-L-L-M-M-F-I-L-I-L-M-M-L-F-E-A-M-K-K-P-F-M-I-M
|
|
58
|
+
57,M-L-M-T-M-F-C-L-I-M-N-F-F-M-F-L-M-F-M-I-M-M-M-E-A-M-F-K-M-L-M
|
|
59
|
+
58,I-L-M-T-M-F-C-L-F-F-F-S-F-F-F-I-L-I-M-M-I-Y-I-E-A-M-L-K-I-M-M-I-L
|
|
60
|
+
59,I-I-M-M-T-M-F-C-M-C-L-L-M-L-M-F-W-I-I-M-I-M-I-S-F-L-M-E-A-M-K-K-F-L-I-A-M
|
|
61
|
+
60,I-F-M-T-M-F-C-M-M-F-N-S-F-L-I-F-W-I-I-L-M-F-F-L-L-I-L-E-A-M-M-K-P-L-N-L-V
|
|
62
|
+
61,I-F-I-T-M-F-C-M-I-L-L-S-M-L-F-I-L-F-D-I-F-F-I-I-M-E-I-M-K-K-F-I-I-A-F
|
|
63
|
+
62,I-M-M-T-M-F-C-F-C-M-I-M-F-M-F-I-L-F-L-I-L-F-L-D-E-A-M-M-K-M-L-I-L
|
|
64
|
+
63,I-F-M-T-M-F-C-M-F-L-M-F-M-I-M-L-L-F-D-I-F-L-S-F-F-E-A-M-K-K-F-F-I-A-V
|
|
65
|
+
64,I-Q-M-T-M-F-C-M-I-F-F-S-M-M-F-F-M-D-M-D-I-M-I-F-I-I-E-A-M-F-K-M-N-M-L-L
|
|
66
|
+
65,L-F-M-T-M-F-C-M-F-L-L-M-F-I-L-F-F-I-I-M-D-F-Y-F-F-E-A-M-K-K-P-M-L-I-L-L
|
|
67
|
+
66,A-M-M-T-M-F-C-M-L-L-M-M-F-H-M-L-D-F-I-F-D-F-F-M-E-A-M-K-K-M-M-M-L
|
|
68
|
+
67,A-I-M-T-M-F-C-M-F-L-N-L-M-L-M-M-F-I-F-M-M-I-D-E-A-M-I-K-F-L-L-F-I
|
|
69
|
+
68,M-F-M-T-M-F-C-M-F-I-I-F-L-I-I-M-M-D-L-I-I-M-I-I-M-L-E-A-M-I-F-I-L-I-L-L-L
|
|
70
|
+
69,I-F-M-T-M-F-F-M-F-M-M-I-I-F-W-L-M-W-D-L-M-I-I-F-S-I-M-I-M-A-M-I-K-L-M-M-A-L
|
|
71
|
+
70,I-L-M-T-M-F-C-M-M-L-F-L-L-F-F-F-L-I-I-I-I-F-S-M-M-E-A-M-M-K-P-D-I-M-M
|
|
72
|
+
71,F-F-M-T-M-F-C-M-F-F-I-F-L-H-M-I-F-F-D-I-F-L-F-F-Y-L-E-A-M-M-K-P-M-F-F-I
|
|
73
|
+
72,M-F-M-T-M-F-C-M-L-W-M-F-M-L-H-I-M-F-F-L-I-M-M-M-L-F-E-A-M-F-K-F-M-L-A-F
|
|
74
|
+
73,A-I-M-T-M-F-C-M-M-I-M-M-I-M-L-F-F-L-L-I-L-M-F-L-I-E-A-M-F-K-F-I-F-F-M
|
|
75
|
+
74,M-M-M-T-M-F-C-M-L-M-F-W-I-I-F-I-I-F-L-I-F-I-L-M-I-E-A-M-F-K-M-I-N-I-V
|
|
76
|
+
75,L-L-M-T-M-F-C-M-L-I-M-L-I-M-L-W-L-M-D-I-M-M-M-L-I-E-A-M-K-K-P-L-M-F-F-L
|
|
77
|
+
76,L-Q-I-T-M-F-I-M-M-W-I-L-L-F-M-I-F-I-F-I-L-F-F-E-A-M-M-K-F-M-L-F
|
|
78
|
+
77,I-L-M-T-M-F-C-I-F-F-I-F-F-M-F-M-F-M-F-F-I-M-F-F-L-I-E-A-M-K-K-L-D-I-M-L
|
|
79
|
+
78,M-L-M-T-M-L-C-M-M-M-F-S-L-L-I-F-I-F-L-D-I-I-I-F-I-L-E-A-M-L-K-F-M-M-I
|
|
80
|
+
79,I-L-M-T-M-F-C-M-C-M-M-M-I-M-M-I-I-I-I-M-D-S-F-L-E-A-M-K-K-P-M-M-M-I
|
|
81
|
+
80,Q-M-T-M-F-C-M-M-F-F-I-I-H-M-M-I-I-F-F-M-D-L-I-M-M-L-A-M-K-K-P-D-M-A-I
|
|
82
|
+
81,L-L-M-T-M-I-C-I-L-F-F-M-F-M-F-L-M-M-L-I-I-M-F-L-Y-F-E-A-M-M-K-M-L-N-I-I
|
|
83
|
+
82,M-M-M-M-F-C-M-F-I-F-F-I-H-F-M-L-I-L-I-M-L-I-Y-M-M-I-M-K-I-M-M-N-M-L
|
|
84
|
+
83,A-L-M-T-M-F-C-M-F-I-F-F-M-L-M-M-M-I-I-I-F-F-F-F-E-A-M-M-K-M-F-I-F-V
|
|
85
|
+
84,A-L-M-T-M-F-C-M-W-L-I-L-M-W-F-M-I-I-I-L-M-M-D-E-A-M-K-K-L-L-N-I-L
|
|
86
|
+
85,L-I-I-M-T-M-F-C-M-M-L-L-L-I-I-M-M-F-L-I-F-I-F-L-L-E-A-M-I-K-F-L-L-F-L-L
|
|
87
|
+
86,M-L-M-T-M-F-C-M-L-L-M-F-H-F-L-I-M-M-I-L-I-S-Y-F-E-A-M-K-K-L-I-F-M-L
|
|
88
|
+
87,F-I-M-T-M-F-C-M-M-I-F-I-F-F-F-M-F-D-I-I-L-S-M-M-A-M-F-K-I-D-L-I-M
|
|
89
|
+
88,F-M-T-M-F-C-M-M-W-L-S-L-F-F-M-F-L-I-L-F-F-I-F-I-E-A-M-F-K-L-M-N-F-V
|
|
90
|
+
89,M-M-M-T-M-M-C-M-L-L-I-M-F-L-F-M-F-I-M-F-I-F-M-L-I-E-A-M-K-K-L-D-L-L-I
|
|
91
|
+
90,A-F-M-T-M-F-C-F-M-F-I-S-W-M-M-I-I-F-M-L-I-M-F-I-L-F-E-A-M-M-K-M-F-F-F-L
|
|
92
|
+
91,L-I-M-T-M-F-C-M-I-W-F-I-M-H-F-L-I-L-M-L-I-M-I-L-Y-L-E-A-M-F-K-P-L-I-F-F
|
|
93
|
+
92,M-I-M-T-M-F-C-M-F-I-N-L-W-I-F-F-L-L-D-I-F-F-L-I-M-E-A-M-K-L-D-M-I-M
|
|
94
|
+
93,L-L-M-T-M-F-C-M-F-I-I-M-L-F-F-L-F-M-F-L-I-M-F-F-I-D-E-A-M-F-K-P-L-F-I-M
|
|
95
|
+
94,F-F-M-T-M-F-C-I-F-F-M-S-L-H-L-F-M-L-L-I-I-F-M-F-D-E-A-M-K-K-M-L-L-F-I
|
|
96
|
+
95,I-F-F-T-M-F-L-I-F-L-L-F-I-M-M-M-I-D-M-I-I-F-I-L-L-E-A-M-K-K-P-M-F-I-I
|
|
97
|
+
96,M-F-M-M-T-M-F-C-F-M-I-I-F-F-M-M-M-D-I-M-I-I-M-D-F-I-L-E-A-M-L-K-I-F-L-I-I-I
|
|
98
|
+
97,I-I-M-T-M-F-C-M-I-I-N-M-L-F-F-D-L-L-I-I-I-L-L-E-A-M-L-K-F-D-M-F-F
|
|
99
|
+
98,M-L-M-T-M-F-C-M-L-L-I-M-F-M-I-L-I-L-M-F-I-F-L-L-Y-D-E-A-M-K-K-M-L-M-L-I
|
|
100
|
+
99,L-F-M-T-M-F-C-M-L-I-N-S-L-I-M-I-F-F-D-I-I-I-F-L-E-A-M-F-K-F-F-L-I-L-L
|
|
101
|
+
100,F-L-M-T-M-F-C-M-M-M-F-S-M-M-M-M-F-I-I-F-M-L-L-I-E-A-M-L-K-I-F-N-A-L
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
cereal_name,Calories,Carbohydrates,Fat,Fiber,Potassium,Protein,Sodium,Sugar,Vitamins/Minerals
|
|
2
|
+
Mueslix_Crispy_Blend,160,17,2,3,160,3,150,13,25
|
|
3
|
+
"Muesli_Raisins,_Dates,_&_Almonds",150,16,3,3,170,4,95,11,25
|
|
4
|
+
"Muesli_Raisins,_Peaches,_&_Pecans",150,16,3,3,170,4,150,11,25
|
|
5
|
+
Just_Right_Fruit_&_Nut,140,20,1,2,95,3,170,9,100
|
|
6
|
+
Nutri-Grain_Almond-Raisin,140,21,2,3,130,3,220,7,25
|
|
7
|
+
Total_Raisin_Bran,140,15,1,4,230,3,190,14,100
|
|
8
|
+
Basic_4,130,18,2,2,100,3,210,8,25
|
|
9
|
+
Oatmeal_Raisin_Crisp,130,null,2,null,120,3,170,10,25
|
|
10
|
+
100%_Natural_Bran,120,8,5,2,135,3,15,8,0
|
|
11
|
+
Cap'n'Crunch,120,12,2,0,35,1,220,12,25
|
|
12
|
+
Cinnamon_Toast_Crunch,120,13,3,0,45,1,210,9,25
|
|
13
|
+
"Fruit_&_Fibre_Dates,_Walnuts,_and_Oats",120,12,2,5,200,3,160,10,25
|
|
14
|
+
Fruitful_Bran,120,14,0,5,190,3,240,12,25
|
|
15
|
+
Great_Grains_Pecan,120,13,3,3,100,3,75,4,25
|
|
16
|
+
Honey_Graham_Ohs,120,12,2,1,45,1,220,11,25
|
|
17
|
+
Nut&Honey_Crunch,120,15,1,0,40,2,190,9,25
|
|
18
|
+
Post_Nat._Raisin_Bran,120,11,1,6,260,3,200,14,25
|
|
19
|
+
Raisin_Bran,120,14,1,5,240,3,210,12,25
|
|
20
|
+
Almond_Delight,110,14,2,1,-1,2,200,8,25
|
|
21
|
+
Apple_Cinnamon_Cheerios,110,null,2,null,70,2,180,10,25
|
|
22
|
+
Apple_Jacks,110,11,0,1,30,2,125,14,25
|
|
23
|
+
Cheerios,110,17,2,2,105,6,290,1,25
|
|
24
|
+
Clusters,110,13,2,2,105,3,140,7,25
|
|
25
|
+
Cocoa_Puffs,110,12,1,0,55,1,180,13,25
|
|
26
|
+
Corn_Chex,110,22,0,0,25,2,280,3,25
|
|
27
|
+
Corn_Pops,110,13,0,1,20,1,90,12,25
|
|
28
|
+
Count_Chocula,110,12,1,0,65,1,180,13,25
|
|
29
|
+
Cracklin'_Oat_Bran,110,10,3,4,160,3,140,7,25
|
|
30
|
+
Crispix,110,21,0,1,30,2,220,3,25
|
|
31
|
+
Froot_Loops,110,11,1,1,30,2,125,13,25
|
|
32
|
+
Frosted_Flakes,110,14,0,1,25,1,200,11,25
|
|
33
|
+
Fruity_Pebbles,110,13,1,0,25,1,135,12,25
|
|
34
|
+
Golden_Grahams,110,15,1,0,45,1,280,9,25
|
|
35
|
+
Grape-Nuts,110,17,0,3,90,3,170,3,25
|
|
36
|
+
Honey-comb,110,14,0,0,35,1,180,11,25
|
|
37
|
+
Honey_Nut_Cheerios,110,null,1,null,90,3,250,10,25
|
|
38
|
+
Just_Right_Crunchy__Nuggets,110,17,1,1,60,2,170,6,100
|
|
39
|
+
Kix,110,21,1,0,40,2,260,3,25
|
|
40
|
+
Lucky_Charms,110,12,1,0,55,2,180,12,25
|
|
41
|
+
Rice_Chex,110,23,0,0,30,1,240,2,25
|
|
42
|
+
Rice_Krispies,110,22,0,0,35,2,290,3,25
|
|
43
|
+
Smacks,110,9,1,1,40,2,70,15,25
|
|
44
|
+
Special_K,110,16,0,1,55,6,230,3,25
|
|
45
|
+
Total_Corn_Flakes,110,21,1,0,35,2,200,3,100
|
|
46
|
+
Triples,110,21,1,0,60,2,250,3,25
|
|
47
|
+
Trix,110,13,1,0,25,1,140,12,25
|
|
48
|
+
Wheaties_Honey_Gold,110,16,1,1,60,2,200,8,25
|
|
49
|
+
Corn_Flakes,100,21,0,1,35,2,290,2,25
|
|
50
|
+
Cream_of_Wheat_(Quick),100,21,0,1,-1,3,80,0,0
|
|
51
|
+
Crispy_Wheat_&_Raisins,100,11,1,2,120,2,140,10,25
|
|
52
|
+
Double_Chex,100,18,0,1,80,2,190,5,25
|
|
53
|
+
Frosted_Mini-Wheats,100,14,0,3,100,3,0,7,25
|
|
54
|
+
Golden_Crisp,100,11,0,0,40,2,45,15,25
|
|
55
|
+
Grape_Nuts_Flakes,100,15,1,3,85,3,140,5,25
|
|
56
|
+
Life,100,12,2,2,95,4,150,6,25
|
|
57
|
+
Maypo,100,16,1,0,95,4,0,3,25
|
|
58
|
+
Multi-Grain_Cheerios,100,15,1,2,90,2,220,6,25
|
|
59
|
+
Product_19,100,20,0,1,45,3,320,3,100
|
|
60
|
+
Quaker_Oat_Squares,100,14,1,2,110,4,135,6,25
|
|
61
|
+
Quaker_Oatmeal,100,-1,2,null,110,5,0,-1,0
|
|
62
|
+
Raisin_Nut_Bran,100,null,2,null,140,3,140,8,25
|
|
63
|
+
Total_Whole_Grain,100,16,1,3,110,3,200,3,100
|
|
64
|
+
Wheat_Chex,100,17,1,3,115,3,230,3,25
|
|
65
|
+
Wheaties,100,17,1,3,110,3,200,3,25
|
|
66
|
+
Bran_Chex,90,15,1,4,125,2,200,6,25
|
|
67
|
+
Bran_Flakes,90,13,0,5,190,3,210,5,25
|
|
68
|
+
Nutri-grain_Wheat,90,18,0,3,90,3,170,2,25
|
|
69
|
+
Raisin_Squares,90,15,0,2,110,2,0,6,25
|
|
70
|
+
Shredded_Wheat_'n'Bran,90,19,0,4,140,3,0,0,0
|
|
71
|
+
Shredded_Wheat_spoon_size,90,20,0,3,120,3,0,0,0
|
|
72
|
+
Strawberry_Fruit_Wheats,90,15,0,3,90,2,15,5,25
|
|
73
|
+
Shredded_Wheat,80,16,0,3,95,2,0,0,0
|
|
74
|
+
100%_Bran,70,5,1,10,280,4,130,6,25
|
|
75
|
+
All-Bran,70,7,1,9,320,4,260,5,25
|
|
76
|
+
All-Bran_with_Extra_Fiber,50,8,0,14,330,4,140,0,25
|
|
77
|
+
Puffed_Rice,50,13,0,0,15,1,0,0,0
|
|
78
|
+
Puffed_Wheat,50,10,0,1,50,2,0,0,0
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@datagrok/bio",
|
|
3
3
|
"beta": false,
|
|
4
4
|
"friendlyName": "Bio",
|
|
5
|
-
"version": "1.7.
|
|
5
|
+
"version": "1.7.7",
|
|
6
6
|
"description": "Bio is a [package](https://datagrok.ai/help/develop/develop#packages) for the [Datagrok](https://datagrok.ai) platform",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -11,12 +11,13 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@biowasm/aioli": ">=2.4.0",
|
|
14
|
-
"@datagrok-libraries/bio": "2.8.
|
|
14
|
+
"@datagrok-libraries/bio": "^2.8.4",
|
|
15
15
|
"@datagrok-libraries/utils": "^1.0.0",
|
|
16
16
|
"@datagrok-libraries/ml": "^2.0.10",
|
|
17
17
|
"cash-dom": "latest",
|
|
18
18
|
"datagrok-api": "^1.4.12",
|
|
19
19
|
"dayjs": "latest",
|
|
20
|
+
"rxjs": "^6.5.5",
|
|
20
21
|
"ts-loader": "^9.2.5",
|
|
21
22
|
"typescript": "^4.4.2",
|
|
22
23
|
"openchemlib": "6.0.1"
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import * as utils from './test-node';
|
|
6
6
|
import puppeteer from 'puppeteer';
|
|
7
7
|
|
|
8
|
-
const P_START_TIMEOUT: number =
|
|
8
|
+
const P_START_TIMEOUT: number = 500000;
|
|
9
9
|
let browser: puppeteer.Browser;
|
|
10
10
|
let page: puppeteer.Page;
|
|
11
11
|
|
|
@@ -16,15 +16,30 @@ beforeAll(async () => {
|
|
|
16
16
|
}, P_START_TIMEOUT);
|
|
17
17
|
|
|
18
18
|
afterAll(async () => {
|
|
19
|
-
await browser
|
|
19
|
+
await browser?.close();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
expect.extend({
|
|
23
|
+
checkOutput(received, expected, context) {
|
|
24
|
+
if (received === expected) {
|
|
25
|
+
return {
|
|
26
|
+
message: () => context,
|
|
27
|
+
pass: true
|
|
28
|
+
};
|
|
29
|
+
} else {
|
|
30
|
+
return {
|
|
31
|
+
message: () => context,
|
|
32
|
+
pass: false
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
20
36
|
});
|
|
21
37
|
|
|
22
38
|
it('TEST', async () => {
|
|
23
|
-
const targetPackage:
|
|
39
|
+
const targetPackage:string = process.env.TARGET_PACKAGE ?? 'Bio';
|
|
24
40
|
console.log(`Testing ${targetPackage} package`);
|
|
25
41
|
|
|
26
|
-
|
|
27
|
-
const r = await page.evaluate((targetPackage): Promise<object> => {
|
|
42
|
+
const r = await page.evaluate((targetPackage):Promise<object> => {
|
|
28
43
|
return new Promise<object>((resolve, reject) => {
|
|
29
44
|
(<any>window).grok.functions.eval(targetPackage + ':test()').then((df: any) => {
|
|
30
45
|
const cStatus = df.columns.byName('success');
|
|
@@ -32,23 +47,22 @@ it('TEST', async () => {
|
|
|
32
47
|
const cCat = df.columns.byName('category');
|
|
33
48
|
const cName = df.columns.byName('name');
|
|
34
49
|
let failed = false;
|
|
35
|
-
let
|
|
50
|
+
let passReport = '';
|
|
51
|
+
let failReport = '';
|
|
36
52
|
for (let i = 0; i < df.rowCount; i++) {
|
|
37
|
-
if (
|
|
38
|
-
|
|
53
|
+
if (cStatus.get(i)) {
|
|
54
|
+
passReport += `Test result : ${targetPackage}.${cCat.get(i)}.${cName.get(i)} : ${cMessage.get(i)}\n`;
|
|
55
|
+
} else {
|
|
39
56
|
failed = true;
|
|
57
|
+
failReport += `Test result : ${targetPackage}.${cCat.get(i)}.${cName.get(i)} : ${cMessage.get(i)}\n`;
|
|
40
58
|
}
|
|
41
59
|
}
|
|
42
|
-
resolve({
|
|
60
|
+
resolve({failReport, passReport, failed});
|
|
43
61
|
}).catch((e: any) => reject(e));
|
|
44
62
|
});
|
|
45
63
|
}, targetPackage);
|
|
46
64
|
// @ts-ignore
|
|
47
|
-
console.log(r.
|
|
65
|
+
console.log(r.passReport);
|
|
48
66
|
// @ts-ignore
|
|
49
|
-
expect(r.failed).
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
// it('WebLogo.getAlphabetSimilarity', () => {
|
|
53
|
-
//
|
|
54
|
-
// });
|
|
67
|
+
expect(r.failed).checkOutput(false, r.failReport);
|
|
68
|
+
}, 500000);
|
|
@@ -76,7 +76,7 @@ export async function getBrowserPage(puppeteer: any): Promise<{ browser: any, pa
|
|
|
76
76
|
await page.goto(url);
|
|
77
77
|
try {
|
|
78
78
|
await page.waitForSelector('.grok-preloader');
|
|
79
|
-
await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, {timeout:
|
|
79
|
+
await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, {timeout: 500000});
|
|
80
80
|
} catch (error) {
|
|
81
81
|
throw error;
|
|
82
82
|
}
|
package/src/const.ts
CHANGED
|
@@ -2,3 +2,24 @@ import * as ui from 'datagrok-api/ui';
|
|
|
2
2
|
import * as grok from 'datagrok-api/grok';
|
|
3
3
|
import * as DG from 'datagrok-api/dg';
|
|
4
4
|
|
|
5
|
+
export const jsonSdfMonomerLibDict = {
|
|
6
|
+
'monomerType': null,
|
|
7
|
+
'smiles': null,
|
|
8
|
+
'name': 'MonomerName',
|
|
9
|
+
'author': null,
|
|
10
|
+
'molfile': 'molecule',
|
|
11
|
+
'naturalAnalog': 'MonomerNaturalAnalogCode',
|
|
12
|
+
'rgroups': 'MonomerCaps',
|
|
13
|
+
'createDate': null,
|
|
14
|
+
'id': null,
|
|
15
|
+
'polymerType': 'MonomerType',
|
|
16
|
+
'symbol': 'MonomerCode'
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const RGROUP_FIELD = 'rgroups';
|
|
20
|
+
export const CAP_GROUP_SMILES = 'capGroupSmiles';
|
|
21
|
+
export const RGROUP_ALTER_ID = 'alternateId';
|
|
22
|
+
export const CAP_GROUP_NAME = 'capGroupName';
|
|
23
|
+
export const RGROUP_LABEL = 'label';
|
|
24
|
+
export const MONOMER_SYMBOL = 'symbol';
|
|
25
|
+
export const SDF_MONOMER_NAME = 'MonomerName';
|
package/src/package-test.ts
CHANGED
|
@@ -9,7 +9,7 @@ import './tests/msa-tests';
|
|
|
9
9
|
import './tests/sequence-space-test';
|
|
10
10
|
import './tests/activity-cliffs-tests';
|
|
11
11
|
import './tests/splitters-test';
|
|
12
|
-
import './tests/
|
|
12
|
+
import './tests/renderers-test';
|
|
13
13
|
import './tests/convert-test';
|
|
14
14
|
|
|
15
15
|
export const _package = new DG.Package();
|
package/src/package.ts
CHANGED
|
@@ -15,10 +15,9 @@ import {getEmbeddingColsNames, sequenceSpace} from './utils/sequence-space';
|
|
|
15
15
|
import {AvailableMetrics} from '@datagrok-libraries/ml/src/typed-metrics';
|
|
16
16
|
import {getActivityCliffs} from '@datagrok-libraries/ml/src/viewers/activity-cliffs';
|
|
17
17
|
import {sequenceGetSimilarities, drawTooltip} from './utils/sequence-activity-cliffs';
|
|
18
|
-
import {getMolfilesFromSeq, HELM_CORE_LIB_FILENAME} from './utils/utils';
|
|
18
|
+
import {createJsonMonomerLibFromSdf, getMolfilesFromSeq, HELM_CORE_LIB_FILENAME} from './utils/utils';
|
|
19
19
|
import {getMacroMol} from './utils/atomic-works';
|
|
20
20
|
import {MacromoleculeSequenceCellRenderer} from './utils/cell-renderer';
|
|
21
|
-
import {delay} from '@datagrok-libraries/utils/src/test';
|
|
22
21
|
import {convert} from './utils/convert';
|
|
23
22
|
|
|
24
23
|
//tags: init
|
|
@@ -209,7 +208,8 @@ export async function multipleSequenceAlignmentAny(table: DG.DataFrame, col: DG.
|
|
|
209
208
|
if (!checkInputColumn(col, 'MSA', ['fasta'], ['DNA', 'RNA', 'PT']))
|
|
210
209
|
return null;
|
|
211
210
|
|
|
212
|
-
const
|
|
211
|
+
const unUsedName = table.columns.getUnusedName(`msa(${col.name})`);
|
|
212
|
+
const msaCol = await runKalign(col, false, unUsedName);
|
|
213
213
|
table.columns.add(msaCol);
|
|
214
214
|
|
|
215
215
|
// This call is required to enable cell renderer activation
|
|
@@ -245,7 +245,15 @@ export async function compositionAnalysis(): Promise<void> {
|
|
|
245
245
|
return;
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
-
tv.addViewer('WebLogo', {sequenceColumnName: col.name});
|
|
248
|
+
const wlViewer = tv.addViewer('WebLogo', {sequenceColumnName: col.name});
|
|
249
|
+
grok.shell.tv.dockManager.dock(wlViewer, DG.DOCK_TYPE.DOWN, null, 'Composition analysis', 0.25);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
//top-menu: Bio | Sdf to Json lib...
|
|
253
|
+
//name: sdfToJsonLib
|
|
254
|
+
//input: dataframe table
|
|
255
|
+
export async function sdfToJsonLib(table: DG.DataFrame) {
|
|
256
|
+
const jsonMonomerLibrary = createJsonMonomerLibFromSdf(table);
|
|
249
257
|
}
|
|
250
258
|
|
|
251
259
|
// helper function for importFasta
|
|
@@ -325,7 +333,7 @@ export function importFasta(fileContent: string): DG.DataFrame [] {
|
|
|
325
333
|
])];
|
|
326
334
|
}
|
|
327
335
|
|
|
328
|
-
//name: Bio | Convert
|
|
336
|
+
//name: Bio | Convert ...
|
|
329
337
|
//friendly-name: Bio | Convert
|
|
330
338
|
//tags: panel, bio
|
|
331
339
|
//input: column col {semType: Macromolecule}
|
|
@@ -83,7 +83,7 @@ MKP---SEYV
|
|
|
83
83
|
|
|
84
84
|
separatorGaps: `seq
|
|
85
85
|
F/W//P/H//E/Y
|
|
86
|
-
|
|
86
|
+
/Y/N/R/Q/W/Y/V/
|
|
87
87
|
M/K/P////S/E/Y/V
|
|
88
88
|
`,
|
|
89
89
|
|
|
@@ -133,6 +133,7 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
// FASTA tests
|
|
136
|
+
// fasta -> separator
|
|
136
137
|
test('testFastaPtToSeparator', async () => {
|
|
137
138
|
await _testConvert(Samples.fastaPt, converter(NOTATION.SEPARATOR, '-'), Samples.separatorPt);
|
|
138
139
|
});
|
|
@@ -142,7 +143,11 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
|
|
|
142
143
|
test('testFastaRnaToSeparator', async () => {
|
|
143
144
|
await _testConvert(Samples.fastaRna, converter(NOTATION.SEPARATOR, '*'), Samples.separatorRna);
|
|
144
145
|
});
|
|
146
|
+
test('testFastaGapsToSeparator', async () => {
|
|
147
|
+
await _testConvert(Samples.fastaGaps, converter(NOTATION.SEPARATOR, '/'), Samples.separatorGaps);
|
|
148
|
+
});
|
|
145
149
|
|
|
150
|
+
// fasta -> helm
|
|
146
151
|
test('testFastaPtToHelm', async () => {
|
|
147
152
|
await _testConvert(Samples.fastaPt, converter(NOTATION.HELM), Samples.helmPt);
|
|
148
153
|
});
|
|
@@ -152,16 +157,13 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
|
|
|
152
157
|
test('testFastaRnaToHelm', async () => {
|
|
153
158
|
await _testConvert(Samples.fastaRna, converter(NOTATION.HELM), Samples.helmRna);
|
|
154
159
|
});
|
|
155
|
-
|
|
156
|
-
test('testFastaGapsToSeparator', async () => {
|
|
157
|
-
await _testConvert(Samples.fastaGaps, converter(NOTATION.SEPARATOR, '/'), Samples.separatorGaps);
|
|
158
|
-
});
|
|
159
160
|
test('testFastaGapsToHelm', async () => {
|
|
160
|
-
await _testConvert(Samples.fastaGaps, converter(NOTATION.
|
|
161
|
+
await _testConvert(Samples.fastaGaps, converter(NOTATION.HELM), Samples.helmGaps);
|
|
161
162
|
});
|
|
162
163
|
|
|
163
164
|
|
|
164
165
|
// SEPARATOR tests
|
|
166
|
+
// separator -> fasta
|
|
165
167
|
test('testSeparatorPtToFasta', async () => {
|
|
166
168
|
await _testConvert(Samples.separatorPt, converter(NOTATION.FASTA), Samples.fastaPt);
|
|
167
169
|
});
|
|
@@ -171,7 +173,11 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
|
|
|
171
173
|
test('testSeparatorRnaToFasta', async () => {
|
|
172
174
|
await _testConvert(Samples.separatorRna, converter(NOTATION.FASTA), Samples.fastaRna);
|
|
173
175
|
});
|
|
176
|
+
test('testSeparatorGapsToFasta', async () => {
|
|
177
|
+
await _testConvert(Samples.separatorGaps, converter(NOTATION.FASTA), Samples.fastaGaps);
|
|
178
|
+
});
|
|
174
179
|
|
|
180
|
+
// separator -> helm
|
|
175
181
|
test('testSeparatorPtToHelm', async () => {
|
|
176
182
|
await _testConvert(Samples.separatorPt, converter(NOTATION.HELM), Samples.helmPt);
|
|
177
183
|
});
|
|
@@ -181,13 +187,31 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
|
|
|
181
187
|
test('testSeparatorRnaToHelm', async () => {
|
|
182
188
|
await _testConvert(Samples.separatorRna, converter(NOTATION.HELM), Samples.helmRna);
|
|
183
189
|
});
|
|
184
|
-
test('testSeparatorGapsToFasta', async () => {
|
|
185
|
-
await _testConvert(Samples.separatorGaps, converter(NOTATION.FASTA), Samples.fastaGaps);
|
|
186
|
-
});
|
|
187
190
|
test('testSeparatorGapsToHelm', async () => {
|
|
188
191
|
await _testConvert(Samples.separatorGaps, converter(NOTATION.HELM), Samples.helmGaps);
|
|
189
192
|
});
|
|
190
193
|
|
|
191
194
|
|
|
192
|
-
// HELM tests
|
|
195
|
+
// HELM tests
|
|
196
|
+
// helm -> fasta
|
|
197
|
+
test('HelmDnaToFasta', async () => {
|
|
198
|
+
await _testConvert(Samples.helmDna, converter(NOTATION.FASTA), Samples.fastaDna);
|
|
199
|
+
});
|
|
200
|
+
test('HelmRnaToFasta', async () => {
|
|
201
|
+
await _testConvert(Samples.helmRna, converter(NOTATION.FASTA), Samples.fastaRna);
|
|
202
|
+
});
|
|
203
|
+
test('HelmPtToFasta', async () => {
|
|
204
|
+
await _testConvert(Samples.helmPt, converter(NOTATION.FASTA), Samples.fastaPt);
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
// helm -> separator
|
|
208
|
+
test('HelmDnaToSeparator', async () => {
|
|
209
|
+
await _testConvert(Samples.helmDna, converter(NOTATION.SEPARATOR), Samples.separatorDna);
|
|
210
|
+
});
|
|
211
|
+
test('HelmRnaToSeparator', async () => {
|
|
212
|
+
await _testConvert(Samples.helmRna, converter(NOTATION.SEPARATOR, '*'), Samples.separatorRna);
|
|
213
|
+
});
|
|
214
|
+
test('HelmPtToSeparator', async () => {
|
|
215
|
+
await _testConvert(Samples.helmPt, converter(NOTATION.SEPARATOR, '-'), Samples.separatorPt);
|
|
216
|
+
});
|
|
193
217
|
});
|
|
@@ -113,6 +113,7 @@ MWRSWY-CKHP
|
|
|
113
113
|
testIdCsv = 'testIdCsv',
|
|
114
114
|
testSmilesCsv = 'testSmilesCsv',
|
|
115
115
|
testSmiles2Csv = 'testSmiles2Csv',
|
|
116
|
+
testCerealCsv = 'testCerealCsv',
|
|
116
117
|
}
|
|
117
118
|
|
|
118
119
|
const samples: { [key: string]: string } = {
|
|
@@ -128,6 +129,7 @@ MWRSWY-CKHP
|
|
|
128
129
|
'testIdCsv': 'System:AppData/Bio/tests/testId.csv',
|
|
129
130
|
'testSmilesCsv': 'System:AppData/Bio/tests/testSmiles.csv',
|
|
130
131
|
'testSmiles2Csv': 'System:AppData/Bio/tests/testSmiles2.csv',
|
|
132
|
+
'testCerealCsv': 'System:AppData/Bio/tests/testCereal.csv',
|
|
131
133
|
};
|
|
132
134
|
|
|
133
135
|
const _samplesDfs: { [key: string]: Promise<DG.DataFrame> } = {};
|
|
@@ -306,6 +308,10 @@ MWRSWY-CKHP
|
|
|
306
308
|
test('samplesFastaPtPosSequence', async () => {
|
|
307
309
|
await (_testPos(readSamples(Samples.fastaPtCsv), 'sequence', 'fasta:SEQ:PT'));
|
|
308
310
|
});
|
|
311
|
+
|
|
312
|
+
test('samplesTestCerealNegativeCerealName', async () => {
|
|
313
|
+
await (_testNeg(readSamples(Samples.testCerealCsv), 'cereal_name'));
|
|
314
|
+
});
|
|
309
315
|
});
|
|
310
316
|
|
|
311
317
|
export async function _testNeg(readDf: DfReaderFunc, colName: string) {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {after, before, category,
|
|
1
|
+
import {after, before, category, expect, test} from '@datagrok-libraries/utils/src/test';
|
|
2
2
|
|
|
3
3
|
import * as grok from 'datagrok-api/grok';
|
|
4
|
-
import * as ui from 'datagrok-api/ui';
|
|
5
4
|
import * as DG from 'datagrok-api/dg';
|
|
6
5
|
import {importFasta, multipleSequenceAlignmentAny} from '../package';
|
|
6
|
+
import {readDataframe} from './utils';
|
|
7
|
+
import {convertDo} from '../utils/convert';
|
|
8
|
+
import {NOTATION} from '@datagrok-libraries/bio/src/utils/notation-converter';
|
|
7
9
|
|
|
8
10
|
category('renderers', () => {
|
|
9
11
|
let tvList: DG.TableView[];
|
|
@@ -23,42 +25,49 @@ category('renderers', () => {
|
|
|
23
25
|
await _testAfterMsa();
|
|
24
26
|
});
|
|
25
27
|
|
|
28
|
+
test('afterConvert', async () => {
|
|
29
|
+
await _testAfterConvert();
|
|
30
|
+
});
|
|
31
|
+
|
|
26
32
|
async function _testAfterMsa() {
|
|
27
33
|
const fastaTxt: string = await grok.dapi.files.readAsText('System:AppData/Bio/samples/sample_FASTA.fasta');
|
|
28
34
|
const df: DG.DataFrame = importFasta(fastaTxt)[0];
|
|
29
|
-
// await grok.data.detectSemanticTypes(df);
|
|
30
|
-
|
|
31
|
-
const srcSeqCol: DG.Column | null = df.col('sequence');
|
|
32
|
-
expect(srcSeqCol !== null, true);
|
|
33
|
-
console.log('Bio: tests/renderers/afterMsa, src data loaded');
|
|
34
|
-
|
|
35
35
|
const tv: DG.TableView = grok.shell.addTableView(df);
|
|
36
|
+
await grok.data.detectSemanticTypes(df);
|
|
36
37
|
console.log('Bio: tests/renderers/afterMsa, table view');
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
const srcSeqCol: DG.Column | null = df.col('sequence');
|
|
40
|
+
expect(srcSeqCol !== null, true);
|
|
40
41
|
|
|
41
42
|
console.log('Bio: tests/renderers/afterMsa, src before test ' +
|
|
42
43
|
`semType="${srcSeqCol!.semType}", units="${srcSeqCol!.getTag(DG.TAGS.UNITS)}", ` +
|
|
43
44
|
`cell.renderer="${srcSeqCol!.getTag('cell.renderer')}"`);
|
|
44
45
|
expect(srcSeqCol!.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
45
46
|
expect(srcSeqCol!.getTag(DG.TAGS.UNITS), 'fasta:SEQ:PT');
|
|
46
|
-
// TODO: Find the way to check renderer for columns
|
|
47
47
|
expect(srcSeqCol!.getTag('cell.renderer'), 'Macromolecule');
|
|
48
|
-
console.log('Bio: tests/renderers/afterMsa, src semType tested');
|
|
49
48
|
|
|
50
49
|
const msaSeqCol: DG.Column | null = await multipleSequenceAlignmentAny(df, srcSeqCol!);
|
|
51
|
-
console.log('Bio: tests/renderers/afterMsa, msaSeqCol created');
|
|
52
|
-
|
|
53
50
|
tv.grid.invalidate();
|
|
54
|
-
console.log('Bio: tests/renderers/afterMsa, tv.grid invalidated');
|
|
55
51
|
|
|
56
52
|
expect(msaSeqCol!.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
57
53
|
expect(msaSeqCol!.getTag(DG.TAGS.UNITS), 'fasta:SEQ.MSA:PT');
|
|
58
54
|
expect(msaSeqCol!.getTag('cell.renderer'), 'Macromolecule');
|
|
59
|
-
console.log('Bio: tests/renderers/afterMsa, msa semType tested');
|
|
60
55
|
|
|
61
56
|
dfList.push(df);
|
|
62
57
|
tvList.push(tv);
|
|
63
58
|
}
|
|
59
|
+
|
|
60
|
+
async function _testAfterConvert() {
|
|
61
|
+
const csv: string = await grok.dapi.files.readAsText('System:AppData/Bio/samples/sample_FASTA_PT.csv');
|
|
62
|
+
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
63
|
+
const tv: DG.TableView = grok.shell.addTableView(df);
|
|
64
|
+
await grok.data.detectSemanticTypes(df);
|
|
65
|
+
|
|
66
|
+
const srcCol: DG.Column = df.col('sequence')!;
|
|
67
|
+
const tgtCol: DG.Column = await convertDo(srcCol, NOTATION.SEPARATOR, '/');
|
|
68
|
+
expect(tgtCol.getTag('cell.renderer'), 'Macromolecule');
|
|
69
|
+
|
|
70
|
+
tvList.push(tv);
|
|
71
|
+
dfList.push(df);
|
|
72
|
+
};
|
|
64
73
|
});
|
|
@@ -21,10 +21,17 @@ category('splitters', () => {
|
|
|
21
21
|
['meI', 'hHis', 'Aca', 'N', 'T', 'dK', 'Thr_PO3H2', 'Aca',
|
|
22
22
|
'D-Tyr_Et', 'D-Dap', 'dV', 'E', 'N', 'pnG', 'Phe_4Me']
|
|
23
23
|
],
|
|
24
|
+
// HELM editor dialog returns HELM string with multichar monomer names in square brackets
|
|
25
|
+
helm3: [
|
|
26
|
+
'PEPTIDE1{[meI].[hHis].[Aca].N.T.[dK].[Thr_PO3H2].[Aca].[D-Tyr_Et].[D-Dap].[dV].E.N.[pnG].[Phe_4Me]}$$$',
|
|
27
|
+
['meI', 'hHis', 'Aca', 'N', 'T', 'dK', 'Thr_PO3H2', 'Aca',
|
|
28
|
+
'D-Tyr_Et', 'D-Dap', 'dV', 'E', 'N', 'pnG', 'Phe_4Me']
|
|
29
|
+
],
|
|
24
30
|
};
|
|
25
31
|
|
|
26
32
|
test('helm1', async () => { await _testHelmSplitter(data.helm1[0], data.helm1[1]); });
|
|
27
33
|
test('helm2', async () => { await _testHelmSplitter(data.helm2[0], data.helm2[1]); });
|
|
34
|
+
test('helm3-multichar', async () => { await _testHelmSplitter(data.helm3[0], data.helm3[1]); });
|
|
28
35
|
});
|
|
29
36
|
|
|
30
37
|
export async function _testHelmSplitter(src: string, tgt: string[]) {
|