multi-file pyx ext non-trivial
[sddekit.git] / python / hist.pyx
blobf16a2bcd578b3f93af8a44d50df2766dedcbeb05
1 # copyright 2016 Apache 2 sddekit authors
3 from sddekit_h cimport *
4 from sddekit cimport *
5 import numpy as np
7 cdef class Hist(object):
8 cdef sd_hist *h
10 def __init__(self,
11 np.ndarray[uint32_t, ndim=1, mode="c"] vi not None,
12 np.ndarray[double, ndim=1, mode="c"] vd not None, double t0, double dt):
13 self.h = sd_hist_new_default(vi.size,
14 <uint32_t*> vi.data,
15 <double*> vd.data,
16 np.float64(t0),
17 np.float64(dt))
19 def __del__(self):
20 if self.h != NULL:
21 self.h.free(self.h)
23 def fill(self, filler):
24 cdef sd_hfill *hf = hfill_py_new(filler)
25 cdef sd_stat stat = self.h.fill(self.h, hf)
26 hf.free(hf)
27 if stat == SD_ERR:
28 raise Exception('fill failed.')
30 def get(self, double t):
31 cdef np.ndarray[double, ndim=1] aff = np.empty((self.nd(),), np.float64)
32 self.h.get(self.h, t, <double*> aff.data)
33 return aff
35 def set(self, double t, np.ndarray[double, ndim=1] eff):
36 # void sd_hist_set(sd_hist * h, double t, double * eff)
37 self.h.set(self.h, t, <double*> eff.data)
39 def maxvi(self):
40 return self.h.get_maxvi(self.h)
42 def nu(self):
43 return self.h.get_nu(self.h)
45 def nd(self):
46 return self.h.get_nd(self.h)
48 def t(self):
49 return self.h.get_t(self.h)
51 def dt(self):
52 return self.h.get_dt(self.h)
54 def vi2i(self, i):
55 return self.h.get_vi2i(self.h, i)
57 def buf_lin(self, i):
58 return self.h.get_buf_lin(self.h, i)
60 def lim(self, i):
61 return self.h.get_lim(self.h, i)
63 def len(self, i):
64 return self.h.get_len(self.h, i)
66 def pos(self, i):
67 return self.h.get_pos(self.h, i)
69 def uvi(self, i):
70 return self.h.get_uvi(self.h, i)
72 def maxd(self, i):
73 return self.h.get_maxd(self.h, i)
75 def vi(self, i):
76 return self.h.get_vi(self.h, i)
78 def vd(self, i):
79 return self.h.get_vd(self.h, i)