What Is ASDF?
ASDF is a format for text files which can represent tabular data, such as arrays of scientific observations, in a simple and intuitive way. It also permits easy editing of such files.
YAML - One of the most important aspects of ASDF is its YAML support, which enables the file to be created and edited in any language, so long as the files can be validated using standard tools against a known set of rules. This makes it easier to build libraries which will allow users to create and edit ASDF files without violating the YAML syntax.
Tree Segment - ASDF uses a YAML segment called the Tree to define the relationships between the data and metadata, allowing complex relationships to be expressed more clearly. It may contain arbitrary mappings and sequences of ASDF objects, each containing a single key and associated value. The values may be a number, a string, a numerical scalar, or a special tagged ASDF object.
Binary Blocks - In addition to the YAML tree, ASDF supports binary blocks, which are arranged in a treelike fashion. The structure is designed to be efficient, allowing a single mapping or sequence to access the entire data set within a block of binary. This enables the Tree to expand and contract efficiently without requiring any additional updates elsewhere in the file.
WCS Information - ASDF supports WCS information that is structured around a set of transformation steps, which define the conversion between coordinate systems. This is very useful for describing the physics involved in a transformation, as well as the actual inputs and outputs of the transformation.
Compression - ASDF supports compression via a copy-on-write memory mapped semantics. This reduces the amount of space that has to be devoted to storing the file, and thus allows for smaller sizes to be stored in the file. This is beneficial for astronomical data which is typically stored in small numbers of files, but may be accessed many times over the course of a day or year.
Asdf has been built to be highly extensible, allowing developers to write plugins that can implement virtually any functionality desired. Plugins can be installed, and configured, very easily.
Tool Version Management - Asdf provides a simple set of commands for adding, updating and removing software versions. Unlike the old method of having to use multiple CLI version managers, asdf has all of these features in one place.
Defaults - All defaults can be set in the.tool-versions file, and asdf will automatically look for this file in the subdirectory it finds, if no such file exists, asdf will then use the defaults you have set there instead.
Performance - asdf is a command line interface that performs a lot of resolution work for every command it executes, so you can expect some overhead when the command is invoked. This is probably not much, but it can add up.
Conclusion - ASDF also supports a number of languages, enabling it to be used by anyone with the right knowledge base. It has hundreds of plugins and can be easily customized to suit almost any language or database, so it can be used for a variety of different applications.