From 9d0ec3310aa79d9459662d3c03748945eee0fdef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20K=C3=B6ster?= Date: Thu, 25 Apr 2019 15:34:56 +0200 Subject: [PATCH] implement sequence-read trait --- Cargo.toml | 2 +- src/io/fastq.rs | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index b13aac93fe..09ead39de9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,7 @@ regex = "1.0" multimap = "0.4" fxhash = "0.2" statrs = "0.9.0" -bio-types = ">=0.4" +bio-types = ">=0.5.1" fnv = "1.0" strum = "0.13" strum_macros = "0.13" diff --git a/src/io/fastq.rs b/src/io/fastq.rs index b867aeca8a..37502570c4 100644 --- a/src/io/fastq.rs +++ b/src/io/fastq.rs @@ -20,6 +20,8 @@ use std::io; use std::io::prelude::*; use std::path::Path; +use bio_types::sequence::SequenceRead; + use crate::utils::TextSlice; /// Trait for FASTQ readers. @@ -234,6 +236,24 @@ impl fmt::Display for Record { } } +impl SequenceRead for Record { + fn name(&self) -> &[u8] { + self.id.as_bytes() + } + + fn base(&self, i: usize) -> u8 { + self.seq.as_bytes()[i] + } + + fn base_qual(&self, i: usize) -> u8 { + self.qual.as_bytes()[i] + } + + fn len(&self) -> usize { + self.seq().len() + } +} + /// An iterator over the records of a FastQ file. #[derive(Debug)] pub struct Records {