1#ifndef FSTDATAACCESSORSPLITTINGMEMARFF_H
2#define FSTDATAACCESSORSPLITTINGMEMARFF_H
88template<
typename DATATYPE,
typename IDXTYPE,
class INTERVALCONTAINER>
89class Data_Accessor_Splitting_MemARFF :
public Clonable_Impl<Data_Accessor_Splitting_MemARFF<DATATYPE,IDXTYPE,INTERVALCONTAINER>,Data_Accessor_Splitting_Mem<DATATYPE,IDXTYPE,INTERVALCONTAINER>,CLONE_INHERIT,CLONE_WEAK_SHARING,CLONE_INHERIT>
101 typedef std::shared_ptr<Data_Scaler<DATATYPE> >
PScaler;
107 virtual std::ostream&
print(std::ostream& os)
const override;
130template<
typename DATATYPE,
typename IDXTYPE,
class INTERVALCONTAINER>
136 throw fst_error(
"ARFF file '"+this->
filename+
"' could not be loaded (see the reader's message above for the offending definition or data row)");
141 clsSize.reset(
new IDXTYPE[
clsCount], std::default_delete<IDXTYPE[]>());
145template<
typename DATATYPE,
typename IDXTYPE,
class INTERVALCONTAINER>
149 {std::ostringstream sos; sos <<
"Reading data to memory...";
syncout::print(std::cout,sos);}
151 for(
unsigned int p=0;p<
ARFFFile->getTotalSize();p++)
153 for(
unsigned int f=0;f<
ARFFFile->getNoOfFeatures();f++) {
154 this->
data.get()[idx++]=(DATATYPE)
ARFFFile->getFeatureValue(p,f);
158 {std::ostringstream sos; sos <<
"done."<<std::endl;
syncout::print(std::cout,sos);}
163template<
typename DATATYPE,
typename IDXTYPE,
class INTERVALCONTAINER>
167 os << std::endl <<
"Data_Accessor_Splitting_MemARFF()";
CRTP mixin implementing the Clonable protocol for a concrete class.
Definition clonable.hpp:184
bool is_sharing_clone() const
true if this instance is BOTH a clone and sharing – i.e. specifically a sharing_clone() result,...
Definition clonable.hpp:127
Implements data access to data cached entirely in memory, read once from a ARFF file.
Definition data_accessor_splitting_memARFF.hpp:90
Data_Accessor_Splitting_MemARFF(const Data_Accessor_Splitting_MemARFF &damt, int x)
Weak (referencing) copy-constructor used by sharing_clone(); transfers the cached header counters cls...
Definition data_accessor_splitting_memARFF.hpp:113
DASM::PSplitters PSplitters
Definition data_accessor_splitting_memARFF.hpp:102
Data_Accessor_Splitting_MemARFF(const std::string _filename, const PSplitters _dsp, const PScaler _dsc)
Constructs the accessor for the ARFF file _filename, the splitter stack _dsp and the scaler _dsc; act...
Definition data_accessor_splitting_memARFF.hpp:104
virtual void initial_data_read() override
copies the reader's values into the base class's data array, then releases the reader;
Definition data_accessor_splitting_memARFF.hpp:146
std::shared_ptr< IDXTYPE > clsSize
Definition data_accessor_splitting_memARFF.hpp:119
virtual unsigned int file_getNoOfFeatures() const override
featureCount, as required by Data_Accessor_Splitting_Mem
Definition data_accessor_splitting_memARFF.hpp:126
Data_Accessor_Splitting_Mem< DATATYPE, IDXTYPE, INTERVALLER > DASM
Definition data_accessor_splitting_memARFF.hpp:95
virtual std::ostream & print(std::ostream &os) const override
writes the splitter stack's print() output (or "Data_Accessor_Splitting()" if the stack is empty) to ...
Definition data_accessor_splitting_memARFF.hpp:164
unsigned int clsCount
Definition data_accessor_splitting_memARFF.hpp:117
virtual void initial_file_prepare() override
opens ARFFFile, reads and class-sorts it, and caches clsCount/featureCount/clsSize; throws fst_error ...
Definition data_accessor_splitting_memARFF.hpp:131
std::unique_ptr< Data_File_ARFF > ARFFFile
Definition data_accessor_splitting_memARFF.hpp:115
std::shared_ptr< Data_Scaler< DATATYPE > > PScaler
Definition data_accessor_splitting_memARFF.hpp:101
unsigned int featureCount
Definition data_accessor_splitting_memARFF.hpp:118
virtual IDXTYPE file_getClassSize(unsigned int cls) const override
clsSize[cls], as required by Data_Accessor_Splitting_Mem
Definition data_accessor_splitting_memARFF.hpp:127
Clonable_Impl< Data_Accessor_Splitting_MemARFF, DASM, CLONE_INHERIT, CLONE_WEAK_SHARING, CLONE_INHERIT > parent_impl
Definition data_accessor_splitting_memARFF.hpp:100
virtual unsigned int file_getNoOfClasses() const override
clsCount, as required by Data_Accessor_Splitting_Mem
Definition data_accessor_splitting_memARFF.hpp:125
Implements data access to data cached entirely in memory, concrete file type support is delegated to ...
Definition data_accessor_splitting_mem.hpp:102
DAS::PSplitters PSplitters
Definition data_accessor_splitting_mem.hpp:110
virtual std::ostream & print(std::ostream &os) const override
writes the splitter stack's print() output (or "Data_Accessor_Splitting()" if the stack is empty) to ...
Definition data_accessor_splitting_mem.hpp:412
std::shared_ptr< DATATYPE > data
Definition data_accessor_splitting_mem.hpp:199
std::string filename
Definition data_accessor_splitting_mem.hpp:196
ARFF data format filter.
Definition data_file_ARFF.hpp:135
FST4 specific error passing class.
Definition error.hpp:61
static void print(std::ostream &os, std::ostringstream &sos)
Writes sos's buffered content to os, serializing concurrent writers under FST_THREADED via a shared m...
Definition global.hpp:86
Implements data access to data cached entirely in memory, concrete file type support is delegated to ...
Enables data accessor objects to read ARFF (Weka) type of data files.
FST4 specific error passing class.
The Feature Selection Toolbox 4 library: every library component – data access, criteria and classifi...
Definition data_accessor.hpp:80
void notify(const std::string msg)
Prints msg followed by a newline via syncout::print(); a no-op unless the preprocessor macro DEBUG is...
Definition global.hpp:112