Ticket #11767 (new)
Python Algorithm Issue
| Reported by: | Owen Arnold | Owned by: | Martyn Gigg |
|---|---|---|---|
| Priority: | critical | Milestone: | Release 3.5 |
| Component: | Python | Keywords: | |
| Cc: | Blocked By: | ||
| Blocking: | Tester: |
Description
This came to Mantid Help:
Hi,
Not for this release (so don’t panic!)
I noticed and interesting feature when trying to create a python algorithm. The only difference between the scripts below is defining the properties. The script that doesn’t work, works if I only have 3 declareProperty lines. If a forth is added then I get an error self is not defined.
Enjoy!
Aidy
This script doesn’t work
from mantid.api import * # PythonAlgorithm, registerAlgorithm, WorkspaceProperty
class ApplyNegMuCorrection(PythonAlgorithm):
def PyInit(self):
self.declareProperty(name="First Run Number",
defaultValue=1700,
doc="First Run Number")
self.declareProperty("Last Run Number",1701,doc="Last Run Number")
self.declareProperty("Last1 Run Number",1701,doc="Last Run Number")
self.declareProperty("Last2 Run Number",1701,doc="Last Run Number")
#self.declareProperty("Gain for ISIS High E Detector A",
# 1.2,
# doc="Gain for ISIS detector Ax+B")
#self.declareProperty("Offset for ISIS High E Detector, B",
# 0.0,
# doc="Offset for ISIS detector Ax+B")
#self.declareProperty("Detector RIKEN High E, A",1.0,doc="Gain for RIKEN detector Ax+B")
#self.declareProperty("Detector RIKEN High E, B",0.0,doc="Gain for RIKEN detector Ax+B")
#self.declareProperty("Detector ISIS Low E, A",1.0,doc="Gain for ISIS detector Ax+B")
#self.declareProperty("Detector ISIS Low E, B",0.0,doc="Gain for ISIS detector Ax+B")
#self.declareProperty(WorkspaceProperty("OutputWorkspace","",Direction.Output))
def category(self):
return "CorrectionFunctions;Muon"
def PyExec(self):
iws = self.getProperty("InputWorkspace").value
x1=self.getProperty("x1").value
y1=self.getProperty("y1").value
ows=WorkspaceFactory.create(iws)
for s in range(iws.getNumberHistograms()):
y=ows.getAxis(1).getValue(s)
print "y[",s,"]=",y
ows.dataX(s)[:]=iws.dataX(s)[:]
ows.dataE(s)[:]=iws.dataE(s)[:]
for t in range(len(ows.dataY(s))):
x=ows.dataX(s)[t]
ows.dataY(s)[t]=iws.dataY(s)[t]+x1*x+y1*y
self.setProperty("OutputWorkspace",ows)
AlgorithmFactory.subscribe(ApplyNegMuCorrection)
This script does
from mantid.api import * # PythonAlgorithm, registerAlgorithm, WorkspaceProperty
class ApplyNegMuCorrection(PythonAlgorithm):
def PyInit(self):
self.declareProperty(name="First Run Number",defaultValue=1700,doc="First Run Number")
self.declareProperty(name="Last Run Number",defaultValue=1701,doc="Last Run Number")
self.declareProperty(name="First2 Run Number",defaultValue=1700,doc="First Run Number")
self.declareProperty(name="First3 Run Number",defaultValue=1700,doc="First Run Number")
#self.declareProperty("Last Run Number",1701,doc="Last Run Number")
#self.declareProperty("Last1 Run Number",1701,doc="Last Run Number")
#self.declareProperty("Last2 Run Number",1701,doc="Last Run Number")
#self.declareProperty("Gain for ISIS High E Detector A",
# 1.2,
# doc="Gain for ISIS detector Ax+B")
#self.declareProperty("Offset for ISIS High E Detector, B",
# 0.0,
# doc="Offset for ISIS detector Ax+B")
#self.declareProperty("Detector RIKEN High E, A",1.0,doc="Gain for RIKEN detector Ax+B")
#self.declareProperty("Detector RIKEN High E, B",0.0,doc="Gain for RIKEN detector Ax+B")
#self.declareProperty("Detector ISIS Low E, A",1.0,doc="Gain for ISIS detector Ax+B")
#self.declareProperty("Detector ISIS Low E, B",0.0,doc="Gain for ISIS detector Ax+B")
#self.declareProperty(WorkspaceProperty("OutputWorkspace","",Direction.Output))
def category(self):
return "CorrectionFunctions;Muon"
def PyExec(self):
iws = self.getProperty("InputWorkspace").value
x1=self.getProperty("x1").value
y1=self.getProperty("y1").value
ows=WorkspaceFactory.create(iws)
for s in range(iws.getNumberHistograms()):
y=ows.getAxis(1).getValue(s)
print "y[",s,"]=",y
ows.dataX(s)[:]=iws.dataX(s)[:]
ows.dataE(s)[:]=iws.dataE(s)[:]
for t in range(len(ows.dataY(s))):
x=ows.dataX(s)[t]
ows.dataY(s)[t]=iws.dataY(s)[t]+x1*x+y1*y
self.setProperty("OutputWorkspace",ows)
AlgorithmFactory.subscribe(ApplyNegMuCorrection)
Note: See
TracTickets for help on using
tickets.

This ticket has been transferred to github issue 12605