R/where.is.this.acc.R

Defines functions where.is.this.acc

Documented in where.is.this.acc

where.is.this.acc <- function(acc, stopAtFirst = TRUE, ...){
  #
  # Argument check:
  #
  if(!is.character(acc)) stop("string expected for argument acc")
  #
  result <- character(0)
  #
  cat("Looking for available databases\n")  
  banks <- choosebank(...)
  nbanks <- length(banks)
  cat(paste("Looking for sequence with accession number", acc,
  "in the following ACNUC databases:\n"))
  print(banks)
  #
  # Looping over banks:
  #
  for(i in seq_len(nbanks)){
  	  cat(paste("\nTrying to open bank with name --->", banks[i], 
  	  "<--- ...", sep = ""))
    bkopenres <- try(choosebank(banks[i]))
    if(inherits(bkopenres, "try-error")){
      cat("... opening not OK, skipping this bank.\n")
  } else {
    cat("... and opening was OK.\n")
    cat(paste("==> Trying to find sequence", acc, "in bank", 
      banks[i], "..."))
    resquery <- try(query(".tmpquery", paste("AC=", acc)), silent = TRUE)
    if(inherits(resquery, "try-error")){
    	 cat("... not found here.\n")
    } else {
      cat("... *** FOUND *** here.\n")
      result <- c(result, banks[i])
    }
    closebank()
    if(length(result) != 0 && stopAtFirst){
      return(invisible(result))
    }
  }
}
#
# Print result summary:
#
  cat("\n\n")
  if(length(result) == 0){
  	  cat(paste("Sequence with accesion number", acc, 
  	  "was not found in available databases.\n Are you sure this is an accession number and not a sequence name?"))
  	} else {
    cat(paste("Sequence with accesion number", acc, 
    "was found in the following database(s):\n"))
    print(result)
  }
  invisible(result)
}

Try the seqinr package in your browser

Any scripts or data that you put into this service are public.

seqinr documentation built on April 6, 2023, 1:10 a.m.