コード例 #1
0
ファイル: abcGL.cpp プロジェクト: Arhodes-CGRB-OSU/angsd
abcGL::~abcGL(){

  free(angsd_tmpdir);
  
  if(GL==0&&doGlf==0)
    return;
  else if(GL==1)
    bam_likes_destroy();
  else if(GL==2)
    gatk_destroy();
  else if(GL==4)
    abcError::killGlobalErrorProbs(errorProbs);
  else if(GL==5)
    phys_destroy();
  if(doGlf)    bgzf_close(gzoutfile);
    
  if(gzoutfile!=NULL)
    bgzf_close(gzoutfile2);

  if(bufstr.s!=NULL)
    free(bufstr.s);

  if(errors){
    for(int i=0;i<4;i++)
      delete [] errors[i];
    delete [] errors;
  }
  delete [] logfactorial;
}
コード例 #2
0
ファイル: analysisEstLikes.cpp プロジェクト: mfumagalli/angsd
likeClass::~likeClass(){
  fflush(stderr);
  free(angsd_tmpdir);
  
  if(GL==0&&doGlf==0)
    return;
  else if(GL==1)
    bam_likes_destroy();
  else if(GL==2)
    gatk_destroy();
  else if(GL==4)
    error::killGlobalErrorProbs(errorProbs);
  if(doGlf)    gzclose(gzoutfile);
    
  
  if(bufstr.s!=NULL)
    free(bufstr.s);
  
}
コード例 #3
0
ファイル: bam_likes.cpp プロジェクト: SamueleSoraggi/angsd
void call_bam(chunkyT *chk,double **lk,int trim){
  //  fprintf(stderr,"trim=%d\n",trim);
  if(chk==NULL){
    if(mod!=NULL)
      bam_likes_destroy();
    return;
  }
  assert(mod!=NULL);
  for(int s=0;s<chk->nSites;s++){
    //fprintf(stderr,"posi=%d\n",chk->nd[s][0].refPos);
    lk[s] = new double[10*chk->nSamples];
    for(int ii=0;ii<10*chk->nSamples;ii++)
      lk[s][ii] = -0.0;
    //fprintf(stderr,"chr=%s minbaseq=%d\n",chk->refName,minQ);
    for(int i=0;i<chk->nSamples;i++){

      tNode *nd = chk->nd[s][i];
      if(nd==NULL)
	continue;
      uint16_t bases[nd->l];
      int numItems =0;
      for(int j=0;j<nd->l;j++) {
	//	fprintf(stderr,"posi=%d isop=%d +=%d\n",nd.posi[j],nd.isop[j],nd.posi[j]+nd.isop[j]);
	int q=nd->qs[j];
	//	fprintf(stderr,"q=%c\n",q+33);
	//fprintf(stderr,"skipping q=%d mapQ=%d posi=%d isop=%d\n",q,nd.mapQ[j],nd.posi[j],nd.isop[j]);


	extern int minQ;
	if(q<minQ || nd->posi[j]<trim||nd->isop[j]<trim){
	  // fprintf(stderr,"skipping q=%d mapQ=%d posi=%d isop=%d ind=%d\n",q,nd.mapQ[j],nd.posi[j],nd.isop[j],i);
	continue;
	}


	/*
	  extern int minQ;
	  if(q<minQ || nd.posi[j]<trim||nd.isop[j]<trim){
	  // fprintf(stderr,"skipping q=%d mapQ=%d posi=%d isop=%d ind=%d\n",q,nd.mapQ[j],nd.posi[j],nd.isop[j],i);
	  continue;
	  }
	 */
	if (q>nd->mapQ[j])//dont allow qscores in read to exceed mapping quality
	  q=nd->mapQ[j];
	if (q > 63) q = 63;
	if (q < 4) q = 4;
	//	fprintf(stderr,"q=%d qshift=%d\n",q,q<<5);
	//plug in values
	//	bca->bases[n++] = q<<5 | (int)bam1_strand(p->b)<<4 | b;
	int isLower = islower(nd->seq[j])>0;
	//fprintf(stderr,"strandstuff=%d\tshiftstrandstuff=%d\n",isLower, isLower<<4 );
	bases[numItems++] = q<<5 | isLower<<4 | refToInt[nd->seq[j]];
	//	fprintf(stderr,"bases[%d]=%d\n",j,bases[numItems-1]);
      }
      float likes[25];
      for(int j=0;0&&j<25;j++) 
	likes[j]=0;
      if(numItems!=0) {
	errmod_cal(mod,numItems,5,bases,likes);
	int ord[] = {0,1,2,3,6,7,8,12,13,18};
	for(int gg=0;gg<10;gg++){
	  //fprintf(stderr,"%f\n",likes[ord[gg]]);
	  lk[s][i*10+gg] = -log(10.0) *likes[ord[gg]]/10.0;
	}

      }
    }
    //    break;
  }
}