biopython吧 关注:59贴子:174

biopython对序列的处理

只看楼主收藏回复

Biopython的字母表 定义在``Bio.Alphabet``模块,使用IUPAC字母表。
Bio.Alphabet.IUPAC 提供了蛋白质、DNA和RNA的基本定义,并且提供了扩展 和定制基本定义的功能。


IP属地:广东1楼2016-12-29 17:42回复
    创建一条有通用字母组成的模糊序列:
    >>> from Bio.Seq import Seq
    >>> my_seq = Seq("AGTACACTGGT")
    >>> my_seq
    Seq('AGTACACTGGT', Alphabet())
    >>> my_seq.alphabet
    Alphabet()


    IP属地:广东2楼2016-12-29 17:45
    回复
      创建一条明确的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()


      IP属地:广东3楼2016-12-29 17:47
      回复
        明确是氨基酸序列:
        >>> from Bio.Seq import Seq
        >>> from Bio.Alphabet import IUPAC
        >>> my_prot = Seq("AGTACACTGGT", IUPAC.protein)
        >>> my_prot
        Seq('AGTACACTGGT', IUPACProtein())
        >>> my_prot.alphabet
        IUPACProtein()


        IP属地:广东4楼2016-12-29 17:48
        回复
          可以将Seq对象处理成正常的Python字符串,比如迭代元素,取序列长度:
          >>> from Bio.Seq import Seq
          >>> from Bio.Alphabet import IUPAC
          >>> my_seq = Seq("GATCG", IUPAC.unambiguous_dna)
          >>> for index, letter in enumerate(my_seq):
          ... print index, letter
          0 G
          1 A
          2 T
          3 C
          4 G
          >>> print len(my_seq)
          5


          IP属地:广东5楼2016-12-29 17:51
          回复
            Python计数从0开始获取序列的元素:
            >>> print my_seq[0] #first letter
            G
            >>> print my_seq[2] #third letter
            T
            >>> print my_seq[-1] #last letter
            G


            IP属地:广东6楼2016-12-29 17:52
            回复
              .count()像Python的字符串一样进行着非重叠的计数:
              >>> from Bio.Seq import Seq
              >>> "AAAA".count("AA")
              2
              >>> Seq("AAAA").count("AA")
              2


              IP属地:广东7楼2016-12-29 17:54
              回复
                简单计算GC含量:
                >>> from Bio.Seq import Seq
                >>> from Bio.Alphabet import IUPAC
                >>> my_seq = Seq('GATCGATGGGCCTATATAGGATCGAAAATCGC', IUPAC.unambiguous_dna)
                >>> len(my_seq)
                32
                >>> my_seq.count("G")
                9
                >>> 100 * float(my_seq.count("G") + my_seq.count("C")) / len(my_seq)
                46.875


                IP属地:广东8楼2016-12-29 18:16
                回复
                  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


                  IP属地:广东9楼2016-12-29 18:17
                  回复
                    切取序列:
                    >>> from Bio.Seq import Seq
                    >>> from Bio.Alphabet import IUPAC
                    >>> my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC", IUPAC.unambiguous_dna)
                    >>> my_seq[4:12]
                    Seq('GATGGGCC', IUPACUnambiguousDNA())
                    序列第一个元素从0开始,第一项4序列被包含进结果,最后一项12则没有。


                    IP属地:广东10楼2016-12-29 18:21
                    回复
                      将序列对象转换成字符串:
                      尽管对 Seq 对象调用 str() 函数将以字符串的形式返回全长序列,但是当使用print打印时,Python会自动转换。
                      >>> str(my_seq)
                      'GATCGATGGGCCTATATAGGATCGAAAATCGC'
                      >>> print my_seq
                      GATCGATGGGCCTATATAGGATCGAAAATCGC


                      IP属地:广东11楼2016-12-29 18:23
                      回复
                        当你进行Python字符串格式化或者插入操作符( % )时, 可以直接把 Seq 对象和 %s 占位符一起使用:
                        >>> fasta_format_string = ">Name\n%s\n" % my_seq
                        >>> print fasta_format_string
                        >Name
                        GATCGATGGGCCTATATAGGATCGAAAATCGC


                        IP属地:广东12楼2016-12-29 18:27
                        回复
                          改变大小写:
                          >>> from Bio.Seq import Seq
                          >>> from Bio.Alphabet import generic_dna
                          >>> dna_seq = Seq("acgtACGT", generic_dna)
                          >>> dna_seq
                          Seq('acgtACGT', DNAAlphabet())
                          >>> dna_seq.upper()
                          Seq('ACGTACGT', DNAAlphabet())
                          >>> dna_seq.lower()
                          Seq('acgtacgt', DNAAlphabet())


                          IP属地:广东13楼2016-12-29 20:19
                          收起回复
                            >>> "GTAC" in dna_seq
                            False
                            >>> "GTAC" in dna_seq.upper()
                            True


                            IP属地:广东14楼2016-12-29 20:20
                            回复
                              IUPAC字母表仅仅是对于大写字母构成的序列的:
                              >>> from Bio.Seq import Seq
                              >>> from Bio.Alphabet import IUPAC
                              >>> dna_seq = Seq("ACGT", IUPAC.unambiguous_dna)
                              >>> dna_seq
                              Seq('ACGT', IUPACUnambiguousDNA())
                              >>> dna_seq.lower()
                              Seq('acgt', DNAAlphabet())


                              IP属地:广东15楼2016-12-29 20:22
                              回复