@datagrok/bio 2.16.0 → 2.16.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/CHANGELOG.md +18 -0
- package/dist/package-test.js +6 -6
- package/dist/package-test.js.map +1 -1
- package/dist/package.js +1 -1
- package/dist/package.js.map +1 -1
- package/package.json +11 -11
- package/src/analysis/sequence-activity-cliffs.ts +6 -4
- package/src/analysis/sequence-diversity-viewer.ts +1 -1
- package/src/analysis/sequence-similarity-viewer.ts +1 -1
- package/src/calculations/monomerLevelMols.ts +4 -5
- package/src/package-types.ts +0 -1
- package/src/package.ts +4 -6
- package/src/substructure-search/substructure-search.ts +15 -9
- package/src/tests/substructure-filters-tests.ts +27 -31
- package/src/utils/monomer-lib/library-file-manager/file-manager.ts +1 -1
- package/src/utils/seq-helper/seq-handler.ts +11 -34
- package/src/utils/seq-helper/seq-helper.ts +35 -1
- package/src/viewers/web-logo-viewer.ts +1 -0
- package/src/widgets/bio-substructure-filter-helm.ts +5 -2
- package/src/widgets/bio-substructure-filter.ts +14 -23
|
@@ -19,14 +19,13 @@ import {getHelmHelper} from '@datagrok-libraries/bio/src/helm/helm-helper';
|
|
|
19
19
|
import {IRenderer} from '@datagrok-libraries/bio/src/types/renderer';
|
|
20
20
|
import {ILogger} from '@datagrok-libraries/bio/src/utils/logger';
|
|
21
21
|
import {PromiseSyncer} from '@datagrok-libraries/bio/src/utils/syncer';
|
|
22
|
+
import {ISeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
|
|
22
23
|
|
|
23
24
|
import {helmSubstructureSearch, linearSubstructureSearch} from '../substructure-search/substructure-search';
|
|
24
25
|
import {updateDivInnerHTML} from '../utils/ui-utils';
|
|
25
26
|
import {BioFilterBase, BioFilterProps, IBioFilter, IFilterProps} from './bio-substructure-filter-types';
|
|
26
27
|
import {HelmBioFilter} from './bio-substructure-filter-helm';
|
|
27
28
|
|
|
28
|
-
import {_package} from '../package';
|
|
29
|
-
|
|
30
29
|
const FILTER_SYNC_EVENT: string = 'bio-substructure-filter';
|
|
31
30
|
|
|
32
31
|
class FilterState {
|
|
@@ -55,7 +54,6 @@ export class BioSubstructureFilter extends DG.Filter implements IRenderer {
|
|
|
55
54
|
readonly loader: HTMLDivElement;
|
|
56
55
|
notation: string | undefined = undefined;
|
|
57
56
|
|
|
58
|
-
readonly logger: ILogger;
|
|
59
57
|
readonly filterSyncer: PromiseSyncer;
|
|
60
58
|
|
|
61
59
|
get calculating(): boolean { return this.loader.style.display == 'initial'; }
|
|
@@ -87,22 +85,15 @@ export class BioSubstructureFilter extends DG.Filter implements IRenderer {
|
|
|
87
85
|
return res;
|
|
88
86
|
}
|
|
89
87
|
|
|
90
|
-
constructor(
|
|
88
|
+
constructor(
|
|
89
|
+
private readonly seqHelper: ISeqHelper,
|
|
90
|
+
private logger: ILogger
|
|
91
|
+
) {
|
|
91
92
|
super();
|
|
92
93
|
this.root = ui.divV([]);
|
|
93
94
|
this.loader = ui.loader();
|
|
94
95
|
this.calculating = false;
|
|
95
|
-
this.filterSyncer = new PromiseSyncer(this.logger
|
|
96
|
-
|
|
97
|
-
return new Proxy(this, {
|
|
98
|
-
set(target: any, key, value) {
|
|
99
|
-
if (key === 'column') {
|
|
100
|
-
const k = 42;
|
|
101
|
-
}
|
|
102
|
-
target[key] = value;
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
96
|
+
this.filterSyncer = new PromiseSyncer(this.logger);
|
|
106
97
|
}
|
|
107
98
|
|
|
108
99
|
private static filterCounter: number = -1;
|
|
@@ -124,13 +115,13 @@ export class BioSubstructureFilter extends DG.Filter implements IRenderer {
|
|
|
124
115
|
else
|
|
125
116
|
this.column = dataFrame.columns.bySemType(DG.SEMTYPE.MACROMOLECULE);
|
|
126
117
|
}
|
|
127
|
-
const sh =
|
|
118
|
+
const sh = this.seqHelper.getSeqHandler(this.column!);
|
|
128
119
|
this.columnName ??= this.column?.name;
|
|
129
120
|
this.notation ??= this.column?.meta.units!;
|
|
130
121
|
|
|
131
122
|
this.bioFilter = this.notation === NOTATION.FASTA ?
|
|
132
123
|
new FastaBioFilter() : this.notation === NOTATION.SEPARATOR ?
|
|
133
|
-
new SeparatorBioFilter(this.column!.getTag(bioTAGS.separator)) : new HelmBioFilter();
|
|
124
|
+
new SeparatorBioFilter(this.column!.getTag(bioTAGS.separator)) : new HelmBioFilter(this.seqHelper);
|
|
134
125
|
this.root.appendChild(this.bioFilter!.filterPanel);
|
|
135
126
|
this.root.appendChild(this.loader);
|
|
136
127
|
await this.bioFilter.attach(); // may await waitForElementInDom
|
|
@@ -200,7 +191,7 @@ export class BioSubstructureFilter extends DG.Filter implements IRenderer {
|
|
|
200
191
|
|
|
201
192
|
private fireFilterSync(): void {
|
|
202
193
|
const logPrefix = `${this.filterToLog()}.fireFilterSync()`;
|
|
203
|
-
|
|
194
|
+
this.logger.debug(`${logPrefix}, ` +
|
|
204
195
|
`bioFilter = ${!!this.bioFilter ? this.bioFilter.constructor.name : 'null'}` +
|
|
205
196
|
(!!this.bioFilter ? `, props = ${JSON.stringify(this.bioFilter!.saveProps())}` : ''));
|
|
206
197
|
|
|
@@ -218,7 +209,7 @@ export class BioSubstructureFilter extends DG.Filter implements IRenderer {
|
|
|
218
209
|
bioFilterOnChangedDebounced(): void {
|
|
219
210
|
if (!this.dataFrame) return; // Debounced event can be handled postponed
|
|
220
211
|
const logPrefix = `${this.filterToLog()}.bioFilterOnChangedDebounced()`;
|
|
221
|
-
|
|
212
|
+
this.logger.debug(`${logPrefix}, start, ` +
|
|
222
213
|
`isFiltering = ${this.isFiltering}, ` +
|
|
223
214
|
`props = ${JSON.stringify(this.bioFilter!.saveProps())}`);
|
|
224
215
|
|
|
@@ -235,22 +226,22 @@ export class BioSubstructureFilter extends DG.Filter implements IRenderer {
|
|
|
235
226
|
this.filterSyncer.sync(logPrefix, async () => {
|
|
236
227
|
this.calculating = true;
|
|
237
228
|
try {
|
|
238
|
-
|
|
229
|
+
this.logger.debug(`${logPrefix}, before substructureSearch`);
|
|
239
230
|
this.bitset = await this.bioFilter?.substructureSearch(this.column!)!;
|
|
240
|
-
|
|
231
|
+
this.logger.debug(`${logPrefix}, after substructureSearch`);
|
|
241
232
|
this.calculating = false;
|
|
242
233
|
this.fireFilterSync();
|
|
243
234
|
this.dataFrame?.rows.requestFilter();
|
|
244
235
|
} finally {
|
|
245
236
|
this.calculating = false;
|
|
246
|
-
|
|
237
|
+
this.logger.debug(`${logPrefix}, end`);
|
|
247
238
|
}
|
|
248
239
|
});
|
|
249
240
|
}
|
|
250
241
|
|
|
251
242
|
grokEventsOnResetFilterRequest(): void {
|
|
252
243
|
const logPrefix = `${this.filterToLog()}.grokEventsOnResetFilterRequest()`;
|
|
253
|
-
|
|
244
|
+
this.logger.debug(`${logPrefix}`);
|
|
254
245
|
this.bioFilter?.resetFilter();
|
|
255
246
|
}
|
|
256
247
|
|