protvista-uniprot 2.12.2 → 2.13.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 (58) hide show
  1. package/README.md +2 -2
  2. package/dist/es/commonTypes.d.ts +1 -1
  3. package/dist/es/config.json +94 -67
  4. package/dist/es/filterConfig.d.ts +4 -3
  5. package/dist/es/filterConfig.js +48 -32
  6. package/dist/es/filterConfig.js.map +1 -1
  7. package/dist/es/index.d.ts +0 -2
  8. package/dist/es/index.js +0 -3
  9. package/dist/es/index.js.map +1 -1
  10. package/dist/es/protvista-alphafold-confidence.d.ts +1 -1
  11. package/dist/es/protvista-alphamissense-heatmap.d.ts +8 -0
  12. package/dist/es/protvista-alphamissense-heatmap.js +35 -0
  13. package/dist/es/protvista-alphamissense-heatmap.js.map +1 -0
  14. package/dist/es/protvista-alphamissense-pathogenicity.d.ts +3 -1
  15. package/dist/es/protvista-alphamissense-pathogenicity.js +2 -2
  16. package/dist/es/protvista-alphamissense-pathogenicity.js.map +1 -1
  17. package/dist/es/protvista-ptm-exchange.d.ts +7 -7
  18. package/dist/es/protvista-ptm-exchange.js +6 -4
  19. package/dist/es/protvista-ptm-exchange.js.map +1 -1
  20. package/dist/es/protvista-uniprot-structure.d.ts +6 -1
  21. package/dist/es/protvista-uniprot-structure.js +137 -66
  22. package/dist/es/protvista-uniprot-structure.js.map +1 -1
  23. package/dist/es/protvista-uniprot.d.ts +27 -16
  24. package/dist/es/protvista-uniprot.js +166 -145
  25. package/dist/es/protvista-uniprot.js.map +1 -1
  26. package/dist/es/protvista-variation-graph-adapter.d.ts +9 -0
  27. package/dist/es/protvista-variation-graph-adapter.js +46 -0
  28. package/dist/es/protvista-variation-graph-adapter.js.map +1 -0
  29. package/dist/es/styles/protvista-styles.js +8 -13
  30. package/dist/es/styles/protvista-styles.js.map +1 -1
  31. package/dist/protvista-uniprot.js +217 -217
  32. package/dist/protvista-uniprot.js.LICENSE.txt +24 -57
  33. package/dist/protvista-uniprot.js.map +1 -1
  34. package/package.json +15 -16
  35. package/src/config.json +94 -67
  36. package/src/filterConfig.ts +58 -55
  37. package/src/index.ts +0 -3
  38. package/src/protvista-alphamissense-heatmap.ts +52 -0
  39. package/src/protvista-alphamissense-pathogenicity.ts +2 -2
  40. package/src/protvista-ptm-exchange.ts +21 -19
  41. package/src/protvista-uniprot-structure.ts +168 -94
  42. package/src/protvista-uniprot.ts +226 -168
  43. package/src/protvista-variation-graph-adapter.ts +47 -0
  44. package/src/styles/protvista-styles.ts +8 -13
  45. package/src/types/nightingale-components.d.ts +1 -1
  46. package/src/types/nightingale-sequence-heatmap.d.ts +1 -0
  47. package/dist/es/download-panel.d.ts +0 -29
  48. package/dist/es/download-panel.js +0 -137
  49. package/dist/es/download-panel.js.map +0 -1
  50. package/src/download-panel.ts +0 -164
  51. package/src/types/protvista-filter.d.ts +0 -16
  52. package/src/types/protvista-interpro-track.d.ts +0 -1
  53. package/src/types/protvista-manager.d.ts +0 -1
  54. package/src/types/protvista-navigation.d.ts +0 -1
  55. package/src/types/protvista-sequence.d.ts +0 -1
  56. package/src/types/protvista-tooltip.d.ts +0 -8
  57. package/src/types/protvista-track.d.ts +0 -5
  58. package/src/types/protvista-variation-graph.d.ts +0 -1
@@ -0,0 +1,47 @@
1
+ export const transformData = (data) => {
2
+ if (data.sequence && data.features.length) {
3
+ const variants = data.features.map((variant) => ({
4
+ ...variant,
5
+ accession: variant.genomicLocation?.join(", "),
6
+ start: variant.begin,
7
+ }));
8
+
9
+ const total = new Uint8ClampedArray(data.sequence.length);
10
+ const diseaseTotal = new Uint8ClampedArray(data.sequence.length);
11
+
12
+ for (const { start, association } of variants) {
13
+ const index = +start;
14
+ // skip if the variant is outside of bounds
15
+ // eslint-disable-next-line no-continue
16
+ if (index < 1 || index > data.sequence.length) continue;
17
+
18
+ // eslint-disable-next-line no-plusplus
19
+ total[index]++;
20
+
21
+ // eslint-disable-next-line no-continue
22
+ if (!association) continue;
23
+ const hasDisease = association.find(
24
+ (association) => association.disease === true
25
+ );
26
+ // eslint-disable-next-line no-plusplus
27
+ if (hasDisease) diseaseTotal[index]++;
28
+ }
29
+
30
+ const graphData = [
31
+ {
32
+ name: 'variant',
33
+ range: [0, Math.max(Math.max(...total), Math.max(...diseaseTotal))],
34
+ color: 'darkgrey',
35
+ values: [...total].map((value, index) => ({ position: index, value: value })),
36
+ },
37
+ {
38
+ name: 'disease causing variant',
39
+ range: [0, Math.max(Math.max(...total), Math.max(...diseaseTotal))],
40
+ color: 'red',
41
+ values: [...diseaseTotal].map((value, index) => ({ position: index, value: value })),
42
+ },
43
+ ];
44
+ return graphData;
45
+ }
46
+ };
47
+
@@ -1,10 +1,6 @@
1
1
  import { css } from 'lit-element';
2
2
 
3
3
  export default css`
4
- protvista-tooltip a {
5
- text-decoration: underline;
6
- color: #fff;
7
- }
8
4
  .track-content {
9
5
  width: 80vw;
10
6
  }
@@ -27,16 +23,11 @@ export default css`
27
23
 
28
24
  .category-label,
29
25
  .track-label,
30
- .action-buttons,
26
+ .nav-track-label,
31
27
  .credits {
32
28
  width: 20vw;
33
29
  padding: 0.5em;
34
- }
35
-
36
- .action-buttons {
37
- display: flex;
38
- justify-content: flex-end;
39
- align-items: flex-end;
30
+ line-height: normal;
40
31
  }
41
32
 
42
33
  .category-label {
@@ -74,11 +65,11 @@ export default css`
74
65
  background-color: #d9faff;
75
66
  }
76
67
 
77
- protvista-track {
68
+ nightingale-track {
78
69
  border-top: 1px solid #d9faff;
79
70
  }
80
71
 
81
- protvista-navigation {
72
+ nightingale-navigation {
82
73
  .handle {
83
74
  fill: darkgrey;
84
75
  stroke: black;
@@ -87,6 +78,10 @@ export default css`
87
78
  }
88
79
  }
89
80
 
81
+ nightingale-filter {
82
+ font-size: 0.8rem;
83
+ }
84
+
90
85
  .feature {
91
86
  cursor: pointer;
92
87
  }
@@ -2,7 +2,7 @@ export type NightingaleEvent = Event & {
2
2
  detail?: {
3
3
  displaystart?: number;
4
4
  displayend?: number;
5
- eventtype?: 'click';
5
+ eventType?: "click" | "mouseover" | "mouseout" | "reset";
6
6
  feature?: any;
7
7
  coords?: [number, number];
8
8
  };
@@ -0,0 +1 @@
1
+ declare module '@nightingale-elements/nightingale-sequence-heatmap';
@@ -1,29 +0,0 @@
1
- import { LitElement } from 'lit-element';
2
- import { DownloadConfig } from './protvista-uniprot';
3
- declare class DownloadPanel extends LitElement {
4
- open: boolean;
5
- format: string;
6
- config?: DownloadConfig;
7
- accession?: string;
8
- constructor();
9
- static get properties(): {
10
- accession: {
11
- type: StringConstructor;
12
- };
13
- config: {
14
- type: ArrayConstructor;
15
- };
16
- open: {
17
- type: BooleanConstructor;
18
- };
19
- format: {
20
- type: StringConstructor;
21
- };
22
- };
23
- static get styles(): import("lit-element").CSSResult;
24
- handleDownload(): void;
25
- handleSetFormat(format: string): void;
26
- downloadSVG(): import("lit-element").SVGTemplateResult;
27
- render(): import("lit-element").TemplateResult;
28
- }
29
- export default DownloadPanel;
@@ -1,137 +0,0 @@
1
- import { LitElement, html, css, svg } from 'lit-element';
2
- import { unsafeHTML } from 'lit-html/directives/unsafe-html.js';
3
- import urlJoin from 'url-join';
4
- import { saveAs } from 'file-saver';
5
- import downloadIcon from './icons/download.svg';
6
- const downloadFiles = (downloadConfig, format = 'json', accession) => {
7
- downloadConfig.forEach((config) => {
8
- saveAs(urlJoin(config.url, `${accession}.${format}`, `${accession}_${config.type}.${format}`), `${accession}_${config.type}.${format}`);
9
- });
10
- };
11
- class DownloadPanel extends LitElement {
12
- constructor() {
13
- super();
14
- this.open = false;
15
- this.format = 'json';
16
- }
17
- static get properties() {
18
- return {
19
- accession: { type: String },
20
- config: { type: Array },
21
- open: { type: Boolean },
22
- format: { type: String },
23
- };
24
- }
25
- static get styles() {
26
- return css `
27
- :host {
28
- position: relative;
29
- }
30
-
31
- :host button {
32
- display: inline-block;
33
- background-color: #FFF;
34
- border: none;
35
- padding: 0.2rem;
36
- margin: 0;
37
- text-decoration: none;
38
- font-size: 1rem;
39
- cursor: pointer;
40
- text-align: center;
41
- color: #00709b;
42
- transition: opacity 250ms ease-in-out, transform 150ms ease;
43
- opacity: 0.8
44
- -webkit-appearance: none;
45
- -moz-appearance: none;
46
- }
47
-
48
- :host button:hover {
49
- opacity:1;
50
- }
51
-
52
- :host button svg {
53
- width: 1.5rem;
54
- height: 1.5rem;
55
- transition: opacity 250ms ease-in-out, transform 150ms ease;
56
- opacity: 0.8;
57
- }
58
- :host button svg:hover {
59
- opacity: 1;
60
- }
61
-
62
- .download-menu {
63
- display: none;
64
- position: absolute;
65
- background-color: #fff;
66
- padding: 1rem;
67
- box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
68
- transition: all 0.3s cubic-bezier(.25,.8,.25,1);
69
- }
70
- :host(:hover) .download-menu {
71
- display: block;
72
- }
73
- .download-menu ul {
74
- margin: 0;
75
- padding: 0;
76
- }
77
- .download-menu li {
78
- list-style: none;
79
- margin: 0.5rem 0;
80
- }
81
- `;
82
- }
83
- handleDownload() {
84
- if (this.config && this.accession) {
85
- downloadFiles(this.config, this.format, this.accession);
86
- }
87
- }
88
- handleSetFormat(format) {
89
- this.format = format;
90
- }
91
- downloadSVG() {
92
- return svg `${unsafeHTML(downloadIcon)}`;
93
- }
94
- render() {
95
- return html `
96
- <button title="Download">${this.downloadSVG()}</button>
97
- <div class="${`download-menu ${this.open && `download-menu-open`}`}">
98
- <ul>
99
- <li>
100
- <label
101
- ><input
102
- type="radio"
103
- name="download-type"
104
- value="json"
105
- checked
106
- @click="${() => this.handleSetFormat('json')}"
107
- />JSON</label
108
- >
109
- </li>
110
- <li>
111
- <label
112
- ><input
113
- type="radio"
114
- name="download-type"
115
- value="xml"
116
- @click="${() => this.handleSetFormat('xml')}"
117
- />XML</label
118
- >
119
- </li>
120
- <li>
121
- <label
122
- ><input
123
- type="radio"
124
- name="download-type"
125
- value="gff"
126
- @click="${() => this.handleSetFormat('gff')}"
127
- />GFF</label
128
- >
129
- </li>
130
- </ul>
131
- <button @click="${this.handleDownload}">Download</button>
132
- </div>
133
- `;
134
- }
135
- }
136
- export default DownloadPanel;
137
- //# sourceMappingURL=download-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-panel.js","sourceRoot":"","sources":["../../src/download-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,OAAO,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAIhD,MAAM,aAAa,GAAG,CACpB,cAA8B,EAC9B,MAAM,GAAG,MAAM,EACf,SAAiB,EACjB,EAAE;IACF,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAChC,MAAM,CACJ,OAAO,CACL,MAAM,CAAC,GAAG,EACV,GAAG,SAAS,IAAI,MAAM,EAAE,EACxB,GAAG,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,CACxC,EACD,GAAG,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,EAAE,CACxC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,aAAc,SAAQ,UAAU;IAMpC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACvB,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YACvB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDT,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;YACjC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SACzD;IACH,CAAC;IAED,eAAe,CAAC,MAAc;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,WAAW;QACT,OAAO,GAAG,CAAA,GAAG,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;iCACkB,IAAI,CAAC,WAAW,EAAE;oBAC/B,iBAAiB,IAAI,CAAC,IAAI,IAAI,oBAAoB,EAAE;;;;;;;;;0BAS9C,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;;;;;;;;;;0BAUlC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;;;;;;;;;;0BAUjC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;;;;;0BAKjC,IAAI,CAAC,cAAc;;KAExC,CAAC;IACJ,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
@@ -1,164 +0,0 @@
1
- import { LitElement, html, css, svg } from 'lit-element';
2
- import { unsafeHTML } from 'lit-html/directives/unsafe-html.js';
3
- import urlJoin from 'url-join';
4
- import { saveAs } from 'file-saver';
5
-
6
- import downloadIcon from './icons/download.svg';
7
-
8
- import { DownloadConfig } from './protvista-uniprot';
9
-
10
- const downloadFiles = (
11
- downloadConfig: DownloadConfig,
12
- format = 'json',
13
- accession: string
14
- ) => {
15
- downloadConfig.forEach((config) => {
16
- saveAs(
17
- urlJoin(
18
- config.url,
19
- `${accession}.${format}`,
20
- `${accession}_${config.type}.${format}`
21
- ),
22
- `${accession}_${config.type}.${format}`
23
- );
24
- });
25
- };
26
-
27
- class DownloadPanel extends LitElement {
28
- open: boolean;
29
- format: string;
30
- config?: DownloadConfig;
31
- accession?: string;
32
-
33
- constructor() {
34
- super();
35
- this.open = false;
36
- this.format = 'json';
37
- }
38
-
39
- static get properties() {
40
- return {
41
- accession: { type: String },
42
- config: { type: Array },
43
- open: { type: Boolean },
44
- format: { type: String },
45
- };
46
- }
47
-
48
- static get styles() {
49
- return css`
50
- :host {
51
- position: relative;
52
- }
53
-
54
- :host button {
55
- display: inline-block;
56
- background-color: #FFF;
57
- border: none;
58
- padding: 0.2rem;
59
- margin: 0;
60
- text-decoration: none;
61
- font-size: 1rem;
62
- cursor: pointer;
63
- text-align: center;
64
- color: #00709b;
65
- transition: opacity 250ms ease-in-out, transform 150ms ease;
66
- opacity: 0.8
67
- -webkit-appearance: none;
68
- -moz-appearance: none;
69
- }
70
-
71
- :host button:hover {
72
- opacity:1;
73
- }
74
-
75
- :host button svg {
76
- width: 1.5rem;
77
- height: 1.5rem;
78
- transition: opacity 250ms ease-in-out, transform 150ms ease;
79
- opacity: 0.8;
80
- }
81
- :host button svg:hover {
82
- opacity: 1;
83
- }
84
-
85
- .download-menu {
86
- display: none;
87
- position: absolute;
88
- background-color: #fff;
89
- padding: 1rem;
90
- box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
91
- transition: all 0.3s cubic-bezier(.25,.8,.25,1);
92
- }
93
- :host(:hover) .download-menu {
94
- display: block;
95
- }
96
- .download-menu ul {
97
- margin: 0;
98
- padding: 0;
99
- }
100
- .download-menu li {
101
- list-style: none;
102
- margin: 0.5rem 0;
103
- }
104
- `;
105
- }
106
-
107
- handleDownload() {
108
- if (this.config && this.accession) {
109
- downloadFiles(this.config, this.format, this.accession);
110
- }
111
- }
112
-
113
- handleSetFormat(format: string) {
114
- this.format = format;
115
- }
116
-
117
- downloadSVG() {
118
- return svg`${unsafeHTML(downloadIcon)}`;
119
- }
120
-
121
- render() {
122
- return html`
123
- <button title="Download">${this.downloadSVG()}</button>
124
- <div class="${`download-menu ${this.open && `download-menu-open`}`}">
125
- <ul>
126
- <li>
127
- <label
128
- ><input
129
- type="radio"
130
- name="download-type"
131
- value="json"
132
- checked
133
- @click="${() => this.handleSetFormat('json')}"
134
- />JSON</label
135
- >
136
- </li>
137
- <li>
138
- <label
139
- ><input
140
- type="radio"
141
- name="download-type"
142
- value="xml"
143
- @click="${() => this.handleSetFormat('xml')}"
144
- />XML</label
145
- >
146
- </li>
147
- <li>
148
- <label
149
- ><input
150
- type="radio"
151
- name="download-type"
152
- value="gff"
153
- @click="${() => this.handleSetFormat('gff')}"
154
- />GFF</label
155
- >
156
- </li>
157
- </ul>
158
- <button @click="${this.handleDownload}">Download</button>
159
- </div>
160
- `;
161
- }
162
- }
163
-
164
- export default DownloadPanel;
@@ -1,16 +0,0 @@
1
- declare module 'protvista-filter';
2
-
3
- declare class ProtvistaFilter extends HTMLElement {
4
- filters: {
5
- name: string;
6
- type: {
7
- name: string;
8
- text: string;
9
- };
10
- options: {
11
- labels: string[];
12
- colors: string[];
13
- };
14
- filterData: (data: any) => any;
15
- }[];
16
- }
@@ -1 +0,0 @@
1
- declare module 'protvista-interpro-track';
@@ -1 +0,0 @@
1
- declare module 'protvista-manager';
@@ -1 +0,0 @@
1
- declare module 'protvista-navigation';
@@ -1 +0,0 @@
1
- declare module 'protvista-sequence';
@@ -1,8 +0,0 @@
1
- declare module 'protvista-tooltip';
2
-
3
- declare class ProtvistaTooltip extends HTMLElement {
4
- title: string;
5
- visible: boolean;
6
- x: number;
7
- y: number;
8
- }
@@ -1,5 +0,0 @@
1
- declare module 'protvista-track';
2
-
3
- declare class ProtvistaTrack extends HTMLElement {
4
- data?: any;
5
- }
@@ -1 +0,0 @@
1
- declare module 'protvista-variation-graph';