使用函数解释外部txt fi

2024-10-03 19:29:26 发布

您现在位置:Python中文网/ 问答频道 /正文

使用一个已建立的函数,我需要调用它来解释一个外部txt文件,并将氨基酸代码输出到控制台

翻译功能解释输入的DNA

txtTranslate应该解释txt文件的DNA

External file contains: ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGA GGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC AGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATG CTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGC TCACCTGGACAACCTCAAGGGCACCTTTGCCACACTGAGTGAGCTGCACTGTGACAAGCTGCACGTGGAT CCTGAGAACTTCAGGCTCCTGGGCAACGTGCTGGTCTGTGTGCTGGCCCATCACTTTGGCAAAGAATTCA CCCCACCAGTGCAGGCTGCCTATCAGAAAGTGGTGGCTGGTGTGGCTAATGCCCTGGCCCACAAGTATCA CTAAGCTCGCTTTCTTGCTGTCCAATTTCTATTAAAGGTTCCTTTGTTCCCTAAGTCCAACTACTAAACT GGGGGATATTATGAAGGGCCTTGAGCATCTGGATTCTGCCTAATAAAAAACATTTATTTTCATTGC

dna_ = input("Enter the DNA sequence to translate: ")
def translate():
  translate()
for i in range(0,len(dna_),3):
    dna = dna_[i:i+3]
    if dna == "ATA" or dna == "ATC" or dna == "ATT":
      print ("I")
    elif dna == "CTA" or dna == "CTC" or dna == "CTG" or dna == "CTT" or dna == "TAA" or dna =="TTG":
      print ("L")
    elif dna == "GTA" or dna == "GTC" or dna == "GTG" or dna == "GTT":
      print ("V")
    elif dna == "TTC" or dna == "TTT":
      print ("F")
    elif dna == "ATG":
      print ("M")
    else:
      print ("X")

def txtTranslate():
  translate()
  with open("normalDNA.txt", "r") as f:
    normalDNAoutput = f.readlines(translate)
    print (f.read())
  return (normalDNAoutput)

我想它输出解释的代码,但它没有给什么


Tags: or文件函数代码功能txtdefexternal
2条回答

翻译DNA的首选方法是使用翻译表,即词典codon:aminoacid pairs.

下面是一个例子:

def translate(seq, table):
    result=''
    for i in range(0,len(seq),3):
        codon = seq[i:i+3].upper()
        if codon in table:
            result += table[codon]
        else:
            result += 'X'
    return result

s = 'ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGAGGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGCAGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATGCTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGC'
table = {"ATA":"I", "ATC":"I", "ATT":"I", "CTA":"I",
         "CTC":"L", "CTG":"L", "CTT":"L", "TAA":"L", "TTG":"L",
         "GTA":"V", "GTC":"V", "GTG":"V", "GTT":"V",
         "TTC":"F", "TTT":"F",
         "ATG":"M"}

translate(s,table)

输出:

'XFXXXXXVFXXXLXXXXXXIXLLXXXLXXLXXXXXXXXMXLVVXXXXXXXXXXLXXXXXLXXLXIXXLLMLXXXXIXXXLMXXXXXVXXVMXXX'

外部文本文件:

ACATTTGCTTCTGACACAACTGTGTTCACTAGCAACCTCAAACAGACACCATGGTGCATCTGACTCCTGA
GGAGAAGTCTGCCGTTACTGCCCTGTGGGGCAAGGTGAACGTGGATGAAGTTGGTGGTGAGGCCCTGGGC
AGGCTGCTGGTGGTCTACCCTTGGACCCAGAGGTTCTTTGAGTCCTTTGGGGATCTGTCCACTCCTGATG
CTGTTATGGGCAACCCTAAGGTGAAGGCTCATGGCAAGAAAGTGCTCGGTGCCTTTAGTGATGGCCTGGC

代码如下,看起来更漂亮干净:

def translate(dna_):
    codes = []
    for i in range(0,len(dna_),3):
        dna = dna_[i:i+3]
        if dna == "ATA" or dna == "ATC" or dna == "ATT":
            codes.append("I")
        elif dna == "CTA" or dna == "CTC" or dna == "CTG" or dna == "CTT" or dna == "TAA" or dna =="TTG":
            codes.append('L')

        elif dna == "GTA" or dna == "GTC" or dna == "GTG" or dna == "GTT":
            codes.append('V')
        elif dna == "TTC" or dna == "TTT":
            codes.append('F')
        elif dna == "ATG":
            codes.append('M')
        else:
            codes.append('X')

    print('-'.join(codes))

with open("normalDNA.txt", "r") as f:
    dna_seqs = f.readlines(translate)

for dna_ in dna_seqs:
    translate(dna_)

它应该这样输出:

X-F-X-X-X-X-X-V-F-X-X-X-L-X-X-X-X-X-X-I-X-L-L-X
X-X-V-X-X-X-X-X-V-X-X-X-X-X-X-X-X-X-X-X-X-X-X-X
X-L-L-V-V-X-X-X-X-X-X-F-F-X-X-F-X-X-L-X-X-X-X-X
L-X-X-X-X-L-X-X-X-L-M-X-X-X-X-X-V-X-X-V-M-X-X-X

相关问题 更多 >