packtivity


Namepacktivity JSON
Version 0.16.2 PyPI version JSON
download
home_pagehttps://github.com/yadage/packtivity
Summarypacktivity - general purpose schema + bindings for PROV activities
upload_time2023-09-19 00:25:14
maintainer
docs_urlNone
authorLukas Heinrich
requires_python>=3.8
license
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI
coveralls test coverage No coveralls.
            # packtivity

[![DOI](https://zenodo.org/badge/53696818.svg)](https://zenodo.org/badge/latestdoi/53696818)
[![Coverage Status](https://coveralls.io/repos/github/diana-hep/packtivity/badge.svg)](https://coveralls.io/github/diana-hep/packtivity)
[![Documentation Status](https://readthedocs.org/projects/packtivity/badge/?version=latest)](http://packtivity.readthedocs.io/en/latest/?badge=latest)
[![PyPI](https://img.shields.io/pypi/v/packtivity.svg)](https://pypi.python.org/pypi/packtivity)

This package aims to collect implementations of both synchronous and asynchronous execution of preserved, but parametrized scientific computational tasks that come with batteries included, i.e. with a full specification of their software dependencies. In that sense they are *packaged activities* -- packtivities.

This package provides tools to validate and execute data processing tasks that are written according to the "packtivity" JSON schemas defined in https://github.com/diana-hep/yadage-schemas.

Packtivities define

* the software environment
* parametrized process descriptions (what programs to run within these environment) and
* produces human and machine readable outputs (as JSON) of the resulting data fragments.

At run-time they are paired with a concrete set of parameters supplied as JSON documents and and external storage/state to actually execute these tasks.

## Packtivity in Yadage

This package is used by https://github.com/lukasheinrich/yadage to execute the individual steps of yadage workflows.

## Example Packtivity spec

This packtivity spec is part of a number of yadage workflow and runs the Delphes detector simulation on a HepMC file and outputs events in the LHCO and ROOT file formats. This packtivity is (stored in a public location)[https://github.com/lukasheinrich/yadage-workflows/blob/master/phenochain/delphes.yml] from which it can be later retrieved:

    process:
      process_type: 'string-interpolated-cmd'
      cmd: 'DelphesHepMC  {delphes_card} {outputroot} {inputhepmc} && root2lhco {outputroot} {outputlhco}'
    publisher:
      publisher_type: 'frompar-pub'
      outputmap:
        lhcofile: outputlhco
        rootfile: outputroot
    environment:
      environment_type: 'docker-encapsulated'
      image: lukasheinrich/root-delphes

## Usage

You can run the packtivity in a synchronous way by specifying the spec (can point to GitHub),  all necessary parameters and attaching an external state (via the `--read` and `--write` flags).

    packtivity-run -t from-github/phenochain delphes.yml \
      -p inputhepmc="$PWD/pythia/output.hepmc" \
      -p outputroot="'{workdir}/output.root'" \
      -p outputlhco="'{workdir}/output.lhco'" \
      -p delphes_card=delphes/cards/delphes_card_ATLAS.tcl \
      --read pythia --write outdir

## Asynchronous Backends

In order to facilitate usage of distributed resources, a number of Asynchronous
backends can be specified. Here is an example for IPython Parallel clusters

    packtivity-run -b ipcluster --asyncwait \
      -t from-github/phenochain delphes.yml \
      -p inputhepmc="$PWD/pythia/output.hepmc" \
      -p outputroot="'{workdir}/output.root'" \
      -p outputlhco="'{workdir}/output.lhco'" \
      -p delphes_card=delphes/cards/delphes_card_ATLAS.tcl \
      --read pythia --write outdir

You can replacing the `--asyncwait` with `--async` flag in order to get a JSONable proxy representation with which to later on check on the job status. By default the proxy information is written to `proxy.json` (customizable via the `-x` flag):

    packtivity-run -b celery --async \
      -t from-github/phenochain delphes.yml \
      -p inputhepmc="$PWD/pythia/output.hepmc" \
      -p outputroot="'{workdir}/output.root'" \
      -p outputlhco="'{workdir}/output.lhco'" \
      -p delphes_card=delphes/cards/delphes_card_ATLAS.tcl \
      --read pythia --write outdir

And at a later point in time you can check via:

    packtivity-checkproxy proxy.json

## External Backends

Users can implement their own backends to handle the JSON documents describing the packtivities. It can be enabled
by using the `fromenv` backend and setting an environment variable specifying the module holding the backend and proxy
classes. The format of the environment variable is `module:backendclass:proxyclass`. E.g.:

    export PACKTIVITY_ASYNCBACKEND="externalbackend:ExternalBackend:ExternalProxy"

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/yadage/packtivity",
    "name": "packtivity",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "",
    "author": "Lukas Heinrich",
    "author_email": "lukas.heinrich@cern.ch",
    "download_url": "https://files.pythonhosted.org/packages/b6/03/be3d6c135420ddddf613da4abd771df735a5a269166d0acf76461bc2dc70/packtivity-0.16.2.tar.gz",
    "platform": null,
    "description": "# packtivity\n\n[![DOI](https://zenodo.org/badge/53696818.svg)](https://zenodo.org/badge/latestdoi/53696818)\n[![Coverage Status](https://coveralls.io/repos/github/diana-hep/packtivity/badge.svg)](https://coveralls.io/github/diana-hep/packtivity)\n[![Documentation Status](https://readthedocs.org/projects/packtivity/badge/?version=latest)](http://packtivity.readthedocs.io/en/latest/?badge=latest)\n[![PyPI](https://img.shields.io/pypi/v/packtivity.svg)](https://pypi.python.org/pypi/packtivity)\n\nThis package aims to collect implementations of both synchronous and asynchronous execution of preserved, but parametrized scientific computational tasks that come with batteries included, i.e. with a full specification of their software dependencies. In that sense they are *packaged activities* -- packtivities.\n\nThis package provides tools to validate and execute data processing tasks that are written according to the \"packtivity\" JSON schemas defined in https://github.com/diana-hep/yadage-schemas.\n\nPacktivities define\n\n* the software environment\n* parametrized process descriptions (what programs to run within these environment) and\n* produces human and machine readable outputs (as JSON) of the resulting data fragments.\n\nAt run-time they are paired with a concrete set of parameters supplied as JSON documents and and external storage/state to actually execute these tasks.\n\n## Packtivity in Yadage\n\nThis package is used by https://github.com/lukasheinrich/yadage to execute the individual steps of yadage workflows.\n\n## Example Packtivity spec\n\nThis packtivity spec is part of a number of yadage workflow and runs the Delphes detector simulation on a HepMC file and outputs events in the LHCO and ROOT file formats. This packtivity is (stored in a public location)[https://github.com/lukasheinrich/yadage-workflows/blob/master/phenochain/delphes.yml] from which it can be later retrieved:\n\n    process:\n      process_type: 'string-interpolated-cmd'\n      cmd: 'DelphesHepMC  {delphes_card} {outputroot} {inputhepmc} && root2lhco {outputroot} {outputlhco}'\n    publisher:\n      publisher_type: 'frompar-pub'\n      outputmap:\n        lhcofile: outputlhco\n        rootfile: outputroot\n    environment:\n      environment_type: 'docker-encapsulated'\n      image: lukasheinrich/root-delphes\n\n## Usage\n\nYou can run the packtivity in a synchronous way by specifying the spec (can point to GitHub),  all necessary parameters and attaching an external state (via the `--read` and `--write` flags).\n\n    packtivity-run -t from-github/phenochain delphes.yml \\\n      -p inputhepmc=\"$PWD/pythia/output.hepmc\" \\\n      -p outputroot=\"'{workdir}/output.root'\" \\\n      -p outputlhco=\"'{workdir}/output.lhco'\" \\\n      -p delphes_card=delphes/cards/delphes_card_ATLAS.tcl \\\n      --read pythia --write outdir\n\n## Asynchronous Backends\n\nIn order to facilitate usage of distributed resources, a number of Asynchronous\nbackends can be specified. Here is an example for IPython Parallel clusters\n\n    packtivity-run -b ipcluster --asyncwait \\\n      -t from-github/phenochain delphes.yml \\\n      -p inputhepmc=\"$PWD/pythia/output.hepmc\" \\\n      -p outputroot=\"'{workdir}/output.root'\" \\\n      -p outputlhco=\"'{workdir}/output.lhco'\" \\\n      -p delphes_card=delphes/cards/delphes_card_ATLAS.tcl \\\n      --read pythia --write outdir\n\nYou can replacing the `--asyncwait` with `--async` flag in order to get a JSONable proxy representation with which to later on check on the job status. By default the proxy information is written to `proxy.json` (customizable via the `-x` flag):\n\n    packtivity-run -b celery --async \\\n      -t from-github/phenochain delphes.yml \\\n      -p inputhepmc=\"$PWD/pythia/output.hepmc\" \\\n      -p outputroot=\"'{workdir}/output.root'\" \\\n      -p outputlhco=\"'{workdir}/output.lhco'\" \\\n      -p delphes_card=delphes/cards/delphes_card_ATLAS.tcl \\\n      --read pythia --write outdir\n\nAnd at a later point in time you can check via:\n\n    packtivity-checkproxy proxy.json\n\n## External Backends\n\nUsers can implement their own backends to handle the JSON documents describing the packtivities. It can be enabled\nby using the `fromenv` backend and setting an environment variable specifying the module holding the backend and proxy\nclasses. The format of the environment variable is `module:backendclass:proxyclass`. E.g.:\n\n    export PACKTIVITY_ASYNCBACKEND=\"externalbackend:ExternalBackend:ExternalProxy\"\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "packtivity - general purpose schema + bindings for PROV activities",
    "version": "0.16.2",
    "project_urls": {
        "Homepage": "https://github.com/yadage/packtivity"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0ec0da8e93a5c0efa4c015adaea96433077af9b36ae1b2015aa65e19acd6e475",
                "md5": "b74a41e5effa76f82283a38b76f07f2f",
                "sha256": "3bc53aac52753ddee347196fc364eac1928ecacfb3a6e9d5a915813d64d8d0f4"
            },
            "downloads": -1,
            "filename": "packtivity-0.16.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b74a41e5effa76f82283a38b76f07f2f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 36314,
            "upload_time": "2023-09-19T00:25:13",
            "upload_time_iso_8601": "2023-09-19T00:25:13.114004Z",
            "url": "https://files.pythonhosted.org/packages/0e/c0/da8e93a5c0efa4c015adaea96433077af9b36ae1b2015aa65e19acd6e475/packtivity-0.16.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b603be3d6c135420ddddf613da4abd771df735a5a269166d0acf76461bc2dc70",
                "md5": "2048e4207c1de8b4d1e6c55ec3dc3e9a",
                "sha256": "1171e7f7f933a312b2d558e2b614e1634ebb96e7602822b23056d22e8728a316"
            },
            "downloads": -1,
            "filename": "packtivity-0.16.2.tar.gz",
            "has_sig": false,
            "md5_digest": "2048e4207c1de8b4d1e6c55ec3dc3e9a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 34768,
            "upload_time": "2023-09-19T00:25:14",
            "upload_time_iso_8601": "2023-09-19T00:25:14.973284Z",
            "url": "https://files.pythonhosted.org/packages/b6/03/be3d6c135420ddddf613da4abd771df735a5a269166d0acf76461bc2dc70/packtivity-0.16.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-09-19 00:25:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "yadage",
    "github_project": "packtivity",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": true,
    "lcname": "packtivity"
}
        
Elapsed time: 0.24783s