modified: nfig1.py
[GalaxyCodeBases.git] / BGI / SOAPdenovo2 / standardPregraph / inc / extfunc.h
blobb687787526de7544970b275aa9b67fb0a545b18c
1 /*
2 * inc/extfunc.h
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/>.
23 #include "check.h"
24 #include "extfunc2.h"
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 );