@datagrok-libraries/bio 5.35.0 → 5.36.0
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
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# bio changelog
|
|
2
2
|
|
|
3
|
+
## 5.36.0 (2023-08-10)
|
|
4
|
+
|
|
5
|
+
This release introduces chemical sequence similarity functionality.
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Added `sequenceChemSimilarity` function.
|
|
10
|
+
|
|
3
11
|
## 5.35.0 (2023-08-06)
|
|
4
12
|
|
|
5
13
|
Optimize with splitterAsFastaSimple returning ISeqSplitted allowing to speed up processing of
|
|
@@ -7,28 +15,24 @@ single character alphabets.
|
|
|
7
15
|
|
|
8
16
|
## Breaking changes
|
|
9
17
|
|
|
10
|
-
* SplitterFunc now
|
|
18
|
+
* SplitterFunc now returns `ISeqSplitted` instead of `string[]`.
|
|
11
19
|
|
|
12
20
|
### Features
|
|
13
21
|
|
|
14
|
-
* Add WebLogo property showPositionLabels
|
|
22
|
+
* Add WebLogo property showPositionLabels.
|
|
15
23
|
|
|
16
24
|
## 5.34.1 (2023-08-01)
|
|
17
25
|
|
|
18
|
-
Patch release for a small fix for Macromolecule cell renderer
|
|
19
|
-
|
|
20
|
-
*Dependency: datgarok-api >= 1.10.2*
|
|
26
|
+
Patch release for a small fix for the Macromolecule cell renderer.
|
|
21
27
|
|
|
22
28
|
### Bug fixes
|
|
23
29
|
|
|
24
|
-
* GROK-13659: Bio | Tools: Fix MaxMonomerLength Macromolecule cell renderer
|
|
30
|
+
* GROK-13659: Bio | Tools: Fix MaxMonomerLength Macromolecule cell renderer.
|
|
25
31
|
|
|
26
32
|
## 5.34.0 (2023-07-21)
|
|
27
33
|
|
|
28
34
|
This release focuses on improving usability.
|
|
29
35
|
|
|
30
|
-
*Dependency: datgarok-api >= 1.10.2*
|
|
31
|
-
|
|
32
36
|
### Features
|
|
33
37
|
|
|
34
38
|
* Added `NotationConverter.getConverter()` getting a function to convert a single value.
|
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import { IMonomerLib } from '../types/index';
|
|
3
|
+
import { ISeqSplitted } from '../utils/macromolecule/types';
|
|
3
4
|
export declare function encodeMonomers(col: DG.Column): DG.Column | null;
|
|
4
5
|
export declare function getMolfilesFromSeq(col: DG.Column, monomersLibObject: any[]): any[][] | null;
|
|
5
6
|
export declare function getMolfilesFromSingleSeq(cell: DG.Cell, monomersLibObject: any[]): any[][] | null;
|
|
@@ -18,4 +19,12 @@ export interface IMonomerLibHelper {
|
|
|
18
19
|
readLibrary(path: string, fileName: string): Promise<IMonomerLib>;
|
|
19
20
|
}
|
|
20
21
|
export declare function getMonomerLibHelper(): Promise<IMonomerLibHelper>;
|
|
22
|
+
/** Calculates chemical similarity between reference sequence and list of sequences.
|
|
23
|
+
* Similarity is computed as a sum of monomer similarities on corresponding positions. Monomer similarity is calculated
|
|
24
|
+
* based on Morgan fingerprints.
|
|
25
|
+
* @param {DG.Column<string>[]} positionColumns List of position columns containing monomers.
|
|
26
|
+
* @param {string[]} referenceSequence Reference sequence.
|
|
27
|
+
* @returns {Promise<DG.Column<number>>} Column with similarity values. */
|
|
28
|
+
export declare function sequenceChemSimilarity(sequenceCol: DG.Column<string>, referenceSequence: ISeqSplitted): Promise<DG.Column<number>>;
|
|
29
|
+
export declare function sequenceChemSimilarity(positionColumns: DG.Column<string>[], referenceSequence: ISeqSplitted): Promise<DG.Column<number>>;
|
|
21
30
|
//# sourceMappingURL=monomer-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monomer-utils.d.ts","sourceRoot":"","sources":["monomer-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAOtC,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"monomer-utils.d.ts","sourceRoot":"","sources":["monomer-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAOtC,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAe,MAAM,8BAA8B,CAAC;AAIxE,wBAAgB,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAuB/D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAsB3F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAmBhG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;CAAE,CAYjF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,GAAG,CA8BpE;AAED,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,SAAS,IAAI,WAAW,CAAC;IAEzB;;OAEG;IACH,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C,6DAA6D;IAC7D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACnE;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAOtE;AAED;;;;;0EAK0E;AAC1E,wBAAsB,sBAAsB,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,iBAAiB,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1I,wBAAsB,sBAAsB,CAAC,eAAe,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import * as DG from 'datagrok-api/dg';
|
|
|
3
3
|
import * as grok from 'datagrok-api/grok';
|
|
4
4
|
import { HELM_CORE_FIELDS, jsonSdfMonomerLibDict, MONOMER_ENCODE_MAX, MONOMER_ENCODE_MIN, SDF_MONOMER_NAME } from '../utils/const';
|
|
5
5
|
import { UnitsHandler } from '../utils/units-handler';
|
|
6
|
+
import { splitAlignedSequences } from '../utils/splitter';
|
|
6
7
|
export function encodeMonomers(col) {
|
|
7
8
|
let encodeSymbol = MONOMER_ENCODE_MIN;
|
|
8
9
|
const monomerSymbolDict = {};
|
|
@@ -123,4 +124,51 @@ export async function getMonomerLibHelper() {
|
|
|
123
124
|
const res = (await funcList[0].prepare().call()).getOutputParamValue();
|
|
124
125
|
return res;
|
|
125
126
|
}
|
|
127
|
+
export async function sequenceChemSimilarity(positionColumns, referenceSequence) {
|
|
128
|
+
if (positionColumns instanceof DG.Column)
|
|
129
|
+
positionColumns = splitAlignedSequences(positionColumns).columns.toList();
|
|
130
|
+
const libHelper = await getMonomerLibHelper();
|
|
131
|
+
const monomerLib = libHelper.getBioLib();
|
|
132
|
+
// const smilesCols: DG.Column<string>[] = new Array(monomerCols.length);
|
|
133
|
+
const rawCols = new Array(positionColumns.length);
|
|
134
|
+
const rowCount = positionColumns[0].length;
|
|
135
|
+
const totalSimilarity = new Float32Array(rowCount);
|
|
136
|
+
// Calculate base similarity
|
|
137
|
+
for (let position = 0; position < positionColumns.length; ++position) {
|
|
138
|
+
const referenceMonomer = referenceSequence[position];
|
|
139
|
+
const referenceMol = monomerLib.getMonomer('PEPTIDE', referenceMonomer)?.smiles ?? '';
|
|
140
|
+
const monomerCol = positionColumns[position];
|
|
141
|
+
const monomerColData = monomerCol.getRawData();
|
|
142
|
+
const monomerColCategories = monomerCol.categories;
|
|
143
|
+
const emptyCategoryIdx = monomerColCategories.indexOf('');
|
|
144
|
+
rawCols[position] = { categories: monomerColCategories, data: monomerColData, emptyIndex: emptyCategoryIdx };
|
|
145
|
+
if (typeof referenceMonomer === 'undefined')
|
|
146
|
+
continue;
|
|
147
|
+
// Calculating similarity for
|
|
148
|
+
const molCol = DG.Column.fromStrings('smiles', monomerColCategories.map((cat) => monomerLib.getMonomer('PEPTIDE', cat)?.smiles ?? ''));
|
|
149
|
+
const _df = DG.DataFrame.fromColumns([molCol]); // getSimilarities expects that column is in dataframe
|
|
150
|
+
const similarityCol = (await grok.chem.getSimilarities(molCol, referenceMol));
|
|
151
|
+
const similarityColData = similarityCol.getRawData();
|
|
152
|
+
for (let rowIdx = 0; rowIdx < rowCount; ++rowIdx) {
|
|
153
|
+
const monomerCategoryIdx = monomerColData[rowIdx];
|
|
154
|
+
totalSimilarity[rowIdx] += referenceMonomer !== '' && monomerCategoryIdx !== emptyCategoryIdx ?
|
|
155
|
+
similarityColData[monomerCategoryIdx] :
|
|
156
|
+
referenceMonomer === '' && monomerCategoryIdx === emptyCategoryIdx ? 1 : 0;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
for (let similarityIndex = 0; similarityIndex < totalSimilarity.length; ++similarityIndex) {
|
|
160
|
+
let updatedSimilarity = totalSimilarity[similarityIndex] / referenceSequence.length;
|
|
161
|
+
for (let position = 0; position < positionColumns.length; ++position) {
|
|
162
|
+
const currentRawCol = rawCols[position];
|
|
163
|
+
if ((position >= referenceSequence.length && currentRawCol.data[similarityIndex] !== currentRawCol.emptyIndex) ||
|
|
164
|
+
(currentRawCol.data[similarityIndex] === currentRawCol.emptyIndex && position < referenceSequence.length)) {
|
|
165
|
+
updatedSimilarity = DG.FLOAT_NULL;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
totalSimilarity[similarityIndex] = updatedSimilarity;
|
|
170
|
+
}
|
|
171
|
+
const similarityCol = DG.Column.fromFloat32Array('Similarity', totalSimilarity);
|
|
172
|
+
return similarityCol;
|
|
173
|
+
}
|
|
126
174
|
//# sourceMappingURL=monomer-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monomer-utils.js","sourceRoot":"","sources":["monomer-utils.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EACQ,gBAAgB,EAAsB,qBAAqB,EACxE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EACzD,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAC,YAAY,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"monomer-utils.js","sourceRoot":"","sources":["monomer-utils.ts"],"names":[],"mappings":"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"}
|