首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生物信息学-“全球名称‘开始’没有定义”?

生物信息学-“全球名称‘开始’没有定义”?
EN

Stack Overflow用户
提问于 2018-03-25 07:58:32
回答 1查看 133关注 0票数 1

设计并编写了一个可以检测跨膜区域的程序,称为TMscanner.py。这个程序应该调用您编写的另外两个函数:getProteinRegion应该返回一个10个氨基酸窗口(最初捕获氨基酸1-10,下一个2-20,等等)。TMscanner还应该重复调用第二个函数,称为testForTM,它应该计算并返回这十个非极性氨基酸的十进制分数。非极性氨基酸为A,V,L,I,P,M,F,W

示例:

代码语言:javascript
复制
protein = 'AVLIPMFWGSTNQYDEKRH' #Only the first 9 are nonpolar
results = tmScanner(protein)
print "Results are", results

它应该打印出来:

代码语言:javascript
复制
Results are [.8, .7, .6, .5, .4, .3, .2, .1, 0, 0]

-#测试代码

代码语言:javascript
复制
def getProteinRegion(protein, start):
#return first 10 aa in protein
    return protein[start:start+10]

def testForTM(protein):
#return ratio of nonpolar aa from a sample of first 10; move them up one step and repeat
    nonpolar = 0
    for aa in getProteinRegion(protein, start):
        if aa in ['A', 'V', 'L', 'I', 'P', 'M', 'F', 'W']:
            nonpolar = nonpolar + 1.0
    return nonpolar / 10.0


def tmSCANNER(protein):
#while the tested in testForTM is less than 10, append testforTM function to results; print results
    results = []
    start = 0
    while start <= 10:
        results = results.append(testForTM(protein))
        return results
        start = start + 1

##TESTING

#print getProteinRegion('AVLIPMFWGSTCNQYDEKRH')
#print testForTM('AVLIPMFW')
print tmSCANNER('AVLIPMFWGSTCNQYDEKRH')

--

代码语言:javascript
复制
Traceback (most recent call last):
  File "TMscanner.py", line 29, in <module>
    print tmSCANNER('AVLIPMFWGSTCNQYDEKRH')
  File "TMscanner.py", line 21, in tmSCANNER
    results = results.append(testForTM(protein))
  File "TMscanner.py", line 10, in testForTM
    for aa in getProteinRegion(protein, start):
NameError: global name 'start' is not defined
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-25 08:07:22

函数testForTM不接受start参数,不声明名为start的局部变量,但它调用getProteinRegion(protein, start)。因此,Python假定您必须使用全局-但您也没有这个名称的全局。所以它引发了一个例外。

您可能想要添加start作为参数:

代码语言:javascript
复制
def testForTM(protein, start):

然后,在tmSCANNER内部的调用代码中,您确实有一个名为start的局部变量,这可能是您希望作为start参数传递的值:

代码语言:javascript
复制
results = results.append(testForTM(protein, start))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49473671

复制
相关文章

相似问题

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