Add constructor for Variant based on Variations

A Variant is a collection of Variations, right? Unfortunately there was no
way to convert a collection of Variations into a Variant, so I added one.
This commit is contained in:
Thomas A. Christensen II 2022-07-20 17:13:06 -05:00
parent 6a77d6d589
commit 1bbb85153c
2 changed files with 14 additions and 0 deletions

View file

@ -211,6 +211,8 @@ function Variant(ref::S, edits::Vector{Edit{S, T}}) where {S<:BioSequence, T<:Bi
Variant{S, T}(ref, edits) Variant{S, T}(ref, edits)
end end
function Base.show(io::IO, x::Variant) function Base.show(io::IO, x::Variant)
n = length(x.edits) n = length(x.edits)
print(io, summary(x), " with $n edit$(n > 1 ? "s" : ""):") print(io, summary(x), " with $n edit$(n > 1 ? "s" : ""):")
@ -367,6 +369,11 @@ function Variation(ref::S, edit::AbstractString) where {S<:BioSequence}
return Variation{S,T}(ref, e) return Variation{S,T}(ref, e)
end end
function Variant(ref::S, vars::Vector{Variation{S,T}}) where {S<:BioSequence, T<:BioSymbol}
edits = edit.(vars)
return Variant{S, T}(ref, edits)
end
reference(v::Variation) = v.ref reference(v::Variation) = v.ref
edit(v::Variation) = v.edit edit(v::Variation) = v.edit
mutation(v::Variation) = mutation(edit(v)) mutation(v::Variation) = mutation(edit(v))

View file

@ -35,6 +35,13 @@ seq1 = ungap!(dna"--ATGCGTGTTAGCAAC--TTATCGCG")
seq2 = ungap!(dna"TGATGCGTGT-AGCAACACTTATAGCG") seq2 = ungap!(dna"TGATGCGTGT-AGCAACACTTATAGCG")
var = Variant(align(seq1, seq2)) var = Variant(align(seq1, seq2))
@testset "VariantRoundtrip" begin
for v in variations(var)
@test v in var
@test v in Variant(seq2, [v])
end
end
@testset "VariationPosition" begin @testset "VariationPosition" begin
refseq = dna"ACAACTTTATCT" refseq = dna"ACAACTTTATCT"
mutseq = dna"ACATCTTTATCT" mutseq = dna"ACATCTTTATCT"