Changeset 870 for library/bdm/base

Show
Ignore:
Timestamp:
03/18/10 19:13:02 (14 years ago)
Author:
mido
Message:

LOG_LEVEL final cut (or rather semifinal? I hope to improve work with ids soon)
and also it rests to adapt applications, work is in progress

Location:
library/bdm/base
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/base/bdmbase.cpp

    r863 r870  
    563563        } 
    564564         
    565         if (log_level[bounds]){ 
     565        if (log_level[logbounds]){ 
    566566                prior().log_level[epdf::loglb]=true; 
    567567                prior().log_level[epdf::logub]=true; 
    568568        } 
    569         if (log_level[full]){ 
     569        if (log_level[logfull]){ 
    570570                prior().log_level[epdf::logfull]=true; 
    571571        } 
  • library/bdm/base/bdmbase.h

    r864 r870  
    492492//! Probability density function with numerical statistics, e.g. posterior density. 
    493493class epdf : public pdf { 
    494         LOG_LEVEL(epdf, logmean, loglb, logub, logfull); 
     494        //! \var log_level_enums logmean 
     495        //! TODO DOPLNIT         
     496         
     497        //! \var log_level_enums loglb 
     498        //! TODO DOPLNIT 
     499         
     500        //! \var log_level_enums logub 
     501        //! TODO DOPLNIT 
     502         
     503        //! \var log_level_enums logfull 
     504        //! TODO DOPLNIT 
     505        LOG_LEVEL(epdf,logmean,loglb,logub,logfull); 
    495506 
    496507public: 
     
    895906 
    896907class DS : public root { 
     908        //! \var log_level_enums dt 
     909        //! TODO DOPLNIT 
    897910        LOG_LEVEL(DS, dt); 
     911 
    898912protected: 
    899913        //! size of data returned by \c getdata() 
     
    983997 
    984998class BM : public root { 
    985         LOG_LEVEL(BM, full, likelihood, bounds); 
     999        //! \var log_level_enums logfull 
     1000        //! TODO DOPLNIT 
     1001 
     1002        //! \var log_level_enums logevidence 
     1003        //! TODO DOPLNIT 
     1004         
     1005        //! \var log_level_enums logbounds 
     1006        //! TODO DOPLNIT         
     1007        LOG_LEVEL(BM,logfull,logevidence,logbounds); 
    9861008 
    9871009protected: 
     
    11451167        void validate() 
    11461168        { 
    1147                 if ( log_level[full] ) { 
     1169                if ( log_level[logfull] ) { 
    11481170                        const_cast<epdf&> ( posterior() ).log_level[epdf::logfull] = true; 
    11491171                } else { 
    1150                         if ( log_level[bounds] ) { 
     1172                        if ( log_level[logbounds] ) { 
    11511173                                const_cast<epdf&> ( posterior() ).log_level[epdf::loglb] = true; 
    11521174                        } else { 
    11531175                                const_cast<epdf&> ( posterior() ).log_level[epdf::logmean] = true;; 
    11541176                        } 
    1155                         if ( log_level[likelihood] ) { 
    1156                                 // TODO testovat tedy likelyhood misto 1.. log_level = 1; 
     1177                        if ( log_level[logevidence] ) { 
    11571178                        } 
    11581179                } 
  • library/bdm/base/user_info.h

    r863 r870  
    305305        static void from_setting ( double &real, const Setting &element ); 
    306306 
    307         //! This method converts a Setting into a specific logged_options<T> variant and initialize options properly 
    308         template< class T> static void from_setting ( logged_options<T> &options, const Setting &element ) 
     307        //! This method converts a Setting into a specific log_level_template<T> variant and initialize options properly 
     308        template< class T> static void from_setting ( log_level_template<T> &log_level, const Setting &element ) 
    309309        { 
    310                 options.values.reset(); 
    311                 Array<string> true_options; 
    312                 UI::get( true_options, element ); 
    313                 for( int i = 0; i < true_options.length(); i++ ) 
    314                         for( int j = 0; j < options.names().length(); j++ ){ 
    315                                 if( true_options(i) == options.names()(j)  )  
     310                string raw_log_level; 
     311                UI::get( raw_log_level, element ); 
     312                Array<string> loaded_log_level = log_level_template<T>::string2Array( raw_log_level ); 
     313                 
     314                log_level.values.reset(); 
     315 
     316                for( int i = 0; i < loaded_log_level.length(); i++ ) 
     317                        for( int j = 0; j < log_level.names().length(); j++ ){ 
     318                                if( loaded_log_level(i) == log_level.names()(j)  )  
    316319                                { 
    317                                         options.values[j] = true; 
     320                                        log_level.values[j] = true; 
    318321                                        break; 
    319322                                }  
     
    324327        template<class T> static void from_setting ( T* &instance, const Setting &element ) { 
    325328                const SettingResolver link ( element ); 
    326                 assert_type ( link.result, Setting::TypeGroup ); 
     329                assert_type( link.result, Setting::TypeGroup ); 
    327330 
    328331                // we get a value stored in the "class" attribute 
     
    600603        } 
    601604 
    602         // The only difference from classical UserInfo approach to logged_options is the fact 
    603         // that the actual element related to logged_options could possibly exists yet. In this case,  
     605        // The only difference from classical UserInfo approach to log_level_template is the fact 
     606        // that the actual UI element related to log_level_template could possibly exists yet. In this case,  
    604607        // we do not want to throw an exception like in the case of any other type being loaded 
    605         // from Setting. Here, we rather add our options into this existig element. This way, it is  
    606         // possible that more instances of logged_options class (all contained in one wrapping instance of 
    607         // a particular class!) can be stored in only one line in a configuration file 
    608         template< class T> static void save ( const logged_options<T> &options, Setting &element, const string &name = "options"  ) { 
     608        // from Setting. We rather fill the current log_level into this existig element. This way, it is  
     609        // possible that more instances of log_level_template class (templated with different classes) 
     610        // can be stored in only one line in a configuration file 
     611        template< class T> static void save ( const log_level_template<T> &log_level, Setting &element, const string &name = "log_level"  ) { 
    609612                assert_type ( element, Setting::TypeGroup ); 
     613 
     614                string string_to_write; 
    610615 
    611616                Setting *list; 
     
    613618                { 
    614619                        list = &element[name]; 
    615                         assert_type ( *list, Setting::TypeList ); 
     620                        assert_type ( *list, Setting::TypeString ); 
     621                        string_to_write = ( const char* ) *list; 
    616622                } 
    617623                else 
    618                         list = &element.add ( name, Setting::TypeList );  
    619  
    620                 Array<string> true_options; 
    621                 int true_options_count = 0; 
    622                 true_options.set_length( options.values.size() ); 
    623                 for( unsigned int i = 0; i < options.values.size(); i++ ) 
    624                         if( options.values[i] )  
    625                                 true_options( true_options_count++ ) = options.names()(i); 
    626                 save( true_options, *list, name ); 
     624                        list = &element.add ( name, Setting::TypeString );  
     625 
     626                for( unsigned int i = 0; i < log_level.values.size(); i++ ) 
     627                        if( log_level.values[i] ) // a jeste zkontrolovat zda to jmeno uz neni obsazeno?  
     628                        { 
     629                                if( string_to_write.length() > 0 ) 
     630                                        string_to_write = string_to_write + ','; 
     631                                string_to_write = string_to_write + log_level.names()(i); 
     632                        } 
     633                         
     634                *list = string_to_write; 
    627635        } 
    628636