连续空间中的凝聚模拟
ercs的Python项目详细描述
模拟在空间中进化的种群的合并 灭绝/再沉积模式下的连续体。模拟 支持:
- 一个n个体样本,其m位点位于 直径为L的圆环。
- 相邻位点间的任意重组率。
- 在固定时间发生的任意数量的事件 价格。
ercs同时支持python 2和3。
文档
下面是一个快速的例子,可以帮助那些不耐烦的人:
import ercs sim = ercs.Simulator(10) sim.sample = [None, (3, 2), (6, 4), (7, 0)] sim.event_classes = [ercs.DiscEventClass(u=0.5, r=1)] pi, tau = sim.run(1)
有关ercs的完整文档,请访问http://jeromekelleher.github.com/ercs。
安装
ercs取决于GNU Scientific Library, 必须先安装它,然后才能生成ercs模块。 幸运的是,这在大多数平台上都很简单。例如, 在debian或ubuntu上使用:
$ sudo apt-get install libgsl0-dev
或在软呢帽上:
$ sudo yum install gsl-devel
GSL可用于大多数包装系统;如果您的 平台,可以从源安装。
一旦安装了gsl,我们就可以使用 标准python methods。为了 例如,使用pip我们有
$ sudo pip install ercs
或者,我们可以手动下载包,将其解压缩,然后运行:
$ python setup.py build $ sudo python setup.py install
大多数情况下,这将编译和安装模块没有困难。
也可以下载 ercs来自github。
潜在问题
在GSL不作为本机打包的一部分提供的平台上 系统(或由于非根访问而在本地安装GSL) 找到正确的头和库可能会有问题 编译ercs时。例如,在freebsd上我们得到了一些东西 像这样:
$ python setup.py build ... [Messages cut for brevity] ... In file included from _ercsmodule.c:27: lib/ercs.h:26:25: error: gsl/gsl_rng.h: No such file or directory In file included from _ercsmodule.c:27: lib/ercs.h:73: error: expected declaration specifiers or '...' before 'gsl_rng' lib/ercs.h:94: error: expected specifier-qualifier-list before 'gsl_rng' _ercsmodule.c: In function 'pyercs_simulate': _ercsmodule.c:351: error: 'ercs_t' has no member named 'pi' _ercsmodule.c:356: error: 'ercs_t' has no member named 'tau' error: command 'cc' failed with exit status 1
可以使用gsl-config程序设置 将LDFLAGS和CFLAGS环境变量 它们的正确值:
$ CFLAGS=`gsl-config --cflags` LDFLAGS=`gsl-config --libs` python setup.py build
测试
ercs提供了一些测试用例来确保安装的顺利进行。 最好在安装后立即运行这些程序:
$ python tests.py
也可以在低级c库上运行一些测试。 为此,cd到lib目录并运行:
$ make check
这将构建C库测试用例并运行它们。如果编译失败, 可能需要像以前一样设置LDFLAGS和CFLAGS:
$ make CFLAGS="`gsl-config --cflags`" LDFLAGS="`gsl-config --libs`" check
测试平台
ercs已在以下平台上成功构建和测试:
Operating system | Platform | Python | Compiler |
---|---|---|---|
Ubuntu 8.04 | i386 | 2.5.2 | gcc 4.2.3 |
NetBSD 5.0 | i386 | 2.7.3 | gcc 4.1.3 |
Fedora 17 | i386 | 2.7.3 | gcc 4.7.2 |
Fedora 17 | i386 | 3.2.3 | gcc 4.7.2 |
Cygwin | i386 | 2.6.8 | gcc 4.5.3 |
Ubuntu 12.04 | x86-64 | 2.7.3 | gcc 4.6.3 |
Ubuntu 12.04 | x86-64 | 3.2.3 | gcc 4.6.3 |
FreeBSD 9.0 | i386 | 3.2.2 | gcc 4.2.2 |
FreeBSD 9.0 | i386 | 2.7.2 | gcc 4.2.2 |
FreeBSD 9.0 | i386 | 3.1.4 | clang 3.0 |
Solaris 11 | x86-64 | 2.6.4 | Sun C 5.12 |
Mac OSX 10.6.8 | x86-64 | 2.6.1 | gcc 4.2.1 |
Mac OSX 10.6.8 | x86-64 | 3.2.3 | gcc 4.2.1 |
Mac OS X 10.4.11 | ppc | 3.2.3 | gcc 4.0.1 |
Mac OS X 10.4.11 | ppc | 2.7.3 | gcc 4.0.1 |
Debian wheezy | armv6l | 2.7.3 | gcc 4.6.3 |
Debian squeeze | ppc64 | 2.6.6 | gcc 4.4.5 |
Debian squeeze | ppc64 | 3.1.3 | gcc 4.4.5 |
此外,还使用 以下处理器和编译器:
Platform | Compiler |
---|---|
Linux 2.6.18-164.15.1.el5 x86_64 GNU/Linux | Intel(R) C 11.0 |
Linux 2.6.32-5-amd64 x86_64 GNU/Linux | gcc 4.4.5 |
Linux 2.6.32-5-amd64 x86_64 GNU/Linux | clang 1.1 |
Linux 3.2.0-32-generic x86_64 GNU/Linux | gcc 4.6.3 |
Linux 3.2.0-32-generic x86_64 GNU/Linux | clang 3.0 |
Linux 3.2.27+ armv6l GNU/Linux | gcc 4.6.3 |
Linux 2.6.32-5-powerpc64 ppc64 GNU/Linux | gcc 4.4.5 |
Linux 2.6.32-5-powerpc64 ppc64 GNU/Linux | clang 1.1 |
SunOS 5.11 11.0 i86pc i386 i86pc | Sun C 5.12 |
SunOS 5.10 sun4u sparc SUNW,Ultra-4 | Sun C 5.8 |