Mercurial > repos > lsong10 > psiclass
comparison PsiCLASS-1.0.2/samtools-0.1.19/sam.h @ 0:903fc43d6227 draft default tip
Uploaded
| author | lsong10 |
|---|---|
| date | Fri, 26 Mar 2021 16:52:45 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:903fc43d6227 |
|---|---|
| 1 #ifndef BAM_SAM_H | |
| 2 #define BAM_SAM_H | |
| 3 | |
| 4 #include "bam.h" | |
| 5 | |
| 6 /*! | |
| 7 @header | |
| 8 | |
| 9 This file provides higher level of I/O routines and unifies the APIs | |
| 10 for SAM and BAM formats. These APIs are more convenient and | |
| 11 recommended. | |
| 12 | |
| 13 @copyright Genome Research Ltd. | |
| 14 */ | |
| 15 | |
| 16 /*! @typedef | |
| 17 @abstract SAM/BAM file handler | |
| 18 @field type type of the handler; bit 1 for BAM, 2 for reading and bit 3-4 for flag format | |
| 19 @field bam BAM file handler; valid if (type&1) == 1 | |
| 20 @field tamr SAM file handler for reading; valid if type == 2 | |
| 21 @field tamw SAM file handler for writing; valid if type == 0 | |
| 22 @field header header struct | |
| 23 */ | |
| 24 typedef struct { | |
| 25 int type; | |
| 26 union { | |
| 27 tamFile tamr; | |
| 28 bamFile bam; | |
| 29 FILE *tamw; | |
| 30 } x; | |
| 31 bam_header_t *header; | |
| 32 } samfile_t; | |
| 33 | |
| 34 #ifdef __cplusplus | |
| 35 extern "C" { | |
| 36 #endif | |
| 37 | |
| 38 /*! | |
| 39 @abstract Open a SAM/BAM file | |
| 40 | |
| 41 @param fn SAM/BAM file name; "-" is recognized as stdin (for | |
| 42 reading) or stdout (for writing). | |
| 43 | |
| 44 @param mode open mode /[rw](b?)(u?)(h?)([xX]?)/: 'r' for reading, | |
| 45 'w' for writing, 'b' for BAM I/O, 'u' for uncompressed BAM output, | |
| 46 'h' for outputing header in SAM, 'x' for HEX flag and 'X' for | |
| 47 string flag. If 'b' present, it must immediately follow 'r' or | |
| 48 'w'. Valid modes are "r", "w", "wh", "wx", "whx", "wX", "whX", | |
| 49 "rb", "wb" and "wbu" exclusively. | |
| 50 | |
| 51 @param aux auxiliary data; if mode[0]=='w', aux points to | |
| 52 bam_header_t; if strcmp(mode, "rb")!=0 and @SQ header lines in SAM | |
| 53 are absent, aux points the file name of the list of the reference; | |
| 54 aux is not used otherwise. If @SQ header lines are present in SAM, | |
| 55 aux is not used, either. | |
| 56 | |
| 57 @return SAM/BAM file handler | |
| 58 */ | |
| 59 samfile_t *samopen(const char *fn, const char *mode, const void *aux); | |
| 60 | |
| 61 /*! | |
| 62 @abstract Close a SAM/BAM handler | |
| 63 @param fp file handler to be closed | |
| 64 */ | |
| 65 void samclose(samfile_t *fp); | |
| 66 | |
| 67 /*! | |
| 68 @abstract Read one alignment | |
| 69 @param fp file handler | |
| 70 @param b alignment | |
| 71 @return bytes read | |
| 72 */ | |
| 73 int samread(samfile_t *fp, bam1_t *b); | |
| 74 | |
| 75 /*! | |
| 76 @abstract Write one alignment | |
| 77 @param fp file handler | |
| 78 @param b alignment | |
| 79 @return bytes written | |
| 80 */ | |
| 81 int samwrite(samfile_t *fp, const bam1_t *b); | |
| 82 | |
| 83 /*! | |
| 84 @abstract Get the pileup for a whole alignment file | |
| 85 @param fp file handler | |
| 86 @param mask mask transferred to bam_plbuf_set_mask() | |
| 87 @param func user defined function called in the pileup process | |
| 88 #param data user provided data for func() | |
| 89 */ | |
| 90 int sampileup(samfile_t *fp, int mask, bam_pileup_f func, void *data); | |
| 91 | |
| 92 char *samfaipath(const char *fn_ref); | |
| 93 int samthreads(samfile_t *fp, int n_threads, int n_sub_blks); | |
| 94 | |
| 95 #ifdef __cplusplus | |
| 96 } | |
| 97 #endif | |
| 98 | |
| 99 #endif |
