Мне нужна помощь в создании программы, которая создает текстовый файл со случайно упорядоченным геномом, в котором используются буквы «A», «C», «T» и «G». Конечная цель состоит в том, чтобы создать около миллиона случайно секвенированных геномов, а затем использовать другую программу для поиска в них известных закономерностей, которые приводят к конкретным заболеваниям. Затем я собирал статистику из своего кода на Python и сравнивал ее с реальными.
Использование Python для создания случайного генома человека
Ответы (1)
Если я правильно понимаю, создать случайный геном человека было бы довольно просто. Следующее будет создавать случайный геном из 10 оснований (просто для примера):
import numpy as np
random_genome = np.random.choice(list('ACTG'), 10)
>>> random_genome
array(['C', 'A', 'C', 'C', 'G', 'C', 'A', 'C', 'C', 'C'],
dtype='<U1')
Вы можете обернуть это в простую функцию, например:
def create_genome(n=1000000):
return np.random.choice(list('ACTG'), n)
Так что вы можете определить, как долго вы хотите, чтобы ваш геном использовал аргумент n
.
Поскольку вы хотите упростить свой код, я рассчитал, что вышеуказанная функция займет примерно 1,2 секунды, чтобы создать 100 случайных геномов по 1 000 000 букв каждый.
РЕДАКТИРОВАТЬ: если вашей целью является запись в файл .txt
, а не работа со случайными геномами в python, может быть лучше сначала соединить ваш геном с одной строкой:
def create_genome(n=1000000):
return ''.join(np.random.choice(list('ACTG'), n))
Таким образом, вы можете легко и быстро записать его в файл:
with open('filename.txt', 'w') as f:
f.write(random_genome)
Создание случайного генома таким образом займет больше времени, но если ваша цель — получить .txt
, лучше сохранить его как np.array
.
random
, но я не вижу проблемы с использованием numpy
(и я полагаю, что это быстрее). О чем ты думал?
- person sacuL; 03.04.2018