Skip to content
Ben Stabler edited this page Mar 18, 2017 · 36 revisions

Open Matrix

The open matrix file format (or simply OMX) is based on the open-source file storage technology HDF5. OMX files can store multiple matrices in one file, can include multiple indexes/lookups, and can contain attributes (key/value pairs) for both matrices and indexes. Once created, OMX files can be manipulated and examined using existing platform tools. The first release of the OMX specification is available here and has implementations for multiple languages. A GUI viewer is available for Windows, Linux, and Mac which allows exploring OMX datasets directly. We hope for the modeling industry to adopt the OMX standard, and we will periodically review the specification to make revisions as necessary.

Why is OMX important?

The justification for the new format was simple — to create an industry standard matrix format for storing and transferring matrix data. We believe that an open, common format for matrix data across models and software packages will make model development and application easier. We also believe that a standard format for a key data structure will help spur industry research and innovation, similar to what the ESRI Shapefile did for GIS. An open matrix data exchange format will enable university researchers, students, public agencies, and practitioners to collaborate in ways that are currently impossible.

Our hope is that existing model systems can be retrofitted to use OMX files instead of proprietary matrix files from software vendors, in order to foster collaboration and data sharing among agencies and with the larger public.

Getting Started

There are a few ways to get started with OMX:

News

03/18/17 Moves

02/01/17 Added GISDK macro for exporting OMX matrices from TransCAD and Cube script for exporting OMX matrices from the next release of Cube.

05/19/16 - Added C++ classes for some basic OMX I/O.

02/27/16 - This GitHub project and Wiki is now the single home of all things OMX. This means the previous site and the google group are no longer maintained.

10/22/15 - Andrew Rohne created a Ruby API and a 64bit Cube to OMX converter.

05/28/2015 - TRB Planning Apps meetup had about 15 people, which was not bad given our time slot. We discussed progress on OMX, and also an open network format. We generally agreed that a simple network format could be done, but beyond that, the definition of a network varies so much, that it would be difficult to agree upon a standard. And, it would be even more difficult to actually get it adopted in practice. For a simple network format, INRO suggested just using open street map XML. TransCAD has native support for OMX in version 7 and Cube has started looking into supporting the format as well. OMX is now being used in a few new models too, with Cube, VISUM, R, and Java.

02/10/2015 - TRB meetup went well. We're getting closer to industry wide vendor support for OMX! One neat idea - store centroid Xs and Ys as lookups in order to make mapping OMX data easier. We're planning to meet again at the TRB Planning Applications conference in May. Stay tuned.