Imported Upstream version 0.3
[pysam.git] / pysam / csamtools.pxd
1
2 cdef extern from "string.h":
3   ctypedef int size_t
4   void *memcpy(void *dst,void *src,size_t len)
5   void *memmove(void *dst,void *src,size_t len)
6   void *memset(void *b,int c,size_t len)
7
8 cdef extern from "stdlib.h":
9   void free(void *)
10   void *malloc(size_t)
11   void *calloc(size_t,size_t)
12   void *realloc(void *,size_t)
13   int c_abs "abs" (int)
14   void qsort(void *base, size_t nmemb, size_t size,
15              int (*compar)(void *,void *))
16
17 cdef extern from "stdio.h":
18   ctypedef struct FILE:
19     pass
20   FILE *fopen(char *,char *)
21   FILE *freopen(char *path, char *mode, FILE *stream)
22   int fileno(FILE *stream)
23   int dup2(int oldfd, int newfd)
24   int fflush(FILE *stream)
25
26   FILE * stderr
27   FILE * stdout
28   int fclose(FILE *)
29   int sscanf(char *str,char *fmt,...)
30   int printf(char *fmt,...)
31   int sprintf(char *str,char *fmt,...)
32   int fprintf(FILE *ifile,char *fmt,...)
33   char *fgets(char *str,int size,FILE *ifile)
34
35 cdef extern from "ctype.h":
36   int toupper(int c)
37   int tolower(int c)
38   
39 cdef extern from "unistd.h":
40   char *ttyname(int fd)
41   int isatty(int fd)  
42
43 cdef extern from "string.h":
44   int strcmp(char *s1, char *s2)
45   int strncmp(char *s1,char *s2,size_t len)
46   char *strcpy(char *dest,char *src)
47   char *strncpy(char *dest,char *src, size_t len)
48   char *strdup(char *)
49   char *strcat(char *,char *)
50   size_t strlen(char *s)
51   int memcmp( void * s1, void *s2, size_t len )
52
53 cdef extern from "Python.h":
54    long _Py_HashPointer(void*)
55
56 cdef extern from "razf.h":
57   pass
58
59 cdef extern from "stdint.h":
60   ctypedef int int64_t
61   ctypedef int int32_t
62   ctypedef int uint32_t
63   ctypedef int uint8_t
64   ctypedef int uint64_t
65
66
67 cdef extern from "bam.h":
68
69   # IF _IOLIB=2, bamFile = BGZF, see bgzf.h
70   # samtools uses KNETFILE, check how this works
71
72   ctypedef struct tamFile:
73       pass
74
75   ctypedef struct bamFile:
76       pass
77
78   ctypedef struct bam1_core_t:
79       int32_t tid 
80       int32_t pos
81       uint32_t bin
82       uint32_t qual
83       uint32_t l_qname
84       uint32_t flag
85       uint32_t n_cigar
86       int32_t l_qseq
87       int32_t mtid 
88       int32_t mpos 
89       int32_t isize
90
91   ctypedef struct bam1_t:
92     bam1_core_t core
93     int l_aux
94     int data_len
95     int m_data
96     uint8_t *data
97
98   ctypedef struct bam_pileup1_t:
99       bam1_t *b 
100       int32_t qpos 
101       int indel
102       int level
103       uint32_t is_del
104       uint32_t is_head
105       uint32_t is_tail
106
107   ctypedef int (*bam_pileup_f)(uint32_t tid, uint32_t pos, int n, bam_pileup1_t *pl, void *data)
108
109   ctypedef int (*bam_fetch_f)(bam1_t *b, void *data)
110
111   ctypedef struct bam_header_t:
112      int32_t n_targets
113      char **target_name
114      uint32_t *target_len
115      void *hash
116      void *rg2lib
117      int l_text
118      char *text
119
120   ctypedef struct bam_index_t:
121       pass
122
123   ctypedef struct bam_plbuf_t:
124       pass
125
126   ctypedef struct bam_iter_t:
127       pass
128
129   bam1_t * bam_init1()
130   void bam_destroy1(bam1_t *)
131
132   bamFile razf_dopen(int data_fd, char *mode)
133
134   int64_t bam_seek( bamFile fp, uint64_t voffset, int where)
135   int64_t bam_tell( bamFile fp )
136
137   # void bam_init_header_hash(bam_header_t *header)
138
139   ###############################################
140   # stand-ins for samtools macros
141   uint32_t * bam1_cigar( bam1_t * b)
142   char * bam1_qname( bam1_t * b)
143   uint8_t * bam1_seq( bam1_t * b)
144   uint8_t * bam1_qual( bam1_t * b)
145   uint8_t * bam1_aux( bam1_t * b)
146
147   ###############################################
148   # bam iterator interface
149   bam_iter_t bam_iter_query( bam_index_t *idx, int tid, int beg, int end)
150
151   int bam_iter_read(bamFile fp, bam_iter_t iter, bam1_t *b)
152
153   void bam_iter_destroy(bam_iter_t iter)
154
155   ###############################################
156
157   bam1_t * bam_dup1( bam1_t *src ) 
158   
159   bam1_t * bam_copy1(bam1_t *bdst, bam1_t *bsrc)
160   bam_index_t *bam_index_load(char *f )
161
162   void bam_index_destroy(bam_index_t *idx)
163
164   int bam_parse_region(bam_header_t *header, char *str, int *ref_id, int *begin, int *end)
165
166   ###############################################
167   bam_plbuf_t *bam_plbuf_init(bam_pileup_f func, void *data)
168
169   int bam_fetch(bamFile fp, bam_index_t *idx, int tid, int beg, int end, void *data, bam_fetch_f func)
170
171   int bam_plbuf_push(bam1_t *b, bam_plbuf_t *buf)
172
173   void bam_plbuf_destroy(bam_plbuf_t *buf)
174   ########################################
175   # pileup iterator interface
176   ctypedef struct bam_plp_t:
177       pass
178
179   ctypedef int (*bam_plp_auto_f)(void *data, bam1_t *b)
180
181   bam_plp_t bam_plp_init( bam_plp_auto_f func, void *data)
182   int bam_plp_push( bam_plp_t iter,  bam1_t *b)
183   bam_pileup1_t *bam_plp_next( bam_plp_t iter, int *_tid, int *_pos, int *_n_plp)
184   bam_pileup1_t *bam_plp_auto( bam_plp_t iter, int *_tid, int *_pos, int *_n_plp)
185   void bam_plp_set_mask(bam_plp_t iter, int mask)
186   void bam_plp_reset(bam_plp_t iter)
187   void bam_plp_destroy(bam_plp_t iter)
188
189   ##################################################
190
191   int bam_read1(bamFile fp, bam1_t *b)
192
193   int bam_write1( bamFile fp, bam1_t *b)
194
195   bam_header_t *bam_header_init()
196
197   int bam_header_write( bamFile fp, bam_header_t *header)
198
199   bam_header_t *bam_header_read( bamFile fp )
200
201   void bam_header_destroy(bam_header_t *header)
202
203   bam1_t * bam_dup1( bam1_t *src ) 
204   
205   bam1_t * bam_copy1(bam1_t *bdst, bam1_t *bsrc)
206
207   uint8_t *bam_aux_get(bam1_t *b,  char tag[2])
208
209   int bam_aux2i(uint8_t *s)
210   float bam_aux2f(uint8_t *s)
211   double bam_aux2d(uint8_t *s)
212   char bam_aux2A( uint8_t *s)
213   char *bam_aux2Z( uint8_t *s)
214   
215   int bam_reg2bin(uint32_t beg, uint32_t end)
216
217   uint32_t bam_calend(bam1_core_t *c, uint32_t *cigar)
218
219 cdef extern from "sam.h":
220
221   ctypedef struct samfile_t_un:
222     tamFile tamr
223     bamFile bam
224     FILE *tamw
225     
226   ctypedef struct samfile_t:
227      int type
228      samfile_t_un x
229      bam_header_t *header
230
231   samfile_t *samopen( char *fn, char * mode, void *aux)
232
233   int sampileup( samfile_t *fp, int mask, bam_pileup_f func, void *data)
234
235   void samclose(samfile_t *fp)
236
237   int samread(samfile_t *fp, bam1_t *b)
238
239   int samwrite(samfile_t *fp, bam1_t *b)
240
241 cdef extern from "faidx.h":
242
243    ctypedef struct faidx_t:
244       pass
245
246    int fai_build(char *fn)
247
248    void fai_destroy(faidx_t *fai)
249
250    faidx_t *fai_load(char *fn)
251
252    char *fai_fetch(faidx_t *fai, char *reg, int *len)
253
254    int faidx_fetch_nseq(faidx_t *fai)
255
256    char *faidx_fetch_seq(faidx_t *fai, char *c_name, 
257                          int p_beg_i, int p_end_i, int *len)
258
259 cdef extern from "pysam_util.h":
260
261     int pysam_pileup_next(bam1_t *b, 
262                           bam_plbuf_t *buf, 
263                           bam_pileup1_t ** plp,
264                           int * tid,
265                           int * pos,
266                           int * n_plp )
267
268
269     int pysam_dispatch(int argc, char *argv[] )
270
271     # stand-in functions for samtools macros
272     void pysam_bam_destroy1( bam1_t * b) 
273
274     # add *nbytes* into the variable length data of *src* at *pos*
275     bam1_t * pysam_bam_update( bam1_t * b, 
276                                size_t nbytes_old,
277                                size_t nbytes_new,
278                                uint8_t * pos )
279
280     # translate char to unsigned char
281     unsigned char pysam_translate_sequence( char s )
282
283