[384] | 1 | #include "datasources.h" |
---|
[357] | 2 | |
---|
[254] | 3 | using namespace bdm; |
---|
[18] | 4 | |
---|
[896] | 5 | MemDS::MemDS ( mat &Dat ) : Data( Dat ) { |
---|
| 6 | } |
---|
[263] | 7 | |
---|
[896] | 8 | void MemDS::step( ) { |
---|
[1064] | 9 | if ( time < max_length() ) { |
---|
| 10 | time++; |
---|
| 11 | } |
---|
[18] | 12 | } |
---|
| 13 | |
---|
[896] | 14 | void MemDS::getdata ( vec &dt ) const { |
---|
[1064] | 15 | bdm_assert_debug ( dt.length() == Data.rows(), "MemDS:getdata incompatible dt" ); |
---|
| 16 | dt = Data.get_col ( time ); |
---|
[18] | 17 | } |
---|
| 18 | |
---|
[896] | 19 | void MemDS::getdata ( vec &dt, const ivec &indices ) { |
---|
[1064] | 20 | bdm_assert_debug ( dt.length() == indices.length(), "MemDS:getdata incompatible dt" ); |
---|
| 21 | vec tmp = Data.get_col ( time ); |
---|
| 22 | dt = tmp ( indices ); |
---|
[18] | 23 | } |
---|
| 24 | |
---|
[896] | 25 | void MemDS::from_setting ( const Setting &set ) { |
---|
[1064] | 26 | DS::from_setting ( set ); |
---|
[896] | 27 | |
---|
[1064] | 28 | UI::get ( Data, set, "Data", UI::compulsory ); |
---|
| 29 | |
---|
| 30 | if ( !UI::get ( time, set, "time", UI::optional ) ) { |
---|
| 31 | time = 0; |
---|
| 32 | } |
---|
[907] | 33 | } |
---|
| 34 | |
---|
| 35 | void MemDS::validate() |
---|
| 36 | { |
---|
[1064] | 37 | if (Urv._dsize()>0) { |
---|
| 38 | bdm_error ( "MemDS::urv is not supported" ); |
---|
| 39 | } |
---|
| 40 | dtsize = Data.rows(); |
---|
| 41 | utsize = 0; |
---|
| 42 | // DS::validate() has to be called after the dtsize attribute is set to proper value |
---|
| 43 | DS::validate(); |
---|
| 44 | log_level[logut]=0; |
---|
[18] | 45 | } |
---|
| 46 | |
---|
[896] | 47 | void FileDS::from_setting ( const Setting & set ) { |
---|
[1064] | 48 | // here we do not call MemDS::from_setting intentionally as we can not load any Data matrix directly |
---|
| 49 | DS::from_setting ( set ); |
---|
[263] | 50 | |
---|
[1064] | 51 | UI::get ( filename, set, "filename", UI::compulsory ); |
---|
[896] | 52 | |
---|
[1064] | 53 | time = 0; |
---|
[19] | 54 | } |
---|
[263] | 55 | |
---|
[896] | 56 | void CsvFileDS::from_setting ( const Setting & set ) { |
---|
[1064] | 57 | FileDS::from_setting ( set ); |
---|
[892] | 58 | |
---|
[1064] | 59 | vec data_line; |
---|
| 60 | string line; |
---|
[896] | 61 | |
---|
[1064] | 62 | ifstream fs; |
---|
| 63 | fs.open ( filename.c_str() ); |
---|
| 64 | if ( fs.is_open() ) { |
---|
| 65 | while ( getline ( fs, line ) ) { |
---|
| 66 | data_line.set ( line ); |
---|
| 67 | Data.append_row ( data_line ); |
---|
| 68 | } |
---|
| 69 | } |
---|
[896] | 70 | |
---|
[1064] | 71 | string orientation; |
---|
| 72 | if( UI::get ( orientation, set, "orientation", UI::optional ) & (orientation == "BY_ROW") ) |
---|
| 73 | transpose ( Data, Data ); |
---|
[896] | 74 | } |
---|
| 75 | |
---|
| 76 | void ITppFileDS::from_setting ( const Setting & set ) { |
---|
[1064] | 77 | FileDS::from_setting ( set ); |
---|
[896] | 78 | |
---|
[1064] | 79 | string varname; |
---|
| 80 | UI::get ( varname, set, "varname", UI::compulsory ); |
---|
[896] | 81 | |
---|
[1064] | 82 | it_file it ( filename ); |
---|
| 83 | it << Name ( varname ); |
---|
| 84 | it >> Data; |
---|
[892] | 85 | } |
---|
| 86 | |
---|
[738] | 87 | void PdfDS::step() { |
---|
[1064] | 88 | yt2rgr.store_data ( yt ); // y is now history |
---|
| 89 | ut2rgr.filldown ( ut, rgr ); |
---|
| 90 | yt2rgr.filldown ( yt, rgr ); |
---|
| 91 | yt = ipdf->samplecond ( rgr ); |
---|
| 92 | ut2rgr.store_data ( ut ); //u is now history |
---|
[738] | 93 | } |
---|
| 94 | |
---|
[896] | 95 | void PdfDS::getdata ( vec & dt_out ) const { |
---|
[1064] | 96 | bdm_assert_debug ( dt_out.length() >= dtsize, "Short output vector" ); |
---|
| 97 | dt_out.set_subvector ( 0, yt ); |
---|
| 98 | dt_out.set_subvector ( yt.length(), ut ); |
---|
[738] | 99 | } |
---|