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

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

seq1=AATC seq2=GCCT seq3=ATCA 

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

  • Нос не может найти тесты в ubuntu
  • Сканирование сканирования из скрипта всегда блокирует выполнение скрипта после очистки
  • есть метод сглаживания для python PIL
  • как открыть URL-адрес в python
  • Как полиморфизм работает в Python?
  • Диапазон слишком большой Python
  • например:

     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 последовательностей каждый раз, когда я беру три последовательности и применяю этот код.

  • Python - фиксированный показатель в научной нотации?
  • Как установить рабочий каталог для задачи Fabric?
  • Почему методы не имеют ссылочного равенства?
  • Невозможно определить гласные из согласных
  • пароль ткани
  • Команда запуска Python Fabric возвращает «binascii.Error: неправильное заполнение»
  • 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 - лучший язык программирования в мире.