protvista-uniprot 2.13.2 → 3.0.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.
Files changed (124) hide show
  1. package/dist/es/__spec__/filter-config.spec.d.ts +1 -0
  2. package/dist/es/__spec__/filter-config.spec.js +123 -0
  3. package/dist/es/__spec__/filter-config.spec.js.map +1 -0
  4. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.d.ts +47 -0
  5. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js +75 -0
  6. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js.map +1 -0
  7. package/dist/es/adapters/__tests__/structure-adapter.spec.d.ts +1 -0
  8. package/dist/es/adapters/__tests__/structure-adapter.spec.js +14 -0
  9. package/dist/es/adapters/__tests__/structure-adapter.spec.js.map +1 -0
  10. package/dist/es/adapters/alphafold-confidence-adapter.d.ts +8 -0
  11. package/dist/es/{protvista-alphafold-confidence.js → adapters/alphafold-confidence-adapter.js} +4 -3
  12. package/dist/es/adapters/alphafold-confidence-adapter.js.map +1 -0
  13. package/dist/es/adapters/alphamissense-heatmap-adapter.d.ts +8 -0
  14. package/dist/es/{protvista-alphamissense-heatmap.js → adapters/alphamissense-heatmap-adapter.js} +4 -3
  15. package/dist/es/adapters/alphamissense-heatmap-adapter.js.map +1 -0
  16. package/dist/es/adapters/alphamissense-pathogenicity-adapter.d.ts +10 -0
  17. package/dist/es/{protvista-alphamissense-pathogenicity.js → adapters/alphamissense-pathogenicity-adapter.js} +3 -2
  18. package/dist/es/adapters/alphamissense-pathogenicity-adapter.js.map +1 -0
  19. package/dist/es/adapters/config/evidence.d.ts +14 -0
  20. package/dist/es/adapters/config/evidence.js +101 -0
  21. package/dist/es/adapters/config/evidence.js.map +1 -0
  22. package/dist/es/adapters/feature-adapter.d.ts +2 -0
  23. package/dist/es/adapters/feature-adapter.js +18 -0
  24. package/dist/es/adapters/feature-adapter.js.map +1 -0
  25. package/dist/es/adapters/interpro-adapter.d.ts +2 -0
  26. package/dist/es/adapters/interpro-adapter.js +60 -0
  27. package/dist/es/adapters/interpro-adapter.js.map +1 -0
  28. package/dist/es/adapters/proteomics-adapter.d.ts +2 -0
  29. package/dist/es/adapters/proteomics-adapter.js +66 -0
  30. package/dist/es/adapters/proteomics-adapter.js.map +1 -0
  31. package/dist/es/{protvista-ptm-exchange.d.ts → adapters/ptm-exchange-adapter.d.ts} +2 -2
  32. package/dist/es/{protvista-ptm-exchange.js → adapters/ptm-exchange-adapter.js} +3 -2
  33. package/dist/es/adapters/ptm-exchange-adapter.js.map +1 -0
  34. package/dist/es/adapters/structure-adapter.d.ts +4 -0
  35. package/dist/es/adapters/structure-adapter.js +89 -0
  36. package/dist/es/adapters/structure-adapter.js.map +1 -0
  37. package/dist/es/adapters/types/alphafold.js +2 -0
  38. package/dist/es/adapters/types/alphafold.js.map +1 -0
  39. package/dist/es/adapters/variation-adapter.d.ts +7 -0
  40. package/dist/es/adapters/variation-adapter.js +31 -0
  41. package/dist/es/adapters/variation-adapter.js.map +1 -0
  42. package/dist/es/{protvista-variation-graph-adapter.d.ts → adapters/variation-graph-adapter.d.ts} +2 -1
  43. package/dist/es/{protvista-variation-graph-adapter.js → adapters/variation-graph-adapter.js} +12 -5
  44. package/dist/es/adapters/variation-graph-adapter.js.map +1 -0
  45. package/dist/es/config.json +54 -54
  46. package/dist/es/filter-config.d.ts +24 -0
  47. package/dist/es/{filterConfig.js → filter-config.js} +1 -1
  48. package/dist/es/filter-config.js.map +1 -0
  49. package/dist/es/index.d.ts +6 -11
  50. package/dist/es/index.js +6 -16
  51. package/dist/es/index.js.map +1 -1
  52. package/dist/es/protvista-uniprot-structure.js +15 -9
  53. package/dist/es/protvista-uniprot-structure.js.map +1 -1
  54. package/dist/es/protvista-uniprot.d.ts +1 -100
  55. package/dist/es/protvista-uniprot.js +46 -60
  56. package/dist/es/protvista-uniprot.js.map +1 -1
  57. package/dist/es/styles/protvista-styles.js +2 -1
  58. package/dist/es/styles/protvista-styles.js.map +1 -1
  59. package/dist/es/tooltips/featureTooltip.d.ts +4 -0
  60. package/dist/es/tooltips/featureTooltip.js +160 -0
  61. package/dist/es/tooltips/featureTooltip.js.map +1 -0
  62. package/dist/es/tooltips/structureTooltip.d.ts +2 -0
  63. package/dist/es/tooltips/structureTooltip.js +15 -0
  64. package/dist/es/tooltips/structureTooltip.js.map +1 -0
  65. package/dist/es/tooltips/variationTooltip.d.ts +3 -0
  66. package/dist/es/tooltips/variationTooltip.js +82 -0
  67. package/dist/es/tooltips/variationTooltip.js.map +1 -0
  68. package/dist/es/utils.d.ts +3 -0
  69. package/dist/es/utils.js +28 -0
  70. package/dist/es/utils.js.map +1 -0
  71. package/dist/protvista-uniprot.js +24 -13
  72. package/dist/protvista-uniprot.js.map +1 -1
  73. package/package.json +25 -30
  74. package/src/__spec__/filter-config.spec.ts +143 -0
  75. package/src/adapters/__tests__/__mocks__/uniprotkb-entry-data.ts +76 -0
  76. package/src/adapters/__tests__/__snapshots__/structure-adapter.spec.ts.snap +157 -0
  77. package/src/adapters/__tests__/structure-adapter.spec.ts +19 -0
  78. package/src/{protvista-alphafold-confidence.ts → adapters/alphafold-confidence-adapter.ts} +5 -3
  79. package/src/{protvista-alphamissense-heatmap.ts → adapters/alphamissense-heatmap-adapter.ts} +8 -4
  80. package/src/{protvista-alphamissense-pathogenicity.ts → adapters/alphamissense-pathogenicity-adapter.ts} +4 -2
  81. package/src/adapters/config/evidence.ts +105 -0
  82. package/src/adapters/feature-adapter.ts +19 -0
  83. package/src/adapters/interpro-adapter.ts +71 -0
  84. package/src/adapters/proteomics-adapter.ts +76 -0
  85. package/src/{protvista-ptm-exchange.ts → adapters/ptm-exchange-adapter.ts} +3 -1
  86. package/src/adapters/structure-adapter.ts +105 -0
  87. package/src/adapters/variation-adapter.ts +44 -0
  88. package/src/{protvista-variation-graph-adapter.ts → adapters/variation-graph-adapter.ts} +25 -18
  89. package/src/config.json +54 -54
  90. package/src/{filterConfig.ts → filter-config.ts} +17 -12
  91. package/src/index.ts +14 -18
  92. package/src/protvista-uniprot-structure.ts +6 -14
  93. package/src/protvista-uniprot.ts +66 -96
  94. package/src/styles/protvista-styles.ts +2 -1
  95. package/src/tooltips/featureTooltip.ts +223 -0
  96. package/src/tooltips/structureTooltip.ts +20 -0
  97. package/src/tooltips/variationTooltip.ts +139 -0
  98. package/src/utils.ts +37 -0
  99. package/dist/es/commonTypes.js +0 -2
  100. package/dist/es/commonTypes.js.map +0 -1
  101. package/dist/es/filterConfig.d.ts +0 -20
  102. package/dist/es/filterConfig.js.map +0 -1
  103. package/dist/es/loadComponents.d.ts +0 -2
  104. package/dist/es/loadComponents.js +0 -7
  105. package/dist/es/loadComponents.js.map +0 -1
  106. package/dist/es/protvista-alphafold-confidence.d.ts +0 -9
  107. package/dist/es/protvista-alphafold-confidence.js.map +0 -1
  108. package/dist/es/protvista-alphamissense-heatmap.d.ts +0 -8
  109. package/dist/es/protvista-alphamissense-heatmap.js.map +0 -1
  110. package/dist/es/protvista-alphamissense-pathogenicity.d.ts +0 -10
  111. package/dist/es/protvista-alphamissense-pathogenicity.js.map +0 -1
  112. package/dist/es/protvista-ptm-exchange.js.map +0 -1
  113. package/dist/es/protvista-variation-graph-adapter.js.map +0 -1
  114. package/src/loadComponents.ts +0 -10
  115. package/src/types/nightingale-components.d.ts +0 -13
  116. package/src/types/nightingale-sequence-heatmap.d.ts +0 -1
  117. package/src/types/protvista-feature-adapter.d.ts +0 -1
  118. package/src/types/protvista-interpro-adapter.d.ts +0 -1
  119. package/src/types/protvista-proteomics-adapter.d.ts +0 -1
  120. package/src/types/protvista-structure-adapter.d.ts +0 -1
  121. package/src/types/protvista-structure.d.ts +0 -1
  122. package/src/types/protvista-variation.d.ts +0 -15
  123. /package/dist/es/{commonTypes.d.ts → adapters/types/alphafold.d.ts} +0 -0
  124. /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": "2.13.2",
4
+ "version": "3.0.0",
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.2.0",
29
- "@nightingale-elements/nightingale-filter": "5.2.0",
30
- "@nightingale-elements/nightingale-interpro-track": "5.2.0",
31
- "@nightingale-elements/nightingale-linegraph-track": "5.2.0",
32
- "@nightingale-elements/nightingale-manager": "5.2.0",
33
- "@nightingale-elements/nightingale-navigation": "5.2.0",
34
- "@nightingale-elements/nightingale-sequence": "5.2.0",
35
- "@nightingale-elements/nightingale-sequence-heatmap": "5.1.0",
36
- "@nightingale-elements/nightingale-structure": "5.2.0",
37
- "@nightingale-elements/nightingale-track": "5.2.0",
38
- "@nightingale-elements/nightingale-variation": "5.2.0",
39
- "core-js": "^3.13.0",
40
- "data-loader": "^2.9.1",
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.0",
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
- "protvista-feature-adapter": "3.8.22",
45
- "protvista-interpro-adapter": "3.8.22",
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/file-saver": "^2.0.2",
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
- "peerDependencies": {
80
- "d3": "5.X"
81
- },
82
- "gitHead": "5a756316482fa31d085602d46438861fb45e5178"
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 './commonTypes';
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
- export const getConfidenceURLFromPayload = (data: AlphafoldPayload) => {
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
- export const transformData = async (
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;
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  cellSplitter,
3
3
  rowSplitter,
4
- } from './protvista-alphamissense-pathogenicity';
5
- import { AlphafoldPayload } from './commonTypes';
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 (url: string): Promise<Array<Record<string, string>>> => {
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
- export const transformData = async (
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 './commonTypes';
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
- export const transformData = async (
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;