根据ID从FASTA文件中批量提取序列【Python】

生信问题记录

我的需求

input:

  1. FASTA文件,含六千余个蛋白序列。命名为FA.fasta
  2. txt文件,经过interpro注释后,筛选出五千余个蛋白,将五千余个蛋白ID导出到txt文件中,每行一个。命名为ID.txt

output:

  • FASTA文件,根据ID.txt里的ID从FA.fasta里提取出对应的五千余个序列。提取结果也以文件的格式保存为out_file.fasta

环境

Windows 10 64x
命令行运行py

解决流程

如果编程娴熟,可以直接用perl或Python写脚本;碍于个人技艺生疏,直接面向百度编程。搜索发现,解决方案非常多,最终某位网友的Python脚本成功运行

提示 如果你是用ID行,形如 >RLS74643.1 dihydrofolate reductase [Planctomycetes bacterium] 来提取序列,那么更为简单,可以使用联川生物的免费在线小工具

参考

1c43f522e1c3的帖子

https://www.jianshu.com/p/b7032dfae44e

步骤

直接复制网友的代码会出很多错,要先安装click模块和biopython的包

  1. 安装包

pip install click
pip install biopython

  1. 复制粘贴,另存为get_seqs_by_id.py
#coding:utf-8import clickfrom Bio import SeqIO@click.command()@click.option('-f', '--fastafile', help='Input a fasta file', required=True)@click.option('-i', '--idfile', help='Input an idlist', required=True)@click.option('-o', '--outfile', help='Input the name of result file', default='result_out.fa')def main(fastafile="FA.fa",idfile="ID.txt",outfile= "result_out.fa"):with open(idfile) as id_handle:wanted = set(line.rstrip("\n").split(None,1)[0] for line in id_handle)print("Found %i unique identifiers in %s" % (len(wanted), idfile))records = (r for r in SeqIO.parse(fastafile, "fasta") if r.id in wanted)count = SeqIO.write(records, outfile, "fasta")print("Saved %i records from %s to %s" % (count, fastafile, outfile))if count < len(wanted):print("Warning %i IDs not found in %s" % (len(wanted) - count, fastafile))if __name__ == '__main__':main()
  1. 将输入文件和py文件放在同一目录下,命令行输入
python get_seqs_by_id.py -f **.fasta -i ID.txt -o out_file.fasta

如果顺利出结果再好不过了,然而我报了错

报错不要慌,只有最后一行是关键信息

debug

错误的意思是:Unicode的解码(Decode)出现错误(Error)了,以gbk编码的方式去解码(该字符串变成Unicode),但是此处通过gbk的方式,却无法解码(can’t decode )。“illegal multibyte sequence”意思是非法的多字节序列,即没法(解码)了。

于是我在open函数这一行加入encoding=‘UTF-8’

with open(idfile,encoding='UTF-8') as id_handle:

结果又双叒报错了!

耐心搜索,发现可能是用Python读文件(txt或者csv),出现编码错误
打开我的ID.txt一看,从Excel复制的信息居然是UTF-16!怪不得一直报错。把txt文件用UTF-8另存就好了……

运行成功


运行成功是这样的,输出一个fasta文件,正是我想要的。

根据ID从FASTA文件中批量提取序列【Python】相关推荐

  1. 从FASTA文件中批量提取指定序列【Python脚本】

    文章目录 前言 一:读取含特定字符的序列并输出 演示 二:读到某一个字符之前的全部输出 使用方法 三:输出前n条序列 使用方法 总结 前言 背景:学测序流程的时候,做到mapping的时牛的基因组有两 ...

  2. (连载1.1)从招股说明书pdf文件中批量提取财务报表数据

    目录标题 背景说明 阅读代码时注意点 源代码 背景说明 本文选取的是当前日期上交所科创板所有的上市公司样本. 用八爪鱼从上交所公告页面爬取公告下载链接,使用迅雷批量下载. 阅读代码时注意点 流程思路: ...

  3. 利用NCO或者CDO从nc文件中批量提取数据

    nco提取数据方法: ncrcat -v bsf MMEAN*.nc -o bsf.nc cdo提取数据方法: cdo select,name=PRECT NBF1850_f19_tn11*.nc P ...

  4. linux提取fasta文件的id,从大的fasta文件中提取特定的fasta序列

    我想使用以下脚本从大的fasta文件中提取特定的fasta序列,但输出为空.从大的fasta文件中提取特定的fasta序列 transcripts.txt文件包含我想从assembly.fasta到s ...

  5. 实战:从Mysql数据库frm文件中,提取表结构创建SQL语句

    需求 在某些特殊的场景下,例如你的mysql数据库无法启动,需要你将表的ibd文件拷贝到另一个数据库中,恢复业务数据库,恢复业务数据的前提,是你需要在另一个数据库中,创建好一模一样的表结构.这时你就需 ...

  6. fasta文件中序列的排序

    同样的名为read_1.fa 的fasta文件,里面有若干序列,如: >@r1 TGAATGCGAACTCCGGGACGCTCAGTAATGTGACGATAGCTGAAAACTGTACGATAA ...

  7. 怎么将文件名称批量提取?

    如何将文件名称批量提取?有些小伙伴是从事文件管理工作的,有时候为了便于对电脑中的文件进行管理,我们就需要将某些重要文件的名称提取出来,然后整理归档.如果我们将所有文件的名称一个一个的复制,然后再粘贴到 ...

  8. Excel从详细地址中批量提取分列出省、市、县区

    Excel快速从详细地址中批量提取分列出省.市.县区! 这个操作必修给跪啊,从终端收集来一堆手机网点的地址信息,现在领导要求汇总出某个省共计有多少网点要开展活动,可是员工小明一打开表懵圈了, 怎么回事 ...

  9. fasta文件中DNA to RNA

    同样的名为read_1.fa 的fasta文件,里面有若干序列,如: >@r1 TGAATGCGAACTCCGGGACGCTCAGTAATGTGACGATAGCTGAAAACTGTACGATAA ...

最新文章

  1. Python time和datatime模块
  2. java hashmap 缓存
  3. display与visibility区别
  4. linus系统下载_系统管理程序卷土重来,Linus拒绝并阅读电子邮件,以及更多行业趋势
  5. 【leetcode】940. Distinct Subsequences II
  6. python模拟购物车流程_用函数模拟简单的购物车(Python)
  7. 普通循环和numpy速率对比
  8. Maven中创建同名项目:Failed to create a Maven project解决(IntelliJ IDEA)
  9. 网络安全课程设计Java实现DES加密算法(可视化界面)代码+设计文档
  10. unity技美27——优化项目内美术3D,2D等资源,详解unity打包体的潜规则与案例
  11. clickhouse-jdbc 源码学习
  12. 公网异地远程访问家中/公司的群晖NAS
  13. 2016码农谷全国大学生程序设计邀请赛(测试赛)
  14. xml 以及JSON学习记录
  15. 阿里云呼叫中心发布,为企业提供更灵活可靠的热线服务
  16. NMT(神经机器翻译Neural Machine Translation)常用术语
  17. Dajngo数据模型
  18. 教程分享 | 如何获取港口网(全球船舶点和路径)的数据
  19. 新版iTunes 不能安装 ipa 包的五种解决办法
  20. leetcode环形链表

热门文章

  1. WAP流量变现的几种方式
  2. 晶品特装科创板上市:市值68亿 主打地面无人装备研发与产销
  3. HTML figcaption 标签
  4. 零基础学习资料(建议收藏)
  5. Badge分析如何逼死处女座
  6. 智能体agent和多智能体系统(MAS)
  7. 部署: 搭建 Apache RocketMQ 单机环境与Rocketmq-console
  8. AutoCAD的下载与安装
  9. css多种方法画四分之一圆曲线
  10. 对传统应用进行容器化改造