NCBI 블래스트 API와 인터페이스 할 수 있도록 매우 빠른 블래스트 스크립트를 작성했습니다. 때로는 결과 URL을로드하는 데 시간이 걸리고 URL 준비가 완료 될 때까지 스크립트에서 오류가 발생합니다. 결과가 반환되거나 지정된 시간 후에 타임 아웃 될 때까지 오류를 처리하는 우아한 방법 (예 : tryCatch 옵션)이 있습니까?결과 또는 시간 초과를 기다리는 루프
library(rvest)
## Definitive set of blast API instructions can be found here: https://www.ncbi.nlm.nih.gov/staff/tao/URLAPI/new/BLAST_URLAPI.html
## Generate query URL
query_url <-
function(QUERY,
PROGRAM = "blastp",
DATABASE = "nr",
...) {
put_url_stem <-
'https://www.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Put'
arguments = list(...)
paste0(
put_url_stem,
"&QUERY=",
QUERY,
"&PROGRAM=",
PROGRAM,
"&DATABASE=",
DATABASE,
arguments
)
}
blast_url <- query_url(QUERY = "NP_001117.2") ## test query
blast_session <- html_session(blast_url) ## create session
blast_form <- html_form(blast_session)[[1]] ## pull form from session
RID <- blast_form$fields$RID$value ## extract RID identifier
get_url <- function(RID, ...) {
get_url_stem <-
"https://www.ncbi.nlm.nih.gov/blast/Blast.cgi?CMD=Get"
arguments = list(...)
paste0(get_url_stem, "&RID=", RID, "&FORMAT_TYPE=XML", arguments)
}
hits_xml <- read_xml(get_url(RID)) ## this is the sticky part
가 가끔 라이브 그래서 내가 좋아하는 것이 무엇 이동합니다 get_url
몇 분을 소요하는 것은 할 것은이 중 하나 미리 후에 URL 또는 시간을 생성 할 때까지의 모든 20-30초을 가정 해 봅시다 계속 시도하는 것입니다 지정된 시간.
내가 필요한 것, 감사합니다. – biomiha