# STIL

## Starlink Tables Infrastructure Library

### Generic Java Table Handling for Astronomy

Latest: Version 4.0-2 released 10 June 2021; see change log.

- What is STIL?
- Features

- Generic
- VOTable

- Supported Formats
- Documentation
- Downloads
- Further Information

## What is STIL?

STIL is a pure Java library for generic input, output and processing of tabular data. It presents to the application programmer a view of a table which looks the same regardless of whether it came from a FITS file, a VOTable, an ASCII text file, a query on a relational database, or whatever. Thus the application doesn't have to worry about the storage format of tables either when reading or writing them, it can concentrate on doing processing. STIL's idea of a table is rich enough to include table and column metadata, and table cells which contain scalar or single- or multi-dimensional array data of numerical, string or other types. This is well suited to astronomical data, though it can be of use in other fields as well.

STIL comes with a range of supported input and output formats (including VOTable, FITS, Feather, ECSV, SQL, ASCII, CSV, CDF, MRT, Parquet, GBIN) and can be extended to cope with others.

## Features

### Generic Features

The generic table I/O has the following features:

- Many table serialization formats supported
- Pluggable architecture allows addition of new formats
- Any-to-any format conversion is trivial
- Access to large tables is possible (not constrained by memory, streaming supported where possible)
- Framework for parallel processing of large tables
- Multi-table read and write for appropriate formats
- Full javadocs and programmer's tutorial/overview documentation
- GUI components provided including table drag and drop support

### VOTable Features

STIL includes sophisticated facilities for VOTable I/O which can, if desired, be used largely independently of the rest of the package. As well as the general features listed above this has the following features:

- Reads and writes all VOTable serialization formats (TABLEDATA, FITS, BINARY, BINARY2)
- Full DOM access to hierarchical document structure, without heavy memory use
- Hybrid SAX/DOM parsing for efficient input
- Flexible table output (you can construct hierarchical documents)
- Parsing does not attempt network connections to retrieve VOTable DTD/schema
- Best-efforts parsing of non-conforming/invalid documents
- Full compatibility with VOTable 1.0, 1.1, 1.2, 1.3 and 1.4 standards
- Full ID/ref crossreferencing

One section of the user guide is dedicated to STIL's VOTable-specific features.

## Supported Formats

Formats including the following are currently supported for table input:

- FITS
- VOTable
- CDF
- ECSV
- MRT
- Parquet
- Feather
- SQL
- ASCII
- Comma-Separated Value
- IPAC
- GBIN

and the following for table output:

- FITS
- VOTable
- ECSV
- Parquet
- Feather
- SQL
- ASCII
- IPAC
- Comma-Separated Value
- Human-readable text
- HTML
- LaTeX

## Documentation

There are two main sources of documentation for STIL:

- The main programmer's overview document is SUN/252, available as:

- Multi-page HTML document
- Single HTML document
- PDF file
- XML source

- The definitive API documentation is also available:

- javadocs

You can download the full documentation set (SUN/252 in various forms plus javadocs) in the documentation zip file.

## Downloads

The current version of STIL is 4.0-2, released 10 June 2021.

STIL is released under the LGPL (other licenses may be available on request), and the source code is available at https://github.com/Starlink/starjava. The main components are available here:

- Standalone jar file (2.4M) - compiled classes as monolithic jar file
- Zip archive of jar files (2.2M) - compiled classes as individual jars
- Documentation zip file - HTML/PDF user document and javadocs
- Source code zip file (908k)

Alternatively you can download STILTS or TOPCAT in one of their forms - both of these applications contain the whole of STIL.

STIL is not currently available in a maven-friendly repository, but I'm working on it - I hope to make this available mid-2021.

Previous versions can be found at ftp://andromeda.star.bris.ac.uk/pub/star/stil/. You can see the version history in the user document.

The current version of STIL has been developed using the Java SE 8, but is expected to work with any Java 8 or later version of the J2SE. STIL versions prior to v3.3-3 work with Java 6 or later.

## Further Information

If you like STIL, you'll love

STILTS
  the STIL Tool Set, a set of command-line tools for table manipulation.
TOPCAT
  a graphical tool for table browsing / plotting / analysis / editing which benefits from all STIL's features.

The following mailing lists exist for topics related to STIL and friends:

- topcat-user@jiscmail.ac.uk: Public list for questions, answers, discussions, bugs, comments, ...
- topcat-announce@jiscmail.ac.uk: Low-volume read-only list for release announcements and news items.

If you have any comments, questions, requests, bugs etc, please either use the topcat-user mailing list, or contact me direct:

- Author: Mark Taylor, Astrophysics Group, School of Physics, University of Bristol
- Email: m.b.taylor@bristol.ac.uk
- STIL WWW page: http://www.starlink.ac.uk/stil/