@datagrok-libraries/bio 5.14.0 → 5.15.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 +3 -4
- package/index.d.ts.map +1 -1
- package/index.js +4 -7
- package/index.ts +16 -33
- package/package.json +2 -3
- package/src/phylocanvas.d.ts +64 -0
- package/src/phylocanvas.d.ts.map +1 -0
- package/src/phylocanvas.js +196 -0
- package/src/seq-palettes.js +4 -4
- package/src/sequence-encoder.d.ts +1 -1
- package/src/sequence-encoder.d.ts.map +1 -1
- package/src/types/index.d.ts +1 -1
- package/src/types/index.d.ts.map +1 -1
- package/src/utils/fasta-handler.js +7 -7
- package/src/utils/macromolecule.d.ts +3 -3
- package/src/utils/macromolecule.d.ts.map +1 -1
- package/src/utils/notation-converter.js +5 -5
- package/src/utils/units-handler.js +34 -34
- package/src/viewers/ngl-gl-viewer.d.ts +3 -3
- package/src/viewers/ngl-gl-viewer.d.ts.map +1 -1
- package/src/viewers/phylocanvas-gl-viewer.d.ts +4 -4
- package/src/viewers/phylocanvas-gl-viewer.d.ts.map +1 -1
- package/src/viewers/phylocanvas-gl-viewer.js +3 -2
- package/src/viewers/web-logo-viewer.js +42 -42
- package/src/typings/index.d.ts +0 -57
package/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { PhylocanvasTreeNode, Newick, Utils, Shapes, TreeTypes } from '@phylocanvas/phylocanvas.gl';
|
|
2
|
-
import { PhylocanvasGL } from '@phylocanvas/phylocanvas.gl';
|
|
3
1
|
import { Aminoacids, AminoacidsPalettes } from './src/aminoacids';
|
|
4
2
|
import { MonomerWorks } from './src/monomer-works/monomer-works';
|
|
5
3
|
import { Nucleotides, NucleotidesPalettes } from './src/nucleotides';
|
|
@@ -8,7 +6,6 @@ import { IMonomerLib, Monomer, NodeType, isLeaf, NodeCuttedType } from './src/ty
|
|
|
8
6
|
import { UnknownSeqPalette, UnknownSeqPalettes } from './src/unknown';
|
|
9
7
|
import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
10
8
|
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
11
|
-
import { getSplitter, splitterAsFasta, getSplitterForColumn, SplitterFunc, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabet, getAlphabetSimilarity, ALPHABET, NOTATION, TAGS, ALIGNMENT } from './src/utils/macromolecule';
|
|
12
9
|
import { NotationConverter } from './src/utils/notation-converter';
|
|
13
10
|
import { splitAlignedSequences } from './src/utils/splitter';
|
|
14
11
|
import { getTreeHelper, ITreeHelper } from './src/utils/tree-helper';
|
|
@@ -20,5 +17,7 @@ import { PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer } from
|
|
|
20
17
|
import { MonomerLib } from './src/monomer-works/monomer-lib';
|
|
21
18
|
import { readLibrary } from './src/monomer-works/monomer-utils';
|
|
22
19
|
import { getNglGlService, NglGlServiceBase, NglGlTask } from './src/viewers/ngl-gl-viewer';
|
|
23
|
-
|
|
20
|
+
import { parseNewick, PhylocanvasTreeNode, Shapes, TreeTypes } from './src/phylocanvas';
|
|
21
|
+
export { ALIGNMENT, ALPHABET, NOTATION, TAGS, getSplitter, splitterAsFasta, getSplitterForColumn, SplitterFunc, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabet, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
22
|
+
export { NotationConverter, splitAlignedSequences, SeqPalette, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, IVdRegionsViewer, NodeType, isLeaf, NodeCuttedType, PhylocanvasTreeNode, NodeStyleType, StylesType, IPhylocanvasGlViewer, TreeTypesNames, PhylocanvasGlServiceBase, CanvasCallback, PhylocanvasGlTask, getPhylocanvasGlService, Shapes, TreeTypes, parseNewick, ITreeHelper, getTreeHelper, getNglGlService, NglGlServiceBase, NglGlTask, Monomer, IMonomerLib, MonomerWorks, MonomerLib, readLibrary };
|
|
24
23
|
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AACnF,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACpE,OAAO,EAAC,SAAS,EAAE,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAC/G,OAAO,EAAC,UAAU,EAAC,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAC,WAAW,EAAC,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,SAAS,EACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAEtF,OAAO,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAEhB,QAAQ,EAAE,MAAM,EAAE,cAAc,EAChC,mBAAmB,EAEnB,aAAa,EAAE,UAAU,EAEzB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EAEvB,MAAM,EAAE,SAAS,EACjB,WAAW,EAGX,WAAW,EACX,aAAa,EAEb,eAAe,EACf,gBAAgB,EAChB,SAAS,EAGT,OAAO,EACP,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACZ,CAAC"}
|
package/index.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
//@ts-ignore
|
|
2
|
-
import { Newick, Utils, Shapes, TreeTypes } from '@phylocanvas/phylocanvas.gl';
|
|
3
|
-
//@ts-ignore
|
|
4
|
-
import { PhylocanvasGL } from '@phylocanvas/phylocanvas.gl';
|
|
5
1
|
import { Aminoacids, AminoacidsPalettes } from './src/aminoacids';
|
|
6
2
|
import { MonomerWorks } from './src/monomer-works/monomer-works';
|
|
7
3
|
import { Nucleotides, NucleotidesPalettes } from './src/nucleotides';
|
|
@@ -10,7 +6,6 @@ import { isLeaf } from './src/types';
|
|
|
10
6
|
import { UnknownSeqPalette, UnknownSeqPalettes } from './src/unknown';
|
|
11
7
|
import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
12
8
|
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
13
|
-
import { getSplitter, splitterAsFasta, getSplitterForColumn, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabet, getAlphabetSimilarity, } from './src/utils/macromolecule';
|
|
14
9
|
import { NotationConverter } from './src/utils/notation-converter';
|
|
15
10
|
import { splitAlignedSequences } from './src/utils/splitter';
|
|
16
11
|
import { getTreeHelper } from './src/utils/tree-helper';
|
|
@@ -21,5 +16,7 @@ import { PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer } from
|
|
|
21
16
|
import { MonomerLib } from './src/monomer-works/monomer-lib';
|
|
22
17
|
import { readLibrary } from './src/monomer-works/monomer-utils';
|
|
23
18
|
import { getNglGlService, NglGlServiceBase } from './src/viewers/ngl-gl-viewer';
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
import { parseNewick, Shapes, TreeTypes } from './src/phylocanvas';
|
|
20
|
+
export { getSplitter, splitterAsFasta, getSplitterForColumn, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabet, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
21
|
+
export { NotationConverter, splitAlignedSequences, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, isLeaf, TreeTypesNames, PhylocanvasGlServiceBase, getPhylocanvasGlService, Shapes, TreeTypes, parseNewick, getTreeHelper, getNglGlService, NglGlServiceBase, MonomerWorks, MonomerLib, readLibrary };
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQWEsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFpQyxNQUFNLEVBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQ25GLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUMsU0FBUyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDekUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGFBQWEsRUFBYyxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsUUFBUSxFQUFFLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFFTCx1QkFBdUIsRUFHdkIsd0JBQXdCLEVBR3hCLGNBQWMsRUFDZixNQUFNLHFDQUFxQyxDQUFDO0FBRTdDLE9BQU8sRUFBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQy9HLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFFakIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUMsV0FBVyxFQUF1QixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFdEYsT0FBTyxFQUtMLFdBQVcsRUFDWCxlQUFlLEVBQ2Ysb0JBQW9CLEVBRXBCLGNBQWMsRUFDZCxjQUFjLEVBQ2QsUUFBUSxFQUNSLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLHFCQUFxQixFQUN0QixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBRXJCLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixRQUFRLEVBR0UsTUFBTSxFQU1oQixjQUFjLEVBQ2Qsd0JBQXdCLEVBR3hCLHVCQUF1QixFQUV2QixNQUFNLEVBQUUsU0FBUyxFQUNqQixXQUFXLEVBSVgsYUFBYSxFQUViLGVBQWUsRUFDZixnQkFBZ0IsRUFNaEIsWUFBWSxFQUNaLFVBQVUsRUFDVixXQUFXLEVBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuL3NyYy9hbWlub2FjaWRzJztcbmltcG9ydCB7TW9ub21lcldvcmtzfSBmcm9tICcuL3NyYy9tb25vbWVyLXdvcmtzL21vbm9tZXItd29ya3MnO1xuaW1wb3J0IHtOdWNsZW90aWRlcywgTnVjbGVvdGlkZXNQYWxldHRlc30gZnJvbSAnLi9zcmMvbnVjbGVvdGlkZXMnO1xuaW1wb3J0IHtTZXFQYWxldHRlLCBTZXFQYWxldHRlQmFzZX0gZnJvbSAnLi9zcmMvc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7SU1vbm9tZXJMaWIsIE1vbm9tZXIsIE5vZGVUeXBlLCBpc0xlYWYsIE5vZGVDdXR0ZWRUeXBlfSBmcm9tICcuL3NyYy90eXBlcyc7XG5pbXBvcnQge1Vua25vd25TZXFQYWxldHRlLCBVbmtub3duU2VxUGFsZXR0ZXN9IGZyb20gJy4vc3JjL3Vua25vd24nO1xuaW1wb3J0IHtEcmF3U3R5bGUsIHByaW50TGVmdE9yQ2VudGVyZWR9IGZyb20gJy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHtGYXN0YUZpbGVIYW5kbGVyfSBmcm9tICcuL3NyYy91dGlscy9mYXN0YS1oYW5kbGVyJztcbmltcG9ydCB7Tm90YXRpb25Db252ZXJ0ZXJ9IGZyb20gJy4vc3JjL3V0aWxzL25vdGF0aW9uLWNvbnZlcnRlcic7XG5pbXBvcnQge3NwbGl0QWxpZ25lZFNlcXVlbmNlc30gZnJvbSAnLi9zcmMvdXRpbHMvc3BsaXR0ZXInO1xuaW1wb3J0IHtnZXRUcmVlSGVscGVyLCBJVHJlZUhlbHBlcn0gZnJvbSAnLi9zcmMvdXRpbHMvdHJlZS1oZWxwZXInO1xuaW1wb3J0IHtVbml0c0hhbmRsZXJ9IGZyb20gJy4vc3JjL3V0aWxzL3VuaXRzLWhhbmRsZXInO1xuaW1wb3J0IHtWZFJlZ2lvbiwgVmRSZWdpb25UeXBlfSBmcm9tICcuL3NyYy92ZC1yZWdpb25zJztcbmltcG9ydCB7XG4gIENhbnZhc0NhbGxiYWNrLFxuICBnZXRQaHlsb2NhbnZhc0dsU2VydmljZSxcbiAgSVBoeWxvY2FudmFzR2xWaWV3ZXIsXG4gIE5vZGVTdHlsZVR5cGUsXG4gIFBoeWxvY2FudmFzR2xTZXJ2aWNlQmFzZSxcbiAgUGh5bG9jYW52YXNHbFRhc2ssXG4gIFN0eWxlc1R5cGUsXG4gIFRyZWVUeXBlc05hbWVzXG59IGZyb20gJy4vc3JjL3ZpZXdlcnMvcGh5bG9jYW52YXMtZ2wtdmlld2VyJztcbmltcG9ydCB7SVZkUmVnaW9uc1ZpZXdlcn0gZnJvbSAnLi9zcmMvdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlcic7XG5pbXBvcnQge1Bvc2l0aW9uSGVpZ2h0LCBQb3NpdGlvbkluZm8sIFBvc2l0aW9uTW9ub21lckluZm8sIFdlYkxvZ29WaWV3ZXJ9IGZyb20gJy4vc3JjL3ZpZXdlcnMvd2ViLWxvZ28tdmlld2VyJztcbmltcG9ydCB7TW9ub21lckxpYn0gZnJvbSAnLi9zcmMvbW9ub21lci13b3Jrcy9tb25vbWVyLWxpYic7XG5pbXBvcnQge3JlYWRMaWJyYXJ5fSBmcm9tICcuL3NyYy9tb25vbWVyLXdvcmtzL21vbm9tZXItdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0TmdsR2xTZXJ2aWNlLFxuICBOZ2xHbFNlcnZpY2VCYXNlLFxuICBOZ2xHbFRhc2tcbn0gZnJvbSAnLi9zcmMvdmlld2Vycy9uZ2wtZ2wtdmlld2VyJztcbmltcG9ydCB7cGFyc2VOZXdpY2ssIFBoeWxvY2FudmFzVHJlZU5vZGUsIFNoYXBlcywgVHJlZVR5cGVzfSBmcm9tICcuL3NyYy9waHlsb2NhbnZhcyc7XG5cbmV4cG9ydCB7XG4gIEFMSUdOTUVOVCxcbiAgQUxQSEFCRVQsXG4gIE5PVEFUSU9OLFxuICBUQUdTLFxuICBnZXRTcGxpdHRlcixcbiAgc3BsaXR0ZXJBc0Zhc3RhLFxuICBnZXRTcGxpdHRlckZvckNvbHVtbixcbiAgU3BsaXR0ZXJGdW5jLFxuICBtb25vbWVyVG9TaG9ydCxcbiAgc3BsaXR0ZXJBc0hlbG0sXG4gIGdldFN0YXRzLFxuICBwaWNrVXBQYWxldHRlLFxuICBnZXRQYWxldHRlQnlUeXBlLFxuICBnZXRBbHBoYWJldCxcbiAgZ2V0QWxwaGFiZXRTaW1pbGFyaXR5XG59IGZyb20gJy4vc3JjL3V0aWxzL21hY3JvbW9sZWN1bGUnO1xuXG5leHBvcnQge1xuICBOb3RhdGlvbkNvbnZlcnRlcixcbiAgc3BsaXRBbGlnbmVkU2VxdWVuY2VzLFxuICBTZXFQYWxldHRlLFxuICBTZXFQYWxldHRlQmFzZSxcbiAgQW1pbm9hY2lkcyxcbiAgQW1pbm9hY2lkc1BhbGV0dGVzLFxuICBOdWNsZW90aWRlcyxcbiAgTnVjbGVvdGlkZXNQYWxldHRlcyxcbiAgVW5rbm93blNlcVBhbGV0dGVzLFxuICBVbmtub3duU2VxUGFsZXR0ZSxcbiAgUG9zaXRpb25IZWlnaHQsXG4gIFBvc2l0aW9uSW5mbyxcbiAgUG9zaXRpb25Nb25vbWVySW5mbyxcbiAgV2ViTG9nb1ZpZXdlcixcbiAgVW5pdHNIYW5kbGVyLFxuICBEcmF3U3R5bGUsXG4gIHByaW50TGVmdE9yQ2VudGVyZWQsXG4gIEZhc3RhRmlsZUhhbmRsZXIsXG4gIFZkUmVnaW9uVHlwZSxcbiAgVmRSZWdpb24sXG4gIElWZFJlZ2lvbnNWaWV3ZXIsXG5cbiAgTm9kZVR5cGUsIGlzTGVhZiwgTm9kZUN1dHRlZFR5cGUsXG4gIFBoeWxvY2FudmFzVHJlZU5vZGUsXG4gIC8vIHRyZWVUcmF2ZXJzYWwsXG4gIE5vZGVTdHlsZVR5cGUsIFN0eWxlc1R5cGUsXG5cbiAgSVBoeWxvY2FudmFzR2xWaWV3ZXIsXG4gIFRyZWVUeXBlc05hbWVzLFxuICBQaHlsb2NhbnZhc0dsU2VydmljZUJhc2UsXG4gIENhbnZhc0NhbGxiYWNrLFxuICBQaHlsb2NhbnZhc0dsVGFzayxcbiAgZ2V0UGh5bG9jYW52YXNHbFNlcnZpY2UsXG5cbiAgU2hhcGVzLCBUcmVlVHlwZXMsXG4gIHBhcnNlTmV3aWNrLFxuICAvLyBVdGlscyxcbiAgLy8gTmV3aWNrLFxuICBJVHJlZUhlbHBlcixcbiAgZ2V0VHJlZUhlbHBlcixcblxuICBnZXROZ2xHbFNlcnZpY2UsXG4gIE5nbEdsU2VydmljZUJhc2UsXG4gIE5nbEdsVGFzayxcblxuICAvL01vbm9tZXIgbGliIGFuZCBmZWF0dXJlc1xuICBNb25vbWVyLFxuICBJTW9ub21lckxpYixcbiAgTW9ub21lcldvcmtzLFxuICBNb25vbWVyTGliLFxuICByZWFkTGlicmFyeVxufTtcbiJdfQ==
|
package/index.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
//@ts-ignore
|
|
2
|
-
import {PhylocanvasTreeNode, Newick, Utils, Shapes, TreeTypes} from '@phylocanvas/phylocanvas.gl';
|
|
3
|
-
//@ts-ignore
|
|
4
|
-
import {PhylocanvasGL} from '@phylocanvas/phylocanvas.gl';
|
|
5
|
-
|
|
6
1
|
import {Aminoacids, AminoacidsPalettes} from './src/aminoacids';
|
|
7
2
|
import {MonomerWorks} from './src/monomer-works/monomer-works';
|
|
8
3
|
import {Nucleotides, NucleotidesPalettes} from './src/nucleotides';
|
|
@@ -11,23 +6,6 @@ import {IMonomerLib, Monomer, NodeType, isLeaf, NodeCuttedType} from './src/type
|
|
|
11
6
|
import {UnknownSeqPalette, UnknownSeqPalettes} from './src/unknown';
|
|
12
7
|
import {DrawStyle, printLeftOrCentered} from './src/utils/cell-renderer';
|
|
13
8
|
import {FastaFileHandler} from './src/utils/fasta-handler';
|
|
14
|
-
import {
|
|
15
|
-
getSplitter,
|
|
16
|
-
splitterAsFasta,
|
|
17
|
-
getSplitterForColumn,
|
|
18
|
-
SplitterFunc,
|
|
19
|
-
monomerToShort,
|
|
20
|
-
splitterAsHelm,
|
|
21
|
-
getStats,
|
|
22
|
-
pickUpPalette,
|
|
23
|
-
getPaletteByType,
|
|
24
|
-
getAlphabet,
|
|
25
|
-
getAlphabetSimilarity,
|
|
26
|
-
ALPHABET,
|
|
27
|
-
NOTATION,
|
|
28
|
-
TAGS,
|
|
29
|
-
ALIGNMENT,
|
|
30
|
-
} from './src/utils/macromolecule';
|
|
31
9
|
import {NotationConverter} from './src/utils/notation-converter';
|
|
32
10
|
import {splitAlignedSequences} from './src/utils/splitter';
|
|
33
11
|
import {getTreeHelper, ITreeHelper} from './src/utils/tree-helper';
|
|
@@ -52,22 +30,28 @@ import {
|
|
|
52
30
|
NglGlServiceBase,
|
|
53
31
|
NglGlTask
|
|
54
32
|
} from './src/viewers/ngl-gl-viewer';
|
|
33
|
+
import {parseNewick, PhylocanvasTreeNode, Shapes, TreeTypes} from './src/phylocanvas';
|
|
55
34
|
|
|
56
35
|
export {
|
|
57
36
|
ALIGNMENT,
|
|
58
37
|
ALPHABET,
|
|
59
38
|
NOTATION,
|
|
60
39
|
TAGS,
|
|
61
|
-
NotationConverter,
|
|
62
|
-
SplitterFunc,
|
|
63
|
-
getStats,
|
|
64
|
-
getAlphabet,
|
|
65
|
-
getAlphabetSimilarity,
|
|
66
40
|
getSplitter,
|
|
67
41
|
splitterAsFasta,
|
|
68
|
-
splitterAsHelm,
|
|
69
42
|
getSplitterForColumn,
|
|
43
|
+
SplitterFunc,
|
|
70
44
|
monomerToShort,
|
|
45
|
+
splitterAsHelm,
|
|
46
|
+
getStats,
|
|
47
|
+
pickUpPalette,
|
|
48
|
+
getPaletteByType,
|
|
49
|
+
getAlphabet,
|
|
50
|
+
getAlphabetSimilarity
|
|
51
|
+
} from './src/utils/macromolecule';
|
|
52
|
+
|
|
53
|
+
export {
|
|
54
|
+
NotationConverter,
|
|
71
55
|
splitAlignedSequences,
|
|
72
56
|
SeqPalette,
|
|
73
57
|
SeqPaletteBase,
|
|
@@ -77,8 +61,6 @@ export {
|
|
|
77
61
|
NucleotidesPalettes,
|
|
78
62
|
UnknownSeqPalettes,
|
|
79
63
|
UnknownSeqPalette,
|
|
80
|
-
pickUpPalette,
|
|
81
|
-
getPaletteByType,
|
|
82
64
|
PositionHeight,
|
|
83
65
|
PositionInfo,
|
|
84
66
|
PositionMonomerInfo,
|
|
@@ -93,6 +75,7 @@ export {
|
|
|
93
75
|
|
|
94
76
|
NodeType, isLeaf, NodeCuttedType,
|
|
95
77
|
PhylocanvasTreeNode,
|
|
78
|
+
// treeTraversal,
|
|
96
79
|
NodeStyleType, StylesType,
|
|
97
80
|
|
|
98
81
|
IPhylocanvasGlViewer,
|
|
@@ -102,10 +85,10 @@ export {
|
|
|
102
85
|
PhylocanvasGlTask,
|
|
103
86
|
getPhylocanvasGlService,
|
|
104
87
|
|
|
105
|
-
PhylocanvasGL,
|
|
106
88
|
Shapes, TreeTypes,
|
|
107
|
-
|
|
108
|
-
|
|
89
|
+
parseNewick,
|
|
90
|
+
// Utils,
|
|
91
|
+
// Newick,
|
|
109
92
|
ITreeHelper,
|
|
110
93
|
getTreeHelper,
|
|
111
94
|
|
package/package.json
CHANGED
|
@@ -4,15 +4,14 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"friendlyName": "Datagrok bio library",
|
|
7
|
-
"version": "5.
|
|
7
|
+
"version": "5.15.0",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@datagrok-libraries/utils": "^1.10.1",
|
|
11
|
-
"@phylocanvas/phylocanvas.gl": "1.44.0",
|
|
12
11
|
"cash-dom": "latest",
|
|
13
12
|
"datagrok-api": "^1.8.2",
|
|
14
13
|
"dayjs": "latest",
|
|
15
|
-
"deck.gl": "8.8.12",
|
|
14
|
+
"@deck.gl/core": "8.8.12",
|
|
16
15
|
"mjolnir.js": "^2.7.0",
|
|
17
16
|
"rxjs": "^6.5.5",
|
|
18
17
|
"wu": "latest"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { NodeType } from './types/index';
|
|
2
|
+
export declare const TreeTypes: {
|
|
3
|
+
Circular: string;
|
|
4
|
+
Diagonal: string;
|
|
5
|
+
Hierarchical: string;
|
|
6
|
+
Radial: string;
|
|
7
|
+
Rectangular: string;
|
|
8
|
+
};
|
|
9
|
+
export declare const Shapes: {
|
|
10
|
+
Chevron: string;
|
|
11
|
+
ChevronInverted: string;
|
|
12
|
+
ChevronLeft: string;
|
|
13
|
+
ChevronRight: string;
|
|
14
|
+
Circle: string;
|
|
15
|
+
Cross: string;
|
|
16
|
+
Diamond: string;
|
|
17
|
+
Dot: string;
|
|
18
|
+
DoubleChevron: string;
|
|
19
|
+
DoubleChevronInverted: string;
|
|
20
|
+
DoubleChevronLeft: string;
|
|
21
|
+
DoubleChevronRight: string;
|
|
22
|
+
Heptagon: string;
|
|
23
|
+
HeptagonInverted: string;
|
|
24
|
+
Heptagram: string;
|
|
25
|
+
HeptagramInverted: string;
|
|
26
|
+
Hexagon: string;
|
|
27
|
+
Hexagram: string;
|
|
28
|
+
Octagon: string;
|
|
29
|
+
Octagram: string;
|
|
30
|
+
Pentagon: string;
|
|
31
|
+
PentagonInverted: string;
|
|
32
|
+
Pentagram: string;
|
|
33
|
+
PentagramInverted: string;
|
|
34
|
+
Plus: string;
|
|
35
|
+
Square: string;
|
|
36
|
+
Star: string;
|
|
37
|
+
StarInverted: string;
|
|
38
|
+
Tetragram: string;
|
|
39
|
+
Triangle: string;
|
|
40
|
+
TriangleInverted: string;
|
|
41
|
+
TriangleLeft: string;
|
|
42
|
+
TriangleRight: string;
|
|
43
|
+
Wye: string;
|
|
44
|
+
WyeInverted: string;
|
|
45
|
+
};
|
|
46
|
+
/** Represents a single tree node */
|
|
47
|
+
export type PhylocanvasTreeNode = NodeType & {
|
|
48
|
+
branchLength: number;
|
|
49
|
+
children: PhylocanvasTreeNode[];
|
|
50
|
+
parent?: PhylocanvasTreeNode;
|
|
51
|
+
id: string;
|
|
52
|
+
isCollapsed: boolean;
|
|
53
|
+
isHidden: boolean;
|
|
54
|
+
isLeaf: boolean;
|
|
55
|
+
name?: string;
|
|
56
|
+
postIndex: number;
|
|
57
|
+
preIndex: number;
|
|
58
|
+
totalLeaves: number;
|
|
59
|
+
totalNodes: number;
|
|
60
|
+
totalSubtreeLength: number;
|
|
61
|
+
visibleLeaves: number;
|
|
62
|
+
};
|
|
63
|
+
export declare function parseNewick(s: string): any;
|
|
64
|
+
//# sourceMappingURL=phylocanvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phylocanvas.d.ts","sourceRoot":"","sources":["phylocanvas.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,eAAO,MAAM,SAAS;;;;;;CAMrB,CAAC;AAEF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoClB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAA;AAoHD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAkC1C"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
// https://gitlab.com/cgps/phylocanvas/phylocanvas.gl
|
|
2
|
+
export const TreeTypes = {
|
|
3
|
+
Circular: 'cr',
|
|
4
|
+
Diagonal: 'dg',
|
|
5
|
+
Hierarchical: 'hr',
|
|
6
|
+
Radial: 'rd',
|
|
7
|
+
Rectangular: 'rc',
|
|
8
|
+
};
|
|
9
|
+
export const Shapes = {
|
|
10
|
+
Chevron: 'chevron',
|
|
11
|
+
ChevronInverted: 'chevron-inverted',
|
|
12
|
+
ChevronLeft: 'chevron-left',
|
|
13
|
+
ChevronRight: 'chevron-right',
|
|
14
|
+
Circle: 'circle',
|
|
15
|
+
Cross: 'cross',
|
|
16
|
+
Diamond: 'diamond',
|
|
17
|
+
Dot: 'dot',
|
|
18
|
+
DoubleChevron: 'double-chevron',
|
|
19
|
+
DoubleChevronInverted: 'double-chevron-inverted',
|
|
20
|
+
DoubleChevronLeft: 'double-chevron-left',
|
|
21
|
+
DoubleChevronRight: 'double-chevron-right',
|
|
22
|
+
Heptagon: 'heptagon',
|
|
23
|
+
HeptagonInverted: 'heptagon-inverted',
|
|
24
|
+
Heptagram: 'heptagram',
|
|
25
|
+
HeptagramInverted: 'heptagram-inverted',
|
|
26
|
+
Hexagon: 'hexagon',
|
|
27
|
+
Hexagram: 'hexagram',
|
|
28
|
+
Octagon: 'octagon',
|
|
29
|
+
Octagram: 'octagram',
|
|
30
|
+
Pentagon: 'pentagon',
|
|
31
|
+
PentagonInverted: 'pentagon-inverted',
|
|
32
|
+
Pentagram: 'pentagram',
|
|
33
|
+
PentagramInverted: 'pentagram-inverted',
|
|
34
|
+
Plus: 'plus',
|
|
35
|
+
Square: 'square',
|
|
36
|
+
Star: 'pentagram',
|
|
37
|
+
StarInverted: 'pentagram-inverted',
|
|
38
|
+
Tetragram: 'tetragram',
|
|
39
|
+
Triangle: 'triangle',
|
|
40
|
+
TriangleInverted: 'triangle-inverted',
|
|
41
|
+
TriangleLeft: 'triangle-left',
|
|
42
|
+
TriangleRight: 'triangle-right',
|
|
43
|
+
Wye: 'wye',
|
|
44
|
+
WyeInverted: 'wye-inverted',
|
|
45
|
+
};
|
|
46
|
+
/*
|
|
47
|
+
|
|
48
|
+
// https://en.wikipedia.org/wiki/Tree_traversal#Post-order
|
|
49
|
+
function getPostorderTraversal<TNode extends NodeType>(rootNode: TNode): TNode[] {
|
|
50
|
+
const nodes: TNode[] = [];
|
|
51
|
+
const queue: TNode[] = [rootNode];
|
|
52
|
+
|
|
53
|
+
while (queue.length) {
|
|
54
|
+
const node: TNode = queue.pop()!;
|
|
55
|
+
if (node.children)
|
|
56
|
+
Array.prototype.push.apply(queue, node.children);
|
|
57
|
+
nodes.push(node);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return nodes.reverse();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// https://en.wikipedia.org/wiki/Tree_traversal#Pre-order
|
|
64
|
+
function getPreorderTraversal<TNode extends NodeType>(rootNode: TNode): TNode[] {
|
|
65
|
+
const nodes: TNode[] = [];
|
|
66
|
+
const queue: TNode[] = [rootNode];
|
|
67
|
+
|
|
68
|
+
while (queue.length) {
|
|
69
|
+
const node: TNode = queue.shift()!;
|
|
70
|
+
nodes.push(node);
|
|
71
|
+
if (node.children)
|
|
72
|
+
Array.prototype.unshift.apply(queue, node.children);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return nodes;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function treeTraversal(rootNode: PhylocanvasTreeNode, {trimQuotes = true} = {}) {
|
|
79
|
+
performance.mark('getPostorderTraversal');
|
|
80
|
+
const postorderTraversal = getPostorderTraversal(rootNode);
|
|
81
|
+
performance.measure(' getPostorderTraversal', 'getPostorderTraversal');
|
|
82
|
+
performance.mark('getPreorderTraversal');
|
|
83
|
+
const preorderTraversal = getPreorderTraversal(rootNode);
|
|
84
|
+
performance.measure(' getPreorderTraversal', 'getPreorderTraversal');
|
|
85
|
+
|
|
86
|
+
// Detect cladograms
|
|
87
|
+
const isCladogram = postorderTraversal.every((x) => (x.branchLength || x.branch_length || 0) === 0);
|
|
88
|
+
if (isCladogram) {
|
|
89
|
+
rootNode.branchLength = 0;
|
|
90
|
+
for (let nodeIndex = 0; nodeIndex < preorderTraversal.length; nodeIndex++) {
|
|
91
|
+
const node = preorderTraversal[nodeIndex];
|
|
92
|
+
if (node.children) {
|
|
93
|
+
for (const child of node.children)
|
|
94
|
+
child.branchLength = node.branchLength + 1;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
performance.mark('bottom-up traversal');
|
|
100
|
+
// bottom-up traversal starting from leaves to root
|
|
101
|
+
for (let nodeIndex = 0; nodeIndex < postorderTraversal.length; nodeIndex++) {
|
|
102
|
+
const node: PhylocanvasTreeNode = postorderTraversal[nodeIndex];
|
|
103
|
+
node.postIndex = nodeIndex;
|
|
104
|
+
node.isLeaf = !Array.isArray(node.children);
|
|
105
|
+
node.branchLength = Math.abs(node.branchLength || node.branch_length || 0);
|
|
106
|
+
delete node.branch_length;
|
|
107
|
+
if (node.isLeaf && typeof node.name === 'string') {
|
|
108
|
+
if (trimQuotes)
|
|
109
|
+
node.id = node.name.trim().replace(/^['"]|['"]$/g, '');
|
|
110
|
+
else
|
|
111
|
+
node.id = node.name;
|
|
112
|
+
|
|
113
|
+
// @ts-ignore
|
|
114
|
+
delete node.name;
|
|
115
|
+
}
|
|
116
|
+
node.totalNodes = 1;
|
|
117
|
+
node.totalLeaves = 1;
|
|
118
|
+
node.totalSubtreeLength = 0;
|
|
119
|
+
if (!node.isLeaf) {
|
|
120
|
+
node.totalNodes = 1;
|
|
121
|
+
node.totalLeaves = 0;
|
|
122
|
+
let totalSubtreeLength = 0;
|
|
123
|
+
for (const child of node.children) {
|
|
124
|
+
node.totalNodes += child.totalNodes;
|
|
125
|
+
node.totalLeaves += child.totalLeaves;
|
|
126
|
+
if (child.totalSubtreeLength + child.branchLength > totalSubtreeLength)
|
|
127
|
+
totalSubtreeLength = child.totalSubtreeLength + child.branchLength;
|
|
128
|
+
child.parent = node;
|
|
129
|
+
}
|
|
130
|
+
node.totalSubtreeLength = totalSubtreeLength;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
performance.measure(' bottom-up traversal', 'bottom-up traversal');
|
|
134
|
+
|
|
135
|
+
performance.mark('top-down traversal');
|
|
136
|
+
const nodeById: { [id: string]: PhylocanvasTreeNode } = {};
|
|
137
|
+
// top-down traversal starting from root to leaves
|
|
138
|
+
for (let nodeIndex = 0; nodeIndex < preorderTraversal.length; nodeIndex++) {
|
|
139
|
+
const node = preorderTraversal[nodeIndex];
|
|
140
|
+
node.preIndex = nodeIndex;
|
|
141
|
+
if (!node.id)
|
|
142
|
+
node.id = nodeIndex.toString();
|
|
143
|
+
nodeById[node.id] = node;
|
|
144
|
+
node.visibleLeaves = node.totalLeaves;
|
|
145
|
+
node.isCollapsed = false;
|
|
146
|
+
node.isHidden = false;
|
|
147
|
+
}
|
|
148
|
+
performance.measure(' top-down traversal', 'top-down traversal');
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
nodeById,
|
|
152
|
+
rootNode,
|
|
153
|
+
postorderTraversal,
|
|
154
|
+
preorderTraversal,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**/
|
|
159
|
+
export function parseNewick(s) {
|
|
160
|
+
const ancestors = [];
|
|
161
|
+
let tree = { name: '' };
|
|
162
|
+
const tokens = s.split(/\s*(;|\(|\)|,|:)\s*/);
|
|
163
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
164
|
+
const token = tokens[i];
|
|
165
|
+
switch (token) {
|
|
166
|
+
case '(':
|
|
167
|
+
{ // new children
|
|
168
|
+
const subtree = { name: '' };
|
|
169
|
+
tree.children = [subtree];
|
|
170
|
+
ancestors.push(tree);
|
|
171
|
+
tree = subtree;
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
case ',':
|
|
175
|
+
{ // another branch
|
|
176
|
+
const subtree = { name: '' };
|
|
177
|
+
ancestors[ancestors.length - 1].children.push(subtree);
|
|
178
|
+
tree = subtree;
|
|
179
|
+
}
|
|
180
|
+
break;
|
|
181
|
+
case ')': // optional name next
|
|
182
|
+
tree = ancestors.pop();
|
|
183
|
+
break;
|
|
184
|
+
case ':': // optional length next
|
|
185
|
+
break;
|
|
186
|
+
default:
|
|
187
|
+
const x = tokens[i - 1];
|
|
188
|
+
if (x == ')' || x == '(' || x == ',')
|
|
189
|
+
tree.name = token;
|
|
190
|
+
else if (x == ':')
|
|
191
|
+
tree.branch_length = parseFloat(token);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return tree;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5bG9jYW52YXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaHlsb2NhbnZhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxREFBcUQ7QUFJckQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3ZCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsUUFBUSxFQUFFLElBQUk7SUFDZCxZQUFZLEVBQUUsSUFBSTtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLFdBQVcsRUFBRSxJQUFJO0NBQ2xCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUc7SUFDcEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsZUFBZSxFQUFFLGtCQUFrQjtJQUNuQyxXQUFXLEVBQUUsY0FBYztJQUMzQixZQUFZLEVBQUUsZUFBZTtJQUM3QixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixxQkFBcUIsRUFBRSx5QkFBeUI7SUFDaEQsaUJBQWlCLEVBQUUscUJBQXFCO0lBQ3hDLGtCQUFrQixFQUFFLHNCQUFzQjtJQUMxQyxRQUFRLEVBQUUsVUFBVTtJQUNwQixnQkFBZ0IsRUFBRSxtQkFBbUI7SUFDckMsU0FBUyxFQUFFLFdBQVc7SUFDdEIsaUJBQWlCLEVBQUUsb0JBQW9CO0lBQ3ZDLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLGdCQUFnQixFQUFFLG1CQUFtQjtJQUNyQyxTQUFTLEVBQUUsV0FBVztJQUN0QixpQkFBaUIsRUFBRSxvQkFBb0I7SUFDdkMsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtJQUNoQixJQUFJLEVBQUUsV0FBVztJQUNqQixZQUFZLEVBQUUsb0JBQW9CO0lBQ2xDLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLGdCQUFnQixFQUFFLG1CQUFtQjtJQUNyQyxZQUFZLEVBQUUsZUFBZTtJQUM3QixhQUFhLEVBQUUsZ0JBQWdCO0lBQy9CLEdBQUcsRUFBRSxLQUFLO0lBQ1YsV0FBVyxFQUFFLGNBQWM7Q0FDNUIsQ0FBQztBQW9CRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWdISTtBQUVKLE1BQU0sVUFBVSxXQUFXLENBQUMsQ0FBUztJQUNuQyxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxJQUFJLEdBQWEsRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFDLENBQUM7SUFDaEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixRQUFRLEtBQUssRUFBRTtZQUNmLEtBQUssR0FBRztnQkFBRSxFQUFFLGVBQWU7b0JBQ3pCLE1BQU0sT0FBTyxHQUFhLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3JCLElBQUksR0FBRyxPQUFPLENBQUM7aUJBQ2hCO2dCQUNDLE1BQU07WUFDUixLQUFLLEdBQUc7Z0JBQUUsRUFBRSxpQkFBaUI7b0JBQzNCLE1BQU0sT0FBTyxHQUFhLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxDQUFDO29CQUNyQyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4RCxJQUFJLEdBQUcsT0FBTyxDQUFDO2lCQUNoQjtnQkFDQyxNQUFNO1lBQ1IsS0FBSyxHQUFHLEVBQUUscUJBQXFCO2dCQUM3QixJQUFJLEdBQUcsU0FBUyxDQUFDLEdBQUcsRUFBRyxDQUFDO2dCQUN4QixNQUFNO1lBQ1IsS0FBSyxHQUFHLEVBQUUsdUJBQXVCO2dCQUMvQixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUc7b0JBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO3FCQUNmLElBQUksQ0FBQyxJQUFJLEdBQUc7b0JBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0bGFiLmNvbS9jZ3BzL3BoeWxvY2FudmFzL3BoeWxvY2FudmFzLmdsXG5cbmltcG9ydCB7Tm9kZVR5cGV9IGZyb20gJy4vdHlwZXMvaW5kZXgnO1xuXG5leHBvcnQgY29uc3QgVHJlZVR5cGVzID0ge1xuICBDaXJjdWxhcjogJ2NyJyxcbiAgRGlhZ29uYWw6ICdkZycsXG4gIEhpZXJhcmNoaWNhbDogJ2hyJyxcbiAgUmFkaWFsOiAncmQnLFxuICBSZWN0YW5ndWxhcjogJ3JjJyxcbn07XG5cbmV4cG9ydCBjb25zdCBTaGFwZXMgPSB7XG4gIENoZXZyb246ICdjaGV2cm9uJyxcbiAgQ2hldnJvbkludmVydGVkOiAnY2hldnJvbi1pbnZlcnRlZCcsXG4gIENoZXZyb25MZWZ0OiAnY2hldnJvbi1sZWZ0JyxcbiAgQ2hldnJvblJpZ2h0OiAnY2hldnJvbi1yaWdodCcsXG4gIENpcmNsZTogJ2NpcmNsZScsXG4gIENyb3NzOiAnY3Jvc3MnLFxuICBEaWFtb25kOiAnZGlhbW9uZCcsXG4gIERvdDogJ2RvdCcsXG4gIERvdWJsZUNoZXZyb246ICdkb3VibGUtY2hldnJvbicsXG4gIERvdWJsZUNoZXZyb25JbnZlcnRlZDogJ2RvdWJsZS1jaGV2cm9uLWludmVydGVkJyxcbiAgRG91YmxlQ2hldnJvbkxlZnQ6ICdkb3VibGUtY2hldnJvbi1sZWZ0JyxcbiAgRG91YmxlQ2hldnJvblJpZ2h0OiAnZG91YmxlLWNoZXZyb24tcmlnaHQnLFxuICBIZXB0YWdvbjogJ2hlcHRhZ29uJyxcbiAgSGVwdGFnb25JbnZlcnRlZDogJ2hlcHRhZ29uLWludmVydGVkJyxcbiAgSGVwdGFncmFtOiAnaGVwdGFncmFtJyxcbiAgSGVwdGFncmFtSW52ZXJ0ZWQ6ICdoZXB0YWdyYW0taW52ZXJ0ZWQnLFxuICBIZXhhZ29uOiAnaGV4YWdvbicsXG4gIEhleGFncmFtOiAnaGV4YWdyYW0nLFxuICBPY3RhZ29uOiAnb2N0YWdvbicsXG4gIE9jdGFncmFtOiAnb2N0YWdyYW0nLFxuICBQZW50YWdvbjogJ3BlbnRhZ29uJyxcbiAgUGVudGFnb25JbnZlcnRlZDogJ3BlbnRhZ29uLWludmVydGVkJyxcbiAgUGVudGFncmFtOiAncGVudGFncmFtJyxcbiAgUGVudGFncmFtSW52ZXJ0ZWQ6ICdwZW50YWdyYW0taW52ZXJ0ZWQnLFxuICBQbHVzOiAncGx1cycsXG4gIFNxdWFyZTogJ3NxdWFyZScsXG4gIFN0YXI6ICdwZW50YWdyYW0nLFxuICBTdGFySW52ZXJ0ZWQ6ICdwZW50YWdyYW0taW52ZXJ0ZWQnLFxuICBUZXRyYWdyYW06ICd0ZXRyYWdyYW0nLFxuICBUcmlhbmdsZTogJ3RyaWFuZ2xlJyxcbiAgVHJpYW5nbGVJbnZlcnRlZDogJ3RyaWFuZ2xlLWludmVydGVkJyxcbiAgVHJpYW5nbGVMZWZ0OiAndHJpYW5nbGUtbGVmdCcsXG4gIFRyaWFuZ2xlUmlnaHQ6ICd0cmlhbmdsZS1yaWdodCcsXG4gIFd5ZTogJ3d5ZScsXG4gIFd5ZUludmVydGVkOiAnd3llLWludmVydGVkJyxcbn07XG5cbi8qKiBSZXByZXNlbnRzIGEgc2luZ2xlIHRyZWUgbm9kZSAqL1xuZXhwb3J0IHR5cGUgUGh5bG9jYW52YXNUcmVlTm9kZSA9IE5vZGVUeXBlICYge1xuICBicmFuY2hMZW5ndGg6IG51bWJlcixcbiAgY2hpbGRyZW46IFBoeWxvY2FudmFzVHJlZU5vZGVbXSxcbiAgcGFyZW50PzogUGh5bG9jYW52YXNUcmVlTm9kZSxcbiAgaWQ6IHN0cmluZyxcbiAgaXNDb2xsYXBzZWQ6IGJvb2xlYW4sXG4gIGlzSGlkZGVuOiBib29sZWFuLFxuICBpc0xlYWY6IGJvb2xlYW4sXG4gIG5hbWU/OiBzdHJpbmcsXG4gIHBvc3RJbmRleDogbnVtYmVyLFxuICBwcmVJbmRleDogbnVtYmVyLFxuICB0b3RhbExlYXZlczogbnVtYmVyLFxuICB0b3RhbE5vZGVzOiBudW1iZXIsXG4gIHRvdGFsU3VidHJlZUxlbmd0aDogbnVtYmVyLFxuICB2aXNpYmxlTGVhdmVzOiBudW1iZXIsXG59XG5cbi8qXG5cbi8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RyZWVfdHJhdmVyc2FsI1Bvc3Qtb3JkZXJcbmZ1bmN0aW9uIGdldFBvc3RvcmRlclRyYXZlcnNhbDxUTm9kZSBleHRlbmRzIE5vZGVUeXBlPihyb290Tm9kZTogVE5vZGUpOiBUTm9kZVtdIHtcbiAgY29uc3Qgbm9kZXM6IFROb2RlW10gPSBbXTtcbiAgY29uc3QgcXVldWU6IFROb2RlW10gPSBbcm9vdE5vZGVdO1xuXG4gIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcbiAgICBjb25zdCBub2RlOiBUTm9kZSA9IHF1ZXVlLnBvcCgpITtcbiAgICBpZiAobm9kZS5jaGlsZHJlbilcbiAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHF1ZXVlLCBub2RlLmNoaWxkcmVuKTtcbiAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVzLnJldmVyc2UoKTtcbn1cblxuLy8gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVHJlZV90cmF2ZXJzYWwjUHJlLW9yZGVyXG5mdW5jdGlvbiBnZXRQcmVvcmRlclRyYXZlcnNhbDxUTm9kZSBleHRlbmRzIE5vZGVUeXBlPihyb290Tm9kZTogVE5vZGUpOiBUTm9kZVtdIHtcbiAgY29uc3Qgbm9kZXM6IFROb2RlW10gPSBbXTtcbiAgY29uc3QgcXVldWU6IFROb2RlW10gPSBbcm9vdE5vZGVdO1xuXG4gIHdoaWxlIChxdWV1ZS5sZW5ndGgpIHtcbiAgICBjb25zdCBub2RlOiBUTm9kZSA9IHF1ZXVlLnNoaWZ0KCkhO1xuICAgIG5vZGVzLnB1c2gobm9kZSk7XG4gICAgaWYgKG5vZGUuY2hpbGRyZW4pXG4gICAgICBBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShxdWV1ZSwgbm9kZS5jaGlsZHJlbik7XG4gIH1cblxuICByZXR1cm4gbm9kZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmVlVHJhdmVyc2FsKHJvb3ROb2RlOiBQaHlsb2NhbnZhc1RyZWVOb2RlLCB7dHJpbVF1b3RlcyA9IHRydWV9ID0ge30pIHtcbiAgcGVyZm9ybWFuY2UubWFyaygnZ2V0UG9zdG9yZGVyVHJhdmVyc2FsJyk7XG4gIGNvbnN0IHBvc3RvcmRlclRyYXZlcnNhbCA9IGdldFBvc3RvcmRlclRyYXZlcnNhbChyb290Tm9kZSk7XG4gIHBlcmZvcm1hbmNlLm1lYXN1cmUoJyAgICBnZXRQb3N0b3JkZXJUcmF2ZXJzYWwnLCAnZ2V0UG9zdG9yZGVyVHJhdmVyc2FsJyk7XG4gIHBlcmZvcm1hbmNlLm1hcmsoJ2dldFByZW9yZGVyVHJhdmVyc2FsJyk7XG4gIGNvbnN0IHByZW9yZGVyVHJhdmVyc2FsID0gZ2V0UHJlb3JkZXJUcmF2ZXJzYWwocm9vdE5vZGUpO1xuICBwZXJmb3JtYW5jZS5tZWFzdXJlKCcgICAgZ2V0UHJlb3JkZXJUcmF2ZXJzYWwnLCAnZ2V0UHJlb3JkZXJUcmF2ZXJzYWwnKTtcblxuICAvLyBEZXRlY3QgY2xhZG9ncmFtc1xuICBjb25zdCBpc0NsYWRvZ3JhbSA9IHBvc3RvcmRlclRyYXZlcnNhbC5ldmVyeSgoeCkgPT4gKHguYnJhbmNoTGVuZ3RoIHx8IHguYnJhbmNoX2xlbmd0aCB8fCAwKSA9PT0gMCk7XG4gIGlmIChpc0NsYWRvZ3JhbSkge1xuICAgIHJvb3ROb2RlLmJyYW5jaExlbmd0aCA9IDA7XG4gICAgZm9yIChsZXQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgcHJlb3JkZXJUcmF2ZXJzYWwubGVuZ3RoOyBub2RlSW5kZXgrKykge1xuICAgICAgY29uc3Qgbm9kZSA9IHByZW9yZGVyVHJhdmVyc2FsW25vZGVJbmRleF07XG4gICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pXG4gICAgICAgICAgY2hpbGQuYnJhbmNoTGVuZ3RoID0gbm9kZS5icmFuY2hMZW5ndGggKyAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHBlcmZvcm1hbmNlLm1hcmsoJ2JvdHRvbS11cCB0cmF2ZXJzYWwnKTtcbiAgLy8gYm90dG9tLXVwIHRyYXZlcnNhbCBzdGFydGluZyBmcm9tIGxlYXZlcyB0byByb290XG4gIGZvciAobGV0IG5vZGVJbmRleCA9IDA7IG5vZGVJbmRleCA8IHBvc3RvcmRlclRyYXZlcnNhbC5sZW5ndGg7IG5vZGVJbmRleCsrKSB7XG4gICAgY29uc3Qgbm9kZTogUGh5bG9jYW52YXNUcmVlTm9kZSA9IHBvc3RvcmRlclRyYXZlcnNhbFtub2RlSW5kZXhdO1xuICAgIG5vZGUucG9zdEluZGV4ID0gbm9kZUluZGV4O1xuICAgIG5vZGUuaXNMZWFmID0gIUFycmF5LmlzQXJyYXkobm9kZS5jaGlsZHJlbik7XG4gICAgbm9kZS5icmFuY2hMZW5ndGggPSBNYXRoLmFicyhub2RlLmJyYW5jaExlbmd0aCB8fCBub2RlLmJyYW5jaF9sZW5ndGggfHwgMCk7XG4gICAgZGVsZXRlIG5vZGUuYnJhbmNoX2xlbmd0aDtcbiAgICBpZiAobm9kZS5pc0xlYWYgJiYgdHlwZW9mIG5vZGUubmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmICh0cmltUXVvdGVzKVxuICAgICAgICBub2RlLmlkID0gbm9kZS5uYW1lLnRyaW0oKS5yZXBsYWNlKC9eWydcIl18WydcIl0kL2csICcnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbm9kZS5pZCA9IG5vZGUubmFtZTtcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZGVsZXRlIG5vZGUubmFtZTtcbiAgICB9XG4gICAgbm9kZS50b3RhbE5vZGVzID0gMTtcbiAgICBub2RlLnRvdGFsTGVhdmVzID0gMTtcbiAgICBub2RlLnRvdGFsU3VidHJlZUxlbmd0aCA9IDA7XG4gICAgaWYgKCFub2RlLmlzTGVhZikge1xuICAgICAgbm9kZS50b3RhbE5vZGVzID0gMTtcbiAgICAgIG5vZGUudG90YWxMZWF2ZXMgPSAwO1xuICAgICAgbGV0IHRvdGFsU3VidHJlZUxlbmd0aCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgbm9kZS50b3RhbE5vZGVzICs9IGNoaWxkLnRvdGFsTm9kZXM7XG4gICAgICAgIG5vZGUudG90YWxMZWF2ZXMgKz0gY2hpbGQudG90YWxMZWF2ZXM7XG4gICAgICAgIGlmIChjaGlsZC50b3RhbFN1YnRyZWVMZW5ndGggKyBjaGlsZC5icmFuY2hMZW5ndGggPiB0b3RhbFN1YnRyZWVMZW5ndGgpXG4gICAgICAgICAgdG90YWxTdWJ0cmVlTGVuZ3RoID0gY2hpbGQudG90YWxTdWJ0cmVlTGVuZ3RoICsgY2hpbGQuYnJhbmNoTGVuZ3RoO1xuICAgICAgICBjaGlsZC5wYXJlbnQgPSBub2RlO1xuICAgICAgfVxuICAgICAgbm9kZS50b3RhbFN1YnRyZWVMZW5ndGggPSB0b3RhbFN1YnRyZWVMZW5ndGg7XG4gICAgfVxuICB9XG4gIHBlcmZvcm1hbmNlLm1lYXN1cmUoJyAgICBib3R0b20tdXAgdHJhdmVyc2FsJywgJ2JvdHRvbS11cCB0cmF2ZXJzYWwnKTtcblxuICBwZXJmb3JtYW5jZS5tYXJrKCd0b3AtZG93biB0cmF2ZXJzYWwnKTtcbiAgY29uc3Qgbm9kZUJ5SWQ6IHsgW2lkOiBzdHJpbmddOiBQaHlsb2NhbnZhc1RyZWVOb2RlIH0gPSB7fTtcbiAgLy8gdG9wLWRvd24gdHJhdmVyc2FsIHN0YXJ0aW5nIGZyb20gcm9vdCB0byBsZWF2ZXNcbiAgZm9yIChsZXQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgcHJlb3JkZXJUcmF2ZXJzYWwubGVuZ3RoOyBub2RlSW5kZXgrKykge1xuICAgIGNvbnN0IG5vZGUgPSBwcmVvcmRlclRyYXZlcnNhbFtub2RlSW5kZXhdO1xuICAgIG5vZGUucHJlSW5kZXggPSBub2RlSW5kZXg7XG4gICAgaWYgKCFub2RlLmlkKVxuICAgICAgbm9kZS5pZCA9IG5vZGVJbmRleC50b1N0cmluZygpO1xuICAgIG5vZGVCeUlkW25vZGUuaWRdID0gbm9kZTtcbiAgICBub2RlLnZpc2libGVMZWF2ZXMgPSBub2RlLnRvdGFsTGVhdmVzO1xuICAgIG5vZGUuaXNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgICBub2RlLmlzSGlkZGVuID0gZmFsc2U7XG4gIH1cbiAgcGVyZm9ybWFuY2UubWVhc3VyZSgnICAgIHRvcC1kb3duIHRyYXZlcnNhbCcsICd0b3AtZG93biB0cmF2ZXJzYWwnKTtcblxuICByZXR1cm4ge1xuICAgIG5vZGVCeUlkLFxuICAgIHJvb3ROb2RlLFxuICAgIHBvc3RvcmRlclRyYXZlcnNhbCxcbiAgICBwcmVvcmRlclRyYXZlcnNhbCxcbiAgfTtcbn1cblxuLyoqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VOZXdpY2soczogc3RyaW5nKTogYW55IHtcbiAgY29uc3QgYW5jZXN0b3JzID0gW107XG4gIGxldCB0cmVlOiBOb2RlVHlwZSA9IHtuYW1lOiAnJ307XG4gIGNvbnN0IHRva2VucyA9IHMuc3BsaXQoL1xccyooO3xcXCh8XFwpfCx8OilcXHMqLyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgIGNhc2UgJygnOiB7IC8vIG5ldyBjaGlsZHJlblxuICAgICAgY29uc3Qgc3VidHJlZTogTm9kZVR5cGUgPSB7bmFtZTogJyd9O1xuICAgICAgdHJlZS5jaGlsZHJlbiA9IFtzdWJ0cmVlXTtcbiAgICAgIGFuY2VzdG9ycy5wdXNoKHRyZWUpO1xuICAgICAgdHJlZSA9IHN1YnRyZWU7XG4gICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnLCc6IHsgLy8gYW5vdGhlciBicmFuY2hcbiAgICAgIGNvbnN0IHN1YnRyZWU6IE5vZGVUeXBlID0ge25hbWU6ICcnfTtcbiAgICAgIGFuY2VzdG9yc1thbmNlc3RvcnMubGVuZ3RoIC0gMV0uY2hpbGRyZW4hLnB1c2goc3VidHJlZSk7XG4gICAgICB0cmVlID0gc3VidHJlZTtcbiAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICcpJzogLy8gb3B0aW9uYWwgbmFtZSBuZXh0XG4gICAgICB0cmVlID0gYW5jZXN0b3JzLnBvcCgpITtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJzonOiAvLyBvcHRpb25hbCBsZW5ndGggbmV4dFxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvbnN0IHggPSB0b2tlbnNbaSAtIDFdO1xuICAgICAgaWYgKHggPT0gJyknIHx8IHggPT0gJygnIHx8IHggPT0gJywnKVxuICAgICAgICB0cmVlLm5hbWUgPSB0b2tlbjtcbiAgICAgIGVsc2UgaWYgKHggPT0gJzonKVxuICAgICAgICB0cmVlLmJyYW5jaF9sZW5ndGggPSBwYXJzZUZsb2F0KHRva2VuKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRyZWU7XG59XG4iXX0=
|
package/src/seq-palettes.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export class SeqPaletteBase {
|
|
2
|
-
constructor(palette) {
|
|
3
|
-
this._palette = palette;
|
|
4
|
-
}
|
|
5
2
|
static makePalette(dt, simplified = false, PaletteType = SeqPaletteBase) {
|
|
6
3
|
const palette = {};
|
|
7
4
|
dt.forEach((cp) => {
|
|
@@ -13,6 +10,9 @@ export class SeqPaletteBase {
|
|
|
13
10
|
});
|
|
14
11
|
return new PaletteType(palette);
|
|
15
12
|
}
|
|
13
|
+
constructor(palette) {
|
|
14
|
+
this._palette = palette;
|
|
15
|
+
}
|
|
16
16
|
get(m) {
|
|
17
17
|
return this._palette[m];
|
|
18
18
|
}
|
|
@@ -41,4 +41,4 @@ SeqPaletteBase.colourPalette = {
|
|
|
41
41
|
'yellow': ['rgb(188,189,34)'],
|
|
42
42
|
'white': ['rgb(230,230,230)'],
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxLXBhbGV0dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VxLXBhbGV0dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxNQUFNLE9BQU8sY0FBYztJQTJCZixNQUFNLENBQUMsV0FBVyxDQUFDLEVBQXdCLEVBQ25ELFVBQVUsR0FBRyxLQUFLLEVBQUUsY0FBcUMsY0FBYztRQUV2RSxNQUFNLE9BQU8sR0FBOEIsRUFBRSxDQUFDO1FBQzlDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNoQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBSUQsWUFBWSxPQUFnQztRQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRU0sR0FBRyxDQUFDLENBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7O0FBaERhLDZCQUFjLEdBQUcsa0JBQWtCLENBQUM7QUFFbEQsNENBQTRDO0FBQzlCLDRCQUFhLEdBQWdDO0lBQ3pELFFBQVEsRUFBRSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDO0lBQzFGLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQjtRQUNwRyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztJQUNuRixVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0I7UUFDL0csbUJBQW1CLENBQUM7SUFDdEIsU0FBUyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7SUFDdkUsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7SUFDN0MsU0FBUyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUM7SUFDckUsV0FBVyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUM7SUFDckQsWUFBWSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUM7SUFDOUYsWUFBWSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7SUFDMUUsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDdEYsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDN0MsYUFBYSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUM7SUFDL0UsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7SUFDeEYsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUM7SUFDNUIsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7SUFDL0MsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUM7SUFDMUYsUUFBUSxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDN0IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7Q0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VxUGFsZXR0ZSB7XG4gIC8vIFRoZXJlIGFyZSB0b28gbXVjaCBwcm9ibGVtIHdpdGggaW5kZXhlciBwcm9wZXJ0eSBpbiB0eXBlc2NyaXB0LlxuICAvLyAvKipcbiAgLy8gICogQHBhcmFtIHtzdHJpbmd9IG0gTW9ub21lciBjaGFyYWN0ZXJcbiAgLy8gICogQHJldHVybiB7c3RyaW5nfSBDb2xvclxuICAvLyAgKi9cbiAgLy8gW206IHN0cmluZ106IHN0cmluZztcbiAgLyoqIE1vbm9tZXIgY29sb3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IG0gTW9ub21lclxuICAgKi9cbiAgZ2V0KG06IHN0cmluZyk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFNlcVBhbGV0dGVCYXNlIGltcGxlbWVudHMgU2VxUGFsZXR0ZSB7XG4gIHB1YmxpYyBzdGF0aWMgdW5kZWZpbmVkQ29sb3IgPSAncmdiKDEwMCwxMDAsMTAwKSc7XG5cbiAgLyoqIFBhbGV0dGUgd2l0aCBzaGFkZXMgb2YgcHJpbWFyeSBjb2xvcnMgKi9cbiAgcHVibGljIHN0YXRpYyBjb2xvdXJQYWxldHRlOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7XG4gICAgJ29yYW5nZSc6IFsncmdiKDI1NSwxODcsMTIwKScsICdyZ2IoMjQ1LDE2NywxMDApJywgJ3JnYigyMzUsMTM3LDcwKScsICdyZ2IoMjA1LCAxMTEsIDcxKSddLFxuICAgICdhbGxfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJywgJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJyxcbiAgICAgICdyZ2IoMjQsMTEwLDc5KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnYWxsX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDEyMiwgMTAyLCAxODkpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDE0MSwgMTI0LCAyMTcpJyxcbiAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxuICB9O1xuXG4gIHByb3RlY3RlZCBzdGF0aWMgbWFrZVBhbGV0dGUoZHQ6IFtzdHJpbmdbXSwgc3RyaW5nXVtdLFxuICAgIHNpbXBsaWZpZWQgPSBmYWxzZSwgUGFsZXR0ZVR5cGU6IHR5cGVvZiBTZXFQYWxldHRlQmFzZSA9IFNlcVBhbGV0dGVCYXNlXG4gICkge1xuICAgIGNvbnN0IHBhbGV0dGU6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBkdC5mb3JFYWNoKChjcCkgPT4ge1xuICAgICAgY29uc3Qgb2JqTGlzdCA9IGNwWzBdO1xuICAgICAgY29uc3QgY29sb3VyID0gY3BbMV07XG4gICAgICBvYmpMaXN0LmZvckVhY2goKG9iaiwgaW5kKSA9PiB7XG4gICAgICAgIHBhbGV0dGVbb2JqXSA9IHRoaXMuY29sb3VyUGFsZXR0ZVtjb2xvdXJdW3NpbXBsaWZpZWQgPyAwIDogaW5kXTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXcgUGFsZXR0ZVR5cGUocGFsZXR0ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9wYWxldHRlOiB7IFttOiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihwYWxldHRlOiB7IFttOiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHRoaXMuX3BhbGV0dGUgPSBwYWxldHRlO1xuICB9XG5cbiAgcHVibGljIGdldChtOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9wYWxldHRlW21dO1xuICB9XG59XG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sequence-encoder.d.ts","sourceRoot":"","sources":["sequence-encoder.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"sequence-encoder.d.ts","sourceRoot":"","sources":["sequence-encoder.ts"],"names":[],"mappings":"AAEA,KAAK,cAAc,GAAG;IAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,CAAC;AAgE/C;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,MAAM,EAAE;QAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAC;gBAE/B,KAAK,GAAE,MAAqB;IAMxC;;;;;;;SAOK;IACL,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAkB7C;;;;;;;SAOK;IACL,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIxC;;;;;;;SAOK;IACL,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAItC;;;;;;SAMK;IACE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAclC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI5C;;;;;;SAMK;IACE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;CAYvC"}
|
package/src/types/index.d.ts
CHANGED
package/src/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAIhC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,WAEpC;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC7B;AAED,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAIhC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,WAEpC;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/F,IAAI,EAAE;QAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAA;CAChC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACrE,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IACtE,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,QAAQ,IAAI,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;CAClC"}
|
|
@@ -2,12 +2,6 @@ import * as DG from 'datagrok-api/dg';
|
|
|
2
2
|
import { UnitsHandler } from './units-handler';
|
|
3
3
|
/** Class for parsing FASTA files */
|
|
4
4
|
export class FastaFileHandler {
|
|
5
|
-
constructor(fileContent) {
|
|
6
|
-
this._descriptionsArray = []; // parsed FASTA descriptions
|
|
7
|
-
this._sequencesArray = []; // parsed FASTA sequeces
|
|
8
|
-
this._fileContent = fileContent;
|
|
9
|
-
this.parseColumns();
|
|
10
|
-
}
|
|
11
5
|
// private _columnsParsed: boolean = false;
|
|
12
6
|
get descriptionsArray() { return this._descriptionsArray; }
|
|
13
7
|
get sequencesArray() { return this._sequencesArray; }
|
|
@@ -55,5 +49,11 @@ export class FastaFileHandler {
|
|
|
55
49
|
sequenceCol,
|
|
56
50
|
])];
|
|
57
51
|
}
|
|
52
|
+
constructor(fileContent) {
|
|
53
|
+
this._descriptionsArray = []; // parsed FASTA descriptions
|
|
54
|
+
this._sequencesArray = []; // parsed FASTA sequeces
|
|
55
|
+
this._fileContent = fileContent;
|
|
56
|
+
this.parseColumns();
|
|
57
|
+
}
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdGEtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZhc3RhLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0QyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFN0Msb0NBQW9DO0FBQ3BDLE1BQU0sT0FBTyxnQkFBZ0I7SUFJM0IsMkNBQTJDO0lBRTNDLElBQVcsaUJBQWlCLEtBQWUsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO0lBRTVFLElBQVcsY0FBYyxLQUFlLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7SUFFdEU7Ozs7Ozs7T0FPRztJQUNLLGtCQUFrQixDQUN4QixlQUF1QixFQUN2QixhQUFxQjtRQUVyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEUsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELDJEQUEyRDtJQUNuRCxZQUFZO1FBQ2xCLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLDRDQUE0QztRQUV2RSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDeEIsSUFBSSxLQUFLLENBQUMsQ0FBQyxtREFBbUQ7UUFDOUQsT0FBTyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDNUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDMUMsSUFBSSxlQUFlLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuRixlQUFlLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4RSw4QkFBOEI7SUFDaEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXO1FBQ2hCLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFGLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDM0UsV0FBVyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUUvQyw2Q0FBNkM7UUFDN0MsWUFBWSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWhELE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztnQkFDL0Isb0JBQW9CO2dCQUNwQixXQUFXO2FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsWUFBWSxXQUFtQjtRQTlEdkIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDLENBQUMsNEJBQTRCO1FBQy9ELG9CQUFlLEdBQWEsRUFBRSxDQUFDLENBQUMsd0JBQXdCO1FBOEQ5RCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogRG8gbm90IGNoYW5nZSB0aGVzZSBpbXBvcnQgbGluZXMgdG8gbWF0Y2ggZXh0ZXJuYWwgbW9kdWxlcyBpbiB3ZWJwYWNrIGNvbmZpZ3VyYXRpb24gKi9cbmltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7VW5pdHNIYW5kbGVyfSBmcm9tICcuL3VuaXRzLWhhbmRsZXInO1xuXG4vKiogQ2xhc3MgZm9yIHBhcnNpbmcgRkFTVEEgZmlsZXMgKi9cbmV4cG9ydCBjbGFzcyBGYXN0YUZpbGVIYW5kbGVyIHtcbiAgcHJpdmF0ZSBfZmlsZUNvbnRlbnQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfZGVzY3JpcHRpb25zQXJyYXk6IHN0cmluZ1tdID0gW107IC8vIHBhcnNlZCBGQVNUQSBkZXNjcmlwdGlvbnNcbiAgcHJpdmF0ZSBfc2VxdWVuY2VzQXJyYXk6IHN0cmluZ1tdID0gW107IC8vIHBhcnNlZCBGQVNUQSBzZXF1ZWNlc1xuICAvLyBwcml2YXRlIF9jb2x1bW5zUGFyc2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdGlvbnNBcnJheSgpOiBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9kZXNjcmlwdGlvbnNBcnJheTsgfVxuXG4gIHB1YmxpYyBnZXQgc2VxdWVuY2VzQXJyYXkoKTogc3RyaW5nW10geyByZXR1cm4gdGhpcy5fc2VxdWVuY2VzQXJyYXk7IH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBwYXJzZSBhIG1hY3JvbW9sZWN1bGUgZnJvbSBhIEZBU1RBIGZpbGUgKHN0cmluZylcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0T2ZTZXF1ZW5jZSAgaW5kZXggb2YgbWFjcm9tb2xlY3VsZSBzdWJzdHJpbmcgYmVnaW5uaW5nXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBlbmRPZlNlcXVlbmNlICBpbmRleCBvZiBtYWNyb21vbGVjdWxlIHN1YnN0cmluZyBlbmRcblxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IHBhcnNlZCBtYWNyb21vbGVjdWxlXG4gICAqL1xuICBwcml2YXRlIHBhcnNlTWFjcm9tb2xlY3VsZShcbiAgICBzdGFydE9mU2VxdWVuY2U6IG51bWJlcixcbiAgICBlbmRPZlNlcXVlbmNlOiBudW1iZXJcbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZXEgPSB0aGlzLl9maWxlQ29udGVudC5zbGljZShzdGFydE9mU2VxdWVuY2UsIGVuZE9mU2VxdWVuY2UpO1xuICAgIGNvbnN0IHNlcUFycmF5ID0gc2VxLnNwbGl0KC9cXHMvKTtcbiAgICByZXR1cm4gc2VxQXJyYXkuam9pbignJyk7XG4gIH1cblxuICAvKiogUGFyc2UgZGVzY3JpcHRpb25zIGFuZCBzZXF1ZW5jZXMgZnJvbSBhIEZBU1RBIHN0cmluZyAqL1xuICBwcml2YXRlIHBhcnNlQ29sdW1ucygpIHtcbiAgICBjb25zdCByZWdleCA9IC9ePiguKikkL2dtOyAvLyBtYXRjaCAnZGVzY3JpcHRpb24nIGxpbmVzIHN0YXJ0aW5nIHdpdGggPlxuXG4gICAgbGV0IHN0YXJ0T2ZTZXF1ZW5jZSA9IDA7XG4gICAgbGV0IG1hdGNoOyAvLyBtYXRjaC5pbmRleCBpcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBtYXRjaGVkIGxpbmVcbiAgICB3aGlsZSAobWF0Y2ggPSByZWdleC5leGVjKHRoaXMuX2ZpbGVDb250ZW50KSkge1xuICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB0aGlzLl9maWxlQ29udGVudC5zdWJzdHJpbmcobWF0Y2guaW5kZXggKyAxLCByZWdleC5sYXN0SW5kZXgpO1xuICAgICAgdGhpcy5fZGVzY3JpcHRpb25zQXJyYXkucHVzaChkZXNjcmlwdGlvbik7XG4gICAgICBpZiAoc3RhcnRPZlNlcXVlbmNlICE9PSAwKVxuICAgICAgICB0aGlzLl9zZXF1ZW5jZXNBcnJheS5wdXNoKHRoaXMucGFyc2VNYWNyb21vbGVjdWxlKHN0YXJ0T2ZTZXF1ZW5jZSwgbWF0Y2guaW5kZXgpKTtcbiAgICAgIHN0YXJ0T2ZTZXF1ZW5jZSA9IHJlZ2V4Lmxhc3RJbmRleCArIDE7XG4gICAgfVxuICAgIHRoaXMuX3NlcXVlbmNlc0FycmF5LnB1c2godGhpcy5wYXJzZU1hY3JvbW9sZWN1bGUoc3RhcnRPZlNlcXVlbmNlLCAtMSkpO1xuXG4gICAgLy8gdGhpcy5fY29sdW1uc1BhcnNlZCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRmlsZS1oYW5kbGVyIG1ldGhvZCBmb3IgaW1wb3J0IGFzIEZBU1RBXG4gICAqXG4gICAqIEByZXR1cm4ge0RHLkRhdGFGcmFtZVtdfSBkYXRhZnJhbWUgd2l0aCBwYXJzZWQgRkFTVEEgY29udGVudFxuICAgKi9cbiAgcHVibGljIGltcG9ydEZhc3RhKCk6IERHLkRhdGFGcmFtZSBbXSB7XG4gICAgY29uc3QgZGVzY3JpcHRpb25zQXJyYXlDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ2Rlc2NyaXB0aW9uJywgdGhpcy5kZXNjcmlwdGlvbnNBcnJheSk7XG4gICAgY29uc3Qgc2VxdWVuY2VDb2wgPSBERy5Db2x1bW4uZnJvbVN0cmluZ3MoJ3NlcXVlbmNlJywgdGhpcy5zZXF1ZW5jZXNBcnJheSk7XG4gICAgc2VxdWVuY2VDb2wuc2VtVHlwZSA9IERHLlNFTVRZUEUuTUFDUk9NT0xFQ1VMRTtcblxuICAgIC8vIGhlcmUgc2hvdWxkIGdvIHRoZSBjb2RlIGZyb20gdW5pdHMgaGFuZGxlclxuICAgIFVuaXRzSGFuZGxlci5zZXRVbml0c1RvRmFzdGFDb2x1bW4oc2VxdWVuY2VDb2wpO1xuXG4gICAgcmV0dXJuIFtERy5EYXRhRnJhbWUuZnJvbUNvbHVtbnMoW1xuICAgICAgZGVzY3JpcHRpb25zQXJyYXlDb2wsXG4gICAgICBzZXF1ZW5jZUNvbCxcbiAgICBdKV07XG4gIH1cblxuICBjb25zdHJ1Y3RvcihmaWxlQ29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmlsZUNvbnRlbnQgPSBmaWxlQ29udGVudDtcbiAgICB0aGlzLnBhcnNlQ29sdW1ucygpO1xuICB9XG59XG4iXX0=
|