Python

biopython 处理dna序列,翻译,反向互补。

2019-06-21  本文已影响0人  代表群众

biopython 处理序列

Seq 对象和标准的Python字符串有两个明显的不同。首先,它们使用不同的方法。 尽管``Seq``对象支持常规字符串的很多方法,但是它的 translate() 方法在做 生物学翻译时是不同的。相似的还有其他的生物学相关的方法,比如 reverse_complement() 。 其次, Seq 对象具有一个重要的属性– alphabet ,这一对象用于描述由单个 字母构成的序列字符串的 “mean” (意义),以及如何解释这一字符串。例如, AGTACACTGGT 序列是个DNA序列还是一段富含Alanines, Glycines, Cysteines and Threonines 的蛋白质序列?

#指定这条序列的类型是dna序列

>>> from Bio.Seq import Seq

>>> from Bio.Alphabet import IUPAC

>>> my_seq = Seq("AGTACACTGGT", IUPAC.unambiguous_dna)

>>> my_seq

Seq('AGTACACTGGT', IUPACUnambiguousDNA())

>>> my_seq.alphabet

IUPACUnambiguousDNA()

# Seq 对象有一个 .count() 方法,类似于字符串。记住这意味就像Python的 字符串一样进行着非重叠的计数。

>>> from Bio.Seq import Seq

>>> "AAAA".count("AA")

2

>>> Seq("AAAA").count("AA")

2

#Bio.SeqUtils模块内置函数计算GC含量

>>> from Bio.Seq import Seq

>>> from Bio.Alphabet import IUPAC

>>> from Bio.SeqUtils import GC

>>> my_seq = Seq('GATCGATGGGCCTATATAGGATCGAAAATCGC', IUPAC.unambiguous_dna)

>>> GC(my_seq)

46.875

#切分序列,从0开始计数

>>> from Bio.Seq import Seq

>>> from Bio.Alphabet import IUPAC

>>> my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC", IUPAC.unambiguous_dna)

>>> my_seq[4:12]

Seq('GATGGGCC', IUPACUnambiguousDNA())

#将序列对象转换为字符串

>>> str(my_seq)

'GATCGATGGGCCTATATAGGATCGAAAATCGC'

#当你进行Python字符串格式化或者插入操作符( % )时, 可以直接把 Seq 对象和 %s 占位符一起使用,不用担心序列自动换行:

>>> fasta_format_string = ">Name\n%s\n" % my_seq

>>> print fasta_format_string

>Name

GATCGATGGGCCTATATAGGATCGAAAATCGC

#连接序列就像是连接字符串一样使用'+'

#seq对象转换大小写跟字符串一样有upper和lower方法

#seq对象有内置的获得互补和反向互补的函数

>>> from Bio.Seq import Seq

>>> from Bio.Alphabet import IUPAC

>>> 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())

#seq有内置的函数transcribe,将dna序列转录为rna序列

>>> coding_dna

Seq('ATGGCCATTGTAATGGGCCGCTGAAAGGGTGCCCGATAG', IUPACUnambiguousDNA())

>>> messenger_rna = coding_dna.transcribe()

>>> messenger_rna

Seq('AUGGCCAUUGUAAUGGGCCGCUGAAAGGGUGCCCGAUAG', IUPACUnambiguousRNA())

#seq还有逆转录的函数 back_transcribe

#翻译

#translate函数可将seq对象翻译为蛋白质序列,默认遇到终止子不会停止翻译,默认使用ncbi的标准密码子表,

#假设我们需要翻译一个线粒体序列,我们就需要告诉翻译函数使用相关的遗传密码:

>>> coding_dna.translate(table="Vertebrate Mitochondrial")

Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))

#你也可以利用NCBI上表格的标号来指定所使用的遗传密码,这样更简洁一些, 在GenBank文件的特征注释中经常包含表格的标号:

>>> coding_dna.translate(table=2)

Seq('MAIVMGRWKGAR*', HasStopCodon(IUPACProtein(), '*'))

#注意到当你使用 to_stop 参数时,翻译到终止子就停止,终止密码子本身是不翻译的

>>> coding_dna.translate()

Seq('MAIVMGR*KGAR*', HasStopCodon(IUPACProtein(), '*'))

>>> coding_dna.translate(to_stop=True)

Seq('MAIVMGR', IUPACProtein())

上一篇 下一篇

猜你喜欢

热点阅读