@@ -14,7 +14,51 @@ include("../attic/GraphsDFG/GraphsDFG.jl")
14
14
15
15
@deprecate loadDFG (source:: String , iifModule:: Module , dest:: AbstractDFG ) loadDFG! (dest, source)
16
16
17
- @deprecate buildSubgraphFromLabels! (dfg:: AbstractDFG , varList:: Vector{Symbol} ) buildSubgraph (dfg, varList, 1 )
17
+
18
+ # leave a bit longer
19
+ # NOTE buildSubgraphFromLabels! does not have a 1-1 replacement in DFG
20
+ # if you have a set of variables and factors use copyGraph
21
+ # if you want neighbors automaticallyinclued use buildSubgraph
22
+ # if you want a clique subgraph use buildCliqueSubgraph! from IIF
23
+ function buildSubgraphFromLabels! (dfg:: AbstractDFG ,
24
+ syms:: Vector{Symbol} ;
25
+ subfg:: AbstractDFG = LightDFG (params= getSolverParams (dfg)),
26
+ solvable:: Int = 0 ,
27
+ allowedFactors:: Union{Nothing, Vector{Symbol}} = nothing )
28
+ #
29
+ Base. depwarn (" buildSubgraphFromLabels! is deprecated use copyGraph, buildSubgraph or buildCliqueSubgraph!(IIF)" , :buildSubgraphFromLabels! )
30
+ # add a little too many variables (since we need the factors)
31
+ for sym in syms
32
+ if solvable <= getSolvable (dfg, sym)
33
+ getSubgraphAroundNode (dfg, getVariable (dfg, sym), 2 , false , subfg, solvable= solvable)
34
+ end
35
+ end
36
+
37
+ # remove excessive variables that were copied by neighbors distance 2
38
+ currVars = listVariables (subfg)
39
+ toDelVars = setdiff (currVars, syms)
40
+ for dv in toDelVars
41
+ # delete any neighboring factors first
42
+ for fc in lsf (subfg, dv)
43
+ deleteFactor! (subfg, fc)
44
+ end
45
+
46
+ # and the variable itself
47
+ deleteVariable! (subfg, dv)
48
+ end
49
+
50
+ # delete any factors not in the allowed list
51
+ if allowedFactors != nothing
52
+ delFcts = setdiff (lsf (subfg), allowedFactors)
53
+ for dfct in delFcts
54
+ deleteFactor! (subfg, dfct)
55
+ end
56
+ end
57
+
58
+ # orphaned variables are allowed, but not orphaned factors
59
+
60
+ return subfg
61
+ end
18
62
19
63
20
64
# # TODO : I think these are handy, so move to Factor and Variable
0 commit comments