序列的提取和截取

文摘   2024-07-17 09:39   北京  

序列的提取和截取是编程和数据处理中的常见操作,通常用于从较长的数据集中选择或删除特定的部分。提取指的是从序列中选择特定的元素或子序列。提取可以基于索引、条件或其他标准;截取指的是从一条序列中提取出指定位置的碱基信息,通常是基于起始和结束位置。

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.faseqkit subseq -r 1:12 data/genome.fa --chr chrI# --bed / --gtf 通过指定文件提取序列seqkit subseq --bed data/gene.bed data/genome.fa >  out.faseqkit 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 截取序列

# 切除前5个和后10个碱基seqtk trimfq -b 5 -e 10 data/in.fa > out.fa

3. Samtools

# 截取染色体chrI的前20个碱基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


参考资料:
https://www.omicsclass.com/article/2478


更多生物信息视频课程:





生信课堂
生信笔记
 最新文章