Пример #1
0
def generate_graph(lines, tick=0.5):
    '''
    Given lines from parse_log, return a gvanim.Animate object.

    The tick determines the frame rate and is in units of the .time
    value of lines.
    '''

    ga = Animation()

    last_time = 0

    for one in lines:
            
        if isinstance(one, Connect):
            ga.add_edge(one.tail, one.head)
            last_time = one.time

        if isinstance(one, State):
            if one.state == "enter":
                ga.highlight_node(one.node)
            if one.state == "exit":
                ga.add_node(one.node)
            if one.time - last_time > tick:
                ga.next_step()
                last_time = one.time

    ga.next_step()
    return ga
Пример #2
0
def test_case():
    node0 = Node(0, 'root')
    node1 = Node(1, 'left')
    node2 = Node(2, 'right')
    node3 = Node(3, 'll-child')
    node4 = Node(4, 'lr-child')
    node0.left = node1
    node0.right = node2
    node1.left = node3
    node1.right = node4

    ga = Animation()
    ga.add_edge(node0.name, node1.name)
    ga.add_edge(node0.name, node2.name)
    ga.add_edge(node1.name, node3.name)
    ga.add_edge(node1.name, node4.name)
    ga.next_step()

    preorder(node0, ga)

    graphs = ga.graphs()
    for g in graphs:
        print(g)

    output = render(graphs, 'demo', 'png')
    gif(output, 'demo', 50)
Пример #3
0
def main():

    parser = ArgumentParser(prog='gvanim')
    parser.add_argument('animation', nargs='?', type=FileType(
        'r'), default=stdin, help='The file containing animation commands (default: stdin)')
    parser.add_argument('--delay', '-d', default='100',
                        help='The delay (in ticks per second, default: 100)')
    parser.add_argument('basename', help='The basename of the generated file')
    args = parser.parse_args()

    ga = Animation()
    ga.parse(args.animation)
    gif(render(ga.graphs(), args.basename, 'png'), args.basename, args.delay)
Пример #4
0
    def __init__(self):  # noqa: D107
        super().__init__()
        satisfies_version(EventHandlerExtensionPoint.EXTENSION_POINT_VERSION,
                          '^1.0')
        self._animation = Animation()
        self._node_dependencies = {}
        self._any_started = False
        self._node_colors = {}
        self._has_errors = set()
        self._enabled = os.environ.get(
            ANIMATION_PROGRESS_ENVIRONMENT_VARIABLE.name, False)

        # register exit handle to ensure the last status line is cleared
        atexit.register(self._finish)
def construct(numbers):
    ga = Animation()  # for visualization
    root = Node(numbers[0])
    for n in numbers[1:]:
        root = root.add_node(Node(n))
        # each time rewrite all nodes. this is not good
        root.set_animation(ga)
        ga.next_step(clean=True)

    # print the result
    root.print()

    # save the animation
    if not os.path.isdir("graphs"):
        os.mkdir("graphs")
    graphs = ga.graphs()
    files = render(graphs, "graphs/figure", 'png')
    gif(files, "graphs/gif-anim", 50)
Пример #6
0
def build_max_heap(numbers):
    size = len(numbers)

    ga = Animation()
    # add nodes and edges
    for i in reversed(range(size)):
        v = numbers[i]
        ga.label_node(i + 1, v)
        if i != 0:
            ga.add_edge((i + 1) // 2, i + 1)
    ga.next_step()

    for i in reversed(range(0, size // 2)):
        max_heapify(numbers, i, ga)

    # save
    graphs = ga.graphs()
    files = render(graphs, "figure/fig", 'png')
    gif(files, "figure/building-heap", 50)
def animation():
    size = 10
    numbers = gen_numbers(size)
    root = None
    ga = Animation()
    # generate tree
    for n in numbers:
        root = insert(root, Node(n))
        add_nodes(ga, root)
        ga.highlight_node(n)
        ga.next_step(clean=True)
    # delete
    for n in gen_numbers(size):
        add_nodes(ga, root)
        ga.highlight_node(n)
        ga.next_step(clean=True)
        root = delete(root, search(root, n))

    # save
    graphs = ga.graphs()
    files = render(graphs, "figure/figure", 'png')
    gif(files, "figure/gif-anim", 50)
Пример #8
0
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# "GraphvizAnim". If not, see <http://www.gnu.org/licenses/>.

from random import sample

from gvanim import Animation, render, gif

N = range( 6 )
K = 3

G = dict( ( v, sample( N, K ) ) for v in N )

ga = Animation()
for v, adj in G.items():
    for u in adj:
        ga.add_edge( v, u )
        ga.label_edge( v, u, '{}:{}'.format(v,u))
        ga.next_step()

seen = [ False for v in  N ]
def dfv( v ):
    ga.highlight_node( v )
    ga.next_step()
    seen[ v ] = True
    for u in G[ v ]:
        if not seen[ u ]:
            ga.highlight_node( v )
            ga.highlight_edge( v, u )
Пример #9
0
}
start = N[0]
goal = N[5]

pre = dict()


def color_path(u, animation, path_color="magenta"):
    try:
        animation.highlight_edge(pre[u], u, color=path_color)
        color_path(pre[u], animation)
    except:
        pass


ga = Animation()
gb = Animation()

seen = {v: False for v in N}
fringe = Queue.Queue()

queuename = ""
if isinstance(fringe, Queue.LifoQueue):
    queuename = "Stack"
elif isinstance(fringe, Queue.Queue):
    queuename = "Queue"

queueStates = []

for v, adj in G.items():
    for u in adj: