-
Notifications
You must be signed in to change notification settings - Fork 20
/
break.h
76 lines (65 loc) · 3.7 KB
/
break.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
/*********************************************************************************
* MIT License *
* *
* Copyright (c) 2021 Chenxi Zhou <chnx.zhou@gmail.com> *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy *
* of this software and associated documentation files (the "Software"), to deal *
* in the Software without restriction, including without limitation the rights *
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell *
* copies of the Software, and to permit persons to whom the Software is *
* furnished to do so, subject to the following conditions: *
* *
* The above copyright notice and this permission notice shall be included in *
* all copies or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR *
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, *
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, *
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE *
* SOFTWARE. *
*********************************************************************************/
/********************************** Revision History *****************************
* *
* 02/09/21 - Chenxi Zhou: Created *
* *
*********************************************************************************/
#ifndef BREAK_H_
#define BREAK_H_
#include <stdlib.h>
#include <stdint.h>
#include "sdict.h"
#define SQRT2 1.41421356237
#define SQRT2_2 .70710678118
typedef struct {
uint32_t s; // seq id
uint32_t n; // link bin number
int64_t *link; // bin pos << 32 | link count
} link_t;
typedef struct {
uint32_t b; // bin size
uint32_t n; // number seqs
link_t *link;
} link_mat_t;
typedef struct {
uint32_t n, m, s; //s: seq id
uint64_t *p;
} bp_t;
#ifdef __cplusplus
extern "C" {
#endif
link_mat_t *link_mat_init(asm_dict_t *dict, uint32_t b);
link_mat_t *link_mat_from_file(const char *f, asm_dict_t *dict, uint32_t dist_thres, uint32_t resolution, double noise, uint32_t move_avg, uint8_t mq);
uint32_t estimate_dist_thres_from_file(const char *f, asm_dict_t *dict, double min_frac, uint32_t resolution, uint8_t mq);
void link_mat_destroy(link_mat_t *link_mat);
void print_link_mat(link_mat_t *link_mat, asm_dict_t *dict, FILE *fp);
bp_t *detect_break_points(link_mat_t *link_mat, uint32_t bin_size, uint32_t merge_size, double fold_thres, uint32_t dual_break_thres, uint32_t *bp_n);
void print_break_point(bp_t *bp, asm_dict_t *dict, FILE *fp);
bp_t *detect_break_points_local_joint(link_mat_t *link_mat, uint32_t bin_size, double fold_thres, uint32_t flank_size, asm_dict_t *dict, uint32_t *bp_n);
void write_break_agp(asm_dict_t *d, bp_t *breaks, uint32_t b_n, FILE *fp);
#ifdef __cplusplus
}
#endif
#endif /* BREAK_H_ */