MASyV is a tool developed to facilitate the visualization of cellular automata, or agent-based or individual-based models.
The MASyV framework allows the user to write a simple two-dimensional multi-agent client program in C, create the desired accompanying images for the agents with a paint program of his/her choice (e.g. GIMP), and get their client to talk to the server using the functions provided in the message passing library. The flexible GUI of MASyV, masyv, offers data logging and visualization services, and also offers the possibility to record the simulations to a wide range of video formats for maximum portability in sharing the results of the simulations with collaborators. The GUI, masyv, is built using GTK+ widgets and functions. For better graphics performance, the display screen widget, which displays the client simulation, makes use of GtkGLExt's OpenGL extension which enables GTK+ widgets to rapidly render scenes using OpenGL's graphics acceleration capabilities. Capture of the simulation to a movie file requires that the software transcode and the desired compression codecs be installed.
For non-graphical batch runs, the user can instead use the command-line version of the server, logmasyv, without having to make any changes to their multi-agent client code. The utility logmasyv can be used to run the client simulations on large computer grids and over a wide range of computer platforms as it only requires that a C compiler be available. This facilitates the exploration of the parameter landscape of the client simulation, without the CPU overhead cost incurred by the graphical services. Communication between the server program (either masyv or logmasyv) and the client simulation is done locally through a Unix domain socket stream.
The MASyV package comes with a few pre-programmed client modules like: "ma_ants" (ant colony laying and following pheromone), "ma_tubule" (organization of the oscillating electrons in the potential well of the beta-tubulin), "ma_immune" (localized viral infection taking place in tissue), and other such simulations. Although those simulations might not be what you need, they are good examples of how to write a client module and how to use the message passing library. The MASyV package also contains a Hello World client simulation "ma_hello" which demonstrates how to implement a new client simulation and how to make use of the message passing library.
Using MASyV's GUI, masyv, it is possible to capture the simulation as a movie, encoded via transcode, to one of the following formats: Raw, XviD, Apple QuickTime, Windows Media Video.
· Unix domain sockets
· GTK+ 2.x (optional)
· GTK+-dev (optional)
· GtkGLExt 1.x (optional)
· GtkGLExt-dev (optional)
· OpenGL compatible library (optional)
· transcode (to capture simulation to compressed movie file)
· GNU Scientific Library (GSL)
What's New in This Release:
. Capture to movie files is now done using gstreamer instead of transcode. This switch fixes the messed up colour problems that sometimes arose usin transcode's independent codecs library. Now, gstreamer uses a single shared pipeline with harmonized codecs for the different encodings. This changes MASyV's optional dependencies for encoding simulations to movies (see http://masyv.sourceforge.net/help/#getting). Simulations can now be encoded to either:
- Raw (.avi): raw stream in avi container;
- Theora Multimedia (.ogm): theora stream in an ogg container;
- Apple QuickTime (.mov): mpeg4 stream in a mov container; or
- Windows Media Video (.wmv): msmpeg4 stream in an asf container. XViD/DivX encoding was removed because it added an extra dependency on gstreamer-plugin-really-bad that I probably shouldn't encourage.
. Added a new client agent function called masyv_send_circle which allows users to send a circle of a given radius for masyv to display. Command syntax is the same as for masyv_send_agent, where image number (5th arg) is the radius of the circle in pixels (not simulation cells). Refer to the MASyV API (http://masyv.sourceforge.net/help/api.php) for full details.
. To ease porting of MASyV to Mac OS X, re-wrote part of masyv so that it no longer passes argc and argv to gtk_init() and gdk_gl_init() because this messed up the client arguments under Mac OS X.