@datagrok/bio 1.5.7 → 1.5.8
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/css/helm.css +3 -0
- package/detectors.js +9 -10
- package/dist/package-test.js +1095 -416
- package/dist/package.js +898 -250
- package/files/samples/sample_FASTA.csv +66 -66
- package/helm/JSDraw/Pistoia.HELM-uncompressed.js +9694 -0
- package/helm/JSDraw/Pistoia.HELM.js +27 -0
- package/helm/JSDraw/ReadMe.txt +8 -0
- package/helm/JSDraw/Scilligence.JSDraw2.Lite-uncompressed.js +31126 -0
- package/helm/JSDraw/Scilligence.JSDraw2.Lite.js +12 -0
- package/helm/JSDraw/Scilligence.JSDraw2.Resources.js +762 -0
- package/helm/JSDraw/dojo.js +250 -0
- package/helm/JSDraw/test.html +21 -0
- package/package.json +8 -1
- package/src/monomer-library.ts +199 -0
- package/src/package-test.ts +2 -0
- package/src/package.ts +41 -13
- package/src/tests/convert-test.ts +143 -22
- package/src/tests/detectors-test.ts +97 -156
- package/src/tests/renderer-test.ts +36 -0
- package/src/tests/splitter-test.ts +22 -0
- package/src/tests/types.ts +7 -0
- package/src/utils/atomic-works.ts +218 -97
- package/src/utils/cell-renderer.ts +214 -0
- package/src/utils/chem-palette.ts +280 -0
- package/src/utils/convert.ts +25 -16
- package/src/utils/misc.ts +29 -0
- package/src/utils/multiple-sequence-alignment.ts +1 -1
- package/src/utils/notation-converter.ts +120 -84
- package/src/utils/sequence-activity-cliffs.ts +2 -2
- package/src/utils/types.ts +13 -0
- package/src/utils/utils.ts +35 -30
- package/test-Bio-34f75e5127b8-c4c5a3dc.html +259 -0
- package/files/sample_FASTA.csv +0 -66
- package/files/sample_FASTA_with_activities.csv +0 -66
- package/files/sample_MSA.csv +0 -541
|
@@ -33,23 +33,35 @@ C1CCCCC1
|
|
|
33
33
|
CCCCCC
|
|
34
34
|
`;
|
|
35
35
|
|
|
36
|
-
const
|
|
36
|
+
const csvDfDna1: string = `seq
|
|
37
37
|
ACGTC
|
|
38
38
|
CAGTGT
|
|
39
39
|
TTCAAC
|
|
40
|
+
`;
|
|
41
|
+
|
|
42
|
+
const csvDfRna1: string = `seq
|
|
43
|
+
ACGUC
|
|
44
|
+
CAGUGU
|
|
45
|
+
UUCAAC
|
|
40
46
|
`;
|
|
41
47
|
|
|
42
48
|
/** Pure amino acids sequence */
|
|
43
|
-
const
|
|
49
|
+
const csvDfPt1: string = `seq
|
|
44
50
|
FWPHEY
|
|
45
51
|
YNRQWYV
|
|
46
52
|
MKPSEYV
|
|
47
53
|
`;
|
|
48
54
|
|
|
49
|
-
const
|
|
55
|
+
const csvDfSepDna: string = `seq
|
|
50
56
|
A*C*G*T*C
|
|
51
57
|
C*A*G*T*G*T
|
|
52
58
|
T*T*C*A*A*C
|
|
59
|
+
`;
|
|
60
|
+
|
|
61
|
+
const csvDfSepRna: string = `seq
|
|
62
|
+
A*C*G*U*C
|
|
63
|
+
C*A*G*U*G*U
|
|
64
|
+
U*U*C*A*A*C
|
|
53
65
|
`;
|
|
54
66
|
|
|
55
67
|
const csvDfSepPt: string = `seq
|
|
@@ -70,49 +82,51 @@ rut12/her2/rty/wert//abc/abc1/dfgg
|
|
|
70
82
|
rut12/rty/her2/abc/cfr3//wert/rut12
|
|
71
83
|
`;
|
|
72
84
|
|
|
73
|
-
const
|
|
85
|
+
const csvDfSepMsaDna1: string = `seq
|
|
74
86
|
A-C--G-T--C-T
|
|
75
87
|
C-A-C--T--G-T
|
|
76
88
|
A-C-C-G-T-A-C-T
|
|
77
89
|
`;
|
|
78
90
|
|
|
79
|
-
const
|
|
91
|
+
const csvDfMsaDna1: string = `seq
|
|
80
92
|
AC-GT-CT
|
|
81
93
|
CAC-T-GT
|
|
82
94
|
ACCGTACT
|
|
83
95
|
`;
|
|
84
96
|
|
|
85
|
-
const
|
|
97
|
+
const csvDfMsaPt1: string = `seq
|
|
86
98
|
FWR-WYV-KHP
|
|
87
99
|
YNR-WYV-KHP
|
|
88
100
|
MWRSWY-CKHP
|
|
89
101
|
`;
|
|
90
102
|
|
|
91
103
|
const enum Samples {
|
|
92
|
-
peptidesComplex = '
|
|
93
|
-
fastaCsv = '
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
peptidesComplex = 'peptidesComplex',
|
|
105
|
+
fastaCsv = 'fastaCsv',
|
|
106
|
+
fastaFasta = 'fastaFasta',
|
|
107
|
+
msaComplex = 'msaComplex',
|
|
108
|
+
idCsv = 'idCsv',
|
|
109
|
+
sarSmallCsv = 'sarSmallCsv',
|
|
110
|
+
helmCsv = 'helmCsv',
|
|
98
111
|
}
|
|
99
112
|
|
|
100
113
|
const samples: { [key: string]: string } = {
|
|
101
|
-
'
|
|
102
|
-
'
|
|
103
|
-
'
|
|
104
|
-
'
|
|
105
|
-
'
|
|
106
|
-
'
|
|
114
|
+
'peptidesComplex': 'System:AppData/Bio/samples/peptides_complex_msa.csv',
|
|
115
|
+
'fastaCsv': 'System:AppData/Bio/samples/sample_FASTA.csv',
|
|
116
|
+
'fastaFasta': 'System:AppData/Bio/samples/sample_FASTA.fasta',
|
|
117
|
+
'msaComplex': 'System:AppData/Bio/samples/sample_MSA.csv',
|
|
118
|
+
'idCsv': 'System:AppData/Bio/samples/id.csv',
|
|
119
|
+
'sarSmallCsv': 'System:AppData/Bio/samples/sar-small.csv',
|
|
120
|
+
'helmCsv': 'System:AppData/Bio/samples/sample_HELM.csv',
|
|
107
121
|
};
|
|
108
122
|
|
|
109
123
|
const _samplesDfs: { [key: string]: Promise<DG.DataFrame> } = {};
|
|
110
|
-
|
|
124
|
+
|
|
125
|
+
function readSamples(key: string, readFile: (file: string) => Promise<DG.DataFrame> = readFileCsv): DfReaderFunc {
|
|
111
126
|
return async () => {
|
|
112
127
|
if (!(key in _samplesDfs)) {
|
|
113
128
|
_samplesDfs[key] = (async (): Promise<DG.DataFrame> => {
|
|
114
|
-
const
|
|
115
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
129
|
+
const df: DG.DataFrame = await readFile(samples[key]);
|
|
116
130
|
await grok.data.detectSemanticTypes(df);
|
|
117
131
|
return df;
|
|
118
132
|
})();
|
|
@@ -121,6 +135,18 @@ MWRSWY-CKHP
|
|
|
121
135
|
};
|
|
122
136
|
};
|
|
123
137
|
|
|
138
|
+
async function readFileCsv(file: string): Promise<DG.DataFrame> {
|
|
139
|
+
const csv: string = await grok.dapi.files.readAsText(file);
|
|
140
|
+
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
141
|
+
return df;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
async function readFileFasta(file: string): Promise<DG.DataFrame> {
|
|
145
|
+
const txt: string = await grok.dapi.files.readAsText(file);
|
|
146
|
+
const df: DG.DataFrame = importFasta(txt)[0];
|
|
147
|
+
return df;
|
|
148
|
+
}
|
|
149
|
+
|
|
124
150
|
const _csvDfs: { [key: string]: Promise<DG.DataFrame> } = {};
|
|
125
151
|
const readCsv: (key: string, csv: string) => DfReaderFunc = (key: string, csv: string) => {
|
|
126
152
|
return async () => {
|
|
@@ -140,69 +166,91 @@ MWRSWY-CKHP
|
|
|
140
166
|
test('Negative3', async () => { await _testNeg(readCsv('csvDf3', csvDf3), 'col1'); });
|
|
141
167
|
test('NegativeSmiles', async () => { await _testNeg(readCsv('csvDfSmiles', csvDfSmiles), 'col1'); });
|
|
142
168
|
|
|
143
|
-
test('
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
test('
|
|
169
|
+
test('Dna1', async () => {
|
|
170
|
+
await _testPos(readCsv('csvDfDna1', csvDfDna1), 'seq', 'fasta:SEQ:DNA');
|
|
171
|
+
});
|
|
172
|
+
test('Rna1', async () => {
|
|
173
|
+
await _testPos(readCsv('csvDfRna1', csvDfRna1), 'seq', 'fasta:SEQ:RNA');
|
|
174
|
+
});
|
|
175
|
+
test('AA1', async () => {
|
|
176
|
+
await _testPos(readCsv('csvDfPt1', csvDfPt1), 'seq', 'fasta:SEQ:PT');
|
|
177
|
+
});
|
|
178
|
+
test('MsaDna1', async () => {
|
|
179
|
+
await _testPos(readCsv('csvDfMsaDna1', csvDfMsaDna1), 'seq', 'fasta:SEQ.MSA:DNA');
|
|
180
|
+
});
|
|
147
181
|
|
|
148
|
-
test('
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
test('SepUn2', async () => { await _testSepUn(csvDfSepUn2, '/'); });
|
|
182
|
+
test('MsaAA1', async () => {
|
|
183
|
+
await _testPos(readCsv('csvDfMsaPt1', csvDfMsaPt1), 'seq', 'fasta:SEQ.MSA:PT');
|
|
184
|
+
});
|
|
152
185
|
|
|
153
|
-
test('
|
|
186
|
+
test('SepDna', async () => {
|
|
187
|
+
await _testPos(readCsv('csvDfSepDna', csvDfSepDna), 'seq', 'separator:SEQ:DNA', '*');
|
|
188
|
+
});
|
|
189
|
+
test('SepRna', async () => {
|
|
190
|
+
await _testPos(readCsv('csvDfSepRna', csvDfSepRna), 'seq', 'separator:SEQ:RNA', '*');
|
|
191
|
+
});
|
|
192
|
+
test('SepPt', async () => {
|
|
193
|
+
await _testPos(readCsv('csvDfSepPt', csvDfSepPt), 'seq', 'separator:SEQ:PT', '-');
|
|
194
|
+
});
|
|
195
|
+
test('SepUn1', async () => {
|
|
196
|
+
await _testPos(readCsv('csvDfSepUn1', csvDfSepUn1), 'seq', 'separator:SEQ:UN', '-');
|
|
197
|
+
});
|
|
198
|
+
test('SepUn2', async () => {
|
|
199
|
+
await _testPos(readCsv('csvDfSepUn2', csvDfSepUn2), 'seq', 'separator:SEQ:UN', '/');
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
test('SepMsaN1', async () => {
|
|
203
|
+
await _testPos(readCsv('csvDfSepMsaDna1', csvDfSepMsaDna1), 'seq', 'separator:SEQ.MSA:DNA', '-');
|
|
204
|
+
});
|
|
154
205
|
|
|
155
206
|
test('SamplesFastaCsvPt', async () => {
|
|
156
|
-
await
|
|
207
|
+
await _testPos(readSamples(Samples.fastaCsv), 'sequence', 'fasta:SEQ:PT');
|
|
157
208
|
});
|
|
158
209
|
test('SamplesFastaCsvNegativeEntry', async () => {
|
|
159
|
-
await _testNeg(
|
|
210
|
+
await _testNeg(readSamples(Samples.fastaCsv), 'Entry');
|
|
160
211
|
});
|
|
161
212
|
test('SamplesFastaCsvNegativeLength', async () => {
|
|
162
|
-
await _testNeg(
|
|
213
|
+
await _testNeg(readSamples(Samples.fastaCsv), 'Length');
|
|
163
214
|
});
|
|
164
215
|
test('SamplesFastaCsvNegativeUniProtKB', async () => {
|
|
165
|
-
await _testNeg(
|
|
216
|
+
await _testNeg(readSamples(Samples.fastaCsv), 'UniProtKB');
|
|
166
217
|
});
|
|
167
218
|
|
|
168
|
-
test('SamplesFastaFastaPt', async () => {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
// test('SamplesPeptidesComplexUn', async () => {
|
|
172
|
-
// await _testSamplesPeptidesComplexUn();
|
|
173
|
-
// });
|
|
219
|
+
test('SamplesFastaFastaPt', async () => {
|
|
220
|
+
await _testPos(readSamples(Samples.fastaFasta, readFileFasta), 'sequence', 'fasta:SEQ:PT');
|
|
221
|
+
});
|
|
174
222
|
|
|
175
223
|
test('samplesPeptidesComplexNegativeID', async () => {
|
|
176
|
-
await _testNeg(
|
|
224
|
+
await _testNeg(readSamples(Samples.peptidesComplex), 'ID');
|
|
177
225
|
});
|
|
178
226
|
test('SamplesPeptidesComplexNegativeMeasured', async () => {
|
|
179
|
-
await _testNeg(
|
|
227
|
+
await _testNeg(readSamples(Samples.peptidesComplex), 'Measured');
|
|
180
228
|
});
|
|
181
229
|
test('SamplesPeptidesComplexNegativeValue', async () => {
|
|
182
|
-
await _testNeg(
|
|
230
|
+
await _testNeg(readSamples(Samples.peptidesComplex), 'Value');
|
|
183
231
|
});
|
|
184
232
|
|
|
185
233
|
test('samplesMsaComplexUn', async () => {
|
|
186
|
-
await _testPos(
|
|
234
|
+
await _testPos(readSamples(Samples.msaComplex), 'MSA', 'separator:SEQ.MSA:UN', '/');
|
|
187
235
|
});
|
|
188
236
|
test('samplesMsaComplexNegativeActivity', async () => {
|
|
189
|
-
await _testNeg(
|
|
237
|
+
await _testNeg(readSamples(Samples.msaComplex), 'Activity');
|
|
190
238
|
});
|
|
191
239
|
|
|
192
240
|
test('samplesIdCsvNegativeID', async () => {
|
|
193
|
-
await _testNeg(
|
|
241
|
+
await _testNeg(readSamples(Samples.idCsv), 'ID');
|
|
194
242
|
});
|
|
195
243
|
|
|
196
244
|
test('samplesSarSmallCsvNegativeSmiles', async () => {
|
|
197
|
-
await _testNeg(
|
|
245
|
+
await _testNeg(readSamples(Samples.sarSmallCsv), 'smiles');
|
|
198
246
|
});
|
|
199
247
|
|
|
200
248
|
test('samplesHelmCsvHELM', async () => {
|
|
201
|
-
await _testPos(
|
|
249
|
+
await _testPos(readSamples(Samples.helmCsv), 'HELM', 'HELM', null);
|
|
202
250
|
});
|
|
203
251
|
|
|
204
252
|
test('samplesHelmCsvNegativeActivity', async () => {
|
|
205
|
-
await _testNeg(
|
|
253
|
+
await _testNeg(readSamples(Samples.helmCsv), 'Activity');
|
|
206
254
|
});
|
|
207
255
|
});
|
|
208
256
|
|
|
@@ -223,110 +271,3 @@ export async function _testPos(readDf: DfReaderFunc, colName: string, units: str
|
|
|
223
271
|
expect(col.getTag('separator'), separator);
|
|
224
272
|
}
|
|
225
273
|
|
|
226
|
-
export async function _testN1(csvDfN1: string) {
|
|
227
|
-
const dfN1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfN1);
|
|
228
|
-
await grok.data.detectSemanticTypes(dfN1);
|
|
229
|
-
|
|
230
|
-
const col: DG.Column = dfN1.col('seq')!;
|
|
231
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
232
|
-
expect(col.getTag(DG.TAGS.UNITS), 'fasta:SEQ:NT');
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
export async function _testAA1(csvDfAA1: string) {
|
|
236
|
-
const dfAA1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfAA1);
|
|
237
|
-
await grok.data.detectSemanticTypes(dfAA1);
|
|
238
|
-
|
|
239
|
-
const col: DG.Column = dfAA1.col('seq')!;
|
|
240
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
241
|
-
expect(col.getTag(DG.TAGS.UNITS), 'fasta:SEQ:PT');
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
export async function _testMsaN1(csvDfMsaN1: string) {
|
|
245
|
-
const dfMsaN1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfMsaN1);
|
|
246
|
-
await grok.data.detectSemanticTypes(dfMsaN1);
|
|
247
|
-
|
|
248
|
-
const col: DG.Column = dfMsaN1.col('seq')!;
|
|
249
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
250
|
-
expect(col.getTag(DG.TAGS.UNITS), 'fasta:SEQ.MSA:NT');
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
export async function _testMsaAA1(csvDfMsaAA1: string) {
|
|
254
|
-
const dfMsaAA1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfMsaAA1);
|
|
255
|
-
await grok.data.detectSemanticTypes(dfMsaAA1);
|
|
256
|
-
|
|
257
|
-
const col: DG.Column = dfMsaAA1.col('seq')!;
|
|
258
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
259
|
-
expect(col.getTag(DG.TAGS.UNITS), 'fasta:SEQ.MSA:PT');
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
export async function _testSepNt(csv: string, separator: string) {
|
|
263
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
264
|
-
await grok.data.detectSemanticTypes(df);
|
|
265
|
-
|
|
266
|
-
const col: DG.Column = df.col('seq')!;
|
|
267
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
268
|
-
expect(col.getTag(DG.TAGS.UNITS), 'separator:SEQ:NT');
|
|
269
|
-
expect(col.getTag('separator'), separator);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
export async function _testSepPt(csv: string, separator: string) {
|
|
273
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
274
|
-
await grok.data.detectSemanticTypes(df);
|
|
275
|
-
|
|
276
|
-
const col: DG.Column = df.col('seq')!;
|
|
277
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
278
|
-
expect(col.getTag(DG.TAGS.UNITS), 'separator:SEQ:PT');
|
|
279
|
-
expect(col.getTag('separator'), separator);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
export async function _testSepUn(csv: string, separator: string) {
|
|
283
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
284
|
-
await grok.data.detectSemanticTypes(df);
|
|
285
|
-
|
|
286
|
-
const col: DG.Column = df.col('seq')!;
|
|
287
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
288
|
-
expect(col.getTag(DG.TAGS.UNITS), 'separator:SEQ:UN');
|
|
289
|
-
expect(col.getTag('separator'), separator);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
export async function _testSepMsaN1(csvDfSepMsaN1: string) {
|
|
293
|
-
const dfSepMsaN1: DG.DataFrame = DG.DataFrame.fromCsv(csvDfSepMsaN1);
|
|
294
|
-
await grok.data.detectSemanticTypes(dfSepMsaN1);
|
|
295
|
-
|
|
296
|
-
const col: DG.Column = dfSepMsaN1.col('seq')!;
|
|
297
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
298
|
-
expect(col.getTag(DG.TAGS.UNITS), 'separator:SEQ.MSA:NT');
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
export async function _testSamplesFastaCsvPt() {
|
|
302
|
-
const csv: string = await grok.dapi.files.readAsText('System:AppData/Bio/samples/sample_FASTA.csv');
|
|
303
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
304
|
-
await grok.data.detectSemanticTypes(df);
|
|
305
|
-
|
|
306
|
-
const col: DG.Column = df.col('sequence')!;
|
|
307
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
308
|
-
expect(col.getTag(DG.TAGS.UNITS), 'fasta:SEQ:PT');
|
|
309
|
-
expect(col.getTag('separator'), null);
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
export async function _testSamplesFastaFastaPt() {
|
|
313
|
-
const fasta: string = await grok.dapi.files.readAsText('System:AppData/Bio/samples/sample_FASTA.fasta');
|
|
314
|
-
const df: DG.DataFrame = importFasta(fasta)[0];
|
|
315
|
-
|
|
316
|
-
const col: DG.Column = df.col('sequence')!;
|
|
317
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
318
|
-
expect(col.getTag(DG.TAGS.UNITS), 'fasta:SEQ:PT');
|
|
319
|
-
expect(col.getTag('separator'), null);
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
export async function _testSamplesPeptidesComplexUn() {
|
|
323
|
-
const csv: string = await grok.dapi.files.readAsText('System:AppData/Bio/samples/peptides_complex_aligned.csv');
|
|
324
|
-
const df: DG.DataFrame = DG.DataFrame.fromCsv(csv);
|
|
325
|
-
await grok.data.detectSemanticTypes(df);
|
|
326
|
-
|
|
327
|
-
const col: DG.Column = df.col('AlignedSequence')!;
|
|
328
|
-
expect(col.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
329
|
-
expect(col.getTag(DG.TAGS.UNITS), 'separator:SEQ.MSA:UN');
|
|
330
|
-
expect(col.getTag('separator'), '-');
|
|
331
|
-
}
|
|
332
|
-
|
|
@@ -0,0 +1,36 @@
|
|
|
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 {importFasta, multipleSequenceAlignmentAny} from '../package';
|
|
7
|
+
|
|
8
|
+
category('renderers', () => {
|
|
9
|
+
test('afterMsa', async () => {
|
|
10
|
+
await _testAfterMsa();
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
export async function _testAfterMsa() {
|
|
15
|
+
const fastaTxt: string = await grok.dapi.files.readAsText('System:AppData/Bio/samples/sample_FASTA.fasta');
|
|
16
|
+
const df: DG.DataFrame = importFasta(fastaTxt)[0];
|
|
17
|
+
|
|
18
|
+
const seqCol: DG.Column | null = df.col('sequence');
|
|
19
|
+
expect(seqCol !== null, true);
|
|
20
|
+
|
|
21
|
+
const tv: DG.TableView = grok.shell.addTableView(df);
|
|
22
|
+
await grok.data.detectSemanticTypes(df);
|
|
23
|
+
|
|
24
|
+
expect(seqCol!.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
25
|
+
expect(seqCol!.getTag(DG.TAGS.UNITS), 'fasta:SEQ:PT');
|
|
26
|
+
expect(seqCol!.getTag('cell.renderer'), 'Macromolecule');
|
|
27
|
+
|
|
28
|
+
const seqMsaCol: DG.Column = await multipleSequenceAlignmentAny(df, seqCol!);
|
|
29
|
+
tv.grid.invalidate();
|
|
30
|
+
|
|
31
|
+
expect(seqMsaCol!.semType, DG.SEMTYPE.MACROMOLECULE);
|
|
32
|
+
expect(seqMsaCol!.getTag(DG.TAGS.UNITS), 'fasta:SEQ.MSA:PT');
|
|
33
|
+
expect(seqMsaCol!.getTag('cell.renderer'), 'Macromolecule');
|
|
34
|
+
|
|
35
|
+
// tv.close();
|
|
36
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
|