-
Notifications
You must be signed in to change notification settings - Fork 8
/
interval.h
129 lines (112 loc) · 4.02 KB
/
interval.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*****************************************************************************
interval.h
(c) 2012 - Ryan M. Layer
Hall Laboratory
Quinlan Laboratory
Department of Computer Science
Department of Biochemistry and Molecular Genetics
Department of Public Health Sciences and Center for Public Health Genomics,
University of Virginia
rl6sf@virginia.edu
Licenced under the GNU General Public License 2.0 license.
******************************************************************************/
#ifndef __INTERVAL_H__
#define __INTERVAL_H__
struct interval {
// order is hack to maintin the position of the interval in the orginal
// data file
unsigned int start, end, order;
};
unsigned int per_interval_count_intersections_bsearch_seq_sorted_int(
struct interval *A,
unsigned int size_A,
unsigned int *B_start,
unsigned int *B_end,
unsigned int size_B,
unsigned int *R);
int compare_interval_by_start (const void *a, const void *b);
unsigned int per_interval_count_intersections_bsearch_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B,
unsigned int *R);
unsigned int enumerate_intersections_bsearch_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B,
unsigned int **R,
unsigned int **E);
unsigned int count_intersections_bsearch_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B);
unsigned int count_intersections_i_bsearch_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B,
unsigned int size_I);
unsigned int count_intersections_t_bsearch_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B,
unsigned int size_T);
unsigned int count_intersections_sort_bsearch_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B);
unsigned int count_intersections_brute_force_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B);
void generate_interval_sets(struct interval *A,
unsigned int size_A,
unsigned int len_A,
struct interval *B,
unsigned int size_B,
unsigned int len_B,
unsigned int P);
void generate_ind_interval_sets(struct interval *A,
unsigned int size_A,
unsigned int len_A,
struct interval *B,
unsigned int size_B,
unsigned int len_B);
unsigned int count_seq(struct interval *A,
unsigned int size_A,
unsigned int *B_starts,
unsigned int *B_ends,
unsigned int size_B);
void test_intersections_bsearch_seq(struct interval *A,
unsigned int size_A,
struct interval *B,
unsigned int size_B,
unsigned int n,
unsigned int max_offset,
unsigned int *O,
double *mean,
double *sd,
double *p);
unsigned int count_intersections_bsearch_seq_mem(struct interval *A,
unsigned int size_A,
unsigned int *B_starts,
unsigned int *B_ends,
unsigned int size_B);
void two_side_simple_permute(unsigned int mask,
unsigned int max_offset,
struct interval *A,
unsigned int *A_starts,
unsigned int size_A,
unsigned int *B_starts,
unsigned int *B_ends,
unsigned int *B_lens,
unsigned int size_B);
void one_side_simple_permute(unsigned int mask,
unsigned int max_offset,
struct interval *A,
unsigned int *A_starts,
unsigned int size_A,
unsigned int *B_starts,
unsigned int *B_ends,
unsigned int *B_lens,
unsigned int size_B);
#endif