@datagrok/peptides 1.3.7 → 1.3.9
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/dist/package-test.js +1450 -592
- package/dist/package.js +1011 -793
- package/package.json +2 -2
- package/src/model.ts +167 -250
- package/src/package.ts +23 -4
- package/src/tests/algorithms.ts +51 -0
- package/src/tests/core.ts +13 -13
- package/src/utils/algorithms.ts +91 -0
- package/src/utils/cell-renderer.ts +38 -84
- package/src/utils/misc.ts +1 -1
- package/src/utils/types.ts +25 -4
- package/src/viewers/sar-viewer.ts +7 -55
- package/src/widgets/distribution.ts +1 -1
- package/src/widgets/manual-alignment.ts +2 -2
- package/src/widgets/peptides.ts +52 -28
- package/src/widgets/settings.ts +67 -0
- package/test-Peptides-62cc009524f3-0949dc07.html +276 -0
package/src/widgets/peptides.ts
CHANGED
|
@@ -1,41 +1,53 @@
|
|
|
1
1
|
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
|
-
import * as bio from '@datagrok-libraries/bio';
|
|
5
4
|
|
|
6
5
|
import '../styles.css';
|
|
7
6
|
import * as C from '../utils/constants';
|
|
8
7
|
import {PeptidesModel} from '../model';
|
|
9
8
|
import $ from 'cash-dom';
|
|
10
9
|
import {scaleActivity} from '../utils/misc';
|
|
10
|
+
import {WebLogoViewer} from '@datagrok-libraries/bio';
|
|
11
11
|
|
|
12
12
|
/** Peptide analysis widget.
|
|
13
13
|
*
|
|
14
14
|
* @param {DG.DataFrame} df Working table
|
|
15
15
|
* @param {DG.Column} col Aligned sequence column
|
|
16
16
|
* @return {Promise<DG.Widget>} Widget containing peptide analysis */
|
|
17
|
-
export async function
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
export async function analyzePeptidesUI(df: DG.DataFrame, col?: DG.Column<string>):
|
|
18
|
+
Promise<{host: HTMLElement, callback: () => Promise<void>}> {
|
|
19
|
+
let seqColInput: DG.InputBase | null = null;
|
|
20
|
+
if (typeof col === 'undefined') {
|
|
21
|
+
const sequenceColumns = df.columns.toList().filter((dfCol) => dfCol.semType === DG.SEMTYPE.MACROMOLECULE);
|
|
22
|
+
let potentialCol = DG.Utils.firstOrNull(sequenceColumns);
|
|
23
|
+
if (potentialCol === null)
|
|
24
|
+
throw new Error('Peptides Error: table doesn\'t contain sequence columns');
|
|
25
|
+
seqColInput = ui.columnInput('Sequence', df, potentialCol, () => {
|
|
26
|
+
const seqCol = seqColInput!.value;
|
|
27
|
+
if (!seqCol.tags['aligned']?.includes('MSA') && seqCol.tags[DG.TAGS.UNITS].toLowerCase() !== 'helm')
|
|
28
|
+
grok.shell.warning('Peptides analysis only works with aligned sequences');
|
|
29
|
+
});
|
|
30
|
+
} else if (!col.tags['aligned']?.includes('MSA') && col.tags[DG.TAGS.UNITS].toLowerCase() !== 'helm')
|
|
31
|
+
return {host: ui.label('Peptides analysis only works with aligned sequences'), callback: async () => {}};
|
|
20
32
|
|
|
21
33
|
let funcs = DG.Func.find({package: 'Bio', name: 'webLogoViewer'});
|
|
22
34
|
if (funcs.length == 0)
|
|
23
|
-
return
|
|
35
|
+
return {host: ui.label('Bio package is missing or out of date. Please install the latest version.'), callback: async () => {}};
|
|
24
36
|
|
|
25
|
-
funcs = DG.Func.find({package: '
|
|
37
|
+
funcs = DG.Func.find({package: 'Bio', name: 'getBioLib'});
|
|
26
38
|
if (funcs.length == 0)
|
|
27
|
-
return
|
|
39
|
+
return {host: ui.label('Bio package is missing or out of date. Please install the latest version.'), callback: async () => {}};
|
|
28
40
|
|
|
29
41
|
let scaledCol: DG.Column<number>;
|
|
30
42
|
|
|
31
43
|
const defaultActivityColumn: DG.Column<number> | null =
|
|
32
|
-
df.col('activity') || df.col('IC50') || DG.Utils.firstOrNull(df.columns.numerical)
|
|
44
|
+
df.col('activity') || df.col('IC50') || DG.Utils.firstOrNull(df.columns.numerical); ;
|
|
33
45
|
const histogramHost = ui.div([], {id: 'pep-hist-host'});
|
|
34
46
|
|
|
35
47
|
const activityScalingMethod = ui.choiceInput(
|
|
36
48
|
'Scaling', 'none', ['none', 'lg', '-lg'],
|
|
37
49
|
async (currentMethod: string): Promise<void> => {
|
|
38
|
-
scaledCol = scaleActivity(
|
|
50
|
+
scaledCol = scaleActivity(activityColumnChoice.value!, currentMethod);
|
|
39
51
|
|
|
40
52
|
const hist = DG.DataFrame.fromColumns([scaledCol]).plot.histogram({
|
|
41
53
|
filteringEnabled: false,
|
|
@@ -62,37 +74,48 @@ export async function analyzePeptidesWidget(df: DG.DataFrame, col: DG.Column): P
|
|
|
62
74
|
activityScalingMethod.fireChanged();
|
|
63
75
|
|
|
64
76
|
const inputsList = [activityColumnChoice, activityScalingMethod, clustersColumnChoice];
|
|
77
|
+
if (seqColInput !== null)
|
|
78
|
+
inputsList.splice(0, 0, seqColInput);
|
|
65
79
|
|
|
66
80
|
const bitsetChanged = df.filter.onChanged.subscribe(() => {
|
|
67
81
|
activityScalingMethodState();
|
|
68
|
-
})
|
|
82
|
+
});
|
|
69
83
|
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
84
|
+
const startAnalysisCallback = async () => {
|
|
85
|
+
const sequencesCol = col ?? seqColInput!.value;
|
|
86
|
+
if (sequencesCol)
|
|
87
|
+
await startAnalysis(activityColumnChoice.value!, sequencesCol, clustersColumnChoice.value, df, scaledCol,
|
|
88
|
+
activityScalingMethod.value ?? 'none');
|
|
73
89
|
bitsetChanged.unsubscribe();
|
|
74
|
-
}
|
|
75
|
-
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
const inputElements: HTMLElement[] = [ui.inputs(inputsList)];
|
|
93
|
+
$(inputElements[0]).find('label').css('width', 'unset');
|
|
94
|
+
if (typeof col !== 'undefined') {
|
|
95
|
+
const startBtn = ui.button('Launch SAR', startAnalysisCallback);
|
|
96
|
+
startBtn.style.alignSelf = 'center';
|
|
97
|
+
inputElements.push(startBtn);
|
|
98
|
+
}
|
|
76
99
|
|
|
77
|
-
const viewer = await df.plot.fromType('WebLogo') as
|
|
100
|
+
const viewer = await df.plot.fromType('WebLogo') as WebLogoViewer;
|
|
78
101
|
viewer.root.style.setProperty('height', '130px');
|
|
79
102
|
const logoHost = ui.div();
|
|
80
103
|
$(logoHost).empty().append(viewer.root);
|
|
81
104
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
ui.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
105
|
+
const mainHost = ui.divV([
|
|
106
|
+
logoHost,
|
|
107
|
+
ui.splitH([
|
|
108
|
+
ui.splitV(inputElements),
|
|
109
|
+
histogramHost,
|
|
110
|
+
], {style: {height: '215px'}}),
|
|
111
|
+
]);
|
|
112
|
+
mainHost.style.maxWidth = '400px';
|
|
113
|
+
return {host: mainHost, callback: startAnalysisCallback};
|
|
91
114
|
}
|
|
92
115
|
|
|
93
116
|
export async function startAnalysis(activityColumn: DG.Column<number>, peptidesCol: DG.Column<string>,
|
|
94
117
|
clustersColumn: DG.Column | null, currentDf: DG.DataFrame, scaledCol: DG.Column<number>, scaling: string,
|
|
95
|
-
|
|
118
|
+
): Promise<PeptidesModel | null> {
|
|
96
119
|
const progress = DG.TaskBarProgressIndicator.create('Loading SAR...');
|
|
97
120
|
let model = null;
|
|
98
121
|
if (activityColumn.type === DG.TYPE.FLOAT || activityColumn.type === DG.TYPE.INT) {
|
|
@@ -112,9 +135,9 @@ export async function startAnalysis(activityColumn: DG.Column<number>, peptidesC
|
|
|
112
135
|
newDf.name = 'Peptides analysis';
|
|
113
136
|
if (clustersColumn) {
|
|
114
137
|
newDf.getCol(clustersColumn.name).name = C.COLUMNS_NAMES.CLUSTERS;
|
|
115
|
-
newDf.
|
|
138
|
+
newDf.setTag(C.TAGS.CLUSTERS, C.COLUMNS_NAMES.CLUSTERS);
|
|
116
139
|
}
|
|
117
|
-
newDf.
|
|
140
|
+
newDf.setTag('settings', JSON.stringify({scaling: scaling}));
|
|
118
141
|
|
|
119
142
|
let monomerType = 'HELM_AA';
|
|
120
143
|
if (peptidesCol.getTag(DG.TAGS.UNITS).toLowerCase() == 'helm') {
|
|
@@ -126,6 +149,7 @@ export async function startAnalysis(activityColumn: DG.Column<number>, peptidesC
|
|
|
126
149
|
}
|
|
127
150
|
|
|
128
151
|
newDf.setTag('monomerType', monomerType);
|
|
152
|
+
newDf.setTag('newAnalysis', '1');
|
|
129
153
|
model = await PeptidesModel.getInstance(newDf);
|
|
130
154
|
} else
|
|
131
155
|
grok.shell.error('The activity column must be of numeric type!');
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as ui from 'datagrok-api/ui';
|
|
2
|
+
import * as grok from 'datagrok-api/grok';
|
|
3
|
+
import * as DG from 'datagrok-api/dg';
|
|
4
|
+
|
|
5
|
+
import * as type from '../utils/types';
|
|
6
|
+
import {PeptidesModel} from '../model';
|
|
7
|
+
|
|
8
|
+
import $ from 'cash-dom';
|
|
9
|
+
import wu from 'wu';
|
|
10
|
+
|
|
11
|
+
//TODO: show sliderInput values
|
|
12
|
+
export function getSettingsDialog(model: PeptidesModel): DG.Dialog {
|
|
13
|
+
const accordion = ui.accordion();
|
|
14
|
+
const settings = model.settings;
|
|
15
|
+
const result: type.PeptidesSettings = {columns: {}};
|
|
16
|
+
const activityScaling = ui.choiceInput('Activity scaling', settings.scaling ?? 'none', ['none', 'lg', '-lg'],
|
|
17
|
+
() => result.scaling = activityScaling.value! as type.ScalingMethods);
|
|
18
|
+
const bidirectionalAnalysis = ui.boolInput('Bidirectional analysis', settings.isBidirectional ?? false,
|
|
19
|
+
() => result.isBidirectional = bidirectionalAnalysis.value!);
|
|
20
|
+
accordion.addPane('General', () => ui.inputs([activityScaling, bidirectionalAnalysis]), true);
|
|
21
|
+
|
|
22
|
+
const maxMutations = ui.sliderInput('Max mutations', settings.maxMutations ?? 1, 0, 50, () => {
|
|
23
|
+
const val = Math.round(maxMutations.value!);
|
|
24
|
+
$(maxMutations.root).find('label.ui-input-description').remove();
|
|
25
|
+
result.maxMutations = val;
|
|
26
|
+
maxMutations.addPostfix(val.toString());
|
|
27
|
+
});
|
|
28
|
+
maxMutations.addPostfix((settings.maxMutations ?? 1).toString());
|
|
29
|
+
const minActivityDelta = ui.sliderInput('Min activity delta', settings.minActivityDelta ?? 0, 0, 100, () => {
|
|
30
|
+
const val = Math.round(minActivityDelta.value!);
|
|
31
|
+
result.minActivityDelta = val;
|
|
32
|
+
$(minActivityDelta.root).find('label.ui-input-description').remove();
|
|
33
|
+
minActivityDelta.addPostfix(val.toString());
|
|
34
|
+
});
|
|
35
|
+
minActivityDelta.addPostfix((settings.minActivityDelta ?? 0).toString());
|
|
36
|
+
accordion.addPane('Mutation Cliffs', () => ui.inputs([maxMutations, minActivityDelta]), true);
|
|
37
|
+
|
|
38
|
+
const inputsRows: HTMLElement[] = [];
|
|
39
|
+
for (const col of model.df.columns.numerical) {
|
|
40
|
+
const isIncluded = ui.boolInput('', typeof (settings.columns ?? {})[col.name] !== 'undefined',
|
|
41
|
+
() => {
|
|
42
|
+
if (isIncluded)
|
|
43
|
+
result.columns![col.name] = aggregation.stringValue;
|
|
44
|
+
else
|
|
45
|
+
delete result.columns![col.name];
|
|
46
|
+
}) as DG.InputBase<boolean>;
|
|
47
|
+
const aggregation = ui.choiceInput('Aggregation', (settings.columns ?? {})[col.name] ?? 'avg', Object.values(DG.STATS),
|
|
48
|
+
() => {
|
|
49
|
+
if (isIncluded)
|
|
50
|
+
result.columns![col.name] = aggregation.stringValue;
|
|
51
|
+
else
|
|
52
|
+
delete result.columns![col.name];
|
|
53
|
+
}) as DG.InputBase<string>;
|
|
54
|
+
$(aggregation.root).find('label').css('width', 'auto');
|
|
55
|
+
const inputsRow = ui.inputsRow(col.name, [isIncluded, aggregation]);
|
|
56
|
+
$(inputsRow).find('div.ui-div').css('display', 'inline-flex');
|
|
57
|
+
inputsRows.push(inputsRow);
|
|
58
|
+
}
|
|
59
|
+
accordion.addPane('Columns to include', () => ui.divV(inputsRows), false);
|
|
60
|
+
|
|
61
|
+
const dialog = ui.dialog('Peptides settings').add(accordion);
|
|
62
|
+
dialog.root.style.width = '400px';
|
|
63
|
+
dialog.onOK(() => model.settings = result);
|
|
64
|
+
dialog.show();
|
|
65
|
+
|
|
66
|
+
return dialog.show();
|
|
67
|
+
}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
<html><head><meta charset="utf-8"/><title>Peptides Test Report. Datagrok version datagrok/datagrok:latest SHA=62cc009524f3. Commit 0949dc07.</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">Peptides Test Report. Datagrok version datagrok/datagrok:latest SHA=62cc009524f3. Commit 0949dc07.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-11-11 14:09:20</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/Peptides/src/__jest__/remote.test.ts</div><div class="suite-time warn">96.038s</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">82.695s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: Test result : Failed : 329 : Peptides.Core.Start analysis: сomplex : Error: For column 'macromolecule' of alphabet 'UN' tag '.alphabetSize' is mandatory.
|
|
233
|
+
|
|
234
|
+
at /home/runner/work/public/public/packages/Peptides/src/__jest__/remote.test.ts:68:20
|
|
235
|
+
at Generator.next (<anonymous>)
|
|
236
|
+
at fulfilled (/home/runner/work/public/public/packages/Peptides/src/__jest__/remote.test.ts:31:58)
|
|
237
|
+
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/Peptides/src/__jest__/test-node.ts:62:11)
|
|
238
|
+
at Generator.next (<anonymous>)
|
|
239
|
+
at fulfilled (/home/runner/work/public/public/packages/Peptides/src/__jest__/test-node.ts:28:58)
|
|
240
|
+
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/Peptides/src/__jest__/remote.test.ts:40:11
|
|
241
|
+
at Generator.next (<anonymous>)
|
|
242
|
+
at /home/runner/work/public/public/packages/Peptides/src/__jest__/remote.test.ts:34:71
|
|
243
|
+
at new Promise (<anonymous>)
|
|
244
|
+
at Object.<anonymous>.__awaiter (/home/runner/work/public/public/packages/Peptides/src/__jest__/remote.test.ts:30:12)
|
|
245
|
+
at Object.<anonymous> (/home/runner/work/public/public/packages/Peptides/src/__jest__/remote.test.ts:38:23)
|
|
246
|
+
at Promise.then.completed (/home/runner/work/public/public/packages/Peptides/node_modules/jest-circus/build/utils.js:391:28)
|
|
247
|
+
at new Promise (<anonymous>)</pre><pre class="suite-consolelog-item-message">Testing Peptides package</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Peptides/src/__jest__/remote.test.ts:66:11
|
|
248
|
+
at Generator.next (<anonymous>)
|
|
249
|
+
at fulfilled (/home/runner/work/public/public/packages/Peptides/src/__jest__/remote.test.ts:31:58)
|
|
250
|
+
at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Test result : Success : 4295 : Peptides.Core.Start analysis: simple : OK
|
|
251
|
+
Test result : Success : 7421 : Peptides.Core.Save and load project : OK
|
|
252
|
+
Test result : Success : 0 : Peptides.Peptide space.test_table.is_not_empty : OK
|
|
253
|
+
Test result : Success : 2686 : Peptides.Peptide space.PeptideSimilaritySpaceWidget.is_drawing : OK
|
|
254
|
+
Test result : Success : 2 : Peptides.Peptide space.test_deminsionality_reducer : OK
|
|
255
|
+
Test result : Success : 0 : Peptides.Peptide space.test_peptide_similarity_space_viewer : OK
|
|
256
|
+
Test result : Success : 2238 : Peptides.Peptide space.peptide_space.DimensinalityReducer.UMAP.Levenshtein.is_numeric : OK
|
|
257
|
+
Test result : Success : 2625 : Peptides.Peptide space.peptide_space.DimensinalityReducer.UMAP.Jaro-Winkler.is_numeric : OK
|
|
258
|
+
Test result : Success : 3350 : Peptides.Peptide space.peptide_space.DimensinalityReducer.t-SNE.Levenshtein.is_numeric : OK
|
|
259
|
+
Test result : Success : 3819 : Peptides.Peptide space.peptide_space.DimensinalityReducer.t-SNE.Jaro-Winkler.is_numeric : OK
|
|
260
|
+
Test result : Success : 208 : Peptides.Peptide space.peptide_space.DimensinalityReducer.SPE.Levenshtein.is_numeric : OK
|
|
261
|
+
Test result : Success : 594 : Peptides.Peptide space.peptide_space.DimensinalityReducer.SPE.Jaro-Winkler.is_numeric : OK
|
|
262
|
+
Test result : Success : 171 : Peptides.Peptide space.peptide_space.DimensinalityReducer.pSPE.Levenshtein.is_numeric : OK
|
|
263
|
+
Test result : Success : 556 : Peptides.Peptide space.peptide_space.DimensinalityReducer.pSPE.Jaro-Winkler.is_numeric : OK
|
|
264
|
+
Test result : Success : 8614 : Peptides.Peptide space.peptide_space.DimensinalityReducer.OriginalSPE.Levenshtein.is_numeric : OK
|
|
265
|
+
Test result : Success : 9838 : Peptides.Peptide space.peptide_space.DimensinalityReducer.OriginalSPE.Jaro-Winkler.is_numeric : OK
|
|
266
|
+
Test result : Success : 2113 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.UMAP.Levenshtein.is_proper : OK
|
|
267
|
+
Test result : Success : 2618 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.UMAP.Jaro-Winkler.is_proper : OK
|
|
268
|
+
Test result : Success : 3392 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.t-SNE.Levenshtein.is_proper : OK
|
|
269
|
+
Test result : Success : 3850 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.t-SNE.Jaro-Winkler.is_proper : OK
|
|
270
|
+
Test result : Success : 232 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.SPE.Levenshtein.is_proper : OK
|
|
271
|
+
Test result : Success : 818 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.SPE.Jaro-Winkler.is_proper : OK
|
|
272
|
+
Test result : Success : 193 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.pSPE.Levenshtein.is_proper : OK
|
|
273
|
+
Test result : Success : 587 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.pSPE.Jaro-Winkler.is_proper : OK
|
|
274
|
+
Test result : Success : 8223 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.OriginalSPE.Levenshtein.is_proper : OK
|
|
275
|
+
Test result : Success : 9416 : Peptides.Peptide space.peptide_space.PeptideSimilaritySpaceViewer.OriginalSPE.Jaro-Winkler.is_proper : OK
|
|
276
|
+
</pre></div></div></div></div></body></html>
|