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