Environment variables#
Every user-tunable PlayMolecule setting is a PM_* environment variable. They are read once at import time and never re-read after; change them, then re-import (or restart your Python process).
Registry and executor#
PM_REGISTRIESDefault:
docker://europe-southwest1-docker.pkg.dev/repositories-368911Comma-separated registries, in priority order. Each entry must start with
docker://,http://, orlocal:.local:is for developers iterating on their own app manifests on disk; most users wantdocker://(the default). Set tononeto disable defaults entirely.PM_EXECUTORDefault:
localWhere jobs run. Either
localor anhttp://URL pointing at a PlayMolecule HTTP backend.PM_NO_DEFAULT_REGISTRIESDefault:
0When
1, skip the default Acellera registry. Use this if you only want the registries you set inPM_REGISTRIESand nothing else.
Container runtime#
PM_RUNTIMEDefault:
dockerdockerorapptainer: which container engine to invoke for local execution.PM_SIF_CACHE_DIRDefault:
~/.cache/playmolecule/apptainer/Where Apptainer SIF files are cached. Move to shared storage for multi-user / multi-node installs (see Install apps for a cluster).
Job submission#
PM_QUEUE_CONFIGDefault: unset
JSON dict. When set,
ed.run()with no arguments uses it. Expected keys:queue,cpu_partition,gpu_partition, plus any extra forwarded torun()as SLURM kwargs.PM_NCPUDefault: unset
Number of CPUs the app may use. The generated
run.shcaps the container at this many cores (Docker only — Apptainer already inherits the job’s cgroup) and passes the value inside, where apps size their native thread pools from it. Unset means one thread, whatever the machine or the allocation offers, so an app never oversubscribes by accident.You rarely set this yourself: PlayMolecule sets it from
ncpuwhen it launches a job — in the subprocess environment for a local run, and as anexportin the sbatch script (via the SLURM queue’sprerun) forrun(queue="slurm").ncputherefore does double duty: it sizes the SLURM allocation and tells the app how many threads to start.Against a server backend,
ncpuis sent with the job and the server applies it to whichever queue it uses, bounded by the largest value the job’s priority tier permits — a request over that cap runs at the cap rather than being refused.A value above the job’s real allocation is clamped down to it. Set it by hand to claim a smaller share than a machine has — a Celery worker holding one of several slots on a node, say — and it will be respected. A non-integer or
0is ignored.slurm_mps()passes each directory its own per-directory share, not the aggregate its single allocation reserves.PM_SYMLINKDefault: unset
When set (any value), input files are symlinked into the run directory instead of copied. Faster for large inputs; the run directory becomes non-self-contained (see Pass input files to an app).
PM_BLOCKINGDefault:
0When
1, app calls block until the job reachesCOMPLETEDorERROR(HTTP-backend path).PM_JOB_DIR_PREFIXDefault:
""Prefix applied to job paths submitted through the HTTP backend.
PM_WORKING_DIRDefault: unset
If set, used as the base for resolving relative paths.
HTTP backend#
PM_BACKEND_HEADERSDefault:
{}JSON dict of extra HTTP headers attached to every backend request.
PM_COOKIE_CACHE_DIRDefault:
~/.cache/playmolecule/cookies/Where login session cookies are persisted. Override in containerised CI runners where
$HOMEis ephemeral.PLAYMOLECULE_EMAIL/PM_EMAILDefault: unset
Default email for
playmolecule login.PLAYMOLECULE_PASSWORD/PM_PASSWORDDefault: unset
Default password for
playmolecule login. Prefer prompting interactively in normal use.
Logging#
PM_LOG_LEVELDefault: unset
Sets the
playmoleculelogger to any standard level (DEBUG,INFO,WARNING,ERROR).PM_QUIETDefault:
0When
1, convenience alias forPM_LOG_LEVEL=WARNING.