Package deepWhistle

Class MaskedFFTProcess

java.lang.Object
PamguardMVC.PamProcess
deepWhistle.MaskedFFTProcess
All Implemented Interfaces:
PamObserver, ProcessAnnotator
Direct Known Subclasses:
DeepWhistleProcess

public abstract class MaskedFFTProcess extends PamProcess
PamProcess that applies a mask to the real-part of incoming FFTDataUnit objects. This initial implementation buffers a defined number of seconds of FFT slices then sends a batch to a worker thread to compute masks and apply them.
  • Constructor Details

  • Method Details

    • pamStart

      public void pamStart()
      Description copied from class: PamProcess
      Called for each process to tell it to start (may not be necessary for processes which are listening for data anyway).
      Specified by:
      pamStart in class PamProcess
    • pamStop

      public void pamStop()
      Description copied from class: PamProcess
      Stops the process.
      Specified by:
      pamStop in class PamProcess
    • destroyProcess

      public void destroyProcess()
      Description copied from class: PamProcess
      Called from the PamControlled unit when a PamControlled unit is removed from the model. Offers an opportunity to disconnect individual processed from the rest of the model. May be necessary to override to clean up some processes.
      Overrides:
      destroyProcess in class PamProcess
    • newData

      public void newData(PamObservable o, PamDataUnit arg)
      Overrides:
      newData in class PamProcess
    • setSampleRate

      public void setSampleRate(float sampleRate, boolean notify)
      Description copied from interface: PamObserver
      New sample rate
      Specified by:
      setSampleRate in interface PamObserver
      Overrides:
      setSampleRate in class PamProcess
      Parameters:
      sampleRate -
      notify - Notify other PamObservers and PamObservables in the chain.
    • prepareProcess

      public void prepareProcess()
      Description copied from class: PamProcess
      Called for each process before any of them receive the PamStart command
      Overrides:
      prepareProcess in class PamProcess
    • prepareProcessOK

      public boolean prepareProcessOK()
      Description copied from class: PamProcess
      New version of prepareProcess which get's called from PAMController prior to PAMGuard starting up. If a single process returns false from this function, startup will be aborted.

      For backwards compatibility (to save the need to modify every process) there is a default function which simply calls the older prepareProcess() function, then return true, but processes which might fail can override this and return false instead if they so wish.

      Initial motivation for this function was to stop millions of empty files being created when the watchdog is running but the DAQ can't start.

      Overrides:
      prepareProcessOK in class PamProcess
      Returns:
      true if it's looking highly likely that the process is going to start OK.
    • applyMask

      protected List<FFTDataUnit> applyMask(List<FFTDataUnit> batch)
      Default batch processor. Applies mask to the real part of each FFTDataUnit. Subclasses should override this to implement deep-learning mask generation. The method is called on a worker thread and should return the list of processed FFTDataUnit objects (typically the same objects with their ComplexArray modified or replaced).
    • getInputFFTData

      public FFTDataBlock getInputFFTData()
      Returns:
      the input FFT data block
    • getMask

      public PamFFTMask getMask()
      Get the Mask used to process the FFT data.
    • setMask

      public void setMask(PamFFTMask mask)
      Set the Mask used to process the FFT data.
    • getMaskFFTParams

      public MaskedFFTParamters getMaskFFTParams()
    • getUnitsToBuffer

      public int getUnitsToBuffer()
      Get the number of FFT units that are buffered before processing.
      Returns:
      the number of FFT data units to buffer before processing.
    • setMaxPendingBatches

      public void setMaxPendingBatches(int maxPendingBatches)
      Configure the maximum number of in-flight batches allowed before newData blocks.
    • getMaxPendingBatches

      public int getMaxPendingBatches()
    • getMaskedFFTDataBlock

      protected PamDataBlock getMaskedFFTDataBlock()
      Get the output masked FFT data block.
      Returns:
      the masked FFT data block.