There are three distinct ways to run python code or applications on biowulf:
- Using one of the general purpose python modules (see
the table below for which modules are available and
what packages are installed. The large number of packages available in
these environments are updated regularly. These modules are convenient and
are most useful for development or when the exact version of installed
packages is not important. Note that there is also a link from
/usr/local/bin/python
to the general purpose python 2.7 environment and from/usr/local/bin/python3
to a python 3 environment - Using a private installation of miniconda. Users who need stable, reproducible environments are encouraged to install miniconda in their data directory and create their own private environments. This is less convenient than the general use environments but allows users to quickly install packages themselves, create invariant environmets for stability, and install packages that may not be suited for inclusion in the general purpose environments.
- Using the system python 2.7 which is located in
/usr/bin/python
. This is the python installed with the operating system and contains few packages. Rarely used.
- Jan 2022
-
- A python/3.9 module is now available
- The python/3.8 module is now the default python module
/usr/local/bin/python3
is now python 3.8- The python/3.5 and 3.6 modules are deprecated. Please move to python>=3.7.
- Various package updates.
- mpi4py has been updated and migrated to a different MPI library. Use
mpiexec
instead of srun
- Sep 2020: python/3.8 becomes available
- Apr 2020: python/3.7 becomes the default module
- The default python module changed to python/3.7 since python/2.7 is not supported
any longer. python/2.7 continues to be available and
/usr/local/bin/python
still points to python 2.7. - Jul 2019: python/3.7 becomes available
- Jun 2018: Cluster update from RHEL6 to RHEL7
Coincident with the update of the Biowulf operating system there were several major changes to the python setup:
- The
python/2.7.X
environments and modules were retired. - The
Anaconda/X
environments and modules were retired. conda
itself is not exposed to users any more. Please use a private installation of conda to build your own environmentsOMP_NUM_THREADS
is set to 1. To make use of implicit multithreading in the numerical packages this environment variable has to be set explicitly to a value greater than 1.- User environments that were using symbolic links to the central package cache likely were broken during the transition and will have to be rebuilt.
- The
This is a list of common pitfalls for python users on the cluster. Some of these are discussed in other sections of this documentation in more detail.
- Some commonly use command line tools are also included in the python environments
- Some of the python packages in our environments depend on commonly used command line tools. Since our environments are created with conda, this means conda insists on installing these tools along with the python package. A common example is samtools/bcftools. This means loading a python module after loading a samtools module will result in samtools from the python environment appearing first in your PATH.
- Implicit multithreading while using multiprocessing
- Certain python libraries can use implicit multithreading to speed up some
numerical algorithms. The number of threads used for this is determined
by the environment variable
OMP_NUM_THREADS
. If this is done while also using multiprocessing batch jobs can be overloaded. For example, if creating a multiprocessing jobs with 10 worker processes and settingOMP_NUM_THREADS
also to 10, a total of 10 * 10 = 100 threads is created. To avoid this happening accidentally the python modules setOMP_NUM_THREADS
to 1. It needs to be set to more than one explicitly to take advantage of parallelized math libraries. - Overloaded jobs due to nested parallelism
- One example example of this is passing a model that parallelize such as
XGBClassifier
(xgboost) toRandomizedSearchCV
(scikit-learn) which parallelizes the search across a parameter space. Both will by default attempt to use all CPUs. So if there are N CPUs detected, RandomizedSearch will start N processes running XGBClassifier and each process will run N threads. This can be prevented by explicitly specifying the number of parallel threads/processes at each level. In this case, both components take `n_jobs` as an argument. The product of the two should equal the number of available CPUs. - Implicit multithreading without setting OMP_NUM_THREADS
- If
OMP_NUM_THREADS
is not set, the numerical libraries will attempt use all CPUs on a compute node. Unless all CPUs have been allocated this will result in overloading the job. The general use python modules setOMP_NUM_THREADS
to 1 requiring users to explicitly set the variable higher to take advantage of implicit multithreading. If you are using your own python environments, please be sure to setOMP_NUM_THREADS
explicitly for all code that can potentially multithread. - multiprocessing.cpu_count()
-
The
cpu_count()
function of themultiprocessing
package always reports the total CPU count for a node. This is often the cause for overloaded python batch jobs. Instead query the environment forSLURM_CPUS_PER_TASK
and default to 2, the minimum allocation.[user@biowulf ~]$ sinteractive --cpus-per-task=2 ... [user@cn3444 ~]$ module load python/3.9 [user@cn3444 ~]$ python Python 3.9.9 | packaged by conda-forge | (main, Dec 20 2021, 02:41:03) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import multiprocessing >>> multiprocessing.cpu_count() 56 # <-- wrong >>> import os >>> int(os.environ.get('SLURM_CPUS_PER_TASK', '2')) 2 # <-- right
- Hung multiprocessing pools
- If a worker in a multiprocessing pool gets killed as can happen if a job exceeds allocated memory, the whole pool will wait indefinately (i.e. until the job times out) for the killed worker to return results. Make sure to allocate sufficient memory and test code.
- Python startup problem
- Python looks through a lot of paths for certain files during startup. Therefore, starting up many concurrent python processes can strain the shared file system. This is especially true if running large swarms where each subjob runs multiple short python proceses. If you have very short running python processes, please modify the code such that each script does more work.
- Packages installed in the home directory
- Python includes
~/.local/lib/pythonX.X/site-packages
in the package search path. If you have packages installed there they can override the centrally installed packages. This can lead to hard to diagnose problems. If you have problems that are resolved by adding the-s
option a broken package installed in your home directory may be the cause. - Conda install filled up /home
- At this time we do not allow requests to increase the quota on home directories. A conda install with some moderately sized environments can fill up that space quickly. We therefore advise against installing conda in your home directory. /data is a better place.
- Conda activate added to shell init
- Adding conda initialization to your
.bashrc/.cshrc/.zshrc
can cause problems with NoMachine/VNC (and other issues). We recommend not allowing conda to initialize during shell startup. - Swarm and Python environments
- If activating one of your own environment within a swarm some versions of conda may encounter a race condition that will lead to some swarm subjobs failing to activate the environment correctly. This can be avoided by either activating the conda environment before submitting the swarm (the environment gets exported to the job) or by calling python with the full path to your environment without activating the environment. Update: This should not be happening any longer but leaving note here in case there is a regression.
- matplotlib in non-interactive environments
- By default matplotlib uses an interactive backend. This works if the backend can connect to a graphical user interface (e.g. if using X11 forwarding through an ssh tunnel or NX). However, if there is no GUI to connect to, this will fail with an error message that includes.
- python environments and NoMachine problems
- If you add the executables of the conda dbus package to your PATH in one of your startup files (e.g. ~/.bashrc), NoMachine may fail with a black screen. This can happen when you load a python module or activate your own conda installation. The solution is to remove any unnecessary initialization from your .bashrc or, if this is an environment under your control, remove the dbus package from the environment.
Could not connect to any X display
This can be solved by using a non-interactive backend for plotting. Which backend matplotlib uses can be changed in a couple of different ways:
matplotlib settings can be modified using a
matplotlibrc
file. This file can be placed either in
the current working directory or in ~/.config/matplotlib
. If
placed in the former it will only affect jobs run from this directory. If
placed in the latter, it will affect all your calls to matplotlib. For
example, if you'd like to change the default backend, create the file
~/.config/matplotlib/matplotlibrc
with the following content:
backend: agg
Alternatively, you can set the MPLBACKEND
environment variable
either ad hoc or in your .bashrc:
export MPLBACKEND=agg
And finally, it can also be set programatically:
>>> import matplotlib >>> matplotlib.use("agg")
Available backends and the currently active backends can be queried interactively in python:
>>> import matplotlib >>> matplotlib.rcsetup.interactive_bk ['GTK', 'GTKAgg', 'GTKCairo', 'GTK3Agg', 'GTK3Cairo', 'nbAgg', 'Qt4Agg', 'Qt4Cairo', 'Qt5Agg', 'Qt5Cairo', 'TkAgg', 'TkCairo', 'WebAgg', 'WX', 'WXAgg', 'WXCairo'] >>> matplotlib.rcsetup.non_interactive_bk ['agg', 'cairo', 'gdk', 'pdf', 'pgf', 'ps', 'svg', 'template'] >>> import matplotlib.pyplot as plt >>> plt.get_backend() 'agg'
The general purpose Python environments are made available through the module system:
[user@cn3444 ~]$ module -t avail python /usr/local/lmod/modulefiles: python/2.7 python/3.6 python/3.7 python/3.8 python/3.9 [user@cn3444 ~]$ module load python/3.8 [+] Loading python 3.9 ... [user@cn3444 ~]$ python Python 3.9.9 | packaged by conda-forge | (main, Dec 20 2021, 02:41:03) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import numpy >>>
These are fully featured (conda) environments with many installed packages including the usual modules that make up the scientific Python stack (see below). These environments best suited for development and for running code that is not dependent on specific versions of the installed packages. Packages in these environments are updated regularly. If you need more stability to ensure reproducibility or because your code depends on the presence of certain fixed versions of packages you can also build your own environments.
Python scientific stack
The usual scientific python stack (numpy, scipy, scikit-learn, numba, pandas, ...) is included in all the general purpose environments. Numpy and scipy are compiled against the accelerated Intel MKL library.Because they are compiled against MKL, some mathematical operations (e.g.
SVD) can make use of multithreading to accelerate computation. The number of
threads such operations will create is determined by the environment variable
OMP_NUM_THREADS
. To avoid accidentally overloading
jobs, especially when also doing multiprocessing,
this variable is set to 1 by the python modules. If your code
can take advantage of implicit parallelism you can set this variable to match
the number of allocated CPUs for cluster jobs or adjust it such that the product
of OMP_NUM_THREADS * number of processes
equals the number of
allocated CPUS. For example, if allocating 16 CPUs and planning on using
multiprocessing with 4 workers, OMP_NUM_THREADS
can be set as high
as 4 without overloading the allocation.
The following packages are available in the general purpose python environments
Package | python/3.7 | python/3.8 | python/3.9 |
---|---|---|---|
abseil-cpp | 20210324.2 | 20210324.2 | 20210324.2 |
absl-py | 1.0.0 | 0.15.0 | 1.1.0 |
aioeasywebdav | 2.4.0 | 2.4.0 | 2.4.0 |
aiohttp | 3.8.1 | 3.8.1 | 3.8.1 |
aiohttp-cors | n/a | 0.7.0 | n/a |
aioredis | n/a | 1.3.1 | 2.0.1 |
aiosignal | 1.2.0 | 1.2.0 | 1.2.0 |
alabaster | 0.7.12 | 0.7.12 | 0.7.12 |
alsa-lib | 1.2.3 | 1.2.3.2 | 1.2.3.2 |
amply | 0.1.4 | 0.1.5 | 0.1.5 |
anndata | 0.8.0 | 0.8.0 | 0.8.0 |
aom | 3.3.0 | 3.3.0 | 3.3.0 |
appdirs | 1.4.4 | 1.4.4 | 1.4.4 |
apptools | 5.1.0 | 5.1.0 | 5.1.0 |
argcomplete | 2.0.0 | 2.0.0 | 2.0.0 |
argh | 0.26.2 | 0.26.2 | 0.26.2 |
argon2-cffi | n/a | 21.3.0 | 21.3.0 |
argon2-cffi-bindings | n/a | 21.2.0 | 21.2.0 |
arrow | 1.2.2 | 1.2.2 | 1.2.2 |
arrow-cpp | 6.0.1 | 5.0.0 | 6.0.1 |
arviz | 0.12.0 | 0.12.1 | 0.12.1 |
asn1crypto | 1.5.1 | 1.5.1 | 1.5.1 |
astor | 0.8.1 | 0.8.1 | 0.8.1 |
astroid | 2.11.2 | 2.7.3 | 2.11.6 |
astropy | 4.3.1 | 5.1 | 5.1 |
asttokens | n/a | 2.0.5 | 2.0.5 |
astunparse | 1.6.3 | 1.6.3 | 1.6.3 |
async_generator | 1.10 | 1.10 | 1.10 |
asynctest | 0.13.0 | n/a | n/a |
async-timeout | 4.0.2 | 4.0.2 | 4.0.2 |
atk | 2.36.0 | n/a | n/a |
atk-1.0 | 2.36.0 | 2.36.0 | 2.36.0 |
atomicwrites | 1.4.0 | 1.4.0 | 1.4.0 |
attmap | 0.13.2 | 0.13.2 | 0.13.2 |
attrs | 21.4.0 | 21.4.0 | 21.4.0 |
automat | 20.2.0 | 20.2.0 | 20.2.0 |
autopep8 | 1.5.6 | 1.5.6 | 1.6.0 |
aws-c-auth | n/a | n/a | 0.6.8 |
aws-c-cal | 0.5.11 | 0.5.11 | 0.5.12 |
aws-c-common | 0.6.2 | 0.6.2 | 0.6.17 |
aws-c-compression | n/a | n/a | 0.2.14 |
aws-c-event-stream | 0.2.7 | 0.2.7 | 0.2.7 |
aws-checksums | 0.1.11 | 0.1.11 | 0.1.12 |
aws-c-http | n/a | n/a | 0.6.10 |
aws-c-io | 0.10.5 | 0.10.5 | 0.10.14 |
aws-c-mqtt | n/a | n/a | 0.7.10 |
aws-crt-cpp | n/a | n/a | 0.17.10 |
aws-c-s3 | n/a | n/a | 0.1.29 |
aws-c-sdkutils | n/a | n/a | 0.1.1 |
aws-sdk-cpp | 1.8.186 | 1.8.186 | 1.9.160 |
babel | 2.9.1 | 2.10.3 | 2.10.3 |
backcall | 0.2.0 | 0.2.0 | 0.2.0 |
backports | 1.0 | 1.0 | 1.0 |
backports.functools_lru_cache | 1.6.4 | 1.6.4 | 1.6.4 |
backports.os | 0.1.1 | 0.1.1 | 0.1.1 |
backports.shutil_get_terminal_size | 1.0.0 | 1.0.0 | 1.0.0 |
backports.zoneinfo | 0.2.1 | 0.2.1 | 0.2.1 |
basemap | 1.2.2 | 1.2.2 | 1.2.2 |
bcolz | 1.2.1 | 1.2.1 | n/a |
bcrypt | 3.2.0 | 3.2.2 | 3.2.2 |
beautifulsoup4 | 4.11.1 | 4.11.1 | 4.11.1 |
bedtools | 2.30.0 | 2.30.0 | 2.30.0 |
bidict | 0.22.0 | 0.22.0 | 0.22.0 |
binaryornot | 0.4.4 | 0.4.4 | 0.4.4 |
binutils_impl_linux-64 | 2.36.1 | 2.36.1 | 2.36.1 |
binutils_linux-64 | 2.36 | 2.36 | 2.36 |
biom-format | 2.1.12 | 2.1.12 | 2.1.12 |
biopandas | n/a | n/a | 0.4.1 |
biopython | 1.79 | 1.79 | 1.79 |
bioread | 1.0.4 | n/a | n/a |
bitarray | 2.4.1 | 2.5.1 | 2.5.1 |
black | 22.3.0 | 21.7b0 | 22.3.0 |
blas | 2.114 | 2.108 | 2.115 |
blas-devel | 3.9.0 | 3.9.0 | 3.9.0 |
bleach | 5.0.0 | 5.0.0 | 5.0.0 |
blinker | 1.4 | 1.4 | 1.4 |
blosc | 1.21.0 | 1.21.1 | 1.21.1 |
bokeh | 2.4.2 | 2.3.3 | 2.4.3 |
boost | 1.74.0 | n/a | n/a |
boost-cpp | 1.74.0 | 1.77.0 | 1.77.0 |
boto | 2.49.0 | 2.49.0 | 2.49.0 |
boto3 | 1.21.42 | 1.24.13 | 1.24.14 |
botocore | 1.24.42 | 1.27.14 | 1.27.14 |
bottleneck | 1.3.4 | 1.3.4 | 1.3.4 |
brotli | 1.0.9 | 1.0.9 | 1.0.9 |
brotli-bin | 1.0.9 | 1.0.9 | 1.0.9 |
brotlipy | 0.7.0 | 0.7.0 | 0.7.0 |
brunsli | 0.1 | 0.1 | 0.1 |
bz2file | 0.98 | 0.98 | 0.98 |
bzip2 | 1.0.8 | 1.0.8 | 1.0.8 |
ca-certificates | 2021.10.8 | 2022.6.15 | 2022.6.15 |
cached_property | 1.5.2 | 1.5.2 | 1.5.2 |
cached-property | 1.5.2 | 1.5.2 | 1.5.2 |
cachetools | 4.2.4 | 5.0.0 | 4.2.4 |
cairo | 1.16.0 | 1.16.0 | 1.16.0 |
c-ares | 1.18.1 | 1.18.1 | 1.18.1 |
c-blosc2 | 2.0.4 | 2.1.1 | 2.1.1 |
certifi | 2021.10.8 | 2022.6.15 | 2022.6.15 |
cffi | 1.15.0 | 1.15.0 | 1.15.0 |
cfitsio | 4.0.0 | 4.1.0 | 4.1.0 |
cftime | 1.6.0 | 1.6.0 | 1.6.0 |
chardet | 4.0.0 | 4.0.0 | 4.0.0 |
charls | 2.3.4 | 2.3.4 | 2.3.4 |
charset-normalizer | 2.0.12 | 2.0.12 | 2.0.12 |
click | 8.1.2 | 8.1.3 | 8.1.3 |
clikit | 0.6.2 | 0.6.2 | 0.6.2 |
cloudpickle | 2.0.0 | 2.1.0 | 2.1.0 |
clyent | 1.2.2 | 1.2.2 | 1.2.2 |
coincbc | 2.10.7 | 2.10.8 | 2.10.8 |
coin-or-cbc | 2.10.7 | 2.10.8 | 2.10.8 |
coin-or-cgl | 0.60.3 | 0.60.3 | 0.60.6 |
coin-or-clp | 1.17.6 | 1.17.7 | 1.17.6 |
coin-or-osi | 0.108.6 | 0.108.7 | 0.108.7 |
coin-or-utils | 2.11.6 | 2.11.6 | 2.11.6 |
colorama | 0.4.4 | 0.4.5 | 0.4.5 |
colorcet | 3.0.0 | 3.0.0 | 3.0.0 |
coloredlogs | 15.0.1 | 15.0.1 | 15.0.1 |
colorful | n/a | 0.5.4 | 0.5.4 |
colormath | 3.0.0 | 3.0.0 | 3.0.0 |
colorspacious | n/a | 1.1.2 | n/a |
commonmark | 0.9.1 | 0.9.1 | 0.9.1 |
configargparse | 1.5.3 | 1.5.3 | 1.5.3 |
configobj | 5.0.6 | 5.0.6 | 5.0.6 |
configparser | 5.2.0 | 5.2.0 | 5.2.0 |
connection_pool | 0.0.3 | 0.0.3 | 0.0.3 |
constantly | 15.1.0 | 15.1.0 | 15.1.0 |
contextlib2 | 21.6.0 | 21.6.0 | 21.6.0 |
cookiecutter | 1.7.3 | 2.1.1 | 2.1.1 |
coverage | 6.3.2 | n/a | n/a |
crashtest | 0.3.1 | 0.3.1 | 0.3.1 |
crc32c | 2.2.post0 | 2.2.post0 | 2.2.post0 |
crcmod | 1.7 | 1.7 | 1.7 |
cryptography | 36.0.2 | 37.0.2 | 37.0.2 |
cudatoolkit | 10.2.89 | 11.3.1 | 11.6.0 |
cudnn | 7.6.5.32 | 8.4.1.50 | 8.4.1.50 |
cupy | 10.3.1 | 10.5.0 | 10.5.0 |
curl | 7.82.0 | 7.83.1 | 7.83.1 |
cutensor | n/a | 1.5.0.3 | 1.5.0.3 |
cvxopt | 1.3.0 | 1.3.0 | 1.3.0 |
cvxpy | 1.2.0 | 1.2.1 | 1.2.1 |
cvxpy-base | 1.2.0 | 1.2.1 | 1.2.1 |
cxxfilt | 0.3.0 | 0.3.0 | 0.3.0 |
cycler | 0.11.0 | 0.11.0 | 0.11.0 |
cython | 0.29.28 | 0.29.30 | 0.29.30 |
cytoolz | 0.11.2 | 0.11.2 | 0.11.2 |
cyvcf2 | 0.30.15 | 0.30.15 | 0.30.15 |
darkdetect | n/a | 0.6.0 | n/a |
dask | 2022.2.0 | 2022.2.1 | 2022.6.0 |
dask-core | 2022.2.0 | 2022.2.1 | 2022.6.0 |
dask-jobqueue | 0.7.3 | 0.7.3 | 0.7.3 |
dataclasses | 0.8 | 0.8 | 0.8 |
datashape | 0.5.4 | 0.5.4 | 0.5.4 |
datrie | 0.8.2 | 0.8.2 | 0.8.2 |
dbus | 1.13.6 | 1.13.6 | 1.13.6 |
debugpy | 1.6.0 | 1.6.0 | 1.6.0 |
decorator | 5.1.1 | 5.1.1 | 5.1.1 |
deepdiff | 5.8.0 | 5.8.1 | 5.8.1 |
defusedxml | 0.7.1 | 0.7.1 | 0.7.1 |
dendropy | 4.5.2 | 4.5.2 | 4.5.2 |
deprecated | 1.2.13 | 1.2.13 | 1.2.13 |
descartes | 1.1.0 | 1.1.0 | 1.1.0 |
diff-match-patch | 20200713 | 20200713 | 20200713 |
dill | 0.3.4 | 0.3.5.1 | 0.3.5.1 |
dipy | 1.3.0 | 1.5.0 | 1.5.0 |
distlib | 0.3.4 | n/a | 0.3.4 |
distributed | 2022.2.0 | 2022.2.1 | 2022.6.0 |
dm-tree | n/a | 0.1.7 | 0.1.7 |
dnspython | 2.2.1 | 2.2.1 | 2.2.1 |
docopt | 0.6.2 | 0.6.2 | 0.6.2 |
docutils | 0.17.1 | 0.18.1 | 0.18.1 |
double-conversion | n/a | 3.1.7 | 3.2.0 |
dpath | n/a | 2.0.6 | 2.0.6 |
dropbox | 11.29.0 | 11.32.0 | 11.32.0 |
dsdp | 5.8 | 5.8 | 5.8 |
ecdsa | 0.17.0 | 0.17.0 | 0.17.0 |
ecos | 2.0.10 | 2.0.10 | 2.0.10 |
edflib-python | n/a | 1.0.6 | n/a |
eeglabio | n/a | 0.0.1.post7 | n/a |
eigen | 3.4.0 | 3.4.0 | 3.4.0 |
elfutils | n/a | n/a | 0.186 |
entrypoints | 0.4 | 0.4 | 0.4 |
envisage | 6.0.1 | 6.0.1 | 6.0.1 |
et_xmlfile | 1.0.1 | 1.0.1 | 1.0.1 |
executing | n/a | 0.8.3 | 0.8.3 |
expat | 2.4.8 | 2.4.8 | 2.4.8 |
fabric | 2.7.0 | 2.7.0 | 2.7.0 |
fastcache | 1.1.0 | 1.1.0 | 1.1.0 |
fastrlock | 0.8 | 0.8 | 0.8 |
feather-format | 0.4.1 | 0.4.1 | 0.4.1 |
ffmpeg | 4.4.1 | 4.4.0 | 5.0.1 |
fftw | 3.3.10 | 3.3.10 | 3.3.10 |
filechunkio | 1.8 | 1.8 | 1.8 |
filelock | 3.6.0 | 3.7.1 | 3.7.1 |
flake8 | 3.8.4 | 3.8.4 | 4.0.1 |
flask | 2.1.1 | 2.1.2 | 2.1.2 |
flask-cors | 3.0.10 | 3.0.10 | 3.0.10 |
flit-core | n/a | 3.7.1 | 3.7.1 |
fontconfig | 2.14.0 | 2.14.0 | 2.14.0 |
fonts-conda-ecosystem | 1 | 1 | 1 |
fonts-conda-forge | 1 | 1 | 1 |
fonttools | 4.32.0 | 4.33.3 | 4.33.3 |
font-ttf-dejavu-sans-mono | 2.37 | 2.37 | 2.37 |
font-ttf-inconsolata | 3.000 | 3.000 | 3.000 |
font-ttf-source-code-pro | 2.038 | 2.038 | 2.038 |
font-ttf-ubuntu | 0.83 | 0.83 | 0.83 |
freeglut | 3.2.2 | 3.2.2 | 3.2.2 |
freetype | 2.10.4 | 2.10.4 | 2.10.4 |
fribidi | 1.0.10 | 1.0.10 | 1.0.10 |
frozenlist | 1.3.0 | 1.3.0 | 1.3.0 |
fsspec | 2022.3.0 | 2022.5.0 | 2022.5.0 |
ftputil | 5.0.3 | 5.0.4 | 5.0.4 |
func_timeout | 4.3.5 | 4.3.5 | 4.3.5 |
future | 0.18.2 | 0.18.2 | 0.18.2 |
gast | 0.4.0 | 0.4.0 | 0.4.0 |
gcc_impl_linux-64 | 9.4.0 | 9.4.0 | 9.4.0 |
gcc_linux-64 | 9.4.0 | 9.4.0 | 9.4.0 |
gdk-pixbuf | 2.42.8 | 2.42.8 | 2.42.8 |
geneimpacts | 0.3.7 | 0.3.7 | 0.3.7 |
gensim | 4.1.2 | 4.2.0 | n/a |
geos | 3.9.1 | 3.8.1 | 3.9.1 |
gettext | 0.19.8.1 | 0.19.8.1 | 0.19.8.1 |
gevent | 21.12.0 | 21.12.0 | 21.12.0 |
gffutils | 0.10.1 | 0.11.0 | 0.11.0 |
gflags | 2.2.2 | 2.2.2 | 2.2.2 |
ghostscript | 9.54.0 | 9.54.0 | 9.54.0 |
giflib | 5.2.1 | 5.2.1 | 5.2.1 |
g-ir-build-tools | 1.72.0 | 1.72.0 | 1.72.0 |
g-ir-host-tools | 1.72.0 | 1.72.0 | 1.72.0 |
gitdb | n/a | 4.0.9 | 4.0.9 |
gitdb2 | 3.0.2 | 4.0.2 | 4.0.2 |
gitpython | 3.0.8 | 3.1.27 | 3.1.27 |
gl2ps | n/a | 1.4.2 | 1.4.2 |
glew | n/a | 2.1.0 | 2.1.0 |
glib | 2.70.2 | 2.70.2 | 2.70.2 |
glib-tools | 2.70.2 | 2.70.2 | 2.70.2 |
glob2 | 0.7 | 0.7 | 0.7 |
globus-sdk | 3.3.1 | 3.3.1 | 3.3.1 |
glog | 0.5.0 | 0.5.0 | 0.5.0 |
glpk | 4.65 | 4.65 | 4.65 |
gmp | 6.2.1 | 6.2.1 | 6.2.1 |
gmpy2 | 2.1.2 | 2.1.2 | 2.1.2 |
gnutls | 3.6.13 | 3.6.13 | 3.6.13 |
gobject-introspection | 1.72.0 | 1.72.0 | 1.72.0 |
google-api-core | 1.31.5 | 2.8.2 | 2.8.2 |
google-api-python-client | 2.44.0 | 2.51.0 | 2.51.0 |
googleapis-common-protos | 1.56.0 | 1.56.3 | 1.56.3 |
google-auth | 1.35.0 | 2.8.0 | 1.35.0 |
google-auth-httplib2 | 0.1.0 | 0.1.0 | 0.1.0 |
google-auth-oauthlib | 0.4.6 | 0.4.6 | 0.4.6 |
google-cloud-core | 1.7.2 | 2.3.1 | 2.3.1 |
google-cloud-storage | 2.1.0 | 2.4.0 | 2.4.0 |
google-crc32c | 1.1.2 | 1.1.2 | 1.1.2 |
google-pasta | 0.2.0 | 0.2.0 | 0.2.0 |
google-resumable-media | 2.1.0 | 2.3.3 | 2.3.3 |
graphite2 | 1.3.13 | 1.3.13 | 1.3.13 |
graphviz | 3.0.0 | 2.50.0 | 3.0.0 |
greenlet | 1.1.2 | 1.1.2 | 1.1.2 |
grpc-cpp | 1.42.0 | 1.39.1 | 1.42.0 |
grpcio | 1.42.0 | 1.39.0 | 1.42.0 |
gsl | 2.7 | 2.7 | 2.7 |
gst-plugins-base | 1.20.1 | 1.18.5 | 1.20.2 |
gstreamer | 1.20.1 | 1.18.5 | 1.20.3 |
gtk2 | 2.24.33 | 2.24.33 | 2.24.33 |
gts | 0.7.6 | 0.7.6 | 0.7.6 |
gxx_impl_linux-64 | 9.4.0 | 9.4.0 | 9.4.0 |
gxx_linux-64 | 9.4.0 | 9.4.0 | 9.4.0 |
gym | n/a | 0.21.0 | 0.21.0 |
h5io | n/a | 0.1.7 | n/a |
h5py | 3.6.0 | 3.1.0 | 3.3.0 |
harfbuzz | 4.2.0 | 2.9.1 | 4.2.0 |
hdf4 | 4.2.15 | 4.2.15 | 4.2.15 |
hdf5 | 1.12.1 | 1.10.6 | 1.10.6 |
hdf5storage | 0.1.16 | 0.1.16 | 0.1.16 |
heapdict | 1.0.1 | 1.0.1 | 1.0.1 |
helpdev | 0.7.1 | 0.7.1 | 0.7.1 |
hiredis | n/a | 2.0.0 | 2.0.0 |
holoviews | n/a | 1.14.9 | 1.14.9 |
html5lib | 1.1 | 1.1 | 1.1 |
htseq | 2.0.1 | 2.0.1 | 2.0.1 |
htslib | 1.15.1 | 1.15.1 | 1.15.1 |
httplib2 | 0.20.4 | 0.20.4 | 0.20.4 |
httpstan | 4.4.2 | 4.5.0 | 4.5.0 |
humanfriendly | 10.0 | 10.0 | 10.0 |
hyperlink | 21.0.0 | 21.0.0 | 21.0.0 |
hypothesis | 6.43.3 | 6.47.1 | 6.29.3 |
icu | 69.1 | 68.2 | 69.1 |
idna | 3.3 | 3.3 | 3.3 |
idna_ssl | 1.1.0 | n/a | n/a |
igv-reports | 1.0.5 | 1.0.5 | 1.0.5 |
imagecodecs | 2021.11.20 | 2022.2.22 | 2022.2.22 |
imagecodecs-lite | n/a | 2019.12.3 | n/a |
imageio | 2.17.0 | 2.19.3 | 2.19.3 |
imageio-ffmpeg | n/a | 0.4.7 | n/a |
imagesize | 1.3.0 | 1.3.0 | 1.3.0 |
imgaug | 0.4.0 | n/a | n/a |
importlib_metadata | 4.11.3 | 4.11.4 | 4.11.4 |
importlib-metadata | 4.11.3 | 4.11.4 | 4.11.4 |
importlib_resources | 5.7.1 | 5.8.0 | 5.8.0 |
incremental | 21.3.0 | 21.3.0 | 21.3.0 |
inflection | 0.5.1 | 0.5.1 | 0.5.1 |
iniconfig | 1.1.1 | 1.1.1 | 1.1.1 |
intel-openmp | n/a | 2022.0.1 | n/a |
intervaltree | 3.0.2 | 3.0.2 | 3.0.2 |
invoke | 1.7.0 | 1.7.1 | 1.7.1 |
ipycanvas | n/a | 0.12.0 | n/a |
ipyevents | n/a | 2.0.1 | n/a |
ipykernel | 6.13.0 | 6.15.0 | 6.15.0 |
ipympl | n/a | 0.9.1 | 0.9.1 |
ipyparallel | 8.2.1 | 8.4.1 | 8.4.1 |
ipython | 7.32.0 | 8.4.0 | 8.4.0 |
ipython_genutils | 0.2.0 | 0.2.0 | 0.2.0 |
ipyvtklink | n/a | 0.2.2 | n/a |
ipywidgets | n/a | 7.7.0 | 7.7.0 |
isa-l | 2.30.0 | 2.30.0 | 2.30.0 |
isort | 5.10.1 | 5.10.1 | 5.10.1 |
itsdangerous | 2.1.2 | 2.1.2 | 2.1.2 |
jasper | 2.0.33 | 1.900.1 | 2.0.33 |
jbig | 2.1 | 2.1 | 2.1 |
jdcal | 1.4.1 | 1.4.1 | 1.4.1 |
jedi | 0.17.2 | 0.17.2 | 0.18.1 |
jeepney | 0.8.0 | 0.8.0 | 0.8.0 |
jellyfish | n/a | n/a | 0.9.0 |
jinja2 | 3.1.1 | 3.1.2 | 3.1.2 |
jinja2-time | 0.2.0 | 0.2.0 | 0.2.0 |
jmespath | 1.0.0 | 1.0.1 | 1.0.1 |
joblib | 1.1.0 | 1.1.0 | 1.1.0 |
jpeg | 9e | 9e | 9e |
json5 | 0.9.5 | 0.9.5 | 0.9.5 |
jsoncpp | 1.9.5 | 1.9.4 | 1.9.5 |
jsonpickle | 2.1.0 | 2.2.0 | 2.2.0 |
jsonschema | 4.4.0 | 4.6.0 | 4.6.0 |
jupyter | n/a | 1.0.0 | n/a |
jupyter_client | 7.2.2 | 7.3.4 | 7.3.4 |
jupyter_console | n/a | 6.4.3 | n/a |
jupyter_core | 4.9.2 | 4.10.0 | 4.10.0 |
jupyterlab_pygments | 0.2.2 | 0.2.2 | 0.2.2 |
jupyterlab_widgets | n/a | 1.1.0 | 1.1.0 |
jxrlib | 1.1 | 1.1 | 1.1 |
keras | 2.7.0 | 2.6.0 | 2.7.0 |
keras-applications | 1.0.8 | n/a | n/a |
keras-preprocessing | 1.1.2 | 1.1.2 | 1.1.2 |
kernel-headers_linux-64 | 3.10.0 | 3.10.0 | 3.10.0 |
keyring | 23.4.0 | 23.6.0 | 23.6.0 |
keyutils | 1.6.1 | 1.6.1 | 1.6.1 |
kiwisolver | 1.4.2 | 1.4.3 | 1.4.3 |
krb5 | 1.19.3 | 1.19.3 | 1.19.3 |
lame | 3.100 | 3.100 | 3.100 |
lazy-object-proxy | 1.7.1 | 1.7.1 | 1.7.1 |
lcms2 | 2.12 | 2.12 | 2.12 |
ld_impl_linux-64 | 2.36.1 | 2.36.1 | 2.36.1 |
lerc | 3.0 | 3.0 | 3.0 |
libaec | 1.0.6 | 1.0.6 | 1.0.6 |
libarchive | n/a | n/a | 3.5.2 |
libavif | n/a | 0.10.1 | 0.10.1 |
libblas | 3.9.0 | 3.9.0 | 3.9.0 |
libbrotlicommon | 1.0.9 | 1.0.9 | 1.0.9 |
libbrotlidec | 1.0.9 | 1.0.9 | 1.0.9 |
libbrotlienc | 1.0.9 | 1.0.9 | 1.0.9 |
libcblas | 3.9.0 | 3.9.0 | 3.9.0 |
libclang | 13.0.1 | 11.0.1 | 13.0.1 |
libclang-cpp10 | 10.0.1 | 10.0.1 | n/a |
libclang-cpp11 | 11.0.1 | 11.0.1 | n/a |
libclang-cpp12 | 12.0.1 | 12.0.1 | 12.0.1 |
libclang-cpp14 | n/a | 14.0.5 | 14.0.5 |
libcrc32c | 1.1.2 | 1.1.2 | 1.1.2 |
libcroco | 0.6.13 | n/a | n/a |
libcurl | 7.82.0 | 7.83.1 | 7.83.1 |
libdeflate | 1.10 | 1.10 | 1.10 |
libdrm | 2.4.109 | n/a | 2.4.111 |
libedit | 3.1.20191231 | 3.1.20191231 | 3.1.20191231 |
libev | 4.33 | 4.33 | 4.33 |
libevent | 2.1.10 | 2.1.10 | 2.1.10 |
libffi | 3.4.2 | 3.4.2 | 3.4.2 |
libgcc | 7.2.0 | n/a | n/a |
libgcc-devel_linux-64 | 9.4.0 | 9.4.0 | 9.4.0 |
libgcc-ng | 11.2.0 | 12.1.0 | 12.1.0 |
libgd | 2.3.3 | 2.3.3 | 2.3.3 |
libgfortran | 3.0.0 | n/a | n/a |
libgfortran5 | 11.2.0 | 12.1.0 | 12.1.0 |
libgfortran-ng | 11.2.0 | 12.1.0 | 12.1.0 |
libgirepository | 1.72.0 | 1.72.0 | 1.72.0 |
libglib | 2.70.2 | 2.70.2 | 2.70.2 |
libglu | 9.0.0 | 9.0.0 | 9.0.0 |
libgomp | 11.2.0 | 12.1.0 | 12.1.0 |
libgpuarray | 0.7.6 | 0.7.6 | 0.7.6 |
libhwloc | 2.7.1 | 2.7.1 | 2.7.1 |
libiconv | 1.16 | 1.16 | 1.16 |
libitk | 5.2.1 | 5.1.2 | 5.2.0 |
libitk-devel | n/a | 5.1.2 | 5.2.0 |
liblapack | 3.9.0 | 3.9.0 | 3.9.0 |
liblapacke | 3.9.0 | 3.9.0 | 3.9.0 |
libllvm10 | 10.0.1 | 10.0.1 | 10.0.1 |
libllvm11 | 11.0.1 | 11.0.1 | 11.1.0 |
libllvm12 | 12.0.1 | 12.0.1 | 12.0.1 |
libllvm13 | 13.0.1 | n/a | 13.0.1 |
libllvm14 | n/a | 14.0.5 | 14.0.5 |
libllvm8 | 8.0.1 | n/a | n/a |
libllvm9 | 9.0.1 | n/a | n/a |
libmicrohttpd | n/a | n/a | 0.9.75 |
libnetcdf | 4.8.1 | 4.8.0 | 4.8.1 |
libnghttp2 | 1.47.0 | 1.47.0 | 1.47.0 |
libnsl | 2.0.0 | 2.0.0 | 2.0.0 |
libogg | 1.3.4 | 1.3.4 | 1.3.4 |
libopencv | 4.5.5 | 4.5.3 | n/a |
libopus | 1.3.1 | 1.3.1 | 1.3.1 |
libpciaccess | 0.16 | n/a | 0.16 |
libpng | 1.6.37 | 1.6.37 | 1.6.37 |
libpq | 14.2 | 13.5 | 14.4 |
libprotobuf | 3.19.4 | 3.16.0 | 3.19.4 |
librsvg | 2.52.5 | 2.52.5 | 2.52.5 |
libsanitizer | 9.4.0 | 9.4.0 | 9.4.0 |
libsodium | 1.0.18 | 1.0.18 | 1.0.18 |
libspatialindex | 1.9.3 | 1.9.3 | 1.9.3 |
libssh2 | 1.10.0 | 1.10.0 | 1.10.0 |
libstdcxx-devel_linux-64 | 9.4.0 | 9.4.0 | 9.4.0 |
libstdcxx-ng | 11.2.0 | 12.1.0 | 12.1.0 |
libtheora | n/a | 1.1.1 | 1.1.1 |
libthrift | 0.15.0 | 0.14.2 | 0.15.0 |
libtiff | 4.3.0 | 4.4.0 | 4.4.0 |
libtool | 2.4.6 | 2.4.6 | 2.4.6 |
libunwind | n/a | 1.6.2 | 1.6.2 |
libutf8proc | 2.7.0 | 2.7.0 | 2.7.0 |
libuuid | 2.32.1 | 2.32.1 | 2.32.1 |
libuv | 1.43.0 | 1.42.0 | 1.43.0 |
libva | 2.14.0 | n/a | 2.14.0 |
libvorbis | 1.3.7 | 1.3.7 | 1.3.7 |
libvpx | 1.11.0 | n/a | 1.11.0 |
libwebp | 1.2.2 | 1.2.2 | 1.2.2 |
libwebp-base | 1.2.2 | 1.2.2 | 1.2.2 |
libxcb | 1.13 | 1.13 | 1.13 |
libxgboost | 1.5.1 | 1.5.1 | 1.5.1 |
libxkbcommon | 1.0.3 | 1.0.3 | 1.0.3 |
libxml2 | 2.9.12 | 2.9.12 | 2.9.12 |
libxslt | 1.1.33 | 1.1.33 | 1.1.33 |
libzip | 1.8.0 | 1.8.0 | 1.8.0 |
libzlib | 1.2.11 | 1.2.12 | 1.2.12 |
libzopfli | 1.0.3 | 1.0.3 | 1.0.3 |
line_profiler | 3.4.0 | 3.4.0 | 3.4.0 |
llvmlite | 0.34.0 | 0.36.0 | 0.38.1 |
llvm-openmp | 13.0.1 | 14.0.4 | 14.0.4 |
locket | 0.2.0 | 1.0.0 | 1.0.0 |
logmuse | 0.2.6 | 0.2.6 | 0.2.6 |
loguru | n/a | 0.6.0 | 0.6.0 |
lxml | 4.8.0 | 4.8.0 | 4.8.0 |
lz4 | 4.0.0 | 4.0.0 | 4.0.0 |
lz4-c | 1.9.3 | 1.9.3 | 1.9.3 |
lzo | 2.10 | 2.10 | 2.10 |
magma | 2.5.4 | 2.5.4 | 2.5.4 |
mako | 1.2.0 | 1.2.0 | 1.2.0 |
markdown | 3.3.6 | 3.3.7 | 3.3.7 |
markupsafe | 2.1.1 | 2.1.1 | 2.1.1 |
marshmallow | 3.15.0 | 3.16.0 | 3.16.0 |
matplotlib | 3.5.1 | 3.5.2 | 3.5.2 |
matplotlib-base | 3.5.1 | 3.5.2 | 3.5.2 |
matplotlib-inline | 0.1.3 | 0.1.3 | 0.1.3 |
matplotlib-venn | 0.11.7 | 0.11.7 | n/a |
mayavi | n/a | 4.7.2 | n/a |
mccabe | 0.6.1 | 0.6.1 | 0.6.1 |
mesalib | n/a | n/a | 21.2.5 |
meshio | 5.3.4 | 5.3.4 | 5.3.4 |
metis | 5.1.0 | 5.1.0 | 5.1.0 |
mffpy | n/a | 0.7.3 | 0.7.3 |
mistune | 0.8.4 | 0.8.4 | 0.8.4 |
mizani | 0.7.3 | 0.7.4 | 0.7.4 |
mkl | 2022.0.1 | 2020.4 | 2022.1.0 |
mkl-devel | 2022.0.1 | 2020.4 | 2022.1.0 |
mkl-include | 2022.0.1 | 2020.4 | 2022.1.0 |
mkl-service | 2.4.0 | 2.3.0 | n/a |
mne | n/a | 1.0.3 | n/a |
mne-base | n/a | 1.0.3 | n/a |
mne-qt-browser | n/a | 0.3.1 | n/a |
mock | 4.0.3 | 4.0.3 | 4.0.3 |
more-itertools | 8.12.0 | 8.13.0 | 8.13.0 |
mpc | 1.2.1 | 1.2.1 | 1.2.1 |
mpfr | 4.1.0 | 4.1.0 | 4.1.0 |
mpi4py | 3.1.3 | 3.1.3 | 3.1.3 |
mpmath | 1.2.1 | 1.2.1 | 1.2.1 |
msgpack-python | 1.0.3 | 1.0.4 | 1.0.4 |
multidict | 6.0.2 | 6.0.2 | 6.0.2 |
multipledispatch | 0.6.0 | 0.6.0 | 0.6.0 |
munkres | 1.1.4 | 1.1.4 | 1.1.4 |
mypy_extensions | 0.4.3 | 0.4.3 | 0.4.3 |
mysql-common | 8.0.28 | 8.0.29 | 8.0.29 |
mysql-connector-python | 8.0.28 | 8.0.25 | 8.0.29 |
mysql-libs | 8.0.28 | 8.0.29 | 8.0.29 |
natsort | 8.1.0 | 8.1.0 | 8.1.0 |
nbclient | 0.6.0 | 0.6.4 | 0.6.4 |
nbconvert | 6.5.0 | 6.5.0 | 6.5.0 |
nbconvert-core | 6.5.0 | 6.5.0 | 6.5.0 |
nbconvert-pandoc | 6.5.0 | 6.5.0 | 6.5.0 |
nbformat | 5.3.0 | 5.4.0 | 5.4.0 |
nccl | 2.12.10.1 | 2.12.12.1 | 2.12.12.1 |
ncurses | 6.3 | 6.2 | 6.3 |
nest-asyncio | 1.5.5 | 1.5.5 | 1.5.5 |
netcdf4 | 1.5.8 | 1.5.7 | 1.5.7 |
nettle | 3.6 | 3.6 | 3.6 |
networkx | 2.7.1 | 2.8.4 | 2.8.4 |
nibabel | 3.2.2 | 4.0.1 | 4.0.1 |
nilearn | 0.9.1 | 0.9.1 | 0.9.1 |
ninja | 1.10.2 | 1.11.0 | 1.11.0 |
nltk | 3.6.7 | n/a | 3.6.7 |
nodejs | 17.8.0 | 16.12.0 | 17.8.0 |
nose | 1.3.7 | 1.3.7 | 1.3.7 |
notebook | n/a | 6.4.12 | 6.4.12 |
npx | n/a | n/a | 0.1.1 |
nspr | 4.32 | 4.32 | 4.32 |
nss | 3.77 | 3.74 | 3.78 |
numba | 0.51.2 | 0.53.1 | 0.55.2 |
numexpr | 2.7.3 | 2.7.3 | 2.7.3 |
numpy | 1.21.6 | 1.19.5 | 1.22.4 |
numpydoc | 1.2.1 | 1.2.1 | 1.2.1 |
nvidia-apex-proc | 0.1 | n/a | n/a |
oauth2client | 4.1.3 | 4.1.3 | 4.1.3 |
oauthlib | 3.2.0 | 3.2.0 | 3.2.0 |
ocl-icd | 2.3.1 | 2.3.1 | 2.3.1 |
odo | 0.5.1 | 0.5.1 | 0.5.1 |
olefile | 0.46 | 0.46 | 0.46 |
opencensus | n/a | 0.9.0 | 0.9.0 |
opencensus-context | n/a | 0.1.2 | 0.1.2 |
opencv | 4.5.5 | 4.5.3 | n/a |
openh264 | 2.1.1 | 2.1.1 | 2.1.1 |
openjpeg | 2.4.0 | 2.4.0 | 2.4.0 |
openpyxl | 3.0.9 | 3.0.9 | 3.0.9 |
openssl | 1.1.1n | 1.1.1p | 1.1.1p |
opt_einsum | 3.3.0 | 3.3.0 | 3.3.0 |
orc | 1.7.2 | 1.6.10 | 1.7.1 |
ordered-set | 4.1.0 | 4.1.0 | 4.1.0 |
orjson | n/a | 3.7.2 | n/a |
osqp | 0.6.2.post0 | 0.6.2.post0 | 0.6.2.post0 |
packaging | 21.3 | 21.3 | 21.3 |
palettable | 3.3.0 | 3.3.0 | 3.3.0 |
pandas | 1.3.5 | 1.4.2 | 1.4.2 |
pandas-plink | 2.2.9 | n/a | n/a |
pandoc | 2.18 | 2.18 | 2.18 |
pandocfilters | 1.5.0 | 1.5.0 | 1.5.0 |
panel | n/a | 0.12.1 | 0.13.1 |
pango | 1.50.7 | 1.48.10 | 1.50.7 |
param | 1.12.1 | 1.12.2 | 1.12.2 |
paramiko | 2.10.3 | 2.11.0 | 2.11.0 |
parquet-cpp | 1.5.1 | 1.5.1 | 1.5.1 |
parso | 0.7.0 | 0.7.0 | 0.8.3 |
partd | 1.2.0 | 1.2.0 | 1.2.0 |
pastel | 0.2.1 | 0.2.1 | 0.2.1 |
patchelf | 0.14.5 | 0.14.5 | 0.14.5 |
path | 16.4.0 | 16.4.0 | 16.4.0 |
pathlib2 | 2.3.7.post1 | 2.3.7.post1 | 2.3.7.post1 |
path.py | 12.5.0 | 12.5.0 | 12.5.0 |
pathspec | 0.9.0 | 0.9.0 | 0.9.0 |
pathtools | 0.1.2 | 0.1.2 | 0.1.2 |
patsy | 0.5.2 | 0.5.2 | 0.5.2 |
pbr | 5.8.1 | 5.9.0 | 5.9.0 |
pbzip2 | 1.1.13 | 1.1.13 | 1.1.13 |
pcre | 8.45 | 8.45 | 8.45 |
pep8 | 1.7.1 | 1.7.1 | 1.7.1 |
peppy | 0.31.2 | 0.31.2 | 0.31.2 |
pexpect | 4.8.0 | 4.8.0 | 4.8.0 |
pickleshare | 0.7.5 | 0.7.5 | 0.7.5 |
pigz | 2.6 | 2.6 | 2.6 |
pillow | 9.1.0 | 9.1.1 | 9.1.1 |
pip | 22.0.4 | 22.1.2 | 22.1.2 |
pixman | 0.40.0 | 0.40.0 | 0.40.0 |
pkg-config | 0.29.2 | 0.29.2 | 0.29.2 |
pkginfo | 1.8.2 | n/a | n/a |
plac | 1.3.5 | 1.3.5 | 1.3.5 |
platformdirs | 2.5.1 | 2.5.1 | 2.5.1 |
plotly | 5.7.0 | 5.8.2 | 5.8.2 |
plotly-orca | 3.4.2 | 3.4.2 | n/a |
plotnine | 0.8.0 | 0.8.0 | 0.8.0 |
pluggy | 1.0.0 | 1.0.0 | 1.0.0 |
plumbum | 1.7.2 | 1.7.2 | 1.7.2 |
ply | 3.11 | 3.11 | 3.11 |
pmw | 2.0.1 | 2.0.1 | 2.0.1 |
pocl | 1.8 | 3.0 | 3.0 |
pooch | 1.6.0 | 1.6.0 | 1.6.0 |
poyo | 0.5.0 | 0.5.0 | 0.5.0 |
prettytable | 3.2.0 | 3.3.0 | 3.3.0 |
proj | 8.0.1 | 7.2.0 | 8.0.1 |
prometheus_client | 0.14.1 | 0.14.1 | 0.14.1 |
prompt_toolkit | 3.0.29 | 3.0.29 | n/a |
prompt-toolkit | 3.0.29 | 3.0.29 | 3.0.29 |
protobuf | 3.19.4 | 3.16.0 | 3.19.4 |
psutil | 5.9.0 | 5.9.1 | 5.9.1 |
pthread-stubs | 0.4 | 0.4 | 0.4 |
ptyprocess | 0.7.0 | 0.7.0 | 0.7.0 |
pugixml | n/a | 1.11.4 | 1.11.4 |
pulp | 2.6.0 | 2.6.0 | 2.6.0 |
pure_eval | n/a | 0.2.2 | 0.2.2 |
py | 1.11.0 | 1.11.0 | 1.11.0 |
py2bit | 0.3.0 | 0.3.0 | 0.3.0 |
pyarrow | 6.0.1 | 5.0.0 | 6.0.1 |
pyasn1 | 0.4.8 | 0.4.8 | 0.4.8 |
pyasn1-modules | 0.2.7 | 0.2.7 | 0.2.7 |
pybedtools | 0.9.0 | 0.9.0 | 0.9.0 |
pycairo | 1.21.0 | 1.21.0 | n/a |
pycodestyle | 2.6.0 | 2.6.0 | 2.8.0 |
pycosat | 0.6.3 | n/a | n/a |
pycparser | 2.21 | 2.21 | 2.21 |
pycrypto | 2.6.1 | 2.6.1 | 2.6.1 |
pycryptodomex | 3.14.1 | 3.14.1 | n/a |
pyct | 0.4.6 | 0.4.6 | 0.4.6 |
pyct-core | 0.4.6 | 0.4.6 | 0.4.6 |
pycurl | 7.45.1 | 7.45.1 | 7.45.1 |
pydicom | 2.3.0 | 2.3.0 | 2.3.0 |
pydocstyle | 6.1.1 | 6.1.1 | 6.1.1 |
pydot | 1.4.2 | 1.4.2 | 1.4.2 |
pyerfa | 2.0.0.1 | 2.0.0.1 | 2.0.0.1 |
pyface | 7.4.1 | 7.4.1 | 7.4.1 |
pyfaidx | 0.6.4 | 0.7.0 | 0.7.0 |
pyfasta | 0.5.2 | 0.5.2 | 0.5.2 |
pyflakes | 2.2.0 | 2.2.0 | 2.4.0 |
pyglet | n/a | 1.5.16 | 1.5.16 |
pygments | 2.11.2 | 2.12.0 | 2.12.0 |
pygpu | 0.7.6 | 0.7.6 | 0.7.6 |
pygraphviz | 1.6 | 1.9 | 1.9 |
pyhamcrest | 2.0.3 | 2.0.3 | 2.0.3 |
pyjwt | 2.3.0 | 2.4.0 | 2.4.0 |
pylev | 1.4.0 | 1.4.0 | 1.4.0 |
pylint | 2.13.5 | 2.10.2 | 2.14.3 |
pyls-black | 0.4.6 | 0.4.6 | n/a |
pyls-spyder | 0.3.2 | 0.3.2 | 0.4.0 |
pymatreader | n/a | 0.0.30 | n/a |
pymongo | 4.1.1 | 4.1.1 | 4.1.1 |
pynacl | 1.5.0 | 1.5.0 | 1.5.0 |
pynndescent | 0.5.6 | 0.5.7 | 0.5.7 |
pynvim | 0.4.3 | 0.4.3 | 0.4.3 |
pyodbc | 4.0.32 | 4.0.32 | 4.0.32 |
pyopencl | 2022.1 | 2022.1.5 | 2022.1.6 |
py-opencv | 4.5.5 | 4.5.3 | n/a |
pyopengl | 3.1.6 | 3.1.6 | 3.1.6 |
pyopenssl | 22.0.0 | 22.0.0 | 22.0.0 |
pyparsing | 3.0.8 | 3.0.9 | 3.0.9 |
pyproj | 3.2.1 | 3.1.0 | 3.3.1 |
pyqt | 5.12.3 | 5.12.3 | 5.12.3 |
pyqt5-sip | 4.19.18 | 4.19.18 | 4.19.18 |
pyqtchart | 5.12 | 5.12 | 5.12 |
pyqtgraph | 0.12.4 | 0.12.4 | n/a |
pyqt-impl | 5.12.3 | 5.12.3 | 5.12.3 |
pyqtwebengine | 5.12.1 | 5.12.1 | 5.12.1 |
pyrsistent | 0.18.1 | 0.18.1 | 0.18.1 |
pysam | 0.19.0 | 0.19.1 | 0.19.1 |
pysftp | 0.2.9 | 0.2.9 | 0.2.9 |
pyshp | 2.2.0 | 2.3.0 | 2.3.0 |
pysimdjson | 3.2.0 | 5.0.1 | 5.0.1 |
pysmi | 0.3.4 | 0.3.4 | 0.3.4 |
pysocks | 1.7.1 | 1.7.1 | 1.7.1 |
py-spy | n/a | 0.3.11 | 0.3.11 |
pystan | 3.2.0 | 3.2.0 | 3.2.0 |
pysurfer | n/a | 0.11.0 | n/a |
pytabix | 0.1 | 0.1 | 0.1 |
pytables | 3.7.0 | 3.6.1 | 3.6.1 |
pytest | 7.1.1 | 7.1.2 | 7.1.2 |
pytest-arraydiff | 0.3 | 0.3 | 0.3 |
pytest-astropy | 0.10.0 | n/a | n/a |
pytest-astropy-header | 0.1.2 | n/a | n/a |
pytest-cov | 3.0.0 | n/a | n/a |
pytest-doctestplus | 0.12.0 | 0.12.0 | 0.12.0 |
pytest-filter-subpackage | 0.1.1 | n/a | n/a |
pytest-mock | 3.7.0 | n/a | n/a |
pytest-openfiles | 0.5.0 | 0.5.0 | 0.5.0 |
pytest-remotedata | 0.3.3 | 0.3.3 | 0.3.3 |
pytest-runner | 6.0.0 | 6.0.0 | 6.0.0 |
python | 3.7.12 | 3.8.12 | 3.9.13 |
python_abi | 3.7 | 3.8 | 3.9 |
python-dateutil | 2.8.2 | 2.8.2 | 2.8.2 |
python-docx | 0.8.11 | n/a | n/a |
python-fastjsonschema | 2.15.3 | 2.15.3 | 2.15.3 |
python-flatbuffers | 2.0 | 1.12 | 2.0 |
python-graphviz | 0.20 | 0.20 | n/a |
python-hostlist | 1.21 | n/a | 1.21 |
python-irodsclient | 1.1.3 | 1.1.3 | 1.1.3 |
python-isal | 0.11.1 | 0.11.1 | 0.11.1 |
python-jsonrpc-server | 0.4.0 | 0.4.0 | n/a |
python-language-server | 0.36.2 | 0.36.2 | n/a |
python-levenshtein | 0.12.2 | 0.12.2 | 0.12.2 |
python-lmdb | 1.3.0 | n/a | 1.3.0 |
python-lsp-black | n/a | n/a | 1.1.0 |
python-lsp-jsonrpc | n/a | n/a | 1.0.0 |
python-lsp-server | n/a | n/a | 1.3.3 |
python-lzo | 1.14 | n/a | n/a |
python-picard | 0.7 | 0.7 | 0.7 |
python-slugify | 6.1.1 | 6.1.2 | 6.1.2 |
python-tzdata | 2022.1 | 2022.1 | 2022.1 |
pytools | 2022.1.4 | 2022.1.10 | 2022.1.10 |
pytorch | 1.11.0 | 1.11.0 | 1.10.1 |
pytorch-gpu | n/a | n/a | 1.10.1 |
pytorch-mutex | n/a | 1.0 | n/a |
pytz | 2022.1 | 2022.1 | 2022.1 |
pytz-deprecation-shim | 0.1.0.post0 | 0.1.0.post0 | 0.1.0.post0 |
pyu2f | 0.1.5 | 0.1.5 | 0.1.5 |
pyvcf | 0.6.8 | 0.6.8 | 0.6.8 |
pyvista | n/a | 0.34.1 | n/a |
pyvistaqt | n/a | 0.9.0 | n/a |
pyviz_comms | 2.2.0 | 2.2.0 | 2.2.0 |
pywavelets | 1.3.0 | 1.3.0 | 1.3.0 |
pyxdg | 0.27 | 0.28 | 0.28 |
py-xgboost | 1.5.1 | 1.5.1 | 1.5.1 |
pyyaml | 6.0 | 6.0 | 6.0 |
pyzmq | 22.3.0 | 23.1.0 | 23.1.0 |
qdarkstyle | 3.0.2 | 3.0.2 | 3.0.2 |
qdldl-python | 0.1.5 | 0.1.5 | 0.1.5 |
qstylizer | 0.2.1 | 0.2.1 | 0.2.1 |
qt | 5.12.9 | 5.12.9 | 5.12.9 |
qtawesome | 1.1.1 | 1.1.1 | 1.1.1 |
qtconsole | 5.3.0 | 5.3.1 | 5.2.2 |
qtconsole-base | 5.3.0 | 5.3.1 | 5.2.2 |
qtpy | 2.0.1 | 2.1.0 | 2.1.0 |
ratelimiter | 1.2.0 | 1.2.0 | 1.2.0 |
ray | n/a | 1.8.0 | 1.12.0 |
rdkit | 2022.03.1 | n/a | n/a |
re2 | 2021.11.01 | 2021.09.01 | 2021.11.01 |
readline | 8.1 | 8.1 | 8.1.2 |
redis-py | 4.2.2 | 4.3.3 | 4.3.3 |
regex | 2022.3.15 | 2022.6.2 | 2022.6.2 |
reportlab | 3.5.68 | 3.5.68 | 3.5.68 |
requests | 2.27.1 | 2.28.0 | 2.28.0 |
requests-oauthlib | 1.3.1 | 1.3.1 | 1.3.1 |
retry | 0.9.2 | 0.9.2 | 0.9.2 |
retrying | 1.3.3 | 1.3.3 | 1.3.3 |
rich | 12.2.0 | 12.4.1 | 12.4.1 |
rope | 1.0.0 | 1.1.1 | 1.1.1 |
rpy2 | 3.2.2 | 3.3.5 | 3.4.5 |
rsa | 4.8 | 4.8 | 4.8 |
rtree | 1.0.0 | 1.0.0 | 1.0.0 |
ruamel_yaml | 0.15.80 | n/a | n/a |
ruffus | 2.8.4 | n/a | n/a |
s2n | 1.0.10 | 1.0.10 | 1.3.0 |
s3transfer | 0.5.2 | 0.6.0 | 0.6.0 |
scikit-image | 0.19.2 | 0.19.3 | 0.19.3 |
scikit-learn | 1.0.2 | 1.1.1 | 1.1.1 |
scipy | 1.7.3 | 1.8.1 | 1.8.1 |
scooby | 0.5.12 | 0.5.12 | 0.5.12 |
scs | 3.2.0 | 3.2.0 | 3.2.0 |
seaborn | 0.11.2 | 0.11.2 | 0.11.2 |
seaborn-base | 0.11.2 | 0.11.2 | 0.11.2 |
secretstorage | 3.3.1 | 3.3.2 | 3.3.2 |
send2trash | 1.8.0 | 1.8.0 | 1.8.0 |
service_identity | 18.1.0 | 18.1.0 | 18.1.0 |
setuptools | 59.8.0 | 59.8.0 | 62.6.0 |
setuptools_scm | 6.4.2 | n/a | n/a |
setuptools-scm | 6.4.2 | 6.4.2 | n/a |
sh | 1.13.1 | 1.14.2 | 1.14.2 |
shapely | 1.8.0 | 1.7.1 | 1.8.0 |
simplegeneric | 0.8.1 | 0.8.1 | 0.8.1 |
simpleitk | n/a | 2.0.2 | 2.1.0 |
simplejson | 3.17.6 | 3.17.6 | 3.17.6 |
sinfo | 0.3.1 | 0.3.1 | 0.3.1 |
singledispatch | 3.6.1 | 3.6.1 | 3.6.1 |
sip | 6.5.1 | 6.6.2 | 6.6.2 |
six | 1.16.0 | 1.15.0 | 1.16.0 |
slacker | 0.14.0 | 0.14.0 | 0.14.0 |
sleef | 3.5.1 | n/a | 3.5.1 |
smart_open | 5.2.1 | 6.0.0 | 6.0.0 |
smmap | 5.0.0 | 3.0.5 | 3.0.5 |
smmap2 | 3.0.1 | n/a | n/a |
snakemake | 7.3.8 | 7.8.2 | 7.8.2 |
snakemake-minimal | 7.3.8 | 7.8.2 | 7.8.2 |
snakeviz | 2.1.1 | n/a | n/a |
snappy | 1.1.8 | 1.1.9 | 1.1.9 |
snowballstemmer | 2.2.0 | 2.2.0 | 2.2.0 |
sockjs-tornado | 1.0.7 | n/a | n/a |
sortedcollections | 2.1.0 | 2.1.0 | 2.1.0 |
sortedcontainers | 2.4.0 | 2.4.0 | 2.4.0 |
soupsieve | 2.3.1 | 2.3.1 | 2.3.1 |
sphinx | 4.5.0 | 5.0.2 | 5.0.2 |
sphinxcontrib-applehelp | 1.0.2 | 1.0.2 | 1.0.2 |
sphinxcontrib-devhelp | 1.0.2 | 1.0.2 | 1.0.2 |
sphinxcontrib-htmlhelp | 2.0.0 | 2.0.0 | 2.0.0 |
sphinxcontrib-jsmath | 1.0.1 | 1.0.1 | 1.0.1 |
sphinxcontrib-qthelp | 1.0.3 | 1.0.3 | 1.0.3 |
sphinxcontrib-serializinghtml | 1.1.5 | 1.1.5 | 1.1.5 |
sphinxcontrib-websupport | 1.2.4 | n/a | n/a |
sphinx_rtd_theme | 1.0.0 | n/a | n/a |
spyder | 5.0.5 | 5.0.5 | 5.2.1 |
spyder-kernels | 2.0.5 | 2.0.5 | 2.2.1 |
sqlalchemy | 1.4.35 | 1.4.37 | 1.4.37 |
sqlite | 3.38.2 | 3.37.0 | 3.38.5 |
stack_data | n/a | 0.3.0 | 0.3.0 |
statsmodels | 0.13.2 | 0.13.2 | 0.13.2 |
stdlib-list | 0.7.0 | 0.7.0 | 0.7.0 |
stone | 3.3.1 | 3.3.1 | 3.3.1 |
stopit | 1.1.2 | 1.1.2 | 1.1.2 |
suitesparse | 5.10.1 | 5.10.1 | 5.10.1 |
svgutils | 0.3.4 | 0.3.4 | 0.3.4 |
svt-av1 | 0.9.1 | n/a | 1.1.0 |
sympy | 1.10.1 | 1.10.1 | 1.10.1 |
sysroot_linux-64 | 2.17 | 2.17 | 2.17 |
tabulate | 0.8.9 | 0.8.10 | 0.8.10 |
tbb | 2021.5.0 | 2020.2 | 2021.5.0 |
tbb-devel | n/a | 2020.2 | 2021.5.0 |
tblib | 1.7.0 | 1.7.0 | 1.7.0 |
tenacity | 8.0.1 | 8.0.1 | 8.0.1 |
tensorboard | 2.6.0 | 2.9.1 | 2.6.0 |
tensorboard-data-server | 0.6.0 | 0.6.0 | 0.6.0 |
tensorboard-plugin-wit | 1.8.1 | 1.8.1 | 1.8.1 |
tensorboardx | n/a | 2.5.1 | n/a |
tensorflow | 2.7.0 | 2.6.0 | 2.7.0 |
tensorflow-base | 2.7.0 | 2.6.0 | 2.7.0 |
tensorflow-estimator | 2.7.0 | 2.6.0 | 2.7.0 |
tensorflow-gpu | n/a | 2.6.0 | 2.7.0 |
tensorflow-probability | n/a | 0.14.0 | 0.15.0 |
termcolor | 1.1.0 | 1.1.0 | 1.1.0 |
terminado | 0.13.3 | 0.15.0 | 0.15.0 |
terminaltables | 3.1.10 | 3.1.10 | 3.1.10 |
testpath | 0.6.0 | 0.6.0 | 0.6.0 |
textdistance | 4.2.2 | 4.2.2 | 4.2.2 |
text-unidecode | 1.3 | 1.3 | 1.3 |
theano | n/a | 1.0.5 | 1.0.5 |
threadpoolctl | 3.1.0 | 3.1.0 | 3.1.0 |
three-merge | 0.1.1 | 0.1.1 | 0.1.1 |
thrift-compiler | 0.15.0 | 0.14.2 | 0.15.0 |
thrift-cpp | 0.13.0 | 0.14.2 | 0.13.0 |
tifffile | 2022.4.8 | 2022.5.4 | 2022.5.4 |
tinycss2 | 1.1.1 | 1.1.1 | 1.1.1 |
tk | 8.6.12 | 8.6.12 | 8.6.12 |
toml | 0.10.2 | 0.10.2 | 0.10.2 |
tomli | 2.0.1 | 1.2.2 | 2.0.1 |
tomlkit | n/a | n/a | 0.11.0 |
toolz | 0.11.2 | 0.11.2 | 0.11.2 |
toposort | 1.7 | 1.7 | 1.7 |
torchvision | 0.12.0 | 0.12.0 | 0.10.1 |
tornado | 6.1 | 6.1 | 6.1 |
tqdm | 4.64.0 | 4.64.0 | 4.64.0 |
traitlets | 5.1.1 | 5.3.0 | 5.3.0 |
traits | 6.3.2 | 6.3.2 | 6.3.2 |
traitsui | 7.3.1 | 7.3.1 | 7.3.1 |
traittypes | 0.2.1 | 0.2.1 | n/a |
twisted | 22.4.0 | n/a | n/a |
twobitreader | 3.1.7 | 3.1.7 | 3.1.7 |
twython | 3.9.1 | n/a | n/a |
typed-ast | 1.5.3 | 1.5.4 | 1.5.4 |
typing | 3.10.0.0 | 3.10.0.0 | 3.10.0.0 |
typing_extensions | 3.10.0.2 | 3.7.4.3 | 3.10.0.2 |
typing-extensions | 3.10.0.2 | 3.7.4.3 | 3.10.0.2 |
tzdata | 2022a | 2022a | 2022a |
tzlocal | 4.2 | 4.2 | 4.2 |
ubiquerg | 0.6.1 | 0.6.1 | 0.6.1 |
ujson | 5.2.0 | 5.3.0 | 5.3.0 |
umap-learn | 0.5.3 | 0.5.3 | 0.5.3 |
unicodecsv | 0.14.1 | 0.14.1 | 0.14.1 |
unicodedata2 | 14.0.0 | 14.0.0 | 14.0.0 |
unidecode | 1.3.4 | 1.3.4 | 1.3.4 |
unixodbc | 2.3.9 | 2.3.10 | 2.3.10 |
uritemplate | 4.1.1 | 4.1.1 | 4.1.1 |
urllib3 | 1.26.9 | 1.26.9 | 1.26.9 |
utfcpp | n/a | 3.2.1 | 3.2.1 |
util-linux | 2.36 | 2.36 | 2.36 |
veracitools | 0.1.3 | 0.1.3 | 0.1.3 |
virtualenv | 20.14.1 | n/a | 20.14.1 |
vtk | n/a | 9.0.3 | n/a |
watchdog | 2.1.7 | 2.1.9 | 2.1.9 |
wcwidth | 0.2.5 | 0.2.5 | 0.2.5 |
webargs | 7.0.1 | 8.1.0 | 8.1.0 |
webencodings | 0.5.1 | 0.5.1 | 0.5.1 |
werkzeug | 2.1.1 | 2.1.2 | 2.1.2 |
wheel | 0.37.1 | 0.37.1 | 0.37.1 |
whichcraft | 0.6.1 | 0.6.1 | 0.6.1 |
widgetsnbextension | n/a | 3.6.0 | 3.6.0 |
wrapt | 1.14.0 | 1.12.1 | 1.14.1 |
wurlitzer | 3.0.2 | 3.0.2 | 3.0.2 |
x264 | 1!161.3030 | 1!161.3030 | 1!161.3030 |
x265 | 3.5 | n/a | 3.5 |
xarray | 0.20.2 | 2022.3.0 | 2022.3.0 |
xarray-einstats | n/a | 0.3.0 | 0.3.0 |
xlrd | 2.0.1 | 2.0.1 | 2.0.1 |
xlsxwriter | 3.0.3 | 3.0.3 | 3.0.3 |
xlwt | 1.3.0 | 1.3.0 | 1.3.0 |
xmlrunner | 1.7.7 | 1.7.7 | 1.7.7 |
xmltodict | 0.12.0 | 0.13.0 | 0.13.0 |
xopen | 1.5.0 | 1.5.0 | 1.5.0 |
xorg-damageproto | n/a | n/a | 1.2.1 |
xorg-fixesproto | 5.0 | 5.0 | 5.0 |
xorg-glproto | n/a | n/a | 1.4.17 |
xorg-inputproto | 2.3.2 | 2.3.2 | 2.3.2 |
xorg-kbproto | 1.0.7 | 1.0.7 | 1.0.7 |
xorg-libice | 1.0.10 | 1.0.10 | 1.0.10 |
xorg-libsm | 1.2.3 | 1.2.3 | 1.2.3 |
xorg-libx11 | 1.7.2 | 1.7.2 | 1.7.2 |
xorg-libxau | 1.0.9 | 1.0.9 | 1.0.9 |
xorg-libxdamage | n/a | n/a | 1.1.5 |
xorg-libxdmcp | 1.1.3 | 1.1.3 | 1.1.3 |
xorg-libxext | 1.3.4 | 1.3.4 | 1.3.4 |
xorg-libxfixes | 5.0.3 | 5.0.3 | 5.0.3 |
xorg-libxi | 1.7.10 | 1.7.10 | 1.7.10 |
xorg-libxpm | 3.5.13 | 3.5.13 | n/a |
xorg-libxrandr | n/a | n/a | 1.5.2 |
xorg-libxrender | 0.9.10 | 0.9.10 | 0.9.10 |
xorg-libxt | 1.2.1 | 1.2.1 | n/a |
xorg-randrproto | n/a | n/a | 1.5.0 |
xorg-renderproto | 0.11.1 | 0.11.1 | 0.11.1 |
xorg-util-macros | n/a | n/a | 1.19.3 |
xorg-xextproto | 7.3.0 | 7.3.0 | 7.3.0 |
xorg-xf86vidmodeproto | n/a | n/a | 2.3.1 |
xorg-xproto | 7.0.31 | 7.0.31 | 7.0.31 |
xz | 5.2.5 | 5.2.5 | 5.2.5 |
yaml | 0.2.5 | 0.2.5 | 0.2.5 |
yapf | 0.32.0 | 0.32.0 | 0.32.0 |
yarl | 1.7.2 | 1.7.2 | 1.7.2 |
yte | 1.2.2 | 1.5.1 | 1.5.1 |
zeromq | 4.3.4 | 4.3.4 | 4.3.4 |
zfp | 0.5.5 | 0.5.5 | 0.5.5 |
zict | 2.1.0 | 2.2.0 | 2.2.0 |
zipp | 3.8.0 | 3.8.0 | 3.8.0 |
zlib | 1.2.11 | 1.2.12 | 1.2.12 |
zlib-ng | n/a | 2.0.6 | 2.0.6 |
zope.event | 4.5.0 | 4.5.0 | 4.5.0 |
zope.interface | 5.4.0 | 5.4.0 | 5.4.0 |
zstandard | 0.17.0 | 0.18.0 | 0.18.0 |
zstd | 1.5.2 | 1.5.2 | 1.5.2 |
Some common issues with using multiprocessing on biowulf were already pointed
out in the common pitfalls section. Beyond those multiprocessing
can be made more robust by setting workers up to ignore the SIGINT signal
so that a multiprocessing script can be terminated cleanly with scancel
or Ctrl-C
. The following script also makes sure to correctly detect
the number of available CPUs in batch jobs:
#! /usr/bin/env python from multiprocessing import Pool import signal import os def init_worker(): """ This is necessary to be able to interrupt the script with CTRL-C (or scancel for that matter). It makes sure that the workers ignore SIGINT so that any SIGINT sent goes to the master process """ signal.signal(signal.SIGINT, signal.SIG_IGN) def worker(i): return i*i if __name__ == '__main__': # the the number of allocated cpus (or 2 if not run as a slurm job) nproc = int(os.environ.get("SLURM_CPUS_PER_TASK", "2")) print("Running on %d CPUs" % nproc) # set up 50 tasks tasks = range(0, 100) p = Pool(nproc, init_worker) try: # run the processing pool results = p.map(worker, tasks) except (KeyboardInterrupt, SystemExit): p.terminate() p.join() sys.exit(1) else: p.close() p.join() # result summary print("\n".join("%d * %d = %d" % (a, a, b) for a, b in zip(tasks, results)))
It is also important to benchmark scaling of your code. Many algorithms won't scale well beyond a certain number of parallel multiprocessing workers which can lead to very inefficient resource usage (e.g. allocating 56 CPUs when parallel efficiency drops below 50% at 24 CPUs).
The python MPI library mpi4py
is available in the python
modules. In order to use this package it is necessary to load an additional
module (mpi4py
) to ensure that it can find the correct OpenMPI libraries.
Here is an example for how to use this library:
The python MPI script:
#! /usr/bin/env python from mpi4py import MPI comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() print("Hello! I'm rank {0} / {1} running in total...".format(rank, size)) comm.Barrier()
The batch script:
#!/bin/bash #SBATCH --ntasks=8 #SBATCH --ntasks-per-core=1 #SBATCH --partition=multinode module load mpi4py module load python/3.9 mpiexec ./test.py # or srun --mpi=pmi2 ./test.py
Submit with
[user@biowulf ~]$ sbatch test.sh
In order to use the rpy2 package on
biowulf it is necessary to load a separate rpy2
module which
allows the package to find the correct R installation.
[user@cn3444 ~]$ module load python/3.7 rpy2 Python 3.7.5 (default, Oct 25 2019, 15:51:11) [GCC 7.3.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import rpy2 >>> import rpy2.robjects as robjects >>> pi = robjects.r['pi'] >>> pi[0] 3.141592653589793
Ray is a framework for distributed computing. It acomplishes this by
- Providing simple primitives for building and running distributed applications.
- Enabling end users to parallelize single machine code, with little to zero code changes.
- Including a large ecosystem of applications, libraries, and tools on top of the core Ray to enable complex applications.
Ray can be used to parallelize work within a single cluster in which case it is run as a standard single node job. To run a ray cluster on biowulf and parallelize across several nodes, multinode jobs with one task per node are used. The tasks don't have to be exclusive but for real world use they often will be. If you allocate the nodes exclusively make sure to also allocate all resources available on the node.
An example script you can use to configure your own ray workloads is available on GitHub.
[user@biowulf ~]$ git clone https://github.com/NIH-HPC/biowulf_ray.git [user@biowulf ~]$ sbatch submit-ray
Note: ray, like many other tools, will by default try to use all resources on a node even if they were not all allocated to ray. The sample script above specifically specifies resources to the workers and the cluster head process. Similarly, if you use `ray.init` in, for example, a single node job make sure to specify the number of cpus, gpus, and the memory
If you need common python packages at fixed versions or python packages that may not be suitable for installation in the general purpose python environments you can create your own environments using conda/mamba. We recommend installing mambaforge (a derivative of miniconda that includes mamba and uses the conda-forge channel in place of the defaults channel) into your data directory (or a shared data directory for collaborations) and creating environments within that installation.
In the following example we will cover some basics of using conda to create private environments. Much more detailed documentation as available on the conda documentation pages. Note that conda/mamba operations should be done in sinteractive allocations rather than on the biowulf login node because they can be computationally intensive.
Private python environments should be created in data directories, not the home directory since a conda/mamba installation can easily grow in space to exceed the home directory allocation.
Installing mambaforge on the biowulf login node or on helix will not work out
of the box due to restrictions on /tmp. Please use an sinteractive session to
set up and manage conde. If you do want to use helix you can do so by setting
TMPDIR
to a location in your data directory
[user@biowulf]$ sinteractive --mem=20g --gres=lscratch:20 ... [user@cn3444]$ cd /data/$USER [user@cn3444]$ export TMPDIR=/lscratch/$SLURM_JOB_ID
Download the mambaforge installer and install to a path in a data or shared directory like
/data/$USER/conda
.
[user@cn3444]$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh --2022-04-01 11:13:41-- https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh [...snip...] Length: 92971376 (89M) [application/octet-stream] Saving to: ‘Mambaforge-Linux-x86_64.sh’ 100%[===================================================>] 92,971,376 111MB/s in 0.8s 2022-04-01 11:13:42 (111 MB/s) - ‘Mambaforge-Linux-x86_64.sh’ saved [92971376/92971376] [user@cn3444]$ bash Mambaforge-Linux-x86_64.sh -p /data/$USER/conda -b PREFIX=/data/$USER/conda Unpacking payload ... Extracting "python-3.9.10-h85951f9_2_cpython.tar.bz2" Extracting "_libgcc_mutex-0.1-conda_forge.tar.bz2" [...snip...] installation finished. [user@cn3444]$ rm Mambaforge-Linux-x86_64.sh
To use the newly installed conda you will have to source an init file. Do
this each time you are going to work with your environments.
Do not allow conda/mamba to add automatic initialization to your startup files (e.g.
.bashrc
) as environments can interfere with login or nomachine..
After sourcing the conda init file, activate the base environment and update the conda package manager wich itself is just a package:
[user@cn3444]$ source /data/$USER/conda/etc/profile.d/conda.sh && source /data/$USER/conda/etc/profile.d/mamba.sh ### to make things easier you can create a file called `myconda` in a directory ### on your path such as ~/bin. This could be done like so (assuming the same ### paths as we used here). [user@cn3444]$ mkdir -p ~/bin [user@cn3444]$ cat <<'__EOF__' > ~/bin/myconda __conda_setup="$('/data/$USER/conda/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/data/$USER/conda/etc/profile.d/conda.sh" ]; then . "/data/$USER/conda/etc/profile.d/conda.sh" else export PATH="/data/$USER/conda/bin:$PATH" fi fi unset __conda_setup if [ -f "/data/$USER/conda/etc/profile.d/mamba.sh" ]; then . "/data/$USER/conda/etc/profile.d/mamba.sh" fi __EOF__ ### then from *anywhere* the mambaforge install can be activated with [user@cn3444]$ source myconda ### let's not show the large mamba banner all the time [user@cn3444]$ export MAMBA_NO_BANNER=1 [user@cn3444]$ mamba activate base (base) [user@cn3444]$ which python /data/$USER/conda/bin/python (base) [user@cn3444]$ mamba update --all Looking for: ['_libgcc_mutex', 'ca-certificates', 'ld_impl_linux-64', 'libstdcxx-ng', 'libgomp', '_openmp_mutex', 'libgcc-ng', 'yaml-cpp', 'yaml', 'xz', 'reproc', 'openssl', 'ncurses', 'lzo', 'lz4-c', 'libzlib', 'libuuid', 'libnsl', 'libiconv', 'libffi', 'libev', 'keyutils', 'icu', 'c-ares', 'bzip2', 'reproc-cpp', 'libedit', 'readline', 'zstd', 'zlib', 'tk', 'krb5', 'sqlite', 'libxml2', 'libssh2', 'libsolv', 'libnghttp2', 'libarchive', 'libcurl', 'libmamba', 'pybind11-abi', 'tzdata', 'python', 'python_abi', 'setuptools', 'wheel', 'pip', 'six', 'pycparser', 'idna', 'colorama', 'charset-normalizer', 'tqdm', 'ruamel_yaml', 'pysocks', 'pycosat', 'libmambapy', 'certifi', 'cffi', 'conda-package-handling', 'cryptography', 'brotlipy', 'pyopenssl', 'urllib3', 'requests', 'conda', 'mamba'] conda-forge/noarch 7.8MB @ 3.8MB/s 2.2s conda-forge/linux-64 21.9MB @ 3.6MB/s 6.6s Pinned packages: - python 3.9.* [...snip...] Change: 4 packages Upgrade: 5 packages Total download: 47MB ─────────────────────────────────────────────────────────────────────────────── Confirm changes: [Y/n] Y [...snip...] Preparing transaction: done Verifying transaction: done Executing transaction: done (base) [user@cn3444]$ mamba clean --all --yes Cache location: /data/$USER/conda/pkgs Will remove the following tarballs: /data/$USER/conda/pkgs ------------------------ python-3.9.5-h12debd9_4.tar.bz2 22.6 MB [...snip...] idna-3.2-pyhd3eb1b0_0.conda 48 KB --------------------------------------------------- Total: 59.4 MB Removed python-3.9.5-h12debd9_4.tar.bz2 [...snip...]
Now let's create a new environment called project1
with an older version of
pysam from the bioconda channel and python 3.7. For this we use mamba.
(base) [user@cn3444]$ mamba deactivate [user@cn3444]$ mamba create -n project1 python=3.7 numpy scipy bioconda::pysam==0.15.3 samtools==1.9 Looking for: ['python=3.7', 'numpy', 'scipy', 'bioconda::pysam==0.15.3', 'samtools==1.9'] bioconda/linux-64 4.1MB @ 3.8MB/s 1.2s bioconda/noarch 3.5MB @ 2.8MB/s 1.3s conda-forge/noarch 7.8MB @ 3.9MB/s 2.2s conda-forge/linux-64 21.9MB @ 3.9MB/s 6.2s Transaction Prefix: /data/$USER/conda/envs/project1 Updating specs: - python=3.7 - numpy - scipy - bioconda::pysam==0.15.3 - samtools==1.9 [...snip...] Confirm changes: [Y/n] Y [...snip...] Preparing transaction: done Verifying transaction: done Executing transaction: done # # To activate this environment, use # # $ mamba activate project1 # # To deactivate an active environment, use # # $ mamba deactivate [user@cn3444]$ mamba activate project1 (project1) [user@cn3444]$ which python /data/$USER/conda/envs/project1/bin/python (project1) [user@cn3444]$ samtools --version samtools 1.9 Using htslib 1.9 Copyright (C) 2018 Genome Research Ltd. (project1) [user@cn3444]$ mamba deactivate [user@cn3444]$
Now an environment for a different project with current pysam, some other
tools, and numpy using the OpenBlas numerical libraries. This time we add the
bioconda
channel to the channels for the environment so we don't
have to use the bioconda::
prefix. A common pattern for
environments used for bioinformatic software is to set up bioconda and
conda-forge channels on a per-environment basis. This allows conda-forge
packages to override packages from the defaults channel. We also specify
MKL for the numerical libraries and pin that so it won't change accidentally.
Note that at this point mamba
does not yet include the config
command.
[user@cn3444 temp]$ mamba create -n project2 python=3.8 [...snip...] [user@cn3444]$ mamba activate project2 (project2) [user@cn3444]$ conda config --env --add channels bioconda (project2) [user@cn3444]$ conda config --env --add channels conda-forge Warning: 'conda-forge' already in 'channels' list, moving to the top (project2) [user@cn3444]$ conda config --env --set channel_priority strict (project2) [user@cn3444]$ conda config --env --add pinned_packages blas=*=mkl (project2) [user@cn3444]$ conda config --show-sources ==> /data/$USER/conda/.condarc <== channels: - conda-forge ==> /data/$USER/envs/project2/.condarc <== pinned_packages: - libblas=*=*_mkl - python=3.8 channel_priority: strict channels: - conda-forge - bioconda (project2) [user@cn3444]$ mamba install -q pysam bedtools hisat2 blas numpy scipy [...snip...] Preparing transaction: ...working... done Verifying transaction: ...working... done Executing transaction: ...working... done (project2) [user@cn3444]$ which python /data/$USER/conda/envs/project2/bin/python (project2) [user@cn3444]$ mamba install tensorflow=*=cuda* [...snip...]
Note that, pip can be used to install packages into conda environments as well. However, this can sometimes cause problems when pip overwrites existing conda-installed packages.
List environments in the current conda install, then deactivate environments
(project2) [user@cn3444]$ mamba info --env # conda environments: # base /data/$USER/conda project1 /data/$USER/conda/envs/project1 project2 * /data/$USER/conda/envs/project2 (project2) [user@cn3444]$ mamba deactivate [user@cn3444]$