void TranSVD::reverse(Transformable &data) { // Transform super-parameters to base parameters assert(Vt.cols() == base_parameter_names.size()); int n_base = Vt.cols(); vector<double> super_par_vec = data.get_data_vec(super_parameter_names); vector<double>::iterator it; for (it=super_par_vec.begin(); it!=super_par_vec.end(); ++it) { (*it) -= 10.0; } Transformable ret_base_pars; int n_sing_val = Sigma.size(); VectorXd delta_base_mat = Vt.block(0,0,n_sing_val, Vt.cols()).transpose() * stlvec_2_egienvec(super_par_vec); for (int i=0; i<n_base; ++i) { ret_base_pars.insert(base_parameter_names[i], delta_base_mat(i) + init_base_numeric_parameters.get_rec(base_parameter_names[i])); } data = ret_base_pars; }