我有两个长度不同的列表,我想根据它们的实际关系来匹配它们。一个列表是二级结构元素,另一个列表是对齐序列。我想将二级结构与其其他列表中的残基进行匹配。并通过在对齐序列的间隙中插入“-”来调整二级结构的长度。 ss中的项目对应于seq中的RRCAVVTG。
ss=['-', '-', 'E', 'E', 'E', 'E', 'S', 'S']
seq≈["---------------RRCAVVTG"]
for m in seq:
found=[i for i in list(m)]
sscount=0
sscount1=0
for char,ssi in zip(found,ss):
if char!='-' :
print char , sscount, ssi
sscount+=1
else:
print char, sscount1, '#'
sscount1+=1
预期结果:
---------------##EEEESS
---------------RRCAVVTG
但是我得到以下结果:
- 0 #
- 1 #
- 2 #
- 3 #
- 4 #
- 5 #
- 6 #
- 7 #
答案 0 :(得分:0)
我希望我理解正确的问题。首先我们用ss
填充字符串-
,然后使用seq
将其与zip()
中的字符串进行比较:
ss = ['-', '-', 'E', 'E', 'E', 'E', 'S', 'S']
seq = ["---------------RRCAVVTG"]
out = ''
for ch1, ch2 in zip('{:->{}}'.format(''.join(ss), len(seq[0])), seq[0]):
if ch1=='-' and ch2 !='-':
out += '#'
elif ch1=='-' and ch2 == '-':
out += '-'
else:
out += ch1
print(out)
print(seq[0])
打印:
---------------##EEEESS
---------------RRCAVVTG
答案 1 :(得分:0)
for m in seq:
found=[i for i in list(m)]
sscount=0
sscount1=0
num=0
for char,ssi in zip(found,itertools.cycle(ss)):
if char!='-' :
print char , sscount, ss[num]
d.append(ss[num])
num+=1
sscount+=1
else:
print char, sscount1, '#'
sscount1+=1