JuliaDynamics/ComplexityMeasures.jl

The function `lt` in `OrdinalPatternEncoding` isn't actually used

開放

#378 建立於 2024年1月13日

 (1 則留言) (0 個反應) (0 位負責人)Julia (19 個分叉)auto 404
buggood first issue

倉庫指標

星標
 (79 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

The OrdinalPatterns documentation string promises that the user can provide a comparator function (defaults to lt = isless) to determine how two elements of a state are deemed to be "equal" (useful to prevent bias when there are tied values).

This function lt gets stored in the encoding::OrdinalPatternEncoding field of the OrdinalPatterns struct. However, the function isn't actually used in encode. We did use it before, but after we transitioned to the formal encode/decode interface, we forgot to pass the argument on to the underlying sortperm! call.

The fix is easy. Here's the source code:

function encode(encoding::OrdinalPatternEncoding{m}, χ::AbstractVector) where {m}
    if m != length(χ)
        throw(ArgumentError("Permutation order and length of input must match!"))
    end
    perm = sortperm!(encoding.perm, χ)
    return permutation_to_integer(perm)
end

TODO:

  • Pass on lt to sortperm! when computing the permutation pattern.

貢獻者指南