Montage 050 locally
Create astronomical mosaics from the twelve FITS observations bundled in the original Montage 050d image. This local variant preserves every original command and file dependency. Two CPU slots run the workflow without GCP machines, Kubernetes, or an HPC account.
Run this example locally
Run all 58 original Montage 050d activities locally, using the immutable amd64 image and its twelve bundled FITS observations. The default uses two CPU slots, preserves the 138 named file handoffs, creates three calibrated astronomical mosaics and a color preview, and provisions no cloud machines. This is a long-running scientific workload; on Apple Silicon Docker uses amd64 emulation.
Install Go.
Docker is also required. This command runs the workload inside its provided Docker image.
git clone https://github.com/UFFeScience/akoflow-examples.git &&
cd akoflow-examples &&
git checkout --detach d890c3171e3661890305b763b8fc3ede48bb61b4 &&
cd scientific-workflows/montage-050 &&
./prepare.sh &&
./run.sh
Run the block from the directory where you keep your repositories. If you already cloned the repository, enter this example's directory and run ./prepare.sh && ./run.sh.
Preparation downloads the Go module and any declared Python packages once. The workload then runs locally with offline input data. Every meaningful step is a separate process; independent activities run in parallel after their dependencies complete.
Read outputs/manifest.json for the generated artifacts, outputs/dag-validation.json for dependency waves, and outputs/stage-<activity>.json for each activity's observed result. A failed stage stops the run and prevents a successful final manifest.
Expected outputs: 1-mosaic.fits, 2-mosaic.fits, 3-mosaic.fits, 1-mosaic.png, 2-mosaic.png, 3-mosaic.png, mosaic-color.png.
Run the same activities in Desktop
Start your local AkôFlow daemon with Docker available and configure AKOFLOW_API_TOKEN in your shell. From this example's directory, run:
go run ../../tools/daemon-local -root ../.. -example scientific-workflows/montage-050 -wait=false
This command validates the daemon connection, builds the declared image, registers the local environment and workflow, and submits a real run. The daemon owns execution and file transfers. Open the printed run ID in Desktop to inspect each activity.
The mosaic and the experiment
Read Montage 050: a sky made of workflows for the full-size astronomical mosaic, scientific background, the local reproduction path, and audited results from a completed hybrid execution. The article identifies the provenance of that image separately from this local run's status.
Complete activity DAG
The diagram uses the exact 58 activity definitions and their persisted dependencies. Each color band has its own projection, difference fitting, background model, correction, image table, and mosaic chain. The final color preview joins the three FITS mosaics. Independent activities become ready after their own prerequisites complete; there is no extra barrier across color bands.
Inputs and outputs
The immutable upstream image contains 87 MiB of source FITS data, region headers, tables, and native Montage executables. The local command produces three 1800 × 1800 FITS mosaics, three monochrome PNG previews, a color preview, an output manifest, and one execution record per activity.
This is the full scientific workload. It can take substantially longer than the small CPU examples, especially under amd64 emulation on Apple Silicon. Preparation and CI validate the image, twelve source observations, all 58 native commands, and 138 file handoffs. That preparation check does not execute the full workload or certify final mosaic outputs.
Run ./validate.sh after the standalone workflow finishes. It checks that all 58 activity records completed, parses FITS image dimensions, and decodes PNG headers. The historical duration profiles inherited from the source workflow were measured on another CPU and are not local timing measurements.
Execution evidence
This long scientific workflow uses the original input data and native commands. Its pinned image and command contract are verified. A full run can take substantially longer than the small local examples; inspect the recorded daemon status before treating its outputs as completed. Recorded status: running for run montage-050-local-local-4f5b7d857b-run-20261020t193048.874693000.
Read the daemon execution record
Pinned-image and 58-activity contract validation. Final FITS and PNG outputs are verified by ./validate.shafter all activities finish.