Skip to content

Commit d2c1ebb

Browse files
Merge branch 'develop' into ci-fast-finish
2 parents be7dc61 + 1c3e8da commit d2c1ebb

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

src/pval-adjustment.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -171,20 +171,20 @@ function adjust(pValues::PValues{T}, n::Integer, method::Hommel) where T<:Abstra
171171
if k <= 1
172172
return pValues
173173
end
174-
pValues = vcat(pValues, fill(1.0, n-k)) # TODO avoid sorting of ones
175174
sortedOrder, originalOrder = reorder(pValues)
176-
pAdjusted = pValues[sortedOrder]
177-
q = fill(minimum(n .* pAdjusted./(1:n)), n)
178-
pa = fill(q[1], n)
175+
pAdjusted = vcat(pValues[sortedOrder], fill(one(T), n-k))
176+
lower = n * minimum(pAdjusted./(1:n))
177+
q = fill(lower, n)
178+
pa = fill(lower, n)
179179
for j in (n-1):-1:2
180-
ij = 1:(n-j+1)
181-
i2 = (n-j+2):n
182-
q1 = minimum(j .* pAdjusted[i2]./((2:j)))
183-
q[ij] = min.(j .* pAdjusted[ij], q1)
184-
q[i2] = q[n-j+1]
185-
pa = max.(pa, q)
180+
idx_left = 1:(n-j+1)
181+
idx_right = (n-j+2):n
182+
q_right = minimum(view(pAdjusted, idx_right)./(2:j))
183+
q[idx_left] .= j .* min.(view(pAdjusted, idx_left), q_right)
184+
q[idx_right] .= q[n-j+1]
185+
pa .= max.(pa, q)
186186
end
187-
pAdjusted = max.(pa, pAdjusted)[originalOrder[1:k]]
187+
pAdjusted = max.(pa[originalOrder], pValues)
188188
return pAdjusted
189189
end
190190

0 commit comments

Comments
 (0)