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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import groupBy from 'lodash-es/groupBy';
|
|
2
|
+
import { formatXrefs, getEvidenceFromCodes } from './featureTooltip';
|
|
3
|
+
const getDiseaseAssociations = (associations) => associations === null || associations === void 0 ? void 0 : associations.map((association) => `
|
|
4
|
+
<h4>Disease association</h4><p>${association.name}</p>
|
|
5
|
+
${association.description
|
|
6
|
+
? `<>${association.description}</p>`
|
|
7
|
+
: ''}
|
|
8
|
+
${association.dbReferences
|
|
9
|
+
? `<h5>Cross-references</h5>${formatXrefs(association.dbReferences)}`
|
|
10
|
+
: ''}
|
|
11
|
+
${getEvidenceFromCodes(association.evidences)}
|
|
12
|
+
`).join('');
|
|
13
|
+
const getDescriptions = (descriptions) => `<hr/><h5>Description</h5>${descriptions
|
|
14
|
+
.map((description) => `<p>${description.value}</p>`)
|
|
15
|
+
.join('')}
|
|
16
|
+
`;
|
|
17
|
+
const getPopulationFrequencies = (popFrequencies) => `<hr/><h5>Population frequencies</h5>${popFrequencies
|
|
18
|
+
.map((freq) => `<p>${freq.frequency} - ${freq.populationName} (${freq.source})</p>`)
|
|
19
|
+
.join('')}`;
|
|
20
|
+
const getEnsemblCovidLinks = (variant) => {
|
|
21
|
+
const shouldGenerateLink = variant.locations.some((location) => location.source === 'EnsemblViruses');
|
|
22
|
+
if (shouldGenerateLink) {
|
|
23
|
+
const xref = variant.xrefs.find((xref) => xref.name === 'ENA');
|
|
24
|
+
return xref.id
|
|
25
|
+
? `<h5>Ensembl COVID-19</h5>
|
|
26
|
+
<p>
|
|
27
|
+
<a href="https://covid-19.ensembl.org/Sars_cov_2/Variation/Explore?v=${xref.id}" target="_blank" rel="noopener noreferrer">${xref.id}</a>
|
|
28
|
+
</p>`
|
|
29
|
+
: '';
|
|
30
|
+
}
|
|
31
|
+
return '';
|
|
32
|
+
};
|
|
33
|
+
const getPredictions = (predictions) => {
|
|
34
|
+
const groupedPredictions = groupBy(predictions, 'predAlgorithmNameType');
|
|
35
|
+
const counts = Object.keys(groupedPredictions).map((key) => {
|
|
36
|
+
const valueGroups = groupBy(groupedPredictions[key], 'predictionValType');
|
|
37
|
+
return {
|
|
38
|
+
algorithm: key,
|
|
39
|
+
values: Object.keys(valueGroups).map((valKey) => ({
|
|
40
|
+
name: valKey,
|
|
41
|
+
count: valueGroups[valKey].length,
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
return counts
|
|
46
|
+
.map((countItem) => `<h6>${countItem.algorithm}</h6><ul class="no-bullet">${countItem.values
|
|
47
|
+
.map((countValue) => `<li>${countValue.name}</li>`)
|
|
48
|
+
.join('')}</ul>`)
|
|
49
|
+
.join('');
|
|
50
|
+
};
|
|
51
|
+
const formatTooltip = (variant) => {
|
|
52
|
+
var _a;
|
|
53
|
+
return `
|
|
54
|
+
<h5>Variant</h5><p>${variant.wildType} > ${variant.alternativeSequence || ''}</p>
|
|
55
|
+
${variant.populationFrequencies
|
|
56
|
+
? getPopulationFrequencies(variant.populationFrequencies)
|
|
57
|
+
: ''}
|
|
58
|
+
${variant.consequenceType
|
|
59
|
+
? `<h5>Consequence</h5><p>${variant.consequenceType}</p>`
|
|
60
|
+
: ``}
|
|
61
|
+
${variant.somaticStatus
|
|
62
|
+
? `<h5>Somatic</h5><p>${variant.somaticStatus === 0 ? 'No' : 'Yes'}</p>`
|
|
63
|
+
: ``}
|
|
64
|
+
${((_a = variant.genomicLocation) === null || _a === void 0 ? void 0 : _a.length)
|
|
65
|
+
? `<h5>Location</h5><p>${variant.genomicLocation.join(', ')}</p>`
|
|
66
|
+
: ``}
|
|
67
|
+
${variant.ftId
|
|
68
|
+
? `<h5>Feature ID</h5><p>${variant.ftId}</p>`
|
|
69
|
+
: ``}
|
|
70
|
+
${variant.descriptions
|
|
71
|
+
? getDescriptions(variant.descriptions)
|
|
72
|
+
: ''}
|
|
73
|
+
${variant.association
|
|
74
|
+
? getDiseaseAssociations(variant.association)
|
|
75
|
+
: ''}
|
|
76
|
+
${variant.predictions ? getPredictions(variant.predictions) : ''}
|
|
77
|
+
${getEnsemblCovidLinks(variant)}
|
|
78
|
+
|
|
79
|
+
`;
|
|
80
|
+
};
|
|
81
|
+
export default formatTooltip;
|
|
82
|
+
//# sourceMappingURL=variationTooltip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variationTooltip.js","sourceRoot":"","sources":["../../../src/tooltips/variationTooltip.ts"],"names":[],"mappings":"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"}
|
package/dist/es/utils.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const renameProperties = (features) => features.map((ft) => ({
|
|
2
|
+
...ft,
|
|
3
|
+
start: ft.begin || undefined,
|
|
4
|
+
}));
|
|
5
|
+
export const loadComponent = (name, elementConstructor) => {
|
|
6
|
+
if (!customElements.get(name)) {
|
|
7
|
+
customElements.define(name, elementConstructor);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
// Returns an object of the form url => payload json
|
|
11
|
+
// getUrl optional function modifies url string
|
|
12
|
+
export const fetchAll = async (urls, getUrl = null) => Object.fromEntries(await Promise.all(urls.map(async (url) => {
|
|
13
|
+
try {
|
|
14
|
+
const response = await fetch(getUrl ? getUrl(url) : url);
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
// TODO handle this better based on error code
|
|
17
|
+
// Fail silently for now
|
|
18
|
+
console.warn(`HTTP error status: ${response.status} at ${url}`);
|
|
19
|
+
return [url, null];
|
|
20
|
+
}
|
|
21
|
+
return [url, await response.json()];
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
console.warn(`Failed to fetch or parse JSON from ${url}:`, error);
|
|
25
|
+
return [url, null]; // or handle error data as needed
|
|
26
|
+
}
|
|
27
|
+
})));
|
|
28
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAC3C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACpB,GAAG,EAAE;IACL,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS;CAC7B,CAAC,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAY,EACZ,kBAA4C,EAC5C,EAAE;IACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;KACjD;AACH,CAAC,CAAC;AAEF,oDAAoD;AACpD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAc,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAChB,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACrB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,8CAA8C;YAC9C,wBAAwB;YACxB,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACpB;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACrC;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,iCAAiC;KACtD;AACH,CAAC,CAAC,CACH,CACF,CAAC"}
|