@datagrok/sequence-translator 1.4.1 → 1.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.
@@ -0,0 +1,118 @@
1
+ import * as grok from 'datagrok-api/grok';
2
+ import * as ui from 'datagrok-api/ui';
3
+ import * as DG from 'datagrok-api/dg';
4
+
5
+ import {before, after, category, expect, test, expectArray} from '@datagrok-libraries/utils/src/test';
6
+ import {getHelmHelper, IHelmHelper} from '@datagrok-libraries/bio/src/helm/helm-helper';
7
+ import {getMonomerLibHelper, IMonomerLibHelper} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
8
+ import {UserLibSettings} from '@datagrok-libraries/bio/src/monomer-works/types';
9
+ import {
10
+ getUserLibSettings, setUserLibSettings, setUserLibSettingsForTests
11
+ } from '@datagrok-libraries/bio/src/monomer-works/lib-settings';
12
+
13
+ import {PolyToolEnumeratorParams, PolyToolEnumeratorTypes} from '../polytool/types';
14
+ import {doPolyToolEnumerateHelm} from '../polytool/pt-enumeration-helm';
15
+
16
+ import {_package} from '../package-test';
17
+
18
+ category('PolyTool: Enumerate', () => {
19
+ let helmHelper: IHelmHelper;
20
+ let monomerLibHelper: IMonomerLibHelper;
21
+ let userLibSettings: UserLibSettings; //backup
22
+
23
+ before(async () => {
24
+ helmHelper = await getHelmHelper(); // initialize JSDraw2 and org
25
+
26
+ monomerLibHelper = await getMonomerLibHelper();
27
+ userLibSettings = await getUserLibSettings();
28
+ // Clear settings to test default
29
+ await setUserLibSettingsForTests();
30
+ await monomerLibHelper.awaitLoaded();
31
+ await monomerLibHelper.loadMonomerLib(true);
32
+ });
33
+
34
+ after(async () => {
35
+ await setUserLibSettings(userLibSettings);
36
+ await monomerLibHelper.loadMonomerLib(true);
37
+ });
38
+
39
+ const tests: {
40
+ [testName: string]: { src: string, params: PolyToolEnumeratorParams, tgt: { seq: string, name: string }[] }
41
+ } = {
42
+ 'breadth1': {
43
+ src: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0',
44
+ params: {
45
+ type: PolyToolEnumeratorTypes.Single,
46
+ placeholdersBreadth: [
47
+ {start: 2, end: 4, monomers: ['K']},
48
+ ],
49
+ },
50
+ tgt: [
51
+ {seq: 'PEPTIDE1{[Ac(1)].F.K.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-W3K'},
52
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.K.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-G4K'},
53
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5K'},
54
+ ],
55
+ },
56
+ 'breadth1-with-original': {
57
+ src: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0',
58
+ params: {
59
+ type: PolyToolEnumeratorTypes.Single,
60
+ placeholdersBreadth: [
61
+ {start: 2, end: 4, monomers: ['K']},
62
+ ],
63
+ keepOriginal: true,
64
+ },
65
+ tgt: [
66
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: ''},
67
+ {seq: 'PEPTIDE1{[Ac(1)].F.K.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-W3K'},
68
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.K.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-G4K'},
69
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5K'},
70
+ ],
71
+ },
72
+ 'breadth2': {
73
+ src: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0',
74
+ params: {
75
+ type: PolyToolEnumeratorTypes.Single,
76
+ placeholdersBreadth: [
77
+ {start: 2, end: 4, monomers: ['K', 'Y']},
78
+ ],
79
+ },
80
+ tgt: [
81
+ {seq: 'PEPTIDE1{[Ac(1)].F.K.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-W3K'},
82
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.K.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-G4K'},
83
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5K'},
84
+ {seq: 'PEPTIDE1{[Ac(1)].F.Y.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-W3Y'},
85
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.Y.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-G4Y'},
86
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.Y.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5Y'},
87
+ ],
88
+ },
89
+ 'breadth-double': {
90
+ src: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0',
91
+ params: {
92
+ type: PolyToolEnumeratorTypes.Single,
93
+ placeholdersBreadth: [
94
+ {start: 2, end: 4, monomers: ['K']},
95
+ {start: 2, end: 4, monomers: ['Y']},
96
+ ],
97
+ },
98
+ tgt: [
99
+ {seq: "PEPTIDE1{[Ac(1)].F.Y.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-W3K-K3Y"},
100
+ {seq: "PEPTIDE1{[Ac(1)].F.K.Y.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-W3K-G4Y"},
101
+ {seq: "PEPTIDE1{[Ac(1)].F.K.G.Y.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-W3K-P5Y"},
102
+ {seq: "PEPTIDE1{[Ac(1)].F.Y.K.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-G4K-W3Y"},
103
+ {seq: "PEPTIDE1{[Ac(1)].F.W.Y.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-G4K-K4Y"},
104
+ {seq: "PEPTIDE1{[Ac(1)].F.W.K.Y.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-G4K-P5Y"},
105
+ {seq: "PEPTIDE1{[Ac(1)].F.Y.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-P5K-W3Y"},
106
+ {seq: "PEPTIDE1{[Ac(1)].F.W.Y.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-P5K-G4Y"},
107
+ {seq: "PEPTIDE1{[Ac(1)].F.W.G.Y.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0", name: "-P5K-K5Y"}
108
+ ]
109
+ }
110
+ };
111
+
112
+ for (const [testName, testData] of Object.entries(tests)) {
113
+ test(`${testName}`, async () => {
114
+ const res = doPolyToolEnumerateHelm(testData.src, '', testData.params);
115
+ expectArray(res, testData.tgt.map((r) => [r.seq, r.name]));
116
+ });
117
+ }
118
+ });
@@ -27,6 +27,7 @@ category('PolyTool: Enumerate', () => {
27
27
  userLibSettings = await getUserLibSettings();
28
28
  // Clear settings to test default
29
29
  await setUserLibSettingsForTests();
30
+ await monomerLibHelper.awaitLoaded();
30
31
  await monomerLibHelper.loadMonomerLib(true);
31
32
  });
32
33
 
@@ -36,42 +37,42 @@ category('PolyTool: Enumerate', () => {
36
37
  });
37
38
 
38
39
  const tests: {
39
- [testName: string]: { src: string, params: PolyToolEnumeratorParams, tgt: [string, string][] }
40
+ [testName: string]: { src: string, params: PolyToolEnumeratorParams, tgt: { seq: string, name: string }[] }
40
41
  } = {
41
42
  'single1': {
42
43
  src: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0',
43
44
  params: {
44
45
  type: PolyToolEnumeratorTypes.Single,
45
- placeholders: {
46
- [4]: ['K', 'P', 'F4COO'],
47
- [6]: ['Y', 'T'],
48
- },
46
+ placeholders: [
47
+ {position: 4, monomers: ['K', 'P', 'F4COO']},
48
+ {position: 6, monomers: ['Y', 'T']},
49
+ ],
49
50
  },
50
51
  tgt: [
51
- ['PEPTIDE1{[Ac(1)].F.W.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', '-P5K'],
52
- ['PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', '-P5P'],
53
- ['PEPTIDE1{[Ac(1)].F.W.G.[F4COO].L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', '-P5[F4COO]'],
54
- ['PEPTIDE1{[Ac(1)].F.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-[Tic]7Y'],
55
- ['PEPTIDE1{[Ac(1)].F.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', '-[Tic]7T'],
52
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5K'},
53
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5P'},
54
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.[F4COO].L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5[F4COO]'},
55
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-[Tic]7Y'},
56
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-[Tic]7T'},
56
57
  ]
57
58
  },
58
59
  'single-with-original': {
59
60
  src: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0',
60
61
  params: {
61
62
  type: PolyToolEnumeratorTypes.Single,
62
- placeholders: {
63
- [4]: ['K', 'P', 'F4COO'],
64
- [6]: ['Y', 'T'],
65
- },
63
+ placeholders: [
64
+ {position: 4, monomers: ['K', 'P', 'F4COO']},
65
+ {position: 6, monomers: ['Y', 'T']},
66
+ ],
66
67
  keepOriginal: true,
67
68
  },
68
69
  tgt: [
69
- ['PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', ''],
70
- ['PEPTIDE1{[Ac(1)].F.W.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', '-P5K'],
71
- ['PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', '-P5P'],
72
- ['PEPTIDE1{[Ac(1)].F.W.G.[F4COO].L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', '-P5[F4COO]'],
73
- ['PEPTIDE1{[Ac(1)].F.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-[Tic]7Y'],
74
- ['PEPTIDE1{[Ac(1)].F.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', '-[Tic]7T'],
70
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: ''},
71
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.K.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5K'},
72
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5P'},
73
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.[F4COO].L.[Tic].[C(1)].G.[NH2]}$$$$V2.0', name: '-P5[F4COO]'},
74
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-[Tic]7Y'},
75
+ {seq: 'PEPTIDE1{[Ac(1)].F.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-[Tic]7T'},
75
76
  ]
76
77
  },
77
78
  'matrix1': {
@@ -79,25 +80,25 @@ category('PolyTool: Enumerate', () => {
79
80
  params:
80
81
  {
81
82
  type: PolyToolEnumeratorTypes.Matrix,
82
- placeholders: {
83
- [1]: ['D', 'L'],
84
- [4]: ['K', 'P', 'F4COO'],
85
- [6]: ['Y', 'T'],
86
- }
83
+ placeholders: [
84
+ {position: 1, monomers: ['D', 'L']},
85
+ {position: 4, monomers: ['K', 'P', 'F4COO']},
86
+ {position: 6, monomers: ['Y', 'T']},
87
+ ]
87
88
  },
88
89
  tgt: [
89
- ['PEPTIDE1{[Ac(1)].D.W.G.K.L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-F2D-P5K-[Tic]7Y'],
90
- ['PEPTIDE1{[Ac(1)].D.W.G.K.L.T.[C(1)].G.[NH2]}$$$$V2.0', '-F2D-P5K-[Tic]7T'],
91
- ['PEPTIDE1{[Ac(1)].D.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-F2D-P5P-[Tic]7Y'],
92
- ['PEPTIDE1{[Ac(1)].D.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', '-F2D-P5P-[Tic]7T'],
93
- ['PEPTIDE1{[Ac(1)].D.W.G.[F4COO].L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-F2D-P5[F4COO]-[Tic]7Y'],
94
- ['PEPTIDE1{[Ac(1)].D.W.G.[F4COO].L.T.[C(1)].G.[NH2]}$$$$V2.0', '-F2D-P5[F4COO]-[Tic]7T'],
95
- ['PEPTIDE1{[Ac(1)].L.W.G.K.L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-F2L-P5K-[Tic]7Y'],
96
- ['PEPTIDE1{[Ac(1)].L.W.G.K.L.T.[C(1)].G.[NH2]}$$$$V2.0', '-F2L-P5K-[Tic]7T'],
97
- ['PEPTIDE1{[Ac(1)].L.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-F2L-P5P-[Tic]7Y'],
98
- ['PEPTIDE1{[Ac(1)].L.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', '-F2L-P5P-[Tic]7T'],
99
- ['PEPTIDE1{[Ac(1)].L.W.G.[F4COO].L.Y.[C(1)].G.[NH2]}$$$$V2.0', '-F2L-P5[F4COO]-[Tic]7Y'],
100
- ['PEPTIDE1{[Ac(1)].L.W.G.[F4COO].L.T.[C(1)].G.[NH2]}$$$$V2.0', '-F2L-P5[F4COO]-[Tic]7T'],
90
+ {seq: 'PEPTIDE1{[Ac(1)].D.W.G.K.L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2D-P5K-[Tic]7Y'},
91
+ {seq: 'PEPTIDE1{[Ac(1)].D.W.G.K.L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2D-P5K-[Tic]7T'},
92
+ {seq: 'PEPTIDE1{[Ac(1)].D.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2D-P5P-[Tic]7Y'},
93
+ {seq: 'PEPTIDE1{[Ac(1)].D.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2D-P5P-[Tic]7T'},
94
+ {seq: 'PEPTIDE1{[Ac(1)].D.W.G.[F4COO].L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2D-P5[F4COO]-[Tic]7Y'},
95
+ {seq: 'PEPTIDE1{[Ac(1)].D.W.G.[F4COO].L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2D-P5[F4COO]-[Tic]7T'},
96
+ {seq: 'PEPTIDE1{[Ac(1)].L.W.G.K.L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2L-P5K-[Tic]7Y'},
97
+ {seq: 'PEPTIDE1{[Ac(1)].L.W.G.K.L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2L-P5K-[Tic]7T'},
98
+ {seq: 'PEPTIDE1{[Ac(1)].L.W.G.P.L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2L-P5P-[Tic]7Y'},
99
+ {seq: 'PEPTIDE1{[Ac(1)].L.W.G.P.L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2L-P5P-[Tic]7T'},
100
+ {seq: 'PEPTIDE1{[Ac(1)].L.W.G.[F4COO].L.Y.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2L-P5[F4COO]-[Tic]7Y'},
101
+ {seq: 'PEPTIDE1{[Ac(1)].L.W.G.[F4COO].L.T.[C(1)].G.[NH2]}$$$$V2.0', name: '-F2L-P5[F4COO]-[Tic]7T'},
101
102
  ],
102
103
  }
103
104
  };
@@ -105,7 +106,7 @@ category('PolyTool: Enumerate', () => {
105
106
  for (const [testName, testData] of Object.entries(tests)) {
106
107
  test(`${testName}`, async () => {
107
108
  const res = doPolyToolEnumerateHelm(testData.src, '', testData.params);
108
- expectArray(res, testData.tgt);
109
+ expectArray(res, testData.tgt.map((r) => [r.seq, r.name]));
109
110
  });
110
111
  }
111
112
  });