Next Previous Up Contents
Up: Release Notes
Releases to date have been as follows:
Version 0.3b (4 June 2003)
- First public release
Version 0.4b (8 July 2003)
- Row subset count column in subsets window.
- Fixed and improved broken Parameter window.
- Fixed output of table name and parameters.
- Output to LaTeX
tabular environment now available.
- SQL access buttons now greyed out when no JDBC drivers are present.
- UCD selection now available from New Synthetic Column dialogue.
- Column metadata display made more logical and flexible.
- Column cardinality now calculated in Stats window.
- Sythetic column expressions and most other column metadata now
- Null value support in evaluated expressions.
- Integral example data provided.
- Hierarchical browser for tables available in load dialogue.
Version 0.4-1b (10 July 2003)
- Fixed a VOTable output bug (not escaping XML special characters).
- Fixed a serious FITS output bug.
- Improved bad value handling for FITS tables.
Version 0.5b (20 October 2003)
- Can now read plain text format tables.
- FITS files of arbitrary size can now be read
(they are not loaded into memory).
- TOPCAT can now run without errors in a secure environment
(e.g. as an unsigned jar file under WebStart). Of course some actions
such as Save Table are unavailable in this context.
- Files compressed with Unix
compress now work
(as well as gzip and bzip2).
- Added hierarchy browser to load dialog.
- Added integral demo data (accessible from load dialog).
- Can now drag tables from
into TOPCAT load dialog (or load button).
- Some bugfixes.
Version 0.5-1 (18 November 2003)
- Rewrite of FITS binary table access for big efficiency improvements.
- It's now possible to plug in user-defined algebraic methods at runtime.
- Improved unit testing leads to some bugfixes.
Version 1.1-0 (21 April 2004)
- User interface redesigned - now based around Control Window
not table browser (much easier to work with multiple tables).
- Extensive facilities for table joining by matching rows between
multiple tables or within a single one.
- Documentation much improved and available on- or off-line as
- Self-contained table access library
STIL now provided
as a separate product.
- Tables can be concatenated.
- Better top-level control over window proliferation.
- Columns can now be hidden/revealed not just deleted.
- Additional output formats/variants supported:
- VOTable using BINARY or FITS encoding, inline or by reference
- Machine-readable plain ASCII stream
- HTML <TABLE> element or document
- Hybrid DOM/SAX parsing of VOTables for improved efficiency/memory usage.
- New flag
-demo starts up with demo data.
- Miscellaneous efficiency improvements and bug fixes.
Version 1.1-3 (5 May 2004)
- Functions provided for radians<->sexagesimal conversion
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
- 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)
-disk" flag allows use of disk backing storage for
- New 'FITS-plus' format stores rich table/column metadata in a
- 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
- Null handling improved for FITS & VOTable formats
- FITS files store column descriptions in TCOMMx headers
- Better error messages for unparsable tables
- Various efficiency improvements and reductions in memory
- 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)
- Can add/remove table parameters
- One-step column replacement dialogue from data or column
- Synthetic column expressions now written out to column
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
- All available functions are now fully documented in help document
and interactive Method Window
- Many new trig, coordinate, type conversion, string manipulation
- Big performance improvements for null values
- 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:
- The input format for tables can now be specified in the load window
(via a selection box) or on the command line
(using the "
-f" flag). FITS files and VOTables can
still be identified automatically (i.e. it's not necessary to
specify format in this case) but ASCII tables cannot:
you must now specify the format when loading ASCII tables.
This change allows better error messages and support for
more text-like formats.
- Algebraic expressions referencing row subsets now use the
underscore character ("_") rather than the hash character ("#")
to indicate a subset ID.
- Classes containing user-supplied functions for algebraic expressions
are now specified using the properties "
- The default output format for FITS tables is now the so-called
"FITS-plus" format, which has a BINTABLE in its first extension
as before, but the text of a VOTable stored in its primary HDU.
This can store more metadata for TOPCAT, but should behave just
the same for other FITS-compatible applications.
The old behaviour can be restored if desired by specifying "FITS-basic"
Version 1.3-1 (10 November 2004)
- Minor changes:
- 2MASS cutout servers now available from Activation Window
- Added Starlink logo to all windows
Version 1.3-2 (6 Dec 2004)
- Bug fix:
- Error in parsing empty VOTable TD elements fixed.
Version 1.4 (4 Feb 2005)
- 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:
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:
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).
- 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)
- Added Search Column item to Data Window column popup menu
Version 1.5 (17 March 2005)
- Load dialogues have changed again somewhat, and save
dialogues as well.
The default file browser in both cases is now a
which is very much like the standard file browser, but can browse files
in remote filesystems as well; currently supported are files in
or on an
(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)
- Some more activation functionality has been added:
- New View URL as Web Page option introduced in
- New System class of activation functions containing
exec functions which execute commands on the local
- New Browsers class of activation functions for
displaying URLs in web browsers (external or basic fallback one)
- New Times class added containing functions for
converting between Modified Julian Day and ISO 8601 format epochs.
- 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
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
- 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
tablecopy tool is no longer covered in this
document; it is replaced by the
tcopy tool in
There has also been some reorganisation of this document, mainly
in the appendices.
- 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
Version 1.6-1 (7 July 2005)
- Work around AstroGrid/Sun bug which prevented loading short VOTables
- Ensure that filestore browsers are kept up to date when dialogues are
Version 1.7 (30 September 2005)
- There have been major improvements in the flexibility, and
minor improvements to performance, of two-table crossmatching.
Similar changes for 1-table and multi-table matches should follow
in future versions.
- 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".
- 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.
- Added Julian Epoch and Besselian Epoch conversion functions to
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
- String "
null" interpreted as a blank value in ASCII
- 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)
- Fixed broken MySpace access on MS Windows.
Version 1.8 (13 October 2005)
- Added Sky Coordinates Window; it's now easy to
add new sky coordinate columns based on old ones in different
introduced for more control over visual appearance of numeric values.
- Now copes with 'K'-format FITS binary table columns (64-bit integers).
- Modifications to JNLP files.
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).
- 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.
- 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
- 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.
- 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:
- Selection of a subset in the Control Window now triggers its selection
in other windows (plot, statistics, subsets). The same thing doesn't
happen the other way around, since that might lead to confusing
- Boolean columns now display null values distinctly from false ones.
Additionally, null/false distinctions are handled more carefully in
FITS and VOTable files.
- The Sky Coordinates Window now suggests names for new columns.
- The Filestore Browser now allows you to enter the position
in a file of the table to load (e.g. HDU index for FITS
or TABLE index for VOTable).
- Added Hide All & Reveal All actions to the Columns window.
- When joining tables, column name comparison to determine whether
deduplication is required is now case-insensitive.
- Fixed a problem which was causing TOPCAT to crash when attempting
to save an altered copy of a FITS file under the same name.
- The manual has been reorganised somewhat, and a new
Quick Start section added.
- There is an experimental implementation of the Aladin
interoperability interface. This hasn't really been tested however,
so may not work. Improved Aladin interoperability is expected in
- Fixed a bug in Cartesian crossmatching algorithms which failed
to match if the required error in any dimension was zero.
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.
- 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
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.
- 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
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
- 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)
- You can now zoom in the Spherical Plot.
- There are some improvements to the PLASTIC functionality and
- 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
- When TOPCAT receives a
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
- Some of the screenshots have been updated to include
- 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
-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.
- Added explode columns option to Data Window popup menu.
- Fix bug present since v2.0 which was sometimes drawing wrong numeric
labels near zero in 2D plots.
A side effect is that exponential multipliers will more often be
used on axis labels (as in versions prior to v2.0).
Hopefully somewhat improved axis labelling will be present in
- Fixed bug which was writing unclosed LINK elements in VOTables.
- Fixed some NullPointerException bugs in column selection and
- Fixed bug in scrolling to correct column in Data Window when column
is selected in Columns Window.
Version 2.1-3 (11 May 2006)
- Bug fixes and some minor enhancements.
- Implements send and receive of PLASTIC
- Added new
csv-noheader output format.
- Added skew and kurtosis calculations to
- Improved, though still imperfect, retention of table-wide
metadata in VOTables.
- Fixed bug in writing
votable-binary-href format tables from the file
mark.workaround system property,
see Section 10.2.3.
Version 2.2 (7 July 2006)
- New features for permitting column-oriented storage
startable.storage policy "
have been introduced.
These can provide considerable efficiency improvements for
certain tasks when working with very large (and especially wide)
- Fixed bug which caused some points to be missed out in spherical
- ISO-8601 strings now permit times of 24:00:00 as they should.
- Quoted unit values are examined to determine probable column
- Added flux conversion functions (Jansky<->magnitude).
Version 2.2-1 (3 August 2006)
- Added new coordinate system ICRS for sky coordinate conversions.
- Eliminated some unsightly but harmless stack dumps that could
occur during plotting.
- TUCDnn header cards now used in FITS files to transmit UCDs
- Added TST (Tab-Separated Table) format
- Efficiency improvements for column-oriented access.
- Improved responsiveness when viewing table data for extremely
Version 2.3 (5 October 2006)
Various modifications and improvements:
- Removed Starlink logo from the top right corner of all TOPCAT windows,
including screenshots in documentation.
New logos (Starlink, Astrogrid, VOTech, Bristol)
are added in About window.
- Added new Add Sample Subset,
Add Head Subset and
Add Tail Subset
utility tool buttons to the
- Direct MySpace access using
URLs is now provided - see new Section 4.2.
- Added time conversion functions between MJD and Decimal Year.
- ISO-8601 column numerical values (e.g. in plots) are now by default
Decimal Year rather than Julian Epoch. The numerical values are quite
close, but Decimal Year is probably more what you'd intuitively
-J flag to
topcat startup script
for passing flags directly to Java.
- Added Sample (as opposed to Population) Standard Deviation/Variance
calculation options to the Statistics Window.
- Improved listing for functions in Appendix B of user document
(subsection for each function class).
- Modified presentation of HTML version of user document using CSS.
- Fixed bug (introduced at v2.2-1) which made table display and adding
columns slow, and column widths the wrong size.
- Fixed bug (introduced at v2.0) which prevented Exact matches using
non-numeric columns. Exact match now also deals with array-valued
- Fixed PLASTIC bug which was ignoring ID argument of
- Fixed bug in coordinate conversion that caused bad behaviour in the
presence of malformed input coords.
- Fixed bug with plotting very large or very small axis labels in
- Fixed a couple of minor crossmatching bugs (which would not have
Version 2.3-1 (Starlink Hokulei release)
- Output to MySpace can now be streamed, if running under J2SE1.5 or
- Intercept OutOfMemoryErrors during 3D plotting to give an explanatory
- Fixed bug in axis range checking.
- Fixed bug in handling of single quotes in FITS file metadata.
- Concatenation column assignments now smarter for fully compatible
- Some optimisations for very large files.
- Added Vega<->AB magnitude conversion constants to
- Encapsulated PostScript exported from graphics windows is improved.
These files should now print when sent directly to a printer,
and the image size is now guaranteed sensible for a portrait
- Added hyperbolic trig functions
tanh and inverses)
(sinh, cosh, tanh and inverses).
- Added cosmology distance calculations in class
- Column selector panels in graphics windows are now in scrollers.
Version 3.0 (5 July 2007)
- This release includes major visualisation improvements and some changes
to the plotting user interface:
- 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.
- 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.
- The Statistics Window can now
calculate quantiles (median, quartiles, .001, .01, .99 and .999)
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
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
- 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
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
Version 3.0-1 (Starlink Puana release)
- Added error bars capped by arrows.
- Fixed bug which caused error bars in legend to draw in the wrong colour
in EPS output.
Version 3.1 (29 August 2007)
- You can now annotate plotted points using
text labels in
2d and 3d scatter plots - use the Draw Label
() button to assign a column containing label text.
- Radial axis control in sphere plot is now not visible by default -
you need to click the Radial Coordinates ()
button in the dataset toolbar to enable it.
- New Show Legend () button in plot windows
determines whether a legend will be displayed next to the plot.
- New Hide Legend checkbox in style editor windows which
allows subset legend entries to be excluded from the displayed legend
Version 3.2 (28 January 2008)
- Considerably improved display of per-table metadata in the
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
- 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.
-exthub flag which starts a new external
- 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
-stilts convenience flag so you can easily
run STILTS from a TOPCAT installation.
- Fix calculation error in
- 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
- 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
- Starting an external hub now works more reliably.
Version 3.3 (19 August 2008)
- 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
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.
-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
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:
For more discussion see Section 9.
- New SAMP Panel at the bottom of the
Control Window summarising status
- New SAMP Status () toolbar button in
Control Window, which pops up new
- Other slight rerrangements of toolbar buttons and menu items
in Control Window
Broadcast Row checkbox added near Activation Action
in Control Window
- 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.
- 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)
- Note Sybase ASE works (documentation edit only)
- Fixed bug which caused SIAP queries to fail every time.
- SIAP load dialogue now has name resolution capability.
- Added SSAP load dialogue. Basic functionality only.
- Added documentation for previously-unadvertised
SIAP/SSAP load dialogues.
- Fixed bug which caused registry queries (Cone, SIA, SSA) to fail
for Java 1.6.
- Fixed bug which caused blank Contact field in registry query
- Can now query registry for more registry services.
- Fits BINTABLE TZERO/TSCAL value reading improvements:
- Columns with integer TZERO values now read as integers
rather than floating point values where possible.
This includes unsigned longs ('K'), which were previously
represented as doubles with lost precision.
Unsigned longs which are too large however (>263)
are read as nulls.
- Byte-valued columns can now be written out by
handler as signed byte values (TFORM=B,TZERO=-128)
rather than signed shorts (TFORM=I).
- More comprehensive testing.
- Fixed bug in calculating value scaled double ('D') values.
- Fixed bug in typing value for scaled float ('E') arrays.
- Added column selector documentation Appendix A.1.4.
- Fix bug when decoding
- Fix error reporting bug in registry search.
- Report application name and version in User-Agent header of outgoing
- Provide aliases
-ssap command line flags.
- Fix SIA and SSA queries to avoid exponential notation in parameters;
there is currently no standard concerning numeric representations,
but this avoids problems with some servers.
- The fixed length Substring Array Convention for string arrays
is now understood for FITS binary tables.
- Fixed so that attempting to run services under unfavourable firewall
conditions does not cause startup to hang.
- Minor SAMP bugs fixed (JSAMP upgraded to 0.3-1).
Version 3.4-2 (17 July 2009)
- Plot windows now allow a plot title to be set from the
Configure Axes and Title window
- Loading message now displayed in control window table list
when table is being loaded from PLASTIC or SAMP, or during startup.
- Incoming and outgoing SAMP
load.table messages now use
name parameter, which gives a better chance of a
useful human-readable name being attached to transmitted tables.
- Sexagesimal delimiters can now be spaces as alternative to colons
in Cone/SSA/SIA load dialogues.
- GAVO load dialogue updated in line with modified database service.
- Work around J2SE mark/reset bug when loading table direct from URL.
- Produce null rather than nonsense results from sky coordinate
conversions with unphysical latitudes.
- Produce null rather than questionable results from sexagesimal
conversions with mins/secs out of range.
- Startup script improved to provide some cosmetic improvements for
Mac users: the TOPCAT icon is shown in the dock rather than the
generic Java icon, and the menu application name is set to
"TOPCAT" rather than the classname. Note these don't take effect
if running directly using
- STILTS run using
topcat -stilts from standalone jar
can now correctly report starjava revision.
Version 3.4-3 (31 July 2009)
- Fixed two bugs related to drag and drop: intermittent failure of drop
(Mac only?), and application crash when making a drop that fails.
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.
- 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
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
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.
- 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
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
- 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
- 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 "
-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
on the command line, it was common to run out of memory when working
with large tables.
Now, the default storage policy is "
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.
-disk is still permissible, and may help in
Running out of memory is still a possibility, but should be much
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.
- 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 command-line flag has been added
for convenience so that the TOPCAT jar file can be used
easily as a JSAMP toolkit.
- Namespacing of VOTable documents made more intelligent, and
configurable using the
- 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
- 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.
- 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
have been withdrawn from use; they were probably not widely used,
and are of minimal usefulness with the new load window toolbar
- 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
- Plot windows can now export to PDF as well as other formats.
- Fixed a bug which caused an error when attempting to load multiple
files from the command line.
- Improve documentation of 3D windows, including zoom options.
- Fixed a bug which caused an error when attempting to do cone/SIA/SSA
search from directly supplied service URL.
- Improve error reporting from multi-cone (etc) window.
- You can now cut and paste from the linear correlation coefficient
display in the 2-d plot style editor.
- Faster display of load window and VO menu options.
- Fixed internationalisation bug which could cause cone searches etc
to fail in locales that use "," for a decimal point.
- Registry searches are now faster and less likely to run out of memory.
Registry-search-based operations (cone search dialogues etc) now
run in topcat-lite configuration as well as topcat-full.
- Now warns about non-active resources returned from registry searches
(which shouldn't happen).
- Improved helpfulness of error messages in multi-cone etc windows.
- Performance improvements when loading from VOTable documents
which contain many small tables, both
in general and in the special case of SIA/SSA results.
This makes a big difference in some cases.
Version 3.5-2 (24 March 2010)
- Add memory monitor
indicator in control window.
- Considerable performance and scalability improvements to the
For several common regimes, using default settings,
memory use has been decreased by a
factor of about 5, and CPU time reduced by a factor of about 3.
- Add optional tuning controls
(Tuning Parameters and Full Profiling)
to the crossmatching windows.
Experimentation with these can lead to significant performance
improvements for given matches.
- Fixed a crossmatch bug; it was giving a possibility of
suboptimal "Best Match Only"
match assignments when pair matching in crowded fields.
Crossmatch results thus may differ between earlier versions
and this one. Both are reasonable, but the newer behaviour is
more correct. In non-crowded fields, there should be no change.
- Add new functions to
array functions for constructing arrays,
and new aggregating functions
- Added Verbosity selector in multi-cone window.
- Improved logging of registry searches.
- Adjusted the way that data types are read from JDBC databases.
Date, Time and Timestamp type columns will now be converted to Strings
which means they can be written to most output formats
(previously they were omitted from output tables).
- Match Window documentation extended and somewhat reorganised
(they now have their own
- MacOS icons improved: thanks to Simon Murphy (ANU)
for this contribution.
- Memory management adjusted further - default (Adaptive) storage policy
now uses direct allocation (=
for intermediate-sized buffers
to avoid running out of java heap space.
- Further performance improvement for VOTable documents with
very many TABLEs.
- Fix bug in code for handling very large mapped FITS files.
This was causing fatal read errors in some cases.
- Fix issue when sending some SAMP messages
(unhelpful reuse of message tags).
- Fixed minor error when a directory in the file browser got deleted
- Fix minor scrolling bug in table and column windows.
- Fix histogram save/export bug: the exported table now has the same
X bounds as the currently displayed histogram.
- Withdraw embedded SPLAT application.
SPLAT could previously be used in some circumstances for in-JVM
display of spectra, but this facility didn't work well and was
presumably little used. You can still view spectra by configuring
an Activation Action to talk to an external spectrum viewer
(SPLAT or some other choice) via SAMP or PLASTIC.
- Withdraw SOAP server functionality. This has been deprecated since
v2.1. External control is better handled using SAMP (or PLASTIC).
If anybody misses this functionality, get in touch and I will
consider a similar but less SOAPy alternative.
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
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
- 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.
- 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
- Tables in TOPCAT now have private copies of column and table
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
The previous behaviour was an unwanted implementation side effect
which could sometimes cause problems in interaction with other
- 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
- Fixed (I hope) "Table no longer loaded" error when sending tables
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.
- 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
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.
- 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
- 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
- Sky coordinates can be received from other tools via SAMP and
used to set Cone, SIA or SSA position
BaSTI Load Dialogue:
- A new load dialogue is available for accessing the INAF-OATS
(Bag of Stellar Tracks and Isochrones) service --
code contributed by Marco Molinaro.
- 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.
- 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
- FITS files now store table names in EXTNAME (and possibly EXTVAR)
- 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
- HTML table output now writes cell contents which look like URLs
in HTML <A> tags.
- Basic authorization (
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
- Belatedly added STFC logo to About window.
- Add recommendation to use 64-bit java in large
table tips section.
- 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
- 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
- Fixed a couple of bugs relating to VOTable strict mode.
- Possibly fixed a not-well-characterised bug in
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.
- 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
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.
- 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
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
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
(in non-crowded fields there is generally no difference).
This replicates the matching performed by some other tools,
- New Match Algorithms,
2-d Cartesian Ellipses and
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
- 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
- Algebraic functions involving angles are now mostly available
using degrees as well as radians.
Coords class has been replaced by
providing sky coordinate functions,
and a new class
provides normal degree-based trigonometric functions
alongside the radian-based versions in
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
- TAP queries are now synchronous by default
(the Synchronous checkbox is now checked
- 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
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
jar files in the same way as from
- Add experimental system properties
- Added the experimental
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
-running flag which loads tables specified on the
command line into a existing instance of TOPCAT if one is already
- Add new
join function to
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
- 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
- Fix bug introduced at v3.7 related to labelling loaded files
(improper handling and propagation of
- 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
- 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:
(Note this plot change list was missing from the v4.0 release
and retrospectively added at v4.0-1).
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
- ellipses (with position angle)
- pair, triple, ... data point lines/polygons
- 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
- External or manually positioned internal placement.
Analytic function plotting in 2D
- Plot functions of X or Y coordinate using
TOPCAT expression language.
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
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
Output version is VOTable 1.2 by default.
VOTable output no longer includes
- You can now reference tables in multi-extension FITS files by name
(EXTNAME or EXTNAME-EXTVER) as an alternative to by HDU index.
- 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
Maths class in expression language.
- Add new
split functions for string splitting
Strings class in expression language.
- Some changes to the
it now works on non-numeric values,
gives the right answer for
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
- Add new class
to the expression language containing MOC-related functions
- Add explanatory section to manual on
-debug flag to manage logging messages better.
- 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 (
- 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 "
rather than "
for TAP capability unit values.
- Infinite floating point values are now correctly encoded
in VOTable output ("
-Infinity" as in
- 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
- 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
Version 4.0-1 (1 July 2013)
- Add read-only support for
(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.
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,
star.basicauth.* system properties
have been set up.
- Add options to calculate the (scaled or unscaled)
Median Absolute Deviation in the Statistics window.
- Now subscribes to SAMP
accepting resource list in TAP load dialogue "Select Service"
- The Columns window now makes a better attempt at displaying
non-standard per-column metadata of unusual types, in particular
- 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
First, fix it so that abandoned queries are properly terminated,
rather than continuing to hit the server until completion or JVM
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.
- 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
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
- 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
- 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
- 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
- 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
- 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
- A new experimental SAMP message
is supported, allowing SAMP clients to retrieve tables from
- URL selector fields in Activation Action window are now
- 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
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).
- 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
- 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
- Moved text documenting
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.
- 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
- Fixed TAP load dialogue so that by default it stays open after a
table is loaded (the Stay Open option is set true
- 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
to generate PNG files with transparent backgrounds.
- 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)
- Add (experimental) read-only support for Gaia/DPAC
- Add special variables
the expression language
to refer to the column and row counts in the underlying table.
The special variable
index is also deprecated in favour
- 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
and save it again, the columns now remain
instead of getting squashed to type
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)
- New Linear Fitting form for
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
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 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 "
These strings give the STILTS parameter assignment
corresponding to the current setting.
- 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
- Colfits files can now be accessed from streams,
not just uncompressed disk files
(though that's not necessarily a good idea).
- 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
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
- 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)
Version 4.2-3 (14 April 2015)
- New Kernel Density Estimate plotting option variants
added in the Histogram and Plane plot windows:
- 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
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
- Sketch mode is switched off by default.
- 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).
- 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).
- 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
- 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
Service Discovery, and
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
command is now issued at the CONFIG level
(visible using flags
- Fix a serious bug in processing of FITS bit vector
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
attempting to read a single-element bit vector column
resulted in an error making the file unreadable.
Values read from such columns are now presented as
- 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
that return array-valued results from array-valued parameters:
- 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
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
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)
- 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 "
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)
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,
Sky Ellipses only.
Thanks to Grant Kennedy (IoA) for reporting this bug.
- 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:
The details are somewhat experimental and may
undergo some adjustments in future releases (feedback welcome).
Weighted shading mode,
using shaped marker kernels on the screen pixel grid,
available for all plot types
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
- 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
the SRON rainbow variant developed by
some diverging maps
(HotCold, RdBu, PiYG, BrBG)
and a qualitative constant chroma/luminance map
- 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.
- Try harder to identify epoch columns (suitable for time plot),
in particular look for VOTable
xtype of JD or MJD,
units of year.
- Add some functions to the Tilings class
to do with solid angles
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
Version 4.3-3 (10 June 2016)
- 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:
in class Arrays;
in class Strings;
in new class Lists;
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
- The 2-argument
max functions in class
Arithmetic have been renamed
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
can now be written
- 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
- 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
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
- 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
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
- The TAP window now uses blocking HTTP requests rather than
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
- 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.
- 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
- 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
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
- Add some HEALPix-related functions to the
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.
- The TAP window now honours the
column_index column if it is present
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
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
/tables endpoint query options to the
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
- Fix minor border-painting bug in sky plot window
(sky outline painted on GUI components).
- Combiner option
in density, sky density and weighted plot layers.
Version 4.3-5 (23 September 2016)
- Add Lock Aux Range action to plot window toolbars
and Aux Axis Control
This lets you prevent the display from updating the Aux colour ramp
range during navigation.
It also affects some dynamic Auto-Scale range calculations
in a similar way.
- Fix aux ranging bug in some plot types
(SkyDensity, Healpix, Density, Weighted)
that used an aux data range too small to show colour variations
when Aux scaling was logarithmic
and negative data values were present.
- Add Registry menu to TAP load window, allowing list of RegTAP
registries to be updated (as for other VO windows).
- Improved performance (better memory use, faster) of some plot types
(SkyDensity, Healpix, Density, Weighted).
Version 4.4 (8 March 2017)
- The GUI has changed in the Form tab
of plot window
Data Layer Control panels.
To add (and remove) forms there is now a
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
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
- Various tweaks to the details of how plots are positioned on
the screen or in output graphics files.
- Fixed the match score (distance measure) for the
Sky+X and Sky+XY
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
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
- 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).
- 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
- Remove spurious padding from EPS graphics output.
Next Previous Up Contents
Up: Release Notes
TOPCAT - Tool for OPerations on Catalogues And Tables
Starlink User Note253
TOPCAT web page: