@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.
Files changed (78) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/detectors.js +16 -11
  3. package/dist/455.js.map +1 -1
  4. package/dist/980.js +1 -1
  5. package/dist/980.js.map +1 -1
  6. package/dist/package-test.js +6 -6
  7. package/dist/package-test.js.map +1 -1
  8. package/dist/package.js +3 -3
  9. package/dist/package.js.map +1 -1
  10. package/package.json +5 -5
  11. package/src/analysis/sequence-activity-cliffs.ts +3 -4
  12. package/src/analysis/sequence-diversity-viewer.ts +5 -3
  13. package/src/analysis/sequence-similarity-viewer.ts +8 -5
  14. package/src/analysis/sequence-space.ts +3 -2
  15. package/src/calculations/monomerLevelMols.ts +3 -3
  16. package/src/demo/bio01-similarity-diversity.ts +4 -1
  17. package/src/package-test.ts +1 -1
  18. package/src/package-types.ts +35 -2
  19. package/src/package.ts +57 -71
  20. package/src/tests/WebLogo-layout-tests.ts +1 -1
  21. package/src/tests/WebLogo-positions-test.ts +11 -5
  22. package/src/tests/WebLogo-project-tests.ts +1 -1
  23. package/src/tests/activity-cliffs-utils.ts +11 -14
  24. package/src/tests/bio-tests.ts +85 -79
  25. package/src/tests/checkInputColumn-tests.ts +15 -10
  26. package/src/tests/converters-test.ts +12 -5
  27. package/src/tests/detectors-benchmark-tests.ts +5 -2
  28. package/src/tests/detectors-tests.ts +51 -44
  29. package/src/tests/detectors-weak-and-likely-tests.ts +12 -5
  30. package/src/tests/fasta-export-tests.ts +13 -5
  31. package/src/tests/helm-tests.ts +85 -0
  32. package/src/tests/mm-distance-tests.ts +14 -7
  33. package/src/tests/monomer-libraries-tests.ts +1 -1
  34. package/src/tests/msa-tests.ts +33 -24
  35. package/src/tests/renderers-monomer-placer-tests.ts +2 -5
  36. package/src/tests/renderers-test.ts +15 -9
  37. package/src/tests/scoring.ts +9 -6
  38. package/src/tests/seq-handler-get-helm-tests.ts +7 -5
  39. package/src/tests/seq-handler-get-region-tests.ts +9 -3
  40. package/src/tests/seq-handler-splitted-tests.ts +11 -5
  41. package/src/tests/seq-handler-tests.ts +17 -10
  42. package/src/tests/sequence-space-utils.ts +9 -4
  43. package/src/tests/splitters-test.ts +5 -4
  44. package/src/tests/substructure-filters-tests.ts +16 -13
  45. package/src/tests/to-atomic-level-tests.ts +5 -3
  46. package/src/tests/to-atomic-level-ui-tests.ts +4 -1
  47. package/src/tests/utils/detectors-utils.ts +4 -4
  48. package/src/utils/calculate-scores.ts +11 -9
  49. package/src/utils/cell-renderer-custom.ts +27 -17
  50. package/src/utils/cell-renderer.ts +14 -8
  51. package/src/utils/check-input-column.ts +13 -9
  52. package/src/utils/context-menu.ts +4 -4
  53. package/src/utils/convert.ts +21 -14
  54. package/src/utils/get-region-func-editor.ts +8 -5
  55. package/src/utils/get-region.ts +4 -5
  56. package/src/utils/helm-to-molfile/converter/helm.ts +4 -4
  57. package/src/utils/helm-to-molfile/utils.ts +5 -6
  58. package/src/utils/macromolecule-column-widget.ts +6 -7
  59. package/src/utils/monomer-cell-renderer-base.ts +8 -1
  60. package/src/utils/monomer-lib/lib-manager.ts +3 -2
  61. package/src/utils/monomer-lib/monomer-colors.ts +10 -10
  62. package/src/utils/monomer-lib/monomer-lib-base.ts +6 -1
  63. package/src/utils/monomer-lib/monomer-lib.ts +15 -9
  64. package/src/utils/multiple-sequence-alignment-ui.ts +30 -30
  65. package/src/utils/save-as-fasta.ts +19 -12
  66. package/src/utils/seq-helper/seq-handler.ts +859 -0
  67. package/src/utils/seq-helper/seq-helper.ts +11 -21
  68. package/src/utils/sequence-to-mol.ts +7 -8
  69. package/src/utils/split-to-monomers.ts +7 -2
  70. package/src/utils/types.ts +8 -7
  71. package/src/utils/ui-utils.ts +2 -2
  72. package/src/viewers/web-logo-viewer.ts +18 -16
  73. package/src/widgets/bio-substructure-filter.ts +1 -2
  74. package/src/widgets/composition-analysis-widget.ts +6 -6
  75. package/src/widgets/representations.ts +7 -4
  76. package/src/tests/detectors-custom-notation-tests.ts +0 -37
  77. package/src/utils/cyclized.ts +0 -89
  78. 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 {SeqHandler} from '@datagrok-libraries/bio/src/utils/seq-handler';
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-positions', () => {
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 = SeqHandler.forColumn(seqCol);
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-project', () => {
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
- df, df.getCol(seqColName), df.getCol(activityColName),
18
- similarityThr, drMethod, similarityMetric, preprocessingFunction, {[`${BYPASS_LARGE_DATA_WARNING}`]: true});
19
- // const scatterPlot = (await grok.functions.call('Bio:activityCliffs', {
20
- // table: df, molecules: df.getCol(colName), activities: df.getCol('Activity'),
21
- // similarity: 50, methodName: method
22
- // })) as DG.Viewer | undefined;
23
-
24
- // test scatter plot without activityCliffs passed
25
- // const scatterPlot = (await df.plot.fromType(DG.VIEWER.SCATTER_PLOT, {})) as DG.Viewer;
26
- // const libHelper: IMonomerLibHelper = (await grok.functions.call('Bio:getMonomerLibHelper'));
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) => {
@@ -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
- col, 'Test', [NOTATION.FASTA],
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
- col, 'Test', [NOTATION.FASTA],
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
- col, 'Test', [NOTATION.FASTA],
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 {SeqHandler} from '@datagrok-libraries/bio/src/utils/seq-handler';
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 = SeqHandler.forColumn(srcCol);
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: SeqHandler = SeqHandler.forColumn(srcCol);
156
- const resSh: SeqHandler = SeqHandler.forColumn(resCol);
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 {SeqHandler} from '@datagrok-libraries/bio/src/utils/seq-handler';
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 = SeqHandler.forColumn(col);
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);