均质化读取长度
Homogenize reads length
我有一个 fastq 文件中的双端读取数据集,长度范围为 300 到 414 bp(真菌 ITS2 序列)。
我希望通过在较短读取的 3' 端用 Ns 填充,我所有的读取(几百万)都是 414 长。因此,如果读取长度为 400 bp,我希望通过在序列末尾添加 14 Ns 使其长度为 414。
有人知道能够执行该任务的 python / perl 脚本吗?
$str .= 'N' x (414 - length($str));
使用BioPython
。如果序列长于 414 bp,您可能想要更改 default_phred_score_for_N
值 and/or 添加行为。
from Bio import SeqIO
from Bio import Seq
path = r'C:\path\to\file.fastq'
default_phred_score_for_N = 60
def pad_sequence(record):
sequence = str(record.seq)
if len(sequence) < 414:
#pad sequence
padding_length = 414 - len(sequence)
sequence += 'N' * padding_length
# pad annotation
annotation = record.letter_annotations['phred_quality']
annotation += [default_phred_score_for_N] * padding_length
record.letter_annotations = {}
record.seq = Seq.Seq(sequence)
record.letter_annotations = {'phred_quality': annotation}
return record
return record
padded_sequences = (pad_sequence(record) for record in \
SeqIO.parse(path, 'fastq'))
SeqIO.write(padded_sequences, "padded.fastq", 'fastq')
我有一个 fastq 文件中的双端读取数据集,长度范围为 300 到 414 bp(真菌 ITS2 序列)。 我希望通过在较短读取的 3' 端用 Ns 填充,我所有的读取(几百万)都是 414 长。因此,如果读取长度为 400 bp,我希望通过在序列末尾添加 14 Ns 使其长度为 414。 有人知道能够执行该任务的 python / perl 脚本吗?
$str .= 'N' x (414 - length($str));
使用BioPython
。如果序列长于 414 bp,您可能想要更改 default_phred_score_for_N
值 and/or 添加行为。
from Bio import SeqIO
from Bio import Seq
path = r'C:\path\to\file.fastq'
default_phred_score_for_N = 60
def pad_sequence(record):
sequence = str(record.seq)
if len(sequence) < 414:
#pad sequence
padding_length = 414 - len(sequence)
sequence += 'N' * padding_length
# pad annotation
annotation = record.letter_annotations['phred_quality']
annotation += [default_phred_score_for_N] * padding_length
record.letter_annotations = {}
record.seq = Seq.Seq(sequence)
record.letter_annotations = {'phred_quality': annotation}
return record
return record
padded_sequences = (pad_sequence(record) for record in \
SeqIO.parse(path, 'fastq'))
SeqIO.write(padded_sequences, "padded.fastq", 'fastq')