Я работаю с данными биологической последовательности в формате GTF. Вот простой пример формата:
start stop type name
1 90 exon transcript_1_exon_1
12 15 start_codon transcript_1_exon_1
100 160 exon transcript_1_exon_2
190 250 exon transcript_1_exon_3
217 220 stop_codon transcript_1_exon_3
Я пытаюсь преобразовать экзоны в их белковые последовательности. Однако некоторые части экзонов не кодируют белок. На это указывает наличие строки с полем type
, установленным на start_codon
или stop_codon
.
Я хотел бы переместить начало и конец этих функций, соответственно, в их собственные столбцы, если они есть, следующим образом:
start stop type name start_codon stop_codon
1 90 exon transcript_1_exon_1 12 NA
100 160 exon transcript_1_exon_2 NA NA
190 250 exon transcript_1_exon_3 NA 220
Однако я не могу понять, как это сделать в R. Самое близкое, что я использовал dplyr
, это:
gtf3 <- gtf2 %>% group_by(feature_name) %>% summarise(
start_codon = ifelse(sum(type == "start_codon") != 0, start[type == "start_codon"], NA),
stop_codon = ifelse(sum(type == "stop_codon") != 0, stop[type == "stop_codon"], NA))
но это дает мне следующую ошибку: Evaluation error: object of type 'closure' is not subsettable.
Как я могу переместить начало и конец кодонов старт / стоп, соответственно, в их собственные столбцы, если они есть?