Loading...
Searching...
No Matches
StatisticsAlgorithmFactory.h
Go to the documentation of this file.
//# Copyright (C) 2000,2001
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//# Internet email: casa-feedback@nrao.edu.
//# Postal address: AIPS++ Project Office
//# National Radio Astronomy Observatory
//# 520 Edgemont Road
//# Charlottesville, VA 22903-2475 USA
//#
#ifndef SCIMATH_STATSALGORITHMFACTORY_H
#define SCIMATH_STATSALGORITHMFACTORY_H
#include <casacore/scimath/Mathematics/NumericTraits.h>
#include <casacore/scimath/StatsFramework/StatisticsAlgorithm.h>
#include <casacore/scimath/StatsFramework/StatisticsAlgorithmFactoryData.h>
#include <casacore/scimath/StatsFramework/StatisticsData.h>
namespace casacore {
// Provides a single interface for creation of stats algorithm objects
template <
class AccumType, class DataIterator, class MaskIterator=const Bool *,
class WeightsIterator=DataIterator
>
class StatisticsAlgorithmFactory {
public:
// to make copy() more straight forward to implement
template <
class AccumType2, class DataIterator2, class MaskIterator2,
class WeightsIterator2
>
friend class StatisticsAlgorithmFactory;
// upon construction, the object is configured to use the classical stats
// algorithm
StatisticsAlgorithmFactory();
~StatisticsAlgorithmFactory();
void configureBiweight(Int maxIter=3, Double c=6.0);
void configureClassical();
// configure to use fit to half algorithm.
void configureFitToHalf(
FitToHalfStatisticsData::CENTER centerType
=FitToHalfStatisticsData::CMEAN,
FitToHalfStatisticsData::USE_DATA useData
=FitToHalfStatisticsData::LE_CENTER, AccumType centerValue=0
);
// configure to use hinges-fences algorithm
void configureHingesFences(Double f);
// configure to use Chauvenet's criterion
void configureChauvenet(Double zscore=-1, Int maxIterations=-1);
// copy the data from this object to an object with different template
// types. Note that the AccumType of <src>other</src> must be the same as
// the AccumType of this object.
template <class DataIterator2, class MaskIterator2, class WeightsIterator2>
void copy(
StatisticsAlgorithmFactory<
AccumType, DataIterator2, MaskIterator2, WeightsIterator2
>& other
) const;
// Create a pointer to an object of a class derived from StatisticsAlgorithm
// that reflects the current configuration
std::shared_ptr<StatisticsAlgorithm<CASA_STATP>> createStatsAlgorithm() const;
StatisticsData::ALGORITHM algorithm() const { return _algorithm; }
// Throws an exception if the current configuration is not relevant
// to the Biweight algorithm
StatisticsAlgorithmFactoryData::BiweightData biweightData() const;
// Throws an exception if the current configuration is not relevant
// to the Chauvenet/zscore algorithm
StatisticsAlgorithmFactoryData::ChauvenetData chauvenetData() const;
// Throws an exception if the current configuration is not relevant
// to the hinges-fences algorithm
Double hingesFencesFactor() const;
// Throws an exception if the current configuration is not relevant
// to the fit-to-half algorithm
StatisticsAlgorithmFactoryData::FitToHalfData<AccumType>
fitToHalfData() const;
// create a record from the current configuration that can be used
// to create another object using the fromRecord() method.
Record toRecord() const;
// create an object from a record
static StatisticsAlgorithmFactory<CASA_STATP> fromRecord(const Record& r);
private:
StatisticsData::ALGORITHM _algorithm;
// hinges-fences f factor
Double _hf;
StatisticsAlgorithmFactoryData::BiweightData _biweightData;
StatisticsAlgorithmFactoryData::FitToHalfData<AccumType> _fitToHalfData;
StatisticsAlgorithmFactoryData::ChauvenetData _chauvData;
};
}
#ifndef CASACORE_NO_AUTO_TEMPLATES
#include <casacore/scimath/StatsFramework/StatisticsAlgorithmFactory.tcc>
#endif
#endif
casacore::FitToHalfStatisticsData::USE_DATA
USE_DATA
which section of data to use, greater than or less than the center value
Definition FitToHalfStatisticsData.h:46
casacore::FitToHalfStatisticsData::LE_CENTER
@ LE_CENTER
Definition FitToHalfStatisticsData.h:47
casacore::FitToHalfStatisticsData::CENTER
CENTER
choice of center point based on the corresponding statistics from the entire distribution of data,...
Definition FitToHalfStatisticsData.h:39
casacore::FitToHalfStatisticsData::CMEAN
@ CMEAN
Definition FitToHalfStatisticsData.h:40
casacore::StatisticsAlgorithmFactory::StatisticsAlgorithmFactory
StatisticsAlgorithmFactory()
upon construction, the object is configured to use the classical stats algorithm
casacore::StatisticsAlgorithmFactory::fromRecord
static StatisticsAlgorithmFactory< CASA_STATP > fromRecord(const Record &r)
create an object from a record
casacore::StatisticsAlgorithmFactory::configureFitToHalf
void configureFitToHalf(FitToHalfStatisticsData::CENTER centerType=FitToHalfStatisticsData::CMEAN, FitToHalfStatisticsData::USE_DATA useData=FitToHalfStatisticsData::LE_CENTER, AccumType centerValue=0)
configure to use fit to half algorithm.
casacore::StatisticsAlgorithmFactory::configureChauvenet
void configureChauvenet(Double zscore=-1, Int maxIterations=-1)
configure to use Chauvenet's criterion
casacore::StatisticsAlgorithmFactory::createStatsAlgorithm
std::shared_ptr< StatisticsAlgorithm< CASA_STATP > > createStatsAlgorithm() const
Create a pointer to an object of a class derived from StatisticsAlgorithm that reflects the current c...
casacore::StatisticsAlgorithmFactory::_fitToHalfData
StatisticsAlgorithmFactoryData::FitToHalfData< AccumType > _fitToHalfData
Definition StatisticsAlgorithmFactory.h:123
casacore::StatisticsAlgorithmFactory::biweightData
StatisticsAlgorithmFactoryData::BiweightData biweightData() const
Throws an exception if the current configuration is not relevant to the Biweight algorithm.
casacore::StatisticsAlgorithmFactory::configureHingesFences
void configureHingesFences(Double f)
configure to use hinges-fences algorithm
casacore::StatisticsAlgorithmFactory::configureClassical
void configureClassical()
casacore::StatisticsAlgorithmFactory::configureBiweight
void configureBiweight(Int maxIter=3, Double c=6.0)
casacore::StatisticsAlgorithmFactory::StatisticsAlgorithmFactory
friend class StatisticsAlgorithmFactory
to make copy() more straight forward to implement
Definition StatisticsAlgorithmFactory.h:51
casacore::StatisticsAlgorithmFactory::copy
void copy(StatisticsAlgorithmFactory< AccumType, DataIterator2, MaskIterator2, WeightsIterator2 > &other) const
copy the data from this object to an object with different template types.
casacore::StatisticsAlgorithmFactory::_hf
Double _hf
hinges-fences f factor
Definition StatisticsAlgorithmFactory.h:121
casacore::StatisticsAlgorithmFactory::~StatisticsAlgorithmFactory
~StatisticsAlgorithmFactory()
casacore::StatisticsAlgorithmFactory::toRecord
Record toRecord() const
create a record from the current configuration that can be used to create another object using the fr...
casacore::StatisticsAlgorithmFactory::_chauvData
StatisticsAlgorithmFactoryData::ChauvenetData _chauvData
Definition StatisticsAlgorithmFactory.h:124
casacore::StatisticsAlgorithmFactory::chauvenetData
StatisticsAlgorithmFactoryData::ChauvenetData chauvenetData() const
Throws an exception if the current configuration is not relevant to the Chauvenet/zscore algorithm.
casacore::StatisticsAlgorithmFactory::algorithm
StatisticsData::ALGORITHM algorithm() const
Definition StatisticsAlgorithmFactory.h:91
casacore::StatisticsAlgorithmFactory::_biweightData
StatisticsAlgorithmFactoryData::BiweightData _biweightData
Definition StatisticsAlgorithmFactory.h:122
casacore::StatisticsAlgorithmFactory::hingesFencesFactor
Double hingesFencesFactor() const
Throws an exception if the current configuration is not relevant to the hinges-fences algorithm.
casacore::StatisticsAlgorithmFactory::fitToHalfData
StatisticsAlgorithmFactoryData::FitToHalfData< AccumType > fitToHalfData() const
Throws an exception if the current configuration is not relevant to the fit-to-half algorithm.
casacore::StatisticsAlgorithmFactory::_algorithm
StatisticsData::ALGORITHM _algorithm
Definition StatisticsAlgorithmFactory.h:119
casacore::StatisticsData::ALGORITHM
ALGORITHM
implemented algorithms
Definition StatisticsData.h:45
casacore::Record
Record()
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
casacore::Int
int Int
Definition aipstype.h:48
casacore::Bool
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
casacore::Double
double Double
Definition aipstype.h:53
casacore::StatisticsAlgorithmFactoryData::BiweightData
Definition StatisticsAlgorithmFactoryData.h:39
casacore::StatisticsAlgorithmFactoryData::ChauvenetData
Definition StatisticsAlgorithmFactoryData.h:54
casacore::StatisticsAlgorithmFactoryData::FitToHalfData
Definition StatisticsAlgorithmFactoryData.h:46