A gene regulatory network (GRN) consists of genes, transcription factors, and the regulatory connections between them that govern the level of expression of mRNA and proteins from those genes. The dynamics of a GRN is how gene expression in the network changes over time. Over a period of several years, our group has developed a complex MATLAB software package, called GRNmap, that uses ordinary differential equations to model the dynamics of small- to medium-scale GRNs.

Using a penalized least squares approach, GRNmap estimates production rates, expression thresholds, and regulatory weights for each transcription factor in the network based on timecourse gene expression data (typically generated by DNA microarrays, but amenable to data from other technologies), and then performs a forward simulation of the dynamics of the network. Our approach is described in the paper, Dahlquist, K.D., Fitzpatrick, B.G., Camacho, E.T., Entzminger, S.D., and Wanner, N.C. (2015) Parameter Estimation for Gene Regulatory Networks from Microarray Data: Cold Shock Response in Saccharomyces cerevisiae. Bulletin of Mathematical Biology, 77(8), 1457-1492, DOI: 10.1007/s11538-015-0092-6. Although a GRN from budding yeast was modeled in that paper, GRNmap can be used with any species.

The code from that paper underwent further development to add new features: an option to use a Michaelis-Menten production function as well as the sigmoidal production function originally described in Dahlquist et al. (2015), the ability to input replicate expression data instead of the means for each timepoint, and the option to include data for experiments in which a transcription factor was deleted from the network, among others.

The large number of developers and time span of development led to a code base that was difficult to revise and adjust. In September 2014, we moved the code to a GitHub repository under the open source BSD license and began the process of bringing it into alignment with best practices for software engineering and scientific computing. We refactored the script-based software with global variables into a function-based package that uses an object to carry relevant information from function to function. This modular approach allows for cleaner, less ambiguous code and increased maintainability. We have also implemented a unit-testing framework. We added a simple user interface, removing the need for users to edit MATLAB code and used the MATLAB compiler to create an executable file that can be run on any Windows machine without the need of a MATLAB license, increasing the accessibility of our program.

GRNmap output can be visualized with our sister project, GRNsight: a web application and service for visualizing models of gene regulatory networks.