Example #1
0
void print(int argc,char **argv){
  
  if(argc<1){
    fprintf(stderr,"\t-> Must supply afile.saf.idx files \n");
    fprintf(stderr,"\t-> Examples \n");
    fprintf(stderr,"\t-> ./ngsPSMC print pop1.saf.idx \n");
    fprintf(stderr,"\t-> ./ngsPSMC print pop1.saf.idx -r chr1:10000000-12000000\n");
    return; 
  }
  
  args *pars = getArgs(argc,argv);
  writepsmc_header(stderr,pars->perc);
  
  for(myMap::iterator it=pars->perc->mm.begin();it!=pars->perc->mm.end();++it){
    
    if(pars->chooseChr!=NULL)
      it = iter_init(pars->perc,pars->chooseChr,pars->start,pars->stop);
    else
      it = iter_init(pars->perc,it->first,pars->start,pars->stop);

    for(size_t s=pars->perc->first;s<pars->perc->last;s++)
      fprintf(stdout,"%s\t%d\t%e\t%e\n",it->first,pars->perc->pos[s]+1,pars->perc->gls[2*s],pars->perc->gls[2*s+1]);
    
    if(pars->chooseChr!=NULL)
      break;
  }
  
  destroy_args(pars);
}
Example #2
0
void _set_track_val_list(track_ctx_t *trackctx,
                         list_t *bindings,
                         byte_t *val_list,
                         size_t *list_sz)
{
  list_iterator_t iter_binding, iter_track;
  uint_t          idx;
  track_ctx_t     *trackctx_ptr = NULL;
  binding_t       *binding = NULL;

  memset(val_list, 0, 256);
  for (iter_init(&iter_binding, bindings), idx = 0;
       iter_node(&iter_binding);
       iter_next(&iter_binding))
    {
      binding = iter_node_ptr(&iter_binding);
      for (iter_init(&iter_track, &(binding->tracks));
           iter_node(&iter_track);
           iter_next(&iter_track))
        {
          trackctx_ptr = iter_node_ptr(&iter_track);
          if (trackctx == trackctx_ptr)
            {
              val_list[idx] = binding->val;
              idx++;
              break;
            }
        }
    }
  *list_sz = idx;
}
Example #3
0
int makeold(int argc,char **argv){
  if(argc<1){
    fprintf(stderr,"\t-> output is a vcf2fq style file \n");
    return 0; 
  }
  args *pars = getArgs(argc,argv);
  writepsmc_header(stderr,pars->perc);
  

  double *gls = new double[2*pars->perc->nSites];
  size_t at=0;
  //first pull all the data
  for(myMap::iterator it=pars->perc->mm.begin();it!=pars->perc->mm.end();++it){
    if(pars->chooseChr!=NULL)
      it = iter_init(pars->perc,pars->chooseChr,pars->start,pars->stop);
    else
      it = iter_init(pars->perc,it->first,pars->start,pars->stop);
    
    //    fprintf(stderr,"it->first:%s\tlast:%lu\n",it->first,pars->perc->last);
    memcpy(gls+at,pars->perc->gls,sizeof(double)*2*pars->perc->last);
    at += pars->perc->last;
    if(pars->chooseChr!=NULL)
      break;
  }
  double opt = 0.01;
  double llh = em(opt,gls,at,1e-8);
  fprintf(stderr,"estimated het:%f with llh:%f\n",opt,llh);
  delete [] gls;

  kstring_t kstr;kstr.l=kstr.m=0;kstr.s=NULL;
  for(myMap::iterator it=pars->perc->mm.begin();it!=pars->perc->mm.end();++it){
    if(pars->chooseChr!=NULL)
      it = iter_init(pars->perc,pars->chooseChr,pars->start,pars->stop);
    else
      it = iter_init(pars->perc,it->first,pars->start,pars->stop);
    ksprintf(&kstr,">%s\n",it->first);
    double *pp = new double[pars->perc->last];
    calcpost(opt,pars->perc->gls,pars->perc->last,pp);
    writefa(&kstr,pp,pars->perc->last,100,50,0.9);
    if(kstr.l>0&&kstr.s[kstr.l-1]!='\n')
      ksprintf(&kstr,"\n");
    fwrite(kstr.s,sizeof(char),kstr.l,stdout);
    kstr.l=0;
    delete [] pp;
    if(pars->chooseChr!=NULL)
      break;
  }
  free(kstr.s);
  /*
 
    break;
  */
  return 0;
}
Example #4
0
void print(int argc,char **argv){
  if(argc<1){
    fprintf(stderr,"\t-> Must supply afile.saf.idx files \n");
    fprintf(stderr,"\t-> Examples \n");
    fprintf(stderr,"\t-> ./realSFS print pop1.saf.idx \n");
    fprintf(stderr,"\t-> ./realSFS print pop1.saf.idx -r chr1:10000000-12000000\n");
    fprintf(stderr,"\t-> ./realSFS print pop1.saf.idx pop2.saf.idx -r chr2:10000000-12000000\n");
    fprintf(stderr,"\t-> You can generate the oldformat by appending the -oldout 1 to the print command like\n");
    fprintf(stderr,"\t-> ./realSFS print pop1.saf.idx pop2.saf.idx -oldout 1\n");
    return; 
  }
  
  args *pars = getArgs(argc,argv);
  for(int i=0;i<pars->saf.size();i++)
    pars->saf[0]->kind = 2;
  if(1||pars->saf.size()!=1){
    fprintf(stderr,"\t-> Will jump to multisaf printer and will only print intersecting sites between populations\n");
    printMulti<T>(pars);
    return;
  }

  writesaf_header(stderr,pars->saf[0]);
  
  float *flt = new float[pars->saf[0]->nChr+1];
  for(myMap::iterator it=pars->saf[0]->mm.begin();it!=pars->saf[0]->mm.end();++it){

    if(pars->chooseChr!=NULL)
      it = iter_init(pars->saf[0],pars->chooseChr,pars->start,pars->stop);
    else
      it = iter_init(pars->saf[0],it->first,pars->start,pars->stop);
 
    size_t ret;
    int pos;

    while((ret=iter_read(pars->saf[0],flt,sizeof(float)*(pars->saf[0]->nChr+1),&pos))){
      fprintf(stdout,"%s\t%d",it->first,pos+1);
      for(int is=0;is<pars->saf[0]->nChr+1;is++)
	fprintf(stdout,"\t%f",flt[is]);
      fprintf(stdout,"\n");
    }
 
    if(pars->chooseChr!=NULL)
      break;
  }
  
  delete [] flt;
  destroy_args(pars);
}
Example #5
0
void write_midifile_track_engine_ctx(int fd, engine_ctx_t *ctx)
{
  list_iterator_t iter;
  output_t        *output;
  buf_node_t      head = {NULL, 0, NULL};
  buf_node_t      *node;
  uint_t          idx = 0;

  for (iter_init(&iter, &(ctx->output_list)),
         node = &head,
         idx = 0;
       iter_node(&iter);
       iter_next(&iter),
         idx++)
    {
      output = iter_node_ptr(&iter);
      node = _append_sysex_port(node, output, idx);
    }

  node = _append_metaev_set_tempo(node, ctx->tempo);
  /* node = _append_metaev_eot(node); */
  _append_metaev_eot(node);

  node = get_midifile_trackhdr(get_buf_list_size(head.next));
  node->next = head.next;

  write_buf_list(fd, node);
  free_buf_list(node);
}
Example #6
0
void dump_track(track_t *track)
{
  list_iterator_t tickit;

  output("track \"%s\" got %d tick event(s)\n", track->name, track->tickev_list.len);
  for (iter_init(&tickit, &(track->tickev_list));
       iter_node(&tickit) != NULL;
       iter_next(&tickit))
      dump_tickev((tickev_t *) iter_node_ptr(&tickit));
}
Example #7
0
void dump_tickev(tickev_t *tickev)
{
  list_iterator_t seqevit;

  output("At tick %d %s got %d event(s)\n",
         tickev->tick,
         tickev->deleted == TRUE ? "(\033[31mdeleted\033[0m)" : "(not deleted)",
         tickev->seqev_list.len);
  for (iter_init(&seqevit, &(tickev->seqev_list));
       iter_node(&seqevit) != NULL;
       iter_next(&seqevit))
    dump_seqev((seqev_t *) iter_node_ptr(&(seqevit)));
}
Example #8
0
uint_t _seqev_len(tickev_t *tickev)
{
  list_iterator_t seqevit;
  seqev_t         *ev = NULL;
  uint_t          len = 0;

  for (iter_init(&seqevit, &(tickev->seqev_list));
       iter_node(&seqevit) != NULL;
       iter_next(&seqevit))
    {
      ev = (seqev_t *) iter_node_ptr(&seqevit);
      if (ev->deleted == FALSE)
        len++;
    }

  return len;
}
Example #9
0
int_t get_outputid(list_t *output_list, output_t *output)
{
   list_iterator_t iter;
   output_t        *tmp;
   int_t           idx;

   for (iter_init(&iter, output_list),
          idx = 0;
        iter_node(&iter);
        iter_next(&iter),
          idx++)
     {
       tmp = iter_node_ptr(&iter);
       if (tmp == output)
         return idx;
     }
   return -1;
}
Example #10
0
void engine_save_project(engine_ctx_t *ctx, char *file_path)
{
  int              fd;
  list_iterator_t  iter;
  track_ctx_t      *trackctx = NULL;
  midifile_track_t mtrack;

  if (ctx->track_list.len > 0)
    {
      if (0 == access(file_path, F_OK))
        unlink(file_path);
      debug("start of write");
      fd = open(file_path, O_WRONLY|O_CREAT, (S_IRUSR|S_IWUSR
                                              | S_IRGRP|S_IWGRP
                                              | S_IROTH|S_IWOTH));
      if (fd == -1)
        {
          output_error("problem while open file to save (%s)\n",
                       strerror(errno));
          return;
        }

      write_midifile_header(fd, ctx->track_list.len + 1, ctx->ppq);

      write_midifile_track_engine_ctx(fd, ctx);

      for (iter_init(&iter, &(ctx->track_list));
           iter_node(&iter);
           iter_next(&iter))
        {
          trackctx = iter_node_ptr(&iter);
          set_midifile_track(trackctx, &mtrack);
          write_midifile_track(fd, &mtrack);
        }
      close(fd);
    }
  debug("End of write\n\n\n");
}
Example #11
0
void
_cairo_contour_simplify (cairo_contour_t *contour, double tolerance)
{
    cairo_contour_chain_t *chain;
    cairo_point_t *last = NULL;
    cairo_contour_iter_t iter, furthest;
    cairo_bool_t simplified;
    uint64_t max = 0;
    int i;

    if (contour->chain.num_points <= 2)
	return;

    tolerance = tolerance * CAIRO_FIXED_ONE;
    tolerance *= tolerance;

    /* stage 1: vertex reduction */
    for (chain = &contour->chain; chain; chain = chain->next) {
	for (i = 0; i < chain->num_points; i++) {
	    if (last == NULL ||
		point_distance_sq (last, &chain->points[i]) > tolerance) {
		last = &chain->points[i];
	    } else {
		MARK_DELETED (&chain->points[i]);
	    }
	}
    }

    /* stage2: polygon simplification using Douglas-Peucker */
    simplified = FALSE;
    do {
	last = &contour->chain.points[0];
	iter_init (&furthest, contour);
	max = 0;
	for (chain = &contour->chain; chain; chain = chain->next) {
	    for (i = 0; i < chain->num_points; i++) {
		uint64_t d;

		if (DELETED (&chain->points[i]))
		    continue;

		d = point_distance_sq (last, &chain->points[i]);
		if (d > max) {
		    furthest.chain = chain;
		    furthest.point = &chain->points[i];
		    max = d;
		}
	    }
	}
	assert (max);

	simplified = FALSE;
	iter_init (&iter, contour);
	simplified |= _cairo_contour_simplify_chain (contour, tolerance,
						     &iter, &furthest);

	iter_init_last (&iter, contour);
	if (! iter_equal (&furthest, &iter))
	    simplified |= _cairo_contour_simplify_chain (contour, tolerance,
							 &furthest, &iter);
    } while (simplified);

    iter_init (&iter, contour);
    for (chain = &contour->chain; chain; chain = chain->next) {
	int num_points = chain->num_points;
	chain->num_points = 0;
	for (i = 0; i < num_points; i++) {
	    if (! DELETED(&chain->points[i])) {
		if (iter.point != &chain->points[i])
		    *iter.point = chain->points[i];
		iter.chain->num_points++;
		iter_next (&iter);
	    }
	}
    }

    if (iter.chain) {
	cairo_contour_chain_t *next;

	for (chain = iter.chain->next; chain; chain = next) {
	    next = chain->next;
	    free (chain);
	}

	iter.chain->next = NULL;
	contour->tail = iter.chain;
    }
}
Example #12
0
int
check_cg_pc (int n,
	     int it_max, double it_eps,
	     int verbose, double tiny)
{
  if (verbose != 0)
    {
      fprintf (stdout,
	       "==================================================\n"
	       "check_cg_pc(n=%d): start\n", n);
    }

  int check = 0;
  double max = 0.0;

  double *a  = (double *)malloc (sizeof (double) * n * n);
  double *b  = (double *)malloc (sizeof (double) * n);
  double *x  = (double *)malloc (sizeof (double) * n);
  double *x_ = (double *)malloc (sizeof (double) * n);
  double *lu = (double *)malloc (sizeof (double) * n * n);
  CHECK_MALLOC (a,  "check_cg_pc");
  CHECK_MALLOC (b,  "check_cg_pc");
  CHECK_MALLOC (x,  "check_cg_pc");
  CHECK_MALLOC (x_, "check_cg_pc");
  CHECK_MALLOC (lu, "check_cg_pc");


  // symmetric matrix
  int i, j;
  for (i = 0; i < n; i ++)
    {
      a[i * n + i] = (double)(i+1);
      for (j = i+1; j < n; j ++)
	{
	  a[i * n + j] = 1.0/(double)(i+j);
	  a[j * n + i] = 1.0/(double)(i+j);
	}
    }

  srand48(0);
  for (i = 0; i < n; i ++)
    {
      b[i] = drand48();
    }

  struct iter *it
    = iter_init ("cg", it_max, 0, it_eps, // solver param
		 n, NULL, 0, // guess
		 0, NULL); // debug info
  CHECK_MALLOC (it, "check_cg_pc");

  char label[80];


  // cg_
  for (i = 0; i < n; i ++)
    {
      x[i] = 0.0;
    }
  double t0 = ptime_ms_d ();
  cg_ (n, b, x,
       local_atimes, (void *)a,
       it);
  double t1 = ptime_ms_d ();
  if (verbose != 0)
    {
      fprintf (stdout, "cg_         "
	       "iter = %d, res = %e, CPU time = %f\n",
	       it->niter, sqrt(it->res2), t1 - t0);
    }

  // cg_pc with inv_diag()
  for (i = 0; i < n; i ++)
    {
      x_[i] = 0.0;
    }
  t0 = ptime_ms_d ();
  cg_pc (n, b, x_,
	 local_atimes, (void *)a,
	 inv_diag, (void *)a,
	 it);
  t1 = ptime_ms_d ();
  if (verbose != 0)
    {
      fprintf (stdout, "cg_pc(diag) "
	       "iter = %d, res = %e, CPU time = %f\n",
	       it->niter, sqrt(it->res2), t1 - t0);
    }
  for (i = 0; i < n; i ++)
    {
      sprintf (label, "x[%d]", i);
      check += compare_max (x[i], x_[i], label, verbose, tiny, &max);
    }

  // cg_pc with inv_ILU()
  for (i = 0; i < n; i ++)
    {
      x_[i] = 0.0;
    }
  LU_Gauss (n, a, lu);
  t0 = ptime_ms_d ();
  cg_pc (n, b, x_,
	 local_atimes, (void *)a,
	 inv_ILU, (void *)lu,
	 it);
  t1 = ptime_ms_d ();
  if (verbose != 0)
    {
      fprintf (stdout, "cg_pc(LU)   "
	       "iter = %d, res = %e, CPU time = %f\n",
	       it->niter, sqrt(it->res2), t1 - t0);
    }
  for (i = 0; i < n; i ++)
    {
      sprintf (label, "x[%d]", i);
      check += compare_max (x[i], x_[i], label, verbose, tiny, &max);
    }

  iter_free (it);

  free (a);
  free (b);
  free (x);
  free (x_);
  free (lu);

  if (verbose != 0)
    {
      fprintf (stdout, " max error = %e vs tiny = %e\n", max, tiny);
      if (check == 0) fprintf (stdout, " => PASSED\n\n");
      else            fprintf (stdout, " => FAILED\n\n");
    }

  return (check);
}
Example #13
0
File: list.c Project: dsmrd/dsmrd
/*@null@*/ iter_t list_head(list_t l) {
	return iter_init(l->head);
}
Example #14
0
int
main(int argc, const char *argv[])
{
    iter_t          	iter;
    const char     	*fname = NULL;
    hid_t           	fid;
    struct handler_t   *hand;
    H5F_info_t      	finfo;

    /* Disable error reporting */
    H5Eset_auto2(H5E_DEFAULT, NULL, NULL);

    /* Initialize h5tools lib */
    h5tools_init();
    hand = parse_command_line (argc, argv);
    if(!hand) {
        error_msg(progname, "unable to parse command line arguments \n");
        leave(EXIT_FAILURE);
    } /* end if */

    fname = argv[opt_ind];

    printf("Filename: %s\n", fname);

    fid = H5Fopen(fname, H5F_ACC_RDONLY, H5P_DEFAULT);
    if(fid < 0) {
        error_msg(progname, "unable to open file \"%s\"\n", fname);
        leave(EXIT_FAILURE);
    } /* end if */

    /* Initialize iter structure */
    iter_init(&iter, fid);

    /* Get storge info for SOHM's btree/list/heap and superblock extension */
    if(H5Fget_info(fid, &finfo) < 0)
	warn_msg(progname, "Unable to retrieve SOHM info\n");
    else {
	iter.super_ext_size = finfo.super_ext_size;
	iter.SM_hdr_storage_size = finfo.sohm.hdr_size;
	iter.SM_index_storage_size = finfo.sohm.msgs_info.index_size;
	iter.SM_heap_storage_size = finfo.sohm.msgs_info.heap_size;
    } /* end else */

    /* Walk the objects or all file */
    if(display_object) {
        unsigned u;

        u = 0;
        while(hand[u].obj) {
            if (h5trav_visit(fid, hand[u].obj, TRUE, TRUE, obj_stats, lnk_stats, &iter) < 0) 
		warn_msg(progname, "Unable to traverse object \"%s\"\n", hand[u].obj);
	    else
		print_statistics(hand[u].obj, &iter);
            u++;
        } /* end while */
    } /* end if */
    else {
        if (h5trav_visit(fid, "/", TRUE, TRUE, obj_stats, lnk_stats, &iter) < 0)
	    warn_msg(progname, "Unable to traverse objects/links in file \"%s\"\n", fname);
	else
	    print_statistics("/", &iter);
    } /* end else */

    if (hand) free(hand);

    if(H5Fclose(fid) < 0) {
        error_msg(progname, "unable to close file \"%s\"\n", fname);
        leave(EXIT_FAILURE);
    }

    leave(EXIT_SUCCESS);
}