Introduction
qbd (/kjuːbd/) can create FITS-file data cubes which are larger than your machine’s RAM.
Want to get going right now? Start here: Installation
The Context
The modern radio interferometer facilities, such as MeerKAT, ngVLA, LOFAR, ASKAP, and the forthcoming SKA, generate an unprecedented amount of astronomical data. Processing, reducing, viewing, analyzing, and storing this data are hard challenges that will continue to pose difficulties in the field.
One common problem encountered by researchers is producing multi-channel (and
often full Stokes) data cubes. To address this issue, qbd (pronounced
/kju:bd/) creates a large empty data cube on disk first and then fills it with
data, channel by channel. By doing so, only the necessary RAM to hold a single
channel is required at maximum.
This strategy allows to efficiently process large-scale astronomical datasets using regular High Performance Computing (HPC) hardware. Producing 20,000 x 20,000 pixels, full Stokes, cubes with hundreds of channels can be done in minutes to hours.
Installation
pip install qbd
Running qbd
1. Create demo data
Run the qbd command with the --create-demo-data flag to create the directory
channels with FITS demo data.
qbd --create-demo-data
Writing file: channels/demo-channel-001.fits
Writing file: channels/demo-channel-002.fits
Writing file: channels/demo-channel-003.fits
Writing file: channels/demo-channel-006.fits
Writing file: channels/demo-channel-007.fits
2. Create input file list
Create a simple text file containing the filepaths to input the channel data.
find channels/*.fits > channel-list.txt
cat channel-list.txt
channels/demo-channel-001.fits
channels/demo-channel-002.fits
channels/demo-channel-003.fits
channels/demo-channel-006.fits
channels/demo-channel-007.fits
3. (Optional) Add empty channels
Add empty channels (filled with np.nan) by adding an empty lines in channel-list.txt:
cat channel-list.txt
channels/demo-channel-001.fits
channels/demo-channel-002.fits
channels/demo-channel-003.fits
channels/demo-channel-006.fits
channels/demo-channel-007.fits
4. Start cube creation
Start the data cube creation by calling the channel-list.txt with qbd.
qbd channel-list.txt
Creating empty cube: cube.fits
Processing channel 0/7: channels/demo-channel-001.fits
Processing channel 1/7: channels/demo-channel-002.fits
Processing channel 2/7: channels/demo-channel-003.fits
Processing channel 3/7: Empty channel. Setting NaN.
Processing channel 4/7: Empty channel. Setting NaN.
Processing channel 5/7: channels/demo-channel-006.fits
Processing channel 6/7: channels/demo-channel-007.fits
Cube filled: cube.fits
Getting help
If you have questions please do not hesitate to get in contact or to file a Github issue:
- Email: software@lennartheino.de
Contributors
The development of this software has been funded by IDIA (idia.ac.za, Inter-university Institute for Data Intensive Astronomy).