На главную

Практикум 13

Часть 1 : Подсчет покрытия ридами при помощи BEDtools

Команда Эффект от выполнения
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools bamtobed -i sorted_reads_1.bam > sorted_reads_1.bed
Программа принимает картированные сортированные риды в формате bam и записывает информацию о ридах в формате bed (хромосому, координаты на которые рид картировался, качество картирования, цепь и др.)
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools intersect -u -a gencode.genes.bed -b sorted_reads_1.bed > matching_genes.bed
Программа intersect запущенная с параметром -u где первой (-a) на вход подается разметка генома по версии gencode в формате bed позволяет выделить только те записи из разметки генома, которые хоть как-то пересекаются с ридами, чтобы сразу отсеять необходимые гены. Программа записывает данные о генах, имеющих пересечение с ридами (подаются на вход программе вторыми с параметром -b) в файл matching_genes.bed
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools intersect -c -a matching_genes.bed -b sorted_reads_1.bed > covcount.bed
Запущенная с параметром -c программа intersect посчитает количество пересечений для каждого вхождения из набора -a с набором -b так как в нашем случае -a это гены как-то покрытые ридами, а -b сами риды, то программа выдаст в файл covcount.bed запись о координатах участка генома и гена, к которому он принадлежит и покрытие этого участка ридами.
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools sort -i matching_genes.bed > matgen_sorted.bed
Так как в разметке gencode существует некоторое разбиение генома на зачастую пересекающиеся участки приписанные к одному гену и для каждого их этих участков покрытие считается отдельно, я должна объединить участки принадлежащие к одному гену и зачем посчитать покрытие для получившегося объединенного кусочка. Однако функция merge работает только с отсортированными по координате записями, поэтому я сортирую гены имеющие хоть какое то пересечение с ридами в геноме по координате при помощи функции sort (по умолчанию сортирует по хромосоме, а потом по координате) и записываю результат в файл matgen_sorted.bed
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools merge -c 5 -o distinct -i matgen_sorted.bed > matgen_merged.bed
Программа merge объединяет пересекающиеся или граничащие кусочки генома отсортированные по координате (файл matgen_sorted.bed) записывет начальную и конечную координату объединенных кусочков, и объединяет значения взятые из 5 столбцов (-с 5 - это столбец из которого берется значение, в данном случае - это имя гена; -o distinct означает что берутся только уникальные значения для объединенных записей и записываются через запятую в отдельный столбец) для каждого из объединенных кусочков. Таким образом становится понятно какие гены в какой объединенный кусок входят. Результат - matgen_merged.bed

Результатом работы последней программы является файл следующего содержания

chr21   30396950        30426809        USP16
chr21   30428126        30446118        AF129075.5,CCT8

Видно, что первый объединенный кусок содержит единственный ген - USP16, а второй - два гена, что согласуется с данными полученными в предыдущем практикуме, согласно которым AF129075.5 - всего лишь некодирующая РНК внутри интрона гена CCT8

Чтобы отдельно посчитать покрытие ридами внутри некодирующей РНК мы выделим ее координаты при помощи grep а затем применим функцию merge. Покрытием гена CCT8 ридами будем считать покрытие всего второго объединенного участка.

Команда Эффект от выполнения
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools intersect -c -a matgen_merged.bed -b sorted_reads_1.bed > merg_cov.bed
Программа примет на вход bed файл с объединенными в гены кусками и посчитает для них покрытие ридами, записав результат в файл merg_cov.bed. Из результата работы программы мы сразу узнаем покрытие гена USP16 и CCT8 (при условии что считаем его объединенным вторым куском).
cat matgen_sorted.bed | grep AF129075.5 > only_ncrna.bed
Выделяем из файла с генами которые имеют пересечение с ридами и являются отсортированными по координате участки, принадлежащие некодирующей РНК (результат - файл only_ncrna.bed)
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools merge -c 5 -o distinct -i only_ncrna.bed > ncrna_merged.bed
Объединяем участки принадлежащие некодирующей РНК (файл only_ncrna.bed) в один при помощи merge (параметры и их значение уже были описаны выше, в данном случае я ожидаю что в дополнительном столбце с именем гена будет только имя нкРНК, также я ожидаю получить координаты объединенного куска генома, проаннотированного как эта нкРНК чтобы на следующем шаге посчитать покрытие) результат - файл ncrna_merged.bed
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools intersect -c -a ncrna_merged.bed -b sorted_reads_1.bed > ncrna_cov.bed
Программа аналогичная уже использовавшейся посчитает покрытие ридами для объединенного на предыдущих шагах куска генома проаннотированного как нкРНК и запишет результат в файл ncrna_cov.bed.

Часть 2 : Характеристика покрытых ридами генов

Характеристика CCT8 USP16 AF129075.5
ID транскрипта гена, который будем характеризовать ENST00000286788.4 ENST00000334352.4 ENST00000457162.2
Координаты 29,055,805-29,073,797 30,396,950-30,426,809 30,430,394-30,432,416
Размер b.p. (гена) 17993 29860 2023
Размер b.p. транскрипта 2,005 3,004 794
Функция Компонент шаперонина -крупного бочкообразного белкового комплекса участвующего в сворачивании новосинтезированных белков с затратой ATP на изменение структуры комплекса. Деубиквитинилирующий фермент, активность которого может регулироваться фосфорилированием. Участвует в деубиквитинилировании гистона Н2А влияя на структуру хроматина. Некодирующая РНК с неизвестной функцией (транскрибируемый локус у транскрипта которого не нашли продукт)
Направление в геноме обратная цепь прямая цепь обратная цепь
Количество экзонов 15 все кодирующие 19 17-кодирующие 2
Количество интронов 14 18 1
Наличие белкового продукта и его длина 548 823 -

Часть 3 : Задачи на выбор

Команда Эффект от выполнения
 /P/y14/term3/block4/SNP/bedtools2/bin/bedtools bamtofastq -i  mapped_reads_1.bam -fq out.fastq
Программа принимает на вход откартированные на геном риды в формате bam и переводит их в fastq формат, сохраняя при этом в файл out.fastq.
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools makewindows -g chrom_length.txt -w 1000000 > chr21_intervals.txt
Программа принимает на вход полученную при помощи скрипта(скрипт считает длины всех хромосом, которые есть в папке, но у меня в папке была только 21 хромосома; результат записывается при помощи pipe в файл chrom_length.txt) из fasta файла с последовательностью хромосомы длину хромосомы, (файл подается с параметром -g файл - chrom_length.txt), также программа использует параметр -w, задающий длину окна (по сути интервала) интервалы генерируются по умолчанию с шагом в днилу интервала (то есть непересекающиеся интервалы, однако параметром -s можно задать длину шага и генерировать наборы пересеающихся интервалов). Результат работы программы записывается в файл chr21_intervals.txt и содержит в себе название хромосомы и координаты неперекрывающихся интервалов длины 1000000. Длина хромомомы, посчитанная при помощи скрипта 48129895 п.о. количество получившихся геномных интервалов - 49.
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools cluster -s -i sorted_reads_1.bed > clustered_reads.bed
Программа принимает на вход откартированные на геном и отсортированные риды в формате bed и записывает в файл те же риды (в файл clustered_reads.bed) но с дополнительным столбцом, где объединенные в один кластер риды имеют один и тот же номер. Кластеризация происходит с параметром -d по умолчанию (кластеризуются только пересекающиеся риды или риды расстояние между которыми 0, то есть картировавшиеся по соседству на геном и не имеющие расстояния между собой). Параметр -s означет то, что скластеризованы могут быть только те риды, которые откартировались на ону и ту же цепь в геноме.
/P/y14/term3/block4/SNP/bedtools2/bin/bedtools random -l 200 -n 1000 -g chrom_length.txt > random.txt
Программа генерирует 1000 случайных фрагментов (-n) длиной 200 нуклеотидов (-l) из файла с длиной хромосомы chrom_length.txt в файле есть хромосома, координата участка, его длина, номер среди с генерированных и случайно выбранная цепь. Результат записывается в файл random.txt

© Кристина Перевощикова, 2018