Mercurial > repos > dawe > srf2fastq
comparison srf2fastq/io_lib-1.12.2/io_lib/sff.h @ 0:d901c9f41a6a default tip
Migrated tool version 1.0.1 from old tool shed archive to new tool shed repository
author | dawe |
---|---|
date | Tue, 07 Jun 2011 17:48:05 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:d901c9f41a6a |
---|---|
1 #ifndef _SFF_H_ | |
2 #define _SFF_H_ | |
3 | |
4 #include "io_lib/Read.h" | |
5 #include "io_lib/os.h" | |
6 #include "io_lib/mFILE.h" | |
7 | |
8 #ifdef __cplusplus | |
9 extern "C" { | |
10 #endif | |
11 | |
12 /* | |
13 * This mirrors the order that the SFF header has on disc. We have one of | |
14 * these only. | |
15 * | |
16 * The flow and key are variable length fields as defined by flow_len | |
17 * and key_len. | |
18 * The on-disc structure is then also padded out with zeros to the 8-byte | |
19 * word boundary. | |
20 */ | |
21 typedef struct { | |
22 uint32_t magic; | |
23 char version[4]; | |
24 uint64_t index_offset; | |
25 uint32_t index_len; | |
26 uint32_t nreads; | |
27 uint16_t header_len; | |
28 uint16_t key_len; | |
29 uint16_t flow_len; | |
30 uint8_t flowgram_format; | |
31 char *flow; | |
32 char *key; | |
33 } sff_common_header; | |
34 | |
35 #define SFF_MAGIC 0x2e736666 /* ".sff" */ | |
36 #define SFF_VERSION "\0\0\0\1" | |
37 | |
38 /* | |
39 * We have one read_header per "reading" in the SFF archive. | |
40 * It too is padded to an 8-byte boundary. | |
41 */ | |
42 typedef struct { | |
43 uint16_t header_len; | |
44 uint16_t name_len; | |
45 uint32_t nbases; | |
46 uint16_t clip_qual_left; | |
47 uint16_t clip_qual_right; | |
48 uint16_t clip_adapter_left; | |
49 uint16_t clip_adapter_right; | |
50 char *name; | |
51 } sff_read_header; | |
52 | |
53 /* | |
54 * We have one read_data section per reading, following the read_header. | |
55 * It is padded to an 8-byte boundary. | |
56 */ | |
57 typedef struct { | |
58 uint16_t *flowgram; /* x 100.0 */ | |
59 uint8_t *flow_index; /* relative to last */ | |
60 char *bases; | |
61 uint8_t *quality; | |
62 } sff_read_data; | |
63 | |
64 | |
65 /* | |
66 * Low level functions to decode SFF internals | |
67 */ | |
68 sff_common_header *decode_sff_common_header(unsigned char *buf); | |
69 sff_common_header *read_sff_common_header(mFILE *mf); | |
70 void free_sff_common_header(sff_common_header *h); | |
71 sff_read_header *decode_sff_read_header(unsigned char *buf); | |
72 void free_sff_read_header(sff_read_header *h); | |
73 sff_read_header *read_sff_read_header(mFILE *mf); | |
74 void free_sff_read_data(sff_read_data *d); | |
75 sff_read_data *read_sff_read_data(mFILE *mf, int nflows, int nbases); | |
76 | |
77 | |
78 /* | |
79 * Loads the first SFF sequence from an SFF container and returns as a Read. | |
80 */ | |
81 Read *mfread_sff(mFILE *mf); | |
82 | |
83 #ifdef __cplusplus | |
84 } | |
85 #endif | |
86 | |
87 #endif /* _SFF_H_ */ |