Show
Ignore:
Timestamp:
05/19/10 03:56:03 (14 years ago)
Author:
sarka
Message:

to_setting

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • library/bdm/stat/exp_family.h

    r951 r956  
    133133                        return std::numeric_limits< double >::max(); 
    134134                } 
    135                 void from_setting(const Setting& set){ 
    136                         pdf::from_setting(set); 
    137                         g=UI::build<fnc>(set,"g",UI::compulsory); 
    138                         validate(); 
    139                 } 
    140                 void to_setting(Setting &set) const{ 
    141                         pdf::to_setting(set); 
    142                         UI::save(g.get(), set, "g"); 
    143                 } 
    144                 void validate() { 
    145                         dim = g->dimension(); 
    146                         dimc = g->dimensionc(); 
    147                 } 
     135                void from_setting(const Setting& set); 
     136                void to_setting(Setting &set) const; 
     137                void validate(); 
    148138}; 
    149139UIREGISTER(mgdirac); 
     
    186176        void to_setting ( Setting &root ) const ; 
    187177         
    188         void validate() { 
    189                 bdm_assert ( mu.length() == R.rows(), "mu and R parameters do not match" ); 
    190                 dim = mu.length(); 
    191         } 
     178        void validate(); 
    192179        //!@} 
    193180 
     
    336323                        } 
    337324                        void validate() { 
     325                                eEF::validate(); 
    338326                                dim = H.rows(); 
    339327                        } 
     
    460448        \sa log_level_enums 
    461449        */ 
    462         void from_setting ( const Setting &set ) { 
    463                 epdf::from_setting ( set ); 
    464                 UI::get ( dimx, set, "dimx", UI::compulsory ); 
    465                 if ( !UI::get ( nu, set, "nu", UI::optional ) ) { 
    466                         nu = -1; 
    467                 } 
    468                 mat V; 
    469                 if ( !UI::get ( V, set, "V", UI::optional ) ) { 
    470                         vec dV; 
    471                         UI::get ( dV, set, "dV", UI::compulsory ); 
    472                         set_parameters ( dimx, ldmat ( dV ), nu ); 
    473                         validate(); 
    474  
    475                 } else { 
    476                         set_parameters ( dimx, V, nu ); 
    477                         validate(); 
    478                 } 
    479         } 
    480  
    481         void to_setting ( Setting& set ) const { 
    482                 epdf::to_setting ( set ); 
    483                 UI::save ( dimx, set, "dimx" ); 
    484                 UI::save ( V.to_mat(), set, "V" ); 
    485                 UI::save ( nu, set, "nu" ); 
    486         }; 
    487  
    488         void validate() { 
    489         dim = dimx * ( dimx + nPsi );    
    490          
    491             // check sizes, rvs etc. 
    492                 // also check if RV are meaningful!!! 
    493                 // meaningful =  rv for theta  and rv for r are split! 
    494         } 
     450        void from_setting ( const Setting &set ); 
     451        void to_setting ( Setting& set ) const; 
     452        void validate(); 
    495453        void log_register ( bdm::logger& L, const string& prefix ); 
    496454 
     
    578536        \endcode 
    579537        */ 
    580         void from_setting ( const Setting &set ) { 
    581                 epdf::from_setting ( set ); 
    582                 UI::get ( beta, set, "beta", UI::compulsory ); 
    583                 validate(); 
    584         } 
    585         void validate() { 
    586                 //check rv 
    587                 dim = beta.length(); 
    588         } 
    589  
    590         void to_setting ( Setting &set ) const 
    591         {                        
    592                 eEF::to_setting( set ); 
    593                 UI::save( beta, set, "beta" ); 
    594         }  
     538        void from_setting ( const Setting &set ); 
     539        void validate(); 
     540        void to_setting ( Setting &set ) const; 
    595541}; 
    596542UIREGISTER ( eDirich ); 
     
    632578        \endcode 
    633579        */ 
    634         void from_setting ( const Setting &set ) { 
    635                 pdf::from_setting ( set ); // reads rv and rvc 
    636                 if ( _rv()._dsize() > 0 ) { 
    637                         rvc = _rv().copy_t ( -1 ); 
    638                 } 
    639                 vec beta0; 
    640                 if ( !UI::get ( beta0, set, "beta0", UI::optional ) ) { 
    641                         beta0 = ones ( _rv()._dsize() ); 
    642                 } 
    643                 if ( !UI::get ( betac, set, "betac", UI::optional ) ) { 
    644                         betac = 0.1 * ones ( _rv()._dsize() ); 
    645                 } 
    646                 _beta = beta0; 
    647  
    648                 UI::get ( k, set, "k", UI::compulsory ); 
    649                 validate(); 
    650         } 
    651         void validate() { 
    652                 pdf_internal<eDirich>::validate(); 
    653                 bdm_assert ( _beta.length() == betac.length(), "beta0 and betac are not compatible" ); 
    654                 if ( _rv()._dsize() > 0 ) { 
    655                         bdm_assert ( ( _rv()._dsize() == dimension() ) , "Size of rv does not match with beta" ); 
    656                 } 
    657                 dimc = _beta.length(); 
    658         }; 
     580        void from_setting ( const Setting &set ); 
     581        void    to_setting  (Setting  &set) const; 
     582        void validate(); 
    659583}; 
    660584UIREGISTER ( mDirich ); 
     
    765689        \endcode 
    766690        */ 
    767         void from_setting ( const Setting &set ) { 
    768                 epdf::from_setting ( set ); // reads rv 
    769                 UI::get ( alpha, set, "alpha", UI::compulsory ); 
    770                 UI::get ( beta, set, "beta", UI::compulsory ); 
    771                 validate(); 
    772         } 
    773         void validate() { 
    774                 bdm_assert ( alpha.length() == beta.length(), "parameters do not match" ); 
    775                 dim = alpha.length(); 
    776         } 
     691        void from_setting ( const Setting &set ); 
     692        void to_setting ( Setting &set ) const; 
     693        void validate();  
    777694}; 
    778695UIREGISTER ( egamma ); 
     
    888805         \endcode 
    889806         */ 
    890         void from_setting ( const Setting &set ) { 
    891                 epdf::from_setting ( set ); // reads rv and rvc 
    892  
    893                 UI::get ( high, set, "high", UI::compulsory ); 
    894                 UI::get ( low, set, "low", UI::compulsory ); 
    895                 set_parameters ( low, high ); 
    896                 validate(); 
    897         } 
    898         void validate() { 
    899                 bdm_assert ( high.length() == low.length(), "Incompatible high and low vectors" ); 
    900                 dim = high.length(); 
    901                 bdm_assert ( min ( distance ) > 0.0, "bad support" ); 
    902         } 
     807        void from_setting ( const Setting &set ); 
     808        void    to_setting  (Setting  &set) const; 
     809        void validate(); 
    903810}; 
    904811UIREGISTER ( euni ); 
     
    922829                iepdf.set_parameters ( -delta, delta ); 
    923830        } 
    924          
     831        void    to_setting  (Setting  &set) const { 
     832                pdf::to_setting ( set );  
     833                UI::save( iepdf.mean(), set, "delta"); 
     834                UI::save(mean, set, "mean"); 
     835        } 
    925836        void validate(){ 
     837                pdf_internal<euni>::validate(); 
    926838                dimc = mean->dimensionc(); 
    927                 iepdf.validate(); 
     839                 
    928840        } 
    929841 
     
    1006918                UI::get ( R0, set, "R", UI::compulsory ); 
    1007919                set_parameters ( A, mu_const, R0 ); 
    1008                 validate(); 
    1009         }; 
    1010         void to_setting (Setting &set) const { 
     920        } 
     921 
     922void to_setting (Setting &set) const { 
    1011923                pdf::to_setting(set); 
    1012924                UI::save ( A, set, "A"); 
     
    1014926                UI::save ( _R(), set, "R"); 
    1015927        } 
    1016         void validate() { 
     928 
     929void validate() { 
    1017930                pdf_internal<TEpdf<sq_T> >::validate(); 
    1018931                if (mu_const.length()==0) { // default in from_setting 
     
    1070983        */ 
    1071984 
    1072         void from_setting ( const Setting &set ) { 
     985 
     986void from_setting ( const Setting &set ) { 
    1073987                pdf::from_setting ( set ); 
    1074988                shared_ptr<fnc> g = UI::build<fnc> ( set, "g", UI::compulsory ); 
     
    1084998                //validate(); 
    1085999        } 
    1086         void validate() { 
     1000         
     1001 
     1002void to_setting  (Setting  &set) const { 
     1003                UI::save( g,set, "g"); 
     1004                UI::save(iepdf._R().to_mat(),set, "R"); 
     1005         
     1006        } 
     1007 
     1008 
     1009 
     1010void validate() { 
    10871011                this->iepdf.validate(); 
    10881012                bdm_assert ( g->dimension() == this->iepdf.dimension(), "incompatible function" ); 
     
    10911015                this->iepdf.validate(); 
    10921016        } 
     1017 
    10931018}; 
    10941019 
     
    11281053 
    11291054        void validate() { 
     1055                mlnorm<ldmat, enorm>::validate(); 
    11301056                bdm_assert ( A.rows() == mu_const.length(), "mlstudent: A vs. mu mismatch" ); 
    11311057                bdm_assert ( _R.rows() == A.rows(), "mlstudent: A vs. R mismatch" ); 
     
    11751101         \endcode 
    11761102        */ 
    1177         void from_setting ( const Setting &set ) { 
    1178                 pdf::from_setting ( set ); // reads rv and rvc 
    1179                 vec betatmp; // ugly but necessary 
    1180                 UI::get ( betatmp, set, "beta", UI::compulsory ); 
    1181                 UI::get ( k, set, "k", UI::compulsory ); 
    1182                 set_parameters ( k, betatmp ); 
    1183                 validate(); 
    1184         } 
    1185         void validate() { 
    1186                 pdf_internal<egamma>::validate(); 
    1187  
    1188                 dim = _beta.length(); 
    1189                 dimc = _beta.length(); 
    1190         } 
     1103        void from_setting ( const Setting &set ); 
     1104        void    to_setting  (Setting  &set) const; 
     1105        void validate(); 
    11911106}; 
    11921107UIREGISTER ( mgamma ); 
     
    12361151 
    12371152        void    validate (){ 
    1238                 iepdf.validate(); 
     1153                pdf_internal<eigamma>::validate(); 
    12391154                dimc = dimension(); 
    12401155}; 
     
    13381253         */ 
    13391254        void from_setting ( const Setting &set ); 
    1340  
     1255        void to_setting  (Setting  &set) const;  
    13411256        // TODO dodelat void to_setting( Setting &set ) const; 
    13421257}; 
     
    13951310         
    13961311        void validate(){ 
    1397                 iepdf.validate(); 
     1312                pdf_internal<elognorm>::validate(); 
    13981313                dimc = iepdf.dimension(); 
    13991314        } 
     
    14151330        */ 
    14161331        void from_setting ( const Setting &set ); 
     1332        void to_setting  (Setting  &set) const;  
    14171333 
    14181334        // TODO dodelat void to_setting( Setting &set ) const; 
     
    14491365         
    14501366        virtual void validate (){ 
     1367                epdf::validate(); 
    14511368                dim = p * p; 
    14521369        } 
     
    15191436         
    15201437        virtual void    validate (){ 
     1438                epdf::validate(); 
    15211439                W.validate(); 
    15221440                dim = W.dimension(); 
     
    15941512         
    15951513        void validate(){ 
    1596                 iepdf.validate(); 
     1514                pdf_internal<eiWishartCh>::validate(); 
    15971515                dimc = iepdf.dimension(); 
    15981516        } 
     
    16571575                samples = Av; 
    16581576        }; 
    1659         virtual void    validate (){ 
    1660           bdm_assert (samples.length()==w.length(),"samples and weigths are of different lengths"); 
    1661           n = w.length(); 
    1662           if (n>0) 
    1663                 pdf::dim = samples ( 0 ).length(); 
    1664         } 
     1577        virtual void    validate (); 
    16651578        //! Potentially dangerous, use with care. 
    16661579        vec& _w()  { 
     
    17091622        void qbounds ( vec &lb, vec &ub, double perc = 0.95 ) const; 
    17101623 
    1711         void to_setting ( Setting &set ) const { 
    1712                 epdf::to_setting( set ); 
    1713                 UI::save ( samples, set, "samples" ); 
    1714                 UI::save ( w, set, "w" ); 
    1715         } 
    1716  
    1717         void from_setting ( const Setting &set ) { 
    1718                 epdf::from_setting( set ); 
    1719                  
    1720                 UI::get( samples, set, "samples", UI::compulsory ); 
    1721                 UI::get ( w, set, "w", UI::compulsory ); 
    1722                 validate(); 
    1723         } 
     1624        void to_setting ( Setting &set ) const; 
     1625        void from_setting ( const Setting &set ); 
    17241626 
    17251627}; 
     
    17451647        UI::get ( Rtmp, set, "R", UI::compulsory ); 
    17461648        R = Rtmp; // conversion 
    1747         validate(); 
    17481649} 
     1650 
     1651template<class sq_T> 
     1652void enorm<sq_T>::validate() { 
     1653                eEF::validate(); 
     1654                bdm_assert ( mu.length() == R.rows(), "mu and R parameters do not match" ); 
     1655                dim = mu.length(); 
     1656        } 
    17491657 
    17501658template<class sq_T> 
     
    17541662        UI::save ( R.to_mat(), set, "R"); 
    17551663} 
     1664 
     1665 
    17561666 
    17571667template<class sq_T>