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

LibDoc - This is a short document that gives an overview of all library files, including restrictions on use.  Here is the legally important paragraph: “These routines were all written by myself.  However, significant fractions of a few routines were copied nearly verbatim from Numerical Recipes in C,  which is noted where appropriate.  A few other books have proved especially helpful as well and are listed below.  The libraries documented here are available to and may be modified by anyone for non-commercial use, but their use should be acknowledged as appropriate.  Except for portions that have been copyrighted previously, the source code, the documentation, and the compiled programs called SpectFit and Smoldyn are copyrighted by myself.  No warrenty is made regarding the performance, suitability, or accuracy of any portion of code or documentation.”  LibDoc.pdf  LibDoc.doc.  The following list of files is woefully out of date.  Up-to-date library files are packaged with Smoldyn or HillSim.

BasisFn - Part of the core of SpectFit.  BasisFn.c  BasisFn.h  BasisFn_doc.pdf  BasisFn_doc.doc

BasisFns - Basis function modules for SpectFit.  BasisFns.c  BasisFns.h  BasisFns_doc.pdf  BasisFns_doc.doc

Cn - Vector arithmetic with complex numbers.  Cn.c  Cn.h  Cn_doc.pdf  Cn_doc.doc

Constants - Header with some fundamental constants.  Constants.h  Constants_doc.pdf  Constants_doc.doc

DiskIO - Disk input and output for text files.  UPDATED 12/8/06  DiskIO.c  DiskIO.h  DiskIO_doc.pdf  DiskIO_doc.doc

dynsys - Dynamical systems simulation.  Updated 8/20/04.  dynsys.c  dynsys.h  dynsys_doc.pdf  dynsys_doc.doc

errors - Error messages for SpectFit.  errors.c  errors.h  errors_doc.pdf  errors_doc.doc

Geometry - 2-D and 3-D geometry tests.  UPDATED 2/26/07.  Geometry.c  Geometry.h  Geometry_doc.pdf  Geometry_doc.doc

gnuPipe - Piped output to gnuPlot for simple graphics.  gnuPipe.c  gnuPipe.h  gnuPipe_doc.pdf  gnuPipe_doc.doc

Ising - Simulation of various Ising type lattices.  Updated 8/20/04.  Ising.c  Ising.h  Ising_doc.pdf  Ising_doc.doc

math2 - Assorted math functions.  UPDATED 12/8/06.  math2.c  math2.h  math2_doc.pdf  math2_doc.doc

opengl2 - Graphics routines using OpenGL.  UPDATED 2/26/07.  opengl2.c  opengl2.h  opengl2_doc.pdf  opengl2_doc.doc

Plot - Graphics routines using Macintosh toolbox.  Updated 8/20/04.  Plot.h  PlotX.c  Plot_doc.pdf  Plot_doc.doc

Plot3D - 3 dimensional plotting using Macintosh toolbox.  Plot3D.c  Plot3D.h  Plot3D_doc.pdf  Plot3D_doc.doc

Quantum - Quantum mechanics arithmetic.  Quantum.c  Quantum.h  Quantum_doc.pdf  Quantum_doc.doc

queue - Routines for a queue type data structure.  Updated 8/20/04.  queue.c  queue.h  queue_doc.pdf  queue_doc.doc

random - Random number functions.  UPDATED 12/8/06.  random.h  random.c  random_doc.pdf  random_doc.doc

Rn - Vector arithmetic with real numbers.  UPDATED 12/8/06.  Rn.c  Rn.h  Rn_doc.pdf  Rn_doc.doc

RnLU - LU matrix decomposition with real numbers.  RnLU.c  RnLU.h  RnLU_doc.pdf  RnLU_doc.doc

RnSort - Manipulation of sorted vectors of real numbers.  UPDATED 12/8/06.  RnSort.c  RnSort.h  RnSort_doc.pdf  RnSort_doc.doc

rxnparam - Parameters for Smoldyn bimolecular reactions.  rxnparam.c  rxnparam.h

Set - Routines for a set type data structure.  Set.c  Set.h  Set_doc.pdf  Set_doc.doc

SimCommand - Routines for Smoldyn's command interpreter.  UPDATED 12/8/06.  SimCommand.c  SimCommand.h  SimCommand_doc.pdf  SimCommand_doc.doc

smollib - The core of the Smoldyn program.  UPDATED 2/26/07.  smollib.c  smollib.h

smollib2 - Command modules for Smoldyn.  UPDATED 2/26/07.  smollib2.c  smollib2.h

Sphere - Conversions between various spherical and angular coordinates.  UPDATED 12/8/06.  Sphere.c  Sphere.h

Spectra - Part of the core of SpectFit.  Spectra.c  Spectra.h  Spectra_doc.pdf  Spectra_doc.doc

string2 - Assorted functions for strings.  UPDATED 12/8/06.  string2.c  string2.h  string2_doc.pdf  string2_doc.doc

Utility - A few Macintosh specific utilities.  Utility.c  Utility.h  Utility_doc.pdf  Utility_doc.doc

VoidComp - Functions for comparison of void pointers.  VoidComp.c  VoidComp.h  VoidComp_doc.pdf  VoidComp_doc.doc

Zn - Tensor manipulation with integers.  Zn.c  Zn.h  Zn_doc.pdf  Zn_doc.doc