文件解析

  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相关推荐

  1. Pymol BioPython | PDB文件中氨基酸序列的提取

    1. Pymol 当前目录下有一个PDB文件,利用pymol的命令模式: pymol receptor.pdb -c -d "save receptor.fasta" 2. Bio ...

  2. 为什么 Biopython 的在线 BLAST 这么慢?

    用过网页版本 BLAST 的童鞋都会发现,提交的序列比对往往在几分钟,甚至几十秒就可以得到比对的结果:而通过调用 API 却要花费几十分钟或者更长的时间!这到底是为什么呢? NCBIWWW 基本用法 ...

  3. biopython安装_BioPython的安装和使用

    BioPython 是一个用来处理序列和生物信息的python包,里面包含了很多的工具,可以用来直接读取fasta格式.安装可以通过两种方式,pip方式: 1. pip 方式 pip3 install ...

  4. biopython有什么用_BioPython学习笔记

    序列和序列对象 Seq 类 Seq类是Biopython最基础的一类, 储存序列信息. from Bio.Seq import Seq. 该类基本格式是Seq(self, data, alphabet ...

  5. 蛋白质结构信息获取与解析(基于Biopython)

    通常情况下,一个蛋白质所包含的信息是非常多的,与结构相关的包括:包括链名.氨基酸残基序列.原子坐标等.一个蛋白质的结构相关的信息可以以pdb文件的形式保存,这些文件可以直接从PDB.NCBI等数据库获 ...

  6. 怎么使用biopython_关于python:使用Biopython的翻译功能后,如何跟踪核苷酸序列中起始密码子(ATG)的位置?...

    我有一个FASTA文件,其中包含一堆序列,格式如下: BMRat|XM_008846946.1 ATGAAGAACATCACAGAAGCCACCACCTTCATTCTCAAGGGACTCACAGACA ...

  7. Biopython 安装

    转载自:Biopython 安装 Biopython 安装 本节解释了如何在你的机器上安装Biopython.它的安装非常简单,不会超过5分钟. 第1步 - 验证Python的安装 Biopython ...

  8. Biopython入门

    Biopython入门 1. 什么是Biopython? Biopython工程是一个使用Python来开发计算分子生物学工具的国际团体. Biopython官网(http://www.biopyth ...

  9. biopython 【1】简单介绍【常用板块、安装】

    [学习]https://blog.csdn.net/weixin_43569478/article/details/111714256 Biopython工程是一个使用Python来开发计算分子生物学 ...

  10. 生物信息中的Python 02 | 用biopython解析序列

    上一篇文章生物信息中的Python 01 | 从零开始处理基因序列自己造轮子实现了序列的基础操作,但是在Python的世界里,一项工作只要重复的次数多了,那么一定就会有大神来开发相应的包来解决,这个包 ...

最新文章

  1. 开源实时日志分析ELK
  2. 7月平均工资下来,Java程序员哭笑不得!
  3. mark关于Java语言Static的生命周期
  4. 苹果MAC系统的安装
  5. 程序员幽默:39个奇葩代码注释,看完笑哭了
  6. 【面试篇】Java多线程并发-Java中的CAS机制算法
  7. TypeScript算法专题 - blog1.基于TypeScript语言的单链表实现
  8. JS Map与JSON转换
  9. android实现简单进度条ProgressBar
  10. 中国移动实习计算机技术岗,暑期实习生去中国移动面试经历
  11. 文华财经指标公式,通达信指标加密破解
  12. JAVA编写一个加密及解密程序
  13. MATLAB图片处理(上)
  14. 计算机网络八大性能指标
  15. 安吉县人力资源和社会保障局数据中心容灾备份项目
  16. word:分节符-分页符
  17. 【一句日历】2019年9月
  18. Vue改变网页背景颜色切换
  19. 百度地图线路颜色_山东到底发展成了什么样子,这两张地图不会说谎
  20. LADRC线性自抗扰,三阶ESO状态扩张观测器,boost升压电路,双闭环控制,双LADRC控制,电压外环采用LADRC线性自抗扰控制

热门文章

  1. 《中国人工智能学会通讯》——11.64 基于成对约束的属性特征选择
  2. Struts2之初识篇(一)——与struts的区别和基本配置
  3. struts1起服务报错
  4. 怎样才能有德国煤矿那样严密的安全网?
  5. www.cnblog.org无法访问了
  6. MySQL命名、设计及使用规范《MySQL命名、设计及使用规范》
  7. Qt仿win7自动顶部最大化左侧右侧半屏效果
  8. js获取日期实例之昨天今天和明天、后天
  9. hdu 3746 kmp求循环节 下标从1开始
  10. 五一小长假|不得不说的一些话