Subsections

1. The Basics

1.1 Introduction

Advances in electronic hardware and low-cost laboratory computers facilitate the recording of ever larger volumes of data from experiments, simulations, or monitoring applications. This enhanced ability to acquire information places new demands on the storage, management, and analysis of the resulting data flow. The rate limiting step for data acquisition often gets shifted from the hardware to the computer. In this manual we describe a component of our biomedical data management system, called ``graphicsio'', a computer file system for the storage of both multichannel time signals and the associated three-dimensional geometry of the sensor arrays. In graphicsio we have attempted to meet not only our specific needs but those of any researcher acquiring time signals from multiple, spatially distributed sensors. Specific examples of possible applications include geophysical exploration, mechanical deflection analysis, multichannel optical sensing [1,2], as well as our own research in computational electrocardiography [3,4,5,6,7,8,9,10] and experimental cardiac electrophysiology [11,12,13,14].

1.2 The Data

The graphicsio file system accommodates two different types of data, geometry and time signals. Each is usually acquired separately but they are often combined for purposes of display, simulation, and analysis. To facilitate code development, we have tried to share as much of the structure of the geometry and time signal files as possible within a single library. It is simpler, however, to view these as two different file types, and this is how the manual is organized.

1.2.1 Geometry data:

The first goal of the graphicsio file system was to store the complex, three-dimensional geometries that we acquire or generate in our work in electrocardiographic mapping. These geometries represent the organization of the sampling electrodes used in mapping, with geometry file node locations determined by electrode placement. Often the electrodes are attached to a physical surface such as the torso or heart surfaces, and so we group points into ``surfaces'' within the graphicsio geometry files. The definition of surface is not strict, however, so that nodes in the geometry file can represent points anywhere in a volume (eg., transmural needle electrodes in the heart). Geometries arise not only in experimental or clinical measurement studies, but in the geometrical meshes used in simulating electrocardiographic fields--here geometry file nodes are points in the model mesh.

For many steps in signal analysis, visualization, or simulation it is necessary to describe the spatial relationships between points in a geometry. When the nodes are regularly spaced, then each is described by indices (one for each dimension) and spatial relationship are implicit. For irregular geometries, on the other hand, polygons linking the nodes or often used to describe neighborhood relationships between points. If the nodes represent a surface, then the polygon are often triangles chosen according to some sort of optimality criterion. The most common of these is Delaunay, which maximizes the smallest angle of the triangle [15,16,17]. For nodes in a volume, tetrahedra replace triangles, but can also adhere to Delaunay optimality criteria. The graphicsio library includes polygonal elements of three types:

  1. Segments, which join two points in a line segment,
  2. Triangles, and
  3. Tetrahedra

It is often desirable to associate values to elements of the geometry. Examples include scalar indices to nodes or vector or tensor material properties to elements. In the graphicsio library it is possible to store and associate scalars, vectors, and tensors to either the nodes or the polygonal elements of the geometry. In summary, geometries consist most simply of a set of points, which may be connected into polygons, and both points and polygons may have scalars, vectors, or tensor values associated with them--the graphicsio geometry file includes all of this information.

1.2.2 Time signal data:

The second type of graphicsio file contains scalar values, (eg., electric potential, time, altitude) structured in channels of time-sampled signals. Each channel is a sequence of numbers assumed to be recorded (or generated) at a fixed sampling rate. Typical examples from our research include configurations with from 32-3000 channels and sampling rates and durations in the range of 500-1000 Hz. and 4-200 s., respectively. Associated with the data signals themselves are certain extracted or derived values, some of which may also be stored in a graphicsio data file with the signals.

1.2.3 Linking geometry and time signals:

The link between geometry and data files is important, often essential, whenever we attempt to examine or utilize explicitly the spatial relationships between data channels. Hence there is a mechanism in the graphicsio files for linking channels in the data file to specific physical locations described in the geometry file. Time series files may also contain the name of an associated data file.

1.2.4 Programming features of graphicsio:

There are several other features of the graphicsio file system that are important from a programming perspective:

  1. The system is backwards compatible with the existing times series file formats at the CVRTI. We can set up a data file that reads a set of .pak or .raw files.
  2. Many of the graphicsio files have ASCII equivalents, or at least partial equivalents, and there are programs that convert back and forth between ASCII and graphicsio file formats.
  3. The system is completely portable not only between Unix files systems, but also to and from DEC VMS.
  4. The graphicsio library routines are available in both C and Fortran versions.

The goal of this document is to describe the ideas behind the structure of the graphicsio file system for someone planning to use the library. We begin with a brief overview of the needs that drove the design and development of the graphicsio file system. We then present the overall structure of the graphicsio files, and outline the steps for programming with the library routines. We list briefly some examples of utility programs that use the graphicsio library and then describe each function with calling arguments and data types.


Rob Macleod 2004-10-20