[英]Function that makes the reverse compliment in a dna sequence
我試圖使一個函數在我已經擁有的程序中運行。 我在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語句。
希望這可以幫助。
不確定使用此功能返回的想法。 您可以返回一個表示該序列完全反向互補的列表(除了編寫“ 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):
outlines = []
... # your stuff
outlines.append(line+'\n')
else:
outlines.append('ERROR'+'\n')
... # more stuff
return outlines
要將當前代碼轉換為返回結果(除了寫出文件)的函數,可以使用以下命令:
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
輸出一起使用時,才在最后添加它。 但是,將行追加到all_lines
列表時,可能不需要'\\n'
。
pass
行僅告訴python在這種情況下您不想做任何有趣的事情。 您可以否定測試,僅處理else
子句中的else
:
def codon(infile):
for line in infile:
line = line.strip()
if line[0] != '>':
line = line.upper().replace(' ', '')
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.