Я пишу программу для определения процента каждой аминокислоты в данной последовательности. Я пытался сделать его полезным для любой последовательности, заставив его выводить как процент каждой аминокислоты, так и рассказывая мне, какие аминокислоты из словаря отсутствуют. У меня здесь некоторые трудности, и я бы очень признателен за некоторые рекомендации.Проблемы с вычислением частоты аминокислот
Так что больше проработки я пытаюсь сделать так, чтобы на выходе показывался процент каждой аминокислоты в предоставленной строке, включая те, которые не находятся в строке.
Вот мой текущий код:
protein = """MKLFWLLFTIGFCWAQYSSNTQQGRTSIVHLFEWRWVDIALECERYLAPKGFGGVQVSPPNENVAIHNPFRPWWERYQPVSYKLCTRSGNEDEFRNMVTRCNNVGVRIYVDAVINHMCGNAVSAGTSSTCGSYFNPGSRDFPAVPYSGWDFNDGKCKTGSGDIENYNDATQVRDCRLSGLLDLALGKDYVRSKIAEYMNHLIDIGVAGFRIDASKHMWPGDIKAILDKLHNLNSNWFPEGSKPFIYQEVIDLGGEPIKSSDYFGNGRVTEFKYGAKLGTVIRKWNGEKMSYLKNWGEGWGFMPSDRALVFVDNHDNQRGHGAGGASILTFWDARLYKMAVGFMLAHPYGFTRVMSSYRWPRYFENGKDVNDWVGPPNDNGVTKEVTINPDTTCGNDWVCEHRWRQIRNMVNFRNVVDGQPFTNWYDNGSNQVAFGRGNRGFIVFNNDDWTFSLTLQTGLPAGTYCDVISGDKINGNCTGIKIYVSDDGKAHFSISNSAEDPFIAIHAESKL""" #exchange sequence for unique analysis
amino_acid = ['C', 'D', 'S', 'Q', 'K', 'P', 'T', 'F', 'A', 'X', 'G', 'I', 'E', 'L', 'H', 'R', 'W', 'M', 'N', 'Y', 'V']
for a in amino_acid:
if a in protein:
print "Percentage of" + amino_acid[a] + "is" + ((protein.count(a)) * 100/len(protein))
else:
print amino_acid[a] + "is not in sequence"
Это то, что я делал раньше, который работал, но не показал бы аминокислоты, которые не появляются на всех (0%)
from collections import Counter
sequence = "MKLFWLLFTIGFCWAQYSSNTQQGRTSIVHLFEWRWVDIALECERYLAPKGFGGVQVSPPNENVAIHNPFRPWWERYQPVSYKLCTRSGNEDEFRNMVTRCNNVGVRIYVDAVINHMCGNAVSAGTSSTCGSYFNPGSRDFPAVPYSGWDFNDGKCKTGSGDIENYNDATQVRDCRLSGLLDLALGKDYVRSKIAEYMNHLIDIGVAGFRIDASKHMWPGDIKAILDKLHNLNSNWFPEGSKPFIYQEVIDLGGEPIKSSDYFGNGRVTEFKYGAKLGTVIRKWNGEKMSYLKNWGEGWGFMPSDRALVFVDNHDNQRGHGAGGASILTFWDARLYKMAVGFMLAHPYGFTRVMSSYRWPRYFENGKDVNDWVGPPNDNGVTKEVTINPDTTCGNDWVCEHRWRQIRNMVNFRNVVDGQPFTNWYDNGSNQVAFGRGNRGFIVFNNDDWTFSLTLQTGLPAGTYCDVISGDKINGNCTGIKIYVSDDGKAHFSISNSAEDPFIAIHAESKL" #exchange sequence for unique analysis
counts = Counter(sequence)
length = len(sequence)
dictionary = dict(counts)
amino_acids = list(dictionary)
freq = dictionary.values()
percentage = []
for item in freq:
percentage.append(((item)/float(length))*100)
print "The percentage of each amino acid in the provided sequence are shown below:"
print str(zip(amino_acids, percentage))
Не могли бы вы предложить более полезное описание проблемы, чем * «не работает» *? – jonrsharpe
Вы должны использовать 'amino_acid [a]', просто используйте 'a'. Цикл 'for' выполняет итерацию по значениям массива, поэтому' a' будет '' C'', '' D'', ... – Jasper
да, «не работает» не так грандиозно ... дайте нам показан пример вывода, включая любые сообщения об ошибках, а также то, что вы ожидали от вывода. (отредактируйте свой вопрос и добавьте его там, не просто скажите нам в комментариях) –