BioPython-1
文件解析
- 针对简单地fasta文件的解析: ls_orchid.fasta
我们知道fasta文件的一般是以>开头,为一个read,也就是序列的名称,下面是序列,如这样的:
>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG
...
这种文件其实我们用简单地文本处理也是可以解决的,但是Bio库中为我们提供了更为简单地解决方法。
from Bio import SeqIO
for seq_record in SeqIO.parse("ls_orchid.fasta", "fasta"): # 关于文件格式 [参考这里](https://biopython.org/wiki/SeqIO)print(seq_record.id) # 提取所有的标题 以 > 开头的print(seq_record.seq) # 提取出所有的seq,也就是碱基序列print(seq_record) # 提取出所有的readprint(len(seq_record)) # 这个是序列长,不包括标题,只是碱基多少个nc# 我们解析GBK文件也是同理
for seq_record in SeqIO.parse("ls_orchid.gbk", "genbank"):# 上面介绍的都是读取多条数据,下面是读取单条数据
SeqIO.read("filename","fasta") # 针对只有一个read 的fasta文件
遍历序列文件
SeqIO变身迭代器对象:
record_iterator = SeqIO.parse("ls_orchid.fasta", "fasta")first_record = record_iterator.next()
print first_record.id
print first_record.descriptionsecond_record = record_iterator.next()
print second_record.id
print second_record.description
序列文件作为字典-在内存中
from Bio import SeqIO
orchid_dict = SeqIO.to_dict(SeqIO.parse("ls_orchid.fasta", "fasta"))
print orchid_dict.keys()
写入序列文件
Bio.SeqIO.write()
的写入:
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.Alphabet import generic_proteinrec1 = SeqRecord(Seq("MMYQQGCFAGGTVLRLAKDLAENNRGARVLVVCSEITAVTFRGPSETHLDSMVGQALFGD" \+"GAGAVIVGSDPDLSVERPLYELVWTGATLLPDSEGAIDGHLREVGLTFHLLKDVPGLISK" \+"NIEKSLKEAFTPLGISDWNSTFWIAHPGGPAILDQVEAKLGLKEEKMRATREVLSEYGNM" \+"SSAC", generic_protein),id="gi|14150838|gb|AAK54648.1|AF376133_1",description="chalcone synthase [Cucumis sativus]")rec2 = SeqRecord(Seq("YPDYYFRITNREHKAELKEKFQRMCDKSMIKKRYMYLTEEILKENPSMCEYMAPSLDARQ" \+"DMVVVEIPKLGKEAAVKAIKEWGQ", generic_protein),id="gi|13919613|gb|AAK33142.1|",description="chalcone synthase [Fragaria vesca subsp. bracteata]")rec3 = SeqRecord(Seq("MVTVEEFRRAQCAEGPATVMAIGTATPSNCVDQSTYPDYYFRITNSEHKVELKEKFKRMC" \+"EKSMIKKRYMHLTEEILKENPNICAYMAPSLDARQDIVVVEVPKLGKEAAQKAIKEWGQP" \+"KSKITHLVFCTTSGVDMPGCDYQLTKLLGLRPSVKRFMMYQQGCFAGGTVLRMAKDLAEN" \+"NKGARVLVVCSEITAVTFRGPNDTHLDSLVGQALFGDGAAAVIIGSDPIPEVERPLFELV" \+"SAAQTLLPDSEGAIDGHLREVGLTFHLLKDVPGLISKNIEKSLVEAFQPLGISDWNSLFW" \+"IAHPGGPAILDQVELKLGLKQEKLKATRKVLSNYGNMSSACVLFILDEMRKASAKEGLGT" \+"TGEGLEWGVLFGFGPGLTVETVVLHSVAT", generic_protein),id="gi|13925890|gb|AAK49457.1|",description="chalcone synthase [Nicotiana tabacum]")my_records = [rec1, rec2, rec3]
from Bio import SeqIO
SeqIO.write(my_records, "my_example.faa", "fasta")
下面我们学习IUPAC,这是一个可以让我们明确你传入的是DNA,RNA,还是氨基酸序列的碱基串,它提供检查的作用:
from Bio.Alphabet import IUPAC
my_seq = Seq("AGTACACTGGT", IUPAC.unambiguous_dna) # 明确是DNA序列
my_seq.alphabet # IUPACUnambiguousDNA()
from Bio.SeqUtils import GC # 可以计算GC量,实际上没有必要,我们自己随便写一个函数就能解决count = SeqIO.convert("ls_orchid.gbk", "genbank", "my_example.fasta", "fasta") # 文件格式转换
# ls_orchid.gbk 为已知的genbank文件,转化为my_example.fasta
得到序列的反向互补、互补核苷酸序列:
my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC", IUPAC.unambiguous_dna)
my_seq.complement() # 互补序列
my_seq.reverse_complement() # 反向互补序列,这个其实可以用切片的方法进行反向
下一步是转录:
coding_dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG", IUPAC.unambiguous_dna) # 这是原始的DNA,现在求信使RNA
template_dna = coding_dna.reverse_complement() # 得到模板RNA
messenger_rna = coding_dna.transcribe() # 转录
messenger_rna.translate(to_stop=True)
# 翻译 加了to_stop参数表示终止密码子不翻译 如果表示用的非标准的起始密码子 需要加 cds=True
当你想要改变Seq时;事实上,seq相当于一个元组一样,不能直接改变会报错的,但是可以通过下面的方法:
my_seq = Seq("GCCATTGTAATGGGCCGCTGAAAGGGTGCCCGA", IUPAC.unambiguous_dna)
mutable_seq = my_seq.tomutable() # 转化为可变的
mutable_seq[5] = "C"
new_seq = mutable_seq.toseq() # 恢复为不可变的
SeqRecord
这是非常重要的知识点,在处理复杂的碱基序列中用得着:
新建 SeqRecord:
simple_seq = Seq("GATC")
from Bio.SeqRecord import SeqRecord
simple_seq_r = SeqRecord(simple_seq)
还可以通过初始化函数给 id, name和description赋值;反之,它们被设为默认值“unknown”(可随后编辑):
simple_seq_r.id = "AC12345"
simple_seq_r.description = "Made up sequence I wish I could write a paper about"# 可随SeqRecord同时建立:
SeqRecord(simple_seq, id="AC12345")
用切片从父序列截取5:18,然后取反向互补序列
from Bio.SeqFeature import SeqFeature, FeatureLocation
example_parent = Seq("ACCGAGACGGCAAAGGCTAGCATAGGTATGAGACTTCCTTCCTGCCAGTGCTGAGGAACTGGGAGCCTAC")
example_feature = SeqFeature(FeatureLocation(5, 18), type="gene", strand=-1)
feature_seq = example_feature.extract(example_parent)
SeqRecord 类中的 format() 能将字符串转换成被 Bio.SeqIO 支持的格式,如FASTA:
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.Alphabet import generic_proteinrecord = SeqRecord(Seq("MMYQQGCFAGGTVLRLAKDLAENNRGARVLVVCSEITAVTFRGPSETHLDSMVGQALFGD" \+"GAGAVIVGSDPDLSVERPLYELVWTGATLLPDSEGAIDGHLREVGLTFHLLKDVPGLISK" \+"NIEKSLKEAFTPLGISDWNSTFWIAHPGGPAILDQVEAKLGLKEEKMRATREVLSEYGNM" \+"SSAC", generic_protein),id="gi|14150838|gb|AAK54648.1|AF376133_1",description="chalcone synthase [Cucumis sativus]")print record.format("fasta")
多序列比对
Bio.AlignIO.read()
只能读取一个多序列比对而Bio.AlignIO.parse()
可以依次读取多个序列比对数据 :
from Bio import AlignIO
alignment = AlignIO.read("PF05371_seed.sth", "stockholm")
BioPython-1相关推荐
- 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的世界里,一项工作只要重复的次数多了,那么一定就会有大神来开发相应的包来解决,这个包 ...
最新文章
- 开源实时日志分析ELK
- 7月平均工资下来,Java程序员哭笑不得!
- mark关于Java语言Static的生命周期
- 苹果MAC系统的安装
- 程序员幽默:39个奇葩代码注释,看完笑哭了
- 【面试篇】Java多线程并发-Java中的CAS机制算法
- TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现
- JS Map与JSON转换
- android实现简单进度条ProgressBar
- 中国移动实习计算机技术岗,暑期实习生去中国移动面试经历
- 文华财经指标公式,通达信指标加密破解
- JAVA编写一个加密及解密程序
- MATLAB图片处理(上)
- 计算机网络八大性能指标
- 安吉县人力资源和社会保障局数据中心容灾备份项目
- word:分节符-分页符
- 【一句日历】2019年9月
- Vue改变网页背景颜色切换
- 百度地图线路颜色_山东到底发展成了什么样子,这两张地图不会说谎
- LADRC线性自抗扰,三阶ESO状态扩张观测器,boost升压电路,双闭环控制,双LADRC控制,电压外环采用LADRC线性自抗扰控制