Секвенирование по Сенгеру. Анализ хроматограмм
Для выполнения практикума я решил выбрать программу Unipro UGENE, так как она мне очень понравилась. Также я смотрел хроматограммы в веб-сервисе Pearl и программе Geneious Prime, но UGENE - единственная из них, которая оказалась одновременно бесплатной и ооочень функциональной. Думаю, что освоение малой части именно её функционала будет для меня полезней всего.
Ссылки на мои файлы с хроматограммами: 24_F.ab1, 24_R.ab1.
Для того, чтобы нормально выровнять хроматограммы в UGENE, мне нужно кроме файлов с хроматограммами подать ей ещё файл с референсной последовательностью в формате
Собственно, начнём с нечитаемых концов двух хроматограмм. Я сравню то, что напридумывал я с нечитаемыми концами, с тем, что в этом плане вычислила программа.
Сразу отмечу то, что длина 2-х хроматограмм различается: длина прямой последовательности - 717 букв, а длина обратной - 722 буквы. Думаю, это можно списать именно на эти самые нечитаемые концы.
Сначала прямая последовательность:

Мнение программы: так как UGENE совершенно непонятным для меня образом преобразовала прямую последовательность (предположительно, она переписала её в комплементарную и что-то с ней сделала ещё), я не смог сопоставить порядковые номера концов нечитаемых участков изначальной и выровненной хроматограмм.
А теперь обратная последовательность:
Но, собственно, выравненные хроматограммы у нас есть, и их можно просмотреть и исправить/дополнить, где это необходимо.
Вот и первый случай проблемного нуклеотида:

Здесь на месте "N" на нижней хроматограмме я поставил "A", так как сигнал именно от этого нуклеотида является здесь сильнейшим. Добавившийся и смутивший программу сигнал от "C", очевидно, является лишь фоновым шумом или случайной ошибкой детектора.
Второй случай:

Здесь я на верхней хроматограмме вместо буквы "N" поставил букву "C" на основании хорошего сигнала этой буквы из нижней хроматограммы. Да и мы сами можем заметить, что на верхней хроматограмме "синий" сигнал сильнее красного (который, я думаю, вообще является шумом), но сам по себе он невелик, поэтому опираемся на нижнюю хроматограмму.
Третий случай:

Здесь я аналогично второму случаю на нижней хроматограмме вместо буквы "N" поставил букву "G", так как сам по себе сигнал от гуанина в несколько раз сильнее сигнала от аденина, так и на верхней хроматограмме гуаниновый сигнал полностью доминирует над остальными.
Четвёртый случай, нечитаемая часть хроматограммы:
На верхней хроматограмме небольшое пятно краски от "аденина" (я считаю, что это именно небольшое пятно, так как оно даёт слишком хороший сигнал на слишком длинной части хроматограммы, это не похоже на пик) немножко всё испортило. Первую букву "N" я заменю на "A", так как тут на обеих хроматограммах это самый сильный сигнал. Вторую букву "N" я заменю на "T", так как, несмотря на пятно от аденина, сигнал именно от этого нуклеотида здесь наиболее сильный. А третью букву "N" я заменю на букву "C", основываясь на данных из нижней более чёткой в этом месте хроматограммы, даже несмотря на более сильный сигнал от "аденина".
Пятый случай, нечитаемый конец верхней хроматограммы:
У верхней хроматограммы мы можем наблюдать уже нечитаемый конец, где каждый из сигналов накладывается на другой. Но по нижней более чёткой хроматограмме мы можем определить нужные нам нуклеотиды: кроме первого. Программа определила нуклеотид там, где его, по идее, нет, просто большое расстояние между пиками на первой хроматограмме. Это надо удалить. Так, следующую букву "N" я заменю на гуанин, опираясь на данные с нижней хроматограммы. Аналогично сделаю и со следующей, только заменю на аденин. Последнюю букву "N", находящуюся на нижней хроматограмме, я заменю на "G", так как считаю, что секвенатору определить её в этом месте помешал шум от близлежащих "аденинов", но при этом сигнал от гуанина есть, и достаточно отчётливый.
Далее у нас огромная куча полиморфизмов:
Шестой случай:
Куча полиморфизмов... Будем разбираться.
Первую букву "N" я заменю на букву "R", так как там наблюдается полиморфизм гуанина и аденина; Вторую букву "N" я заменю на букву "W", так как тут уже наблюдается полиморфизм аденина и тимина; третий проблемный нуклеотид очень похож на первый в нашем шестом случае, поэтому я также там поставлю букву "R"; и четвёртый нуклеотид, как мы можем видеть, является полиморфизмом гуанина и аденина, так как тут я также поставлю букву "R".
Седьмой случай, нечитаемый конец хроматограммы:

Здесь, как мы можем заметить, на последних трёх нуклеотидах хроматограмма является нечитаемой, но последний нуклеотид программа определила гуанином, что я считаю неправильным. В данном месте хроматограммы это с большей вероятностью мог быть шум от краски, поэтому я последнюю букву последовательности заменил на "N".
Доп. случай, передний конец верхней хроматограммы:

Разбираемся: первая буква "N" стоит заслуженно, это явное пятно краски. Вторая буква "N" также стоит правильно, так как там по сигналам вообще невозможно понять, что там. Третью букву "N" я заменил на "M", так как там наблюдается полиморфизм аденина и цитозина. Следующие три буквы "N" я заменил на "R", хоть и при том, что там очень низкий уровень сигнала, особенно у четвёртого, я там вижу полиморфизмы аденина и гуанина. Последнюю букву я заменил на "M", так как снова увидел полиморфизм аденина и цитозина.
Ссылка на консенсусную последовательность.
Теперь я решил точно посчитать среднее качество определения буквы в этих двух последовательностях, а также дисперсию и среднее квадратичное отклонение, чтобы иметь представление о том, насколько качественно отсеквенирована эта последовательность. Для этого мне надо вытащить эти значения из
Для начала я перевёл их из формата
Далее я написал скрипт, который мне считает среднее Q по всем буквам, дисперсию этого Q и среднее квадратичное отклонение. Полученные значения:
Прямая последовательность:
- Среднее Q: 42.834;
- Дисперсия Q: 207.318;
- Среднее квадратичное отклонение Q: 14.409.
Обратная последовательность:
- Среднее Q: 41.835;
- Дисперсия Q: 198.935;
- Среднее квадратичное отклонение Q: 14.114.
Использовал я в этом скрипте подмодуль SeqIO.QualityIO модуля Bio для Python, а также модуль statistics для подчёта необходимых мне статистических величин.
Собственно, по этим данным мы можем понять, что в принципе обе последовательности ДНК отсеквенирована очень точно, средняя вероятность ошибки менее 0.0001, что очень неплохо, а разброс (среднее квадратичное отклонение) в пределах доспустимой на мой взгляд нормы. Значение дисперсии показывает, что вероятность случайной ошибки в ходе секвенирования хоть и не близка к нулю, но достаточно мала, чтобы нас устроить.
Также я написал скрипт, который помог мне подсчитать среднее соотношение уровня сигнала и шума по двум последовательностям. Полученные значения:
- Для прямой последовательности: 56.658;
- Для обратной последовательности: 57.321.
В нём я использовал подмодуль SeqIO.AbiIO модуля Bio для Python, а также модуль statistics.
Как мы можем видеть, полученные соотношения говорят нам о том, что в принципе в среднем уровень сигнала более чем в 50 раз выше уровня шума, что является прекрасным показателем. Это значит, что последовательность отсеквенирована довольно точно и качественно.
Для того, чтобы разобраться в формате
для того, чтобы во всём этом разобраться.