@datagrok/bio 2.1.11 → 2.4.2
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/README.md +11 -12
- package/css/helm.css +10 -0
- package/detectors.js +83 -59
- package/dist/package-test.js +2 -68651
- package/dist/package-test.js.map +1 -0
- package/dist/package.js +2 -66040
- package/dist/package.js.map +1 -0
- package/dockerfiles/Dockerfile +86 -0
- package/files/icons/composition-analysis.svg +17 -0
- package/files/icons/sequence-diversity-viewer.svg +4 -0
- package/files/icons/sequence-similarity-viewer.svg +4 -0
- package/files/icons/vdregions-viewer.svg +22 -0
- package/files/icons/weblogo-viewer.svg +7 -0
- package/files/tests/testUrl.csv +11 -0
- package/files/tests/toAtomicLevelTest.csv +4 -0
- package/package.json +29 -32
- package/src/analysis/sequence-activity-cliffs.ts +15 -13
- package/src/analysis/sequence-diversity-viewer.ts +3 -2
- package/src/analysis/sequence-search-base-viewer.ts +4 -2
- package/src/analysis/sequence-similarity-viewer.ts +4 -4
- package/src/analysis/sequence-space.ts +2 -1
- package/src/calculations/monomerLevelMols.ts +6 -6
- package/src/package-test.ts +9 -2
- package/src/package.ts +230 -145
- package/src/substructure-search/substructure-search.ts +25 -22
- package/src/tests/Palettes-test.ts +9 -9
- package/src/tests/WebLogo-positions-test.ts +131 -68
- package/src/tests/_first-tests.ts +9 -0
- package/src/tests/activity-cliffs-tests.ts +8 -7
- package/src/tests/activity-cliffs-utils.ts +17 -9
- package/src/tests/bio-tests.ts +30 -21
- package/src/tests/checkInputColumn-tests.ts +17 -17
- package/src/tests/converters-test.ts +81 -46
- package/src/tests/detectors-benchmark-tests.ts +17 -17
- package/src/tests/detectors-tests.ts +190 -178
- package/src/tests/fasta-export-tests.ts +2 -3
- package/src/tests/monomer-libraries-tests.ts +34 -0
- package/src/tests/pepsea-tests.ts +21 -0
- package/src/tests/renderers-test.ts +33 -29
- package/src/tests/sequence-space-test.ts +6 -4
- package/src/tests/similarity-diversity-tests.ts +4 -4
- package/src/tests/splitters-test.ts +6 -7
- package/src/tests/substructure-filters-tests.ts +23 -1
- package/src/tests/utils/sequences-generators.ts +7 -7
- package/src/tests/utils.ts +2 -1
- package/src/tests/viewers.ts +16 -0
- package/src/utils/cell-renderer.ts +116 -54
- package/src/utils/constants.ts +7 -6
- package/src/utils/convert.ts +17 -11
- package/src/utils/monomer-lib.ts +174 -0
- package/src/utils/multiple-sequence-alignment.ts +49 -26
- package/src/utils/pepsea.ts +78 -0
- package/src/utils/save-as-fasta.ts +9 -8
- package/src/utils/ui-utils.ts +15 -3
- package/src/viewers/vd-regions-viewer.ts +125 -83
- package/src/viewers/web-logo-viewer.ts +1031 -0
- package/src/widgets/bio-substructure-filter.ts +38 -24
- package/tsconfig.json +71 -72
- package/webpack.config.js +4 -11
- package/dist/vendors-node_modules_datagrok-libraries_ml_src_workers_dimensionality-reducer_js.js +0 -8988
- package/jest.config.js +0 -33
- package/src/__jest__/remote.test.ts +0 -77
- package/src/__jest__/test-node.ts +0 -98
- package/test-Bio-91c83d8913ff-bb573307.html +0 -392
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import * as grok from 'datagrok-api/grok';
|
|
2
2
|
import * as DG from 'datagrok-api/dg';
|
|
3
|
-
import * as bio from '@datagrok-libraries/bio';
|
|
4
3
|
|
|
5
4
|
import {after, before, category, delay, expect, test} from '@datagrok-libraries/utils/src/test';
|
|
6
5
|
|
|
7
6
|
import {importFasta, multipleSequenceAlignmentAny} from '../package';
|
|
8
7
|
import {convertDo} from '../utils/convert';
|
|
9
|
-
import
|
|
8
|
+
import * as C from '../utils/constants';
|
|
10
9
|
import {generateLongSequence, generateManySequences, performanceTest} from './utils/sequences-generators';
|
|
11
10
|
import {errorToConsole} from '@datagrok-libraries/utils/src/to-console';
|
|
11
|
+
import {ALIGNMENT, ALPHABET, NOTATION, TAGS as bioTAGS} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
12
|
+
import {UnitsHandler} from '@datagrok-libraries/bio/src/utils/units-handler';
|
|
12
13
|
|
|
13
14
|
category('renderers', () => {
|
|
14
15
|
let tvList: DG.TableView[];
|
|
@@ -20,8 +21,9 @@ category('renderers', () => {
|
|
|
20
21
|
});
|
|
21
22
|
|
|
22
23
|
after(async () => {
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
// Closing viewes and data frames leads to exception
|
|
25
|
+
// dfList.forEach((df: DG.DataFrame) => { grok.shell.closeTable(df); });
|
|
26
|
+
// tvList.forEach((tv: DG.TableView) => tv.close());
|
|
25
27
|
});
|
|
26
28
|
|
|
27
29
|
test('long sequence performance ', async () => {
|
|
@@ -50,7 +52,7 @@ category('renderers', () => {
|
|
|
50
52
|
|
|
51
53
|
test('afterConvert', async () => {
|
|
52
54
|
await _testAfterConvert();
|
|
53
|
-
});
|
|
55
|
+
}, {skipReason: 'GROK-12765'});
|
|
54
56
|
|
|
55
57
|
test('selectRendererBySemType', async () => {
|
|
56
58
|
await _selectRendererBySemType();
|
|
@@ -103,9 +105,9 @@ category('renderers', () => {
|
|
|
103
105
|
async function _rendererMacromoleculeDifference() {
|
|
104
106
|
const seqDiffCol: DG.Column = DG.Column.fromStrings('SequencesDiff',
|
|
105
107
|
['meI/hHis/Aca/N/T/dK/Thr_PO3H2/Aca#D-Tyr_Et/Tyr_ab-dehydroMe/meN/E/N/dV']);
|
|
106
|
-
seqDiffCol.tags[DG.TAGS.UNITS] =
|
|
107
|
-
seqDiffCol.tags[
|
|
108
|
-
seqDiffCol.semType = SEM_TYPES.MACROMOLECULE_DIFFERENCE;
|
|
108
|
+
seqDiffCol.tags[DG.TAGS.UNITS] = NOTATION.SEPARATOR;
|
|
109
|
+
seqDiffCol.tags[bioTAGS.separator] = '/';
|
|
110
|
+
seqDiffCol.semType = C.SEM_TYPES.MACROMOLECULE_DIFFERENCE;
|
|
109
111
|
const df = DG.DataFrame.fromColumns([seqDiffCol]);
|
|
110
112
|
|
|
111
113
|
const tv: DG.TableView = grok.shell.addTableView(df);
|
|
@@ -116,7 +118,7 @@ category('renderers', () => {
|
|
|
116
118
|
tvList.push(tv);
|
|
117
119
|
|
|
118
120
|
const resCellRenderer = seqDiffCol.getTag(DG.TAGS.CELL_RENDERER);
|
|
119
|
-
expect(resCellRenderer,
|
|
121
|
+
expect(resCellRenderer, C.SEM_TYPES.MACROMOLECULE_DIFFERENCE);
|
|
120
122
|
}
|
|
121
123
|
|
|
122
124
|
async function _testAfterMsa() {
|
|
@@ -138,22 +140,22 @@ category('renderers', () => {
|
|
|
138
140
|
`semType="${srcSeqCol!.semType}", units="${srcSeqCol!.getTag(DG.TAGS.UNITS)}", ` +
|
|
139
141
|
`cell.renderer="${srcSeqCol!.getTag(DG.TAGS.CELL_RENDERER)}"`);
|
|
140
142
|
expect(srcSeqCol.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
141
|
-
expect(srcSeqCol.getTag(DG.TAGS.UNITS),
|
|
142
|
-
expect(srcSeqCol.getTag(
|
|
143
|
-
expect(srcSeqCol.getTag(
|
|
143
|
+
expect(srcSeqCol.getTag(DG.TAGS.UNITS), NOTATION.FASTA);
|
|
144
|
+
expect(srcSeqCol.getTag(bioTAGS.aligned), ALIGNMENT.SEQ);
|
|
145
|
+
expect(srcSeqCol.getTag(bioTAGS.alphabet), ALPHABET.PT);
|
|
144
146
|
expect(srcSeqCol.getTag(DG.TAGS.CELL_RENDERER), 'sequence');
|
|
145
147
|
|
|
146
|
-
const msaSeqCol
|
|
148
|
+
const msaSeqCol = multipleSequenceAlignmentAny(srcSeqCol);
|
|
147
149
|
tv.grid.invalidate();
|
|
148
150
|
|
|
149
|
-
expect(msaSeqCol.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
150
|
-
expect(msaSeqCol.getTag(DG.TAGS.UNITS),
|
|
151
|
-
expect(msaSeqCol.getTag(
|
|
152
|
-
expect(msaSeqCol.getTag(
|
|
153
|
-
expect(msaSeqCol.getTag(DG.TAGS.CELL_RENDERER), 'sequence');
|
|
151
|
+
// expect(msaSeqCol.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
152
|
+
// expect(msaSeqCol.getTag(DG.TAGS.UNITS), NOTATION.FASTA);
|
|
153
|
+
// expect(msaSeqCol.getTag(bioTAGS.aligned), ALIGNMENT.SEQ_MSA);
|
|
154
|
+
// expect(msaSeqCol.getTag(bioTAGS.alphabet), ALPHABET.PT);
|
|
155
|
+
// expect(msaSeqCol.getTag(DG.TAGS.CELL_RENDERER), 'sequence');
|
|
154
156
|
|
|
155
157
|
// check newColumn with UnitsHandler constructor
|
|
156
|
-
const uh:
|
|
158
|
+
// const uh: UnitsHandler = new UnitsHandler(msaSeqCol);
|
|
157
159
|
|
|
158
160
|
dfList.push(df);
|
|
159
161
|
tvList.push(tv);
|
|
@@ -175,13 +177,13 @@ category('renderers', () => {
|
|
|
175
177
|
tvList.push(tv);
|
|
176
178
|
dfList.push(df);
|
|
177
179
|
|
|
178
|
-
const tgtCol: DG.Column = await convertDo(srcCol,
|
|
180
|
+
const tgtCol: DG.Column = await convertDo(srcCol, NOTATION.SEPARATOR, '/');
|
|
179
181
|
|
|
180
182
|
const resCellRenderer = tgtCol.getTag(DG.TAGS.CELL_RENDERER);
|
|
181
183
|
expect(resCellRenderer, 'sequence');
|
|
182
184
|
|
|
183
185
|
// check tgtCol with UnitsHandler constructor
|
|
184
|
-
const uh:
|
|
186
|
+
const uh: UnitsHandler = new UnitsHandler(tgtCol);
|
|
185
187
|
}
|
|
186
188
|
|
|
187
189
|
async function _selectRendererBySemType() {
|
|
@@ -190,9 +192,9 @@ category('renderers', () => {
|
|
|
190
192
|
/**/
|
|
191
193
|
const seqDiffCol: DG.Column = DG.Column.fromStrings('SequencesDiff',
|
|
192
194
|
['meI/hHis/Aca/N/T/dK/Thr_PO3H2/Aca#D-Tyr_Et/Tyr_ab-dehydroMe/meN/E/N/dV']);
|
|
193
|
-
seqDiffCol.tags[DG.TAGS.UNITS] =
|
|
194
|
-
seqDiffCol.tags[
|
|
195
|
-
seqDiffCol.semType = SEM_TYPES.MACROMOLECULE_DIFFERENCE;
|
|
195
|
+
seqDiffCol.tags[DG.TAGS.UNITS] = NOTATION.SEPARATOR;
|
|
196
|
+
seqDiffCol.tags[bioTAGS.separator] = '/';
|
|
197
|
+
seqDiffCol.semType = C.SEM_TYPES.MACROMOLECULE_DIFFERENCE;
|
|
196
198
|
const df = DG.DataFrame.fromColumns([seqDiffCol]);
|
|
197
199
|
const tv = grok.shell.addTableView(df);
|
|
198
200
|
dfList.push(df);
|
|
@@ -200,10 +202,11 @@ category('renderers', () => {
|
|
|
200
202
|
|
|
201
203
|
await delay(100);
|
|
202
204
|
const renderer = seqDiffCol.getTag(DG.TAGS.CELL_RENDERER);
|
|
203
|
-
if (renderer !== 'MacromoleculeDifference') // this is value of MacromoleculeDifferenceCR.cellType
|
|
205
|
+
if (renderer !== 'MacromoleculeDifference') { // this is value of MacromoleculeDifferenceCR.cellType
|
|
204
206
|
throw new Error(`Units 'separator', separator '/' and semType 'MacromoleculeDifference' ` +
|
|
205
207
|
`have been manually set on column but after df was added as table, ` +
|
|
206
208
|
`view renderer has set to '${renderer}' instead of correct 'MacromoleculeDifference'.`);
|
|
209
|
+
}
|
|
207
210
|
}
|
|
208
211
|
|
|
209
212
|
/** GROK-11212 Do not overwrite / recalculate 'cell.renderer' tag that has been set programmatically
|
|
@@ -211,9 +214,9 @@ category('renderers', () => {
|
|
|
211
214
|
async function _setRendererManually() {
|
|
212
215
|
const seqDiffCol: DG.Column = DG.Column.fromStrings('SequencesDiff',
|
|
213
216
|
['meI/hHis/Aca/N/T/dK/Thr_PO3H2/Aca#D-Tyr_Et/Tyr_ab-dehydroMe/meN/E/N/dV']);
|
|
214
|
-
seqDiffCol.tags[DG.TAGS.UNITS] =
|
|
215
|
-
seqDiffCol.tags[
|
|
216
|
-
seqDiffCol.semType =
|
|
217
|
+
seqDiffCol.tags[DG.TAGS.UNITS] = NOTATION.SEPARATOR;
|
|
218
|
+
seqDiffCol.tags[bioTAGS.separator] = '/';
|
|
219
|
+
seqDiffCol.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
217
220
|
const tgtCellRenderer = 'MacromoleculeDifference';
|
|
218
221
|
seqDiffCol.setTag(DG.TAGS.CELL_RENDERER, tgtCellRenderer);
|
|
219
222
|
const df = DG.DataFrame.fromColumns([seqDiffCol]);
|
|
@@ -224,9 +227,10 @@ category('renderers', () => {
|
|
|
224
227
|
|
|
225
228
|
await delay(100);
|
|
226
229
|
const resCellRenderer = seqDiffCol.getTag(DG.TAGS.CELL_RENDERER);
|
|
227
|
-
if (resCellRenderer !== tgtCellRenderer) // this is value of MacromoleculeDifferenceCR.cellType
|
|
230
|
+
if (resCellRenderer !== tgtCellRenderer) { // this is value of MacromoleculeDifferenceCR.cellType
|
|
228
231
|
throw new Error(`Tag 'cell.renderer' has been manually set to '${tgtCellRenderer}' for column ` +
|
|
229
232
|
`but after df was added as table, tag 'cell.renderer' has reset to '${resCellRenderer}' ` +
|
|
230
233
|
`instead of manual '${tgtCellRenderer}'.`);
|
|
234
|
+
}
|
|
231
235
|
}
|
|
232
236
|
});
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as grok from 'datagrok-api/grok';
|
|
2
|
+
import * as ui from 'datagrok-api/ui';
|
|
2
3
|
import * as DG from 'datagrok-api/dg';
|
|
4
|
+
|
|
5
|
+
import {after, before, category, test, expect, delay} from '@datagrok-libraries/utils/src/test';
|
|
3
6
|
import {readDataframe} from './utils';
|
|
4
|
-
import * as grok from 'datagrok-api/grok';
|
|
5
7
|
import {_testSequenceSpaceReturnsResult} from './sequence-space-utils';
|
|
6
8
|
|
|
7
9
|
category('sequenceSpace', async () => {
|
|
@@ -16,7 +18,7 @@ category('sequenceSpace', async () => {
|
|
|
16
18
|
await _testSequenceSpaceReturnsResult(testFastaDf, 'UMAP', 'MSA');
|
|
17
19
|
grok.shell.closeTable(testFastaDf);
|
|
18
20
|
testFastaTableView.close();
|
|
19
|
-
});
|
|
21
|
+
}, {skipReason: 'GROK-12775'});
|
|
20
22
|
|
|
21
23
|
test('sequenceSpaceWithEmptyRows', async () => {
|
|
22
24
|
testHelmWithEmptyRows = await readDataframe('tests/sample_MSA_data_empty_vals.csv');
|
|
@@ -24,5 +26,5 @@ category('sequenceSpace', async () => {
|
|
|
24
26
|
await _testSequenceSpaceReturnsResult(testHelmWithEmptyRows, 'UMAP', 'MSA');
|
|
25
27
|
grok.shell.closeTable(testHelmWithEmptyRows);
|
|
26
28
|
testHelmWithEmptyRowsTableView.close();
|
|
27
|
-
});
|
|
29
|
+
}, {skipReason: 'GROK-12775'});
|
|
28
30
|
});
|
|
@@ -31,9 +31,9 @@ category('similarity/diversity', async () => {
|
|
|
31
31
|
|
|
32
32
|
async function _testSimilaritySearchViewer() {
|
|
33
33
|
const molecules = await createTableView('tests/sample_MSA_data.csv');
|
|
34
|
-
const viewer = molecules.addViewer('
|
|
34
|
+
const viewer = molecules.addViewer('Sequence Similarity Search');
|
|
35
35
|
await delay(100);
|
|
36
|
-
const similaritySearchViewer = getSearchViewer(viewer, '
|
|
36
|
+
const similaritySearchViewer = getSearchViewer(viewer, 'Sequence Similarity Search');
|
|
37
37
|
viewList.push(similaritySearchViewer);
|
|
38
38
|
viewList.push(molecules);
|
|
39
39
|
if (!similaritySearchViewer.molCol)
|
|
@@ -59,9 +59,9 @@ async function _testSimilaritySearchViewer() {
|
|
|
59
59
|
|
|
60
60
|
async function _testDiversitySearchViewer() {
|
|
61
61
|
const molecules = await createTableView('tests/sample_MSA_data.csv');
|
|
62
|
-
const viewer = molecules.addViewer('
|
|
62
|
+
const viewer = molecules.addViewer('Sequence Diversity Search');
|
|
63
63
|
await delay(10);
|
|
64
|
-
const diversitySearchviewer = getSearchViewer(viewer, '
|
|
64
|
+
const diversitySearchviewer = getSearchViewer(viewer, 'Sequence Diversity Search');
|
|
65
65
|
viewList.push(diversitySearchviewer);
|
|
66
66
|
viewList.push(molecules);
|
|
67
67
|
if (!diversitySearchviewer.renderMolIds)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as grok from 'datagrok-api/grok';
|
|
2
2
|
import * as ui from 'datagrok-api/ui';
|
|
3
3
|
import * as DG from 'datagrok-api/dg';
|
|
4
|
-
import * as bio from '@datagrok-libraries/bio';
|
|
5
4
|
|
|
6
5
|
import {after, before, category, test, expect, expectArray, expectObject} from '@datagrok-libraries/utils/src/test';
|
|
7
6
|
import * as C from '../utils/constants';
|
|
8
7
|
import {splitToMonomers, _package, getHelmMonomers} from '../package';
|
|
9
8
|
import {errorToConsole} from '@datagrok-libraries/utils/src/to-console';
|
|
9
|
+
import {TAGS as bioTAGS, splitterAsFasta, splitterAsHelm} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
category('splitters', () => {
|
|
@@ -83,7 +83,7 @@ category('splitters', () => {
|
|
|
83
83
|
const semType = await grok.functions.call('Bio:detectMacromolecule', {col: seqCol});
|
|
84
84
|
if (semType)
|
|
85
85
|
seqCol.semType = semType;
|
|
86
|
-
seqCol.setTag(
|
|
86
|
+
seqCol.setTag(bioTAGS.aligned, C.MSA);
|
|
87
87
|
|
|
88
88
|
const tv: DG.TableView = grok.shell.addTableView(df);
|
|
89
89
|
// call to calculate 'cell.renderer' tag
|
|
@@ -92,9 +92,9 @@ category('splitters', () => {
|
|
|
92
92
|
dfList.push(df);
|
|
93
93
|
tvList.push(tv);
|
|
94
94
|
|
|
95
|
-
splitToMonomers(
|
|
95
|
+
splitToMonomers();
|
|
96
96
|
expect(df.columns.names().includes('17'), true);
|
|
97
|
-
});
|
|
97
|
+
}, {skipReason: 'GROK-12766'});
|
|
98
98
|
|
|
99
99
|
test('getHelmMonomers', async () => {
|
|
100
100
|
const df: DG.DataFrame = DG.DataFrame.fromCsv(
|
|
@@ -122,14 +122,13 @@ PEPTIDE1{hHis.Aca.Cys_SEt}$$$,5.72388
|
|
|
122
122
|
});
|
|
123
123
|
|
|
124
124
|
export async function _testFastaSplitter(src: string, tgt: string[]) {
|
|
125
|
-
const res: string[] =
|
|
125
|
+
const res: string[] = splitterAsFasta(src);
|
|
126
126
|
console.debug(`Bio: tests: splitters: src=${JSON.stringify(src)}, res=${JSON.stringify(res)} .`);
|
|
127
127
|
expectArray(res, tgt);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
130
|
export async function _testHelmSplitter(src: string, tgt: string[]) {
|
|
131
|
-
const res: string[] =
|
|
131
|
+
const res: string[] = splitterAsHelm(src);
|
|
132
132
|
console.debug(`Bio: tests: splitters: src=${JSON.stringify(src)}, res=${JSON.stringify(res)} .`);
|
|
133
133
|
expectArray(res, tgt);
|
|
134
134
|
}
|
|
135
|
-
|
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
import {after, before, category, test, expect, delay} from '@datagrok-libraries/utils/src/test';
|
|
2
2
|
import * as DG from 'datagrok-api/dg';
|
|
3
3
|
import * as grok from 'datagrok-api/grok';
|
|
4
|
+
|
|
4
5
|
import {readDataframe} from './utils';
|
|
5
6
|
import {BioSubstructureFilter, HelmFilter, SeparatorFilter} from '../widgets/bio-substructure-filter';
|
|
7
|
+
import {getMonomerLibHelper, IMonomerLibHelper} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
|
|
8
|
+
import {LIB_DEFAULT, LIB_STORAGE_NAME} from '../utils/monomer-lib';
|
|
6
9
|
|
|
7
10
|
|
|
8
11
|
category('substructureFilters', async () => {
|
|
12
|
+
let monomerLibHelper: IMonomerLibHelper;
|
|
13
|
+
/** Backup actual user's monomer libraries settings */
|
|
14
|
+
let userLibrariesSettings: {};
|
|
15
|
+
|
|
16
|
+
before(async () => {
|
|
17
|
+
monomerLibHelper = await getMonomerLibHelper();
|
|
18
|
+
userLibrariesSettings = await grok.dapi.userDataStorage.get(LIB_STORAGE_NAME, true);
|
|
19
|
+
|
|
20
|
+
// Test 'helm' requires default monomer library loaded
|
|
21
|
+
await grok.dapi.userDataStorage.post(LIB_STORAGE_NAME, LIB_DEFAULT, true);
|
|
22
|
+
await monomerLibHelper.loadLibraries(true); // load default libraries
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
after(async () => {
|
|
26
|
+
// UserDataStorage.put() replaces existing data
|
|
27
|
+
await grok.dapi.userDataStorage.put(LIB_STORAGE_NAME, userLibrariesSettings, true);
|
|
28
|
+
await monomerLibHelper.loadLibraries(true); // load user settings libraries
|
|
29
|
+
});
|
|
30
|
+
|
|
9
31
|
test('fasta', async () => {
|
|
10
32
|
const fasta = await readDataframe('tests/filter_FASTA.csv');
|
|
11
33
|
const filter = new BioSubstructureFilter();
|
|
@@ -69,5 +91,5 @@ category('substructureFilters', async () => {
|
|
|
69
91
|
expect(filter.dataFrame!.filter.trueCount, 1);
|
|
70
92
|
expect(filter.dataFrame!.filter.get(3), true);
|
|
71
93
|
helmTableView.close();
|
|
72
|
-
}, {skipReason: '
|
|
94
|
+
}, {skipReason: 'GROK-12779'});
|
|
73
95
|
});
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import * as grok from 'datagrok-api/grok';
|
|
2
2
|
import * as ui from 'datagrok-api/ui';
|
|
3
3
|
import * as DG from 'datagrok-api/dg';
|
|
4
|
-
import
|
|
4
|
+
import {ALIGNMENT, ALPHABET, NOTATION, TAGS as bioTAGS} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
export function generateManySequences(): DG.Column[] {
|
|
8
|
-
|
|
8
|
+
const columns: DG.Column[] = [];
|
|
9
9
|
columns.push(DG.Column.fromList('string', 'MSA', new Array(10 ** 6).fill('meI/hHis/Aca/N/T/dE/Thr_PO3H2/Aca/D-Tyr_Et/Tyr_ab-dehydroMe/dV/E/N/D-Orn/D-aThr//Phe_4Me')));
|
|
10
10
|
columns.push(DG.Column.fromList('string', 'Activity', new Array(10 ** 6).fill('5.30751')));
|
|
11
11
|
return columns;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
export function generateLongSequence(): DG.Column[] {
|
|
15
|
-
|
|
15
|
+
const columns: DG.Column[] = [];
|
|
16
16
|
const longSequence = `meI/hHis/Aca/N/T/dE/Thr_PO3H2/Aca/D-Tyr_Et/Tyr_ab-dehydroMe/dV/E/N/D-Orn/D-aThr`.repeat(10 ** 5);
|
|
17
17
|
columns.push(DG.Column.fromList('string', 'MSA', new Array(10 ** 2).fill(longSequence)));
|
|
18
18
|
columns.push(DG.Column.fromList('string', 'Activity', new Array(10 ** 2).fill('7.30751')));
|
|
@@ -21,10 +21,10 @@ export function generateLongSequence(): DG.Column[] {
|
|
|
21
21
|
|
|
22
22
|
export function setTagsMacromolecule(col: DG.Column) {
|
|
23
23
|
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
24
|
-
col.setTag(DG.TAGS.UNITS,
|
|
25
|
-
col.setTag(
|
|
26
|
-
col.setTag(
|
|
27
|
-
col.setTag(
|
|
24
|
+
col.setTag(DG.TAGS.UNITS, NOTATION.SEPARATOR);
|
|
25
|
+
col.setTag(bioTAGS.aligned, ALIGNMENT.SEQ_MSA);
|
|
26
|
+
col.setTag(bioTAGS.alphabet, ALPHABET.UN);
|
|
27
|
+
col.setTag(bioTAGS.separator, '/');
|
|
28
28
|
return col;
|
|
29
29
|
}
|
|
30
30
|
|
package/src/tests/utils.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import * as grok from 'datagrok-api/grok';
|
|
3
|
+
|
|
4
|
+
import {_package} from '../package-test';
|
|
3
5
|
import {expect} from '@datagrok-libraries/utils/src/test';
|
|
4
6
|
import {runKalign} from '../utils/multiple-sequence-alignment';
|
|
5
|
-
import {_package} from '../package-test';
|
|
6
7
|
|
|
7
8
|
export async function loadFileAsText(name: string): Promise<string> {
|
|
8
9
|
return await _package.files.readAsText(name);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
// import * as grok from 'datagrok-api/grok';
|
|
3
|
+
//import * as ui from 'datagrok-api/ui';
|
|
4
|
+
|
|
5
|
+
import {category, test, testViewer} from '@datagrok-libraries/utils/src/test';
|
|
6
|
+
import {readDataframe} from './utils';
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
category('viewers', () => {
|
|
10
|
+
const viewers = DG.Func.find({package: 'Bio', tags: ['viewer']}).map((f) => f.friendlyName);
|
|
11
|
+
for (const v of viewers) {
|
|
12
|
+
test(v, async () => {
|
|
13
|
+
await testViewer(v, await readDataframe('data/sample_FASTA_DNA.csv'), true);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
});
|