From 8406792023c9a049ed143098c687d18212177e3c Mon Sep 17 00:00:00 2001 From: Gregory Jefferis <jefferis@gmail.com> Date: Fri, 22 Nov 2024 13:46:43 +0000 Subject: [PATCH 1/2] handle variations in encoding of source URL * for yakuba they were $source not $source$url for some reason ... --- R/datasets.R | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/R/datasets.R b/R/datasets.R index 875a0d5..07024fe 100644 --- a/R/datasets.R +++ b/R/datasets.R @@ -100,7 +100,7 @@ flyem_scene4dataset <- memoise::memoise(function(dataset=NULL) { flyem_servers4dataset <- memoise::memoise(function(dataset=NULL) { sc=flyem_scene4dataset(dataset) dl=flyem_dvidlayer4scene(sc) - u=dl$source$url + u=if(is.character(dl$source)) dl$source else dl$source$url dvid=sub("dvid-service=.*", "", u) dvid=sub("dvid://", "", dvid) dvid=sub("(https://[^/]+).*", "\\1", dvid) @@ -112,7 +112,10 @@ flyem_servers4dataset <- memoise::memoise(function(dataset=NULL) { flyem_dvidlayer4scene <- function(sc) { dvidlayer <- sapply(sc$layers, function(x) isTRUE(try(grepl("dvid", x$source$url), silent = T))) - # if(sum(dvidlayer)!=1) + if(sum(dvidlayer)<1) { + # try again just with source + dvidlayer <- sapply(sc$layers, function(x) isTRUE(try(grepl("dvid", x$source), silent = T))) + } # warning("Unable to extract a unique DVID layer!") dl=sc$layers[[min(which(dvidlayer))]] dl From fafddcc62bbd4c57428727f1b6c6cdc0788d710c Mon Sep 17 00:00:00 2001 From: Gregory Jefferis <jefferis@gmail.com> Date: Fri, 22 Nov 2024 13:47:45 +0000 Subject: [PATCH 2/2] respect the ordering of layers in clio * there is a property orderedLayers that I hadn't previously used * for yakuba it was important because the supervoxel layer came before the agglomeration layer --- R/datasets.R | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/R/datasets.R b/R/datasets.R index 07024fe..9fcae4d 100644 --- a/R/datasets.R +++ b/R/datasets.R @@ -93,6 +93,10 @@ flyem_scene4dataset <- memoise::memoise(function(dataset=NULL) { # there are some key layers here sc2=fafbseg::ngl_decode_scene(ds$versions[[1]]$neuroglancer) ll=c(sc$layers[1], sc2$layers[1], sc$layers[-1], sc2$layers[-1]) + if(!is.null(ds$orderedLayers) && all(ds$orderedLayers %in% names(ll))) { + # reorder layers based on clio config information putting preferred ones first + ll=ll[union(ds$orderedLayers, names(ll))] + } fafbseg::ngl_layers(sc) <- ll sc })