Updated dependencies; Accept missing values on input arrays (if eltype <: AbstractFloat)
This commit is contained in:
parent
5c46e35fea
commit
e8a6b21df6
@ -14,11 +14,11 @@ StructC14N = "d2514e9c-36c4-5b8e-97e2-51e7675c221c"
|
|||||||
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
|
||||||
|
|
||||||
[compat]
|
[compat]
|
||||||
ColorSchemes = "^3.5"
|
ColorSchemes = "^3.12"
|
||||||
ColorTypes = "^0.10"
|
ColorTypes = "^0.11"
|
||||||
Colors = "^0.12"
|
Colors = "^0.12"
|
||||||
DataStructures = "^0.18"
|
DataStructures = "^0.18"
|
||||||
ReplMaker = "^0.2"
|
ReplMaker = "^0.2"
|
||||||
StatsBase = "^0.33"
|
StatsBase = "^0.33"
|
||||||
StructC14N = "^0.3"
|
StructC14N = "^0.3"
|
||||||
julia = "^1.2"
|
julia = "^1.5"
|
||||||
|
|||||||
@ -1112,11 +1112,8 @@ function parseArguments(_args...)
|
|||||||
end
|
end
|
||||||
insert!(args, pos, string(strip(arg[1])) => nothing)
|
insert!(args, pos, string(strip(arg[1])) => nothing)
|
||||||
elseif isa(arg, AbstractArray) && # ==> a dataset column
|
elseif isa(arg, AbstractArray) && # ==> a dataset column
|
||||||
((valtype(arg) <: Real) ||
|
((nonmissingtype(eltype(arg)) <: Real) ||
|
||||||
(valtype(arg) <: AbstractString)) ;
|
(nonmissingtype(eltype(arg)) <: AbstractString)) ;
|
||||||
elseif isa(arg, AbstractArray) && # ==> a dataset column (to be `convert`ed)
|
|
||||||
((typeof(arg[1]) <: Real) ||
|
|
||||||
(typeof(arg[1]) <: AbstractString))
|
|
||||||
elseif isa(arg, Real) # ==> a dataset column with only one row
|
elseif isa(arg, Real) # ==> a dataset column with only one row
|
||||||
args[pos] = [arg]
|
args[pos] = [arg]
|
||||||
elseif isa(arg, Dataset) ; # ==> a Dataset object
|
elseif isa(arg, Dataset) ; # ==> a Dataset object
|
||||||
@ -1138,55 +1135,55 @@ function parseArguments(_args...)
|
|||||||
pos += 1
|
pos += 1
|
||||||
end
|
end
|
||||||
|
|
||||||
# Third pass: convert data into Dataset objetcs
|
# Third pass: convert data into Dataset objects
|
||||||
pos = 1
|
pos = 1
|
||||||
|
accum = Vector{AbstractArray}()
|
||||||
while pos <= length(args)
|
while pos <= length(args)
|
||||||
arg = args[pos]
|
arg = args[pos]
|
||||||
|
taken = false
|
||||||
|
|
||||||
if isa(arg, AbstractArray) &&
|
if isa(arg, AbstractArray)
|
||||||
!(valtype(arg) <: Real) &&
|
if nonmissingtype(eltype(arg)) != eltype(arg)
|
||||||
!(valtype(arg) <: AbstractString)
|
@assert nonmissingtype(eltype(arg)) <: AbstractFloat "Missing values are supported only on arrays of floats"
|
||||||
|
arg[ismissing.(arg)] .= NaN
|
||||||
|
arg = convert(Array{nonmissingtype(eltype(arg))}, arg)
|
||||||
|
end
|
||||||
|
tt = eltype(arg)
|
||||||
|
|
||||||
# Try with `convert`
|
# Try to convert into Int, Float64 and String
|
||||||
if typeof(arg[1]) <: Integer
|
if (tt <: Integer) && !(tt <: Int)
|
||||||
arg = convert(Array{Int}, arg)
|
arg = convert(Array{Int}, arg)
|
||||||
elseif typeof(arg[1]) <: Real
|
elseif (tt <: Real) && !(tt <: Float64)
|
||||||
arg = convert(Array{Float64}, arg)
|
arg = convert(Array{Float64}, arg)
|
||||||
elseif typeof(arg[1]) <: AbstractString
|
elseif (tt <: AbstractString) && !(tt <: String)
|
||||||
arg = convert(Array{String}, arg)
|
arg = convert(Array{String}, arg)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
if isa(arg, AbstractArray) && # ==> beginning of a dataset
|
tt = eltype(arg)
|
||||||
((valtype(arg) <: Real) ||
|
if (tt <: Real) ||
|
||||||
(valtype(arg) <: AbstractString))
|
(tt <: AbstractString)
|
||||||
|
|
||||||
# Collect all data
|
|
||||||
accum = Vector{AbstractArray}()
|
|
||||||
while isa(arg, AbstractArray) &&
|
|
||||||
((valtype(arg) <: Real) ||
|
|
||||||
(valtype(arg) <: AbstractString))
|
|
||||||
push!(accum, arg)
|
push!(accum, arg)
|
||||||
deleteat!(args, pos)
|
deleteat!(args, pos)
|
||||||
if pos <= length(args)
|
taken = true
|
||||||
arg = args[pos]
|
|
||||||
else
|
|
||||||
break
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if !taken || (pos > length(args))
|
||||||
|
if length(accum) > 0
|
||||||
mm = extrema(length.(accum))
|
mm = extrema(length.(accum))
|
||||||
if mm[1] == 0
|
if mm[1] == 0 # empty Dataset
|
||||||
# empty Dataset
|
|
||||||
@assert mm[1] == mm[2] "At least one input array is empty, while other(s) are not"
|
@assert mm[1] == mm[2] "At least one input array is empty, while other(s) are not"
|
||||||
d = DatasetEmpty()
|
d = DatasetEmpty()
|
||||||
else
|
else
|
||||||
d = Dataset(accum)
|
d = Dataset(accum)
|
||||||
end
|
end
|
||||||
insert!(args, pos, d)
|
insert!(args, pos, d)
|
||||||
|
empty!(accum)
|
||||||
end
|
end
|
||||||
|
|
||||||
pos += 1
|
pos += 1
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Fourth pass: collect PlotElement objects
|
# Fourth pass: collect PlotElement objects
|
||||||
mid = 0
|
mid = 0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user