/* $Id: bamread.h 178960 2015-11-16 19:52:26Z twu $ */ #ifndef BAMREAD_INCLUDED #define BAMREAD_INCLUDED /* Cannot use bool, since it appears to conflict with samtools */ #include #include "genomicpos.h" #include "intlist.h" #include "uintlist.h" #include "genome.h" #include "iit-read.h" #include "table.h" #include "uinttable.h" #include "chrom.h" #include "list.h" #define T Bamreader_T typedef struct T *T; extern void Bamread_free (T *old); extern T Bamread_new (char *filename); extern void Bamread_write_header (T this); extern Genomicpos_T Bamread_chrlength (T this, char *chr); extern bool Bamread_limit_region (T this, char *chr, Genomicpos_T chrstart, Genomicpos_T chrend); extern void Bamread_unlimit_region (T this); extern int Bamread_nreads (int *npositions, T this, char *chr, Genomicpos_T chrpos1, Genomicpos_T chrpos2); extern int Bamread_next_line (T this, char **acc, unsigned int *flag, int *mapq, char **chr, Genomicpos_T *chrpos, char **mate_chr, Genomicpos_T *mate_chrpos, Intlist_T *cigartypes, Uintlist_T *cigarlengths, int *cigarlength, int *readlength, char **read, char **quality_string, char **hardclip, char **hardclip_quality, char **read_group, bool *terminalp); typedef struct Bamline_T *Bamline_T; extern char * Bamline_acc (Bamline_T this); extern unsigned int Bamline_flag (Bamline_T this); extern int Bamline_concordantp (Bamline_T this); extern int Bamline_lowend_p (Bamline_T this); extern int Bamline_paired_read_p (Bamline_T this); extern int Bamline_firstend_p (Bamline_T this); extern int Bamline_hiti (Bamline_T this); extern int Bamline_nhits (Bamline_T this); extern bool Bamline_good_unique_p (Bamline_T this); extern bool Bamline_perfect_match_p (Bamline_T this); extern int Bamline_mapq (Bamline_T this); extern char * Bamline_chr (Bamline_T this); extern Genomicpos_T Bamline_chrpos_low (Bamline_T this); extern Genomicpos_T Bamline_chrpos_low_noclip (Bamline_T this); extern char * Bamline_mate_chr (Bamline_T this); extern Genomicpos_T Bamline_mate_chrpos_low (Bamline_T this); extern int Bamline_insert_length (Bamline_T this); extern Intlist_T Bamline_cigar_types (Bamline_T this); extern Uintlist_T Bamline_cigar_npositions (Bamline_T this); extern Intlist_T Bamline_diffcigar (int *min_overhang, Uintlist_T *npositions, Uintlist_T *chrpositions, Bamline_T this); extern int Bamline_cigar_querylength (Bamline_T this); extern void Bamread_print_cigar (FILE *fp, Bamline_T this); extern char * Bamline_cigar_string (Bamline_T this); extern int Bamline_readlength (Bamline_T this); extern char * Bamline_read (Bamline_T this); extern char * Bamline_quality_string (Bamline_T this); extern char * Bamline_hardclip (Bamline_T this); extern char * Bamline_hardclip_quality (Bamline_T this); extern bool Bamline_terminalp (Bamline_T this); extern char * Bamline_read_group (Bamline_T this); extern void Bamline_print (FILE *fp, Bamline_T this, unsigned int newflag, int quality_score_adj); extern void Bamline_print_new_cigar (FILE *fp, Bamline_T this, Genomicpos_T chrpos_low, char *new_cigar, char *new_md_string, int quality_score_adj); extern void Bamline_print_new_mate (FILE *fp, Bamline_T this, char *mate_chr, Genomicpos_T mate_chrpos_low, int insert_length); extern int Bamline_nm (Bamline_T this); extern char Bamline_splice_strand (Bamline_T this); extern char Bamline_strand (Bamline_T this, Genome_T genome, IIT_T chromosome_iit); extern Genomicpos_T Bamline_chrpos_high (Bamline_T this); extern Genomicpos_T Bamline_chrpos_high_noclip (Bamline_T this); extern Genomicpos_T Bamline_total_ins (Bamline_T this); extern int Bamline_nmismatches (Bamline_T this); extern void Bamline_free (Bamline_T *old); extern Bamline_T Bamread_next_bamline (T this, char *desired_read_group, int minimum_mapq, int good_unique_mapq, int maximum_nhits, bool need_unique_p, bool need_primary_p, bool ignore_duplicates_p, bool need_concordant_p); extern Bamline_T Bamread_next_indel_bamline (T this, char *desired_read_group, int minimum_mapq, int good_unique_mapq, int maximum_nhits, bool need_unique_p, bool need_primary_p, bool ignore_duplicates_p, bool need_concordant_p); extern Bamline_T * Bamread_next_bamline_set (int *nlines, Bamline_T *prev_bamline, T this, char *desired_read_group, int minimum_mapq, int good_unique_mapq, int maximum_nhits, bool need_unique_p, bool need_primary_p, bool ignore_duplicates_p, bool need_concordant_p); extern Bamline_T ** Bamread_block (int **nlines, Genomicpos_T chrstart, Genomicpos_T chrend, T this, char *desired_read_group, int minimum_mapq, int good_unique_mapq, int maximum_nhits, bool need_unique_p, bool need_primary_p, bool ignore_duplicates_p, bool need_concordant_p); extern Bamline_T Bamread_get_acc (T this, char *desired_chr, Genomicpos_T desired_chrpos, char *desired_acc); typedef struct Bamstore_T *Bamstore_T; extern void Bamstore_free (Bamstore_T *old); extern Bamstore_T Bamstore_new (Genomicpos_T chrpos); extern Bamline_T Bamstore_get (Table_T bamstore_chrtable, char *chr, Genomicpos_T low, char *acc, Genomicpos_T mate_low, int hiti); extern void Bamstore_add_at_low (Table_T bamstore_chrtable, char *chr, Genomicpos_T low, Bamline_T bamline); extern void Bamstore_table_free (Uinttable_T *bamstore_table); typedef struct Bampair_T *Bampair_T; extern char * Bampair_acc (Bampair_T this); extern Bamline_T Bampair_bamline_low (Bampair_T this); extern Bamline_T Bampair_bamline_high (Bampair_T this); extern Genomicpos_T Bampair_chrpos_low (Bampair_T this); extern Genomicpos_T Bampair_chrpos_high (Bampair_T this); extern Genomicpos_T Bampair_chrpos_low_noclip (Bampair_T this); extern Genomicpos_T Bampair_chrpos_high_noclip (Bampair_T this); extern int Bampair_level (Bampair_T this); extern bool Bampair_plusp (Bampair_T this); extern bool Bampair_good_unique_p (Bampair_T this); extern bool Bampair_uniquep (Bampair_T this); extern bool Bampair_primaryp (Bampair_T this); extern void Bampair_free (Bampair_T *old); extern void Bampair_print (FILE *fp, Bampair_T this, int quality_score_adj); extern void Bampair_details (Uintlist_T *chrpos_first_lows, Uintlist_T *chrpos_first_highs, Uintlist_T *chrpos_second_lows, Uintlist_T *chrpos_second_highs, Uintlist_T *chrpos_overlap_lows, Uintlist_T *chrpos_overlap_highs, Uintlist_T *splice_lows, Uintlist_T *splice_highs, Intlist_T *splice_signs, Bampair_T this); extern List_T Bamread_all_pairs (T bamreader, char *desired_read_group, int minimum_mapq, int good_unique_mapq, int maximum_nhits, bool need_unique_p, bool need_primary_p, bool ignore_duplicates_p, bool need_concordant_p); extern int Bampair_compute_levels (List_T bampairs, Genomicpos_T mincoord, Genomicpos_T maxcoord, int max_allowed_levels, double xfactor, Genomicpos_T min_pairlength, bool only_internal_p); #undef T #endif