@datagrok/bio 1.7.2 → 1.7.3

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/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@datagrok/bio",
3
3
  "beta": false,
4
4
  "friendlyName": "Bio",
5
- "version": "1.7.2",
5
+ "version": "1.7.3",
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,7 +11,7 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@biowasm/aioli": ">=2.4.0",
14
- "@datagrok-libraries/bio": "^2.5.0",
14
+ "@datagrok-libraries/bio": "2.8.1",
15
15
  "@datagrok-libraries/utils": "^1.0.0",
16
16
  "@datagrok-libraries/ml": "^2.0.10",
17
17
  "cash-dom": "latest",
@@ -60,10 +60,7 @@
60
60
  ],
61
61
  "sources": [
62
62
  "css/helm.css",
63
- "https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js",
64
- "helm/JSDraw/Scilligence.JSDraw2.Lite.js",
65
- "helm/JSDraw/Scilligence.JSDraw2.Resources.js",
66
- "helm/JSDraw/Pistoia.HELM-uncompressed.js"
63
+ "https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"
67
64
  ],
68
65
  "category": "Bioinformatics"
69
66
  }
@@ -8,7 +8,7 @@ import './tests/detectors-test';
8
8
  import './tests/msa-tests';
9
9
  import './tests/sequence-space-test';
10
10
  import './tests/activity-cliffs-tests';
11
- import './tests/splitter-test';
11
+ import './tests/splitters-test';
12
12
  import './tests/renderer-test';
13
13
  import './tests/convert-test';
14
14
 
package/src/package.ts CHANGED
@@ -11,7 +11,6 @@ import {runKalign, testMSAEnoughMemory} from './utils/multiple-sequence-alignmen
11
11
  import {SequenceAlignment, Aligned} from './seq_align';
12
12
  import {Nucleotides} from '@datagrok-libraries/bio/src/nucleotides';
13
13
  import {Aminoacids} from '@datagrok-libraries/bio/src/aminoacids';
14
- import {convert} from './utils/convert';
15
14
  import {getEmbeddingColsNames, sequenceSpace} from './utils/sequence-space';
16
15
  import {AvailableMetrics} from '@datagrok-libraries/ml/src/typed-metrics';
17
16
  import {getActivityCliffs} from '@datagrok-libraries/ml/src/viewers/activity-cliffs';
@@ -19,10 +18,8 @@ import {sequenceGetSimilarities, drawTooltip} from './utils/sequence-activity-cl
19
18
  import {getMolfilesFromSeq, HELM_CORE_LIB_FILENAME} from './utils/utils';
20
19
  import {getMacroMol} from './utils/atomic-works';
21
20
  import {MacromoleculeSequenceCellRenderer} from './utils/cell-renderer';
22
- import {Column} from 'datagrok-api/dg';
23
- import {SEM_TYPES} from './utils/constants';
24
- import { delay } from '@datagrok-libraries/utils/src/test';
25
- import { TableView } from 'datagrok-api/dg';
21
+ import {delay} from '@datagrok-libraries/utils/src/test';
22
+ import {convert} from './utils/convert';
26
23
 
27
24
  //tags: init
28
25
  export async function initBio(): Promise<void> {
@@ -175,21 +172,22 @@ export async function toAtomicLevel(df: DG.DataFrame, macroMolecule: DG.Column):
175
172
  if (!checkInputColumn(macroMolecule, 'To Atomic Level'))
176
173
  return;
177
174
 
178
- let currentView: TableView;
179
- for (let view of grok.shell.tableViews) {
180
- if (df.name === view.name) {
175
+ let currentView: DG.TableView;
176
+ for (const view of grok.shell.tableViews) {
177
+ if (df.name === view.name)
181
178
  currentView = view;
182
- }
183
179
  }
184
- const file = await _package.files.readAsText('tests/sar-small.csv');
185
- const df2 = DG.DataFrame.fromCsv(file);
186
- const v = grok.shell.addTableView(df2);
187
- setTimeout(()=> {
180
+
181
+ // Some hack to activate Chem Molecule rendering
182
+ const file2 = await _package.files.readAsText('tests/sar-small.csv');
183
+ const df2 = DG.DataFrame.fromCsv(file2);
184
+ const v2 = grok.shell.addTableView(df2);
185
+ setTimeout(() => {
188
186
  grok.shell.closeTable(df2);
189
- v.close();
187
+ v2.close();
190
188
  grok.shell.v = currentView;
191
189
  }, 100);
192
-
190
+
193
191
  const monomersLibFile = await _package.files.readAsText(HELM_CORE_LIB_FILENAME);
194
192
  const monomersLibObject: any[] = JSON.parse(monomersLibFile);
195
193
  const atomicCodes = getMolfilesFromSeq(macroMolecule, monomersLibObject);
@@ -199,7 +197,6 @@ export async function toAtomicLevel(df: DG.DataFrame, macroMolecule: DG.Column):
199
197
  col.semType = DG.SEMTYPE.MOLECULE;
200
198
  col.tags[DG.TAGS.UNITS] = 'molblock';
201
199
  df.columns.add(col, true);
202
-
203
200
  }
204
201
 
205
202
 
@@ -61,6 +61,24 @@ XZJ{}2
61
61
  test('testPickupPaletteX', async () => { await _testPickupPaletteX(csvDfX); });
62
62
  });
63
63
 
64
+ category('WebLogo.monomerToText', () => {
65
+ test('longMonomerSingle', async () => {
66
+ await expect(WebLogo.monomerToText('S'), 'S');
67
+ });
68
+ test('longMonomerShort', async () => {
69
+ await expect(WebLogo.monomerToText('Short'), 'Short');
70
+ });
71
+ test('longMonomerLong56', async () => {
72
+ await expect(WebLogo.monomerToText('Long56'), 'Long5…');
73
+ });
74
+ test('longMonomerComplexFirstPartShort', async () => {
75
+ await expect(WebLogo.monomerToText('Long-long'), 'Long…');
76
+ });
77
+ test('longMonomerComplexFirstPartLong56', async () => {
78
+ await expect(WebLogo.monomerToText('Long56-long'), 'Long5…');
79
+ });
80
+ });
81
+
64
82
 
65
83
  export async function _testGetStats(csvDfN1: string) {
66
84
  const dfN1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1);
@@ -1,7 +1,9 @@
1
1
  import {after, before, category, expect, expectFloat, test} from '@datagrok-libraries/utils/src/test';
2
+
2
3
  import * as DG from 'datagrok-api/dg';
3
- import {createTableView, readDataframe} from './utils';
4
- import {_package} from '../package-test';
4
+ import * as grok from 'datagrok-api/grok';
5
+
6
+ import {readDataframe} from './utils';
5
7
  import {getEmbeddingColsNames, sequenceSpace} from '../utils/sequence-space';
6
8
  import {drawTooltip, sequenceGetSimilarities} from '../utils/sequence-activity-cliffs';
7
9
  import {getActivityCliffs} from '@datagrok-libraries/ml/src/viewers/activity-cliffs';
@@ -12,8 +14,15 @@ category('activityCliffs', async () => {
12
14
  let actCliffsDf: DG.DataFrame;
13
15
 
14
16
  before(async () => {
15
- actCliffsTableView = await createTableView('sample_MSA.csv');
16
- actCliffsDf = await readDataframe('sample_MSA.csv');
17
+ actCliffsDf = await readDataframe('samples/sample_MSA.csv');
18
+ actCliffsTableView = grok.shell.addTableView(actCliffsDf);
19
+
20
+ actCliffsDf = actCliffsTableView.dataFrame;
21
+ });
22
+
23
+ after(async () => {
24
+ grok.shell.closeTable(actCliffsDf);
25
+ actCliffsTableView.close();
17
26
  });
18
27
 
19
28
  test('activityCliffsOpen', async () => {
@@ -41,10 +50,6 @@ category('activityCliffs', async () => {
41
50
 
42
51
  const cliffsLink = (Array.from(scatterPlot.root.children) as Element[])
43
52
  .filter((it) => it.className === 'ui-btn ui-btn-ok');
44
- expect((cliffsLink[0] as HTMLElement).innerText, '101 cliffs');
45
- });
46
-
47
- after(async () => {
48
- actCliffsTableView.close();
53
+ expect((cliffsLink[0] as HTMLElement).innerText, '105 cliffs');
49
54
  });
50
55
  });
@@ -4,7 +4,7 @@ import * as grok from 'datagrok-api/grok';
4
4
  import * as DG from 'datagrok-api/dg';
5
5
 
6
6
  import {ConverterFunc, DfReaderFunc} from './types';
7
- import {NOTATION, NotationConverter} from '../utils/notation-converter';
7
+ import {NOTATION, NotationConverter} from '@datagrok-libraries/bio/src/utils/notation-converter';
8
8
 
9
9
  // import {mmSemType} from '../const';
10
10
  // import {importFasta} from '../package';
@@ -102,6 +102,7 @@ MWRSWY-CKHP
102
102
 
103
103
  const enum Samples {
104
104
  peptidesComplex = 'peptidesComplex',
105
+ peptidesSimple = 'peptidesSimple',
105
106
  fastaCsv = 'fastaCsv',
106
107
  fastaFasta = 'fastaFasta',
107
108
  fastaPtCsv = 'fastaPtCsv',
@@ -115,15 +116,16 @@ MWRSWY-CKHP
115
116
  }
116
117
 
117
118
  const samples: { [key: string]: string } = {
118
- 'peptidesComplex': 'System:AppData/Bio/tests/peptides_complex_msa.csv',
119
119
  'fastaCsv': 'System:AppData/Bio/samples/sample_FASTA.csv',
120
120
  'fastaFasta': 'System:AppData/Bio/samples/sample_FASTA.fasta',
121
121
  'fastaPtCsv': 'System:AppData/Bio/samples/sample_FASTA_PT.csv',
122
122
  'msaComplex': 'System:AppData/Bio/samples/sample_MSA.csv',
123
123
  'helmCsv': 'System:AppData/Bio/samples/sample_HELM.csv',
124
+ 'peptidesComplex': 'System:AppData/Bio/tests/peptides_complex_msa.csv',
125
+ 'peptidesSimple': 'System:AppData/Bio/tests/peptides_simple_msa.csv',
124
126
  'testDemogCsv': 'System:AppData/Bio/tests/testDemog.csv',
125
127
  'testHelmCsv': 'System:AppData/Bio/tests/testHelm.csv',
126
- 'testIdCsv': 'System:AppData/Bio/tests/id.csv',
128
+ 'testIdCsv': 'System:AppData/Bio/tests/testId.csv',
127
129
  'testSmilesCsv': 'System:AppData/Bio/tests/testSmiles.csv',
128
130
  'testSmiles2Csv': 'System:AppData/Bio/tests/testSmiles2.csv',
129
131
  };
@@ -228,6 +230,10 @@ MWRSWY-CKHP
228
230
  await _testPos(readSamples(Samples.fastaFasta, readFileFasta), 'sequence', 'fasta:SEQ:PT');
229
231
  });
230
232
 
233
+ // peptidesComplex contains monomers with spaces in AlignedSequence columns, which are forbidden
234
+ // test('samplesPeptidesComplexPositiveAlignedSequence', async () => {
235
+ // await _testPos(readSamples(Samples.peptidesComplex), 'AlignedSequence', 'separator:SEQ:UN', '-');
236
+ // });
231
237
  test('samplesPeptidesComplexNegativeID', async () => {
232
238
  await _testNeg(readSamples(Samples.peptidesComplex), 'ID');
233
239
  });
@@ -7,12 +7,15 @@ import {importFasta, multipleSequenceAlignmentAny} from '../package';
7
7
 
8
8
  category('renderers', () => {
9
9
  let tvList: DG.TableView[];
10
+ let dfList: DG.DataFrame[];
10
11
 
11
12
  before(async () => {
12
13
  tvList = [];
14
+ dfList = [];
13
15
  });
14
16
 
15
17
  after(async () => {
18
+ dfList.forEach((df: DG.DataFrame) => { grok.shell.closeTable(df); });
16
19
  tvList.forEach((tv: DG.TableView) => tv.close());
17
20
  });
18
21
 
@@ -23,6 +26,7 @@ category('renderers', () => {
23
26
  async function _testAfterMsa() {
24
27
  const fastaTxt: string = await grok.dapi.files.readAsText('System:AppData/Bio/samples/sample_FASTA.fasta');
25
28
  const df: DG.DataFrame = importFasta(fastaTxt)[0];
29
+ // await grok.data.detectSemanticTypes(df);
26
30
 
27
31
  const srcSeqCol: DG.Column | null = df.col('sequence');
28
32
  expect(srcSeqCol !== null, true);
@@ -31,14 +35,15 @@ category('renderers', () => {
31
35
  const tv: DG.TableView = grok.shell.addTableView(df);
32
36
  console.log('Bio: tests/renderers/afterMsa, table view');
33
37
 
34
- await grok.data.detectSemanticTypes(df);
38
+ // await grok.data.detectSemanticTypes(df);
35
39
  console.log('Bio: tests/renderers/afterMsa, detectSemanticTypes');
36
40
 
37
- console.log('Bio: tests/renderers/afterMsa, src before test semType' +
41
+ console.log('Bio: tests/renderers/afterMsa, src before test ' +
38
42
  `semType="${srcSeqCol!.semType}", units="${srcSeqCol!.getTag(DG.TAGS.UNITS)}", ` +
39
43
  `cell.renderer="${srcSeqCol!.getTag('cell.renderer')}"`);
40
44
  expect(srcSeqCol!.semType, DG.SEMTYPE.MACROMOLECULE);
41
45
  expect(srcSeqCol!.getTag(DG.TAGS.UNITS), 'fasta:SEQ:PT');
46
+ // TODO: Find the way to check renderer for columns
42
47
  expect(srcSeqCol!.getTag('cell.renderer'), 'Macromolecule');
43
48
  console.log('Bio: tests/renderers/afterMsa, src semType tested');
44
49
 
@@ -53,6 +58,7 @@ category('renderers', () => {
53
58
  expect(msaSeqCol!.getTag('cell.renderer'), 'Macromolecule');
54
59
  console.log('Bio: tests/renderers/afterMsa, msa semType tested');
55
60
 
61
+ dfList.push(df);
56
62
  tvList.push(tv);
57
63
  }
58
64
  });
@@ -1,16 +1,20 @@
1
- import {before, category, test, expect} from '@datagrok-libraries/utils/src/test';
1
+ import {after, before, category, test, expect} from '@datagrok-libraries/utils/src/test';
2
2
  import * as DG from 'datagrok-api/dg';
3
3
  import {sequenceSpace} from '../utils/sequence-space';
4
4
  import {readDataframe} from './utils';
5
- //import * as grok from 'datagrok-api/grok';
5
+ import * as grok from 'datagrok-api/grok';
6
6
 
7
7
  category('sequenceSpace', async () => {
8
8
  let testFastaDf: DG.DataFrame;
9
9
 
10
10
  before(async () => {
11
- testFastaDf = await readDataframe('sample_FASTA.csv');
11
+ testFastaDf = await readDataframe('samples/sample_FASTA.csv');
12
+ // await grok.data.detectSemanticTypes(testFastaDf);
12
13
  });
13
14
 
15
+ after(async () => {
16
+ grok.shell.closeTable(testFastaDf);
17
+ });
14
18
 
15
19
  test('sequenceSpaceOpens', async () => {
16
20
  const sequenceSpaceParams = {
@@ -0,0 +1,35 @@
1
+ import {after, before, category, test, expect, expectArray} from '@datagrok-libraries/utils/src/test';
2
+
3
+ import * as grok from 'datagrok-api/grok';
4
+ import * as ui from 'datagrok-api/ui';
5
+ import * as DG from 'datagrok-api/dg';
6
+ import {WebLogo, SplitterFunc} from '@datagrok-libraries/bio/src/viewers/web-logo';
7
+
8
+ category('splitters', () => {
9
+ const helm1 = 'PEPTIDE1{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
+
11
+ const helm2 = 'PEPTIDE1{meI.hHis.Hcy.Q.T.W.Q.Phe_4NH2.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.N.meK}$$$';
12
+
13
+ const data: { [key: string]: [string, string[]] } = {
14
+ helm1: [
15
+ 'PEPTIDE1{meI.hHis.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.D-Orn.D-aThr.Phe_4Me}$$$',
16
+ ['meI', 'hHis', 'Aca', 'N', 'T', 'dE', 'Thr_PO3H2', 'Aca', 'D-Tyr_Et',
17
+ 'Tyr_ab-dehydroMe', 'dV', 'E', 'N', 'D-Orn', 'D-aThr', 'Phe_4Me']
18
+ ],
19
+ helm2: [
20
+ 'PEPTIDE1{meI.hHis.Aca.N.T.dK.Thr_PO3H2.Aca.D-Tyr_Et.D-Dap.dV.E.N.pnG.Phe_4Me}$$$',
21
+ ['meI', 'hHis', 'Aca', 'N', 'T', 'dK', 'Thr_PO3H2', 'Aca',
22
+ 'D-Tyr_Et', 'D-Dap', 'dV', 'E', 'N', 'pnG', 'Phe_4Me']
23
+ ],
24
+ };
25
+
26
+ test('helm1', async () => { await _testHelmSplitter(data.helm1[0], data.helm1[1]); });
27
+ test('helm2', async () => { await _testHelmSplitter(data.helm2[0], data.helm2[1]); });
28
+ });
29
+
30
+ export async function _testHelmSplitter(src: string, tgt: string[]) {
31
+ const res: string[] = WebLogo.splitterAsHelm(src);
32
+ console.debug(`Bio: tests: splitters: src=${JSON.stringify(src)}, res=${JSON.stringify(res)} .`);
33
+ expectArray(res, tgt);
34
+ }
35
+
@@ -68,9 +68,9 @@ function printLeftOrCentered(
68
68
  g.textAlign = 'start';
69
69
  const colorPart = s.substring(0);
70
70
  let grayPart = separator;
71
- if (last) {
71
+ if (last)
72
72
  grayPart = '';
73
- }
73
+
74
74
  const textSize = g.measureText(colorPart + grayPart);
75
75
  const indent = 5;
76
76
 
@@ -98,8 +98,11 @@ function printLeftOrCentered(
98
98
 
99
99
  export class MacromoleculeSequenceCellRenderer extends DG.GridCellRenderer {
100
100
  get name(): string { return 'macromoleculeSequence'; }
101
+
101
102
  get cellType(): string { return C.SEM_TYPES.Macro_Molecule; }
103
+
102
104
  get defaultHeight(): number { return 30; }
105
+
103
106
  get defaultWidth(): number { return 230; }
104
107
 
105
108
  /**
@@ -166,10 +169,10 @@ export class MacromoleculeSequenceCellRenderer extends DG.GridCellRenderer {
166
169
  color = palette.get(amino);
167
170
  g.fillStyle = undefinedColor;
168
171
  let last = false;
169
- if (index === subParts.length - 1) {
172
+ if (index === subParts.length - 1)
170
173
  last = true;
171
- }
172
- x1 = printLeftOrCentered(x1, y, w, h, g, amino, color, 0, true, 1.0, separator, last);
174
+
175
+ x1 = printLeftOrCentered(x1, y, w, h, g, amino, color, 0, true, 1.0, separator, last);
173
176
  });
174
177
 
175
178
  g.restore();
@@ -1,6 +1,6 @@
1
1
  import * as DG from 'datagrok-api/dg';
2
2
  import * as ui from 'datagrok-api/ui';
3
- import {NotationConverter, NOTATION} from './notation-converter';
3
+ import {NotationConverter, NOTATION} from '@datagrok-libraries/bio/src/utils/notation-converter';
4
4
 
5
5
  /**
6
6
  * Converts notations of a Macromolecule column
@@ -1,4 +1,4 @@
1
- <html><head><meta charset="utf-8"/><title>Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit ac96da52.</title><style type="text/css">html,
1
+ <html><head><meta charset="utf-8"/><title>Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit 303cfb72.</title><style type="text/css">html,
2
2
  body {
3
3
  font-family: Arial, Helvetica, sans-serif;
4
4
  font-size: 1rem;
@@ -229,7 +229,7 @@ header {
229
229
  font-size: 1rem;
230
230
  padding: 0 0.5rem;
231
231
  }
232
- </style></head><body><div id="jesthtml-content"><header><h1 id="title">Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit ac96da52.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-07-13 09:24:48</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts</div><div class="suite-time warn">110.354s</div></div><div class="suite-tests"><div class="test-result failed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">failed</div><div class="test-duration">100.001s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: thrown: "Exceeded timeout of 100000 ms for a test.
232
+ </style></head><body><div id="jesthtml-content"><header><h1 id="title">Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit 303cfb72.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-07-13 14:53:02</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts</div><div class="suite-time warn">110.084s</div></div><div class="suite-tests"><div class="test-result failed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">failed</div><div class="test-duration">100.002s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: thrown: "Exceeded timeout of 100000 ms for a test.
233
233
  Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."
234
234
  at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:22:1)
235
235
  at Runtime._execModule (/home/runner/work/public/public/packages/Bio/node_modules/jest-runtime/build/index.js:1646:24)
@@ -1,22 +0,0 @@
1
- import {after, before, category, test, expect, expectObject} from '@datagrok-libraries/utils/src/test';
2
-
3
- import * as grok from 'datagrok-api/grok';
4
- import * as ui from 'datagrok-api/ui';
5
- import * as DG from 'datagrok-api/dg';
6
- import {WebLogo, SplitterFunc} from '@datagrok-libraries/bio/src/viewers/web-logo';
7
-
8
- category('splitter', () => {
9
- const helm1 = 'PEPTIDE1{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
- const helm2 = 'PEPTIDE1{meI.hHis.Hcy.Q.T.W.Q.Phe_4NH2.D-Tyr_Et.Tyr_ab-dehydroMe.dV.E.N.N.meK}$$$';
11
-
12
- test('helm1', async () => { await _testHelmSplitter(helm1); });
13
- test('helm2', async () => { await _testHelmSplitter(helm2); });
14
- });
15
-
16
- export async function _testHelmSplitter(txt: string) {
17
- // const splitter: SplitterFunc = WebLogo.getSplitterAsHelm();
18
- //
19
- // const mList: string[] = splitter(txt);
20
- // expect(mList.length, 12);
21
- }
22
-