1313
1414support (r) = r
1515
16- function reverse_region (edges, which_edge; nsites= 1 , region_kwargs= (;))
16+ function reverse_region (edges, which_edge; reverse_edge = false , nsites= 1 , region_kwargs= (;))
1717 current_edge = edges[which_edge]
1818 if nsites == 1
19- return [(current_edge, region_kwargs)]
19+ ! reverse_edge && return [(current_edge, region_kwargs)]
20+ reverse_edge && return [(reverse (current_edge), region_kwargs)]
2021 elseif nsites == 2
2122 if last (edges) == current_edge
2223 return ()
@@ -62,6 +63,7 @@ function forward_sweep(
6263 dir:: Base.ForwardOrdering ,
6364 graph:: AbstractGraph ;
6465 root_vertex= GraphsExtensions. default_root_vertex (graph),
66+ reverse_edges= false ,
6567 region_kwargs,
6668 reverse_kwargs= region_kwargs,
6769 reverse_step= false ,
@@ -71,12 +73,13 @@ function forward_sweep(
7173 regions = collect (
7274 flatten (map (i -> forward_region (edges, i; region_kwargs, kwargs... ), eachindex (edges)))
7375 )
74-
7576 if reverse_step
7677 reverse_regions = collect (
7778 flatten (
7879 map (
79- i -> reverse_region (edges, i; region_kwargs= reverse_kwargs, kwargs... ),
80+ i -> reverse_region (
81+ edges, i; reverse_edge= reverse_edges, region_kwargs= reverse_kwargs, kwargs...
82+ ),
8083 eachindex (edges),
8184 ),
8285 ),
9093
9194# ToDo: is there a better name for this? unidirectional_sweep? traversal?
9295function forward_sweep (dir:: Base.ReverseOrdering , args... ; kwargs... )
93- return reverse (forward_sweep (Base. Forward, args... ; kwargs... ))
96+ return reverse (forward_sweep (Base. Forward, args... ; reverse_edges = true , kwargs... ))
9497end
9598
9699function default_sweep_plans (
0 commit comments