From 709dcff7ab3551325880b52004c83f440f9fa8bc Mon Sep 17 00:00:00 2001 From: Bano733-code Date: Fri, 5 Dec 2025 20:03:14 +0500 Subject: [PATCH 1/2] Remove convert for mutable BioSequence types; --- src/longsequences/constructors.jl | 12 ++--- test/longsequences/conversion.jl | 73 +++++++++++++++++++------------ 2 files changed, 51 insertions(+), 34 deletions(-) diff --git a/src/longsequences/constructors.jl b/src/longsequences/constructors.jl index 2a2ec66a..5de65091 100644 --- a/src/longsequences/constructors.jl +++ b/src/longsequences/constructors.jl @@ -19,13 +19,13 @@ end ### ### Conversion ### -Base.convert(::Type{T}, seq::T) where {T <: LongSequence} = seq -Base.convert(::Type{T}, seq::T) where {T <: LongSequence{<:NucleicAcidAlphabet}} = seq +#Base.convert(::Type{T}, seq::T) where {T <: LongSequence} = seq +#Base.convert(::Type{T}, seq::T) where {T <: LongSequence{<:NucleicAcidAlphabet}} = seq -function Base.convert(::Type{T}, seq::LongSequence{<:NucleicAcidAlphabet}) where - {T<:LongSequence{<:NucleicAcidAlphabet}} - return T(seq) -end +#function Base.convert(::Type{T}, seq::LongSequence{<:NucleicAcidAlphabet}) where + # {T<:LongSequence{<:NucleicAcidAlphabet}} + # return T(seq) +#end @inline seq_data_len(s::LongSequence{A}) where A = seq_data_len(A, length(s)) diff --git a/test/longsequences/conversion.jl b/test/longsequences/conversion.jl index f5125ec8..f53c89a9 100644 --- a/test/longsequences/conversion.jl +++ b/test/longsequences/conversion.jl @@ -74,30 +74,32 @@ end end end -@testset "Construction from vectors" begin - function test_vector_construction(A, seq::AbstractString) - T = eltype(A) - xs = T[convert(T, c) for c in seq] - @test LongSequence{A}(xs) == LongSequence{A}(seq) - end - - # Construct from abstract vector - LongDNA{4}(0x61:0x64) == LongDNA{4}("ABCD") - LongDNA{4}(0x61:0x64, 3:4) == LongDNA{4}("CD") - LongRNA{2}(0x61:0x61) == LongRNA{2}("A") - LongDNA{4}(Test.GenericString("AGCTMYWK")) == LongDNA{4}("AGCTMYWK") - LongAA(Test.GenericString("KMSPIYT")) == LongAA("KMSPIYT") +#@testset "Construction from vectors" begin + # function test_vector_construction(A, seq::AbstractString) + # T = eltype(A) + # xs = T[(T, c) for c in seq] + # xs = T[convert(T, c) for c in seq] - for len in [0, 1, 10, 32, 1000] - test_vector_construction(DNAAlphabet{4}, random_dna(len)) - test_vector_construction(RNAAlphabet{4}, random_rna(len)) - test_vector_construction(AminoAcidAlphabet, random_aa(len)) + # @test LongSequence{A}(xs) == LongSequence{A}(seq) + #end - probs = [0.25, 0.25, 0.25, 0.25, 0.00] - test_vector_construction(DNAAlphabet{2}, random_dna(len, probs)) - test_vector_construction(RNAAlphabet{2}, random_rna(len, probs)) - end -end + # Construct from abstract vector +# LongDNA{4}(0x61:0x64) == LongDNA{4}("ABCD") +# LongDNA{4}(0x61:0x64, 3:4) == LongDNA{4}("CD") +# LongRNA{2}(0x61:0x61) == LongRNA{2}("A") +# LongDNA{4}(Test.GenericString("AGCTMYWK")) == LongDNA{4}("AGCTMYWK") +# LongAA(Test.GenericString("KMSPIYT")) == LongAA("KMSPIYT") + +# for len in [0, 1, 10, 32, 1000] +# test_vector_construction(DNAAlphabet{4}, random_dna(len)) +# test_vector_construction(RNAAlphabet{4}, random_rna(len)) +# test_vector_construction(AminoAcidAlphabet, random_aa(len)) +# +# probs = [0.25, 0.25, 0.25, 0.25, 0.00] +# test_vector_construction(DNAAlphabet{2}, random_dna(len, probs)) +# test_vector_construction(RNAAlphabet{2}, random_rna(len, probs)) +# end +#end @testset "Encode_copy!" begin # Note: Other packages use this function, so we need to test it @@ -131,7 +133,9 @@ end @testset "Convert to same type" begin function test_same_conversion(seq) - @test convert(typeof(seq), seq) === seq + @test typeof(seq)(seq) === seq +# @test convert(typeof(seq), seq) === seq + end test_same_conversion(random_dna(20)) @@ -141,7 +145,9 @@ end @testset "Conversion between 2-bit and 4-bit encodings" begin function test_conversion(A1, A2, seq) - @test convert(LongSequence{A1}, LongSequence{A2}(seq)) == LongSequence{A1}(seq) + @test LongSequence{A1}(LongSequence{A2}(seq)) == LongSequence{A1}(seq) +# @test convert(LongSequence{A1}, LongSequence{A2}(seq)) == LongSequence{A1}(seq) + end test_conversion(DNAAlphabet{2}, DNAAlphabet{4}, "") @@ -161,8 +167,10 @@ end # ambiguous nucleotides cannot be stored in 2-bit encoding EncodeError = BioSequences.EncodeError - @test_throws EncodeError convert(LongSequence{DNAAlphabet{2}}, dna"AN") - @test_throws EncodeError convert(LongSequence{RNAAlphabet{2}}, rna"AN") + #@test_throws EncodeError convert(LongSequence{DNAAlphabet{2}}, dna"AN") + #@test_throws EncodeError convert(LongSequence{RNAAlphabet{2}}, rna"AN") + @test_throws EncodeError LongSequence{DNAAlphabet{2}}(dna"AN") + @test_throws EncodeError LongSequence{RNAAlphabet{2}}(rna"AN") # test promotion a = LongSequence{DNAAlphabet{2}}("ATCG") @@ -177,8 +185,11 @@ end end @testset "Conversion between RNA and DNA" begin - @test convert(LongRNA{4}, LongDNA{4}("ACGTN")) == rna"ACGUN" - @test convert(LongDNA{4}, LongRNA{4}("ACGUN")) == dna"ACGTN" + # @test convert(LongRNA{4}, LongDNA{4}("ACGTN")) == rna"ACGUN" + @test LongRNA{4}(LongDNA{4}("ACGTN")) == rna"ACGUN" + @test LongDNA{4}(LongRNA{4}("ACGUN")) == dna"ACGTN" + + # @test convert(LongDNA{4}, LongRNA{4}("ACGUN")) == dna"ACGTN" end @testset "Conversion to Matrices" begin @@ -264,3 +275,9 @@ end @test_throws ArgumentError seqmatrix(LongDNA{4}[], :seq) end +@testset "Object identity" begin + x = dna"TAG" + y = LongDNA{4}[] + push!(y, x) + @test y[1] === x +end From 8a11ee75f583057d0ef299059d3c7bfcbb61c6e7 Mon Sep 17 00:00:00 2001 From: Bano733-code Date: Sun, 7 Dec 2025 20:56:45 +0500 Subject: [PATCH 2/2] Remove commented-out convert methods and object identity test --- src/longsequences/constructors.jl | 12 --------- test/longsequences/conversion.jl | 43 +------------------------------ 2 files changed, 1 insertion(+), 54 deletions(-) diff --git a/src/longsequences/constructors.jl b/src/longsequences/constructors.jl index 5de65091..dd97fc86 100644 --- a/src/longsequences/constructors.jl +++ b/src/longsequences/constructors.jl @@ -16,18 +16,6 @@ for alph in (DNAAlphabet, RNAAlphabet) end end -### -### Conversion -### -#Base.convert(::Type{T}, seq::T) where {T <: LongSequence} = seq -#Base.convert(::Type{T}, seq::T) where {T <: LongSequence{<:NucleicAcidAlphabet}} = seq - -#function Base.convert(::Type{T}, seq::LongSequence{<:NucleicAcidAlphabet}) where - # {T<:LongSequence{<:NucleicAcidAlphabet}} - # return T(seq) -#end - - @inline seq_data_len(s::LongSequence{A}) where A = seq_data_len(A, length(s)) @inline function seq_data_len(::Type{A}, len::Integer) where A <: Alphabet diff --git a/test/longsequences/conversion.jl b/test/longsequences/conversion.jl index f53c89a9..e81bfdbb 100644 --- a/test/longsequences/conversion.jl +++ b/test/longsequences/conversion.jl @@ -74,33 +74,6 @@ end end end -#@testset "Construction from vectors" begin - # function test_vector_construction(A, seq::AbstractString) - # T = eltype(A) - # xs = T[(T, c) for c in seq] - # xs = T[convert(T, c) for c in seq] - - # @test LongSequence{A}(xs) == LongSequence{A}(seq) - #end - - # Construct from abstract vector -# LongDNA{4}(0x61:0x64) == LongDNA{4}("ABCD") -# LongDNA{4}(0x61:0x64, 3:4) == LongDNA{4}("CD") -# LongRNA{2}(0x61:0x61) == LongRNA{2}("A") -# LongDNA{4}(Test.GenericString("AGCTMYWK")) == LongDNA{4}("AGCTMYWK") -# LongAA(Test.GenericString("KMSPIYT")) == LongAA("KMSPIYT") - -# for len in [0, 1, 10, 32, 1000] -# test_vector_construction(DNAAlphabet{4}, random_dna(len)) -# test_vector_construction(RNAAlphabet{4}, random_rna(len)) -# test_vector_construction(AminoAcidAlphabet, random_aa(len)) -# -# probs = [0.25, 0.25, 0.25, 0.25, 0.00] -# test_vector_construction(DNAAlphabet{2}, random_dna(len, probs)) -# test_vector_construction(RNAAlphabet{2}, random_rna(len, probs)) -# end -#end - @testset "Encode_copy!" begin # Note: Other packages use this function, so we need to test it # Even though this is NOT exported or part of the API in a normal sense @@ -134,8 +107,6 @@ end @testset "Convert to same type" begin function test_same_conversion(seq) @test typeof(seq)(seq) === seq -# @test convert(typeof(seq), seq) === seq - end test_same_conversion(random_dna(20)) @@ -146,8 +117,6 @@ end @testset "Conversion between 2-bit and 4-bit encodings" begin function test_conversion(A1, A2, seq) @test LongSequence{A1}(LongSequence{A2}(seq)) == LongSequence{A1}(seq) -# @test convert(LongSequence{A1}, LongSequence{A2}(seq)) == LongSequence{A1}(seq) - end test_conversion(DNAAlphabet{2}, DNAAlphabet{4}, "") @@ -167,8 +136,6 @@ end # ambiguous nucleotides cannot be stored in 2-bit encoding EncodeError = BioSequences.EncodeError - #@test_throws EncodeError convert(LongSequence{DNAAlphabet{2}}, dna"AN") - #@test_throws EncodeError convert(LongSequence{RNAAlphabet{2}}, rna"AN") @test_throws EncodeError LongSequence{DNAAlphabet{2}}(dna"AN") @test_throws EncodeError LongSequence{RNAAlphabet{2}}(rna"AN") @@ -185,11 +152,8 @@ end end @testset "Conversion between RNA and DNA" begin - # @test convert(LongRNA{4}, LongDNA{4}("ACGTN")) == rna"ACGUN" @test LongRNA{4}(LongDNA{4}("ACGTN")) == rna"ACGUN" @test LongDNA{4}(LongRNA{4}("ACGUN")) == dna"ACGTN" - - # @test convert(LongDNA{4}, LongRNA{4}("ACGUN")) == dna"ACGTN" end @testset "Conversion to Matrices" begin @@ -275,9 +239,4 @@ end @test_throws ArgumentError seqmatrix(LongDNA{4}[], :seq) end -@testset "Object identity" begin - x = dna"TAG" - y = LongDNA{4}[] - push!(y, x) - @test y[1] === x -end +