|
Go to the documentation of this file. 1 #ifndef NPSTAT_ABSBANDWIDTHCV_HH_
2 #define NPSTAT_ABSBANDWIDTHCV_HH_
24 #include "npstat/wrap/arrayNDToNumpy.hh"
25 #include "npstat/wrap/numpyArrayUtils.hh"
30 struct AbsPolyFilter1D;
31 struct AbsPolyFilterND;
44 typename Num3 = double,
45 typename Num4 = double
49 typedef Numeric bin_type;
50 typedef Num2 density_type;
51 typedef Num3 coord_type;
52 typedef Num4 weight_type;
78 const Num2* densityEstimate, unsigned lenEstimate,
84 double effectiveSampleSize,
85 const Num2* densityEstimate, unsigned lenEstimate,
98 const std::pair<Num3, Num4>* sample, unsigned long lenSample,
99 const Num2* densityEstimate, unsigned lenEstimate,
104 const std::vector<std::pair<Num3, Num4> >& sample,
105 const Num2* densityEstimate, unsigned lenEstimate,
108 const std::pair<Num3, Num4>* ps = 0;
109 const unsigned long lenSample = sample.size();
113 densityEstimate, lenEstimate, filterUsed);
122 const int typenum = numpyArrayType(input);
123 if (typenum != NumpyTypecode<double>::code)
124 throw std::invalid_argument( "In npstat::AbsBandwidthCV1D::cv: "
125 "unsupported input array type");
126 const unsigned datalen = histo. nBins();
127 if (!isNumpyShapeCompatible(input, &datalen, 1U)) throw std::invalid_argument(
128 "In npstat::AbsBandwidthCV1D::cv: incompatible array shape");
129 const Num2* in = ( double*)PyArray_DATA((PyArrayObject*)input);
130 return this-> operator()(histo, in, datalen, filterUsed);
133 inline double cvWeighted(
134 const HistoND<Numeric,HistoAxis>& histo,
135 const double effectiveSampleSize,
137 const AbsPolyFilter1D& filterUsed) const
139 const int typenum = numpyArrayType(input);
140 if (typenum != NumpyTypecode<double>::code)
141 throw std::invalid_argument( "In npstat::AbsBandwidthCV1D::cvWeighted: "
142 "unsupported input array type");
143 const unsigned datalen = histo.nBins();
144 if (!isNumpyShapeCompatible(input, &datalen, 1U)) throw std::invalid_argument(
145 "In npstat::AbsBandwidthCV1D::cvWeighted: incompatible array shape");
146 const Num2* in = ( double*)PyArray_DATA((PyArrayObject*)input);
147 return this-> operator()(histo, effectiveSampleSize, in, datalen, filterUsed);
150 inline double cvWeightedSample(
151 const HistoND<Numeric,HistoAxis>& histo,
152 const std::vector<std::pair<Num3, Num4> >& sample,
154 const AbsPolyFilter1D& filterUsed) const
156 const int typenum = numpyArrayType(input);
157 if (typenum != NumpyTypecode<double>::code)
158 throw std::invalid_argument( "In npstat::AbsBandwidthCV1D::cvWeightedSample: "
159 "unsupported input array type");
160 const unsigned datalen = histo.nBins();
161 if (!isNumpyShapeCompatible(input, &datalen, 1U)) throw std::invalid_argument(
162 "In npstat::AbsBandwidthCV1D::cvWeightedSample: incompatible array shape");
163 const Num2* in = ( double*)PyArray_DATA((PyArrayObject*)input);
164 return this-> operator()(histo, sample, in, datalen, filterUsed);
174 template< typename Numeric, class Array>
177 typedef Numeric bin_type;
178 typedef Array density_type;
191 const Array& densityEstimate,
197 double effectiveSampleSize,
198 const Array& densityEstimate,
207 const int typenum = numpyArrayType(input);
208 if (typenum != NumpyTypecode<double>::code)
209 throw std::invalid_argument( "In npstat::AbsBandwidthCVND::cv: "
210 "unsupported input array type");
212 if (!isNumpyShapeCompatible(input, shape, histo. dim()))
213 throw std::invalid_argument( "In npstat::AbsBandwidthCVND::cv: "
214 "incompatible array shape");
215 double* in = ( double*)PyArray_DATA((PyArrayObject*)input);
217 return this-> operator()(histo, wrap, filterUsed);
220 inline double cvWeighted(
222 const double effectiveSampleSize,
226 const int typenum = numpyArrayType(input);
227 if (typenum != NumpyTypecode<double>::code)
228 throw std::invalid_argument( "In npstat::AbsBandwidthCVND::cvWeighted: "
229 "unsupported input array type");
231 if (!isNumpyShapeCompatible(input, shape, histo. dim()))
232 throw std::invalid_argument( "In npstat::AbsBandwidthCVND::cvWeighted: "
233 "incompatible array shape");
234 double* in = ( double*)PyArray_DATA((PyArrayObject*)input);
236 return this-> operator()(histo, effectiveSampleSize, wrap, filterUsed);
Arbitrary-dimensional histogram template.
const unsigned * shapeData() const Definition: ArrayND.hh:335
Definition: HistoND.hh:46
const ArrayND< Numeric > & binContents() const Definition: HistoND.hh:197
unsigned long nBins() const Definition: HistoND.hh:226
unsigned dim() const Definition: HistoND.hh:187
Definition: AbsArrayProjector.hh:14
ArrayND< Numeric > externalMemArrayND(Numeric *data, const unsigned *shape, unsigned dim)
Definition: AbsBandwidthCV.hh:48
virtual double operator()(const HistoND< Numeric > &histo, const Num2 *densityEstimate, unsigned lenEstimate, const AbsPolyFilter1D &filterUsed) const =0
virtual double operator()(const HistoND< Numeric > &histo, double effectiveSampleSize, const Num2 *densityEstimate, unsigned lenEstimate, const AbsPolyFilter1D &filterUsed) const =0
virtual double operator()(const HistoND< Numeric > &histo, const std::pair< Num3, Num4 > *sample, unsigned long lenSample, const Num2 *densityEstimate, unsigned lenEstimate, const AbsPolyFilter1D &filterUsed) const =0
Definition: AbsBandwidthCV.hh:176
virtual double operator()(const HistoND< Numeric > &histo, const Array &densityEstimate, const AbsPolyFilterND &filterUsed) const =0
virtual double operator()(const HistoND< Numeric > &histo, double effectiveSampleSize, const Array &densityEstimate, const AbsPolyFilterND &filterUsed) const =0
Definition: AbsPolyFilter1D.hh:27
Definition: AbsPolyFilterND.hh:27
|