Next Previous Up Contents
Up: Release Notes
Previous: Acknowledgements

C.2 Version History

Releases to date have been as follows:

Version 0.3b (4 June 2003)
First public release
Version 0.4b (8 July 2003)
Version 0.4-1b (10 July 2003)
Version 0.5b (20 October 2003)
Version 0.5-1 (18 November 2003)
Version 1.1-0 (21 April 2004)
Version 1.1-3 (5 May 2004)
Version 1.3 (20 October 2004)
This version has introduced many improvements in scalability, efficiency and functionality. TOPCAT is now quite happy with tables of a million rows or more (and hundreds of columns) even on systems with quite modest memory/CPU resources. The main improvements are as follows:
  • Plotting is much faster and can handle many more points
  • Subsets can be selected from plot window by tracing out a non-rectangular region
  • You have more choice over plotting symbols (including semi-transparent ones)
  • Finally X or Y axes can be flipped!
  • Export to encapsulated PostScript is of improved quality (though for many points file sizes can get large)
  • Export to GIF format is available
  • Regression lines can be plotted and coefficients displayed (experimental capability - could be improved)
Table Formats
  • "-disk" flag allows use of disk backing storage for large tables
  • New 'FITS-plus' format stores rich table/column metadata in a FITS file
  • VOTable handler now fully VOTable 1.1 and 1.0 compatible
  • VOTable parsing now works with Java 5.0 platform
  • Comma-Separated Value format now supported for input and output
  • ASCII input handler rewritten to cope with much larger tables
  • ASCII handler now understands d/D as exponent letter as well as e/E
  • ASCII handler now uses Short/Float not Integer/Double where appropriate to save memory
  • ASCII format fixed bug for -0 degrees/hours in sexagesimal angles
  • Null handling improved for FITS & VOTable formats
  • FITS files store column descriptions in TCOMMx headers
  • Better error messages for unparsable tables
Table Joins
  • Various efficiency improvements and reductions in memory requirements
  • In cases of multiple possible matches, the closest is now chosen rather than picking one at random
  • Pair match now adds column containing score for each match (distance between points)
  • Units can be selected RA/Dec columns and match errors (so it doesn't need to be all in radians)
  • New match types suitable for multivariate matching (anistropic Cartesian, Sky+X, Sky+XY)
Data/Metadata Manipulation
  • Can add/remove table parameters
  • One-step column replacement dialogue from data or column windows
  • Synthetic column expressions now written out to column descriptions
GUI Navigation and Display
  • Improved rendering of numbers in tables (esp. Floats)
  • Better detection of displayed table column widths
  • New Control Window option on File menus
  • Better window resizing for some dialogue boxes
  • Less confusing error messages in many places
Algebraic Expressions
  • All available functions are now fully documented in help document and interactive Method Window
  • Many new trig, coordinate, type conversion, string manipulation functions
  • Big performance improvements for null values
Activation Actions
  • Clicking a point in the plot highlights the corresponding row in the data window and vice versa
  • Row selection can trigger display sky cutout region display
  • Row selection can trigger user-defined actions on activation

In addition, the following incompatibilities and changes have been introduced since the last version:

Version 1.3-1 (10 November 2004)
Minor changes:
Version 1.3-2 (6 Dec 2004)
Bug fix:
Version 1.4 (4 Feb 2005)
Load Dialogues
The graphical table load dialogue has been overhauled, and now has two main new features. First, it has been rewritten so that the GUI does not freeze during a long load; it is still currently not possible to interact with other TOPCAT windows while a load is taking place, but you can now cancel a load that is in progress.

Secondly, the provision of load dialogues has been modularised, and a number of new dialogues provided. The new ones are:

  • Cone Search
  • MySpace Browser
  • Registry Query
  • SIAP Query
If the required classes are present, you can acquire tables from these external sources as well as the traditional methods of loading from disk etc. New command line flags corresponding to each of these have been added to ensure that they are present and make them prominent in the load dialogue. Furthermore it is possible to plug in additional load dialogues at runtime using the startable.load.dialogs system property.

The appearance of the Load Window has changed; now only the File Browser button is visible along with the Location field in the body of the window, but the DataSources menu can be used to display other available table import dialogues.

The program can now be obtained in two standalone forms: topcat-full.jar and topcat-lite.jar. The former is much larger than before (11 Mbyte), since it contains a number of classes to support custom load dialogues such as the MySpace browser and web service interaction, as well as the SoG classes. The latter contains only the classes for the core functionality, and is much smaller (3 Mbyte).
Explode Array Column action
There is now a new button in the Columns Window which replaces an array-valued column with a scalar column for each of its elements.
You can now load a table by pasting its filename or URL as text into the table list in the Control Window (using the X selection on X-windows - not sure if or how this works on other platforms).
Help message
The result of topcat -help is now more comprehensive, describing briefly what each option does and listing system properties as well as arguments/flags proper.
Version 1.4-1 (8 February 2005)
Version 1.5 (17 March 2005)
File Access
Load dialogues have changed again somewhat, and save dialogues as well. The default file browser in both cases is now a Filestore Browser, which is very much like the standard file browser, but can browse files in remote filesystems as well; currently supported are files in AstroGrid's MySpace or on an SRB (Storage Resource Broker) server. You can now save files to these remote locations as well as load from them.

In addition, the save dialogue now displays the current row subset and sort order - this makes it easier to see and/or change the details of the table you're about to save.

A few more minor changes have been made.
  • Error display dialogue boxes have been improved in some places
  • Various bugs relating to JDBC database access have been fixed
  • Some minor issues relating to VOTables with single-character columns have been addressed
Version 1.6 (30 June 2005)
Activation Actions
Some more activation functionality has been added:
  • New View URL as Web Page option introduced in Activation Window
  • New System class of activation functions containing exec functions which execute commands on the local operating system
  • New Browsers class of activation functions for displaying URLs in web browsers (external or basic fallback one)
Algebraic Functions
New Times class added containing functions for converting between Modified Julian Day and ISO 8601 format epochs.
Sky Matching
The default sky matching algorithm now uses HEALPix rather than HTM for assigning sky pixels to RA,Dec positions. This gives much faster sky matches in most cases, and uses somewhat less memory so can be used on larger tables. It has also fixed a bug which missed out some possible matches. HTM-based matching is currently still provided as an option, but this is mainly for debugging purposes and may be withdrawn in the future.
The message logging has been tidied up. The main observable consequence of this is that fewer untidy messages are written to the console when TOPCAT is run from a standalone jar file rather than a full starjava installation. By specifying the new -verbose (or -v) flag one or more times you can get those messages back. The messages (in fact all logging messages at any level) can also be viewed from the GUI by using the new File|Show Log menu option from the Control Window.
SOAP Services
TOPCAT now acts as a SOAP server; SOAP requests can now be made to a running instance of TOPCAT to get it to display tables by location or by sending XML for a VOTable direct. Because of limitations in Axis, this latter method won't work for arbitrarily large tables.
Documentation changes
The tablecopy tool is no longer covered in this document; it is replaced by the tcopy tool in the separate STILTS package. There has also been some reorganisation of this document, mainly in the appendices.
Minor changes
  • Added -version flag
  • Added (dummy) Print option to Data Window. This just presents a message to the effect that you should save to a printable format.
  • Fixed a bug which gave errors when expressions contained a NULL_ test on the first column of a table.
  • Modified one of the demo tables to contain a column with URLs in it.
Version 1.6-1 (7 July 2005)
Version 1.7 (30 September 2005)
There have been major improvements in the flexibility, and minor improvements to performance, of two-table crossmatching.
  • New match algorithm Sky with Errors introduced. This allows you to specify a column giving the maximum permissible match error (so it can vary per row) rather than a fixed value for the whole table.
  • In the case of multiple possible matches between the two tables, instead of automatically giving you only the closest match, you can now select whether you'd like only the closest one or all those which fit your criteria.
  • You can now specify which rows you want to see in the output: 1 and 2, 1 or 2, All from 1, All from 2, 1 not 2, 2 not 1, 1 xor 2. This is pretty much all the possibilities which make sense, and in particular allows you to do 'left outer joins' (1 not 2).
  • The match score column which results from most matches now comes (a) in sensible units where possible (e.g. arcseconds not radians) and (b) with metadata which tells you what its meaning and units are.
  • More information is available in added columns after the match; as well as the match score, information about matched groups is inserted where appropriate.
  • The "Spherical Polar" match algorithm is now rebadged as the hopefully less confusing "Sky 3d".
Similar changes for 1-table and multi-table matches should follow in future versions.
MySpace Access
MySpace I/O has been re-implemented to use the ACR rather than the (now deprecated) CDK classes it was using before. As well as probably being more reliable and less likely to break with future changes in MySpace server protocols, this gives the benefit of single sign on. The effect of this is that you will need to have the AstroGrid desktop running on your machine before you can access MySpace from TOPCAT.
Algebraic functions
  • Added Julian Epoch and Besselian Epoch conversion functions to Times class.
  • Added RANDOM special function.
  • When you select a column in the Columns window, it now scrolls the table in the Data Window so that the selected column is visible. This is a boon when dealing with tables that have very many columns.
  • String "null" interpreted as a blank value in ASCII tables.
  • Added new activation action to launch system default browser.
  • Fixed some relatively harmless bugs to do with actions available when you select the dummy "Index" column. You can now unsort from a popup menu in the table viewer window.
  • Believed to work fine with Java 1.5 now (there were previously some issues with MySpace at Java 1.5).
  • Fixed bug in ASCII input handler which misidentified blank lines, or DOS-format line ends, as end of file.
Version 1.7-1 (4 October 2005)
Version 1.8 (13 October 2005)
Version 2.0 (3 February 2006)
A major upgrade of TOPCAT's visualisation capabilities has taken place in this release. There are considerable improvements in functionality, flexibility and efficiency over previous versions:
New graphics windows
In addition to the 2-d scatter plot from previous versions, the following visualisation windows are now available: The new 3-d functionality does not require you to install Java3D or any other third-party 3D toolkit to work (nor does it take advantage of any such toolkit which may be present).
Multi-dataset/multi-table plotting
The plot windows are no longer associated with a single table. All of them allow you to display data from different tables, or from different tuples of columns of the same table, on the same plot. You can layer as many plots as you like on the same axes, using different plotting styles for the different datasets. As before, you can still display data from different subsets of the same table and same columns using different styles.
Plotting Styles
All the graphics windows allow you to set the plotting style for each data set individually, using a wide range of options including colour, line width, marker size, (histogram) bar style, etc. This allows you considerable control over the visual details of the plots.
Transparent markers
All the 2-d and 3-d scatter plots allow you to render points using markers of variable transparency. In a crowded plot, this allows you to see much more information than using opaque points, since you can get some idea of how many points (of different data sets) have been drawn at a given point on the plotting surface.
Line drawing & linear correlation
The 2-d scatter plot can now optionally plot lines associated with data sets. It can either draw straight line segments joining all the plotted points in a set, or draw per-dataset linear correlation lines. In the latter case it will report line gradient, intercept and correlation coefficient.
Improved column selection
The selector boxes for selecting which columns to plot are now 'editable' - that is, instead of selecting the column from a drop down list it is now also possible to type an expression into them instead. This may be more convenient if there is a very long list of columns. It also means that you can use an algebraic expression based on the names of one or more columns instead of a simple column name. The selectors also have small arrow boxes next to them which makes it easy to cycle through the list of known columns. These features are also available at some other places in the program where a column value is required.
Manual axis configuration
As well as zooming in and out using the mouse, you can now set the axis limits by typing them into an axis dialogue box. You can also set the text which will form the axis annotation on the plot.
Status line
Most plots now feature a panel at the bottom of the window indicating how many points have been plotted and the current position of the mouse pointer (if any) on the plotting surface.
Scatter plots of large datasets now use considerably less memory and around an order of magnitude less CPU time than previously (a 2-d million point replot now takes about 1 second - plotting it the first time may be rather longer since it needs to acquire the data which may be I/O intensive).

Some non graphics-related improvements have also been made as follows:

Version 2.1 (7 April 2006)
A number of graphical and other improvements have been made at this release.
Stacked Line Plot
A new Stacked Line Plot visualisation window has been added. This is especially suitable for use with time series data.
Asynchronous data reading in graphics windows
All the graphics windows now read data for plotting asynchronously. What this means is that when you change the plot in a way which requires the data to be read or re-read then the GUI will not lock up and you can do other things, including changing the plot in other ways before it has completed drawing. A progress bar at the bottom of the window indicates progress. This is only noticeable for large (slow to read) files.
Axis Zooming
The existing Histogram, 2-D Scatter Plot and Density Map windows, as well as the new Stacked Line Plot, now allow you to do a 1-d zoom by dragging the mouse near the axis, as well as the 2-d zoom by dragging on the plot surface.
PLASTIC Tool Interoperability
TOPCAT now sends and services messages using the PLatform for AStronomical Tool InterConnection protocol. See Section 9.
IPAC Data Format
Data files in the IPAC format defined by the CalTech's Infrared Processing and Analysis Center can now be read. This is how data from the Spitzer satellite amongst others is normally provided.
String-typed coordinate columns
If suitably identified (e.g. by UCD or units), string-valued columns which represent data in certain well-known forms, currently sexagesimal angles and ISO-8601-format dates, can now be treated directly as numeric values in column selector boxes such as the ones in the plotting windows, rather than having to define a new column using a string->numeric converter.
Memory Error Reporting
When the JVM runs out of memory, it now attempts to post a popup window explaining this rather than just writing a terse message to the console. This popup also gives you the opportunity to view a new section added to the documentation: Tips for Large Tables.
SOAP Service deprecated
TOPCAT no longer by default runs a SOAP server for accepting tables. You can choose to run it by specifying the -soap flag on the command line. This facility may be withdrawn in future versions, in view of the fact that the PLASTIC service can provide similar functionality.
Logo fade
The Starlink logo at the top of every window is set to fade out gradually over the period 1-APR-2006 to 1-SEP-2006.
Bug fixes and minor alterations
  • Export of GIF and Encapsulated PostScript images from the graphics windows has been improved - unwanted grey backgrounds round the edges are now rendered transparent in GIFs and white in EPS. A section on Exporting Graphics has also been added to the manual.
  • A number of graphical anomalies such as the plot bounds being reset when an axis Flip button was toggled have been ironed out.
  • The JDBC behaviour has been improved: some bugs have been fixed and it now no longer asks for an SQL username/password twice.
  • Work around intermittent bug when loading small files from MySpace.
  • Density maps are now exported into FITS format with better WCS headers where appropriate.
  • The SDSS JPEG cutout activation action URL has been updated from DR2 to DR4.
  • A bug which caused the first row in a table to be included erroneously in graphical subset selections has been fixed.
  • Added an offset selector toggle button to the Histogram window.
Version 2.1-1 (13 April 2006)
Sphere Zoom
You can now zoom in the Spherical Plot.
There are some improvements to the PLASTIC functionality and documentation.
  • In addition to Broadcast actions for the various PLASTIC messages transmission types, there are now corresponding Send actions which allow you to direct the message to only a single selected listener application. These actions are now enabled/disabled according to whether any suitable PLASTIC listeners are registered.
  • You can now pop up a little window from the Control Window's Interop menu which displays the currently registered PLASTIC listeners. The functionality of this window may be extended in future releases.
  • When TOPCAT receives a showObjects message, it now checks if a matching subset exists rather than always creating and adding a new one. If it does, it just sets current the existing one. This can cut down (a bit) on proliferation of Row Subsets.
  • The PLASTIC section of the manual has been improved.
  • Some of the screenshots have been updated to include PLASTIC-related features.
  • URLs using the file: scheme sent by TOPCAT in PLASTIC messages now correctly conform to RFC 1738.
A workaround has been introduced for MySpace browsing performance problems. Run with -Dmyspace.cache=true to speed it up at the expense of accuracy.
Version 2.1-2 (21 April 2006)
This is mainly a bug fix release.
Version 2.1-3 (11 May 2006)
Bug fixes and some minor enhancements.
Version 2.2 (7 July 2006)
Column-oriented storage
New features for permitting column-oriented storage (colfits format, policy "sideways") have been introduced. These can provide considerable efficiency improvements for certain tasks when working with very large (and especially wide) tables.
Bug fixes
  • Fixed bug which caused some points to be missed out in spherical plots.
  • ISO-8601 strings now permit times of 24:00:00 as they should.
  • Quoted unit values are examined to determine probable column data types.
Other items
  • Added flux conversion functions (Jansky<->magnitude).
Version 2.2-1 (3 August 2006)
Version 2.3 (5 October 2006)
Various modifications and improvements: Bug fixes:
Version 2.3-1 (Starlink Hokulei release)

Graphics upgrades

Version 3.0 (5 July 2007)
This release includes major visualisation improvements and some changes to the plotting user interface:
Error bars
Comprehensive plotting of symmetric and asymmetric error bars (and crosshairs, and boxes, and ellipses, ...) in 1, 2 and 3 dimensional plots is now provided -- see Appendix A.5.1.3.
Auxiliary (colour) axes
It is now possible to modify the colour of plotted points according to values in one or more axes additional to the spatial ones -- see Appendix A.5.1.5.
Histogram Weighting
The Histogram and Density Map windows now have the option of weighting the quantity represented, so that the binned values are sums rather than just counts.
Density Map Colour Scale
When the density map is in indexed (non-RGB) mode you can now select from various colour maps to represent bin occupancy. This makes level differences easier to see.
Plot window rearrangement
Buttons which affect data selection are now arranged in their own toolbar below the plot (Appendix A.5.1.1). The size of the plot control area can be manually resized to give more room for the plot itself by using the Split Window () button, which is useful on small screens.
Expression language enhancements
Table parameters can now be referenced in expressions using param$ notation (Section 7.3), and both columns and parameters can be referenced by UCD using ucd$ notation (Section 7.1).
Statistics & Histogram result re-use
The Statistics and Histogram windows now both provide Save and Import actions, which take the data presented in the window and allow it to be saved to a file or imported directly into TOPCAT as a new table.
Cartesian 3D zoom
It is now possible to zoom the 3D Plot towards the centre in the same way as the Spherical Plot.
GAVO Millennium simulation database load dialogue
You can now directly query the GAVO Millennium database service (Appendix A.6.10). Thanks to Gerard Lemson of GAVO for contributing code for this.
Row subset improvements
Row Subset names can now be re-used, and when you are asked to select a new subset name you are allowed to choose one from the list of existing ones. When a row selection is received from another application via PLASTIC the subset name (the name of the sending application) is re-used in this way. This helps to keep the number of subsets under control.

Receving a row subset from PLASTIC in this way, and certain other actions, now cause the subset to be shown straight away (and updated if necessary) on any existing plots, which makes this kind of PLASTIC interaction more responsive.

The size of each subset, and also the corresponding percentage of the table it represents, is now calculated automatically and displayed in the Subset Window. The old behaviour of only calculating sizes on request can be reinstated using the Autocount rows () menu item if required.

Fix Vertical in 3D plots
A Stay Upright () button is provided in the Cartesian and spherical 3D plots which allow you to keep the Z axis/north pole vertical during rotations.
Quantile calculation
The Statistics Window can now calculate quantiles (median, quartiles, .001, .01, .99 and .999) on request.
Minor changes and bugfixes
  • JPEG and PNG now plot export available from all graphics windows.
  • Dramatic performance improvement for transparent pixel plotting in 3D plots on some platforms.
  • Added locale-specific formatDecimalLocal() functions in class Formats.
  • Added fluxToLuminosity and luminosityToFlux functions in class Fluxes.
  • Improved deduplication of column names when joining tables.
  • 3D plots now correctly report number of visible points.
  • Improved error message for broken CSV files.
  • Improved error reporting in the presence of a deficient JVM (such as GNU gcj).
  • Worked around a Mac OSX Java bug which caused table display to go funny when columns were deleted.
  • Fixed error in output of FITS table TNULLn header cards - write them as numeric not string values.
  • Fixed a number of bugs in responding to PLASTIC messages (threading, failure to respond).
  • 3D plots now plot symbols for all subsets not just one, as for 2D plots.
  • Fixed bug which prevented non-string parameter values from being reassigned.
Version 3.0-1 (Starlink Puana release)
Version 3.1 (29 August 2007)
Version 3.2 (28 January 2008)
Functionality enhancements
  • Considerably improved display of per-table metadata in the Parameter Window. It is now possible to view long or multi-line parameter values.
  • FITS header cards in table HDU are now read (but not written) as table parameters.
  • Add mouse wheel zoom for 3D plots.
  • Add Write Mode selector to SQL Output Dialogue, to allow appending and optional drop prior to create of new table in database.
  • Now TOPCAT will automatically register with a PLASTIC hub any time one becomes available - the hub does not have to be running when TOPCAT starts. As a corrollary, if you start an internal or external hub from the Interop menu, you no longer need to explicitly invoke the Register item afterwards.
  • Add -exthub flag which starts a new external PLASTIC hub.
  • Activation window permits selection of different image viewers for View URL as Image option. Note this is not currently provided for the Display Cutout Image option - this may be addressed in the future.
Bugfixes and minor improvements
  • Added -stilts convenience flag so you can easily run STILTS from a TOPCAT installation.
  • Fix calculation error in fluxToLuminosity function.
  • Fix some bugs associated with text label plotting.
  • Error bars for zero/negative values are now correctly extended to the axis (rather than being omitted) in 2D plots with logarithmic axes.
  • Modified the size of some windows - now posts somewhat smaller windows if a small screen is in use.
  • System properties specified explicitly on command line now take precendence over those in file.
  • Embedded spaces in output ASCII format table column names are now substituted with underscores, which prevents writing ASCII tables that cannot be read.
  • Downgraded from WARNING to INFO log messages about the (extremely common) VOTable syntax error of omitting a FIELD/PARAM element's datatype attribute.
  • Starting an external hub now works more reliably.
Version 3.3 (19 August 2008)
Functionality enhancements:
  • Added normalisation option () to Histogram Window.
  • In overplots using different tables, an attempt is now made to use the same columns/expressions for axis values as for the main table. This may be convenient when overplotting data from several similar tables.
  • FITS files with columns using variable-length arrays ('P' or 'Q' data type descriptors) can now be read (in random access mode, i.e. from an uncompressed FITS file on disk, only).
  • The lut.files system property can now be used to configure custom colour maps for auxiliary axes and density maps - see Section 10.2.3.
  • New class Arrays added to algebraic functions.
  • Histogram Offset control now works for logarithmic X scale as well as linear.
Bug fixes and other changes:
  • Efficiency improvements (~25%? in both CPU time and memory usage) for HEALPix-based sky crossmatching. Thanks to Nikolay Kouropatkine at Fermilab for a new version of the PixTools library which provided this improvement (this version also fixed a - minor? - HEALPix bug).
  • Sexagesimal field identification for ASCII input files has become more forgiving; it now accepts minutes or seconds equal to 60 without a syntax error.
  • Fixed a pair matching performance bug (slower if tables were not given in the right order) introduced at v1.4.
  • The -disk flag is now honoured when loading tables from JDBC, which makes it possible to input larger datasets from RDBMS.
  • Fixed problem which caused the graphics system to hang or fail when drawing Dot-to-dot lines in 2D plot for points a very long way off the screen.
  • Fixed bug which caused incorrect plotting of cumulative histograms with small weights.
  • Slight modification to spike-style bar drawing in Histogram, now has tidier appearance when using dashed lines.
There has been extensive internal reorgamisation of the plotting classes. There should be no user-visible effects of this, but please report anything which seems to be misbehaving.
Version 3.4 (23 December 2008)
TOPCAT now uses SAMP as a (preferred) alternative to PLASTIC for inter-tool interoperability. SAMP is now usually the default; the old behaviour can be recovered using the -plastic command-line flag. Although much of the messaging behaviour remains the same, various improvements to the GUI accompany this change:
  • New SAMP Panel at the bottom of the Control Window summarising status
  • New SAMP Status () toolbar button in Control Window, which pops up new SAMP Window
  • Other slight rerrangements of toolbar buttons and menu items in Control Window
  • Broadcast Row checkbox added near Activation Action in Control Window
For more discussion see Section 9.
Registry Access
TOPCAT's registry access has finally been updated to use VOResource 1.03 and the Registry Interface 1.01 (it was previously using very out of date protocols). This means that the Cone Search dialogue (as well as the semi-supported SIAP and Registry dialogues) will now pick up a much more up to date set of services. Additionally, you can choose your own registry service, and the registry searches in those dialogues now feature keyword searches rather than picking up all known cone/SIAP services. See Appendix A.9.2.
Other enhancements
  • Table columns and parameters can now be referenced by Utype using utype$ syntax in a similar way to using UCDs - see Section 7.1.
  • When a new subset is created by whatever method, the user can now elect to transmit it to other applications using SAMP/PLASTIC as an alternative to adding a new subset to the table's subset list.
  • Add items to Help menu for viewing help in the default web browser rather than TOPCAT's help browser.
  • Add a plot output format option to write gzipped PostScript.
  • -version command line flag now reports subversion revision as well as symbolic version number.
  • Fixed histogram bug (blank plot) for small values when using logarithmic Y axis.
  • Fix stacktrace error in 3D plots when no data is available.
  • The SIMBAD name resolver is fixed in the cone search window (it was using a no-longer-supported service format).
Version 3.4-1 (27 March 2009)
Version 3.4-2 (17 July 2009)
Version 3.4-3 (31 July 2009)
Version 3.5 (6 November 2009)
There are several improvements in this version, many of them to do with improved functionality and usability for loading or acquiring data both from local files and from various Virtual Observatory services.

Multiple-table load
TOPCAT will now load multiple tables from a single file if multiple tables are present, rather than just the first one. This applies to multi-extension FITS files which contain more than one table HDU, and to VOTable documents which contain more than one TABLE element. It affects the Filestore dialogue, naming files on the command line, and the new VizieR load dialogue.

In previous versions, when you selected a multi-extension FITS file or VOTable from one of the load dialogues or on the command line, only the first table contained in it would be loaded, and any others were silently ignored. Such files often only contain a single table, but not always. Now, if multiple tables are present in the container file, each one will appear as a new table in the tables list. Other table file formats are not currently affected, since there is no mechanism for storing multiple tables in, say, a CSV file.

Multiple Cone, SIA and SSA searches
In previous versions, it was possible to use the Virtual Observatory Cone Search, Simple Image Access and Simple Spectral Access services to locate catalogue records, images and spectra respectively in a single (cone-shaped) region of the sky, with position and radius entered manually. In this version it is possible to execute such a query for each row of an input table, with position and radius obtained from table data in appropriate columns. This effectively gives a join between a local table and a remote one exposed by a cone-like searchable VO interface.
VizieR load dialogue
A new VizieR load dialogue has been introduced to make queries directly to CDS's VizieR service. Thanks to Thomas Boch for contributing code for this.
VO menu
A new menu labelled VO (for Virtual Observatory) has been added to the Control Window. This currently contains single and multiple Cone, SIA and SSA queries and the service specific load dialogues, namely the VizieR and Millennium ones. All these features are also available elsewhere in the GUI, but the new menu groups together VO-related functionality for convenience.
Positional search dialogue enhancements
A number of improvements have been made to the Cone Search, SIA and SSA dialogues; these applies both to the old single-region search dialogues and the new multi-region searches.
  • The service URL can now be entered (e.g. cut'n'pasted) directly as an alternative to obtaining it from a registry search. This allows use of unregistered services, as well as making it easy to select the service URL for pasting elsewhere.
  • The resource table returned from the registry search can now be sorted by column contents, by clicking on the selected column header.
  • While searching the registry, some indication of the number of services found so far is displayed.
  • Searching the registry is less likely to result in an out of memory error.
  • The (not very useful, and potentially confusing) registry Update button has been withdrawn; its function is now available only from the Registry menu instead.
  • The metadata contained in tables returned from a successful search is improved.
  • The SIA and SSA dialogues now have a selector for choosing the desired image/spectrum format.
  • The SIA and SSA dialogues now longer require explicit entry of a size parameter (these protocols define default behaviour for when no non-zero size has been specified).
  • The SIA and SSA now automatically query the registry for all appropriate services when first displayed. This is sensible behaviour at the moment, since there is at time of writing a reasonable number of them. A directed search may be given instead at the user's option.
  • The Cone Search window provides better instructions on use when first displayed.

A new section Section 6 has been added to the manual providing an introduction to the concepts of VO data access, and a new apendix section Appendix A.9 describes the various single- and multiple-query windows.

Storage Policy change
The way that TOPCAT stores large tables has changed. In previous versions, table data was held in memory (the default Storage Policy was "memory")) unless the -disk flag was specified (to use the "disk" storage policy), in which case it was stored in temporary disk files. If you didn't put -disk on the command line, it was common to run out of memory when working with large tables.

Now, the default storage policy is "adaptive". This means that relatively small tables are held in memory, and larger ones are stored in temporary files. The effect should be that most of the time, you don't need to specify any special options, and you can work with small or large tables without running out of memory. Using -disk is still permissible, and may help in unusual circumstances. Running out of memory is still a possibility, but should be much less common.

The old behaviour can be restored by using the new -memory command-line flag.

The only differences you notice from this change should be good ones, however it is slightly experimental. Please contact the author if you suspect it has introduced any problems.

SAMP-related enhancements
  • Spectrum Display activation action now uses SAMP or PLASTIC to display in a suitably compliant external spectrum viewer. The old behaviour was to display the spectrum in an internal SPLAT window, but it didn't work very well.
  • The JSAMP library has been upgraded to v1.0, giving some SAMP behaviour changes, enhancements and bugfixes. Control of things like TOPCAT server port and server endpoint hostname are now configurable using jsamp.* system properties.
  • The -jsamp command-line flag has been added for convenience so that the TOPCAT jar file can be used easily as a JSAMP toolkit.
VOTable-related enhancements
  • Namespacing of VOTable documents made more intelligent, and configurable using the votable.namespacing system property.
  • VOTable 1.2 supported.
  • The VOTable 1.2 xtype attribute is now used to try to identify columns containing ISO-8601 format dates, which allows them to be treated as numeric values for plotting etc.
  • As described above, when loading a VOTable document which contains multiple TABLE elements, all the contained TABLEs are now separately loaded into TOPCAT rather than just the first one, which is what used to happen.
Loading changes
  • The Load Window now has toolbar buttons as well as items in the DataSources menu for more convenient access to the various load dialogues.
  • The command-line flags corresponding to load dialogues (-tree, -file, -sql, -cone, -gavo, -registry, -sia, -ssa) have been withdrawn from use; they were probably not widely used, and are of minimal usefulness with the new load window toolbar buttons.
  • While a table is loading an entry is now visible in the Control Window table list. Previously it was not always clear whether a slow load was in progress or not.
Bugfixes and minor enhancements
  • There are improvements (and possibly new problems) in the loading dialogue framework. One item is that a failed load less often closes the dialogue.
  • HTML table output is now HTML 4.01 by default (includes THEAD and TBODY tags).
  • There is a workaround for illegally truncated type declarations in IPAC tables.
  • XML, including VOTable, output is handled more carefully; fix VOTable output encoding to be UTF-8, and ensure no illegal XML characters are written.
  • Fixed plotting bugs - caused intermittent GUI corruption (e.g. missing toolbar buttons), especially on MacOS.
  • Bug fixed in crossmatching output: entries which should have been null were sometimes written as non-null (typically large negative numbers) in FITS and in non-TABLEDATA VOTable output. This affected cells in otherwise non-nullable columns where the entire row was absent. The previous behaviour is not likely to have been mistaken for genuine results.
  • parse* string->numeric conversion functions now cope with leading or trailing whitespace.
  • The list of example queries in the GAVO load dialogue has been extended to match those in its web interface.
  • Fixed an obscure bug which could under rare circumstances cause truncation of strings with leading/trailing whitespace read from text-format files.

Version 3.5-1 (21 December 2009)
This version has one significant new feature: Other than that, is is mostly performance and usability enhancements and bugfixes:
Version 3.5-2 (24 March 2010)
Version 3.6 (6 August 2010)
This version contains some new features and usability enhancements, and a number of bugfixes.
Load/Save Dialogue improvements:
  • There is a new System Browser option when loading and saving. This does essentially same job as the old Filestore Browser (still available), selecting a file to load or save, but it uses the system-default GUI to do it. For Mac and Windows users, this may present a more familiar and functional interface to the file system (for Linux users, it is probably not an improvement). Both options are available, so you can choose whichever you prefer.
  • You can now save multiple tables at once. The Save Window now offers three ways of saving: Current Table, Multiple Tables and Session. Current Table saves the current Apparent Table as before. Multiple Table saves some or all of the loaded Apparent Tables to a container file (typically Multi-Extension FITS or multi-TABLE VOTable). Session saves some or all tables as well, but additionally saves many aspects of the TOPCAT state, such as table subsets, sort order, hidden columns etc.
Other significant enhancements:
  • Finally - you can delete and rename row subsets in the Subset Window! Apologies to those who've been asking that this has taken so long to implement.
  • There are new actions in the Control Window File menu to change the order of loaded tables in the table list (move them up and down). You can use ALT-up/down keys to do the same thing. This may be useful in conjunction with the new session/multi-table save facility.
  • Utype metadata items are now visible in the Parameter and Column windows.
  • The JSAMP library has been upgraded to version 1.1. This means that the hub will appear in the "System Tray" where possible (when using java 1.6+, and when using a suitable display manager). It also recognises the SAMP_HUB environment variable for non-standard hub locations.
  • There are a couple of improvements in the VizieR load dialogue: it has options to display sub-tables within catalogues and to include or exclude obsolete catalogues.
Minor enhancements:
  • The current table can now be discarded by hitting the Delete key in the Control Window table list.
  • SDSS image cutout downloads updated to DR7 (was DR4).
  • The unofficial column type "long" is recognised in IPAC format tables.
  • An efficiency warning is now issued for large compressed FITS files.
  • Format row counts are displayed with group separators (e.g. thousands separated by commas) in some places for better readability.
Fixes for bugs and misfeatures:
  • Table parameter values in algebraic expressions now evaluate to their current value, rather than the value when the expression was entered.
  • Tables in TOPCAT now have private copies of column and table metadata. This means that changing a column name or parameter in one table will not affect other tables. It should also prevent a related bug that allowed the column headings in the table browser to get out of step with those in the columns window and elsewhere.
  • Receipt of a SAMP table.highlight.row message will no longer cause a similar message to be sent back (and similarly for the PLASTIC ivo:// message). The previous behaviour was an unwanted implementation side effect which could sometimes cause problems in interaction with other tools.
  • Fixed bug in FITS-plus metadata output (table parameters were getting lost).
  • Better behaviour (warn + failover) when attempting to read large files on 32-bit OS or JVM.
  • Corrected literature references in Fluxes conversion class documentation (thanks to Mattia Vaccari).
  • Fix memory usage issues (unnecessarily large output graphics files, possible out of memory errors) for density plots with large pixel sizes.
  • Fixed bug in CSV file parsing that could ignore header row in absence of non-numeric columns.
  • Fix some minor bugs with Cancel operation during table save.
  • Reinstate help buttons from Save Window toolbar (erroneously removed since version 2.0).
  • Make sure that failed load of table with no rows reports as such rather than failing silently.
  • Loading tables by typing their name directly in the Load Window now loads multiple tables if present not just the first one, in common with most of the other load dialogue types.
  • Upgraded PixTools HEALPix library to 2010/02/09 version. This fixes a bug that could theoretically cause deficient crossmatch results, though I haven't managed to produce such errors.
  • Fixed (I hope) "Table no longer loaded" error when sending tables via SAMP.

Finally, from this release TOPCAT requires version 1.5 (a.k.a. 5.0) of the Java J2SE Runtime Environment; it will no longer run on version 1.4, which is now very old. I don't expect this to cause compatibility issues for anyone, but I'm interested to hear if that's not the case.

Version 3.7 (23 December 2010)
This version contains some significant enhancements and a number of minor improvements and bugfixes.
Load Dialogues:
Table loading has had a major overhaul. Load dialogues are no longer modal, that is you can now interact with the rest of the application while they are open. This has a number of benefits:
  • A slow load doesn't prevent you from doing other things.
  • You can be loading several different tables at once, either from the same or from different places.
  • You can use the Help system while a load dialogue is open (load dialogues now have the usual Help button like other TOPCAT windows).

It has also enabled some related changes:

  • Progress is reported for each table load - you can see how many rows have loaded and, if known, how many there are in total
  • Cancelling a load in progress is more straightforward and works more reliably than in earlier versions

A few related bugs and idiosyncracies have been corrected at the same time.

Registry Queries:
The registry search interface used in single and multiple VO access windows has been improved:
  • When specifying a keyword search for Cone, SIA or SSA services, you can select which registry record fields to match (ShortName, ID, Title, Publisher, Subjects etc). This makes it much easier to get the records you're interested in.
  • The Subjects field is now displayed for retrieved records.
  • Lists of registry records (i.e. Cone, SIA or SSA services) can now be sent to/received from other tools via SAMP (voresource.loadlist{,.cone,.siap,.ssap} MTypes).
  • Sky coordinates can be received from other tools via SAMP and used to set Cone, SIA or SSA position ( MType).
BaSTI Load Dialogue:
A new load dialogue is available for accessing the INAF-OATS BaSTI (Bag of Stellar Tracks and Isochrones) service -- code contributed by Marco Molinaro.
Searchable Help:
The Help browser now has a Search tab as well as the Table of Contents tab, so you can do text searching on the extensive help document.
Minor Enhancements:
  • Storage management improvements; removed restriction on large (>2Gb) non-FITS datasets in some circumstances.
  • Fix so FITS tables >2Gb can be used in 32-bit mode (though slower than 64-bit).
  • All windows have a new Scrollable option in their File menu. It is not generally recommended to use this option, since in general the windows are arranged so that resizing them will resize sensible parts of them, but it may be useful if using some of the larger windows on an unusually small screen.
  • FITS files now store table names in EXTNAME (and possibly EXTVAR) header cards.
  • Window placement should now behave a bit more like platform norms, rather than sitting in the top left corner.
  • When a table is discarded, it is now deselected from any table selector (for instance in a plot, match or concatenation window).
  • HTML table output now writes cell contents which look like URLs in HTML <A> tags.
  • Basic authorization (http://user:pass@host/path) on table URLs handled.
  • Logs current version and whether it is up to date with latest release on startup. This behaviour can be controlled by the [-no]checkversion flag.
  • Belatedly added STFC logo to About window.
  • Add recommendation to use 64-bit java in large table tips section.
Bug Fixes:
  • Fix bug in registry result table which displayed resource identifier instead of publisher in the Publisher column.
  • Fix SAMP table load bug which tripped over "+" characters in URLs.
  • Fix regression bug from v3.6 - loading jdbc tables from command line or text entry now works again.
  • Fixed file pointer int overflow bug in FITS MultiMappedFiles.
  • Fixed a couple of bugs relating to VOTable strict mode.
  • Possibly fixed a not-well-characterised bug in registry search.
Version 3.8 (9 May 2011)
A new TAP load dialogue supporting data retrieval using the Table Access Protocol (TAP) has been introduced. This provides SQL-like free-form access to any remote databases exposed with the TAP protocol.
SAMP changes
An internal SAMP hub is now by default started when TOPCAT starts up if no existing hub is apparently running, so under normal circumstances the SAMP panel at the bottom right of the Control Window should be active all the time. This means that you don't need to do any explicit preparation to communicate with other SAMP-aware applications. If you want to return to the previous behaviour (hub only started by explicit user action), use the -nohub flag on the command line. You can connect and disconnect with the hub by clicking the connection logo at the right of the SAMP panel.

The JSAMP library is upgraded to JSAMP v1.2, which fixes one or two bugs and supports the experimental Web Profile, though Web Profile support is not switched on by default.

Other enhancements
  • Random Groups HDUs are now tolerated, though not interpreted, within FITS files.
  • Add quintuple match option to multi-table match window (someone requested it!).
  • You can now re-activate a row in the table viewer window by deselecting and then re-selecting it.
  • Expressions in column selectors are now left (and coloured grey) rather than deleted in the case of a syntax error.
  • Improve text rendering in Available Functions window.
  • GAVO load dialogue now uses fixed-width font for SQL entry.
  • Registry search now includes Publisher field by default.
Bug fixes and workarounds
  • JDBC table input handler now effectively downcasts BigInteger/BigDecimal types to Long/Double. The PostgreSQL JDBC driver seems to use the Big* types routinely for numeric values (which I don't think it used to do).
  • Add workaround for J2SE bug #4795134, which could cause errors when reading compressed FITS files.
  • Fix FITS character handling bug which could cause corrupted FITS files on output in presence of non-ASCII characters.
  • Fix (some) JDBC connection leaks.
  • Attempt case-sensitive matching before case-insensitive for column names.
Version 3.9 (27 October 2011)
  • Additional asymmetric match options have been added to the Pair Match window - as well as the old symmetric Best Match option, you can now choose to do a match which identifies the best match for each row of one or the other input table (see Output Rows Selector Box). They correspond to finding the best match in table B for each row in table A, and in crowded fields often provide more intuitive semantics than the previous symmetric best option (in non-crowded fields there is generally no difference). This replicates the matching performed by some other tools, including Aladin.
  • New Match Algorithms, 2-d Cartesian Ellipses and Sky Ellipses, have been introduced to permit matching of general elliptical, rather than just circular, regions in both planar and sky coordinates. Another, N-d Cartesian with Errors, has been added for dealing with per-object errors in Cartesian coordinates (previously per-object errors could only be handled in sky coords).
  • Fixed a significant bug in sky crossmatching. If all points in a table were on one side of the RA=0 line, but the error radius extended across that line, matches on the other side could be missed. Matches could also be missed if different tables used different conventional ranges for RA (e.g. -180..180 in one case and 0..360 in another). This fix may in some, but not most, cases result in slower matching than previously.
  • Semantics of the Sky With Errors match algorithm have changed slightly.
Notable usability improvements:
  • You can now change the column order of a table by dragging the rows up and down in the Columns Window.
  • Algebraic functions involving angles are now mostly available using degrees as well as radians. The Coords class has been replaced by CoordsDegrees and CoordsRadians classes providing sky coordinate functions, and a new class TrigDegrees provides normal degree-based trigonometric functions alongside the radian-based versions in Maths. The functions in the various activation action classes now take degrees and not radians. Some of the old function names have changed to make clear that they use radians and not degrees.
  • The File|Discard Table action in the Control Window can now remove multiple tables at once if more than one is selected.
  • ADQL parsing and syntax highligting has been added to the TAP load dialogue, thanks to Grégory Mantelet's ADQL library.
  • TAP queries are now synchronous by default (the Synchronous checkbox is now checked by default).
  • The SQL Query Dialogue (finally) has a multi-line entry field for SQL query text.
  • Add To Browser button to Help Window - this displays the currently displayed help page in your normal web browser.
  • New convenience button added to Available Functions window which is a shortcut to display of the expression syntax in the Help browser.
Other upgrades and enhancements:
  • JSAMP has been upgraded to version 1.3-1. The main change is that the Web Profile is now enabled by default in the SAMP hub that TOPCAT launches. There are also more options in the Hub menus, and it will overwrite any moribund .samp file at startup, which should eliminate annoying persistent "404 No handler for URL" warnings.
  • Add Delete On Exit checkbox to Running Jobs tab of TAP load dialogue. Jobs are now created by default with Delete On Exit set true (you can change the default with the Deletion menu).
  • You can now run JyStilts from the topcat-*.jar jar files in the same way as from stilts.jar.
  • Add experimental system properties star.basicauth.user and star.basicauth.password.
  • Added the experimental topcat.exttools system property to allow custom tools to be added to the main toolbar at runtime.
  • Improve resilience of multi-cone operation in the presence of unreliable or inconsistent DAL services.
  • Added new constants to expression language POSITIVE_INFINITY, NEGATIVE_INFINITY and NaN.
  • Add -running flag which loads tables specified on the command line into a existing instance of TOPCAT if one is already running.
  • Add new join function to Arrays class to combine array elements into a string.
  • TAP load dialogue uses modified upload ID as per most recent TAPRegExt draft. This may cause some TAP services incorrectly to appear not to support uploads if they have not made a similar update.
Bug fixes:
  • Improved some issues (reporting wrong row subset counts and membership) related to changing subset definitions.
  • Fix cone search verbosity parameter so that VERB=3 is not erroneously ignored.
  • Fix bug introduced at v3.7 related to labelling loaded files (improper handling and propagation of LOAD_SOURCE table parameter).
  • A PARAMref element with no referent in a VOTable no longer causes an uncaught NullPointerException.
  • Fix a small bug related to enabledness of buttons in control window and hub connection.
  • Work round an obscure java misfeature which could cause the wrong cell to be edited if a sort interrupts an edit.
Version 4.0b (28 March 2013)
TOPCAT version 4 includes a complete rewrite of the plotting (see below for details). The new plotting functionality is however experimental and changes may be made to the GUI following user feedback. For this reason, the classic plot windows remain available from their usual toolbar buttons and the new plot windows are currently hidden away in the Graphics menu. The "b" designation of this version acknowledges the experimental nature of the visualisation changes, but other new features are considered stable.

I finally bid an affectionate farewell to the Top Cat Hannah-Barbera cartoon graphic. Never having had any legal right whatsoever to use this logo my conscience has eventually got the better of me and TOPCAT now has an excellent new logo kindly drawn by my friend Phil Hall. It's still a yellow cat.
Four new "Layer plot" windows are available from the Graphics menu: Plane, Sky, Cube and Sphere layer plots. These feature a new more powerful (and, yes, more complicated) user interface, and are fully documented in Appendix A.4. New functionality includes:
New Sky Coordinate Plot
  • Choice of projection: Sin (rotatable), Aitoff, Plate Carrée
  • Data and view sky coordinate systems selected separately: options are equatorial, galactic, supergalactic, ecliptic
  • Sky coordinate grid labelled and visible at all zooms
New data plot options
  • vectors
  • ellipses (with position angle)
  • pair, triple, ... data point lines/polygons
  • contours
  • variable size markers
Improved interactive response
  • In 2d and sky plots mouse wheel zooms around cursor position
  • In 2d and sky plots you can drag the plot around
  • In 3d plots right mouse button recentres cube on selected point
  • In 3d plots zooming zooms data in the cube rather than enlarging the cube wireframe itself
  • Many controls are sliders which update the plot as you slide
New plot colouring modes
Density colour coding for all plot types, with density colour map based either on dataset colour or chosen from a fixed set. Flat, transparent and aux colour coding still available as before.
Better support for large datasets
Several features have been introduced to provide more meaningful visualisation of large datasets. Improved density-like plots and contours give you better ways to understand plots containing many more points than there are pixels to plot them on. There is separately some improvement in scalability: up to roughly 10 million points is currently feasible depending on available memory etc, though it depends what you're doing. However, I hope to improve this limit in future.
Improved axis labelling
  • Choice of font size and style
  • Option of LaTeX input for non-ASCII characters etc
  • Log axes labelled better
  • Minor tick option
Legend options
External or manually positioned internal placement.
Analytic function plotting in 2D
Plot functions of X or Y coordinate using TOPCAT expression language.
(Note this plot change list was missing from the v4.0 release and retrospectively added at v4.0-1).
Other new capabilities:
  • Use MOC footprints to speed up multi-cone searches, including footprint icon display in multicone window.
  • Add IPAC output format.
  • Add new class KCorrections to the expression language, containing a method for calculating K-corrections following the method of Chilingarian and Zolotukhin.
  • VOTable input and output are now supported for version 1.3 of the VOTable standard.
  • The version of the VOTable format used for VOTable output can now be selected, by using the system property votable.version. Output version is VOTable 1.2 by default. VOTable output no longer includes schemaLocation attribute.
  • You can now reference tables in multi-extension FITS files by name (EXTNAME or EXTNAME-EXTVER) as an alternative to by HDU index.
Other enhancements:
  • ADQL parsing in the TAP window can now highlight all unknown symbols not just one of them. This is possible by upgrading to the official v1.1 of Grégory Mantelet's ADQL library, which improves some other aspects of ADQL parsing as well.
  • Add new function hypot (=sqrt(x*x+y*y)) to the Maths class in expression language.
  • Add new split functions for string splitting to the Strings class in expression language.
  • Some changes to the toString function: it now works on non-numeric values, gives the right answer for Long integers and character values, and returns a blank value rather than the string "null" or "NaN" for blank inputs.
  • Sexagesimal to numeric angle conversion functions now permit the seconds part of the sexagesimal string to be missing.
  • Changes to the IPAC format definition are accommodated: the "long"/"l" type, which is apparently now official, no longer generates a warning, and headers may now use minus signs instead of whitespace.
  • Fixed SAMP table loads to honour "name" parameter.
  • PNG graphics output no longer has transparent background.
  • Upgrade JSAMP library to version 1.3-3.
  • Work around change in VizieR output so that VizieR catalogue searching works again. This may be a temporary change.
  • Update URLs for GAVO Millennium database service at request of Gerard Lemson.
  • Add new class Coverage to the expression language containing MOC-related functions (currently, just inMoc).
  • Add explanatory section to manual on Multi-Object Matches.
  • Add -debug flag to manage logging messages better.
Bug fixes:
  • Fix serious and long-standing bug (bad TZERO header, causes subsequent reads to fail) for FITS output of boolean array columns.
  • Fix small but genuine sky matching bug. The effect was that near the poles matches near the specified threshold could be missed. The bug was in the PixTools library, fixed at the 2012-07-28 release.
  • Fix bug which failed when attempting to read FITS files with complex array columns (TFORMn=rC/rM).
  • Fix failure when loading very large sequential tables.
  • Fixed table concatenation so that column datatype array size etc is consistent with both input tables not just the first one.
  • Adjust SQL writer to avoid type error for MySQL.
  • Fix plotting bug that might have caused mysterious failures to update the plot. Or it might not.
  • Fix ADQL parsing in TAP window so that TAP_UPLOAD tables are treated correctly.
  • Fix bug which could cause truncation of strings in FITS and possibly VOTable output when tables were hand-edited to add strings longer than previously-declared length.
  • Fixed bug in multi-table matches (>2 tables) which could result in output rows with columns from only a single table, i.e. not representing an inter-table match.
  • Fix bug in HMS sexagesimal formatting: minus sign was omitted from negative angles. Now the output is forced positive.
  • Fix minor bug associated with deleting the current row subset (this now causes All to become current).
  • Cope with 1-column CSV files.
  • Fix (some, though probably not all) possible bug(s) related to running on Java 1.7 on Mac.
  • Use the correct form "rows"/"bytes" rather than "row"/"byte" for TAP capability unit values.
  • Infinite floating point values are now correctly encoded in VOTable output ("+Inf"/"-Inf", not "Infinity"/"-Infinity" as in previous versions).
  • Fixed some layout problems which could lead to zero-width text entry fields for RA/Dec.
  • Fixed bug when attempting to explode a hidden array column.
  • Fix error bar rendering bug which could result in diagonal lines being offset near the edge of plots.
  • Fix problem with GUI locking up when plotting outsize histograms.
  • Fixed bug in stacked line plot which caused scribbly drawing in the presence of null X axis values.
  • Fixed problem with row highlight messages bouncing for ever between applications when the Transmit Row activation action is in use.
  • Improve behaviour when deleting a parameter in the Parameter Window.

Version 4.0-1 (1 July 2013)
New Functionality
  • Add read-only support for CDF (NASA Common Data Format) files. Currently, no attempt is made to present time-like values in a human-friendly way, but this may improve in a future release. The SAMP table.load.cdf MType is also supported for receiving CDF files.
  • Improve handling of HTTP basic authorization. HTTP 401s now pop up a user/password dialogue window, unless the star.basicauth.* system properties have been set up.
  • Add options to calculate the (scaled or unscaled) Median Absolute Deviation in the Statistics window.
Minor enhancements
  • Now subscribes to SAMP voresource.loadlist.tap MType, accepting resource list in TAP load dialogue "Select Service" tab.
  • The Columns window now makes a better attempt at displaying non-standard per-column metadata of unusual types, in particular array values.
  • Line plotting improved in layer plots (including better dashing, new antialias option).
  • Implemented fixes to reduce the chance of users inadvertently overloading external Cone/SIA/SSA services with multicone-like queries. First, fix it so that abandoned queries are properly terminated, rather than continuing to hit the server until completion or JVM shutdown. Second, implement a sensible default maximum value for the Parallelism field in the multi-cone (etc) panel (though this may be adjusted with a system property).
  • Source code is now managed by git and not subversion. The format of the "Starjava revision" string reported by the -version flag and the Help|About menu item has changed accordingly.
Bug fixes
  • Fix CSV regression bug introduced at v4.0b - CSV files now work again with MSDOS-style line breaks.
  • TAP example queries now quote table and column names where necessary. This fixes a bug that was particularly evident with the VizieR TAP service for which nearly all table names are not legal ADQL identifiers.
  • Quoting behaviour has changed when generating SQL to write to RDBMS tables. This ought to reduce problems related to mixed-case identifiers. However, it is possible that it could lead to unforseen new anomalies.
  • Fix bug with reading session files containing 1-column tables.
  • Fixed FITS output bug which could result in badly-formed string-valued header cards (no closing quote).
  • Turn off layer plot optimisation that could result in lost precision for double values.
  • Fix layer plot bug that broke the plot if both handles of a range slider were dragged to the same position.
  • Fixed it so that layer plot axis range settings are reset when the Rescale button is used.
  • Fixed a bug that caused an exception when a table in a layer plot was deleted from the application.
  • Fixed a bug when zooming way out from a sky plot.
Version 4.1 (7 March 2014)
In this version, the new plotting windows appear for the first time in the main Control Window toolbar, and are no longer considered experimental. There have been many changes to their user interface and functionality since the last release. The old plotting windows are still available from the Control Window Graphics menu, but are now considered somewhat deprecated, and will not be developed or fixed further.

Navigation changes to the new plotting windows:
  • In 2d plots, right-button drag (or ctrl-drag) does a 2-d anisotropic zoom - you can stretch or squash the plot in both directions.
  • In 3d plots, right-button drag (or ctrl-drag) does a 2-d anisotropic zoom along the 2 axes most face-on.
  • In 3d plots, middle-button drag (or shift-drag) slides the plot along the 2 axes most face-on.
  • In 2d plots, the pan/zoom actions (wheel, pan-drag, zoom-drag) can be done outside the plot to affect just one axis.
  • Most navigation mouse actions now show visual feedback on the screen.
  • A new tab Navigation is added to the Axis controls. This lets you configure zoom/pan actions, for instance selecting zoom factor and X/Y/XY zoom options for when mouse wheel is used.
  • A hints panel is added below the plot showing current mouse navigation actions.
  • Removed zoom in/out buttons in the toolbar of the layer plot windows; there are better ways to zoom.
Other changes to the new plotting windows:
  • Histogram plot type added. You can also add histograms to a normal plane plot if you want to.
  • Layer plot windows now have a progress bar at the bottom for loading data, and optionally for other potentially slow operations like replotting, identifying a point, turning blob-selected points into a subset etc.
  • For very large/slow plots, intermediate subsampled plots are optionally displayed while panning/zooming to improve responsiveness.
  • Toolbar buttons rearranged; the buttons for adding and removing layer controls are now in the layer control panel not the main plot window toolbar.
  • When a pair crossmatch completes successfully, you get the option to plot the results, which shows you exactly how the located matches relate to the input positions (pairs of points are plotted).
  • Text label plotting now has crowding configuration options: according to configuration, text labels are only drawn if there aren't too many close together.
  • New grid and label colour configuration options for plane and sky plots.
  • More colour maps added.
  • Antialiasing option added for grid line and label drawing.
  • New auto transparency shading mode.
  • Add some padding around auto-ranged plot limits.
  • Changing table in a plot now tries to retain the coordinate values if they still make sense.
  • Axis tick labelling improved, including avoiding overlapping tick labels.
  • Sky plot re-ranging improved: new data set now re-ranges unless lock button is set.
  • Clip selector added for density and aux colour maps, which means you can now use just part of a colour map, giving you much more control over colouring.
  • Sky plot position formatting now honours sexagesimal setting.
  • Some minor threading/performance improvements.
  • Experimental time plot type added. This plot type is considered experimental and appears in the Graphics menu but not currently on the main toolbar. It can plot time series and spectrograms. May be improved in future versions.
  • The control for plotting pairs of points works differently (now has its own layer control not just a Form). The triple-point form (which didn't work properly) is withdrawn for now.
Other enhancements:
  • A new experimental SAMP message table.get.stil is supported, allowing SAMP clients to retrieve tables from TOPCAT.
  • URL selector fields in Activation Action window are now editable.
  • Add cuboid match algorithm to match windows.
  • The Exact matcher now considers scalar numeric values equal if they have the same numeric value; they are no longer required to have the same type.
  • Array-valued per-column metadata items are now displayed properly.
  • The toString function now works for byte and boolean values as well as other data types.
  • Replace the (slightly dangerous, also undocumented) Apply Subset option in the table viewer window with a new Highlight Subset option. Also add a new Highlight Subset option in the Subsets window.
  • In the old-style histogram plot, exporting it now provides cumulative counts if the visible histogram is currently in cumulative mode.
  • Keyboard focus is more helpfully positioned by default in some dialogue windows (it starts off in the first text field).
Bugfixes etc:
  • Fix a registry access bug related to namespaces. It is now finally possible to query the STSci/NVO/VAO registry, as well as the AstroGrid and Euro-VO registries, from the Cone/SIA/SSA/TAP VO windows. Queries to the STSci registry have not been working since mid-2010 as a consequence of bugs in (mostly) the TOPCAT client and (partially) the STSci registry service.
  • Work around bug in MacOS text rendering in plots that painted text in the wrong direction when not horizontal (e.g. letters going backwards when running vertically). The workaround involves defaulting to antialiased text when drawing axis grids for MacOS. As well as getting the text the right way round this does look a bit nicer, but it is also perceptibly slower. If speed is more important than correctness you can turn it off using the Antialias checkbox in the Axes-Grid tabs of the various plot windows.
  • Withdraw Labels tab in the Sphere plot, since it didn't do anything.
  • Rename the File menu in most windows to Window, which is much more appropriate.
  • Fix bug when concatenating tables whose data cells may have been edited by hand.
  • Fix service selection bug (NullPointerException) in multi-SIA/SSA windows.
  • Fix bug which prevented access to long integer array elements from expression language.
  • Fix bug in Statistics window so that Boolean columns correctly report mean values (true/true+false proportion).
  • Fix TST input handler so TST files with fewer than 3 columns can be read.
  • Upgrade JSAMP to version 1.3-4 (hub now supports web clients with https URLs).
  • Moved text documenting table.load.cdf and table.load.stil SAMP MTypes from the transmit section (wrong) to the receive section (right) of this document.
  • Minor improvements to CDF support.
  • Fix some plot threading issues.
  • The reported point count is improved in plots.
  • Better handling of OutOfMemoryErrors during plotting.
  • Better handling of LaTeX errors in axis labelling.

Version 4.2 (4 July 2014)
Significant new functionality and changes:
  • Add the new CDS X-Match Upload Window. In most cases (matching with a table that can be found in VizieR) this window can and should be used instead of the old Multi-Cone window - it is much faster. The button for this window replaces the MultiCone button in the main Control Window toolbar. MultiCone is still available from the VO and Joins menus, but is now for most purposes deprecated.
  • Windows with a Registry Query Panel can now talk to the registry using either RI1.0 (the only option in previous versions) or RegTAP. RegTAP is generally much better (faster, less bandwidth, more reliable), and is the default choice, but a selector allows you to revert to RI1.0 if preferred.
  • The "frame"-style zooming that was used in old-style plots is now available in the new-style plots - drag the mouse using the middle button or shift key.
  • The TAP Window button replaces the Concatenate window button on the toolbar. The Concatenate window is still available from the Joins menu. This is not new functionality, but the UI change reflects the growing usefulness of TAP services.
Minor improvements:
  • Form configuration options are now preserved, rather than reset, when a new table is selected in one of the plot windows.
  • Registry search panels now display resource count at the bottom of the resource list.
  • Update the endpoint for the NVO/VAO RI1.0 registry (now deprecated in favour of RegTAP), on advice from Theresa Dower.
  • Fixed TAP load dialogue so that by default it stays open after a table is loaded (the Stay Open option is set true by default).
  • Improve TAP window Running Jobs display. The Job URL is now always shown even when the other job details scroll off screen, and the details scroll to the top not the bottom when a job is selected or refreshed.
  • Upgraded Gregory Mantelet's ADQL library to version 1.2. Better ADQL parsing.
  • Modify the way antialiasing is controlled in plot windows. The Grid antialiasing option, where present, now just covers the actual grid lines. Text antialiasing is now selected with a new "Antialias" option in the (now possibly misnamed) "Text Syntax" item in Font configuration. This now affects the Aux axis and Legend labelling as well as the grid labelling.
  • Added new graphics output format png-transp to generate PNG files with transparent backgrounds.
Bug fixes:
  • Set antialiasing on by default for OSX - get it right this time.
  • Fixed some bugs related to TAP table uploads.
  • Fix out-by-one error in reporting of Row of min/max values in Statistics window.
  • Add missing geometric reserved words to ADQL reserved word list. Has a slight effect on ADQL validation in TAP window.
  • No longer disable "View URL As ..." options in Activation window when no suitable columns are present.
  • Fixed bug in which cube plot navigation help button gave you sphere plot help and vice versa.
Version 4.2-1 (13 November 2014)
New functionality:
  • Add (experimental) read-only support for Gaia/DPAC GBIN format.
  • Add special variables $ncol and $nrow to the expression language to refer to the column and row counts in the underlying table. The special variable index is also deprecated in favour of $index or $0.
  • Support viewing tables up to 231 (2 billion) rows in the table viewer window. The previous limit was 227 (134 million) rows. This does not necessarily mean that using TOPCAT on Gigarow tables is a good idea!
Minor improvements and bugfixes:
  • Change the default RegTAP registry endpoint to, which should have good reliability, since it can point to different RegTAP services as required.
  • Add some more colour maps for aux/density shading.
  • Fix regression bug (introduced at v4.2) which caused authentication to fail when using the SQL Query load dialogue.
  • Attempting to write FITS tables with >999 columns now fails with a more helpful error message.
  • Somewhat improved Unicode handling in VOTables. If you load a VOTable with columns marked datatype="unicodeChar" and save it again, the columns now remain unicodeChar instead of getting squashed to type char. Some lurking Unicode-related issues remain.
  • Fix time plot to work for ISO-8601 times. This change also breaks use of ISO-8601 times in non-time plots, but that didn't work particularly well before. Please complain if this change of functionality causes a problem.
  • Fix problem with activation action image viewer selection box.
  • Update JSAMP to v1.3.5.
Version 4.2-2 (6 February 2015)
Plotting enhancements:
  • New Linear Fitting form for Plane plot. This reinstates behaviour available from old plot windows, but it provides some more options, like point weighting.
  • New SizeXY form, which allows plotting (optionally autoscaled) markers with horizontal and vertical extents independently determined by input data.
  • New Frame fixed control in plot windows with two tabs, Size and Title. Size allows explicit setting of output plot dimensions and alignment in pixels - can be useful when exporting plots. Title lets you add a text title at the top of the plot.
  • New Save/Import options in Histogram window allow you to export histogram bin data as a new table (this reinstates behaviour available from old plot windows).
  • More flexibility when assigning colour maps, in the Aux Axis control, Density shading mode, and Spectrogram layer control. These now provide a Scaling option allowing use of Square and Sqrt mappings as well as Linear and Logarithmic, and a Quantise slider allowing quantisation of the colour map to discrete levels.
  • Rescale Y button added to Histogram window.
  • Histogram normalisation option adjusted so that total area under bars, rather than total height of bars, is fixed.
  • Tick Crowding configuration option added to Aux Axis control Ramp tab. Also changed default for Aux axis to use fewer ticks.
  • Some "dart" options (fixed-base open or filled triangles) added for plotting vectors.
  • Some "triangle" options (variable-base open or filled triangles) added for plotting ellipses.
  • Max Marker Size option replaced with with Autoscaling option in plot Size form. You can now optionally turn off autoscaling and specify marker size in pixels instead.
  • Every slider control in plot windows now has a little button on the right that resets it to its default value.
  • The text labels for configuration options and coordinate entry fields in the plot windows now provide a tooltip of the form "name=value". These strings give the STILTS parameter assignment corresponding to the current setting.
Other enhancements
  • Reworked part of the FITS input implementation, in particular adjusting the way memory mapping is done to reduce resource requirements on some platforms. If you notice any difference, it should be reduced virtual and perhaps resident memory usage, and some (~10%?) performance improvements, when reading large FITS/colfits files. However, please report anything that appears to be working worse than before.
  • Colfits files can now be accessed from streams, not just uncompressed disk files (though that's not necessarily a good idea).
MacOS packaging
Some changes have been made to the MacOS DMG file/application bundle. I believe these are at worst harmless, but pre-release testing of platform-specific features is patchy, so problems are possible - please report if you find any, or if the following items don't seem to be working.
  • OSX application bundle adjusted so that the DMG file should work on any MacOS with either legacy Apple Java 6 or Oracle/OpenJDK Java 7+ installed.
  • OSX application bundle adjusted (I think) so that application working directory is user's home directory.
Bugfixes and workarounds:
  • Fixed a query bug (missing REQUEST=queryData parameter) in the Multiple SSA Query window. This long-standing bug would have stopped this window working at all with well-behaved SSA services.
  • Fixed error in fits-var output (PCOUNT header card did not include block alignment gap).
  • Graphics coordinates are now calculated in floating point rather than as integers. This fixes problems that could cause scaled vectors, ellipses etc to be drawn with shapes or orientations badly wrong due to rounding errors. It also improves plotting of analytic functions, especially to vector contexts (PDF/EPS).
  • Fix some problems to do with zooming to very large/small plot axis ranges.
  • Hide error bars (etc) that would extend to negative values on logarithmic axes; previously they were being drawn in anomalous places.
  • Fix Aux axis positioning for 3D plots so that the numeric labels don't get snipped off at top and bottom.
  • Add a hack that allows LDAC FITS tables to be treated sensibly in auto-format-detection mode.
  • Make VOTable handling more robust against unknown (illegal) datatypes.
Version 4.2-3 (14 April 2015)
Histogram enhancements:
  • New Kernel Density Estimate plotting option variants added in the Histogram and Plane plot windows: KDE, KNN and Densogram.
  • More flexible normalisation options for histogram/KDE plots: normalise by area, maximum bar height, or total bar height.
  • The Bars fixed control is now relabelled Bins, and has separate tabs for Histogram, KDE and General controls.
  • The existing Bin Size slider, and new kernel Smoothing sliders, now display current width in data units as the slider is moved.
  • More bar styles are available for Histogram plots; Semi Filled (the new default) and Semi Steps options make it easier to understand multiple overplotted data sets. Note Semi Steps does not currently export very nicely to PDF/EPS.
  • Sketch mode is switched off by default.
Minor improvements:
  • More slider controls have options allowing explicit entry of values from the keyboard (colour map quantisation, marker/vector/ellipse scaling values).
  • More slider controls have text value readout displays alongside the slider (colour map quantisation, marker size/errorbar scaling values).
  • Column data read in as unsigned bytes will now be written out as unsigned bytes where the output format permits; previously they were forced to 16-bit signed integers. This affects FITS, VOTable and CDF I/O handlers.
  • The Subset Styles panel in table data layer controls now has a Visible checkbox indicating whether the subset undergoing subset-specific configuration is currently visible in the plot.
  • Be less strict about recognising colfits files (tolerate implicit TDIMn headers).
  • Tables specified on the command line may now use syntax that reads data from a unix pipeline.
  • OSX application bundle fixed to run application in user's home directory (broken in previous version).
Bug fixes:
  • Fix minor ADQL parse failure when using TAP tables named without explicit schema prefix by service.
  • Fix regression bug (from v4.2-2) that caused problems in Histogram and Spectrogram layers: New subset from visible action wasn't working, and the displayed point count was always zero.
  • Work round FITS read bug that could cause problems for VOTables using inline FITS serialization, and possibly elsewhere.
  • Fix bug that caused trouble when auto-ranging a plot with a single sky position.
  • Catch and report the error properly if the user enters a bad explicit axis range (max value <= min value).
Version 4.3 (17 August 2015)
TAP client enhancements:
The TAP client GUI and implementation in the TAP Load Window have been much improved. As well as being generally more capable and easy to use, the GUI is now quite usable for services providing very large datasets, for instance TAPVizieR (~30,000 tables). In detail:
  • TAP service discovery is now done by default by requesting search terms relating to the tables, rather than the services, that you're interested in. The old (by service) GUI is still available in a different tab.
  • The TAP metadata display has been reorganised; schemas and tables are displayed in a searchable tree on the left of the panel, with details of the currently highlighted schema/table in tabs on the right. Organisation of tables at the schema level is now visible. Much more information about the schemas and tables is available, and it's displayed better.
  • The Columns and Foreign Keys metadata display tables can now be sorted by clicking on column headers.
  • Much more information about the TAP service is displayed, including a full service description and listing of available geometry functions, user-defined functions and data models (if the service/registry provides this information).
  • For large services, metadata acquisition is now done as required on a table-by-table basis, rather than attempting to download all the metadata up front. This works much better for services with very many tables.
  • The query entry panel has many new features, including multiple query entry tabs, full query text Undo/Redo, and limited support for pasting table and column names that have been selected in the GUI.
  • A new Quick Look mode has been introduced alongside the Synchronous and Asynchronous modes, to execute a query whose result is displayed but not loaded into TOPCAT.
  • The Examples menu has been extended to include various sub-menus with more ADQL query examples appropriate to the current service, including examples provided by the service itself for services supporting the (somewhat) standard /examples endpoint.
  • The Examples menu GUI has been modified to facilitate browsing, and a button is provided to link to web pages describing the selected example in more detail.
  • The TAP menu has new options for configuring Metadata Acquisition, Response Format, Upload Format, Service Discovery, and HTTP-level compression. The old Deletion menu has been moved under this TAP menu as Job Deletion.
  • Where supported by the service, the BINARY2 VOTable serialization is used by default to retrieve TAP results, which should reduce bandwidth and (marginally) improve handling of null values.
  • For upload queries, tables are now by default uploaded to the service using the TABLEDATA rather than BINARY VOTable serialization. BINARY ought to work, but at least some services (e.g. CADC) currently fail with BINARY uploads. The default can be changed using the TAP|Upload Format menu item.
  • There is a change in the way that TAP service metadata is interpreted: table/column names are now expected to be delimited if required. An attempt is made to fix up names that not delimited when they obviously should be. May cause some ADQL examples to work incorrectly in the presence of non-compliant service table metadata reports.
  • The ADQL syntax highlighting is now sensitive to User-Defined Functions declared by the service (if any are declared), so that misuse of UDFs or use of non-existent UDFs can signalled. This is thanks to an upgrade to Grégory Mantelet's ADQL parser library.
  • Improve error reporting in the face of non-VOTable TAP error responses. In many cases this makes it much easier to see what's going wrong with a TAP query.
  • As a diagnostic tool, when making TAP queries, a log message giving a roughly equivalent curl(1) command is now issued at the CONFIG level (visible using flags -verbose -verbose).
  • Fix a serious bug in processing of FITS bit vector (TFORMn='rX') columns. Values read from these columns are presented as a boolean[] array. In all previous versions of STIL the bits have appeared in that array in the wrong sequence (LSB..MSB per byte rather than the other way round). Apologies to anyone who may have got incorrect science results from this error in the past, and thanks to Paul Price for helping to diagnose it.
  • Fix a less serious bug with TFORMn='rX' processing; attempting to read a single-element bit vector column (TFORMn=1X or X) previously resulted in an error making the file unreadable. Values read from such columns are now presented as Boolean scalars.
  • Fix a VOTable reading bug relating to bit vector columns (datatype="bit") appearing in BINARY/BINARY2 serializations. This one was more obvious, it would usually generate an error when attempting to read the file.
  • Fix serious bug in time conversion for CDF TIME_TT2000 data types. This was giving completely wrong (deep future) labels when using TIME_TT2000 columns in time plots.
  • Fix sky plot vector bug: delta latitude and delta longitude values were being used the wrong way round.
  • Upgrade JEL to v2.0.2. Fixes problem with evaluating void-typed expressions (especially user-supplied activation actions), and possibly some other obscure bugs.
  • Prevent submission of multi-cone/SIA queries for which the Search Radius parameter is blank.
Minor enhancements and behaviour changes:
  • Added some functions to the Arrays class that return array-valued results from array-valued parameters: add, subtract, multiply, divide, reciprocal, condition.
  • HTTP-level compression is now requested (Accept-Encoding gzip request headers included) in most places where it makes sense. This should substantially reduce required bandwidth in communications with HTTP services that support this.
  • When clicking on the headers of columns to sort the rows in displayed JTables that show registry services and VizieR catalogues, clicks now cycle between three options (up, down, none) rather than just two (up, down).
  • Minor improvement to version reporting (reports java specification version, no longer issues warning for absent revision string).
  • Update JCDF library to v1.1 (minor changes to do with leap seconds).
  • Now only runs in PLASTIC mode if the -plastic flag is set explicitly (otherwise runs in the default SAMP mode). Previously it ran in PLASTIC mode if a .plastic lockfile was present.
  • Activation action summary messages are now written via an INFO log message rather than just printing to standard output. To see them you now need to run the application with the -verbose flag. The various exec functions however do now write their output direct to stdout/stderr rather than including them in a return value.
  • Custom Code activation action invocation behaviour has subtly changed when one of the values in the expression is from an integer or boolean column, and that column has a blank value. In that case, it's not possible to represent the column value properly to the function (since integer/boolean values can't be null). Previously, the function was invoked with a zero/false value where the null would have been. Now, the function is not invoked at all. Note this only applies to Activation Actions (which are expected to have side-effects); expressions evaluated as column values etc are, as previously, executed but the result is ignored.
  • Modify the heuristics that determine whether the first row of a CSV file is a header.
Version 4.3-1 (22 October 2015)
New features:
  • A new Hints tab is added to the TAP load dialogue, with useful tips to jog your memory about ADQL syntax.
  • The expression language has a new way of referring to a column; if you use the form "Object$<column-id>" you get the value as an Object not a primitive. This is a special-interest measure for user-defined activation functions that need to see null numeric values.
  • Adjustments to the GBIN input handler: avoid descending into Class-typed members of gbin list objects, and add logging for object->column translations.
  • Fix error reporting bug when a non-VOTable response is received from a TAP service.
  • Fix TAP service location bug that caused an error if searching in By Tables tab with only Service field selected.
  • Fix bug in ADQL parsing that failed to recognise column names that are delimited identifiers when qualified by table names.
  • Bugfix updates to ADQL library: disallow use of spurious schema names for tables with no schema name; disallow table-qualified names in ORDER/GROUP BY clauses.
  • Upgrade to JCDF v1.2 - fixes a bug when reading large (multi-Gb) CDF files.
Version 4.3-2 (27 October 2015)
Crossmatching bug fix
Fix a long-standing crossmatch bug relating to range restriction during pre-processing. This could have caused missed associations (but not false positives) near the edge of coverage regions when using per-row errors, if the scale of the errors differed (especially differed significantly) between the matched tables. It affected match algorithms Sky with Errors, <n>-d Cartesian with Errors, 2d_ellipse and Sky Ellipses only. Thanks to Grant Kennedy (IoA) for reporting this bug.
Density plots
Some more options for making weighted density plots have been added. Since v4.0 the Density shading mode has let you see the density of plotted points, but this lacked some features. Three new ways to do density plots are added; these all give you the option of weighting by an additional coordinate (like the Aux mode), choosing the combination method (mean, median, sum, max, ...), and displaying the quantitative value-colour mapping on the shared colour ramp (previously aux axis) beside the plot. The new density plots are:
  • Weighted shading mode, using shaped marker kernels on the screen pixel grid, available for all plot types
  • SkyDensity form, using HEALPix bins on the celestial sphere, for the Sky plot
  • Density form (later replaced by Grid form) using square N*N screen pixel bins, for the Plane plot
The details are somewhat experimental and may undergo some adjustments in future releases (feedback welcome).
Colour maps
There are various changes affecting selection and display of colour maps used for density and aux axis shading:
  • The default colour map for Aux mode, and other layers using the shared colour map, is no longer Rainbow! It's Inferno. Rainbow colour maps are much hated by visualisation experts. Of course you can still choose Rainbow if you like.
  • Add some new colour maps: Viridis, Inferno, Magma and Plasma from Matplotlib 1.5, the SRON rainbow variant developed by Paul Tol, some diverging maps (HotCold, RdBu, PiYG, BrBG) and a qualitative constant chroma/luminance map HueCL.
  • The options for Density and Aux shading are now mostly the same as each other except where there's good reason to differ. Previously they were different in haphazard ways. The order of the options is now a bit more rational too (similar maps are grouped together, more common ones near the start).
  • An attempt is made to give the default form of each colour map a sensible name, without leading minus signs.
  • Fix it so that the whole range of each map is distinguishable from white. This is a good idea when you're plotting symbols on a white background, which is common in topcat. Perhaps there are cases it's not such a good idea; if you think so, complain and I may change it back.
  • Try to fix it so that all the colour maps go in the same direction (light->dark) where applicable.
  • Throw out a couple of particularly useless colour maps.
  • Colour map ramp display is now different for non-absolute maps; their effect is shown on a selection of base colours, not just for one base colour.
Minor items
  • Try harder to identify epoch columns (suitable for time plot), in particular look for VOTable xtype of JD or MJD, and units of year.
  • Add some functions to the Tilings class to do with solid angles (healpixSqdeg, healpixSteradians, steradiansToSqdeg, sqdegToSteradians, SQDEG).
  • Tweaked topcat startup script to work better if it's invoked from a symbolic link.
  • Fix the description in SUN/253 document of Sky ellipse and vector plot forms, previously they were not distinguished from the Plane variants of those forms.
  • Fix plot bug; titles were painted in white for pixel export formats.
  • Rationalise plot report logging. Some more diagnostic information about plots is now logged at the INFO level (visible if topcat is run with the -verbose flag).
Version 4.3-3 (10 June 2016)
Expression Language
The JEL library underlying the expression language parser has been upgraded to v2.1.1 (thanks to Konstantin Metlov), now supporting variable-length argument lists among other things. This allows the following improvements:
  • New functions that support any number of arguments are provided: array, intArray, stringArray in class Arrays; concat, join in class Strings; sum, mean, variance, stdev, min, max, median, countTrue in new class Lists; and exec in activation class System.
  • Some old lists of similarly-named functions with fixed numbers of arguments have been replaced by single functions that take an arbitrary number of arguments (e.g. array(x1), array(x1,x2), ... array(x1,x2,x3,x4,x5,x6,x7,x8) replaced by array(values...)).
  • The 2-argument min/max functions in class Arithmetic have been renamed minNaN/maxNaN to avoid confusion, but in most cases existing expressions involving min/max will work as before.
  • Some functions that used to require string arguments will now auto-convert numeric types (e.g. exec("",toString(RA),toString(DEC)) can now be written exec("",RA,DEC)).
  • You can now implement user-defined functions with variable numbers of arguments.
  • Writing large (>=2**31) literal integers used to fail with and inscrutable error message. Now the message tells you to append the "L" character.
Time plot
The Time Plot window (available from the Control window Graphics menu) has been enhanced so that it can make multi-zone plots - multiple plots stacked vertically that share the same horizontal (time) axis but have independent vertical axes. The time plot itself and this multi-zone feature are currently experimental; in future versions they may be improved or changed, and the multi-zone feature may be extended to other plot types. Some other changes have gone along with this:
  • Plotted points (Mark form) in the time plot now supports shading modes as for other plot types.
  • The spectrogram layer now uses the (per plot, or more precisely per-zone) Aux colour map rather than a colour map specific to the layer. This means that the colour ramp is now displayed alongside the plot, so you can see quantitatively what colour corresponds to what value. It also means that to adjust the colour map, you now need to use the Aux fixed control rather than controls in the spectrogram's Style tab.
  • The plot window tries to guess the time coordinate and fill it in automatically.
  • The Function layer control now works in the experimental Time plot, rather than throwing an error. However, it doesn't work very well, since the time coordinate is in unix seconds rather than something more user-friendly.
  • Fixed a serious bug in ISO-8601 axis labelling in the time plot. In some cases axis labels were being drawn at positions badly different from the correct position.
Miscellaneous enhancements and changes
  • This and subsequent releases target Java SE 6, so will no longer run under the (now very ancient) Java 5 runtime.
  • Add Fill plotting mode for Plane and Time plots.
  • The TAP window now uses blocking HTTP requests rather than repeated polls to wait for asynchronous TAP job completion from services that declare themselves UWS 1.1 compliant.
  • Improve sky plot border painting.
  • Clean up noisy Cubehelix colour map.
  • New function countTrue in class Arrays.
  • VERBose selector added to Cone Search dialogue.
  • UType matching is now case-insensitive when identifying likely columns in Activation window.
  • Replace Opaque Limit with Transparency config option for plane and sky density plots.
  • Update list of VizieR mirrors.
  • Changed implementation of GIF exporter for plots, from Acme to ImageIO. Shouldn't be any noticable difference.
Bug fixes
  • Fix the sky join syntax example in the TAP window Hints panel, which was incorrect (comma and parenthesis misplaced).
  • Fix bug in cumulative histogram calculation.
  • Fix read failure for FITS files with non-blank TDIM for zero-length columns.
  • Fix bugs that led to timezone-dependent results when reading ISO-8601 or decimal year time columns.
  • Fix numeric field truncation bug in LaTeX table output.
  • Fix bug in which expression metadata was sometimes not revealed in Columns Window display following addition of a new synthetic column (regression bug since v4.0b).
  • Don't use white as one of the auto-selected plotting colours, since it's likely to be invisible (this was a regression bug introduced at v4.3-2).
Version 4.3-4 (13 September 2016)
Visualisation and HEALPix
  • Add options (from layer control Report panel or plot window Export menu) to export the HEALPix density map calculated by a SkyDensity plot; either save it to disk or import it as a new table.
  • New Healpix layer control in the sky plot lets you plot tables that represent healpix maps (e.g. as exported from SkyDensity plot).
  • Add some HEALPix-related functions to the Tilings class: conversions from pixel index to sky position and conversions between ring and nested schemes.
  • Colour ramp Clip control (e.g. for the Aux Axis) now has a new Default checkbox. When checked, a default clip is applied, which avoids very light colours, and when unchecked you can use the double-slider over the whole range. Previously, the double-slider range was pre-clipped, so very light colours were not available.
  • Improve performance of some plot types. In weighted shading mode you can now adjust the colour map without appreciable delay. SkyDensity plots are somewhat improved.
TAP/VO enhancements
  • The TAP window now honours the (TAP 1.1) column_index column if it is present in the TAP_SCHEMA.columns table. This means that columns can be displayed in a predefined, rather than random, order in the column metadata display tab if the service supports that.
  • The TAP window also now acquires and displays non-standard, as well as standard, table and column metadata items if provided by the TAP service. These come from non-standard columns in the TAP_SCHEMA.tables and .columns tables, or from attributes in custom namespaces in the TableSet document, depending on metadata acquisition policy. Services can use this if they wish to report things like table row counts or column data limits.
  • Add VOSI 1.1-style detail-sensitive /tables endpoint query options to the TAP|Metadata Acquisition menu in the TAP window.
Bug fixes and minor enhancements
  • The GBIN input handler can now pick up more metadata from the classpath. For suitable tables, metadata included in datamodel classes if present can be interrogated to provide table and column descriptions and UCDs. There are still some deficiencies of this functionality (no column order, utypes and units missing, large file "temp.xml" written to current directory) dependent on issues in the upstream Gaia libraries and ICD.
  • Fix bug that caused read failures for large (>0.5Gb) FITS files outside of the current directory on 32-bit JVMs. This was a regression bug since v4.2-2.
  • Fix long-standing bug that failed to release file descriptors when opening FITS tables (could cause an error if very many FITS files were opened).
  • Improve the Concatenation Window. You can now use algebraic expressions for the appended table columns, and changes to the appended table no longer reset the window state.
  • Fix minor border-painting bug in sky plot window (sky outline painted on GUI components).
  • Combiner option stdev replaces variance in density, sky density and weighted plot layers.
Version 4.3-5 (23 September 2016)
Version 4.4 (8 March 2017)
Visualisation improvements
  • The GUI has changed in the Form tab of plot window Data Layer Control panels. To add (and remove) forms there is now a Forms button that pops up a menu rather than the toolbar with form icons that used to be there. This change was necessitated because there were getting to be too many icons to fit in the default width of the toolbar. But it's probably an improvement anyway since you can now see the name of each available form as well as its icon.
  • Improved the documentation of plot Forms and Shading Modes in the user document - each option now has a screenshot showing it in action.
  • The colour selector widget now comes with a new Free colour chooser button, giving you various ways to select any RGB colour you like.
  • New Grid plot form, to plot a 2-d weighted histogram. This replaces the Density form, which has been withdrawn (Grid can do all the same things and more, except specify bin size in screen pixels).
  • New Quantile plot form, which can (e.g.) plot median lines through noisy data.
  • New Gaussian plot form for Gaussian fits to histograms.
  • New normalisation (scaling) option unit for histogram, KDE, and KNN layers.
  • New normalisation (scaling) options per_day etc for histogram, KDE and KNN layers in the Time plot window only.
  • The Histogram control is now available from the Time as well as the Plane plot window, so you can now plot histograms with a temporal horizontal axis.
  • Various tweaks to the details of how plots are positioned on the screen or in output graphics files.
Miscellaneous enhancements
  • Fixed the match score (distance measure) for the Sky+X and Sky+XY matching algorithms. Previously, the score was a linear sum of the unscaled distances for the constituent matchers, which meant a Best match was pretty meaningless. Now, it adds scaled distances in quadrature, so Best matching should give you a somewhat sensible result.
  • The Sky with Errors and N-dimensional Cartesian with Errors matching algorithms now report output separations as scaled (dimensionless) values rather than in physical units. This means the results are more comparable, so Best match results will make more sense.
  • The Maths function hypot now takes an arbitrary number of arguments (instead of exactly two).
  • Added STScI service to default list of RegTAP registry endpoints.
  • Minor improvements to the logic in the Concatenation Window that tries to match up columns between the two tables.
  • Update JCDF library to v1.2-2 (2017-01-01 leap second).
Bug fixes
  • Fix KDE/KNN plotting bug that could get scaling badly wrong for normalised cumulative plots.
  • Fix nasty Concatenation Window bug; the current subset and sort order of the Appended table were not properly taken account of in the output. This was a regression bug introduced at v4.3-4.
  • Fix a regression bug (since v4.3-2) in the Frame layer control; values entered were being ignored for image export or display or both.
  • Fixed a bug that could show Error information for the wrong job in the TAP Running Jobs tab.
  • Fix TAP window bug that prevented job status from being updated in Running Jobs tab.
  • Fix small bug in Plane/Time plot windows; horizontal axis label was sometimes off the bottom of the plot by a few pixels.
  • Fix subpixel offset of colour ramp frame in PDF/PostScript graphics output.
  • Remove spurious padding from EPS graphics output.

Next Previous Up Contents
Up: Release Notes
Previous: Acknowledgements

TOPCAT - Tool for OPerations on Catalogues And Tables
Starlink User Note253
TOPCAT web page:
Author email:
Mailing list: