Pre-commissioning data (1318345216)

VCSBeam version

Required: >= v2.18.8

# On Garrawarla, test vcsbeam version
$ module use /pawsey/mwa/software/python3/modulefiles
$ module load vcsbeam
$ make_mwa_tied_array_beam -V
MWA Beamformer v2.18.8_99df2a4

Offline FinePFB

$ cd /astro/mwavcs/asvo/251861
$ wget -O 1318345216.fits http://ws.mwatelescope.org/metadata/fits?obs_id=1318345216
$ cd /astro/mwavcs/vcs/1318345216/combined
$ for freq in {109..120}
do
    sed "s/FREQ/${freq}/" < make_legacy.sbatch > make_legacy_ch${freq}.sbatch
    sbatch make_legacy_ch${freq}.sbatch
done
make_legacy.sbatch
#!/bin/bash -l

#SBATCH --nodes=1
#SBATCH --cpus-per-task=1
#SBATCH --ntasks-per-node=1
#SBATCH --mem=370gb
#SBATCH --partition=gpuq
#SBATCH --gres=gpu:1
#SBATCH --time=01:00:00
#SBATCH --account=mwavcs
#SBATCH --export=NONE

module use /pawsey/mwa/software/python3/modulefiles
module load vcsbeam
module load openmpi-ucx-gpu

DATAPATH=/astro/mwavcs/asvo/251861

srun -N 1 -n 1 fine_pfb_offline -m $DATAPATH/1318345216.metafits -b 1318345216 -T 600 -f FREQ -d $DATAPATH

Incoherent Beam

$ cd /astro/mwavcs/vcs/1318345216/vcsbeam/incoh
$ sbatch vcsbeam_incoh.sbatch
/astro/mwavcs/vcs/1318345216/vcsbeam/incoh/vcsbeam_incoh.sbatch
#!/bin/bash -l

#SBATCH --nodes=12
#SBATCH --ntasks-per-node=1
#SBATCH --cpus-per-task=1
#SBATCH --mem=370gb
#SBATCH --partition=gpuq
#SBATCH --gres=gpu:1
#SBATCH --time=00:30:00
#SBATCH --account=mwavcs
#SBATCH --nice=0
#SBATCH --export=NONE
 
module use /pawsey/mwa/software/python3/modulefiles
module load vcsbeam
 
srun -N 12 -n 12 make_mwa_incoh_beam \
    -m /astro/mwavcs/vcs/1318345216/combined/1318345216_legacy.metafits \
    -b 1318345216 \
    -T 600 \
    -f 109 \
    -d /astro/mwavcs/vcs/1318345216/combined \
    -o incoh

After beamforming finishes, fold on B0031-07:

$ module load singularity
$ /pawsey/mwa/singularity/presto/presto.sif prepfold -psr J0034-0721 -nosearch -nodmsearch incoh*.fits

The pulsar is clearly there, but there is a lot of RFI. After some experimenting, I find that the last 38% or so is RFI free:

$ pawsey/mwa/singularity/presto/presto.sif prepfold -psr J0034-0721 -start 0.62 -nosearch -nodmsearch incoh*.fits

Therefore, I should only use this section of the data to get a calibration solution.

Calibration

Offline Correlator

$ cd /astro/mwavcs/vcs/1318345216/cal/1318345216/vis
$ for freq in {109..120}
do
    sed "s/FREQ/${freq}/" < offline_correlate.sbatch > offline_correlate_${freq}.sbatch
    sbatch offline_correlate_${freq}.sbatch
done
offline_correlate.sbatch
#!/bin/bash -l

#SBATCH --nodes=1
#SBATCH --mem=370gb
#SBATCH --partition=gpuq
#SBATCH --gres=gpu:1
#SBATCH --time=01:00:00
#SBATCH --account=mwavcs
#SBATCH --export=NONE

module use /pawsey/mwa/software/python3/modulefiles
module load offline_correlator

for t in {0..599}
do

    gpssecond=$(echo "$t + 1318345216" | bc)
    gpubox=$(echo "FREQ - 108" | bc)

    INPUT_DATA_FILE=/astro/mwavcs/vcs/1318345216/combined/1318345216_${gpssecond}_chFREQ.dat
    START_SECOND=${gpssecond}
    DUMPS_PER_SECOND=1 # This sets the output time resolution
                    # (e.g. 20 --> 1/20 = 0.05s = 50 ms)
                    # Minimum allowed resolution is 2 ms
    CHANS_TO_AVERAGE=4 # This sets the output frequency resolution
                   # (e.g. 4 --> 4x10 kHz = 40 kHz)
    GPUBOX_CHANNEL_NUMBER=${gpubox} # This should be chosen to "match" the input channel
                         # This is not easy! (mwalib handles this, but at the
                         # moment, offline_correlator is not using mwalib)
    OUTPUT_PREFIX=1318345216 # Output files begin with this

    srun -N 1 -n 1 offline_correlator \
        -d ${INPUT_DATA_FILE} \
        -s ${START_SECOND} \
        -r ${DUMPS_PER_SECOND} \
        -n ${CHANS_TO_AVERAGE} \
        -c ${GPUBOX_CHANNEL_NUMBER} \
        -o ${OUTPUT_PREFIX}

done

RTS

Create source list

Create source list
$ cd /astro/mwavcs/vcs/1318345216/cal/1318345216
$ module load srclists/v1.0.0
$ srclist_by_beam.py -m /astro/mwavcs/vcs/1318345216/1318345216_metafits_ppds.fits -n 1000 -s ${SRCLISTS_DIR}/srclist_pumav3_EoR0aegean_EoR1pietro+ForA.txt

Set up flagged tiles

To find which tiles need to be flagged, find the broken tiles by going to the observation status page (http://ws.mwatelescope.org/observation/obs/?obs_id=1318345216). In the section "Tile errors and flags", you will find the "TileNames" for any tiles that should be flagged. Then, in the metafits file for the observation, you will find the "Input" numbers associated with the X and Y polarisations of each tile. The numbers you need to put in the "flagged_tiles.txt" are the Input numbers divided by two (and possibly rounded down). For example, in 1318345216, Tile064 is listed as broken, and in the metafits file, that tile's polarisations are associated with inputs 144 & 145. This means that the number that goes into flagged_tiles.txt for this tile is 72. In this way, the following list is constructed for this observation.

/astro/mwavcs/vcs/1318345216/cal/1318345216/rts/flagged_tiles.txt
1
12
45
51
60
72
93
94
112

Set up flagged channels

Setting up the flagged channels is more straightforward. As a rule, we always flag the edge channels (80 kHz worth on either side) and the centre channel. Since we have averaged up to 40 kHz when we did the offline correlation step above, that means we will be flagging the outer two channels on either side (as 2 x 40 kHz = 80 kHz) and the single centre channel. Since there are 32 channels in this case, the final list of flagged channels is:

/astro/mwavcs/vcs/1318345216/cal/1318345216/rts/flagged_channels.txt
0
1
16
30
31

Selecting only the last 38% of the observation for calibration

One of the parameters passed to the RTS is the "basename" of the files containing the visibilities. In order to distinguish between the RFI-ridden visibilities and the clean ones, I will create soft links to the clean gpubox files (created in an earlier step) and change the case of the filenames (gpubox → GPUBOX). The first and last filenames are 1318345216_20111011150016_gpubox01_00.fits and 1318345216_20111011151015_gpubox12_00.fits, with the timestamp  in the format YYYYMMDDHHMMSS. To get the last 38%, I need to start 6:12 (mm:ss) into the observation, which means that my first clean file will be 1318345216_20111011150628_gpubox01_00.fits.

Create source list
$ cd /astro/mwavcs/vcs/1318345216/cal/1318345216/vis
$ ls 1318345216_2011101115062[89]_gpubox*.fits 1318345216_201110111506[3-5]?_gpubox*.fits 1318345216_20111011150[7-9]??_gpubox*.fits 1318345216_20111011151???_gpubox*.fits | while read f; do ln -s ${f} $(echo ${f} | tr 'gpubox' 'GPUBOX'); done

After doing this, the RTS ".in" file must be altered so that it's only looking for files with GPUBOX in the filename (see below).

Extra flags

After running the RTS (see below) and checking the solutions (using the python scripts supplied in VCSTools), I found that I also had to add 14 to the list of flagged channels, and 5253, 5459 and 61 to the list of flagged tiles.

/astro/mwavcs/vcs/1318345216/cal/1318345216/rts/flagged_tiles.txt
1
12
45
51
52
53
54
59
60
61
72
93
94
112

Run the RTS

Run the RTS
$ cd /astro/mwavcs/vcs/1318345216/cal/1318345216/rts
$ sbatch /astro/mwavcs/vcs/1318345216/batch/RTS_1318345216.batch


/astro/mwavcs/vcs/1318345216/batch/RTS_1318345216.batch
#!/bin/bash -l

#SBATCH --export=NONE
#SBATCH --output=/astro/mwavcs/vcs/1318345216/batch/RTS_1318345216.out
#SBATCH --account=mwavcs
#SBATCH --clusters=garrawarla
#SBATCH --partition=gpuq
#
#SBATCH --cpus-per-task=1
#SBATCH --mem-per-cpu=10240MB
#SBATCH --nice=0
#SBATCH --chdir=/astro/mwavcs/vcs/1318345216/cal/1318345216/rts
#SBATCH --time=0:45:00
#SBATCH --nodes=13
#SBATCH --cpus-per-gpu=1
#SBATCH --gres=gpu:1

ncpus=1
export OMP_NUM_THREADS=1


module use /pawsey/mwa/software/python3/modulefiles/
module load vcstools/master

module load RTS/master


cd /astro/mwavcs/vcs/1318345216/cal/1318345216/rts
export UCX_MEMTYPE_CACHE=n
srun --export=all -N 13 -n 13 rts_gpu /astro/mwavcs/vcs/1318345216/cal/1318345216/rts/rts_1318345216.in
# ^^^^ 13 = 12 coarse channels (1 node per coarse channel) + 1 master node


/astro/mwavcs/vcs/1318345216/cal/1318345216/rts/rts_1318345216.in
ReadAllFromSingleFile=
BaseFilename=/astro/mwavcs/vcs/1318345216/cal/1318345216/vis/*_GPUBOX
ReadGpuboxDirect=0
UseCorrelatorInput=1

ReadMetafitsFile=1
MetafitsFilename=/astro/mwavcs/vcs/1318345216/1318345216

DoCalibration=
doMWArxCorrections=1
doRawDataCorrections=1
doRFIflagging=0
useFastPrimaryBeamModels=0
generateDIjones=1
applyDIcalibration=1
UsePacketInput=0
UseThreadedVI=1

MaxFrequency=170.24
ObservationFrequencyBase=138.895
ObservationTimeBase=2455846.1252314816
ObservationPointCentreHA=-0.35952189154909175
ObservationPointCentreDec=-5.98757073636307
ChannelBandwidth=0.04
NumberOfChannels=32

CorrDumpsPerCadence=128
CorrDumpTime=1.0
NumberOfIntegrationBins=6
NumberOfIterations=1

StartProcessingAt=0

ArrayPositionLat=-26.7033194
ArrayPositionLong=116.6708152
ArrayNumberOfStations=128

ArrayFile=

SourceCatalogueFile=/astro/mwavcs/vcs/1318345216/cal/1318345216/srclist_pumav3_EoR0aegean_EoR1pietro+ForA_1318345216_patch1000.txt
NumberOfCalibrators=1
NumberOfSourcesToPeel=0
calBaselineMin=20.0
calShortBaselineTaper=40.0
FieldOfViewDegrees=1

Make a "calibration" metafits

In order to be able to use this calibration solution for beamforming, mwalib has to be "tricked" into getting the frequency resolution right (i.e. whatever we set during the offline correlation step). To do this, make a copy of the metafits file and change

FINECHAN → 40 (kHz)

NCHANS → 768

MODE → 'HWLFILES'

I then saved this file to /astro/mwavcs/vcs/1318345216/cal/1318345216_cal.metafits.

(MEMO TO SELF: write a utility script to do this for you.)

Beamform

For the time being, we have to "trick" the beamformer into thinking this is a legacy VCS observation, instead of an MWAX VCS observation. I did this by creating a copy of the metafits file and changing the "MODE" and "NCHANS" fields to 'VOLTAGE_START' and 3072, respectively. [MEMO TO SELF: add an option to "force" the beamformer to treat it as a legacy obs, if you want to beamform from the .dat files produced by the offline PFB.]

Transfer the flagged tiles from the RTS

$ cd /astro/mwavcs/vcs/1318345216/vcsbeam
$ /PATH/TO/rts_flag_ant_to_tilenames.py 1318345216_cal.metafits flagged_tiles.txt > flagged_tilenames.txt
/astro/mwavcs/vcs/1318345216/vcsbeam/flagged_tilenames.txt
HexS31
HexE16
Tile017
Tile091
Tile098
Tile097
Tile096
Tile081
Tile088
Tile087
Tile064
HexE7
HexE6
HexS16


$ cd /astro/mwavcs/vcs/1318345216/vcsbeam
$ echo "00:34:08.8703 -07:21:53.409" > pointings.txt
$ sbatch vcsbeam.sbatch
$ module load singularity
$ /pawsey/mwa/singularity/presto/presto.sif prepfold -psr J0034-0721 -nosearch -nodmsearch C001_1318345216_00:34:08.87_-07:21:53.41_ch109-120_000?.fits