【问题标题】:Using Biopython (Python) to extract sequence from FASTA file使用 Biopython (Python) 从 FASTA 文件中提取序列
【发布时间】:2012-10-30 03:29:07
【问题描述】:

好的,所以我需要从 FASTA 文件中提取部分序列,使用 python (biopython, http://biopython.org/DIST/docs/tutorial/Tutorial.html)

我需要从每个序列中获取前 10 个碱基并将它们放入一个文件中,保留 FASTA 格式的序列信息。最糟糕的是,如果没有办法保留序列信息,我可以只使用碱基。所以这里有一个例子:

>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG

>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG

>gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGGAATAAACGATCGAGTG
AATCCGGAGGACCGGTGTACTCAGCTCACCGGGGGCATTGCTCCCGTGGTGACCCTGATTTGTTGTTGGG

我需要一些方法来获得前 10 个基地(然后我计划在最后 10 个基地再做一次)。该教程网站非常详尽,但我对此并不陌生,因为它没有涉及到这个,我什至不确定它是否可能。感谢您提供的任何帮助。

【问题讨论】:

    标签: python python-2.7 biopython fasta


    【解决方案1】:

    Biopython 非常适合这类任务。 Seq-Object 存储序列和有关它的信息。读取 fasta 文件格式很简单。您可以像访问简单列表一样访问序列,因此也可以直接访问某些位置:

    from Bio import SeqIO
    
    with open("outfile.txt","w") as f:
            for seq_record in SeqIO.parse("infile.fasta", "fasta"):
                    f.write(str(seq_record.id) + "\n")
                    f.write(str(seq_record.seq[:10]) + "\n")  #first 10 base positions
                    f.write(str(seq_record.seq[-10:]) + "\n") #last 10 base positions
    

    【讨论】:

      【解决方案2】:

      Biopython Seq 对象基本上是一个数组,因此您可以指定它的子部分并将它们传递给新的 Seq 对象。假设您已将这些读入 seqrecord(字典),然后使用以下代码您可以指定开始结束位置。

      SeqRecords[Seq][start:end].seq
      

      这将为您提供 SeqRecord 在开始和结束位置之间的序列对象,它们是整数。从记忆中,关于开始/结束索引有一些有趣的地方,但请尝试一下以了解这个想法。您还应该能够指定:

      SeqRecords[Seq][:end].seq
      

      从 SeqRecord 的开头获取序列。

      为了完整性 - 像这样读取文件:

      inputSeqFile = open(filename, "rU")
      SeqDict = SeqIO.to_dict(SeqIO.parse(inputSeqFile, "fasta"))
      inputSeqFile.close()
      

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多