示例#1
0
文件: stepsupp.c 项目: nasa/QuIP
float get_opt_param_value(QSP_ARG_DECL  const char *name)
{
	Opt_Param *opp;

	opp=get_opt_param(name);
	if( opp==NULL ){
		sprintf(ERROR_STRING,"No optimization parameter \"%s\"",name);
		warn(ERROR_STRING);
		return(-1.0);
	}
	return(opp->ans);
}
示例#2
0
文件: errbars.c 项目: nasa/QuIP
static float u_confidence(SINGLE_QSP_ARG_DECL)	/* return sq. deviation from .975 */
{
	int k,j;

	float t_p;		/* trial probability */
	Opt_Param *opp;

	sum = 0.0;

	opp=get_opt_param(TP_NAME);
	assert( opp != NULL );

	t_p = opp->ans;


	if( n_obs > 0 ){
		for(k=n_seen+1;k<=n_obs;k++){
			pk = 1;
			for(j=0;j<k;j++) pk *= t_p;
			for(j=0;j<(n_obs-k);j++) pk *= (1-t_p);
			/* binomial coefficient */
			num = 1;
			denom = 1;
			numfact = n_obs;
			denomfact = k;
			for(j=0;j<k;j++){
				num *= numfact;
				denom *= denomfact;
				numfact --;
				denomfact --;
			}
			pk *= num / denom;
			sum += pk;
		}
	} else WARN("zero observations!?");
	/* sum is the probability of observing n_obs or more */

	fit_err = ((1-alpha)-sum)*((1-alpha)-sum);

	return(fit_err);
}
int		parse_options(int ac, char **av, t_args *args)
{
  int		i;
  int		found;

  i = 0;
  found = 0;
  if (ac < 2)
    print_err("\nErr: invalid arguments.\n");
  while (option[i].param && !found)
    {
      if (!strcmp(av[1], option[i].param) && strlen(av[1]) == 2)
	{
	  if (is_in_str(av[1][1], "cv"))
	    get_opt_param(av, args);
	  get_str_param(av, args);
	  return (i);
	}
      i++;
    }
  print_err("Err: couldn't find [option].\n");
  return (-1);
}
示例#4
0
文件: weibull.c 项目: E-LLP/QuIP
static float w_likelihood(SINGLE_QSP_ARG_DECL)		/* called from optimize; return likelihood of guess */
{

	float lh=0.0,lhinc;
	int i;
	int ntt,		/* number of total trials */
	    nc;			/* number "correct" */
	float pc,xv;

	float t_alpha, t_beta;	/* trial slope and int */
	Opt_Param *opp;

	/* compute the likelihood for this guess */

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

	t_alpha = opp->ans;

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

	t_beta = opp->ans;

	for(i=0;i<_nvals;i++){

		/* calculate theoretical percent correct with this guess */

		if( (ntt=DATUM_NTOTAL(DTBL_ENTRY(the_dtp,i)) ) <= 0 )
			continue;

		nc=DATUM_NCORR( DTBL_ENTRY(the_dtp,i) );
		xv = xval_array[ i ];

		if( xv == 0.0 ) pc = (float) w_gamma;
		else {
			pc = (float) (1 - (1-w_gamma)*exp(-pow( xv/t_alpha, t_beta ) ));
			if( pc > (1-error_rate) ) pc =(float) ( 1-error_rate);
		}

		/* pc is the theoretical % correct at this xval */

		lhinc = (float) (nc * log( pc ) + ( ntt - nc ) * log( 1 - pc ));
		lh -= lhinc;
	}

	/* return the answer */

	return(lh);
}
示例#5
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);
}