Changes history


  • Fixed several issues with recent version of gcc.


  • Fixed error messages during installation when installing on systems different from Mac OS X.
  • Renamed panel for 4-regular plane graphs with given faces to correctly reflect that the current generator only produces 3-connected graphs.


  • New version of nanocones generator
  • Nanojoin generator by Dieter Mourisse
  • Code clean-up
  • Small technical improvements for the integration with Jmol
  • Technical improvements to PostScript exports
  • Colours in TwoView are now editable through CaGe.ini
  • Removed deprecated methods that broke CaGe when used with recent builds of Java 8


  • New version of ngons.
  • New version of fullgen which fixes a bug in the identification of the symmetry group of the fullerenes.










  • Added new filter for plantri that speeds up generation of 5-regular graphs
  • Improved selection of generator when generating general plane graphs that turn out to be regular.
  • Added new version of fullgen. This version fixes a bug that did not appear in any of the ways fullgen was used in CaGe.



  • Fixed bug which showed two save windows when saving a graph while browsing the output
  • Fixed bug which made CaGe crash when stepping back- and forwards through the wizard while using an external generator


  • Bumped Java up to version 1.7
  • Refactored a lot of the Java code
  • Fixed bug in export to TikZ and SVG when the current locale uses commas as decimal separators
  • Reduced the number of logging messages that CaGe writes by default
  • Removed several compiler warnings and one compilation error with the newest version of gcc on Mac OS X


  • Fixed a bug in nanotube generator that rarely occured for specific parameters under some Linux systems (such as Ubuntu)


  • Fullerenes can now be generated in atlas order.
  • Added buckygen as the main generator for fullerenes.
  • Upgraded plantri to version 4.5.
  • Fixed bug in TwoView that incorrectly scaled rotated images.
  • Added batch export of images as output option for 2D representations.
  • Added smoother scaling of vertices in TwoView.
  • Removed several (possible) compiler warnings.
  • Major refactoring of several parts of the GUI code.


  • Fixed bug that caused the tubetype generator to crash on some computers when the tube body had length 0.


  • Fixed bug in GUI: some users where experiencing a freezing GUI when opening the JmolViewer on a multicore machine. This should now be fixed. More details can be found in this ticket.


  • When in the nanotubes generator the option to glue a tube to the cap was chosen, one row too many was added.This bug has been fixed.
  • The graphs in TwoView can now be rotated. This rotation is also preserved when saving the image.


  • Fixed bug in fullgen. This bug only caused problems in some cases with at least 136 vertices.


  • Performed some general refactoring of the code.
  • Added option to highlight faces of a certain size to PS export.
  • Major refactoring of TwoView.
  • Added export to SVG and TikZ in TwoView.


  • Fixed a small bug in the fullerenes generator. This bug only caused problems in case of more than 296 vertices.
  • Added export to PNG in TwoView.
  • Added option to highlight faces of a certain size in TwoView.
  • Bumped required version of Java up to 1.5.


  • Fixed a small bug in the fullerenes generator and added a file to the source distribution.


  • Fixed bug in handling of threads for background tasks: the termination of the thread was handled incorrectly which made it seem in the GUI that the thread never stopped.


  • Fixed bug in embedders for nanocones and nanotubes: output of graphs with more than 1000 vertices contained errors.
  • Fixed bug in cones generator: memory usage was calculated incorrectly when hexagon layers were added to the cone patches.
  • Fixed bug in cones generator: incorrect outerspirals for cones with two pentagons when hexagon layers were added to the cone patches.


  • Included a new version of the generator for nanocones.
  • Improved heuristic that decides to use CGF or plantri.
  • Limit memory usage of CGF to 1.5Gb. This should be small enough for most modern computers.


  • The tube generator was found to contain an error that was probably present all the time but revealed by a change of compiler. From a certain time on the numbers of structures were different than those published -- and generate by the same program. The generator is now replaced by one not showing this behaviour.
  • Some generators weren't compiled with -O4.


  • We discovered a bug in the tubetype generator when compiled with a recent compiler. Until this issue can be resolved we've disabled this generator.


  • Removed some warnings during installation.


  • Flush the buffer of the outputstream each time a result is saved from the ResultPanel.


  • Fixed a bug in the supplied implementation of tee.
  • Added a dock icon on Mac OS X and window icons on Linux.
  • Added two new embedders written by Simon Buelens: these embedders are specific embedders for nanocones and nanotubes.


  • The categories of CaGe have been reorganized and several generator panels have been reworked.
  • Generators were added for quadrangulations, 4-regular plane graphs, nanocones, hydrocarbons for a given boundary structure and hydrocarbons for a given number of hexagons.
  • CaGe now uses version 11.4.4 of Jmol instead of version 0.6.4.
  • File and pipe are separated options in the output panel.
  • Added separate field for input from file in the external generator panel.
  • The "embed as" section of the external generator panel has been completely reworked.
  • A bug in embed.c was fixed: for graphs with adjacent pairs of vertices of degree two, an incorrect outer face could appear in planar embeddings. In rare circumstances, this would prevent the user from choosing an outer face by mouse click.
  • Updated three generator source files (fullgen.c, tubetypes.c, HCgen.c) to obtain a constant for timekeeping (CLK_TCK) in a more compatible way. This should resolve compilation problems on recent Ubuntu systems. We have also observed problems with opening CaGe Windows on current Ubuntu systems using the Compiz window manager (Compiz 0.6.1), but this seems to be a known problem between Compiz and Java. We can therefore only recommend switching to a different window manager.
  • As foreseen in the last history item (just below this one), here is a "stable" update to CGF.c from the generator's original author, Thomas Harmuth.
  • CGF.c has been found to include diagnostic information in its data stream in some cases, confusing our graph reading routine. A preliminary fix has been made and is included in the download package now. The author of the generator has been contacted to make sure we've done everything right -- there may be an update later.
  • We now hope to have eliminated all compilation warnings from the install process. If you still see warnings, please let us know.
  • Fixed some GUI problems for Mac OS X.
    (We are also working on warnings that might appear on some Linux systems as the generators or native libraries are compiled.)
  • New version: Mac OS X now supported, various other changes to eliminate warnings and make CGF 64-bit compatible.
  • Replaced fullgen with a slightly updated version.
  • Fixed a Java exception reported for certain JVMs.

  • Made the source code available for download.
  • For each generator built into CaGe (through its own option window and a corresponding section in the configuration file, CaGe.ini) you are now asked to include configuration options to say whether the "external generator" option window should include this generator as a template for embedding. Currently we include all the generators in our standard distribution, but the option is now there to change that.

  • TwoView's 2D re-embedding feature can now be disabled by a generator's option window. Disabling is not effective if a generator is used as a template for external data, where 2D re-embedding is always enabled. The two generator windows that currently use this are "hydrocarbons" and "triangulations" (if triangulations of the disks are chosen). Both these generator windows will read a configuration parameter in CaGe.ini, making it possible to switch the re-embedding feature back on.

  • Whereever CaGe shows the standard "Previous" and/or "Next" buttons in one of its windows, you can now use the Alt+Left and Alt+Right key combinations to operate these buttons.

  • The status line shown in the results window shows different kinds of messages, and it was sometimes hard to decide which message should take precedence. This has been organized through a system of priority levels, leading to more deterministic behaviour and cleaner code.
  • If you stop an interactive task by releasing the "flow" button, CaGe used to continue reading the generator's input until the next graph had come in completely. The user had to wait for this indefinite amount of time before it was possible to choose where to advance next (although reviewing was always possible while waiting for a new graph). Now, when stopping, CaGe has access to the latest graph that has finished being read, so the stop is immediate and CaGe completes reading the next graph in the background. If the graph stopped at in this way is new to CaGe, it will be displayed in the usual way; if not, no further action is taken. Another consequence of this change: if you start flowing or advancing and no new graph is coming in soon, you can stop and use the buttons to advance to a different graph than the one you targeted before. Say you pressed "+10" and the graph number doesn't increase for a while. You can then release "flow" and press "+1" to advance to that earlier graph instead. It works the other way round as well (advance by 1 first, then change your mind and advance by 10 before the first graph has arrived), and you can change between flowing and advancing as well.

  • With the Rasmol viewer it was previously impossible to use any menu entries that ask for user input, such as saving the current graph or using Rasmol's Export functions. This has now changed. Whenever you use a menu item that causes Rasmol to ask a question, that question is passed on to the user: a dialog appears, featuring the question and asking for a response. CaGe does this by checking Rasmol's output for a question (a line ending in ":", plus possibly some white space) at a regular interval. The length of the interval is set in CaGe.ini.
  • As a shortcut for viewer selection, you can now shift-click a viewer to select it "exclusively", deselecting all other viewers in the same dimension. Focusing the checkbox and typing Shift-Space works as well.

  • Added a feature and configurability to the way graph numbers are displayed when a task is running. The graph number is updated every n graphs, but also if no such update has taken place after delta milliseconds. Both n and delta can be set in CaGe.ini, separately for foreground and background tasks. See CaGe.ini.
  • When clicking in TwoView causes a graph to be re-embedded, all other viewers as well as the result window are now notified. The "2D" save button is re-enabled (in case it had been pressed before), and other viewers that use 2D coordinates (such as the text viewer) update their display.

  • The file extension suggested for the writegraph format is now changed to ".w?d", not ".s?d" as it was previously. ("?" is the dimension, as the digit "3", "2" or "0" [zero if writegraph format is used for plain adjacency information].)

  • Fixed a bug that could prevent exiting when background tasks are still active but "Exit" is clicked when CaGe shows the background tasks window with the appropriate warning.

  • The following suggestion by an interested user has been implemented:
    > I have a suggestion concerning the PS files written by TwoView.
    > Sometimes it is necessary to adjust the picture manually for
    > publication, especially for larger graphs. To make this easier,
    > the coordinates of each vertex can be written just once.
    > For example, instead of
    > 1.1111 2.2222 3.3333 4.4444 edge
    > 1.1111 2.2222 vertex
    > 3.3333 4.4444 vertex
    > use
    > /v1 { 1.1111 2.2222 } bind def
    > /v2 { 3.3333 4.4444 } bind def
    > v1 v2 edge
    > v1 vertex
    > v2 vertex
    > Now each vertex is easy to move. Of course, when vertex numbers
    > are drawn the name of the vertex (eg "v2") should correspond to the
    > number (eg "2").
    > ALSO, it would be nice if there was a way to configure the colour
    > of the vertex number and the colour used to fill the vertex.
    There are TwoView parameters in
    CaGe.ini to set the three colours used (one for the numbers, two for the blend fill inside the vertex symbols). These are explained in CaGe.ini. TwoView copies them to the front of every single graph it writes to a PS file, so colours can be changed for a single graph by editing the respective setting in the PS file. To change the default colours, edit CaGe.ini. Note that these options apply only to the PS files written by TwoView, not the screen display. The default settings produce PostScript colors matching those in the TwoView window.

  • The new website has gone "official"!
    (after a shady existence in the "preview" subdirectory)

  • Improved the way TwoView reads its parameters out of CaGe.ini, and added some more. All of TwoView's settings are now fully configurable. Details in CaGe.ini.

  • CaGe can now be started from any directory, there is no need to change into the installation directory. CaGe still needs to know where it is installed, but finds out if either the path to the script is explicitly used in the call, or if it is part of the standard search path.
    A related, but independent issue is what directory is used to run generators, embedders and do everything else that can cause files to be created. This is controlled by the
    CaGe.Generators.RunDir configuration setting, and that again can be set to any directory whatsoever, including "." for the directory that the user is in when starting the command.
    CaGe.ini for details.

  • CaGe.ini contains a more sophisticated substitution mechanism than before. In every setting, it is now possible to use other configuration settings, Java system properties or environment variables. The syntax is explained at the top of the file.
    (This actually is the key to CaGe's new capability of being started from any place in the file system.)

  • The recent problems with the embedder have been resolved. (Mentioned on 2001-08-09.) Also, tubes are now intially displayed "sideways", not "facing" the user.
    Some minor bugs with the background tasks window have been noticed and removed.

  • CaGe's exit functions are now prevented from working while background tasks are still active, unless the user chooses to exit anyway.
    (Background tasks are defined to be generation processes that write into files as well as the production of folding nets. The mechanism described here replaces the old "foldnet making" dialog described on 19 June.)
    If the user tries to exit CaGe (via an "Exit" button or the window control buttons) while background tasks are still active, the "background tasks" window is changed to function as a dialog. It draws the user's attention to the still active tasks and offers two buttons to exit anyway or cancel the exit action. The user may then use those buttons, just wait for all background tasks to finish, or click the "stop" and "abort" buttons next to the active tasks to abort them manually. After all background tasks have finished, the background dialog informs the user of the new situation. CaGe will then exit automatically if the user has only waited. If any stop or abort button was clicked, CaGe waits for the user to decide whether to exit or cancel (i.e. return to CaGe).

  • The search path option in CaGe.ini ("Generators.Path") can now use environment variables such as PATH. To use an environment variable, include a string of the form ${name} in the value of Generators.Path. It will be substituted by the environment value of "name". To have a string of this form included "as is", double the leading '$' -- the extra character will be stripped off and everything else left unchanged.
    As a consequence of this format, variable names cannot include the '
    }' character -- if that is a problem, sorry. :-) If no value for "name" exists in the environment, an empty string will be substituted.
    If a path entry (a space-separated component) becomes the empty string as a result of a substitution(*), the word is completely deleted from the path -- there will be no empty-string path members. member of the path.
    (*) This happens if (and only if) the entry consists just of a sequence of "
    ${name}"s and each name is either missing from the environment or present but mapped to the empty string.

  • Graph generation tasks that write into files are no longer handled by a reduced variant of the result window used for interactive (viewer) tasks. Instead, a separate "background tasks" window has been introduced that shows the progress of each such task. It features two buttons for each task, one to show some information about the task (labelled by a number) and another to stop the task.
    There is currently no safeguard to prevent users from exiting CaGe while there still are unfinished background tasks. This will appear soon.

  • CaGe's "stopping behaviour" has changed slightly. Previously, after the Stop button was pressed, the generator pipe producing graphs would be "read out" and the number of graphs thus read displayed in the result window, but the user couldn't do anything with those additional graphs. This feature has been dropped: no more reading takes place after Stop is pressed, making stopping faster and more reliable. (Problems had been observed when no viewer was chosen and the result window was put into "auto-advance" mode, i.e. before the introduction of the background tasks window.)

  • The text viewer now shows a header in a separate area above the actual graph information, and this line does not move out of sight when the user scrolls down. And a bug has been fixed that prevented scrolling to the right and bottom ends of large texts, both in the text viewer and in the dialogs showing other textual information (such as generator diagnostics). A nice small margin of 5 pixels to all four sides also been introduced for all these text displays.

  • One bug is "work in progress": 2D-embedding of hydrocarbons has somehow become worse than before.

  • More than one viewer can now be chosen.
    The output window prevents users from deselecting all viewers for a dimension (2D or 3D). Therefore, if you want to replace the first selected viewer by another one, start by selecting the other viewer, then deselect the first one.
    The text viewer plays a special role: it is one and the same viewer for both dimensions, and turning it off for one dimension also turns it off for the other. This can lead to the following strange situation: Imagine you have both 2D and 3D viewing selected, with just the text viewer for 2D, but more viewers for 3D. Now you turn the text viewer off in 3D. This deselects the text viewer in 2D as well, leaving no 2D viewer selected. Now the output window does not block this deselection, but instead turns 2D viewing off altogether -- another way of ensuring that at least one 2D viewer should be selected if 2D viewing is on.

  • The text viewer only shows those coordinates that have been chosen for view (2D, 3D, or both). Previously the viewer always showed 2D and 3D coordinates, using zeros for coordinates that had not been generated.

  • In the output options window, file/pipe output can now be chosen. If this is done, the result window reduces itself to a simple graph counter.

  • Rasmol has been introduced as a 3D viewer. The "rasmol" command must be in the PATH of the CaGe process, otherwise Rasmol will not appear as a choice in the output window.
    Unless expert mode is set in the
    CaGe.ini file, a warning is generated about two problems we have with Rasmol. The warning only appears once per CaGe session.

  • If any embedding process fails and generates an exception, the resulting dialog now includes the embedder's diagnostic output (any output written to the stderr stream). In case the embedder produces a valid graph and some diagnostic output as well, the graph is displayed, but an exception is also generated to enable inspection of that output.

  • Two changes have been made for CaGe's expert mode, which can be set in the CaGe.ini file.

    Generator windows are now able to record whether the embedder command lines returned to CaGe have changed since the last use of that particular generator window. All current generator windows set this information. In expert mode, this is used to avoid resetting the embedder command lines in the output window if possible, making it easier for experts to edit those embedder command lines, start a trial run, and return to output options to edit the command lines again.
    If you do want to reset an embedder command line to its default value, do one of the following (while looking at the embedder command lines in the output window): 1. go back to the generator window (click "Previous"), change some option that affects the embedder command line and return to output options ("Next"); or 2. (as it will generally be unclear in 1. how a change to the embedder command lines can be caused:) clear the embedder command line that is to be reset, go back to the generator window and then forward to the output window again (clicking "Previous" and then "Next" immediately).

    Setting expert mode also adds a "Previous" button to the results window, so output options of the current generator process are now just one mouse click away from the results window. By clicking "Previous" in the results window, the generation process is stopped (as in "Cancel" which returns to the very first window of CaGe) and the output window redisplayed in the state is was left. No embedder or generator command lines are reset to the state that would be suggested by the generator window. (The "Previous" button is not provided in "non-expert" mode for aesthetic reasons.
  • Graphs selected in the result window can now be saved in all varieties (adjacency information, 2D or 3D embedding as well as folding net). There is a section in CaGe.ini listing the different formats available, each of which must be implemented by a Java class. All filenames entered for saving (be they in the result window or the PostScript filename in the TwoView window) are relative to the "Generators.RunDir" directory (specified in CaGe.ini), and can stand for a pipe to write to rather than a file if they start with "|".

  • All known ways in which a hanging or slow generation process was able to freeze the result window should have been eliminated.

  • The TwoView window no longer freezes while graphs are realigned or reset. It is also possible to see, from the state of the "reset embedding" button, if the embedding is in its initial state or not. (The button is enabled only if the embedding has previously been changed.)

  • The Jmol Applet viewer now remembers its display settings (bond and and atom draw mode [S], bonds display on/off [B], label mode [L]) within one generation process (i.e. while results window is not cancelled). Between different incarnations of the result window, no settings are remembered. The Jmol Applet is now somewhat faster in displaying a (large) graph.

  • New, improved sliders: look better, work better, less filling!

  • The result window now gives hints about the fact that the "view:" can be used for navigation as well (by entering a graph number).
    (The hints are the label - "view/goto" - and a tool tip that is displayed when the mouse comes to rest over the field.)

  • Improved install script -- it is now possible to start a full search for a Java installation (using "find").

  • The hydrocarbons window has lost its sometimes "jumpy" behaviour.

  • Embedding is now done in a separate thread, so windows don't freeze if embedding hangs or takes very long. It is actually possible to inspect old graphs until a newly created graph has finished being embedded.
    (For large graphs, just displaying can mean some waiting, too, and windows still freeze during that process -- but at least we can be quite sure that displaying won't cause CaGe to hang.)

  • The "CaGe.EmbedExpertMode" option in CaGe.ini has been renamed to "ExpertMode" and now allows seeing and editing the generator command as well as the embedder commands.

  • CaGe.ini is now mentioned both by the install script and the web page. The install script now uses chmod to make '' executable.

  • New generator windows for triangulations and polytopes, both making use of plantri (version 4.0).

  • The way bonds (edges) are drawn in the Jmol 3D viewer applet has been significantly improved (but it's by no means perfect yet).

  • It is now possible to restart the generation process after it has finished. The "Stop" button in the result selection window changes to "Restart" at that time (or after the process has been stopped using that very button).

  • CGF now seems fine, so it's reinstated as the only 3-regular generator. CPF is still installed in case we find further problems.

  • Writing results into a file remains unimplemented at this time, but at least the ouput options window now tells you so.

  • Folding nets can now be produced (if 3D viewing is chosen). Production of folding nets takes place asynchronously, there is no need to wait for results. If the users selects to exit CaGe before foldnet making has finished, a dialog appears which informs about the progress of folding net making. To test "slow" folding nets, try generating tubes with parameters (l, m) for l = m = 6 or more.

  • The TwoView window has less controls and is now automatically placed in the upper right corner of the screen (by special request). The CaGe.ini file can contain options to set the default width and brightness of graph edges.

  • CGF can now be used instead of CPF. Because of a problem with CGF when setting limits for some face types, a CPF window is still provided.

Viewing Results  <    > Technical Information