From b8cb2212be2ea270b51121314e96a2f636795eab Mon Sep 17 00:00:00 2001 From: Willy Kuo <willy.kuo@physiol.uzh.ch> Date: Mon, 30 Sep 2024 18:54:45 +0200 Subject: [PATCH] Put Publication_page.qmd back --- .../Publication_page.qmd | 234 ++++++++++++++++++ 1 file changed, 234 insertions(+) create mode 100644 webpage_contents/publications/20240901_Marta_GironaAlarcon/Publication_page.qmd diff --git a/webpage_contents/publications/20240901_Marta_GironaAlarcon/Publication_page.qmd b/webpage_contents/publications/20240901_Marta_GironaAlarcon/Publication_page.qmd new file mode 100644 index 0000000..0c01917 --- /dev/null +++ b/webpage_contents/publications/20240901_Marta_GironaAlarcon/Publication_page.qmd @@ -0,0 +1,234 @@ +--- +title: 'In vivo Imaging of Central Nervous System Fluid Spaces using Synchrotron Radiation Micro-Computed Tomography' +date: '2024-09-01' +First author: 'Marta Girona Alarcón' +Last author: 'Vartan Kurtcuoglu' +author: + - name: 'Marta Girona Alarcón (first author)' + orcid: 0009-0006-2111-2716 + affiliations: + - name: The Interface Group, Institute of Physiology, University of Zurich + + - name: 'Vartan Kurtcuoglu (last author)' + orcid: 0000-0003-2665-0995 + affiliations: + - name: The Interface Group, Institute of Physiology, University of Zurich +format: + html: + grid: + body-width: 1500px +--- + +In this hub, we provide additional materials, methods and results for the publication. + +## Supplemental Results + +In this [DOI](https://doi.org/10.5281/zenodo.13773081), we provide full resolution datasets for download from the publication data and supplemental results: + +### Pilot post mortem experiments + +In a previous beamtime (ESRF, 2020, December), *ex vivo* imaging was performed. The goal of the pilot experiments was to chose a contrast agent for the presented *in vivo* experiments. The list of used contrast agents is available under the Zenodo download entry "tables_exVivo.7z". We considered the Barium-based contrast agent (CA) to be the most promissing one and therefore decided to employ it for the *in vivo* experiments (Fig. 1). + + + +```{r librLoad} +library(dplyr) +library(kableExtra) +# SET options for table rendering in this page +options(DT.options = list(fixedHeader = TRUE, + scrollX = TRUE, + scrollY = "800px", + paging = FALSE, + scrollCollapse = TRUE, + autoWidth = TRUE)) +``` + +```{r} +tbl <- read.csv(file = 'exVivo_Contrast_agent_per_mouse_list.csv') +kable(tbl, format = "markdown") +``` + +Table 1. List of *ex vivo* mouse number, including the injected site and contrast agent. + +### CSF spaces segmentation + +In the publication, we have shown the need of infusing contrast agent to achieve a semi-automatic segmentation. Here, we show a rendering of one segmentation. In the downloads, we have provided a segmentation of a timeseries imaging in the brain ventricles, which can be found under "videos_Reconstructions.7z". + +{width="900"} + +### Timeseries movies + +Movement of contrast agent over time for the presented timeseries can be observed in projections and reconstructions as movies under the folders "videos_Reconstructions.7z" and "videos_Projections.7z" in [Zenodo](https://doi.org/10.5281/zenodo.13773081). + +## Additional materials + +We have additively manufactured the mouse holder, optimized for vertical imaging while ensuring fixation of the mouse skull (Fig. 3). + +::: {layout-ncol="2"} +{width="650"} + +{width="300"} +::: + +Additionally, we assambled a customized mouse stage for two surgical procedures: tracheotomy and cisterna magna infusion (Fig. 5). + +{width="700"} + +## Equipment and consumables + +The following table provides details of consumables, hardware and software that have been employed for this experiments. + +```{r} +tbl <- read.csv(file = 'Equipment_table.csv') +DT::datatable(tbl, extensions = c('FixedHeader'), filter = 'top', rownames = FALSE) +``` + +<!-- Do not edit below this line !! --> + +## Links to protocol pages + +```{r getrepo} +library(dplyr) +library(here) + +# Read repository URL information from _quarto.yml file +vars <- yaml::read_yaml(file.path(here::here(),'_quarto.yml'),) +repo_url <- vars$website$`repo-url` +repo_url_basepath <- file.path(repo_url,'-', 'tree','master','webpage_contents') +``` + +All protocols can be found this website's repository: [`r repo_url`](repo_url) + +```{r protocols} +library(dplyr) +library(here) + +# Read repository URL information from _quarto.yml file +vars <- yaml::read_yaml(file.path(here::here(),'_quarto.yml'),) + +# Retrieve which are data types and facilities relevant to this publication +inputs <- read.csv(file = 'input_mice.csv') + +# Find protocols and files +folders <- unique(cbind(inputs$Data_type,inputs$Facility_name_YYYY_month)) # find table's unique variations of +paths <- dir(path = file.path('..','..','experiments',inputs$Data_type, inputs$Facility_name_YYYY_month, "protocols"), + pattern='*.pdf',full.names = TRUE) + +# Add URL of the repo with additional info about the branch +paths <- as.data.frame(file.path(repo_url_basepath,'experiments', sapply(strsplit(paths,'experiments'),'[[',2))) + +colnames(paths) <- 'Protocols' + +# Add markdown formatting so that it becomes a link +paths$Protocols <- paste0('[', sapply(strsplit(paths$Protocols,'experiments'),'[[',2),'](', paths$Protocols,')') + + +# Render table +kableExtra::kable(paths,format = 'markdown') + + +``` + +## Sample information + +`r getwd()` + +```{r} +library(dplyr) +library(kableExtra) + +# Take the relevant rows from the tables specified in inputs +mice_used <- list() +scans_used <- list() + +# Loop through mice as defined in the mice_input table +inputs <- read.csv(file = 'input_mice.csv') +for (i in 1:nrow(inputs)){ + + # Find experiment table for this mouse + row_filepath <- file.path(here::here(), 'experiments',inputs$Data_type[i], inputs$Facility_name_YYYY_month[i], "metadata_tables",inputs$Metadata_file_mouse[i]) + # Read mice info file + mice_used[[i]] <- read.csv(row_filepath) %>% filter(Subject_ID == inputs$Subject_ID[i]) # read table and filter subject + mice_used[[i]]$Subject_pubID <- inputs$Subject_pubID[i] # Add additional input column + mice_used[[i]]$Correction_factor <- inputs$Correction_factor[i] # Add additional input column + + # Find and read scan lists for that subject + row_filepath_scans <- file.path(here::here(), 'experiments',inputs$Data_type[i], inputs$Facility_name_YYYY_month[i], "metadata_tables",inputs$Metadata_file_scan[i]) + tmp_tbl_scans <- read.csv(row_filepath_scans) %>% filter(Subject_ID == inputs$Subject_ID[i]) + + # Providing the preview images + # ------------------------------------------------ + # Build URL based on the REpo URL (retrieved from _quarto.yml file) + image_url <- file.path(repo_url_basepath,'experiments',inputs$Data_type[i], inputs$Facility_name_YYYY_month[i],'preview_images',tmp_tbl_scans$Preview_Image_LowQuality) + + # Find relative path to image and COPY it into the publication folder + source_images_relativepath <- gsub(repo_url_basepath,file.path('..','..'),image_url) + #copy_image_dir <- file.path(getwd(),'preview_images') + #file.copy(source_images_relativepath,copy_image_dir) + + +"C:/Users/gorka/Gitlab_crs/fdcns/webpage_contents/publications/20240901_Marta_GironaAlarcon/images" +# Add HTML to display images in table and make them clickable link + tmp_tbl_scans$Preview_Image_LowQuality <- paste0('<a href=\'', image_url,'\' target=\'_blank\'>','<img src=\'', source_images_relativepath, '\' height=\'70\'></a>') + + # ------------------------------------------------ + + + # join tables --------------------------------------------- + scans_used[[i]] <- full_join(x=mice_used[[i]], + y = tmp_tbl_scans, + by=join_by("Subject_ID"), + suffix = c('.mice','.scans'), + keep=FALSE) + +} + + +# Gather list elements in a table +mice_used <- do.call(rbind,mice_used) +scans_used <- do.call(rbind,scans_used) + + +#Change position of some columns +mice_used <- relocate(mice_used, Correction_factor, .before = 7) +mice_used <- relocate(mice_used, Subject_pubID, .before = 1) +scans_used <- relocate(scans_used, Correction_factor, .before = 7) +scans_used <- relocate(scans_used, Subject_pubID, .before = 1) +scans_used <- relocate(scans_used, Preview_Image, .before = 1) + +## Gather code assumming there is only one data type +mouse_codebook <- read.csv(file = dir(path = file.path(here::here(), 'experiments',inputs$Data_type[1]), pattern = 'Mouse.*codebook.csv',full.names = TRUE)) +scan_codebook <- read.csv(file = dir(path = file.path(here::here(), 'experiments',inputs$Data_type[1]), pattern = 'Scan.*codebook.csv',full.names = TRUE)) +joint_codebook <- bind_rows(mouse_codebook, scan_codebook) %>% distinct() + + +``` + +::: panel-tabset +## Mice + +```{r} +DT::datatable(mice_used, extensions = c('FixedHeader'), filter = 'top', rownames = FALSE) + +``` + +#### Codebook + +```{r} +kable(joint_codebook, format = "markdown") +``` + +## Mice and scans info + +```{r} +DT::datatable(scans_used, escape = FALSE, extensions = c('FixedHeader'), filter = 'top', rownames = FALSE) +``` + + + +#### Codebook + +```{r} +kable(mouse_codebook, format = "markdown") +``` +::: -- GitLab