{ "info": { "author": "Kevin R. Thornton", "author_email": "krthornt@uci.edu", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Topic :: Scientific/Engineering :: Bio-Informatics" ], "description": "fwdpy: forward simulation in Python using fwdpp\n*****************************************************\n\nThis is the main README for the fwdpy software.\n\nThis package is a testing ground for providing access to efficient forward-time population simulation machinery in Python.\n\nThis package is implemented in terms of:\n\n1. Cython_, which is a package allowing C++ and Python to work together\n2. fwdpp_, which is a C++11 template library for implementing efficient population genetic simulations\n\nPlease note that this package is likely to be quite unstable/actively developed.\n\nThe package is usable now (in fact, we are currently using it for research), but the API, etc., could change without warning.\n\nCitation\n===========\n\nSee the project home page for details\n(http://molpopgen.github.io/fwdpy).\n\nChangelog (rough)\n=====================\n\n0.0.3\n-----------------\n* Change from std::thread to std::async for concurrency.\n* The asynchronous futures allow for the same \"evolve\" function to be\n used in different contexts.\n* The different contexts include calculating things from the\n population every \"k\" generation or doing nothing.\n* These things are implemented as classes with call operators and a\n minimal set of API requirements.\n* Fixed a bug in \"mutation views\"\n* Better parameter checking for various \"evolve\" functions\n* Source code re-organized so that all header files are installed\n\nFeatures:\n===========\n\nSo far, there is support for:\n\n* Simulation of a recombining region with arbitrary variation in neutral mutation rate, recombination rate, and distribution of selective effects and their dominance along the region.\n* Support for arbitrary changes in population size.\n* The ability to sample from simulated populations.\n* Calculate some standard summary statistics from samples taken from simulated populations.\n* Selfing\n* The ability to vary model parameters over time (recombination rates, genetic maps, selfing, selection, etc.)\n* Sampling populations at various time points\n* Parallel executiom of simulations. Multiple replicates may be run simultaenously via C++11's threading mechanism. This is a \"sneaky\" end-run around Python's Global Interpreter Lock, or GIL.\n\nThe following distributions of selection coefficients are supported:\n\n* constant (*i.e.*, *s* takes on a fixed value)\n* uniform\n* exponential\n* gamma\n* gaussian\n\nThe following distributions of dominance are supported:\n\n* constant (*i.e.*, *h* takes on a fixed value)\n\nGoogle Group\n=================\n\nFor help with various issues, check out the `fwdpy Google Group`_\n\nExamples\n=============\n\nSeveral examples exist in the form of output from \"iPython\"/Jupyter notebooks:\n\n* `Background selection`_\n* `Viewing simulated populations`_\n* `Sliding windows`_\n* `Tracking mutation frequencies`_\n\nAvailability\n===============\n\nThis package is distributed at the following github repository: https://github.com/molpopgen/fwdpy.\n\nDependencies\n===============\n\nThis section assumes that all packages are installed in fairly standard locations, such as /usr/local. See the troubleshooting section for more complex setups.\n\nThis package *minimally* depends on:\n\n* GSL_\n* fwdpp_\n\nThe configure script will enforce minimum version numbers of these dependencies, if necessary.\n\n**Note:** fwdpy may require the 'dev' branch of fwdpp. The configure script checks for *both* the correct dependency version number *and* specific header files within each depdency. If the version number check passes, but a subsequent header check fails, then that is a sign that you need a development version of the relevant dependency. The reason for this situation is that the development of fwdpy has generated ideas for how to make fwdpp more accessible. This situation will remain until fwdpy stabilizes.\n\nYou also need a C++11-compliant compiler. For linux users, GCC 4.8 or\nnewer should suffice. OS X users must use the clang-omp package from brew_.\n\nYou may use one or the other of these libraries, but not both. See the Performance subsection of the Installation section below for how to use these libraries.\n\nNotes for OS X users\n---------------------------------\n\nApple is making life difficult for OS X users. The release of El Capitan made installing third-party Unix tools into /usr/local more difficult. A lot of the instructions below ask you to use brew_ to install depdendencies. Please make sure that you have a working brew_ setup before trying any of the below. If your setup is not working, please do research online about fixing it, which is beyond the scope of this document.\n\nOS X users are recommended to use brew_ to install the various dependencies:\n\n.. code-block:: bash\n\n $ brew install clang-omp\n $ brew install gsl\n $ ##Risky:\n $ brew install fwdpp\n $ brew install google-perftools\n\n**Important**: you need to install clang-omp on OS X! This package\nuses openmp for parallelizing some tasks. Sadly, OS X's compiler does\nnot come with openmp support, and so you need a third-party compiler\nthat does.\n\nFor brew users, you may or may not have luck with their version of fwdpp. That package can change rapidly, and thus the brew version may get out-of-sync with the version required for this package.\n\nThe required Python package dependencies are in the requirements.txt file that comes with the source.\n\nAnaconda (and OS X, again...)\n------------------------------------\n\nUsers have run into issues getting fwdpy working with Anaconda-based Python installations. In fact, I've been unable to get the package to compile on OS X using Anaconda. I recommend that OS X users use Python3 installed bia Homebrew in lieu of Anaconda.\n\n\nWhat Python version?\n==================================\n\nI'm developing the package using Python 2.7.6 on an Ubuntu machine.\n\nCurrently, the package is not 100% compatible with Python 3. The goal is to make it work, though.\n\nInstallation\n==============\n\nThe latest release of the package is available via PyPi_, and can be installed with your favorite Python package manager:\n\n.. code-block:: bash\n\n $ pip install --upgrade fwdpy\n\nOS X users must first install clang-omp from brew_ and use the\nfollowing command:\n\n.. code-block:: bash\n\n $ CC=clang-omp CXX=clang-omp++ pip install fwdpy\n\nInstallation from source\n----------------------------------------\n\nThis section describes \"vanilla\" installation using the minimal dependencies.\n\nFirst, install the dependencies (see above).\n\n**Special instructions for OS X users**\n\nAll compiler commands below must be prefixed with:\n\n.. code-block:: bash\n\n $ CC=clang-omp CXX=clang-omp++\n\nThis is currently necessary on OS X in order to use a version of clang that supports OpenMP protocols.\n\nGeneric instructions:\n\nTo install system-wide:\n\n.. code-block:: bash\n\t\t\n $ sudo python setup.py install\n\nTo install for your user:\n\n.. code-block:: bash\n\n $ python setup.py install --prefix=$HOME\n\nTo uninstall:\n\n.. code-block:: bash\n\n $ #use 'sudo' here if it is installed system-wide...\n $ pip uninstall fwdpy\n\nTo build the package in place and run the unit tets:\n\n.. code-block:: bash\n\n $ #build package locally:\n $ python setup.py build_ext -i\n $ #run the unit tests:\n $ python -m unittest discover fwdpy/tests\n\nDependencies in non-standard locations\n----------------------------------------------------------------------------------------\n\nThe instructions above assume that dependencies (fwdpp_ and GSL_) are\nfound in \"standard\" locations, which means in /usr/local on a typical\nsystem.\n\nMany users, especially those on clusters, may not have the privileges\nneeded to install to the standard system locations. Thus, it may be\nnecessary to manually tell fwdpy where the dependencies are located.\n\nFor example, let us assume that fwdpp_ and GSL_ are installed into\nyour home folder. On Unix-like systems, $HOME is a variable representing\nthe location of your home folder. Thus, the header files for these\nlibraries will be found in $HOME/include and any run-time libraries\nwill be found in $HOME/lib.\n\nTo tell pip where to find these dependencies, you need to manually set\nCPPFLAGS and LDFLAGS:\n\n.. code-block:: bash\n\n $ CPPFLAGS=\"-I$HOME/include\" LDFLAGS=\"-L$HOME/lib\" pip install fwdpy\n\n\nNote for developers\n=================================\n\nCython is a static compiler. Code written in Cython is compiled into C or, in the case of this package, C++. Finally, the system's C/C++ compiler is used to compile the final Python module.\n\nIn order to modify the package, you will need Cython installed:\n\n.. code-block:: bash\n\n $ pip install Cython\n\nYou need Cython >= 0.22.2, so upgrade if you need to:\n\n.. code-block:: bash\n\n $ pip install --upgrade Cython\n\n\nIf you wish to modify the package, then you will want setup.py to \"re-Cythonize\" when you make changes to the package source code.\n\nTo do this, use the setup.py script as follows:\n\n.. code-block:: bash\n\n $ python setup.py build_ext -i --use-cython\n\nNow, Cython will be a compilation depdendency, and any changes to .pyx/.pyd/.cc files in this package will trigger Cython to regenerate the .cpp files that make up the core of the package.\n\nCompiling in an aggressive debug mode\n-----------------------------------------------\n\nTo get rid of optimizations, and -DNDEBUG, you need to reset the OPT\nflag set by Python's distutils:\n\n.. code-block:: bash\n\n $ OPT= python setup.py build_ext -i\n\nDoing this will mean that the fwdpp back-end will *not* be compiled\nwith -DNDEBUG, which will enable aggressive run-time correctness\ntesting. By \"aggressive\", I mean that an error will trigger a failed\nassertion and the Python interpreter will be exited\nless-than-gracefully! Only to this when testing.\n\nIt is better to enable some optimizations, though, else things run too\nslowly:\n\n.. code-block:: bash\n\n $ OPT=-O2 python setup.py build_ext -i\n \n\nRough guide to installation on UCI HPC\n-----------------------------------------\n\nUse the following module:\n\n.. code-block:: bash\n\n $ module load krthornt/thorntonlab\n\nThat command loads the proper dependencies for compiling much of the tools that we use.\n\n**Note**: this module replaces/over-rules some modules already on HPC. The \"thorntonlab\" modules are all consistently compiled with a GCC version that we've deemed suitable.\n\nTroubleshooting the installation\n-----------------------------------------\n\nIncorrect fwdpp version\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis package is compatible with fwdpp >= 0.4.7, which means that you should have a binary installed on your systems called fwdppConfig. You can check if you have it:\n\n.. code-block:: bash\n\n $ which fwdppConfig\n\n\nIf the above command returns nothing, then it is very likely that fwdpp is either too old, missing entirely from your system, or it is installed somewhere non-standard. For example, if you installed fwdpp locally for your user, and did not edit PATH to include ~/bin, then fwdppConfig cannot be called without referring to its complete path.\n\nDependencies in non-standard locations\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nYour system's compiler has a default set of paths where it will look for header files, libraries, etc. Typically, these paths will include /usr and /usr/local. If you have installed the dependencies somewhere else (your home directory, for example), then the ./configure script may not be able to find them automatically.\n\n**NOTE:** I sometimes get requests for installation help from users who have installed every dependency in a separate folder in their $HOME. In other words, they have some setup that looks like this:\n\n\n* $HOME/software/gsl\n* $HOME/software/fwdpp\n\n\nIf you insist on doing this, then you are on your own. You have to manually pass in all of the -I and -L flags to all of these locations. This setup is problematic because it violates the POSIX Filesystem Hierarchy Standard (http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard), and you cannot reasonably expect things to \"just work\" any more. It would be best to start over, and simply install all of the dependencies into the following prefix:\n\n.. code-block:: bash\n\n $ $HOME/software\n\nDoing so will allow $HOME/software/include, etc., to be populated as they were intended to be.\n\nDocumentation\n===================\n\nThe manual_ is available online in html format at the project web page.\n\nThe API documentation may also be build using doxygen_:\n\n.. code-block:: bash\n\n $ ./configure\n $ doxygen fwdpy.doxygen\n\nThen, load html/index.html in your browser.\n\n\n.. _fwdpp: http://molpopgen.github.io/fwdpp\n.. _Cython: http://www.cython.org/\n.. _GSL: http://gnu.org/software/gsl\n.. _brew: http://brew.sh\n.. _manual: http://molpopgen.github.io/fwdpy\n.. _Background selection: http://molpopgen.github.io/fwdpy/_build/html/examples/BGS.html\n.. _Viewing simulated populations: http://molpopgen.github.io/fwdpy/_build/html/examples/views.html\n.. _Sliding windows: http://molpopgen.github.io/fwdpy/_build/html/examples/windows.html\n.. _Tracking mutation frequencies: http://molpopgen.github.io/fwdpy/_build/html/examples/trajectories.html\n.. _PyPi: https://pypi.python.org\n.. _fwdpy Google Group: https://groups.google.com/forum/#!forum/fwdpy-users\n.. _doxygen: http://doxygen.org", "description_content_type": null, "docs_url": null, "download_url": "http://github.com/molpopgen/fwdpy", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.molpopgen.org", "keywords": null, "license": "GPL >= 2", "maintainer": null, "maintainer_email": null, "name": "fwdpy", "package_url": "https://pypi.org/project/fwdpy/", "platform": "Linux,OS X", "project_url": "https://pypi.org/project/fwdpy/", "project_urls": { "Download": "http://github.com/molpopgen/fwdpy", "Homepage": "http://www.molpopgen.org" }, "release_url": "https://pypi.org/project/fwdpy/0.0.3/", "requires_dist": null, "requires_python": null, "summary": "Forward-time population genetic simulation in Python", "version": "0.0.3" }, "last_serial": 2522534, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "5578ca2f7a279ea4f8dddc13fd91720a", "sha256": "c8a6d9c03a25aacc5985ce7b47b1f32f4ab0a1e8be8e9c81148debe80aaef3c7" }, "downloads": -1, "filename": "fwdpy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "5578ca2f7a279ea4f8dddc13fd91720a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 395634, "upload_time": "2016-01-15T21:45:18", "url": "https://files.pythonhosted.org/packages/5b/a0/979acc776ff0f3abada4b9b0af1d5adeac3ba90f21793b40ee2d83e9ae36/fwdpy-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "71516d6c5c4c4c0f907837af8f3af629", "sha256": "9d51f8683e87de2a3a902992b75c3ffb0c853e575a8ba7adfcaacd3fc100f1bb" }, "downloads": -1, "filename": "fwdpy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "71516d6c5c4c4c0f907837af8f3af629", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 397305, "upload_time": "2016-02-09T01:46:10", "url": "https://files.pythonhosted.org/packages/44/e5/02c35d75e58d21111fde23ae2ac45d573684a106c10e92759fc8687b18f7/fwdpy-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "43026fb35d248dffc89a02737ec9d01d", "sha256": "88693d12999845c94b41e2d2f052d25798b7d66d601e3cd0bbe76fe18e9e1242" }, "downloads": -1, "filename": "fwdpy-0.0.3.tar.gz", "has_sig": false, "md5_digest": "43026fb35d248dffc89a02737ec9d01d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 513530, "upload_time": "2016-03-31T21:43:25", "url": "https://files.pythonhosted.org/packages/fc/b0/1f2579f7c6c3da0a38b6185422587892d1e1172ccdfbcd2d546bbeca298b/fwdpy-0.0.3.tar.gz" } ], "0.0.4-rc2": [ { "comment_text": "", "digests": { "md5": "177940f35af55db6c30b8c3ea46ffc06", "sha256": "5976fe00eefbc7abcd35bc449d630f08dcde57dfe91dd3f85141b8fdce135802" }, "downloads": -1, "filename": "fwdpy-0.0.4-rc2.tar.gz", "has_sig": false, "md5_digest": "177940f35af55db6c30b8c3ea46ffc06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 910412, "upload_time": "2016-12-16T04:57:34", "url": "https://files.pythonhosted.org/packages/7d/d0/20ec3d9d878f6c122ad25d2e0fa3dda8d0b48ae75ea144761d15f74fdb5b/fwdpy-0.0.4-rc2.tar.gz" } ], "0.0.4.pre2": [ { "comment_text": "", "digests": { "md5": "f7a98508c0e4a885166561f8dc271a5b", "sha256": "2520cd61f823e6353d7cc21924142530c8b3f27826c595e06f8033436da576f4" }, "downloads": -1, "filename": "fwdpy-0.0.4.pre2.tar.gz", "has_sig": false, "md5_digest": "f7a98508c0e4a885166561f8dc271a5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 910443, "upload_time": "2016-12-16T04:22:08", "url": "https://files.pythonhosted.org/packages/48/10/324b22341c95a14723287dcb45ba5925ff5c20b04031a09e7f8656ac28d8/fwdpy-0.0.4.pre2.tar.gz" } ], "0.0.4pre1": [ { "comment_text": "", "digests": { "md5": "f3377dfd2ec9e84beba2d0edcedb8772", "sha256": "f24c2c3eb2c83b86845e288a7c3bf9d09eb816b92b03e2fb3c2cf61e2c6ecf7c" }, "downloads": -1, "filename": "fwdpy-0.0.4pre1.tar.gz", "has_sig": false, "md5_digest": "f3377dfd2ec9e84beba2d0edcedb8772", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 913397, "upload_time": "2016-12-15T18:51:11", "url": "https://files.pythonhosted.org/packages/ac/8a/01a4a85d20a924abfc981a57aba9b364d6f7e00a0830c5e654242afc9c39/fwdpy-0.0.4pre1.tar.gz" } ], "0.0.4rc2": [ { "comment_text": "", "digests": { "md5": "81a9ff03214ab2f1439c194c50ad4841", "sha256": "cb1628cad39dcb8678a21a5d6f5d270d8c2ecefdc420660c562fbc92d9f8c916" }, "downloads": -1, "filename": "fwdpy-0.0.4rc2.tar.gz", "has_sig": false, "md5_digest": "81a9ff03214ab2f1439c194c50ad4841", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 910430, "upload_time": "2016-12-16T04:52:25", "url": "https://files.pythonhosted.org/packages/02/52/acc681c7617b64e24ec6b0fda6976c3663755a7f1f9d8eb27f644486936f/fwdpy-0.0.4rc2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "43026fb35d248dffc89a02737ec9d01d", "sha256": "88693d12999845c94b41e2d2f052d25798b7d66d601e3cd0bbe76fe18e9e1242" }, "downloads": -1, "filename": "fwdpy-0.0.3.tar.gz", "has_sig": false, "md5_digest": "43026fb35d248dffc89a02737ec9d01d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 513530, "upload_time": "2016-03-31T21:43:25", "url": "https://files.pythonhosted.org/packages/fc/b0/1f2579f7c6c3da0a38b6185422587892d1e1172ccdfbcd2d546bbeca298b/fwdpy-0.0.3.tar.gz" } ] }