Science Score: 77.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
3 of 19 committers (15.8%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.0%) to scientific vocabulary
Keywords
hpc
parallel-computing
python
python-2
python-3
workflow
workflow-engine
Keywords from Contributors
bioinformatics
gtk
qt
tk
wx
bioinformatics-pipeline
bwa
fastq
fastq-format
genomics
Last synced: 4 months ago
·
JSON representation
·
Repository
Parallel programming with Python
Basic Info
- Host: GitHub
- Owner: luispedro
- License: mit
- Language: Python
- Default Branch: main
- Homepage: https://jug.readthedocs.io
- Size: 2.34 MB
Statistics
- Stars: 459
- Watchers: 19
- Forks: 62
- Open Issues: 2
- Releases: 20
Topics
hpc
parallel-computing
python
python-2
python-3
workflow
workflow-engine
Created over 16 years ago
· Last pushed 6 months ago
Metadata Files
Readme
Changelog
License
Citation
README.rst
===========================================
Jug: A Task-Based Parallelization Framework
===========================================
Jug allows you to write code that is broken up into
tasks and run different tasks on different processors.
.. image:: https://github.com/luispedro/jug/actions/workflows/python-package.yml/badge.svg
:target: https://github.com/luispedro/jug/actions/workflows/python-package.yml
.. image:: https://zenodo.org/badge/205237.svg
:target: https://zenodo.org/badge/latestdoi/205237
.. image:: https://img.shields.io/badge/install%20with-conda-brightgreen.svg?style=flat
:target: https://anaconda.org/conda-forge/jug
.. image:: https://static.pepy.tech/personalized-badge/jug?period=total&units=international_system&left_color=black&right_color=blue&left_text=Downloads
:target: https://pepy.tech/project/jug
.. image:: https://img.shields.io/badge/CITATION-doi.org%2F10.5334%2Fjors.161-green.svg
:target: https://doi.org/10.5334/jors.161
It uses the filesystem to communicate between processes and
works correctly over NFS, so you can coordinate processes on
different machines.
Jug is a pure Python implementation and should work on any platform.
Python versions 3.7 and above are supported.
*Website*: `http://luispedro.org/software/jug `__
*Documentation*: `https://jug.readthedocs.org/ `__
*Video*: On `vimeo `__ or `showmedo
`__
*Mailing List*: `https://groups.google.com/group/jug-users
`__
Testimonials
------------
"I've been using jug with great success to distribute the running of a
reasonably large set of parameter combinations" - Andreas Longva
Install
-------
You can install Jug with pip::
pip install Jug
or use, if you are using `conda `__, you can install jug
from `conda-forge `__ using the following
commands::
conda config --add channels conda-forge
conda install jug
Citation
--------
If you use Jug to generate results for a scientific publication, please cite
Coelho, L.P., (2017). Jug: Software for Parallel Reproducible Computation in
Python. Journal of Open Research Software. 5(1), p.30.
https://doi.org/10.5334/jors.161
Short Example
-------------
Here is a one minute example. Save the following to a file called ``primes.py``
(if you have installed jug, you can obtain a slightly longer version of this
example by running ``jug demo`` on the command line)::
from jug import TaskGenerator
from time import sleep
@TaskGenerator
def is_prime(n):
sleep(1.)
for j in range(2,n-1):
if (n % j) == 0:
return False
return True
primes100 = [is_prime(n) for n in range(2,101)]
This is a brute-force way to find all the prime numbers up to 100. Of course,
this is only for didactical purposes, normally you would use a better method.
Similarly, the ``sleep`` function is so that it does not run too fast. Still,
it illustrates the basic functionality of Jug for embarassingly parallel
problems.
Type ``jug status primes.py`` to get::
Task name Waiting Ready Finished Running
----------------------------------------------------------------------
primes.is_prime 0 99 0 0
......................................................................
Total: 0 99 0 0
This tells you that you have 99 tasks called ``primes.is_prime`` ready to run.
So run ``jug execute primes.py &``. You can even run multiple instances in the
background (if you have multiple cores, for example). After starting 4
instances and waiting a few seconds, you can check the status again (with ``jug
status primes.py``)::
Task name Waiting Ready Finished Running
----------------------------------------------------------------------
primes.is_prime 0 63 32 4
......................................................................
Total: 0 63 32 4
Now you have 32 tasks finished, 4 running, and 63 still ready. Eventually, they
will all finish and you can inspect the results with ``jug shell primes.py``.
This will give you an ``ipython`` shell. The `primes100` variable is available,
but it is an ugly list of `jug.Task` objects. To get the actual value, you call
the `value` function::
In [1]: primes100 = value(primes100)
In [2]: primes100[:10]
Out[2]: [True, True, False, True, False, True, False, False, False, True]
What's New
----------
Version 2.3.1 (*5 November 2023*)
- Update for Python 3.12
Version 2.3.0 (*25 June 2023*)
- jug shell: Add ``get_filtered_tasks()``
- jug: Fix ``jug --version`` (which had been broken in the refactoring to use subcommands)
- jug shell: Fix message in jug shell when there are no dependencies (it would repeatedly print the message stating *this will only be run once*)
- jug pack: Make it much faster to invalidate elements
- file_store: ensure that the temporary directory exists
Version 2.2.3 (*26 May 2023*)
- Fix ``jug shell`` for newer versions of IPython
Version 2.2.2 (*19 July 2022*)
- Fix ``jug cleanup`` when packs are used (``jug pack``)
Version 2.2.1 (*19 May 2022*)
- Fix bug with ``jug cleanup`` and the redis backend (`#86 `__)
Version 2.2.0 (*3 May 2022*)
- Add ``jug pack`` subcommand
- Make ``get_tasks()`` return a copy of the tasks inside ``jug shell``
- Remove ``six`` dependency
Version 2.1.1 (*18 March 2021*)
- Include requirements files in distribution
Version 2.1.0 (*18 March 2021*)
- Improvements to webstatus (by Robert Denham)
- Removed Python 2.7 support
- Fix output encoding for Python 3.8
- Fix bug mixing ``mapreduce()`` & ``status --cache``
- Make block_access (used in ``mapreduce()``) much faster (20x)
- Fix important redis bug
- More precise output in ``cleanup`` command
Version 2.0.2 (Thu Jun 11 2020)
- Fix command line argument parsing
Version 2.0.1 (Thu Jun 11 2020)
- Fix handling of ``JUG_EXIT_IF_FILE_EXISTS`` environmental variable
- Fix passing an argument to ``jug.main()`` function
- Extend ``--pdb`` to exceptions raised while importing the jugfile (issue #79)
version **2.0.0** (Fri Feb 21 2020)
- jug.backend.base_store has 1 new method 'listlocks'
- jug.backend.base_lock has 2 new methods 'fail' and 'is_failed'
- Add 'jug execute --keep-failed' to preserve locks on failing tasks.
- Add 'jug cleanup --failed-only' to remove locks from failed tasks
- 'jug status' and 'jug graph' now display failed tasks
- Check environmental exit variables by default (suggested by Renato Alves, issue #66)
- Fix 'jug sleep-until' in the presence of barrier() (issue #71)
For older version see ``ChangeLog`` file or the `full history
`__.
Owner
- Name: Luis Pedro Coelho
- Login: luispedro
- Kind: user
- Location: Luxembourg & Shanghai
- Company: Fudan University
- Website: https://luispedro.org
- Twitter: luispedrocoelho
- Repositories: 204
- Profile: https://github.com/luispedro
Citation (CITATION)
If you use Jug to generate results for a scientific publication, please cite
Coelho, L.P., (2017). Jug: Software for Parallel Reproducible Computation in
Python. Journal of Open Research Software. 5(1), p.30.
http://doi.org/10.5334/jors.161
GitHub Events
Total
- Release event: 1
- Watch event: 42
- Delete event: 2
- Push event: 16
- Pull request event: 1
- Create event: 2
Last Year
- Release event: 1
- Watch event: 42
- Delete event: 2
- Push event: 16
- Pull request event: 1
- Create event: 2
Committers
Last synced: 10 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Luis Pedro Coelho | l****s@l****g | 439 |
| Luis Pedro Coelho | l****c@c****u | 415 |
| Renato Alves | a****c@g****m | 44 |
| Elliott Sales de Andrade | q****t@g****m | 14 |
| Luis Pedro Coelho | l****o@l****) | 13 |
| Robert Denham | r****t@F****l | 3 |
| dsign | a****l@g****m | 3 |
| Alex Ford | f****s@u****u | 3 |
| Hamilton Turner | h****t@g****m | 2 |
| Andreas Sorge | as@a****e | 1 |
| Breanndán Ó Nualláin | b****n@s****l | 1 |
| Christian Jauvin | c****n@g****m | 1 |
| DOMINIQUE GEFFROY | g****e@f****r | 1 |
| Gregory Doran | g****g@p****o | 1 |
| Leonhard Markert | c****o | 1 |
| abingham | a****m@g****m | 1 |
| The Gitter Badger | b****r@g****m | 1 |
| Ulrich Dobramysl | u****o@g****t | 1 |
| cgcgcg | c****g | 1 |
Committer Domains (Top 20 + Academic)
gmx.at: 1
gitter.im: 1
prowler.io: 1
free.fr: 1
science.uva.nl: 1
asorge.de: 1
uw.edu: 1
lolitop.(none): 1
cmu.edu: 1
luispedro.org: 1
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 48
- Total pull requests: 39
- Average time to close issues: 3 months
- Average time to close pull requests: 16 days
- Total issue authors: 26
- Total pull request authors: 19
- Average comments per issue: 2.46
- Average comments per pull request: 1.77
- Merged pull requests: 32
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- unode (7)
- justinrporter (6)
- andsor (5)
- danpf (3)
- chenxi-shi (3)
- samuela (3)
- QuLogic (2)
- novelistparty (1)
- cgcgcg (1)
- quz2004 (1)
- atbug (1)
- rjplevin (1)
- HeinerTholen (1)
- jaideep99 (1)
- justpic (1)
Pull Request Authors
- unode (13)
- QuLogic (5)
- andsor (3)
- hamiltont (2)
- asford (2)
- luispedro (2)
- curiousleo (1)
- alcidesv (1)
- cjauvin (1)
- abingham (1)
- aggronerd (1)
- bon (1)
- aaronjg (1)
- rdenham (1)
- cgcgcg (1)
Top Labels
Issue Labels
good-first-issue (1)
enhancement (1)
Pull Request Labels
codex (1)
Packages
- Total packages: 2
-
Total downloads:
- pypi 379 last-month
-
Total dependent packages: 1
(may contain duplicates) -
Total dependent repositories: 7
(may contain duplicates) - Total versions: 83
- Total maintainers: 1
pypi.org: jug
A Task Based Parallelization Framework
- Homepage: https://jug.readthedocs.io
- Documentation: https://jug.readthedocs.io/
- License: MIT
-
Latest release: 2.4.0
published 8 months ago
Rankings
Dependent packages count: 4.8%
Dependent repos count: 5.5%
Average: 8.0%
Downloads: 13.6%
Maintainers (1)
Last synced:
4 months ago
conda-forge.org: jug
Jug allows you to write code that is broken up into tasks and run different tasks on different processors.
- Homepage: https://github.com/luispedro/jug
- License: MIT
-
Latest release: 2.2.2
published over 3 years ago
Rankings
Stargazers count: 17.9%
Forks count: 21.1%
Average: 31.1%
Dependent repos count: 34.0%
Dependent packages count: 51.2%
Last synced:
4 months ago
Dependencies
docs/source/requirements.txt
pypi
- myst-parser *
- numpydoc *
test-requirements.txt
pypi
- numpy *
- pyyaml *
- redis *
.github/workflows/python-package.yml
actions
- actions/checkout v2 composite
- actions/setup-python v2 composite
- supercharge/redis-github-action 1.1.0 composite
requirements.txt
pypi
setup.py
pypi