Пандемия вируса короны заставила меня начать

До сих пор я ничего не знал о биоинформатике, кроме области биологии, изучающей генетические коды организмов. Поскольку все мероприятия сейчас остановлены из-за пандемии вируса короны. У меня было время терять. Ну, если вы тратите свое время на обучение, то это не потраченное впустую время, верно? Итак, я узнал о короновирусе. Интернет – оракул информации. Гугл это ключ. Ну, этот новый вирус возник из Уханя, Китай. Он передается от летучих мышей к человеку на рынках диких животных. Это не первый случай, когда какой-либо вирус от другого животного мутировал, чтобы заразить человека. Употребление в пищу диких животных очень популярно в Китае, а также в других странах Юго-Восточной Азии. Существует глобальное движение за закрытие этих рынков диких животных, но они работают через толпу. Таким образом, закрыть их не так просто, даже если Китай запретил их официально. Вы можете посмотреть документальный фильм здесь. Сначала уханьский вирус (сначала они не знали, что это за тип вируса, поэтому они дали название, основанное на местоположении) передавался только от летучих мышей к людям, но вскоре он мутировал, чтобы передаваться от человека к человеку. Ухань закрыли. Китай секвенировал полный геном вируса и отправил его остальному миру для работы над вакциной. Они признали его формой коронавируса, который часто встречается у людей и вызывает сезонный грипп. Но он более смертоносен, чем вирус сезонного гриппа. Если от сезонного гриппа умирает всего 0,1% людей, то этот вирус убивает не менее 1–2% людей.

В этот момент у меня возникло несколько вопросов, которые нужно было решить

  • Что в геноме.
  • Как они секвенировали геном вируса.
  • Откуда они узнали, что он похож на другой коронавирус?
  • Как его анализировать или что он говорит нам о вирусе

Геном и как его секвенировать

Из промежуточной биологии я знал, что у каждого живого организма есть свой генетический материал в клетке, называемый ДНК или иногда РНК. Сегменты ДНК или РНК называются генами, которые регулируют определенные признаки в организмах. А при размножении передается потомству. Вот почему дети получают некоторые черты от своих родителей. Это называется наследственность. и все эти чтения о Менделе и его открытиях с этими растениями гороха. Я знал, что современная наука позволяет секвенировать гены. Был проект на миллиард долларов по секвенированию генома человека. В нашем геноме около 3 миллиардов кодов. Несколькими месяцами ранее бангладешский ученый секвенировал геном джута. И немного информации тут и там. Но ничего конкретного. Теперь пришло время копнуть глубже.

Вы можете получить информацию из некоторых поисковых запросов Google и Википедии. Здесь я буду говорить только о необходимых вещах. Геном любого живого организма (есть спор, жив вирус или нет, можно погуглить) состоит из молекулы, состоящей из четырех нуклеотидов. Это аденин (А), цитозин ©, гуанин (G) и тимин (Т). Иногда тимин заменяют урацилом(U). Эти нуклеотиды соединяются один за другим в длинную цепочку, а у человека ее длина составляет 3 миллиарда. Эта цепочка называется геном. Это видео поможет понять структуру ДНК

Итак, как они упорядочивают эту крошечную серию молекул? Эти два видео описывают процесс, в котором я понял суть. Как секвенировать геном человека и Секвенирование ДНК. Я хотел знать, что происходит в лабораторных условиях. Это видео мне помогло. Ведь процесс секвенирования генома выглядит так.

‘CTGTGGCCCTGATGGTACCCTCTTGAGTGCATTAAAGACCTTCTAGCACGTGCTGGTAAAGCTTCATGC’

Давайте теперь посмотрим на геном уханьского вируса. Вы можете перейти по этой ссылке. Скопируйте геном с сайта банка генов и после некоторой обработки мы получим последовательность, над которой можно работать. Сначала мы скопировали код в этот файл. Я буду использовать процесс Python и анализировать геном. Давайте импортируем и продолжим.

# opening the genome file 
genome = open(“SARS-Cov-2-genome-genebank-MN908947.3.txt”, “r”).read() 
# showing only the first 1000 letter 
print(genome[:1000])

Вывод должен быть таким:

  1 attaaaggtt tataccttcc caggtaacaa accaaccaac 
    tttcgatctc ttgtagatct
 61 gttctctaaa cgaactttaa aatctgtgtg gctgtcactc 
    ggctgcatgc ttagtgcact
121 cacgcagtat aattaataac taattactgt cgttgacagg
    acacgagtaa ctcgtctatc
181 ttctgcaggc tgcttacggt ttcgtccgtg ttgcagccga
    tcatcagcac atctaggttt
241 cgtccgggtg tgaccgaaag gtaagatgga gagccttgtc 
    cctggtttca acgagaaaac
301 acacgtccaa ctcagtttgc ctgttttaca ggttcgcgac 
    gtgctcgtac gtggctttgg
361 agactccgtg gaggaggtct tatcagaggc acgtcaacat 
    cttaaagatg gcacttgtgg
421 cttagtagaa gttgaaaaag gcgttttgcc tcaacttgaa 
    cagccctatg tgttcatcaa
481 acgttcggat gctcgaactg cacctcatgg tcatgttatg 
    gttgagctgg tagcagaact
541 cgaaggcatt cagtacggtc gtagtggtga gacacttggt 
    gtccttgtcc ctcatgtggg
601 cgaaatacca gtggcttacc gcaaggttct tcttcgtaag 
    aacggtaata aaggagctgg
661 tggccatagt tacggcgccg atctaaagtc atttgactta 
    ggcgacgagc ttggcactga
721 tccttatgaa gattttcaag aaaactggaa cactaaacat 
    agcagtggtg ttacccgtga
781 ac

Теперь делаем некоторую очистку строки

# we need to remove the numbers and white spaces between the letters for x in " 0123456789\n":
    genome = genome.replace(x, "")
print(genome[:1000]) 
# the length of the genome
print("\n length of the genome: "+ str(len(genome)))

Который будет печатать

attaaaggtttataccttcccaggtaacaaaccaaccaactttcgatctcttgtagatctgttctctaaacgaactttaaaatctgtgtggctgtcactcggctgcatgcttagtgcactcacgcagtataattaataactaattactgtcgttgacaggacacgagtaactcgtctatcttctgcaggctgcttacggtttcgtccgtgttgcagccgatcatcagcacatctaggtttcgtccgggtgtgaccgaaaggtaagatggagagccttgtccctggtttcaacgagaaaacacacgtccaactcagtttgcctgttttacaggttcgcgacgtgctcgtacgtggctttggagactccgtggaggaggtcttatcagaggcacgtcaacatcttaaagatggcacttgtggcttagtagaagttgaaaaaggcgttttgcctcaacttgaacagccctatgtgttcatcaaacgttcggatgctcgaactgcacctcatggtcatgttatggttgagctggtagcagaactcgaaggcattcagtacggtcgtagtggtgagacacttggtgtccttgtccctcatgtgggcgaaataccagtggcttaccgcaaggttcttcttcgtaagaacggtaataaaggagctggtggccatagttacggcgccgatctaaagtcatttgacttaggcgacgagcttggcactgatccttatgaagattttcaagaaaactggaacactaaacatagcagtggtgttacccgtgaactcatgcgtgagcttaacggaggggcatacactcgctatgtcgataacaacttctgtggccctgatggctaccctcttgagtgcattaaagaccttctagcacgtgctggtaaagcttcatgcactttgtccgaacaactggactttattgacactaagaggggtgtatactgctgccgtgaacatgagcatgaaattgcttggtacacggaacgttct

 length of the genome: 29903

Геном имеет 29903 количество нуклеотидов в последовательности. Вы можете погуглить и сопоставить его с другими источниками.

Теперь посмотрим, есть ли в последовательности генома какие-либо другие буквы, кроме четырех нуклеотидов.

nucleotides = set(genome)
print(nucleotides)
{'a', 'c', 'g', 't'}

На данном этапе я хочу знать некоторые основные статистические данные последовательности. Например, сколько там «А», «Т», «С» и «Г». Их процент.

# Counting each nucleotide in the sequence
# creating a counter dictionary from the nucleotide set
counter = dict.fromkeys(nucleotides, 0)

# counting how many of each nucleotides are there
for i in genome:
    counter[i] = counter[i] +1 

print("Number of each Nucleotides in the sequence: " + str(counter))

# sum of all the nucleotides number is equal to the total number
length = 0
percentage = {}
for i in counter:
    length = length + counter[i]
    percentage[i] = str(round(counter[i]/len(genome)*100, 2))+"%"

    
print("Percentage of each Nucleotides in the sequence: " + str(percentage))
print("sum of all: " + str(length))

Это напечатает:

Number of each Nucleotides in the sequence: {'a': 8954, 'c': 5492, 'g': 5863, 't': 9594}
Percentage of each Nucleotides in the sequence: {'a': '29.94%', 'c': '18.37%', 'g': '19.61%', 't': '32.08%'}
sum of all: 29903

Теперь я не знаю, что еще делать с геномом. Но в процесс получения геномных данных могут быть внесены некоторые улучшения. Здесь я сделал это вручную. Просматривая источники данных, я увидел лишь немногие из них, содержащие данные о геноме. Обычно исследователи различных лабораторий секвенируют геном, а затем отправляют его в какие-то организации, хранящие геномные данные. Они хранят его и делают доступным для других исследователей. В этой статье описывается процесс и организации, занимающиеся хранением геномных данных. В каждом хранилище данных есть свои инструменты для сортировки и поиска этих данных.

Автоматическое получение данных генома

Теперь попробуем автоматизировать процесс получения геномных данных из этих источников данных. Существует хорошая библиотека Python для биоинформатики под названием Biopython. Мы будем использовать его для загрузки данных и выполнения базового анализа, чтобы понять возможности библиотеки.

# importing some utility module
from pprint import pprint as print

# importing the Entrez module from the Biopython library
from Bio import Entrez
# you need to setup email address to the Entreze module
Entrez.email = "[email protected]"

В python есть две вспомогательные функции, помогающие использовать любую библиотеку. Функция dir() используется, чтобы узнать модули и функции внутри любой библиотеки, а функция help() предназначена для того, чтобы узнать аргументы и использование функции. Также в блокноте jupyter есть хак для help(). вам просто нужно поставить «?» отметьте после функции для просмотра справки.

Для получения данных генома из банков генов нам нужно использовать efetch() из модуля Entrez. В качестве аргумента нужной нам функции, к какой базе данных для доступа к какой базе данных нуклеотидов (db=”нуклеотид”), ‘id’ является наиболее важным аргументом. Если вы обратитесь к любым источникам данных в Интернете для получения информации о генах. для каждого генома вы получите инвентарный номер. Этот инвентарный номер является идентификатором в функции efecth. В нашем случае это MN908947.

Существует два важных типа rettype, как и в случае с файлами геномных данных. Один в формате FASTA, а другой в формате GENE BANK (gb). Узнать об этих форматах можно здесь. В нашем случае мы будем использовать формат FASTA.

# getting the data from data bank
covid_fasta = Entrez.efetch(db="nucleotide", id="MN908947",
                                  rettype="fasta", retmode="text")
covid_genome = covid_fasta.read().split("\n")[1:]
covid_genome = "".join(covid_genome).lower()
print(covid_genome[:1000])

Это позволит получить данные и распечатать

‘attaaaggtttataccttcccaggtaacaaaccaaccaactttcgatctcttgtagatctgttctctaaacgaactttaaaatctgtgtggctgtcactcggctgcatgcttagtgcactcacgcagtataattaataactaattactgtcgttgacaggacacgagtaactcgtctatcttctgcaggctgcttacggtttcgtccgtgttgcagccgatcatcagcacatctaggtttcgtccgggtgtgaccgaaaggtaagatggagagccttgtccctggtttcaacgagaaaacacacgtccaactcagtttgcctgttttacaggttcgcgacgtgctcgtacgtggctttggagactccgtggaggaggtcttatcagaggcacgtcaacatcttaaagatggcacttgtggcttagtagaagttgaaaaaggcgttttgcctcaacttgaacagccctatgtgttcatcaaacgttcggatgctcgaactgcacctcatggtcatgttatggttgagctggtagcagaactcgaaggcattcagtacggtcgtagtggtgagacacttggtgtccttgtccctcatgtgggcgaaataccagtggcttaccgcaaggttcttcttcgtaagaacggtaataaaggagctggtggccatagttacggcgccgatctaaagtcatttgacttaggcgacgagcttggcactgatccttatgaagattttcaagaaaactggaacactaaacatagcagtggtgttacccgtgaactcatgcgtgagcttaacggaggggcatacactcgctatgtcgataacaacttctgtggccctgatggctaccctcttgagtgcattaaagaccttctagcacgtgctggtaaagcttcatgcactttgtccgaacaactggactttattgacactaagaggggtgtatactgctgccgtgaacatgagcatgaaattgcttggtacacggaacgttct’

Теперь мы можем проверить, имеет ли он ту же длину, что и раньше.

# Checking the length to match the previous result
print("Length of the genome: " +str(len(covid_genome)))
'Length of the genome: 29903'

Это все на сегодня. Вы можете найти блокнот jupyter здесь. Скоро напишу другие части. Быть в курсе.

Вы можете прочитать часть 2 здесь