exomiser / Exomiser

A Tool to Annotate and Prioritize Exome Variants
https://exomiser.readthedocs.io
GNU Affero General Public License v3.0
190 stars 54 forks source link

Virtual gene panels #265

Open damiansm opened 6 years ago

damiansm commented 6 years ago

We already have the ability to filter by a list of genes (virtual gene panel) which is great but not exactly what we want as ideally we want to also take advantage of Exomiser's capacity to identify the causative variant outside a panel.

Here is the ideal solution:

  1. User specifies a virtual gene panel by either (i) a list of genes, or (ii) one or more panels from panelApp that can then be queried by webservices to pull back the genes e.g. https://panelapp.genomicsengland.co.uk/WebServices/get_panel/Familial%20Thoracic%20Aortic%20Aneurysm%20Disease/. There are plans to make panelApp more internationally used and it will remain open. Note that these panels are already in the interpretationRequest sent to the Genomics England Exomiser service.

  2. Exomiser flags whether a variant is in the applied virtual panel: yes/no.

  3. User can then sort the rare, inheritance-compatible filtered candidates by (i) in panel=yes, followed by (ii) Exomiser rank/score.

We have already shown on GEL diagnosed cases that this complementary approach gives the best of both worlds and increases recall i.e. the panels identifies diagnoses that Exomiser's automated approach may have missed and Exomiser identifies diagnoses that are missed off the curated panels or where the wrong panels were applied.

julesjacobsen commented 5 years ago

Currently have a gene panel filter:

    genePanelFilter: {geneSymbols: ['FGFR1','FGFR2']},

User adds a flag gene in panel option:

    flagGenesInPanel: {geneSymbols: ['FGFR1','FGFR2']},

This will apply a gene-level 'filter' and flag this to the API as Gene.isPresentInPanel() (default = false). This can then be reported back to the user in the output files.

ShrutiMarwaha commented 2 years ago

Hi Damian & Jules,

I am interested in providing a gene list as an input to exomiser. I am able to use “genePanelFilter: {geneSymbols: ['FGFR1','FGFR2’]},” argument and the output limits to the genes provided in my list. However, in real world usage, my gene list is > 300 genes and I would like to provide path of a file, for example a text file which lists one gene per line. I am getting errors when I do so. Can you please guide me with an example how the gene list file should look like?

I added the following line to my yaml file:

genePanelFilter: {geneSymbols: ['FGFR1','FGFR2','ECM2','PTPRD','SCN7A','ZNF76']}, # THIS WORKS

genePanelFilter: {geneSymbols: examples/genePanelFilter.txt}, # THIS DOES NOT WORK

The following is the error I get: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.List at org.monarchinitiative.exomiser.core.analysis.AnalysisParser$AnalysisConstructor.parseGeneSymbolFilterOptions(AnalysisParser.java:451) at org.monarchinitiative.exomiser.core.analysis.AnalysisParser$AnalysisConstructor.makeGeneSymbolFilter(AnalysisParser.java:446) at org.monarchinitiative.exomiser.core.analysis.AnalysisParser$AnalysisConstructor.addAnalysisStep(AnalysisParser.java:384) at org.monarchinitiative.exomiser.core.analysis.AnalysisParser$AnalysisConstructor.addAnalysisSteps(AnalysisParser.java:370) at org.monarchinitiative.exomiser.core.analysis.AnalysisParser$AnalysisConstructor.construct(AnalysisParser.java:240) at org.monarchinitiative.exomiser.core.analysis.AnalysisParser.constructAnalysisFromMap(AnalysisParser.java:121) at org.monarchinitiative.exomiser.core.analysis.AnalysisParser.parseAnalysis(AnalysisParser.java:85) at org.monarchinitiative.exomiser.cli.ExomiserCommandLineRunner.runAnalysisFromScript(ExomiserCommandLineRunner.java:122) at org.monarchinitiative.exomiser.cli.ExomiserCommandLineRunner.runAnalyses(ExomiserCommandLineRunner.java:83) at org.monarchinitiative.exomiser.cli.ExomiserCommandLineRunner.run(ExomiserCommandLineRunner.java:74) at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:813) at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:797) at org.springframework.boot.SpringApplication.run(SpringApplication.java:324) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248) at org.monarchinitiative.exomiser.cli.Main.main(Main.java:44)

I am also invested in the the points 2 and 3 Damian highlighted in this issue. I tried using option “flagGenesInPanel: {geneSymbols: ['FGFR1','FGFR2’]},” in the yaml file. But its no different than when I run without this argument. Am I missing any argument here? Also, I do not see any column related to panel in the output. Will this feature be available only in version 13?

I am currently using exomiser version 12.1.0.

Thanks, Shruti

Shruti Marwaha, PhD. Research Engineer, Stanford Center for Undiagnosed Diseases Stanford University