-
Notifications
You must be signed in to change notification settings - Fork 0
/
fastq.cpp
114 lines (93 loc) · 2.49 KB
/
fastq.cpp
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
/*
* fastq.cpp
* glia
*
* Created by Deniz Kural on 12/26/11.
* Copyright 2010-2012 Deniz Kural. All rights reserved.
*
*/
#include "fastq.h"
using namespace std;
/* File writer prototype
Haven't checked in a while */
int write_bam_file ()
{
ofstream outfile;
outfile.open("test.out");
outfile << "Writing to the file.\n";
outfile.close();
return 0;
}
// Return a Read Quad from a fastq file
fastq_entry getNextRead(ifstream& filehandle)
{
fastq_entry readquad;
getline (filehandle,readquad.readname);
// cout << readquad.readname << endl;
getline (filehandle,readquad.sequence);
getline (filehandle,readquad.description);
getline (filehandle,readquad.quality);
return readquad;
}
/* Function to Load a FASTQ File
See prototype loader on dump.cpp */
int load_fastq_file () {
// Declare Variables
fastq_entry readquad; // declare fastq read
ifstream filehandle ("test.fastq"); // open fastq file
// Main input file loop
if (filehandle.is_open())
{
while (filehandle.good())
{
readquad = getNextRead(filehandle);
cout << readquad.readname << endl;
}
filehandle.close();
}
else cout << "Unable to open read file.\n";
return 0;
}
/* Desc: Load a Fasta File to memory
* Inputs: FASTA file name, Vector of fasta entries
* Output: Fill the vector with entries contig name, sequence
*/
int load_fasta_file (string fasta_file_name, vector<fasta_entry> &refs) {
ifstream filehandle (fasta_file_name.c_str()); // open fasta file
// ifstream filehandle ("/Users/kural/Documents/short1.fasta"); // test
// vector<fasta_entry> refs;
fasta_entry fastarecord;
string readline;
// Main input file loop
if (filehandle.is_open()) {
while (filehandle.good()) {
getline(filehandle, readline);
/* finish current fastarecord, start new one & give name
* build exception for beginning
*/
if (readline[0] == '>') { // if beginning of new entry
if (fastarecord.name.empty()) {
fastarecord.name = readline;
fastarecord.kmer_hash.set_deleted_key("");
} else {
refs.push_back(fastarecord);
fastarecord.name = readline;
fastarecord.sequence = "";
}
} else {
fastarecord.sequence.append(readline);
}
}
refs.push_back(fastarecord);
filehandle.close();
/*
vector<fasta_entry>::iterator t;
for (t = refs.begin(); t != refs.end(); ++t) {
cout << t->name << endl;
cout << t->sequence << endl;
}
*/
}
else cout << "Unable to open read file.\n";
return 0;
}