/usr/share/pyshared/PyMca/PyMcaPlugins/MathPlugins.py is in pymca 4.5.0-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | try:
import Plugin1DBase
except ImportError:
from . import Plugin1DBase
import numpy
try:
import PyMca.PyMca_Icons as PyMca_Icons
import PyMca.SimpleMath as SimpleMath
except ImportError:
#This happens in frozen versions
import PyMca_Icons
import SimpleMath
swapsign = PyMca_Icons.swapsign
derive = PyMca_Icons.derive
class MathPlugins(Plugin1DBase.Plugin1DBase):
def __init__(self, plotWindow, **kw):
Plugin1DBase.Plugin1DBase.__init__(self, plotWindow, **kw)
self.methodDict = {'Invert':[self.invert,
"Multiply active curve by -1",
swapsign],
'Derivate':[self.derivate,
"Derivate zoomed active curve",
derive]}
self.simpleMath = SimpleMath.SimpleMath()
#Methods to be implemented by the plugin
def getMethods(self, plottype=None):
"""
A list with the NAMES associated to the callable methods
that are applicable to the specified plot.
Plot type can be "SCAN", "MCA", None, ...
"""
names = list(self.methodDict.keys())
names.sort()
return names
def getMethodToolTip(self, name):
"""
Returns the help associated to the particular method name or None.
"""
return self.methodDict[name][1]
def getMethodPixmap(self, name):
"""
Returns the pixmap associated to the particular method name or None.
"""
return self.methodDict[name][2]
def applyMethod(self, name):
"""
The plugin is asked to apply the method associated to name.
"""
self.methodDict[name][0]()
return
def invert(self):
activeCurve = self.getActiveCurve()
if activeCurve is None:
return
x, y, legend, info = activeCurve [0:4]
operations = info.get("operations", [])
operations.append("Invert")
info['operations'] = operations
legend = "-("+legend+")"
self.addCurve(x, -y, legend=legend, info=info, replot=True)
def derivate(self):
activeCurve = self.getActiveCurve()
if activeCurve is None:
return
x, y, legend, info = activeCurve [0:4]
xlimits=self.getGraphXLimits()
x, y = self.simpleMath.derivate(x, y, xlimits=xlimits)
info['ylabel'] = info['ylabel'] + "'"
operations = info.get("operations", [])
operations.append("derivate")
info['operations'] = operations
legend = legend+"'"
self.addCurve(x, y, legend=legend, info=info, replot=True)
MENU_TEXT = "Built-in Math"
def getPlugin1DInstance(plotWindow, **kw):
ob = MathPlugins(plotWindow)
return ob
if __name__ == "__main__":
from PyMca import Plot1D
x = numpy.arange(100.)
y = x * x
plot = Plot1D.Plot1D()
plot.addCurve(x, y, "dummy")
plot.addCurve(x+100, -x*x)
plugin = getPlugin1DInstance(plot)
for method in plugin.getMethods():
print(method, ":", plugin.getMethodToolTip(method))
plugin.applyMethod(plugin.getMethods()[0])
curves = plugin.getAllCurves()
for curve in curves:
print(curve[2])
print("LIMITS = ", plugin.getGraphYLimits())
|