Functional neuroanatomy of musical object processing in Alzheimer's disease and frontotemporal dementia.
The 4 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
- [1] § Materials and methods › Participants ↔ Scripts/4_DemNpsych.R, lines 1–69 · score 0.82 · formal musical training, music listening, svPPA, week, demographics, hours
- [2] § Results › General characteristics of participant groups ↔ Scripts/4_DemNpsych.R, lines 1–69 · score 0.69 · music listening, symptom duration, musical training, educational, score, age
- [3] § Materials and methods › Data analyses › Behavioural data analysis ↔ Scripts/5_PostscanTasks.R, lines 43–109 · score 0.63 · rank sum, Shapiro Wilk, rfit, covariance, detection, pitch
- [4] § Materials and methods › Experimental protocol › Brain image acquisition ↔ Scripts/2_fMRIStimulusPresentation.m, the whole file · a weak match · score 0.55 · fMRI, TR, multiband, silent, scanner, stimulus
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
R · 288 lines · 9.2 KB · no license · 2 matches
- #Script for calculating summary statistics and group differences for demographics and npsych variables for
- #participants in musical object paradigm (MOP) study
- #Script written by Lucy Core
- #Clear R environment
- rm(list = ls())
- #Load packages
- library(readxl)
- library(dplyr)
- library(rstatix)
- #Import and view dataset
- MOP_DemNpsych <- read_excel() #insert file path
- View(MOP_DemNpsych)
- #DATA ORGANIZATION
- #Update column names to add underscores in place of spaces (to make calling variables easier later on)
- names(MOP_DemNpsych) <- gsub(" ", "_", names(MOP_DemNpsych))
- #Add diagnosisFTD column to combine svPPA and rtvFTD participants in one FTD group
- MOP_DemNpsych$DiagnosisFTD <- ifelse(MOP_DemNpsych$Diagnosis %in% c("svPPA", "rtvFTD"), "FTD", MOP_DemNpsych$Diagnosis)
- #Reorder factor levels
- MOP_DemNpsych$DiagnosisFTD <- factor(MOP_DemNpsych$DiagnosisFTD,
- levels = c("HV", "AD", "FTD"))
- #Rearrange order of columns so that DiagnosisFTD appears third rather than last
- MOP_DemNpsych <- MOP_DemNpsych %>%
- select(DRC_Code, Diagnosis, DiagnosisFTD, everything())
- #Look at column names
- names(MOP_DemNpsych)
- #Make list of all continuous variables
- continuous_variables <- c(
- "Age_at_fMRI",
- "Symptom_Duration_(Years)",
- "Highest_education_level",
- "Years_of_Formal_Musical_Training",
- "Total_hours_of_music_listening_per_week",
- "BMRQ_(/35)",
- "MMSE",
- "WASI:_Matrices",
- "WMSR-Digit_Span:_Forward_Score",
- "WMSR-Digit_Span:_Backward_Score",
- "Spatial_Span:_Forward_Score",
- "Spatial_Span:_Backward_Score",
- "BPVS:_Ceiling/Basal_Score",
- "BNT",
- "GDA:_Total",
- "CPAL",
- "JOL",
- "NART",
- "Fluency:_Phonemic",
- "Fluency:_Category",
- "VOSP_Object_Decision",
- "Trails_A:_Time",
- "Trails_B:_Time",
- "WAIS-R_Digit_Symbol",
- "ECAS-Social_Cognition_Screen",
- "Elevator_Attention:_Counting",
- "Elevator_Attention:_With_Distraction",
- "CFMT_(/18)",
- "Emotional_Hexagon:_Experiment_(/24)",
- "Pitch_detection_(QSTAC)_(/20)",
- "Better_Ear_Average_(250-4k)"
- )
- #Make list of all categorical variables
- categorical_variables <- c(
- "Sex",
- "Handedness",
- "Hearing_aids?"
- )
- #Convert continuous variables to numeric. Warnings will appear indicating that missing data codes (e.g., LT or NT) get turned into NA values
- MOP_DemNpsych[continuous_variables] <- lapply(MOP_DemNpsych[continuous_variables],
- function(x) as.numeric(as.character(x)))
- #FOR ALL PARTICIPANTS
- #Calculate summary statistics (range, mean, st dev) for age
- allparticipants_range_age <- range(MOP_DemNpsych$Age_at_fMRI)
- allparticipants_mean_age <- mean(MOP_DemNpsych$Age_at_fMRI)
- allparticipants_sd_age <- sd(MOP_DemNpsych$Age_at_fMRI)
- #Print summary stats for age
- print(allparticipants_range_age)
- print(allparticipants_mean_age)
- print(allparticipants_sd_age)
- #Count number of females and males
- allparticipants_num_females <- sum(MOP_DemNpsych$Sex == "F")
- allparticipants_num_males <- sum(MOP_DemNpsych$Sex == "M")
- #Print counts for sex
- print(allparticipants_num_females)
- print(allparticipants_num_males)
- #FOR PATIENTS ONLY
- patientsonly <- MOP_DemNpsych$Age_at_fMRI[MOP_DemNpsych$DiagnosisFTD %in% c("AD", "FTD")]
- patients_range_age <- range(patientsonly, na.rm = TRUE)
- patients_mean_age <- mean(patientsonly, na.rm = TRUE)
- patients_sd_age <- sd(patientsonly, na.rm = TRUE)
- print(patients_range_age)
- print(patients_mean_age)
- print(patients_sd_age)
- #MEAN AND STANDARD DEVIATION FOR CONTINUOUS VARIABLES SPLIT BY GROUP
- Mean_SD_ContinuousVariables <- MOP_DemNpsych %>%
- group_by(DiagnosisFTD) %>%
- summarise(across(all_of(continuous_variables),
- list(mean = ~ mean(., na.rm = TRUE),
- sd = ~ sd(., na.rm = TRUE)),
- .names = "{.col}_{.fn}"))
- #Flip rows and columns for easier readability
- Mean_SD_ContinuousVariables <- t(Mean_SD_ContinuousVariables)
- #Print means and st dev for each continuous variable
- print(Mean_SD_ContinuousVariables)
- #MISSING DATA FOR CONTINUOUS VARIABLES
- #Initialize a list to store NA counts
- na_counts <- list()
- #Loop through each continuous variable to calculate NA counts by group
- for (var in continuous_variables) {
- #Group by DiagnosisFTD and count NAs for the current variable
- na_count <- MOP_DemNpsych %>%
- group_by(DiagnosisFTD) %>%
- summarise(NA_Count = sum(is.na(.data[[var]]))) %>%
- mutate(Variable = var)
- #Add to the list
- na_counts[[var]] <- na_count
- }
- #Combine all results into a single data frame
- na_counts_df <- do.call(rbind, na_counts)
- #Reorder columns for better readability
- na_counts_df <- na_counts_df %>% select(Variable, DiagnosisFTD, NA_Count)
- # Print the counts
- print(na_counts_df)
- #GROUP DIFFERENCES FOR CONTINUOUS VARIABLES
- #Ensure p-values are displayed with appropriate decimal points
- options(scipen = 999) #Avoid scientific notation globally
- #Assess group differences using Kruskal-Wallis ANOVA
- kruskal_results <- lapply(continuous_variables, function(var) {
- #Ensure the variable is wrapped in backticks if it contains special characters
- result <- kruskal.test(reformulate("DiagnosisFTD", paste0("`", var, "`")), data = MOP_DemNpsych)
- #Format the p-value to show appropriate decimal points
- formatted_p_value <- format(result$p.value, digits = 4, scientific = FALSE)
- return(data.frame(Variable = var,
- p.value = formatted_p_value,
- Statistic = result$statistic))
- })
- # Combine results into a single data frame
- kruskal_results_df <- do.call(rbind, kruskal_results)
- #Print Kruskal Wallis ANOVA results
- print(kruskal_results_df)
- # Extract significant variables from Kruskal-Wallis results
- significant_kruskal_variables <- kruskal_results_df$Variable[kruskal_results_df$p.value < 0.05]
- # Initialize a list to store Dunn's test results
- dunn_results <- list()
- for (var in significant_kruskal_variables) {
- # Dunn's test
- dunn_test <- MOP_DemNpsych %>%
- dunn_test(as.formula(paste0("`", var, "` ~ DiagnosisFTD")),
- p.adjust.method = "none")
- # Compute medians
- medians <- MOP_DemNpsych %>%
- group_by(DiagnosisFTD) %>%
- summarise(median_value = median(.data[[var]], na.rm = TRUE), .groups = "drop")
- # Compute mean ranks
- meanranks <- MOP_DemNpsych %>%
- mutate(rank_val = rank(.data[[var]], na.last = "keep")) %>%
- group_by(DiagnosisFTD) %>%
- summarise(mean_rank = mean(rank_val, na.rm = TRUE), .groups = "drop")
- # Join medians + mean ranks for group1 and group2
- dunn_test <- dunn_test %>%
- left_join(medians, by = c("group1" = "DiagnosisFTD")) %>%
- rename(group1_median = median_value) %>%
- left_join(medians, by = c("group2" = "DiagnosisFTD")) %>%
- rename(group2_median = median_value) %>%
- left_join(meanranks, by = c("group1" = "DiagnosisFTD")) %>%
- rename(group1_meanrank = mean_rank) %>%
- left_join(meanranks, by = c("group2" = "DiagnosisFTD")) %>%
- rename(group2_meanrank = mean_rank) %>%
- mutate(direction = if_else(group1_meanrank < group2_meanrank,
- paste0(group1, " < ", group2),
- if_else(group1_meanrank > group2_meanrank,
- paste0(group1, " > ", group2),
- paste0(group1, " = ", group2))))
- dunn_results[[var]] <- dunn_test
- }
- # Print results
- for (var in significant_kruskal_variables) {
- cat("\nPost hoc Dunn's test results for variable:", var, "\n")
- print(dunn_results[[var]])
- }
- #Test for symptom duration to compare the two patient groups
- #Subset the data for DiagnosisFTD groups AD and svPPA
- patient_data <- MOP_DemNpsych %>%
- filter(DiagnosisFTD %in% c("AD", "FTD"))
- # Perform the Wilcoxon test for Symptom_Duration_(Years) between AD and svPPA
- sympduration_result <- wilcox.test(
- `Symptom_Duration_(Years)` ~ DiagnosisFTD,
- data = patient_data,
- exact = FALSE
- )
- #Print the test result
- print(sympduration_result)
- #Extract and print W statistic
- cat("W statistic:", sympduration_result$statistic, "\n")
- #COUNTS FOR CATEGORICAL VARIABLES SPLIT BY GROUP
- Counts_CategoricalVariables <- MOP_DemNpsych %>%
- group_by(DiagnosisFTD) %>%
- summarise(
- M_in_Sex = sum(Sex == "M", na.rm = TRUE),
- F_in_Sex = sum(Sex == "F", na.rm = TRUE),
- R_in_Handedness = sum(Handedness == "R", na.rm = TRUE),
- L_in_Handedness = sum(Handedness == "L", na.rm = TRUE),
- Yes_in_HearingAids = sum(`Hearing_aids?` == "Yes", na.rm = TRUE),
- No_in_HearingAids = sum(`Hearing_aids?` == "No", na.rm = TRUE)
- )
- #Print counts for each categorical variable
- print(Counts_CategoricalVariables)
- #GROUP DIFFERENCES IN CATEGORICAL VARIABLES
- #Initialize a list to store Fisher's Exact Test results
- fisher_results <- list()
- #Perform Fisher's Exact Test for each categorical variable
- for (var in categorical_variables) {
- #Create a contingency table for the variable and DiagnosisFTD
- contingency_table <- table(MOP_DemNpsych[[var]], MOP_DemNpsych$DiagnosisFTD)
- #Perform Fisher's Exact Test
- fisher_test <- fisher.test(contingency_table)
- #Store the results, conditionally including the estimate
- result <- data.frame(
- Variable = var,
- p.value = fisher_test$p.value
- )
- #Add to the results list
- fisher_results[[var]] <- result
- }
- #Combine results into a single data frame
- fisher_results_df <- do.call(rbind, fisher_results)
- #Print Fisher test results
- print(fisher_results_df)
4_DemNpsych.R, no license · at the source
Overview
- Brain Behaviour Group, Dementia Research Centre, Queen Square Institute of Neurology, University College London, London WC1N 3AR, United Kingdom
- National Hospital for Neurology and Neurosurgery, University College London Hospitals National Health Service Foundation Trust, London WC1N 3BG, United Kingdom
- Department of Translational Neuroscience and Stroke, Queen Square Institute of Neurology, University College London, London WC1N 3AR, United Kingdom
- Department of Imaging Neuroscience, Queen Square Institute of Neurology, University College London, London WC1N 3AR, United Kingdom
Abstract
Music, besides its emotional and social resonance, models a complex sensory environment exemplifying auditory objects corresponding to sources (musical instruments) and information streams (melodies). These musical dimensions can be variably preserved or blighted by neurodegenerative disease. Music is, therefore, an attractive way to investigate the neural mechanisms of sensory object processing in these diseases. Here, we assessed the functional neuroanatomy underlying the perceptual, semantic, and apperceptive processing of musical objects in Alzheimer’s disease and temporal variant frontotemporal dementia. We studied 35 patients (20 Alzheimer’s disease, 15 temporal variant frontotemporal dementia; 14 females; mean [standard deviation] age 70.3 [8.4] years) in relation to 25 cognitively healthy volunteers (16 females; age 69.5 [6.8] years). In a functional MRI experiment with sparse image acquisition to minimise the impact of scanner noise, participants passively listened to monophonic melodies. We varied timbre (same/
Reproduced under the paper's license (CC BY), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 4 matches between paragraphs and lines of code.
OSF azcf7
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
- 28 September 2026: the link answers (HTTP 200)
5 files
- Scripts/
1_RootMeanSquare.m , MATLAB, 47 lines - Scripts/
2_fMRIStimulusPresentati , MATLAB, 120 lines, 1 matchon.m - Scripts/
3_StimulusCharacteristic , R, 142 liness.R - Scripts/
4_DemNpsych.R , R, 288 lines, 2 matches - Scripts/
5_PostscanTasks.R , R, 110 lines, 1 match
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 5 scripts, each with its path and the digest of its content;
- 4 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data availability
The data that support the findings of this study are available on request from the corresponding author. In line with the ethics approvals governing the study, the data are not fully publicly available as they include information that could compromise the confidentiality of the research participants. Audio files of the musical stimuli and relevant scripts can be found on the Open Science Framework website here (https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 10 authors, 5 keywords, 2 funders, 126 references.
Cite
This paper
Core, L. B., Froud, S. A., Wastling, S., Jiang, J., Levett, B. A., Mancini, L., Dymerska, B., Hardy, C. J. D., Zeidman, P., & Warren, J. D. (2026). Functional neuroanatomy of musical object processing in Alzheimer's disease and frontotemporal dementia. Brain communications, 8(3), fcag161. https://
BibTeX
@article{core2026functio
author = {Core, Lucy B and Froud, Sophie A and Wastling, Stephen and Jiang, Jessica and Levett, Benjamin A and Mancini, Laura and Dymerska, Barbara and Hardy, Chris J D and Zeidman, Peter and Warren, Jason D},
title = {{Functional neuroanatomy of musical object processing in Alzheimer's disease and frontotemporal dementia}},
journal = {Brain communications},
year = {2026},
month = may,
volume = {8},
number = {3},
pages = {fcag161},
publisher = {Oxford University Press},
issn = {2632-1297},
doi = {10.1093/
url = {https://
pmid = {42146858},
pmcid = {PMC13178109}
}
RIS
TY - JOUR
AU - Core, Lucy B
AU - Froud, Sophie A
AU - Wastling, Stephen
AU - Jiang, Jessica
AU - Levett, Benjamin A
AU - Mancini, Laura
AU - Dymerska, Barbara
AU - Hardy, Chris J D
AU - Zeidman, Peter
AU - Warren, Jason D
TI - Functional neuroanatomy of musical object processing in Alzheimer's disease and frontotemporal dementia
T2 - Brain communications
J2 - Brain Commun
PY - 2026
DA - 2026/
VL - 8
IS - 3
SP - fcag161
SN - 2632-1297
PB - Oxford University Press
DO - 10.1093/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1093/
"type": "article-journal",
"title": "Functional neuroanatomy of musical object processing in Alzheimer's disease and frontotemporal dementia",
"container-title": "Brain communications",
"author": [
{
"family": "Core",
"given": "Lucy B"
},
{
"family": "Froud",
"given": "Sophie A"
},
{
"family": "Wastling",
"given": "Stephen"
},
{
"family": "Jiang",
"given": "Jessica"
},
{
"family": "Levett",
"given": "Benjamin A"
},
{
"family": "Mancini",
"given": "Laura"
},
{
"family": "Dymerska",
"given": "Barbara"
},
{
"family": "Hardy",
"given": "Chris J D"
},
{
"family": "Zeidman",
"given": "Peter"
},
{
"family": "Warren",
"given": "Jason D"
}
],
"container-title-short":
"volume": "8",
"issue": "3",
"page": "fcag161",
"DOI": "10.1093/
"PMID": "42146858",
"PMCID": "PMC13178109",
"ISSN": "2632-1297",
"publisher": "Oxford University Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
5
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1093/braincomms/fcag196 [code]
- Music processing in behavioural variant frontotemporal dementia and Alzheimer's disease: a functional MRI study.Journal: Brain communicationsIn common: fMRI, Alzheimer's / dementia, cognitive, 15 references, author Jason D Warren
- [2] doi:10.1016/j.nicl.2026.104012 [code]
- Structural-functional multilayer brain network properties and outcome of combined repetitive transcranial magnetic stimulation and psychotherapy for obsessive-compulsive disorder.Journal: NeuroImage. ClinicalIn common: survival, rstatix, car, 1 other tool, fMRI, 1 reference
- [3] doi:10.1038/s42003-026-10282-0 [code]
- Genetic risk of Alzheimer's disease is associated with loss of brain network segregation in midlife.Journal: Communications biologyIn common: rstatix, car, tidyverse, Alzheimer's / dementia, 2 references
- [4] doi:10.1111/ejn.70481 [code]
- Neural and Behavioral Tracking of Musical Phrases Occurs Without Temporal Regularity.Journal: The European journal of neuroscienceIn common: Psychtoolbox, rstatix, tidyverse, cognitive, 1 reference
- [5] doi:10.1093/bioinformatics/btag592 [code]
- Network-based stratification of allele-specific expression reveals patient subgroups in Huntington's disease.Journal: Bioinformatics (Oxford, England)In common: survival, rstatix, car, 1 other tool
- [6] doi:10.1093/braincomms/fcag272 [code]
- Strenuous physical activity is associated with a younger age of amyotrophic lateral sclerosis onset in two independent cohorts.Journal: Brain communicationsIn common: survival, rstatix, car, 1 other tool
- [7] doi:10.1038/s41398-026-04141-z [code]
- Effects on hippocampal activity following novel 5-HT4 receptor agonism in unmedicated patients with depression: the RESTAND study.Journal: Translational psychiatryIn common: rstatix, car, tidyverse, 1 reference
- [8] doi:10.1038/s41467-026-72934-3 [code]
- Multi-focal ultrasound neuromodulation to the dorsal anterior cingulate cortex disrupts behavioural and neural pain processing.Journal: Nature communicationsIn common: rstatix, car, tidyverse, fMRI, 1 reference
- [9] doi:10.1038/s41467-026-73865-9 [code]
- Histamine shapes the neurocomputational dynamics of human learning.Journal: Nature communicationsIn common: rstatix, car, tidyverse, cognitive, 1 reference
- [10] doi:10.1523/eneuro.0289-25.2026 [code]
- Reconstruction of Imagined Melody with Relative Pitch Decoding in Electrocorticography.Journal: eNeuroIn common: cognitive, 3 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 5 scripts, and 4 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:eb5d7f42049bb69b…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[.
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
