Skip to content

Commit 132f4a3

Browse files
committed
Adding example for gene panel creation
This adds an example for the creation of a gene panel, by intersecting gene Ids and selected CNV types. Applied at the /biosamples (or /individuals, /analyses...) entry type the aggregation will report the number of samples affected by e.g. a high-level deletion involving CDKN2A.
1 parent 545bd81 commit 132f4a3

7 files changed

Lines changed: 349 additions & 5 deletions

File tree

docs/aggregations.md

Lines changed: 99 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,8 +460,7 @@ the `results` section.
460460
},
461461
{
462462
"count": 339,
463-
"ids": [
464-
"[P18M, P10Y)"],
463+
"ids": ["[P18M, P10Y)"],
465464
"names": ["1.5 to 10 years"]
466465
},
467466
{
@@ -479,6 +478,104 @@ the `results` section.
479478
]
480479
```
481480

481+
=== "Gene Panel Aggregations - `aggr5`"
482+
483+
#### Request
484+
485+
This requests aggregates sets of genes and the types of variants they're affected
486+
by with. The `CancerPanelGeneIds` aggregation term is defined in the `/aggregation_terms` endpoint and provides a list of genes that are part of a cancer panel. The `VariantVRSCNVtype` aggregation term is also defined in the `/aggregation_terms` endpoint and provides a list of variant types (e.g., high-level loss, high-level gain) that are associated with the genes in the cancer panel.
487+
488+
As above, the `selectors` modifiers would not be needed if already indicated
489+
in the respective aggregation term definitions.
490+
491+
```json
492+
"aggregators" : [
493+
{
494+
"requestId": "aggr5",
495+
"aggregationTerms": [
496+
{
497+
"id": "CancerPanelGeneIds",
498+
"label": "Cancer Panel Genes",
499+
"selectors": [
500+
{"value": "CDKN2A"},
501+
{"value": "TP53"},
502+
{"value": "EGFR"},
503+
{"value": "MYCN"}
504+
]
505+
},
506+
{
507+
"id": "VariantVRSCNVtype",
508+
"selectors": [
509+
{"label": "high-level loss", "value": "EFO:0020073"
510+
},
511+
{"label": "high-level gain", "value": "EFO:0030072"
512+
}
513+
]
514+
}
515+
]
516+
}
517+
]
518+
```
519+
520+
#### Response
521+
522+
This aggregation response is a two-dimensional aggregation of the counts of samples with specific gene variants (high-level loss or gain) for a set of cancer panel genes. The `categoriesAndValues` section provides the counts for each combination of gene and variant type.
523+
524+
This represents a typical application for generating a "gene panel dashboard".
525+
526+
```json
527+
"resultsAggregation": [
528+
{
529+
"requestId": "aggr5",
530+
"aggregationTerms": [
531+
{"id": "CancerPanelGeneIds", "label": "Cancer Panel Genes"},
532+
{"id": "VariantVRSCNVtype"}
533+
],
534+
"categoriesAndValues": [
535+
{
536+
"count": 277,
537+
"ids": ["CDKN2A", "EFO:0020073"],
538+
"names": ["CDKN2A", "high-level loss"]
539+
},
540+
{
541+
"count": 0,
542+
"ids": ["CDKN2A", "EFO:0030072"],
543+
"names": ["CDKN2A", "high-level gain"]
544+
},
545+
{
546+
"count": 68,
547+
"ids": ["TP53", "EFO:0020073"],
548+
"names": ["TP53", "high-level loss"]
549+
},
550+
{
551+
"count": 4,
552+
"ids": ["TP53", "EFO:0030072"],
553+
"names": ["TP53", "high-level gain"]
554+
},
555+
{
556+
"count": 0,
557+
"ids": ["EGFR", "EFO:0020073"],
558+
"names": ["EGFR", "high-level loss"]
559+
},
560+
{
561+
"count": 161,
562+
"ids": ["EGFR", "EFO:0030072"],
563+
"names": ["EGFR", "high-level gain"]
564+
},
565+
{
566+
"count": 2,
567+
"ids": ["MYCN", "EFO:0020073"],
568+
"names": ["MYCN", "high-level loss"]
569+
},
570+
{
571+
"count": 88,
572+
"ids": ["MYCN", "EFO:0030072"],
573+
"names": ["MYCN", "high-level gain"]
574+
}
575+
],
576+
}
577+
]
578+
```
482579

483580

484581

framework/json/requests/examples-sections/aggregationTerms-example.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,42 @@
105105
}
106106
],
107107
"requestId": "aggr4"
108+
},
109+
{
110+
"aggregationTerms": [
111+
{
112+
"id": "CancerPanelGeneIds",
113+
"label": "Cancer Panel Genes",
114+
"selectors": [
115+
{
116+
"value": "CDKN2A"
117+
},
118+
{
119+
"value": "TP53"
120+
},
121+
{
122+
"value": "EGFR"
123+
},
124+
{
125+
"value": "MYCN"
126+
}
127+
]
128+
},
129+
{
130+
"id": "VariantVRSCNVtype",
131+
"selectors": [
132+
{
133+
"label": "high-level loss",
134+
"value": "EFO:0020073"
135+
},
136+
{
137+
"label": "high-level gain",
138+
"value": "EFO:0030072"
139+
}
140+
]
141+
}
142+
],
143+
"requestId": "aggr5"
108144
}
109145
]
110146
}

framework/json/responses/examples-fullDocuments/beaconAggregationTermsResponse-example.json

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,42 @@
100100
}
101101
]
102102
},
103+
{
104+
"description": "Aggregation by the gene identifiers of the genomic variants. The gene identifiers are selected from a predefined list of cancer related genes. The gene identifiers are represented as HGNC gene symbols. Note: The very limited gene list serves as example for usually more extended gene panels.",
105+
"id": "CancerPanelGeneIds",
106+
"label": "Selected cancer related genes",
107+
"modelProperty": "genomicVariant.molecularAttributes.geneIds",
108+
"selectors": [
109+
{
110+
"value": "CDKN2A"
111+
},
112+
{
113+
"value": "TP53"
114+
},
115+
{
116+
"value": "EGFR"
117+
},
118+
{
119+
"value": "MYCN"
120+
}
121+
]
122+
},
123+
{
124+
"description": "Aggregation by the copy number variation (CNV) types of the genomic variants. The CNV types are selected VRS \"high level\" types.",
125+
"id": "VariantVRShighLevelCNVtypes",
126+
"label": "CNV types indicating a high-level gain or loss, respectively",
127+
"modelProperty": "genomicVariant.variation.copyChange",
128+
"selectors": [
129+
{
130+
"label": "high-level loss",
131+
"value": "EFO:0020073"
132+
},
133+
{
134+
"label": "high-level gain",
135+
"value": "EFO:0030072"
136+
}
137+
]
138+
},
103139
{
104140
"description": "Aggregation by the karyotypic sex of the individuals. The karyotypic sex is determined by the chromosomal composition of the individual.",
105141
"id": "KaryotypicSex",

framework/json/responses/examples-sections/beaconAggregationResults-examples.json

Lines changed: 104 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,108 @@
204204
],
205205
"requestId": "aggr4"
206206
},
207+
{
208+
"aggregationTerms": [
209+
{
210+
"id": "CancerPanelGeneIds",
211+
"label": "Cancer Panel Genes"
212+
},
213+
{
214+
"id": "VariantVRSCNVtype"
215+
}
216+
],
217+
"categoriesAndValues": [
218+
{
219+
"count": 277,
220+
"ids": [
221+
"CDKN2A",
222+
"EFO:0020073"
223+
],
224+
"names": [
225+
"CDKN2A",
226+
"high-level loss"
227+
]
228+
},
229+
{
230+
"count": 0,
231+
"ids": [
232+
"CDKN2A",
233+
"EFO:0030072"
234+
],
235+
"names": [
236+
"CDKN2A",
237+
"high-level gain"
238+
]
239+
},
240+
{
241+
"count": 68,
242+
"ids": [
243+
"TP53",
244+
"EFO:0020073"
245+
],
246+
"names": [
247+
"TP53",
248+
"high-level loss"
249+
]
250+
},
251+
{
252+
"count": 4,
253+
"ids": [
254+
"TP53",
255+
"EFO:0030072"
256+
],
257+
"names": [
258+
"TP53",
259+
"high-level gain"
260+
]
261+
},
262+
{
263+
"count": 0,
264+
"ids": [
265+
"EGFR",
266+
"EFO:0020073"
267+
],
268+
"names": [
269+
"EGFR",
270+
"high-level loss"
271+
]
272+
},
273+
{
274+
"count": 161,
275+
"ids": [
276+
"EGFR",
277+
"EFO:0030072"
278+
],
279+
"names": [
280+
"EGFR",
281+
"high-level gain"
282+
]
283+
},
284+
{
285+
"count": 2,
286+
"ids": [
287+
"MYCN",
288+
"EFO:0020073"
289+
],
290+
"names": [
291+
"MYCN",
292+
"high-level loss"
293+
]
294+
},
295+
{
296+
"count": 88,
297+
"ids": [
298+
"MYCN",
299+
"EFO:0030072"
300+
],
301+
"names": [
302+
"MYCN",
303+
"high-level gain"
304+
]
305+
}
306+
],
307+
"requestId": "aggr5"
308+
},
207309
{
208310
"aggregationTerms": [
209311
{
@@ -212,7 +314,7 @@
212314
}
213315
],
214316
"anyValueCount": 3456,
215-
"requestId": "aggr5"
317+
"requestId": "aggr6"
216318
},
217319
{
218320
"aggregationTerms": [
@@ -222,7 +324,7 @@
222324
}
223325
],
224326
"distinctValuesCount": 243062,
225-
"requestId": "aggr6"
327+
"requestId": "aggr7"
226328
}
227329
]
228330
}

framework/src/requests/examples-sections/aggregationTerms-example.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,19 @@ aggregators:
5555
label: 60 years and older
5656
sortOrder: 4
5757

58+
- requestId: aggr5
59+
aggregationTerms:
60+
- id: CancerPanelGeneIds
61+
label: Cancer Panel Genes
62+
selectors:
63+
- value: CDKN2A
64+
- value: TP53
65+
- value: EGFR
66+
- value: MYCN
67+
- id: VariantVRSCNVtype
68+
selectors:
69+
- value: EFO:0020073
70+
label: high-level loss
71+
- value: EFO:0030072
72+
label: high-level gain
5873

framework/src/responses/examples-fullDocuments/beaconAggregationTermsResponse-example.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,33 @@ response:
6666
label: 65 years and older
6767
sortOrder: 2
6868

69+
- id: CancerPanelGeneIds
70+
label: Selected cancer related genes
71+
modelProperty: genomicVariant.molecularAttributes.geneIds
72+
description: >-
73+
Aggregation by the gene identifiers of the genomic variants. The gene
74+
identifiers are selected from a predefined list of cancer related genes.
75+
The gene identifiers are represented as HGNC gene symbols.
76+
Note: The very limited gene list serves as example for usually more extended
77+
gene panels.
78+
selectors:
79+
- value: CDKN2A
80+
- value: TP53
81+
- value: EGFR
82+
- value: MYCN
83+
84+
- id: VariantVRShighLevelCNVtypes
85+
label: CNV types indicating a high-level gain or loss, respectively
86+
modelProperty: genomicVariant.variation.copyChange
87+
description: >-
88+
Aggregation by the copy number variation (CNV) types of the genomic
89+
variants. The CNV types are selected VRS "high level" types.
90+
selectors:
91+
- value: EFO:0020073
92+
label: high-level loss
93+
- value: EFO:0030072
94+
label: high-level gain
95+
6996
- id: KaryotypicSex
7097
label: karyotypic sex
7198
modelProperty: individual.karyotypicSex

0 commit comments

Comments
 (0)