[yoda-svn] r420 - in trunk: . pyext/yoda pyext/yoda/include

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Wed Dec 7 22:06:04 GMT 2011


Author: buckley
Date: Wed Dec  7 22:06:04 2011
New Revision: 420

Log:
Mapping the Dbn1D and Dbn2D classes into Python.

Modified:
   trunk/ChangeLog
   trunk/pyext/yoda/Makefile.am
   trunk/pyext/yoda/include/20-Dbn1D.pyx
   trunk/pyext/yoda/include/20-Dbn2D.pyx

Modified: trunk/ChangeLog
==============================================================================
--- trunk/ChangeLog	Wed Dec  7 21:29:15 2011	(r419)
+++ trunk/ChangeLog	Wed Dec  7 22:06:04 2011	(r420)
@@ -1,5 +1,7 @@
 2011-12-07  Andy Buckley  <andy.buckley at cern.ch>
 
+	* Mapping the Dbn1D and Dbn2D classes into Python.
+
 	* Adding an outflows() accessor to Histo2D.
 
 	* Writing out total dbn lines for Histo1D and Profile1D in the

Modified: trunk/pyext/yoda/Makefile.am
==============================================================================
--- trunk/pyext/yoda/Makefile.am	Wed Dec  7 21:29:15 2011	(r419)
+++ trunk/pyext/yoda/Makefile.am	Wed Dec  7 22:06:04 2011	(r420)
@@ -9,4 +9,3 @@
 
 clean-local:
 	rm yoda.cpp yoda.pyx
-

Modified: trunk/pyext/yoda/include/20-Dbn1D.pyx
==============================================================================
--- trunk/pyext/yoda/include/20-Dbn1D.pyx	Wed Dec  7 21:29:15 2011	(r419)
+++ trunk/pyext/yoda/include/20-Dbn1D.pyx	Wed Dec  7 22:06:04 2011	(r420)
@@ -1,6 +1,28 @@
 cdef extern from "YODA/Dbn1D.h" namespace "YODA":
     cdef cppclass cDbn1D "Dbn1D":
-        pass
+        cDbn1D()
+        cDbn1D(unsigned int numEntries, double sumW, double sumW2, double sumWX, double sumWX2)
+        void fill(double val, double weight)
+        void reset()
+        void scaleW(double scalefactor)
+        void scaleX(double factor)
+        double mean()
+        double xMean()
+        double variance()
+        double xVariance()
+        double stdDev()
+        double xStdDev()
+        double stdErr()
+        double xStdErr()
+        double rms()
+        double xRMS()
+        unsigned long numEntries()
+        double effNumEntries()
+        double sumW()
+        double sumW2()
+        double sumWX()
+        double sumWX2()
+        # TODO: map operator+ and operator-, both internal and external
 
 
 cdef class Dbn1D:
@@ -14,6 +36,16 @@
         if self._dealloc:
             del self.thisptr
 
+
+    def __init__(self, *args, **kwargs):
+        cdef:
+            unsigned int numEntries
+            double sumW, sumW2, sumWX, sumWX2
+        assert len(args) == 5
+        numEntries, sumW, sumW2, sumWX, sumWX2 = args
+        self.setptr(new cDbn1D(numEntries, sumW, sumW2, sumWX, sumWX2), True)
+
+
     cdef Dbn1D setptr(self, cDbn1D *ptr, bool dealloc):
         if self._dealloc:
             del self.thisptr
@@ -26,6 +58,70 @@
         return self.thisptr
 
 
+    def fill(self, double x, double weight=1.0):
+        self.ptr().fill(x, weight)
+
+    def reset(self):
+        self.ptr().reset()
+
+    def scaleW(self, scalefactor):
+        self.ptr().scaleW(scalefactor)
+
+    def scaleX(self, factor):
+        self.ptr().scaleX(factor)
+
+    def mean(self):
+        return self.ptr().mean()
+
+    def xMean(self):
+        return self.ptr().xMean()
+
+    def variance(self):
+        return self.ptr().variance()
+
+    def xVariance(self):
+        return self.ptr().xVariance()
+
+    def stdDev(self):
+        return self.ptr().stdDev()
+
+    def xStdDev(self):
+        return self.ptr().xStdDev()
+
+    def stdErr(self):
+        return self.ptr().stdDev()
+
+    def xStdErr(self):
+        return self.ptr().xStdDev()
+
+    def rms(self):
+        return self.ptr().rms()
+
+    def xRMS(self):
+        return self.ptr().xRMS()
+
+    def numEntries(self):
+        return self.ptr().numEntries()
+
+    def effNumEntries(self):
+        return self.ptr().effNumEntries()
+
+    def sumW(self):
+        return self.ptr().sumW()
+
+    def sumW2(self):
+        return self.ptr().sumW2()
+
+    def sumWX(self):
+        return self.ptr().sumWX()
+
+    def sumWX2(self):
+        return self.ptr().sumWX2()
+
+    # TODO: map operator+ and operator-, both internal and external
+
+
+
 cdef Dbn1D Dbn1D_fromptr(cDbn1D *ptr, dealloc=False):
     # Construct a Python Dbn1D from a pointer to a cDbn1D,
     # without calling __init__ and excessive memory allocation

Modified: trunk/pyext/yoda/include/20-Dbn2D.pyx
==============================================================================
--- trunk/pyext/yoda/include/20-Dbn2D.pyx	Wed Dec  7 21:29:15 2011	(r419)
+++ trunk/pyext/yoda/include/20-Dbn2D.pyx	Wed Dec  7 22:06:04 2011	(r420)
@@ -1,6 +1,33 @@
 cdef extern from "YODA/Dbn2D.h" namespace "YODA":
     cdef cppclass cDbn2D "Dbn2D":
-        pass
+        cDbn2D()
+        cDbn2D(unsigned int numEntries, double sumW, double sumW2, double sumWX, double sumWX2, double sumWY, double sumWY2, double sumWXY)
+        void fill(double valX, double valY, double weight)
+        void reset()
+        void scaleW(double scalefactor)
+        void scaleX(double factor)
+        void scaleY(double factor)
+        void scaleXY(double factor)
+        double xMean()
+        double yMean()
+        double xVariance()
+        double yVariance()
+        double xStdDev()
+        double yStdDev()
+        double xStdErr()
+        double yStdErr()
+        double yRMS()
+        double xRMS()
+        unsigned long numEntries()
+        double effNumEntries()
+        double sumW()
+        double sumW2()
+        double sumWX()
+        double sumWX2()
+        double sumWY()
+        double sumWY2()
+        double sumWXY()
+        # TODO: map operator+ and operator-, both internal and external
 
 
 cdef class Dbn2D:
@@ -14,6 +41,16 @@
         if self._dealloc:
             del self.thisptr
 
+
+    def __init__(self, *args, **kwargs):
+        cdef:
+            unsigned int numEntries
+            double sumW, sumW2, sumWX, sumWX2, sumWY, sumWY2, sumWXY
+        assert len(args) == 8
+        numEntries, sumW, sumW2, sumWX, sumWX2, sumWY, sumWY2, sumWXY = args
+        self.setptr(new cDbn2D(numEntries, sumW, sumW2, sumWX, sumWX2, sumWY, sumWY2, sumWXY), True)
+
+
     cdef Dbn2D setptr(self, cDbn2D *ptr, bool dealloc):
         if self._dealloc:
             del self.thisptr
@@ -26,6 +63,82 @@
         return self.thisptr
 
 
+    def fill(self, double x, double y, double weight=1.0):
+        self.ptr().fill(x, y, weight)
+
+    def reset(self):
+        self.ptr().reset()
+
+    def scaleW(self, scalefactor):
+        self.ptr().scaleW(scalefactor)
+
+    def scaleX(self, factor):
+        self.ptr().scaleX(factor)
+
+    def scaleY(self, factor):
+        self.ptr().scaleY(factor)
+
+    def xMean(self):
+        return self.ptr().xMean()
+
+    def yMean(self):
+        return self.ptr().yMean()
+
+    def xVariance(self):
+        return self.ptr().xVariance()
+
+    def yVariance(self):
+        return self.ptr().yVariance()
+
+    def xStdDev(self):
+        return self.ptr().xStdDev()
+
+    def yStdDev(self):
+        return self.ptr().yStdDev()
+
+    def xStdErr(self):
+        return self.ptr().xStdDev()
+
+    def yStdErr(self):
+        return self.ptr().yStdDev()
+
+    def xRMS(self):
+        return self.ptr().xRMS()
+
+    def yRMS(self):
+        return self.ptr().yRMS()
+
+    def numEntries(self):
+        return self.ptr().numEntries()
+
+    def effNumEntries(self):
+        return self.ptr().effNumEntries()
+
+    def sumW(self):
+        return self.ptr().sumW()
+
+    def sumW2(self):
+        return self.ptr().sumW2()
+
+    def sumWX(self):
+        return self.ptr().sumWX()
+
+    def sumWX2(self):
+        return self.ptr().sumWX2()
+
+    def sumWY(self):
+        return self.ptr().sumWY()
+
+    def sumWY2(self):
+        return self.ptr().sumWY2()
+
+    def sumWXY(self):
+        return self.ptr().sumWXY()
+
+    # TODO: map operator+ and operator-, both internal and external
+
+
+
 cdef Dbn2D Dbn2D_fromptr(cDbn2D *ptr, dealloc=False):
     # Construct a Python Dbn2D from a pointer to a cDbn2D,
     # without calling __init__ and excessive memory allocation


More information about the yoda-svn mailing list