| 351 | void 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 | |
| 362 | void 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 | |
| 370 | void merger_mix::validate() { |
| 371 | merger_base::validate(); |
| 372 | bdm_assert(Ncoms>0,"Ncoms too small"); |
| 373 | } |
| 374 | |
| 375 | void 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 | } |