str.maketrans在交互式python中可用,但不是python脚本?

时间:2015-05-06 00:24:57

标签: python python-3.x bioinformatics python-3.3 biopython

我正在编写的代码应该在DNA的正向和反向互补链上找到基因序列的所有开放阅读框(orfs)。为了制作DNA的反向链,我打算使用str.maketrans()将互补碱基相互映射。

#!/usr/bin/env python3.3

import re
import sys
from argparse import ArgumentParser

pattern = re.compile(r'(?=(ATG(?:...)*?)(?=TAG|TGA|TAA))')

dna_seq = 'ATGACGGCTTGTTTCTTTTCTGTGGCTGCGTGA'

    def find_orfs(dna_seq):
        """
        finds all possible open reading frames (orfs)

        :param dna_seq: str, dna sequence
        :return: list, possible open reading frames
        """

        r_comp = dna_seq[::-1].translate(str.maketrans("ATGC","TACG"))
        return list(pattern.findall(dna) + pattern.findall(r_comp))

当我在翻译中运行它时,它有效!它返回正确答案:

['ATGACGGCTTGTTTCTTTTCTGTGGCTGCG']

当我将其作为脚本(版本3.3)运行时,我得到了AttributeError!

AttributeError: type object 'str' has no attribute 'maketrans'

但是当我在解释器(版本3.3)中dir(str)时,我看到了maketrans!什么给了!?

在阅读有关bytes.maketrans()的更改后,我尝试了这一点无济于事。如何在python3.3中获得maketrans()的相同功能?

1 个答案:

答案 0 :(得分:1)

似乎你的shebang行返回了一个2.7.x版本的python解释器。您可以使用// Load original image as grey scale Mat image = imread("imagename.png", IMREAD_GRAYSCALE); vector<vector<Point>> contours; Mat hierarchy; findContours(image, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); 指定直接路径(更改路径以适应解释器的位置),以便在您不担心可移植性(允许其他用户使用您的文件)时使其工作。有关#!/usr/local/bin/python3.3#!/usr/bin/env python之间差异的帖子,您可以look here。基本上,前者将使用首先出现在环境#!/usr/local/bin/python上的解释器,在您的情况下为$PATH

修改

OP使用shell运行脚本,并使用以下命令:python2.7。这使用默认解释器(在它们的情况下为2.7),它不识别maketrans方法。使用python myscript.py运行脚本解决了问题。