66#
77# ################################################
88
9- const IntUnitRange{T<: Integer } = UnitRange{T}
10-
119if isdefined (Base, :ht_keyindex2 )
1210 const ht_keyindex2! = Base. ht_keyindex2
1311else
@@ -24,14 +22,14 @@ array `r`. For each `xi ∈ x`, if `xi == levels[j]`, then we increment `r[j]`.
2422If a weighting vector `wv` is specified, the sum of weights is used rather than the
2523raw counts.
2624"""
27- function addcounts! (r:: AbstractArray , x:: IntegerArray , levels:: IntUnitRange )
25+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} )
2826 # add counts of integers from x that fall within levels to r
2927
3028 checkbounds (r, axes (levels)... )
3129
3230 m0 = first (levels)
3331 m1 = last (levels)
34- b = m0 - firstindex (levels) # firstindex(levels) == 1 because levels::IntUnitRange
32+ b = m0 - firstindex (levels) # firstindex(levels) == 1 because levels::UnitRange{<:Integer}
3533
3634 @inbounds for xi in x
3735 if m0 <= xi <= m1
@@ -41,7 +39,7 @@ function addcounts!(r::AbstractArray, x::IntegerArray, levels::IntUnitRange)
4139 return r
4240end
4341
44- function addcounts! (r:: AbstractArray , x:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights )
42+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights )
4543 # add wv weighted counts of integers from x that fall within levels to r
4644
4745 length (x) == length (wv) ||
@@ -82,14 +80,14 @@ The output is a vector of length `length(levels)`.
8280"""
8381function counts end
8482
85- counts (x:: IntegerArray , levels:: IntUnitRange ) =
83+ counts (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} ) =
8684 addcounts! (zeros (Int, length (levels)), x, levels)
87- counts (x:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights ) =
85+ counts (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights ) =
8886 addcounts! (zeros (eltype (wv), length (levels)), x, levels, wv)
89- counts (x:: IntegerArray , k:: Integer ) = counts (x, 1 : k)
90- counts (x:: IntegerArray , k:: Integer , wv:: AbstractWeights ) = counts (x, 1 : k, wv)
91- counts (x:: IntegerArray ) = counts (x, span (x))
92- counts (x:: IntegerArray , wv:: AbstractWeights ) = counts (x, span (x), wv)
87+ counts (x:: AbstractArray{<:Integer} , k:: Integer ) = counts (x, 1 : k)
88+ counts (x:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) = counts (x, 1 : k, wv)
89+ counts (x:: AbstractArray{<:Integer} ) = counts (x, span (x))
90+ counts (x:: AbstractArray{<:Integer} , wv:: AbstractWeights ) = counts (x, span (x), wv)
9391
9492
9593"""
@@ -101,8 +99,8 @@ Equivalent to `counts(x, levels) / length(x)`.
10199If a vector of weights `wv` is provided, the proportion of weights is computed rather
102100than the proportion of raw counts.
103101"""
104- proportions (x:: IntegerArray , levels:: IntUnitRange ) = counts (x, levels) .* inv (length (x))
105- proportions (x:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights ) =
102+ proportions (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} ) = counts (x, levels) .* inv (length (x))
103+ proportions (x:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights ) =
106104 counts (x, levels, wv) .* inv (sum (wv))
107105
108106"""
@@ -113,14 +111,14 @@ Return the proportion of integers in 1 to `k` that occur in `x`.
113111If a vector of weights `wv` is provided, the proportion of weights is computed rather
114112than the proportion of raw counts.
115113"""
116- proportions (x:: IntegerArray , k:: Integer ) = proportions (x, 1 : k)
117- proportions (x:: IntegerArray , k:: Integer , wv:: AbstractWeights ) = proportions (x, 1 : k, wv)
118- proportions (x:: IntegerArray ) = proportions (x, span (x))
119- proportions (x:: IntegerArray , wv:: AbstractWeights ) = proportions (x, span (x), wv)
114+ proportions (x:: AbstractArray{<:Integer} , k:: Integer ) = proportions (x, 1 : k)
115+ proportions (x:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) = proportions (x, 1 : k, wv)
116+ proportions (x:: AbstractArray{<:Integer} ) = proportions (x, span (x))
117+ proportions (x:: AbstractArray{<:Integer} , wv:: AbstractWeights ) = proportions (x, span (x), wv)
120118
121119# ### functions for counting a single list of integers (2D)
122120
123- function addcounts! (r:: AbstractArray , x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } )
121+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } )
124122 # add counts of pairs from zip(x,y) to r
125123
126124 xlevels, ylevels = levels
@@ -146,8 +144,8 @@ function addcounts!(r::AbstractArray, x::IntegerArray, y::IntegerArray, levels::
146144 return r
147145end
148146
149- function addcounts! (r:: AbstractArray , x:: IntegerArray , y:: IntegerArray ,
150- levels:: NTuple{2,IntUnitRange } , wv:: AbstractWeights )
147+ function addcounts! (r:: AbstractArray , x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} ,
148+ levels:: NTuple{2,UnitRange{<:Integer} } , wv:: AbstractWeights )
151149 # add counts of pairs from zip(x,y) to r
152150
153151 length (x) == length (y) == length (wv) ||
@@ -182,43 +180,43 @@ end
182180
183181# facet functions
184182
185- function counts (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } )
183+ function counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } )
186184 addcounts! (zeros (Int, length (levels[1 ]), length (levels[2 ])), x, y, levels)
187185end
188186
189- function counts (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } , wv:: AbstractWeights )
187+ function counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } , wv:: AbstractWeights )
190188 addcounts! (zeros (eltype (wv), length (levels[1 ]), length (levels[2 ])), x, y, levels, wv)
191189end
192190
193- counts (x:: IntegerArray , y:: IntegerArray , levels:: IntUnitRange ) =
191+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} ) =
194192 counts (x, y, (levels, levels))
195- counts (x:: IntegerArray , y:: IntegerArray , levels:: IntUnitRange , wv:: AbstractWeights ) =
193+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: UnitRange{<:Integer} , wv:: AbstractWeights ) =
196194 counts (x, y, (levels, levels), wv)
197195
198- counts (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} ) =
196+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} ) =
199197 counts (x, y, (1 : ks[1 ], 1 : ks[2 ]))
200- counts (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
198+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
201199 counts (x, y, (1 : ks[1 ], 1 : ks[2 ]), wv)
202- counts (x:: IntegerArray , y:: IntegerArray , k:: Integer ) = counts (x, y, (1 : k, 1 : k))
203- counts (x:: IntegerArray , y:: IntegerArray , k:: Integer , wv:: AbstractWeights ) =
200+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer ) = counts (x, y, (1 : k, 1 : k))
201+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) =
204202 counts (x, y, (1 : k, 1 : k), wv)
205- counts (x:: IntegerArray , y:: IntegerArray ) = counts (x, y, (span (x), span (y)))
206- counts (x:: IntegerArray , y:: IntegerArray , wv:: AbstractWeights ) = counts (x, y, (span (x), span (y)), wv)
203+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} ) = counts (x, y, (span (x), span (y)))
204+ counts (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , wv:: AbstractWeights ) = counts (x, y, (span (x), span (y)), wv)
207205
208- proportions (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } ) =
206+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } ) =
209207 counts (x, y, levels) .* inv (length (x))
210- proportions (x:: IntegerArray , y:: IntegerArray , levels:: NTuple{2,IntUnitRange } , wv:: AbstractWeights ) =
208+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , levels:: NTuple{2,UnitRange{<:Integer} } , wv:: AbstractWeights ) =
211209 counts (x, y, levels, wv) .* inv (sum (wv))
212210
213- proportions (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} ) =
211+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} ) =
214212 proportions (x, y, (1 : ks[1 ], 1 : ks[2 ]))
215- proportions (x:: IntegerArray , y:: IntegerArray , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
213+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , ks:: NTuple{2,Integer} , wv:: AbstractWeights ) =
216214 proportions (x, y, (1 : ks[1 ], 1 : ks[2 ]), wv)
217- proportions (x:: IntegerArray , y:: IntegerArray , k:: Integer ) = proportions (x, y, (1 : k, 1 : k))
218- proportions (x:: IntegerArray , y:: IntegerArray , k:: Integer , wv:: AbstractWeights ) =
215+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer ) = proportions (x, y, (1 : k, 1 : k))
216+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , k:: Integer , wv:: AbstractWeights ) =
219217 proportions (x, y, (1 : k, 1 : k), wv)
220- proportions (x:: IntegerArray , y:: IntegerArray ) = proportions (x, y, (span (x), span (y)))
221- proportions (x:: IntegerArray , y:: IntegerArray , wv:: AbstractWeights ) =
218+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} ) = proportions (x, y, (span (x), span (y)))
219+ proportions (x:: AbstractArray{<:Integer} , y:: AbstractArray{<:Integer} , wv:: AbstractWeights ) =
222220 proportions (x, y, (span (x), span (y)), wv)
223221
224222
0 commit comments