AlgebraicJulia / AlgebraicRelations.jl

Relational Algebra, now with more algebra!
https://www.algebraicjulia.org
MIT License
48 stars 3 forks source link

MethodError with queries from the examples #15

Closed schrauf closed 3 years ago

schrauf commented 3 years ago

Hi, thanks for the package, it looks great and I'm very enthusiastic to use it.

I'm just having problems when I build the queries with the macro, I get a method error which I can't humanly parse.

I was following this blog post, but I get the same error when running the code from the ml demo:

q = @query TrainDB() (im_train, nn, im_test, acc, md2) where
        (im_train, im_test, nn,
        nn_trained, acc, md,
        md2, _base_acc, im) begin
    train(nn, im_train, nn_trained, md)
    evaluate(nn_trained, im_test, acc, md2)
    split(im, im_train, im_test)
    >=(acc, _base_acc)
end
ERROR: MethodError: no method matching set_subparts!(::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},(:Type, :Name, :VarName),(:port_type, :outer_port_type, :junction_type, :name, :variable, :field),(2, 3, 4, 1, 4, 2),(1, 1, 1, 2, 3, 2)},Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol},Union{Nothing, Symbol}},(:box, :field, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction, :Comparison),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Union{Nothing, Symbol}}},1,NamedTuple{(:name,),Tuple{Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction, :port_type, :field),Tuple{Int64,Int64,Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:box, :junction, :port_type, :field),Tuple{Array{Int64,1},Array{Int64,1},Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction, :outer_port_type),Tuple{Int64,Union{Nothing, Symbol}}},1,NamedTuple{(:outer_junction, :outer_port_type),Tuple{Array{Int64,1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:junction_type, :variable),Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:junction_type, :variable),Tuple{Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:comp_port1, :comp_port2),Tuple{Int64,Int64}},1,NamedTuple{(:comp_port1, :comp_port2),Tuple{Array{Int64,1},Array{Int64,1}}},Int64}}},NamedTuple{(:box, :field, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Array{Int64,1}},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Int64}}}}, ::UnitRange{Int64}, ::Dict{Symbol,Array{T,1} where T})
Closest candidates are:
  set_subparts!(::Catlab.CSetDataStructures.AttributedCSet, ::Any; kw...) at /home/matias/.julia/packages/Catlab/yoWE3/src/categorical_algebra/CSetDataStructures.jl:574
  set_subparts!(::Catlab.CSetDataStructures.AttributedCSet, ::Any, ::NamedTuple{names,T} where T<:Tuple) where names at /home/matias/.julia/packages/Catlab/yoWE3/src/categorical_algebra/CSetDataStructures.jl:576
Stacktrace:
 [1] _reorder_part!(::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},(:Type, :Name, :VarName),(:port_type, :outer_port_type, :junction_type, :name, :variable, :field),(2, 3, 4, 1, 4, 2),(1, 1, 1, 2, 3, 2)},Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol},Union{Nothing, Symbol}},(:box, :field, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction, :Comparison),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Union{Nothing, Symbol}}},1,NamedTuple{(:name,),Tuple{Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction, :port_type, :field),Tuple{Int64,Int64,Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:box, :junction, :port_type, :field),Tuple{Array{Int64,1},Array{Int64,1},Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction, :outer_port_type),Tuple{Int64,Union{Nothing, Symbol}}},1,NamedTuple{(:outer_junction, :outer_port_type),Tuple{Array{Int64,1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:junction_type, :variable),Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:junction_type, :variable),Tuple{Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:comp_port1, :comp_port2),Tuple{Int64,Int64}},1,NamedTuple{(:comp_port1, :comp_port2),Tuple{Array{Int64,1},Array{Int64,1}}},Int64}}},NamedTuple{(:box, :field, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Array{Int64,1}},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Int64}}}}, ::Val{:Junction}, ::Array{Int64,1}) at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/functor.jl:193
 [2] reorder_part!(::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},(:Type, :Name, :VarName),(:port_type, :outer_port_type, :junction_type, :name, :variable, :field),(2, 3, 4, 1, 4, 2),(1, 1, 1, 2, 3, 2)},Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol},Union{Nothing, Symbol}},(:box, :field, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction, :Comparison),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Union{Nothing, Symbol}}},1,NamedTuple{(:name,),Tuple{Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction, :port_type, :field),Tuple{Int64,Int64,Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:box, :junction, :port_type, :field),Tuple{Array{Int64,1},Array{Int64,1},Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction, :outer_port_type),Tuple{Int64,Union{Nothing, Symbol}}},1,NamedTuple{(:outer_junction, :outer_port_type),Tuple{Array{Int64,1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:junction_type, :variable),Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:junction_type, :variable),Tuple{Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:comp_port1, :comp_port2),Tuple{Int64,Int64}},1,NamedTuple{(:comp_port1, :comp_port2),Tuple{Array{Int64,1},Array{Int64,1}}},Int64}}},NamedTuple{(:box, :field, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Array{Int64,1}},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Int64}}}}, ::Symbol, ::Array{Int64,1}) at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/functor.jl:155
 [3] (::AlgebraicRelations.Functors.var"#typedComp#1"{UnionAll})(::Array{Int64,1}, ::Catlab.CategoricalAlgebra.FreeDiagrams.Multicospan{Catlab.CategoricalAlgebra.FinSets.FinSet{Int64,Int64},StaticArrays.SArray{Tuple{2},Catlab.CategoricalAlgebra.FinSets.FinFunctionVector{Array{Int64,1}},1,2}}, ::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},(:Type, :Name, :VarName),(:port_type, :outer_port_type, :junction_type, :name, :variable, :field),(2, 3, 4, 1, 4, 2),(1, 1, 1, 2, 3, 2)},Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol},Union{Nothing, Symbol}},(:box, :field, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction, :Comparison),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Union{Nothing, Symbol}}},1,NamedTuple{(:name,),Tuple{Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction, :port_type, :field),Tuple{Int64,Int64,Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:box, :junction, :port_type, :field),Tuple{Array{Int64,1},Array{Int64,1},Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction, :outer_port_type),Tuple{Int64,Union{Nothing, Symbol}}},1,NamedTuple{(:outer_junction, :outer_port_type),Tuple{Array{Int64,1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:junction_type, :variable),Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:junction_type, :variable),Tuple{Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:comp_port1, :comp_port2),Tuple{Int64,Int64}},1,NamedTuple{(:comp_port1, :comp_port2),Tuple{Array{Int64,1},Array{Int64,1}}},Int64}}},NamedTuple{(:box, :field, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Array{Int64,1}},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Int64}}}}, ::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},(:Type, :Name, :VarName),(:port_type, :outer_port_type, :junction_type, :name, :variable, :field),(2, 3, 4, 1, 4, 2),(1, 1, 1, 2, 3, 2)},Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol},Union{Nothing, Symbol}},(:box, :field, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction, :Comparison),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Union{Nothing, Symbol}}},1,NamedTuple{(:name,),Tuple{Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction, :port_type, :field),Tuple{Int64,Int64,Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:box, :junction, :port_type, :field),Tuple{Array{Int64,1},Array{Int64,1},Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction, :outer_port_type),Tuple{Int64,Union{Nothing, Symbol}}},1,NamedTuple{(:outer_junction, :outer_port_type),Tuple{Array{Int64,1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:junction_type, :variable),Tuple{Union{Nothing, Symbol},Union{Nothing, Symbol}}},1,NamedTuple{(:junction_type, :variable),Tuple{Array{Union{Nothing, Symbol},1},Array{Union{Nothing, Symbol},1}}},Int64},StructArrays.StructArray{NamedTuple{(:comp_port1, :comp_port2),Tuple{Int64,Int64}},1,NamedTuple{(:comp_port1, :comp_port2),Tuple{Array{Int64,1},Array{Int64,1}}},Int64}}},NamedTuple{(:box, :field, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Array{Int64,1}},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Union{Nothing, Symbol},Int64}}}}) at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/functor.jl:82
 [4] _functor(::AlgebraicRelations.Functors.Functor, ::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction),(:box, :junction, :outer_junction),(2, 2, 3),(1, 4, 4)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction),(:box, :junction, :outer_junction),(2, 2, 3),(1, 4, 4)},(:Name, :VarName),(:name, :variable),(1, 4),(1, 2)},Tuple{Symbol,Symbol},(:box, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Symbol}},1,NamedTuple{(:name,),Tuple{Array{Symbol,1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction),Tuple{Int64,Int64}},1,NamedTuple{(:box, :junction),Tuple{Array{Int64,1},Array{Int64,1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction,),Tuple{Int64}},1,NamedTuple{(:outer_junction,),Tuple{Array{Int64,1}}},Int64},StructArrays.StructArray{NamedTuple{(:variable,),Tuple{Symbol}},1,NamedTuple{(:variable,),Tuple{Array{Symbol,1}}},Int64}}},NamedTuple{(:box, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Symbol,Int64}}}}) at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/functor.jl:33 (repeats 3 times)
 [5] Functor at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/functor.jl:20 [inlined]
 [6] (::AlgebraicRelations.Queries.var"#toSQL#15"{AlgebraicRelations.Functors.Functor})(::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction),(:box, :junction, :outer_junction),(2, 2, 3),(1, 4, 4)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction),(:box, :junction, :outer_junction),(2, 2, 3),(1, 4, 4)},(:Name, :VarName),(:name, :variable),(1, 4),(1, 2)},Tuple{Symbol,Symbol},(:box, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Symbol}},1,NamedTuple{(:name,),Tuple{Array{Symbol,1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction),Tuple{Int64,Int64}},1,NamedTuple{(:box, :junction),Tuple{Array{Int64,1},Array{Int64,1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction,),Tuple{Int64}},1,NamedTuple{(:outer_junction,),Tuple{Array{Int64,1}}},Int64},StructArrays.StructArray{NamedTuple{(:variable,),Tuple{Symbol}},1,NamedTuple{(:variable,),Tuple{Array{Symbol,1}}},Int64}}},NamedTuple{(:box, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Symbol,Int64}}}}) at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/Queries.jl:131
 [7] Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction, :Comparison),(:box, :junction, :outer_junction, :comp_port1, :comp_port2),(2, 2, 3, 5, 5),(1, 4, 4, 2, 2)},(:Type, :Name, :VarName),(:port_type, :outer_port_type, :junction_type, :name, :variable, :field),(2, 3, 4, 1, 4, 2),(1, 1, 1, 2, 3, 2)},Tuple{Type,Name,VarName},(:box, :field, :junction, :outer_junction, :variable),(:variable,),Tables,Indices} where Indices<:NamedTuple where Tables<:NamedTuple where VarName where Name where Type(::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:extract, :split, :train, :evaluate),(),(),()},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:extract, :split, :train, :evaluate),(),(),()},(:Int, :Int64, :Real, :String, :Bool),(:extract_1_Files1, :extract_2_Images2, :split_1_Images1, :split_2_Images2, :split_3_Images3, :train_1_NeuralNet1, :train_2_Images2, :train_3_NeuralNet3, :train_4_Metadata4, :evaluate_1_NeuralNet1, :evaluate_2_Images2, :evaluate_3_Accuracy3, :evaluate_4_Metadata4),(1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4),(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4)},Tuple{Int64,Int64,Real,String,Bool},(),(),NamedTuple{(:extract, :split, :train, :evaluate),Tuple{StructArrays.StructArray{NamedTuple{(:extract_1_Files1, :extract_2_Images2),Tuple{String,String}},1,NamedTuple{(:extract_1_Files1, :extract_2_Images2),Tuple{Array{String,1},Array{String,1}}},Int64},StructArrays.StructArray{NamedTuple{(:split_1_Images1, :split_2_Images2, :split_3_Images3),Tuple{String,String,String}},1,NamedTuple{(:split_1_Images1, :split_2_Images2, :split_3_Images3),Tuple{Array{String,1},Array{String,1},Array{String,1}}},Int64},StructArrays.StructArray{NamedTuple{(:train_1_NeuralNet1, :train_2_Images2, :train_3_NeuralNet3, :train_4_Metadata4),NTuple{4,String}},1,NamedTuple{(:train_1_NeuralNet1, :train_2_Images2, :train_3_NeuralNet3, :train_4_Metadata4),NTuple{4,Array{String,1}}},Int64},StructArrays.StructArray{NamedTuple{(:evaluate_1_NeuralNet1, :evaluate_2_Images2, :evaluate_3_Accuracy3, :evaluate_4_Metadata4),Tuple{String,String,Real,String}},1,NamedTuple{(:evaluate_1_NeuralNet1, :evaluate_2_Images2, :evaluate_3_Accuracy3, :evaluate_4_Metadata4),Tuple{Array{String,1},Array{String,1},Array{Real,1},Array{String,1}}},Int64}}},NamedTuple{(),Tuple{}}}, ::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction),(:box, :junction, :outer_junction),(2, 2, 3),(1, 4, 4)},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:Box, :Port, :OuterPort, :Junction),(:box, :junction, :outer_junction),(2, 2, 3),(1, 4, 4)},(:Name, :VarName),(:name, :variable),(1, 4),(1, 2)},Tuple{Symbol,Symbol},(:box, :junction, :outer_junction, :variable),(:variable,),NamedTuple{(:Box, :Port, :OuterPort, :Junction),Tuple{StructArrays.StructArray{NamedTuple{(:name,),Tuple{Symbol}},1,NamedTuple{(:name,),Tuple{Array{Symbol,1}}},Int64},StructArrays.StructArray{NamedTuple{(:box, :junction),Tuple{Int64,Int64}},1,NamedTuple{(:box, :junction),Tuple{Array{Int64,1},Array{Int64,1}}},Int64},StructArrays.StructArray{NamedTuple{(:outer_junction,),Tuple{Int64}},1,NamedTuple{(:outer_junction,),Tuple{Array{Int64,1}}},Int64},StructArrays.StructArray{NamedTuple{(:variable,),Tuple{Symbol}},1,NamedTuple{(:variable,),Tuple{Array{Symbol,1}}},Int64}}},NamedTuple{(:box, :junction, :outer_junction, :variable),Tuple{Array{Array{Int64,1},1},Array{Array{Int64,1},1},Array{Array{Int64,1},1},Dict{Symbol,Int64}}}}) at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/Queries.jl:140
 [8] parse_query_statement(::Catlab.CSetDataStructures.AttributedCSet{Catlab.Theories.CatDesc{(:extract, :split, :train, :evaluate),(),(),()},Catlab.Theories.AttrDesc{Catlab.Theories.CatDesc{(:extract, :split, :train, :evaluate),(),(),()},(:Int, :Int64, :Real, :String, :Bool),(:extract_1_Files1, :extract_2_Images2, :split_1_Images1, :split_2_Images2, :split_3_Images3, :train_1_NeuralNet1, :train_2_Images2, :train_3_NeuralNet3, :train_4_Metadata4, :evaluate_1_NeuralNet1, :evaluate_2_Images2, :evaluate_3_Accuracy3, :evaluate_4_Metadata4),(1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4),(4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4)},Tuple{Int64,Int64,Real,String,Bool},(),(),NamedTuple{(:extract, :split, :train, :evaluate),Tuple{StructArrays.StructArray{NamedTuple{(:extract_1_Files1, :extract_2_Images2),Tuple{String,String}},1,NamedTuple{(:extract_1_Files1, :extract_2_Images2),Tuple{Array{String,1},Array{String,1}}},Int64},StructArrays.StructArray{NamedTuple{(:split_1_Images1, :split_2_Images2, :split_3_Images3),Tuple{String,String,String}},1,NamedTuple{(:split_1_Images1, :split_2_Images2, :split_3_Images3),Tuple{Array{String,1},Array{String,1},Array{String,1}}},Int64},StructArrays.StructArray{NamedTuple{(:train_1_NeuralNet1, :train_2_Images2, :train_3_NeuralNet3, :train_4_Metadata4),NTuple{4,String}},1,NamedTuple{(:train_1_NeuralNet1, :train_2_Images2, :train_3_NeuralNet3, :train_4_Metadata4),NTuple{4,Array{String,1}}},Int64},StructArrays.StructArray{NamedTuple{(:evaluate_1_NeuralNet1, :evaluate_2_Images2, :evaluate_3_Accuracy3, :evaluate_4_Metadata4),Tuple{String,String,Real,String}},1,NamedTuple{(:evaluate_1_NeuralNet1, :evaluate_2_Images2, :evaluate_3_Accuracy3, :evaluate_4_Metadata4),Tuple{Array{String,1},Array{String,1},Array{Real,1},Array{String,1}}},Int64}}},NamedTuple{(),Tuple{}}}, ::Tuple{Expr,Expr}) at /home/matias/.julia/packages/AlgebraicRelations/uWGRl/src/Queries.jl:150
 [9] top-level scope at REPL[56]:1
schrauf commented 3 years ago

For what it's worth, I don't get the error if I trim the query to just one process from the presentation:

q = @query TrainDB() (im_train, nn_trained) where
        (nn, im_train, nn_trained, md) begin
    train(nn, im_train, nn_trained, md)
end

Also, I'm using a fresh environment with just AlgebraicRelations v0.2.0 installed in Julia v1.5.1:

] activate .
] add AlgebraicRelations
jpfairbanks commented 3 years ago

Yes that error message is combing from deep inside Catlab.jl. We have to make error messages better in general. I think @bosonbaas can help you out in the meantime.

epatters commented 3 years ago

It looks like the whole file functor.jl, which is where the error is coming from, is going to get nuked in the hierarchical_queries branch. So, Andrew can confirm, but maybe this problem will be fixed when that branch is merged?

bosonbaas commented 3 years ago

Thanks for catching that, it looks like I haven't updated the code in functor.jl with the syntax changes in Catlab.

As epatters said, functor.jl will be removed when the hierarchical_queries branch is merged in, but I'll go ahead and update the syntax in functor.jl on Monday so that it can be working before that merge happens.

bosonbaas commented 3 years ago

This issue should be fixed by PR #16. I have merged this PR and registered a new minor version of AlgebraicRelations (v0.2.1), so updating the library should fix this issue for you. Thanks again for catching that bug!

schrauf commented 3 years ago

That's fantastic, it works perfectly now! Thanks for the early fix. I wonder why this wasn't caught by the "Generate SQL Queries" testset in test/Queries.jl.

bosonbaas commented 3 years ago

Glad to hear it!

After doing some investigation, it looks like it was getting caught by that test case, but the Github CI hadn't been run on master since the change in Catlab (and the branch I've been working on has completely removed the functor.jl file)