The water research community has a strong tradition of developing and using open source software. One example is the US Environmental Protection Agency's program for simulating water distribution networks -- Epanet. In the summer of 2015, IBM Research contributed to the community with a software package for reading Epanet files into the open-source R environment for computing and graphics. I have written an application called epanetReader which is an add-on package for R that parses Epanet's simulation data for further analysis and visualization. The package is available through GitHub and the comprehensive R archive network (CRAN).
I've been using R since about 2008. I like its' ability to automate and document data wrangling, analysis, and visualization. I found R difficult to learn but the payoff has been big.
The project came about for a few different reasons related to research I've been doing on the optimization of water networks. I was developing some new algorithms and needed to make calculations based on the content of '.inp' files. Then I wanted to compare the results of my new algorithm to the results generated by by epanet. To make the comparison I needed to get the data from .rpt files. I also wanted to visualize my results quickly so that I could interpret simulations and create publication quality graphics.
Although it is possible to parse the files using an existing C library, the R environment is more convenient for rapid prototyping. R also has good capabilities for building highly customized graphics and using graphics libraries and creating animations.
I had written some R scripts to do these things. But when I tried to share the scripts with a colleague, the scrips weren't really usable. Lots of helper functions were loaded even though only one or two top level functions was needed. The top level functions were not documented so the only way to figure out what the arguments did was by looking at the code. R's packaging system sorts out these problems by requiring developers to document their functions and by keeping helper functions 'private' by putting them in a separate namespace.
There is a large community of academic, government, and industrial users of Epanet. I thought releasing the package would be a nice way of contributing to the community.
Visit http://github.com/bradleyjeck/epanetReader to see more details and download the application.
Also, visit my my blog