4 * Copyright (c) 2008-2012 BGI-Shenzhen <soap at genomics dot org dot cn>.
6 * This file is part of SOAPdenovo.
8 * SOAPdenovo is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
13 * SOAPdenovo is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with SOAPdenovo. If not, see <http://www.gnu.org/licenses/>.
26 extern void initAIO ( struct aiocb
* aio
, char * buf
, int fd
, int size
);
27 extern int AIORead ( struct aiocb
* mycb
, int * offset
, char * buf
, char * cach
, int * rt
, int curr_type
);
28 extern boolean
check_file ( char * name
); //add 2012.7.6
29 extern boolean
checkFiles4Scaff ( char * infile
);
31 extern boolean
openNextFile ( int * libNo
, boolean pairs
, unsigned char asm_ctg
);
32 extern int nextValidIndex ( int libNo
, boolean pair
, unsigned char asm_ctg
);
33 extern void openFileInLib ( int libNo
);
34 extern void closeFp1InLab ( int libNo
);
35 extern void closeFp2InLab ( int libNo
);
36 extern boolean
readseqInLib ( char * src_seq
, char * src_name
, int * len_seq
, char * buf
, int * start
, int offset
, int i
);
38 extern void readseq1by1 ( char * src_seq
, char * src_name
, int * len_seq
, FILE * fp
, long long num_seq
);
39 extern void readseqPbyP ( char * src_seq
, char * src_name
, int * insertS
, int * len_seq
, FILE * fp
, long long num_seq
);
40 extern long long readseqpar ( int * max_len
, int * min_leg
, int * max_name_len
, FILE * fp
);
41 extern void free_edge_list ( EDGE_PT
* el
);
42 extern void reverseComplementSeq ( char * seq
, int len
, char * bal_seq
);
43 extern void free_edge_array ( EDGE
* ed_array
, int ed_num
);
44 extern void free_lightctg_array ( LIGHTCTG
* ed_array
, int ed_num
);
45 extern char getCharInTightString ( char * tightSeq
, int pos
);
46 extern void writeChar2tightSting ( char nt
, char * tightSeq
, int pos
);
47 extern void short_reads_sum();
48 extern void read_one_sequence ( FILE * fp
, long long * T
, char ** X
);
49 extern void output_edges ( preEDGE
* ed_array
, int ed_num
, char * outfile
);
50 extern void loadVertex ( char * graphfile
);
51 extern void loadEdge ( char * graphfile
);
52 extern boolean
loadPath ( char * graphfile
);
53 extern READINTERVAL
* allocateRV ( int readid
, int edgeid
);
54 extern void createRVmemo();
55 extern void dismissRV ( READINTERVAL
* rv
);
56 extern void destroyReadIntervMem();
57 extern void destroyConnectMem();
58 extern void u2uConcatenate();
59 extern void output_contig ( EDGE
* ed_array
, unsigned int ed_num
, char * outfile
, int cut_len
);
60 extern void printTightString ( char * tightSeq
, int len
);
61 extern int roughUniqueness ( unsigned int edgeno
, char ignore_cvg
, char * ignored
);
62 extern void outputReadPos ( char * graphfile
, int min_len
);
63 extern void testSearch();
64 extern void allpathConcatenate();
65 extern void output_updated_edges ( char * outfile
);
66 extern void output_updated_vertex ( char * outfile
);
67 extern void loadUpdatedEdges ( char * graphfile
);
68 extern void loadUpdatedVertex ( char * graphfile
);
69 extern void connectByPE ( char * infile
);
70 extern void output_cntGVZ ( char * outfile
);
71 extern void output_graph ( char * outfile
);
72 extern void testLinearC2C();
73 extern void output_contig_graph ( char * outfile
);
74 extern void scaffolding ( unsigned int cut_len
, char * outfile
);
75 extern int cmp_int ( const void * a
, const void * b
);
76 extern CONNECT
* allocateCN ( unsigned int contigId
, int gap
);
77 extern int recoverRep();
78 extern void loadPEgrads ( char * infile
);
79 extern int putInsertS ( long long readid
, int size
, int * currGrads
);
80 extern int getInsertS ( long long readid
, int * readlen
);
81 extern int connectByPE_grad ( FILE * fp
, int peGrad
, char * line
);
82 extern int connectByPE_grad_gz ( gzFile
* fp
, int peGrad
, char * line
);
83 extern void PEgradsScaf ( char * infile
);
84 extern void reorderAnnotation ( char * infile
, char * outfile
);
85 extern void output_1edge ( preEDGE
* edge
, gzFile
* fp
);
86 extern void prlRead2edge ( char * libfile
, char * outfile
);
87 extern void annotFileTrans ( char * infile
, char * outfile
);
88 extern void prlLoadPath ( char * graphfile
);
89 extern void misCheck ( char * infile
, char * outfile
);
90 extern int uniqueLenSearch ( unsigned int * len_array
, unsigned int * flag_array
, int num
, unsigned int target
);
91 extern int cmp_vertex ( const void * a
, const void * b
);
92 extern void linkContig2Vts();
93 extern int connectByPE_gradPatch ( FILE * fp1
, FILE * fp2
, int peGrad
, char * line1
, char * line2
);
94 extern void scaftiging ( char * graphfile
, int len_cut
);
95 extern void gapFilling ( char * graphfile
, int cut_len
);
96 extern ARC
* getArcBetween ( unsigned int from_ed
, unsigned int to_ed
);
97 extern void bubblePinch ( double simiCutoff
, char * outfile
, int M
, boolean isIter
, boolean last
);
98 extern void linearConcatenate ( boolean isIter
, boolean last
);
99 extern unsigned char setArcMulti ( unsigned int from_ed
, unsigned int to_ed
, unsigned char value
);
100 extern ARC
* allocateArc ( unsigned int edgeid
);
101 extern void cutTipsInGraph ( int cutLen
, boolean strict
, boolean last
);
102 extern ARC
* deleteArc ( ARC
* arc_list
, ARC
* arc
);
103 extern void compactEdgeArray();
104 extern void dismissArc ( ARC
* arc
);
105 extern void createArcMemo();
106 extern ARC
* getArcBetween ( unsigned int from_ed
, unsigned int to_ed
);
107 extern ARC
* allocateArc ( unsigned int edgeid
);
108 extern void writeChar2tightString ( char nt
, char * tightSeq
, int pos
);
109 extern void output_heavyArcs ( char * outfile
);
110 extern preARC
* allocatePreArc ( unsigned int edgeid
);
111 extern void destroyPreArcMem();
112 extern void traceAlongArc ( unsigned int destE
, unsigned int currE
, int max_steps
, int min
, int max
, int index
, int len
, int * num_route
);
113 extern void freeContig_array();
114 extern void output_scafSeq ( char * graphfile
, int len_cut
);
115 extern void putArcInHash ( unsigned int from_ed
, unsigned int to_ed
);
116 extern boolean
DoesArcExist ( unsigned int from_ed
, unsigned int to_ed
);
117 extern void recordArcInHash();
118 extern void destroyArcHash();
119 extern void removeWeakEdges ( int lenCutoff
, unsigned int multiCutoff
);
120 extern void createArcLookupTable();
121 extern void deleteArcLookupTable();
122 extern void putArc2LookupTable ( unsigned int from_ed
, ARC
* arc
);
123 extern void removeArcInLookupTable ( unsigned int from_ed
, unsigned int to_ed
);
124 extern ARC
* arcCount ( unsigned int edgeid
, unsigned int * num
);
125 extern void mapFileTrans ( char * infile
);
126 extern void solveReps();
127 extern void removeDeadArcs();
128 extern void destroyArcMem();
129 extern void getCntsInFile ( char * infile
);
130 extern void scafByCntInfo ( char * infile
);
131 extern CONNECT
* add1Connect ( unsigned int e1
, unsigned int e2
, int gap
, int weight
, boolean inherit
);
132 extern void getScaff ( char * infile
);
133 extern void traceAlongMaskedCnt ( unsigned int destE
, unsigned int currE
, int max_steps
, int min
, int max
, int index
, int len
, int * num_route
);
134 extern void createPreArcMemManager();
135 extern boolean
loadPathBin ( char * graphfile
);
136 extern void recordArcsInLookupTable();
137 extern FILE * multiFileRead1seq ( char * src_seq
, char * src_name
, int * len_seq
, FILE * fp
, FILE * freads
);
138 extern void multiFileSeqpar ( FILE * fp
);
139 extern long long multiFileParse ( int * max_leg
, int * min_leg
, int * max_name_leg
, FILE * fp
);
140 extern CONNECT
* getCntBetween ( unsigned int from_ed
, unsigned int to_ed
);
141 extern void createCntMemManager();
142 extern void destroyConnectMem();
143 extern void createCntLookupTable();
144 extern void deleteCntLookupTable();
145 extern void putCnt2LookupTable ( unsigned int from_c
, CONNECT
* cnt
);
146 extern void prlRead2Ctg ( char * seqfile
, char * outfile
);
147 extern boolean
prlContig2nodes ( char * grapfile
, int len_cut
);
148 extern void scan_libInfo ( char * libfile
);
149 extern void free_libs();
151 extern boolean
read1seqInLibBam ( char * src_seq
, char * src_name
, int * len_seq
, int * libNo
, boolean pair
, unsigned char asm_ctg
, int * type
);
152 extern boolean
read1seqInLib ( char * src_seq
, char * src_name
, int * len_seq
,
153 int * libNo
, boolean pair
, unsigned char asm_ctg
, int * type
);
154 extern void save4laterSolve();
155 extern void solveRepsAfter();
156 extern void free_pe_mem();
157 extern void alloc_pe_mem ( int gradsCounter
);
158 extern void prlDestroyPreArcMem();
159 extern preARC
* prlAllocatePreArc ( unsigned int edgeid
, MEM_MANAGER
* manager
);
160 extern boolean
prlRead2HashTable ( char * libfile
, char * outfile
);
161 extern void free_allSets();
162 extern void removeSingleTips();
163 extern void removeMinorTips();
164 extern void kmer2edges ( char * outfile
);
165 extern void output_vertex ( char * outfile
);
166 extern boolean
prlRead2HashTable ( char * libfile
, char * outfile
);
167 extern void Links2Scaf ( char * infile
);
168 extern void PE2Links ( char * infile
);
169 extern unsigned int getTwinCtg ( unsigned int ctg
);
170 extern void basicContigInfo ( char * infile
);
171 extern boolean
isSmallerThanTwin ( unsigned int ctg
);
172 extern boolean
isLargerThanTwin ( unsigned int ctg
);
173 extern boolean
isSameAsTwin ( unsigned int ctg
);
174 extern boolean
loadMarkerBin ( char * graphfile
);
175 extern void readsCloseGap ( char * graphfile
);
176 extern void prlReadsCloseGap ( char * graphfile
);
177 extern void locateReadOnScaf ( char * graphfile
);
178 /*********** Kmer related *************/
179 extern Kmer
createFilter ( int overlaplen
);
180 extern void printKmerSeq ( FILE * fp
, Kmer kmer
);
181 //extern U256b Kmer2int256(Kmer seq);
182 extern boolean
KmerLarger ( Kmer kmer1
, Kmer kmer2
);
183 extern boolean
KmerSmaller ( Kmer kmer1
, Kmer kmer2
);
184 extern boolean
KmerEqual ( Kmer kmer1
, Kmer kmer2
);
185 extern Kmer
KmerAnd ( Kmer kmer1
, Kmer kmer2
);
186 extern Kmer
KmerLeftBitMoveBy2 ( Kmer word
);
187 extern Kmer
KmerRightBitMoveBy2 ( Kmer word
);
188 extern Kmer
KmerPlus ( Kmer prev
, char ch
);
189 extern Kmer
nextKmer ( Kmer prev
, char ch
);
190 extern Kmer
prevKmer ( Kmer next
, char ch
);
191 extern char firstCharInKmer ( Kmer kmer
);
192 extern Kmer
KmerRightBitMove ( Kmer word
, int dis
);
193 extern Kmer
reverseComplement ( Kmer word
, int overlap
);
194 extern ubyte8
hash_kmer ( Kmer kmer
);
195 extern int kmer2vt ( Kmer kmer
);
196 extern void print_kmer ( FILE * fp
, Kmer kmer
, char c
);
197 extern int bisearch ( VERTEX
* vts
, int num
, Kmer target
);
198 extern void printKmerSeq ( FILE * fp
, Kmer kmer
);
199 extern char lastCharInKmer ( Kmer kmer
);
200 int localGraph ( READNEARBY
* rdArray
, int num
, CTGinSCAF
* ctg1
, CTGinSCAF
* ctg2
,
201 int origOverlap
, Kmer
* kmerCtg1
, Kmer
* kmerCtg2
,
202 int overlap
, DARRAY
* gapSeqArray
, char * seqCtg1
, char * seqCtg2
, char * seqGap
);
203 extern unsigned int getTwinEdge ( unsigned int edgeno
);
204 extern boolean
EdSmallerThanTwin ( unsigned int edgeno
);
205 extern boolean
EdLargerThanTwin ( unsigned int edgeno
);
206 extern boolean
EdSameAsTwin ( unsigned int edgeno
);
207 extern void removeLowCovEdges ( int lenCutoff
, unsigned short covCutoff
, boolean last
);
208 extern int getMaxLongReadLen ( int num_libs
);
209 extern void prlLongRead2Ctg ( char * libfile
, char * outfile
);
210 extern void outputTightStr ( FILE * fp
, char * tightStr
, int start
, int length
, int outputlen
, int revS
, int * col
);
211 extern void crc32c_Init();
213 extern int validArcCount ( preARC
* arc
, int cutoff
);
214 extern unsigned int maxArcWeight ( preARC
* arc
);
215 extern __uint128_t
Kmer2int128 ( Kmer seq
);
216 extern void printSeq ( FILE * fo
, char * seq
, int len
);