Helpers - компьютеры, интернет, программирование

dplyr: свернуть строки, которые могут отсутствовать

Я работаю с данными биологической последовательности в формате 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.

Как я могу переместить начало и конец кодонов старт / стоп, соответственно, в их собственные столбцы, если они есть?

06.10.2017

Ответы:


1

Вот способ сделать это:

df1 %>% filter(type=="exon") %>%
  left_join(df1 %>% 
              filter(type=="start_codon") %>% 
              select(-type,-stop),by="name",suffix = c("","_codon")) %>%
  left_join(df1 %>%  
              filter(type=="stop_codon") %>% 
              select(-type,-start),by="name",suffix = c("","_codon"))

#   start stop type                name start_codon stop_codon
# 1     1   90 exon transcript_1_exon_1          12         NA
# 2   100  160 exon transcript_1_exon_2          NA         NA
# 3   190  250 exon transcript_1_exon_3          NA        220
06.10.2017
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..