Adjust fit-parameter handling for the polymer_fit plugin.
[hooke.git] / hooke / plugin / polymer_fit.py
index 7105e570841a1fca6c3c073778c71e03fb46436c..a4b65074bcd3e5ef57edb9e8b0e12941ab794a35 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 #
-# Copyright (C) 2008-2010 Alberto Gomez-Casado
+# Copyright (C) 2008-2011 Alberto Gomez-Casado
 #                         Fabrizio Benedetti
 #                         Massimo Sandal <devicerandom@gmail.com>
 #                         W. Trevor King <wking@drexel.edu>
@@ -244,7 +244,7 @@ class FJC (ModelFitter):
 
     >>> info['Kuhn length (m)'] = 2*a
     >>> model = FJC(d_data, info=info, rescale=True)
-    >>> L = model.fit(outqueue=outqueue)
+    >>> L, = model.fit(outqueue=outqueue)
     >>> fit_info = outqueue.get(block=False)
     >>> print L  # doctest: +ELLIPSIS
     3.199...e-08
@@ -340,11 +340,9 @@ class FJC (ModelFitter):
 
     def fit(self, *args, **kwargs):
         params = super(FJC, self).fit(*args, **kwargs)
-        if is_iterable(params):
-            params[0] = self.L(params[0])  # convert Lp -> L
+        params[0] = self.L(params[0])  # convert Lp -> L
+        if len(params) > 1:
             params[1] = abs(params[1])  # take the absolute value of `a`
-        else:  # params is a float
-            params = self.L(params)  # convert Lp -> L
         return params
 
     def guess_initial_params(self, outqueue=None):
@@ -507,7 +505,7 @@ class FJC_PEG (ModelFitter):
 
     >>> info['Kuhn length (m)'] = 2*kwargs['a']
     >>> model = FJC_PEG(d_data, info=info, rescale=True)
-    >>> N = model.fit(outqueue=outqueue)
+    >>> N, = model.fit(outqueue=outqueue)
     >>> fit_info = outqueue.get(block=False)
     >>> print N  # doctest: +ELLIPSIS
     96.931...
@@ -613,11 +611,9 @@ class FJC_PEG (ModelFitter):
 
     def fit(self, *args, **kwargs):
         params = super(FJC_PEG, self).fit(*args, **kwargs)
-        if is_iterable(params):
-            params[0] = self.L(params[0])  # convert Nr -> N
+        params[0] = self.L(params[0])  # convert Nr -> N
+        if len(params) > 1:
             params[1] = abs(params[1])  # take the absolute value of `a`
-        else:  # params is a float
-            params = self.L(params)  # convert Nr -> N
         return params
 
     def guess_initial_params(self, outqueue=None):
@@ -726,7 +722,7 @@ class WLC (ModelFitter):
 
     >>> info['persistence length (m)'] = 2*p
     >>> model = WLC(d_data, info=info, rescale=True)
-    >>> L = model.fit(outqueue=outqueue)
+    >>> L, = model.fit(outqueue=outqueue)
     >>> fit_info = outqueue.get(block=False)
     >>> print L  # doctest: +ELLIPSIS
     3.318...e-08
@@ -822,11 +818,9 @@ class WLC (ModelFitter):
 
     def fit(self, *args, **kwargs):
         params = super(WLC, self).fit(*args, **kwargs)
-        if is_iterable(params):
-            params[0] = self.L(params[0])  # convert Lp -> L
+        params[0] = self.L(params[0])  # convert Lp -> L
+        if len(params) > 1:
             params[1] = abs(params[1])  # take the absolute value of `p`
-        else:  # params is a float
-            params = self.L(params)  # convert Lp -> L
         return params
 
     def guess_initial_params(self, outqueue=None):
@@ -995,7 +989,6 @@ Indicies of points bounding the selected data.
         queue = Queue()
         params = model.fit(outqueue=queue)
         if True:  # TODO: if Kuhn length fixed
-            params = [params]
             a = info['Kuhn length (m)']
         else:
             a = params[1]
@@ -1022,7 +1015,6 @@ Indicies of points bounding the selected data.
         queue = Queue()
         params = model.fit(outqueue=queue)
         if True:  # TODO: if Kuhn length fixed
-            params = [params]
             a = info['Kuhn length (m)']
         else:
             a = params[1]
@@ -1048,7 +1040,6 @@ Indicies of points bounding the selected data.
         queue = Queue()
         params = model.fit(outqueue=queue)
         if True:  # TODO: if persistence length fixed
-            params = [params]
             p = info['persistence length (m)']
         else:
             p = params[1]