Exemplo n.º 1
0
static int
gen_subalg( FILE *fp )
{
  ALG A;
  VECTORS v;
  int err;
  char outf[NAME_LEN_LIMIT+1];

  print_spopen("Generating a subpower.");
  A.func= (FUNCT *)NULL;
  v.list= (VEC *)NULL;

  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    goto WLe_gen_subalg;
  }
  err= ps_alg(name, &A);
  if(err!= NO_ERROR)
  {
    hlp_gen_subalg();
    goto WLe_gen_subalg;
  }
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    goto WLe_gen_subalg;
  }
  err = ps_vectors(name, &v, A.size);
  if(err!= NO_ERROR)
  {
    hlp_gen_subalg();
    goto WLe_gen_subalg;
  }
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    goto WLe_gen_subalg;
  }
  err=ps_out(name, outf);
  if(err != NO_ERROR)
  {
    hlp_gen_subalg();
    hlp_vector_file();
    goto WLe_gen_subalg;
  }
  err= spf(&A, &v, NULL, NULL, NULL);
  if(err!= NO_ERROR)
  {
    goto WLe_gen_subalg;
  }
  err = wr_vectors(outf, &v);
  if(err!= NO_ERROR)
  {
    goto WLe_gen_subalg;
  }
  free_alg(&A);
  free_vectors(&v);
  print_spclose("End of generating a subpower.");
  return(NO_ERROR);

WLe_gen_subalg:
  free_alg(&A);
  free_vectors(&v);
  return(err);
}
Exemplo n.º 2
0
static void *correct_thread(void *data) {
	correct_aux_t *d = (correct_aux_t*) data;
	int i = 0;
	bwa_seq_t *s = NULL, *query = NULL, *seqs = d->ht->seqs;
	readarray *low_kmer_reads = d->low_kmer_reads;
	alignarray *aligns = NULL;

	aligns = g_ptr_array_sized_new(N_DEFAULT_ALIGNS);
	for (i = d->start; i < d->end; i++) {
		if (i % 10000 == 0)
			show_msg(__func__,
					"Thread %d correction progress: [%d,%d,%d]... \n", d->tid,
					d->start, i, d->end);
		s = g_ptr_array_index(low_kmer_reads, i);
		if (is_repetitive_q(s)) {
			s->status = USED;
			continue;
		}
		// Only the fresh reads, or the reads tried once would be corrected.
		if (s->status != FRESH)
			continue;
		query = new_seq(s, s->len - 8, 0);
		pe_aln_query(s, s->seq, d->ht, MISMATCHES, s->len, 0, aligns);
		pe_aln_query(s, s->rseq, d->ht, MISMATCHES, s->len, 1, aligns);
		if (aligns->len >= 4)
			correct_bases(seqs, s, aligns, d->tid);
		s->status = TRIED;
		reset_alg(aligns);
		bwa_free_read_seq(1, query);
		//if (i > 10000)
		//	break;
	}
	free_alg(aligns);
	show_msg(__func__, "Thread %d finished. \n", d->tid);
}
Exemplo n.º 3
0
static int
cr_fact_alg( FILE *fp )
{
  ALG A;
  ALG F;
  PART cong;
  int err;
  char outf[NAME_LEN_LIMIT+1];

  A.func= NULL;
  F.func= NULL;
  cong.func= NULL;

  print_spopen("Creating factor algebra.");
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    goto WLe_cr_fact_alg;
  }
  err= ps_alg(name, &A);
  if(err!= NO_ERROR)
  {
    hlp_cr_fact_alg();
    goto WLe_cr_fact_alg;
  }
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    goto WLe_cr_fact_alg;
  }
  err = ps_cong(name, &cong, A.size);
  if(err != NO_ERROR) {
    hlp_cr_fact_alg();
    goto WLe_cr_fact_alg;
  }
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    goto WLe_cr_fact_alg;
  }
  err=ps_out(name, outf);
  if(err != NO_ERROR)
  {
    hlp_cr_fact_alg();
    hlp_alg_file();
    goto WLe_cr_fact_alg;
  }
  err= factor_alg(&A, cong.func, &F );
  if(err!= NO_ERROR)
  {
    goto WLe_cr_fact_alg;
  }
  err = wr_alg(outf, &F);
  if(err!= NO_ERROR)
  {
    goto WLe_cr_fact_alg;
  }
  free_alg(&A);
  free_alg(&F);
  if(cong.func!=NULL) free((void *)(cong.func));
  print_spclose("End of creating factor algebra.");
  return(NO_ERROR);

WLe_cr_fact_alg:
  free_alg(&A);
  free_alg(&F);
  if(cong.func!=NULL) free((void *)(cong.func));
  return(err);
}
Exemplo n.º 4
0
static int
cr_dir_prod( FILE *fp )
{
  ALG *algs;
  ALG P;
  VECTORS v;
  int i, err, errf;
  char outf[NAME_LEN_LIMIT+1];
  char outuni[NAME_LEN_LIMIT+1];

  errf=NO_ERROR;
  print_spopen("Creating a direct product.");
  v.list= (VEC *)NULL;
  P.func=NULL;
  algs=NULL;
/* These lines for free_ to work properly */

  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    errf=ERROR;
    goto WLe_dir_prod;
  }
  err = ps_number(name, 0, PROD_LIMIT-1, &(v.lvecs));
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    hlp_dir_prod();
    goto WLe_dir_prod;
  }
  v.nvecs=0; /* unnecessary */
/* allocate room for algebras */
  algs= (ALG *)(calloc(v.lvecs,sizeof(ALG)));
  if(algs== NULL) {
    print_derr("Not enough memory to store algebras.");
    errf=ERROR;
    hlp_dir_prod();
    goto WLe_dir_prod;
  }
  for(i=0; i<v.lvecs; i++) {
    (algs[i]).func= (FUNCT *)NULL;
  }
  for(i=0; i<v.lvecs; i++) {
    if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
      errf=ERROR;
      goto WLe_dir_prod;
    }
      err= ps_alg(name, &(algs[i]));
    if(err!= NO_ERROR)
    {
      errf=ERROR;
      print_nerr("%d algebra description lines needed.", v.lvecs);
      hlp_dir_prod();
      goto WLe_dir_prod;
    }
  }
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    errf=ERROR;
    goto WLe_dir_prod;
  }
  err=ps_out(name, outf);
  if(err != NO_ERROR)
  {
    errf=ERROR;
    print_nerr("%d algebra lines and two output lines needed.", v.lvecs);
    hlp_dir_prod();
    hlp_alg_file();
    goto WLe_dir_prod;
  }
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    errf=ERROR;
    goto WLe_dir_prod;
  }
  err=ps_out(name, outuni);
  if(err != NO_ERROR)
  {
    errf=ERROR;
    print_nerr("%d algebra lines and two output lines needed.", v.lvecs);
    hlp_dir_prod();
    hlp_vector_file();
    goto WLe_dir_prod;
  }
  err= sub_prod_alg(algs, &v, &P);
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    goto WLe_dir_prod;
  }
  err = wr_alg(outf, &P);
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    goto WLe_dir_prod;
  }
  err = wr_vectors(outuni, &v);
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    goto WLe_dir_prod;
  }

WLe_dir_prod:
  if(algs!=NULL) {
    for(i=0; i<v.lvecs; i++) {
      free_alg(&(algs[i]));
    }
    free((void *)algs);
  }
  free_alg(&P);
  free_vectors(&v);
  if(errf==NO_ERROR) {
    print_spclose("End of creating a direct product.");
  }
  return(errf);
}
Exemplo n.º 5
0
static int
cr_subpr_alg( FILE *fp )
{
  ALG *algs;
  ALG P;
  VECTORS v;
  int i, err, errf;
  char outf[NAME_LEN_LIMIT+1];
  int *sizes;

  errf=NO_ERROR;
  print_spopen("Creating an algebra in a subproduct.");
  v.list= (VEC *)NULL;
  P.func=NULL;
  sizes=NULL;
  algs=NULL;
/* These lines for free_ to work properly */

  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    errf=ERROR;
    goto WLe_cr_subpr_alg;
  }
  err = ps_vectors(name, &v, ALG_SIZE_LIMIT); /* must have a third arg. */
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    hlp_cr_subpr_alg();
    goto WLe_cr_subpr_alg;
  }
  if(v.lvecs>=PROD_LIMIT)
  {
    print_derr("Illegal number %d of components (should be at most %d).",
                                                v.lvecs, PROD_LIMIT-1 );
    errf=ERROR;
    goto WLe_cr_subpr_alg;
  }
  if(v.nvecs == 0)
  {
    print_dpres("The universe of this algebra is empty, it cannot be created.");
    errf=ERROR;
    goto WLe_cr_subpr_alg;
  }
/* allocate room for algebras */
  algs= (ALG *)(calloc(v.lvecs,sizeof(ALG)));
  if(algs== NULL) {
    print_derr("Not enough memory to store algebras.");
    errf=ERROR;
    hlp_cr_subpr_alg();
    goto WLe_cr_subpr_alg;
  }
  for(i=0; i<v.lvecs; i++) {
    (algs[i]).func= (FUNCT *)NULL;
  }
  for(i=0; i<v.lvecs; i++) {
    if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
      errf=ERROR;
      goto WLe_cr_subpr_alg;
    }
    err= ps_alg(name, &(algs[i]));
    if(err!= NO_ERROR)
    {
      errf=ERROR;
      print_nerr("%d algebra description lines needed.", v.lvecs);
      hlp_cr_subpr_alg();
      goto WLe_cr_subpr_alg;
    }
  }
/* algebras read, now check vector entries */
  sizes= (int *) (calloc(v.lvecs,sizeof(int)));
  if(sizes== NULL) {
    print_derr("Not enough memory to check vector entries.");
    errf=ERROR;
    hlp_cr_subpr_alg();
    goto WLe_cr_subpr_alg;
  }
  for(i=0; i<v.lvecs; i++) {
    sizes[i]=(algs[i]).size;
  }
  err=check_vectors(&v,sizes);
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    goto WLe_cr_subpr_alg;
  }
  if( (err = get_next_line(name, NAME_LEN_LIMIT, fp)) != NO_ERROR) {
    errf=ERROR;
    goto WLe_cr_subpr_alg;
  }
  err=ps_out(name, outf);
  if(err != NO_ERROR)
  {
    errf=ERROR;
    print_nerr("%d algebra lines and an output line needed.", v.lvecs);
    hlp_cr_subpr_alg();
    hlp_alg_file();
    goto WLe_cr_subpr_alg;
  }
  err= sub_prod_alg(algs, &v, &P);
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    goto WLe_cr_subpr_alg;
  }
  err = wr_alg(outf, &P);
  if(err!= NO_ERROR)
  {
    errf=ERROR;
    goto WLe_cr_subpr_alg;
  }
WLe_cr_subpr_alg:
  if(sizes!=NULL) free((void *)sizes);
  if(algs!=NULL) {
    for(i=0; i<v.lvecs; i++) {
      free_alg(&(algs[i]));
    }
    free((void *)algs);
  }
  free_alg(&P);
  free_vectors(&v);
  if(errf==NO_ERROR) {
    print_spclose("End of creating an algebra in a subproduct.");
  }
  return(errf);
}