https://github.com/jgosmann/psyrun
Easy parameter space evaluation and serial farming.
https://github.com/jgosmann/psyrun
parameter-search python serial-farming task-runner
Last synced: about 1 year ago
JSON representation
Easy parameter space evaluation and serial farming.
- Host: GitHub
- URL: https://github.com/jgosmann/psyrun
- Owner: jgosmann
- License: mit
- Created: 2015-02-14T01:47:20.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2018-06-27T20:50:55.000Z (almost 8 years ago)
- Last Synced: 2025-03-26T03:33:09.346Z (about 1 year ago)
- Topics: parameter-search, python, serial-farming, task-runner
- Language: Python
- Homepage:
- Size: 291 KB
- Stars: 2
- Watchers: 2
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGES.rst
- License: LICENSE
Awesome Lists containing this project
README
Psyrun
======
.. image:: https://travis-ci.org/jgosmann/psyrun.svg?branch=master
:target: https://travis-ci.org/jgosmann/psyrun
.. image:: https://coveralls.io/repos/github/jgosmann/psyrun/badge.svg?branch=master
:target: https://coveralls.io/github/jgosmann/psyrun?branch=master
Psyrun is a Python_ tool to define parameter spaces
and execute an evaluation function for each parameter assignment. In addition
Psyrun makes it easy to use serial farming, i.e. evaluating multiple parameter
assignments in parallel, on a multicore computers and high-performance clusters.
Documentation
-------------
`The documentation can be found here.
`_
Overview
--------
Define parameter spaces and evaluate them:
.. code-block:: python
from psyrun import map_pspace, Param
def objective(a, b, c):
return a * b + c
pspace = (Param(a=np.arange(1, 5))
* Param(b=np.linspace(0, 1, 10))
* Param(c=[1., 1.5, 10., 10.5]))
results = map_pspace(objective, pspace)
Or do it in parallel:
.. code-block:: python
from psyrun import map_pspace_parallel
results = map_pspace_parallel(objective, pspace)
Define tasks by placing ``task_.py`` files in the `psy-tasks`` directory:
.. code-block:: python
from psyrun import Param
pspace = (Param(a=np.arange(1, 5))
* Param(b=np.linspace(0, 1, 10))
* Param(c=[1., 1.5, 10., 10.5]))
def execute(a, b, c):
return {'result': a * b + c}
and run them by typing ``psy run`` with support for serial farming on high
performance clusters.
Installation
------------
``pip install psyrun``
To be able to use the NPZ store::
pip install numpy
pip install 'psyrun[npz]'
To be able to use the HDF5 store::
pip install numpy
pip install 'psyrun[h5]'
Requirements
------------
* Python_ >=2.7, >=3.4
* `six `_
Optional requirements
^^^^^^^^^^^^^^^^^^^^^
To have `faulthandler `_ activated for
jobs submitted with ``psy run`` in Python 2.7:
* `faulthandler `_
Python 3.4+ already includes the faulthandler module.
To use ``map_pspace_parallel``:
* `joblib `_
To use NPZ files as store:
* `NumPy `_
To use HDF5 files as store:
* `NumPy `_
* `pytables `_
To run the unit tests:
* `joblib `_
* `NumPy `_
* `pytables `_
* `pytest `_ >= 2.8
To build the documentation:
* `numpydoc `_
.. _Python: https://www.python.org/