Nothing
function(
x, y,
orthologs=FALSE,
restricted=FALSE,
...
){
if(!requireNamespace("BED")){
stop("The BED package is required")
}
if(!BED::checkBedConn()){
stop(
"You need to connect to a BED database using",
" the BED::connectToBed() function"
)
}
if(!"organism" %in% colnames(x)){
d <- x
scopes <- dplyr::distinct(d, be, source)
nd <- c()
for(i in 1:nrow(scopes)){
be <- scopes$be[i]
source <- scopes$source[i]
toadd <- d %>% dplyr::filter(be==be, source==source)
organism <- BED::guessIdScope(
toadd$identifier, be=be, source=source, tcLim=Inf
) %>%
attr("details") %>%
filter(be==!!be & source==!!source) %>%
pull(organism) %>%
unique()
toadd <- merge(toadd, tibble(organism=organism))
nd <- bind_rows(nd, toadd)
}
x <- nd %>% mutate(organism_type="Scientific name")
}
if(!"organism" %in% colnames(y)){
d <- y
scopes <- dplyr::distinct(d, be, source)
nd <- c()
for(i in 1:nrow(scopes)){
be <- scopes$be[i]
source <- scopes$source[i]
toadd <- d %>% dplyr::filter(be==be, source==source)
organism <- BED::guessIdScope(
toadd$identifier, be=be, source=source, tcLim=Inf
) %>%
attr("details") %>%
filter(be==!!be & source==!!source) %>%
pull(organism) %>%
unique()
toadd <- merge(toadd, tibble(organism=organism))
nd <- bind_rows(nd, toadd)
}
y <- nd %>% mutate(organism_type="Scientific name")
}
xscopes <- dplyr::distinct(x, be, source, organism, organism_type)
yscopes <- dplyr::distinct(y, be, source, organism, organism_type)
toRet <- NULL
for(i in 1:nrow(xscopes)){
xscope <- xscopes[i,]
if(any(apply(xscope, 2, is.na))){
next()
}
xi <- dplyr::right_join(
x, xscope,
by=c("be", "source", "organism", "organism_type")
)
xorg <- ifelse(
xscope$organism_type=="NCBI taxon identifier",
BED::getOrgNames(xscope$organism) %>%
dplyr::filter(nameClass=="scientific name") %>%
dplyr::pull(name),
xscope$organism
)
for(j in 1:nrow(yscopes)){
yscope <- yscopes[j,]
if(any(apply(yscope, 2, is.na))){
next()
}
yi <- dplyr::right_join(
y, yscope, by=c("be", "source", "organism", "organism_type")
)
yorg <- ifelse(
yscope$organism_type=="NCBI taxon identifier",
BED::getOrgNames(yscope$organism) %>%
dplyr::filter(nameClass=="scientific name") %>%
dplyr::pull(name),
yscope$organism
)
if(xorg==yorg || orthologs){
xy <- BED::convBeIds(
ids=xi$identifier,
from=xscope$be,
from.source=xscope$source,
from.org=xorg,
to=yscope$be,
to.source=yscope$source,
to.org=yorg,
restricted=restricted
) %>%
dplyr::as_tibble() %>%
dplyr::select(from, to)
if(restricted){
xy <- dplyr::bind_rows(
xy,
BED::convBeIds(
ids=yi$identifier,
from=yscope$be,
from.source=yscope$source,
from.org=yorg,
to=xscope$be,
to.source=xscope$source,
to.org=xorg,
restricted=restricted
) %>%
dplyr::as_tibble() %>%
dplyr::select(to=from, from=to)
)
}
xy <- xy %>%
dplyr::rename("identifier_x"="from", "identifier_y"="to") %>%
dplyr::mutate(
be_x=xscope$be,
source_x=xscope$source, organism_x=xscope$organism,
be_y=yscope$be,
source_y=yscope$source, organism_y=yscope$organism
)
toRet <- dplyr::bind_rows(toRet, xy)
}
}
}
toRet <- dplyr::distinct(toRet)
return(toRet)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.