Как правильно реализовать 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
) также активен здесь.