@datagrok-libraries/bio 4.4.7 → 5.1.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/index.d.ts +16 -0
- package/index.d.ts.map +1 -0
- package/index.js +14 -0
- package/index.ts +62 -0
- package/package.json +1 -1
- package/src/utils/cell-renderer.d.ts.map +1 -1
- package/src/utils/cell-renderer.js +3 -3
- package/src/utils/macromolecule.d.ts +86 -0
- package/src/utils/macromolecule.d.ts.map +1 -0
- package/src/utils/macromolecule.js +190 -0
- package/src/utils/notation-converter.d.ts +2 -2
- package/src/utils/notation-converter.d.ts.map +1 -1
- package/src/utils/notation-converter.js +4 -4
- package/src/utils/splitter.d.ts.map +1 -1
- package/src/utils/splitter.js +4 -5
- package/src/utils/units-handler.d.ts +1 -19
- package/src/utils/units-handler.d.ts.map +1 -1
- package/src/utils/units-handler.js +24 -39
- package/src/viewers/phylocanvas-gl-viewer.d.ts +7 -0
- package/src/viewers/phylocanvas-gl-viewer.d.ts.map +1 -0
- package/src/viewers/phylocanvas-gl-viewer.js +2 -0
- package/src/viewers/vd-regions-viewer.d.ts +2 -2
- package/src/viewers/vd-regions-viewer.d.ts.map +1 -1
- package/src/viewers/vd-regions-viewer.js +1 -1
- package/src/viewers/viewer.d.ts +9 -0
- package/src/viewers/viewer.d.ts.map +1 -0
- package/src/viewers/viewer.js +2 -0
- package/src/viewers/web-logo.d.ts +8 -70
- package/src/viewers/web-logo.d.ts.map +1 -1
- package/src/viewers/web-logo.js +68 -246
package/index.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AminoacidsPalettes } from './src/aminoacids';
|
|
2
|
+
import { NucleotidesPalettes } from './src/nucleotides';
|
|
3
|
+
import { SeqPalette, SeqPaletteBase } from './src/seq-palettes';
|
|
4
|
+
import { UnknownSeqPalettes } from './src/unknown';
|
|
5
|
+
import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
6
|
+
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
7
|
+
import { getSplitter, splitterAsFasta, getSplitterForColumn, SplitterFunc, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabetSimilarity, ALPHABET, NOTATION, TAGS } from './src/utils/macromolecule';
|
|
8
|
+
import { NotationConverter } from './src/utils/notation-converter';
|
|
9
|
+
import { splitAlignedSequences } from './src/utils/splitter';
|
|
10
|
+
import { UnitsHandler } from './src/utils/units-handler';
|
|
11
|
+
import { VdRegion, VdRegionType } from './src/vd-regions';
|
|
12
|
+
import { IPhylocanvasGlViewer } from './src/viewers/phylocanvas-gl-viewer';
|
|
13
|
+
import { IVdRegionsViewer } from './src/viewers/vd-regions-viewer';
|
|
14
|
+
import { PositionInfo, PositionMonomerInfo, WebLogo } from './src/viewers/web-logo';
|
|
15
|
+
export { ALPHABET, NOTATION, TAGS, NotationConverter, SplitterFunc, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPalette, SeqPaletteBase, AminoacidsPalettes, NucleotidesPalettes, UnknownSeqPalettes, pickUpPalette, getPaletteByType, PositionInfo, PositionMonomerInfo, WebLogo, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, IVdRegionsViewer, IPhylocanvasGlViewer, };
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACjD,OAAO,EAAC,SAAS,EAAE,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,EACR,QAAQ,EACR,IAAI,EACL,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAElF,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,GACrB,CAAC"}
|
package/index.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AminoacidsPalettes } from './src/aminoacids';
|
|
2
|
+
import { NucleotidesPalettes } from './src/nucleotides';
|
|
3
|
+
import { SeqPaletteBase } from './src/seq-palettes';
|
|
4
|
+
import { UnknownSeqPalettes } from './src/unknown';
|
|
5
|
+
import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
6
|
+
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
7
|
+
import { getSplitter, splitterAsFasta, getSplitterForColumn, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
8
|
+
import { NotationConverter } from './src/utils/notation-converter';
|
|
9
|
+
import { splitAlignedSequences } from './src/utils/splitter';
|
|
10
|
+
import { UnitsHandler } from './src/utils/units-handler';
|
|
11
|
+
import { VdRegion, VdRegionType } from './src/vd-regions';
|
|
12
|
+
import { PositionInfo, PositionMonomerInfo, WebLogo } from './src/viewers/web-logo';
|
|
13
|
+
export { NotationConverter, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPaletteBase, AminoacidsPalettes, NucleotidesPalettes, UnknownSeqPalettes, pickUpPalette, getPaletteByType, PositionInfo, PositionMonomerInfo, WebLogo, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, };
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUN0RCxPQUFPLEVBQWEsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZixvQkFBb0IsRUFFcEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixxQkFBcUIsRUFJdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUd4RCxPQUFPLEVBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLE9BQU8sRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRWxGLE9BQU8sRUFJTCxpQkFBaUIsRUFFakIsUUFBUSxFQUNSLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLHFCQUFxQixFQUVyQixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLE9BQU8sRUFDUCxZQUFZLEVBQ1osU0FBUyxFQUNULG1CQUFtQixFQUNuQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFFBQVEsR0FHVCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBbWlub2FjaWRzUGFsZXR0ZXN9IGZyb20gJy4vc3JjL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHtOdWNsZW90aWRlc1BhbGV0dGVzfSBmcm9tICcuL3NyYy9udWNsZW90aWRlcyc7XG5pbXBvcnQge1NlcVBhbGV0dGUsIFNlcVBhbGV0dGVCYXNlfSBmcm9tICcuL3NyYy9zZXEtcGFsZXR0ZXMnO1xuaW1wb3J0IHtVbmtub3duU2VxUGFsZXR0ZXN9IGZyb20gJy4vc3JjL3Vua25vd24nO1xuaW1wb3J0IHtEcmF3U3R5bGUsIHByaW50TGVmdE9yQ2VudGVyZWR9IGZyb20gJy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHtGYXN0YUZpbGVIYW5kbGVyfSBmcm9tICcuL3NyYy91dGlscy9mYXN0YS1oYW5kbGVyJztcbmltcG9ydCB7XG4gIGdldFNwbGl0dGVyLFxuICBzcGxpdHRlckFzRmFzdGEsXG4gIGdldFNwbGl0dGVyRm9yQ29sdW1uLFxuICBTcGxpdHRlckZ1bmMsXG4gIG1vbm9tZXJUb1Nob3J0LFxuICBzcGxpdHRlckFzSGVsbSxcbiAgZ2V0U3RhdHMsXG4gIHBpY2tVcFBhbGV0dGUsXG4gIGdldFBhbGV0dGVCeVR5cGUsXG4gIGdldEFscGhhYmV0U2ltaWxhcml0eSxcbiAgQUxQSEFCRVQsXG4gIE5PVEFUSU9OLFxuICBUQUdTXG59IGZyb20gJy4vc3JjL3V0aWxzL21hY3JvbW9sZWN1bGUnO1xuaW1wb3J0IHtOb3RhdGlvbkNvbnZlcnRlcn0gZnJvbSAnLi9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyJztcbmltcG9ydCB7c3BsaXRBbGlnbmVkU2VxdWVuY2VzfSBmcm9tICcuL3NyYy91dGlscy9zcGxpdHRlcic7XG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi9zcmMvdXRpbHMvdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQge1ZkUmVnaW9uLCBWZFJlZ2lvblR5cGV9IGZyb20gJy4vc3JjL3ZkLXJlZ2lvbnMnO1xuaW1wb3J0IHtJUGh5bG9jYW52YXNHbFZpZXdlcn0gZnJvbSAnLi9zcmMvdmlld2Vycy9waHlsb2NhbnZhcy1nbC12aWV3ZXInO1xuaW1wb3J0IHtJVmRSZWdpb25zVmlld2VyfSBmcm9tICcuL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyJztcbmltcG9ydCB7UG9zaXRpb25JbmZvLCBQb3NpdGlvbk1vbm9tZXJJbmZvLCBXZWJMb2dvfSBmcm9tICcuL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcblxuZXhwb3J0IHtcbiAgQUxQSEFCRVQsXG4gIE5PVEFUSU9OLFxuICBUQUdTLFxuICBOb3RhdGlvbkNvbnZlcnRlcixcbiAgU3BsaXR0ZXJGdW5jLFxuICBnZXRTdGF0cyxcbiAgZ2V0QWxwaGFiZXRTaW1pbGFyaXR5LFxuICBnZXRTcGxpdHRlcixcbiAgc3BsaXR0ZXJBc0Zhc3RhLFxuICBzcGxpdHRlckFzSGVsbSxcbiAgZ2V0U3BsaXR0ZXJGb3JDb2x1bW4sXG4gIG1vbm9tZXJUb1Nob3J0LFxuICBzcGxpdEFsaWduZWRTZXF1ZW5jZXMsXG4gIFNlcVBhbGV0dGUsXG4gIFNlcVBhbGV0dGVCYXNlLFxuICBBbWlub2FjaWRzUGFsZXR0ZXMsXG4gIE51Y2xlb3RpZGVzUGFsZXR0ZXMsXG4gIFVua25vd25TZXFQYWxldHRlcyxcbiAgcGlja1VwUGFsZXR0ZSxcbiAgZ2V0UGFsZXR0ZUJ5VHlwZSxcbiAgUG9zaXRpb25JbmZvLFxuICBQb3NpdGlvbk1vbm9tZXJJbmZvLFxuICBXZWJMb2dvLFxuICBVbml0c0hhbmRsZXIsXG4gIERyYXdTdHlsZSxcbiAgcHJpbnRMZWZ0T3JDZW50ZXJlZCxcbiAgRmFzdGFGaWxlSGFuZGxlcixcbiAgVmRSZWdpb25UeXBlLFxuICBWZFJlZ2lvbixcbiAgSVZkUmVnaW9uc1ZpZXdlcixcbiAgSVBoeWxvY2FudmFzR2xWaWV3ZXIsXG59OyJdfQ==
|
package/index.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {AminoacidsPalettes} from './src/aminoacids';
|
|
2
|
+
import {NucleotidesPalettes} from './src/nucleotides';
|
|
3
|
+
import {SeqPalette, SeqPaletteBase} from './src/seq-palettes';
|
|
4
|
+
import {UnknownSeqPalettes} from './src/unknown';
|
|
5
|
+
import {DrawStyle, printLeftOrCentered} from './src/utils/cell-renderer';
|
|
6
|
+
import {FastaFileHandler} from './src/utils/fasta-handler';
|
|
7
|
+
import {
|
|
8
|
+
getSplitter,
|
|
9
|
+
splitterAsFasta,
|
|
10
|
+
getSplitterForColumn,
|
|
11
|
+
SplitterFunc,
|
|
12
|
+
monomerToShort,
|
|
13
|
+
splitterAsHelm,
|
|
14
|
+
getStats,
|
|
15
|
+
pickUpPalette,
|
|
16
|
+
getPaletteByType,
|
|
17
|
+
getAlphabetSimilarity,
|
|
18
|
+
ALPHABET,
|
|
19
|
+
NOTATION,
|
|
20
|
+
TAGS
|
|
21
|
+
} from './src/utils/macromolecule';
|
|
22
|
+
import {NotationConverter} from './src/utils/notation-converter';
|
|
23
|
+
import {splitAlignedSequences} from './src/utils/splitter';
|
|
24
|
+
import {UnitsHandler} from './src/utils/units-handler';
|
|
25
|
+
import {VdRegion, VdRegionType} from './src/vd-regions';
|
|
26
|
+
import {IPhylocanvasGlViewer} from './src/viewers/phylocanvas-gl-viewer';
|
|
27
|
+
import {IVdRegionsViewer} from './src/viewers/vd-regions-viewer';
|
|
28
|
+
import {PositionInfo, PositionMonomerInfo, WebLogo} from './src/viewers/web-logo';
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
ALPHABET,
|
|
32
|
+
NOTATION,
|
|
33
|
+
TAGS,
|
|
34
|
+
NotationConverter,
|
|
35
|
+
SplitterFunc,
|
|
36
|
+
getStats,
|
|
37
|
+
getAlphabetSimilarity,
|
|
38
|
+
getSplitter,
|
|
39
|
+
splitterAsFasta,
|
|
40
|
+
splitterAsHelm,
|
|
41
|
+
getSplitterForColumn,
|
|
42
|
+
monomerToShort,
|
|
43
|
+
splitAlignedSequences,
|
|
44
|
+
SeqPalette,
|
|
45
|
+
SeqPaletteBase,
|
|
46
|
+
AminoacidsPalettes,
|
|
47
|
+
NucleotidesPalettes,
|
|
48
|
+
UnknownSeqPalettes,
|
|
49
|
+
pickUpPalette,
|
|
50
|
+
getPaletteByType,
|
|
51
|
+
PositionInfo,
|
|
52
|
+
PositionMonomerInfo,
|
|
53
|
+
WebLogo,
|
|
54
|
+
UnitsHandler,
|
|
55
|
+
DrawStyle,
|
|
56
|
+
printLeftOrCentered,
|
|
57
|
+
FastaFileHandler,
|
|
58
|
+
VdRegionType,
|
|
59
|
+
VdRegion,
|
|
60
|
+
IVdRegionsViewer,
|
|
61
|
+
IPhylocanvasGlViewer,
|
|
62
|
+
};
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cell-renderer.d.ts","sourceRoot":"","sources":["cell-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cell-renderer.d.ts","sourceRoot":"","sources":["cell-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAStC,oBAAY,SAAS;IACnB,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAC1C,CAAC,EAAE,wBAAwB,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAuB,EACtE,KAAK,GAAE,MAAU,EAAE,IAAI,UAAQ,EAAE,gBAAgB,GAAE,MAAY,EAC/D,SAAS,GAAE,MAAW,EAAE,IAAI,GAAE,OAAe,EAAE,SAAS,GAAE,SAA6B,EAAE,OAAO,GAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,EAAE,OAAO,GAAE,MAAU,EAAE,QAAQ,GAAE,EAAE,CAAC,QAAQ,GAAG,IAAW,EAAE,iBAAiB,GAAE,MAAM,EAAO,EAAE,kBAAkB,GAAE,MAAM,GAAG,IAAW,GAAG,MAAM,CA0DlR"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { monomerToShort } from './macromolecule';
|
|
2
2
|
const undefinedColor = 'rgb(100,100,100)';
|
|
3
3
|
const grayColor = '#808080';
|
|
4
4
|
const blackColor = 'rgb(0,0,0)';
|
|
5
|
-
const monomerToShortFunction =
|
|
5
|
+
const monomerToShortFunction = monomerToShort;
|
|
6
6
|
export var DrawStyle;
|
|
7
7
|
(function (DrawStyle) {
|
|
8
8
|
DrawStyle["MSA"] = "MSA";
|
|
@@ -86,4 +86,4 @@ export function printLeftOrCentered(x, y, w, h, g, s, color = undefinedColor, pi
|
|
|
86
86
|
return x + dx + maxColorTextSize;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1yZW5kZXJlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNlbGwtcmVuZGVyZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE1BQU0sY0FBYyxHQUFHLGtCQUFrQixDQUFDO0FBQzFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUM1QixNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUM7QUFDaEMsTUFBTSxzQkFBc0IsR0FBMEQsY0FBYyxDQUFDO0FBRXJHLE1BQU0sQ0FBTixJQUFZLFNBR1g7QUFIRCxXQUFZLFNBQVM7SUFDbkIsd0JBQVcsQ0FBQTtJQUNYLGdDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQzFDLENBQTJCLEVBQUUsQ0FBUyxFQUFFLFFBQWdCLGNBQWMsRUFDdEUsUUFBZ0IsQ0FBQyxFQUFFLElBQUksR0FBRyxLQUFLLEVBQUUsbUJBQTJCLEdBQUcsRUFDL0QsWUFBb0IsRUFBRSxFQUFFLE9BQWdCLEtBQUssRUFBRSxZQUF1QixTQUFTLENBQUMsT0FBTyxFQUFFLFVBQXVDLEVBQUUsRUFBRSxVQUFrQixDQUFDLEVBQUUsV0FBK0IsSUFBSSxFQUFFLG9CQUE4QixFQUFFLEVBQUUscUJBQW9DLElBQUk7O0lBQ3hRLENBQUMsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO0lBQ3RCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyQyxJQUFJLFNBQVMs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U0FBUyxHQUFHLFNBQVMsQ0FBQztZQUN4QixDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ25GO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUU7UUFDeEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQztLQUU3RDtTQUFNO1FBQ0wsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLGdCQUFnQixDQUFDO0tBQ2xDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7bW9ub21lclRvU2hvcnR9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG5cbmNvbnN0IHVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuY29uc3QgZ3JheUNvbG9yID0gJyM4MDgwODAnO1xuY29uc3QgYmxhY2tDb2xvciA9ICdyZ2IoMCwwLDApJztcbmNvbnN0IG1vbm9tZXJUb1Nob3J0RnVuY3Rpb246IChhbWlubzogc3RyaW5nLCBtYXhMZW5ndGhPZk1vbm9tZXI6IG51bWJlcikgPT4gc3RyaW5nID0gbW9ub21lclRvU2hvcnQ7XG5cbmV4cG9ydCBlbnVtIERyYXdTdHlsZSB7XG4gIE1TQSA9ICdNU0EnLFxuICBjbGFzc2ljID0gJ2NsYXNzaWMnLFxufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBwcmludHMgYSBzdHJpbmcgYWxpZ25lZCB0byBsZWZ0IG9yIGNlbnRlcmVkLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB4IHggY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5IHkgY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB3IFdpZHRoLlxuICogQHBhcmFtIHtudW1iZXJ9IGggSGVpZ2h0LlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGcgQ2FudmFzIHJlbmRlcmluZyBjb250ZXh0LlxuICogQHBhcmFtIHtzdHJpbmd9IHMgU3RyaW5nIHRvIHByaW50LlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb2xvcj11bmRlZmluZWRDb2xvcl0gU3RyaW5nIGNvbG9yLlxuICogQHBhcmFtIHtudW1iZXJ9IFtwaXZvdD0wXSBQaXJ2b3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtsZWZ0PWZhbHNlXSBJcyBsZWZ0IGFsaWduZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gW3RyYW5zcGFyZW5jeVJhdGU9MC4wXSBUcmFuc3BhcmVuY3kgcmF0ZSB3aGVyZSAxLjAgaXMgZnVsbHkgdHJhbnNwYXJlbnRcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2VwYXJhdG9yPScnXSBJcyBzZXBhcmF0b3IgZm9yIHNlcXVlbmNlLlxuICogQHBhcmFtIHtib29sZWFufSBbbGFzdD1mYWxzZV0gSXMgY2hlY2tlciBpZiBlbGVtZW50IGxhc3Qgb3Igbm90LlxuICogQHBhcmFtIGRyYXdTdHlsZSBJcyBkcmF3IHN0eWxlLiBNU0EgLSBmb3IgbXVsdGljaGFyU2VxLCBjbGFzc2ljIC0gZm9yIG90aGVyIHNlcS5cbiAqIEBwYXJhbSBtYXhXb3JkIElzIGFycmF5IG9mIG1heCB3b3JkcyBmb3IgZWFjaCBsaW5lLlxuICogQHBhcmFtIHdvcmRJZHggSXMgaW5kZXggb2Ygd29yZCB3ZSBjdXJyZW50bHkgZHJhdy5cbiAqIEBwYXJhbSBncmlkQ2VsbCBJcyBncmlkIGNlbGwuXG4gKiBAcGFyYW0gcmVmZXJlbmNlU2VxdWVuY2UgSXMgcmVmZXJlbmNlIHNlcXVlbmNlIGZvciBkaWZmIG1vZGUuXG4gKiBAcGFyYW0gbWF4TGVuZ3RoT2ZNb25vbWVyIElzIG1heCBsZW5ndGggb2YgbW9ub21lci5cbiAqIEByZXR1cm4ge251bWJlcn0geCBjb29yZGluYXRlIHRvIHN0YXJ0IHByaW50aW5nIGF0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRMZWZ0T3JDZW50ZXJlZChcbiAgeDogbnVtYmVyLCB5OiBudW1iZXIsIHc6IG51bWJlciwgaDogbnVtYmVyLFxuICBnOiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQsIHM6IHN0cmluZywgY29sb3I6IHN0cmluZyA9IHVuZGVmaW5lZENvbG9yLFxuICBwaXZvdDogbnVtYmVyID0gMCwgbGVmdCA9IGZhbHNlLCB0cmFuc3BhcmVuY3lSYXRlOiBudW1iZXIgPSAxLjAsXG4gIHNlcGFyYXRvcjogc3RyaW5nID0gJycsIGxhc3Q6IGJvb2xlYW4gPSBmYWxzZSwgZHJhd1N0eWxlOiBEcmF3U3R5bGUgPSBEcmF3U3R5bGUuY2xhc3NpYywgbWF4V29yZDogeyBbaW5kZXg6IHN0cmluZ106IG51bWJlciB9ID0ge30sIHdvcmRJZHg6IG51bWJlciA9IDAsIGdyaWRDZWxsOiBERy5HcmlkQ2VsbCB8IG51bGwgPSBudWxsLCByZWZlcmVuY2VTZXF1ZW5jZTogc3RyaW5nW10gPSBbXSwgbWF4TGVuZ3RoT2ZNb25vbWVyOiBudW1iZXIgfCBudWxsID0gbnVsbCk6IG51bWJlciB7XG4gIGcudGV4dEFsaWduID0gJ3N0YXJ0JztcbiAgbGV0IGNvbG9yUGFydCA9IHMuc3Vic3RyaW5nKDApO1xuICBsZXQgZ3JheVBhcnQgPSBsYXN0ID8gJycgOiBzZXBhcmF0b3I7XG4gIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICBncmF5UGFydCA9ICcnO1xuICB9XG4gIGxldCBjb2xvckNvZGUgPSB0cnVlO1xuICBsZXQgY29tcGFyZVdpdGhDdXJyZW50ID0gdHJ1ZTtcbiAgaWYgKGdyaWRDZWxsICE9IG51bGwpIHtcbiAgICBjb2xvckNvZGUgPSAoZ3JpZENlbGwuY2VsbC5jb2x1bW4/LnRlbXBbJ2NvbG9yLWNvZGUnXSAhPSBudWxsKSA/IGdyaWRDZWxsLmNlbGwuY29sdW1uLnRlbXBbJ2NvbG9yLWNvZGUnXSA6IHRydWU7XG4gICAgY29tcGFyZVdpdGhDdXJyZW50ID0gKGdyaWRDZWxsLmNlbGwuY29sdW1uPy50ZW1wWydjb21wYXJlLXdpdGgtY3VycmVudCddICE9IG51bGwpID8gZ3JpZENlbGwuY2VsbC5jb2x1bW4udGVtcFsnY29tcGFyZS13aXRoLWN1cnJlbnQnXSA6IHRydWU7XG4gIH1cbiAgY29uc3QgY3VycmVudE1vbm9tZXI6IHN0cmluZyA9IHJlZmVyZW5jZVNlcXVlbmNlW3dvcmRJZHhdO1xuICBpZiAoY29tcGFyZVdpdGhDdXJyZW50ICYmIChyZWZlcmVuY2VTZXF1ZW5jZS5sZW5ndGggPiAwKSkge1xuICAgIHRyYW5zcGFyZW5jeVJhdGUgPSAoY29sb3JQYXJ0ID09IGN1cnJlbnRNb25vbWVyKSA/IDAuMyA6IHRyYW5zcGFyZW5jeVJhdGU7XG4gIH1cbiAgaWYgKG1heExlbmd0aE9mTW9ub21lciAhPSBudWxsKSB7XG4gICAgY29sb3JQYXJ0ID0gbW9ub21lclRvU2hvcnRGdW5jdGlvbihjb2xvclBhcnQsIG1heExlbmd0aE9mTW9ub21lcik7XG4gIH1cblxuXG4gIGxldCB0ZXh0U2l6ZTogYW55ID0gZy5tZWFzdXJlVGV4dChjb2xvclBhcnQgKyBncmF5UGFydCk7XG4gIGNvbnN0IGluZGVudCA9IDU7XG5cbiAgbGV0IG1heENvbG9yVGV4dFNpemUgPSBnLm1lYXN1cmVUZXh0KGNvbG9yUGFydCkud2lkdGg7XG4gIGxldCBjb2xvclRleHRTaXplID0gZy5tZWFzdXJlVGV4dChjb2xvclBhcnQpLndpZHRoO1xuICBjb25zdCBkeSA9ICh0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hBc2NlbnQgKyB0ZXh0U2l6ZS5mb250Qm91bmRpbmdCb3hEZXNjZW50KSAvIDI7XG4gIHRleHRTaXplID0gdGV4dFNpemUud2lkdGg7XG4gIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICBtYXhDb2xvclRleHRTaXplID0gbWF4V29yZFt3b3JkSWR4XTtcbiAgICB0ZXh0U2l6ZSA9IG1heFdvcmRbd29yZElkeF07XG4gIH1cblxuICBmdW5jdGlvbiBkcmF3KGR4MTogbnVtYmVyLCBkeDI6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGRyYXdDb2xvciA9IGNvbG9yQ29kZSA/IGNvbG9yIDogYmxhY2tDb2xvcjtcbiAgICBnLmZpbGxTdHlsZSA9IGRyYXdDb2xvcjtcbiAgICBnLmdsb2JhbEFscGhhID0gdHJhbnNwYXJlbmN5UmF0ZTtcbiAgICBpZiAoZHJhd1N0eWxlID09PSBEcmF3U3R5bGUuY2xhc3NpYykge1xuICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEsIHkgKyBkeSk7XG4gICAgICBnLmZpbGxTdHlsZSA9IGdyYXlDb2xvcjtcbiAgICAgIGcuZmlsbFRleHQoZ3JheVBhcnQsIHggKyBkeDIsIHkgKyBkeSk7XG4gICAgfVxuICAgIGlmIChkcmF3U3R5bGUgPT09IERyYXdTdHlsZS5NU0EpIHtcbiAgICAgIGcuZmlsbFN0eWxlID0gZHJhd0NvbG9yO1xuICAgICAgZy5maWxsVGV4dChjb2xvclBhcnQsIHggKyBkeDEgKyAoKG1heFdvcmRbd29yZElkeF0gLSBjb2xvclRleHRTaXplKSAvIDIpLCB5ICsgZHkpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChsZWZ0IHx8IHRleHRTaXplID4gdykge1xuICAgIGRyYXcoaW5kZW50LCBpbmRlbnQgKyBtYXhDb2xvclRleHRTaXplKTtcbiAgICByZXR1cm4geCArIG1heENvbG9yVGV4dFNpemUgKyBnLm1lYXN1cmVUZXh0KGdyYXlQYXJ0KS53aWR0aDtcblxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGR4ID0gKHcgLSB0ZXh0U2l6ZSkgLyAyO1xuICAgIGRyYXcoZHgsIGR4ICsgbWF4Q29sb3JUZXh0U2l6ZSk7XG4gICAgcmV0dXJuIHggKyBkeCArIG1heENvbG9yVGV4dFNpemU7XG4gIH1cbn1cblxuIl19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
/** Stats of sequences with specified splitter func, returns { freq, sameLength }.
|
|
3
|
+
* @param {DG.Column} seqCol
|
|
4
|
+
* @param {number} minLength
|
|
5
|
+
* @param {SplitterFunc} splitter
|
|
6
|
+
* @return { SeqColStats }, sameLength: boolean } stats of column sequences
|
|
7
|
+
*/
|
|
8
|
+
import { SeqPalette } from '../seq-palettes';
|
|
9
|
+
import * as bio from '../../index';
|
|
10
|
+
/** enum type to simplify setting "user-friendly" notation if necessary */
|
|
11
|
+
export declare const enum NOTATION {
|
|
12
|
+
FASTA = "fasta",
|
|
13
|
+
SEPARATOR = "separator",
|
|
14
|
+
HELM = "helm"
|
|
15
|
+
}
|
|
16
|
+
export declare const enum ALPHABET {
|
|
17
|
+
DNA = "DNA",
|
|
18
|
+
RNA = "RNA",
|
|
19
|
+
PT = "PT",
|
|
20
|
+
UN = "UN"
|
|
21
|
+
}
|
|
22
|
+
export declare const enum TAGS {
|
|
23
|
+
aligned = "aligned",
|
|
24
|
+
alphabet = "alphabet",
|
|
25
|
+
alphabetSize = ".alphabetSize",
|
|
26
|
+
alphabetIsMultichar = ".alphabetIsMultichar",
|
|
27
|
+
separator = "separator"
|
|
28
|
+
}
|
|
29
|
+
export declare type SeqColStats = {
|
|
30
|
+
freq: MonomerFreqs;
|
|
31
|
+
sameLength: boolean;
|
|
32
|
+
};
|
|
33
|
+
export declare type SplitterFunc = (seq: string) => string[];
|
|
34
|
+
export declare type MonomerFreqs = {
|
|
35
|
+
[m: string]: number;
|
|
36
|
+
};
|
|
37
|
+
export declare function getStats(seqCol: DG.Column, minLength: number, splitter: SplitterFunc): SeqColStats;
|
|
38
|
+
export declare const monomerRe: RegExp;
|
|
39
|
+
/** Split sequence for single character monomers, square brackets multichar monomer names or gap symbol.
|
|
40
|
+
* @param {any} seq object with sequence
|
|
41
|
+
* @return {string[]} array of monomers
|
|
42
|
+
*/
|
|
43
|
+
export declare function splitterAsFasta(seq: any): string[];
|
|
44
|
+
/** Gets method to split sequence by separator
|
|
45
|
+
* @param {string} separator
|
|
46
|
+
* @param limit
|
|
47
|
+
* @return {SplitterFunc}
|
|
48
|
+
*/
|
|
49
|
+
export declare function getSplitterWithSeparator(separator: string, limit?: number | undefined): SplitterFunc;
|
|
50
|
+
/** Splits Helm string to monomers, but does not replace monomer names to other notation (e.g. for RNA).
|
|
51
|
+
* Only for linear polymers, does not split RNA for ribose and phosphate monomers.
|
|
52
|
+
* @param {string} seq Source string of HELM notation
|
|
53
|
+
* @return {string[]}
|
|
54
|
+
*/
|
|
55
|
+
export declare function splitterAsHelm(seq: any): string[];
|
|
56
|
+
/** Get splitter method to split sequences to monomers
|
|
57
|
+
* @param {string} units
|
|
58
|
+
* @param {string} separator
|
|
59
|
+
* @param limit
|
|
60
|
+
* @return {SplitterFunc}
|
|
61
|
+
*/
|
|
62
|
+
export declare function getSplitter(units: string, separator: string, limit?: number | undefined): SplitterFunc;
|
|
63
|
+
/** Generate splitter function for sequence column
|
|
64
|
+
* @param {DG.Column} col
|
|
65
|
+
* @return {SplitterFunc} Splitter function
|
|
66
|
+
*/
|
|
67
|
+
export declare function getSplitterForColumn(col: DG.Column): SplitterFunc;
|
|
68
|
+
/** Convert long monomer names to short ones */
|
|
69
|
+
export declare function monomerToShort(amino: string, maxLengthOfMonomer: number): string;
|
|
70
|
+
/** Calculate similarity in current sequence and alphabet.
|
|
71
|
+
* @param {MonomerFreqs} freq
|
|
72
|
+
* @param {Set<string>} alphabet
|
|
73
|
+
* @param {string} gapSymbol
|
|
74
|
+
* @return {number} Cosine similarity
|
|
75
|
+
*/
|
|
76
|
+
export declare function getAlphabetSimilarity(freq: MonomerFreqs, alphabet: Set<string>, gapSymbol?: string): number;
|
|
77
|
+
export declare function detectAlphabet(stats: SeqColStats): string;
|
|
78
|
+
/** Selects a suitable palette based on column data
|
|
79
|
+
* @param {DG.Column} seqCol Column to look for a palette
|
|
80
|
+
* @param {number} minLength minimum length of sequence to detect palette (empty strings are allowed)
|
|
81
|
+
* @return {SeqPalette} Palette corresponding to the alphabet of the sequences in the column
|
|
82
|
+
*/
|
|
83
|
+
export declare function pickUpPalette(seqCol: DG.Column, minLength?: number): SeqPalette;
|
|
84
|
+
export declare function getPaletteByType(paletteType: string): bio.SeqPalette;
|
|
85
|
+
export declare function pickUpSeqCol(df: DG.DataFrame): DG.Column | null;
|
|
86
|
+
//# sourceMappingURL=macromolecule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"macromolecule.d.ts","sourceRoot":"","sources":["macromolecule.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAKtC;;;;;GAKG;AACH,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAM3C,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,0EAA0E;AAC1E,0BAAkB,QAAQ;IACxB,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED,0BAAkB,QAAQ;IACxB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,EAAE,OAAO;CACV;AAED,0BAAkB,IAAI;IACpB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,YAAY,kBAAkB;IAC9B,mBAAmB,yBAAyB;IAC5C,SAAS,cAAc;CACxB;AAED,oBAAY,WAAW,GAAG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAA;AACrE,oBAAY,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;AACrD,oBAAY,YAAY,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAEnD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,WAAW,CAsBlG;AAED,eAAO,MAAM,SAAS,EAAE,MAA8B,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAYlD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,SAAqB,GAAG,YAAY,CAI/G;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,CAgBjD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,GAAG,SAAqB,GAAG,YAAY,CAWjH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,YAAY,CAOjE;AAID,+CAA+C;AAC/C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,CAchH;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAazD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,UAAU,CAYlF;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,UAAU,CAYpE;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAS/D"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import { Vector } from '@datagrok-libraries/utils/src/type-declarations';
|
|
3
|
+
import { vectorLength, vectorDotProduct } from '@datagrok-libraries/utils/src/vector-operations';
|
|
4
|
+
import wu from 'wu';
|
|
5
|
+
import { UnitsHandler } from '../utils/units-handler';
|
|
6
|
+
import * as bio from '../../index';
|
|
7
|
+
;
|
|
8
|
+
export function getStats(seqCol, minLength, splitter) {
|
|
9
|
+
const freq = {};
|
|
10
|
+
let sameLength = true;
|
|
11
|
+
let firstLength = null;
|
|
12
|
+
for (const seq of seqCol.categories) {
|
|
13
|
+
const mSeq = splitter(seq);
|
|
14
|
+
if (firstLength == null)
|
|
15
|
+
firstLength = mSeq.length;
|
|
16
|
+
else if (mSeq.length !== firstLength)
|
|
17
|
+
sameLength = false;
|
|
18
|
+
if (mSeq.length > minLength) {
|
|
19
|
+
for (const m of mSeq) {
|
|
20
|
+
if (!(m in freq))
|
|
21
|
+
freq[m] = 0;
|
|
22
|
+
freq[m] += 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return { freq: freq, sameLength: sameLength };
|
|
27
|
+
}
|
|
28
|
+
export const monomerRe = /\[(\w+)\]|(\w)|(-)/g;
|
|
29
|
+
/** Split sequence for single character monomers, square brackets multichar monomer names or gap symbol.
|
|
30
|
+
* @param {any} seq object with sequence
|
|
31
|
+
* @return {string[]} array of monomers
|
|
32
|
+
*/
|
|
33
|
+
export function splitterAsFasta(seq) {
|
|
34
|
+
return wu(seq.toString().matchAll(monomerRe))
|
|
35
|
+
.map((ma) => {
|
|
36
|
+
let mRes;
|
|
37
|
+
const m = ma[0];
|
|
38
|
+
if (m.length > 1) {
|
|
39
|
+
mRes = ma[1];
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
mRes = m;
|
|
43
|
+
}
|
|
44
|
+
return mRes;
|
|
45
|
+
}).toArray();
|
|
46
|
+
}
|
|
47
|
+
/** Gets method to split sequence by separator
|
|
48
|
+
* @param {string} separator
|
|
49
|
+
* @param limit
|
|
50
|
+
* @return {SplitterFunc}
|
|
51
|
+
*/
|
|
52
|
+
export function getSplitterWithSeparator(separator, limit = undefined) {
|
|
53
|
+
return (seq) => {
|
|
54
|
+
return seq.split(separator, limit);
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const helmRe = /(PEPTIDE1|DNA1|RNA1)\{([^}]+)}/g;
|
|
58
|
+
const helmPp1Re = /\[([^\[\]]+)]/g;
|
|
59
|
+
/** Splits Helm string to monomers, but does not replace monomer names to other notation (e.g. for RNA).
|
|
60
|
+
* Only for linear polymers, does not split RNA for ribose and phosphate monomers.
|
|
61
|
+
* @param {string} seq Source string of HELM notation
|
|
62
|
+
* @return {string[]}
|
|
63
|
+
*/
|
|
64
|
+
export function splitterAsHelm(seq) {
|
|
65
|
+
helmRe.lastIndex = 0;
|
|
66
|
+
const ea = helmRe.exec(seq.toString());
|
|
67
|
+
const inSeq = ea ? ea[2] : null;
|
|
68
|
+
const mmPostProcess = (mm) => {
|
|
69
|
+
helmPp1Re.lastIndex = 0;
|
|
70
|
+
const pp1M = helmPp1Re.exec(mm);
|
|
71
|
+
if (pp1M && pp1M.length >= 2)
|
|
72
|
+
return pp1M[1];
|
|
73
|
+
else
|
|
74
|
+
return mm;
|
|
75
|
+
};
|
|
76
|
+
const mmList = inSeq ? inSeq.split('.') : [];
|
|
77
|
+
return mmList.map(mmPostProcess);
|
|
78
|
+
}
|
|
79
|
+
/** Get splitter method to split sequences to monomers
|
|
80
|
+
* @param {string} units
|
|
81
|
+
* @param {string} separator
|
|
82
|
+
* @param limit
|
|
83
|
+
* @return {SplitterFunc}
|
|
84
|
+
*/
|
|
85
|
+
export function getSplitter(units, separator, limit = undefined) {
|
|
86
|
+
if (units.toLowerCase().startsWith("fasta" /* NOTATION.FASTA */))
|
|
87
|
+
return splitterAsFasta;
|
|
88
|
+
else if (units.toLowerCase().startsWith("separator" /* NOTATION.SEPARATOR */))
|
|
89
|
+
return getSplitterWithSeparator(separator, limit);
|
|
90
|
+
else if (units.toLowerCase().startsWith("helm" /* NOTATION.HELM */))
|
|
91
|
+
return splitterAsHelm;
|
|
92
|
+
else
|
|
93
|
+
throw new Error(`Unexpected units ${units} .`);
|
|
94
|
+
// TODO: Splitter for HELM
|
|
95
|
+
}
|
|
96
|
+
/** Generate splitter function for sequence column
|
|
97
|
+
* @param {DG.Column} col
|
|
98
|
+
* @return {SplitterFunc} Splitter function
|
|
99
|
+
*/
|
|
100
|
+
export function getSplitterForColumn(col) {
|
|
101
|
+
if (col.semType !== DG.SEMTYPE.MACROMOLECULE)
|
|
102
|
+
throw new Error(`Get splitter for semType "${DG.SEMTYPE.MACROMOLECULE}" only.`);
|
|
103
|
+
const units = col.getTag(DG.TAGS.UNITS);
|
|
104
|
+
const separator = col.getTag("separator" /* TAGS.separator */);
|
|
105
|
+
return getSplitter(units, separator);
|
|
106
|
+
}
|
|
107
|
+
const longMonomerPartRe = /(\w+)/g;
|
|
108
|
+
/** Convert long monomer names to short ones */
|
|
109
|
+
export function monomerToShort(amino, maxLengthOfMonomer) {
|
|
110
|
+
var _a, _b;
|
|
111
|
+
const shortAminoMatch = amino.match(longMonomerPartRe);
|
|
112
|
+
const needAddDots = amino.length > maxLengthOfMonomer || ((_a = shortAminoMatch === null || shortAminoMatch === void 0 ? void 0 : shortAminoMatch.length) !== null && _a !== void 0 ? _a : 0) > 1;
|
|
113
|
+
const shortAmino = (_b = shortAminoMatch === null || shortAminoMatch === void 0 ? void 0 : shortAminoMatch[0]) !== null && _b !== void 0 ? _b : ' ';
|
|
114
|
+
return !needAddDots ? shortAmino : shortAmino.substring(0, maxLengthOfMonomer) + '…';
|
|
115
|
+
}
|
|
116
|
+
/** Calculate similarity in current sequence and alphabet.
|
|
117
|
+
* @param {MonomerFreqs} freq
|
|
118
|
+
* @param {Set<string>} alphabet
|
|
119
|
+
* @param {string} gapSymbol
|
|
120
|
+
* @return {number} Cosine similarity
|
|
121
|
+
*/
|
|
122
|
+
export function getAlphabetSimilarity(freq, alphabet, gapSymbol = '-') {
|
|
123
|
+
const keys = new Set([...new Set(Object.keys(freq)), ...alphabet]);
|
|
124
|
+
keys.delete(gapSymbol);
|
|
125
|
+
const freqA = [];
|
|
126
|
+
const alphabetA = [];
|
|
127
|
+
for (const m of keys) {
|
|
128
|
+
freqA.push(m in freq ? freq[m] : 0);
|
|
129
|
+
alphabetA.push(alphabet.has(m) ? 1 : 0);
|
|
130
|
+
}
|
|
131
|
+
/* There were a few ideas: chi-squared, pearson correlation (variance?), scalar product */
|
|
132
|
+
const freqV = new Vector(freqA);
|
|
133
|
+
const alphabetV = new Vector(alphabetA);
|
|
134
|
+
return vectorDotProduct(freqV, alphabetV) / (vectorLength(freqV) * vectorLength(alphabetV));
|
|
135
|
+
}
|
|
136
|
+
export function detectAlphabet(stats) {
|
|
137
|
+
const alphabetCandidates = [
|
|
138
|
+
["PT" /* ALPHABET.PT */, UnitsHandler.PeptideFastaAlphabet],
|
|
139
|
+
["DNA" /* ALPHABET.DNA */, UnitsHandler.DnaFastaAlphabet],
|
|
140
|
+
["RNA" /* ALPHABET.RNA */, UnitsHandler.RnaFastaAlphabet],
|
|
141
|
+
];
|
|
142
|
+
// Calculate likelihoods for alphabet_candidates
|
|
143
|
+
const alphabetCandidatesSim = alphabetCandidates.map((c) => getAlphabetSimilarity(stats.freq, c[1]));
|
|
144
|
+
const maxCos = Math.max(...alphabetCandidatesSim);
|
|
145
|
+
const alphabet = maxCos > 0.65 ? alphabetCandidates[alphabetCandidatesSim.indexOf(maxCos)][0] : 'UN';
|
|
146
|
+
return alphabet;
|
|
147
|
+
}
|
|
148
|
+
/** Selects a suitable palette based on column data
|
|
149
|
+
* @param {DG.Column} seqCol Column to look for a palette
|
|
150
|
+
* @param {number} minLength minimum length of sequence to detect palette (empty strings are allowed)
|
|
151
|
+
* @return {SeqPalette} Palette corresponding to the alphabet of the sequences in the column
|
|
152
|
+
*/
|
|
153
|
+
export function pickUpPalette(seqCol, minLength = 5) {
|
|
154
|
+
let alphabet;
|
|
155
|
+
if (seqCol.semType == DG.SEMTYPE.MACROMOLECULE) {
|
|
156
|
+
const uh = new UnitsHandler(seqCol);
|
|
157
|
+
alphabet = uh.alphabet;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const stats = getStats(seqCol, minLength, splitterAsFasta);
|
|
161
|
+
alphabet = detectAlphabet(stats);
|
|
162
|
+
}
|
|
163
|
+
const res = getPaletteByType(alphabet);
|
|
164
|
+
return res;
|
|
165
|
+
}
|
|
166
|
+
export function getPaletteByType(paletteType) {
|
|
167
|
+
switch (paletteType) {
|
|
168
|
+
case 'PT':
|
|
169
|
+
return bio.AminoacidsPalettes.GrokGroups;
|
|
170
|
+
case 'NT':
|
|
171
|
+
case 'DNA':
|
|
172
|
+
case 'RNA':
|
|
173
|
+
return bio.NucleotidesPalettes.Chromatogram;
|
|
174
|
+
// other
|
|
175
|
+
default:
|
|
176
|
+
return bio.UnknownSeqPalettes.Color;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
export function pickUpSeqCol(df) {
|
|
180
|
+
var _a;
|
|
181
|
+
const semTypeColList = df.columns.bySemTypeAll(DG.SEMTYPE.MACROMOLECULE);
|
|
182
|
+
let resCol = (_a = semTypeColList.find((col) => {
|
|
183
|
+
const units = col.getTag(DG.TAGS.UNITS);
|
|
184
|
+
return units ? units.indexOf('MSA') !== -1 : false;
|
|
185
|
+
})) !== null && _a !== void 0 ? _a : null;
|
|
186
|
+
if (!resCol && semTypeColList.length > 0)
|
|
187
|
+
resCol = semTypeColList[0];
|
|
188
|
+
return resCol;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjcm9tb2xlY3VsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1hY3JvbW9sZWN1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saURBQWlELENBQUM7QUFDdkUsT0FBTyxFQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBWS9GLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUNwQixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFzQmxDLENBQUM7QUFNRixNQUFNLFVBQVUsUUFBUSxDQUFDLE1BQWlCLEVBQUUsU0FBaUIsRUFBRSxRQUFzQjtJQUNuRixNQUFNLElBQUksR0FBNEIsRUFBRSxDQUFDO0lBQ3pDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztJQUN0QixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFdkIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1FBQ25DLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQixJQUFJLFdBQVcsSUFBSSxJQUFJO1lBQ3JCLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ3ZCLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxXQUFXO1lBQ2xDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRTtZQUMzQixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztvQkFDZCxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLElBQUks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Q3JCLEtBQUssSUFBSTtZQUNQLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUMzQyxLQUFLLElBQUksQ0FBQztRQUNWLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDO1FBQzVDLFFBQVE7UUFDVjtZQUNFLE9BQU8sR0FBRyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztLQUNyQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEVBQWdCOztJQUMzQyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3pFLElBQUksTUFBTSxHQUFxQixNQUFBLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDLENBQUMsbUNBQUksSUFBSSxDQUFDO0lBQ1gsSUFBSSxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDdEMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtWZWN0b3J9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7dmVjdG9yTGVuZ3RoLCB2ZWN0b3JEb3RQcm9kdWN0fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5cbi8qKiBTdGF0cyBvZiBzZXF1ZW5jZXMgd2l0aCBzcGVjaWZpZWQgc3BsaXR0ZXIgZnVuYywgcmV0dXJucyB7IGZyZXEsIHNhbWVMZW5ndGggfS5cbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2xcbiAqIEBwYXJhbSB7bnVtYmVyfSBtaW5MZW5ndGhcbiAqIEBwYXJhbSB7U3BsaXR0ZXJGdW5jfSBzcGxpdHRlclxuICogQHJldHVybiB7IFNlcUNvbFN0YXRzIH0sIHNhbWVMZW5ndGg6IGJvb2xlYW4gfSBzdGF0cyBvZiBjb2x1bW4gc2VxdWVuY2VzXG4gKi9cbmltcG9ydCB7U2VxUGFsZXR0ZX0gZnJvbSAnLi4vc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7TnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXN9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcbmltcG9ydCB7VW5rbm93blNlcVBhbGV0dGVzfSBmcm9tICcuLi91bmtub3duJztcbmltcG9ydCB3dSBmcm9tICd3dSc7XG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi4vdXRpbHMvdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQgKiBhcyBiaW8gZnJvbSAnLi4vLi4vaW5kZXgnO1xuXG4vKiogZW51bSB0eXBlIHRvIHNpbXBsaWZ5IHNldHRpbmcgXCJ1c2VyLWZyaWVuZGx5XCIgbm90YXRpb24gaWYgbmVjZXNzYXJ5ICovXG5leHBvcnQgY29uc3QgZW51bSBOT1RBVElPTiB7XG4gIEZBU1RBID0gJ2Zhc3RhJyxcbiAgU0VQQVJBVE9SID0gJ3NlcGFyYXRvcicsXG4gIEhFTE0gPSAnaGVsbScsXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEFMUEhBQkVUIHtcbiAgRE5BID0gJ0ROQScsXG4gIFJOQSA9ICdSTkEnLFxuICBQVCA9ICdQVCcsXG4gIFVOID0gJ1VOJyxcbn1cblxuZXhwb3J0IGNvbnN0IGVudW0gVEFHUyB7XG4gIGFsaWduZWQgPSAnYWxpZ25lZCcsXG4gIGFscGhhYmV0ID0gJ2FscGhhYmV0JyxcbiAgYWxwaGFiZXRTaXplID0gJy5hbHBoYWJldFNpemUnLFxuICBhbHBoYWJldElzTXVsdGljaGFyID0gJy5hbHBoYWJldElzTXVsdGljaGFyJyxcbiAgc2VwYXJhdG9yID0gJ3NlcGFyYXRvcicsXG59O1xuXG5leHBvcnQgdHlwZSBTZXFDb2xTdGF0cyA9IHsgZnJlcTogTW9ub21lckZyZXFzLCBzYW1lTGVuZ3RoOiBib29sZWFuIH1cbmV4cG9ydCB0eXBlIFNwbGl0dGVyRnVuYyA9IChzZXE6IHN0cmluZykgPT4gc3RyaW5nW107XG5leHBvcnQgdHlwZSBNb25vbWVyRnJlcXMgPSB7IFttOiBzdHJpbmddOiBudW1iZXIgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRzKHNlcUNvbDogREcuQ29sdW1uLCBtaW5MZW5ndGg6IG51bWJlciwgc3BsaXR0ZXI6IFNwbGl0dGVyRnVuYyk6IFNlcUNvbFN0YXRzIHtcbiAgY29uc3QgZnJlcTogeyBbbTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgbGV0IHNhbWVMZW5ndGggPSB0cnVlO1xuICBsZXQgZmlyc3RMZW5ndGggPSBudWxsO1xuXG4gIGZvciAoY29uc3Qgc2VxIG9mIHNlcUNvbC5jYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgbVNlcSA9IHNwbGl0dGVyKHNlcSk7XG5cbiAgICBpZiAoZmlyc3RMZW5ndGggPT0gbnVsbClcbiAgICAgIGZpcnN0TGVuZ3RoID0gbVNlcS5sZW5ndGg7XG4gICAgZWxzZSBpZiAobVNlcS5sZW5ndGggIT09IGZpcnN0TGVuZ3RoKVxuICAgICAgc2FtZUxlbmd0aCA9IGZhbHNlO1xuXG4gICAgaWYgKG1TZXEubGVuZ3RoID4gbWluTGVuZ3RoKSB7XG4gICAgICBmb3IgKGNvbnN0IG0gb2YgbVNlcSkge1xuICAgICAgICBpZiAoIShtIGluIGZyZXEpKVxuICAgICAgICAgIGZyZXFbbV0gPSAwO1xuICAgICAgICBmcmVxW21dICs9IDE7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB7ZnJlcTogZnJlcSwgc2FtZUxlbmd0aDogc2FtZUxlbmd0aH07XG59XG5cbmV4cG9ydCBjb25zdCBtb25vbWVyUmU6IFJlZ0V4cCA9IC9cXFsoXFx3KylcXF18KFxcdyl8KC0pL2c7XG5cbi8qKiBTcGxpdCBzZXF1ZW5jZSBmb3Igc2luZ2xlIGNoYXJhY3RlciBtb25vbWVycywgc3F1YXJlIGJyYWNrZXRzIG11bHRpY2hhciBtb25vbWVyIG5hbWVzIG9yIGdhcCBzeW1ib2wuXG4gKiBAcGFyYW0ge2FueX0gc2VxIG9iamVjdCB3aXRoIHNlcXVlbmNlXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gYXJyYXkgb2YgbW9ub21lcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0dGVyQXNGYXN0YShzZXE6IGFueSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHd1PFJlZ0V4cE1hdGNoQXJyYXk+KHNlcS50b1N0cmluZygpLm1hdGNoQWxsKG1vbm9tZXJSZSkpXG4gICAgLm1hcCgobWE6IFJlZ0V4cE1hdGNoQXJyYXkpID0+IHtcbiAgICAgIGxldCBtUmVzOiBzdHJpbmc7XG4gICAgICBjb25zdCBtOiBzdHJpbmcgPSBtYVswXTtcbiAgICAgIGlmIChtLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgbVJlcyA9IG1hWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbVJlcyA9IG07XG4gICAgICB9XG4gICAgICByZXR1cm4gbVJlcztcbiAgICB9KS50b0FycmF5KCk7XG59XG5cbi8qKiBHZXRzIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZSBieSBzZXBhcmF0b3JcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZXBhcmF0b3JcbiAqIEBwYXJhbSBsaW1pdFxuICogQHJldHVybiB7U3BsaXR0ZXJGdW5jfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3BsaXR0ZXJXaXRoU2VwYXJhdG9yKHNlcGFyYXRvcjogc3RyaW5nLCBsaW1pdDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogU3BsaXR0ZXJGdW5jIHtcbiAgcmV0dXJuIChzZXE6IHN0cmluZykgPT4ge1xuICAgIHJldHVybiBzZXEuc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCk7XG4gIH07XG59XG5cbmNvbnN0IGhlbG1SZTogUmVnRXhwID0gLyhQRVBUSURFMXxETkExfFJOQTEpXFx7KFtefV0rKX0vZztcbmNvbnN0IGhlbG1QcDFSZTogUmVnRXhwID0gL1xcWyhbXlxcW1xcXV0rKV0vZztcblxuXG4vKiogU3BsaXRzIEhlbG0gc3RyaW5nIHRvIG1vbm9tZXJzLCBidXQgZG9lcyBub3QgcmVwbGFjZSBtb25vbWVyIG5hbWVzIHRvIG90aGVyIG5vdGF0aW9uIChlLmcuIGZvciBSTkEpLlxuICogT25seSBmb3IgbGluZWFyIHBvbHltZXJzLCBkb2VzIG5vdCBzcGxpdCBSTkEgZm9yIHJpYm9zZSBhbmQgcGhvc3BoYXRlIG1vbm9tZXJzLlxuICogQHBhcmFtIHtzdHJpbmd9IHNlcSBTb3VyY2Ugc3RyaW5nIG9mIEhFTE0gbm90YXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ1tdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXR0ZXJBc0hlbG0oc2VxOiBhbnkpOiBzdHJpbmdbXSB7XG4gIGhlbG1SZS5sYXN0SW5kZXggPSAwO1xuICBjb25zdCBlYTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbCA9IGhlbG1SZS5leGVjKHNlcS50b1N0cmluZygpKTtcbiAgY29uc3QgaW5TZXE6IHN0cmluZyB8IG51bGwgPSBlYSA/IGVhWzJdIDogbnVsbDtcblxuICBjb25zdCBtbVBvc3RQcm9jZXNzID0gKG1tOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGhlbG1QcDFSZS5sYXN0SW5kZXggPSAwO1xuICAgIGNvbnN0IHBwMU0gPSBoZWxtUHAxUmUuZXhlYyhtbSk7XG4gICAgaWYgKHBwMU0gJiYgcHAxTS5sZW5ndGggPj0gMilcbiAgICAgIHJldHVybiBwcDFNWzFdO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBtbTtcbiAgfTtcblxuICBjb25zdCBtbUxpc3Q6IHN0cmluZ1tdID0gaW5TZXEgPyBpblNlcS5zcGxpdCgnLicpIDogW107XG4gIHJldHVybiBtbUxpc3QubWFwKG1tUG9zdFByb2Nlc3MpO1xufVxuXG4vKiogR2V0IHNwbGl0dGVyIG1ldGhvZCB0byBzcGxpdCBzZXF1ZW5jZXMgdG8gbW9ub21lcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSB1bml0c1xuICogQHBhcmFtIHtzdHJpbmd9IHNlcGFyYXRvclxuICogQHBhcmFtIGxpbWl0XG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlcih1bml0czogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZywgbGltaXQ6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IFNwbGl0dGVyRnVuYyB7XG4gIGlmICh1bml0cy50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoTk9UQVRJT04uRkFTVEEpKVxuICAgIHJldHVybiBzcGxpdHRlckFzRmFzdGE7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5TRVBBUkFUT1IpKVxuICAgIHJldHVybiBnZXRTcGxpdHRlcldpdGhTZXBhcmF0b3Ioc2VwYXJhdG9yLCBsaW1pdCk7XG4gIGVsc2UgaWYgKHVuaXRzLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChOT1RBVElPTi5IRUxNKSlcbiAgICByZXR1cm4gc3BsaXR0ZXJBc0hlbG07XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdW5pdHMgJHt1bml0c30gLmApO1xuXG4gIC8vIFRPRE86IFNwbGl0dGVyIGZvciBIRUxNXG59XG5cbi8qKiBHZW5lcmF0ZSBzcGxpdHRlciBmdW5jdGlvbiBmb3Igc2VxdWVuY2UgY29sdW1uXG4gKiBAcGFyYW0ge0RHLkNvbHVtbn0gY29sXG4gKiBAcmV0dXJuIHtTcGxpdHRlckZ1bmN9IFNwbGl0dGVyIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTcGxpdHRlckZvckNvbHVtbihjb2w6IERHLkNvbHVtbik6IFNwbGl0dGVyRnVuYyB7XG4gIGlmIChjb2wuc2VtVHlwZSAhPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKVxuICAgIHRocm93IG5ldyBFcnJvcihgR2V0IHNwbGl0dGVyIGZvciBzZW1UeXBlIFwiJHtERy5TRU1UWVBFLk1BQ1JPTU9MRUNVTEV9XCIgb25seS5gKTtcblxuICBjb25zdCB1bml0cyA9IGNvbC5nZXRUYWcoREcuVEFHUy5VTklUUyk7XG4gIGNvbnN0IHNlcGFyYXRvciA9IGNvbC5nZXRUYWcoVEFHUy5zZXBhcmF0b3IpO1xuICByZXR1cm4gZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcGFyYXRvcik7XG59XG5cbmNvbnN0IGxvbmdNb25vbWVyUGFydFJlOiBSZWdFeHAgPSAvKFxcdyspL2c7XG5cbi8qKiBDb252ZXJ0IGxvbmcgbW9ub21lciBuYW1lcyB0byBzaG9ydCBvbmVzICovXG5leHBvcnQgZnVuY3Rpb24gbW9ub21lclRvU2hvcnQoYW1pbm86IHN0cmluZywgbWF4TGVuZ3RoT2ZNb25vbWVyOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBzaG9ydEFtaW5vTWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXkgfCBudWxsID0gYW1pbm8ubWF0Y2gobG9uZ01vbm9tZXJQYXJ0UmUpO1xuICBjb25zdCBuZWVkQWRkRG90czogYm9vbGVhbiA9IGFtaW5vLmxlbmd0aCA+IG1heExlbmd0aE9mTW9ub21lciB8fCAoc2hvcnRBbWlub01hdGNoPy5sZW5ndGggPz8gMCkgPiAxO1xuICBjb25zdCBzaG9ydEFtaW5vID0gc2hvcnRBbWlub01hdGNoPy5bMF0gPz8gJyAnO1xuICByZXR1cm4gIW5lZWRBZGREb3RzID8gc2hvcnRBbWlubyA6IHNob3J0QW1pbm8uc3Vic3RyaW5nKDAsIG1heExlbmd0aE9mTW9ub21lcikgKyAn4oCmJztcbn1cblxuLyoqIENhbGN1bGF0ZSBzaW1pbGFyaXR5IGluIGN1cnJlbnQgc2VxdWVuY2UgYW5kIGFscGhhYmV0LlxuICogQHBhcmFtIHtNb25vbWVyRnJlcXN9IGZyZXFcbiAqIEBwYXJhbSB7U2V0PHN0cmluZz59IGFscGhhYmV0XG4gKiBAcGFyYW0ge3N0cmluZ30gZ2FwU3ltYm9sXG4gKiBAcmV0dXJuIHtudW1iZXJ9IENvc2luZSBzaW1pbGFyaXR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbHBoYWJldFNpbWlsYXJpdHkoZnJlcTogTW9ub21lckZyZXFzLCBhbHBoYWJldDogU2V0PHN0cmluZz4sIGdhcFN5bWJvbDogc3RyaW5nID0gJy0nKTogbnVtYmVyIHtcbiAgY29uc3Qga2V5cyA9IG5ldyBTZXQ8c3RyaW5nPihbLi4ubmV3IFNldChPYmplY3Qua2V5cyhmcmVxKSksIC4uLmFscGhhYmV0XSk7XG4gIGtleXMuZGVsZXRlKGdhcFN5bWJvbCk7XG5cbiAgY29uc3QgZnJlcUE6IG51bWJlcltdID0gW107XG4gIGNvbnN0IGFscGhhYmV0QTogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBtIG9mIGtleXMpIHtcbiAgICBmcmVxQS5wdXNoKG0gaW4gZnJlcSA/IGZyZXFbbV0gOiAwKTtcbiAgICBhbHBoYWJldEEucHVzaChhbHBoYWJldC5oYXMobSkgPyAxIDogMCk7XG4gIH1cbiAgLyogVGhlcmUgd2VyZSBhIGZldyBpZGVhczogY2hpLXNxdWFyZWQsIHBlYXJzb24gY29ycmVsYXRpb24gKHZhcmlhbmNlPyksIHNjYWxhciBwcm9kdWN0ICovXG4gIGNvbnN0IGZyZXFWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGZyZXFBKTtcbiAgY29uc3QgYWxwaGFiZXRWOiBWZWN0b3IgPSBuZXcgVmVjdG9yKGFscGhhYmV0QSk7XG4gIHJldHVybiB2ZWN0b3JEb3RQcm9kdWN0KGZyZXFWLCBhbHBoYWJldFYpIC8gKHZlY3Rvckxlbmd0aChmcmVxVikgKiB2ZWN0b3JMZW5ndGgoYWxwaGFiZXRWKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RBbHBoYWJldChzdGF0czogU2VxQ29sU3RhdHMpOiBzdHJpbmcge1xuICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXM6IFtzdHJpbmcsIFNldDxzdHJpbmc+XVtdID0gW1xuICAgIFtBTFBIQUJFVC5QVCwgVW5pdHNIYW5kbGVyLlBlcHRpZGVGYXN0YUFscGhhYmV0XSxcbiAgICBbQUxQSEFCRVQuRE5BLCBVbml0c0hhbmRsZXIuRG5hRmFzdGFBbHBoYWJldF0sXG4gICAgW0FMUEhBQkVULlJOQSwgVW5pdHNIYW5kbGVyLlJuYUZhc3RhQWxwaGFiZXRdLFxuICBdO1xuXG4gIC8vIENhbGN1bGF0ZSBsaWtlbGlob29kcyBmb3IgYWxwaGFiZXRfY2FuZGlkYXRlc1xuICBjb25zdCBhbHBoYWJldENhbmRpZGF0ZXNTaW06IG51bWJlcltdID0gYWxwaGFiZXRDYW5kaWRhdGVzLm1hcChcbiAgICAoYykgPT4gZ2V0QWxwaGFiZXRTaW1pbGFyaXR5KHN0YXRzLmZyZXEsIGNbMV0pKTtcbiAgY29uc3QgbWF4Q29zID0gTWF0aC5tYXgoLi4uYWxwaGFiZXRDYW5kaWRhdGVzU2ltKTtcbiAgY29uc3QgYWxwaGFiZXQgPSBtYXhDb3MgPiAwLjY1ID8gYWxwaGFiZXRDYW5kaWRhdGVzW2FscGhhYmV0Q2FuZGlkYXRlc1NpbS5pbmRleE9mKG1heENvcyldWzBdIDogJ1VOJztcbiAgcmV0dXJuIGFscGhhYmV0O1xufVxuXG4vKiogU2VsZWN0cyBhIHN1aXRhYmxlIHBhbGV0dGUgYmFzZWQgb24gY29sdW1uIGRhdGFcbiAqIEBwYXJhbSB7REcuQ29sdW1ufSBzZXFDb2wgQ29sdW1uIHRvIGxvb2sgZm9yIGEgcGFsZXR0ZVxuICogQHBhcmFtIHtudW1iZXJ9ICBtaW5MZW5ndGggbWluaW11bSBsZW5ndGggb2Ygc2VxdWVuY2UgdG8gZGV0ZWN0IHBhbGV0dGUgKGVtcHR5IHN0cmluZ3MgYXJlIGFsbG93ZWQpXG4gKiBAcmV0dXJuIHtTZXFQYWxldHRlfSBQYWxldHRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFscGhhYmV0IG9mIHRoZSBzZXF1ZW5jZXMgaW4gdGhlIGNvbHVtblxuICovXG5leHBvcnQgZnVuY3Rpb24gcGlja1VwUGFsZXR0ZShzZXFDb2w6IERHLkNvbHVtbiwgbWluTGVuZ3RoOiBudW1iZXIgPSA1KTogU2VxUGFsZXR0ZSB7XG4gIGxldCBhbHBoYWJldDogc3RyaW5nO1xuICBpZiAoc2VxQ29sLnNlbVR5cGUgPT0gREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKSB7XG4gICAgY29uc3QgdWg6IFVuaXRzSGFuZGxlciA9IG5ldyBVbml0c0hhbmRsZXIoc2VxQ29sKTtcbiAgICBhbHBoYWJldCA9IHVoLmFscGhhYmV0O1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN0YXRzOiBTZXFDb2xTdGF0cyA9IGdldFN0YXRzKHNlcUNvbCwgbWluTGVuZ3RoLCBzcGxpdHRlckFzRmFzdGEpO1xuICAgIGFscGhhYmV0ID0gZGV0ZWN0QWxwaGFiZXQoc3RhdHMpO1xuICB9XG5cbiAgY29uc3QgcmVzID0gZ2V0UGFsZXR0ZUJ5VHlwZShhbHBoYWJldCk7XG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYWxldHRlQnlUeXBlKHBhbGV0dGVUeXBlOiBzdHJpbmcpOiBiaW8uU2VxUGFsZXR0ZSB7XG4gIHN3aXRjaCAocGFsZXR0ZVR5cGUpIHtcbiAgY2FzZSAnUFQnOlxuICAgIHJldHVybiBiaW8uQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gIGNhc2UgJ05UJzpcbiAgY2FzZSAnRE5BJzpcbiAgY2FzZSAnUk5BJzpcbiAgICByZXR1cm4gYmlvLk51Y2xlb3RpZGVzUGFsZXR0ZXMuQ2hyb21hdG9ncmFtO1xuICAgIC8vIG90aGVyXG4gIGRlZmF1bHQ6XG4gICAgcmV0dXJuIGJpby5Vbmtub3duU2VxUGFsZXR0ZXMuQ29sb3I7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBpY2tVcFNlcUNvbChkZjogREcuRGF0YUZyYW1lKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gIGNvbnN0IHNlbVR5cGVDb2xMaXN0ID0gZGYuY29sdW1ucy5ieVNlbVR5cGVBbGwoREcuU0VNVFlQRS5NQUNST01PTEVDVUxFKTtcbiAgbGV0IHJlc0NvbDogREcuQ29sdW1uIHwgbnVsbCA9IHNlbVR5cGVDb2xMaXN0LmZpbmQoKGNvbCkgPT4ge1xuICAgIGNvbnN0IHVuaXRzID0gY29sLmdldFRhZyhERy5UQUdTLlVOSVRTKTtcbiAgICByZXR1cm4gdW5pdHMgPyB1bml0cy5pbmRleE9mKCdNU0EnKSAhPT0gLTEgOiBmYWxzZTtcbiAgfSkgPz8gbnVsbDtcbiAgaWYgKCFyZXNDb2wgJiYgc2VtVHlwZUNvbExpc3QubGVuZ3RoID4gMClcbiAgICByZXNDb2wgPSBzZW1UeXBlQ29sTGlzdFswXTtcbiAgcmV0dXJuIHJlc0NvbDtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { UnitsHandler } from './units-handler';
|
|
3
|
+
import { NOTATION, SplitterFunc } from './macromolecule';
|
|
4
4
|
/** Class for handling conversion of notation systems in Macromolecule columns */
|
|
5
5
|
export declare class NotationConverter extends UnitsHandler {
|
|
6
6
|
private _splitter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notation-converter.d.ts","sourceRoot":"","sources":["notation-converter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"notation-converter.d.ts","sourceRoot":"","sources":["notation-converter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAuB,QAAQ,EAAE,YAAY,EAAO,MAAM,iBAAiB,CAAC;AAEnF,iFAAiF;AACjF,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,SAAS,CAA6B;IAC9C,SAAS,KAAK,QAAQ,IAAI,YAAY,CAIrC;IAEM,OAAO,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE1C,WAAW,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAE9C,MAAM,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO;IAEhD;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,mBAAmB;IAkB3B;;;;;;;OAOG;IACI,mBAAmB,CACxB,aAAa,EAAE,MAAM,EACrB,eAAe,GAAE,MAAM,GAAG,IAAW,GACpC,MAAM;IAOT;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAerB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAiDnB,OAAO,CAAC,sBAAsB;IAK9B;;;;;OAKG;IACI,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAAG,EAAE,CAAC,MAAM;gBAmBjE,GAAG,EAAE,EAAE,CAAC,MAAM;CAGlC"}
|