BioPython(一)
BioPython使用手册https://biopython-cn.readthedocs.io/zh_CN/latest/index.html#
1.1 Seq
对象
Biopython处理序列的机制为Seq
对象,Seq
对象支持常规字符串的很多方法,Seq
对象具有一个重要的属性alphabet
,这一对象用于描述由单个字母构成的序列字符串的mean
(意义),以及如何解释这一字符串。
>>>from Bio.Seq import Seq
>>>from Bio.Alphabet import IUPAC
>>>my_seq = Seq("GATCG", IUPAC.unambiguous_dna)
>>>my_seq
Seq('GATCG', IUPACUnambiguousDNA())
1.2 计算GC含量
使用Bio.SeqUtils.GC()
函数时会自动处理序列和可代表G或者C的歧意核苷酸 字母S混合的情况:
>>>from Bio.SeqUtils import GC
>>>my_seq = Seq('GATCGATGGGCCTATATAGGATCGAAAATCGC', IUPAC.unambiguous_dna)
>>>GC(my_seq)
46.875
1.3 核苷酸序列和(反向)互补序列:
.reverse_complement()
方法:
>>>my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC", IUPAC.unambiguous_dna)
>>>my_seq
Seq('GATCGATGGGCCTATATAGGATCGAAAATCGC', IUPACUnambiguousDNA())
>>>my_seq.complement() #互补
Seq('CTAGCTACCCGGATATATCCTAGCTTTTAGCG', IUPACUnambiguousDNA())
>>>my_seq.reverse_complement() #反向互补
Seq('GCGATTTTCGATCCTATATAGGCCCATCGATC', IUPACUnambiguousDNA())
1.4 转录和翻译
.transcribe()
方法,.translate()
方法:
>>>from Bio.Seq import Seq
>>>from Bio.Alphabet import IUPAC
>>>coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG", IUPAC.unambiguous_dna)
>>>coding_dna
Seq('ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG', IUPACUnambiguousDNA())
>>>template_dna = coding_dna.reverse_complement()
>>>template_dna
Seq('CTATCGGGCACCCTTTCAGCGGCCCATTACAATGGCCAT', IUPACUnambiguousDNA())
>>>messenger_rna = coding_dna.transcribe()#编码链直接转录
messenger_rna
Seq('AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG', IUPACUnambiguousRNA())
>>>template_dna.reverse_complement().transcribe() #模板链转录
Seq('AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG', IUPACUnambiguousRNA())
>>messenger_rna.back_transcribe() #逆转录
Seq('ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG', IUPACUnambiguousDNA())
>>>messenger_rna.translate() #翻译
Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))
>>>coding_dna.translate() #从编码链直接翻译
Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))
>>>coding_dna.translate(table="Vertebrate Mitochondrial")#通过指定密码子表进行特殊翻译如“线粒体密码子表”
Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))
1.5 SeqRecord (Sequence Record) 类
SeqRecord (Sequence Record)
类包含在Bio.SeqRecord
模块中,可以把identifiers
和featuresidentifiers
等高级属性与序列关联起来。SeqRecord
类中的format()
能将字符串转换成被 Bio.SeqIO
支持的格式。使用复杂,详见:https://biopython-cn.readthedocs.io/zh_CN/latest/cn/chr04.html
>>>from Bio.Seq import Seq
>>>from Bio.SeqRecord import SeqRecord
>>>from Bio.Alphabet import generic_protein
>>>record = SeqRecord(Seq("MMYQQGCFAGGTVLRLAKDLAENNRGARVLVVCSEITAVTFRGPSETHLDSMVGQALFGD" \
... +"GAGAVIVGSDPDLSVERPLYELVWTGATLLPDSEGAIDGHLREVGLTFHLLKDVPGLISK" \
... +"NIEKSLKEAFTPLGISDWNSTFWIAHPGGPAILDQVEAKLGLKEEKMRATREVLSEYGNM" \
... +"SSAC", generic_protein),
... id="gi|14150838|gb|AAK54648.1|AF376133_1",
... description="chalcone synthase [Cucumis sativus]")
>>>record.format("fasta")
'>gi|14150838|gb|AAK54648.1|AF376133_1 chalcone synthase [Cucumis sativus]
MMYQQGCFAGGTVLRLAKDLAENNRGARVLVVCSEITAVTFRGPSETHLDSMVGQALFGD
GAGAVIVGSDPDLSVERPLYELVWTGATLLPDSEGAIDGHLREVGLTFHLLKDVPGLISK
NIEKSLKEAFTPLGISDWNSTFWIAHPGGPAILDQVEAKLGLKEEKMRATREVLSEYGNM
SSAC'
1.6 序列输入和输出
1.6.1 解析/读取序列
Bio.SeqIO.parse(‘file’,‘format’)
用于读取序列文件生成 SeqRecord
对象,需要传入文件和格式两个参数,它返回一个 SeqRecord
对象迭代器( iterator ),迭代器通常用在循环中。需要处理只包含一个序列条目的文件,可使用函数Bio.SeqIO.read()
。
>>>from Bio import SeqIO
>>>for seq_record in SeqIO.parse("ls.fasta", "fasta"):print seq_record.idprint repr(seq_record.seq)print len(seq_record)
1.6.2如果需要从文件中提取序列ID列表:
>>> from Bio import SeqIO
>>> identifiers = [seq_record.id for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank")]
>>> identifiers
['Z78533.1', 'Z78532.1', 'Z78531.1', 'Z78530.1', 'Z78529.1', 'Z78527.1', ..., 'Z78439.1']
1.6.3遍历序列
除了使用for循环,还可以使用迭代器的.next()
方法遍历序列条目,使用 .next()
方法,当没有序列条目时,将抛出StopIteration
异常。序列文件包含多个序列条目,而只需要第一个条目时,此方法更简洁;Bio.SeqIO.read()
函数同样用于读取第一条目录。
>>>from Bio import SeqIO
>>>record_iterator = SeqIO.parse("ls_orchid.fasta", "fasta")
>>>first_record = record_iterator.next()
>>>second_record = record_iterator.next()
1.7序列文件作为字典
(1)Bio.SeqIO.to_dict()
最灵活但内存占用最大,每个条目以SeqRecord
对象形式存储在内存中,允许修改这些条目。genbank格式下默认会使用每条序列条目的ID(i.e. .id 属性)作为键,fasta格式下默认使用序列名作为键,使用可选参数key_function
指定键,然后通过键读取操作相关序列。
>>>SM667 = SeqIO.to_dict(SeqIO.parse("SM667.faa", "fasta"))
>>>SM667.keys()
dict_keys(['fig|1548889.4.peg.1', 'fig|1548889.4.peg.2' ...'fig|1548889.4.peg.3']
>>>len(SM667.keys()) #获取序列数
4658
(2)对于更大的文件,应该考虑使用 Bio.SeqIO.index()
,它并不将所有的信息存储在内存中,它仅仅记录每条序列条目在文件中的位置 ,当需要读取某条特定序列条目时,它才进行解析,它不支持比对文件格式,如PHYLIP或Clustal。
(3)Bio.SeqIO.index_db()
。由于它将序列信息以文件方式存储在硬盘上(使用SQLite3数据库)而不是内存中,因此它可以处理超大文件。同时,你可以同时对多个文件建立索引(前提是所有序列条目的ID是唯一的)。它需要三个参数:
1)索引文件名,建议使用以.idx
结尾的字符,改索引文件实质上是SQLite3数据库
2)要建立索引的文件列表(或者单个文件名)
3)文件格式
>>>gb_vrl = SeqIO.index_db("gbvrl.idx", [files_list], "genbank")
对于较大的文件,第一次运行会消耗较长时间,但是建立索引后再次使用便很快了。三种方式各有优缺点,视情况选择使用。
(4)要建立索引的文件非常大时,可以使用samtools
的命令行工具 bgzip
创建BGZF
格式压缩文件,Bio.SeqIO.index()
和 Bio.SeqIO.index_db()
函数均可以用于BGZF压缩文件。
$ bgzip -c ls.gbk > ls.gbk.bgz
>>> from Bio import SeqIO
>>> orchid_dict = SeqIO.index("ls.gbk.bgz", "genbank")
(5)获取序列条目原始数据
因为Biopython的GenBank和EMBL格式输出并不会保留每一点注释信息,所以当需要大文件中提取出一个序列子集或者需要完整地保留源文件时,使用 get_raw()
方法,它仅需要一个参数序列ID
,然后返回一个字符串(提取自文件的未处理数据)。
根据序列号提取子集:
>>>from Bio import SeqIO
>>> uniprot = SeqIO.index("uniprot_sprot.dat", "swiss")
>>> handle = open("selected.dat", "w")
>>> for acc in ["P33487", "P19801", "P13689", "Q8JZQ5", "Q9TRC7"]:
... handle.write(uniprot.get_raw(acc))
>>> handle.close()
1.8 写入序列文件
使用 Bio.SeqIO.parse()
输入序列(读取文件),使用Bio.SeqIO.write()
输出序列(写入文件)。该函数需要三个参数:某些 SeqRecord 对象
,要写入的句柄或文件名
,序列格式
:
>>>from Bio import SeqIO
>>>SeqIO.write(my_records, "my_example.faa", "fasta")
1.9格式转换:
使用SeqRecord
对象列表作为Bio.SeqIO.write()
函数的输入,但是它也接受如来自于Bio.SeqIO.parse()
的 SeqRecord
迭代器 ,因此通过结合使用这两个函数实现文件转换。
>>>from Bio import SeqIO
>>>gbk = SeqIO.parse("file1.gbk", "genbank")
>>>fasta = SeqIO.write(gbk, "file2.fasta", "fasta")
或者使用.convert()
方法
fasta = SeqIO.convert("file1.gbk", "genbank", "file2.fasta", "fasta")
BioPython(一)相关推荐
- Pymol BioPython | PDB文件中氨基酸序列的提取
1. Pymol 当前目录下有一个PDB文件,利用pymol的命令模式: pymol receptor.pdb -c -d "save receptor.fasta" 2. Bio ...
- 为什么 Biopython 的在线 BLAST 这么慢?
用过网页版本 BLAST 的童鞋都会发现,提交的序列比对往往在几分钟,甚至几十秒就可以得到比对的结果:而通过调用 API 却要花费几十分钟或者更长的时间!这到底是为什么呢? NCBIWWW 基本用法 ...
- biopython安装_BioPython的安装和使用
BioPython 是一个用来处理序列和生物信息的python包,里面包含了很多的工具,可以用来直接读取fasta格式.安装可以通过两种方式,pip方式: 1. pip 方式 pip3 install ...
- biopython有什么用_BioPython学习笔记
序列和序列对象 Seq 类 Seq类是Biopython最基础的一类, 储存序列信息. from Bio.Seq import Seq. 该类基本格式是Seq(self, data, alphabet ...
- 蛋白质结构信息获取与解析(基于Biopython)
通常情况下,一个蛋白质所包含的信息是非常多的,与结构相关的包括:包括链名.氨基酸残基序列.原子坐标等.一个蛋白质的结构相关的信息可以以pdb文件的形式保存,这些文件可以直接从PDB.NCBI等数据库获 ...
- 怎么使用biopython_关于python:使用Biopython的翻译功能后,如何跟踪核苷酸序列中起始密码子(ATG)的位置?...
我有一个FASTA文件,其中包含一堆序列,格式如下: BMRat|XM_008846946.1 ATGAAGAACATCACAGAAGCCACCACCTTCATTCTCAAGGGACTCACAGACA ...
- Biopython 安装
转载自:Biopython 安装 Biopython 安装 本节解释了如何在你的机器上安装Biopython.它的安装非常简单,不会超过5分钟. 第1步 - 验证Python的安装 Biopython ...
- Biopython入门
Biopython入门 1. 什么是Biopython? Biopython工程是一个使用Python来开发计算分子生物学工具的国际团体. Biopython官网(http://www.biopyth ...
- biopython 【1】简单介绍【常用板块、安装】
[学习]https://blog.csdn.net/weixin_43569478/article/details/111714256 Biopython工程是一个使用Python来开发计算分子生物学 ...
- 生物信息中的Python 02 | 用biopython解析序列
上一篇文章生物信息中的Python 01 | 从零开始处理基因序列自己造轮子实现了序列的基础操作,但是在Python的世界里,一项工作只要重复的次数多了,那么一定就会有大神来开发相应的包来解决,这个包 ...
最新文章
- Linux系统中如何关闭触摸鼠标
- 关于软件组织培训的几个值得提倡的建议
- ViT(Vision Transformer)学习
- centos so查看_等保测评主机安全:CentOS密码修改周期与登录失败处理
- 有望支撑半年时间!华为麒麟9000芯片库存约为1000万片
- 称洗澡时突遭电击 承租人起诉“自如”索赔77735元
- php mysql网页评论,PHP / MySQL:如何在您的网站中创建评论部分
- execjs执行报: ‘gbk‘ codec can‘t decode byte 0xac in position 62: illegal multibyte sequence
- 接口测试——测试用例执行
- 记一次VS2015安装/卸载以及编译给定程序
- 大学学习路线规划建议贴
- 蛇形天线设计和分析(转)
- c#winform——Gobang五子棋简易版双人对战制作(基本结构+代码)
- 阿里云服务器 云监控 API 调用示例
- Flink滚动窗口函数的开窗起始时间计算规则
- matlab抽样仿真混叠图,数字信号处理及MATLAB仿真__前言
- NR PRACH(六) type 2(2-step) RA基本过程及时频域映射
- 刷屏的Google Pay:羊毛是你的,你是我的
- 苹果笔记本包_通勤收纳新体验:tomtoc苹果电脑包
- 将最大位1000位的16进制转化位8进制(蓝桥杯)
热门文章
- 培训机构如何提高学员续费率?
- 百度语音合成 java 教程_调用百度语音合成接口
- 哈工大18年春软件构造课程讨论题
- 杨旸:从边缘智能迈向泛在智能
- 新手Git for Windows 的安装、配置 及 GitHub中项目下载
- 多个精美的导航样式web2.0源码
- OSDU(Open Group Open Subsurface Data Universe)数据平台研究笔记
- lopatkin俄大神精简Windows 10 Pro 18363.1049 19H2 Release x86-x64 ZH-CN DREY[2020-08-30]
- 广州实时公交深圳实时公交东莞实时公交上海实时公交北京实时公交杭州实时公交接口API实现
- 咨询报告中常用的英文缩写