我使用以下代码查找MinimumSkew:
genome = "TAAAGACTGCCGAGAGGCCAACACGAGTGCTAGAACGAGGGGCGTAAACGCGGGTCCGAT"
def Skew(genome):
Skew = {}
Skew[0] = 0
for i in range(1, len(genome)+1):
if genome[i - 1] == "G":
Skew[i] = Skew[i - 1] + 1
elif genome[i - 1] == "C":
Skew[i] = Skew[i - 1] - 1
else:
Skew[i] = Skew[i-1]
return Skew
Skew(genome)
def MinimumSkew(genome):
positions = [] # output variable
s = Skew(genome)
m = min(s.values())
for (k,v) in s.items():
if v == m:
positions.append(k)
return positions
print(MinimumSkew(genome))我一直收到错误:失败的测试#5。您的代码没有找到所有最小的倾斜索引。
测试数据集: CCGGCCGG
你的产出: 11 2
正确的输出:2.6谁能帮我做错了什么吗?
发布于 2016-10-12 12:10:20
有很多更容易的解决方案来计算斜率。以下是一种方法:
def skew(genome):
res = []
cntr = 0
res.append(cntr)
for i in genome:
if i == 'C':
cntr -= 1
if i == "G":
cntr += 1
res.append(cntr)
return [str(i) for i, j in enumerate(res) if j == min(res)]
print(skew('CCGGCCGG')) # returns ['2', '6']而且您的解决方案也很好,您只需修复缩进:
genome = "CCGGCCGG"
def Skew(genome):
Skew = {}
Skew[0] = 0
for i in range(1, len(genome)+1):
if genome[i - 1] == "G":
Skew[i] = Skew[i - 1] + 1
elif genome[i - 1] == "C":
Skew[i] = Skew[i - 1] - 1
else:
Skew[i] = Skew[i-1]
return Skew
def MinimumSkew(genome):
positions = [] # output variable
s = Skew(genome)
m = min(s.values())
for (k,v) in s.items():
if v == m:
positions.append(k)
return positions
print(MinimumSkew(genome))这将返回[2, 6]
https://stackoverflow.com/questions/39996632
复制相似问题