好的,我需要使用python(biopython,http://biopython.org/DIST/docs/tutorial/Tutorial.html)从FASTA文件中提取部分序列
我需要从每个序列中获取前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个基地再次进行)。该教程网站非常详尽,但我是新手,因为它没有涉及到这一点,我甚至不确定它是否可能。感谢您提供任何帮助。
答案 0 :(得分:6)
Biopython非常适合这类任务。 Seq
- 对象存储有关它的序列和信息。读取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
答案 1 :(得分:0)
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()
希望有所帮助。