@datagrok-libraries/bio 0.0.4 → 0.0.8
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/.eslintrc.json +51 -29
- package/detectors.js +47 -0
- package/package.json +42 -42
- package/src/aminoacids.d.ts +31 -0
- package/src/aminoacids.d.ts.map +1 -0
- package/src/aminoacids.js +226 -0
- package/src/index.d.ts +7 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +6 -0
- package/src/index.ts +8 -0
- package/src/nucleotides.d.ts +12 -0
- package/src/nucleotides.d.ts.map +1 -0
- package/src/nucleotides.js +27 -0
- package/src/package.d.ts +1 -0
- package/src/package.d.ts.map +1 -0
- package/src/package.js +2 -0
- package/src/seq-palettes.d.ts +16 -0
- package/src/seq-palettes.d.ts.map +1 -0
- package/src/seq-palettes.js +38 -0
- package/src/sequence-encoder.d.ts +61 -61
- package/src/sequence-encoder.js +155 -155
- package/src/viewers/web-logo.d.ts +67 -0
- package/src/viewers/web-logo.d.ts.map +1 -0
- package/src/viewers/web-logo.js +345 -0
- package/tsconfig.json +71 -71
package/.eslintrc.json
CHANGED
|
@@ -1,29 +1,51 @@
|
|
|
1
|
-
{
|
|
2
|
-
"env": {
|
|
3
|
-
"browser": true,
|
|
4
|
-
"es2021": true
|
|
5
|
-
},
|
|
6
|
-
"extends": [
|
|
7
|
-
"google"
|
|
8
|
-
],
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"error",
|
|
20
|
-
|
|
21
|
-
],
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
{
|
|
2
|
+
"env": {
|
|
3
|
+
"browser": true,
|
|
4
|
+
"es2021": true
|
|
5
|
+
},
|
|
6
|
+
"extends": [
|
|
7
|
+
"google"
|
|
8
|
+
],
|
|
9
|
+
"parser": "@typescript-eslint/parser",
|
|
10
|
+
"parserOptions": {
|
|
11
|
+
"ecmaVersion": 12,
|
|
12
|
+
"sourceType": "module"
|
|
13
|
+
},
|
|
14
|
+
"plugins": [
|
|
15
|
+
"@typescript-eslint"
|
|
16
|
+
],
|
|
17
|
+
"rules": {
|
|
18
|
+
"indent": [
|
|
19
|
+
"error",
|
|
20
|
+
2
|
|
21
|
+
],
|
|
22
|
+
"max-len": [
|
|
23
|
+
"error",
|
|
24
|
+
120
|
|
25
|
+
],
|
|
26
|
+
"no-unused-vars": "warn",
|
|
27
|
+
"require-jsdoc": "off",
|
|
28
|
+
"spaced-comment": "off",
|
|
29
|
+
"linebreak-style": "off",
|
|
30
|
+
"curly": [
|
|
31
|
+
"error",
|
|
32
|
+
"multi-or-nest",
|
|
33
|
+
"consistent"
|
|
34
|
+
],
|
|
35
|
+
"brace-style": [
|
|
36
|
+
"error",
|
|
37
|
+
"1tbs",
|
|
38
|
+
{
|
|
39
|
+
"allowSingleLine": true
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"block-spacing": [2, "always"],
|
|
43
|
+
"comma-dangle": ["error", {
|
|
44
|
+
"arrays": "only-multiline",
|
|
45
|
+
"functions": "never",
|
|
46
|
+
"objects": "only-multiline",
|
|
47
|
+
"imports": "only-multiline"
|
|
48
|
+
}],
|
|
49
|
+
"guard-for-in": "off"
|
|
50
|
+
}
|
|
51
|
+
}
|
package/detectors.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import * as grok from 'datagrok-api/grok';
|
|
2
|
+
import * as ui from 'datagrok-api/ui';
|
|
3
|
+
import * as DG from 'datagrok-api/dg';
|
|
4
|
+
import {Aminoacids} from './src/aminoacids';
|
|
5
|
+
import {Nucleotides} from './src/nucleotides';
|
|
6
|
+
|
|
1
7
|
/**
|
|
2
8
|
* The class contains semantic type detectors.
|
|
3
9
|
* Detectors are functions tagged with `DG.FUNC_TYPES.SEM_TYPE_DETECTOR`.
|
|
@@ -6,4 +12,45 @@
|
|
|
6
12
|
* Follow this naming convention to ensure that your detectors are properly loaded.
|
|
7
13
|
*/
|
|
8
14
|
class BioPackageDetectors extends DG.Package {
|
|
15
|
+
//tags: semTypeDetector
|
|
16
|
+
//input: column col
|
|
17
|
+
//output: string semType
|
|
18
|
+
detectNucleotidesSeq(col) {
|
|
19
|
+
const alphabet = Nucleotides.Names + {'-': 'gap'};
|
|
20
|
+
return DG.Detector.sampleCategories(col, (s) => {
|
|
21
|
+
return s.split('').every((n) => n in alphabet);
|
|
22
|
+
}) ? Nucleotides.SemType : null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
//tags: semTypeDetector
|
|
26
|
+
//input: column col
|
|
27
|
+
//output: string semType
|
|
28
|
+
detectAminoacidsSeq(col) {
|
|
29
|
+
const alphabet = Aminoacids.Names + {'-': 'gap'};
|
|
30
|
+
return DG.Detector.sampleCategories(col, (s) => {
|
|
31
|
+
return s.split('').every((aa) => aa in alphabet);
|
|
32
|
+
}) ? Aminoacids.SemType : null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//tags: semTypeDetector
|
|
36
|
+
//input: column col
|
|
37
|
+
//output: string semType
|
|
38
|
+
detectMultipleAlignmentNucleotidesSeq(col) {
|
|
39
|
+
const alphabet = Nucleotides.Names + {'-': 'gap'};
|
|
40
|
+
const len = col.get(0).length;
|
|
41
|
+
return DG.Detector.sampleCategories(col, (s) => {
|
|
42
|
+
return s.length == len && s.split('').every((n) => n in alphabet);
|
|
43
|
+
}) ? Nucleotides.SemTypeMultipleAlignment : null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//tags: semTypeDetector
|
|
47
|
+
//input: column col
|
|
48
|
+
//output: string semType
|
|
49
|
+
detectMultipleAlignmentAminoacidsSeq(col) {
|
|
50
|
+
const alphabet = Aminoacids.Names + {'-': 'gap'};
|
|
51
|
+
const len = col.get(0).length;
|
|
52
|
+
return DG.Detector.sampleCategories(col, (s) => {
|
|
53
|
+
return s.length == len && s.split('').every((aa) => aa in alphabet);
|
|
54
|
+
}) ? Aminoacids.SemTypeMultipleAlignment : null;
|
|
55
|
+
}
|
|
9
56
|
}
|
package/package.json
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@datagrok-libraries/bio",
|
|
3
|
-
"publishConfig": {
|
|
4
|
-
"access": "public"
|
|
5
|
-
},
|
|
6
|
-
"beta": true,
|
|
7
|
-
"friendlyName": "Datagrok bio library",
|
|
8
|
-
"version": "0.0.
|
|
9
|
-
"description": "",
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
"@datagrok-libraries/utils": ">=0.0.
|
|
13
|
-
"cash-dom": "latest",
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"link": "npm link",
|
|
28
|
-
"link-api": "npm link datagrok-api",
|
|
29
|
-
"link-utils": "npm link @datagrok-libraries/utils",
|
|
30
|
-
"link-all": "npm link datagrok-api @datagrok-libraries/utils",
|
|
31
|
-
"debug-bio": "grok publish --rebuild",
|
|
32
|
-
"release-bio": "grok publish --rebuild --release",
|
|
33
|
-
"build-bio": "tsc",
|
|
34
|
-
"build": "tsc",
|
|
35
|
-
"debug-bio-public": "grok publish public --rebuild",
|
|
36
|
-
"release-bio-public": "grok publish public --rebuild --release",
|
|
37
|
-
"debug-bio-local": "grok publish local --rebuild",
|
|
38
|
-
"release-bio-local": "grok publish local --rebuild --release",
|
|
39
|
-
"lint": "eslint src
|
|
40
|
-
"lint-fix": "eslint src
|
|
41
|
-
}
|
|
42
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@datagrok-libraries/bio",
|
|
3
|
+
"publishConfig": {
|
|
4
|
+
"access": "public"
|
|
5
|
+
},
|
|
6
|
+
"beta": true,
|
|
7
|
+
"friendlyName": "Datagrok bio library",
|
|
8
|
+
"version": "0.0.8",
|
|
9
|
+
"description": "",
|
|
10
|
+
"main": "src/index.ts",
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@datagrok-libraries/utils": ">=0.0.22",
|
|
13
|
+
"cash-dom": "latest",
|
|
14
|
+
"datagrok-api": ">=0.108.0",
|
|
15
|
+
"dayjs": "latest",
|
|
16
|
+
"rxjs": "^6.5.5"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@typescript-eslint/eslint-plugin": "^4.29.1",
|
|
20
|
+
"@typescript-eslint/parser": "^4.29.1",
|
|
21
|
+
"eslint": "latest",
|
|
22
|
+
"eslint-config-google": "latest",
|
|
23
|
+
"ts-loader": "^9.2.6",
|
|
24
|
+
"typescript": "^4.2.3"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"link": "npm link",
|
|
28
|
+
"link-api": "npm link datagrok-api",
|
|
29
|
+
"link-utils": "npm link @datagrok-libraries/utils",
|
|
30
|
+
"link-all": "npm link datagrok-api @datagrok-libraries/utils",
|
|
31
|
+
"debug-bio": "grok publish --rebuild",
|
|
32
|
+
"release-bio": "grok publish --rebuild --release",
|
|
33
|
+
"build-bio": "tsc",
|
|
34
|
+
"build": "tsc",
|
|
35
|
+
"debug-bio-public": "grok publish public --rebuild",
|
|
36
|
+
"release-bio-public": "grok publish public --rebuild --release",
|
|
37
|
+
"debug-bio-local": "grok publish local --rebuild",
|
|
38
|
+
"release-bio-local": "grok publish local --rebuild --release",
|
|
39
|
+
"lint": "eslint \"./src/**/*.ts\"",
|
|
40
|
+
"lint-fix": "eslint \"./src/**/*.ts\" --fix"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { StringDictionary } from '@datagrok-libraries/utils/src/type-declarations';
|
|
2
|
+
import { SeqPalette, SeqPaletteBase } from './seq-palettes';
|
|
3
|
+
export declare class AminoacidsPalettes extends SeqPaletteBase {
|
|
4
|
+
private static lesk;
|
|
5
|
+
static get Lesk(): SeqPalette;
|
|
6
|
+
private static grokGroups;
|
|
7
|
+
static get GrokGroups(): SeqPalette;
|
|
8
|
+
private static rasMol;
|
|
9
|
+
static get RasMol(): SeqPalette;
|
|
10
|
+
}
|
|
11
|
+
export declare class Aminoacids {
|
|
12
|
+
static readonly SemType: string;
|
|
13
|
+
static readonly SemTypeMultipleAlignment: string;
|
|
14
|
+
static undefinedColor: string;
|
|
15
|
+
static Names: StringDictionary;
|
|
16
|
+
static AASmiles: StringDictionary;
|
|
17
|
+
static AASmilesTruncated: StringDictionary;
|
|
18
|
+
/** TODO: Full?
|
|
19
|
+
*/
|
|
20
|
+
static AAFullNames: StringDictionary;
|
|
21
|
+
static getPalette(scheme?: string): SeqPalette;
|
|
22
|
+
/**
|
|
23
|
+
* Returns divided amino acid with its content in the bracket, if the content is number, then its omitted
|
|
24
|
+
*
|
|
25
|
+
* @param {string} c raw amino
|
|
26
|
+
* @return {[string, string]} outer and inner content
|
|
27
|
+
*/
|
|
28
|
+
static getInnerOuter(c: string): [string, string];
|
|
29
|
+
static getColorAAPivot(monomer?: string, scheme?: 'grok'): [string, string, string, number];
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=aminoacids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aminoacids.d.ts","sourceRoot":"","sources":["aminoacids.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AACjF,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE1D,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAa;IAEhC,WAAkB,IAAI,IAAI,UAAU,CAWnC;IAED,OAAO,CAAC,MAAM,CAAC,UAAU,CAAa;IAEtC,WAAkB,UAAU,IAAI,UAAU,CAYzC;IAED,OAAO,CAAC,MAAM,CAAC,MAAM,CAAa;IAElC,WAAkB,MAAM,IAAI,UAAU,CA4BrC;CACF;AAED,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAgB;IAE/C,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAiC;IAEjF,MAAM,CAAC,cAAc,SAAsB;IAE3C,OAAc,KAAK,EAAE,gBAAgB,CAqBnC;IAEF,OAAc,QAAQ,EAAE,gBAAgB,CAqBtC;IAEF,OAAc,iBAAiB,EAAE,gBAAgB,CAqB/C;IAEF;OACG;IACH,OAAc,WAAW,EAAE,gBAAgB,CAqBzC;WAEY,UAAU,CAAC,MAAM,GAAE,MAAe,GAAG,UAAU;IAW7D;;;;;OAKG;WACW,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;WAmB1C,eAAe,CAAC,OAAO,GAAE,MAAW,EAAE,MAAM,GAAE,MAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CA6C/G"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { SeqPaletteBase } from './seq-palettes';
|
|
2
|
+
export class AminoacidsPalettes extends SeqPaletteBase {
|
|
3
|
+
static get Lesk() {
|
|
4
|
+
if (this.lesk === void 0) {
|
|
5
|
+
this.lesk = this.makePalette([
|
|
6
|
+
[['G', 'A', 'S', 'T'], 'orange'],
|
|
7
|
+
[['C', 'V', 'I', 'L', 'P', 'F', 'Y', 'M', 'W'], 'all_green'],
|
|
8
|
+
[['N', 'Q', 'H'], 'magenta'],
|
|
9
|
+
[['D', 'E'], 'red'],
|
|
10
|
+
[['K', 'R'], 'all_blue'],
|
|
11
|
+
]);
|
|
12
|
+
}
|
|
13
|
+
return this.lesk;
|
|
14
|
+
}
|
|
15
|
+
static get GrokGroups() {
|
|
16
|
+
if (this.grokGroups === void 0) {
|
|
17
|
+
this.grokGroups = this.makePalette([
|
|
18
|
+
[['C', 'U'], 'yellow'],
|
|
19
|
+
[['G', 'P'], 'red'],
|
|
20
|
+
[['A', 'V', 'I', 'L', 'M', 'F', 'Y', 'W'], 'all_green'],
|
|
21
|
+
[['R', 'H', 'K'], 'light_blue'],
|
|
22
|
+
[['D', 'E'], 'dark_blue'],
|
|
23
|
+
[['S', 'T', 'N', 'Q'], 'orange'],
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
return this.grokGroups;
|
|
27
|
+
}
|
|
28
|
+
static get RasMol() {
|
|
29
|
+
if (this.rasMol === void 0) {
|
|
30
|
+
this.rasMol = {
|
|
31
|
+
// http://acces.ens-lyon.fr/biotic/rastop/help/colour.htm
|
|
32
|
+
'D': '#E60A0A',
|
|
33
|
+
'E': '#E60A0A',
|
|
34
|
+
'C': '#E6E600',
|
|
35
|
+
'M': '#E6E600',
|
|
36
|
+
'K': '#145AFF',
|
|
37
|
+
'R': '#145AFF',
|
|
38
|
+
'S': '#FA9600',
|
|
39
|
+
'T': '#FA9600',
|
|
40
|
+
'F': '#3232AA',
|
|
41
|
+
'Y': '#3232AA',
|
|
42
|
+
'N': '#00DCDC',
|
|
43
|
+
'Q': '#00DCDC',
|
|
44
|
+
'G': '#EBEBEB',
|
|
45
|
+
'L': '#0F820F',
|
|
46
|
+
'V': '#0F820F',
|
|
47
|
+
'I': '#0F820F',
|
|
48
|
+
'A': '#C8C8C8',
|
|
49
|
+
'W': '#B45AB4',
|
|
50
|
+
'H': '#8282D2',
|
|
51
|
+
'P': '#DC9682',
|
|
52
|
+
'others': '#BEA06E',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
return this.rasMol;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export class Aminoacids {
|
|
59
|
+
static getPalette(scheme = 'grok') {
|
|
60
|
+
switch (scheme) {
|
|
61
|
+
case 'grok':
|
|
62
|
+
return AminoacidsPalettes.GrokGroups;
|
|
63
|
+
case 'lesk':
|
|
64
|
+
return AminoacidsPalettes.Lesk;
|
|
65
|
+
default:
|
|
66
|
+
throw new Error(`ChemPalette: scheme \`${scheme}\` does not exist`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns divided amino acid with its content in the bracket, if the content is number, then its omitted
|
|
71
|
+
*
|
|
72
|
+
* @param {string} c raw amino
|
|
73
|
+
* @return {[string, string]} outer and inner content
|
|
74
|
+
*/
|
|
75
|
+
static getInnerOuter(c) {
|
|
76
|
+
let isInner = 0;
|
|
77
|
+
let inner = '';
|
|
78
|
+
let outer = '';
|
|
79
|
+
for (const char of c) {
|
|
80
|
+
if (char == '(')
|
|
81
|
+
isInner++;
|
|
82
|
+
else if (char == ')')
|
|
83
|
+
isInner--;
|
|
84
|
+
else if (isInner)
|
|
85
|
+
inner += char;
|
|
86
|
+
else
|
|
87
|
+
outer += char;
|
|
88
|
+
}
|
|
89
|
+
return !isNaN(parseInt(inner)) ? [outer, ''] : [outer, inner];
|
|
90
|
+
}
|
|
91
|
+
static getColorAAPivot(monomer = '', scheme = 'grok') {
|
|
92
|
+
var _a, _b, _c;
|
|
93
|
+
//const chemPaletteInstance = AAPalettes.GrokGroups();
|
|
94
|
+
const chemPaletteInstance = this.getPalette(scheme);
|
|
95
|
+
let [outerMonomer, innerMonomer] = this.getInnerOuter(monomer);
|
|
96
|
+
outerMonomer = (outerMonomer.length > 6 ? `${outerMonomer.slice(0, 3)}...` : outerMonomer);
|
|
97
|
+
innerMonomer = (innerMonomer.length > 6 ? `${innerMonomer.slice(0, 3)}...` : innerMonomer);
|
|
98
|
+
if (monomer.length == 1 || monomer[1] == '(') {
|
|
99
|
+
const amino = (_a = monomer[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
100
|
+
return amino in chemPaletteInstance ?
|
|
101
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 1] :
|
|
102
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 1];
|
|
103
|
+
}
|
|
104
|
+
if (monomer[0] == 'd' && monomer[1] in chemPaletteInstance) {
|
|
105
|
+
if (monomer.length == 2 || monomer[2] == '(') {
|
|
106
|
+
const amino = (_b = monomer[1]) === null || _b === void 0 ? void 0 : _b.toUpperCase();
|
|
107
|
+
return amino in chemPaletteInstance ?
|
|
108
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 2] :
|
|
109
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 2];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (monomer.substring(0, 3) in this.AAFullNames) {
|
|
113
|
+
if (monomer.length == 3 || monomer[3] == '(') {
|
|
114
|
+
const amino = this.AAFullNames[monomer.substring(0, 3)];
|
|
115
|
+
return amino in chemPaletteInstance ?
|
|
116
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 3] :
|
|
117
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 3];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (((_c = monomer[0]) === null || _c === void 0 ? void 0 : _c.toLowerCase()) == monomer[0]) {
|
|
121
|
+
if (monomer.substring(1, 3) in this.AAFullNames) {
|
|
122
|
+
if (monomer.length == 4 || monomer[4] == '(') {
|
|
123
|
+
const amino = this.AAFullNames[monomer.substring(1, 3)];
|
|
124
|
+
return amino in chemPaletteInstance ?
|
|
125
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 4] :
|
|
126
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 4];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return [this.undefinedColor, outerMonomer, innerMonomer, 0];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
Aminoacids.SemType = 'Aminoacids';
|
|
134
|
+
Aminoacids.SemTypeMultipleAlignment = 'AminoacidsMultipleAlignment';
|
|
135
|
+
Aminoacids.undefinedColor = 'rgb(100,100,100)';
|
|
136
|
+
Aminoacids.Names = {
|
|
137
|
+
'G': 'Glycine',
|
|
138
|
+
'L': 'Leucine',
|
|
139
|
+
'Y': 'Tyrosine',
|
|
140
|
+
'S': 'Serine',
|
|
141
|
+
'E': 'Glutamic acid',
|
|
142
|
+
'Q': 'Glutamine',
|
|
143
|
+
'D': 'Aspartic acid',
|
|
144
|
+
'N': 'Asparagine',
|
|
145
|
+
'F': 'Phenylalanine',
|
|
146
|
+
'A': 'Alanine',
|
|
147
|
+
'K': 'Lysine',
|
|
148
|
+
'R': 'Arginine',
|
|
149
|
+
'H': 'Histidine',
|
|
150
|
+
'C': 'Cysteine',
|
|
151
|
+
'V': 'Valine',
|
|
152
|
+
'P': 'Proline',
|
|
153
|
+
'W': 'Tryptophan',
|
|
154
|
+
'I': 'Isoleucine',
|
|
155
|
+
'M': 'Methionine',
|
|
156
|
+
'T': 'Threonine',
|
|
157
|
+
};
|
|
158
|
+
Aminoacids.AASmiles = {
|
|
159
|
+
'G': 'NCC(=O)O',
|
|
160
|
+
'L': 'N[C@H](CC(C)C)C(=O)O',
|
|
161
|
+
'Y': 'NC(CC1=CC=C(O)C=C1)C(=O)O',
|
|
162
|
+
'S': 'NC(CO)C(=O)O',
|
|
163
|
+
'E': 'N[C@@H](CCC(O)=O)C(=O)O',
|
|
164
|
+
'Q': 'N[C@@H](CCC(N)=O)C(=O)O',
|
|
165
|
+
'D': 'N[C@@H](CC(O)=O)C(=O)O',
|
|
166
|
+
'N': 'N[C@@H](CC(N)=O)C(=O)O',
|
|
167
|
+
'F': 'NC(CC1=CC=CC=C1)C(=O)O',
|
|
168
|
+
'A': 'N[C@H](C)C(=O)O',
|
|
169
|
+
'K': 'NC(CCCCN)C(=O)O',
|
|
170
|
+
'R': 'N[C@H](CCCNC(=N)C)C(=O)O',
|
|
171
|
+
'H': 'NC(CC1=CN=C[N]1)C(=O)O',
|
|
172
|
+
'C': 'N[C@@H](CS)C(=O)O',
|
|
173
|
+
'V': 'NC(C(C)C)C(=O)O',
|
|
174
|
+
'P': 'N(CCC1)C1C(=O)O',
|
|
175
|
+
'W': 'N[C@@H](Cc1c2ccccc2n([H])c1)C(=O)O',
|
|
176
|
+
'I': 'N[C@H]([C@H](C)CC)C(=O)O',
|
|
177
|
+
'M': 'NC(CCSC)C(=O)O',
|
|
178
|
+
'T': 'NC(C(O)C)C(=O)O',
|
|
179
|
+
};
|
|
180
|
+
Aminoacids.AASmilesTruncated = {
|
|
181
|
+
'G': '*C*',
|
|
182
|
+
'L': 'CC(C)C[C@H](*)*',
|
|
183
|
+
'Y': 'C1=CC(=CC=C1CC(*)*)O',
|
|
184
|
+
'S': 'OCC(*)C*',
|
|
185
|
+
'E': '*[C@@H](CCC(O)=O)*',
|
|
186
|
+
'Q': '*N[C@@H](CCC(N)=O)*',
|
|
187
|
+
'D': '*[C@@H](CC(O)=O)*',
|
|
188
|
+
'N': '*[C@@H](CC(N)=O)*',
|
|
189
|
+
'F': 'C1=CC=C(C=C1)CC(*)*',
|
|
190
|
+
'A': 'C[C@H](*)*',
|
|
191
|
+
'K': 'C(CCN)CC(*)*',
|
|
192
|
+
'R': '*[C@H](CCCNC(=N)C)*',
|
|
193
|
+
'H': 'C1=C(NC=N1)CC(*)*',
|
|
194
|
+
'C': 'C([C@@H](*)*)S',
|
|
195
|
+
'V': 'CC(C)C(*)*',
|
|
196
|
+
'P': 'C1CCN(*)C1*',
|
|
197
|
+
'W': '*[C@@H](Cc1c2ccccc2n([H])c1)*',
|
|
198
|
+
'I': 'CC[C@H](C)[C@H](*)*',
|
|
199
|
+
'M': 'CSCCC(*)*',
|
|
200
|
+
'T': 'CC(O)C(*)*',
|
|
201
|
+
};
|
|
202
|
+
/** TODO: Full?
|
|
203
|
+
*/
|
|
204
|
+
Aminoacids.AAFullNames = {
|
|
205
|
+
'Ala': 'A',
|
|
206
|
+
'Arg': 'R',
|
|
207
|
+
'Asn': 'N',
|
|
208
|
+
'Asp': 'D',
|
|
209
|
+
'Cys': 'C',
|
|
210
|
+
'Gln': 'Q',
|
|
211
|
+
'Glu': 'E',
|
|
212
|
+
'Gly': 'G',
|
|
213
|
+
'His': 'H',
|
|
214
|
+
'Ile': 'I',
|
|
215
|
+
'Leu': 'L',
|
|
216
|
+
'Lys': 'K',
|
|
217
|
+
'Met': 'M',
|
|
218
|
+
'Phe': 'F',
|
|
219
|
+
'Pro': 'P',
|
|
220
|
+
'Ser': 'S',
|
|
221
|
+
'Thr': 'T',
|
|
222
|
+
'Trp': 'W',
|
|
223
|
+
'Tyr': 'Y',
|
|
224
|
+
'Val': 'V',
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1pbm9hY2lkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFtaW5vYWNpZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFhLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxjQUFjO0lBRzdDLE1BQU0sS0FBSyxJQUFJO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDO2dCQUM1QixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUM7YUFDekIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUlNLE1BQU0sS0FBSyxVQUFVO1FBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDO2dCQUN0QixDQUFDLENBQUMsR0FBRyxF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QUFFLGFBQWE7SUFDbEIsR0FBRyxFQUFFLCtCQUErQjtJQUNwQyxHQUFHLEVBQUUscUJBQXFCO0lBQzFCLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEdBQUcsRUFBRSxZQUFZO0NBQ2xCLENBQUM7QUFFRjtHQUNHO0FBQ1csc0JBQVcsR0FBcUI7SUFDNUMsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1N0cmluZ0RpY3Rpb25hcnl9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7U2VxUGFsZXR0ZSwgU2VxUGFsZXR0ZUJhc2V9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcblxuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgbGVzazogU2VxUGFsZXR0ZTtcblxuICBwdWJsaWMgc3RhdGljIGdldCBMZXNrKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLmxlc2sgPT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5sZXNrID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgIFtbJ0cnLCAnQScsICdTJywgJ1QnXSwgJ29yYW5nZSddLFxuICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgIFtbJ04nLCAnUScsICdIJ10sICdtYWdlbnRhJ10sXG4gICAgICAgIFtbJ0QnLCAnRSddLCAncmVkJ10sXG4gICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sZXNrO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ3Jva0dyb3VwczogU2VxUGFsZXR0ZTtcblxuICBwdWJsaWMgc3RhdGljIGdldCBHcm9rR3JvdXBzKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLmdyb2tHcm91cHMgPT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5ncm9rR3JvdXBzID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgIFtbJ0MnLCAnVSddLCAneWVsbG93J10sXG4gICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgIFtbJ0EnLCAnVicsICdJJywgJ0wnLCAnTScsICdGJywgJ1knLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgIFtbJ1InLCAnSCcsICdLJ10sICdsaWdodF9ibHVlJ10sXG4gICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgIFtbJ1MnLCAnVCcsICdOJywgJ1EnXSwgJ29yYW5nZSddLFxuICAgICAgXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyb2tHcm91cHM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByYXNNb2w6IFNlcVBhbGV0dGU7XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgUmFzTW9sKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLnJhc01vbCA9PT0gdm9pZCAwKSB7XG4gICAgICB0aGlzLnJhc01vbCA9IHtcbiAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICdEJzogJyNFNjBBMEEnLCAvLyBhc3AsIGFzcGFydGljIGFjaWQsIGFzcFxuICAgICAgICAnRSc6ICcjRTYwQTBBJywgLy8gZ2x1LCBnbHV0YW1pYyBhY2lkXG4gICAgICAgICdDJzogJyNFNkU2MDAnLCAvLyBjeXMsIGN5c3RlaW5lXG4gICAgICAgICdNJzogJyNFNkU2MDAnLCAvLyBtZXQsIG1ldGhpb25pbmVcbiAgICAgICAgJ0snOiAnIzE0NUFGRicsIC8vIGx5cywgbHlzaW5lXG4gICAgICAgICdSJzogJyMxNDVBRkYnLCAvLyBhcmcsIGFyZ2luaW5lXG4gICAgICAgICdTJzogJyNGQTk2MDAnLCAvLyBzZXIsIHNlcmluZVxuICAgICAgICAnVCc6ICcjRkE5NjAwJywgLy8gdGhyLCB0aHJlb25pbmVcbiAgICAgICAgJ0YnOiAnIzMyMzJBQScsIC8vIHBoZSwgcGhlbnlsYWxhbmluZVxuICAgICAgICAnWSc6ICcjMzIzMkFBJywgLy8gdHlyLCB0eXJvc2luZVxuICAgICAgICAnTic6ICcjMDBEQ0RDJywgLy8gYXNuLCBhc3BhcmFnaW5lXG4gICAgICAgICdRJzogJyMwMERDREMnLCAvLyBnbG4sIGdsdXRhbWluZVxuICAgICAgICAnRyc6ICcjRUJFQkVCJywgLy8gZ2x5LCBnbHljaW5lXG4gICAgICAgICdMJzogJyMwRjgyMEYnLCAvLyBsZXUsIGxldWNpbmVcbiAgICAgICAgJ1YnOiAnIzBGODIwRicsIC8vIHZhbCwgdmFsaW5lXG4gICAgICAgICdJJzogJyMwRjgyMEYnLCAvLyBpbGUsIGlzb2xldWNpbmVcbiAgICAgICAgJ0EnOiAnI0M4QzhDOCcsIC8vIGFsYSwgYWxhbmluZVxuICAgICAgICAnVyc6ICcjQjQ1QUI0JywgLy8gdHJwLCB0cnlwdG9waGFuXG4gICAgICAgICdIJzogJyM4MjgyRDInLCAvLyBoaXMsIGhpc3RpZGluZVxuICAgICAgICAnUCc6ICcjREM5NjgyJywgLy8gcHJvLCBwcm9saW5lXG4gICAgICAgICdvdGhlcnMnOiAnI0JFQTA2RScsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yYXNNb2w7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHMge1xuICBzdGF0aWMgcmVhZG9ubHkgU2VtVHlwZTogc3RyaW5nID0gJ0FtaW5vYWNpZHMnO1xuXG4gIHN0YXRpYyByZWFkb25seSBTZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6IHN0cmluZyA9ICdBbWlub2FjaWRzTXVsdGlwbGVBbGlnbm1lbnQnO1xuXG4gIHN0YXRpYyB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcblxuICBwdWJsaWMgc3RhdGljIE5hbWVzOiBTdHJpbmdEaWN0aW9uYXJ5ID0ge1xuICAgICdHJzogJ0dseWNpbmUnLFxuICAgICdMJzogJ0xldWNpbmUnLFxuICAgICdZJzogJ1R5cm9zaW5lJyxcbiAgICAnUyc6ICdTZXJpbmUnLFxuICAgICdFJzogJ0dsdXRhbWljIGFjaWQnLFxuICAgICdRJzogJ0dsdXRhbWluZScsXG4gICAgJ0QnOiAnQXNwYXJ0aWMgYWNpZCcsXG4gICAgJ04nOiAnQXNwYXJhZ2luZScsXG4gICAgJ0YnOiAnUGhlbnlsYWxhbmluZScsXG4gICAgJ0EnOiAnQWxhbmluZScsXG4gICAgJ0snOiAnTHlzaW5lJyxcbiAgICAnUic6ICdBcmdpbmluZScsXG4gICAgJ0gnOiAnSGlzdGlkaW5lJyxcbiAgICAnQyc6ICdDeXN0ZWluZScsXG4gICAgJ1YnOiAnVmFsaW5lJyxcbiAgICAnUCc6ICdQcm9saW5lJyxcbiAgICAnVyc6ICdUcnlwdG9waGFuJyxcbiAgICAnSSc6ICdJc29sZXVjaW5lJyxcbiAgICAnTSc6ICdNZXRoaW9uaW5lJyxcbiAgICAnVCc6ICdUaHJlb25pbmUnLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgQUFTbWlsZXM6IFN0cmluZ0RpY3Rpb25hcnkgPSB7XG4gICAgJ0cnOiAnTkNDKD1PKU8nLFxuICAgICdMJzogJ05bQ0BIXShDQyhDKUMpQyg9TylPJyxcbiAgICAnWSc6ICdOQyhDQzE9Q0M9QyhPKUM9QzEpQyg9TylPJyxcbiAgICAnUyc6ICdOQyhDTylDKD1PKU8nLFxuICAgICdFJzogJ05bQ0BASF0oQ0NDKE8pPU8pQyg9TylPJyxcbiAgICAnUSc6ICdOW0NAQEhdKENDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0QnOiAnTltDQEBIXShDQyhPKT1PKUMoPU8pTycsXG4gICAgJ04nOiAnTltDQEBIXShDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0YnOiAnTkMoQ0MxPUNDPUNDPUMxKUMoPU8pTycsXG4gICAgJ0EnOiAnTltDQEhdKEMpQyg9TylPJyxcbiAgICAnSyc6ICdOQyhDQ0NDTilDKD1PKU8nLFxuICAgICdSJzogJ05bQ0BIXShDQ0NOQyg9TilDKUMoPU8pTycsXG4gICAgJ0gnOiAnTkMoQ0MxPUNOPUNbTl0xKUMoPU8pTycsXG4gICAgJ0MnOiAnTltDQEBIXShDUylDKD1PKU8nLFxuICAgICdWJzogJ05DKEMoQylDKUMoPU8pTycsXG4gICAgJ1AnOiAnTihDQ0MxKUMxQyg9TylPJyxcbiAgICAnVyc6ICdOW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpQyg9TylPJyxcbiAgICAnSSc6ICdOW0NASF0oW0NASF0oQylDQylDKD1PKU8nLFxuICAgICdNJzogJ05DKENDU0MpQyg9TylPJyxcbiAgICAnVCc6ICdOQyhDKE8pQylDKD1PKU8nLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgQUFTbWlsZXNUcnVuY2F0ZWQ6IFN0cmluZ0RpY3Rpb25hcnkgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG4gIH07XG5cbiAgLyoqIFRPRE86IEZ1bGw/XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEFBRnVsbE5hbWVzOiBTdHJpbmdEaWN0aW9uYXJ5ID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljIGdldFBhbGV0dGUoc2NoZW1lOiBzdHJpbmcgPSAnZ3JvaycpOiBTZXFQYWxldHRlIHtcbiAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgIGNhc2UgJ2dyb2snOlxuICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgIGNhc2UgJ2xlc2snOlxuICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5MZXNrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZGl2aWRlZCBhbWlubyBhY2lkIHdpdGggaXRzIGNvbnRlbnQgaW4gdGhlIGJyYWNrZXQsIGlmIHRoZSBjb250ZW50IGlzIG51bWJlciwgdGhlbiBpdHMgb21pdHRlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICogQHJldHVybiB7W3N0cmluZywgc3RyaW5nXX0gb3V0ZXIgYW5kIGlubmVyIGNvbnRlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5uZXJPdXRlcihjOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgICBsZXQgaXNJbm5lciA9IDA7XG4gICAgbGV0IGlubmVyID0gJyc7XG4gICAgbGV0IG91dGVyID0gJyc7XG5cbiAgICBmb3IgKGNvbnN0IGNoYXIgb2YgYykge1xuICAgICAgaWYgKGNoYXIgPT0gJygnKVxuICAgICAgICBpc0lubmVyKys7XG4gICAgICBlbHNlIGlmIChjaGFyID09ICcpJylcbiAgICAgICAgaXNJbm5lci0tO1xuICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgaW5uZXIgKz0gY2hhcjtcbiAgICAgIGVsc2VcbiAgICAgICAgb3V0ZXIgKz0gY2hhcjtcbiAgICB9XG5cbiAgICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KGlubmVyKSkgPyBbb3V0ZXIsICcnXSA6IFtvdXRlciwgaW5uZXJdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRDb2xvckFBUGl2b3QobW9ub21lcjogc3RyaW5nID0gJycsIHNjaGVtZTogJ2dyb2snID0gJ2dyb2snKTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmcsIG51bWJlcl0ge1xuICAgIC8vY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IEFBUGFsZXR0ZXMuR3Jva0dyb3VwcygpO1xuICAgIGNvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSB0aGlzLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICBsZXQgW291dGVyTW9ub21lciwgaW5uZXJNb25vbWVyXSA9IHRoaXMuZ2V0SW5uZXJPdXRlcihtb25vbWVyKTtcbiAgICBvdXRlck1vbm9tZXIgPSAob3V0ZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtvdXRlck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IG91dGVyTW9ub21lcik7XG4gICAgaW5uZXJNb25vbWVyID0gKGlubmVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7aW5uZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBpbm5lck1vbm9tZXIpO1xuXG4gICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDEgfHwgbW9ub21lclsxXSA9PSAnKCcpIHtcbiAgICAgIGNvbnN0IGFtaW5vID0gbW9ub21lclswXT8udG9VcHBlckNhc2UoKSE7XG4gICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgMV0gOlxuICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDFdO1xuICAgIH1cblxuICAgIGlmIChtb25vbWVyWzBdID09ICdkJyAmJiBtb25vbWVyWzFdISBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICBjb25zdCBhbWlubyA9IG1vbm9tZXJbMV0/LnRvVXBwZXJDYXNlKCkhO1xuICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgM107XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vbm9tZXJbMF0/LnRvTG93ZXJDYXNlKCkgPT0gbW9ub21lclswXSkge1xuICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDEsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDQgfHwgbW9ub21lcls0XSA9PSAnKCcpIHtcbiAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMSwgMyldO1xuICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgNF0gOlxuICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICB9XG59XG4iXX0=
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SeqPalette } from './seq-palettes';
|
|
2
|
+
import { Aminoacids, AminoacidsPalettes } from './aminoacids';
|
|
3
|
+
import { Nucleotides, NucleotidesPalettes } from './nucleotides';
|
|
4
|
+
import { WebLogo, PositionInfo, PositionMonomerInfo } from './viewers/web-logo';
|
|
5
|
+
export { SeqPalette, AminoacidsPalettes, Aminoacids, NucleotidesPalettes, Nucleotides };
|
|
6
|
+
export { WebLogo, PositionInfo, PositionMonomerInfo };
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAE9E,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAC,CAAC;AACtF,OAAO,EAAC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAC,CAAC"}
|
package/src/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Aminoacids, AminoacidsPalettes } from './aminoacids';
|
|
2
|
+
import { Nucleotides, NucleotidesPalettes } from './nucleotides';
|
|
3
|
+
import { WebLogo, PositionInfo, PositionMonomerInfo } from './viewers/web-logo';
|
|
4
|
+
export { AminoacidsPalettes, Aminoacids, NucleotidesPalettes, Nucleotides };
|
|
5
|
+
export { WebLogo, PositionInfo, PositionMonomerInfo };
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQzVELE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RSxPQUFPLEVBQWEsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBQyxDQUFDO0FBQ3RGLE9BQU8sRUFBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG1CQUFtQixFQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NlcVBhbGV0dGV9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHtOdWNsZW90aWRlcywgTnVjbGVvdGlkZXNQYWxldHRlc30gZnJvbSAnLi9udWNsZW90aWRlcyc7XG5pbXBvcnQge1dlYkxvZ28sIFBvc2l0aW9uSW5mbywgUG9zaXRpb25Nb25vbWVySW5mb30gZnJvbSAnLi92aWV3ZXJzL3dlYi1sb2dvJztcblxuZXhwb3J0IHtTZXFQYWxldHRlLCBBbWlub2FjaWRzUGFsZXR0ZXMsIEFtaW5vYWNpZHMsIE51Y2xlb3RpZGVzUGFsZXR0ZXMsIE51Y2xlb3RpZGVzfTtcbmV4cG9ydCB7V2ViTG9nbywgUG9zaXRpb25JbmZvLCBQb3NpdGlvbk1vbm9tZXJJbmZvfTtcblxuIl19
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {SeqPalette} from './seq-palettes';
|
|
2
|
+
import {Aminoacids, AminoacidsPalettes} from './aminoacids';
|
|
3
|
+
import {Nucleotides, NucleotidesPalettes} from './nucleotides';
|
|
4
|
+
import {WebLogo, PositionInfo, PositionMonomerInfo} from './viewers/web-logo';
|
|
5
|
+
|
|
6
|
+
export {SeqPalette, AminoacidsPalettes, Aminoacids, NucleotidesPalettes, Nucleotides};
|
|
7
|
+
export {WebLogo, PositionInfo, PositionMonomerInfo};
|
|
8
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { StringDictionary } from '@datagrok-libraries/utils/src/type-declarations';
|
|
2
|
+
import { SeqPalette, SeqPaletteBase } from './seq-palettes';
|
|
3
|
+
export declare class NucleotidesPalettes extends SeqPaletteBase {
|
|
4
|
+
private static chromatogram;
|
|
5
|
+
static get Chromatogram(): SeqPalette;
|
|
6
|
+
}
|
|
7
|
+
export declare class Nucleotides {
|
|
8
|
+
static readonly SemType: string;
|
|
9
|
+
static readonly SemTypeMultipleAlignment: string;
|
|
10
|
+
static Names: StringDictionary;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=nucleotides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nucleotides.d.ts","sourceRoot":"","sources":["nucleotides.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iDAAiD,CAAC;AACjF,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAE1D,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAa;IAExC,WAAkB,YAAY,IAAI,UAAU,CAW3C;CACF;AAED,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAuB;IAEtD,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAkC;IAElF,OAAc,KAAK,EAAE,gBAAgB,CAMnC;CACH"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SeqPaletteBase } from './seq-palettes';
|
|
2
|
+
export class NucleotidesPalettes extends SeqPaletteBase {
|
|
3
|
+
static get Chromatogram() {
|
|
4
|
+
if (this.chromatogram === void 0) {
|
|
5
|
+
this.chromatogram = {
|
|
6
|
+
'A': 'green',
|
|
7
|
+
'C': 'blue',
|
|
8
|
+
'G': 'black',
|
|
9
|
+
'T': 'red', 'U': 'red',
|
|
10
|
+
'others': 'gray',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
return this.chromatogram;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class Nucleotides {
|
|
17
|
+
}
|
|
18
|
+
Nucleotides.SemType = 'MultipleAlignment';
|
|
19
|
+
Nucleotides.SemTypeMultipleAlignment = 'NucleotidesMultipleAlignment';
|
|
20
|
+
Nucleotides.Names = {
|
|
21
|
+
'A': 'Adenine',
|
|
22
|
+
'C': 'Cytosine',
|
|
23
|
+
'G': 'Guanine',
|
|
24
|
+
'T': 'Thymine',
|
|
25
|
+
'U': 'Uracil',
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVjbGVvdGlkZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJudWNsZW90aWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQWEsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFHOUMsTUFBTSxLQUFLLFlBQVk7UUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEdBQUcsRUFBRSxNQUFNO2dCQUNYLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUs7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVzs7QUFDTixtQkFBTyxHQUFXLG1CQUFtQixDQUFDO0FBRXRDLG9DQUF3QixHQUFXLDhCQUE4QixDQUFDO0FBRXBFLGlCQUFLLEdBQXFCO0lBQ3RDLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFVBQVU7SUFDZixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFFBQVE7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtTdHJpbmdEaWN0aW9uYXJ5fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQge1NlcVBhbGV0dGUsIFNlcVBhbGV0dGVCYXNlfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICBwcml2YXRlIHN0YXRpYyBjaHJvbWF0b2dyYW06IFNlcVBhbGV0dGU7XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgQ2hyb21hdG9ncmFtKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLmNocm9tYXRvZ3JhbSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aGlzLmNocm9tYXRvZ3JhbSA9IHtcbiAgICAgICAgJ0EnOiAnZ3JlZW4nLFxuICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgJ0cnOiAnYmxhY2snLCAvLyBvcmFuZ2UgP1xuICAgICAgICAnVCc6ICdyZWQnLCAnVSc6ICdyZWQnLFxuICAgICAgICAnb3RoZXJzJzogJ2dyYXknLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hyb21hdG9ncmFtO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlcyB7XG4gIHN0YXRpYyByZWFkb25seSBTZW1UeXBlOiBzdHJpbmcgPSAnTXVsdGlwbGVBbGlnbm1lbnQnO1xuXG4gIHN0YXRpYyByZWFkb25seSBTZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6IHN0cmluZyA9ICdOdWNsZW90aWRlc011bHRpcGxlQWxpZ25tZW50JztcblxuICBwdWJsaWMgc3RhdGljIE5hbWVzOiBTdHJpbmdEaWN0aW9uYXJ5ID0ge1xuICAgICdBJzogJ0FkZW5pbmUnLFxuICAgICdDJzogJ0N5dG9zaW5lJyxcbiAgICAnRyc6ICdHdWFuaW5lJyxcbiAgICAnVCc6ICdUaHltaW5lJyxcbiAgICAnVSc6ICdVcmFjaWwnLFxuICB9O1xufVxuIl19
|
package/src/package.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package.d.ts","sourceRoot":"","sources":["package.ts"],"names":[],"mappings":""}
|
package/src/package.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SeqPalette {
|
|
2
|
+
/**
|
|
3
|
+
* @param {string} m Monomer character
|
|
4
|
+
* @return {string} Color
|
|
5
|
+
*/
|
|
6
|
+
[m: string]: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class SeqPaletteBase {
|
|
9
|
+
/** Palette with shades of primary colors
|
|
10
|
+
*/
|
|
11
|
+
private static colourPalette;
|
|
12
|
+
protected static makePalette(dt: [string[], string][], simplified?: boolean): {
|
|
13
|
+
[key: string]: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=seq-palettes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seq-palettes.d.ts","sourceRoot":"","sources":["seq-palettes.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB;OACG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa,CAqB1B;IAEF,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,UAAQ;;;CAW1E"}
|