@molgenis/vip-report-template 7.1.3 → 8.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.
Files changed (155) hide show
  1. package/.gitattributes +3 -1
  2. package/README.md +13 -0
  3. package/eslint.config.mjs +6 -1
  4. package/package.json +6 -5
  5. package/scripts/validateConfig/README.txt +5 -0
  6. package/scripts/validateConfig/compileValidator.ts +17 -0
  7. package/scripts/validateConfig/createSchema.ts +6 -0
  8. package/scripts/validateConfig/schema.ts +370 -0
  9. package/src/App.tsx +2 -1
  10. package/src/components/DatasetDropdown.tsx +1 -1
  11. package/src/components/GenomeBrowser.tsx +14 -4
  12. package/src/components/RecordsTable.tsx +23 -6
  13. package/src/components/VariantConsequenceContainer.tsx +9 -2
  14. package/src/components/VariantInfoTable.tsx +1 -1
  15. package/src/components/VariantsContainer.tsx +47 -9
  16. package/src/components/VariantsContainerHeader.tsx +1 -8
  17. package/src/components/field/composed/FieldGenotype.tsx +1 -1
  18. package/src/components/field/composed/FieldGenotypeStr.tsx +18 -10
  19. package/src/components/field/composed/FieldGnomAd.tsx +1 -1
  20. package/src/components/field/composed/FieldInheritanceModes.tsx +1 -4
  21. package/src/components/field/composed/FieldVkgl.tsx +1 -1
  22. package/src/components/field/typed/FieldCategorical.tsx +1 -1
  23. package/src/components/field/typed/FieldCharacter.tsx +1 -1
  24. package/src/components/field/typed/FieldFlag.tsx +1 -1
  25. package/src/components/field/typed/FieldFloat.tsx +1 -1
  26. package/src/components/field/typed/FieldInteger.tsx +1 -1
  27. package/src/components/field/typed/FieldString.tsx +1 -1
  28. package/src/components/filter/Filter.tsx +1 -0
  29. package/src/components/filter/composed/FilterAllelicImbalance.tsx +1 -0
  30. package/src/components/filter/composed/FilterComposed.tsx +7 -0
  31. package/src/components/filter/composed/FilterDeNovo.tsx +1 -0
  32. package/src/components/filter/composed/FilterHpo.tsx +1 -0
  33. package/src/components/filter/composed/FilterInheritance.tsx +1 -0
  34. package/src/components/filter/composed/FilterLocus.tsx +17 -3
  35. package/src/components/filter/composed/FilterPick.tsx +30 -0
  36. package/src/components/filter/composed/FilterVipC.tsx +1 -0
  37. package/src/components/filter/composed/FilterVipCS.tsx +1 -0
  38. package/src/components/filter/fixed/FilterFixed.tsx +7 -0
  39. package/src/components/filter/typed/FilterCategorical.tsx +18 -1
  40. package/src/components/filter/typed/FilterFlag.tsx +2 -0
  41. package/src/components/filter/typed/FilterInterval.tsx +29 -1
  42. package/src/components/filter/typed/FilterString.tsx +8 -1
  43. package/src/components/filter/typed/FilterTyped.tsx +1 -0
  44. package/src/components/form/ButtonApply.tsx +6 -2
  45. package/src/mocks/GRCh38/README.txt +15 -0
  46. package/src/mocks/GRCh38/decisionTree.json +201 -0
  47. package/src/mocks/GRCh38/family.ped +6 -0
  48. package/src/mocks/GRCh38/field_metadata.json +36 -11
  49. package/src/mocks/GRCh38/sample1.ped +1 -0
  50. package/src/mocks/GRCh38/static.ts +36 -148
  51. package/src/mocks/GRCh38/str.ped +1 -0
  52. package/src/mocks/GRCh38/vcf/family.db.blob +0 -0
  53. package/src/mocks/GRCh38/vcf/family.vcf +312 -0
  54. package/src/mocks/GRCh38/vcf/fixPaths.sql +7 -0
  55. package/src/mocks/GRCh38/vcf/no_vep.db.blob +0 -0
  56. package/src/mocks/GRCh38/vcf/{no_vep.vcf.blob → no_vep.vcf} +1 -1
  57. package/src/mocks/GRCh38/vcf/samples_0.db.blob +0 -0
  58. package/src/mocks/GRCh38/vcf/samples_1.db.blob +0 -0
  59. package/src/mocks/GRCh38/vcf/samples_100.db.blob +0 -0
  60. package/src/mocks/GRCh38/vcf/{samples_100.vcf.blob → samples_100.vcf} +6 -6
  61. package/src/mocks/GRCh38/vcf/str.db.blob +0 -0
  62. package/src/mocks/GRCh38/vcf/{str.vcf.blob → str.vcf} +17 -17
  63. package/src/mocks/MockApiClient.ts +60 -226
  64. package/src/mocks/config_cram.json +4 -0
  65. package/src/mocks/config_default_values.json +722 -0
  66. package/src/mocks/config_vcf.json +15 -1
  67. package/src/mocks/sql-wasm.wasm.blob +0 -0
  68. package/src/types/config.d.ts +9 -5
  69. package/src/types/configCells.d.ts +1 -0
  70. package/src/types/configFilter.d.ts +1 -0
  71. package/src/types/configFilterComposed.d.ts +3 -0
  72. package/src/utils/api.ts +21 -49
  73. package/src/utils/config/configCellsComposed.ts +1 -1
  74. package/src/utils/config/configCellsField.ts +2 -0
  75. package/src/utils/config/configFiltersComposed.ts +7 -0
  76. package/src/utils/config/configFiltersField.ts +3 -2
  77. package/src/utils/config/configFiltersFixed.ts +7 -0
  78. package/src/utils/config/configValidator.precompiled.ts +83402 -0
  79. package/src/utils/config/configValidator.ts +3 -368
  80. package/src/utils/csq.ts +5 -10
  81. package/src/utils/decisionTree.ts +8 -9
  82. package/src/utils/query/query.ts +3 -2
  83. package/src/utils/query/queryFilter.ts +2 -3
  84. package/src/utils/query/queryFilterComposed.ts +12 -12
  85. package/src/utils/query/queryFilterField.ts +14 -7
  86. package/src/utils/query/queryFilterFixed.ts +5 -5
  87. package/src/utils/query/querySample.ts +15 -4
  88. package/src/utils/query/selector.ts +5 -20
  89. package/src/utils/query/sort.ts +4 -4
  90. package/src/utils/vcf.ts +20 -11
  91. package/src/views/Help.tsx +2 -2
  92. package/src/views/SampleVariant.tsx +4 -1
  93. package/src/views/Samples.tsx +10 -3
  94. package/src/views/data/data.tsx +2 -2
  95. package/tests/utils/config/configFiltersComposed.test.ts +2 -0
  96. package/tests/utils/config/configFiltersField.test.ts +4 -2
  97. package/tests/utils/config/configFiltersFixed.test.ts +23 -6
  98. package/tests/utils/query/query.test.ts +34 -6
  99. package/tests/utils/query/queryFilter.test.ts +4 -31
  100. package/tests/utils/query/queryFilterComposed.test.ts +13 -13
  101. package/tests/utils/query/queryFilterField.test.ts +5 -5
  102. package/tests/utils/query/queryFilterFixed.test.ts +5 -5
  103. package/tests/utils/query/querySample.test.ts +50 -10
  104. package/tests/utils/query/sort.test.ts +1 -1
  105. package/tests/utils/vcf.test.ts +1 -0
  106. package/vite.config.mts +2 -1
  107. package/src/mocks/GRCh37/alignment.cram.blob +0 -0
  108. package/src/mocks/GRCh37/alignment.cram.crai.blob +0 -0
  109. package/src/mocks/GRCh37/decisionTree.json +0 -355
  110. package/src/mocks/GRCh37/fasta/1-10042288-10042788.fasta.gz.blob +0 -0
  111. package/src/mocks/GRCh37/fasta/1-152520538-152521038.fasta.gz.blob +0 -0
  112. package/src/mocks/GRCh37/fasta/1-16375333-16375833.fasta.gz.blob +0 -0
  113. package/src/mocks/GRCh37/fasta/1-16376162-16376662.fasta.gz.blob +0 -0
  114. package/src/mocks/GRCh37/fasta/1-17348965-17349469.fasta.gz.blob +0 -0
  115. package/src/mocks/GRCh37/fasta/1-17348969-17349469.fasta.gz.blob +0 -0
  116. package/src/mocks/GRCh37/fasta/1-17354844-17355344.fasta.gz.blob +0 -0
  117. package/src/mocks/GRCh37/fasta/10-126091249-126091749.fasta.gz.blob +0 -0
  118. package/src/mocks/GRCh37/fasta/11-134013975-134014475.fasta.gz.blob +0 -0
  119. package/src/mocks/GRCh37/fasta/13-77569878-77570378.fasta.gz.blob +0 -0
  120. package/src/mocks/GRCh37/fasta/14-105167610-105168110.fasta.gz.blob +0 -0
  121. package/src/mocks/GRCh37/fasta/14-89307588-89308088.fasta.gz.blob +0 -0
  122. package/src/mocks/GRCh37/fasta/14-89309945-89310445.fasta.gz.blob +0 -0
  123. package/src/mocks/GRCh37/fasta/14-89336157-89336657.fasta.gz.blob +0 -0
  124. package/src/mocks/GRCh37/fasta/17-29555814-29556314.fasta.gz.blob +0 -0
  125. package/src/mocks/GRCh37/fasta/17-29585172-29585672.fasta.gz.blob +0 -0
  126. package/src/mocks/GRCh37/fasta/17-29663629-29664129.fasta.gz.blob +0 -0
  127. package/src/mocks/GRCh37/fasta/17-29675976-29676476.fasta.gz.blob +0 -0
  128. package/src/mocks/GRCh37/fasta/17-29683733-29684233.fasta.gz.blob +0 -0
  129. package/src/mocks/GRCh37/fasta/19-11215896-11216396.fasta.gz.blob +0 -0
  130. package/src/mocks/GRCh37/fasta/19-11223801-11224301.fasta.gz.blob +0 -0
  131. package/src/mocks/GRCh37/fasta/19-17449149-17449649.fasta.gz.blob +0 -0
  132. package/src/mocks/GRCh37/fasta/19-17451747-17452247.fasta.gz.blob +0 -0
  133. package/src/mocks/GRCh37/fasta/2-47635417-47635917.fasta.gz.blob +0 -0
  134. package/src/mocks/GRCh37/fasta/20-62326742-62327242.fasta.gz.blob +0 -0
  135. package/src/mocks/GRCh37/fasta/22-50627343-50627843.fasta.gz.blob +0 -0
  136. package/src/mocks/GRCh37/fasta/22-50721296-50721796.fasta.gz.blob +0 -0
  137. package/src/mocks/GRCh37/fasta/4-106320044-106320544.fasta.gz.blob +0 -0
  138. package/src/mocks/GRCh37/fasta/7-42017061-42017561.fasta.gz.blob +0 -0
  139. package/src/mocks/GRCh37/fasta/7-42064707-42065207.fasta.gz.blob +0 -0
  140. package/src/mocks/GRCh37/fasta/8-145140250-145140750.fasta.gz.blob +0 -0
  141. package/src/mocks/GRCh37/fasta/8-61764893-61765393.fasta.gz.blob +0 -0
  142. package/src/mocks/GRCh37/fasta/9-107546383-107546883.fasta.gz.blob +0 -0
  143. package/src/mocks/GRCh37/fasta/9-107584614-107585114.fasta.gz.blob +0 -0
  144. package/src/mocks/GRCh37/fasta/MT-15076-15576.fasta.gz.blob +0 -0
  145. package/src/mocks/GRCh37/fasta/X-48932771-48933271.fasta.gz.blob +0 -0
  146. package/src/mocks/GRCh37/fasta/Y-2655391-2655891.fasta.gz.blob +0 -0
  147. package/src/mocks/GRCh37/field_metadata.json +0 -794
  148. package/src/mocks/GRCh37/genes.gff.gz.blob +0 -0
  149. package/src/mocks/GRCh37/sampleTree.json +0 -143
  150. package/src/mocks/GRCh37/static.ts +0 -189
  151. package/src/mocks/GRCh37/vcf/family.vcf.blob +0 -134
  152. package/src/mocks/GRCh38/vcf/family.vcf.blob +0 -272
  153. package/src/mocks/static.ts +0 -1636
  154. /package/src/mocks/GRCh38/vcf/{samples_0.vcf.blob → samples_0.vcf} +0 -0
  155. /package/src/mocks/GRCh38/vcf/{samples_1.vcf.blob → samples_1.vcf} +0 -0
@@ -1,8 +1,12 @@
1
1
  import { Component } from "solid-js";
2
2
 
3
- export const ButtonApply: Component<{ onClick: () => void }> = (props) => {
3
+ export const ButtonApply: Component<{ onClick: () => void; isEnabled?: () => boolean }> = (props) => {
4
4
  return (
5
- <button class="button is-small is-info" onClick={() => props.onClick()}>
5
+ <button
6
+ class="button is-small is-info"
7
+ onClick={() => props.onClick()}
8
+ disabled={props.isEnabled !== undefined && !props.isEnabled()}
9
+ >
6
10
  <span class="icon">
7
11
  <i class="fas fa-angle-right" />
8
12
  </span>
@@ -0,0 +1,15 @@
1
+ To create or adapt test data:
2
+ - update the resources in this folder
3
+ - use vip-report to generate a new db
4
+ - Update the htsFile path in the database to remove your local paths. (use e.g. intelliJ or webstorm)
5
+ (run fixPaths.sql on all datasources)
6
+ - postfix db files with ".blob"
7
+
8
+ Parameters for vip-report:
9
+ -i "/path/to/vcf/family.vcf" -f -pb Patient -pd "/path/to/family.ped" -m "/path/to/field_metadata.json" -tc "/path/to/config_vcf.json" -st "/path/to/sampleTree.json" -dt "/path/to/decisionTree.json" -t "/path/to/template.html" -ph "HP:0000951;HP:0003124"
10
+ -i "/path/to/vcf/samples_0.vcf" -f -m "/path/to/field_metadata.json" -tc "/path/to/config_vcf.json" -st "/path/to/sampleTree.json" -dt "/path/to/decisionTree.json" -t "/path/to/template.html"
11
+ -i "/path/to/vcf/samples_1.vcf" -f -pb SAMPLE0 -pd "/path/to/sample1.ped" -m "/path/to/field_metadata.json" -tc "/path/to/config_vcf.json" -st "/path/to/sampleTree.json" -dt "/path/to/decisionTree.json" -t "/path/to/template.html" -ph "HP:0000951"
12
+ -i "/path/to/vcf/samples_100.vcf" -f -m "/path/to/field_metadata.json" -tc "/path/to/config_vcf.json" -st "/path/to/sampleTree.json" -dt "/path/to/decisionTree.json" -t "/path/to/template.html"
13
+ -i "/path/to/vcf/no_vep.vcf" -f -pb Patient -pd "/path/to/family.ped" -m "/path/to/field_metadata.json" -tc "/path/to/config_vcf.json" -st "/path/to/sampleTree.json" -dt "/path/to/decisionTree.json" -t "/path/to/template.html" -ph "HP:0000951;HP:0003124"
14
+ -i "/path/to/vcf/str.vcf" -f -pb Patient -m "/path/to/field_metadata.json" -tc "/path/to/config_cram.json" -st "/path/to/sampleTree.json" -dt "/path/to/decisionTreeStr.json" -t "/path/to/template.html"
15
+
@@ -103,6 +103,84 @@
103
103
  "nextNode": "vkgl"
104
104
  }
105
105
  },
106
+ "clinVar": {
107
+ "label": "ClinVar",
108
+ "description": "ClinVar classification",
109
+ "type": "BOOL_MULTI",
110
+ "fields": [
111
+ "INFO/CSQ/clinVar_CLNSIG"
112
+ ],
113
+ "outcomes": [
114
+ {
115
+ "description": "Conflict",
116
+ "queries": [
117
+ {
118
+ "field": "INFO/CSQ/clinVar_CLNSIG",
119
+ "operator": "contains_any",
120
+ "value": [
121
+ "Conflicting_classifications_of_pathogenicity"
122
+ ]
123
+ }
124
+ ],
125
+ "outcomeTrue": {
126
+ "nextNode": "chrom"
127
+ }
128
+ },
129
+ {
130
+ "description": "LP/P",
131
+ "queries": [
132
+ {
133
+ "field": "INFO/CSQ/clinVar_CLNSIG",
134
+ "operator": "contains_any",
135
+ "value": [
136
+ "Likely_pathogenic",
137
+ "Pathogenic"
138
+ ]
139
+ }
140
+ ],
141
+ "outcomeTrue": {
142
+ "nextNode": "exit_lp"
143
+ }
144
+ },
145
+ {
146
+ "description": "VUS",
147
+ "queries": [
148
+ {
149
+ "field": "INFO/CSQ/clinVar_CLNSIG",
150
+ "operator": "contains_any",
151
+ "value": [
152
+ "Uncertain_significance"
153
+ ]
154
+ }
155
+ ],
156
+ "outcomeTrue": {
157
+ "nextNode": "chrom"
158
+ }
159
+ },
160
+ {
161
+ "description": "B/LB",
162
+ "queries": [
163
+ {
164
+ "field": "INFO/CSQ/clinVar_CLNSIG",
165
+ "operator": "contains_any",
166
+ "value": [
167
+ "Likely_benign",
168
+ "Benign"
169
+ ]
170
+ }
171
+ ],
172
+ "outcomeTrue": {
173
+ "nextNode": "exit_lb"
174
+ }
175
+ }
176
+ ],
177
+ "outcomeDefault": {
178
+ "nextNode": "chrom"
179
+ },
180
+ "outcomeMissing": {
181
+ "nextNode": "chrom"
182
+ }
183
+ },
106
184
  "vkgl": {
107
185
  "label": "vkgl",
108
186
  "type": "CATEGORICAL",
@@ -129,6 +207,124 @@
129
207
  "nextNode": "filter"
130
208
  }
131
209
  },
210
+ "annotSV": {
211
+ "label": "AnnotSV",
212
+ "description": "AnnotSV classification",
213
+ "type": "CATEGORICAL",
214
+ "field": "INFO/CSQ/ASV_ACMG_class",
215
+ "outcomeMap": {
216
+ "5": {
217
+ "nextNode": "exit_p"
218
+ },
219
+ "4": {
220
+ "nextNode": "exit_lp"
221
+ },
222
+ "3": {
223
+ "nextNode": "exit_vus"
224
+ },
225
+ "2": {
226
+ "nextNode": "exit_lb"
227
+ },
228
+ "1": {
229
+ "nextNode": "exit_b"
230
+ }
231
+ },
232
+ "outcomeMissing": {
233
+ "nextNode": "spliceAI"
234
+ },
235
+ "outcomeDefault": {
236
+ "nextNode": "spliceAI"
237
+ }
238
+ },
239
+ "spliceAI": {
240
+ "label": "SpliceAI",
241
+ "description": "SpliceAI prediction",
242
+ "type": "BOOL_MULTI",
243
+ "fields": [
244
+ "INFO/CSQ/SpliceAI_pred_DS_AG",
245
+ "INFO/CSQ/SpliceAI_pred_DS_AL",
246
+ "INFO/CSQ/SpliceAI_pred_DS_DG",
247
+ "INFO/CSQ/SpliceAI_pred_DS_DL"
248
+ ],
249
+ "outcomes": [
250
+ {
251
+ "description": "Delta score (acceptor/donor gain/loss) > 0.42",
252
+ "operator": "OR",
253
+ "queries": [
254
+ {
255
+ "field": "INFO/CSQ/SpliceAI_pred_DS_AG",
256
+ "operator": ">",
257
+ "value": 0.42
258
+ },
259
+ {
260
+ "field": "INFO/CSQ/SpliceAI_pred_DS_AL",
261
+ "operator": ">",
262
+ "value": 0.42
263
+ },
264
+ {
265
+ "field": "INFO/CSQ/SpliceAI_pred_DS_DG",
266
+ "operator": ">",
267
+ "value": 0.42
268
+ },
269
+ {
270
+ "field": "INFO/CSQ/SpliceAI_pred_DS_DL",
271
+ "operator": ">",
272
+ "value": 0.42
273
+ }
274
+ ],
275
+ "outcomeTrue": {
276
+ "nextNode": "exit_lp"
277
+ }
278
+ },
279
+ {
280
+ "description": "Delta score (acceptor/donor gain/loss) > 0.13",
281
+ "operator": "OR",
282
+ "queries": [
283
+ {
284
+ "field": "INFO/CSQ/SpliceAI_pred_DS_AG",
285
+ "operator": ">",
286
+ "value": 0.13
287
+ },
288
+ {
289
+ "field": "INFO/CSQ/SpliceAI_pred_DS_AL",
290
+ "operator": ">",
291
+ "value": 0.13
292
+ },
293
+ {
294
+ "field": "INFO/CSQ/SpliceAI_pred_DS_DG",
295
+ "operator": ">",
296
+ "value": 0.13
297
+ },
298
+ {
299
+ "field": "INFO/CSQ/SpliceAI_pred_DS_DL",
300
+ "operator": ">",
301
+ "value": 0.13
302
+ }
303
+ ],
304
+ "outcomeTrue": {
305
+ "nextNode": "exit_vus"
306
+ }
307
+ }
308
+ ],
309
+ "outcomeDefault": {
310
+ "nextNode": "utr5"
311
+ },
312
+ "outcomeMissing": {
313
+ "nextNode": "utr5"
314
+ }
315
+ },
316
+ "utr5": {
317
+ "label": "5' UTR",
318
+ "description": "5' UTR",
319
+ "type": "EXISTS",
320
+ "field": "INFO/CSQ/five_prime_UTR_variant_consequence",
321
+ "outcomeTrue": {
322
+ "nextNode": "exit_vus"
323
+ },
324
+ "outcomeFalse": {
325
+ "nextNode": "capice"
326
+ }
327
+ },
132
328
  "filter": {
133
329
  "label": "filter",
134
330
  "type": "BOOL",
@@ -369,6 +565,11 @@
369
565
  "type": "LEAF",
370
566
  "class": "LB"
371
567
  },
568
+ "exit_lt": {
569
+ "label": "Likely T",
570
+ "type": "LEAF",
571
+ "class": "LT"
572
+ },
372
573
  "exit_vus": {
373
574
  "label": "Unknown Significance",
374
575
  "type": "LEAF",
@@ -0,0 +1,6 @@
1
+ FAM001 Patient Father MotherHasQuiteALongName 1 2
2
+ FAM001 MotherHasQuiteALongName 0 0 2 1
3
+ FAM001 Father 0 0 1 2
4
+ FAM001 Nephew 0 0 1 1
5
+ FAM001 Sister Father MotherHasQuiteALongName 2 1
6
+ FAM002 Unrelated 0 0 1 2
@@ -86,12 +86,39 @@
86
86
  "VIPC_S": {
87
87
  "label": "VIP sample classification",
88
88
  "numberType": "OTHER",
89
- "type": "STRING",
89
+ "type": "CATEGORICAL",
90
90
  "separator": ","
91
91
  }
92
92
  },
93
93
  "info": {
94
+ "n_object0": {
95
+ "nestedAttributes" : {
96
+ "separator": "|"
97
+ },
98
+ "nestedFields": {
99
+ "n_array1": {
100
+ "label": "Array",
101
+ "description": "Test array",
102
+ "numberType": "OTHER",
103
+ "separator": "&",
104
+ "type": "INTEGER",
105
+ "index": 2
106
+ },
107
+ "n_string1": {
108
+ "label": "String",
109
+ "description": "Test string",
110
+ "numberType": "NUMBER",
111
+ "numberCount": 1,
112
+ "type": "STRING",
113
+ "index": 0
114
+ }
115
+ }
116
+ },
94
117
  "CSQ": {
118
+ "nestedAttributes" : {
119
+ "prefix": "Consequence annotations from Ensembl VEP. Format: ",
120
+ "separator": "|"
121
+ },
95
122
  "nestedFields": {
96
123
  "ALLELE_NUM": {
97
124
  "label": "Allele Nr.",
@@ -495,7 +522,7 @@
495
522
  "description": "Human Phenotype Ontology (HPO) terms describing phenotypic abnormalities, see https://hpo.jax.org/ and https://doi.org/10.1093/nar/gkad1005",
496
523
  "numberType": "OTHER",
497
524
  "separator": "&",
498
- "type": "STRING"
525
+ "type": "CATEGORICAL"
499
526
  },
500
527
  "IMPACT": {
501
528
  "label": "Impact",
@@ -599,7 +626,7 @@
599
626
  "description": "Boolean indicating if this is the VEP picked transcript.",
600
627
  "numberType": "NUMBER",
601
628
  "numberCount": 1,
602
- "type": "INTEGER"
629
+ "type": "FLAG"
603
630
  },
604
631
  "PolyPhen": {
605
632
  "label": "PolyPhen",
@@ -685,14 +712,6 @@
685
712
  "numberCount": 1,
686
713
  "type": "STRING"
687
714
  },
688
- "VIPC": {
689
- "label": "VIP classification",
690
- "description": "Variant consequence classification predicted by the Variant Interpretation Pipeline (VIP), see https://vip.molgeniscloud.org/ and https://doi.org/10.1101/2024.04.11.24305656",
691
- "numberType": "NUMBER",
692
- "numberCount": 1,
693
- "type": "STRING",
694
- "required": true
695
- },
696
715
  "VIPP": {
697
716
  "label": "VIP path",
698
717
  "description": "VIP decision tree path",
@@ -802,6 +821,12 @@
802
821
  "numberType": "NUMBER",
803
822
  "numberCount": 1,
804
823
  "type": "STRING"
824
+ },
825
+ "VIPC_S": {
826
+ "label": "VIP sample classification",
827
+ "numberType": "OTHER",
828
+ "type": "CATEGORICAL",
829
+ "separator": ","
805
830
  }
806
831
  }
807
832
  }
@@ -0,0 +1 @@
1
+ FAM001 SAMPLE0 0 0 1 2
@@ -32,25 +32,48 @@ import fastaUrl_chrM_15075_15575 from "./fasta/chrM-15075-15575.fasta.gz.blob";
32
32
  import fastaUrl_chrX_49075112_49075612 from "./fasta/chrX-49075112-49075612.fasta.gz.blob";
33
33
  import fastaUrl_chrY_2787350_2787850 from "./fasta/chrY-2787350-2787850.fasta.gz.blob";
34
34
  import genesUrl from "./genes.gff.gz.blob";
35
- import vcfUrlFamily from "./vcf/family.vcf.blob";
36
- import vcfUrlNoVep from "./vcf/no_vep.vcf.blob";
37
- import vcfUrlSamples0 from "./vcf/samples_0.vcf.blob";
38
- import vcfUrlSamples1 from "./vcf/samples_1.vcf.blob";
39
- import vcfUrlSamples100 from "./vcf/samples_100.vcf.blob";
40
- import vcfUrlStr from "./vcf/str.vcf.blob";
41
- /* eslint-enable */
42
- import decisionTreeJson from "./decisionTree.json";
43
- import decisionTreeStrJson from "./decisionTreeStr.json";
44
- import sampleTreeJson from "./sampleTree.json";
45
- import vcfMetaJson from "./field_metadata.json";
35
+ import databaseFamily from "./vcf/family.db.blob";
36
+ import databaseSamples0 from "./vcf/samples_0.db.blob";
37
+ import databaseNoVep from "./vcf/no_vep.db.blob";
38
+ import databaseSamples1 from "./vcf/samples_1.db.blob";
39
+ import databaseSamples100 from "./vcf/samples_100.db.blob";
40
+ import databaseStr from "./vcf/str.db.blob";
41
+ import sqlWasm from "../sql-wasm.wasm.blob";
42
+
46
43
  import { fetchAsBytes } from "../utils";
47
- import { DecisionTree } from "@molgenis/vip-report-api";
48
- import { SupplementaryMetadata } from "@molgenis/vip-report-vcf";
49
44
 
50
45
  export async function fetchCram() {
51
46
  return await fetchAsBytes(cramUrl as string);
52
47
  }
53
48
 
49
+ export async function fetchDatabaseFamily() {
50
+ return await fetchAsBytes(databaseFamily as string);
51
+ }
52
+
53
+ export async function fetchSqlWasm() {
54
+ return await fetchAsBytes(sqlWasm as string);
55
+ }
56
+
57
+ export async function fetchDatabaseSamples0() {
58
+ return await fetchAsBytes(databaseSamples0 as string);
59
+ }
60
+
61
+ export async function fetchDatabaseNoVep() {
62
+ return await fetchAsBytes(databaseNoVep as string);
63
+ }
64
+
65
+ export async function fetchDatabaseSamples1() {
66
+ return await fetchAsBytes(databaseSamples1 as string);
67
+ }
68
+
69
+ export async function fetchDatabaseSamples100() {
70
+ return await fetchAsBytes(databaseSamples100 as string);
71
+ }
72
+
73
+ export async function fetchDatabaseStr() {
74
+ return await fetchAsBytes(databaseStr as string);
75
+ }
76
+
54
77
  export async function fetchCrai() {
55
78
  return await fetchAsBytes(craiUrl as string);
56
79
  }
@@ -63,10 +86,6 @@ export async function fetchStrCrai() {
63
86
  return await fetchAsBytes(strCraiUrl as string);
64
87
  }
65
88
 
66
- export const decisionTree: DecisionTree = decisionTreeJson as unknown as DecisionTree;
67
- export const decisionTreeStr: DecisionTree = decisionTreeStrJson as unknown as DecisionTree;
68
- export const sampleTree: DecisionTree = sampleTreeJson as unknown as DecisionTree;
69
-
70
89
  export async function fetchFastaGz() {
71
90
  return {
72
91
  "chr1:9982230-9982730": await fetchAsBytes(fastaUrl_chr1_9982230_9982730 as string),
@@ -102,134 +121,3 @@ export async function fetchFastaGz() {
102
121
  export async function fetchGenesGz() {
103
122
  return await fetchAsBytes(genesUrl as string);
104
123
  }
105
-
106
- export const vcfMeta = vcfMetaJson as unknown as SupplementaryMetadata;
107
-
108
- export async function fetchVcfFamily() {
109
- return await fetchAsBytes(vcfUrlFamily as string);
110
- }
111
-
112
- export async function fetchVcfNoVep() {
113
- return await fetchAsBytes(vcfUrlNoVep as string);
114
- }
115
-
116
- export async function fetchVcfSamples0() {
117
- return await fetchAsBytes(vcfUrlSamples0 as string);
118
- }
119
-
120
- export async function fetchVcfSamples1() {
121
- return await fetchAsBytes(vcfUrlSamples1 as string);
122
- }
123
-
124
- export async function fetchVcfSamples100() {
125
- return await fetchAsBytes(vcfUrlSamples100 as string);
126
- }
127
-
128
- export async function fetchVcfStr() {
129
- return await fetchAsBytes(vcfUrlStr as string);
130
- }
131
-
132
- export const samplesStr = {
133
- samples: [
134
- {
135
- person: {
136
- familyId: "FAM001",
137
- individualId: "Patient",
138
- sex: "FEMALE",
139
- affectedStatus: "AFFECTED",
140
- },
141
- index: 0,
142
- proband: true,
143
- },
144
- ],
145
- phenotypes: [],
146
- };
147
-
148
- export const samplesFamily = {
149
- samples: [
150
- {
151
- person: {
152
- familyId: "FAM001",
153
- individualId: "Patient",
154
- paternalId: "Father",
155
- maternalId: "MotherHasQuiteALongName",
156
- sex: "MALE",
157
- affectedStatus: "AFFECTED",
158
- },
159
- index: 3,
160
- proband: true,
161
- filter_classes: ["U1", "U2"],
162
- },
163
- {
164
- person: {
165
- familyId: "FAM001",
166
- individualId: "MotherHasQuiteALongName",
167
- paternalId: "0",
168
- maternalId: "0",
169
- sex: "FEMALE",
170
- affectedStatus: "UNAFFECTED",
171
- },
172
- index: 1,
173
- proband: false,
174
- },
175
- {
176
- person: {
177
- familyId: "FAM001",
178
- individualId: "Father",
179
- paternalId: "0",
180
- maternalId: "0",
181
- sex: "MALE",
182
- affectedStatus: "AFFECTED",
183
- },
184
- index: 0,
185
- proband: false,
186
- },
187
- ],
188
- phenotypes: [
189
- {
190
- phenotypicFeaturesList: [
191
- {
192
- type: {
193
- id: "HP:0000951",
194
- label: "HP:0000951",
195
- },
196
- },
197
- {
198
- type: {
199
- id: "HP:0003124",
200
- label: "HP:0003124",
201
- },
202
- },
203
- ],
204
- subject: {
205
- id: "Patient",
206
- },
207
- },
208
- {
209
- phenotypicFeaturesList: [
210
- {
211
- type: {
212
- id: "HP:0000951",
213
- label: "HP:0000951",
214
- },
215
- },
216
- ],
217
- subject: {
218
- id: "MotherHasQuiteALongName",
219
- },
220
- },
221
- {
222
- phenotypicFeaturesList: [
223
- {
224
- type: {
225
- id: "HP:0000951",
226
- label: "HP:0000951",
227
- },
228
- },
229
- ],
230
- subject: {
231
- id: "Father",
232
- },
233
- },
234
- ],
235
- };
@@ -0,0 +1 @@
1
+ FAM001 Patient 0 0 2 2