Installation¶
The flint module itself is built in pure Python and can be installed using pip. We highly recommend using uv for speedy installation.
We publish releases on PyPI:
# PyPI release
pip install askap-flint
You can also install directly from the git repository:
# Direct git install (latest push)
pip install git+https://github.com/flint-crew/flint.git
Or, from a local clone:
git clone https://github.com/flint-crew/flint.git
cd flint
pip install -e .
Python support¶
We are currently supporting Python 3.11 and 3.12, which is enforced in the pyproject.toml:
requires-python = ">=3.11,<3.13"
External Dependencies¶
For compiled tools, flint uses singularity containers. Users must install singularity or apptainer on their system for these to work. If given the choice, install apptainer, which is the community developed and maintained fork of singularity.
Flint does not attempt to install singularity or apptainer .
Containerised install¶
We now support a containerised installation. Note that these containers internally contain apptainer. We have not tested nested containers for stability. The primary build script is available in containers/Dockerfile. We also provide pre-built images on GitHub. You can pull these by running either:
# Using Docker
# If on ARM (i.e. Apple Silicon) the `--platform=linux/x86_64` is required
docker pull ghcr.io/flint-crew/flint:{tag} --platform=linux/x86_64
or
# Using apptainer/singulartiy
singularity pull docker://ghcr.io/flint-crew/flint:{tag}
See the GitHub packages page for the list of available version tags.
Containers¶
We separately maintain a set of required containers. Pre-built containers are hosted on DockerHub, and the underlying build scripts can be found over in the flint-containers repository.
With flint installed, you can use the flint_containers CLI to download or check the required containers:
usage: flint_containers download [-h] [--tag TAG] container_directory
Positional Arguments¶
- container_directory
Location to download containers to
Named Arguments¶
- --tag
Tag of the containers to download
In a future release it is planned that tasks or processes that require a container will internally resolve them automatically. For the moment though it is expected that the user provides the appropriate set of paths through CLI keyword arguments.
Catalogues¶
Some functions within flint require access to known external catalogues. These may be downloaded via
usage: flint_catalgoues download [-h] reference_directory
Positional Arguments¶
- reference_directory
The directory to save the reference catalogues to
Once these catalogues have been downloaded the reference_directory will be required as an input into key functions. The flint infrastructure will then access the appropriate reference catalogue as required.
Caution
Internally the astroquery package is used to manage catalogue downloads from vizier. Should these fail (.e.g. due to disk quota issues) be sure to clear the astropy cache space be re-attempting. Situations have been noted where incomplete file downloads are stored in astropy’s cache space, leading astroquery to erroneously believe a query request is available. A UnpicklingError: pickle data was truncated error is a typical indicator of this.
Installing casacore¶
Provided an appropriate environment, installinf flint should be as simple as a
pip install. However, on some systems there are interactions with casacore and building
python-casacore appropriately. Issues have been noted when interacting with
large measurement sets across components with different casacore versions.
This seems to happen even across container boundaries (i.e. different versions
in containers might play a role). The exact cause is not at all understood, but
it appears to be related to the version of python-casacore, numpy and
whether pre-built wheels are used. In recent releases this problem does appear
to have been eliminated, almost certainly in upstream dependencies.
In practise it might be easier to leverage conda to install the appropriate
boost and casacore libraries.
We have split out the pip dependencies that rely on python-casacore. These
can be installed by running from within thg git clone flint repository folder:
pip install '.[casa]'
A helpful script below may be of use.
BRANCH="main" # replace this with appropriate branch or tag
DIR="flint_${BRANCH}"
PYVERSION="3.12"
mkdir "${DIR}" || exit
cd "${DIR}" || exit
git clone git@github.com:tjgalvin/flint.git && \
cd flint && \
git checkout "${BRANCH}"
conda create -y -n "${DIR}" python="${PYVERSION}" && \
source /home/$(whoami)/.bashrc && \
conda activate "${DIR}" && \
conda install -y -c conda-forge boost casacore && \
PIP_NO_BINARY="python-casacore" pip install -e '.[casa]'
This should set up an appropriate environment that is compatible with the
containers currently being used. Do note though that we are not attempting
to install or configure apptainer.