частота букв в столбце python

Я хочу рассчитать частоту появления каждой буквы во всех столбцах: например, у меня есть три последовательности:

seq1=AATC seq2=GCCT seq3=ATCA 

здесь мы имеем: в первом столбце частота «A» равна 2, «G» равно 1. для второго столбца: частота «A» равна 1, «C» равна 1, а «T» равно 1. (то же самое в остальной части столбца), сначала я пытаюсь выполнить код вычисления частоты. :

например:

 s='AATC' dic={} for x in s: dic[x]=s.count(x) 

это дает: {'A':2,'T':1,'C':1} теперь, я хочу применить это для столбцов. Для этого я использую эту инструкцию:

 f=list(zip(seq1,seq2,seq3)) 

дает:

 [('A', 'G', 'A'), ('A', 'C', 'T'), ('T', 'C', 'C'), ('C', 'T', 'A')] 

Итак, здесь, я вычисляю частоту букв в (): Как я могу это сделать?

если я работаю над файлом последовательностей, как я могу использовать этот код, чтобы применить его к последовательностям файла? например, мой файл содержит 100 последовательностей каждый раз, когда я беру три последовательности и применяю этот код.

  • Примеры setup.py?
  • Python. Является ли словарь медленным, чтобы найти частоту каждого символа?
  • Как печатать частоты в порядке убывания?
  • 2 Solutions collect form web for “частота букв в столбце python”

    Как и мой ответ на ваш последний вопрос, вы должны обернуть свою функциональность функцией:

     def lettercount(pos): return {c: pos.count(c) for c in pos} 

    Затем вы можете легко применить его к кортежам из zip :

     counts = [lettercount(t) for t in zip(seq1, seq2, seq3)] 

    Или объедините его в существующий цикл:

     ... counts = [] for position in zip(seq1, seq2, seq3): # sets at same position counts.append(lettercount(position)) for pair in combinations(position, 2): # pairs within set ... 

    Вот:

     sequences = ['AATC', 'GCCT', 'ATCA'] f = zip(*sequences) counts = [{letter: column.count(letter) for letter in column} for column in f] print(counts) 

    Выход (переформатированный):

     [{'A': 2, 'G': 1}, {'A': 1, 'C': 1, 'T': 1}, {'C': 2, 'T': 1}, {'A': 1, 'C': 1, 'T': 1}] 

    Характерные особенности:

    • Вместо того, чтобы явно называть seq1 , seq2 и т. Д., Мы помещаем их в список.
    • Мы распаковываем список с помощью оператора * .
    • Мы используем понимание выражений внутри понимания списка, чтобы генерировать подсчеты для каждой буквы в каждом столбце. Это в основном то, что вы делали для случая с одной последовательностью, но более читаемым (IMO).
    Python - лучший язык программирования в мире.