.. image:: https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg
  :width: 200
  :alt: Contributor Covenant
  :target: https://www.contributor-covenant.org/version/2/0/code_of_conduct/ 


pyworkflow
==========

**pyworkflow** is a simple workflow platform used in scientific applications. It has been initially developed
within the Scipion framework for image processing in Electron Microscopy.
 
**pyworkflow** allows you to define a working *Domain* by defining the following group of classes:

  * Objects: input/outputs that will be generated by different programs
  * Protocols: special type of Objects that have defined input parameters and will produce some output
  * Viewers: Entities that provide graphical analysis of results.
  * Wizards: Small GUIs that can be develop to help users to select given parameter values.

Development
-----------

To install **pyworkflow** for development purposes, one can do:

.. code-block:: bash

    # Create a clean virtual environment
    conda create -n scipion python=3.8
    conda activate
    git clone https://github.com/scipion-em/scipion-pyworkflow.git
    cd scipion-pyworkflow
    pip install -e .

Running tests
-------------

.. code-block:: bash

    conda activate scipion
    cd scipion-pyworkflow
    export SCIPION_DOMAIN="pyworkflowtests/tests/mock_domain"
    python -m unittest discover

    # Simple project GUI can be shown after running tests:
    python pyworkflow/apps/pw_project.py TestProtocolOutputs

All test projects are located in ~/ScipionUserData/Tests/

API documentation
-----------------

https://scipion-em.github.io/docs/release-3.0.0/api/pyworkflow/pyworkflow.html
