这会很长,但我不知道如何有效地解释这一点。
所以我有 2 个正在读取的文件。第一个文件有一个字符列表。第二个文件是 3 个字符的列表,然后是匹配的标识符字符(由制表符分隔)。
使用第二个文件,我制作了一个字典,其中 3 个字符作为项目,一个字符作为对应的键。我需要做的是从第一个列表中一次取 3 个字符并将其与字典进行比较。如果有匹配项,我需要获取相应的键并将其附加到我将打印出来的新列表中。如果匹配是“*”字符,我需要停止不继续将列表与字典进行比较。
我在比较时遇到问题,然后使用 append 函数制作新列表。
这是第一个输入文件的一部分:
Seq0
ATGGAAGCGAGGATGtGa
这是第二部分:
AUU I
AUC I
AUA I
CUU L
GUU V
UGA *
到目前为止,这是我的代码:
input = open("input.fasta", "r")
codons = open("codons.txt", "r")
counts = 1
amino_acids = {}
for lines in codons:
lines = lines.strip()
codon, acid = lines.split("\t")
amino_acids[codon] = acid
counts += 1
count = 1
for line in input:
if count%2 == 0:
line = line.upper()
line = line.strip()
line = line.replace(" ", "")
line = line.replace("T", "U")
import re
if not re.match("^[AUCG]*$", line):
print "Error!"
if re.match("^[AUCG]*$", line):
mrna = len(line)/3
first = 0
last = 3
while mrna != 0:
codon = line[first:last]
first += 3
last += 3
mrna -= 1
list = []
if codon == amino_acids[codon]:
list.append(acid)
if acid == "*":
mrna = 0
for acid in list:
print acid
所以我希望我的输出看起来像这样:
M L I V *
但我还没有接近这一点。请帮忙!