如何从蛋白质序列的fasta文件中生成片段?例如,我想以这种方式生成5mer片段:
初始序列:
>gi|48255
MSSPPPARSGFYRQEVTKTAWEVRAVYRDLQ
片段:
1
MSSPP PARSG FYRQE VTKTA WEVRA VYRDL Q
2
SSPPP ARSGF YRQEV TKTAW EVRAV YRDLQ
3
SPPPA RSGFY RQEVT KTAWE VRAVY RDLQ
4
PPPAR SGFYR QEVTK TAWEV RAVYR DLQ
5
PPARS GFYRQ EVTKT AWEVR AVYRD LQ
等等。
在每个周期中,它会将序列减少一个。
答案 0 :(得分:1)
创建generator function,使得给定字符串的slices越来越小。
def shrink(s):
for i in range(len(s)):
yield s[i:]
创建一个将字符串拆分为五个字符段列表的函数。
def split_into_five_character_segments(s):
ret = []
while len(s) > 5:
ret.append(s[:5])
s = s[5:]
ret.append(s)
return ret
将两者合并在list comprehension中以生成片段库。
sequence = "MSSPPPARSGFYRQEVTKTAWEVRAVYRDLQ"
fragments = [split_into_five_character_segments(s) for s in shrink(sequence)]
Enumerate通过每个片段。使用join
将片段的各个部分组合成一个以空格分隔的字符串。
for idx, fragment in enumerate(fragments):
fragment_number = idx + 1
indent = " " * idx
print indent + str(fragment_number)
print indent + " ".join(fragment)
结果:
1
MSSPP PARSG FYRQE VTKTA WEVRA VYRDL Q
2
SSPPP ARSGF YRQEV TKTAW EVRAV YRDLQ
3
SPPPA RSGFY RQEVT KTAWE VRAVY RDLQ
4
PPPAR SGFYR QEVTK TAWEV RAVYR DLQ
5
PPARS GFYRQ EVTKT AWEVR AVYRD LQ
6
PARSG FYRQE VTKTA WEVRA VYRDL Q
7
ARSGF YRQEV TKTAW EVRAV YRDLQ
8
RSGFY RQEVT KTAWE VRAVY RDLQ
9
SGFYR QEVTK TAWEV RAVYR DLQ
10
GFYRQ EVTKT AWEVR AVYRD LQ
11
FYRQE VTKTA WEVRA VYRDL Q
12
YRQEV TKTAW EVRAV YRDLQ
13
RQEVT KTAWE VRAVY RDLQ
14
QEVTK TAWEV RAVYR DLQ
15
EVTKT AWEVR AVYRD LQ
16
VTKTA WEVRA VYRDL Q
17
TKTAW EVRAV YRDLQ
18
KTAWE VRAVY RDLQ
19
TAWEV RAVYR DLQ
20
AWEVR AVYRD LQ
21
WEVRA VYRDL Q
22
EVRAV YRDLQ
23
VRAVY RDLQ
24
RAVYR DLQ
25
AVYRD LQ
26
VYRDL Q
27
YRDLQ
28
RDLQ
29
DLQ
30
LQ
31
Q
答案 1 :(得分:0)
我猜你可以用更简单的方法来做到这一点:
fasta_string = 'MSSPPPARSGFYRQEVTKTAWEVRAVYRDLQ'
string_list = list(fasta_string)
temp1 = []
temp2 = []
for i in range(len(fasta_string)):
temp1.append(' '*i)
temp2.append(''.join(string_list[i:len(string_list)]))
print temp1[i] + str(i+1)
print temp1[i] + ' ' + temp2[i]
1
MSSPPPARSGFYRQEVTKTAWEVRAVYRDLQ
2
SSPPPARSGFYRQEVTKTAWEVRAVYRDLQ
3
SPPPARSGFYRQEVTKTAWEVRAVYRDLQ
4
PPPARSGFYRQEVTKTAWEVRAVYRDLQ
5
PPARSGFYRQEVTKTAWEVRAVYRDLQ
6
PARSGFYRQEVTKTAWEVRAVYRDLQ
7
ARSGFYRQEVTKTAWEVRAVYRDLQ
8
RSGFYRQEVTKTAWEVRAVYRDLQ
9
SGFYRQEVTKTAWEVRAVYRDLQ
10
GFYRQEVTKTAWEVRAVYRDLQ
11
FYRQEVTKTAWEVRAVYRDLQ
12
YRQEVTKTAWEVRAVYRDLQ
13
RQEVTKTAWEVRAVYRDLQ
14
QEVTKTAWEVRAVYRDLQ
15
EVTKTAWEVRAVYRDLQ
16
VTKTAWEVRAVYRDLQ
17
TKTAWEVRAVYRDLQ
18
KTAWEVRAVYRDLQ
19
TAWEVRAVYRDLQ
20
AWEVRAVYRDLQ
21
WEVRAVYRDLQ
22
EVRAVYRDLQ
23
VRAVYRDLQ
24
RAVYRDLQ
25
AVYRDLQ
26
VYRDLQ
27
YRDLQ
28
RDLQ
29
DLQ
30
LQ
31
Q