LOFAR LoTSS DR2 cutout matching¶
In this example, we’ll take a chunk of the LoTSS_DR2_v110.gaus.fits LOFAR source catalogue, convert it to a WODEN sky model, run it through a WODEN simulation, and try and match a postage stampl cutout from the actual LoTSS survey.
First up, what let’s look at what we’re trying to emulate. I went to the LoTSS DR2 cutout service and grabbed the nearest cut out to RA, Dec = 180.0, 50.0. That retuned the P18Hetdex03 field, which looks like this:
from astropy.io import fits
from astropy.wcs import WCS
import numpy as np
with fits.open('P18Hetdex03_mosaic-blanked.fits') as hdu:
wcs = WCS(hdu[0].header).celestial
pix_res = np.abs(hdu[0].header['CDELT1'])
cent_x = hdu[0].header['CRPIX1']
cent_y = hdu[0].header['CRPIX2']
cent_ra = hdu[0].header['CRVAL1']
cent_dec = hdu[0].header['CRVAL2']
cat_freq = hdu[0].header['RESTFRQ']
data = np.squeeze(hdu[0].data)
import matplotlib.pyplot as plt
fig, axs = plt.subplots(1, 1, subplot_kw={'projection': wcs}, figsize=(12, 10))
im = axs.imshow(data, origin='lower', cmap='Blues', vmin=0, vmax=1e-3)
half_width=2048
axs.set_xlim(cent_x - half_width, cent_x + half_width)
axs.set_ylim(cent_y - half_width, cent_y + half_width)
axs.set_xlabel('RA')
axs.set_ylabel('Dec')
plt.colorbar(im, ax=axs, label='Flux (Jy/beam)')
plt.show()
That’s a spicy meatball! Super high res and deep image. Checking the LoTSS data products page I can find Non-redundant Gaussian catalogue v1.1. Clicking that downloads the LoTSS_DR2_v110.gaus.fits file. Hopefully as this is a Gaussian catalogue, it should give us a realistic looking sky model. First up, let’s load the catalogue.
from astropy.table import Table
from astropy.coordinates import SkyCoord
import numpy as np
table_lotss = Table.read('LoTSS_DR2_v110.gaus.fits')
unq_source_ids = np.array(table_lotss['Source_Name'], dtype='U32')
##order everything by source name to make adding converting into a WODEN
##style table easier
ordering = np.argsort(unq_source_ids)
unq_source_ids = unq_source_ids[ordering]
ras = table_lotss['RA'][ordering]
decs = table_lotss['DEC'][ordering]
fluxes = table_lotss['Total_flux'][ordering]/1000.0
majors = table_lotss['DC_Maj'][ordering]/3600.0
minors = table_lotss['DC_Min'][ordering]/3600.0
pas = table_lotss['PA'][ordering]
##Make some astropy skycoords
coords = SkyCoord(ras, decs, unit='deg')
##Make a skycoord for the image centre
image_centre = SkyCoord(cent_ra, cent_dec, unit='deg')
##Find separation of all catalogue sources from image centre
separations = image_centre.separation(coords).degree
Next, we’ll trim to catalogue down to sources that fit within a degree from the centre of our cutout image. Plot it over the cutout image to sanity check everything.
subset = np.where(separations < 1.0)
ra_subset = ras[subset]
dec_subset = decs[subset]
x_sub, y_sub = wcs.all_world2pix(ra_subset, dec_subset, 0)
fig, axs = plt.subplots(1, 1, subplot_kw={'projection': wcs}, figsize=(12, 10))
im = axs.imshow(data, origin='lower', cmap='Blues', vmin=0, vmax=1e-3)
axs.scatter(x_sub, y_sub, marker='.', s=2, edgecolor='C1', alpha=1.0)
half_width=2048
axs.set_xlim(cent_x - half_width, cent_x + half_width)
axs.set_ylim(cent_y - half_width, cent_y + half_width)
axs.set_xlabel('RA')
axs.set_ylabel('Dec')
plt.colorbar(im, ax=axs, label='Flux (Jy/beam)')
plt.show()
We’ve defo go the correct coverage! Weirdly, all the sources seem slightly offset from the cutout image. Maybe the catalogue has been ionospherically corrected and the image hasn’t? Anyways, should still be good enough to run through WODEN. Let’s convert it to something that WODEN can understand.
##First up, only use the subset we've just defined
num_comps = len(subset[0])
unq_source_ids_use = unq_source_ids[subset]
ras_use = ras[subset]
decs_use = decs[subset]
fluxes_use = fluxes[subset]
majors_use = majors[subset]
minors_use = minors[subset]
pas_use = pas[subset]
##Catalogue doesn't see to come with spectral index so just set to -0.8
alphas = np.full(num_comps, -0.8)
print('Number of components:', num_comps)
Number of components: 4995
Next, get the naming convention that the WODEN catalogue needs (based on the LoBES survey, also used by hyperdrive). It needs to have a column called UNQ_SOURCE_ID, which is the name of the parent source for any catalogue entry. It also needs a NAME column, which is the name of the parent source plus f"_C{comp_ind}" where comp_ind is the component index within that source. WODEN uses this to group components from the same source together, useful if you want to crop below the horizon by source.
Anyways, we’ve loaded the Source_Name column from the LoTSS catalogue as unq_source_ids. So we can use this to form the NAME column.
##Grabs all unique names, the indexes of the first occurance, and how many times
##that name appears
unq_names, unq_indexes, unq_counts = np.unique(unq_source_ids_use, return_index=True, return_counts=True)
names = np.empty(num_comps, dtype='U32')
for unq_name, unq_index, unq_count in zip(unq_names, unq_indexes, unq_counts):
##If there is more than one component with the same name, iterate
##over them
if unq_count > 1:
for comp_id in range(unq_count):
names[unq_index + comp_id] = f"{unq_name}_C{comp_id:03d}"
##Otherwise just set the name to the original name + C000
else:
names[unq_index] = f"{unq_name}_C000"
Beyond that, fluxes are all reported at 200 MHz, so we need to scale from the native 144 MHz. Again, just assume we have spectral index of -0.8 everywhere for this.
extrap_freq = 200e+6
alpha = -0.8
fluxes_extrap = fluxes_use*(extrap_freq/cat_freq)**alpha
One other WODEN thing we need is the COMP_TYPE column, that tells us whether it’s a Gaussian or a Point source. We’ll set anything with a Major axis of 0 as a point source.
comp_types = np.empty(num_comps, dtype='U3')
comp_types[majors_use == 0.0] = 'P'
comp_types[majors_use != 0.0] = 'G'
Now we just reassemble the other columns with new names and write out the catalogue.
from astropy.table import Column
unq_source_id_col = Column(unq_source_ids_use, name='UNQ_SOURCE_ID')
names_col = Column(names, name='NAME')
ras_col = Column(ras_use, name='RA', unit='deg')
decs_col = Column(decs_use, name='DEC', unit='deg')
fluxes_col = Column(fluxes_extrap, name='NORM_COMP_PL', unit='Jy')
si_col = Column(alphas, name='ALPHA_PL', unit='Jy')
majors_col = Column(majors_use, name='MAJOR_DC', unit='deg')
minors_col = Column(majors_use, name='MINOR_DC', unit='deg')
pas_col = Column(pas_use, name='PA_DC', unit='deg')
comp_types_col = Column(comp_types, name='COMP_TYPE')
##We're inputting everything as a power law
mod_types_col = Column(np.full(num_comps, 'pl'), name='MOD_TYPE')
cols = [unq_source_id_col, names_col,
ras_col, decs_col, comp_types_col, mod_types_col,
fluxes_col, si_col,
majors_col, minors_col, pas_col]
new_table = Table(cols)
new_table.write('srclist_LoTSS_DR2_v110.gaus_P18Hetdex03.fits', overwrite=True)
OK! Let’s try and do a simulation to match this. Would be nice to find a date that sticks the LST of the observation as close to overhead as possible. Everyone loves a zenith pointing. I’m not doing this intelligently here. I just fiddle the time until it was pretty close.
from astropy.time import Time
from astropy.coordinates import EarthLocation
import astropy.units as u
lofar_lat = 52.905329712
lofar_long = 6.867996528
##pick a time/date that sticks our phase centre overhead
##Picking a random time on the day I'm writing this
date = "2024-11-12T08:00:26"
lofar_location = EarthLocation(lat=lofar_lat*u.deg,
lon=lofar_long*u.deg)
observing_time = Time(date, scale='utc', location=lofar_location)
##Grab the LST
LST = observing_time.sidereal_time('mean')
LST_deg = LST.value*15
print(f"LST: {LST_deg} deg, Image centre: {cent_ra} deg")
LST: 178.92258355121365 deg, Image centre: 178.922 deg
OK, so the LoTSS survey was done with high-band antennas, so we need a measurement to match that. I’m using LOFAR_HBA_MOCK.ms, which is an MS used in EveryBeam test suite. We want a nice clean image, so we’ll try and do some rotation synthesis. So we’ll do a 10 hour observation. To keep the simulation managable on my desktop, I’ll sample every 15 minutes. I’ll do 40 frequency channels, spread over a 20MHz bandwidth.
Note that EveryBeam reads the array layout and beam pointing from the measurement set. WODEN uses a call to EveryBeam that cannot change this pointing (long story). So if you want to change the pointing, I’ve setup machinery to make a minimalistic copy of the MS with a new pointing. You can either include --eb_point_to_phase to lock the beam to the phase centre, or set --eb_ra_point, --eb_dec_point to specify a new RA, Dec. If you leave these out, it’ll just use the phase centre of the MS.
A useful way to check the pointing is to use --dry_run. WODEN will log the pointing it’s using, so you can check it’s what you expect:
##You can run all this normally on the command line via run_woden.py
##Here, I'm going to load main from run_woden.py and run it directly,
##supply a list of arguments as if they were command line arguments
from subprocess import call
ms_path='../../test_installation/everybeam/LOFAR_HBA_MOCK.ms'
uvfits_name='woden_P18Hetdex03'
cat_name='srclist_LoTSS_DR2_v110.gaus_P18Hetdex03.fits'
primary_beam='everybeam_LOFAR'
mid_freq = 144e+6
bandwidth = 20e+6
num_freqs = 40
freqs = np.linspace(mid_freq - bandwidth/2, mid_freq + bandwidth/2, num_freqs)
freq_reso = freqs[1] - freqs[0]
num_freq_chans = len(freqs)
low_freq = freqs[0]
##Do a tracked observation for +/- 5 hours
##Start 5 hours before our field centre is overhead
date = "2024-11-12T03:00:26"
##Every 15 mins for 40 time steps is 10 hours
time_res = 900.0
num_times = 40
cmd = 'run_woden.py '
args = []
##The command to run WODEN
cmd += f'--ra0={cent_ra} '
cmd += f'--dec0={cent_dec} '
cmd += '--dry_run '
cmd += f'--latitude={lofar_lat} '
cmd += f'--longitude={lofar_long} '
cmd += f'--date={date} '
cmd += f'--output_uvfits_prepend={uvfits_name} '
cmd += f'--cat_filename={cat_name} '
cmd += f'--primary_beam={primary_beam} '
cmd += f'--lowest_channel_freq={low_freq} '
cmd += f'--freq_res={freq_reso} '
cmd += f'--num_freq_channels={num_freq_chans} '
cmd += f'--band_nums=1 '
cmd += f'--time_res={time_res} '
cmd += f'--num_time_steps={num_times} '
cmd += f'--IAU_order '
cmd += '--num_threads=8 '
cmd += '--cpu_mode '
cmd += f'--beam_ms_path={ms_path} '
call(cmd, shell=True)
/home/jack-line/software/WODEN_dev/woden_dev/bin/run_woden.py:4: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
__import__('pkg_resources').require('wodenpy==2.5.0')
Successful readonly open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms: 24 columns, 2485 rows
Successful readonly open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms/SPECTRAL_WINDOW: 14 columns, 1 rows
Successful read/write open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms::FIELD: 10 columns, 1 rows
Successful readonly open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms/ANTENNA: 10 columns, 70 rows
2025-03-17 08:23:32 - INFO -
) ( )
( ( ( /( )\ ) ( /(
)\))( ')\())(()/( ( )\())
((_)()\ )((_)\ /(_)) )\ ((_)\
_(())\_)() ((_)(_))_ ((_) _((_)
\ \((_)/ // _ \ | \ | __|| \| |
\ \/\/ /| (_) || |) || _| | .` |
\_/\_/ \___/ |___/ |___||_|\_|
You are using wodenpy version/git hash: a43c383
2025-03-17 08:23:32 - INFO - Input arguments after parsing:
Phase centre: 178.92200, 49.74800 deg
Array central latitude: 52.905 deg
Array central longitude: 6.868 deg
Array central height: 0.000 m
Lowest channel frequency: 134.000 MHz
Channel frequency resolution: 512.821 kHz
Coarse band bandwidth: 0.183 MHz
Num channels per coarse band: 40
Start date: 2024-11-12T03:00:26
Time resolution: 900.0 (s)
Num time steps: 40
Have read 70 antenna positions from measurement set: ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms
Will write outputs to: /home/jack-line/software/WODEN_dev/examples/LOFAR_LoTSS
2025-03-17 08:23:33 - INFO - Obs epoch initial LST was 105.5973785724 deg
2025-03-17 08:23:33 - INFO - Setting initial J2000 LST to 105.1023318034 deg
2025-03-17 08:23:33 - INFO - Setting initial mjd to 60626.1305092595
2025-03-17 08:23:33 - INFO - After precession initial latitude of the array is 52.9394553770 deg
2025-03-17 08:23:33 - INFO - Will run with EveryBeam LOFAR primary beam, based on this measurement set:
../../test_installation/everybeam/LOFAR_HBA_MOCK.ms
Primary beam is pointed at RA,Dec = 123.40028250000002, 48.21738361111111 deg
2025-03-17 08:23:33 - INFO - Doing the initial mapping of sky model
INFO: couldn't find second table containing shapelet information, so not attempting to load any shapelets.
2025-03-17 08:23:33 - INFO - Sky model mapping took 0.0 mins
2025-03-17 08:23:33 - INFO - Have read in 4995 components
2025-03-17 08:23:33 - INFO - After cropping there are 4995 components
2025-03-17 08:23:33 - INFO - As --dry-run was selected, exiting now before calculating visibilities
2025-03-17 08:23:33 - INFO - Full run took 0:00:00.588231
2025-03-17 08:23:33 - INFO - WODEN is done. Closing the log. S'later
0
So the pertinent info here is
2025-03-17 08:23:32 - INFO - Input arguments after parsing:
Phase centre: 178.92200, 49.74800 deg
2025-03-17 08:23:33 - INFO - Will run with EveryBeam LOFAR primary beam, based on this measurement set:
../../test_installation/everybeam/LOFAR_HBA_MOCK.ms
Primary beam is pointed at RA,Dec = 123.40028250000002, 48.21738361111111 deg
Meaning the beam will be pointed 50 deg away from our phase centre. We’ll just point the beam at the phase centre below to image where we care about. The simulation below took about 17m30s on my desktop.
##You can run all this normally on the command line via run_woden.py
##Here, I'm going to load main from run_woden.py and run it directly,
##supply a list of arguments as if they were command line arguments
from subprocess import call
ms_path='../../test_installation/everybeam/LOFAR_HBA_MOCK.ms'
uvfits_name='woden_P18Hetdex03'
cat_name='srclist_LoTSS_DR2_v110.gaus_P18Hetdex03.fits'
primary_beam='everybeam_LOFAR'
mid_freq = 144e+6
bandwidth = 20e+6
num_freqs = 40
freqs = np.linspace(mid_freq - bandwidth/2, mid_freq + bandwidth/2, num_freqs)
freq_reso = freqs[1] - freqs[0]
num_freq_chans = len(freqs)
low_freq = freqs[0]
##Do a tracked observation for +/- 5 hours
##Start 5 hours before our field centre is overhead
date = "2024-11-12T03:00:26"
##Every 15 mins for 40 time steps is 10 hours
time_res = 900.0
num_times = 40
cmd = 'run_woden.py '
args = []
##The command to run WODEN
cmd += f'--ra0={cent_ra} '
cmd += f'--dec0={cent_dec} '
cmd += '--eb_point_to_phase '
cmd += f'--latitude={lofar_lat} '
cmd += f'--longitude={lofar_long} '
cmd += f'--date={date} '
cmd += f'--output_uvfits_prepend={uvfits_name} '
cmd += f'--cat_filename={cat_name} '
cmd += f'--primary_beam={primary_beam} '
cmd += f'--lowest_channel_freq={low_freq} '
cmd += f'--freq_res={freq_reso} '
cmd += f'--num_freq_channels={num_freq_chans} '
cmd += f'--band_nums=1 '
cmd += f'--time_res={time_res} '
cmd += f'--num_time_steps={num_times} '
cmd += f'--IAU_order '
cmd += '--num_threads=8 '
cmd += '--cpu_mode '
cmd += f'--beam_ms_path={ms_path} '
call(cmd, shell=True)
/home/jack-line/software/WODEN_dev/woden_dev/bin/run_woden.py:4: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
__import__('pkg_resources').require('wodenpy==2.5.0')
Successful readonly open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms: 24 columns, 2485 rows
Successful readonly open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms/SPECTRAL_WINDOW: 14 columns, 1 rows
Successful read/write open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms::FIELD: 10 columns, 1 rows
Successful readonly open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms: 24 columns, 2485 rows
Successful read/write open of default-locked table /home/jack-line/software/WODEN_dev/examples/LOFAR_LoTSS/pointed_woden_P18Hetdex03_band01.ms::FIELD: 10 columns, 1 rows
Successful readonly open of default-locked table ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms/ANTENNA: 10 columns, 70 rows
2025-03-17 08:05:58 - INFO -
) ( )
( ( ( /( )\ ) ( /(
)\))( ')\())(()/( ( )\())
((_)()\ )((_)\ /(_)) )\ ((_)\
_(())\_)() ((_)(_))_ ((_) _((_)
\ \((_)/ // _ \ | \ | __|| \| |
\ \/\/ /| (_) || |) || _| | .` |
\_/\_/ \___/ |___/ |___||_|\_|
You are using wodenpy version/git hash: a43c383
2025-03-17 08:05:58 - INFO - Input arguments after parsing:
Phase centre: 178.92200, 49.74800 deg
Array central latitude: 52.905 deg
Array central longitude: 6.868 deg
Array central height: 0.000 m
Lowest channel frequency: 134.000 MHz
Channel frequency resolution: 512.821 kHz
Coarse band bandwidth: 0.183 MHz
Num channels per coarse band: 40
Start date: 2024-11-12T03:00:26
Time resolution: 900.0 (s)
Num time steps: 40
Have read 70 antenna positions from measurement set: ../../test_installation/everybeam/LOFAR_HBA_MOCK.ms
Will write outputs to: /home/jack-line/software/WODEN_dev/examples/LOFAR_LoTSS
2025-03-17 08:05:59 - INFO - Obs epoch initial LST was 105.5973785724 deg
2025-03-17 08:05:59 - INFO - Setting initial J2000 LST to 105.1023318034 deg
2025-03-17 08:05:59 - INFO - Setting initial mjd to 60626.1305092595
2025-03-17 08:05:59 - INFO - After precession initial latitude of the array is 52.9394553770 deg
2025-03-17 08:05:59 - INFO - Precessing array layout to J2000
2025-03-17 08:05:59 - INFO - Will run with EveryBeam LOFAR primary beam, based on this measurement set:
../../test_installation/everybeam/LOFAR_HBA_MOCK.ms
Created the following minimal MS to point the beam:
/home/jack-line/software/WODEN_dev/examples/LOFAR_LoTSS/pointed_woden_P18Hetdex03_band01.ms
Primary beam is pointed at RA,Dec = 178.922, 49.748 deg
2025-03-17 08:05:59 - INFO - Doing the initial mapping of sky model
INFO: couldn't find second table containing shapelet information, so not attempting to load any shapelets.
2025-03-17 08:05:59 - INFO - Sky model mapping took 0.0 mins
2025-03-17 08:05:59 - INFO - Have read in 4995 components
2025-03-17 08:05:59 - INFO - After cropping there are 4995 components
2025-03-17 08:05:59 - INFO - Will load libwoden from /home/jack-line/software/WODEN_dev/wodenpy/libwoden_double.so
2025-03-17 08:06:00 - INFO - Running in parallel on CPU mode with 8 threads
There are 4 sets of sky models to run
2025-03-17 08:06:00 - INFO - Reading set 0 sky models
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 0 reading 123 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 0 in 0.0 seconds
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 1 reading 123 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 1 in 0.0 seconds
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 2 reading 123 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 2 in 0.0 seconds
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 3 reading 123 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 3 in 0.0 seconds
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 4 reading 123 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 4 in 0.0 seconds
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 5 reading 123 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 5 in 0.0 seconds
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 6 reading 123 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 6 in 0.0 seconds
2025-03-17 08:06:00 - INFO - From sky set 0 thread num 7 reading 117 points, 0 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:06:00 - INFO - Finshed sky set 0 reading thread num 7 in 0.0 seconds
2025-03-17 08:06:02 - INFO - Sending Sky set 0 chunk 0 to the CPU
2025-03-16 22:06:03 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:03 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:03 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:06:03 - INFO - Sending Sky set 0 chunk 1 to the CPU
2025-03-16 22:06:04 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:04 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:04 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:06:04 - INFO - Sending Sky set 0 chunk 2 to the CPU
2025-03-16 22:06:05 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:05 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:05 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:06:05 - INFO - Sending Sky set 0 chunk 3 to the CPU
2025-03-16 22:06:06 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:06 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:06 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:06:06 - INFO - Sending Sky set 0 chunk 4 to the CPU
2025-03-16 22:06:08 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:08 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:08 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:06:08 - INFO - Sending Sky set 0 chunk 5 to the CPU
2025-03-16 22:06:09 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:09 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:09 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:06:09 - INFO - Sending Sky set 0 chunk 6 to the CPU
2025-03-16 22:06:10 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:10 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:10 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:06:10 - INFO - Sending Sky set 0 chunk 7 to the CPU
2025-03-16 22:06:11 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292) Leap second table TAI_UTC seems out-of-date.
2025-03-16 22:06:11 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ Until the table is updated (see the CASA documentation or your system admin),
2025-03-16 22:06:11 SEVERE MeasTable::dUTC(Double) (file ./measures/Measures/MeasTable.cc, line 4292)+ times and coordinates derived from UTC could be wrong by 1s or more.
2025-03-17 08:09:14 - INFO - Sky set 0 chunk 7 has returned from the CPU after 184.0 seconds
2025-03-17 08:09:15 - INFO - Sky set 0 chunk 0 has returned from the CPU after 192.8 seconds
2025-03-17 08:09:16 - INFO - Sky set 0 chunk 2 has returned from the CPU after 192.1 seconds
2025-03-17 08:09:16 - INFO - Sky set 0 chunk 1 has returned from the CPU after 193.4 seconds
2025-03-17 08:09:17 - INFO - Sky set 0 chunk 3 has returned from the CPU after 192.1 seconds
2025-03-17 08:09:19 - INFO - Sky set 0 chunk 5 has returned from the CPU after 191.8 seconds
2025-03-17 08:09:20 - INFO - Sky set 0 chunk 4 has returned from the CPU after 193.7 seconds
2025-03-17 08:09:23 - INFO - Sky set 0 chunk 6 has returned from the CPU after 194.6 seconds
2025-03-17 08:09:25 - INFO - Have completed 978 of 4995 components calcs (19.6%)
2025-03-17 08:09:25 - INFO - Reading set 1 sky models
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 0 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 0 in 0.0 seconds
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 1 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 1 in 0.0 seconds
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 2 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 2 in 0.0 seconds
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 3 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 3 in 0.0 seconds
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 4 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 4 in 0.0 seconds
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 5 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 6 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 6 in 0.0 seconds
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 5 in 0.0 seconds
2025-03-17 08:09:25 - INFO - From sky set 1 thread num 7 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:09:25 - INFO - Finshed sky set 1 reading thread num 7 in 0.0 seconds
2025-03-17 08:09:26 - INFO - Sending Sky set 1 chunk 0 to the CPU
2025-03-17 08:09:27 - INFO - Sending Sky set 1 chunk 1 to the CPU
2025-03-17 08:09:28 - INFO - Sending Sky set 1 chunk 2 to the CPU
2025-03-17 08:09:30 - INFO - Sending Sky set 1 chunk 3 to the CPU
2025-03-17 08:09:31 - INFO - Sending Sky set 1 chunk 4 to the CPU
2025-03-17 08:09:32 - INFO - Sending Sky set 1 chunk 5 to the CPU
2025-03-17 08:09:33 - INFO - Sending Sky set 1 chunk 6 to the CPU
2025-03-17 08:09:34 - INFO - Sending Sky set 1 chunk 7 to the CPU
2025-03-17 08:13:54 - INFO - Sky set 1 chunk 0 has returned from the CPU after 267.7 seconds
2025-03-17 08:13:55 - INFO - Sky set 1 chunk 1 has returned from the CPU after 267.7 seconds
2025-03-17 08:13:57 - INFO - Sky set 1 chunk 3 has returned from the CPU after 267.6 seconds
2025-03-17 08:13:58 - INFO - Sky set 1 chunk 2 has returned from the CPU after 269.3 seconds
2025-03-17 08:14:00 - INFO - Sky set 1 chunk 5 has returned from the CPU after 268.3 seconds
2025-03-17 08:14:01 - INFO - Sky set 1 chunk 6 has returned from the CPU after 267.7 seconds
2025-03-17 08:14:03 - INFO - Sky set 1 chunk 7 has returned from the CPU after 269.1 seconds
2025-03-17 08:14:04 - INFO - Sky set 1 chunk 4 has returned from the CPU after 273.1 seconds
2025-03-17 08:14:05 - INFO - Have completed 2322 of 4995 components calcs (46.5%)
2025-03-17 08:14:05 - INFO - Reading set 2 sky models
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 0 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 0 in 0.0 seconds
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 1 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 1 in 0.0 seconds
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 2 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 2 in 0.0 seconds
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 3 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 3 in 0.0 seconds
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 4 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 4 in 0.0 seconds
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 5 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 6 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 5 in 0.0 seconds
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 6 in 0.0 seconds
2025-03-17 08:14:05 - INFO - From sky set 2 thread num 7 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:14:05 - INFO - Finshed sky set 2 reading thread num 7 in 0.0 seconds
2025-03-17 08:14:06 - INFO - Sending Sky set 2 chunk 0 to the CPU
2025-03-17 08:14:07 - INFO - Sending Sky set 2 chunk 1 to the CPU
2025-03-17 08:14:08 - INFO - Sending Sky set 2 chunk 2 to the CPU
2025-03-17 08:14:09 - INFO - Sending Sky set 2 chunk 3 to the CPU
2025-03-17 08:14:10 - INFO - Sending Sky set 2 chunk 4 to the CPU
2025-03-17 08:14:11 - INFO - Sending Sky set 2 chunk 5 to the CPU
2025-03-17 08:14:12 - INFO - Sending Sky set 2 chunk 6 to the CPU
2025-03-17 08:14:13 - INFO - Sending Sky set 2 chunk 7 to the CPU
2025-03-17 08:18:34 - INFO - Sky set 2 chunk 1 has returned from the CPU after 266.9 seconds
2025-03-17 08:18:36 - INFO - Sky set 2 chunk 3 has returned from the CPU after 267.4 seconds
2025-03-17 08:18:38 - INFO - Sky set 2 chunk 2 has returned from the CPU after 269.5 seconds
2025-03-17 08:18:38 - INFO - Sky set 2 chunk 5 has returned from the CPU after 266.9 seconds
2025-03-17 08:18:39 - INFO - Sky set 2 chunk 4 has returned from the CPU after 268.6 seconds
2025-03-17 08:18:40 - INFO - Sky set 2 chunk 7 has returned from the CPU after 267.5 seconds
2025-03-17 08:18:41 - INFO - Sky set 2 chunk 0 has returned from the CPU after 274.7 seconds
2025-03-17 08:18:42 - INFO - Sky set 2 chunk 6 has returned from the CPU after 270.1 seconds
2025-03-17 08:18:43 - INFO - Have completed 3666 of 4995 components calcs (73.4%)
2025-03-17 08:18:43 - INFO - Reading set 3 sky models
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 0 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 1 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 0 in 0.0 seconds
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 1 in 0.0 seconds
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 2 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 3 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 2 in 0.0 seconds
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 4 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 3 in 0.0 seconds
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 5 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 4 in 0.0 seconds
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 6 reading 0 points, 168 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - From sky set 3 thread num 7 reading 0 points, 153 gauss, 0 shape, 0 shape coeffs
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 5 in 0.0 seconds
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 7 in 0.0 seconds
2025-03-17 08:18:43 - INFO - Finshed sky set 3 reading thread num 6 in 0.0 seconds
2025-03-17 08:18:44 - INFO - Sending Sky set 3 chunk 0 to the CPU
2025-03-17 08:18:45 - INFO - Sending Sky set 3 chunk 1 to the CPU
2025-03-17 08:18:46 - INFO - Sending Sky set 3 chunk 2 to the CPU
2025-03-17 08:18:47 - INFO - Sending Sky set 3 chunk 3 to the CPU
2025-03-17 08:18:48 - INFO - Sending Sky set 3 chunk 4 to the CPU
2025-03-17 08:18:49 - INFO - Sending Sky set 3 chunk 5 to the CPU
2025-03-17 08:18:50 - INFO - Sending Sky set 3 chunk 6 to the CPU
2025-03-17 08:18:50 - INFO - Sending Sky set 3 chunk 7 to the CPU
2025-03-17 08:23:04 - INFO - Sky set 3 chunk 7 has returned from the CPU after 254.0 seconds
2025-03-17 08:23:20 - INFO - Sky set 3 chunk 0 has returned from the CPU after 275.7 seconds
2025-03-17 08:23:21 - INFO - Sky set 3 chunk 2 has returned from the CPU after 275.1 seconds
2025-03-17 08:23:22 - INFO - Sky set 3 chunk 5 has returned from the CPU after 273.3 seconds
2025-03-17 08:23:24 - INFO - Sky set 3 chunk 6 has returned from the CPU after 274.6 seconds
2025-03-17 08:23:25 - INFO - Sky set 3 chunk 1 has returned from the CPU after 279.3 seconds
2025-03-17 08:23:26 - INFO - Sky set 3 chunk 3 has returned from the CPU after 279.4 seconds
2025-03-17 08:23:28 - INFO - Sky set 3 chunk 4 has returned from the CPU after 280.1 seconds
2025-03-17 08:23:29 - INFO - Have completed 4995 of 4995 components calcs (100.0%)
2025-03-17 08:23:29 - INFO - Finished all rounds of processing
2025-03-17 08:23:31 - INFO - Deleting /home/jack-line/software/WODEN_dev/examples/LOFAR_LoTSS/pointed_woden_P18Hetdex03_band01.ms...
2025-03-17 08:23:31 - INFO - Done
2025-03-17 08:23:31 - INFO - Full run took 0:17:32.367036
2025-03-17 08:23:31 - INFO - WODEN is done. Closing the log. S'later
0
Note that I ended up running the simulation on the command line, via the print statement. The output is super long so didn’t want to make the notebook forever long. It took just under an hour on my desktop.
OK, let’s see what we get! First up, what uv coverage do we get?
from astropy.constants import c
c = c.to('m/s').value
with fits.open('woden_P18Hetdex03_band01.uvfits') as hdu:
uu = (hdu[0].data['UU']*c)/1e+3
vv = (hdu[0].data['VV']*c)/1e+3
fig, axs = plt.subplots(1, 1, figsize=(8, 8))
axs.plot(uu, vv, 'k.', ms=1)
axs.plot(-uu, -vv, 'k.', ms=1)
axs.set_xlabel('U (km)')
axs.set_ylabel('V (km)')
plt.show()
Thems some long baselines. Convert the UVFITS to an MS. Below is the function that’s in woden_uv2ms.py. Just copied it here to show what’s going on.
from pyuvdata import UVData
from subprocess import call
import os
def make_ms(uvfits_file, no_delete=False):
"""Takes a path to a uvfits file, checks it exists, and converts it to
a measurement set of the same name at the same location"""
##If file exists, attempt to tranform it
if os.path.isfile(uvfits_file):
##Get rid of '.uvfits' off the end of the file
name = uvfits_file[:-7]
##Delete old measurement set if requested
if no_delete:
pass
else:
call("rm -r %s.ms" %name,shell=True)
UV = UVData()
UV.read(uvfits_file)
UV.write_ms("{:s}.ms".format(name))
else:
##print warning that uvfits file doesn't exist
print("Could not find the uvfits specified by the path: "
"\t{:s}. Skipping this tranformation".format(uvfits_file))
make_ms('woden_P18Hetdex03_band01.uvfits')
The telescope frame is set to '????', which generally indicates ignorance. Defaulting the frame to 'itrs', but this may lead to other warnings or errors.
The uvw_array does not match the expected values given the antenna positions. The largest discrepancy is 84.15218364124303 meters. This is a fairly common situation but might indicate an error in the antenna positions, the uvws or the phasing.
The uvw_array does not match the expected values given the antenna positions. The largest discrepancy is 84.15218364124303 meters. This is a fairly common situation but might indicate an error in the antenna positions, the uvws or the phasing.
Writing in the MS file that the units of the data are uncalib, although some CASA process will ignore this and assume the units are all in Jy (or may not know how to handle data in these units).
Now let’s CLEAN it. I”m not sure of the best way to do this, but this at least gives us an image. Fair warning, this took 22m30s on my desktop.
cmd = 'wsclean -name woden_P18Hetdex03 -niter 20000 '
cmd += ' -size 4096 4096 -scale 1.5asec '
cmd += ' -weight briggs 0 '
cmd += ' -auto-threshold 0.5 -auto-mask 3 -pol I -multiscale '
cmd += ' -j 12 -mgain 0.85 -no-update-model-required '
cmd += ' -beam-size 6 '
cmd += ' -abs-mem 25 '
cmd += ' woden_P18Hetdex03_band01.ms'
##My local WSClean installation is borked, so I have to print the command and run it manually
# print(cmd)
call(cmd, shell=True)
WSClean version 3.4 (2023-10-11)
This software package is released under the GPL version 3.
Author: André Offringa (offringa@gmail.com).
No corrected data in first measurement set: tasks will be applied on the data column.
=== IMAGING TABLE ===
# Pol Ch JG ²G FG FI In Freq(MHz)
| Independent group:
+-+-J- 0 I 0 0 0 0 0 0 134-154 (40)
Reordering woden_P18Hetdex03_band01.ms into 1 x 1 parts.
Reordering: 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
Initializing model visibilities: 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
== Constructing PSF ==
Precalculating weights for Briggs'(0) weighting...
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Detected 62.7 GB of system memory, usage limited to 25 GB (frac=100%, abs limit=25GB)
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Determining min and max w & theoretical beam size... DONE (w=[0.00121652:45192.3] lambdas, maxuvw=99222 lambda)
Theoretic beam = 2.08''
Small inversion enabled, but inversion resolution already smaller than beam size: not using optimization.
Loading data in memory...
Gridding 96600 rows...
Gridded visibility count: 3.02866e+06
Writing psf image... DONE
== Constructing image ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Loading data in memory...
Gridding 96600 rows...
Gridded visibility count: 3.02866e+06
Writing dirty image...
== Deconvolving (1) ==
Estimated standard deviation of background noise: 2.83 mJy
Scale info:
- Scale 0, bias factor=1, psfpeak=1, gain=0.1, kernel peak=0.163278
- Scale 6, bias factor=1.7, psfpeak=0.714823, gain=0.139895, kernel peak=0.0760727
- Scale 11, bias factor=2.8, psfpeak=0.515436, gain=0.19401, kernel peak=0.0240774
- Scale 22, bias factor=4.6, psfpeak=0.340843, gain=0.29339, kernel peak=0.00688496
- Scale 44, bias factor=7.7, psfpeak=0.207038, gain=0.483004, kernel peak=0.00199442
- Scale 89, bias factor=12.9, psfpeak=0.102063, gain=0.97979, kernel peak=0.000539684
- Scale 177, bias factor=21.4, psfpeak=0.0483205, gain=2.06951, kernel peak=0.000140582
- Scale 355, bias factor=35.7, psfpeak=0.0141691, gain=7.0576, kernel peak=3.55142e-05
- Scale 710, bias factor=59.5, psfpeak=0.0036218, gain=27.6106, kernel peak=8.9732e-06
- Scale 1419, bias factor=99.2, psfpeak=0.000918587, gain=108.863, kernel peak=2.25087e-06
RMS per scale: {0: 11.91 mJy, 6: 11.8 mJy, 11: 11.6 mJy, 22: 11.05 mJy, 44: 9.91 mJy, 89: 8.26 mJy, 177: 5.71 mJy, 355: 3.09 mJy, 710: 1.57 mJy, 1419: 848.82 µJy}
Starting multi-scale cleaning. Start peak=9.82 Jy, major iteration threshold=1.47 Jy
Iteration 3, scale 44 px : 7.83 Jy at 2936,1502
Iteration 6, scale 44 px : 6.24 Jy at 2936,1502
Iteration 9, scale 22 px : 5.04 Jy at 2936,1503
Iteration 12, scale 22 px : 3.94 Jy at 2936,1503
Iteration 15, scale 22 px : 3.08 Jy at 2936,1503
Iteration 18, scale 22 px : 2.4 Jy at 2936,1503
Iteration 21, scale 22 px : 1.88 Jy at 2936,1503
Iteration 24, scale 22 px : 1.47 Jy at 2937,1502
Minor loop finished, continuing cleaning after inversion/prediction round.
Assigning from 1 to 1 channels...
== Converting model image to visibilities ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Predicting 96600 rows...
Writing...
== Constructing image ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Loading data in memory...
Gridding 96600 rows...
Gridded visibility count: 3.02866e+06
== Deconvolving (2) ==
Estimated standard deviation of background noise: 1.35 mJy
Scale info:
- Scale 0, bias factor=1, psfpeak=1, gain=0.1, kernel peak=0.163278
- Scale 6, bias factor=1.7, psfpeak=0.714823, gain=0.139895, kernel peak=0.0760727
- Scale 11, bias factor=2.8, psfpeak=0.515436, gain=0.19401, kernel peak=0.0240774
- Scale 22, bias factor=4.6, psfpeak=0.340843, gain=0.29339, kernel peak=0.00688496
- Scale 44, bias factor=7.7, psfpeak=0.207038, gain=0.483004, kernel peak=0.00199442
- Scale 89, bias factor=12.9, psfpeak=0.102063, gain=0.97979, kernel peak=0.000539684
- Scale 177, bias factor=21.4, psfpeak=0.0483205, gain=2.06951, kernel peak=0.000140582
- Scale 355, bias factor=35.7, psfpeak=0.0141691, gain=7.0576, kernel peak=3.55142e-05
- Scale 710, bias factor=59.5, psfpeak=0.0036218, gain=27.6106, kernel peak=8.9732e-06
- Scale 1419, bias factor=99.2, psfpeak=0.000918587, gain=108.863, kernel peak=2.25087e-06
RMS per scale: {0: 3.99 mJy, 6: 3.89 mJy, 11: 3.74 mJy, 22: 3.39 mJy, 44: 2.88 mJy, 89: 2.37 mJy, 177: 1.67 mJy, 355: 919.49 µJy, 710: 488.24 µJy, 1419: 303.4 µJy}
Starting multi-scale cleaning. Start peak=1.46 Jy, major iteration threshold=219.74 mJy
Iteration 28, scale 22 px : 1.15 Jy at 2937,1502
Iteration 35, scale 89 px : 982.63 mJy at 3481,2292
Iteration 40, scale 44 px : 913.94 mJy at 2639,3132
Iteration 54, scale 11 px : 909.74 mJy at 2936,1504
Iteration 57, scale 22 px : 749.67 mJy at 54,2156
Iteration 79, scale 89 px : -793.27 mJy at 2937,1504
Iteration 84, scale 89 px : -629.44 mJy at 2937,1504
Iteration 94, scale 11 px : 745.79 mJy at 2936,1504
Iteration 97, scale 11 px : 588.89 mJy at 2936,1505
Iteration 112, scale 44 px : -672.97 mJy at 2955,1504
Iteration 121, scale 44 px : -527.55 mJy at 2919,1508
Iteration 145, scale 22 px : 515.17 mJy at 2936,1502
Iteration 156, scale 89 px : -589.44 mJy at 2936,1503
Iteration 159, scale 89 px : -467.71 mJy at 2936,1503
Iteration 164, scale 11 px : 540.83 mJy at 2936,1505
Iteration 168, scale 22 px : -436.35 mJy at 2924,1497
Iteration 190, scale 11 px : 447.92 mJy at 2935,1505
Iteration 197, scale 11 px : 351.76 mJy at 3955,1206
Iteration 236, scale 89 px : -517.97 mJy at 2936,1503
Iteration 239, scale 89 px : -411.01 mJy at 2936,1503
Iteration 247, scale 44 px : 359.3 mJy at 653,960
Iteration 258, scale 89 px : -308.8 mJy at 2937,1501
Iteration 262, scale 6 px : 323.93 mJy at 2937,1498
Iteration 269, scale 22 px : 295.64 mJy at 3468,2315
Iteration 288, scale 44 px : 282.98 mJy at 1352,1657
Iteration 300, scale 11 px : 291.37 mJy at 2935,1506
Iteration 311, scale 6 px : 246.61 mJy at 3955,1206
Subminor loop is near minor loop threshold. Initiating countdown.
(14) Iteration 317, scale 89 px : -406.12 mJy at 2937,1501
Iteration 320, scale 89 px : -322.25 mJy at 2937,1501
Iteration 323, scale 89 px : -255.7 mJy at 2937,1501
(13) Iteration 325, scale 22 px : 234.63 mJy at 3263,1843
(12) Iteration 327, scale 0 px : 235.18 mJy at 2937,1497
(11) Iteration 329, scale 89 px : -249.65 mJy at 2937,1501
(10) Iteration 331, scale 6 px : 233.5 mJy at 2935,1507
(9) Iteration 332, scale 89 px : -238.92 mJy at 2937,1501
(8) Iteration 334, scale 11 px : 227.57 mJy at 94,657
(7) Iteration 336, scale 44 px : 225.47 mJy at 1352,1657
(6) Iteration 339, scale 44 px : 219.67 mJy at 499,3666
Minor loop finished, continuing cleaning after inversion/prediction round.
Assigning from 1 to 1 channels...
== Converting model image to visibilities ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Predicting 96600 rows...
Writing...
== Constructing image ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Loading data in memory...
Gridding 96600 rows...
Gridded visibility count: 3.02866e+06
== Deconvolving (3) ==
Estimated standard deviation of background noise: 812.08 µJy
Scale info:
- Scale 0, bias factor=1, psfpeak=1, gain=0.1, kernel peak=0.163278
- Scale 6, bias factor=1.7, psfpeak=0.714823, gain=0.139895, kernel peak=0.0760727
- Scale 11, bias factor=2.8, psfpeak=0.515436, gain=0.19401, kernel peak=0.0240774
- Scale 22, bias factor=4.6, psfpeak=0.340843, gain=0.29339, kernel peak=0.00688496
- Scale 44, bias factor=7.7, psfpeak=0.207038, gain=0.483004, kernel peak=0.00199442
- Scale 89, bias factor=12.9, psfpeak=0.102063, gain=0.97979, kernel peak=0.000539684
- Scale 177, bias factor=21.4, psfpeak=0.0483205, gain=2.06951, kernel peak=0.000140582
- Scale 355, bias factor=35.7, psfpeak=0.0141691, gain=7.0576, kernel peak=3.55142e-05
- Scale 710, bias factor=59.5, psfpeak=0.0036218, gain=27.6106, kernel peak=8.9732e-06
- Scale 1419, bias factor=99.2, psfpeak=0.000918587, gain=108.863, kernel peak=2.25087e-06
RMS per scale: {0: 1.59 mJy, 6: 1.47 mJy, 11: 1.36 mJy, 22: 1.18 mJy, 44: 983.56 µJy, 89: 785.48 µJy, 177: 540.58 µJy, 355: 313.08 µJy, 710: 193.29 µJy, 1419: 134.57 µJy}
Starting multi-scale cleaning. Start peak=222.27 mJy, major iteration threshold=33.34 mJy
Iteration 367, scale 6 px : 231.4 mJy at 2935,1507
Iteration 377, scale 11 px : -223.04 mJy at 2935,1514
Iteration 388, scale 0 px : 200.76 mJy at 3955,1206
Iteration 398, scale 44 px : -276.91 mJy at 2938,1498
Iteration 401, scale 44 px : -220.7 mJy at 2938,1498
Iteration 410, scale 11 px : 178.27 mJy at 3468,2316
Iteration 459, scale 89 px : -194.17 mJy at 3956,1205
Iteration 462, scale 89 px : 155.3 mJy at 1514,3695
Iteration 483, scale 44 px : 173.05 mJy at 1914,4067
Iteration 501, scale 0 px : 170.32 mJy at 2937,1497
Iteration 511, scale 6 px : 139.07 mJy at 2025,2437
Iteration 537, scale 44 px : -216.6 mJy at 2937,1502
Iteration 540, scale 44 px : -172.63 mJy at 2937,1502
Iteration 545, scale 22 px : 153.18 mJy at 655,951
Iteration 582, scale 44 px : -133.99 mJy at 3957,1204
Iteration 624, scale 89 px : -146.81 mJy at 52,2155
Iteration 631, scale 0 px : 146.52 mJy at 2937,1497
Iteration 641, scale 11 px : -141.04 mJy at 2929,1499
Iteration 655, scale 11 px : 118.13 mJy at 2936,1505
Iteration 725, scale 89 px : -145.42 mJy at 2639,3132
Iteration 734, scale 177 px : -123.61 mJy at 3484,2289
Iteration 741, scale 0 px : 117.6 mJy at 2638,3132
Iteration 760, scale 44 px : -164.5 mJy at 3956,1206
Iteration 769, scale 89 px : -155.07 mJy at 53,2156
Iteration 773, scale 89 px : -123.05 mJy at 53,2156
Iteration 790, scale 44 px : -130.03 mJy at 2937,1501
Iteration 800, scale 44 px : 113.84 mJy at 2909,1505
Iteration 839, scale 22 px : 99.4 mJy at 2915,1497
Iteration 900, scale 6 px : 111.6 mJy at 2937,1499
Iteration 908, scale 0 px : 101.53 mJy at 2639,3132
Iteration 926, scale 89 px : -141.96 mJy at 53,2156
Iteration 930, scale 89 px : -112.82 mJy at 2638,3133
Iteration 944, scale 11 px : -114.1 mJy at 2934,1513
Iteration 952, scale 11 px : -90.78 mJy at 2938,1491
Iteration 996, scale 177 px : -102.03 mJy at 3480,2295
Iteration 1005, scale 44 px : -99.19 mJy at 2638,3133
Iteration 1028, scale 6 px : 93.11 mJy at 2935,1507
Iteration 1036, scale 89 px : -91.46 mJy at 2023,2436
Iteration 1053, scale 89 px : -72.87 mJy at 94,656
Iteration 1098, scale 44 px : -120.28 mJy at 2937,1502
Iteration 1101, scale 44 px : -95.87 mJy at 2937,1502
Iteration 1109, scale 22 px : 83.5 mJy at 2958,1506
Iteration 1158, scale 0 px : 97.27 mJy at 2937,1501
Iteration 1170, scale 0 px : 76.28 mJy at 2937,1497
Iteration 1195, scale 44 px : -167.88 mJy at 2937,1502
Iteration 1199, scale 44 px : -133.79 mJy at 2937,1502
Iteration 1209, scale 44 px : -106.63 mJy at 2937,1502
Iteration 1222, scale 44 px : -85.01 mJy at 2937,1502
Iteration 1250, scale 6 px : 78.65 mJy at 2935,1507
Iteration 1259, scale 44 px : -101.25 mJy at 2937,1503
Iteration 1262, scale 44 px : -80.7 mJy at 2937,1503
Iteration 1288, scale 11 px : 70.73 mJy at 2114,3314
Iteration 1354, scale 0 px : 79.08 mJy at 2937,1501
Iteration 1365, scale 6 px : -64.67 mJy at 2932,1501
Iteration 1390, scale 44 px : -84.8 mJy at 2938,1501
Iteration 1410, scale 177 px : -80.07 mJy at 3476,2301
Iteration 1418, scale 177 px : -62.4 mJy at 2024,2435
Iteration 1437, scale 44 px : -85.33 mJy at 2938,1501
Iteration 1440, scale 22 px : -68.52 mJy at 2945,1496
Iteration 1496, scale 0 px : 71.61 mJy at 2937,1501
Iteration 1509, scale 89 px : -67.33 mJy at 93,656
Iteration 1525, scale 44 px : -96.61 mJy at 2937,1501
Iteration 1531, scale 44 px : -76.98 mJy at 2937,1501
Iteration 1542, scale 44 px : -61.35 mJy at 2937,1501
Iteration 1634, scale 0 px : 64.39 mJy at 2937,1501
Iteration 1652, scale 11 px : -65.25 mJy at 2944,1500
Iteration 1681, scale 11 px : -52.13 mJy at 3955,1212
Iteration 1788, scale 89 px : -62.67 mJy at 2024,2437
Iteration 1800, scale 0 px : 60.53 mJy at 2938,1497
Iteration 1816, scale 44 px : -83.63 mJy at 2937,1501
Iteration 1819, scale 44 px : -66.65 mJy at 2937,1501
Iteration 1839, scale 22 px : -61.98 mJy at 3956,1207
Iteration 1849, scale 22 px : 49.89 mJy at 659,938
Iteration 1958, scale 6 px : 55.29 mJy at 2936,1507
Iteration 1969, scale 44 px : -65.88 mJy at 2936,1503
Iteration 1972, scale 44 px : -52.51 mJy at 2936,1503
Iteration 2013, scale 0 px : 54.39 mJy at 2937,1501
Iteration 2033, scale 89 px : 48.91 mJy at 2230,3540
Iteration 2058, scale 11 px : -57.31 mJy at 2931,1500
Iteration 2068, scale 11 px : -44.85 mJy at 2931,1500
Iteration 2140, scale 0 px : 50.9 mJy at 2937,1507
Iteration 2158, scale 44 px : -70.54 mJy at 2937,1502
Iteration 2162, scale 44 px : -56.21 mJy at 2937,1502
Iteration 2181, scale 44 px : 46.03 mJy at 2961,1490
Iteration 2274, scale 22 px : -49.74 mJy at 3955,1206
Iteration 2282, scale 0 px : 45.95 mJy at 2937,1497
Iteration 2312, scale 6 px : 40.17 mJy at 3261,1842
Subminor loop is near minor loop threshold. Initiating countdown.
(14) Iteration 2343, scale 44 px : -52.51 mJy at 3255,1842
Iteration 2359, scale 89 px : -48.4 mJy at 1249,2052
Iteration 2365, scale 22 px : -48.27 mJy at 3955,1207
Iteration 2382, scale 22 px : 38.79 mJy at 2957,1503
(13) Iteration 2471, scale 177 px : 43.9 mJy at 3960,1199
Iteration 2487, scale 0 px : 43.08 mJy at 2937,1497
Iteration 2504, scale 44 px : -65.43 mJy at 2937,1502
Iteration 2507, scale 44 px : -52.15 mJy at 2937,1502
Iteration 2517, scale 44 px : -41.55 mJy at 2937,1502
(12) Iteration 2579, scale 6 px : 40.45 mJy at 2936,1507
(11) Iteration 2588, scale 11 px : -39.99 mJy at 2940,1512
(10) Iteration 2606, scale 89 px : -37.18 mJy at 1349,1648
(9) Iteration 2621, scale 0 px : 38.36 mJy at 53,2155
(8) Iteration 2636, scale 44 px : -53.94 mJy at 2937,1502
Iteration 2640, scale 44 px : -42.99 mJy at 2937,1502
Iteration 2654, scale 44 px : 35.93 mJy at 2948,1526
(7) Iteration 2670, scale 22 px : -46.53 mJy at 3955,1207
Iteration 2678, scale 22 px : 37.14 mJy at 2915,1509
(6) Iteration 2688, scale 177 px : 40.3 mJy at 3960,1201
(5) Iteration 2697, scale 0 px : 36.29 mJy at 3954,1207
(4) Iteration 2704, scale 44 px : -46.86 mJy at 2937,1502
Iteration 2707, scale 22 px : -44.17 mJy at 53,2156
Iteration 2715, scale 22 px : 34.67 mJy at 2956,1503
(3) Iteration 2721, scale 177 px : 36.72 mJy at 2636,3131
(2) Iteration 2725, scale 44 px : -36.55 mJy at 2025,2437
(1) Iteration 2731, scale 0 px : 34.89 mJy at 2937,1507
(0) Iteration 2735, scale 44 px : -42.11 mJy at 2937,1502
Minor loop finished, continuing cleaning after inversion/prediction round.
Assigning from 1 to 1 channels...
== Converting model image to visibilities ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Predicting 96600 rows...
Writing...
== Constructing image ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Loading data in memory...
Gridding 96600 rows...
Gridded visibility count: 3.02866e+06
== Deconvolving (4) ==
Estimated standard deviation of background noise: 463.74 µJy
Scale info:
- Scale 0, bias factor=1, psfpeak=1, gain=0.1, kernel peak=0.163278
- Scale 6, bias factor=1.7, psfpeak=0.714823, gain=0.139895, kernel peak=0.0760727
- Scale 11, bias factor=2.8, psfpeak=0.515436, gain=0.19401, kernel peak=0.0240774
- Scale 22, bias factor=4.6, psfpeak=0.340843, gain=0.29339, kernel peak=0.00688496
- Scale 44, bias factor=7.7, psfpeak=0.207038, gain=0.483004, kernel peak=0.00199442
- Scale 89, bias factor=12.9, psfpeak=0.102063, gain=0.97979, kernel peak=0.000539684
- Scale 177, bias factor=21.4, psfpeak=0.0483205, gain=2.06951, kernel peak=0.000140582
- Scale 355, bias factor=35.7, psfpeak=0.0141691, gain=7.0576, kernel peak=3.55142e-05
- Scale 710, bias factor=59.5, psfpeak=0.0036218, gain=27.6106, kernel peak=8.9732e-06
- Scale 1419, bias factor=99.2, psfpeak=0.000918587, gain=108.863, kernel peak=2.25087e-06
RMS per scale: {0: 649.64 µJy, 6: 584.39 µJy, 11: 536.47 ��Jy, 22: 471.93 µJy, 44: 384.58 µJy, 89: 300.56 µJy, 177: 207.12 µJy, 355: 129.31 µJy, 710: 90.15 µJy, 1419: 69.41 µJy}
Starting multi-scale cleaning. Start peak=-42.7 mJy, major iteration threshold=6.4 mJy
Iteration 2740, scale 22 px : -41.41 mJy at 3954,1207
Iteration 2753, scale 22 px : -33.97 mJy at 2929,1510
Iteration 2929, scale 177 px : 39.98 mJy at 2636,3132
Iteration 2937, scale 0 px : 37.33 mJy at 2933,1506
Iteration 2970, scale 44 px : -51.14 mJy at 2936,1503
Iteration 2974, scale 44 px : -40.76 mJy at 2936,1503
Iteration 2990, scale 89 px : -35.64 mJy at 1249,2050
Iteration 3011, scale 11 px : 36.09 mJy at 1224,2053
Iteration 3039, scale 0 px : 33.37 mJy at 2937,1502
Iteration 3088, scale 44 px : -41.82 mJy at 2937,1502
Iteration 3100, scale 44 px : -33.32 mJy at 2937,1502
Iteration 3200, scale 11 px : -32.75 mJy at 3959,1206
Iteration 3252, scale 6 px : 31.58 mJy at 3261,1842
Iteration 3274, scale 177 px : -35.22 mJy at 1349,1660
Iteration 3283, scale 177 px : 28.02 mJy at 2635,3133
Iteration 3334, scale 22 px : -35.9 mJy at 2639,3133
Iteration 3349, scale 44 px : -32.51 mJy at 3464,2321
Iteration 3382, scale 89 px : 27.24 mJy at 1895,3873
Iteration 3442, scale 22 px : -31.24 mJy at 3954,1207
Iteration 3485, scale 0 px : 31.51 mJy at 2639,3133
Iteration 3511, scale 11 px : -32.26 mJy at 59,2155
Iteration 3536, scale 11 px : 26.08 mJy at 2916,1511
Iteration 3682, scale 44 px : 30.45 mJy at 69,2140
Iteration 3714, scale 6 px : 29.66 mJy at 2936,1507
Iteration 3728, scale 0 px : 27.6 mJy at 53,2154
Iteration 3789, scale 22 px : -35.63 mJy at 3954,1207
Iteration 3801, scale 22 px : -28.22 mJy at 2942,1495
Iteration 3862, scale 22 px : 23.92 mJy at 2921,1523
Iteration 4056, scale 89 px : 29.26 mJy at 3952,1206
Iteration 4076, scale 0 px : 26.14 mJy at 2639,3132
Iteration 4115, scale 44 px : -35.92 mJy at 2937,1502
Iteration 4118, scale 44 px : -28.63 mJy at 2937,1502
Iteration 4137, scale 6 px : -23.12 mJy at 3958,1205
Iteration 4212, scale 89 px : -31.73 mJy at 1351,1653
Iteration 4222, scale 89 px : -25.18 mJy at 1351,1653
Iteration 4273, scale 44 px : -26.5 mJy at 3257,1842
Iteration 4283, scale 44 px : -21.12 mJy at 3257,1842
Iteration 4469, scale 22 px : -27.65 mJy at 2639,3133
Iteration 4479, scale 22 px : -21.95 mJy at 3954,1207
Iteration 4545, scale 0 px : 24.31 mJy at 2638,3132
Iteration 4577, scale 11 px : -24.6 mJy at 2942,1503
Iteration 4598, scale 11 px : 20.36 mJy at 3270,1846
Iteration 4727, scale 89 px : -23.97 mJy at 844,3327
Iteration 4750, scale 177 px : 21.86 mJy at 99,660
Iteration 4765, scale 0 px : 21.63 mJy at 2933,1507
Iteration 4818, scale 44 px : -32.25 mJy at 2936,1502
Iteration 4821, scale 44 px : -25.7 mJy at 2936,1502
Iteration 4832, scale 6 px : -20.99 mJy at 2932,1502
Iteration 4850, scale 44 px : -23.78 mJy at 3258,1842
Iteration 4872, scale 89 px : -21.63 mJy at 844,3328
Iteration 4905, scale 0 px : 20.24 mJy at 2937,1496
Iteration 4956, scale 44 px : -23.59 mJy at 3729,1066
Iteration 4976, scale 44 px : -18.81 mJy at 3729,1066
Iteration 5155, scale 22 px : -27.01 mJy at 2639,3133
Iteration 5164, scale 22 px : -21.4 mJy at 54,2157
Iteration 5192, scale 22 px : 17.25 mJy at 660,935
Iteration 5414, scale 89 px : 21.48 mJy at 3952,1207
Iteration 5422, scale 177 px : 18.49 mJy at 95,660
Iteration 5444, scale 0 px : 18.93 mJy at 55,2159
Iteration 5503, scale 11 px : -19.66 mJy at 2635,3133
Iteration 5537, scale 89 px : -20.66 mJy at 1234,2052
Iteration 5553, scale 89 px : -16.39 mJy at 1234,2052
Iteration 5659, scale 44 px : -17.83 mJy at 499,3667
Iteration 5681, scale 11 px : 17.51 mJy at 1224,2053
Iteration 5763, scale 6 px : 17.84 mJy at 3261,1842
Iteration 5802, scale 0 px : 16.88 mJy at 3955,1206
Iteration 5876, scale 0 px : -15.16 mJy at 2635,3132
Iteration 5986, scale 44 px : -23.62 mJy at 652,960
Iteration 6006, scale 22 px : -22.71 mJy at 3192,2129
Iteration 6011, scale 22 px : -17.93 mJy at 645,960
Iteration 6051, scale 44 px : -18.51 mJy at 1914,4069
Iteration 6098, scale 177 px : 16.44 mJy at 96,660
Iteration 6122, scale 22 px : -15.56 mJy at 2639,3133
Iteration 6288, scale 44 px : 15.76 mJy at 2642,3114
Iteration 6389, scale 11 px : 14.91 mJy at 851,3320
Iteration 6487, scale 6 px : 15.06 mJy at 3261,1842
Iteration 6518, scale 1419 px : 14.45 mJy at 2405,2346
Iteration 6522, scale 89 px : -18.88 mJy at 846,3326
Iteration 6538, scale 89 px : -15.08 mJy at 494,1219
Iteration 6590, scale 22 px : -14.8 mJy at 2639,3133
Iteration 6642, scale 177 px : 13.81 mJy at 2020,2443
Iteration 6676, scale 44 px : -15.12 mJy at 1914,4068
Iteration 6711, scale 44 px : -12.06 mJy at 1527,3677
Iteration 7141, scale 0 px : 14.44 mJy at 3192,2129
Iteration 7197, scale 22 px : -18.89 mJy at 3192,2130
Iteration 7211, scale 22 px : -14.78 mJy at 94,658
Iteration 7245, scale 11 px : -13.27 mJy at 3269,1839
Iteration 7374, scale 0 px : 13.49 mJy at 55,2158
Iteration 7437, scale 6 px : -13.86 mJy at 2942,1497
Iteration 7458, scale 6 px : 12.4 mJy at 2927,1498
Iteration 7544, scale 89 px : 16.67 mJy at 3953,1208
Iteration 7567, scale 89 px : -13.32 mJy at 419,2388
Iteration 7619, scale 22 px : -14.35 mJy at 3727,1066
Iteration 7643, scale 11 px : -12.63 mJy at 3269,1839
Iteration 7712, scale 177 px : 13.06 mJy at 2025,2443
Iteration 7724, scale 0 px : 12.54 mJy at 55,2158
Iteration 7773, scale 22 px : -17.22 mJy at 54,2157
Iteration 7779, scale 22 px : -13.7 mJy at 3192,2129
Iteration 7809, scale 22 px : 11.3 mJy at 3480,2292
Iteration 8116, scale 89 px : 14.07 mJy at 92,658
Iteration 8125, scale 89 px : -11.18 mJy at 418,2387
Iteration 8236, scale 44 px : -12.36 mJy at 1913,4067
Iteration 8253, scale 0 px : 11.69 mJy at 55,2158
Iteration 8347, scale 11 px : -12.74 mJy at 50,2153
Iteration 8378, scale 11 px : -10.29 mJy at 840,3321
Iteration 8674, scale 177 px : 13.3 mJy at 2023,2439
Iteration 8678, scale 177 px : 10.31 mJy at 2023,2439
Iteration 8737, scale 44 px : -11.23 mJy at 3310,499
Iteration 8814, scale 6 px : 10.9 mJy at 3261,1842
Iteration 8872, scale 22 px : -10.96 mJy at 3254,1841
Iteration 8916, scale 0 px : 10.75 mJy at 53,2154
Iteration 8995, scale 1419 px : 10.19 mJy at 2489,1900
Iteration 9004, scale 0 px : -9.46 mJy at 94,661
Iteration 9182, scale 44 px : -14.43 mJy at 3263,1844
Iteration 9209, scale 89 px : -13.49 mJy at 498,1219
Iteration 9225, scale 22 px : -12.07 mJy at 3193,2129
Iteration 9243, scale 44 px : -11.48 mJy at 3263,1844
Iteration 9294, scale 89 px : -10.77 mJy at 3767,3428
Iteration 9347, scale 11 px : -9.99 mJy at 3268,1839
Iteration 9431, scale 44 px : -9.94 mJy at 2971,1484
Iteration 9638, scale 22 px : -10 mJy at 3193,2129
Iteration 9730, scale 22 px : 8.23 mJy at 3176,2137
Iteration 10393, scale 6 px : 9.28 mJy at 651,964
Iteration 10468, scale 89 px : -10.67 mJy at 167,2941
Iteration 10492, scale 44 px : -10.48 mJy at 3262,1843
Iteration 10502, scale 11 px : -8.98 mJy at 3268,1839
Iteration 10567, scale 177 px : 9.17 mJy at 2031,2444
Iteration 10603, scale 0 px : 9.1 mJy at 3193,2130
Iteration 10660, scale 44 px : -10.22 mJy at 2113,3315
Iteration 10694, scale 89 px : -9.3 mJy at 481,2432
Iteration 10784, scale 6 px : -8.55 mJy at 2942,1497
Iteration 10872, scale 44 px : -9.78 mJy at 841,3330
Iteration 10899, scale 44 px : 7.82 mJy at 2565,1977
Subminor loop is near minor loop threshold. Initiating countdown.
(14) Iteration 11286, scale 0 px : 8.41 mJy at 2937,1499
Iteration 11376, scale 11 px : -8.88 mJy at 91,657
Iteration 11436, scale 89 px : -8.13 mJy at 499,1218
Iteration 11574, scale 6 px : -8.05 mJy at 2941,1499
Iteration 11646, scale 0 px : 7.9 mJy at 2937,1496
(13) Iteration 11698, scale 11 px : -8.11 mJy at 2639,3133
Iteration 11858, scale 710 px : 7.61 mJy at 1733,2281
(12) Iteration 11864, scale 22 px : -8.56 mJy at 3310,500
Iteration 11880, scale 177 px : 8.37 mJy at 2027,2443
Iteration 11894, scale 177 px : 6.65 mJy at 2382,1022
(11) Iteration 11908, scale 44 px : -8.22 mJy at 3761,2213
Iteration 11947, scale 89 px : 7.68 mJy at 93,658
(10) Iteration 11999, scale 22 px : -7.68 mJy at 3193,2129
(9) Iteration 12047, scale 6 px : -7.15 mJy at 2932,1502
(8) Iteration 12075, scale 89 px : 7.83 mJy at 3195,2130
(7) Iteration 12094, scale 0 px : 7.26 mJy at 2937,1499
(6) Iteration 12121, scale 22 px : -8.87 mJy at 3193,2129
Iteration 12134, scale 22 px : -7.06 mJy at 196,964
(5) Iteration 12166, scale 44 px : -7.61 mJy at 3116,2098
(4) Iteration 12197, scale 11 px : -7.42 mJy at 2638,3133
(3) Iteration 12234, scale 89 px : 7.62 mJy at 93,658
(2) Iteration 12248, scale 6 px : -7.02 mJy at 2941,1499
(1) Iteration 12255, scale 0 px : 6.92 mJy at 2937,1499
(0) Iteration 12265, scale 22 px : -7.9 mJy at 3193,2129
Minor loop finished, continuing cleaning after inversion/prediction round.
Assigning from 1 to 1 channels...
== Converting model image to visibilities ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Predicting 96600 rows...
Writing...
== Constructing image ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Loading data in memory...
Gridding 96600 rows...
Gridded visibility count: 3.02866e+06
== Deconvolving (5) ==
Estimated standard deviation of background noise: 358.19 µJy
Scale info:
- Scale 0, bias factor=1, psfpeak=1, gain=0.1, kernel peak=0.163278
- Scale 6, bias factor=1.7, psfpeak=0.714823, gain=0.139895, kernel peak=0.0760727
- Scale 11, bias factor=2.8, psfpeak=0.515436, gain=0.19401, kernel peak=0.0240774
- Scale 22, bias factor=4.6, psfpeak=0.340843, gain=0.29339, kernel peak=0.00688496
- Scale 44, bias factor=7.7, psfpeak=0.207038, gain=0.483004, kernel peak=0.00199442
- Scale 89, bias factor=12.9, psfpeak=0.102063, gain=0.97979, kernel peak=0.000539684
- Scale 177, bias factor=21.4, psfpeak=0.0483205, gain=2.06951, kernel peak=0.000140582
- Scale 355, bias factor=35.7, psfpeak=0.0141691, gain=7.0576, kernel peak=3.55142e-05
- Scale 710, bias factor=59.5, psfpeak=0.0036218, gain=27.6106, kernel peak=8.9732e-06
- Scale 1419, bias factor=99.2, psfpeak=0.000918587, gain=108.863, kernel peak=2.25087e-06
RMS per scale: {0: 386.1 µJy, 6: 348.22 µJy, 11: 316.22 µJy, 22: 270.82 µJy, 44: 211.11 µJy, 89: 151.11 µJy, 177: 92.24 µJy, 355: 58.64 µJy, 710: 43.91 µJy, 1419: 32.63 µJy}
Starting multi-scale cleaning. Start peak=-8.01 mJy, major iteration threshold=1.2 mJy
Iteration 12327, scale 11 px : -7.48 mJy at 2638,3133
Iteration 12455, scale 177 px : 7.75 mJy at 2026,2440
Iteration 12473, scale 44 px : 7.58 mJy at 3497,2256
Iteration 12634, scale 6 px : -6.93 mJy at 2933,1498
Iteration 12798, scale 44 px : -8.45 mJy at 652,961
Iteration 12814, scale 89 px : 7.66 mJy at 52,2157
Iteration 12888, scale 0 px : 7.59 mJy at 2936,1501
Iteration 12919, scale 22 px : -7.65 mJy at 54,2157
Iteration 13000, scale 0 px : -6.7 mJy at 2940,1504
Iteration 13195, scale 44 px : -8.43 mJy at 652,961
Iteration 13238, scale 22 px : -7.72 mJy at 3193,2130
Iteration 13274, scale 89 px : -7.15 mJy at 498,208
Iteration 13427, scale 11 px : 6.74 mJy at 2950,1511
Iteration 13705, scale 177 px : 7.21 mJy at 2122,3307
Iteration 13725, scale 22 px : 6.62 mJy at 3506,2278
Iteration 14066, scale 44 px : -6.23 mJy at 1534,3680
Iteration 14673, scale 6 px : 6.17 mJy at 1223,2053
Iteration 14831, scale 89 px : -6.85 mJy at 1223,2053
Iteration 14889, scale 11 px : -6.02 mJy at 843,3335
Iteration 15178, scale 710 px : -6.12 mJy at 2603,3740
Iteration 15198, scale 0 px : 6.12 mJy at 2115,3315
Iteration 15334, scale 22 px : -7.51 mJy at 2114,3315
Iteration 15354, scale 22 px : -5.95 mJy at 3193,2130
Iteration 15748, scale 177 px : 6.07 mJy at 2120,3306
Iteration 15848, scale 89 px : -5.98 mJy at 3744,883
Iteration 16153, scale 11 px : -5.65 mJy at 91,657
Iteration 16402, scale 6 px : 5.5 mJy at 165,2938
Iteration 16520, scale 44 px : -6.75 mJy at 278,871
Iteration 16550, scale 44 px : -5.39 mJy at 554,2165
Iteration 17433, scale 22 px : -5.81 mJy at 2025,2439
Iteration 17509, scale 0 px : 5.68 mJy at 2938,1490
Iteration 17628, scale 11 px : -5.84 mJy at 3190,2131
Iteration 17688, scale 0 px : -5.07 mJy at 2934,1498
Iteration 17936, scale 44 px : -7.42 mJy at 502,1221
Iteration 17948, scale 22 px : -6.97 mJy at 1954,3804
Iteration 17968, scale 11 px : 6.36 mJy at 2923,1504
Iteration 17976, scale 89 px : -6.05 mJy at 1153,1234
Iteration 18016, scale 44 px : -5.92 mJy at 169,2941
Iteration 18086, scale 22 px : -5.58 mJy at 2850,98
Iteration 18286, scale 11 px : 5.36 mJy at 2923,1504
Iteration 18461, scale 89 px : 5.6 mJy at 3198,2129
Iteration 18622, scale 177 px : -5.29 mJy at 2076,3877
Iteration 18711, scale 22 px : 4.74 mJy at 2993,1543
Iteration 19939, scale 44 px : -4.95 mJy at 278,870
Iteration 20000, scale 6 px : 4.91 mJy at 2948,1499
Cleaning finished because maximum number of iterations was reached.
Auto-masking threshold reached; continuing next major iteration with deeper threshold and mask.
Maximum number of minor deconvolution iterations was reached: not continuing deconvolution.
Assigning from 1 to 1 channels...
Writing model image...
== Converting model image to visibilities ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Predicting 96600 rows...
Writing...
== Constructing image ==
Opening reordered part 0 spw 0 for woden_P18Hetdex03_band01.ms
Loading data in memory...
Gridding 96600 rows...
Gridded visibility count: 3.02866e+06
5 major iterations were performed.
Rendering sources to restored image (beam=6''-6'', PA=0 masec)... DONE
Writing restored image... DONE
Multi-scale cleaning summary:
- Scale 0 px, nr of components cleaned: 2346 (3.25 Jy)
- Scale 6 px, nr of components cleaned: 1225 (1.23 Jy)
- Scale 11 px, nr of components cleaned: 3315 (2.92 Jy)
- Scale 22 px, nr of components cleaned: 5509 (6.27 Jy)
- Scale 44 px, nr of components cleaned: 4887 (5.17 Jy)
- Scale 89 px, nr of components cleaned: 2078 (-385.45 mJy)
- Scale 177 px, nr of components cleaned: 601 (271.23 mJy)
- Scale 355 px, nr of components cleaned: 0 (0 Jy)
- Scale 710 px, nr of components cleaned: 26 (3.07 mJy)
- Scale 1419 px, nr of components cleaned: 13 (147.31 mJy)
Total: 20000 components (18.87 Jy)
Inversion: 00:00:50.462500, prediction: 00:03:45.389119, deconvolution: 00:17:53.891122
Cleaning up temporary files...
0
I’m sure this isn’t an optimal way to do the CLEANing, and I might be able to go deeper, but this is good enough for a comparison. Let’s see what we get!
fig = plt.figure(figsize=(9, 11))
ax1 = fig.add_subplot(211, projection=wcs)
ax1.imshow(data, origin='lower', cmap='Blues', vmin=0, vmax=1e-3)
half_width=2048
ax1.set_xlim(cent_x - half_width, cent_x + half_width)
ax1.set_ylim(cent_y - half_width, cent_y + half_width)
vmax = 5e-3
im = ax1.imshow(data, origin='lower', cmap='Blues', vmin=0, vmax=vmax)
plt.colorbar(im, ax=ax1, label='Flux (Jy/beam)')
ax1.set_title('LoTSS mosaic')
with fits.open('woden_P18Hetdex03-image.fits') as hdu:
wcs_woden = WCS(hdu[0].header).celestial
data_woden = np.squeeze(hdu[0].data)
ax2 = fig.add_subplot(212, projection=wcs_woden)
im = ax2.imshow(data_woden, origin='lower', cmap='Blues', vmin=0, vmax=vmax)
plt.colorbar(im, ax=ax2, label='Flux (Jy/beam)')
ax2.set_title('Imaged WODEN sim')
ax1.set_xlabel(' ')
ax1.set_ylabel('Dec')
ax1.set_xticklabels([])
ax2.set_xlabel('RA')
ax2.set_ylabel('Dec')
# plt.tight_layout()
plt.show()
WARNING: FITSFixedWarning: 'datfix' made the change 'Set MJD-OBS to 60626.130508 from DATE-OBS'. [astropy.wcs.wcs]
OK, so obviously the CLEAN on the WODEN sim isn’t the greatset. This image is not beam corrected, so sources towards the edge of the field appear dimmer. And of course I cropped the sky model to the cutout size, so we’re missing some sources from the corners. But overall I reckon this is a decent example of what you can do, and we’re matching reality pretty well.