File: check_quality_trim.cpp

package info (click to toggle)
ivar 1.3%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 3,924 kB
  • sloc: cpp: 4,907; javascript: 866; sh: 120; makefile: 37
file content (40 lines) | stat: -rwxr-xr-x 1,190 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
#include "../src/trim_primer_quality.h"
#include "htslib/sam.h"

int main(){
  int success = 0;
  std::string bam = "../data/test.sorted.bam";
  std::string region_;
  samFile *in = hts_open(bam.c_str(), "r");
  hts_idx_t *idx = sam_index_load(in, bam.c_str());
  bam_hdr_t *header = sam_hdr_read(in);
  region_.assign(header->target_name[0]);
  std::string temp(header->text);
  hts_itr_t *iter = NULL;
  iter  = sam_itr_querys(idx, header, region_.c_str());
  bam1_t *aln = bam_init1();
  cigar_ t;
  int lengths[6] = {150,99,99, 24,146,144}, ctr = 0;
  int start_pos_rev[6] = {19, 114, 209, 325, 199, 231};
  while(sam_itr_next(in, iter, aln) >= 0) {
    t = quality_trim(aln, 20, 4);
    std::cout << bam_get_qname(aln) << std::endl;
    std::cout << "POS: " << t.start_pos << " Length: " << bam_cigar2rlen(t.nlength, t.cigar) << std::endl;
    if(t.start_pos != start_pos_rev[ctr]){
      success = -1;
    }
    if(bam_cigar2rlen(t.nlength, t.cigar) != lengths[ctr]){
      success = -1;
    }
    free_cigar(t);
    ctr++;
  }
  
  bam_destroy1(aln);
  bam_itr_destroy(iter);
  sam_hdr_destroy(header);
  hts_idx_destroy(idx);
  hts_close(in);
  return success;
}