ManifoldLearning methods broken?

question
package
plotting

#1

I am trying to get the methods in the ManifoldLearning.jl package running and get the following error messages… I use the sample code from the documentation.

# Isomap
Y_Isomap = transform(Isomap,data_array; k=12,d=2)

MethodError: no method matching Dict(::Array{Int64,1}, ::UnitRange{Int64})
Closest candidates are:
Dict(::Any) at dict.jl:144
#transform#6(::Int64, ::Int64, ::Function, ::Type{ManifoldLearning.Isomap}, ::Array{Float64,2}) at isomap.jl:59
(::MultivariateStats.#kw##transform)(::Array{Any,1}, ::MultivariateStats.#transform, ::Type{ManifoldLearning.Isomap}, ::Array{Float64,2}) at :0
include_string(::String, ::String) at loading.jl:522
include_string(::String, ::String, ::Int64) at eval.jl:30
include_string(::Module, ::String, ::String, ::Int64, ::Vararg{Int64,N} where N) at eval.jl:34
(::Atom.##100#105{String,Int64,String})() at eval.jl:75
withpath(::Atom.##100#105{String,Int64,String}, ::String) at utils.jl:30
withpath(::Function, ::String) at eval.jl:38
hideprompt(::Atom.##99#104{String,Int64,String}) at repl.jl:59
macro expansion at eval.jl:73 [inlined]
(::Atom.##98#103{Dict{String,Any}})() at task.jl:80

# Diffusion maps
Y_DiffMap = transform(DiffMap, data_array; d=2, t=1, ɛ=1.0)

UndefVarError: transform! not defined
#transform#19(::Int64, ::Int64, ::Float64, ::Function, ::Type{ManifoldLearning.DiffMap}, ::Array{Float64,2}) at diffmaps.jl:37
(::MultivariateStats.#kw##transform)(::Array{Any,1}, ::MultivariateStats.#transform, ::Type{ManifoldLearning.DiffMap}, ::Array{Float64,2}) at :0
include_string(::String, ::String) at loading.jl:522
include_string(::String, ::String, ::Int64) at eval.jl:30
include_string(::Module, ::String, ::String, ::Int64, ::Vararg{Int64,N} where N) at eval.jl:34
(::Atom.##100#105{String,Int64,String})() at eval.jl:75
withpath(::Atom.##100#105{String,Int64,String}, ::String) at utils.jl:30
withpath(::Function, ::String) at eval.jl:38
hideprompt(::Atom.##99#104{String,Int64,String}) at repl.jl:59
macro expansion at eval.jl:73 [inlined]
(::Atom.##98#103{Dict{String,Any}})() at task.jl:80

# Local linear embedding
Y_LLE = transform(LLE, data_array; k = 12, d = 2)

MethodError: no method matching Dict(::Array{Int64,1}, ::UnitRange{Int64})
Closest candidates are:
Dict(::Any) at dict.jl:144
#transform#12(::Int64, ::Int64, ::Function, ::Type{ManifoldLearning.LLE}, ::Array{Float64,2}) at lle.jl:51
(::MultivariateStats.#kw##transform)(::Array{Any,1}, ::MultivariateStats.#transform, ::Type{ManifoldLearning.LLE}, ::Array{Float64,2}) at :0
include_string(::String, ::String) at loading.jl:522
include_string(::String, ::String, ::Int64) at eval.jl:30
include_string(::Module, ::String, ::String, ::Int64, ::Vararg{Int64,N} where N) at eval.jl:34
(::Atom.##100#105{String,Int64,String})() at eval.jl:75
withpath(::Atom.##100#105{String,Int64,String}, ::String) at utils.jl:30
withpath(::Function, ::String) at eval.jl:38
hideprompt(::Atom.##99#104{String,Int64,String}) at repl.jl:59
macro expansion at eval.jl:73 [inlined]
(::Atom.##98#103{Dict{String,Any}})() at task.jl:80

# Hessian Eigenmaps transformation
Y_HLLE = transform(HLLE, data_array; k = 12, d = 2)

UndefVarError: int not defined
#transform#9(::Int64, ::Int64, ::Function, ::Type{ManifoldLearning.HLLE}, ::Array{Float64,2}) at hlle.jl:44
(::MultivariateStats.#kw##transform)(::Array{Any,1}, ::MultivariateStats.#transform, ::Type{ManifoldLearning.HLLE}, ::Array{Float64,2}) at :0
include_string(::String, ::String) at loading.jl:522
include_string(::String, ::String, ::Int64) at eval.jl:30
include_string(::Module, ::String, ::String, ::Int64, ::Vararg{Int64,N} where N) at eval.jl:34
(::Atom.##100#105{String,Int64,String})() at eval.jl:75
withpath(::Atom.##100#105{String,Int64,String}, ::String) at utils.jl:30
withpath(::Function, ::String) at eval.jl:38
hideprompt(::Atom.##99#104{String,Int64,String}) at repl.jl:59
macro expansion at eval.jl:73 [inlined]
(::Atom.##98#103{Dict{String,Any}})() at task.jl:80

And when I try to plot it, I get

scatter(Y_LEM, title="LEM - ManifoldLearning")

No user recipe defined for ManifoldLearning.LEM
macro expansion at series.jl:132 [inlined]
apply_recipe(::Dict{Symbol,Any}, ::Type{Plots.SliceIt}, ::Void, ::ManifoldLearning.LEM, ::Void) at RecipesBase.jl:287
_process_userrecipes(::Plots.Plot{Plots.GRBackend}, ::Dict{Symbol,Any}, ::Tuple{ManifoldLearning.LEM}) at pipeline.jl:81
_plot!(::Plots.Plot{Plots.GRBackend}, ::Dict{Symbol,Any}, ::Tuple{ManifoldLearning.LEM}) at plot.jl:177
(::RecipesBase.#kw##plot)(::Array{Any,1}, ::RecipesBase.#plot, ::ManifoldLearning.LEM) at :0
#scatter#632(::Array{Any,1}, ::Function, ::ManifoldLearning.LEM, ::Vararg{ManifoldLearning.LEM,N} where N) at RecipesBase.jl:381
(::Plots.#kw##scatter)(::Array{Any,1}, ::Plots.#scatter, ::ManifoldLearning.LEM, ::Vararg{ManifoldLearning.LEM,N} where N) at :0
include_string(::String, ::String) at loading.jl:522
include_string(::String, ::String, ::Int64) at eval.jl:30
include_string(::Module, ::String, ::String, ::Int64, ::Vararg{Int64,N} where N) at eval.jl:34
(::Atom.##100#105{String,Int64,String})() at eval.jl:75
withpath(::Atom.##100#105{String,Int64,String}, ::String) at utils.jl:30
withpath(::Function, ::String) at eval.jl:38
hideprompt(::Atom.##99#104{String,Int64,String}) at repl.jl:59
macro expansion at eval.jl:73 [inlined]
(::Atom.##98#103{Dict{String,Any}})() at task.jl:80

my data_array is a 547×96 Array{Float64,2}.

Help much appreciated!


#2

Are these methods working for anyone?


#3

These might be helpful

int(x) = Int(x);
base.Dict(x::Array{Int64, 1}, y::UnitRange{Int64}) = Dict(x=>y);

#4

Could you please elaborate a bit. It is still returning the same error messages.
If you get any of the methods above running, could you please provide some sample code? Thanks.


#5

I’m having the same problem as burfel (I’m using julia v0.6.3). I tried y4lu’s suggested fix, and that didn’t help. Are others having the same problem? Should this be raised in a different forum?


#6

You can try opening an issue at the repo

but there seems to be no recent activity so it may be abandonned.


#7

It works on the master branch.