>>Edworlds ANTz Home
Introduction to ANTz
You can download ANTz, including the source, with the link below.
Download the latest version of ANTz for your OS from the ANTz Sourceforge site.
ANTz is developed for Windows, OS X, and Linux, but only the Windows version has been updated since May, 2012. The Windows version is currently under active developmen and we are urging the developers to update all versions. We apologize to Mac and Linux users. There are some features included in the latest Windows version not found in OS X or linux. I will do my best to make the older version useful.
ANTz Cheat Sheet
Sample Code to generate ANTz CSV
View more on the Youtube "ANTzers" Channel
Learn more about the vision behind ANTz
Download the libmysql.dll if you are getting an error
ANTz is a visualization tool designed by Dr. Dave Warner (with a little input from myself and others over the years) and has been through a few development iterations over the years, the latest version of ANTz being developed by Shane Saxon. Previous iterations included Neatview.
ANTz got its name from having been used initially for a researcher interested in trends in citation indices such as Scopus or Web of Science looking for trends in ant social behavior and the bigger picture of complex social behavior in other organisms including humans. It is not the best name for a viz tool when relying on search engines to find it. We like to consider this a test of the tool's popularity. There may come a turning point when our tool overtakes the movie for the #1 spot in a Google or what the heck, Bing, search result.
ANTz uses the OpenGL 3D graphics libraries glut32 and freeglut. Thus it has a very simple GUI. It is designed to render large numbers of objects and retain decent interactive exploratory capabilities. It also uses a unique cell-like structure called a hyperglyph to support nested parent-child object relationships.
ANTz uses a static collection of 20 geometric objects consisting of basic 3D primitives and Platonic solids and their wireframe versions.
Download Windows sample file containing ANTz geometries.
Download Mac OS X sample file containing ANTz geometries.
Here is a list of geometries and their corresponding geometry id number in ANTz. Note that for all geometries except the Pin, the solid is an odd number and the wireframe is an even number.
|Ceometry||ANTz geometry id|
ANTz uses the geometries to build a complex cell-like 3D geometric structure I like to call a hyperinfoglyph, or simply hyperglyph. The ANTz hyperglyph uses a parent-child relationship between geometries and supports up to 32 generations by default, depending on which version you are using. The latest version supports 28 by default, but this parameter can be modified in the source, kNPnodeChildMax. I have successfully increased it to 4560. It crashed at 5012, so the practical max is somewhere between those two numbers.
ANTz uses a set of 7 'topologies' to provide a diverse but consistent set of coordinate systems which constrain how we can distribute objects around their parent. ANTz topologies use the Google Earth (formerly Keyhole) Keyhole Markup Language (KML) spatial coordinate system for all 7 topologies. This means by default objects are distributed in ANTz and around their parents using a longitude-latitude-elevation convention for x-y-z spatial distribution by default.
Download Windows sample file containing ANTz topologies with one parent and a single child.
Download Mac OS X sample file containing ANTz topologies with one parent and a single child.
Download Windows sample file containing ANTz topologies with one parent and a five children.
Download Mac OS X sample file containing ANTz topologies with one parent and a five children.
The coordinate system for the sphere is the simplest example of how the KML format is used. Child objects translate_x, translate_y, and translate_z parameters correspond to longitude, latitude, and elevation respectively.
ANTz supports up to 32 Branch Levels. Objects on one Branch Level are Parents to the objects on the Branch Level 'below' (above?) it. Below are examples of objects on Branch Levels 0 through 4.
If data is inherently categorical, especially in a nested hierarchical structure, consider multiple branch levels.
For example, one season of a baseball team can be divided into multiple levels in several different ways. I chose the following:
ANTz uses a simple 2D control panel to modify objects in the space. This control panel is very limited. Do not expect anything like a standard GUI. This is probably the biggest limitation of the tool, and is the highest priority for improvement.
Given its limitations, you can still accomplish much by using the control panel effectively. The middle mouse scroll wheel scrolls quickly through the options. I use Move, Scale, and Rotate frequently and since they are not on the default panel list, I have become used to scrolling quickly to find them.
ANTz currently uses four different CSV formats for input.
|File||Name||# Rows||# Columns||Description|
|Node State File||ANTz0001.CSV||Limited only by memory||94||Primary input file. ANTz needs at least this file when reading data in. It contains|
|Tag/Label File||ANTzTag0001.CSV||Limited by # of objects in Node State File||5||Contains text information to display when the I key is pressed in ANTz. Uses record_id as key parameter.|
|Channels File||ANTzCh0001.CSV||Limited only by memory||1000 by default, can be increased in source code||Contains data for animation playback when the P key is pressed.|
|Channel Map File||ANTzChMap0001.CSV||Limited by number of channels in Channels File||7||Contains details to match channel with object and parameter to be animated.|
When you have an idea for your glyph structure, prior to writing your code I recommend going through the process of creating a prototype of your glyph in ANTz, saving it (K key), and reverse-engineering the CSV to identify key values for parameters of interest such as geometry, topology, texture, translate, scale, rotate, type, parent, child, branch_level.
Tips for Writing Code to Output an ANTz CSV File
The process for working with code to generate ANTz is similar to most analytical programming tasks.
Keep It Simple
Keep your code simple at first. Output a small number of glyphs to validate your code structure.
Use a modular approach, define and re-use functions.
I do most of my work in PHP. I use xampp to host my own Apache localhost web server and MySQL database. I write my code in Dreamweaver and save my outputs in the usr/csv/ subfolder to the default ANTz CSV file ANTz0001.CSV. I save it, shuffle to Firefox, browse to the script, run it, shuffle to Windows, run antz.exe, hit 1 to load the output, shuffle back to Dreamweaver and iterate as needed.
Sample C Code to Create Your Own ANTz CSV
Sample C Code for Mac OS X to Create Your Own ANTz CSV
Sample PHP Code to Create Your Own ANTz CSV
Sample PHP Code for Mac OS X to Create Your Own ANTz CSV
File I/O Example
This example uses one branch level. It uses size and color to represent number of deaths. You can modify this code to apply to your own data by changing the input file and the data arrays for your specific parameters. You can use this code in conjunction with the Sample Code below to create multiple branch levels and add links.
Sample PHP Code for File IO: Aviation Accidents, 1970-2011
Physiometric Data Integration and Animation
Lahman Baseball Database and NCAA Football
SDSC SmartGrid Energy Use Data (EBU3) (SDSC)
Global Terrorism Database
Global Database of Events, Language, and Tone
HPWREN Weather Data
California STAR Test Score Data
Moodle Student Activity Data
Fukushima Nuclear Reactor Radiation Data
Principles of Neural Science DAG (download latest for Windows)
Bing Search Results (Why Bing and not Google? Google is too restrictive for large amounts of data)
Explore the boundary between Art and Science on my Picasa site
View more on the Youtube "ANTzers" Channel