261
261
List the DFGFactors in the DFG.
262
262
Optionally specify a label regular expression to retrieves a subset of the factors.
263
263
"""
264
- function getFactors (dfg:: GraphsDFG , regexFilter:: Union{Nothing, Regex} = nothing ):: Vector{DFGFactor}
265
- factors = map (v -> v. dfgNode, filter (n -> n. dfgNode isa DFGFactor, Graphs. vertices (dfg. g)))
264
+ function getFactors (dfg:: GraphsDFG , regexFilter:: Union{Nothing, Regex} = nothing ; solvable:: Int = 0 ):: Vector{DFGFactor}
265
+ factors = map (v -> v. dfgNode, filter (n -> (n. dfgNode isa DFGFactor) && solvable <= isSolvable (n. dfgNode), Graphs. vertices (dfg. g)))
266
+
266
267
if regexFilter != nothing
267
268
factors = filter (f -> occursin (regexFilter, String (f. label)), factors)
268
269
end
@@ -288,7 +289,7 @@ function getNeighbors(dfg::GraphsDFG, node::T; solvable::Union{Nothing, Int}=not
288
289
vert = dfg. g. vertices[dfg. labelDict[node. label]]
289
290
neighbors = in_neighbors (vert, dfg. g) # Don't use out_neighbors! It enforces directiveness even if we don't want it
290
291
# Additional filtering
291
- neighbors = ready != nothing ? filter (v -> solvable <= isSolvable (v. dfgNode), neighbors) : neighbors
292
+ neighbors = solvable != nothing ? filter (v -> solvable <= isSolvable (v. dfgNode), neighbors) : neighbors
292
293
neighbors = backendset != nothing ? filter (v -> isSolveInProgress (v. dfgNode) == backendset, neighbors) : neighbors
293
294
# Variable sorting (order is important)
294
295
if node isa DFGFactor
@@ -302,14 +303,14 @@ end
302
303
$(SIGNATURES)
303
304
Retrieve a list of labels of the immediate neighbors around a given variable or factor specified by its label.
304
305
"""
305
- function getNeighbors (dfg:: GraphsDFG , label:: Symbol ; ready :: Union{Nothing, Int} = nothing , backendset:: Union{Nothing, Int} = nothing ):: Vector{Symbol} where T <: DFGNode
306
+ function getNeighbors (dfg:: GraphsDFG , label:: Symbol ; solvable :: Union{Nothing, Int} = nothing , backendset:: Union{Nothing, Int} = nothing ):: Vector{Symbol} where T <: DFGNode
306
307
if ! haskey (dfg. labelDict, label)
307
308
error (" Variable/factor with label '$(label) ' does not exist in the factor graph" )
308
309
end
309
310
vert = dfg. g. vertices[dfg. labelDict[label]]
310
311
neighbors = in_neighbors (vert, dfg. g) # Don't use out_neighbors! It enforces directiveness even if we don't want it
311
312
# Additional filtering
312
- neighbors = ready != nothing ? filter (v -> isSolvable (v. dfgNode) >= ready , neighbors) : neighbors
313
+ neighbors = solvable != nothing ? filter (v -> isSolvable (v. dfgNode) >= solvable , neighbors) : neighbors
313
314
neighbors = backendset != nothing ? filter (v -> isSolveInProgress (v. dfgNode) == backendset, neighbors) : neighbors
314
315
# Variable sorting when using a factor (function order is important)
315
316
if vert. dfgNode isa DFGFactor
0 commit comments