Home > reduc > jl_gridderSouth.m

jl_gridderSouth

PURPOSE ^

SYNOPSIS ^

function jl_gridder(object_string,start_date,stop_date)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function jl_gridder(object_string,start_date,stop_date)  
0002 
0003 save_dir='comm_rasters';
0004 save_path = [save_dir,'/',start_date,'_',object_string]
0005 which_roach=3;
0006 cell_size= 0.05;
0007 n=0;
0008 plot_contours=1;
0009 savefileon=1;
0010 map_size=16;
0011 
0012 disp(['jl_gridder:: Reducing a CBASS-S observation'])
0013 d = read_arcSouth(start_date,stop_date);
0014 d = determineIndicesSouth(d);
0015 
0016 d.index.radio_point_scan.fast = d.index.beammap.fast;
0017 d.index.radio_point_scan.slow = d.index.beammap.slow;
0018 
0019 if(which_roach==1)
0020   disp('jl_gridder:: reducing roach1')
0021 LL = [d.antenna0.roach1.LL]; 
0022 RR = [d.antenna0.roach1.RR]; 
0023 QQ = [d.antenna0.roach1.Q];
0024 UU = [d.antenna0.roach1.U];
0025 d.antenna0.receiver.utc = d.antenna0.roach1.utc;
0026 elseif (which_roach==2)
0027   disp('jl_gridder:: reducing roach2')
0028 LL = [d.antenna0.roach2.LL]; 
0029 RR = [d.antenna0.roach2.RR]; 
0030 QQ = [d.antenna0.roach2.Q];
0031 UU = [d.antenna0.roach2.U];
0032 d.antenna0.receiver.utc = d.antenna0.roach2.utc;
0033 elseif (which_roach==3)
0034 LL = [d.antenna0.roach2.LL,d.antenna0.roach1.LL]; 
0035 RR = [d.antenna0.roach2.RR,d.antenna0.roach1.RR]; 
0036 QQ = [d.antenna0.roach2.Q,d.antenna0.roach1.Q];
0037 UU = [d.antenna0.roach2.U,d.antenna0.roach1.U];
0038 d.antenna0.receiver.utc = d.antenna0.roach1.utc;
0039 end
0040 
0041 d.antenna0.receiver.data(:,1)=  mean(LL'); %LL
0042 d.antenna0.receiver.data(:,2)=  mean(RR'); %QQ
0043 d.antenna0.receiver.data(:,3)=  mean(QQ'); %UU
0044 d.antenna0.receiver.data(:,4)=  mean(UU'); %RR
0045 
0046 d.antenna0.servo.apparent(:,1)=d.antenna0.servo.az; 
0047 d.antenna0.servo.apparent(:,2)=d.antenna0.servo.el;
0048 
0049 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0050 % The basic deglitch routine
0051 %
0052 no_stds_to_reject=700;
0053 d.antenna0.receiver.data(:,3)=-1*d.antenna0.receiver.data(:,3);
0054 d.antenna0.receiver.data(:,4)=-1*d.antenna0.receiver.data(:,4);
0055 for chan=1:4;
0056 d_mean=mean(d.antenna0.receiver.data(:,chan));
0057 d_rms=rms(d.antenna0.receiver.data(:,chan));
0058 flagarray =( (d.antenna0.receiver.data(:,chan)>(d_mean-no_stds_to_reject*(d_rms-d_mean))) & (d.antenna0.receiver.data(:,chan)<(d_mean+no_stds_to_reject*(d_rms-d_mean))));
0059  d.antenna0.receiver.data(~flagarray,chan)=nan; 
0060 end
0061 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0062 
0063 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0064 % Plot the data we have
0065 hFig = figure(1);
0066 set(hFig, 'Visible', 'off');
0067 %figure(1)
0068 for i=1:4
0069 subplot(5,1,i)
0070 plot(d.antenna0.receiver.utc,d.antenna0.receiver.data(:,i))
0071 if (i==1) 
0072 title('Mean LL');
0073 end
0074 if (i==2)
0075   title('Mean RR');
0076 end
0077 
0078 if (i==3)
0079   title('Mean QQ');
0080 end
0081 if (i==4)
0082   title('Mean UU');
0083 end
0084 
0085 end
0086 % Plot wether it thinks it is a raster or not
0087 subplot(5,1,5)
0088 plot(d.antenna0.receiver.utc,d.index.radio_point_scan.fast);
0089 title('d.index.radio\_point\_scan.fast');
0090 
0091 gtitle('Raw data')
0092 saveas(hFig,[save_path,'_raw.png'])
0093 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0094 % Plot the bigger version of data(1)
0095 
0096 hFig = figure();
0097 set(hFig, 'Visible', 'off')
0098 plot(d.antenna0.receiver.utc,d.antenna0.receiver.data(:,1));
0099 title('Mean LL');
0100 %points = (dgood.index.radio_point_scan.fast==1);
0101 
0102 %keyboard
0103 
0104 [s e] = findStartStop(d.index.radio_point_scan.fast);
0105 
0106 points = (d.index.radio_point_scan.fast==1);
0107 contour_max(1) = max(d.antenna0.receiver.data(points,1));
0108 contour_max(2) = max(d.antenna0.receiver.data(points,2));
0109 contour_max(3) = max(d.antenna0.receiver.data(points,3));
0110 contour_max(4) = max(d.antenna0.receiver.data(points,4));
0111 saveas(hFig,[save_path,'_raw_big.png'])
0112 %keyboard;
0113 %disp('jl_gridder:: Length of S is');
0114 %length(s)
0115 
0116 for m= 1:length(s)
0117 %   m
0118     n = n+1;
0119     ind = zeros(size(d.index.radio_point_scan.fast));
0120     ind(s(m):e(m)) = 1;
0121     ind = logical(ind);
0122 
0123     dcut  = framecut(d, ind);
0124 
0125     azApp = interp1(dcut.antenna0.tracker.utc, ...
0126         dcut.antenna0.tracker.horiz_topo(:,1), dcut.antenna0.receiver.utc);
0127    % keyboard;
0128     azOffSave = wrap180(azApp) - dcut.antenna0.servo.apparent(:,1);
0129     azOffSave = -azOffSave;
0130     % Note that dcut.antenna0.servo.el = dcut.antenna0.servo.apparent(:,2)
0131     azOffSave = azOffSave.*cos(dcut.antenna0.servo.el*pi/180);% Scale azimuth by cos(elevation)???CHECK
0132     
0133     %keyboard;
0134 
0135     elApp = interp1(dcut.antenna0.tracker.utc, ...
0136         dcut.antenna0.tracker.horiz_topo(:,2), dcut.antenna0.receiver.utc);
0137     elOffSave = elApp - dcut.antenna0.servo.apparent(:,2);
0138     elOffSave = -elOffSave;
0139 
0140     angle = sqrt(elOffSave.^2 + azOffSave.^2);
0141  
0142 
0143        
0144     % Make sure we ignore NaNs
0145     a = (isnan(azOffSave) | isnan(elOffSave)| isnan(dcut.antenna0.receiver.data(:,1))  );
0146     
0147     
0148     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0149     % Calculate the mean parallactic angle (NOT USED)
0150     AZ = deg2rad(mean(azApp(~a)));
0151     EL = deg2rad(mean(elApp(~a)));
0152     
0153     LAT_D = 37.233889; % OVRO Latitude in Degrees
0154     LON_D = 118.28222; % OVRO Longitude in Degrees
0155     
0156     LAT = deg2rad(LAT_D);
0157     LON = deg2rad(LON_D);
0158     
0159     DEC = deg2rad(mean((dcut.antenna0.tracker.equat_geoc(:,2))));
0160     sinPA = ((sin(AZ).*cos(LAT))./cos(DEC)); % radians
0161     sinPA(abs(sinPA)>=1)=1;
0162     PA = asin(sinPA);
0163     PA_D(m)= rad2deg(PA); % deg
0164     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0165 
0166     
0167     %Define a grid in degrees
0168     ti=-map_size/2:cell_size:map_size/2;
0169     
0170     % Make sure we ignore NaNs
0171     a = (isnan(azOffSave) | isnan(elOffSave) | isnan(dcut.antenna0.receiver.data(:,1)) );
0172 
0173 %   keyboard;
0174     disp('jl_gridder:: About to grid data');
0175          
0176     
0177     for (chan=1:1) % only plot the I channel data for speed
0178         if(size(dcut.antenna0.receiver.data(~a,chan),1)>0)
0179             % Grid the data
0180         disp('jl_gridder:: Gridding data');
0181             [XI,YI]=meshgrid(ti,ti);
0182             ZI = griddata(azOffSave(~a),elOffSave(~a),dcut.antenna0.receiver.data(~a,chan),XI,YI);
0183 
0184         disp ('jl_gridder:: about to plot contours');
0185             hFig = figure();
0186             set(hFig, 'Visible', 'off');
0187 
0188             
0189             %subplot(2,1,1)
0190             colormap(hot(256))
0191             %imagesc(ti,ti,10*log10(ZI));
0192             imagesc(ti,ti,ZI);
0193             xlabel('Angular offset (degrees) in Az direction');
0194             ylabel('Angular offset (degrees) in El.');
0195             title('Mean RR map');             
0196             saveas(hFig,[save_path,'_',num2str(m),'_map.png'])
0197             %figure
0198             %subplot(2,1,2)
0199             %contourf(XI,YI,ZI);
0200             hFig = figure();
0201             set(hFig, 'Visible', 'off'); 
0202             
0203 %            plot(azOffSave(~a),10*log10(dcut.antenna0.receiver.data(~a,chan))  )
0204              title('Mean RR Az scans');
0205              plot(azOffSave(~a),dcut.antenna0.receiver.data(~a,chan))
0206             saveas(hFig,[save_path,'_',num2str(m),'_az_scans.png'])
0207 %            if(plot_contours)
0208 %          disp('plot contours');
0209 %                % Plot mini contour maps on 3x3 grid on each page
0210 %                fig_no = ceil(m/16);
0211 %                subplot_no = m-(fig_no-1)*16;
0212 %
0213 %                %subplot(nfigs_x,nfigs_y,n);
0214 %                %Make contours based on the max_value in the data set for I,Q,U,V
0215 %                VI = [1:-0.1:0]*contour_max(chan);
0216 %
0217 %                figure(fig_no+2);
0218 %                subplot(4,4,subplot_no)
0219 %                contour(XI,YI,ZI,VI);
0220 %                axis square;
0221 %                grid on;
0222 %                xlabel('Az Offset,deg');
0223 %                ylabel('El Offset,deg');
0224 %                title(num2str(m));
0225 %            end
0226 
0227 
0228         end
0229     end
0230 end
0231 disp('jl_gridder:: Finished');

Generated on Sun 14-Jun-2015 17:12:45 by m2html © 2005