added plotmanipulator centerzero to procplots.py
authorillysam <devnull@localhost>
Sat, 6 Feb 2010 13:36:44 +0000 (13:36 +0000)
committerillysam <devnull@localhost>
Sat, 6 Feb 2010 13:36:44 +0000 (13:36 +0000)
plugins/core.ini
plugins/procplots.py

index ac026ec3b20ba057685d409fca99f3c02190725d..bcfeb5c4291b9c9f277b9c1171e88c3a2d0de14c 100644 (file)
@@ -1,16 +1,21 @@
 [plotmanipulators]\r
     [[order]]\r
-        default = '"correct", "median", "absvalue", "flatten", "multiplier", "clamp", "threshold", "coincident", "showconvoluted"'\r
-        elements = correct, median, absvalue, flatten, multiplier, clamp, threshold, coincident, showconvoluted\r
-        #elements = correct, median, absvalue, flatten, multiplier, clamp, threshold, coincident, showconvoluted\r
+        default = '"correct", "median", "absvalue", "flatten", "multiplier", "clamp", "threshold", "coincident", "showconvoluted", "centerzero"'\r
+        elements = correct, median, absvalue, flatten, multiplier, clamp, threshold, coincident, showconvoluted, centerzero\r
+        #elements = correct, median, absvalue, flatten, multiplier, clamp, threshold, coincident, showconvoluted, centerzero\r
         type = arraystring\r
-        value = '"correct" "median" "absvalue" "flatten" "multiplier" "clamp" "threshold" "coincident" "showconvoluted"'\r
+        value = '"correct" "median" "absvalue" "flatten" "multiplier" "clamp" "threshold" "coincident" "showconvoluted" "centerzero"'\r
     \r
     [[absvalue]]\r
         default = False\r
         type = boolean\r
         value = False\r
     \r
+    [[centerzero]]\r
+        default = False\r
+        type = boolean\r
+        value = True\r
+    \r
     [[clamp]]\r
         default = False\r
         type = boolean\r
index 7324b77250a60c3efb4b5fc4cc76d3288a62d999..b7dd12c6c3f4f8eb9f962bcb3ff5ebc19a1f7700 100644 (file)
@@ -16,7 +16,7 @@ import wxversion
 wxversion.select(lh.WX_GOOD)
 
 import copy
-from numpy import arange, diff, fft
+from numpy import arange, diff, fft, median
 from scipy.signal import medfilt
 
 from lib.peakspot import conv_dx
@@ -80,6 +80,7 @@ class procplotsCommands:
         '''
         column = self.GetIntFromConfig('procplots', 'derivplot', 'column')
         row = self.GetIntFromConfig('procplots', 'derivplot', 'row')
+        #TODO: what os select good for?
         select = self.GetBoolFromConfig('procplots', 'derivplot', 'select')
         whatset_str = self.GetStringFromConfig('procplots', 'derivplot', 'whatset')
         whatset = []
@@ -190,6 +191,31 @@ class procplotsCommands:
 
         return plot
 
+    def plotmanip_centerzero(self, plot, current, customvalue=False):
+        '''
+        Centers the force curve so the median (the free level) corresponds to 0 N
+        '''
+        #use only for force spectroscopy experiments!
+        if current.driver.experiment != 'smfs':
+            return plot
+    
+        if not customvalue:
+            customvalue = self.GetBoolFromConfig('procplots', 'centerzero')
+        if not customvalue:
+            return plot
+
+        levelapp = float(median(plot.curves[lh.EXTENSION].y))
+        levelret = float(median(plot.curves[lh.RETRACTION].y))
+    
+        level = (levelapp + levelret)/2    
+    
+        plot.curves[lh.EXTENSION].y = [i-level for i in plot.curves[lh.EXTENSION].y]
+        plot.curves[lh.RETRACTION].y = [i-level for i in plot.curves[lh.RETRACTION].y]
+        
+#        plot.vectors[0][1]=approach    
+#        plot.vectors[1][1]=retract    
+        return plot
+    
 #FFT---------------------------
     def fft_plot(self, curve, boundaries=[0, -1]):
         '''