Использование Python для создания случайного генома человека

Мне нужна помощь в создании программы, которая создает текстовый файл со случайно упорядоченным геномом, в котором используются буквы «A», «C», «T» и «G». Конечная цель состоит в том, чтобы создать около миллиона случайно секвенированных геномов, а затем использовать другую программу для поиска в них известных закономерностей, которые приводят к конкретным заболеваниям. Затем я собирал статистику из своего кода на Python и сравнивал ее с реальными.


person Philip Estes    schedule 03.04.2018    source источник
comment
Это обман: stackoverflow.com/q/30205962/2988730   -  person Mad Physicist    schedule 03.04.2018
comment
Вы не только ничего не пробовали, но даже не удосужились сначала погуглить.   -  person Mad Physicist    schedule 03.04.2018


Ответы (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.

person sacuL    schedule 03.04.2018
comment
Вам действительно не нужно numpy для этого. - person jhpratt; 03.04.2018
comment
Я полагаю, что нет, вы могли бы использовать random, но я не вижу проблемы с использованием numpy (и я полагаю, что это быстрее). О чем ты думал? - person sacuL; 03.04.2018
comment
@jhpratt. Вам действительно не нужно numpy ни для чего. Если на то пошло, то вам вообще не нужны компьютеры. Но иногда это действительно удобно, и стоит потратить время на дополнительный импорт. - person Mad Physicist; 03.04.2018
comment
При этом, если вы собираетесь использовать numpy, убедитесь, что вы создаете массив одного типа char ascii - person Mad Physicist; 03.04.2018