Revision 8e3c0f9aebc0ac2a229c16c155684f1255a5c6fb authored by Zaki Ali on 23 February 2017, 21:28:08 UTC, committed by Zaki Ali on 05 April 2017, 22:27:01 UTC
change import to uvcal. Add telescope to fits file. Fix handling of writing history to fits. Automatic writing of optional str parameters, if they exist. Adding fits extenstion as ImageHDU for saving flags. syntax errors and clean up of if statmenets.
1 parent b62addf
truncate_fhd_files.pro
pro truncate_fhd_files
dir = '/nfs/mwa-09/r1/djc/EoR2013/Aug23/fhd_nb_decon_March2016_small/'
observation = '1061316296'
outdir = dir+'data_for_tests/'
chan_range = [204-1,204+1]
t0 = 4 ; Starting time so we don't include the first two seconds (which are flagged)
nts_keep = 4 ; Will keep roughly 1/10 the times
ntile_keep = 9
restore,dir+'metadata/'+observation+'_obs.sav' ; Need the obs to get time bins
restore,dir+'metadata/'+observation+'_params.sav'
tmin_ind = (*obs.baseline_info).bin_offset[t0]
tmax_ind = (*obs.baseline_info).bin_offset[t0+nts_keep] ; Keep fraction of the original baseline times
blt_inds = where(((*obs.baseline_info).tile_a lt (ntile_keep+1)) and ((*obs.baseline_info).tile_b lt (ntile_keep+1)) $
and (params.time ge params.time[tmin_ind]) and (params.time lt params.time[tmax_ind]))
npol = 2
pols=['XX','YY']
; Now for the hard part
print,'Reorganizing obs structure'
bin_offset = Lonarr(nts_keep)
for t=1,(nts_keep-1) do bin_offset[t] = min(where(params.time[blt_inds] gt params.time[blt_inds[bin_offset[t-1]]]))
new_baseline_info = structure_update(*obs.baseline_info, $
tile_a=(*obs.baseline_info).tile_a[blt_inds], $
tile_b=(*obs.baseline_info).tile_b[blt_inds], $
bin_offset = bin_offset, $
jdate = ((*obs.baseline_info).jdate)[t0:(t0+nts_keep-1)], $
freq = ((*obs.baseline_info).freq)[chan_range[0]:chan_range[1]], $
fbin_i = ((*obs.baseline_info).fbin_i)[chan_range[0]:chan_range[1]], $
freq_use = ((*obs.baseline_info).freq_use)[chan_range[0]:chan_range[1]], $
time_use = ((*obs.baseline_info).time_use)[t0:(t0+nts_keep-1)])
obs_new = structure_update(obs, n_freq=chan_range[1]-chan_range[0]+1, $
n_time = nts_keep, nf_vis = obs.nf_vis[chan_range[0]:chan_range[1]],$
nbaselines = ntile_keep*(ntile_keep-1)/2)
*obs_new.baseline_info = new_baseline_info
*obs_new.vis_noise = (*obs.vis_noise)[*,chan_range[0]:chan_range[1]]
obs=obs_new
save,obs,filename=outdir+observation+'_obs.sav'
; params
print,'Slicing params'
params_new = {params, uu:params.uu[blt_inds], $
vv:params.vv[blt_inds], $
ww:params.ww[blt_inds], $
baseline_arr:params.baseline_arr[blt_inds], $
time:params.time[blt_inds]}
params = params_new
save,params,filename=outdir+observation+'_params.sav'
restore,dir+'vis_data/'+observation+'_flags.sav' ; Flag file
for pol=0,1 do begin
*flag_arr[pol] = (*flag_arr[pol])[chan_range[0]:chan_range[1],blt_inds]
endfor
save,flag_arr,filename=outdir+observation+'_flags.sav'
undefine,flag_arr
for pol=0,1 do begin
print,'Slicing pol '+pols[pol]
restore,dir+'vis_data/'+observation+'_vis_'+pols[pol]+'.sav' ; Dirty data
obs = obs_new
*vis_ptr = (*vis_ptr)[chan_range[0]:chan_range[1],blt_inds]
save,vis_ptr,obs,filename=outdir+observation+'_vis_'+pols[pol]+'.sav'
restore,dir+'vis_data/'+observation+'_vis_model_'+pols[pol]+'.sav' ; Model data
obs = obs_new
*vis_model_ptr = (*vis_model_ptr)[chan_range[0]:chan_range[1],blt_inds]
save,vis_model_ptr,obs,filename=outdir+observation+'_vis_model_'+pols[pol]+'.sav'
endfor
end
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...