Skip to content
Snippets Groups Projects
Commit 2deb65d3 authored by Willy Kuo's avatar Willy Kuo
Browse files

Temporarily remove publication.qmd for testing purposes

parent 5fba70fb
No related branches found
No related tags found
No related merge requests found
---
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).
![Fig. 1. Ex vivo coronal slices of three different mice injected with (left) Mouse.number 23, Gadolinium-based, (middle) Mouse.number 19, Barium-based and (right) Mouse.number 30, Gold-based contrast agent.](images/post_mortem_overview.png)
```{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".
![Fig. 2. Three dimensional rendering of CSF spaces enclosed in the mouse skull: Infusion of contrast agent in the lateral ventricles during high-resolution synchrotron radiation-based hard X-ray computed tomography imaging allows 3D visualization with virtual slicing in all directions. Lateral ventricles in blue, third ventricle in green, aqueduct in pink and fourth ventricle in yellow.](images/JP26-invivo-2scan-phase3-postinjection-brain-80-90min_web.png){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"}
![Fig. 3. Visualization of the mouse holder mounted on the imaging rotational stage.](images/holder_1.jpeg){width="650"}
![Fig. 4. Transparent visualization of body mouse holder part containing the water channels to ensure physiological temperature of the mouse.](images/holder_2_holes.jpeg){width="300"}
:::
Additionally, we assambled a customized mouse stage for two surgical procedures: tracheotomy and cisterna magna infusion (Fig. 5).
![Fig. 5. Customized tracheotomy and cisterna magna stage. Available as a 3D model in the downloads.](images/cisternamagna_stage.jpeg){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")
```
:::
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment