Как правильно реализовать entrez_post () и entrez_summary () в Rentrez для большого количества запросов? - PullRequest
0 голосов
/ 22 января 2019

У меня есть список ок.4400 номеров доступа (белков) хранятся в виде столбца данных.Не все эти номера доступа соответствуют записям NCBI, но я хочу найти в базе данных NCBI эти номера доступа и получить название организма, с которым связан каждый номер доступа.

Я пытаюсь использовать rentrez для этой цели, но это оказывается очень трудной задачей.В частности, я не знаю, как правильно использовать entrez_post() и entrez_summary().Моя конечная цель - просто получить строку, хранящуюся в $organism, возвращаемую entrez_summary() для любого заданного номера доступа.

Моя попытка передать номера доступа в entrez_post() для получения объектов web_historyбыло следующее:

uploadncbiqueries <- list()
for(i in 1:length(protids)){
  uploadncbiqueries[[i]] <- entrez_post(db='protein', id=protids$accnum[i])
}

Но это, похоже, не работает, так как сгенерированный список состоит всего из двух элементов, и оба они сами пусты (точнее, переменные QueryKey и WebEnv пусто).Я предполагаю, что это потому, что некоторые номера доступа, которые я пытаюсь передать через entrez_post(), недействительны, но у меня нет способа идентифицировать (и, таким образом, отфильтровать) действительные из недействительных.Учитывая, что entrez_post() не работает, я не могу перейти к entrez_summary().

Я также попытался напрямую реализовать entrez_summary() в цикле for:

for(i in 1:length(protids)){
  accnumvar <- paste0(as.character(protids$accnum[i]))
  accnumsummary <- entrez_summary(db = 'protein', id = accnumvar, always_return_list = TRUE)
  protids$orgname[i] = accnumsummary$organism
}

Но этотакже не работает, так как функция, кажется, возвращает ошибки для недопустимых (NCBI) номеров доступа.Например, это то, что он возвращает с номером доступа 'A0A0H4BGL7' в качестве самого первого запроса:

Error: No esummary records found in file
In addition: Warning message:
Esummary includes error message: Invalid uid A0A0H4BGL7 at position=0 

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

Буду признателен за любые советы или указания о том, как решить эту проблему.Я думал, что опубликую об этом здесь в StackOverflow, так как я знаю, что Дэвид Винтер (который поддерживает rentrez) также активен здесь .

...