Source code for ccpn.AnalysisScreen.pipes.SetPeaksFigureOfMerit

#=========================================================================================
# Licence, Reference and Credits
#=========================================================================================
__copyright__ = "Copyright (C) CCPN project (http://www.ccpn.ac.uk) 2014 - 2021"
__credits__ = ("Ed Brooksbank, Luca Mureddu, Timothy J Ragan & Geerten W Vuister")
__licence__ = ("CCPN licence. See http://www.ccpn.ac.uk/v3-software/downloads/license")
__reference__ = ("Skinner, S.P., Fogh, R.H., Boucher, W., Ragan, T.J., Mureddu, L.G., & Vuister, G.W.",
                 "CcpNmr AnalysisAssign: a flexible platform for integrated NMR analysis",
                 "J.Biomol.Nmr (2016), 66, 111-124, http://doi.org/10.1007/s10858-016-0060-y")
#=========================================================================================
# Last code modification
#=========================================================================================
__modifiedBy__ = "$modifiedBy: Luca Mureddu $"
__dateModified__ = "$dateModified: 2021-04-19 14:39:27 +0100 (Mon, April 19, 2021) $"
__version__ = "$Revision: 3.0.3 $"
#=========================================================================================
# Created
#=========================================================================================
__author__ = "$Author: Luca Mureddu $"
__date__ = "$Date: 2021-04-19 14:31:10 +0100 (Mon, April 19, 2021) $"
#=========================================================================================
# Start of code
#=========================================================================================


#### GUI IMPORTS
from ccpn.AnalysisScreen.gui.widgets import HitFinderWidgets as hw
from ccpn.ui.gui.widgets.PipelineWidgets import GuiPipe
from ccpn.ui.gui.widgets.DoubleSpinbox import ScientificDoubleSpinBox
from ccpn.ui.gui.widgets.Label import Label

#### NON GUI IMPORTS
from pprint import pformat
from ccpn.util.Logging import getLogger
from ccpn.framework.lib.pipeline.PipeBase import SpectraPipe, PIPE_SCREEN
from ccpn.util.Common import flattenLists

########################################################################################################################
###   Attributes:
###   Used in setting the dictionary keys on _kwargs either in GuiPipe and Pipe
########################################################################################################################

## Widget variables and/or _kwargs keys
PipeName = 'Set Peak Figure of Merit'
PeakListIndice = 'PeakList_Indice'
MinimumSNratio = 'Minimum_S/N_ratio'
FigureOfMerit = 'Set_Figure_of_Merit'

DefaultPeakListIndice = -1
DefaultMinSNR  = 1.5
DefaultFoM  = 0


########################################################################################################################
##########################################      ALGORITHM       ########################################################
########################################################################################################################




########################################################################################################################
##########################################     GUI PIPE    #############################################################
########################################################################################################################


[docs]class SetFigureOfMeritGuiPipe(GuiPipe): pipeName = PipeName def __init__(self, name=pipeName, parent=None, project=None, **kw): super(SetFigureOfMeritGuiPipe, self) GuiPipe.__init__(self, parent=parent, name=name, project=project, **kw) self.parent = parent row = 0 Label(self.pipeFrame, MinimumSNratio, grid=(row, 0)) setattr(self, MinimumSNratio, ScientificDoubleSpinBox(self.pipeFrame, value=DefaultMinSNR, grid=(row, 1))) row += 1 Label(self.pipeFrame, FigureOfMerit, grid=(row, 0)) setattr(self, FigureOfMerit, ScientificDoubleSpinBox(self.pipeFrame, value=DefaultFoM, grid=(row, 1))) self._updateWidgets()
######################################################################################################################## ########################################## PIPE ############################################################# ########################################################################################################################
[docs]class SetFigureOfMeritPipe(SpectraPipe): """ Apply phasing to all the spectra in the pipeline """ guiPipe = SetFigureOfMeritGuiPipe pipeName = PipeName pipeCategory = PIPE_SCREEN _kwargs = { PeakListIndice : DefaultPeakListIndice, MinimumSNratio : DefaultMinSNR, FigureOfMerit: DefaultFoM, }
[docs] def runPipe(self, spectra): """ :param spectra: inputData :return: spectra This pipe could have other generic conditions. """ getLogger().info(pformat(self._kwargs, compact=True)) minSNR = self._kwargs[MinimumSNratio] figOfMer = self._kwargs[FigureOfMerit] if self.project is not None: peaks = [sp.peakLists[DefaultPeakListIndice].peaks for sp in spectra] for peak in flattenLists(peaks): if peak.signalToNoiseRatio < minSNR: peak.figureOfMerit = figOfMer return spectra
SetFigureOfMeritPipe.register() # Registers the pipe in the pipeline