Python 在dna序列中进行反向恭维的函数
我试图使一个函数在我已经拥有的程序中运行。我在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
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
解决方案。我的程序功能齐全。我需要这个程序做和现在一样的事情,我只需要在里面有一个函数。