示例#1
0
文件: errbars.c 项目: nasa/QuIP
static void get_bar(QSP_ARG_DECL  int index, float (*func)(SINGLE_QSP_ARG_DECL), float *ptr )
{
	Opt_Param op1, *opp=(&op1);

	/* initialize optimization vars */

	delete_opt_params(SINGLE_QSP_ARG);

	opp->op_name = TP_NAME;
	opp->ans= 0.5;
	opp->maxv= 1.0;
	opp->minv= 0.0;
	opp->delta= (float) 0.2;
	opp->mindel= (float) 1.0e-30;

	opp=add_opt_param(QSP_ARG  opp);

	optimize(QSP_ARG  func);

	*ptr = opp->ans;
}
示例#2
0
文件: weibull.c 项目: E-LLP/QuIP
static void weibull_fit(QSP_ARG_DECL  Data_Tbl *dp,int ntrac)		/** maximum liklihood fit */
{
	Opt_Param op1, *alpha_opp=(&op1);
	Opt_Param op2, *beta_opp=(&op2);

	/* initialize global */

	the_dtp = dp;

	/* initialize the parameters */

	delete_opt_params(SINGLE_QSP_ARG);	/* clear any existing parameters */

	alpha_opp->op_name = ALPHA_NAME;
	alpha_opp->ans = xval_array[ _nvals/2 ];
	if( xval_array[0] < xval_array[_nvals-1] ){
		alpha_opp->maxv =  xval_array[_nvals-1];
		alpha_opp->minv =  xval_array[0];
	} else {
		alpha_opp->maxv = xval_array[0];
		alpha_opp->minv = xval_array[_nvals-1];
	}
	if( alpha_opp->minv < 0.0 ){
		WARN("wiebull fit will blow up for negative x values");
		return;
	}
	alpha_opp->delta = (float) fabs( xval_array[_nvals/2] - xval_array[ (_nvals/2)+1 ] );
	alpha_opp->mindel = (float) 1.0e-30;

	add_opt_param(QSP_ARG  alpha_opp);


	beta_opp->op_name = BETA_NAME;
	beta_opp->ans = 2;
	beta_opp->maxv = 10000.0;
	beta_opp->minv = 0.0;
	beta_opp->delta = 0.5;
	beta_opp->mindel = (float) 1.0e-30;

	add_opt_param(QSP_ARG  beta_opp);

	if( fc_flag ){
		w_gamma = 0.5;
	} else {
		w_gamma = error_rate;
	}


	optimize(QSP_ARG  w_likelihood);

	alpha_opp=get_opt_param(QSP_ARG  ALPHA_NAME);
//#ifdef CAUTIOUS
//	if( alpha_opp==NO_OPT_PARAM ){
//		ERROR1("CAUTIOUS:  missing alpha param");
//		IOS_RETURN
//	}
//#endif
	assert( alpha_opp != NO_OPT_PARAM );

	alpha = alpha_opp->ans;

	beta_opp=get_opt_param(QSP_ARG  BETA_NAME);
//#ifdef CAUTIOUS
//	if( beta_opp==NO_OPT_PARAM ){
//		ERROR1("CAUTIOUS:  missing beta param");
//		IOS_RETURN
//	}
//#endif
	assert( beta_opp != NO_OPT_PARAM );

	beta = beta_opp->ans;

	/* clean up */
	del_opt_param(QSP_ARG  beta_opp);
	del_opt_param(QSP_ARG  alpha_opp);
}