forked from junhong-huang/retroSeeker
-
Notifications
You must be signed in to change notification settings - Fork 0
/
retroSeeker.h
114 lines (80 loc) · 3.02 KB
/
retroSeeker.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
/******************************************************************************
* retroSeeker: A computational software for seeking *
* the Retrotransposon/Retroelements in the net File *
* Author: Jianhua Yang *
* Email: [email protected] *
* Copyright: School of Life Sciences, Sun Yat-sen University *
* Create Date: 2023/03/18 *
*****************************************************************************/
#ifndef retroSeeker_HEAD_H
#define retroSeeker_HEAD_H
#include "fasta.h"
#ifndef MIN
#define MIN(x, y) (x) < (y) ? (x) : (y)
#endif
#ifndef MAX
#define MAX(x, y) (x) > (y) ? (x) : (y)
#endif
#define GAP_CONT -3.0
#define MATCH 2.0
#define GAP_OPEN -3.0
#define MISMATCH -3.0
#define POLYA_MATCH 2.0
#define POLYA_MISMATCH -3.0
#define POLYA_BONUS 2.0
#define MIN_GENEBODY_LEN 20
#define MAX_POLYA_LEN 50
#define MIN_TSD_LEN_FOR_GREEDY_POLYA_SEARCH 7
#define TSD_EXTEND_LEN 30/* 30*2: --extend*/
struct parameterInfo {
int verbose;
int extend;
int RNA5endUp;
int RNA5endDown;
int RNA3endUp;
int RNA3endDown;
int minMatchLen;
int minLen;
int maxLen;
int minPolyaLen;
int maxPolyaLen;
int minGenebodyLen;
int netType;
int bedExist;
int netExist;
int minScore;
};
typedef struct parameterInfo parameter;
struct polyaInfo {
int polyaScore;
int polyaLen;
int start;
int end;
char *polyaSeq;
};
typedef struct polyaInfo polyaStruct;
void searchRetroGeneInNetFile(parameter *paraInfo, FILE *genomefp, FILE *faifp,
FILE *netfp, FILE *outfp, FILE *bedfp, FILE *outfp2);
void identifyRetroGenes(parameter *paraInfo, FILE *genomefp, faidxMap &faiHash,
FILE *netfp, FILE *outfp, FILE *bedfp, FILE *outfp2);
int identifyOneRetroGene(parameter *paraInfo, FILE *genomefp, faidxMap &faiHash,
CBed6 *fillBed, int chromLen, FILE *outfp);
int tsdSeeker(parameter *paraInfo, char *retroSeq, char *tsd5Seq, char *tsd3Seq,
int chromStart, int chromEnd, CBed6 *fillBed, FILE *outfp);
int get5pTrimNum(char *seq, int tsdOffset);
int getTsdStart(char *retroSeq, char *tSeq, int polyaEnd);
/*polyaStruct *findPolyA(parameter *paraInfo, char *inputSeq, int tsdLen, char strand);*/
polyaStruct *findPolyA(parameter *paraInfo, char *inputSeq, int tsd3Len, int tsd5Len, char strand);/*new*/
void freeFloatMatrix(double **matrix);
void freeIntMatrix(int **matrix);
double max(double m[], int len);
int argmax(double m[], int len);
double scorePairs(char a, char b);
double scoreTsdPairs(char *tsd1, char *tsd2);
int encodeInt(char ch);
CBed6 *parseFillLine(char *line, char *chrom);
CBed6 *parseGapLine(char *line, char *chrom);
char *parseNetLine(char *line, int *chromLen);
void printHeader(parameter *paraInfo, FILE *outfp);
void freePolyaItem(polyaStruct *polya);
#endif /* End retroSeeker_HEAD_H */