# best package choice for visualizing agent based model simulations in python

This is a visualization/programming design problem. I am working on building a geospatial agent based model, meaning that there are multiple agents interacting within some particular spatial container. The movement of the agents and their interactions are based upon some biased random walks and integro-differential equations. I was trying to figure out which package to use for visualizing this, given some technical constraints. I wrote the model prototype in python, but here is the problem.

I need a way to visualize the interactions between these agents over time. I looked at matplotlib, but the animation features will run into trouble when I add more than a few agents. I believe on the matplotlib site itself the authors indicate that matplotlib animations are not ready for even medium sized scale.

I want to stay open source--and free. The other choices seem to be Mayavi--which uses VTK. I have used this a bit in the past, but was not sure how well Mayavi can handle visualizing a fair number of agents--say between 100-1000. I also was not sure how actively maintained Mayavi was.

Vispy is another choice. This is also a very new library, so I am not sure how stable it is. It relies on on an interface to WebGL. I was not sure if this was a good choice to use yet, since not so many people have experience with it--not so many blog posts on Vispy yet.

Finally there are also some other hard core math visualization libraries in python like the finite elements solvers: Fenics or others. But I don't have experience with any of these, so not sure if they might work better for this particular problem.

If there are any choices I am missing, please suggest them.

I have looked at agent based modeling software like Netlogo and Repast, etc. I don't really want to use these because they seem to impose a lot of constraints on the visualization and modeling choices--and I have to learn yet another language :).

UPDATE:

This was a note from the Vispy google group about VTK and mayavi.

"Mayavi is based on VTK, an old and big library which uses legacy OpenGL
(fixed function pipeline). Mayavi itself is mostly written in C++, and
has trouble attracting contributors. . . . the lead developer has said
its dying a slow death.

Vispy uses modern opengl and is implemented all the way in Python. It
only relies on one of several backends to provide a window to render in.
This makes Vispy more powerful (we can make use of more advanced
shaders) and flexible. Mayavi and VTK have been around for quite a while
though, so it will take some time for Vispy to match the functionality. "

• Mayavi still seems actively maintained: github.com/enthought/mayavi – Geoff Oxberry Oct 21 '15 at 21:03
• I actually read a post from the vispy.org google groups. Mayavi is probably on the way out, since it uses legacy opengl code. I will post the quote as an update to the original post. – krishnab Oct 29 '15 at 18:23