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