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

У меня есть список ок. 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 без особого успеха.

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

0 ответов

Другие вопросы по тегам