Linux中根据物理位置提取基因组序列

Python Python 286 人阅读 | 2 人回复 | 2024-08-16

一个简单的python脚本实现根据物理位置提取基因组序列。

使用方法:

python get_seq.py --ID 自定义序列名称 --Genome fasta格式的基因组文件 --Chr 染色体号 --Start 起始位置 --End 终止位置

python脚本:

#coding:UTF8
import sys,argparse
from Bio import SeqIO
parser = argparse.ArgumentParser(description='根据物理位置提取基因组文件')
parser.add_argument('--ID', type=str,help='序列名称', required=True)
parser.add_argument('--Genome', type=str,help='基因组', required=True)
parser.add_argument('--Chr', type=str,help='染色体号', required=True)
parser.add_argument('--Start', type=str,help='序列起始位置', required=True)
parser.add_argument('--End', type=str,help='序列终止位置', required=True)
args = parser.parse_args()
name,genome,chro,start,end = args.ID,args.Genome,args.Chr,args.Start,args.End
save=open(name+'.txt','w')
for geno in SeqIO.parse(genome, "fasta"):
    if chro.lower()==geno.id.lower():
        fa=geno.seq[int(start):int(end)]
        save.write('>'+name+'\n'+str(fa)+'\n')
        print ('succeed')
        break

注意事项

此脚本需使用python3运行,提前安装argparse、Bio软件包

安装方法:

pip3 install argparse
pip3 install bio

微信扫一扫分享文章

+10
无需登陆也可“点赞”支持作者
分享到:
评论

使用道具 举报

评论|共 2 个

Xiaohanys

发表于 2024-8-16 09:53:11 | 显示全部楼层

只能说你这样能行,但是效率太低了,你每次提取都要遍历整个基因组。我要是需要快速提取多个位置,你这个方法就不行了

崔耳又又

发表于 2024-8-16 12:52:45 | 显示全部楼层

Xiaohanys 发表于 2024-8-16 09:53
只能说你这样能行,但是效率太低了,你每次提取都要遍历整个基因组。我要是需要快速提取多个位置,你这个方 ...

确实,这个效率比较慢,只适合一些简单场景
300 积分
19 主题
+ 关注
热门推荐