-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFASTAReader.hpp
78 lines (56 loc) · 1.72 KB
/
FASTAReader.hpp
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
#ifndef _BLASR_FASTA_READER_HPP_
#define _BLASR_FASTA_READER_HPP_
#include <stdint.h>
#include <string>
#include "FASTASequence.hpp"
#include "datastructures/metagenome/SequenceIndexDatabase.h"
class FASTAReader {
protected:
long fileSize;
int fileDes;
char* filePtr;
long curPos;
int padding;
char endOfReadDelim;
char readStartDelim;
bool doToUpper;
unsigned char *convMat;
//
// Quick check to see how much to read.
//
void SetFileSize();
public:
bool computeMD5;
std::string curReadMD5;
void Init();
FASTAReader();
FASTAReader(std::string &fileName);
void SetSpacePadding(int _padding);
void SetToUpper();
//
// Synonym for Init() for consistency.
//
int Initialize(std::string &seqInName);
int Init(std::string &seqInName, int passive=0);
void AdvanceToTitleStart(long &p, char delim='>');
void CheckValidTitleStart(long &p, char delim='>');
long ReadAllSequencesIntoOne(FASTASequence &seq, SequenceIndexDatabase<FASTASequence> *seqDBPtr=NULL);
void ReadTitle(long &p, char *&title, int &titleLength);
int GetNext(FASTASequence &seq);
/*
Advance to the read nSeq forward.
input: nSeq, the number of sequences to skip.
output:
returns 1 if after advancing nSeq sequences, the file pointer is pointing to
a new sequence.
0 otherwise.
A return value of 0 will signal that the file is done being processed if it is
iterting over reads.
*/
int Advance(int nSeq);
int CriticalGetNext(FASTASequence &seq);
int ConcatenateNext(FASTASequence &cur);
void Close();
void ReadAllSequences(vector<FASTASequence> &sequences);
};
#endif // _BLASR_FASTA_READER_HPP_