首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python最小偏斜函数

Python最小偏斜函数
EN

Stack Overflow用户
提问于 2016-10-12 10:44:40
回答 1查看 2.1K关注 0票数 0

我使用以下代码查找MinimumSkew:

代码语言:javascript
复制
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谁能帮我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 12:10:20

有很多更容易的解决方案来计算斜率。以下是一种方法:

代码语言:javascript
复制
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']

而且您的解决方案也很好,您只需修复缩进:

代码语言:javascript
复制
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]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39996632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档