Мне дали 10 последовательностей ДНК, каждая из которых состоит из 18 оснований, и меня попросили написать программу, которая вычисляет наиболее часто встречающуюся последовательность (консенсус) среди всех этих последовательностей. Например, допустим, у меня есть "ACTGGA", "ACCAAT", "CTTAGG", "ATGAAG"
Консенсусной последовательностью будет «A (CT) TA (GA) G», потому что в первой базовой позиции каждой последовательности «A» встречается 3/4 раза. Для второй базовой позиции каждой последовательности у меня есть 2 последовательности с «C» и 2 последовательности с буквой «Т». Пока что моя консенсусная последовательность выглядит как A(CT), потому что я установил, что «A» встречается в 75% случаев в позиции 1, а для позиции 2 существует 50-50% вероятность появления «T» или «C» и т. д. Итак, я включу "C" и "T" во вторую позицию моего Консенсуса. Теперь я пытаюсь сделать это на питоне, используя pycharm, хотя я не очень хорошо с ним знаком. Я просто хотел подтолкнуть себя к изучению чего-то нового. Моя проблема в том, что когда я читаю текстовый файл в массив numpy следующим образом:
seq_array = np.asarray(list(map(str.strip, seq)))
В итоге мой массив равен 1d, как (10,) вместо (10,18), поэтому я не могу перебирать каждую строку и столбец, чтобы подсчитать каждый символ. Итак, как мне прочитать файл в размере 2d (10,18)? и вместо повторения каждого seq_array[r][c]
есть ли более быстрый способ добраться до наиболее частой последовательности?
seq
? Список строк? - person Iain Shelvington   schedule 29.12.2019with open("DNAsequences.txt","r") as seq:
. Единственный конфликт, о котором я могу думать, это иметь 2 из 4 оснований в одном и том же положении для 5 и 5 последовательностей соответственно, например, первые 5 последовательностей в положении 1/18 начинаются с A, а другие 5 в положении 1/18 начинаются с C. В в этом случае я хочу, чтобы обе последовательности были как можно более частыми. - person Notoriousphd   schedule 29.12.2019