Example #1
0
//{{{ unsigned int test_intersections_bsearch_seq(struct interval *A,
void test_intersections_bsearch_seq(struct interval *A,
									  unsigned int size_A,
									  struct interval *B,
									  unsigned int size_B,
									  unsigned int n,
									  unsigned int max_offset,
									  unsigned int *O,
									  double *mean,
									  double *sd,
									  double *p)
{
	unsigned int i,j;
	int R = 0;
	struct timeval t_start;
	unsigned int bits = (int)( ceil(log(max_offset)/log(2) ) );
	unsigned int mask = (2 << (bits-1)) - 1;

	//{{{ i_sort sort intervals by start
	qsort(B, size_B, sizeof(struct interval), compare_interval_by_start); 
	//}}}

	//{{{ i_mem split intervals into start, end, lenght, intervals
	unsigned int *A_starts =
			(unsigned int *) malloc(size_A * sizeof(unsigned int));
	unsigned int *B_starts =
			(unsigned int *) malloc(size_B * sizeof(unsigned int));
	unsigned int *B_ends =
			(unsigned int *) malloc(size_B * sizeof(unsigned int));
	unsigned int *B_lens =
			(unsigned int *) malloc(size_B * sizeof(unsigned int));

	for (i = 0; i < size_B; i++) {
		B_starts[i] = B[i].start;
		B_ends[i] = B[i].end;
		B_lens[i] = B[i].end - B[i].start;
	}
	//}}} i_mem

	//{{{ i_sort ends
	qsort(B_ends, size_B, sizeof(unsigned int), compare_unsigned_int); 
	//}}} i_sort

	//{{{ i_do find observed intersections
	*O  = count_seq(A,
					size_A,
					B_starts,
					B_ends,
					size_B);

	//}}} i_do
	
	init_genrand((unsigned) time(NULL));

	unsigned int *sims = (unsigned int *) malloc(n * sizeof(unsigned int));
	for (j = 0; j < n; j++) {

		for (i = 0; i < size_A; i++) 
			A_starts[i] = get_rand(max_offset, mask);

		qsort(A_starts, size_A, sizeof(unsigned int), compare_unsigned_int); 

		int len;
		for (i = 0; i < size_A; i++) {
			len = A[i].end - A[i].start;
			A[i].start = A_starts[i];
			A[i].end = A[i].start + len;
		}

		for (i = 0; i < size_B; i++) 
			B_starts[i] = get_rand(max_offset, mask);

		qsort(B_starts, size_B, sizeof(unsigned int), compare_unsigned_int); 

		for (i = 0; i < size_B; i++) 
			B_ends[i] = B_starts[i] + B_lens[i];
		
		qsort(B_ends, size_B, sizeof(unsigned int), compare_unsigned_int); 

		unsigned int T  = count_seq(A,
									size_A,
									B_starts,
									B_ends,
									size_B);

		sims[j] = T;
		if (T >= *O) 
			R = R + 1;
	}

	*mean = gsl_stats_int_mean((const int*)sims, 1, n);
	*sd = gsl_stats_int_sd_m((const int*)sims, 1, n, *mean);
	*p =  ( (double) R + 1) / ( (double) n + 1);


	//{{{ i_mem free B_starts B_ends B_lens
	free(B_starts);
	free(B_ends);
	free(B_lens);
	free(sims);
	//}}}
}
Example #2
0
int
main (void)
{
  /* sample sets of integers */
  
  const unsigned int ina = 20, inb = 20;

  const int test1[] = {1, 2, 3, 4, 5, 6} ;
  
  const int igroupa[] =
  {17, 18, 16, 18, 12,
   20, 18, 20, 20, 22,
   20, 10, 8, 12, 16,
   16, 18, 20, 18, 21};

  const int igroupb[] =
  {19, 20, 22, 24, 10,
   25, 20, 22, 21, 23,
   20, 10, 12, 14, 12,
   20, 22, 24, 23, 17};

  int * sorted ;


  {
    double mean = gsl_stats_int_mean (igroupa, ina);
    double expected = 17.0;
    gsl_test (!within_fuzz(mean,expected),
              "gsl_stats_int_mean (integer) (%g observed vs %g expected)",
              mean, expected);
  }

  {
    double mean = gsl_stats_int_mean (test1, 6);
    double expected = 3.5;
    gsl_test (!within_fuzz(mean,expected),
              "gsl_stats_int_mean (fractional) (%g observed vs %g expected)",
              mean, expected);
  }

  {
    double var = gsl_stats_int_variance (igroupa, ina);
    double expected = 13.7;
    gsl_test (!within_fuzz (var, expected),
              "gsl_stats_int_variance (%g observed vs %g expected)",
              var, expected);
  }

  {
    double var = gsl_stats_int_est_variance (igroupa, ina);
    double expected = 14.4210526315789;
    gsl_test (!within_fuzz (var, expected),
              "gsl_stats_int_est_variance (%g observed vs %g expected)",
              var, expected);
  }

  {
    double sd = gsl_stats_int_sd (igroupa, ina);
    double expected = 3.70135110466435;
    gsl_test (!within_fuzz (sd, expected),
              "gsl_stats_int_sd (%g observed vs %g expected)",
              sd, expected);
  }

  {
    double sd_est = gsl_stats_int_est_sd (igroupa, ina);
    double expected = 3.79750610685209;
    gsl_test (!within_fuzz (sd_est, expected),
              "gsl_stats_int_est_sd (%g observed vs %g expected)",
              sd_est, expected);
  }

  {
    double absdev = gsl_stats_int_absdev (igroupa, ina);
    double expected = 2.9;
    gsl_test (!within_fuzz (absdev, expected),
              "gsl_stats_int_absdev (%g observed vs %g expected)",
              absdev, expected);
  }

  {
    double skew = gsl_stats_int_skew (igroupa, ina);
    double expected = -0.909355923168064;
    gsl_test (!within_fuzz (skew, expected),
              "gsl_stats_int_skew (%g observed vs %g expected)",
              skew, expected);
  }

  {
    double kurt = gsl_stats_int_kurtosis (igroupa, ina);
    double expected = -0.233692524908094 ;
    gsl_test (!within_fuzz (kurt, expected),
              "gsl_stats_int_kurtosis (%g observed vs %g expected)",
              kurt, expected);
  }

  {
    double pv = gsl_stats_int_pvariance (igroupa, igroupb, ina, inb);
    double expected = 18.8421052631579;
    gsl_test (!within_fuzz (pv, expected),
              "gsl_stats_int_pvariance (%g observed vs %g expected)",
              pv, expected);
  }

  {
    double t = gsl_stats_int_ttest (igroupa, igroupb, ina, inb);
    double expected = -1.45701922702927;
    gsl_test (!within_fuzz (t, expected),
              "gsl_stats_int_ttest (%g observed vs %g expected)",
              t, expected);
  }

  {
    int max = gsl_stats_int_max (igroupa, ina);
    int expected = 22;
    gsl_test (max != expected,
              "gsl_stats_int_max (%d observed vs %d expected)", max, expected);
  }

  {
    int min = gsl_stats_int_min (igroupa, inb);
    int expected = 8;
    gsl_test (min != expected,
              "gsl_stats_int_min (%d observed vs %d expected)", min, expected);
  }

  {
    int max_index = gsl_stats_int_max_index (igroupa, ina);
    int expected = 9 ;
    gsl_test (max_index != expected,
              "gsl_stats_int_max_index (%d observed vs %d expected)",
              max_index, expected);
  }

  {
    int min_index = gsl_stats_int_min_index (igroupa, inb);
    int expected = 12 ;
    gsl_test (min_index != expected,
              "gsl_stats_int_min_index (%d observed vs %d expected)",
              min_index, expected);
  }

  sorted = (int *) malloc(ina * sizeof(int)) ;
  memcpy(sorted, igroupa, ina * sizeof(int)) ;

  gsl_stats_int_sort_data(sorted, ina) ;

  {
    double median = gsl_stats_int_median_from_sorted_data(sorted, ina) ;
    double expected = 18;
    gsl_test (!within_fuzz(median,expected),
              "gsl_stats_int_median_from_sorted_data (even) (%g observed vs %g expected)",
              median, expected);
  }

  {
    double median = gsl_stats_int_median_from_sorted_data(sorted, ina - 1) ;
    double expected = 18;
    gsl_test (!within_fuzz(median,expected),
              "gsl_stats_int_median_from_sorted_data (odd) (%g observed vs %g expected)",
              median, expected);
  }


  {
    double zeroth = gsl_stats_int_quantile_from_sorted_data(sorted, ina, 0.0) ;
    double expected = 8;
    gsl_test (!within_fuzz(zeroth,expected),
              "gsl_stats_quantile_from_sorted_data (0) (%g observed vs %g expected)",
              zeroth, expected);
  }

  {
    double top = gsl_stats_int_quantile_from_sorted_data(sorted, ina, 1.0) ;
    double expected = 22;
    gsl_test (!within_fuzz(top,expected),
              "gsl_stats_int_quantile_from_sorted_data (100) (%g obs vs %g exp)",
              top, expected);
  }

  {
    double median = gsl_stats_int_quantile_from_sorted_data(sorted, ina, 0.5) ;
    double expected = 18;
    gsl_test (!within_fuzz(median,expected),
              "gsl_stats_int_quantile_from_sorted_data (50, even) (%g obs vs %g exp)",
              median, expected);
  }

  {
    double median = gsl_stats_int_quantile_from_sorted_data(sorted, ina - 1, 0.5);
    double expected = 18;
    gsl_test (!within_fuzz(median,expected),
              "gsl_stats_int_quantile_from_sorted_data (50, odd) (%g obs vs %g exp)",
              median, expected);
  }


  
  exit (gsl_test_summary ());
}