Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2010

Задачи

  1. (1 балл)
    • Напишите скрипт fasta2csv.py, который получает из командной строки два имени файла: входного и выходного. Скрипт читает входной файл в формате FASTA и записывает его в выходной файл в формате CSV таким образом: первая колонка – имя последовательности (всё от > до первого пробела), вторая колонка – описание последовательности (всё после первого пробела в строке с >), третий столбец – тело последовательности. Пример:

      >seq86382 2:N:0:
      CGATAATGCATTTAAATTGGCGAAATTTTGTAAGATACTCACCCAGT TATCACTTCGCA
      AGTCGTGCATTTTGACCAAGTGCAGAGGTGTACTTAATGGG
      >seq86348 1:Y:0:
      ATACCACCTATTGCAAGTCTTAATACACTTTTCCATCCTAAGAAGTGGTTTTGGGCTAGA
      TTTAATCTTTGTGTAAGCTGGTGCTTAAATATGAGTAAAGT
      должен преобразоваться в:
      seq86382,2:N:0:,CGATAATGCATTTAAATTGGCGAAATTTTGTAAGATACTCACCCAGTCTATCACTTCGCAAGTCGTGCATTTTGACCAAGTGCAGAGGTGTACTTAATGGG
      seq86348,1:Y:0:,ATACCACCTATTGCAAGTCTTAATACACTTTTCCATCCTAAGAAGTGGTTTTGGGCTAGATTTAATCTTTGTGTAAGCTGGTGCTTAAATATGAGTAAAGT
  2. (1.5 балла)
    • Напишите скрипт join.py, который объединяет две таблицы по ключу. Таблицы подаются скрипту на вход в виде файлов в формате CSV, имена входных и выходных файлов передаются скрипту через командную строку. Ключом таблицы является первый столбец. Скрипт проверяет, что для каждого значения ключа в таблице встречается не более одной строки, и если это предположение не выполнено, выдаёт сообщение об ошибке и прекращает работу. Объединение таблиц происходит по следующему правилу: для каждой строки первой таблицы, имеющей значение k в колонке ключа (в первой колонке), в конец этой строки дописывается содержимое строки второй таблицы, имеющей значение k в колонке ключа. Пример использования программы. Положим, в файле blastout.csv лежит такой текст:
      seq7871,100.00,101,0,0,1227,1327,1,101,1e-48,200
      seq7696,100.00,101,0,0,191,291,1,101,1e-48,200
      seq4438,100.00,101,0,0,290,390,101,1,1e-48,200
      seq3681,100.00,101,0,0,1037,1137,1,101,1e-48,200
      seq3155,100.00,101,0,0,1543,1643,1,101,1e-48,200
      а в файле sequences.csv лежит текст:
      seq3155,AGAAGAATTTTGCGGTATATGGATGATGAGAAGATCAACACTCTATTGACTGACGACCCATTAAGTACACCTCTGCACTTGGTCAAAATGCACGACTTGCG
      seq3662,AAATCACCCAATTTTCTCCGCTTAAATGTTGAACAATAGTAATGACGTTGATCCTTAACCACAGAAATTATCGCGAGAAATGCCATTTTATAAAAAGATTC
      seq3681,TGTCACGACCGATTGACATTCTCTATTTGGATACCACCTATTGCAAGTCTTAATACACTTTTCCATCCTAAGAAGTGGTTTTGGGCTAGATTTAATCTTTG
      seq4438,CACGGTGTGAGAGTCAATACATGAATTGACGTGTTGAAGAGTCTTCTATTCATCCATACCAGCTAGAGATTAATTGCATACAGGGCATTCCACTGTCATTG
      seq4982,ATACTCTGAACACTCGTCCTTTAATGATTTGAAAATGTTCGTACAAGGCCTCAATAATCAGGTAAAGTCTGCAGATGGTAGACCGGTGGGAGTACGTAAAA
      seq7696,TTCTCTTCAAAAATTCTTTCGCTCTTTGTCTCCCGAACGAACGAAACAGTCAAAAACGTCACTTTATTGGAATCACATAAGCTACTCGTCTCATACATACA
      То если мы запустим скрипт python join.py blastout.csv sequences.csv out.csv, то в файле out.csv должна оказаться такая таблица:
      seq7871,100.00,101,0,0,1227,1327,1,101,1e-48,200
      seq7696,100.00,101,0,0,191,291,1,101,1e-48,200,seq7696,TTCTCTTCAAAAATTCTTTCGCTCTTTGTCTCCCGAACGAACGAAACAGTCAAAAACGTCACTTTATTGGAATCACATAAGCTACTCGTCTCATACATACA
      seq4438,100.00,101,0,0,290,390,101,1,1e-48,200,seq4438,CACGGTGTGAGAGTCAATACATGAATTGACGTGTTGAAGAGTCTTCTATTCATCCATACCAGCTAGAGATTAATTGCATACAGGGCATTCCACTGTCATTG
      seq3681,100.00,101,0,0,1037,1137,1,101,1e-48,200,seq3681,TGTCACGACCGATTGACATTCTCTATTTGGATACCACCTATTGCAAGTCTTAATACACTTTTCCATCCTAAGAAGTGGTTTTGGGCTAGATTTAATCTTTG
      seq3155,100.00,101,0,0,1543,1643,1,101,1e-48,200,seq3155,AGAAGAATTTTGCGGTATATGGATGATGAGAAGATCAACACTCTATTGACTGACGACCCATTAAGTACACCTCTGCACTTGGTCAAAATGCACGACTTGCG
  3. (2 балла)
    • Скачайте файл PDB с http://www.rcsb.org, например, для PDB ID “2YC6”. Напишите скрипт, который на вход получает имя файла в формате .pdb и имя выходного файла (.csv), парсит входной файл и выводит в выходной файл информацию для каждой альфа-спирали:

      1. номера первого и последнего остатков спирали (см. тэг «HELIX»)
      2. расстояние в ангстремах между C-alpha атомами крайних остатков (будем называть это длиной спирали) (см. «ATOM»)
      3. среднюю длину шага витка спирали, то есть отношение длины спирали к количеству витков (последнее будем считается как количество остатков в спирали, деленное на 3.6)
      Выходной файл должен быть в csv формате (информация про каждую спираль на новой строчке, поля разделены запятыми)