-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unified async alignment reader/writer #286
Comments
Yes, give it a go! It's a loaded issue, consisting of four parts:
I recommend focusing on each individually, submitting a patch for review per part. It is a fair amount of work/code, but don't feel obligated to complete it all. For the first part, I normalized the alignment format async reader methods, so you shouldn't have any problems outside of util. I also added an async variant format reader and builder to use as a reference. Here are some instructions on how to proceed with the reader:
//! Async alignment reader.
/// An async alignment reader.
pub enum Reader<R> {
/// SAM.
Sam(sam::r#async::io::Reader<R>),
/// BAM.
Bam(bam::r#async::io::Reader<R>),
/// CRAM.
Cram(cram::r#async::io::Reader<R>),
}
impl<R> Reader<R>
where
R: AsyncBufRead + Unpin,
{
/// Reads the SAM header.
pub async fn read_header(&mut self) -> io::Result<sam::Header> {
todo!()
}
/// Returns an iterator over records starting from the current stream position.
pub fn records<'r, 'h: 'r>(
&'r mut self,
header: &'h sam::Header,
) -> impl Stream<Item = io::Result<Box<dyn sam::alignment::Record>>> + 'r {
todo!()
}
} Let me know if you have any further questions or issues. |
I wonder if it also makes sense to add an asynchronous version of an indexed reader? Given the implementations on SAM/BAM/CRAM are |
Tracked in #296. |
I use the
noodles_util::alignment
readers and writers a lot. How easy would it be to implement an aync version of this transparent reader/writer?If this is something you think would be reasonably straightforward I would be willing to draft a PR with some guidance on where to start.
The text was updated successfully, but these errors were encountered: