Skip to content

Instantly share code, notes, and snippets.

@soumitradev
Last active January 7, 2020 18:33
Show Gist options
  • Save soumitradev/dce2509ec8ea04e5d61969aafd3ac28d to your computer and use it in GitHub Desktop.
Save soumitradev/dce2509ec8ea04e5d61969aafd3ac28d to your computer and use it in GitHub Desktop.
A script that visualises and animates Graph Traversals.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Graph Traversal Animator\n",
"This program visualizes and animates a Graph Traversal with `num_nodes` vertices and `num_edges` edges. The Edges NEED to be in ascending order. i.e. If we want to draw the traversal from node 7 to node 4, we write `Edge(4, 7)` and not `Edge(7, 4)`. Since this is only a non-directional graph implementation, Edge(4, 7) and Edge (7, 4) are the same, but these edges are compared to the edges returned by LightGraphs (which are in `(4, 7)` order and not in `(7, 4)` order). So, they do not match and do not light up (change color). It is possible to study the Edge object in Depth, view its source code and accordingly allow the reverse order.\n",
"\n",
"**NOTE:** This script requires ffmpeg to be installed and added to PATH.\n",
"\n",
"## Cell 1: Setup\n",
"I have used LightGraphs for plotting and making the graph, GraphPlot to edit color and lable attributes of the graph, Colors to specify colors of the edges, and Compose to save the graph snapshots. Compose requires Cairo and Fontconfig, which for some reason import incredibly slow on my machine, and throw deprecation warnings. I have not used a deprecated package, but Compose for some reason *really* requires this package.\n",
"\n",
"In the first cell, we just set up our graph and view its plot in order to visualise and design our traversal. I have used a circular layout for my graph to keep it neat, and so the graph does not change during multiple tests."
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"Context(Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}((0.0w, 0.0h), (1.0w, 1.0h)), UnitBox{Float64,Float64,Float64,Float64}(-1.2, -1.2, 2.4, 2.4, 0.0mm, 0.0mm, 0.0mm, 0.0mm), nothing, nothing, nothing, List([Context(Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}((0.0w, 0.0h), (1.0w, 1.0h)), nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.LinePrimitive}(Compose.LinePrimitive[Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.9661752437408627cx, 0.08166018530477352cy), (0.7409315374456849cx, 0.6254465958817739cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.9375cx, 0.0625cy), (0.0625cx, 0.9375000000000001cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.9183398146952265cx, 0.03382475625913732cy), (-0.6254465958817739cx, 0.6732820249274104cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.9116116523516815cx, 1.0824450702943665e-17cy), (-0.9116116523516815cx, 2.3410490912652696e-16cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.9183398146952265cx, -0.03382475625913732cy), (-0.6254465958817741cx, -0.6732820249274105cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.9375cx, -0.0625cy), (0.0625cx, -0.9375000000000001cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.9661752437408627cx, -0.08166018530477352cy), (0.7409315374456847cx, -0.6254465958817741cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.625446595881774cx, 0.7409315374456847cy), (0.08166018530477359cx, 0.9661752437408626cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.618718433538229cx, 0.7071067811865475cy), (-0.618718433538229cx, 0.7071067811865476cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.6254465958817739cx, 0.6732820249274102cy), (-0.9183398146952264cx, 0.033824756259137945cy)]) … Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.7409315374456849cx, 0.625446595881774cy), (-0.9661752437408628cx, 0.0816601853047737cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.7071067811865475cx, 0.618718433538229cy), (-0.7071067811865477cx, -0.618718433538229cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.6732820249274102cx, 0.6254465958817739cy), (-0.03382475625913761cx, -0.9183398146952264cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.6446067811865475cx, 0.6446067811865475cy), (0.6446067811865475cx, -0.6446067811865477cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.9661752437408627cx, -0.08166018530477331cy), (-0.7409315374456849cx, -0.6254465958817739cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.9375cx, -0.06249999999999979cy), (-0.0625cx, -0.9375cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.9183398146952265cx, -0.033824756259137105cy), (0.6254465958817739cx, -0.6732820249274104cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.6254465958817742cx, -0.7409315374456847cy), (-0.08166018530477381cx, -0.9661752437408626cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(-0.6187184335382292cx, -0.7071067811865475cy), (0.618718433538229cx, -0.7071067811865477cy)]), Compose.LinePrimitive{Tuple{Measure,Measure}}(Tuple{Measure,Measure}[(0.08166018530477331cx, -0.9661752437408627cy), (0.6254465958817739cx, -0.740931537445685cy)])], Symbol(\"\"))]), List([Compose.Property{Compose.LineWidthPrimitive}(Compose.LineWidthPrimitive[Compose.LineWidthPrimitive(1.0606601717798212mm)]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(0.0,0.0,0.0,0.0))]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.8274509803921568,0.8274509803921568,0.8274509803921568,1.0))])]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(\"\")), Context(Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}((0.0w, 0.0h), (1.0w, 1.0h)), nothing, nothing, nothing, nothing, List([]), List([]), List([Compose.Property{Compose.LineWidthPrimitive}(Compose.LineWidthPrimitive[Compose.LineWidthPrimitive(1.0606601717798212mm)]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.8274509803921568,0.8274509803921568,0.8274509803921568,1.0))])]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(\"\")), Context(Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}((0.0w, 0.0h), (1.0w, 1.0h)), nothing, nothing, nothing, nothing, List([]), List([]), List([Compose.Property{Compose.FontSizePrimitive}(Compose.FontSizePrimitive[Compose.FontSizePrimitive(4.0mm)]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,0.0,0.0))]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(0.0,0.0,0.0,1.0))])]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(\"\")), Context(Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}((0.0w, 0.0h), (1.0w, 1.0h)), nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}}(Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}[Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((1.0cx, 0.0cy), 0.035355339059327376w), Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((0.7071067811865475cx, 0.7071067811865475cy), 0.035355339059327376w), Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((0.0cx, 1.0cy), 0.035355339059327376w), Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((-0.7071067811865475cx, 0.7071067811865475cy), 0.035355339059327376w), Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((-1.0cx, 2.220446049250313e-16cy), 0.035355339059327376w), Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((-0.7071067811865477cx, -0.7071067811865475cy), 0.035355339059327376w), Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((-2.220446049250313e-16cx, -1.0cy), 0.035355339059327376w), Compose.CirclePrimitive{Tuple{Measure,Measure},Measure}((0.7071067811865475cx, -0.7071067811865477cy), 0.035355339059327376w)], Symbol(\"\"))]), List([Compose.Property{Compose.LineWidthPrimitive}(Compose.LineWidthPrimitive[Compose.LineWidthPrimitive(0.0mm)]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,0.0,0.0))]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(0.25098039215686274,0.8784313725490196,0.8156862745098039,1.0))])]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(\"\")), Context(Measures.BoundingBox{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}},Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}((0.0w, 0.0h), (1.0w, 1.0h)), nothing, nothing, nothing, nothing, List([]), List([Compose.Form{Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}}(Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}[Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((1.0cx, 0.0cy), \"1\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm)), Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((0.7071067811865475cx, 0.7071067811865475cy), \"2\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm)), Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((0.0cx, 1.0cy), \"3\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm)), Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((-0.7071067811865475cx, 0.7071067811865475cy), \"4\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm)), Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((-1.0cx, 2.220446049250313e-16cy), \"5\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm)), Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((-0.7071067811865477cx, -0.7071067811865475cy), \"6\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm)), Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((-2.220446049250313e-16cx, -1.0cy), \"7\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm)), Compose.TextPrimitive{Tuple{Measures.Length{:cx,Float64},Measures.Length{:cy,Float64}},Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}},Tuple{Measures.Length{:mm,Float64},Measures.Length{:mm,Float64}}}((0.7071067811865475cx, -0.7071067811865477cy), \"8\", Compose.HCenter(), Compose.VCenter(), Rotation{Tuple{Measures.Length{:w,Float64},Measures.Length{:h,Float64}}}(0.0, (0.5w, 0.5h)), (0.0mm, 0.0mm))], Symbol(\"\"))]), List([Compose.Property{Compose.FontSizePrimitive}(Compose.FontSizePrimitive[Compose.FontSizePrimitive(4.0mm)]), Compose.Property{Compose.StrokePrimitive}(Compose.StrokePrimitive[Compose.StrokePrimitive(RGBA{Float64}(0.0,0.0,0.0,0.0))]), Compose.Property{Compose.FillPrimitive}(Compose.FillPrimitive[Compose.FillPrimitive(RGBA{Float64}(0.0,0.0,0.0,1.0))])]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(\"\"))]), List([]), List([]), 0, false, false, false, false, nothing, nothing, 0.0, Symbol(\"\"))"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"using LightGraphs, GraphPlot, Colors, Compose, Cairo, Fontconfig\n",
"\n",
"num_nodes = 8\n",
"num_edges = 28\n",
"nodes = collect(1:num_nodes)\n",
"\n",
"g = SimpleGraph(num_nodes, num_edges)\n",
"\n",
"gplot(g, nodelabel = collect(1:nv(g)), layout=circular_layout)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cell 2: Creating our traversal\n",
"In the second cell, we create our traversal. I have created a 7 ➜ 4 ➜ 5 ➜ 3 ➜ 6 ➜ 2 ➜ 1 traversal. This would be written as\n",
"```\n",
"e1 = Edge(7, 4)\n",
"e2 = Edge(4, 5)\n",
"e3 = Edge(5, 3)\n",
"e4 = Edge(3, 6)\n",
"e5 = Edge(6, 2)\n",
"e6 = Edge(2, 1)\n",
"```\n",
"But due to the ascending order problem I mentioned in the introduction, it is written as shown in the cell. \n",
"Then, the edges are put in an array in the order they should be traversed in."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"6-element Array{LightGraphs.SimpleGraphs.SimpleEdge{Int64},1}:\n",
" Edge 4 => 7\n",
" Edge 4 => 5\n",
" Edge 3 => 5\n",
" Edge 3 => 6\n",
" Edge 2 => 6\n",
" Edge 1 => 2"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"e1 = Edge(4, 7)\n",
"e2 = Edge(4, 5)\n",
"e3 = Edge(3, 5)\n",
"e4 = Edge(3, 6)\n",
"e5 = Edge(2, 6)\n",
"e6 = Edge(1, 2)\n",
"\n",
"edgesgiven = [e1, e2, e3, e4, e5, e6]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cell 3: Actually animating the transversal\n",
"Our function `animate_transversal` takes in 2 parameters: the graph itself, and the edges to transverse (called the `edge_iter`). At first, all edge colors are set to grey.\n",
"\n",
"Then, starting at Frame 0 (Frame with 0 changes made), we iterate through all the edges and change the color of the corresponding edge, save the plot as a png, and then move on to the next edge. In the `(last + 1)`th edge, we take `min(edge, lastindex(edge_iter))` so that the same frame is saved again. This causes the video to stop at the last frame for some more time, making the animation less abrupt.\n",
"\n",
"Then, after iterating through all the edges, we get the path to the `ffmpeg` installation, and use ffmpeg to stitch together the pngs we saved while iterating into an animated video. I chose ffmpeg due to its immense cross-platform support, wide range of formats, and high degree of customisation.\n",
"\n",
"**NOTE:** Since the ffmpeg command does not have an interface, the script will throw an error if a file is trying to get overwritten since ffmpeg requesting input is not a 0 exit code. This means that during testing, the files will have to be deleted every test. However, it is possible to assign different names every test.\n",
"\n",
"This function then saves a video called `animation.mp4` and all the frames of the animation in the directory it is run in.\n",
"\n",
"When playing the video on some video players like Windows Movies and TV, due to the extremely low FPS of the video, the media players may show a jittery version of the animation. I found out that VLC Media Player plays these low-FPS videos smoothest."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"animate_traversal (generic function with 2 methods)"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function animate_traversal(g, edge_iter, fps)\n",
" colors = [colorant\"lightgray\" for i in 1:ne(g)]\n",
" \n",
" for edge in 0:lastindex(edge_iter) + 1\n",
" \n",
" if edge != 0\n",
" index = findall(x -> x == edge_iter[min(edge, lastindex(edge_iter))], collect(edges(g)))\n",
" colors[index[1]] = colorant\"orange\"\n",
" end\n",
" \n",
" draw(PNG(\"$edge.png\", 20cm, 20cm), gplot(g, nodelabel = collect(1:nv(g)), layout=circular_layout, edgestrokec = colors)) \n",
" end\n",
" \n",
" dir = pwd()\n",
" path = collect(split(ENV[\"PATH\"], \";\"))\n",
" reqpath = findfirst(x -> occursin(\"ffmpeg\", x), path)\n",
" a = path[reqpath]\n",
" \n",
" run(`$a\\ffmpeg -r $fps -f image2 -s 756x756 -i $dir\\\\%d.png -vcodec mpeg4 -crf 25 -pix_fmt yuv420p animation.mp4`);\n",
"end\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Cell 4: Running the Traversal\n",
"Now, we can actually run the traversal and see the results. For some reason, Cairo and Fontconfig required for the PNG rendering of the graph run quite slow and can slow down large plots with labels considerably."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"ffmpeg version 4.2.1 Copyright (c) 2000-2019 the FFmpeg developers\n",
" built with gcc 9.1.1 (GCC) 20190807\n",
" configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt\n",
" libavutil 56. 31.100 / 56. 31.100\n",
" libavcodec 58. 54.100 / 58. 54.100\n",
" libavformat 58. 29.100 / 58. 29.100\n",
" libavdevice 58. 8.100 / 58. 8.100\n",
" libavfilter 7. 57.100 / 7. 57.100\n",
" libswscale 5. 5.100 / 5. 5.100\n",
" libswresample 3. 5.100 / 3. 5.100\n",
" libpostproc 55. 5.100 / 55. 5.100\n",
"Input #0, image2, from 'C:\\Users\\pshewale\\Desktop\\Sonu\\Code\\Jupyter\\Julia\\%d.png':\n",
" Duration: 00:00:08.00, start: 0.000000, bitrate: N/A\n",
" Stream #0:0: Video: png, rgba(pc), 756x756, 1 fps, 1 tbr, 1 tbn, 1 tbc\n",
"Codec AVOption crf (Select the quality for constant quality mode) specified for output file #0 (animation.mp4) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.\n",
"Stream mapping:\n",
" Stream #0:0 -> #0:0 (png (native) -> mpeg4 (native))\n",
"Press [q] to stop, [?] for help\n",
"Output #0, mp4, to 'animation.mp4':\n",
" Metadata:\n",
" encoder : Lavf58.29.100\n",
" Stream #0:0: Video: mpeg4 (mp4v / 0x7634706D), yuv420p, 756x756, q=2-31, 200 kb/s, 1 fps, 16384 tbn, 1 tbc\n",
" Metadata:\n",
" encoder : Lavc58.54.100 mpeg4\n",
" Side data:\n",
" cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1\n",
"frame= 8 fps=0.0 q=2.0 Lsize= 154kB time=00:00:07.00 bitrate= 180.2kbits/s speed=53.9x \n",
"video:153kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.569541%\n"
]
}
],
"source": [
"animate_traversal(g, edgesgiven, 1)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Julia 1.2.0",
"language": "julia",
"name": "julia-1.2"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.2.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
MIT License
Copyright (c) 2019 - 2020 Soumitra Shewale (soumitradev)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment