序列的提取和截取是编程和数据处理中的常见操作,通常用于从较长的数据集中选择或删除特定的部分。提取指的是从序列中选择特定的元素或子序列。提取可以基于索引、条件或其他标准;截取指的是从一条序列中提取出指定位置的碱基信息,通常是基于起始和结束位置。
01
—
应用场景
02
—
如何进行序列的提取和截取?
为大家介绍4款可以完成这个需求的软件,分别是seqkit、seqtk、samtools、bedtools。
1. seqkit
使用 seqkit subseq 通过指定区域截取序列
# -r 通过区域来截取序列 ,提取 in.fa 前12个字符,可以用--chr指定染色体
seqkit subseq -r 1:12 data/in.fa > out.fa
seqkit subseq -r 1:12 data/genome.fa --chr chrI
# --bed / --gtf 通过指定文件提取序列
seqkit subseq --bed data/gene.bed data/genome.fa > out.fa
seqkit subseq --gtf data/gtf data/genome.fa > out.fa
使用 seqkit grep 命令,可以根据序列名称来提取特定的序列,也支持从文件列表中提取序列。
#单个提取
seqkit grep --pattern YAL069W data/gene.fa > out.fa
# 批量提取 (list:ID列表 )
seqkit grep -f data/list data/gene.fa > out.fa
2. seqtk
使用 seqtk subseq 命令,可以根据序列名称来提取特定的序列,也支持从bed中提取序列。
# 位置信息文件 ( gene.bed )
seqtk subseq data/genome.fa data/gene.bed > out.fa
# 序列名称( list:ID列表 , -l可设定输出的每行长度)
seqtk subseq -l 80 data/gene.fa data/list > out.fa
使用 seqtk trimfq 截取序列
seqtk trimfq -b 5 -e 10 data/in.fa > out.fa
3. Samtools
samtools faidx data/genome.fa chrI:1-20 > out.fa
4. Bedtools
# 提取gene的bed文件
awk ‘{ if($3==“gene”) print $1“\t”$4“\t”$5“\t”$NF}’ data/gff | cut -d “;” -f1 | sed “s/ID=//g” > data/gene.bed
# 截取序列
bedtools getfasta -fi data/genome.fa -bed data/gene.bed -nameOnly > gene.fa
更多生物信息视频课程: