Apply 'name' argument in plugin.playlist.FilterCommand
[hooke.git] / hooke / plugin / convfilt.py
index e7debb6acbb43c772d563c13a61c6b0fbd78947d..7ca9861191f9ffc3acd3910fb4aa37cee82d9a23 100644 (file)
@@ -38,14 +38,14 @@ from multiprocessing import Queue
 
 import numpy
 
-from ..command import Command, Argument, Failure
+from ..command import Command, Argument, Success, Failure
 from ..config import Setting
 from ..experiment import VelocityClamp
 from ..plugin import Plugin, argument_to_setting
 from ..plugin.curve import CurveArgument
 from ..plugin.playlist import FilterCommand
 from ..plugin.vclamp import scale
-from ..util.peak import find_peaks, find_peaks_arguments, Peak
+from ..util.peak import find_peaks, find_peaks_arguments, Peak, _kwargs
 
 
 class ConvFiltPlugin (Plugin):
@@ -72,7 +72,7 @@ Minimum number of peaks for curve acceptance.
         for key,value in [('cut side', 'positive'),
                           ('stable', 0.005),
                           ('max cut', 0.2),
-                          ('min deviation', 5.0),
+                          ('min deviations', 5.0),
                           ('min points', 1),
                           ('see double', 10e-9),
                           ]:
@@ -136,8 +136,8 @@ class ConvolutionPeaksCommand (Command):
             start_index += 1
         conv = numpy.convolve(d_data[start_index:], params['convolution'],
                               mode='valid')
-        kwargs = dict([(a.name, params[a.name]) for a in find_peaks_arguments])
-        peaks = find_peaks(conv, **kwargs)
+        peaks = find_peaks(conv, **_kwargs(params, find_peaks_arguments,
+                                            argument_input_keys=True))
         for peak in peaks:
             peak.name = 'convolution of %s with %s' \
                 % (params['deflection column name'], params['convolution'])
@@ -189,7 +189,7 @@ class ConvolutionFilterCommand (FilterCommand):
     .. [#brucale2009] M. Brucale, M. Sandal, S. Di Maio, A. Rampioni,
       I. Tessari, L. Tosatto, M. Bisaglia, L. Bubacco, B. Samorì.
       "Pathogenic mutations shift the equilibria of
-      :math:`\alpha`-Synuclein single molecules towards structured
+      α-Synuclein single molecules towards structured
       conformers."
       Chembiochem., 2009.
       doi: `10.1002/cbic.200800581 <http://dx.doi.org/10.1002/cbic.200800581>`_
@@ -210,9 +210,12 @@ class ConvolutionFilterCommand (FilterCommand):
                         if c.name=='convolution peaks'][0]
         conv_command.run(hooke, inq, outq, **params)
         peaks = outq.get()
-        if not isinstance(peaks[0], Peak):
+        if not (isinstance(peaks, list) and (len(peaks) == 0
+                                             or isinstance(peaks[0], Peak))):
             raise Failure('Expected a list of Peaks, not %s' % peaks)
         ret = outq.get()
         if not isinstance(ret, Success):
             raise ret
+        if params['min peaks'] == None: # Use configured default value.
+            params['min peaks'] = self.plugin.config['min peaks']
         return len(peaks) >= params['min peaks']