Advertisement
Sokolmish

bioinf1

Sep 16th, 2021
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.75 KB | None | 0 0
  1. Основная задача лабораторной - обдумать, понять и аккуратно реализовать алгоритм NW, приведенный ниже, а также всю обвязку к нему, которая будет использоваться в остальных лабораторных работах.
  2.  
  3. Итак, даны две строки, ключ, определяющий алфавит, ключ(и), определяющие скоринговую систему. На выходе мы должны получить оптимальное глобальное пАрное выравнивание и его оценку в данной скоринговой системе.
  4.  
  5. Что такое глобальное парное выравнивание?
  6. Для строк a и b длиной n и m это матрица из двух новых строк a' и b' равной длины l (max(m,n)>=l>=n+m), образованных вставками пробелов (gap, '-'). В выравнивании не может быть столбца состоящего из двух пробелов.
  7.  
  8. a = AATCG, b = AACG
  9. a': AATCG
  10. b': AA-CG
  11.  
  12. Для нахождения глобального выравнивания мы используем подход динамического программирования.
  13. Задаем матрицу, в каждой ячейке D(i,j) будет храниться скор оптимального выравнивания для префиксов a(1..i) и b(1..j).
  14. Инициализируем первую строку и первый столбец:
  15. D(0,0) = 0
  16. D(i,0) = j*G
  17. D(0,j) = i*G, где G - величина скоринг функции, соответствующая вставки гэпа.
  18. Далее заполняем матрицу, используя следующие рекуррентные соотношения:
  19. D(i,j),Ptr(i,j) = max{(D(i-1,j)+G, UP), (D(i,j-1)+G, LEFT), (D(i-1,j-1)+S(i,j), DIAG)},
  20. где Ptr(i,j) - указатель на выбранное направление в матрице для восстановления выравнивания,
  21. S(i,j) - скоринг функция, например BLOSUM62, DNAFull или иная.
  22. Скор оптимального выравнивая для a и b: Score = D(i,j).
  23.  
  24. Пример:
  25.  
  26. http://rna.informatik.uni-freiburg.de/Teaching/index.jsp?toolName=Needleman-Wunsch
  27.  
  28.  
  29. Что должно быть сделано:
  30. 1. Обдумать и осознать как сам алгоритм, так и его следствия, например, как влияет выбор скоринговой системы на результат, как можно модернизировать алгоритм, чтобы не штрафовать за гэпы вначале и/или конце выравнивания, и т.д.
  31. 2. Реализовать алгоритм, включая осмысленные тесты к нему, которые надо самостоятельно придумать. Текст должен содержать комментарии, демонстрирующие понимание и мыслительный процесс.
  32. 3. На вход принимается один файл, содержащий две последовательности в формате fasta или два файла, содержащих по одной последовательности в формате fasta:
  33. prog_name -i seqs.fasta
  34. prog_name -i seq1.fasta seq2.fasta (расширение, само собой, любое, в т.ч. никакое)
  35. 4. Программа должна уметь работать с алфавитами для аминокислот и нуклеотидов. Для аминокислот использовать матрицу BLOSUM62:
  36. https://www.ncbi.nlm.nih.gov/Class/BLAST/BLOSUM62.txt
  37. для нуклеотидов - совпадение символов +5, несовпадение -4 (матрица DNAFull).
  38. Дефолтный случай - совпадение символов +1, несовпадение -1, гэп -2
  39. 5. Штраф за гэп зада тся ключом:
  40. prog_name -g -10 или
  41. prog_name --gap=-10
  42. 6. Задача простая, потому по возможности должна быть реализована стандартными средствами языка. Весь код должен быть своим. Исключение - можно использовать готовые библиотеки для обработки ключей командной строки, тестирования и измерения времени.
  43. 7. Результат должен выдаваться в консоль или опционально (-o out.txt) в файл. Выравнивание должно переноситься на новую строку, если оно не умещается, например, в 100 символов:
  44.  
  45. seq1: SP-E---TVIHS--GWVIWRELFSH-WPDQCKL-LFGDWFAWIHWTYLVYYSAGPPCQG
  46. seq2: SPSDQFFTVIHSCLYWVIWRDLMSHLFMNGAAIDIHWTWDSIAIGPPLV-YPIEEVFAG
  47.  
  48. seq1: QSDIVVMMQKKLRTNFCQCYKYWYQ
  49. seq2: PSTIVVMMQKMLRTNFCQCYKPWYQ
  50.  
  51. Отдельной строкой выводится скор:
  52. Score: 161
  53.  
  54. Для проверки своих результатов можно воспользоваться:
  55. для белков: https://www.ebi.ac.uk/Tools/psa/emboss_needle/
  56. для ДНК: https://www.ebi.ac.uk/Tools/psa/emboss_needle/nucleotide.html
  57. В настройках step2-More Options... выбрать BLOSUM62 для белков, DNAFull для ДНК, установить равными GAP OPEN, GAP EXTEND, END GAP OPEN и END GAP EXTEND. END GAP PENALTY=True.
  58.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement