Ask a Question | Search DSPSR: |
Home
|
DSPSR user documentation: dspsrSpectral Kurtosis based Radio Frequency Interference MitigationDepending on the input data type, dspsr can perform Radio Frequency Interference mitigation using either
The number of samples used to estimate the SK can be set to M with -skzm M and the cutoff threshold can be set to sigma standard deviations with -skzs sigma. To oversample the SK estimates by a factor of N, such that sample blocks overlap by a factor of (N-1)/N, use -skzover N. By default, dspsr tests three different SK estimates in the following order.
By default, any block of samples identified as an outlier in any one of the above three tests will not be masked in subsequent tests. This default behaviour also applies when computing the SK statistic on multiple time scales, as described below. To omit outliers detected during an earlier test from SK estimates computed during later tests, add -skz_omit to the command line. Multiple ComparisonsWhen the input data include timeseries for two polarizations, the SK is computed and tested independently for each polarization. In this case, the false alarm rate is treated as the family wide error rate, and the threshold applied to each polarization is increased accordingly. Currently, a similar correction is not implemented to compensate for the multiple comparisons made when sample blocks overlap, when multiple tests (sk-time-frequency, sk-time, and sk-frequency) are performed, or when the SK is computed on multiple time scales. Therefore, when oversampling, multiple tests, and/or multiple timescales are used, the false-alarm rate will be greater than that expected for a given threshold. Computing the Spectral Kurtosis on multiple time scalesImportant Note: To compile dspsr's new YAML-based configuration file parser, it is necessary to install yaml-cpp; e.g. from the source code (requires cmake) git clone https://github.com/jbeder/yaml-cpp.git mkdir yaml-cpp/build cd yaml-cpp/build module load cmake/3.10.2 cmake -DCMAKE_INSTALL_PREFIX:PATH=$PSRHOME/$LOGIN_ARCH -DCMAKE_CXX_FLAGS="$CXXFLAGS -fPIC" .. make make installIt is also necessary to configure dspsr with C++11 enabled and PKG_CONFIG_PATH set to find the yaml-cpp.pc file; e.g. setenv CXXFLAGS "$CXXFLAGS -std=c++11" setenv PKG_CONFIG_PATH $PSRHOME/$LOGIN_ARCH/share/pkgconfig:$PKG_CONFIG_PATHFinally, reconfigure and recompile dspsr; e.g. cd dspsr/ ./update ./configure options make && make install
YAML Format Configuration FileWith YAML support enabled, you can specify a Spectral Kurtosis configuration file in YAML format on the command line; e.g.dspsr -skz -skz_config skz.yaml ...For example, the following YAML configuration file [ { M: 128, overlap: 2 }, { M: 256, overlap: 2 } ]instructs dspsr to run spectral kurtosis in two iterations, each time with different block lengths (M=128 and M=256); for each iteration, blocks used to estimate the SK statistic are oversampled by a factor of 2. Note that iterations can be configured independently, and the configuration for an iteration is a comma-separated list of parameters enclosed in {braces}. Also note that M must be divisible by the specified overlap, and adjacent blocks overlap by (overlap-1)/overlap; e.g. for overlap=2, adjacent blocks overlap by 50%. The following YAML configuration excludes two blocks of 1024 channels from RFI mitigation in only the first iteration (with M=128). Note that channel index ranges are inclusive. [ { M: 128, overlap: 2, exclude: [[101,1124],[3001,4024]] }, { M: 256, overlap: 2 } ]The following YAML configuration specifies that RFI mitigation will be performed on only one block of 1024 channels in both iterations. [ { M: 128, overlap: 2, include: [3001,4024] }, { M: 256, overlap: 2, include: [3001,4024] } ]The YAML interface is flexible. For example, the input need not be a sequence of maps. If executing only a single iteration, a single map can also be input on several rows; e.g. M: 128 overlap: 2 include: [3001,4024]Similarly, the include and exclude attributes will accept either a single pair of start and end channel indeces, as in include: [3001,4024]or a sequence of start/end channel pairs, as in exclude: [[101,512],[1096,2048],[3001,4024]]An arbitrary number of iterations and include/exclude windows can be specified. The logic follows this sequence:
Developer Notes: Input Buffering
Developer Notes: Multiple TimescalesThe input sums (orange) integrated over M1 samples with an overlap factor of noverlap,1 and idatoff,1 = M1 / noverlap,1 can be used to calculate output sums (green), integrated over M2 samples with an overlap factor of noverlap,2 and idatoff,2 = M2 / noverlap,2, where
|