在 python 中的较大序列中随机寻找特定长度的小序列
randomly seek a small sequence of a particular length in a larger sequence in python
我想从一个更大的序列中随机寻找一个长度为4的子序列。
我尝试了以下代码:
import system
import random
X = 'ATGCATGCTAGCTAGTAAACGTACGTACGTACGATGCTAATATAGAGGGGCTTCGTACCCCTGA'
Y = [random.choice(X) for i in range(4)]
print(Y)
但它从 X 中选择了 4 个不同的元素,而不是连续长度为 4 的序列。
与其尝试使用 random.choice
从 X
中选择一个字符,如果您想要连续长度为 4 的序列,请选择 0 和 X
长度之间的索引 - 4 ,并从该索引中取出 4 个元素。例子-
>>> X = 'ATGCATGCTAGCTAGTAAACGTACGTACGTACGATGCTAATATAGAGGGGCTTCGTACCCCTGA'
>>> import random
>>> i = random.randint(0,len(X)-4)
>>> X[i:i+4]
'TGCA'
>>> i
1
您可以随机 select 一个起始索引,然后使用切片提取该子字符串
def random_slice(s, n):
index = random.randint(0, len(s)-n)
return s[index : index + n]
>>> random_slice(X, 4)
'GCTA'
>>> random_slice(X, 4)
'CGTA'
>>> random_slice(X, 4)
'TATA'
>>> random_slice(X, 4)
'AGCT'
我想从一个更大的序列中随机寻找一个长度为4的子序列。
我尝试了以下代码:
import system
import random
X = 'ATGCATGCTAGCTAGTAAACGTACGTACGTACGATGCTAATATAGAGGGGCTTCGTACCCCTGA'
Y = [random.choice(X) for i in range(4)]
print(Y)
但它从 X 中选择了 4 个不同的元素,而不是连续长度为 4 的序列。
与其尝试使用 random.choice
从 X
中选择一个字符,如果您想要连续长度为 4 的序列,请选择 0 和 X
长度之间的索引 - 4 ,并从该索引中取出 4 个元素。例子-
>>> X = 'ATGCATGCTAGCTAGTAAACGTACGTACGTACGATGCTAATATAGAGGGGCTTCGTACCCCTGA'
>>> import random
>>> i = random.randint(0,len(X)-4)
>>> X[i:i+4]
'TGCA'
>>> i
1
您可以随机 select 一个起始索引,然后使用切片提取该子字符串
def random_slice(s, n):
index = random.randint(0, len(s)-n)
return s[index : index + n]
>>> random_slice(X, 4)
'GCTA'
>>> random_slice(X, 4)
'CGTA'
>>> random_slice(X, 4)
'TATA'
>>> random_slice(X, 4)
'AGCT'