Skip to content

Commit 8fb4347

Browse files
committed
Replace PairedReadFilterer with a more general ZipReads to improve code readability/maintainability
1 parent d4f41c2 commit 8fb4347

9 files changed

Lines changed: 597 additions & 446 deletions

File tree

Cargo.lock

Lines changed: 15 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ readme = "README.md"
1818

1919

2020
[dependencies]
21-
zoe = { version = "0.0.21", default-features = false, features = [
21+
zoe = { git = "https://github.com/CDCgov/zoe.git", default-features = false, features = [
2222
"multiversion",
2323
] }
2424
clap = { version = "4", features = ["derive"] }

src/io/write_records.rs

Lines changed: 58 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
55
use crate::io::{FlushWriter, PairedWriters, RecordWriters};
66
use std::io::Write;
7-
use zoe::{data::fasta::FastaSeq, prelude::FastQ};
7+
use zoe::{
8+
data::fasta::FastaSeq,
9+
prelude::{FastQ, FastQView, FastQViewMut},
10+
};
811

912
/// A trait providing the ability for a record or record-like struct to write
1013
/// itself, where the supported writer is given by `W`.
@@ -20,21 +23,65 @@ impl<W: Write> WriteRecord<W> for FastQ {
2023
}
2124
}
2225

26+
impl<W: Write> WriteRecord<W> for FastQView<'_> {
27+
#[inline]
28+
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
29+
write!(writer, "{self}")
30+
}
31+
}
32+
33+
impl<W: Write> WriteRecord<W> for FastQViewMut<'_> {
34+
#[inline]
35+
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
36+
write!(writer, "{self}")
37+
}
38+
}
39+
2340
impl<W: Write> WriteRecord<W> for FastaSeq {
2441
#[inline]
2542
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
2643
write!(writer, "{self}")
2744
}
2845
}
2946

30-
impl<W: Write> WriteRecord<W> for std::io::Result<FastQ> {
47+
impl<W, E> WriteRecord<W> for Result<FastQ, E>
48+
where
49+
W: Write,
50+
std::io::Error: From<E>,
51+
{
52+
#[inline]
53+
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
54+
write!(writer, "{}", self?)
55+
}
56+
}
57+
58+
impl<W, E> WriteRecord<W> for Result<FastQView<'_>, E>
59+
where
60+
W: Write,
61+
std::io::Error: From<E>,
62+
{
63+
#[inline]
64+
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
65+
write!(writer, "{}", self?)
66+
}
67+
}
68+
69+
impl<W, E> WriteRecord<W> for Result<FastQViewMut<'_>, E>
70+
where
71+
W: Write,
72+
std::io::Error: From<E>,
73+
{
3174
#[inline]
3275
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
3376
write!(writer, "{}", self?)
3477
}
3578
}
3679

37-
impl<W: Write> WriteRecord<W> for std::io::Result<FastaSeq> {
80+
impl<W, E> WriteRecord<W> for Result<FastaSeq, E>
81+
where
82+
W: Write,
83+
std::io::Error: From<E>,
84+
{
3885
#[inline]
3986
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
4087
write!(writer, "{}", self?)
@@ -69,11 +116,12 @@ where
69116
}
70117
}
71118

72-
impl<A, B, W> WriteRecord<W> for std::io::Result<(A, B)>
119+
impl<A, B, W, E> WriteRecord<W> for Result<(A, B), E>
73120
where
74121
A: WriteRecord<W>,
75122
B: WriteRecord<W>,
76123
W: Write,
124+
std::io::Error: From<E>,
77125
{
78126
#[inline]
79127
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
@@ -83,11 +131,12 @@ where
83131
}
84132
}
85133

86-
impl<A, B, W> WriteRecord<PairedWriters<W>> for std::io::Result<(A, B)>
134+
impl<A, B, W, E> WriteRecord<PairedWriters<W>> for Result<(A, B), E>
87135
where
88136
A: WriteRecord<W>,
89137
B: WriteRecord<W>,
90138
W: Write,
139+
std::io::Error: From<E>,
91140
{
92141
#[inline]
93142
fn write_record(self, writer: &mut PairedWriters<W>) -> std::io::Result<()> {
@@ -123,10 +172,11 @@ where
123172
}
124173
}
125174

126-
impl<A, W> WriteRecord<W> for std::io::Result<[A; 2]>
175+
impl<A, W, E> WriteRecord<W> for Result<[A; 2], E>
127176
where
128177
A: WriteRecord<W>,
129178
W: Write,
179+
std::io::Error: From<E>,
130180
{
131181
#[inline]
132182
fn write_record(self, writer: &mut W) -> std::io::Result<()> {
@@ -136,10 +186,11 @@ where
136186
}
137187
}
138188

139-
impl<A, W> WriteRecord<PairedWriters<W>> for std::io::Result<[A; 2]>
189+
impl<A, W, E> WriteRecord<PairedWriters<W>> for Result<[A; 2], E>
140190
where
141191
A: WriteRecord<W>,
142192
W: Write,
193+
std::io::Error: From<E>,
143194
{
144195
#[inline]
145196
fn write_record(self, writer: &mut PairedWriters<W>) -> std::io::Result<()> {

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#![allow(unreachable_patterns)]
2-
#![feature(portable_simd)]
2+
#![feature(portable_simd, try_trait_v2)]
33

44
use crate::processes::{merge_sam_pairs::*, num_procs::*, preprocess::*, trimmer::*, xflate::*};
55
use clap::{Parser, Subcommand};

0 commit comments

Comments
 (0)