RLEVectors.jl
RLEVectors.jl copied to clipboard
Run Length Encoded vectors for julia, inspired by BioConductor.
This should give 3 but it gives 1. ```jl length(RLEVector(CategoricalArray(['a', 'a', 'b']))) # 1 ```
``` julia> join.(RLEVector([("a","b"), ("b","c")], [1,3]), " ") ERROR: UndefRefError: access to undefined reference Stacktrace: [1] getindex @ .\array.jl:861 [inlined] [2] ree!(runvalues::Vector{String}, runends::Vector{Int64}) @ RLEVectors C:\Users\sternlab\.julia\packages\RLEVectors\Rriqk\src\runs.jl:96 [3] RLEVector @ C:\Users\sternlab\.julia\packages\RLEVectors\Rriqk\src\RLEVector-type.jl:57 [inlined]...
One dimension could be the run and another could be the offset into a run. Where would we use that. Iterators?
use FreqTables.jl for contingency tables rather than StatsBase.countmap()
should rle[ range ] return another rle? What about rle[ vector ] ?
For counting coverage and such.
searchsortedfirst(v::AbstractVector, x::AbstractVector, lo::Int, hi::Int) should probably make sure hi and lo are the same Integer type and should make indices a vector of that type