Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在dna序列中进行反向恭维的函数_Python_Regex_Algorithm_Function - Fatal编程技术网

Python 在dna序列中进行反向恭维的函数

Python 在dna序列中进行反向恭维的函数,python,regex,algorithm,function,Python,Regex,Algorithm,Function,我试图使一个函数在我已经拥有的程序中运行。我在dna序列中做相反的恭维。这是我目前拥有的 for line in infile: line = line.strip() if line[0] == '>': outfile.write(line+'\n') else: line = line.upper().replace(' ','') if re.search('[^ACTG]', line

我试图使一个函数在我已经拥有的程序中运行。我在dna序列中做相反的恭维。这是我目前拥有的

for line in infile:
    line = line.strip()
    if line[0] == '>':
            outfile.write(line+'\n')
    else:
            line = line.upper().replace(' ','')
            if re.search('[^ACTG]', line) is None:
                    line = re.sub('A', 'F', line)
                    line = re.sub('T', 'A', line)
                    line = re.sub('F', 'T', line)
                    line = re.sub('G', 'Y', line)
                    line = re.sub('C', 'G', line)
                    line = re.sub('Y', 'C', line)
                    line = line[::-1]
                    outfile.write(line+'\n')
            else:
                    outfile.write('ERROR'+'\n')
如何使用以下格式将函数添加到此程序中

def codon(infile):
      for line in infile:
return something

这可能很简单,我是新手。谢谢。

代码没有返回任何内容,它只写入输出文件,因此您可以执行以下操作:

def codon(infile):
    for line in infile:
        line = line.strip()
        if line[0] == '>':
                outfile.write(line+'\n')
        else:
                line = line.upper().replace(' ','')
                if re.search('[^ACTG]', line) is None:
                        line = re.sub('A', 'F', line)
                        line = re.sub('T', 'A', line)
                        line = re.sub('F', 'T', line)
                        line = re.sub('G', 'Y', line)
                        line = re.sub('C', 'G', line)
                        line = re.sub('Y', 'C', line)
                        line = line[::-1]
                        outfile.write(line+'\n')
                else:
                        outfile.write('ERROR'+'\n')
    return
甚至删除return语句


希望这能有所帮助。

代码没有返回任何内容,它只写入输出文件,因此您可以执行以下操作:

def codon(infile):
    for line in infile:
        line = line.strip()
        if line[0] == '>':
                outfile.write(line+'\n')
        else:
                line = line.upper().replace(' ','')
                if re.search('[^ACTG]', line) is None:
                        line = re.sub('A', 'F', line)
                        line = re.sub('T', 'A', line)
                        line = re.sub('F', 'T', line)
                        line = re.sub('G', 'Y', line)
                        line = re.sub('C', 'G', line)
                        line = re.sub('Y', 'C', line)
                        line = line[::-1]
                        outfile.write(line+'\n')
                else:
                        outfile.write('ERROR'+'\n')
    return
甚至删除return语句


希望这能有所帮助。

不确定使用此功能返回时的想法。您可以返回一个表示序列完全相反的补充的列表(除了写“outfile”),但是如果您不想这样做,那么您可能不需要返回任何内容

无论哪种方式,它都会像这样:

def codon(infile, outfile):
    for line in infile:
        # the rest of your code goes here.
    return something # Remember to indent your return statement.

不确定使用此函数返回时的想法。您可以返回一个表示序列完全相反的补充的列表(除了写“outfile”),但是如果您不想这样做,那么您可能不需要返回任何内容

无论哪种方式,它都会像这样:

def codon(infile, outfile):
    for line in infile:
        # the rest of your code goes here.
    return something # Remember to indent your return statement.

与其将其写入文件,不如将其保存在数组中,然后按自己喜欢的方式写入

假设文件不是非常大


与其将其写入文件,不如将其保存在数组中,然后按自己喜欢的方式写入

假设文件不是非常大


要将当前代码转换为返回结果的函数(除了写入文件),可以使用以下命令:

def codon(infile):
    all_lines = []
    for line in infile:
        line = line.strip()
        if line[0] == '>':
                pass
        else:
                line = line.upper().replace(' ','')
                if re.search('[^ACTG]', line) is None:
                        line = re.sub('A', 'F', line)
                        line = re.sub('T', 'A', line)
                        line = re.sub('F', 'T', line)
                        line = re.sub('G', 'Y', line)
                        line = re.sub('C', 'G', line)
                        line = re.sub('Y', 'C', line)
                        line = line[::-1]
                else:
                        line = 'ERROR'
         all_lines.append(line)
         outfile.write(line + '\n')
    return all_lines
这将给你一个列表,列出所有处理后的行,以及写出来。 我也调整了结构,只在你的逻辑末尾写出来。由于您可能不希望在结果中包含
'\n'
,因此我仅在使用
outfile
输出时将其添加到最后。但是,在将该行附加到
所有行
列表时,您可能不需要
'\n'

pass
行只是告诉python在这种情况下您不想做任何有趣的事情。您可以取消测试,只处理
else
子句a la中的内容:

def codon(infile):
    for line in infile:
        line = line.strip()
        if line[0] != '>':
                line = line.upper().replace(' ', '')
                ...

要将当前代码转换为返回结果的函数(除了写入文件),可以使用以下命令:

def codon(infile):
    all_lines = []
    for line in infile:
        line = line.strip()
        if line[0] == '>':
                pass
        else:
                line = line.upper().replace(' ','')
                if re.search('[^ACTG]', line) is None:
                        line = re.sub('A', 'F', line)
                        line = re.sub('T', 'A', line)
                        line = re.sub('F', 'T', line)
                        line = re.sub('G', 'Y', line)
                        line = re.sub('C', 'G', line)
                        line = re.sub('Y', 'C', line)
                        line = line[::-1]
                else:
                        line = 'ERROR'
         all_lines.append(line)
         outfile.write(line + '\n')
    return all_lines
这将给你一个列表,列出所有处理后的行,以及写出来。 我也调整了结构,只在你的逻辑末尾写出来。由于您可能不希望在结果中包含
'\n'
,因此我仅在使用
outfile
输出时将其添加到最后。但是,在将该行附加到
所有行
列表时,您可能不需要
'\n'

pass
行只是告诉python在这种情况下您不想做任何有趣的事情。您可以取消测试,只处理
else
子句a la中的内容:

def codon(infile):
    for line in infile:
        line = line.strip()
        if line[0] != '>':
                line = line.upper().replace(' ', '')
                ...

我不确定我是否理解你所说的“我如何才能使用类似的格式将函数添加到这个程序中”是什么意思。是否要将上面的代码转换为函数?是否要添加其他函数?您是否正在使用指定的代码并收到错误(因为最后一部分有空格问题)?您应该使用
string.translate
,而不是那样。。有趣的
re
解决方案。我的程序功能齐全。我需要这个程序做和现在一样的事情,我只是需要在里面有一个函数。我不确定我是否理解你所说的“我怎样才能用这样的格式在这个程序中添加一个函数”。是否要将上面的代码转换为函数?是否要添加其他函数?您是否正在使用指定的代码并收到错误(因为最后一部分有空格问题)?您应该使用
string.translate
,而不是那样。。有趣的
re
解决方案。我的程序功能齐全。我需要这个程序做和现在一样的事情,我只需要在里面有一个函数。