@@ -106,7 +106,7 @@ function addFactor!(dfg::LightGraphsDFG, variables::Vector{DFGVariable}, factor:
106
106
107
107
props = Dict (:factor => factor)
108
108
109
- retval = add_vertex! (dfg. g, :label , factor. label)
109
+ retval = MetaGraphs . add_vertex! (dfg. g, :label , factor. label)
110
110
retval && set_props! (dfg. g, nv (dfg. g), props)
111
111
112
112
# Add index
@@ -116,7 +116,7 @@ function addFactor!(dfg::LightGraphsDFG, variables::Vector{DFGVariable}, factor:
116
116
# v = dfg.g.vertices[variable._internalId]
117
117
# edge = Graphs.make_edge(dfg.g, v, f)
118
118
# Graphs.add_edge!(dfg.g, edge)
119
- retval && add_edge! (dfg. g, dfg. g[variable. label,:label ], dfg. g[factor. label,:label ])
119
+ retval && MetaGraphs . add_edge! (dfg. g, dfg. g[variable. label,:label ], dfg. g[factor. label,:label ])
120
120
end
121
121
# Track insertion
122
122
# push!(dfg.addHistory, factor.label)
@@ -191,7 +191,7 @@ function updateVariable!(dfg::LightGraphsDFG, variable::DFGVariable)::DFGVariabl
191
191
error (" Variable label '$(variable. label) ' does not exist in the factor graph" )
192
192
end
193
193
# dfg.g.vertices[dfg.labelDict[variable.label]].dfgNode = variable
194
- set_props ! (dfg. g, dfg. g[label,:label ], :variable , variable)
194
+ set_prop ! (dfg. g, dfg. g[variable . label,:label ], :variable , variable)
195
195
return variable
196
196
end
197
197
@@ -204,7 +204,7 @@ function updateFactor!(dfg::LightGraphsDFG, factor::DFGFactor)::DFGFactor
204
204
error (" Factor label '$(factor. label) ' does not exist in the factor graph" )
205
205
end
206
206
# dfg.g.vertices[dfg.labelDict[factor.label]].dfgNode = factor
207
- set_props ! (dfg. g, dfg. g[label,:label ], :factor , factor)
207
+ set_prop ! (dfg. g, dfg. g[factor . label,:label ], :factor , factor)
208
208
return factor
209
209
end
210
210
@@ -242,7 +242,7 @@ function deleteFactor!(dfg::LightGraphsDFG, label::Symbol)::DFGFactor
242
242
# factor = dfg.g.vertices[dfg.labelDict[label]].dfgNode
243
243
# delete_vertex!(dfg.g.vertices[dfg.labelDict[label]], dfg.g)
244
244
factor = get_prop (dfg. g, dfg. g[label,:label ], :factor )
245
- rem_vertex! (dfg. g, dfg. g[label,:label ])
245
+ MetaGraphs . rem_vertex! (dfg. g, dfg. g[label,:label ])
246
246
delete! (dfg. labelDict, label)
247
247
return factor
248
248
end
345
345
Checks if the graph is fully connected, returns true if so.
346
346
"""
347
347
function isFullyConnected (dfg:: LightGraphsDFG ):: Bool
348
- return length (connected_components (dfg. g)) == 1
348
+ return length (LightGraphs . connected_components (dfg. g)) == 1
349
349
end
350
350
351
351
# Alias
@@ -364,18 +364,20 @@ function getNeighbors(dfg::LightGraphsDFG, node::T; ready::Union{Nothing, Int}=n
364
364
if ! haskey (dfg. labelDict, node. label)
365
365
error (" Variable/factor with label '$(node. label) ' does not exist in the factor graph" )
366
366
end
367
- vert = dfg. g. vertices[dfg. labelDict[node. label]]
368
- neighbors = in_neighbors (vert, dfg. g) # Don't use out_neighbors! It enforces directiveness even if we don't want it
367
+ # vert = dfg.g.vertices[dfg.labelDict[node.label]]
368
+ # neighbors = in_neighbors(vert, dfg.g) #Don't use out_neighbors! It enforces directiveness even if we don't want it
369
+ neighbors = map (idx-> get_prop (dfg. g, idx, :label ), LightGraphs. neighbors (dfg. g, dfg. g[node. label,:label ]))
369
370
# Additional filtering
370
- neighbors = ready != nothing ? filter (v -> v. ready == ready, neighbors) : neighbors
371
- neighbors = backendset != nothing ? filter (v -> v. backendset == backendset, neighbors) : neighbors
371
+ # TODO ready and backendset
372
+ # neighbors = ready != nothing ? filter(v -> v.ready == ready, neighbors) : neighbors
373
+ # neighbors = backendset != nothing ? filter(v -> v.backendset == backendset, neighbors) : neighbors
372
374
# Variable sorting (order is important)
373
375
if node isa DFGFactor
374
- order = intersect (node. _variableOrderSymbols, map (v-> v. dfgNode. label, neighbors))
376
+ order = intersect (node. _variableOrderSymbols, neighbors) # map(v->v.dfgNode.label, neighbors))
375
377
return order
376
378
end
377
379
378
- return map (n -> n. dfgNode. label, neighbors)
380
+ return neighbors # map(n -> n.dfgNode.label, neighbors)
379
381
end
380
382
"""
381
383
$(SIGNATURES)
@@ -385,19 +387,23 @@ function getNeighbors(dfg::LightGraphsDFG, label::Symbol; ready::Union{Nothing,
385
387
if ! haskey (dfg. labelDict, label)
386
388
error (" Variable/factor with label '$(label) ' does not exist in the factor graph" )
387
389
end
388
- vert = dfg. g. vertices[dfg. labelDict[label]]
389
- neighbors = in_neighbors (vert, dfg. g) # Don't use out_neighbors! It enforces directiveness even if we don't want it
390
+ # vert = dfg.g.vertices[dfg.labelDict[label]]
391
+ # neighbors = in_neighbors(vert, dfg.g) #Don't use out_neighbors! It enforces directiveness even if we don't want it
390
392
# Additional filtering
391
- neighbors = ready != nothing ? filter (v -> v. ready == ready, neighbors) : neighbors
392
- neighbors = backendset != nothing ? filter (v -> v. backendset == backendset, neighbors) : neighbors
393
+ # TODO ready and backendset
394
+ # neighbors = ready != nothing ? filter(v -> v.ready == ready, neighbors) : neighbors
395
+ # neighbors = backendset != nothing ? filter(v -> v.backendset == backendset, neighbors) : neighbors
393
396
# Variable sorting when using a factor (function order is important)
394
- if vert. dfgNode isa DFGFactor
395
- vert. dfgNode. _variableOrderSymbols
396
- order = intersect (vert. dfgNode. _variableOrderSymbols, map (v-> v. dfgNode. label, neighbors))
397
- return order
398
- end
397
+ # if vert.dfgNode isa DFGFactor
398
+ # vert.dfgNode._variableOrderSymbols
399
+ # order = intersect(vert.dfgNode._variableOrderSymbols, map(v->v.dfgNode.label, neighbors))
400
+ # return order
401
+ # end
402
+ # return map(n -> n.dfgNode.label, neighbors)
403
+
404
+ neighbors = map (idx-> get_prop (dfg. g, idx, :label ), LightGraphs. neighbors (dfg. g, dfg. g[label,:label ]))
405
+ return neighbors
399
406
400
- return map (n -> n. dfgNode. label, neighbors)
401
407
end
402
408
403
409
# Aliases
@@ -451,6 +457,8 @@ function _copyIntoGraph!(sourceDFG::LightGraphsDFG, destDFG::LightGraphsDFG, var
451
457
return nothing
452
458
end
453
459
460
+
461
+ # TODO TODO TODO TODO TODO TODO TODO TODO
454
462
"""
455
463
$(SIGNATURES)
456
464
Retrieve a deep subgraph copy around a given variable or factor.
@@ -525,16 +533,19 @@ function getAdjacencyMatrix(dfg::LightGraphsDFG)::Matrix{Union{Nothing, Symbol}}
525
533
return adjMat
526
534
end
527
535
536
+
528
537
"""
529
538
$(SIGNATURES)
530
539
Produces a dot-format of the graph for visualization.
531
540
"""
532
541
function toDot (dfg:: LightGraphsDFG ):: String
533
- m = PipeBuffer ()
534
- write (m,Graphs. to_dot (dfg. g))
535
- data = take! (m)
536
- close (m)
537
- return String (data)
542
+ # m = PipeBuffer()
543
+ # write(m,Graphs.to_dot(dfg.g))
544
+ # data = take!(m)
545
+ # close(m)
546
+ # return String(data)
547
+ @error " toDot(dfg::LightGraphsDFG) is not sopported yet"
548
+ return nothing
538
549
end
539
550
540
551
"""
@@ -548,12 +559,17 @@ Note
548
559
- Based on graphviz.org
549
560
"""
550
561
function toDotFile (dfg:: LightGraphsDFG , fileName:: String = " /tmp/dfg.dot" ):: Nothing
551
- open (fileName, " w" ) do fid
552
- write (fid,Graphs. to_dot (dfg. g))
553
- end
554
- return nothing
562
+ # open(fileName, "w") do fid
563
+ # write(fid,Graphs.to_dot(dfg.g))
564
+ # end
565
+ # return nothing
566
+ # TODO
567
+ @error " toDotFile(dfg::LightGraphsDFG,filename) is not sopported yet"
568
+ return nothing
555
569
end
556
570
571
+
572
+
557
573
# function __init__()
558
574
# @require DataFrames="a93c6f00-e57d-5684-b7b6-d8193f3e46c0" begin
559
575
# if isdefined(Main, :DataFrames)
580
596
# end
581
597
# end
582
598
# end
583
-
584
-
585
-
586
- # ################################################################################
0 commit comments