Skip to content

Commit da4dc79

Browse files
committed
remove bio from cmd adapter
1 parent 43a5774 commit da4dc79

3 files changed

Lines changed: 17 additions & 12 deletions

File tree

src/cli/cutadapter.rs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use super::misc::write_record;
22
use crate::{errors::FqkitError, utils::file_reader, utils::file_writer};
3-
use bio::io::fasta;
43
use log::{error, warn};
5-
use paraseq::fastq;
4+
use paraseq::{fastq,fasta};
65
use std::collections::HashMap;
76

87
pub fn cut_adapter(
@@ -14,19 +13,21 @@ pub fn cut_adapter(
1413
compression_level: u32,
1514
stdout_type: char,
1615
) -> Result<(), FqkitError> {
17-
let seqfile_reader = file_reader(Some(seqfile)).map(fasta::Reader::new)?;
18-
16+
let mut seqfile_reader = file_reader(Some(seqfile)).map(fasta::Reader::new)?;
17+
let mut faset = fasta::RecordSet::default();
1918
let mut seqs = HashMap::new();
20-
let iters = seqfile_reader.records();
21-
for rec in iters.map_while(Result::ok) {
22-
if seqs.contains_key(rec.id()) {
23-
warn!("found duplicate sequence id: {}, keep first one", rec.id());
24-
continue;
25-
} else {
26-
seqs.entry(rec.id().to_owned())
27-
.or_insert(rec.seq().to_owned());
19+
20+
while faset.fill(&mut seqfile_reader)? {
21+
for rec in faset.iter().map_while(Result::ok) {
22+
if seqs.contains_key(rec.id()) {
23+
warn!("found duplicate sequence id: {}, keep first one", std::str::from_utf8(rec.id())?);
24+
continue;
25+
} else {
26+
seqs.entry(rec.id().to_owned()).or_insert(rec.seq().to_vec());
27+
}
2828
}
2929
}
30+
3031
if seqs.is_empty() {
3132
error!("{}", FqkitError::EmptyFile(seqfile.to_string()));
3233
std::process::exit(1);

src/command.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ pub enum Subcli {
182182
/// input fastq file, or read from stdin
183183
input: Option<String>,
184184
/// adapter sequence file in Fasta format
185+
/// {n}Note: fasta sequences must be in single line
185186
#[arg(short = 'f', long = "fasta", value_name = "FILE")]
186187
fa: String,
187188
/// addpter on the left side of the read

src/errors.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ pub enum FqkitError {
2121
#[error("ProcessError")]
2222
ProcessError(#[from] paraseq::parallel::ProcessError),
2323

24+
#[error("ParaseqFastaError")]
25+
ParaseqFastaError(#[from] paraseq::fasta::Error),
26+
2427
#[error("ParaseqFastqError")]
2528
ParaseqFastqError(#[from] paraseq::fastq::Error),
2629

0 commit comments

Comments
 (0)