Python最小倾斜函数

2024-09-26 21:45:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码来查找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 6个 谁能帮我一把吗?在


Tags: 代码inforgenomelenreturnifdef
1条回答
网友
1楼 · 发布于 2024-09-26 21:45:57

有更简单的方法来计算倾斜。以下是一种方法:

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']

你的解决方案也很好,你只需要修复压痕:

^{pr2}$

这将返回[2, 6]

相关问题 更多 >

    热门问题