Skip to content

Commit 15673f7

Browse files
authored
Merge pull request #213 from JuliaRobotics/feature/4Q19/backendset
Removing backendset filter
2 parents 266f80b + 647afc6 commit 15673f7

File tree

8 files changed

+23
-70
lines changed

8 files changed

+23
-70
lines changed

src/CloudGraphsDFG/services/CloudGraphsDFG.jl

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -507,15 +507,10 @@ hasOrphans(dfg::CloudGraphsDFG)::Bool = !isFullyConnected(dfg)
507507
$(SIGNATURES)
508508
Retrieve a list of labels of the immediate neighbors around a given variable or factor.
509509
"""
510-
function getNeighbors(dfg::CloudGraphsDFG, node::T; ready::Union{Nothing, Int}=nothing, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol} where T <: DFGNode
510+
function getNeighbors(dfg::CloudGraphsDFG, node::T; ready::Union{Nothing, Int}=nothing)::Vector{Symbol} where T <: DFGNode
511511
query = "(n:$(dfg.userId):$(dfg.robotId):$(dfg.sessionId):$(node.label))--(node) where (node:VARIABLE or node:FACTOR) "
512-
if ready != nothing || backendset != nothing
513-
if ready != nothing
514-
query = query * " and node.solvable >= $(ready)"
515-
end
516-
if backendset != nothing
517-
query = query * " and node.solveInProgress = $(backendset)"
518-
end
512+
if ready != nothing
513+
query = query * " and node.ready >= $(ready)"
519514
end
520515
@debug "[Query] $query"
521516
neighbors = _getLabelsFromCyphonQuery(dfg.neo4jInstance, query)
@@ -530,15 +525,10 @@ end
530525
$(SIGNATURES)
531526
Retrieve a list of labels of the immediate neighbors around a given variable or factor specified by its label.
532527
"""
533-
function getNeighbors(dfg::CloudGraphsDFG, label::Symbol; ready::Union{Nothing, Int}=nothing, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol}
528+
function getNeighbors(dfg::CloudGraphsDFG, label::Symbol; ready::Union{Nothing, Int}=nothing)::Vector{Symbol}
534529
query = "(n:$(dfg.userId):$(dfg.robotId):$(dfg.sessionId):$(label))--(node) where (node:VARIABLE or node:FACTOR) "
535-
if ready != nothing || backendset != nothing
536-
if ready != nothing
537-
query = query * " and node.solvable >= $(ready)"
538-
end
539-
if backendset != nothing
540-
query = query * " and node.solveInProgress = $(backendset)"
541-
end
530+
if ready != nothing
531+
query = query * " and node.ready >= $(ready)"
542532
end
543533
@debug "[Query] $query"
544534
neighbors = _getLabelsFromCyphonQuery(dfg.neo4jInstance, query)

src/GraphsDFG/services/GraphsDFG.jl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,15 +282,14 @@ end
282282
$(SIGNATURES)
283283
Retrieve a list of labels of the immediate neighbors around a given variable or factor.
284284
"""
285-
function getNeighbors(dfg::GraphsDFG, node::T; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol} where T <: DFGNode
285+
function getNeighbors(dfg::GraphsDFG, node::T; solvable::Int=0)::Vector{Symbol} where T <: DFGNode
286286
if !haskey(dfg.labelDict, node.label)
287287
error("Variable/factor with label '$(node.label)' does not exist in the factor graph")
288288
end
289289
vert = dfg.g.vertices[dfg.labelDict[node.label]]
290290
neighbors = in_neighbors(vert, dfg.g) #Don't use out_neighbors! It enforces directiveness even if we don't want it
291291
# Additional filtering
292292
neighbors = solvable != 0 ? filter(v -> solvable <= isSolvable(v.dfgNode), neighbors) : neighbors
293-
neighbors = backendset != nothing ? filter(v -> isSolveInProgress(v.dfgNode) == backendset, neighbors) : neighbors
294293
# Variable sorting (order is important)
295294
if node isa DFGFactor
296295
order = intersect(node._variableOrderSymbols, map(v->v.dfgNode.label, neighbors))
@@ -303,15 +302,14 @@ end
303302
$(SIGNATURES)
304303
Retrieve a list of labels of the immediate neighbors around a given variable or factor specified by its label.
305304
"""
306-
function getNeighbors(dfg::GraphsDFG, label::Symbol; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol} where T <: DFGNode
305+
function getNeighbors(dfg::GraphsDFG, label::Symbol; solvable::Int=0)::Vector{Symbol} where T <: DFGNode
307306
if !haskey(dfg.labelDict, label)
308307
error("Variable/factor with label '$(label)' does not exist in the factor graph")
309308
end
310309
vert = dfg.g.vertices[dfg.labelDict[label]]
311310
neighbors = in_neighbors(vert, dfg.g) #Don't use out_neighbors! It enforces directiveness even if we don't want it
312311
# Additional filtering
313312
neighbors = solvable != 0 ? filter(v -> isSolvable(v.dfgNode) >= solvable, neighbors) : neighbors
314-
neighbors = backendset != nothing ? filter(v -> isSolveInProgress(v.dfgNode) == backendset, neighbors) : neighbors
315313
# Variable sorting when using a factor (function order is important)
316314
if vert.dfgNode isa DFGFactor
317315
vert.dfgNode._variableOrderSymbols

src/LightDFG/services/LightDFG.jl

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -291,20 +291,11 @@ function _isSolvable(dfg::LightDFG, label::Symbol, ready::Int)::Bool
291291
return false
292292
end
293293

294-
function _isbackendset(dfg::LightDFG, label::Symbol, backendset::Int)::Bool
295-
haskey(dfg.g.variables, label) && (return dfg.g.variables[label].solveInProgress == backendset)
296-
haskey(dfg.g.factors, label) && (return dfg.g.factors[label].solveInProgress == backendset)
297-
298-
#TODO should this be a breaking error?
299-
@error "Node not a factor or variable"
300-
return false
301-
end
302-
303294
"""
304295
$(SIGNATURES)
305296
Retrieve a list of labels of the immediate neighbors around a given variable or factor.
306297
"""
307-
function getNeighbors(dfg::LightDFG, node::DFGNode; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol}
298+
function getNeighbors(dfg::LightDFG, node::DFGNode; solvable::Int=0)::Vector{Symbol}
308299
label = node.label
309300
if !exists(dfg, label)
310301
error("Variable/factor with label '$(node.label)' does not exist in the factor graph")
@@ -314,7 +305,6 @@ function getNeighbors(dfg::LightDFG, node::DFGNode; solvable::Int=0, backendset:
314305
neighbors_ll = [dfg.g.labels[i] for i in neighbors_il]
315306
# Additional filtering
316307
solvable != 0 && filter!(lbl -> _isSolvable(dfg, lbl, solvable), neighbors_ll)
317-
backendset != nothing && filter!(lbl -> _isbackendset(dfg, lbl, backendset), neighbors_ll)
318308

319309
# Variable sorting (order is important)
320310
if typeof(node) <: AbstractDFGFactor
@@ -330,7 +320,7 @@ end
330320
$(SIGNATURES)
331321
Retrieve a list of labels of the immediate neighbors around a given variable or factor specified by its label.
332322
"""
333-
function getNeighbors(dfg::LightDFG, label::Symbol; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol}
323+
function getNeighbors(dfg::LightDFG, label::Symbol; solvable::Int=0)::Vector{Symbol}
334324
if !exists(dfg, label)
335325
error("Variable/factor with label '$(label)' does not exist in the factor graph")
336326
end
@@ -339,7 +329,6 @@ function getNeighbors(dfg::LightDFG, label::Symbol; solvable::Int=0, backendset:
339329
neighbors_ll = [dfg.g.labels[i] for i in neighbors_il]
340330
# Additional filtering
341331
solvable != 0 && filter!(lbl -> _isSolvable(dfg, lbl, solvable), neighbors_ll)
342-
backendset != nothing && filter!(lbl -> _isbackendset(dfg, lbl, backendset), neighbors_ll)
343332

344333
# Variable sorting (order is important)
345334
if haskey(dfg.g.factors, label)

src/SymbolDFG/services/SymbolDFG.jl

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -273,20 +273,11 @@ function _isSolvable(dfg::SymbolDFG, label::Symbol, solvable::Int)::Bool
273273
return false
274274
end
275275

276-
function _isbackendset(dfg::SymbolDFG, label::Symbol, backendset::Int)::Bool
277-
haskey(dfg.g.variables, label) && (return dfg.g.variables[label].solveInProgress == backendset)
278-
haskey(dfg.g.factors, label) && (return dfg.g.factors[label].solveInProgress == backendset)
279-
280-
#TODO should this be a breaking error?
281-
@error "Node not a factor or variable"
282-
return false
283-
end
284-
285276
"""
286277
$(SIGNATURES)
287278
Retrieve a list of labels of the immediate neighbors around a given variable or factor.
288279
"""
289-
function getNeighbors(dfg::SymbolDFG, node::DFGNode; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol}
280+
function getNeighbors(dfg::SymbolDFG, node::DFGNode; solvable::Int=0)::Vector{Symbol}
290281
label = node.label
291282
if !haskey(dfg.g.fadjdict, label)
292283
error("Variable/factor with label '$(node.label)' does not exist in the factor graph")
@@ -295,7 +286,6 @@ function getNeighbors(dfg::SymbolDFG, node::DFGNode; solvable::Int=0, backendset
295286
neighbors_ll = copy(outneighbors(dfg.g, label))
296287
# Additional filtering
297288
solvable != 0 && filter!(lbl -> _isSolvable(dfg, lbl, solvable), neighbors_ll)
298-
backendset != nothing && filter!(lbl -> _isbackendset(dfg, lbl, backendset), neighbors_ll)
299289

300290
# Variable sorting (order is important)
301291
if node isa DFGFactor
@@ -311,15 +301,14 @@ end
311301
$(SIGNATURES)
312302
Retrieve a list of labels of the immediate neighbors around a given variable or factor specified by its label.
313303
"""
314-
function getNeighbors(dfg::SymbolDFG, label::Symbol; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol} where T <: DFGNode
304+
function getNeighbors(dfg::SymbolDFG, label::Symbol; solvable::Int=0)::Vector{Symbol} where T <: DFGNode
315305
if !haskey(dfg.g.fadjdict, label)
316306
error("Variable/factor with label '$(label)' does not exist in the factor graph")
317307
end
318308

319309
neighbors_ll = copy(outneighbors(dfg.g, label))
320310
# Additional filtering
321311
solvable != 0 && filter!(lbl -> _isSolvable(dfg, lbl, solvable), neighbors_ll)
322-
backendset != nothing && filter!(lbl -> _isbackendset(dfg, lbl, backendset), neighbors_ll)
323312

324313
# Variable sorting (order is important)
325314
if haskey(dfg.g.factors, label)

src/services/AbstractDFG.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,14 +299,14 @@ end
299299
$(SIGNATURES)
300300
Retrieve a list of labels of the immediate neighbors around a given variable or factor.
301301
"""
302-
function getNeighbors(dfg::G, node::T; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol} where {G <: AbstractDFG, T <: DFGNode}
302+
function getNeighbors(dfg::G, node::T; solvable::Int=0)::Vector{Symbol} where {G <: AbstractDFG, T <: DFGNode}
303303
error("getNeighbors not implemented for $(typeof(dfg))")
304304
end
305305
"""
306306
$(SIGNATURES)
307307
Retrieve a list of labels of the immediate neighbors around a given variable or factor specified by its label.
308308
"""
309-
function getNeighbors(dfg::G, label::Symbol; solvable::Int=0, backendset::Union{Nothing, Int}=nothing)::Vector{Symbol} where G <: AbstractDFG
309+
function getNeighbors(dfg::G, label::Symbol; solvable::Int=0)::Vector{Symbol} where G <: AbstractDFG
310310
error("getNeighbors not implemented for $(typeof(dfg))")
311311
end
312312

test/LightDFGSummaryTypes.jl

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,6 @@ end
199199
numNodes = 10
200200
dfg = LightDFG{NoSolverParams, VARTYPE, FACTYPE}()
201201
verts = map(n -> VARTYPE(Symbol("x$n")), 1:numNodes)
202-
#change ready and backendset for x7,x8 for improved tests on x7x8f1
203-
# verts[7].ready = 1
204-
# verts[8].backendset = 1
205202
map(v -> addVariable!(dfg, v), verts)
206203
map(n -> addFactor!(dfg, [verts[n], verts[n+1]], FACTYPE(Symbol("x$(n)x$(n+1)f1"))), 1:(numNodes-1))
207204

test/iifInterfaceTests.jl

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ end
314314
@test symdiff(f_ll, [:abf1, :abf1, :abf1]) == Symbol[]
315315

316316
# Filtered - REF DFG #201
317-
@show adjMat = getAdjacencyMatrix(dfg, solvable=1)
317+
adjMat = getAdjacencyMatrix(dfg, solvable=1)
318318
@test size(adjMat) == (1,2)
319319
@test symdiff(adjMat[1, :], [nothing, :b]) == Symbol[]
320320
# sparse
@@ -346,11 +346,10 @@ numNodes = 10
346346
# clearSession!!(dfg)
347347
# end
348348

349-
#change ready and backendset for x7,x8 for improved tests on x7x8f1
349+
#change solvable and solveInProgress for x7,x8 for improved tests on x7x8f1
350350
verts = map(n -> addVariable!(dfg, Symbol("x$n"), ContinuousScalar, labels = [:POSE]), 1:numNodes)
351351
#TODO fix this to use accessors
352352
verts[7].solvable = 1
353-
# verts[7].backendset = 0
354353
verts[8].solvable = 0
355354
verts[8].solveInProgress = 1
356355
#call update to set it on cloud
@@ -372,20 +371,16 @@ facts = map(n ->
372371
@test getNeighbors(dfg, getFactor(dfg, :x1x2f1)) == ls(dfg, getFactor(dfg, :x1x2f1))
373372
@test getNeighbors(dfg, :x1x2f1) == ls(dfg, :x1x2f1)
374373

375-
# ready and backendset
374+
# solvable checks
376375
@test getNeighbors(dfg, :x5, solvable=1) == Symbol[]
377376
#TODO Confirm: test failed on GraphsDFG, don't know if the order is important for isa variable.
378377
@test symdiff(getNeighbors(dfg, :x5, solvable=0), [:x4x5f1,:x5x6f1]) == []
379-
@test getNeighbors(dfg, :x5, backendset=1) == Symbol[]
380-
@test symdiff(getNeighbors(dfg, :x5, backendset=0),[:x4x5f1,:x5x6f1]) == []
378+
@test symdiff(getNeighbors(dfg, :x5),[:x4x5f1,:x5x6f1]) == []
381379
@test getNeighbors(dfg, :x7x8f1, solvable=0) == [:x7, :x8]
382-
@test getNeighbors(dfg, :x7x8f1, backendset=0) == [:x7]
383380
@test getNeighbors(dfg, :x7x8f1, solvable=1) == [:x7]
384-
@test getNeighbors(dfg, :x7x8f1, backendset=1) == [:x8]
385381
@test getNeighbors(dfg, verts[1], solvable=0) == [:x1x2f1]
386382
@test getNeighbors(dfg, verts[1], solvable=1) == Symbol[]
387-
@test getNeighbors(dfg, verts[1], backendset=0) == [:x1x2f1]
388-
@test getNeighbors(dfg, verts[1], backendset=1) == Symbol[]
383+
@test getNeighbors(dfg, verts[1]) == [:x1x2f1]
389384

390385
end
391386

test/interfaceTests.jl

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -301,9 +301,8 @@ end
301301
numNodes = 10
302302
dfg = testDFGAPI{NoSolverParams}()
303303
verts = map(n -> DFGVariable(Symbol("x$n"), TestInferenceVariable1()), 1:numNodes)
304-
#change ready and backendset for x7,x8 for improved tests on x7x8f1
304+
#change ready and solveInProgress for x7,x8 for improved tests on x7x8f1
305305
verts[7].solvable = 1
306-
verts[8].solveInProgress = 1
307306

308307
# Can't change the softtypes now.
309308
# #force softytypes to first 2 vertices.
@@ -325,19 +324,15 @@ map(n -> addFactor!(dfg, [verts[n], verts[n+1]], DFGFactor{Int, :Symbol}(Symbol(
325324
@test getNeighbors(dfg, getFactor(dfg, :x1x2f1)) == ls(dfg, getFactor(dfg, :x1x2f1))
326325
@test getNeighbors(dfg, :x1x2f1) == ls(dfg, :x1x2f1)
327326

328-
# ready and backendset
327+
# Solvable
329328
@test getNeighbors(dfg, :x5, solvable=1) == Symbol[]
330329
@test getNeighbors(dfg, :x5, solvable=0) == [:x4x5f1,:x5x6f1]
331-
@test getNeighbors(dfg, :x5, backendset=1) == Symbol[]
332-
@test getNeighbors(dfg, :x5, backendset=0) == [:x4x5f1,:x5x6f1]
330+
@test getNeighbors(dfg, :x5) == [:x4x5f1,:x5x6f1]
333331
@test getNeighbors(dfg, :x7x8f1, solvable=0) == [:x7, :x8]
334-
@test getNeighbors(dfg, :x7x8f1, backendset=0) == [:x7]
335332
@test getNeighbors(dfg, :x7x8f1, solvable=1) == [:x7]
336-
@test getNeighbors(dfg, :x7x8f1, backendset=1) == [:x8]
337333
@test getNeighbors(dfg, verts[1], solvable=0) == [:x1x2f1]
338334
@test getNeighbors(dfg, verts[1], solvable=1) == Symbol[]
339-
@test getNeighbors(dfg, verts[1], backendset=0) == [:x1x2f1]
340-
@test getNeighbors(dfg, verts[1], backendset=1) == Symbol[]
335+
@test getNeighbors(dfg, verts[1]) == [:x1x2f1]
341336

342337
end
343338

0 commit comments

Comments
 (0)