Simplest way to work out structural variant type? In VCF 4.2, a structural variant (SV) can be described with the BND keyword in SVTYPE. For example, the following example is an insertion (from https://samtools.github.io/hts-specs/VCFv4.2.pdf):

#CHROM    POS ID REF ALT                      QUAL FILTER INFO
2 321682  bnd V  T   ]13 : 123456]AGTNNNNNCAT 6    PASS   SVTYPE=BND;MATEID=bnd U
13 123456 bnd U  C   CAGTNNNNNCA[2 : 321682[  6    PASS   SVTYPE=BND;MATEID=bnd V


The keyword can be used to describe any SV event.

I would like to work out how to find out if an event is an insertion, deletion, duplication, inversion, etc. The algorithm/program will tell me the example above is an insertion.

I'm not able to find a tool that can do the conversion for me.

PS: The program I'm using is GRIDSS. This program would only generate BND in the SVTYPE field. It's not strictly a bug (BND can be used for any SV arrangement), but it's annoying in analysis.
GRIDSS's author had posted his own solution on Github. The code is:

simpleEventType &lt;- function(gr) {
    return(ifelse(seqnames(gr) != seqnames(partner(gr)), "ITX", # inter-chromosomosal
           ifelse(gr$insLen &gt;= abs(gr$svLen) * 0.7, "INS",
           ifelse(strand(gr) == strand(partner(gr)), "INV",
           ifelse(xor(start(gr) &lt; start(partner(gr)), strand(gr) == "-"), "DEL", "DUP")))))
}