Skip to content

Commit 0b03685

Browse files
committed
add output type for stdout
1 parent 6ffe73f commit 0b03685

35 files changed

+214
-51
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ Commands:
9898

9999
Global Arguments:
100100
--compress-level <INT> set gzip/bzip2/xz compression level 1 (compress faster) - 9 (compress better) for gzip/bzip2/xz output file, just work with option -o/--out [default: 6]
101+
--output-type <u|g|b|x> output type for stdout: 'g' gzip; 'b' bzip2; 'x' xz; 'u' uncompressed txt format [default: u
101102
--log <FILE> if file name specified, write log message to this file, or write to stderr
102103
-v, --verbosity... control verbosity of logging, [-v: Error, -vv: Warn, -vvv: Info, -vvvv: Debug, -vvvvv: Trace, defalut: Debug]
103104

src/cli/check.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ pub fn check_fastq(
99
save: bool,
1010
out: Option<&String>,
1111
compression_level: u32,
12+
stdout_type: char,
1213
) -> Result<()> {
1314
let start = Instant::now();
1415

@@ -21,7 +22,8 @@ pub fn check_fastq(
2122
}
2223

2324
if save {
24-
let mut out_writer = file_writer(out, compression_level).map(fastq::Writer::new)?;
25+
let mut out_writer =
26+
file_writer(out, compression_level, stdout_type).map(fastq::Writer::new)?;
2527
for rec in fp_reader.records().map_while(Result::ok) {
2628
total += 1;
2729
match rec.check() {

src/cli/concat.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pub fn concat_fqstq_lane(
1010
out_r1: &String,
1111
out_r2: &String,
1212
compression_level: u32,
13+
stdout_type: char,
1314
) -> Result<(), Error> {
1415
let start = Instant::now();
1516

@@ -37,8 +38,10 @@ pub fn concat_fqstq_lane(
3738
info!("outout read1 in file: {}", out_r1);
3839
info!("outout read1 in file: {}", out_r2);
3940

40-
let mut out_writer1 = file_writer(Some(out_r1), compression_level).map(fastq::Writer::new)?;
41-
let mut out_writer2 = file_writer(Some(out_r2), compression_level).map(fastq::Writer::new)?;
41+
let mut out_writer1 =
42+
file_writer(Some(out_r1), compression_level, stdout_type).map(fastq::Writer::new)?;
43+
let mut out_writer2 =
44+
file_writer(Some(out_r2), compression_level, stdout_type).map(fastq::Writer::new)?;
4245
let mut pe_read = 0;
4346
for pe in vec1.iter().zip(vec2.iter()) {
4447
info!("concat pe reads from file {} and {}", pe.0, pe.1);

src/cli/cutadapter.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ pub fn cut_adapter(
1313
miss: usize,
1414
out: Option<&String>,
1515
compression_level: u32,
16+
stdout_type: char,
1617
) -> Result<(), Error> {
1718
let start = Instant::now();
1819

@@ -43,7 +44,7 @@ pub fn cut_adapter(
4344
}
4445

4546
let fq_reader = file_reader(input).map(fastq::Reader::new)?;
46-
let mut fq_writer = file_writer(out, compression_level).map(fastq::Writer::new)?;
47+
let mut fq_writer = file_writer(out, compression_level, stdout_type).map(fastq::Writer::new)?;
4748
let mut flag = false;
4849
for rec in fq_reader.records().map_while(Result::ok) {
4950
let read_len = rec.seq().len();

src/cli/filter.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ pub fn filter_fastq(
2020
out1: &String,
2121
out2: &String,
2222
compression_level: u32,
23+
stdout_type: char,
2324
) -> Result<()> {
2425
let start = Instant::now();
2526
info!("read forward reads from file: {}", read1);
@@ -38,9 +39,12 @@ pub fn filter_fastq(
3839

3940
let fq_reader1 = file_reader(Some(read1)).map(fastq::Reader::new)?;
4041
let fq_reader2 = file_reader(Some(read2)).map(fastq::Reader::new)?;
41-
let mut out_writer1 = file_writer(Some(out1), compression_level).map(fastq::Writer::new)?;
42-
let mut out_writer2 = file_writer(Some(out2), compression_level).map(fastq::Writer::new)?;
43-
let mut failed_writer = file_writer(Some(failed), compression_level).map(fastq::Writer::new)?;
42+
let mut out_writer1 =
43+
file_writer(Some(out1), compression_level, stdout_type).map(fastq::Writer::new)?;
44+
let mut out_writer2 =
45+
file_writer(Some(out2), compression_level, stdout_type).map(fastq::Writer::new)?;
46+
let mut failed_writer =
47+
file_writer(Some(failed), compression_level, stdout_type).map(fastq::Writer::new)?;
4448
let complex = complexity as usize;
4549
let (mut pe_ok, mut pe_fail) = (0usize, 0usize);
4650

src/cli/flatten.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ pub fn flatten_fq(
1414
len: bool,
1515
gc: bool,
1616
compression_level: u32,
17+
stdout_type: char,
1718
) -> Result<(), Error> {
1819
let start = Instant::now();
1920

@@ -31,7 +32,7 @@ pub fn flatten_fq(
3132
}
3233

3334
let fields = get_flag(flag);
34-
let mut out_writer = file_writer(out, compression_level)?;
35+
let mut out_writer = file_writer(out, compression_level, stdout_type)?;
3536

3637
for rec in fq_reader.records().map_while(Result::ok) {
3738
let read = [rec.id().as_bytes(), rec.seq(), "+".as_bytes(), rec.qual()];

src/cli/fq2fa.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pub fn fq2fa(
1010
remove: bool,
1111
out: Option<&String>,
1212
compression_level: u32,
13+
stdout_type: char,
1314
) -> Result<(), Error> {
1415
let start = Instant::now();
1516

@@ -21,7 +22,7 @@ pub fn fq2fa(
2122
info!("reading from stdin");
2223
}
2324

24-
let mut fo = fasta::Writer::new(file_writer(out, compression_level)?);
25+
let mut fo = fasta::Writer::new(file_writer(out, compression_level, stdout_type)?);
2526
if remove {
2627
for rec in fq_reader.records().map_while(Result::ok) {
2728
num += 1;

src/cli/fq2sam.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ pub fn fastq2sam(
1414
pl: Option<String>,
1515
out: Option<&String>,
1616
compression_level: u32,
17+
stdout_type: char,
1718
) -> Result<(), Error> {
1819
let start = Instant::now();
1920
if let Some(r2) = r2 {
@@ -24,7 +25,7 @@ pub fn fastq2sam(
2425
}
2526
info!("sample name set: {}", sm);
2627

27-
let mut sam = file_writer(out, compression_level)?;
28+
let mut sam = file_writer(out, compression_level, stdout_type)?;
2829
let rg = if let Some(x) = rg {
2930
x
3031
} else {

src/cli/fqscore.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ pub fn phred_score(
1010
to33: bool,
1111
to64: bool,
1212
compression_level: u32,
13+
stdout_type: char,
1314
) -> Result<()> {
1415
let start = Instant::now();
1516

@@ -36,7 +37,7 @@ pub fn phred_score(
3637
std::process::exit(1);
3738
}
3839

39-
let mut fq_writer = file_writer(out, compression_level).map(fastq::Writer::new)?;
40+
let mut fq_writer = file_writer(out, compression_level, stdout_type).map(fastq::Writer::new)?;
4041
for rec in fq_reader.records().map_while(Result::ok) {
4142
let mut qual = vec![];
4243
if to33 {

src/cli/gcplot.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ pub fn gc_content(
1919
ylim: usize,
2020
types: &str,
2121
compression_level: u32,
22+
stdout_type: char,
2223
) -> Result<(), Error> {
2324
let start = Instant::now();
2425

@@ -29,7 +30,7 @@ pub fn gc_content(
2930
info!("reading from stdin");
3031
}
3132

32-
let mut fo = file_writer(output, compression_level)?;
33+
let mut fo = file_writer(output, compression_level, stdout_type)?;
3334
let mut df_hash = HashMap::new();
3435

3536
for rec in fq_reader.records().map_while(Result::ok) {

0 commit comments

Comments
 (0)