{ "info": { "author": "Malcolm Ramsay", "author_email": "malramsay64@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Experi\n======\n\n\n[![Build Status](https://travis-ci.org/malramsay64/experi.svg?branch=master)](https://travis-ci.org/malramsay64/experi)\n[![codecov](https://codecov.io/gh/malramsay64/experi/branch/master/graph/badge.svg)](https://codecov.io/gh/malramsay64/experi)\n![PyPI](https://img.shields.io/pypi/v/experi.svg)\n[![Anaconda-Server Badge](https://anaconda.org/malramsay/experi/badges/version.svg)](https://anaconda.org/malramsay/experi)\n\n\nA framework for running command line applications with a range of different\nvariables.\n\nDocumentation is available on [Read the Docs][Experi Docs]\n\nHow to use\n----------\n\nActually running experi is a simple process, in a directory with an\n`experiment.yml` file run the command\n\n```\n$ experi\n```\n\nIf for whatever reason you want to name the file something other than\n`experiment.yml` or to run a file in a different directory a custom file can be\nspecified with the `-f` flag\n\n```\n$ experi -f not_an_experiment.yml\n```\n\nNote that since this is designed to keep the specification of the experiment\nwith the results, the commands will be run in the same directory as the\nspecified file.\n\nThe complicated part of getting everything running is the specification of the\nexperiment in the `experiment.yml` file. The details on configuring this file is available in the\n[documentation][Experi Docs input_file].\n\nWhy should I use this?\n----------------------\n\nWhen running a series of experiments it can be difficult to remember the exact\nparameters of the experiment, or even how to run the simulation again.\nAdditionally for a complex experiment with many variables, iterating through\nall the combinations of variables can be unwieldy, error prone, and plain\nfrustrating.\n\nExperi aims to keep all the information about running an experiment in an\n`experiment.yml` file which sits in the same directory as the experiment.\nSupporting complex iteration of variables incorporated into easily the easily\nreadable yaml syntax, it is easy to quickly understand the experimental\nconditions. Additionally by keeping the configuration file with the results\nthere is a quick reference to the experimental conditions and replication is as\nsimple as running `experi`.\n\nFor more information I have written a [blog post][experi blog post] which goes\ninto more depth on how this tool has helped my workflow.\n\nProject Goals\n-------------\n\nThe primary goals of this project detailed below. They act as the guiding\nprinciples for the design decisions which are made.\n\n- Human centric\n - Interactions should be simple, intuitive, and frictionless\n - Shouldn't need to constantly consult documentation to use\n - Minimal expertise required to understand\n\n- Sensible Defaults\n - Testing a job on a scheduler should be simple, requiring a minimal specification\n\n- Fast Errors\n - Errors in the code should be picked up as soon as possible, i.e. shouldn't arise\n after waiting in the job queue.\n - Allow for testing locally using the shell, before running on HPC\n\nWhere current functionality doesn't meet these goals please raise an issue, I am\nmore than happy to discuss. Although do note that these goals are somewhat\nopinionated.\n\nWhat about ...?\n---------------------\n\n- [Sumatra] is a tool for managing and tracking projects,\n with a focus on running a single experiment at a time and the\n reproducibility of the results. Experi is more about running many\n simulations with a range of parameters, the reproducibility aspect is\n a byproduct of the way these parameters are specified. Also Sumatra does\n a much better job of the reproducibility than experi, capturing version\n numbers and executable paths.\n\n- [SciPipe] is a workflow manager similar to [SciLuigi], [Airflow] or any\n number of other examples. These tools can be incredibly powerful,\n specifying complex networks of dependent tasks and managing their\n completion. However, they have a learning curve and can be difficult to\n configure with a task scheduler on a HPC. Experi is about simplicity;\n taking the workflow you already use and making it more powerful. Experi\n also uses the task scheduler for the management of dependent jobs, albeit\n the functionality is currently very basic.\n\n- [Snakemake] is a workflow management tool, very similar to [GNU Make] which\n supports submitting jobs to a HPC scheduler. I personally have no experience\n using it, however from reading the documentation it is a highly configurable\n tool with far more functionality than Experi. Experi is more suitable is the\n handling of complex specification of variables and using the scheduler for\n control of scheduling.\n\n\nInstallation\n------------\n\nExperi is currently compatible with python>==3.6\n\n```bash\npip3 install experi\n```\n\nNote that for the command `experi` to work the directory containing the\nexecutable needs to be in the `PATH` variable. In most cases this will probably\nbe `$HOME/.local/bin` although this is installation dependent. If you don't\nknow where the executable is, on \\*nix systems the command\n\n```bash\nfind $HOME -name experi\n```\n\nwill search everywhere in your home directory to find it. Alternatively\nreplacing `$HOME` with `/` will search everywhere.\n\nFor installation from source\n\n```bash\ngit clone https://github.com/malramsay64/experi.git\ncd experi\npip3 install .\n```\n\nTo install a development version, `pipenv` is required which can be installed\nby running\n\n```bash\npip3 install pipenv\n```\n\nand installing the dependencies by running\n\n```bash\npipenv install --dev --three\n```\n\nwhich will create a virtual environment for the project. Activating the\nvirtualenv is can be done by running\n\n```bash\npipenv shell\n```\n\nwhich creates a new shell with the environment activated. Alternatively\na single command (like the test cases) can be run using\n\n```bash\npipenv run pytest\n```\n\nFor those of you trying to run this on a cluster with only user privileges\nincluding the `--user` flag will resolve issues with pip requiring elevated\npermissions installing to your home directory rather than for everyone.\n\n```\npip3 install --user experi\n```\n\nFor more information documentation is available on [Read the Docs][Experi Docs].\n\n[Experi Docs]: https://experi.readthedocs.io/en/latest/\n[Experi Docs input_file]: https://experi.readthedocs.io/en/latest/input_file\n[miniconda installer]: https://conda.io/miniconda.html\n[Sumatra]: http://sumatra.readthedocs.io\n[SciPipe]: http://scipipe.org/\n[SciLuigi]: https://github.com/pharmbio/sciluigi\n[Airflow]: https://airflow.apache.org/\n[Snakemake]: https://snakemake.readthedocs.io/en/stable/\n[GNU Make]: https://www.gnu.org/software/make/\n[experiment examples]: https://github.com/malramsay64/experi/tree/master/examples\n[experiment docs]: https://github.com/malramsay64/experi/blob/master/input_file.md\n[experi blog post]: https://malramsay.com/post/experi_a_tool_for_computational_experiments/", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/malramsay64/experi", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "experi", "package_url": "https://pypi.org/project/experi/", "platform": "", "project_url": "https://pypi.org/project/experi/", "project_urls": { "Homepage": "https://github.com/malramsay64/experi" }, "release_url": "https://pypi.org/project/experi/0.3.3/", "requires_dist": null, "requires_python": ">=3.6", "summary": "An interface for managing computational experiments with many independent variables.", "version": "0.3.3" }, "last_serial": 5597554, "releases": { "0.0.8": [ { "comment_text": "", "digests": { "md5": "8d3548d629661770b83d0519b4113e16", "sha256": "f2ad75788e232c8c02306cb7a47d745a7b7485dcd61ca16954420aa7b7f16474" }, "downloads": -1, "filename": "experi-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "8d3548d629661770b83d0519b4113e16", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 6315, "upload_time": "2018-01-25T23:44:12", "url": "https://files.pythonhosted.org/packages/9f/d3/1993d8aff5e18a4dca1f13aeb708ff810672663ef2392d24158435025c02/experi-0.0.8-py3-none-any.whl" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "cd39127fe2666c8740eb30e8e6c6d542", "sha256": "ab726cb13106808419b125d07df933552ebaf03ee5d3617295aa35b51d4c6ecc" }, "downloads": -1, "filename": "experi-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cd39127fe2666c8740eb30e8e6c6d542", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 8182, "upload_time": "2018-02-06T04:02:49", "url": "https://files.pythonhosted.org/packages/87/26/76c882fab2d1fd88b5af8538d3b8ba32e88f35f4bc8ace60e12221359e9d/experi-0.1.0-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "911c34b0811b037b01446c49fe904f11", "sha256": "2f8c93f1539d9ab1383fed0ffb4a7a4ced917c1b82eb270fc0542a875cf78e7a" }, "downloads": -1, "filename": "experi-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "911c34b0811b037b01446c49fe904f11", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 8196, "upload_time": "2018-02-06T04:15:02", "url": "https://files.pythonhosted.org/packages/c3/4f/4e625052209a07152b542d0252e6735a96a811b2faf4dec66615ef69a3fb/experi-0.1.2-py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "612a7b51abef4c5d11fe8837b80cb98d", "sha256": "fd9fa6b90d523919a5b30b8071c750f9000e131bb206d0b2a8e6f5cea875100a" }, "downloads": -1, "filename": "experi-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "612a7b51abef4c5d11fe8837b80cb98d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 8610, "upload_time": "2018-02-15T03:47:11", "url": "https://files.pythonhosted.org/packages/c4/8a/eedbd2ca8a1e7cf37b84e3b460ab0fc47ef6a4218e476c95fc4efc8b8ca5/experi-0.2.0-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "20c03d79f31b72251e8fb55e50632841", "sha256": "3e458a29e8d989bc3e3c277dec8b7acf8ab2c2e964fe3370c13232039c62fb3b" }, "downloads": -1, "filename": "experi-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "20c03d79f31b72251e8fb55e50632841", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 8646, "upload_time": "2018-02-15T06:34:15", "url": "https://files.pythonhosted.org/packages/00/be/c6cd2b107a7c154bc2f78b2c569fcf1fd5ba0423939123fd60906468f9d6/experi-0.2.1-py3-none-any.whl" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "a1974154416577203f464711129b9d62", "sha256": "dcc1b4b7598381bcb282a0fef2831afe2d5a6c05b6339153cf8997dbe184028d" }, "downloads": -1, "filename": "experi-0.2.10.tar.gz", "has_sig": false, "md5_digest": "a1974154416577203f464711129b9d62", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11828, "upload_time": "2018-09-07T01:48:31", "url": "https://files.pythonhosted.org/packages/59/79/27591bcffcf97206f372d2bd2a6f22996b4c4999f78264d6401c1505083d/experi-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "b97835725168308d513efe50fc419545", "sha256": "3e7d32818dbafe87a82c61c375925027d5320bf554ee238de426cd6bb847ed1a" }, "downloads": -1, "filename": "experi-0.2.11.tar.gz", "has_sig": false, "md5_digest": "b97835725168308d513efe50fc419545", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12148, "upload_time": "2018-10-12T02:50:25", "url": "https://files.pythonhosted.org/packages/c2/16/64d745f323ae80232e91ef3227fa3b93813f7cbc35c26803b468bf8a85bd/experi-0.2.11.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "4e7b0a9182797cf2963aaf4f63aae518", "sha256": "9d08e9ab413aecfbfaffd1099c46cb793b16c369aaf98e88b8aa9a737c5b52ca" }, "downloads": -1, "filename": "experi-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4e7b0a9182797cf2963aaf4f63aae518", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.4", "size": 8064, "upload_time": "2018-04-01T03:53:48", "url": "https://files.pythonhosted.org/packages/ed/38/654f37a5a969bcf350696d49de04d8f4f22e555969174fa55661bc03fdc2/experi-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a33d2fcdb0df5e591757e7985565069d", "sha256": "988f45ce3f104c1c2b9f73513da6864ce32b1676289f86dbe8b041438247b13b" }, "downloads": -1, "filename": "experi-0.2.2.tar.gz", "has_sig": false, "md5_digest": "a33d2fcdb0df5e591757e7985565069d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 7582, "upload_time": "2018-04-01T03:53:49", "url": "https://files.pythonhosted.org/packages/3f/69/5f3dcf1762a0ff5ce710b69a02761ac5802f244935dca572f7840e3ba65f/experi-0.2.2.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "0098a7eddb1d6752c7ddf8538a003169", "sha256": "2076d0bd5433b894037e2a79e7a256368046a490897e86badfd336978f2eb0a6" }, "downloads": -1, "filename": "experi-0.2.4.tar.gz", "has_sig": false, "md5_digest": "0098a7eddb1d6752c7ddf8538a003169", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.4", "size": 8443, "upload_time": "2018-06-24T06:40:37", "url": "https://files.pythonhosted.org/packages/cf/b9/8d5814f4fabdcb4effb88845b8e814cb01a698f5ce2d0e02a0e2aba5fe0d/experi-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "aa92a44f7c9eab6e87d7a043818c94ab", "sha256": "14b24e3d730ca785fdb6dafa57f9ee8976e19fc33601d2be74305baa6d6ff532" }, "downloads": -1, "filename": "experi-0.2.5.tar.gz", "has_sig": false, "md5_digest": "aa92a44f7c9eab6e87d7a043818c94ab", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9067, "upload_time": "2018-06-24T07:14:50", "url": "https://files.pythonhosted.org/packages/68/95/9022ba457907983660f294324171fb3e6907245a1d267ed6dde4305262d5/experi-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "71ca55de23ab74dd8ceba5811ddaebf3", "sha256": "5629c94661f060546f85ba8dc4c2d9902fa88dd7b32127d92fa9a8962199a9f6" }, "downloads": -1, "filename": "experi-0.2.6.tar.gz", "has_sig": false, "md5_digest": "71ca55de23ab74dd8ceba5811ddaebf3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9230, "upload_time": "2018-06-26T03:44:18", "url": "https://files.pythonhosted.org/packages/d0/c4/bed369ba1ec563e564db597fcb38ff006053e6ce667fbe9dd9ac26ad231c/experi-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "cd58ec1bd5fa5f84f9bcebed49611647", "sha256": "3de72531fae499566311d1b2a9c5332170a78485be5836a5b50899635061ee70" }, "downloads": -1, "filename": "experi-0.2.7.tar.gz", "has_sig": false, "md5_digest": "cd58ec1bd5fa5f84f9bcebed49611647", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10713, "upload_time": "2018-09-03T23:12:58", "url": "https://files.pythonhosted.org/packages/0e/72/837e66ca44188beffc486fefa268973c0d7baa75c54b1296811c2a0426f6/experi-0.2.7.tar.gz" } ], "0.2.8": [ { "comment_text": "", "digests": { "md5": "496500889bd8cd706f1e9023ce0815a1", "sha256": "3ba9ea142fc7dbfd93eb5f3eb1b09135fa38b8d5a32d59f206d7de5a7d143372" }, "downloads": -1, "filename": "experi-0.2.8.tar.gz", "has_sig": false, "md5_digest": "496500889bd8cd706f1e9023ce0815a1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 10707, "upload_time": "2018-09-03T23:28:13", "url": "https://files.pythonhosted.org/packages/2e/d1/9d30886584bc560ce8c5d91bb8dcd12c31698b14e262dfb83bc96c84708d/experi-0.2.8.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "3bce4bc80c257404a3071b546db0d350", "sha256": "89368f0ec69c4aa2ecf4a0d10e71284208959b0ffcfdfc596550fa12ef9d8ee9" }, "downloads": -1, "filename": "experi-0.2.9.tar.gz", "has_sig": false, "md5_digest": "3bce4bc80c257404a3071b546db0d350", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 11395, "upload_time": "2018-09-06T00:44:54", "url": "https://files.pythonhosted.org/packages/58/a3/73d8115784cbf786d615bf3d4790b4f626a5dd45db3a9b096b17b9904634/experi-0.2.9.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "a1a6a322f42fe7e498f04041bf7ed873", "sha256": "4c619bf2d197aa44c76794b829d2d01c1fed1c74cc76a33065246628a54949be" }, "downloads": -1, "filename": "experi-0.3.0.tar.gz", "has_sig": false, "md5_digest": "a1a6a322f42fe7e498f04041bf7ed873", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17339, "upload_time": "2019-04-12T22:32:01", "url": "https://files.pythonhosted.org/packages/7d/18/ad7bf83c878f93997d125cbe498209655d8efd063c7f2a2b8f7183449b33/experi-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9e2b918a1636e28d697c9d6ff05f1496", "sha256": "798bb6748e9baca3396a29a278d0287191953a10c57920f57ac5043ee17a0ce5" }, "downloads": -1, "filename": "experi-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9e2b918a1636e28d697c9d6ff05f1496", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17335, "upload_time": "2019-05-09T12:06:26", "url": "https://files.pythonhosted.org/packages/3a/85/d4954a8d3a2248e563e627347405bc8ec237f0e4f4f00612e48924c85926/experi-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "c8f930c93ace673ac2891d9ec26111dc", "sha256": "91eefbaa9834c816d2e45233dbb47641a5a1eec9a312098d690efa696e58b9ae" }, "downloads": -1, "filename": "experi-0.3.2.tar.gz", "has_sig": false, "md5_digest": "c8f930c93ace673ac2891d9ec26111dc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17356, "upload_time": "2019-07-29T00:21:34", "url": "https://files.pythonhosted.org/packages/f5/61/33f7f27dc8988c55e17b99efa811f45c67f0fb019025c2d442432c8bec84/experi-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "b63a5c28ad6bb8ce951b7dd1d932f38e", "sha256": "26cb52cbb61e916088b57859bb250dfc5985c7f5f7028d375d78dde86550058e" }, "downloads": -1, "filename": "experi-0.3.3.tar.gz", "has_sig": false, "md5_digest": "b63a5c28ad6bb8ce951b7dd1d932f38e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17364, "upload_time": "2019-07-29T03:36:21", "url": "https://files.pythonhosted.org/packages/de/2e/b7f88e5b89cdfc3907fde1b45a3f8d173f9dd2d20ee5f9b949b1ea4027f7/experi-0.3.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b63a5c28ad6bb8ce951b7dd1d932f38e", "sha256": "26cb52cbb61e916088b57859bb250dfc5985c7f5f7028d375d78dde86550058e" }, "downloads": -1, "filename": "experi-0.3.3.tar.gz", "has_sig": false, "md5_digest": "b63a5c28ad6bb8ce951b7dd1d932f38e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 17364, "upload_time": "2019-07-29T03:36:21", "url": "https://files.pythonhosted.org/packages/de/2e/b7f88e5b89cdfc3907fde1b45a3f8d173f9dd2d20ee5f9b949b1ea4027f7/experi-0.3.3.tar.gz" } ] }