Installation ============ ``skasim`` supports two installation paths: - a **pip-only** path for lightweight use, including imports, configuration validation, CLI help, documentation builds, and lightweight tests; - a **conda full-runtime** path for executing simulations with Karabo, OSKAR, and the supported runtime stack. Pip-only lightweight install ---------------------------- Use this path when you want to inspect the CLI, validate configuration, build the documentation, or run tests that do not execute Karabo simulations:: git clone git@github.com:espsrc/espsrc_ska_simulator.git cd espsrc_ska_simulator python -m pip install -e . This install intentionally does not provide the full Karabo simulation runtime. Commands such as ``skasim --help`` should work, but running a simulation requires the conda environment below. Conda full-runtime install -------------------------- Use this procedure for simulation runs on the current development system. The environment is named ``skasim`` and uses Python 3.10, Karabo, OSKAR, and WSClean from conda packages. The editable pip install also installs Python dependencies from ``pyproject.toml``, including ``shadems`` for UV-coverage plots:: conda create -y -n skasim python=3.10 conda install -y -n skasim --no-channel-priority \ -c nvidia/label/cuda-11.7.0 \ -c i4ds \ -c conda-forge \ karabo-pipeline "cuda-version=11.7" conda run -n skasim pip install -e . The ``--no-channel-priority`` option is needed because strict channel priority can block MPI/FFTW dependencies required by the Karabo runtime stack. The ``cuda-version=11.7`` pin is also needed: the OSKAR build installed with Karabo expects CUDA 11 runtime libraries such as ``libcudart.so.11.0`` and ``libcufft.so.10``. The checked-in ``environment.yml`` remains useful as a declaration of the intended runtime dependencies, but the command sequence above is the verified installation path on this machine. WSClean ------- The conda full-runtime install above installs WSClean through the ``karabo-pipeline`` dependency set. On the verified ``skasim`` environment, ``karabo-pipeline`` depends on ``wsclean`` and Conda installs ``wsclean 3.5.0`` from the ``i4ds`` channel. WSClean checks whether OpenBLAS multi-threading is enabled and aborts if ``OPENBLAS_NUM_THREADS`` is not set to ``1``. The ``skasim`` pipeline sets this environment variable automatically before launching WSClean, so pipeline runs can succeed even when a direct shell command such as ``wsclean --version`` fails. To inspect WSClean directly, use:: conda run -n skasim env OPENBLAS_NUM_THREADS=1 wsclean --version The WSClean command defaults to ``wsclean``. If WSClean is available through a wrapper or container instead, pass it explicitly with ``--wsclean-command``. On this machine, the Singularity container can be used as an example:: skasim --imager wsclean \ --wsclean-command "singularity exec /mnt/software/containers/wsclean-3.10-dysco.sif wsclean" This command is an environment-specific example, not the default. shadeMS ------- ``skasim`` uses ``shadems`` to generate the UV-coverage plot displayed beside the telescope layout in the weblog. ``shadems`` is installed from pip through the package dependencies. To inspect it directly, use:: conda run -n skasim shadems --help The pipeline runs shadeMS with U and V axes, a square canvas, and writable Matplotlib/Numba cache directories inside the run output directory. Verifying the installation -------------------------- For the pip-only path, confirm that the CLI can be inspected:: skasim --help For the conda full-runtime path, verify the installed runtime before running simulations:: conda run -n skasim python -c "import karabo, oskar; print('karabo', karabo.__version__); print('oskar ok')" conda run -n skasim which oskar_sim_interferometer conda run -n skasim which wsclean conda run -n skasim which shadems conda run -n skasim skasim --help ``oskarpy`` is not required for the supported execution path; the successful ``import oskar`` check and a completed visibility simulation verify the OSKAR backend used by Karabo. A small WSClean smoke run with the named MIGHTEE catalog is:: conda run -n skasim skasim \ --output-dir smoke_mightee_wsclean_quick \ --telescope MeerKAT \ --observation-time 30 \ --frequency-mhz 1300 \ --bandwidth-mhz 25 \ --n-channels 2 \ --pixels 256 \ --catalog MIGHTEE \ --imager wsclean \ --clean-iterations 20 \ --overwrite The verified smoke run completed with exit code 0 and wrote ``visibilities.MS``, a shadeMS UV-coverage plot, WSClean FITS products, PNG previews, ``run_manifest.json``, and ``weblog.html`` under ``smoke_mightee_wsclean_quick/``.