FindPeak() method, which finds peaks for all processed scans except those Azimuth scans which are dual-beamed. For those scans, AzimuthScan calls it's FindPeaks() method. AzimuthScan is subclassed from OffsetScan.
| Module | Summary of Modifications |
|---|---|
OffsetScan | Modify FindPeak() to reflect successive options for finding signal peak. Add method to test for signal-like width / profile. |
AzimuthScan | Modify FindPeaks() to make use of FindPeak() in parent OffsetScan |
| Type | Element | Description |
|---|---|---|
| Modify | FindPeak() | Refactor search through scan data points; add method to verify possible peak width / profile. |
| NEW | FindPeakInRange (idxRange, dir) | Searches range of scan's integrations (identified by idxRange) for signal peak, pointing in dir (upward, downward) direction |
| NEW | HasFWHMProfile (candidatePeakIdx, dir) | Examines data surrounding candidate signal peak to determine if it has a width / profile indicative of Gaussian-like signal |
FindPeak() is refactored to two (2) new methods, FindPeakInRange() and HasFWHMProfile(). FindPeak() now contains the strategic level functionality, calling FindPeakInRange() successively with the algorithmic range choices stated in the requirements. A new optional argument is added to this method, dir, an enumerated string (in practice) with values 'Normal', 'Positive', and nominally 'Negative'. dir directs the core peak finding method to search for a single, upward-pointing peak ('Normal'), an upward-pointing peak in a dual-peak scan ('Positive'), or a downward-pointing peak in a dual-peak scan ('Negative'). If dir is neither 'Normal' or 'Positive', it's treated as if (but not explicitly checked) it were 'Negative'.
idxRange range of integration data points on either side of the center data point of the scan. Examines data points in that range in decreasing order (increasing order for 'Negative' peaks), successively checking each to see if it has the appropriate width / profile by calling the new method HasFWHMProfile(), until it finds one that does, or exhausts the range.
candidateIdxPeak, to see if they approximately conform to a Gaussian-like curve of the appropriate width (expected width based on the center frequency). As stated in the Requirements section, the actual criteria used to determine if the data "approximately conform" to a Gaussian-like curve is an area of investigation for this MR. While convolution of the actual data with a Gaussian function characterized by the expected width would likely identify the peak, we are searching for a less resource-intensive solution in terms of development.
An initial algorithm with promise for verifying appropriate width and profile is described by the following set of conditions:
| Type | Element | Description |
|---|---|---|
| Modify | FindPeaks() | Invoke the newly modified OffsetScan.FindPeak() method of the parent module. |
OffsetScan.FindPeak() method; instead, it simply identifies the index of the largest y-value as the 'positive' peak, and the smallest (may be negative) y-value as the 'negative' peak. Such a choice is highly vulnerable to RFI, more so than the current OffsetScan.FindPeak() method.
As modified in this MR, FindPeaks() now makes two calls to the newly modified OffsetScan.FindPeak() method: one, with a dir parameter of 'Positive'; second, with a dir parameter of 'Negative'.
OffsetScan.FindPeak() and AzimuthScan.FindPeaks() at the top-level, but also the new methods OffsetScan.FindPeakInRange() and OffsetScan.HasFWHMProfile().
Comparative analyses will be performed, wherein the code will be run with old algorithm, then again with new algorithm on the same dataset. The resulting scan fit characteristics and corresponding identified peaks will be compared to determine if the new algorithm improves without false positives over the old algorithm.
Some datasets identified for testing are:
| Written | |
|---|---|
| Checked | |
| Approved by Sponsor | |
| Approved by CCC | |
| Accepted/Delivered by Sponsor | symbol - name - date |
%X% if MR is not complete (will display %Y% if MR is complete (will display Attachment: ![]() | Action: | Size: | Date: | Who: | Comment: |
|---|---|---|---|---|---|
| | action | 4877 | 18 Apr 2007 - 15:27 | RonGrider | Observing script for fast scan rate scans |
| Topic ModificationRequest4C207 . { Edit | Attach | Ref-By | Printable | Diffs | r1.13 | > | r1.12 | > | r1.11 | More } |
|
Revision r1.13 - 05 May 2007 - 00:17 GMT - RonMaddalena Parents: PlanOfRecordC22007 |
Content copyright © 1999-2007 by the contributing authors. All material on this collaboration platform is the property of the contributing authors. |