将字符串中的字母转换为具有多个输出的不同字母
Convert a letter in string to different letters with multiple output
所以我有一个 DNA 序列
DNA = "TANNNT"
where N = ["A", "G", "C", "T"]
我想要 TAAAAT, TAAAGT, TAAACT, TAAATT.....
等所有可能的输出。
现在我从网上找到了我可以做的排列的解决方案
perms = [''.join(p) for p in permutations(N, 3)]
然后只需将我的 DNA 序列迭代为
TA + perms + T
但我想知道是否有更简单的方法来做到这一点,因为我有更多的 DNA 序列并且需要更多的时间来硬编码。
编辑:
硬代码部分将如我必须声明的那样
N1 = [''.join(p) for p in permutations(N, 1)]
N2 = [''.join(p) for p in permutations(N, 2)]
N3 = [''.join(p) for p in permutations(N, 3)]
然后为 N3 中的 i 做:
key = "TA" + N3[i] + "T"
由于我的序列很长,我不想计算序列中有多少个连续的 N,想看看是否有更好的方法。
您可以使用排列结果来格式化字符串,例如:
代码:
import itertools as it
import re
def convert_sequence(base_string, target_letter, perms):
REGEX = re.compile('(%s+)' % target_letter)
match = REGEX.search(base_string).group(0)
pattern = REGEX.sub('%s', base_string)
return [pattern % ''.join(p) for p in it.permutations(perms, len(match))]
测试代码:
print(convert_sequence('TANNNT', 'N', ['A', 'G', 'C', 'T']))
结果:
['TAAGCT', 'TAAGTT', 'TAACGT', 'TAACTT', 'TAATGT',
'TAATCT', 'TAGACT', 'TAGATT', 'TAGCAT', 'TAGCTT',
'TAGTAT', 'TAGTCT', 'TACAGT', 'TACATT', 'TACGAT',
'TACGTT', 'TACTAT', 'TACTGT', 'TATAGT', 'TATACT',
'TATGAT', 'TATGCT', 'TATCAT', 'TATCGT']
所以我有一个 DNA 序列
DNA = "TANNNT"
where N = ["A", "G", "C", "T"]
我想要 TAAAAT, TAAAGT, TAAACT, TAAATT.....
等所有可能的输出。
现在我从网上找到了我可以做的排列的解决方案
perms = [''.join(p) for p in permutations(N, 3)]
然后只需将我的 DNA 序列迭代为
TA + perms + T
但我想知道是否有更简单的方法来做到这一点,因为我有更多的 DNA 序列并且需要更多的时间来硬编码。
编辑:
硬代码部分将如我必须声明的那样
N1 = [''.join(p) for p in permutations(N, 1)]
N2 = [''.join(p) for p in permutations(N, 2)]
N3 = [''.join(p) for p in permutations(N, 3)]
然后为 N3 中的 i 做:
key = "TA" + N3[i] + "T"
由于我的序列很长,我不想计算序列中有多少个连续的 N,想看看是否有更好的方法。
您可以使用排列结果来格式化字符串,例如:
代码:
import itertools as it
import re
def convert_sequence(base_string, target_letter, perms):
REGEX = re.compile('(%s+)' % target_letter)
match = REGEX.search(base_string).group(0)
pattern = REGEX.sub('%s', base_string)
return [pattern % ''.join(p) for p in it.permutations(perms, len(match))]
测试代码:
print(convert_sequence('TANNNT', 'N', ['A', 'G', 'C', 'T']))
结果:
['TAAGCT', 'TAAGTT', 'TAACGT', 'TAACTT', 'TAATGT',
'TAATCT', 'TAGACT', 'TAGATT', 'TAGCAT', 'TAGCTT',
'TAGTAT', 'TAGTCT', 'TACAGT', 'TACATT', 'TACGAT',
'TACGTT', 'TACTAT', 'TACTGT', 'TATAGT', 'TATACT',
'TATGAT', 'TATGCT', 'TATCAT', 'TATCGT']