root/library/bdm/base/datasources.cpp @ 1059

Revision 1058, 2.2 kB (checked in by smidl, 14 years ago)

doc + DS cleanup

  • Property svn:eol-style set to native
Line 
1#include "datasources.h"
2
3using namespace bdm;
4
5MemDS::MemDS ( mat &Dat ) : Data( Dat ) {
6}
7
8void MemDS::step( ) {
9        if ( time < max_length() ) {
10                time++;
11        }
12}
13
14void MemDS::getdata ( vec &dt ) const {
15        bdm_assert_debug ( dt.length() == Data.rows(), "MemDS:getdata incompatible dt" );
16        dt = Data.get_col ( time );
17}
18
19void MemDS::getdata ( vec &dt, const ivec &indices ) {
20        bdm_assert_debug ( dt.length() == indices.length(), "MemDS:getdata incompatible dt" );
21        vec tmp = Data.get_col ( time );
22        dt = tmp ( indices );
23}
24
25void MemDS::from_setting ( const Setting &set ) {
26        DS::from_setting ( set );
27
28        UI::get ( Data, set, "Data", UI::compulsory );
29       
30        if ( !UI::get ( time, set, "time", UI::optional ) ) {
31                time = 0;
32        }
33}
34
35void MemDS::validate()
36{
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;
45}
46
47void FileDS::from_setting ( const Setting & set ) {
48        // here we do not call MemDS::from_setting intentionally as we can not load any Data matrix directly
49        DS::from_setting ( set );
50
51        UI::get ( filename, set, "filename", UI::compulsory );
52
53        time = 0;
54}
55
56void CsvFileDS::from_setting ( const Setting & set ) {
57        FileDS::from_setting ( set );
58
59        vec data_line;
60        string line;
61
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        }
70
71        string orientation;
72        if( UI::get ( orientation, set, "orientation", UI::optional ) & (orientation == "BY_ROW") ) 
73                transpose ( Data, Data );
74}
75
76void ITppFileDS::from_setting ( const Setting & set ) {
77        FileDS::from_setting ( set );
78
79        string varname;
80        UI::get ( varname, set, "varname", UI::compulsory );
81
82        it_file it ( filename );
83        it << Name ( varname );
84        it >> Data;
85}
86
87void PdfDS::step() {
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
93}
94
95void PdfDS::getdata ( vec & dt_out ) const {
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 );
99}
Note: See TracBrowser for help on using the browser.