Home      Publications      Teaching      Software      Hardware      Dissertation

Scientific Software


Overview:Smoldyn is a spatial stochastic simulator for investigating chemical and biochemical reaction networks in complex geometries. It uses a Brownian dynamics algorithm for reaction-diffusion systems at the Smoluchowski level of approximation.

See the main Smoldyn web page here.


Overview: HillSim analyzes and optimizes models of biological signaling networks.  These networks are comprised of nodes and arrows, where nodes typically represent signaling proteins, and arrows typically represent causal influences whereby one protein can activate or inactivate another protein.  While HillSim can simulate the dynamics of a model signaling network, it is best for analyzing network steady-state properties.  It calculates steady-state dose-response behaviors for network nodes, fits them to Hill functions, and compares these fits to "target" dose-response behaviors that the user inputs.  HillSim can also optimize the signaling model parameters so that the model dose-responses will match the target dose-responses as closely as possible.

Platform: Mac, Windows, or Linux.

Current version: 1.0

Download: A downloadable HillSim package with the source code, documentation, makefiles, example files, and binaries is available as a .tgz format for Mac and Linux users, HillSim.tgz, or as a .zip format for Windows users, HillSim.zip.

1.0 (11/17/08) - First public release.


Overview:  SpectFit is an interactive non-linear data fitting program.  It is reasonably easy to use and is powerful enough for a wide variety of routine curve fitting.  Strong features are Fourier data analysis, highly versatile fitting methods, and complete documentation.

Platform:  Macintosh OS X.  SpectFit uses Macintosh toolbox routines.

Current version:  2.0

Documentation:  The manual includes instructions on how to use SpectFit, a complete list of functions, and documentation for the source code in the main file.  It is available as a pdf or a Word document.

Download:  The file is stored as a self-extracting archive.  Downloading will put a file called SpectFit.sea.hqx on your disk.  Double clicking that produces a file called SpectFit.sea, which can be killed, and a folder called SpectFit.  The executable program, a sample data file called "sample1", and a sample fit to the data called "samplefit", are in the folder.  Download.

Source code:  The main program for SpectFit is in SpectFit.h and SpectFit.c.  These call the following library files: BasisFn.c, BasisFns.c, Cn.c, DiskIO.c, errors.c, math2.c, PlotX.c, random.c, Rn.c, RnLU.c, RnSort.c, Set.c, Spectra.c, string2.c, Utility.c, VoidComp.c, and their header files.  These files are available below.  All code is in ANSII C, plus some calls to Macintosh toolbox routines.

History:  Major work in April, 2002.
10/2002: fixed incorrect error estimates for fitting parameters.

Known bugs:  None.


Overview:  Rebinding was written solely for the serial ligation research that was published in Physical Biology.  All of the parameters of the program are in the code rather than entered by a user, and the output is just text.  Thus, I expect that this program will only be useful for people who want to check or follow up on this component of my research.

Platform:  All, because only the original source code is provided here (the compiled version would be useless since all the parameters are in the code).

Documentation:  The code contains a reasonable number of comments that should make it decipherable.

Source code:  The code is in Rebind.c.  This calls the library files: math2.c, random.c, and their header files, which are available below.  All code is in ANSII C.

History:  The first version was written in 2002; it was completely rewritten in 2003 and modified substantially in 2004.

Known bugs:  None.


Overview:  Helices was written for research on the shapes of bacterial cytoskeletal polymers, including MinD, MreB, and FtsZ.  This work has been submitted to the Biophysical Journal for publication.  Avaiable here is the complete source code that was used for the research in case others want to check or follow up on this component of my research.  This code is reasonably well written, but still not particularly friendly to work with.

Platform:  All, because only the original source code is provided here (the compiled version would be useless since all the parameters are in the code).

Documentation:  The code contains some comments.  Also, all library files have documentation that is included in the package.

Source code:  The code is provided with a self-extracting archive HelicesSource.sitx.  All code is in ANSII C.

History:  Most of this code was written in 2004 to 2006, with a few slight changes in 2007.

Known bugs:  Some functions in RandomWalk.c may have some bugs.  Otherwise I think it's pretty good.

Library Files

Below is a list of software libraries that I have written, entirely in C. They are available for others to use and modify, provided that their use is acknowledged. Significant fractions of a few routines were copied nearly verbatim from Numerical Recipes in C, which is noted where appropriate. No warrenty is made regarding the performance, suitability, or accuracy of any portion of code or documentation. I believe that this code is essentially free of bugs, but some of these packages are much less complete than would be desired.

Cn (9/2011) - Vector arithmetic with complex numbers.   Cn.c   Cn.h   Cn_doc.pdf   Cn_doc.doc

Constants (9/2011) - Header with some fundamental constants.   Constants.h   Constants_doc.pdf   Constants_doc.doc

DiskIO (10/2011) - Disk input and output for text files.  DiskIO.c   DiskIO.h   DiskIO_doc.pdf   DiskIO_doc.doc

dynsys2 (4/2014) - Dynamical systems simulation and ODE integrator.  dynsys.c   dynsys.h   dynsys_doc.pdf   dynsys_doc.doc

Geometry (7/2019) - 2-D and 3-D geometry mathematics.  Geometry.c  Geometry.h  Geometry_doc.pdf  Geometry_doc.doc

gnuPipe (9/2018) - Piped output to gnuPlot for simple graphics.   gnuPipe.c   gnuPipe.h   gnuPipe_doc.pdf   gnuPipe_doc.doc

Ising (9/2011) - Simulation of various Ising type lattices.  Ising.c   Ising.h   Ising_doc.pdf   Ising_doc.doc

math2 (3/2019) - Special functions, integer functions, and more.  math2.c   math2.h   math2_doc.pdf   math2_doc.doc

minimize (9/2011) - Stochastic optimization.  minimize.c   minimize.h   minimize_doc.pdf   minimize_doc.doc

opengl2 (3/2019) - Graphics routines using OpenGL.  opengl2.c  opengl2.h   opengl2_doc.pdf   opengl2_doc.doc

Plot (9/2011) - Old graphics routines using Macintosh toolbox.  Plot.h   PlotX.c   Plot_doc.pdf   Plot_doc.doc

Plot3D (9/2011) - Old 3 dimensional plotting using Macintosh toolbox.  Plot3D.c   Plot3D.h   Plot3D_doc.pdf   Plot3D_doc.doc

Quantum (9/2011) - Quantum mechanics arithmetic.   Quantum.c   Quantum.h   Quantum_doc.pdf   Quantum_doc.doc

queue (4/2012) - Routines for a queue type data structure.  queue.c  queue.h   queue_doc.pdf   queue_doc.doc

random2 (5/2016) - Random number functions.  random.h   random.c   random_doc.pdf   random_doc.doc

Rn (9/2011) - Vector arithmetic with real numbers.   Rn.c   Rn.h   Rn_doc.pdf   Rn_doc.doc

RnLU (9/2011) - LU matrix decomposition with real numbers.   RnLU.c   RnLU.h   RnLU_doc.pdf   RnLU_doc.doc

RnSort (6/2016) - Manipulation of sorted vectors of real numbers.  RnSort.c   RnSort.h   RnSort_doc.pdf   RnSort_doc.doc

rxnparam (3/2019) - Parameters for Smoldyn bimolecular reactions.   rxnparam.c rxnparam.h rxnparam_doc.pdf   rxnparam_doc.doc

Set (9/2011) - Routines for a set type data structure.   Set.c   Set.h   Set_doc.pdf   Set_doc.doc

Sphere (10/2015) - Mathematics for spheres and spherical coordinates.   Sphere.c  Sphere.h Sphere_doc.pdf   Sphere_doc.doc

string2 (3/2019) - String manipulation and parsing.  string2.c   string2.h   string2_doc.pdf   string2_doc.doc

SurfaceParam (11/2010) - Parameters for molecule-surface interactions.  SurfaceParam.c   SurfaceParam.h   SurfaceParam_doc.pdf   SurfaceParam_doc.doc

VoidComp (9/2011) - Functions for comparison of void pointers.   VoidComp.c   VoidComp.h   VoidComp_doc.pdf   VoidComp_doc.doc

Zn (3/2019) - Tensor manipulation with integers.   Zn.c   Zn.h   Zn_doc.pdf   Zn_doc.doc