@datagrok/bio 1.7.4 → 1.7.7
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/detectors.js +1 -1
- package/dist/package-test.js +406 -123
- package/dist/package.js +335 -98
- package/files/samples/sample_SEPARATOR_PT.csv +101 -0
- package/files/tests/testCereal.csv +78 -0
- package/package.json +3 -2
- package/src/__jest__/remote.test.ts +30 -16
- package/src/__jest__/test-node.ts +1 -1
- package/src/const.ts +21 -0
- package/src/package-test.ts +1 -1
- package/src/package.ts +13 -5
- package/src/tests/convert-test.ts +34 -10
- package/src/tests/detectors-test.ts +6 -0
- package/src/tests/{renderer-test.ts → renderers-test.ts} +25 -16
- package/src/tests/splitters-test.ts +7 -0
- package/src/utils/cell-renderer.ts +59 -16
- package/src/utils/convert.ts +40 -15
- package/src/utils/multiple-sequence-alignment.ts +2 -2
- package/src/utils/utils.ts +35 -0
- package/test-Bio-34f75e5127b8-7c42ea4b.html +335 -0
- package/test-Bio-34f75e5127b8-1314754e.html +0 -256
|
@@ -9,6 +9,7 @@ import * as ui from 'datagrok-api/ui';
|
|
|
9
9
|
|
|
10
10
|
const lru = new DG.LruCache<any, any>();
|
|
11
11
|
const undefinedColor = 'rgb(100,100,100)';
|
|
12
|
+
const grayColor = '#808080'
|
|
12
13
|
|
|
13
14
|
function getPalleteByType(paletteType: string): SeqPalette {
|
|
14
15
|
switch (paletteType) {
|
|
@@ -81,7 +82,7 @@ function printLeftOrCentered(
|
|
|
81
82
|
g.fillStyle = color;
|
|
82
83
|
g.globalAlpha = transparencyRate;
|
|
83
84
|
g.fillText(colorPart, x + dx1, y + dy);
|
|
84
|
-
g.fillStyle =
|
|
85
|
+
g.fillStyle = grayColor;
|
|
85
86
|
g.fillText(grayPart, x + dx2, y + dy);
|
|
86
87
|
}
|
|
87
88
|
|
|
@@ -96,6 +97,22 @@ function printLeftOrCentered(
|
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
99
|
|
|
100
|
+
function findMonomers(helmString: string) {
|
|
101
|
+
//@ts-ignore
|
|
102
|
+
const types = Object.keys(org.helm.webeditor.monomerTypeList());
|
|
103
|
+
const monomers: any = [];
|
|
104
|
+
const monomer_names: any = [];
|
|
105
|
+
for (var i = 0; i < types.length; i++) {
|
|
106
|
+
//@ts-ignore
|
|
107
|
+
monomers.push(new scil.helm.Monomers.getMonomerSet(types[i]));
|
|
108
|
+
Object.keys(monomers[i]).forEach(k => {
|
|
109
|
+
monomer_names.push(monomers[i][k].id);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
const split_string = WebLogo.splitterAsHelm(helmString);
|
|
113
|
+
return new Set(split_string.filter(val => !monomer_names.includes(val)));
|
|
114
|
+
}
|
|
115
|
+
|
|
99
116
|
export class MacromoleculeSequenceCellRenderer extends DG.GridCellRenderer {
|
|
100
117
|
get name(): string { return 'macromoleculeSequence'; }
|
|
101
118
|
|
|
@@ -125,22 +142,47 @@ export class MacromoleculeSequenceCellRenderer extends DG.GridCellRenderer {
|
|
|
125
142
|
const cell = gridCell.cell;
|
|
126
143
|
const tag = gridCell.cell.column.getTag(DG.TAGS.UNITS);
|
|
127
144
|
if (tag === 'HELM') {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
const formula = canvas.getFormula(true);
|
|
135
|
-
if (!formula) {
|
|
136
|
-
gridCell.element = ui.divText(gridCell.cell.value, {style: {color: 'red'}});
|
|
137
|
-
} else {
|
|
145
|
+
console.log(findMonomers(cell.value));
|
|
146
|
+
const monomers = findMonomers(cell.value);
|
|
147
|
+
if (monomers.size == 0) {
|
|
148
|
+
const host = ui.div([], {style: {width: `${w}px`, height: `${h}px`}});
|
|
149
|
+
host.setAttribute('dataformat', 'helm');
|
|
150
|
+
host.setAttribute('data', gridCell.cell.value);
|
|
138
151
|
gridCell.element = host;
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
//@ts-ignore
|
|
153
|
+
const canvas = new JSDraw2.Editor(host, {width: w, height: h, skin: 'w8', viewonly: true});
|
|
154
|
+
const formula = canvas.getFormula(true);
|
|
155
|
+
if (!formula) {
|
|
156
|
+
gridCell.element = ui.divText(gridCell.cell.value, {style: {color: 'red'}});
|
|
157
|
+
}
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (monomers.size > 0) {
|
|
161
|
+
w = grid ? Math.min(grid.canvas.width - x, w) : g.canvas.width - x;
|
|
162
|
+
g.save();
|
|
163
|
+
g.beginPath();
|
|
164
|
+
g.rect(x, y, w, h);
|
|
165
|
+
g.clip();
|
|
166
|
+
g.font = '12px monospace';
|
|
167
|
+
g.textBaseline = 'top';
|
|
168
|
+
let x1 = x;
|
|
169
|
+
const s: string = cell.value ?? '';
|
|
170
|
+
let subParts: string[] = WebLogo.splitterAsHelm(s);
|
|
171
|
+
let color = undefinedColor;
|
|
172
|
+
subParts.forEach((amino, index) => {
|
|
173
|
+
if (monomers.has(amino)) {
|
|
174
|
+
color = 'red';
|
|
175
|
+
} else {
|
|
176
|
+
color = grayColor;
|
|
177
|
+
}
|
|
178
|
+
g.fillStyle = undefinedColor;
|
|
179
|
+
let last = false;
|
|
180
|
+
if (index === subParts.length - 1)
|
|
181
|
+
last = true;
|
|
182
|
+
x1 = printLeftOrCentered(x1, y, w, h, g, amino, color, 0, true, 1.0, '/', last);
|
|
183
|
+
});
|
|
184
|
+
g.restore();
|
|
185
|
+
return;
|
|
144
186
|
}
|
|
145
187
|
} else {
|
|
146
188
|
const [type, subtype, paletteType] = gridCell.cell.column.getTag(DG.TAGS.UNITS).split(':');
|
|
@@ -176,6 +218,7 @@ export class MacromoleculeSequenceCellRenderer extends DG.GridCellRenderer {
|
|
|
176
218
|
});
|
|
177
219
|
|
|
178
220
|
g.restore();
|
|
221
|
+
return;
|
|
179
222
|
}
|
|
180
223
|
}
|
|
181
224
|
}
|
package/src/utils/convert.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import * as ui from 'datagrok-api/ui';
|
|
3
|
+
import * as grok from 'datagrok-api/grok';
|
|
4
|
+
|
|
5
|
+
import {Subscription} from 'rxjs';
|
|
3
6
|
import {NotationConverter, NOTATION} from '@datagrok-libraries/bio/src/utils/notation-converter';
|
|
4
7
|
|
|
8
|
+
|
|
9
|
+
let convertDialog: DG.Dialog | null = null;
|
|
10
|
+
let convertDialogSubs: Subscription[] = [];
|
|
11
|
+
|
|
5
12
|
/**
|
|
6
13
|
* Converts notations of a Macromolecule column
|
|
7
14
|
*
|
|
@@ -22,19 +29,37 @@ export function convert(col: DG.Column): void {
|
|
|
22
29
|
|
|
23
30
|
const separatorInput = ui.choiceInput('Choose separator', separatorArray[0], separatorArray);
|
|
24
31
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
ui.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
if (convertDialog == null) {
|
|
33
|
+
convertDialog = ui.dialog('Convert sequence notation')
|
|
34
|
+
.add(ui.div([
|
|
35
|
+
ui.h1('Current notation: ' + current),
|
|
36
|
+
targetNotationInput.root,
|
|
37
|
+
// TODO: conditional separator input
|
|
38
|
+
separatorInput.root
|
|
39
|
+
]))
|
|
40
|
+
.onOK(async () => {
|
|
41
|
+
const targetNotation = targetNotationInput.value as NOTATION;
|
|
42
|
+
const separator: string | null = separatorInput.value;
|
|
43
|
+
|
|
44
|
+
await convertDo(col, targetNotation, separator);
|
|
45
|
+
})
|
|
46
|
+
.show();
|
|
47
|
+
|
|
48
|
+
convertDialogSubs.push(convertDialog.onClose.subscribe((value) => {
|
|
49
|
+
convertDialogSubs.forEach((s) => { s.unsubscribe(); });
|
|
50
|
+
convertDialogSubs = [];
|
|
51
|
+
convertDialog = null;
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export async function convertDo(
|
|
57
|
+
srcCol: DG.Column, targetNotation: NOTATION, separator: string | null
|
|
58
|
+
): Promise<DG.Column> {
|
|
59
|
+
const converter = new NotationConverter(srcCol);
|
|
60
|
+
const newColumn = converter.convert(targetNotation, separator);
|
|
61
|
+
srcCol.dataFrame.columns.add(newColumn);
|
|
62
|
+
await grok.data.detectSemanticTypes(srcCol.dataFrame);
|
|
63
|
+
return newColumn;
|
|
40
64
|
}
|
|
65
|
+
|
|
@@ -32,7 +32,7 @@ function _fastaToStrings(fasta: string): string[] {
|
|
|
32
32
|
* @param {boolean} isAligned Whether the column is aligned.
|
|
33
33
|
* @return {Promise<DG.Column>} Aligned sequences.
|
|
34
34
|
*/
|
|
35
|
-
export async function runKalign(srcCol: DG.Column, isAligned = false): Promise<DG.Column> {
|
|
35
|
+
export async function runKalign(srcCol: DG.Column, isAligned = false, unUsedName:string = ''): Promise<DG.Column> {
|
|
36
36
|
let sequences = srcCol.toList();
|
|
37
37
|
|
|
38
38
|
if (isAligned)
|
|
@@ -56,7 +56,7 @@ export async function runKalign(srcCol: DG.Column, isAligned = false): Promise<D
|
|
|
56
56
|
throw new Error(`kalign output no result`);
|
|
57
57
|
|
|
58
58
|
const aligned = _fastaToStrings(buf).slice(0, sequences.length);
|
|
59
|
-
const tgtCol = DG.Column.fromStrings(
|
|
59
|
+
const tgtCol = DG.Column.fromStrings(unUsedName, aligned);
|
|
60
60
|
|
|
61
61
|
// units
|
|
62
62
|
const srcUnits = srcCol.getTag(DG.TAGS.UNITS);
|
package/src/utils/utils.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import {WebLogo, SplitterFunc} from '@datagrok-libraries/bio/src/viewers/web-logo';
|
|
3
3
|
import * as grok from 'datagrok-api/grok';
|
|
4
|
+
import { CAP_GROUP_NAME, CAP_GROUP_SMILES, jsonSdfMonomerLibDict, MONOMER_SYMBOL, RGROUP_ALTER_ID, RGROUP_FIELD, RGROUP_LABEL, SDF_MONOMER_NAME } from '../const';
|
|
4
5
|
|
|
5
6
|
export const HELM_CORE_LIB_FILENAME = '/samples/HELMCoreLibrary.json';
|
|
6
7
|
export const HELM_CORE_LIB_MONOMER_SYMBOL = 'symbol';
|
|
@@ -43,3 +44,37 @@ export function createMomomersMolDict(lib: any[]): { [key: string]: string | any
|
|
|
43
44
|
});
|
|
44
45
|
return dict;
|
|
45
46
|
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
export function createJsonMonomerLibFromSdf(table: DG.DataFrame): any {
|
|
50
|
+
const resultLib = [];
|
|
51
|
+
for (let i = 0; i < table.rowCount; i++) {
|
|
52
|
+
const monomer: { [key: string]: string | any } = {};
|
|
53
|
+
Object.keys(jsonSdfMonomerLibDict).forEach(key => {
|
|
54
|
+
if (key === MONOMER_SYMBOL) {
|
|
55
|
+
const monomerSymbol = table.get(jsonSdfMonomerLibDict[key], i);
|
|
56
|
+
monomer[key] = monomerSymbol === '.' ? table.get(SDF_MONOMER_NAME, i) : monomerSymbol;
|
|
57
|
+
} else if (key === RGROUP_FIELD) {
|
|
58
|
+
const rgroups = table.get(jsonSdfMonomerLibDict[key], i).split('\n');
|
|
59
|
+
const jsonRgroups: any[] = [];
|
|
60
|
+
rgroups.forEach((g: string) => {
|
|
61
|
+
const rgroup: { [key: string]: string | any } = {};
|
|
62
|
+
const altAtom = g.substring(g.lastIndexOf("]") + 1);
|
|
63
|
+
let radicalNum = g.match(/\[R(\d+)\]/)![1];
|
|
64
|
+
rgroup[CAP_GROUP_SMILES] = altAtom === 'H' ? `[*:${radicalNum}][H]` : `O[*:${radicalNum}]`;
|
|
65
|
+
rgroup[RGROUP_ALTER_ID] = altAtom === 'H' ? `R${radicalNum}-H` : `R${radicalNum}-OH`;
|
|
66
|
+
rgroup[CAP_GROUP_NAME] = altAtom === 'H' ? `H` : `OH`;
|
|
67
|
+
rgroup[RGROUP_LABEL] = `R${radicalNum}`;
|
|
68
|
+
jsonRgroups.push(rgroup);
|
|
69
|
+
})
|
|
70
|
+
monomer[key] = jsonRgroups;
|
|
71
|
+
} else {
|
|
72
|
+
if((jsonSdfMonomerLibDict as { [key: string]: string | any })[key]) {
|
|
73
|
+
monomer[key] = table.get((jsonSdfMonomerLibDict as { [key: string]: string | any })[key], i);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
resultLib.push(monomer);
|
|
78
|
+
}
|
|
79
|
+
return resultLib;
|
|
80
|
+
}
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
<html><head><meta charset="utf-8"/><title>Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit 7c42ea4b.</title><style type="text/css">html,
|
|
2
|
+
body {
|
|
3
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4
|
+
font-size: 1rem;
|
|
5
|
+
margin: 0;
|
|
6
|
+
padding: 0;
|
|
7
|
+
color: #333;
|
|
8
|
+
}
|
|
9
|
+
body {
|
|
10
|
+
padding: 2rem 1rem;
|
|
11
|
+
font-size: 0.85rem;
|
|
12
|
+
}
|
|
13
|
+
#jesthtml-content {
|
|
14
|
+
margin: 0 auto;
|
|
15
|
+
max-width: 70rem;
|
|
16
|
+
}
|
|
17
|
+
header {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
#title {
|
|
22
|
+
margin: 0;
|
|
23
|
+
flex-grow: 1;
|
|
24
|
+
}
|
|
25
|
+
#logo {
|
|
26
|
+
height: 4rem;
|
|
27
|
+
}
|
|
28
|
+
#timestamp {
|
|
29
|
+
color: #777;
|
|
30
|
+
margin-top: 0.5rem;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** SUMMARY */
|
|
34
|
+
#summary {
|
|
35
|
+
color: #333;
|
|
36
|
+
margin: 2rem 0;
|
|
37
|
+
display: flex;
|
|
38
|
+
font-family: monospace;
|
|
39
|
+
font-size: 1rem;
|
|
40
|
+
}
|
|
41
|
+
#summary > div {
|
|
42
|
+
margin-right: 2rem;
|
|
43
|
+
background: #eee;
|
|
44
|
+
padding: 1rem;
|
|
45
|
+
min-width: 15rem;
|
|
46
|
+
}
|
|
47
|
+
#summary > div:last-child {
|
|
48
|
+
margin-right: 0;
|
|
49
|
+
}
|
|
50
|
+
@media only screen and (max-width: 720px) {
|
|
51
|
+
#summary {
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
}
|
|
54
|
+
#summary > div {
|
|
55
|
+
margin-right: 0;
|
|
56
|
+
margin-top: 2rem;
|
|
57
|
+
}
|
|
58
|
+
#summary > div:first-child {
|
|
59
|
+
margin-top: 0;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.summary-total {
|
|
64
|
+
font-weight: bold;
|
|
65
|
+
margin-bottom: 0.5rem;
|
|
66
|
+
}
|
|
67
|
+
.summary-passed {
|
|
68
|
+
color: #4f8a10;
|
|
69
|
+
border-left: 0.4rem solid #4f8a10;
|
|
70
|
+
padding-left: 0.5rem;
|
|
71
|
+
}
|
|
72
|
+
.summary-failed,
|
|
73
|
+
.summary-obsolete-snapshots {
|
|
74
|
+
color: #d8000c;
|
|
75
|
+
border-left: 0.4rem solid #d8000c;
|
|
76
|
+
padding-left: 0.5rem;
|
|
77
|
+
}
|
|
78
|
+
.summary-pending {
|
|
79
|
+
color: #9f6000;
|
|
80
|
+
border-left: 0.4rem solid #9f6000;
|
|
81
|
+
padding-left: 0.5rem;
|
|
82
|
+
}
|
|
83
|
+
.summary-empty {
|
|
84
|
+
color: #999;
|
|
85
|
+
border-left: 0.4rem solid #999;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.test-result {
|
|
89
|
+
padding: 1rem;
|
|
90
|
+
margin-bottom: 0.25rem;
|
|
91
|
+
}
|
|
92
|
+
.test-result:last-child {
|
|
93
|
+
border: 0;
|
|
94
|
+
}
|
|
95
|
+
.test-result.passed {
|
|
96
|
+
background-color: #dff2bf;
|
|
97
|
+
color: #4f8a10;
|
|
98
|
+
}
|
|
99
|
+
.test-result.failed {
|
|
100
|
+
background-color: #ffbaba;
|
|
101
|
+
color: #d8000c;
|
|
102
|
+
}
|
|
103
|
+
.test-result.pending {
|
|
104
|
+
background-color: #ffdf61;
|
|
105
|
+
color: #9f6000;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.test-info {
|
|
109
|
+
display: flex;
|
|
110
|
+
justify-content: space-between;
|
|
111
|
+
}
|
|
112
|
+
.test-suitename {
|
|
113
|
+
width: 20%;
|
|
114
|
+
text-align: left;
|
|
115
|
+
font-weight: bold;
|
|
116
|
+
word-break: break-word;
|
|
117
|
+
}
|
|
118
|
+
.test-title {
|
|
119
|
+
width: 40%;
|
|
120
|
+
text-align: left;
|
|
121
|
+
font-style: italic;
|
|
122
|
+
}
|
|
123
|
+
.test-status {
|
|
124
|
+
width: 20%;
|
|
125
|
+
text-align: right;
|
|
126
|
+
}
|
|
127
|
+
.test-duration {
|
|
128
|
+
width: 10%;
|
|
129
|
+
text-align: right;
|
|
130
|
+
font-size: 0.75rem;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.failureMessages {
|
|
134
|
+
padding: 0 1rem;
|
|
135
|
+
margin-top: 1rem;
|
|
136
|
+
border-top: 1px dashed #d8000c;
|
|
137
|
+
}
|
|
138
|
+
.failureMessages.suiteFailure {
|
|
139
|
+
border-top: none;
|
|
140
|
+
}
|
|
141
|
+
.failureMsg {
|
|
142
|
+
white-space: pre-wrap;
|
|
143
|
+
white-space: -moz-pre-wrap;
|
|
144
|
+
white-space: -pre-wrap;
|
|
145
|
+
white-space: -o-pre-wrap;
|
|
146
|
+
word-wrap: break-word;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.suite-container {
|
|
150
|
+
margin-bottom: 2rem;
|
|
151
|
+
}
|
|
152
|
+
.suite-info {
|
|
153
|
+
padding: 1rem;
|
|
154
|
+
background-color: #eee;
|
|
155
|
+
color: #777;
|
|
156
|
+
display: flex;
|
|
157
|
+
align-items: center;
|
|
158
|
+
margin-bottom: 0.25rem;
|
|
159
|
+
}
|
|
160
|
+
.suite-info .suite-path {
|
|
161
|
+
word-break: break-all;
|
|
162
|
+
flex-grow: 1;
|
|
163
|
+
font-family: monospace;
|
|
164
|
+
font-size: 1rem;
|
|
165
|
+
}
|
|
166
|
+
.suite-info .suite-time {
|
|
167
|
+
margin-left: 0.5rem;
|
|
168
|
+
padding: 0.2rem 0.3rem;
|
|
169
|
+
font-size: 0.75rem;
|
|
170
|
+
}
|
|
171
|
+
.suite-info .suite-time.warn {
|
|
172
|
+
background-color: #d8000c;
|
|
173
|
+
color: #fff;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/* CONSOLE LOGS */
|
|
177
|
+
.suite-consolelog {
|
|
178
|
+
margin-bottom: 0.25rem;
|
|
179
|
+
padding: 1rem;
|
|
180
|
+
background-color: #efefef;
|
|
181
|
+
}
|
|
182
|
+
.suite-consolelog-header {
|
|
183
|
+
font-weight: bold;
|
|
184
|
+
}
|
|
185
|
+
.suite-consolelog-item {
|
|
186
|
+
padding: 0.5rem;
|
|
187
|
+
}
|
|
188
|
+
.suite-consolelog-item pre {
|
|
189
|
+
margin: 0.5rem 0;
|
|
190
|
+
white-space: pre-wrap;
|
|
191
|
+
white-space: -moz-pre-wrap;
|
|
192
|
+
white-space: -pre-wrap;
|
|
193
|
+
white-space: -o-pre-wrap;
|
|
194
|
+
word-wrap: break-word;
|
|
195
|
+
}
|
|
196
|
+
.suite-consolelog-item-origin {
|
|
197
|
+
color: #777;
|
|
198
|
+
font-weight: bold;
|
|
199
|
+
}
|
|
200
|
+
.suite-consolelog-item-message {
|
|
201
|
+
color: #000;
|
|
202
|
+
font-size: 1rem;
|
|
203
|
+
padding: 0 0.5rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/* OBSOLETE SNAPSHOTS */
|
|
207
|
+
.suite-obsolete-snapshots {
|
|
208
|
+
margin-bottom: 0.25rem;
|
|
209
|
+
padding: 1rem;
|
|
210
|
+
background-color: #ffbaba;
|
|
211
|
+
color: #d8000c;
|
|
212
|
+
}
|
|
213
|
+
.suite-obsolete-snapshots-header {
|
|
214
|
+
font-weight: bold;
|
|
215
|
+
}
|
|
216
|
+
.suite-obsolete-snapshots-item {
|
|
217
|
+
padding: 0.5rem;
|
|
218
|
+
}
|
|
219
|
+
.suite-obsolete-snapshots-item pre {
|
|
220
|
+
margin: 0.5rem 0;
|
|
221
|
+
white-space: pre-wrap;
|
|
222
|
+
white-space: -moz-pre-wrap;
|
|
223
|
+
white-space: -pre-wrap;
|
|
224
|
+
white-space: -o-pre-wrap;
|
|
225
|
+
word-wrap: break-word;
|
|
226
|
+
}
|
|
227
|
+
.suite-obsolete-snapshots-item-message {
|
|
228
|
+
color: #000;
|
|
229
|
+
font-size: 1rem;
|
|
230
|
+
padding: 0 0.5rem;
|
|
231
|
+
}
|
|
232
|
+
</style></head><body><div id="jesthtml-content"><header><h1 id="title">Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit 7c42ea4b.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-07-15 17:01:22</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">175.127s</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">165.279s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: Test result : Bio.MSA.is_correct : TypeError: Cannot read properties of undefined (reading 'split')
|
|
233
|
+
Test result : Bio.converters.testFastaGapsToSeparator : Error: Units are not specified in column
|
|
234
|
+
Test result : Bio.converters.testFastaGapsToHelm : Error: Units are not specified in column
|
|
235
|
+
Test result : Bio.converters.HelmDnaToFasta : Error: Units are not specified in column
|
|
236
|
+
Test result : Bio.converters.HelmDnaToSeparator : Error: Units are not specified in column
|
|
237
|
+
|
|
238
|
+
at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:67:20
|
|
239
|
+
at Generator.next (<anonymous>)
|
|
240
|
+
at fulfilled (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:31:58)
|
|
241
|
+
at runMicrotasks (<anonymous>)
|
|
242
|
+
at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre></div></div></div><div class="suite-consolelog"><div class="suite-consolelog-header">Console Log</div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at Object.<anonymous> (/home/runner/work/public/public/packages/Bio/src/__jest__/test-node.ts:63:11)
|
|
243
|
+
at Generator.next (<anonymous>)
|
|
244
|
+
at fulfilled (/home/runner/work/public/public/packages/Bio/src/__jest__/test-node.ts:28:58)
|
|
245
|
+
at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Using web root: http://localhost:8080</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:40:11
|
|
246
|
+
at Generator.next (<anonymous>)
|
|
247
|
+
at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:34:71
|
|
248
|
+
at new Promise (<anonymous>)
|
|
249
|
+
at Object.<anonymous>.__awaiter (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:30:12)
|
|
250
|
+
at Object.<anonymous> (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:38:23)
|
|
251
|
+
at Promise.then.completed (/home/runner/work/public/public/packages/Bio/node_modules/jest-circus/build/utils.js:391:28)
|
|
252
|
+
at new Promise (<anonymous>)</pre><pre class="suite-consolelog-item-message">Testing Bio package</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:65:11
|
|
253
|
+
at Generator.next (<anonymous>)
|
|
254
|
+
at fulfilled (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:31:58)
|
|
255
|
+
at runMicrotasks (<anonymous>)
|
|
256
|
+
at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Test result : Bio.WebLogo.testGetStats : OK
|
|
257
|
+
Test result : Bio.WebLogo.testGetAlphabetSimilarity : OK
|
|
258
|
+
Test result : Bio.WebLogo.testPickupPaletteN1 : OK
|
|
259
|
+
Test result : Bio.WebLogo.testPickupPaletteN1e : OK
|
|
260
|
+
Test result : Bio.WebLogo.testPickupPaletteAA1 : OK
|
|
261
|
+
Test result : Bio.WebLogo.testPickupPaletteX : OK
|
|
262
|
+
Test result : Bio.WebLogo.monomerToText.longMonomerSingle : OK
|
|
263
|
+
Test result : Bio.WebLogo.monomerToText.longMonomerShort : OK
|
|
264
|
+
Test result : Bio.WebLogo.monomerToText.longMonomerLong56 : OK
|
|
265
|
+
Test result : Bio.WebLogo.monomerToText.longMonomerComplexFirstPartShort : OK
|
|
266
|
+
Test result : Bio.WebLogo.monomerToText.longMonomerComplexFirstPartLong56 : OK
|
|
267
|
+
Test result : Bio.Palettes.testPaletteN : OK
|
|
268
|
+
Test result : Bio.Palettes.testPaletteAA : OK
|
|
269
|
+
Test result : Bio.detectors.Negative1 : OK
|
|
270
|
+
Test result : Bio.detectors.Negative2 : OK
|
|
271
|
+
Test result : Bio.detectors.Negative3 : OK
|
|
272
|
+
Test result : Bio.detectors.NegativeSmiles : OK
|
|
273
|
+
Test result : Bio.detectors.Dna1 : OK
|
|
274
|
+
Test result : Bio.detectors.Rna1 : OK
|
|
275
|
+
Test result : Bio.detectors.AA1 : OK
|
|
276
|
+
Test result : Bio.detectors.MsaDna1 : OK
|
|
277
|
+
Test result : Bio.detectors.MsaAA1 : OK
|
|
278
|
+
Test result : Bio.detectors.SepDna : OK
|
|
279
|
+
Test result : Bio.detectors.SepRna : OK
|
|
280
|
+
Test result : Bio.detectors.SepPt : OK
|
|
281
|
+
Test result : Bio.detectors.SepUn1 : OK
|
|
282
|
+
Test result : Bio.detectors.SepUn2 : OK
|
|
283
|
+
Test result : Bio.detectors.SepMsaN1 : OK
|
|
284
|
+
Test result : Bio.detectors.SamplesFastaCsvPt : OK
|
|
285
|
+
Test result : Bio.detectors.SamplesFastaCsvNegativeEntry : OK
|
|
286
|
+
Test result : Bio.detectors.SamplesFastaCsvNegativeLength : OK
|
|
287
|
+
Test result : Bio.detectors.SamplesFastaCsvNegativeUniProtKB : OK
|
|
288
|
+
Test result : Bio.detectors.SamplesFastaFastaPt : OK
|
|
289
|
+
Test result : Bio.detectors.samplesPeptidesComplexNegativeID : OK
|
|
290
|
+
Test result : Bio.detectors.SamplesPeptidesComplexNegativeMeasured : OK
|
|
291
|
+
Test result : Bio.detectors.SamplesPeptidesComplexNegativeValue : OK
|
|
292
|
+
Test result : Bio.detectors.samplesMsaComplexUn : OK
|
|
293
|
+
Test result : Bio.detectors.samplesMsaComplexNegativeActivity : OK
|
|
294
|
+
Test result : Bio.detectors.samplesIdCsvNegativeID : OK
|
|
295
|
+
Test result : Bio.detectors.samplesSarSmallCsvNegativeSmiles : OK
|
|
296
|
+
Test result : Bio.detectors.samplesHelmCsvHELM : OK
|
|
297
|
+
Test result : Bio.detectors.samplesHelmCsvNegativeActivity : OK
|
|
298
|
+
Test result : Bio.detectors.samplesTestHelmNegativeID : OK
|
|
299
|
+
Test result : Bio.detectors.samplesTestHelmNegativeTestType : OK
|
|
300
|
+
Test result : Bio.detectors.samplesTestHelmPositiveHelmString : OK
|
|
301
|
+
Test result : Bio.detectors.samplesTestHelmNegativeValid : OK
|
|
302
|
+
Test result : Bio.detectors.samplesTestHelmNegativeMolWeight : OK
|
|
303
|
+
Test result : Bio.detectors.samplesTestHelmNegativeMolFormula : OK
|
|
304
|
+
Test result : Bio.detectors.samplesTestHelmNegativeSmiles : OK
|
|
305
|
+
Test result : Bio.detectors.samplesTestDemogNegativeAll : OK
|
|
306
|
+
Test result : Bio.detectors.samplesTestSmiles2NegativeSmiles : OK
|
|
307
|
+
Test result : Bio.detectors.samplesFastaPtPosSequence : OK
|
|
308
|
+
Test result : Bio.detectors.samplesTestCerealNegativeCerealName : OK
|
|
309
|
+
Test result : Bio.MSA.test_table.is_not_empty : OK
|
|
310
|
+
Test result : Bio.sequenceSpace.sequenceSpaceOpens : OK
|
|
311
|
+
Test result : Bio.activityCliffs.activityCliffsOpen : OK
|
|
312
|
+
Test result : Bio.splitters.helm1 : OK
|
|
313
|
+
Test result : Bio.splitters.helm2 : OK
|
|
314
|
+
Test result : Bio.splitters.helm3-multichar : OK
|
|
315
|
+
Test result : Bio.renderers.afterMsa : OK
|
|
316
|
+
Test result : Bio.renderers.afterConvert : OK
|
|
317
|
+
Test result : Bio.converters.testFastaPtToSeparator : OK
|
|
318
|
+
Test result : Bio.converters.testFastaDnaToSeparator : OK
|
|
319
|
+
Test result : Bio.converters.testFastaRnaToSeparator : OK
|
|
320
|
+
Test result : Bio.converters.testFastaPtToHelm : OK
|
|
321
|
+
Test result : Bio.converters.testFastaDnaToHelm : OK
|
|
322
|
+
Test result : Bio.converters.testFastaRnaToHelm : OK
|
|
323
|
+
Test result : Bio.converters.testSeparatorPtToFasta : OK
|
|
324
|
+
Test result : Bio.converters.testSeparatorDnaToFasta : OK
|
|
325
|
+
Test result : Bio.converters.testSeparatorRnaToFasta : OK
|
|
326
|
+
Test result : Bio.converters.testSeparatorGapsToFasta : OK
|
|
327
|
+
Test result : Bio.converters.testSeparatorPtToHelm : OK
|
|
328
|
+
Test result : Bio.converters.testSeparatorDnaToHelm : OK
|
|
329
|
+
Test result : Bio.converters.testSeparatorRnaToHelm : OK
|
|
330
|
+
Test result : Bio.converters.testSeparatorGapsToHelm : OK
|
|
331
|
+
Test result : Bio.converters.HelmRnaToFasta : OK
|
|
332
|
+
Test result : Bio.converters.HelmPtToFasta : OK
|
|
333
|
+
Test result : Bio.converters.HelmRnaToSeparator : OK
|
|
334
|
+
Test result : Bio.converters.HelmPtToSeparator : OK
|
|
335
|
+
</pre></div></div></div></div></body></html>
|