Antz

ANTz Tutorials

>>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.

Resources

ANTz Cheat Sheet

ANTz Documentation

Sample Code to generate ANTz CSV

Demonstration Datasets

View more on the Youtube "ANTzers" Channel

Learn more about the vision behind ANTz

 

Download the libmysql.dll if you are getting an error

libmysql.dll

About ANTz

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.

About the Name

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.

Understanding ANTz

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 Geometries

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
Cube (wireframe) 0
Cube 1
Sphere (wireframe) 2
Sphere 3
Cone (wireframe) 4
Cone 5
Toroid (wireframe) 6
Toroid 7
Dodecahedron (wireframe) 8
Dodecahedron 9
Octahedron (wireframe) 10
Octahedron 11
Tetrahedron (wireframe) 12
Tetrahedron 13
Icosahedron (wireframe) 14
Icosahedron 15
Pin 16
Pin (wireframe) 17
Cylinder (wireframe) 18
Cylinder 19

 

The HyperInfoGlyph

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 Topologies

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.

Basic Sphere Topology Coordinate System

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 Branch Levels

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.

How to use Branch Levels

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:

  1. Branch Level 0 & 1: central pin and binding toroid, references & label information
  2. Branch Level 2: “Month”,
    1. Size = won/lost pct.
    2. Color: position in standings
  3. Branch Level 3: “Game”
    1. Color: red=lost, green=won
  4. Branch Level 4: “Inning”
    1. Size = runs scored
    2. Color: runs scored

Baseball viz

 

The ANTz Control Panel

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 Control Panel

 

The ANTz CSV Formats

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.

 

The Single Most Important Step: Build a Prototype Glyph in ANTz Manually

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.

Modularize

Use a modular approach, define and re-use functions.

Iterate

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 Code

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

Demonstration Datasets

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

Human Diseasome

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)

 

More Images on Picasa

Explore the boundary between Art and Science on my Picasa site

 

Video Demos and Tutorials

View more on the Youtube "ANTzers" Channel