我有两个不同长度的列表,我想根据它们的实际关系匹配项目。一个列表是二级结构元素,另一个列表是对齐序列。我想将二级结构与它在另一个列表中的残基进行匹配。并通过在比对序列中的间隙长度上插入'-‘来调整二级结构的长度。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 #发布于 2019-07-16 20:09:30
我希望我正确理解了这个问题。首先,我们用-填充字符串ss,然后使用zip()将其与seq中的字符串进行比较
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发布于 2019-07-17 17:45:05
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+=1https://stackoverflow.com/questions/57054593
复制相似问题