Add check for soft clips when construction Variants from alignment

This commit is contained in:
Thomas A. Christensen II 2022-12-06 11:05:18 -06:00
parent d8435be115
commit 5be4dce200

View file

@ -20,7 +20,7 @@ TODO now:
* Add tests * Add tests
""" """
using BioAlignments: BioAlignments, PairwiseAlignment using BioAlignments: BioAlignments, PairwiseAlignment, OP_SOFT_CLIP
using BioGenerics: BioGenerics, leftposition, rightposition using BioGenerics: BioGenerics, leftposition, rightposition
using BioSequences: BioSequences, BioSequence, NucleotideSeq, LongSequence, isgap using BioSequences: BioSequences, BioSequence, NucleotideSeq, LongSequence, isgap
using BioSymbols: BioSymbol using BioSymbols: BioSymbol
@ -300,11 +300,16 @@ function Variant(aln::PairwiseAlignment{T, T}) where {T <: LongSequence{<:Union{
end end
end end
# Check for clips at the end of the alignment
last_anchors = aln.a.aln.anchors[end-1:end]
# Final indel, if applicable # Final indel, if applicable
if !iszero(n_gaps) if !any(anchor -> anchor.op == OP_SOFT_CLIP, last_anchors)
push!(edits, Edit{T, E}(Deletion(UInt(n_gaps)), UInt(markpos))) if !iszero(n_gaps)
elseif !iszero(n_ins) push!(edits, Edit{T, E}(Deletion(UInt(n_gaps)), UInt(markpos)))
push!(edits, Edit{T, E}(Insertion(T(insertion_buffer)), UInt(markpos))) elseif !iszero(n_ins)
push!(edits, Edit{T, E}(Insertion(T(insertion_buffer)), UInt(markpos)))
end
end end
return result return result