Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
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.
There are a few ways to get started with OMX:
- Download the example OMX file and the OMX viewer.
- Try the Python or the R APIs.
- Export an OMX matrix from EMME, VISUM, TransCAD, or Cube using their built-in OMX exporter.
10/11/17 All major commercial travel modeling packages now include native support for OMX!
03/18/17 Split APIs into separate repos #24
05/19/16 - Added C++ classes for some basic OMX I/O.
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. 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.