PapenfussLab / StructuralVariantAnnotation

R package designed to simplify structural variant analysis
GNU General Public License v3.0
67 stars 15 forks source link

Merging SVs #29

Open gdeoli opened 4 years ago

gdeoli commented 4 years ago

I'm attempting to get a merged vcf file of two different SVs callers (Delly and Lumpy). So I used StructuralVariantAnnotation to get both vcfs into GRanges objects. I used findBreakpointOverlaps() and it does returns a dataframe with the expected indexes of records to be merged. I was wondering whether there is a function to get a GRange object based on these dataframe. I know I could use mergeByOverlaps() from IRanges, but I'm not sure how to make use of maxgap and sizemargin options. Furthermore, I'd like to have all non-overlaping records (of both vcfs) in the GRanges final object, as well.

Is there anything available to do that, already?

Thanks

d-cameron commented 4 years ago

Not at this time. SV merging is a decidedly non-trivial problem requiring many design choices that make or may not be appropriate for a given use case.

For example, consider the calls A, B, and C, D. With a non-zero maxgap or sizemargin you can get into the scenario where

There is no good way merge overlaps in this case. Imprecise matching is not a transitive operation so the variant calls do not decompose into distinct sets of mutually overlapping variants. You either have to merge calls that don't overlap, or consider some overlapping calls as different calls.