@@ -10,84 +10,90 @@ function copy_partition_to!(dest::T, src::T) where {T<:DiscretePartition}
10
10
dest. scaling .= src. scaling
11
11
end
12
12
13
+ # Overloading the copy_partition to avoid deepcopy.
14
+ function copy_partition (src:: T ) where {T<: DiscretePartition }
15
+ return T (ntuple (i -> copy (getfield (src, i)), fieldcount (T))... )
16
+ end
17
+
13
18
# I should add a constructor that constructs a DiscretePartition from an existing array.
14
19
mutable struct CustomDiscretePartition <: DiscretePartition
15
20
state:: Array{Float64,2}
16
21
states:: Int
17
22
sites:: Int
18
23
scaling:: Array{Float64,1}
19
- function CustomDiscretePartition (states, sites)
20
- new (zeros (states, sites), states, sites, zeros (sites))
21
- end
22
- function CustomDiscretePartition (freq_vec:: Vector{Float64} , sites:: Int64 ) # Add this constructor to all partition types
23
- state_arr = zeros (length (freq_vec), sites)
24
- state_arr .= freq_vec
25
- new (state_arr, length (freq_vec), sites, zeros (sites))
26
- end
24
+ end
25
+
26
+ CustomDiscretePartition (states, sites) =
27
+ CustomDiscretePartition (zeros (states, sites), states, sites, zeros (sites))
28
+
29
+ function CustomDiscretePartition (freq_vec:: Vector{Float64} , sites:: Int64 ) # Add this constructor to all partition types
30
+ state_arr = zeros (length (freq_vec), sites)
31
+ state_arr .= freq_vec
32
+ return CustomDiscretePartition (state_arr, length (freq_vec), sites, zeros (sites))
27
33
end
28
34
29
35
mutable struct NucleotidePartition <: DiscretePartition
30
36
state:: Array{Float64,2}
31
37
states:: Int
32
38
sites:: Int
33
39
scaling:: Array{Float64,1}
34
- function NucleotidePartition (sites)
35
- new ( zeros ( 4 , sites), 4 , sites, zeros (sites))
36
- end
37
- function NucleotidePartition (freq_vec :: Vector{Float64} , sites :: Int64 )
38
- @assert length (freq_vec) == 4
39
- state_arr = zeros ( 4 , sites)
40
- state_arr . = freq_vec
41
- new ( state_arr, 4 , sites, zeros (sites))
42
- end
40
+ end
41
+
42
+ NucleotidePartition (sites) = NucleotidePartition ( zeros ( 4 , sites), 4 , sites, zeros (sites))
43
+
44
+ function NucleotidePartition (freq_vec:: Vector{Float64} , sites :: Int64 )
45
+ @assert length (freq_vec) == 4
46
+ state_arr = zeros ( 4 , sites)
47
+ state_arr . = freq_vec
48
+ return NucleotidePartition (state_arr, 4 , sites, zeros (sites))
43
49
end
44
50
45
51
mutable struct GappyNucleotidePartition <: DiscretePartition
46
52
state:: Array{Float64,2}
47
53
states:: Int
48
54
sites:: Int
49
55
scaling:: Array{Float64,1}
50
- function GappyNucleotidePartition (sites)
51
- new ( zeros ( 5 , sites), 5 , sites, zeros (sites))
52
- end
53
- function GappyNucleotidePartition (freq_vec :: Vector{Float64} , sites :: Int64 )
54
- @assert length (freq_vec) == 5
55
- state_arr = zeros ( 5 , sites)
56
- state_arr . = freq_vec
57
- new ( state_arr, 5 , sites, zeros (sites))
58
- end
56
+ end
57
+
58
+ GappyNucleotidePartition (sites) = GappyNucleotidePartition ( zeros ( 5 , sites), 5 , sites, zeros (sites))
59
+
60
+ function GappyNucleotidePartition (freq_vec:: Vector{Float64} , sites :: Int64 )
61
+ @assert length (freq_vec) == 5
62
+ state_arr = zeros ( 5 , sites)
63
+ state_arr . = freq_vec
64
+ return GappyNucleotidePartition (state_arr, 5 , sites, zeros (sites))
59
65
end
60
66
61
67
mutable struct AminoAcidPartition <: DiscretePartition
62
68
state:: Array{Float64,2}
63
69
states:: Int
64
70
sites:: Int
65
71
scaling:: Array{Float64,1}
66
- function AminoAcidPartition (sites)
67
- new ( zeros ( 20 , sites), 20 , sites, zeros (sites))
68
- end
69
- function AminoAcidPartition (freq_vec :: Vector{Float64} , sites :: Int64 )
70
- @assert length (freq_vec) == 20
71
- state_arr = zeros ( 20 , sites)
72
- state_arr . = freq_vec
73
- new ( state_arr, 20 , sites, zeros (sites))
74
- end
72
+ end
73
+
74
+ AminoAcidPartition (sites) = AminoAcidPartition ( zeros ( 20 , sites), 20 , sites, zeros (sites))
75
+
76
+ function AminoAcidPartition (freq_vec:: Vector{Float64} , sites :: Int64 )
77
+ @assert length (freq_vec) == 20
78
+ state_arr = zeros ( 20 , sites)
79
+ state_arr . = freq_vec
80
+ return AminoAcidPartition (state_arr, 20 , sites, zeros (sites))
75
81
end
76
82
77
83
mutable struct GappyAminoAcidPartition <: DiscretePartition
78
84
state:: Array{Float64,2}
79
85
states:: Int
80
86
sites:: Int
81
87
scaling:: Array{Float64,1}
82
- function GappyAminoAcidPartition (sites)
83
- new ( zeros ( 21 , sites), 21 , sites, zeros (sites))
84
- end
85
- function GappyAminoAcidPartition (freq_vec :: Vector{Float64} , sites :: Int64 )
86
- @assert length (freq_vec) == 21
87
- state_arr = zeros ( 21 , sites)
88
- state_arr . = freq_vec
89
- new ( state_arr, 21 , sites, zeros (sites))
90
- end
88
+ end
89
+
90
+ GappyAminoAcidPartition (sites) = GappyAminoAcidPartition ( zeros ( 21 , sites), 21 , sites, zeros (sites))
91
+
92
+ function GappyAminoAcidPartition (freq_vec:: Vector{Float64} , sites :: Int64 )
93
+ @assert length (freq_vec) == 21
94
+ state_arr = zeros ( 21 , sites)
95
+ state_arr . = freq_vec
96
+ return GappyAminoAcidPartition (state_arr, 21 , sites, zeros (sites))
91
97
end
92
98
93
99
"""
0 commit comments