protvista-uniprot 2.13.2 → 3.0.1
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/dist/es/__spec__/filter-config.spec.d.ts +1 -0
- package/dist/es/__spec__/filter-config.spec.js +123 -0
- package/dist/es/__spec__/filter-config.spec.js.map +1 -0
- package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.d.ts +47 -0
- package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js +75 -0
- package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js.map +1 -0
- package/dist/es/adapters/__tests__/structure-adapter.spec.d.ts +1 -0
- package/dist/es/adapters/__tests__/structure-adapter.spec.js +14 -0
- package/dist/es/adapters/__tests__/structure-adapter.spec.js.map +1 -0
- package/dist/es/adapters/alphafold-confidence-adapter.d.ts +8 -0
- package/dist/es/{protvista-alphafold-confidence.js → adapters/alphafold-confidence-adapter.js} +4 -3
- package/dist/es/adapters/alphafold-confidence-adapter.js.map +1 -0
- package/dist/es/adapters/alphamissense-heatmap-adapter.d.ts +8 -0
- package/dist/es/{protvista-alphamissense-heatmap.js → adapters/alphamissense-heatmap-adapter.js} +4 -3
- package/dist/es/adapters/alphamissense-heatmap-adapter.js.map +1 -0
- package/dist/es/adapters/alphamissense-pathogenicity-adapter.d.ts +10 -0
- package/dist/es/{protvista-alphamissense-pathogenicity.js → adapters/alphamissense-pathogenicity-adapter.js} +3 -2
- package/dist/es/adapters/alphamissense-pathogenicity-adapter.js.map +1 -0
- package/dist/es/adapters/config/evidence.d.ts +14 -0
- package/dist/es/adapters/config/evidence.js +101 -0
- package/dist/es/adapters/config/evidence.js.map +1 -0
- package/dist/es/adapters/feature-adapter.d.ts +2 -0
- package/dist/es/adapters/feature-adapter.js +18 -0
- package/dist/es/adapters/feature-adapter.js.map +1 -0
- package/dist/es/adapters/interpro-adapter.d.ts +2 -0
- package/dist/es/adapters/interpro-adapter.js +60 -0
- package/dist/es/adapters/interpro-adapter.js.map +1 -0
- package/dist/es/adapters/proteomics-adapter.d.ts +2 -0
- package/dist/es/adapters/proteomics-adapter.js +66 -0
- package/dist/es/adapters/proteomics-adapter.js.map +1 -0
- package/dist/es/{protvista-ptm-exchange.d.ts → adapters/ptm-exchange-adapter.d.ts} +2 -2
- package/dist/es/{protvista-ptm-exchange.js → adapters/ptm-exchange-adapter.js} +3 -2
- package/dist/es/adapters/ptm-exchange-adapter.js.map +1 -0
- package/dist/es/adapters/structure-adapter.d.ts +4 -0
- package/dist/es/adapters/structure-adapter.js +89 -0
- package/dist/es/adapters/structure-adapter.js.map +1 -0
- package/dist/es/adapters/types/alphafold.js +2 -0
- package/dist/es/adapters/types/alphafold.js.map +1 -0
- package/dist/es/adapters/variation-adapter.d.ts +7 -0
- package/dist/es/adapters/variation-adapter.js +31 -0
- package/dist/es/adapters/variation-adapter.js.map +1 -0
- package/dist/es/{protvista-variation-graph-adapter.d.ts → adapters/variation-graph-adapter.d.ts} +2 -1
- package/dist/es/{protvista-variation-graph-adapter.js → adapters/variation-graph-adapter.js} +12 -5
- package/dist/es/adapters/variation-graph-adapter.js.map +1 -0
- package/dist/es/config.json +54 -54
- package/dist/es/filter-config.d.ts +24 -0
- package/dist/es/{filterConfig.js → filter-config.js} +1 -1
- package/dist/es/filter-config.js.map +1 -0
- package/dist/es/index.d.ts +5 -10
- package/dist/es/index.js +5 -15
- package/dist/es/index.js.map +1 -1
- package/dist/es/protvista-uniprot-structure.js +15 -9
- package/dist/es/protvista-uniprot-structure.js.map +1 -1
- package/dist/es/protvista-uniprot.d.ts +1 -100
- package/dist/es/protvista-uniprot.js +46 -60
- package/dist/es/protvista-uniprot.js.map +1 -1
- package/dist/es/styles/protvista-styles.js +2 -1
- package/dist/es/styles/protvista-styles.js.map +1 -1
- package/dist/es/tooltips/featureTooltip.d.ts +4 -0
- package/dist/es/tooltips/featureTooltip.js +160 -0
- package/dist/es/tooltips/featureTooltip.js.map +1 -0
- package/dist/es/tooltips/structureTooltip.d.ts +2 -0
- package/dist/es/tooltips/structureTooltip.js +15 -0
- package/dist/es/tooltips/structureTooltip.js.map +1 -0
- package/dist/es/tooltips/variationTooltip.d.ts +3 -0
- package/dist/es/tooltips/variationTooltip.js +82 -0
- package/dist/es/tooltips/variationTooltip.js.map +1 -0
- package/dist/es/utils.d.ts +3 -0
- package/dist/es/utils.js +28 -0
- package/dist/es/utils.js.map +1 -0
- package/dist/protvista-uniprot.js +166 -155
- package/dist/protvista-uniprot.js.map +1 -1
- package/package.json +25 -30
- package/src/__spec__/filter-config.spec.ts +143 -0
- package/src/adapters/__tests__/__mocks__/uniprotkb-entry-data.ts +76 -0
- package/src/adapters/__tests__/__snapshots__/structure-adapter.spec.ts.snap +157 -0
- package/src/adapters/__tests__/structure-adapter.spec.ts +19 -0
- package/src/{protvista-alphafold-confidence.ts → adapters/alphafold-confidence-adapter.ts} +5 -3
- package/src/{protvista-alphamissense-heatmap.ts → adapters/alphamissense-heatmap-adapter.ts} +8 -4
- package/src/{protvista-alphamissense-pathogenicity.ts → adapters/alphamissense-pathogenicity-adapter.ts} +4 -2
- package/src/adapters/config/evidence.ts +105 -0
- package/src/adapters/feature-adapter.ts +19 -0
- package/src/adapters/interpro-adapter.ts +71 -0
- package/src/adapters/proteomics-adapter.ts +76 -0
- package/src/{protvista-ptm-exchange.ts → adapters/ptm-exchange-adapter.ts} +3 -1
- package/src/adapters/structure-adapter.ts +105 -0
- package/src/adapters/variation-adapter.ts +44 -0
- package/src/{protvista-variation-graph-adapter.ts → adapters/variation-graph-adapter.ts} +25 -18
- package/src/config.json +54 -54
- package/src/{filterConfig.ts → filter-config.ts} +17 -12
- package/src/index.ts +5 -20
- package/src/protvista-uniprot-structure.ts +6 -14
- package/src/protvista-uniprot.ts +66 -96
- package/src/styles/protvista-styles.ts +2 -1
- package/src/tooltips/featureTooltip.ts +223 -0
- package/src/tooltips/structureTooltip.ts +20 -0
- package/src/tooltips/variationTooltip.ts +139 -0
- package/src/utils.ts +37 -0
- package/dist/es/commonTypes.js +0 -2
- package/dist/es/commonTypes.js.map +0 -1
- package/dist/es/filterConfig.d.ts +0 -20
- package/dist/es/filterConfig.js.map +0 -1
- package/dist/es/loadComponents.d.ts +0 -2
- package/dist/es/loadComponents.js +0 -7
- package/dist/es/loadComponents.js.map +0 -1
- package/dist/es/protvista-alphafold-confidence.d.ts +0 -9
- package/dist/es/protvista-alphafold-confidence.js.map +0 -1
- package/dist/es/protvista-alphamissense-heatmap.d.ts +0 -8
- package/dist/es/protvista-alphamissense-heatmap.js.map +0 -1
- package/dist/es/protvista-alphamissense-pathogenicity.d.ts +0 -10
- package/dist/es/protvista-alphamissense-pathogenicity.js.map +0 -1
- package/dist/es/protvista-ptm-exchange.js.map +0 -1
- package/dist/es/protvista-variation-graph-adapter.js.map +0 -1
- package/src/loadComponents.ts +0 -10
- package/src/types/nightingale-components.d.ts +0 -13
- package/src/types/nightingale-sequence-heatmap.d.ts +0 -1
- package/src/types/protvista-feature-adapter.d.ts +0 -1
- package/src/types/protvista-interpro-adapter.d.ts +0 -1
- package/src/types/protvista-proteomics-adapter.d.ts +0 -1
- package/src/types/protvista-structure-adapter.d.ts +0 -1
- package/src/types/protvista-structure.d.ts +0 -1
- package/src/types/protvista-variation.d.ts +0 -15
- /package/dist/es/{commonTypes.d.ts → adapters/types/alphafold.d.ts} +0 -0
- /package/src/{commonTypes.ts → adapters/types/alphafold.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "protvista-uniprot",
|
|
3
3
|
"description": "ProtVista tool for the UniProt website",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "3.0.1",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
7
7
|
"src"
|
|
@@ -10,8 +10,6 @@
|
|
|
10
10
|
"build:es": "tsc",
|
|
11
11
|
"build": "webpack --mode=production && yarn build:es",
|
|
12
12
|
"watch": "webpack --mode=development -w",
|
|
13
|
-
"link-all": "yarn link protvista-interpro-adapter protvista-feature-adapter protvista-interpro-track nightingale-filter nightingale-manager nightingale-navigation protvista-proteomics-adapter nightingale-sequence protvista-structure-adapter nightingale-track nightingale-variation protvista-variation-adapter nightingale-linegraph-track protvista-datatable nightingale-structure data-loader",
|
|
14
|
-
"add-all": "yarn add protvista-feature-adapter nightingale-filter nightingale-manager nightingale-navigation protvista-proteomics-adapter nightingale-sequence protvista-structure-adapter nightingale-track nightingale-variation protvista-variation-adapter nightingale-linegraph-track protvista-datatable nightingale-structure data-loader",
|
|
15
13
|
"start": "webpack serve --mode=development",
|
|
16
14
|
"test:lint": "eslint src --ext .ts ",
|
|
17
15
|
"test:types": "tsc",
|
|
@@ -25,37 +23,32 @@
|
|
|
25
23
|
"author": "Xavier Watkins <xwatkins@ebi.ac.uk>",
|
|
26
24
|
"license": "MIT",
|
|
27
25
|
"dependencies": {
|
|
28
|
-
"@nightingale-elements/nightingale-colored-sequence": "5.
|
|
29
|
-
"@nightingale-elements/nightingale-filter": "5.
|
|
30
|
-
"@nightingale-elements/nightingale-interpro-track": "5.
|
|
31
|
-
"@nightingale-elements/nightingale-linegraph-track": "5.
|
|
32
|
-
"@nightingale-elements/nightingale-manager": "5.
|
|
33
|
-
"@nightingale-elements/nightingale-navigation": "5.
|
|
34
|
-
"@nightingale-elements/nightingale-sequence": "5.
|
|
35
|
-
"@nightingale-elements/nightingale-sequence-heatmap": "5.
|
|
36
|
-
"@nightingale-elements/nightingale-structure": "5.
|
|
37
|
-
"@nightingale-elements/nightingale-track": "5.
|
|
38
|
-
"@nightingale-elements/nightingale-variation": "5.
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"file-saver": "^2.0.2",
|
|
26
|
+
"@nightingale-elements/nightingale-colored-sequence": "5.3.0",
|
|
27
|
+
"@nightingale-elements/nightingale-filter": "5.3.0",
|
|
28
|
+
"@nightingale-elements/nightingale-interpro-track": "5.3.0",
|
|
29
|
+
"@nightingale-elements/nightingale-linegraph-track": "5.3.0",
|
|
30
|
+
"@nightingale-elements/nightingale-manager": "5.3.0",
|
|
31
|
+
"@nightingale-elements/nightingale-navigation": "5.3.0",
|
|
32
|
+
"@nightingale-elements/nightingale-sequence": "5.3.0",
|
|
33
|
+
"@nightingale-elements/nightingale-sequence-heatmap": "5.3.0",
|
|
34
|
+
"@nightingale-elements/nightingale-structure": "5.3.1",
|
|
35
|
+
"@nightingale-elements/nightingale-track": "5.3.0",
|
|
36
|
+
"@nightingale-elements/nightingale-variation": "5.3.0",
|
|
37
|
+
"color-hash": "2.0.2",
|
|
38
|
+
"core-js": "3.13.0",
|
|
42
39
|
"lit": "3.1.3",
|
|
43
40
|
"protvista-datatable": "3.8.22",
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"protvista-proteomics-adapter": "3.8.22",
|
|
47
|
-
"protvista-structure-adapter": "3.8.22",
|
|
48
|
-
"protvista-variation-adapter": "3.8.22",
|
|
49
|
-
"timing-functions": "^2.0.1",
|
|
50
|
-
"url-join": "^4.0.1"
|
|
41
|
+
"timing-functions": "2.0.1",
|
|
42
|
+
"url-join": "4.0.1"
|
|
51
43
|
},
|
|
52
44
|
"devDependencies": {
|
|
53
45
|
"@babel/core": "^7.14.3",
|
|
46
|
+
"@babel/plugin-proposal-decorators": "^7.25.9",
|
|
54
47
|
"@babel/plugin-transform-runtime": "^7.14.3",
|
|
55
48
|
"@babel/preset-env": "^7.14.2",
|
|
56
49
|
"@babel/preset-typescript": "^7.13.0",
|
|
57
50
|
"@babel/runtime-corejs3": "^7.14.0",
|
|
58
|
-
"@types/
|
|
51
|
+
"@types/jest": "^29.5.14",
|
|
59
52
|
"@types/url-join": "^4.0.0",
|
|
60
53
|
"@typescript-eslint/eslint-plugin": "4.26.1",
|
|
61
54
|
"@typescript-eslint/parser": "4.26.1",
|
|
@@ -64,7 +57,6 @@
|
|
|
64
57
|
"concurrently": "^4.1.0",
|
|
65
58
|
"copy-webpack-plugin": "^9.0.1",
|
|
66
59
|
"css-loader": "^5.2.6",
|
|
67
|
-
"d3": "5.X",
|
|
68
60
|
"eslint": "^7.27.0",
|
|
69
61
|
"eslint-config-prettier": "^8.3.0",
|
|
70
62
|
"jest": "^26.4.2",
|
|
@@ -76,8 +68,11 @@
|
|
|
76
68
|
"webpack-cli": "^4.7.0",
|
|
77
69
|
"webpack-dev-server": "^3.11.2"
|
|
78
70
|
},
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
|
|
82
|
-
|
|
71
|
+
"jest": {
|
|
72
|
+
"testRegex": "(/__tests__/.*|(\\.|/))spec\\.ts$",
|
|
73
|
+
"testPathIgnorePatterns": [
|
|
74
|
+
"/__mocks__/",
|
|
75
|
+
"<rootDir>/dist/"
|
|
76
|
+
]
|
|
77
|
+
}
|
|
83
78
|
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import {
|
|
2
|
+
colorConfig,
|
|
3
|
+
getFilteredVariants,
|
|
4
|
+
VariantsForFilter,
|
|
5
|
+
} from '../filter-config';
|
|
6
|
+
|
|
7
|
+
const transformedVariantPositions = [
|
|
8
|
+
{
|
|
9
|
+
variants: [
|
|
10
|
+
{
|
|
11
|
+
accession: 'A',
|
|
12
|
+
begin: 1,
|
|
13
|
+
end: 1,
|
|
14
|
+
start: 1,
|
|
15
|
+
tooltipContent: '',
|
|
16
|
+
sourceType: 'source',
|
|
17
|
+
variant: 'V',
|
|
18
|
+
protvistaFeatureId: 'id1',
|
|
19
|
+
xrefNames: [],
|
|
20
|
+
type: 'VARIANT',
|
|
21
|
+
wildType: 'A',
|
|
22
|
+
alternativeSequence: 'V',
|
|
23
|
+
consequenceType: 'disease',
|
|
24
|
+
clinicalSignificances: [
|
|
25
|
+
{
|
|
26
|
+
type: 'Variant of uncertain significance',
|
|
27
|
+
sources: ['Ensembl'],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
xrefs: [],
|
|
31
|
+
hasPredictions: false,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
accession: 'B',
|
|
35
|
+
begin: 1,
|
|
36
|
+
end: 1,
|
|
37
|
+
start: 1,
|
|
38
|
+
tooltipContent: '',
|
|
39
|
+
sourceType: 'source',
|
|
40
|
+
variant: 'D',
|
|
41
|
+
protvistaFeatureId: 'id2',
|
|
42
|
+
xrefNames: [],
|
|
43
|
+
type: 'VARIANT',
|
|
44
|
+
wildType: 'A',
|
|
45
|
+
alternativeSequence: 'D',
|
|
46
|
+
consequenceType: 'disease',
|
|
47
|
+
xrefs: [],
|
|
48
|
+
hasPredictions: false,
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
variants: [
|
|
54
|
+
{
|
|
55
|
+
accession: 'C',
|
|
56
|
+
begin: 2,
|
|
57
|
+
end: 2,
|
|
58
|
+
start: 2,
|
|
59
|
+
tooltipContent: '',
|
|
60
|
+
sourceType: 'source',
|
|
61
|
+
variant: 'V',
|
|
62
|
+
protvistaFeatureId: 'id1',
|
|
63
|
+
xrefNames: [],
|
|
64
|
+
type: 'VARIANT',
|
|
65
|
+
wildType: 'A',
|
|
66
|
+
alternativeSequence: 'V',
|
|
67
|
+
consequenceType: 'disease',
|
|
68
|
+
xrefs: [],
|
|
69
|
+
hasPredictions: false,
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
variants: [
|
|
75
|
+
{
|
|
76
|
+
accession: 'D',
|
|
77
|
+
begin: 3,
|
|
78
|
+
end: 3,
|
|
79
|
+
start: 3,
|
|
80
|
+
tooltipContent: '',
|
|
81
|
+
sourceType: 'source',
|
|
82
|
+
variant: 'V',
|
|
83
|
+
protvistaFeatureId: 'id1',
|
|
84
|
+
xrefNames: [],
|
|
85
|
+
type: 'VARIANT',
|
|
86
|
+
wildType: 'A',
|
|
87
|
+
alternativeSequence: 'V',
|
|
88
|
+
consequenceType: 'disease',
|
|
89
|
+
siftScore: 0.5,
|
|
90
|
+
xrefs: [],
|
|
91
|
+
hasPredictions: false,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
describe('Variation filter config', () => {
|
|
98
|
+
test('it should filter according to the callback function', () => {
|
|
99
|
+
const filteredVariants = getFilteredVariants(
|
|
100
|
+
transformedVariantPositions as VariantsForFilter,
|
|
101
|
+
(variant) => variant.accession === 'A'
|
|
102
|
+
);
|
|
103
|
+
expect(filteredVariants).toEqual([
|
|
104
|
+
{
|
|
105
|
+
variants: [transformedVariantPositions[0].variants[0]],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
variants: [],
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
variants: [],
|
|
112
|
+
},
|
|
113
|
+
]);
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
test('it should get the right colour for disease', () => {
|
|
117
|
+
const firstVariant = colorConfig(
|
|
118
|
+
transformedVariantPositions[0].variants[0]
|
|
119
|
+
);
|
|
120
|
+
expect(firstVariant).toEqual('#009e73');
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
test('it should get the right colour for non disease', () => {
|
|
124
|
+
const secondVariant = colorConfig(
|
|
125
|
+
transformedVariantPositions[0].variants[1]
|
|
126
|
+
);
|
|
127
|
+
expect(secondVariant).toEqual('#009e73');
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
test('it should get the right colour for other', () => {
|
|
131
|
+
const thirdVariant = colorConfig(
|
|
132
|
+
transformedVariantPositions?.[1].variants[0]
|
|
133
|
+
);
|
|
134
|
+
expect(thirdVariant).toEqual('#009e73');
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
test('it should get the right colour for predicted', () => {
|
|
138
|
+
const thirdVariant = colorConfig(
|
|
139
|
+
transformedVariantPositions[2].variants[0]
|
|
140
|
+
);
|
|
141
|
+
expect(thirdVariant).toEqual('#009e73');
|
|
142
|
+
});
|
|
143
|
+
});
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
const data = {
|
|
2
|
+
accession: 'P01234',
|
|
3
|
+
id: 'A4_HUMAN_mocked',
|
|
4
|
+
dbReferences: [
|
|
5
|
+
{
|
|
6
|
+
type: 'UniGene',
|
|
7
|
+
id: 'Hs.434980',
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
type: 'PDB',
|
|
11
|
+
id: '1AAP',
|
|
12
|
+
properties: {
|
|
13
|
+
method: 'X-ray',
|
|
14
|
+
resolution: '1.50 A',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
type: 'PDB',
|
|
19
|
+
id: '1AMB',
|
|
20
|
+
properties: {
|
|
21
|
+
method: 'NMR',
|
|
22
|
+
chains: 'A=672-699',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
type: 'PDB',
|
|
27
|
+
id: '1AMC',
|
|
28
|
+
properties: {
|
|
29
|
+
method: 'NMR',
|
|
30
|
+
chains: 'A=672-699',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
type: 'PDB',
|
|
35
|
+
id: '1AML',
|
|
36
|
+
properties: {
|
|
37
|
+
method: 'NMR',
|
|
38
|
+
chains: 'A=672-711',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'PDB',
|
|
43
|
+
id: '1BA4',
|
|
44
|
+
properties: {
|
|
45
|
+
method: 'NMR',
|
|
46
|
+
chains: 'A=672-711',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
type: 'PROSITE',
|
|
51
|
+
id: 'PS00280',
|
|
52
|
+
properties: {
|
|
53
|
+
'match status': '1',
|
|
54
|
+
'entry name': 'BPTI_KUNITZ_1',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'PROSITE',
|
|
59
|
+
id: 'PS50279',
|
|
60
|
+
properties: {
|
|
61
|
+
'match status': '1',
|
|
62
|
+
'entry name': 'BPTI_KUNITZ_2',
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
sequence: {
|
|
67
|
+
version: 3,
|
|
68
|
+
length: 770,
|
|
69
|
+
mass: 86943,
|
|
70
|
+
modified: '1991-11-01',
|
|
71
|
+
sequence:
|
|
72
|
+
'MLPGLALLLLAAWTARALEVPTDGNAGLLAEPQIAMFCGRLNMHMNVQNGKWDSDPSGTKTCIDTKEGILQYCQEVYPELQITNVVEANQPVTIQNWCKRGRKQCKTHPHFVIPYRCLVGEFVSDALLVPDKCKFLHQERMDVCETHLHWHTVAKETCSEKSTNLHDYGMLLPCGIDKFRGVEFVCCPLAEESDNVDSADAEEDDSDVWWGGADTDYADGSEDKVVEVAEEEEVAEVEEEEADDDEDDEDGDEVEEEAEEPYEEATERTTSIATTTTTTTESVEEVVREVCSEQAETGPCRAMISRWYFDVTEGKCAPFFYGGCGGNRNNFDTEEYCMAVCGSAMSQSLLKTTQEPLARDPVKLPTTAASTPDAVDKYLETPGDENEHAHFQKAKERLEAKHRERMSQVMREWEEAERQAKNLPKADKKAVIQHFQEKVESLEQEAANERQQLVETHMARVEAMLNDRRRLALENYITALQAVPPRPRHVFNMLKKYVRAEQKDRQHTLKHFEHVRMVDPKKAAQIRSQVMTHLRVIYERMNQSLSLLYNVPAVAEEIQDEVDELLQKEQNYSDDVLANMISEPRISYGNDALMPSLTETKTTVELLPVNGEFSLDDLQPWHSFGADSVPANTENEVEPVDARPAADRGLTTRPGSGLTNIKTEEISEVKMDAEFRHDSGYEVHHQKLVFFAEDVGSNKGAIIGLMVGGVVIATVIVITLVMLKKKQYTSIHHGVVEVDAAVTPEERHLSKMQQNGYENPTYKFFEQMQN',
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
export default data;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
|
+
|
|
3
|
+
exports[`structure data should merge Overlapping Intervals 1`] = `
|
|
4
|
+
Array [
|
|
5
|
+
Object {
|
|
6
|
+
"category": "STRUCTURE_COVERAGE",
|
|
7
|
+
"end": 0,
|
|
8
|
+
"start": 0,
|
|
9
|
+
"structures": Array [
|
|
10
|
+
Object {
|
|
11
|
+
"description": "Method: X-ray. Resolution: 1.50 A. ",
|
|
12
|
+
"end": 0,
|
|
13
|
+
"source": Object {
|
|
14
|
+
"id": "1AAP",
|
|
15
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AAP",
|
|
16
|
+
},
|
|
17
|
+
"start": 0,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
"type": "PDBE_COVER",
|
|
21
|
+
},
|
|
22
|
+
Object {
|
|
23
|
+
"category": "STRUCTURE_COVERAGE",
|
|
24
|
+
"end": 711,
|
|
25
|
+
"start": 672,
|
|
26
|
+
"structures": Array [
|
|
27
|
+
Object {
|
|
28
|
+
"description": "Method: NMR. Chains: A=672-699. ",
|
|
29
|
+
"end": 699,
|
|
30
|
+
"source": Object {
|
|
31
|
+
"id": "1AMB",
|
|
32
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AMB",
|
|
33
|
+
},
|
|
34
|
+
"start": 672,
|
|
35
|
+
},
|
|
36
|
+
Object {
|
|
37
|
+
"description": "Method: NMR. Chains: A=672-699. ",
|
|
38
|
+
"end": 699,
|
|
39
|
+
"source": Object {
|
|
40
|
+
"id": "1AMC",
|
|
41
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AMC",
|
|
42
|
+
},
|
|
43
|
+
"start": 672,
|
|
44
|
+
},
|
|
45
|
+
Object {
|
|
46
|
+
"description": "Method: NMR. Chains: A=672-711. ",
|
|
47
|
+
"end": 711,
|
|
48
|
+
"source": Object {
|
|
49
|
+
"id": "1AML",
|
|
50
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AML",
|
|
51
|
+
},
|
|
52
|
+
"start": 672,
|
|
53
|
+
},
|
|
54
|
+
Object {
|
|
55
|
+
"description": "Method: NMR. Chains: A=672-711. ",
|
|
56
|
+
"end": 711,
|
|
57
|
+
"source": Object {
|
|
58
|
+
"id": "1BA4",
|
|
59
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1BA4",
|
|
60
|
+
},
|
|
61
|
+
"start": 672,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
"type": "PDBE_COVER",
|
|
65
|
+
},
|
|
66
|
+
]
|
|
67
|
+
`;
|
|
68
|
+
|
|
69
|
+
exports[`structure data should turn structures into features 1`] = `
|
|
70
|
+
Array [
|
|
71
|
+
Object {
|
|
72
|
+
"category": "STRUCTURE_COVERAGE",
|
|
73
|
+
"end": 0,
|
|
74
|
+
"start": 0,
|
|
75
|
+
"structures": Array [
|
|
76
|
+
Object {
|
|
77
|
+
"description": "Method: X-ray. Resolution: 1.50 A. ",
|
|
78
|
+
"end": 0,
|
|
79
|
+
"source": Object {
|
|
80
|
+
"id": "1AAP",
|
|
81
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AAP",
|
|
82
|
+
},
|
|
83
|
+
"start": 0,
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
"type": "PDBE_COVER",
|
|
87
|
+
},
|
|
88
|
+
Object {
|
|
89
|
+
"category": "STRUCTURE_COVERAGE",
|
|
90
|
+
"end": 699,
|
|
91
|
+
"start": 672,
|
|
92
|
+
"structures": Array [
|
|
93
|
+
Object {
|
|
94
|
+
"description": "Method: NMR. Chains: A=672-699. ",
|
|
95
|
+
"end": 699,
|
|
96
|
+
"source": Object {
|
|
97
|
+
"id": "1AMB",
|
|
98
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AMB",
|
|
99
|
+
},
|
|
100
|
+
"start": 672,
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
"type": "PDBE_COVER",
|
|
104
|
+
},
|
|
105
|
+
Object {
|
|
106
|
+
"category": "STRUCTURE_COVERAGE",
|
|
107
|
+
"end": 699,
|
|
108
|
+
"start": 672,
|
|
109
|
+
"structures": Array [
|
|
110
|
+
Object {
|
|
111
|
+
"description": "Method: NMR. Chains: A=672-699. ",
|
|
112
|
+
"end": 699,
|
|
113
|
+
"source": Object {
|
|
114
|
+
"id": "1AMC",
|
|
115
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AMC",
|
|
116
|
+
},
|
|
117
|
+
"start": 672,
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
"type": "PDBE_COVER",
|
|
121
|
+
},
|
|
122
|
+
Object {
|
|
123
|
+
"category": "STRUCTURE_COVERAGE",
|
|
124
|
+
"end": 711,
|
|
125
|
+
"start": 672,
|
|
126
|
+
"structures": Array [
|
|
127
|
+
Object {
|
|
128
|
+
"description": "Method: NMR. Chains: A=672-711. ",
|
|
129
|
+
"end": 711,
|
|
130
|
+
"source": Object {
|
|
131
|
+
"id": "1AML",
|
|
132
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1AML",
|
|
133
|
+
},
|
|
134
|
+
"start": 672,
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
"type": "PDBE_COVER",
|
|
138
|
+
},
|
|
139
|
+
Object {
|
|
140
|
+
"category": "STRUCTURE_COVERAGE",
|
|
141
|
+
"end": 711,
|
|
142
|
+
"start": 672,
|
|
143
|
+
"structures": Array [
|
|
144
|
+
Object {
|
|
145
|
+
"description": "Method: NMR. Chains: A=672-711. ",
|
|
146
|
+
"end": 711,
|
|
147
|
+
"source": Object {
|
|
148
|
+
"id": "1BA4",
|
|
149
|
+
"url": "http://www.ebi.ac.uk/pdbe-srv/view/entry/1BA4",
|
|
150
|
+
},
|
|
151
|
+
"start": 672,
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
"type": "PDBE_COVER",
|
|
155
|
+
},
|
|
156
|
+
]
|
|
157
|
+
`;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAllFeatureStructures,
|
|
3
|
+
mergeOverlappingIntervals,
|
|
4
|
+
} from '../structure-adapter';
|
|
5
|
+
|
|
6
|
+
import entryData from './__mocks__/uniprotkb-entry-data';
|
|
7
|
+
|
|
8
|
+
describe('structure data', () => {
|
|
9
|
+
it('should turn structures into features', () => {
|
|
10
|
+
const features = getAllFeatureStructures(entryData);
|
|
11
|
+
expect(features).toMatchSnapshot();
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it('should merge Overlapping Intervals', () => {
|
|
15
|
+
const features = getAllFeatureStructures(entryData);
|
|
16
|
+
const overlapping = mergeOverlappingIntervals(features);
|
|
17
|
+
expect(overlapping).toMatchSnapshot();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlphafoldPayload } from './
|
|
1
|
+
import { AlphafoldPayload } from './types/alphafold';
|
|
2
2
|
|
|
3
3
|
type AlphafoldConfidencePayload = {
|
|
4
4
|
residueNumber: Array<number>;
|
|
@@ -6,7 +6,7 @@ type AlphafoldConfidencePayload = {
|
|
|
6
6
|
confidenceCategory: Array<string>;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
const getConfidenceURLFromPayload = (data: AlphafoldPayload) => {
|
|
10
10
|
const cifURL = data?.[0]?.cifUrl;
|
|
11
11
|
return cifURL?.length
|
|
12
12
|
? cifURL.replace('-model', '-confidence').replace('.cif', '.json')
|
|
@@ -30,7 +30,7 @@ type PartialProtein = {
|
|
|
30
30
|
};
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
const transformData = async (
|
|
34
34
|
data: AlphafoldPayload,
|
|
35
35
|
protein: PartialProtein
|
|
36
36
|
) => {
|
|
@@ -41,3 +41,5 @@ export const transformData = async (
|
|
|
41
41
|
return confidenceData?.confidenceCategory.join('');
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
|
+
|
|
45
|
+
export default transformData;
|
package/src/{protvista-alphamissense-heatmap.ts → adapters/alphamissense-heatmap-adapter.ts}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cellSplitter,
|
|
3
3
|
rowSplitter,
|
|
4
|
-
} from './
|
|
5
|
-
import { AlphafoldPayload } from './
|
|
4
|
+
} from './alphamissense-pathogenicity-adapter';
|
|
5
|
+
import { AlphafoldPayload } from './types/alphafold';
|
|
6
6
|
|
|
7
7
|
const parseCSV = (rawText: string): Array<Record<string, string>> => {
|
|
8
8
|
const data = [];
|
|
@@ -24,7 +24,9 @@ const parseCSV = (rawText: string): Array<Record<string, string>> => {
|
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
// Load and parse
|
|
27
|
-
const loadAndParseAnnotations = async (
|
|
27
|
+
const loadAndParseAnnotations = async (
|
|
28
|
+
url: string
|
|
29
|
+
): Promise<Array<Record<string, string>>> => {
|
|
28
30
|
try {
|
|
29
31
|
const payload = await fetch(url);
|
|
30
32
|
const rawCSV = await payload.text();
|
|
@@ -40,7 +42,7 @@ type PartialProtein = {
|
|
|
40
42
|
};
|
|
41
43
|
};
|
|
42
44
|
|
|
43
|
-
|
|
45
|
+
const transformData = async (
|
|
44
46
|
data: AlphafoldPayload,
|
|
45
47
|
protein: PartialProtein
|
|
46
48
|
) => {
|
|
@@ -50,3 +52,5 @@ export const transformData = async (
|
|
|
50
52
|
return heatmapData;
|
|
51
53
|
}
|
|
52
54
|
};
|
|
55
|
+
|
|
56
|
+
export default transformData;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AlphafoldPayload } from './
|
|
1
|
+
import { AlphafoldPayload } from './types/alphafold';
|
|
2
2
|
|
|
3
3
|
// from example data
|
|
4
4
|
// benign: [0.0448,0.3397]: x < 0.34
|
|
@@ -87,7 +87,7 @@ type PartialProtein = {
|
|
|
87
87
|
};
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
const transformData = async (
|
|
91
91
|
data: AlphafoldPayload,
|
|
92
92
|
protein: PartialProtein
|
|
93
93
|
) => {
|
|
@@ -98,3 +98,5 @@ export const transformData = async (
|
|
|
98
98
|
return variationData;
|
|
99
99
|
}
|
|
100
100
|
};
|
|
101
|
+
|
|
102
|
+
export default transformData;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const ecoMap = [
|
|
2
|
+
{
|
|
3
|
+
name: 'ECO:0000269',
|
|
4
|
+
description: 'Manual assertion based on experiment',
|
|
5
|
+
shortDescription: 'Publication',
|
|
6
|
+
acronym: 'EXP',
|
|
7
|
+
isManual: true,
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
name: 'ECO:0000303',
|
|
11
|
+
description: 'Manual assertion based on opinion',
|
|
12
|
+
shortDescription: 'Publication',
|
|
13
|
+
acronym: 'NAS',
|
|
14
|
+
isManual: true,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'ECO:0000305',
|
|
18
|
+
description: 'Manual assertion inferred by curator',
|
|
19
|
+
shortDescription: 'Curated',
|
|
20
|
+
acronym: 'IC',
|
|
21
|
+
isManual: true,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'ECO:0000250',
|
|
25
|
+
description: 'Manual assertion inferred from sequence similarity',
|
|
26
|
+
shortDescription: 'By similarity',
|
|
27
|
+
acronym: 'ISS',
|
|
28
|
+
isManual: true,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'ECO:0000255',
|
|
32
|
+
description: 'Manual assertion according to rules',
|
|
33
|
+
shortDescription: 'Sequence Analysis',
|
|
34
|
+
acronym: 'ISM',
|
|
35
|
+
isManual: true,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'ECO:0007744',
|
|
39
|
+
description:
|
|
40
|
+
'Manual assertion inferred from combination of experimental and computational evidence',
|
|
41
|
+
shortDescription: 'Combined sources',
|
|
42
|
+
acronym: 'MIXM',
|
|
43
|
+
isManual: true,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'ECO:0000312',
|
|
47
|
+
description: 'Manual assertion inferred from database entries',
|
|
48
|
+
shortDescription: 'Imported',
|
|
49
|
+
acronym: 'MI',
|
|
50
|
+
isManual: true,
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'ECO:0000256',
|
|
54
|
+
description: 'Automatic assertion according to rules',
|
|
55
|
+
shortDescription: 'Automatic annotation',
|
|
56
|
+
acronym: 'AA',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'ECO:0000259',
|
|
60
|
+
description: 'Automatic assertion inferred from signature match',
|
|
61
|
+
shortDescription: 'Automatic annotation',
|
|
62
|
+
acronym: 'AA',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'ECO:0007829',
|
|
66
|
+
description:
|
|
67
|
+
'Automatic assertion inferred from combination of experimental and computational evidence',
|
|
68
|
+
shortDescription: 'Combined sources',
|
|
69
|
+
acronym: 'MIXA',
|
|
70
|
+
},
|
|
71
|
+
/* ECO:0007829 replaced ECO:0000213 from release 2022_02.
|
|
72
|
+
Some evidences still have the obsolete code. eg: https://www.ebi.ac.uk/proteins/api/antigen/P49841
|
|
73
|
+
It is better to show the evidence rather than being it empty */
|
|
74
|
+
{
|
|
75
|
+
name: 'ECO:0000213',
|
|
76
|
+
description:
|
|
77
|
+
'Automatic assertion inferred from combination of experimental and computational evidence',
|
|
78
|
+
shortDescription: 'Combined sources',
|
|
79
|
+
acronym: 'MIXA',
|
|
80
|
+
},
|
|
81
|
+
// ECO:0007744 replaced ECO:0000244 from release 2022_02. Same as above
|
|
82
|
+
{
|
|
83
|
+
name: 'ECO:0000244',
|
|
84
|
+
description:
|
|
85
|
+
'Manual assertion inferred from combination of experimental and computational evidence',
|
|
86
|
+
shortDescription: 'Combined sources',
|
|
87
|
+
acronym: 'MIXM',
|
|
88
|
+
isManual: true,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'ECO:0000313',
|
|
92
|
+
description: 'Automatic assertion inferred from database entries',
|
|
93
|
+
shortDescription: 'Imported',
|
|
94
|
+
acronym: 'AI',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'ECO:0000260',
|
|
98
|
+
description: 'Manual assertion inferred from signature match',
|
|
99
|
+
shortDescription: 'InterPro annotation',
|
|
100
|
+
acronym: 'SGNM',
|
|
101
|
+
isManual: true,
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
|
|
105
|
+
export default ecoMap;
|