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

    r787 r956  
    99        set_sources ( S ); 
    1010} 
     11 
    1112 
    1213void merger_base::set_sources ( const Array<shared_ptr<pdf> > &Sources ) { 
     
    348349} 
    349350 
     351void merger_mix::from_setting ( const Setting& set ) { 
     352                merger_base::from_setting ( set ); 
     353                Ncoms=DFLT_Ncoms; 
     354                UI::get( Ncoms, set, "ncoms", UI::optional ); 
     355                effss_coef=DFLT_effss_coef; 
     356                UI::get (effss_coef , set,  "effss_coef", UI::optional); 
     357                stop_niter=10; 
     358                UI::get ( stop_niter, set,"stop_niter", UI::optional ); 
     359         
     360        } 
     361 
     362void    merger_mix::to_setting  (Setting  &set) const  { 
     363                merger_base::to_setting(set); 
     364                UI::save( Ncoms, set, "ncoms"); 
     365                UI::save (effss_coef , set,  "effss_coef"); 
     366                UI::save ( stop_niter, set,"stop_niter"); 
     367 
     368        } 
     369 
     370void merger_mix::validate() { 
     371                merger_base::validate(); 
     372                bdm_assert(Ncoms>0,"Ncoms too small"); 
     373        } 
     374 
     375void merger_base::from_setting ( const Setting& set ) { 
     376                // get support 
     377                // find which method to use 
     378                epdf::from_setting (set); 
     379                string meth_str; 
     380                UI::get<string> ( meth_str, set, "method", UI::compulsory ); 
     381                if ( !strcmp ( meth_str.c_str(), "arithmetic" ) ) 
     382                        set_method ( ARITHMETIC ); 
     383                else { 
     384                        if ( !strcmp ( meth_str.c_str(), "geometric" ) ) 
     385                                set_method ( GEOMETRIC ); 
     386                        else if ( !strcmp ( meth_str.c_str(), "lognormal" ) ) { 
     387                                set_method ( LOGNORMAL ); 
     388                                set.lookupValue ( "beta", beta ); 
     389                        } 
     390                } 
     391                string dbg_file; 
     392                if ( UI::get ( dbg_file, set, "dbg_file" ) ) 
     393                        set_debug_file ( dbg_file ); 
     394                //validate() - not used 
     395        } 
     396         
     397        void merger_base::to_setting  (Setting  &set) const { 
     398                epdf::to_setting(set); 
     399                 
     400                UI::save( METHOD, set, "method"); 
     401                UI::save ( dbg_file->get_fname(), set, "dbg_file" ); 
     402                UI::save (beta, set, "beta" ); 
     403        } 
     404 
     405        void merger_base::validate() { 
     406//              bdm_assert ( eSmp._w().length() > 0, "Empty support, use set_support()." ); 
     407//              bdm_assert ( dim == eSmp._samples() ( 0 ).length(), "Support points and rv are not compatible!" ); 
     408                epdf::validate(); 
     409                bdm_assert ( isnamed(), "mergers must be named" ); 
     410        } 
    350411// DEFAULTS FOR MERGER_BASE 
    351412const MERGER_METHOD merger_base::DFLT_METHOD = LOGNORMAL;