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.cpp

    r910 r956  
    326326} 
    327327 
     328void egiw::from_setting ( const Setting &set ) { 
     329                epdf::from_setting ( set ); 
     330                UI::get ( dimx, set, "dimx", UI::compulsory ); 
     331                if ( !UI::get ( nu, set, "nu", UI::optional ) ) { 
     332                        nu = -1; 
     333                } 
     334                mat V; 
     335                if ( !UI::get ( V, set, "V", UI::optional ) ) { 
     336                        vec dV; 
     337                        UI::get ( dV, set, "dV", UI::compulsory ); 
     338                        set_parameters ( dimx, ldmat ( dV ), nu ); 
     339 
     340                } else { 
     341                        set_parameters ( dimx, V, nu ); 
     342                } 
     343        } 
     344 
     345void egiw::to_setting ( Setting& set ) const { 
     346                epdf::to_setting ( set ); 
     347                UI::save ( dimx, set, "dimx" ); 
     348                UI::save ( V.to_mat(), set, "V" ); 
     349                UI::save ( nu, set, "nu" ); 
     350        }; 
     351 
     352void egiw::validate() { 
     353                eEF::validate(); 
     354                dim = dimx * ( dimx + nPsi );    
     355         
     356            // check sizes, rvs etc. 
     357                // also check if RV are meaningful!!! 
     358                // meaningful =  rv for theta  and rv for r are split! 
     359        } 
    328360void multiBM::bayes ( const vec &yt, const vec &cond ) { 
    329361        if ( frg < 1.0 ) { 
     
    421453} 
    422454 
     455void egamma::from_setting ( const Setting &set ) { 
     456                epdf::from_setting ( set ); // reads rv 
     457                UI::get ( alpha, set, "alpha", UI::compulsory ); 
     458                UI::get ( beta, set, "beta", UI::compulsory ); 
     459        } 
     460         
     461void egamma::to_setting ( Setting &set ) const 
     462        {                        
     463                epdf::to_setting( set ); 
     464                UI::save( alpha, set, "alpha" ); 
     465                UI::save( beta, set, "beta" ); 
     466        }  
     467         
     468         
     469void egamma::validate() { 
     470                eEF::validate(); 
     471                bdm_assert ( alpha.length() == beta.length(), "parameters do not match" ); 
     472                dim = alpha.length(); 
     473        } 
     474 
    423475void mgamma::set_parameters ( double k0, const vec &beta0 ) { 
    424476        k = k0; 
    425477        iepdf.set_parameters ( k * ones ( beta0.length() ), beta0 ); 
    426478} 
     479 
     480 
     481void mgamma::from_setting ( const Setting &set ) { 
     482                pdf::from_setting ( set ); // reads rv and rvc 
     483                vec betatmp; // ugly but necessary 
     484                UI::get ( betatmp, set, "beta", UI::compulsory ); 
     485                UI::get ( k, set, "k", UI::compulsory ); 
     486                set_parameters ( k, betatmp ); 
     487        } 
     488 
     489void mgamma::to_setting  (Setting  &set) const { 
     490                pdf::to_setting(set); 
     491                UI::save( _beta, set, "beta"); 
     492                UI::save( k, set, "k"); 
     493 
     494        } 
     495 
     496void mgamma::validate() { 
     497                pdf_internal<egamma>::validate(); 
     498 
     499                dim = _beta.length(); 
     500                dimc = _beta.length(); 
     501        } 
    427502 
    428503void eEmp::resample ( RESAMPLING_METHOD method ) { 
     
    536611 
    537612void migamma_ref::from_setting ( const Setting &set ) { 
     613        migamma::from_setting(set); 
    538614        vec ref; 
    539615        UI::get ( ref, set, "ref" , UI::compulsory ); 
     
    541617        validate(); 
    542618} 
    543  
     619void  migamma_ref::to_setting  (Setting  &set) const { 
     620        migamma::to_setting(set); 
     621        UI::save ( pow ( refl, 1/(1.0 - l) ), set, "ref");       
     622        UI::save(l,set,"l"); 
     623        UI::save(k,set,"k"); 
     624} 
    544625void mlognorm::from_setting ( const Setting &set ) { 
     626        pdf_internal<elognorm>::from_setting(set); 
    545627        vec mu0; 
    546628        UI::get ( mu0, set, "mu0", UI::compulsory ); 
    547629        set_parameters ( mu0.length(), set["k"] ); 
    548         validate(); 
    549630        condition ( mu0 ); 
    550631} 
     632 
     633 
     634void mlognorm::to_setting  (Setting  &set) const { 
     635        pdf_internal<elognorm>::to_setting(set); 
     636        UI::save ( exp(mu + sig2), set, "mu0"); 
     637} 
     638 
    551639 
    552640void mlstudent::condition ( const vec &cond ) { 
     
    586674} 
    587675 
     676void eEmp::to_setting ( Setting &set ) const { 
     677                epdf::to_setting( set ); 
     678                UI::save ( samples, set, "samples" ); 
     679                UI::save ( w, set, "w" ); 
     680        } 
     681 
     682void eEmp::from_setting ( const Setting &set ) { 
     683                epdf::from_setting( set ); 
     684                 
     685                UI::get( samples, set, "samples", UI::compulsory ); 
     686                UI::get ( w, set, "w", UI::compulsory ); 
     687        } 
     688 
     689void    eEmp::validate (){ 
     690          epdf::validate(); 
     691          bdm_assert (samples.length()==w.length(),"samples and weigths are of different lengths"); 
     692          n = w.length(); 
     693          if (n>0) 
     694                pdf::dim = samples ( 0 ).length(); 
     695        } 
     696         
     697        void eDirich::from_setting ( const Setting &set ) { 
     698                epdf::from_setting ( set ); 
     699                UI::get ( beta, set, "beta", UI::compulsory ); 
     700        } 
     701void eDirich::validate() { 
     702                //check rv 
     703                eEF::validate(); 
     704                dim = beta.length(); 
     705        } 
     706 
     707void eDirich::to_setting ( Setting &set ) const 
     708        {                        
     709                eEF::to_setting( set ); 
     710                UI::save( beta, set, "beta" ); 
     711        }  
     712 
     713void euni::from_setting ( const Setting &set ) { 
     714                epdf::from_setting ( set ); // reads rv and rvc 
     715 
     716                UI::get ( high, set, "high", UI::compulsory ); 
     717                UI::get ( low, set, "low", UI::compulsory ); 
     718                set_parameters ( low, high ); 
     719                 
     720        } 
     721         
     722void    euni::to_setting  (Setting  &set) const { 
     723                epdf::to_setting ( set ); 
     724                UI::save ( high, set, "high" ); 
     725                UI::save ( low, set, "low" ); 
     726        } 
     727         
     728void euni::validate() { 
     729                epdf::validate(); 
     730                bdm_assert ( high.length() == low.length(), "Incompatible high and low vectors" ); 
     731                dim = high.length(); 
     732                bdm_assert ( min ( distance ) > 0.0, "bad support" ); 
     733        } 
     734 
     735void mgdirac::from_setting(const Setting& set){ 
     736                        pdf::from_setting(set); 
     737                        g=UI::build<fnc>(set,"g",UI::compulsory); 
     738                        validate(); 
     739                } 
     740void mgdirac::to_setting(Setting &set) const{ 
     741                        pdf::to_setting(set); 
     742                        UI::save(g.get(), set, "g"); 
     743                } 
     744void mgdirac::validate() { 
     745                        pdf::validate(); 
     746                        dim = g->dimension(); 
     747                        dimc = g->dimensionc(); 
     748                } 
     749 
     750void mDirich::from_setting ( const Setting &set ) { 
     751                pdf::from_setting ( set ); // reads rv and rvc 
     752                if ( _rv()._dsize() > 0 ) { 
     753                        rvc = _rv().copy_t ( -1 ); 
     754                } 
     755                vec beta0; 
     756                if ( !UI::get ( beta0, set, "beta0", UI::optional ) ) { 
     757                        beta0 = ones ( _rv()._dsize() ); 
     758                } 
     759                if ( !UI::get ( betac, set, "betac", UI::optional ) ) { 
     760                        betac = 0.1 * ones ( _rv()._dsize() ); 
     761                } 
     762                _beta = beta0; 
     763 
     764                UI::get ( k, set, "k", UI::compulsory ); 
     765        } 
     766 
     767void mDirich::to_setting  (Setting  &set) const { 
     768                pdf::to_setting(set); 
     769                UI::save( _beta, set, "beta0"); 
     770                UI::save( betac, set, "betac"); 
     771                UI::save ( k, set, "k" ); 
     772        } 
     773 
     774 
     775void mDirich::validate() { 
     776                pdf_internal<eDirich>::validate(); 
     777                bdm_assert ( _beta.length() == betac.length(), "beta0 and betac are not compatible" ); 
     778                if ( _rv()._dsize() > 0 ) { 
     779                        bdm_assert ( ( _rv()._dsize() == dimension() ) , "Size of rv does not match with beta" ); 
     780                } 
     781                dimc = _beta.length(); 
     782        } 
    588783 
    589784};