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
extern crate getopts;
extern crate fasten;
use std::fs::File;
use std::io::BufReader;
use fasten::fasten_base_options;
use fasten::io::fastq;
use fasten::io::seq::Cleanable;
use fasten::logmsg;
use std::env;
#[test]
fn challenge_dataset () {
let challenge_file = File::open("testdata/four_reads.gt_16_lines.fastq").expect("Could not open testdata/four_reads.gt_16_lines.fastq");
let challenge_buffer=BufReader::new(challenge_file);
let challenge_reader=fastq::FastqReader::new_careful(challenge_buffer);
let mut challenge_string = String::new();
for seq_obj in challenge_reader {
challenge_string.push_str(&seq_obj.to_string());
}
let easy_file = File::open("testdata/four_reads.fastq").expect("Could not open testdata/four_reads.fastq");
let easy_buffer= BufReader::new(easy_file);
let easy_reader=fastq::FastqReader::new(easy_buffer);
let mut easy_string = String::new();
for seq_obj in easy_reader {
easy_string.push_str(&seq_obj.to_string());
}
assert_eq!(challenge_string,easy_string);
}
fn main(){
let args: Vec<String> = env::args().collect();
let opts = fasten_base_options();
let matches = opts.parse(&args[1..]).expect("ERROR: could not parse parameters");
if matches.opt_present("help") {
println!("Convert a fastq file to a standard 4-lines-per-entry format\n{}", opts.usage(&opts.short_usage(&args[0])));
std::process::exit(0);
}
if matches.opt_present("paired-end") {
logmsg("WARNING: --paired-end is not utilized in this script");
}
let my_file = File::open("/dev/stdin").expect("Could not open file");
let my_buffer=BufReader::new(my_file);
let fastq_reader=fastq::FastqReader::new_careful(my_buffer);
for seq in fastq_reader {
seq.print();
}
}