On Tuesday, November 22, 2016 at 5:53:14 PM UTC-2, Kevin Liu wrote:
> On Friday, November 18, 2016 at 4:07:44 PM UTC-2, Kevin Liu wrote:
> > Have a look please https://github.com/hpoit/MLN.jl/tree/master/BN
> > 
> > On Friday, November 18, 2016 at 11:48:58 AM UTC-2, Yichao Yu wrote:On Thu, 
> > Nov 17, 2016 at 2:39 PM, Kevin Liu <kvt...@gmail.com> wrote:
> > 
> > > Right, I need the instance of Factor
> > 
> > 
> > 
> > Then use the instance of Factor.
> > 
> > 
> > 
> > >
> > 
> > > On Thursday, November 17, 2016 at 5:33:05 PM UTC-2, Yichao Yu wrote:
> > 
> > >>
> > 
> > >> On Thu, Nov 17, 2016 at 2:27 PM, Kevin Liu <kvt...@gmail.com> wrote:
> > 
> > >> > I replaced Factor[:FactorMargin]() with Factor.FactorMargin() back
> > 
> > >> > again.
> > 
> > >> >
> > 
> > >> > Still, for FactorOperations.jl on Atom, I get {UndefVarError: Factor 
> > >> > not
> > 
> > >> > defined} at the end of each block.
> > 
> > >> >
> > 
> > >> > Factor is defined on Factor.jl, and that file evaluates fine.
> > 
> > >>
> > 
> > >> AFAICT the `Factor`is a type so `Factor.FactorMargin` is definitely 
> > >> wrong.
> > 
> > >>
> > 
> > >> >
> > 
> > >> > The main file, BN.jl, includes Factor.jl and FactorOperations.jl and
> > 
> > >> > exports
> > 
> > >> > Factor, and also evaluates fine.
> > 
> > >> >
> > 
> > >> > On Wednesday, November 16, 2016 at 11:25:24 PM UTC-2, Yichao Yu wrote:
> > 
> > >> >>
> > 
> > >> >> On Wed, Nov 16, 2016 at 7:24 PM, Kevin Liu <kvt...@gmail.com> wrote:
> > 
> > >> >> > Hi Yichao!
> > 
> > >> >>
> > 
> > >> >> In general there's nothing from the code you posted that shows what
> > 
> > >> >> you want to do.
> > 
> > >> >>
> > 
> > >> >> >
> > 
> > >> >> > Here is the function from FactorOperations.jl
> > 
> > >> >> >
> > 
> > >> >> > function FactorDropMargin(A::Factor, Remove_var::Vector{String})
> > 
> > >> >> >     Remove_dims = indexin(Remove_var, A.var)
> > 
> > >> >> >     if any(Remove_dims==0)
> > 
> > >> >> >         error("Wrong variable!")
> > 
> > >> >> >     end
> > 
> > >> >> >
> > 
> > >> >> >     Remain_var = symdiff(A.var, Remove_var)
> > 
> > >> >> >     Remain_dims = indexin(Remain_var, A.var)
> > 
> > >> >> >
> > 
> > >> >> >     Factor[:FactorMargin](A, Remove_var, Remain_var, Remove_dims,
> > 
> > >> >> > Remain_dims) # line 85
> > 
> > >> >>
> > 
> > >> >> Unless you overloaded getindex on this type (which you should include)
> > 
> > >> >> you are construction a Vector of `Factor` from a symbol and then
> > 
> > >> >> calling it. It's impossible to tell what you actually want to do.
> > 
> > >> >>
> > 
> > >> >> And as I previously mentioned, unless you are using PyCall, the issue
> > 
> > >> >> you linked is totally unrelated to this.
> > 
> > >> >>
> > 
> > >> >> > end
> > 
> > >> >> >
> > 
> > >> >> > runtests.jl:
> > 
> > >> >> >
> > 
> > >> >> > @testset "Multiply and marginalize factor" begin
> > 
> > >> >> >
> > 
> > >> >> >   A=Factor(["a", "b"],[3, 2],[0.5, 0.1, 0.3, 0.8, 0, 0.9])
> > 
> > >> >> >   B=Factor(["b", "c"],[2, 2],[0.5, 0.1, 0.7, 0.2])
> > 
> > >> >> >   C = FactorProduct(A, B)
> > 
> > >> >> >   FactorDropMargin(C, ["c"]) # line 19
> > 
> > >> >> >   FactorKeepMargin(C, ["b", "a"])
> > 
> > >> >> >   FactorPermute(ans, [2, 1])
> > 
> > >> >> >   FactorKeepMargin(C, ["a", "b"])
> > 
> > >> >> >
> > 
> > >> >> > end
> > 
> > >> >> >
> > 
> > >> >> > what I got on the REPL:
> > 
> > >> >> >
> > 
> > >> >> > julia> Pkg.test("BN")
> > 
> > >> >> >
> > 
> > >> >> > INFO: Testing BN
> > 
> > >> >> >
> > 
> > >> >> > Test Summary:                                     |
> > 
> > >> >> >
> > 
> > >> >> >   Define, permute factor, and call (var, card, val) | No tests
> > 
> > >> >> >
> > 
> > >> >> > Multiply and marginalize factor: Error During Test
> > 
> > >> >> >
> > 
> > >> >> >   Got an exception of type ErrorException outside of a @test
> > 
> > >> >> >
> > 
> > >> >> >   type DataType has no field FactorMargin
> > 
> > >> >> >
> > 
> > >> >> >    in FactorDropMargin(::BN.Factor, ::Array{String,1}) at
> > 
> > >> >> > /Users/Corvus/.julia/v0.5/BN/src/FactorOperations.jl:85
> > 
> > >> >> >
> > 
> > >> >> >    in macro expansion; at
> > 
> > >> >> > /Users/Corvus/.julia/v0.5/BN/test/runtests.jl:19
> > 
> > >> >> > [inlined]
> > 
> > >> >> >
> > 
> > >> >> >    in macro expansion; at ./test.jl:672 [inlined]
> > 
> > >> >> >
> > 
> > >> >> >    in anonymous at ./<missing>:?
> > 
> > >> >> >
> > 
> > >> >> >    in include_from_node1(::String) at ./loading.jl:488
> > 
> > >> >> >
> > 
> > >> >> >    in include_from_node1(::String) at
> > 
> > >> >> >
> > 
> > >> >> >
> > 
> > >> >> > /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
> > 
> > >> >> >
> > 
> > >> >> >    in process_options(::Base.JLOptions) at ./client.jl:262
> > 
> > >> >> >
> > 
> > >> >> >    in _start() at ./client.jl:318
> > 
> > >> >> >
> > 
> > >> >> >    in _start() at
> > 
> > >> >> >
> > 
> > >> >> >
> > 
> > >> >> > /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
> > 
> > >> >> >
> > 
> > >> >> > Test Summary:                   | Error  Total
> > 
> > >> >> >
> > 
> > >> >> >   Multiply and marginalize factor |     1      1
> > 
> > >> >> >
> > 
> > >> >> >
> > 
> > >> >> > On Wednesday, November 16, 2016 at 10:02:48 PM UTC-2, Yichao Yu
> > 
> > >> >> > wrote:
> > 
> > >> >> >>
> > 
> > >> >> >> On Wed, Nov 16, 2016 at 6:50 PM, Kevin Liu <kvt...@gmail.com> 
> > >> >> >> wrote:
> > 
> > >> >> >> > From this issue https://github.com/JuliaPy/PyPlot.jl/issues/157 I
> > 
> > >> >> >> > understand
> > 
> > >> >> >>
> > 
> > >> >> >> ^^ This is irrelevant unless you are using PyCall
> > 
> > >> >> >>
> > 
> > >> >> >> >
> > 
> > >> >> >> > `Factor[:FactorMargin](A, Remove_var, Remain_var, Remove_dims,
> > 
> > >> >> >> > Remain_dims)`
> > 
> > >> >> >> > (line 85 of FactorOperations.jl) should pass, as it does on Atom,
> > 
> > >> >> >> > but
> > 
> > >> >> >> > not on
> > 
> > >> >> >> > the REPL, which throws
> > 
> > >> >> >> >
> > 
> > >> >> >> > Got an exception of type ErrorException outside of a @test
> > 
> > >> >> >> >
> > 
> > >> >> >> >   type DataType has no field FactorMargin
> > 
> > >> >> >> >
> > 
> > >> >> >> >    in FactorDropMargin(::BN.Factor, ::Array{String,1}) at
> > 
> > >> >> >> > /Users/Corvus/.julia/v0.5/BN/src/FactorOperations.jl:85
> > 
> > >> >> >>
> > 
> > >> >> >> Impossible to tell without code.
> > 
> > >> >> >>
> > 
> > >> >> >> >
> > 
> > >> >> >> >
> > 
> > >> >> >> > Help, please.
> 
> Yichao and DPSanders, I have already used instances of Factor on runtests.jl, 
> instances A, B, and C
> 
> A=Factor(["a", "b"],[3, 2],[0.5, 0.1, 0.3, 0.8, 0, 0.9])
> B=Factor(["b", "c"],[2, 2],[0.5, 0.1, 0.7, 0.2])
> C = FactorProduct(A, B)
> FactorDropMargin(C, ["c"])
> 
> Do you recommend I make any of the functions in FactorOperations.jl into 
> inner constructors of `type Factor` in Factor.jl?

What the tests should look like

julia> A=Factor(["a", "b"],[3, 2],[0.5, 0.1, 0.3, 0.8, 0, 0.9]);

julia> B=Factor(["b", "c"],[2, 2],[0.5, 0.1, 0.7, 0.2]);

julia> C = FactorProduct(A, B)
Factor(["a", "b", "c"],[3, 2, 2],[0.25, 0.05, 0.15, 0.08, 0.0, 0.09, 0.35, 
0.07, 0.21, 0.16, 0.0, 0.18])

julia> FactorDropMargin(C, ["c"])
Factor(["a", "b"],[3, 2],[0.6, 0.12, 0.36, 0.24, 0.0, 0.27])

julia> FactorKeepMargin(C, ["b", "a"])
Factor(["b", "a"],[2, 3],[0.6, 0.24, 0.12, 0.0, 0.36, 0.27])

julia> FactorPermute(ans, [2, 1])
Factor(["a", "b"],[3, 2],[0.6, 0.12, 0.36, 0.24, 0.0, 0.27])

julia> FactorKeepMargin(C, ["a", "b"])
Factor(["a", "b"],[3, 2],[0.6, 0.12, 0.36, 0.24, 0.0, 0.27])

Reply via email to