@datagrok/bio 2.15.13 → 2.16.0
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/CHANGELOG.md +13 -0
- package/detectors.js +16 -11
- package/dist/455.js.map +1 -1
- package/dist/980.js +1 -1
- package/dist/980.js.map +1 -1
- package/dist/package-test.js +6 -6
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +3 -3
- package/dist/package.js.map +1 -1
- package/package.json +5 -5
- package/src/analysis/sequence-activity-cliffs.ts +3 -4
- package/src/analysis/sequence-diversity-viewer.ts +5 -3
- package/src/analysis/sequence-similarity-viewer.ts +8 -5
- package/src/analysis/sequence-space.ts +3 -2
- package/src/calculations/monomerLevelMols.ts +3 -3
- package/src/demo/bio01-similarity-diversity.ts +4 -1
- package/src/package-test.ts +1 -1
- package/src/package-types.ts +35 -2
- package/src/package.ts +57 -71
- package/src/tests/WebLogo-layout-tests.ts +1 -1
- package/src/tests/WebLogo-positions-test.ts +11 -5
- package/src/tests/WebLogo-project-tests.ts +1 -1
- package/src/tests/activity-cliffs-utils.ts +11 -14
- package/src/tests/bio-tests.ts +85 -79
- package/src/tests/checkInputColumn-tests.ts +15 -10
- package/src/tests/converters-test.ts +12 -5
- package/src/tests/detectors-benchmark-tests.ts +5 -2
- package/src/tests/detectors-tests.ts +51 -44
- package/src/tests/detectors-weak-and-likely-tests.ts +12 -5
- package/src/tests/fasta-export-tests.ts +13 -5
- package/src/tests/helm-tests.ts +85 -0
- package/src/tests/mm-distance-tests.ts +14 -7
- package/src/tests/monomer-libraries-tests.ts +1 -1
- package/src/tests/msa-tests.ts +33 -24
- package/src/tests/renderers-monomer-placer-tests.ts +2 -5
- package/src/tests/renderers-test.ts +15 -9
- package/src/tests/scoring.ts +9 -6
- package/src/tests/seq-handler-get-helm-tests.ts +7 -5
- package/src/tests/seq-handler-get-region-tests.ts +9 -3
- package/src/tests/seq-handler-splitted-tests.ts +11 -5
- package/src/tests/seq-handler-tests.ts +17 -10
- package/src/tests/sequence-space-utils.ts +9 -4
- package/src/tests/splitters-test.ts +5 -4
- package/src/tests/substructure-filters-tests.ts +16 -13
- package/src/tests/to-atomic-level-tests.ts +5 -3
- package/src/tests/to-atomic-level-ui-tests.ts +4 -1
- package/src/tests/utils/detectors-utils.ts +4 -4
- package/src/utils/calculate-scores.ts +11 -9
- package/src/utils/cell-renderer-custom.ts +27 -17
- package/src/utils/cell-renderer.ts +14 -8
- package/src/utils/check-input-column.ts +13 -9
- package/src/utils/context-menu.ts +4 -4
- package/src/utils/convert.ts +21 -14
- package/src/utils/get-region-func-editor.ts +8 -5
- package/src/utils/get-region.ts +4 -5
- package/src/utils/helm-to-molfile/converter/helm.ts +4 -4
- package/src/utils/helm-to-molfile/utils.ts +5 -6
- package/src/utils/macromolecule-column-widget.ts +6 -7
- package/src/utils/monomer-cell-renderer-base.ts +8 -1
- package/src/utils/monomer-lib/lib-manager.ts +3 -2
- package/src/utils/monomer-lib/monomer-colors.ts +10 -10
- package/src/utils/monomer-lib/monomer-lib-base.ts +6 -1
- package/src/utils/monomer-lib/monomer-lib.ts +15 -9
- package/src/utils/multiple-sequence-alignment-ui.ts +30 -30
- package/src/utils/save-as-fasta.ts +19 -12
- package/src/utils/seq-helper/seq-handler.ts +859 -0
- package/src/utils/seq-helper/seq-helper.ts +11 -21
- package/src/utils/sequence-to-mol.ts +7 -8
- package/src/utils/split-to-monomers.ts +7 -2
- package/src/utils/types.ts +8 -7
- package/src/utils/ui-utils.ts +2 -2
- package/src/viewers/web-logo-viewer.ts +18 -16
- package/src/widgets/bio-substructure-filter.ts +1 -2
- package/src/widgets/composition-analysis-widget.ts +6 -6
- package/src/widgets/representations.ts +7 -4
- package/src/tests/detectors-custom-notation-tests.ts +0 -37
- package/src/utils/cyclized.ts +0 -89
- package/src/utils/dimerized.ts +0 -10
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import * as grok from 'datagrok-api/grok';
|
|
2
2
|
import * as DG from 'datagrok-api/dg';
|
|
3
3
|
|
|
4
|
-
import {category, expect, expectArray, test, testEvent} from '@datagrok-libraries/utils/src/test';
|
|
4
|
+
import {before, category, expect, expectArray, test, testEvent} from '@datagrok-libraries/utils/src/test';
|
|
5
5
|
import {ALPHABET, NOTATION, TAGS as bioTAGS} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
6
|
-
import {
|
|
6
|
+
import {getSeqHelper, ISeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
|
|
7
|
+
import {GAP_SYMBOL} from '@datagrok-libraries/bio/src/utils/macromolecule/consts';
|
|
7
8
|
|
|
8
9
|
import {
|
|
9
10
|
countForMonomerAtPosition,
|
|
@@ -11,11 +12,16 @@ import {
|
|
|
11
12
|
PositionMonomerInfo as PMI,
|
|
12
13
|
WebLogoViewer,
|
|
13
14
|
} from '../viewers/web-logo-viewer';
|
|
14
|
-
import {GAP_SYMBOL} from '@datagrok-libraries/bio/src/utils/macromolecule/consts';
|
|
15
15
|
|
|
16
16
|
const g: string = GAP_SYMBOL;
|
|
17
17
|
|
|
18
|
-
category('WebLogo
|
|
18
|
+
category('WebLogo.positions', () => {
|
|
19
|
+
let seqHelper: ISeqHelper;
|
|
20
|
+
|
|
21
|
+
before(async () => {
|
|
22
|
+
seqHelper = await getSeqHelper();
|
|
23
|
+
});
|
|
24
|
+
|
|
19
25
|
const csvDf1 = `seq
|
|
20
26
|
ATC-G-TTGC--
|
|
21
27
|
ATC-G-TTGC--
|
|
@@ -182,7 +188,7 @@ ATC-G-TTGC--
|
|
|
182
188
|
}
|
|
183
189
|
|
|
184
190
|
const atPI1: PI = resPosList[1];
|
|
185
|
-
const sh =
|
|
191
|
+
const sh = seqHelper.getSeqHandler(seqCol);
|
|
186
192
|
const countAt1 = countForMonomerAtPosition(df, sh, df.filter, 'G', atPI1);
|
|
187
193
|
expect(countAt1, 5);
|
|
188
194
|
await wlViewer.awaitRendered();
|
|
@@ -13,7 +13,7 @@ import {_package} from '../package-test';
|
|
|
13
13
|
|
|
14
14
|
const PROJECT_PREFIX: string = 'Tests.Bio.WebLogo-project';
|
|
15
15
|
|
|
16
|
-
category('WebLogo
|
|
16
|
+
category('WebLogo.project', () => {
|
|
17
17
|
test('fasta', async () => {
|
|
18
18
|
const prjName = `${PROJECT_PREFIX}.fasta`;
|
|
19
19
|
const df = await _package.files.readCsv('tests/filter_FASTA.csv');
|
|
@@ -2,7 +2,6 @@ import * as DG from 'datagrok-api/dg';
|
|
|
2
2
|
import * as grok from 'datagrok-api/grok';
|
|
3
3
|
|
|
4
4
|
import {expect} from '@datagrok-libraries/utils/src/test';
|
|
5
|
-
import {activityCliffs} from '../package';
|
|
6
5
|
import {MmDistanceFunctionsNames} from '@datagrok-libraries/ml/src/macromolecule-distance-functions';
|
|
7
6
|
import {BitArrayMetrics} from '@datagrok-libraries/ml/src/typed-metrics';
|
|
8
7
|
import {BYPASS_LARGE_DATA_WARNING} from '@datagrok-libraries/ml/src/functionEditors/consts';
|
|
@@ -13,19 +12,17 @@ export async function _testActivityCliffsOpen(df: DG.DataFrame, drMethod: DimRed
|
|
|
13
12
|
similarityMetric: MmDistanceFunctionsNames | BitArrayMetrics, preprocessingFunction: DG.Func,
|
|
14
13
|
): Promise<void> {
|
|
15
14
|
await grok.data.detectSemanticTypes(df);
|
|
16
|
-
const scatterPlot = await activityCliffs
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// const k = 11;
|
|
28
|
-
|
|
15
|
+
const scatterPlot = (await grok.functions.call('Bio:activityCliffs', {
|
|
16
|
+
table: df,
|
|
17
|
+
molecules: df.getCol(seqColName),
|
|
18
|
+
activities: df.getCol(activityColName),
|
|
19
|
+
similarity: similarityThr,
|
|
20
|
+
methodName: drMethod,
|
|
21
|
+
similarityMetric: similarityMetric,
|
|
22
|
+
preprocessingFunction: preprocessingFunction,
|
|
23
|
+
options: {[`${BYPASS_LARGE_DATA_WARNING}`]: true},
|
|
24
|
+
demo: false,
|
|
25
|
+
})) as DG.Viewer | undefined;
|
|
29
26
|
expect(scatterPlot != null, true);
|
|
30
27
|
|
|
31
28
|
const cliffsLink = Array.from(scatterPlot!.root.children).find((el) => {
|
package/src/tests/bio-tests.ts
CHANGED
|
@@ -2,7 +2,7 @@ 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
4
|
|
|
5
|
-
import {category, test, expect, expectObject, expectArray} from '@datagrok-libraries/utils/src/test';
|
|
5
|
+
import {category, test, expect, expectObject, expectArray, before} from '@datagrok-libraries/utils/src/test';
|
|
6
6
|
import {
|
|
7
7
|
NOTATION, getAlphabetSimilarity, monomerToShort, pickUpPalette, splitterAsFasta, splitterAsHelm,
|
|
8
8
|
} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
@@ -11,11 +11,18 @@ import {AminoacidsPalettes} from '@datagrok-libraries/bio/src/aminoacids';
|
|
|
11
11
|
import {UnknownSeqPalette} from '@datagrok-libraries/bio/src/unknown';
|
|
12
12
|
import {getStatsForCol} from '@datagrok-libraries/bio/src/utils/macromolecule/utils';
|
|
13
13
|
import {GAP_SYMBOL} from '@datagrok-libraries/bio/src/utils/macromolecule/consts';
|
|
14
|
+
import {ISeqHelper, getSeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
|
|
14
15
|
|
|
15
16
|
/** GAP_SYMBOL */
|
|
16
17
|
const g: string = GAP_SYMBOL;
|
|
17
18
|
|
|
18
19
|
category('bio', () => {
|
|
20
|
+
let seqHelper: ISeqHelper;
|
|
21
|
+
|
|
22
|
+
before(async () => {
|
|
23
|
+
seqHelper = await getSeqHelper();
|
|
24
|
+
});
|
|
25
|
+
|
|
19
26
|
const csvDfN1: string = `seq
|
|
20
27
|
ACGTCT
|
|
21
28
|
CAGTGT
|
|
@@ -74,6 +81,83 @@ PEPTIDE1{meI}$$$$`;
|
|
|
74
81
|
test('testPickupPaletteN1e', async () => { await _testPickupPaletteN1e(csvDfN1e); });
|
|
75
82
|
test('testPickupPaletteAA1', async () => { await _testPickupPaletteAA1(csvDfAA1); });
|
|
76
83
|
test('testPickupPaletteX', async () => { await _testPickupPaletteX(csvDfX); });
|
|
84
|
+
|
|
85
|
+
function _testGetStats(csvDfN1: string) {
|
|
86
|
+
const dfN1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1);
|
|
87
|
+
const seqCol: DG.Column = dfN1.col('seq')!;
|
|
88
|
+
seqCol.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
89
|
+
seqCol.meta.units = NOTATION.FASTA;
|
|
90
|
+
const stats = getStatsForCol(seqCol, 5, splitterAsFasta);
|
|
91
|
+
|
|
92
|
+
expectObject(stats.freq, {
|
|
93
|
+
'A': 4,
|
|
94
|
+
'C': 5,
|
|
95
|
+
'G': 3,
|
|
96
|
+
'T': 6,
|
|
97
|
+
});
|
|
98
|
+
expect(stats.sameLength, true);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
async function _testGetAlphabetSimilarity() {
|
|
102
|
+
const freq: { [m: string]: number } = {
|
|
103
|
+
'A': 2041,
|
|
104
|
+
'C': 3015,
|
|
105
|
+
'G': 3015,
|
|
106
|
+
'T': 2048,
|
|
107
|
+
[g]: 1000,
|
|
108
|
+
};
|
|
109
|
+
const alphabet: Set<string> = new Set(Object.keys(Nucleotides.Names));
|
|
110
|
+
const res = getAlphabetSimilarity(freq, alphabet);
|
|
111
|
+
|
|
112
|
+
expect(res > 0.6, true);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
async function _testPickupPaletteN1(csvDfN1: string) {
|
|
116
|
+
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1);
|
|
117
|
+
const col: DG.Column = df.col('seq')!;
|
|
118
|
+
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
119
|
+
col.meta.units = NOTATION.FASTA;
|
|
120
|
+
const cp = pickUpPalette(col, seqHelper);
|
|
121
|
+
|
|
122
|
+
expect(cp instanceof NucleotidesPalettes, true);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async function _testPickupPaletteN1e(csvDfN1e: string) {
|
|
126
|
+
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1e);
|
|
127
|
+
const col: DG.Column = df.col('seq')!;
|
|
128
|
+
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
129
|
+
col.meta.units = NOTATION.FASTA;
|
|
130
|
+
const cp = pickUpPalette(col, seqHelper);
|
|
131
|
+
|
|
132
|
+
expect(cp instanceof NucleotidesPalettes, true);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
async function _testPickupPaletteAA1(csvDfAA1: string) {
|
|
136
|
+
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfAA1);
|
|
137
|
+
const col: DG.Column = df.col('seq')!;
|
|
138
|
+
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
139
|
+
col.meta.units = NOTATION.FASTA;
|
|
140
|
+
const cp = pickUpPalette(col, seqHelper);
|
|
141
|
+
|
|
142
|
+
expect(cp instanceof AminoacidsPalettes, true);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
async function _testPickupPaletteX(csvDfX: string) {
|
|
146
|
+
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfX);
|
|
147
|
+
const col: DG.Column = df.col('seq')!;
|
|
148
|
+
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
149
|
+
col.meta.units = NOTATION.FASTA;
|
|
150
|
+
const cp = pickUpPalette(col, seqHelper);
|
|
151
|
+
|
|
152
|
+
expect(cp instanceof UnknownSeqPalette, true);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
async function _testPickupPaletteAA2(dfAA2: DG.DataFrame) {
|
|
156
|
+
const seqCol: DG.Column = dfAA2.col('seq')!;
|
|
157
|
+
const cp = pickUpPalette(seqCol, seqHelper);
|
|
158
|
+
|
|
159
|
+
expect(cp instanceof AminoacidsPalettes, true);
|
|
160
|
+
}
|
|
77
161
|
});
|
|
78
162
|
|
|
79
163
|
category('WebLogo.monomerToShort', () => {
|
|
@@ -123,81 +207,3 @@ category('WebLogo.monomerToShort', () => {
|
|
|
123
207
|
expectArray(res, tgt);
|
|
124
208
|
});
|
|
125
209
|
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
export async function _testGetStats(csvDfN1: string) {
|
|
129
|
-
const dfN1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1);
|
|
130
|
-
const seqCol: DG.Column = dfN1.col('seq')!;
|
|
131
|
-
seqCol.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
132
|
-
seqCol.meta.units = NOTATION.FASTA;
|
|
133
|
-
const stats = getStatsForCol(seqCol, 5, splitterAsFasta);
|
|
134
|
-
|
|
135
|
-
expectObject(stats.freq, {
|
|
136
|
-
'A': 4,
|
|
137
|
-
'C': 5,
|
|
138
|
-
'G': 3,
|
|
139
|
-
'T': 6,
|
|
140
|
-
});
|
|
141
|
-
expect(stats.sameLength, true);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
export async function _testGetAlphabetSimilarity() {
|
|
145
|
-
const freq: { [m: string]: number } = {
|
|
146
|
-
'A': 2041,
|
|
147
|
-
'C': 3015,
|
|
148
|
-
'G': 3015,
|
|
149
|
-
'T': 2048,
|
|
150
|
-
[g]: 1000,
|
|
151
|
-
};
|
|
152
|
-
const alphabet: Set<string> = new Set(Object.keys(Nucleotides.Names));
|
|
153
|
-
const res = getAlphabetSimilarity(freq, alphabet);
|
|
154
|
-
|
|
155
|
-
expect(res > 0.6, true);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export async function _testPickupPaletteN1(csvDfN1: string) {
|
|
159
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1);
|
|
160
|
-
const col: DG.Column = df.col('seq')!;
|
|
161
|
-
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
162
|
-
col.meta.units = NOTATION.FASTA;
|
|
163
|
-
const cp = pickUpPalette(col);
|
|
164
|
-
|
|
165
|
-
expect(cp instanceof NucleotidesPalettes, true);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export async function _testPickupPaletteN1e(csvDfN1e: string) {
|
|
169
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1e);
|
|
170
|
-
const col: DG.Column = df.col('seq')!;
|
|
171
|
-
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
172
|
-
col.meta.units = NOTATION.FASTA;
|
|
173
|
-
const cp = pickUpPalette(col);
|
|
174
|
-
|
|
175
|
-
expect(cp instanceof NucleotidesPalettes, true);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
export async function _testPickupPaletteAA1(csvDfAA1: string) {
|
|
179
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfAA1);
|
|
180
|
-
const col: DG.Column = df.col('seq')!;
|
|
181
|
-
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
182
|
-
col.meta.units = NOTATION.FASTA;
|
|
183
|
-
const cp = pickUpPalette(col);
|
|
184
|
-
|
|
185
|
-
expect(cp instanceof AminoacidsPalettes, true);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
export async function _testPickupPaletteX(csvDfX: string) {
|
|
189
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csvDfX);
|
|
190
|
-
const col: DG.Column = df.col('seq')!;
|
|
191
|
-
col.semType = DG.SEMTYPE.MACROMOLECULE;
|
|
192
|
-
col.meta.units = NOTATION.FASTA;
|
|
193
|
-
const cp = pickUpPalette(col);
|
|
194
|
-
|
|
195
|
-
expect(cp instanceof UnknownSeqPalette, true);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
export async function _testPickupPaletteAA2(dfAA2: DG.DataFrame) {
|
|
199
|
-
const seqCol: DG.Column = dfAA2.col('seq')!;
|
|
200
|
-
const cp = pickUpPalette(seqCol);
|
|
201
|
-
|
|
202
|
-
expect(cp instanceof AminoacidsPalettes, true);
|
|
203
|
-
}
|
|
@@ -2,12 +2,20 @@ 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
4
|
|
|
5
|
-
import {category, test, expect} from '@datagrok-libraries/utils/src/test';
|
|
5
|
+
import {category, test, expect, before} from '@datagrok-libraries/utils/src/test';
|
|
6
6
|
|
|
7
7
|
import {ALPHABET, NOTATION, TAGS as bioTAGS} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
8
|
+
import {getSeqHelper, ISeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
|
|
9
|
+
|
|
8
10
|
import {checkInputColumn} from '../utils/check-input-column';
|
|
9
11
|
|
|
10
12
|
category('checkInputColumn', () => {
|
|
13
|
+
let seqHelper: ISeqHelper;
|
|
14
|
+
|
|
15
|
+
before(async () => {
|
|
16
|
+
seqHelper = await getSeqHelper();
|
|
17
|
+
});
|
|
18
|
+
|
|
11
19
|
const csv = `seq
|
|
12
20
|
seq1,
|
|
13
21
|
seq2,
|
|
@@ -22,9 +30,8 @@ seq4`;
|
|
|
22
30
|
col.setTag(bioTAGS.alphabet, ALPHABET.DNA);
|
|
23
31
|
col.setTag(bioTAGS.aligned, 'SEQ');
|
|
24
32
|
|
|
25
|
-
const [res, _msg]: [boolean, string] = checkInputColumn(
|
|
26
|
-
|
|
27
|
-
[ALPHABET.DNA, ALPHABET.RNA, ALPHABET.PT]);
|
|
33
|
+
const [res, _msg]: [boolean, string] = checkInputColumn(col, 'Test', seqHelper,
|
|
34
|
+
[NOTATION.FASTA], [ALPHABET.DNA, ALPHABET.RNA, ALPHABET.PT]);
|
|
28
35
|
|
|
29
36
|
expect(res, true);
|
|
30
37
|
});
|
|
@@ -37,9 +44,8 @@ seq4`;
|
|
|
37
44
|
// col.setTag(bio.TAGS.alphabetSize, '11');
|
|
38
45
|
col.setTag(bioTAGS.alphabetIsMultichar, 'true');
|
|
39
46
|
|
|
40
|
-
const [res, _msg]: [boolean, string] = checkInputColumn(
|
|
41
|
-
|
|
42
|
-
[ALPHABET.DNA, ALPHABET.RNA, ALPHABET.PT]);
|
|
47
|
+
const [res, _msg]: [boolean, string] = checkInputColumn(col, 'Test', seqHelper,
|
|
48
|
+
[NOTATION.FASTA], [ALPHABET.DNA, ALPHABET.RNA, ALPHABET.PT]);
|
|
43
49
|
|
|
44
50
|
expect(res, false);
|
|
45
51
|
});
|
|
@@ -54,9 +60,8 @@ seq4`;
|
|
|
54
60
|
col.setTag(bioTAGS.alphabetIsMultichar, 'true');
|
|
55
61
|
col.setTag(bioTAGS.aligned, 'SEQ');
|
|
56
62
|
|
|
57
|
-
const [res, _msg]: [boolean, string] = checkInputColumn(
|
|
58
|
-
|
|
59
|
-
[ALPHABET.DNA, ALPHABET.RNA, ALPHABET.PT]);
|
|
63
|
+
const [res, _msg]: [boolean, string] = checkInputColumn(col, 'Test', seqHelper,
|
|
64
|
+
[NOTATION.FASTA], [ALPHABET.DNA, ALPHABET.RNA, ALPHABET.PT]);
|
|
60
65
|
|
|
61
66
|
expect(res, false);
|
|
62
67
|
});
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import * as grok from 'datagrok-api/grok';
|
|
3
3
|
|
|
4
|
-
import {category, expect, expectArray, test} from '@datagrok-libraries/utils/src/test';
|
|
4
|
+
import {before, category, expect, expectArray, test} from '@datagrok-libraries/utils/src/test';
|
|
5
5
|
import {NOTATION, TAGS as bioTAGS} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
6
|
-
import {
|
|
6
|
+
import {ISeqHelper, getSeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
|
|
7
|
+
import {ISeqHandler} from '@datagrok-libraries/bio/src/utils/macromolecule/seq-handler';
|
|
7
8
|
|
|
8
9
|
import {ConverterFunc} from './types';
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
category('converters', () => {
|
|
13
|
+
let seqHelper: ISeqHelper;
|
|
14
|
+
|
|
15
|
+
before(async () => {
|
|
16
|
+
seqHelper = await getSeqHelper();
|
|
17
|
+
});
|
|
18
|
+
|
|
12
19
|
enum Samples {
|
|
13
20
|
fastaPt = 'fastaPt',
|
|
14
21
|
separatorPt = 'separatorPt',
|
|
@@ -133,7 +140,7 @@ RNA1{p.r(U)p.r(U)p.r(C)p.r(A)p.r(A)p.r(C)p.r(U)p.r(U)p.r(C)p.r(A)p.r(A)p.r(C)p.p
|
|
|
133
140
|
throw new Error(`Argument 'separator' is mandatory for target notation '${tgtNotation.toString()}'.`);
|
|
134
141
|
|
|
135
142
|
return function(srcCol: DG.Column): DG.Column {
|
|
136
|
-
const converterSh =
|
|
143
|
+
const converterSh = seqHelper.getSeqHandler(srcCol);
|
|
137
144
|
const resCol = converterSh.convert(tgtNotation, tgtSeparator);
|
|
138
145
|
expect(resCol.meta.units, tgtNotation);
|
|
139
146
|
return resCol;
|
|
@@ -152,8 +159,8 @@ RNA1{p.r(U)p.r(U)p.r(C)p.r(A)p.r(A)p.r(C)p.r(U)p.r(U)p.r(C)p.r(A)p.r(A)p.r(C)p.p
|
|
|
152
159
|
const tgtCol: DG.Column = tgtDf.getCol('seq');
|
|
153
160
|
|
|
154
161
|
expectArray(resCol.toList(), tgtCol.toList());
|
|
155
|
-
const srcSh:
|
|
156
|
-
const resSh:
|
|
162
|
+
const srcSh: ISeqHandler = seqHelper.getSeqHandler(srcCol);
|
|
163
|
+
const resSh: ISeqHandler = seqHelper.getSeqHandler(resCol);
|
|
157
164
|
for (const [tagName, tgtTagValue] of Object.entries(tgtCol.tags)) {
|
|
158
165
|
if (
|
|
159
166
|
!bioTagsSet.has(tagName) ||
|
|
@@ -4,14 +4,17 @@ import * as DG from 'datagrok-api/dg';
|
|
|
4
4
|
|
|
5
5
|
import {before, category, test, expect} from '@datagrok-libraries/utils/src/test';
|
|
6
6
|
import {ALPHABET, getAlphabet, NOTATION} from '@datagrok-libraries/bio/src/utils/macromolecule';
|
|
7
|
-
import {
|
|
7
|
+
import {ISeqHelper, getSeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
|
|
8
8
|
|
|
9
9
|
import {_package} from '../package-test';
|
|
10
10
|
|
|
11
|
+
|
|
11
12
|
category('detectorsBenchmark', () => {
|
|
13
|
+
let seqHelper: ISeqHelper;
|
|
12
14
|
let detectFunc: DG.Func;
|
|
13
15
|
|
|
14
16
|
before(async () => {
|
|
17
|
+
seqHelper = await getSeqHelper();
|
|
15
18
|
const funcList: DG.Func[] = DG.Func.find({package: 'Bio', name: 'detectMacromolecule'});
|
|
16
19
|
detectFunc = funcList[0];
|
|
17
20
|
|
|
@@ -125,7 +128,7 @@ category('detectorsBenchmark', () => {
|
|
|
125
128
|
}
|
|
126
129
|
|
|
127
130
|
function checkDetectorRes(col: DG.Column, tgt: TgtType): void {
|
|
128
|
-
const sh =
|
|
131
|
+
const sh = seqHelper.getSeqHandler(col);
|
|
129
132
|
expect(col.semType === tgt.semType, true);
|
|
130
133
|
expect(sh.notation === tgt.notation, true);
|
|
131
134
|
expect(sh.alphabet === tgt.alphabet, true);
|