
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,
> svn co https://simupop.svn.sourceforge.net/svnroot/simupop/trunk simuPOP
- 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.pyprocess can be used, it is recommended that you download and install scons to build simuPOP. Unlike the Pythondistutil.pymodule, 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 addc:\pythonXX\scriptsto 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-develor 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-devpackage to get this header file. Please install packagebuild-essentialif 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: runningnconcurrent processes.prefix=/path/to/local/dir: install simuPOP to a local directory.- One or more of
std,op,la,laop,baandbaop: 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.