conDitar GUI
July 17, 2026 · View on GitHub
A lightweight browser GUI for running conDitar molecular generation jobs.
This folder contains the conDitar browser GUI. It stages user-selected PDB/SDF
inputs, launches conDitar jobs through the container image built from
conDitar-dev, tracks job status, and reads generated SDF outputs.
The generator, container, and GUI are documented separately:
../README.md— model, sampling, and repository overview.../docker/README.md— image build, archive transfer, Docker/Podman usage, and container-only runs.

Architecture overview
conDitar-dev/gui
Browser GUI + Python backend
Starts jobs, tracks logs/status, reads generated SDF outputs
conDitar-dev container/source
Docker/Podman image with conDitar code, dependencies, model files, and runtime entry point
Default image name: localhost/conditar-dev:container-dev
Typical local flow:
- Build or load the
conDitar-devcontainer image. - Start this GUI folder with
./start_cpu_gui.sh. - Open
http://127.0.0.1:4173. - Choose inputs, settings, and target, then click Generate molecules.
Job folders are written under job_data/jobs/<job-id>/. That directory is
ignored by git and contains staged inputs, logs, metadata, generated SDFs, and
export ZIPs.
Quick start
For local CPU runs with Docker:
./start_cpu_gui.sh
For GPU runs through Slurm and Podman:
./start_slurm_gui.sh
Both launchers start the GUI at:
http://127.0.0.1:4173
Local CPU startup
Requirements:
- Git
- Python 3.9 or newer
- Docker Desktop
- A loaded conDitar image named
localhost/conditar-dev:container-dev
From the GUI folder inside your conDitar checkout:
cd /path/to/conDitar-dev/gui
Load the conDitar image if needed:
docker load -i /path/to/localhost_conditar-dev_container-dev.tar.gz
docker image inspect localhost/conditar-dev:container-dev >/dev/null \
&& echo "conDitar container loaded"
Docker Desktop must be installed and running before docker load, docker run,
or GUI job submission. On Apple Silicon, use the linux/amd64 image; emulation
may be slower.
Start the GUI:
./start_cpu_gui.sh
If the browser does not open automatically, visit:
http://127.0.0.1:4173
If port 4173 is already in use, either use the already-running GUI or start on
a different port:
PORT=4174 ./start_cpu_gui.sh
Slurm GPU startup
Requirements:
- A cluster session with Slurm available
- Podman available on the login or compute environment
- The conDitar image available as
localhost/conditar-dev:container-dev, or a shared image archive that can be loaded by the Slurm job - Any site-specific setup required for remote desktop or web access
From the GUI folder on the cluster:
cd /path/to/conDitar-dev/gui
Start the Slurm GUI:
./start_slurm_gui.sh
This checks that Podman and Slurm are available before starting the GUI. If
CONDITAR_DOCKER_TAR is set, the Slurm job loads that archive before running;
otherwise it uses the named image already available to Podman.
For site-specific defaults that should not be committed, put environment
assignments in .conditar-slurm.env; the launcher loads it automatically.
The Slurm launcher defaults to:
CONDITAR_RUNTIME=podman
CONDITAR_DOCKER_IMAGE=localhost/conditar-dev:container-dev
CONDITAR_DOCKER_TAR= # optional archive to load inside the job
CONDITAR_SLURM_ACCOUNT= # required by many Slurm sites
CONDITAR_SLURM_TIME=04:00:00
CONDITAR_SLURM_MEM=32G
CONDITAR_SLURM_CPUS=4
CONDITAR_SLURM_GPUS=1
Override any default inline when needed:
CONDITAR_SLURM_PARTITION=nextgen \
CONDITAR_SLURM_TIME=08:00:00 \
./start_slurm_gui.sh
In the GUI, enter your required Slurm account and choose
Slurm GPU · Podman under Where should this run? before submitting. The
backend writes run.slurm, submits with sbatch, and polls Slurm/log files
until outputs are ready.
Runtime options
The GUI chooses the container runner from environment variables:
CONDITAR_RUNTIME=dockerfor local Docker Desktop.CONDITAR_RUNTIME=podmanfor Linux/cluster Podman.CONDITAR_RUNTIME=autoto select an available local Docker/Podman runtime.
For local CPU defaults that should not be committed, put environment assignments
in .conditar-cpu.env; start_cpu_gui.sh loads it automatically.
Use a different image name:
CONDITAR_DOCKER_IMAGE=my-registry/conditar-dev:tag \
CONDITAR_RUNTIME=docker \
./start_cpu_gui.sh
Use a local conDitar-dev checkout while keeping the same container
environment/checkpoints:
CONDITAR_SOURCE_MOUNT=/path/to/conDitar-dev \
CONDITAR_RUNTIME=docker \
./start_cpu_gui.sh
This is useful for source-only conDitar edits. Rebuild the container when
dependencies, model/checkpoint files, or container setup changes. The launchers
automatically use the parent conDitar-dev checkout as CONDITAR_SOURCE_MOUNT
when the GUI is stored at conDitar-dev/gui.
If Docker or Podman is installed in a nonstandard location:
DOCKER_BIN=/path/to/docker ./start_cpu_gui.sh
PODMAN_BIN=/path/to/podman ./start_slurm_gui.sh
To copy a shared image archive from a remote cluster to your local machine, run
rsync from your local terminal. Replace the placeholders with your cluster
username, login host, and archive path:
mkdir -p "$HOME/containers"
rsync -avP \
<CLUSTER_USER>@<CLUSTER_LOGIN_HOST>:/path/to/localhost_conditar-dev_container-dev.tar.gz \
"$HOME/containers/"
docker load -i "$HOME/containers/localhost_conditar-dev_container-dev.tar.gz"
The archive is large; rsync -P resumes an interrupted transfer. Local NVIDIA
GPU execution additionally requires Docker Desktop GPU support and a compatible
NVIDIA runtime. For normal GPU throughput, use the Slurm/Podman path.
Using the GUI
- Choose Protein + reference ligand or Pocket only.
- Upload a PDB file; reference mode also requires an SDF ligand.
- Set Molecules, Batch size, and Pocket radius.
- Choose This computer · CPU or Slurm GPU · Podman.
- Enable Vina scoring if desired, then review Slurm options when using the GPU target.
- Click Generate molecules.
- Use the Jobs tab to monitor status and load completed outputs.
- Use the Results and Export tabs to inspect molecules and download SDF/CSV/ZIP artifacts.
CPU email notifications are intentionally disabled in the GUI until a local SMTP/sendmail path is configured. Slurm GPU jobs can use scheduler email notifications when an email address is provided.
If a Slurm job is PENDING, the scheduler has accepted it but is waiting for account,
partition, or GPU capacity. If it fails before producing container output,
inspect logs/sbatch.stderr.log and logs/stderr.log; a missing image archive
or an attempted pull of localhost/conditar-dev:container-dev indicates that
the GPU launcher was not used or the archive path is incorrect.
Batch folders
The GUI can accept folders of paired inputs.
- Local CPU batches become one job per folder in a serial local worker queue.
- Slurm GPU batches submit one Slurm array with one task per folder, allowing Slurm to run them in parallel subject to account, partition, and GPU availability.
The browser never passes arbitrary client filesystem paths into the container.
Uploaded files are copied into each job's private inputs/ directory first.
Vina post-processing
Vina scoring is optional and lives in the run setup controls. When enabled, the backend adds Vina arguments to the same container/job after generation. The Results page reads SDF properties dynamically and can display/export properties such as:
VINA_SCORE_ONLY
VINA_MINIMIZE
VINA_DOCK
QVINA
QED
SA