Skip to main content

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.

Montage 050 locally. Nodes in the same column can run in parallel once their dependencies complete.

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

Open full resolution ↗Montage 050 locally: observed activity DAG
The observed activity graph. Click to see the complete capture.

Pinned-image and 58-activity contract validation. Final FITS and PNG outputs are verified by ./validate.shafter all activities finish.