Your help is needed!

simuPOP is a large and evolving project and it needs your help in many ways. Even if you are not a C++ or Python expert, you can help simuPOP by

  • sharing your experience with simuPOP,
  • reporting bugs in simuPOP programs and documentations,
  • requesting features for your specific application,
  • contributing your script to the simuPOP online cookbook, and
  • suggesting ways to improve simuPOP, e.g. better ways to store a large amount of genotypes.

If you know how to program in C++ and/or Python and cannot wait for a new feature to appear, or if you would like to experiment some new feature by yourself, you can check out the subversion version of simuPOP and compile.

Prepare a development environment

You will first need a subversion client. A subversion client is mostly likely already available under *nix system. For windows, you may want to install tortoiseSVN.

  • Souce code: Check out simuPOP source using command,
If you are using TortoiseSVN, right-click and select SVN checkout ...
  • Boost C++ library: Download the boost C++ library from the boost website, decompress it to simuPOP's source directory. It should appear as a directory such as boost_1_37_0.
  • SWIG: If not already installed, download and install SWIG. Swig version 1.3.36 and later is recommended. Under windows, you need to install swigwin, and add the path to the executable to an environment variable $PATH (Control Panel -> system -> advanced -> Environment Variables).
  • Scons: Although the standard Python setup.py process can be used, it is recommended that you download and install scons to build simuPOP. Unlike the Python distutil.py module, scons is a real build system that can build several files at the same time, and ignore files that have already been built. Under windows, you need to add c:\pythonXX\scripts to environment variable $PATH.
  • C++ Compiler: Get a C++ compiler. This is usually not a problem for Linux/Solaris/MacOS systems because GNU gcc/c++ is widely available on these operating systems. Under windows, you can get a copy of the free Visual C++ Express edition from here. Note that this version only works with Python 2.6 and you will have to purchase a copy of Visual Stuidio.NET 2003 for previous versions of Python.
  • Python header files: The Python header files are usually installed with Python but you should install python-devel or similar packages if this file is unavailable.
  • zlib header files (*nix systems only): zlib and its header file zlib.h are usually available under a *nix system. However, for a Ubuntu system, you will need to install the zlib1g-dev package to get this header file. Please install package build-essential if you still get missing header files.

Build the subversion version of simuPOP

If you do not have scons, you can simply run

> python setup.py install

and Python will call swig to generate Python wrappers and build simuPOP. Otherwise, run

> scons install

Several command line options are available, they are

  • -j n: running n concurrent processes.
  • prefix=/path/to/local/dir: install simuPOP to a local directory.
  • One or more of std, op, la, laop, ba and baop: These correspond to the standard, long and short allele and their optimized versions. scons will only build specified modules if their names are provided in the command line. When you are testing a program, it is a good idea to build only the standard module to save building time.

Send a patch to the mailing list

After you have modified simuPOP source and added your own feature, it might be a good idea to merge your changes to the simuPOP trunk (main branch) so that it can become part of the official simuPOP release. In addition to the possibility of benefiting other users, the immediate benefit to you is that your code will be examined more carefully, and if it gets accepted, you do not have to patch future simuPOP versions when you upgrade simuPOP.

The process to generate a patch is as easy as

$ svn diff > patch.diff

Simply email this patch to the simuPOP mailing list with a detailed explanation.