Time delay
To check a possible delay in synchronization between ABBA and APECS, you can use a script similar to :
1 def checkDelay(channel=110,delay=16):
2 azoff = data.getChanData('azoff',channel)
3 flux = data.getChanData('flux', channel)
4 plot(azoff,flux, \
5 labelX='Az offset ["]',labelY='Flux',\
6 caption='White: raw data, Red: after shift correction')
7 plot(azoff[:-delay],flux[delay:],overplot=1,ci=2)
8
9 data.read('43297')
10 data.basePolySubscan (order=3)
11 checkDelay(channel=244,delay=32)
will produce the following plot
You can check the delays on the following scans :
Scans |
Shift |
43295 |
16 |
43296 |
16 |
43297 |
32 |
43298 |
0 |
43299 |
16 |
43300 |
0 |
A possible way to correct for this delay is to use the following function
1 from fortran import fUtilities
2
3 def correctDelay(data,delay=16):
4 scanParam = data.ScanParam
5
6 scanParam.LST = fUtilities.as_column_major_storage(scanParam.LST[:-delay])
7 scanParam.MJD = fUtilities.as_column_major_storage(scanParam.MJD[:-delay])
8 scanParam.Az = fUtilities.as_column_major_storage(scanParam.Az[:-delay])
9 scanParam.El = fUtilities.as_column_major_storage(scanParam.El[:-delay])
10 scanParam.RA = fUtilities.as_column_major_storage(scanParam.RA[:-delay])
11 scanParam.Dec = fUtilities.as_column_major_storage(scanParam.Dec[:-delay])
12 scanParam.AzOff = fUtilities.as_column_major_storage(scanParam.AzOff[:-delay])
13 scanParam.ElOff = fUtilities.as_column_major_storage(scanParam.ElOff[:-delay])
14 scanParam.RAOff = fUtilities.as_column_major_storage(scanParam.RAOff[:-delay])
15 scanParam.DecOff = fUtilities.as_column_major_storage(scanParam.DecOff[:-delay])
16 scanParam.LonOff = fUtilities.as_column_major_storage(scanParam.LonOff[:-delay])
17 scanParam.LatOff = fUtilities.as_column_major_storage(scanParam.LatOff[:-delay])
18 scanParam.BasLon = fUtilities.as_column_major_storage(scanParam.BasLon[:-delay])
19 scanParam.BasLat = fUtilities.as_column_major_storage(scanParam.BasLat[:-delay])
20 scanParam.LonPole = fUtilities.as_column_major_storage(scanParam.LonPole[:-delay])
21 scanParam.LatPole = fUtilities.as_column_major_storage(scanParam.LatPole[:-delay])
22 scanParam.Rot = fUtilities.as_column_major_storage(scanParam.Rot[:-delay])
23 scanParam.Flags = fUtilities.as_column_major_storage(scanParam.Flags[:-delay])
24 scanParam.NoddingState = fUtilities.as_column_major_storage(scanParam.NoddingState[:-delay])
25 scanParam.UT = fUtilities.as_column_major_storage(scanParam.UT[:-delay])
26 scanParam.WobblerPos = fUtilities.as_column_major_storage(scanParam.WobblerPos[:-delay])
27 scanParam.FocX = fUtilities.as_column_major_storage(scanParam.FocX[:-delay])
28 scanParam.FocY = fUtilities.as_column_major_storage(scanParam.FocY[:-delay])
29 scanParam.FocZ = fUtilities.as_column_major_storage(scanParam.FocZ[:-delay])
30 scanParam.PhiX = fUtilities.as_column_major_storage(scanParam.PhiX[:-delay])
31 scanParam.PhiY = fUtilities.as_column_major_storage(scanParam.PhiY[:-delay])
32
33 scanParam.Nint = scanParam.Nint - delay
34 scanParam.SubscanIndex[1,-1] -= delay
35
36 data.ScanParam = scanParam
37
38 data.Data = fUtilities.as_column_major_storage(data.Data[delay:,:])
39 data.SkyNoise = fUtilities.as_column_major_storage(data.SkyNoise[delay:,:])
40 data.DataFlags = fUtilities.as_column_major_storage(data.DataFlags[delay:,:])
41 data.DataWeights = fUtilities.as_column_major_storage(data.DataWeights[delay:,:])
as correctDelay(data,32)