Hi there! I've been following your work with STAAR, SCANG, STAARpipeline and so on, and I've had to dig through your code often enough that I identified a few areas that I think could make your tool(s) even better.
The current implementation of STAARpipelinePheWAS and STAARpipeline
- hard-codes the definition of annotation-based regions of interest: this forces users to follow the definitions implemented in the tools, and stops them from combining functional categories. In addition, should they want to create their own definition, they would basically have to copy-paste your code and modify it themselves
- analyses only one ROI at a time: the large number of variants in a GDS file therefore have to be filtered repeatedly, which has an insane cost compared to a batch approach of grouping ROIs together, extracting a region of the chromosome and filtering only this specific region of the chromosome
- requires the annotation data to be contained within the GDS: this means that the user is forced to modify the GDS whenever they would like to update the annotation scores in the file, or to duplicate the files in an analysis folder if they GDS files are read-only
Is there a reason behind these choices, or would you be interested in implementing a more modular approach in STAARpipeline and STAARpipelinePheWAS? I would be happy to contribute, I already worked on this a while ago, basically implementing a draft of a pipeline that would be able to solve these things. I've been out of the bioinformatics game for a year now, so I'm not sure how much the STAARpipeline and consorts are being used these days and worth it would be to spend time on this.
As an example of a more modular approach, regenie allows the users to define regions of interest based on a list of sets (containing the name of the region, the chromosome, the starting ID and the list of all variants)
A1BG 19 58346922 19:58346922:C:A,19:58346924:G:A,...
A1CF 10 50806630 10:50806630:A:G,10:50806630:A:AT,...
As well as a list of masks, allowing users to combine categories
Mask1 LoF
Mask2 LoF,missense
PS: Technically, you could even go a step further and reduce a lot of code redundancy by relying on the dispatch system of S3 classes, and only specializing parts of the code that would differ from the generic approach.
Hi there! I've been following your work with STAAR, SCANG, STAARpipeline and so on, and I've had to dig through your code often enough that I identified a few areas that I think could make your tool(s) even better.
The current implementation of STAARpipelinePheWAS and STAARpipeline
Is there a reason behind these choices, or would you be interested in implementing a more modular approach in STAARpipeline and STAARpipelinePheWAS? I would be happy to contribute, I already worked on this a while ago, basically implementing a draft of a pipeline that would be able to solve these things. I've been out of the bioinformatics game for a year now, so I'm not sure how much the STAARpipeline and consorts are being used these days and worth it would be to spend time on this.
As an example of a more modular approach, regenie allows the users to define regions of interest based on a list of sets (containing the name of the region, the chromosome, the starting ID and the list of all variants)
As well as a list of masks, allowing users to combine categories
PS: Technically, you could even go a step further and reduce a lot of code redundancy by relying on the dispatch system of S3 classes, and only specializing parts of the code that would differ from the generic approach.