我有两个文件-其中一个看起来像这样(我只显示一部分):
>UniRef90_A0A0K2VG56 - Cluster: titin
MTTQAPTFTQPLQSVVALEGSAATFEAHVSGFPVPEVSWFRDGQVISTSTLPGVQISFSD
GRARLMIPAVTKANSGQYSLRATNGSGQATSTAELLVTAETAPPNFTQRLQSMTVRQGSQ
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGELYSLLIAEAYPEDSGTYSVNATN
SVGRATSTAELLVQGEEVVPAKKTKTIVSTAQISETRQTRIEKKIEQKIEAHFDAKSIAT
VEMVIDGATGQQLPHKTPPRIPPKPKSRSPTPPSVAAKAQLGRQQSPSPIRHSPSPVRHV
>UniRef90_UPI00045E3C3E - Cluster: titin isoform X25
MTTQAPTFTQPLQSVVVLEGSTATFEAHISGFPVPEVSWIRDGQVISTSTLPGVQISFSD
GRAKLTIPAVTKANSGRYSLRATNGSGQATSTAELLVKAETAPPNFVQRLQSMTVRQGSQ
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGELYSLLIAEAYPEDSGTYSVNATN
SVGRATSTAELLVQGEEEVPAKKTKTIVSTAQISESRQTRIEKKIEAHFDARSIATVEMV
IDGAAGQQLPHKTPPRIPPKPKSRSPTPPSIAAKAQLARQQSPSPIRHSPSPVRHVRAPT
第二个,有几行,仅由Uniref90\uxxxxxxx字符组成:
UniRef90_A0A0K2VG56 UniRef90_A0A0P5UY87 UniRef90_A0A0V0H4B3 UniRef90_A0A132GS96
UniRef90_A0A095VQ09 UniRef90_A0A0C1UI80 UniRef90_A0A1M4ZSK2 UniRef90_A0A1W1CJV7 UniRef90_A0A1Z9J2X0
我想做的是得到一个列表,以及不同Uniref90\uxxxxxxx的相应序列(字母…RKMQAATAATG…)
我的意思是,在我的第二个文件的第一行,我应该得到一个4 Uniref90\uxxxxxxx的序列列表。我不想保留第二个文件的“Uniref90\uxxxxxxx”字符,只保留序列
我需要一个简短的例子:
UniRef90_A0A0K2VG56 UniRef90_A0A0P5UY87
应该给我:
MTTQAPTFTQPLQSVVVLEGSTATFEAHISGFPVPEVSWIRDGQVISTSTLPGVQISFSD
GRAKLTIPAVTKANSGRYSLRATNGSGQATSTAELLVKAETAPPNFVQRLQSMTVRQGSQ
VRLQVRVTGIPTPVVKFYRDGAEIQSSLDFQISQEGELYSLLIAEAYPEDSGTYSVNATN
SVGRATSTAELLVQGEEEVPAKKTKTIVSTAQISESRQTRIE ###UniRef90_A0A0K2VG56
VEMVIDGATGQQLPHKTPPRIPPKPKSRSPTPPSVAAKAQLGRQQSPSPIRHSPSPVRHV
RAPTPSPVRSVSPAGRISTSPIRSVKSPLLTRKMQAATAATGSEVPPPWKQESYMASSAE
AEMRETTMTSSTQIRREERWEGRYGVQE ###Uniref90_A0A0P5UY87
在Python中可以这样做吗
编辑:
目前,我尝试创建一个字典,Uniref90\uxxxxx id作为键,相应的序列作为值
f2=open("~/PROJET_M2/data/uniref90.fasta", "r")
fasta={}
for i in f2:
i=i.rstrip("\n")
if i.startswith(">"):
l=next(f2,'').strip() ### the problem is there I guess
i=i[1:]
i=i.split(" ")
fasta[i[0]]=l
print(fasta)
它不起作用,我的意思是,密钥创建得很好,但正如您在第一个文件中看到的,有几行。此代码仅添加Uniref90\uxxxxxxx id后面的第一行,而不是所有行
您可以使用一个简单的缓冲区(
current
这里)像这样构建dictionnay:我想剩下的对你没问题吧
我有一个处理FASTA序列的小函数。它读取一个文件并输出一个序列的dict。它还处理空行和跨越多行的序列
您只需要调整
_id = line.strip()[1:]
以丢弃不需要的id行部分。我想_id = line.strip()[1:].split()[0]
就足够了相关问题 更多 >
编程相关推荐