forked from bmvdgeijn/WASP
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sampletab.h
59 lines (40 loc) · 1.23 KB
/
sampletab.h
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef __SAMPLETAB_H__
#define __SAMPLETAB_H__
#include <hdf5.h>
#include "sample.h"
#define SAMPLETAB_N_FIELDS 1
/* chunk size affects performance a lot
* small chunks = much faster writing of tables, but
* worse compression
*/
#define SAMPLETAB_CHUNK_SIZE 100
/* SampleTab holds information about Samples
* and datatypes of each field. Currently
* there is only a single field which is the
* name of the sample, however you could imagine
* adding other information such as sex,
* age, population, etc.
*/
typedef struct {
hid_t h5file;
size_t record_size;
char *name;
char *title;
hid_t field_type[SAMPLETAB_N_FIELDS];
size_t field_size[SAMPLETAB_N_FIELDS];
size_t field_offset[SAMPLETAB_N_FIELDS];
hid_t name_type;
int compress;
size_t chunk_size;
size_t n_record;
} SampleTab;
SampleTab *sample_tab_new(hid_t h5file, const char *chrom_name,
size_t n_record);
SampleTab *sample_tab_create(hid_t h5file, const char *chrom_name,
Sample *samples, size_t n_sample);
SampleTab *sample_tab_from_names(hid_t h5file, const char *chrom_name,
char **sample_names,
size_t n_sample);
void sample_tab_free(SampleTab *tab);
void sample_tab_append_row(SampleTab *tab, Sample *data);
#endif