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
 })