崔耳又又 发表于 2024-8-16 09:24:19

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

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

# 使用方法:

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

# python脚本:

```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
                save.write('>'+name+'\n'+str(fa)+'\n')
                print ('succeed')
                break
```

# 注意事项

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

**安装方法:**

```shell
pip3 install argparse
pip3 install bio
```

Xiaohanys 发表于 2024-8-16 09:53:11

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

崔耳又又 发表于 2024-8-16 12:52:45

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

确实,这个效率比较慢,只适合一些简单场景
页: [1]
查看完整版本: Linux中根据物理位置提取基因组序列