NAME:
0Readme - rfirms routines
These are the idl routines that compute fractional occurence of rfi
by frequency. It does this by computing the rms/mean for each frequency
channel in a scan. Any rms/mean greater then a threshold value are
called rfi.
Users may want to use rfi plthistloop to look at the data.
Computing the rms by channel from correlator files:
--------------------------------------------------
pfrms - compute rms spectra for every scan in a file.
(corrms() is called to process each scan).
pfrmsinpfiles- take a filelist and call pfrms for every filename in the list.
Making histograms of rfi by frequency channel for rms data:
----------------------------------------------------------
rfihistscan - compute rfi for 1 scan add to histogram.
pfrfihist - take a filelist and call rfihistscan for every scan in
each file.
Processing the monthly data:
---------------------------
rfimkhist - for each month find all of the archived rms files and make
a histogram for each month (of the requested receiver range).
Store the histograms in idl save files.
rfihistlist - called by rfimkhist to make the filelist for a month.
rfihistinp - after making the monthly histograms this routine will make
the year to date histogram including all months.
Plotting histograms:
-------------------
rfihistinp - inputs a histogram save file.
rfiplthist - plot a histogram.
rfiplthistloop - input and plot a range of histograms.
toUse rfiplthistloop:
-------------------
idl
@phil
@rfiinit
rfiplthistloop,'lb',1,9 .. to plot jan-sep. see the documention for
the arguments.
(See /pkg/rsi/local/libao/phil/rfirms/Readme.pro)
NAME:
pfrfihist - compute histogram for all files in filelist
SYNTAX: numscans=pfrfihist(fname,freqmin,freqmax,histinfo,histAr,$
rcvList=rcvList,edgefr=edgefr,rejectfr=rejectfr,
sigma=sigma,binstep=binstep,verbose=verbose,wait=wait,han=han,$
alfaBadBms=alfaBadBms)
ARGS:
fname: string . file containing list of filenames to process
freqmin : float . min frequency to histogram in Mhz.
freqmax : float . max frequency to histogram in Mhz.
RETURNS:
histInfo : {rfihistinfo} holds the histogram parameters used
histart[nchn,3]:long histogram of [*,tot=0,rfi=1,reject=2]
KEYWORDS:
han: if set then processed data was hanning smoothed.
rcvList[]: int if supplied then limit data to these receiver numbers.
edgefr: float. fraction of each band that is discarded on each edge
(do to filter rolloff). default: .05
rejectfr: float. If the fraction of bad channels in a single rms
bandpass exceeds this fraction, then rms bandpass will
not be included in either histogram. default=.5
sigma: float. The number of sigmas above that defines an rfi event.
binstep: float. The binsize in mhz. default: .1 Mhz.
if not provided then log to default log file
alfaBadBms[2,8]: int bad beams for alfa.. [pol, bm]
8 beams since last is duplicated in wapps.
putting a 1 in a location will ignore this
pol,beam in the histogram. use for bad beams..
DESCRIPTION:
This routine will create a histogram of rfi versus frequency. fname
is an ascii file that contains files to process. Each of these files contains
rms spectra that have been processed by corrms (usually via pfrms()).
An rms spectra has had the rms/Mean computed for each frequency channel
in a scan (typically sampled at 1 or 6 seconds).
Rfi is defined as any rms greater than a default value (set by the sigma
keyword).
A histogram of the total number of counts, and the total number of rfi's
found is returned. The histogram bins are centered at the start,end bins.
If the data resolution is greater than the histogram resolution, then
all of these data channels map into 1 total count. Any (and all)data channels
in the group will count as 1 rfi count.
The expected sigma is computed using the time, channel bandwidth, double
nyquist, and level sampling. The bins are assumed to be rectangular.
A fraction of the bandpass is discarded at each edge because of filter
rolloff. Bandpassed will not be included if the fraction of bad channels
exceeds a predetermined value.
(See /pkg/rsi/local/libao/phil/rfirms/pfrfihist.pro)
NAME:
pfrms - compute rms/mean by chan for every scan in file
SYNTAX: numproc=pfrms(filein,fileout,rembase=rembase,minrecs=minrecs,
excludepat=excludepat,zerorate=zerorate,lunLog=lunLog,
han=han,doplot=doplot)
ARGS:
fileIn :string name of input file
fileOut :string name of file to store rms/mean by channel
KEYWORDS:
minrecs : int minimum number of records needed in a scan
to process it. (default=5).
rembase : int if set then remove linear baseline before rms
excludepat[]: strings array of patterns to exclude.
zerorate : int if set then require zero rate to process scan.
han : int if set then hanning smooth the input data.
lunLog : int lun to append ascii log info to.
doplot : int if set then plot each rms after computing
RETURNS:
numproc : int number of scans output.
-1 error opening input file
-2 error opening output file
DESCRIPTION:
For each scan in fileIn compute rms/mean by channel. Output the
rms/mean by channel along with the header to file fileOut. This data
can be read in later with corget(lun,b,/noscale);
The data output will have the same format header,data except that:
1. the freq data is replaced by rms/mean by channel
2. there is only one record per scan.
(See /pkg/rsi/local/libao/phil/rfirms/pfrms.pro)
NAME:
pfrmsinpfiles - compute rms/mean for all files in filelist
SYNTAX: numscans=pfrmsinpfiles(fname,outputdir,rembase=rembase,doplot=doplot)
ARGS:
fname: string . file containing list of filenames to process
ouputdir: string . directory name for output files.
KEYWORDS:
rembase : int if set then remove baseline before rms computed
minrecs : int minimum number of recs in scan need to process a scan.
defaults to 5.
doplot : int if set then plot each rms as it is computed
logfile : string if provided then log ascii status to logfile.
if not provided then log to default log file
DESCRIPTION:
Call pfrms for all filesname in the file fnames.
fnames is a file that holds 1 filename perline with.
Process each of these files by calling pfrms. Use outputdir/basename
as the output filename.
This routine will automatically hanning smooth, set zerorate true,
and excluce the patterns corcrossch
(See /pkg/rsi/local/libao/phil/rfirms/pfrmsinpfiles.pro)
NAME:
rfihistinp - input and sum a time range of histograms
SYNTAX: rfihistinp,frq1,frq2,mon,prefix,hall,hinfo,freq,dir=dir
ARGS:
frq1: long - starting frequency in Mhz
frq2: long - ending frequency in Mhz
mon[]: long - array of yymm months to process
prefix: string - any prefix that was prepended to hist file name
(in case you were testing.. default is '')
KEYWORDS:
dir: string directory to find the histogram files. default is
/share/megs/rfi/rms/histdat/
RETURNS:
hall[n,3]: long [n,0] total counts in n bins
[n,1] total rfi counts in n bins
[n,2] total bad spectra in n bins
histinfo:{rfihistinfo} contains info on data in hall:frqst,end,binwidht,etc..
freq[n] : float frequency for each bin.
fileformat is:
prefixhsav_f1_f1.yymm
(See /pkg/rsi/local/libao/phil/rfirms/rfihistinp.pro)
NAME:
rfihistlist - make filelist for histogram
SYNTAX: rfihistlist,yymmAr,inpdir=inpdirar,outdir=outdir
ARGS:
yymmAr[]: int dates to process. eg [0101,0102]
KEYWORDS:
inpdir[]: string directories where the rms spectra files are located.
default:...
outdir : string directory to write the list of files to process.
default: /share/megs/rfi/rms/histdat/
DESCRIPTION:
pfrfihist() computes a histogram of rfi versus frequency using the
rms spectra computed by pfrms(). It needs a list of rmsspectra files
to process. This routine will generate that list of files and write them
to disc. The user supplies an array of yymm values and the program
searches the rmsspectra directories for all files that fall within each
of the yymm ranges (by checking the monyy part of the filename). For
each yymm it will write a file (hlistinp.yymm) to the output directory
that has a list of all rms spectra for this month.
(See /pkg/rsi/local/libao/phil/rfirms/rfihistlist.pro)
NAME:
rfihistscan - compute rfi for rms spectra. add to histogra.
SYNTAX: rfihistscan,b,hInfo,htotcnts,hrficnts,hrejcnts,han=han,$
verbose=verbose, wait=wait,badSbc=badSbc
ARGS:
b : {corget} corget structure containing rms info for a scan.
usually computed from routine corrms().
hInfo : {rfihistInfo} structure telling routine how to bin the
histogram. User fills in before calling.
histAr[nchn,3]: long array containing the histogram (user allocates).
[*,0=total,1=rfi,2=rejected]
han : if set, then the input spectra were hanning smoothed
prior to computing the rms.
badSbc[2,8] : if a one in a position, then ignore this
sbc,pol... Used to get rid of alfa beams that are bad
(See /pkg/rsi/local/libao/phil/rfirms/rfihistscan.pro)
NAME:
rfimkhist - make rfi histograms
SYNTAX: rfimkhist,nm,yymm,sigma=sigma,badfr=badfr,prefnm=prefnm,$
outdir=outdir,mklist=mklist,frange=frange,$
frqstep=frqstep,verbose=verbose, wait=wait,han=han,$
alfaBadBms=alfaBadBms
ARGS:
nm : string .. receiver name to process
yymm[]: int array holding mon,year to process
KEYWORDS:
sigma : float number of sigmas to clip at.
badfr : float fraction before we call it bad spectra
frqstep : float freq step (def .1 Mhz)
frange[2]: float min max freq (mhz) for histogram. default is from table
below.
verbose : if set then output clipping info
wait : if set then wait after each spectra for keyboard input
outdir :string for inplistfiles and output histogram files.
mklist : if set then make the input filelists.
prefnm :string prepend to each output file name
han : hanning smoothing was used in rms computation.def=yes
if not, then set han=0
alfaBadBms[2,8]: int bad beams for alfa.. [pol, bm]
8 beams since last is duplicated in wapps.
putting a 1 in a location will ignore this
pol,beam in the histogram. use for bad beams..
(See /pkg/rsi/local/libao/phil/rfirms/rfimkhist.pro)
NAME:
rfiplthist - plot histograms of rfi rms data
SYNTAX : rfiplthist,histar,histinfo,ln=ln,title=title,over=over,xp=xp,$
sclln=sclln
ARGS :
histAr[nchn,3] : long hold totalcnts,rfi, rejected histograms
histInfo :{rfihistinfo} hold histinfo.
KEYWORDS:
title: string if supplied then title for plot
over : if set then overplot on last plot.
ln : int if supplied then line number for labels (colors, sigma,etc).
xp : float 0 to 1. xoffset for labels
sclln:float to space label lines (default 1.)
cs :float character size scale for label. default:1.
(See /pkg/rsi/local/libao/phil/rfirms/rfiplthist.pro)
NAME:
rfiplthistloop - loop plotting histograms for a group of months
SYNTAX: rfiplthistloop,rcvr,yr,m1,m2,delay=delay,_extra=e
ARGS:
rcvr:string rcvr to plot . 'lb'
yr:int year to plot, 2001..
m1:int first month to plot (1..12)
m2:int last month to plot (1..12)
KEYWORDS:
delay: float seconds to delay between plots. If < 0 then prompt user
to continue after each plot.
_extra: keywords=values .. pass these to rfiplthist
DESCRIPTION:
Call rfiplthist for a group of months of a particular year. You
can set the horizontal scale to zoom in on a frequency region (you may
then have to set the vertical scale so that it is scaled correctly for
all months. The default delay between plots in 1 seconds.
The data is read from the files in /share/megs/rfi/rms/histdat. If the
histograms have not been made, they can't be plotted.
EXAMPLES:
rfiplthist,'lb',2001,1,9 .. plot jan-sept with 1 sec between plots.
hor,1300,1450
ver,0,1
rfiplthist,'lb',2001,1,9,delay=-1 .. plot jan-sept 1300-1450 Mhz
prompt user to continue after each plot.
(See /pkg/rsi/local/libao/phil/rfirms/rfiplthistloop.pro)