#' @title Start biobtreeR
#'
#' @description Once target datasets is built with \code{bbBuildData} this function used to start biobtree server
#' in the background for performing search/mapping queries.
#'
#' @return character
#'
#' @examples
#'
#' bbStart()
#' bbStop()
#'
bbStart<-function() {
if(isbbRunning()){
print("There is a running biobtree which can be used or first bbStop() to start again")
return(FALSE)
}
rootDir<-getwd()
conf<-getConfig()
if(length(conf@bbDir)==0){
stop("out directory is not set. It must be set first with useOutDir function")
}
bbDir<-conf@bbDir
tryCatch(
{
print(bbDir)
setwd(bbDir)
execFile <- bbExeFile()
if(!file.exists(file.path(bbDir,"out","db","db.meta.json"))){
stop("Built data couldn't found. Make sure data built or directory set correctly")
}
system2(execFile,args = "--no-web-popup web",wait = FALSE)
# wait here until biobtree data process complete
print("Starting biobtree...")
elapsed<-0
timeoutDuration<-50
while(TRUE){
if (elapsed > timeoutDuration){
bbStop()
setwd(rootDir)
stop("biobtree could not started. Please check that you have built data correctly")
}
Sys.sleep(1)
if(!isbbRunning()){
elapsed<-elapsed+1
next
}
setConfig()
return("biobtreeR started")
}
},finally = {
setwd(rootDir)
}
)
}
#'
#' @title Stop biobtree
#'
#' @description Stops running background biobtree process which started with \code{bbStart}
#'
#' @return returns empty
#'
#' @examples
#' bbStop()
bbStop <- function(){
if (Sys.info()['sysname'] == "Windows") {
system2("taskkill",args = "/IM biobtree.exe /F")
}else if (Sys.info()['sysname'] == "Darwin"){
system2("killall",args = "biobtree")
}else if (Sys.info()['sysname'] == "Linux"){
system2("killall",args = "biobtree")
}
}
#
#Checks for running biobtree if found use it
#
isbbRunning <- function(biobtreeURL=NULL){
conf<- getConfig()
response <- tryCatch(
HEAD(conf@metaEndpoint),
error=function(e) e
)
if(is.null(response)){
return(FALSE)
}
return(!inherits(response, "error"))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.