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