To support our modeling work and related data management and analysis, we have developed a library of functions and tools in C that automates many common data input/output tasks and provides a number of convenient functionalities. We are calling this "toolbox" the "Environmental Modeling Utilities", or EMU. A graduate student and a staff programmer at the University of Washington are currently working together to polish EMU for public release to the wider community within the next 6 months.
EMU is intended to complement widely used, commercial and public-domain data analysis and visualization packages, such as Matlab, IDL, and Ferret. It has been developed with two goals in mind: 1, to create a library of functions that would make it easier to write new programs to perform task related to data re-formatting, re-packaging, or analysis; and 2, to accumulate a collection of related programs or applications that perform common tasks and may be re-used by other people in our group without knowledge of C. It is used as a pre-processor of large datasets for easy ingestion into visualization packages like Matlab, or into our models, and it allows us to write new applications rapidly. We have written about 20 applications already, to perform a variety of tasks that include: conversion of data format, calculation of climatologies (monthly means) and annual means from time series, extraction of time series of statistics for certain regions, calculation of temporal and spatial correlations, performing spectral and Empirical Orthogonal Function analysis, and manipulation of satellite image data. We fully support the scientific data format "netcdf", and soon we will build support for the GRID and POINT HDF-EOS interfaces in preparation for the upcoming launch of EOS-AM1 (to this end, last September Emilio Mayorga attended the HDF-EOS Workshop II at the Raytheon Information Technology and Scientific Services Corporation in Landover, Maryland, sponsored by ESDIS).
We chose to use C, a low-level programming language, to have maximum flexibility, maximum processing efficiency, and to have portability among operating systems. Currently EMU has been ported to Solaris, Linux, and Windows NT.
* And here is the e-mail from Miles that got the project officially started, after I (Emilio) had developed a loose and poorly programmed package that served as the base for EMU.
Emilio Mayorga, emiliom@u.washington.edu |