Учебная страница курса биоинформатики,
год поступления 2010
Задачи
- (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
- (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
- Напишите скрипт join.py, который объединяет две таблицы по ключу. Таблицы подаются скрипту на вход в виде файлов в формате CSV, имена входных и выходных файлов передаются скрипту через командную строку. Ключом таблицы является первый столбец. Скрипт проверяет, что для каждого значения ключа в таблице встречается не более одной строки, и если это предположение не выполнено, выдаёт сообщение об ошибке и прекращает работу. Объединение таблиц происходит по следующему правилу: для каждой строки первой таблицы, имеющей значение k в колонке ключа (в первой колонке), в конец этой строки дописывается содержимое строки второй таблицы, имеющей значение k в колонке ключа. Пример использования программы. Положим, в файле blastout.csv лежит такой текст:
- (2 балла)
Скачайте файл PDB с http://www.rcsb.org, например, для PDB ID “2YC6”. Напишите скрипт, который на вход получает имя файла в формате .pdb и имя выходного файла (.csv), парсит входной файл и выводит в выходной файл информацию для каждой альфа-спирали:
- номера первого и последнего остатков спирали (см. тэг «HELIX»)
- расстояние в ангстремах между C-alpha атомами крайних остатков (будем называть это длиной спирали) (см. «ATOM»)
- среднюю длину шага витка спирали, то есть отношение длины спирали к количеству витков (последнее будем считается как количество остатков в спирали, деленное на 3.6)