Ctrax logo

Ctrax Usage


The first order of business after starting Ctrax is to open a video to be processed by selecting File->Open. See Input Video Formats for information on the types of video Ctrax currently supports. The tracking results will be saved in the same location as the movie file, with the extension .ann. This annotation file will contain the flies' trajectories, as well as all parameters used during tracking. If the movie has previously been tracked, Ctrax will read in the parameters and trajectories, and tracking can be either resumed or restarted from the beginning. A backup copy of the previous tracking results is created in the same directory.

Screenshot of main Ctrax window and zoom window

Screenshot of main Ctrax window (right) and zoom window (left).

Ctrax will then bring up the main Ctrax window, shown at right. The main panel shows a frame of the video. To track a video, perform the following steps:

  1. Alter the tracking settings to match your video, by one of the following two methods:
    1. Run the Tracking Wizard: Ctrax Track->Tracking Wizard...
    2. AND/OR
    3. Calculate the settings individually. More settings are available through this method than through the Tracking Wizard, and such detailed tracking configuration may or may not be necessary.
      1. Compute the background model: Ctrax Settings->Background Model...
      2. Set the background-subtraction parameters: Ctrax Settings->Background Subtraction...
      3. Set the tracking parameters: Ctrax Settings->Tracking Settings...
  2. Begin tracking: Ctrax Track->Start Tracking.
  3. When tracking is complete, resolve the 180-degree orientation ambiguity: Ctrax Track->Choose Orientations....
  4. Write the output trajectories to a .mat file for use with the FixErrors Matlab GUI, the BehavioralMicroarray Matlab Toolbox, or other Matlab code: Ctrax File->Export as MAT-file....

Ctrax Track->Tracking Wizard

Screenshot of Tracking Wizard dialog

Tracking Wizard assists in choosing thresholds.

Screenshot of Tracking Wizard dialog

Initial view of the Tracking Wizard.

The Tracking Wizard [new in version 0.3.0] helps set the most common necessary parameters for tracking. For simple and easy arena configurations, the Tracking Wizard may be sufficient to provide high-quality tracking. Many users will still need to perform detailed parameter-setting as described below, but the Tracking Wizard can provide guided initialization for that process.

The tracking wizard sets the following parameters, in order:

  1. Tracking type: Dark flies on a light background, or light flies on a dark background.
  2. Region of interest: Tracking power should not be wasted on regions of the image that are outside of the arena, which can also confuse the tracker.
  3. Fixing background: If some flies do not move during the movie, they may become part of the background. This can be fixed by interpolating the image across user-defined regions that include stationary flies.
  4. High threshold: "Foreground" (fly) pixels are discriminated from background by their distance from the background model. The high threshold is the minimum required "brightness" (distance from background) required in each foreground component. I.e., the high threshold is the detection threshold.
  5. Screenshot of Tracking Wizard dialog

    Drag to zoom in.

  6. Low threshold: The area surrounding each "bright" pixel is considered to be foreground as long as it is above the low threshold. Therefore, the low threshold determines the edges of each foreground component.
  7. Shape computation: Each connected set of foreground pixels is initially assumed to be a single fly. Connected components that differ greatly in size or aspect ratio from the average fly are merged, split, or discarded. The average and allowed variance in size are learned from a subset of images, or they can be set manually.

Dragging a bounding box on any of the images provides the ability to zoom in on it (double-click to zoom out).

Ctrax Settings->Background Model...

Screenshot of Background Model Settings dialog

Screenshot of the Background Model Settings dialog.

The first step to start tracking is to set up the background model (see Background Subtraction Considerations). First define the parameters of the background model computation, then hit the "Calculate Now" button to compute. Note that this dialog has no effect if the movie loaded in is an SBFMF, as the background model is provided by that movie. The parameters to set are the following:

Ctrax Settings->Background Subtraction...

Screenshot of Background
Subtraction Settings dialog

Screenshot of the Background Subtraction Settings dialog

Background subtraction involves thresholding the difference between the current frame and the mean background image divided by the normalization image. If "Background Type" is "Light flies on dark background", then Ctrax only looks for pixels that are brighter than the background image, with the threshold:

[distance image] =
  ([current image] - [mean background image]) /
  [normalization image]

If "Background Type" is "Dark flies on light background", then Ctrax only looks for pixels that are darker than the background image, so the threshold is:

[distance image] =
 -([current image] - [mean background image]) /
  [normalization image]

If "Background Type" is "Other", then Ctrax looks for any difference from the background, and thresholds the absolute difference:

[distance image] =
  |[current image] - [mean background image]| /
  [normalization image]

The image that is thresholded, the "distance image", can be thought of as the distance between the background model and the current image. This distance image can be seen if "Distance from Background" is selected from the display drop-down menu.

Screenshot of Detect Circular Arena dialog

Screenshot of Detect Circular Arena dialog

Screenshot of Regions of Interest dialog

Screenshot of Regions of Interest dialog

To obtain a classification of each pixel location as foreground or background, Ctrax thresholds the distance image, the normalized difference between the current image and the background mean. It uses a hysteresis approach to thresholding. For a pixel to be foreground, its distance from the background must be above a low threshold ("Low Thresh"), and there must be a path from it to a pixel that is above a higher threshold ("High Thresh") that only goes through pixels above the low threshold. That is, Ctrax finds all pixels that are above the low threshold, then removes all connected components of pixels such that no pixel in the connected component is above the high threshold. The low and high thresholds can be set with the scrollbars on the left. The low threshold cannot be higher than the high threshold. Changing the normalization algorithm will greatly change the range of distances, so the GUI tries to compensate for these changes in magnitude. The classification of pixels into foreground and background can be seen by selecting "Foreground/Background Classification" from the display drop-down menu.

If there are flies that are not being detected, lowering the high threshold can help. If there are objects other than flies being detected, raising the high threshold can help. Lowering the low threshold will result in the area of the detected flies being bigger and raising the low threshold will result in the area of the detected flies being smaller. Setting the low threshold too low will result in noise near a fly being detected as part of the fly. The benefits of a larger area are that Ctrax can better estimate the center position and orientation of the fly. The disadvantages of a larger area are that when flies are close to each other, they will merge into a single connected component, and clustering will need to be used to separate the flies, causing the tracker to run slower. The connected components of foreground pixels can be seen by selecting "Connected Components" from the display drop-down menu. The ellipses fit to each connected component of foreground pixels can be seen by selecting "Ellipse Fits" from the display drop-down menu. Note that if two flies are part of the same connected component, they will only be fit at this step by one ellipse. When tracking is performed, this ellipse may be split into multiple flies, depending on the tracking settings. This is the best display setting for looking for errors in the background-subtraction step, as it displays the raw frame below the annotated ellipses. For all display settings, the frame shown can be controlled with the slider bar below the image panel.

Camera noise and compression artifacts can potentially be compensated for by applying morphological filtering. One can apply Morphological Opening and Morphological Closing. We do not use morphological filtering in our experiments.

If a fly sits still for too long, the background model may assume that this fly is part of the background. Errors in the background modeling can be fixed using the "Fix Background Model" dialog [new in version 0.1.4]. Using this dialog, one can select polygonal regions of the image, and fill these regions by interpolating from the boundaries. The interface is the same as the "Regions of Interest" dialog. The image panel can show either the background model center or deviation estimates.

Ctrax Settings->Tracking Settings...

Screenshot of some of the shape parameter-related displays in the Tracking Settings dialog

Screenshot of the Tracking Settings dialog.

The "Settings->Tracking Settings..." dialog controls the parameters of the observation detection, identity assignment, and hindsight steps. Please see the related sections in the online methods and supplementary note of the article, "High-Throughput Ethomics in Large Groups of Drosophila."

Screenshot of some of the shape parameter-related displays in the Tracking Settings dialog

Screenshot of some of the shape parameter-related displays in the Tracking Settings dialog.

Screenshot of some of the motion parameter-related displays in the Tracking Settings dialog

Screenshot of some of the motion parameter-related displays in the Tracking Settings dialog.

The right side of the dialog shows the current frame annotated with estimates of the positions of the flies at different stages in the algorithm so that the user may attempt to see the effects of many of the parameters. The toolbar above the image allows one to zoom in, zoom out, and get information about the shape of the next-selected fly. The following displays are available.

Tracking Settings: Shape Parameters

Screenshot of the four
Trackings Settings tabs

Screenshot of the four Tracking Settings dialog tabs.

The parameters controlled by the Tracking Settings Shape tab describe the expected sizes of the ellipses fit to each fly. These parameters set the minimum allowed, expected, and maximum allowed area of a fit ellipse, major axis length of a fly, minor axis length of a fly, and eccentricity of a fly. Currently, the eccentricity is not used by the tracking algorithm.

If the area of a connected component is larger than the maximum area, the algorithm clusters the pixel locations in the component into iteratively increasing numbers of ellipse fits (the shape-parameter related displays above show a large connected component that is split into two ellipses). The number of ellipses to split into is chosen so that each ellipse respects the area and major and minor axis length upper bounds, and the area of each ellipse is close to the mean area.

If the area of a connected component is smaller than the minimum area allowed, then Ctrax first tries to enlarge it by decreasing the background-subtraction threshold near the connected component. If this does not result in a sufficiently large connected component, then Ctrax tries to merge it with nearby connected components without changing the foreground/background classification of "too many" pixels. The minimum area should thus be set to first make the expected area of a fly close to the mean of the minimum and maximum bounds on the area and second so that it is approximately the minimum area of a fly. (In a future version of Ctrax, we plan to separate the mean area and minimum and maximum area controls.)

You can use the "Automatically Compute Bounds on Shape" option to estimate these bounds. This will cause the algorithm to sample "Number of Frames" frames from the video, then find the median and median-based approximation of the standard deviation of the area, major and minor axis lengths, and eccentricity of the connected components of foreground pixels in these frames. You can then approximate the bounds as the median plus or minus some number of standard deviations. The results of the automatic computation are shown in the "Manually Set Bounds on Shape" section, and can be adjusted manually after being approximated automatically.

When we are choosing the parameters for a new experimental set-up, we first automatically compute the bounds from 50 frames and set the "Number of standard deviations" to 3. Then, we use the "?" toolbar button to inspect the actual sizes of the ellipses in some frames with the "Unfiltered Observations" display selected, and set the maximum bounds to be the maximum value we observe in our sample. Finally, we set the minimum bound on area so that the mean of the minimum and maximum bounds on area is near the automatically set mean of the minimum and maximum bounds. We then scroll through a bunch of frames with the "Small Observations" and "Large Observations" displays selected, to make sure that there are not many small observations and that the large observations in general correspond to multiple flies. You can also use the "Filtered", "Merged", "Split", and "Threshold-Lowered" displays to observe the effects of these parameters.

Tracking Settings: Motion Parameters

Ctrax assigns identities to each detected observation by matching the detected ellipses to the predicted ellipse positions based on the the previous two frames and the motion model. Its goal is to minimize the distance between the detected and predicted ellipses. This distance is based on both the center position of the ellipse and its orientation. The "Angle Weight" parameter specifies the relative importance of the orientation with respect to the center position. The total error is the squared distance between the predicted and detected center positions plus the angle weight times the squared distance between the predicted and detected orientations (which are all between 0 and 180 degrees). The error in the center position is measured in squared pixels and the error in the orientation is measured in squared radians. Thus, the angle weight should be higher than 1, even if the desired effect is that the orientation be less important than the center position in the matching. In all our experiments, we used weight 100. The relative importance of the center position versus the orientation can be visualized using the "Motion Model Prediction" display. An error in the center position prediction equal to the length of a green bar is equivalent to an error in the orientation of size equal to the blue arc.

The "Max Jump Distance" is the square root of the maximum error allowed between predicted and observed positions. If the orientation error is 0, then this is the maximum distance that a fly is allowed to jump from its predicted position. The "Max Jump" display allows one to visualize this distance, as the circles drawn around each fly are of radius "Max Jump Distance". "Max Jump Split" [new in Ctrax 0.3.1] allows you to prevent large blobs from splitting and jumping in the same frame, whereby they might capture a nearby fly's track. I.e., if an observation is the result of splitting a large connected component, then the maximum distance the fly can jump to this observation is "Max Jump Split", which can be set to something smaller than "Max Jump".

The "Center Dampening" and "Angle Dampening" control the predicted position of the fly given its previous two positions. The algorithm predicts that the center position will be the previous center position + velocity * (1 - "Center Dampening"), and that the orientation will be the previous orientation + angular velocity * (1 - "Angle Dampening"). In our experiments, we set the center dampening coefficient to 0 (pure constant velocity model), and the angle dampening coefficient to 0.5. The effects of these parameters can be seen in the "Motion Model Prediction" display, which shows the predicted positions of the flies based on this dampened constant velocity model.

Tracking Settings: Observation Parameters

The observation parameters affect the processing of connected components of foreground pixels into ellipse fits.

Tracking Settings: Hindsight Parameters

Because the algorithm performs detection independently of matching, errors in the observation-detection step are common. We use the hindsight step to modify trajectories after matching to avoid the deaths and births of trajectories. There are four types of modifications which can be made. The checkboxes in the "Hindsight" tabs indicate whether each of the four types will be attempted. For each of the four types, "Max Sequence Length" indicates the number of frames Ctrax will look backward to fix these potential errors. In all our experiments, we set this to 50 for all types of errors.

Track->Start Tracking

The "Track" menu has various ways to start/restart tracking.

Track->Choose Orientations...

Screenshot of Choose Orientations dialog

Screenshot of "Choose Orientations..." dialog.

The tracking algorithm only computes orientation modulo pi radians -- it does not resolve the head-tail ambiguity. "Choose Orientations..." resolves this ambiguity using the velocity of the flies. It is based on the following two assumptions:

  1. When the fly is walking, it is usually walking forward.
  2. The orientation does not change much from one frame to the next.

"Choose Orientations..." decides whether to add pi radians to a fly's orientation in each frame to minimize the following criterion:

chooseorientations criterion

Here, J1 is the velocity direction constraint, where θt is the orientation at frame t (modulo π radians), φt is the velocity direction at frame t (modulo 2π radians), and st is whether or not to add π to the orientation. J2 is the temporal constraint. vt is the speed in frame t. The weight w(vt) is the weight of the velocity term with respect to the temporal term:

chooseorientations criterion

λ is the "Velocity Weight Constant" and wmax is the "Maximum Velocity Weight". In all our experiments, we set "Velocity Weight Constant" to .05 and "Maximum Velocity Weight" to 0.25.

Analysis Plots

Ctrax includes plotting functionality for several common types of data visualization. These are intended primarily to check the sanity of the tracked parameters; publication-quality figures can be produced more easily in MATLAB (see below). However, Ctrax's figures can be saved as images by right-clicking on the figure and using the "Save as..." option.

To save on memory and processing power, the analysis plots only use the tracked data from the first 500 frames of the video. The axis limits are determined from the data and cannot currently be altered.

Analyze->Plot Trajectories

Shows the raw (x,y) positions of all flies through time, each in its own color. Jagged tracks or data outside the arena area are indicative of tracking errors.

Analyze->Plot Velocities

Shows the time course of the flies' speeds (the 2D Euclidean distance moved per frame). The plot is a standard-deviation envelope of the population's mean speed in each frame (the mean +/- the S.D.).

Analyze->Position Histogram

Shows a "heatmap" 2D histogram of fly (x,y) positions. Asymmetries in where flies spend their time in the arena could possibly indicate non-uniform lighting or temperature in the arena. Fly positions outside the arena again suggest errors which may be eliminated by using a tracking region of interest.

Analyze->Speed Histogram

Shows a histogram of the flies' displacement velocities. A non-smooth histogram might indicate tracking discontinuities.

Analyze->Turning Speed Histogram

Shows a histogram of the flies' turning rates. This should be roughly symmetrical and centered around zero. Frequent large turning rates suggest difficulties with determining fly orientations, possibly including the need to disambiguate the headings.

File->Export as MAT-file...

To analyze the trajectories in Matlab using either the FixErrors GUI or the BehavioralMicroarray Toolbox, one must save the trajectories to a Matlab-native format. This can be done by selecting "File->Export as MAT-file". This will prompt the user for the name of a .mat file. It will save the following variables:

As is, this is not most user-friendly format within Matlab. The load_tracks.m function within the BehavioralMicroarray Toolbox reads in this MAT-file and writes it out in a more usable format.

File->Export as CSV-file...

Ctrax can export the tracking data in a comma-separated-value (CSV) format for processing in many statistical software environments, including Matlab, R, JMP, or a spreadsheet program such as Microsoft Excel.

The CSV values will be in a nframes x 6*nflies rectangular matrix. Each row is a single frame of the movie, and each group of 6 consecutive columns contains data on a single fly. The six values are:

  1. the fly's identity
  2. x position, in pixels
  3. y position
  4. the length of its fit ellipse (i.e., the fly's body length), in pixels
  5. the width of the ellipse
  6. the angle of the ellipse (i.e., the fly's heading), in radians

Values of -1 indicate that no fly with that identity was tracked in that frame. It is common for flies to "disappear" and for "new" flies to appear over the course of a movie, as tracking errors sometimes result in an identity crisis. For cleaner data, export to Matlab first, run and complete FixErrors, then export as CSV at the prompt (or use the save_trxcsv function in Matlab). The Matlab CSV export will give positions and sizes in millimeters rather than pixels, if a conversion is available.

Display Control

The frame shown in the main panel can be controlled with the slider bar below it. The frame number is also shown in the toolbar at the bottom, and the frame shown can also be modified by editing this displayed frame number. The buttons on the toolbar, from left to right, have the following effects:

The "Settings->Playback Options" menu allows you to set the following playback parameters:

Other Commands


Batch Processing

Screenshot of Batch Processing dialog

Screenshot of "Batch Processing" dialog.

Ctrax can be set up to process multiple movies in a row, e.g., overnight. Select File->Batch Processing.

  1. Choose the movies to be processed using the "Add" and "Remove" buttons.
  2. "Load settings file": Set whether you want to load tracking settings from a file before each movie is tracked.
  3. "Save compressed SBFMF files": Set whether you want Ctrax to auto-generate static-background FMF files from the raw videos while tracking (identical to the option in Other Commands above).
  4. "Flip movies vertically" [new in version 0.4.2]: Set whether all the movies in the batch should be tracked upside-down by default (identical to the option in Display Control above).
  5. "Circular Arena": Set how the circular arena or region of interest should be calculated for each movie.
  6. "Shape": Set how the shape parameters (Tracking Settings: Shape Parameters) should be set for each movie.
  7. "Background Model": Set how the background model (image) should be set for each movie.
  8. Hit "Execute" to begin tracking.

The precedence for the tracking settings is somewhat confusing. Ctrax will attempt to calculate/load each setting from the following sources in order until a relevant source is found:

  1. Auto-detect/do not use
  2. Loaded settings file
  3. Existing settings (previous tracking data for that movie)
  4. User settings (the current settings as displayed in the Settings menus)
  5. Default settings

Running from the Command Line

Nearly all of the Ctrax functionality can be accessed from the command line, enabling advanced processing of movie batches. Run Ctrax --help to get a printout of the available options, or see the list below. In Windows, the command would be C:\"Program Files (x86)"\Ctrax0.5\Ctrax.exe --help , or in Mac OS X, /Applications/Ctrax.app/Contents/MacOS/Ctrax --help .

--Interactive={True,False}                     -Whether to show the Ctrax GUI. If the GUI is shown, tracking does not begin automatically. In non-interactive mode, Ctrax will run to completion with no user input.
--Input=<movie.fmf>                            -If unspecified in non-interactive mode, Ctrax literally tries to open movie.fmf .
--Output=<movie.fmf.ann>                       -If the input filename is specified, it is used as the base name of the annotation file, but that can be altered by specifying an output filename.
--CsvFile=<movie.csv>                          -If unspecified, no CSV file is written.
--SettingsFile=<settings.ann>                  -If unspecified, settings are read from the output filename, if it exists.
--AutoEstimateBackground={True,False}          -Whether the background model should be calculated from the loaded settings (True) or the background model saved in the settings (or existing output file) should be used instead (False). True is enforced if no settings file or existing output file are found.
--AutoEstimateShape={True,False}               -If False, shape parameters are read from the settings file, if it exists.
--FirstFrameTrack={0,1,...}                    -The frame at which to begin tracking.
--LastFrameTrack={-1,0,1,...}                  -A value of -1 means to track until the last frame.
--ResumeTracking={True,False}                  -As with the GUI command of the same name, if True and previous tracking data exist in the output file, they will be appended to rather than overwritten. Existing .ann files are backed up in any case.
--CompressMovie=<movie.sbfmf>                  -Whether a SBFMF movie should be created during tracking and what name it should have.
--FlipMovieUD={False,True}                     -Whether to flip the movie vertically.
--EnforceShapeBounds={True,False}              -Whether to enforce the shape and size bounds.

All command-line options are case-insensitive.

Learning a Model and Settings

Some super-specialized batch scripts exist to iteratively learn the best settings for tracking a specified set of movies. These scripts are not general-purpose enough to bother documenting, but look for ExpBGFGModel in the Ctrax repository if you really want to attempt modifying them for your own use. Basically, these scripts run Ctrax repeatedly on a set of movies and attempt to automatically determine the optimal tracking settings, which can then be used to extract fly position data from the movies with a low error rate. Caveat utilitor.

Example Video, Annotation, and MAT- files

For the purposes of testing your installation of Ctrax, we provide some example Static Background Fly Movie Format videos with the corresponding annotation and MAT-files created by Ctrax and FixErrors at Example SBFMF videos, annotation files, and .mat files.

Each of the provided zip files contains the following:

The movies provided are:

To test whether AVI reading is working with your installation of Ctrax, we also provide short AVI clips from the first 100 frames of the SBFMF video in example-sbfmfvideo-ann-mat-5M5F5min-20090518.zip. We provide a zipped, uncompressed video created using Matlab and compressed videos in a variety of codecs created using VirtualDub:

Annotation File Format

Ctrax's annotation files (.ann) are not compressed binary, but rather are ASCII text to be human-readable and easily accessible to third-party software.

The Ctrax Matlab Toolboxes include scripts to parse an annotation file.


The annotation file header generally has a simple name:value format. All of the tracking settings are saved in the header, allowing full re-creation of tracks. These settings are also portable to other sessions by using File->Load Settings.

The actual background images used in tracking are also saved into the annotation file header. These are binary data by necessity, but the number of binary bytes is written prior to each image. Since they are uncompressed 8-bit images, there is one byte per pixel and the total number of bytes = width*height, with the first (width) bytes corresponding to the first row of image data.

Another notable header field containing non-ASCII data is roipolygons, which contains a "pickled" Python list representing the polygons used to generate the background region of interest. Again, the first character is a number representing the number of binary bytes in the "pickled" object.

The only lines guaranteed to be in a .ann file header are Ctrax header at the beginning of the file and end header at the end of the header. None of the specific name:value pairs are guaranteed to be present in the file, nor is their order guaranteed to be consistent.

Ctrax header
version:X.Y.Z                 [the Ctrax version that created this annotation file]
background median:2576768     [or "background mean", etc.]
[2576768 bytes of image data, with no trailing newline character]
end header


Each frame of the video is represented by a single line of data consisting of many flies' positions concatenated together. Each fly is represented by the following string of values:


where %f means a floating-point number, %d is an integer, and \t is a tab character. This sequence of numbers denotes the fly's center.x, center.y, size.width, size.height, angle, and identity. Negative numbers (other than for the angle) suggest a tracking error.


New in Ctrax version 0.5.13 (12 February 2017):

New in Ctrax version 0.5.11 (21 December 2016):

New in Ctrax version 0.5.8 (17 September 2016):

New in Ctrax version 0.5.6 (29 August 2015):

New in Ctrax version 0.5.5 (7 March 2015):

New in Ctrax version 0.5.3 (13 October 2014):

New in Ctrax version 0.5.2 (14 August 2014):

New in Ctrax version 0.5.1 (14 July 2014):

New in Ctrax version 0.5.0 (29 April 2014):

New in Ctrax version 0.4.2 (29 November 2013):

New in Ctrax version 0.4.1 (24 October 2013):

New in Ctrax version 0.4.0 (19 October 2013):

New in Ctrax version 0.3.16 (26 June 2013):

New in Ctrax version 0.3.15 (31 May 2013):

New in Ctrax version 0.3.14 (2 May 2013):

New in Ctrax version 0.3.13 (30 March 2013):

New in Ctrax version 0.3.12 (25 March 2013):

New in Ctrax version 0.3.11 (19 March 2013):

New in Ctrax version 0.3.10 (14 December 2012):

New in Ctrax version 0.3.9 (3 October 2012):

New in Ctrax version 0.3.8 (20 August 2012):

New in Ctrax version 0.3.7 (16 August 2012):

New in Ctrax version 0.3.6 (28 July 2012):

New in Ctrax version 0.3.5 (30 June 2012):

New in Ctrax version 0.3.4 (16 June 2012):

New in Ctrax version 0.3.3 (21 May 2012):

New in Ctrax version 0.3.2 (22 March 2012):

New in Ctrax version 0.3.1 (11 February 2012):

New in Ctrax version 0.3.0 (21 December 2011):

New in Ctrax version 0.2.4 (2 November 2011):

New in Ctrax version 0.2.3 (18 October 2011):

New in Ctrax version 0.2.2 (26 September 2011):

New in Ctrax version 0.2.1 (12 September 2011):

New in Ctrax version 0.2.0 (9 September 2011):