Sign inSign up

nanograv/ng20

By nanograv

•Updated about 3 hours ago

Reproducible NANOGrav 20-Year pulsar timing environment

Buildkit cache
Image
Data science
0

1.8K

nanograv/ng20 repository overview

⁠NG20 — NANOGrav 20-Year Dataset Analysis Environment

Official container images for working with the NANOGrav 20-Year Dataset: narrowband and wideband timing solutions, TOAs, and PINT-Pal configuration files for pulsars observed from 2004–2024 with Arecibo, GBT, VLA, and CHIME. These Docker container images do not contain any pulsar timing data.

Other parts of the project are hosted on NANOGrav's private GitLab server (you will need a NANOGrav account to access these links):

Private source repository: https://gitlab.nanograv.org/nano-time/ng20⁠

Documentation: https://gitlab.nanograv.org/nano-time/ng20/-/wikis/Home⁠

These images are used by CI runners as part of the development of the NANOGrav 20-year dataset. They are also intended to be used by timers for interactive work, including through Dev Containers in editors that support them (VS Code, Cursor).


⁠Quick start

⁠Dev Container

To use the Dev Container in VS Code, first clone the ng20 repository:

git clone [email protected]:nano-time/ng20.git

(This requires an SSH key tied to your NANOGrav GitLab account.)

Then, open the ng20 directory in VS Code. If necessary (you may be prompted automatically), open the command palette (Ctrl/Cmd+Shift+P, or click the "><" icon in the lower-left corner) and select "Reopen in Container". Once VS Code finishes initializing the container, you should be able to launch a terminal with "Terminal > New Terminal", which will have the ng20 Pixi environment active.

⁠Interactive shell

To run a basic interactive shell in the container, outside of VS Code or any editor:

docker run -it --rm nanograv/ng20:latest bin/bash

This will activate the internal ng20 Pixi environment by default.

To work on a copy of the NG20 data set repository within the container:

git clone [email protected]:nano-time/ng20.git
cd ng20

docker run -it --rm \
  -h ng20 \
  -v "$PWD:/work" \
  -w /work \
  -e HOST_UID="$(id -u)" \
  -e HOST_GID="$(id -g)" \
  nanograv/ng20:latest /bin/bash

This will start a new interactive container with the Pixi environment active and the ng20 directory mounted, and pass through the host user and group IDs, avoiding issues with file permissions. (Note that, as above, the initial git clone to work requires an SSH key tied to your NANOGrav GitLab account.)


⁠What’s included

The default environment includes all the software necessary to perform single-pulsar noise and timing analysis with PINT Pal, as well as some additional utilities which can be used to analyze pulsar observations:

CategorySoftware
TimingPINT⁠, PINT Pal⁠, Tempo2⁠
Noise analysisEnterprise⁠, Enterprise Extensions⁠, Discovery⁠
MCMC samplingPTMCMCSampler⁠
Post-processing & visualizationLa Forge⁠
Pulsar observationsPSRCHIVE⁠, PyPulse⁠, PulsePortraiture⁠
Scientific PythonPython 3.14, NumPy, SciPy, Astropy, Matplotlib, Jupyter

⁠Image tags

The latest image tags use date-based versioning; e.g., 2026-09-24. GPU images are currently dormant, but may be reintroduced at a later point if they prove necessary.


⁠Note on Architectures

The container is built for the linux/amd64 (i.e., x86_64) and linux/arm64 (i.e., aarch64) architectures. Some pulsar timing software, including PINT and Tempo2, relies on the extended precision provided by x86_64 processors' 80-bit long double to function correctly. This can create problems on newer Macs, which use Arm-based Apple Silicon M-series processors, and have a 64-bit long double. On the other hand, on 64-bit Arm Linux systems, long double represents a 128-bit IEEE 754 floating point number, emulated at compile time using 64-bit operations.

Because of this, on Apple Silicon Macs, using the linux/arm64 container can effectively work around the platform's lack of extended precision. Results will not be bit-for-bit identical to those from x86_64 processors that support 80-bit floats, but the precision is more than sufficient for correctness, and performance is not substantially impaired, since the processor is running native instructions.


⁠License & citation

Please cite the NANOGrav 20-Year Dataset and associated publications when using these data and tools. See the GitLab wiki for citation guidance and contribution workflow.

Tag summary

Content type

Image

Digest

sha256:8994edcb9…

Size

1.3 GB

Last updated

about 3 hours ago

docker pull nanograv/ng20