Извлечение отсчетов чтения, соответствующих каждому символу гена - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть количественная экспрессия гена Сальмона, которая дает мне транскрипты Ensembl, я конвертировал транскрипты Ensembl в символ гена, но для некоторых генов у меня несколько транскриптов; Как я мог свернуть счетчик чтения по генам, я попробовал пакет tximport, но я обнаружил, что это слишком сложно, так как моя аннотация отличается.

Name                NumReads
ENST00000355520.5   407.186
ENST00000566753.1   268.879
ENST00000481617.2   242.25
ENST00000538183.2   226.576

ensembltranscript_id gene_name
ENST00000482226.2   FCGR2C
ENST00000508651.1   FCGR2C
ENST00000571914.1   TSPAN10
ENST00000571707.1   TSPAN10
ENST00000534817.1   OVCH2
ENST00000445557.1   OR52E1
ENST00000575319.1   CYP2D7
ENST00000576465.1   CYP2D7

EDITED

Это результат подсчета чтения лосося

https://www.dropbox.com/s/7bkril0v6sw7v9z/Salmon_output.txt?dl=0

И это когда я конвертировал идентификаторы транскрипта в выводе Salmon в имя гена

https://www.dropbox.com/s/m1iybfbu2i4bb39/Converting_transcript_id_to_gene_id.txt?dl=0

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете использовать пакет dplyr.

Создать тестовую таблицу:

names = c("ensembltranscript_id",  "gene_name", "NumReads")
transcripts = c("ENST00000482226.2", "ENST00000508651.1", "ENST00000571914.1", "ENST00000571707.1", "ENST00000534817.1")
gene_names = c("FCGR2C", "FCGR2C", "TSPAN10", "TSPAN10", "OVCH2")
reads = c(205.56, 456.21, 123.3, 52.6, 268.45)

data = data.frame(transcripts, gene_names, reads)
names(data) = names

Выполнить расчет:

result = data %>% 
  group_by(gene_name) %>% 
  summarise(sum(NumReads)) %>%
  mutate_if(is.numeric, format, 2)

Распечатать результат:

# A tibble: 3 x 2
  gene_name `sum(NumReads)`
  <fct>     <chr>          
1 FCGR2C    661.77         
2 OVCH2     268.45         
3 TSPAN10   175.90

Надеюсь, это поможет.

Редактировать:

Как указано в комментариях к ОП, ожидаемый результат поможет.Извините, может быть, я неправильно понял «коллапс» в этом контексте.Моя интерпретация заключается в суммировании операций чтения по имени гена.

Edit2:

Как уже упоминалось в моем комментарии, постарайтесь не предоставлять ссылки.Ссылки могут быть неработающими и т. Д. Для получения подробных инструкций о том, как написать хороший пост, см. здесь .

Однако, исходя из ваших реальных данных, сделайте следующее:

Загрузитьданные:

salmon_reads = read.table(file = "/path/to/Salmon_output.txt", header = T, sep = "\t")
genes = read.table(file = "/path/to/Converting_transcript_id_to_gene_id.txt", header = T, sep = "\t")

Просто объедините данные с помощью там транскрипта-идентификатора:

merged_data = merge(x = salmon_reads, y = genes, by.x = colnames(salmon_reads)[1], by.y = colnames(genes)[1], all = T)

Выполните расчет и порядок уменьшения:

result = merged_data %>% 
  group_by(external_gene_name) %>% 
  summarise(sum(NumReads)) %>%
  mutate_if(is.numeric, format, 2)

result$`sum(NumReads)` = as.numeric(result$`sum(NumReads)`)
result = result[order(result$`sum(NumReads)`, decreasing = T),]

Выне упомянул, как обращаться с НС.В этом сценарии все чтения для имен генов, которые являются NA, суммируются.Вот почему в АН больше всего читается.

...