You are here: LIGOWiki>Computing Web>UserGuide>SoftwareProjects>MetaIO (2022-05-19, Attach
This package contains a library for parsing LIGO_LW Table files, plus several C programs based on the library, plus a few Tcl scripts which do related things. The metiao library can read XML files compressed with the gzip compression algorithm. Metaio is available via the lscsoft repository, from source of via LIGOtools.

The metaio package includes:
  1. A library (libmetaio) which allows a C program to parse a file containing a metadata table in LIGO_LW XML format. Note that, prior to version 6.0, these functions were contained in the library libdataflow.a in the 'dataflow' ligotools package.
  2. Utilities to manipulate metadata tables in LIGO_LW files:
    • lwtscan to print the table's columns and the number of rows
    • lwtcut to select certain rows from a table based on a numeric comparison and/or row number, report the number of matching rows, and optionally write the matching rows to a new LIGO_LW file
    • lwtprint to print selected columns/rows as plain text
    • lwtdiff to compare the data in two files (allowing for formatting variations which do not affect the content)
    • lwtselect to extract a single Table object from a LIGO_LW file containing multiple Table objects
    • concatMeta to concatenate LIGO_LW files containing database table data
  3. The Matlab MEX-file readMeta, which reads the contents of a LIGO_LW metadata file into Matlab arrays.
Note that the LIGOtools binary packages only contain only static libraries and executables, whereas the lscsoft distribution and version built from souce contain static and shared libraries and dynamic executables.

Project Librarian

Contact the Computing-Discuss mailing list if you have questions about metaio.


Typing lwtscan , lwtcut , lwtprint , lwtdiff , lwtselect , or concatMeta without any arguments will print out usage information - in most cases, rather detailed.

The utility programs concatMeta and lwtselect in this package use the tclshexe program from the LIGOtools package 'tclexe', so that package must be installed and active if these utilities are used. The other utility programs are standalone C programs, so do not require any other packages to be installed.

By default, lwtprint uses a comma to separate the values it prints out. To use a space as a separator, use the -d option, e.g.:
lwtprint myfile.xml -d " "

Example C program to perform a simple coincidence test on two input LIGO_LW files with events, e.g. from the gds_trigger table: find_coinc.c . To compile this, do:
gcc find_coinc.c -o find_coinc -lmetaio

There is no formal documentation about how to use the "Metaio" C library. However, you can see the comments in the source code for the library in metaio.c, and look at the utility programs lwt*.c as examples. Also see this code for an example of how to write out selected rows of an input LIGO_LW file: ivana_16jul02.c (search for "outEnv").

For more documentation about the metaio package, see the LIGOTools frequently asked questions page. In particular, the questions



Source distributions for MetaIO can be download from

Git Repository

The metaio source is located in the metaio Git repository:

Mailing Lists

Discussion of metaio should be directed to the Computing-Discuss mailing list.


-- PatrickBrady - 18 Aug 2015

SoftwareProjectsForm edit

Name metaio
Docs MetaIO
License GPL-2.0-or-later
Description LIGO Light-Weight XML Library
Topic revision: r5 - 2022-05-19,
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding LIGOWiki? Send feedback