library(spant) knitr::opts_chunk$set(echo = FALSE)
for (n in 1:Ndyns(params$fit_res$data)) { cat("\n### ", n, "\n", sep = "") plot(params$fit_res, dyn = n, xlim = params$plot_ppm_xlim) cat("\n") }
if (!is.null(dyn_data_uncorr)) { cat("## Dynamic plots {.tabset}\n") if (!is.null(dyn_data_corr)) { cat("### Spectrogram with dynamic correction\n") if (is.null(params$plot_ppm_xlim)) { image(dyn_data_corr, xlim = c(4, 0.5)) } else { image(dyn_data_corr, xlim = params$plot_ppm_xlim) } } cat("\n\n### Spectrogram without dynamic correction\n") if (is.null(params$plot_ppm_xlim)) { image(dyn_data_uncorr, xlim = c(4, 0.5)) } else { image(dyn_data_uncorr, xlim = params$plot_ppm_xlim) } }
if (!is.null(params$mri) | !is.null(params$mri_seg)) { cat("## MRI {.tabset}\n") }
if (!is.null(params$mri)) { cat("### Voxel position\n") voi <- get_svs_voi(params$fit_res$data, params$mri) plot_voi_overlay(params$mri, voi) }
if (!is.null(params$mri_seg)) { cat("### Voxel segmetation\n") voi <- get_svs_voi(params$fit_res$data, params$mri_seg) seg_vols <- plot_voi_overlay_seg(params$mri_seg, voi) }
phase_offset <- params$fit_res$res_tab$phase shift_offset <- params$fit_res$res_tab$shift proc_spec <- phase(mean_dyns(params$fit_res$data), mean(phase_offset)) proc_spec <- shift(proc_spec, mean(shift_offset), units = "ppm") proc_spec <- zf(proc_spec) if (is.null(params$plot_ppm_xlim)) { plot(proc_spec, xlim = c(4, 0.2)) } else { plot(proc_spec, xlim = params$plot_ppm_xlim) }
plot(proc_spec)
if (params$w_ref_available) { cat("### Water reference resonance\n") # w_ref_proc <- shift(w_ref, shift_offset, units = "ppm") w_ref_proc <- auto_phase(w_ref, xlim = c(5.3, 4)) w_ref_proc <- zf(w_ref_proc) plot(w_ref_proc, xlim = c(5.3, 4)) }
name <- NULL value <- NULL if (!is.null(params$fit_res$res_tab$SNR)) { name <- c(name, "Mean spectral signal to noise ratio") value <- c(value, round_dp(mean(params$fit_res$res_tab$SNR), 2)) } if (!is.null(params$fit_res$res_tab$SRR)) { name <- c(name, "Mean spectral signal to residual ratio") value <- c(value, round_dp(mean(params$fit_res$res_tab$SRR), 2)) } if (!is.null(params$fit_res$res_tab$FWHM)) { name <- c(name, "Mean spectral linewidth (ppm)") value <- c(value, round_dp(mean(params$fit_res$res_tab$FWHM), 4)) } if (!is.null(params$fit_res$res_tab$tNAA_lw)) { name <- c(name, "Mean tNAA linewidth (ppm)") value <- c(value, round_dp(mean(params$fit_res$res_tab$tNAA_lw), 4)) } if (!is.null(params$fit_res$res_tab$NAA_lw)) { name <- c(name, "Mean NAA linewidth (ppm)") value <- c(value, round_dp(mean(params$fit_res$res_tab$NAA_lw), 4)) } if (!is.null(params$fit_res$res_tab$tCho_lw)) { name <- c(name, "Mean tCho linewidth (ppm)") value <- c(value, round_dp(mean(params$fit_res$res_tab$tCho_lw), 4)) } if (!is.null(params$fit_res$res_tab$Cho_lw)) { name <- c(name, "Mean Cho linewidth (ppm)") value <- c(value, round_dp(mean(params$fit_res$res_tab$Cho_lw), 4)) } if (!is.null(params$fit_res$res_tab$tCr_lw)) { name <- c(name, "Mean tCr linewidth (ppm)") value <- c(value, round_dp(mean(params$fit_res$res_tab$tCr_lw), 4)) } if (!is.null(params$fit_res$res_tab$Cr_lw)) { name <- c(name, "Mean Cr linewidth (ppm)") value <- c(value, round_dp(mean(params$fit_res$res_tab$Cr_lw), 4)) } # if (!is.null(params$fit_res$res_tab$phase)) { # name <- c(name, "Zero-order phase (degrees)") # value <- c(value, round_dp(params$fit_res$res_tab$phase, 1)) # } # if (!is.null(params$fit_res$res_tab$phi1)) { # name <- c(name, "First-order phase (ms)") # value <- c(value, round_dp(params$fit_res$res_tab$phi1, 3)) # } # if (!is.null(params$fit_res$res_tab$shift)) { # name <- c(name, "Frequency offset (ppm)") # value <- c(value, round_dp(params$fit_res$res_tab$shift, 4)) # } if (params$w_ref_available) { name <- c(name, "Mean water amplitude", "Mean water suppression efficiency (%)") value <- c(value, format(mean(params$res_tab_molal$w_amp)), round_dp(mean(params$res_tab_molal$ws_eff), 3)) } if (params$fit_res$method == "ABFIT") { name <- c(name, "Mean fit quality number (FQN)", "Mean baseline effective d.f. per ppm", "Mean lineshape asymmetry") value <- c(value, round_dp(mean(params$fit_res$res_tab$FQN), 2), round_dp(mean(params$fit_res$res_tab$bl_ed_pppm), 2), round_dp(mean(params$fit_res$res_tab$asym), 2)) } boot_opts <- c("striped", "hover", "condensed") diag_tab <- data.frame(name, value) kableExtra::kable_styling(kableExtra::kbl(diag_tab, align = c("l", "r"), col.names = c("Name", "Value")), full_width = FALSE, position = "left", bootstrap_options = boot_opts) if (!is.null(params$p_vols)) { cat("### Partial volume measures\n") perc_vols <- c(params$p_vols[["WM"]], params$p_vols[["GM"]], params$p_vols[["CSF"]], params$p_vols[["Other"]]) p_vols_tab <- data.frame(type = c("WM", "GM", "CSF", "Other"), perc = perc_vols) kableExtra::kable_styling(kableExtra::kbl(p_vols_tab, align = c("l", "r"), col.names = c("Type", "% volume")), full_width = FALSE, position = "left", bootstrap_options = boot_opts) }
packageVersion("spant") Sys.time() print(params$fit_res$data, full = TRUE) print(params$w_ref, full = TRUE) print(argg)
Please cite the following if you found ABfit and spant useful in your research:
Wilson M. Adaptive baseline fitting for 1H MR spectroscopy analysis. Magn Reson Med. 2021 Jan;85(1):13-29. https://doi.org/10.1002/mrm.28385
Wilson, M. spant: An R package for magnetic resonance spectroscopy analysis. Journal of Open Source Software. 2021 6(67), 3646. https://doi.org/10.21105/joss.03646
Wilson M. Robust retrospective frequency and phase correction for single-voxel MR spectroscopy. Magn Reson Med. 2019 May;81(5):2878-2886. https://doi.org/10.1002/mrm.27605
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.