ANTsX / ANTs

Advanced Normalization Tools (ANTs)
Apache License 2.0
1.21k stars 381 forks source link

Regarding DBM, in Jacobian group analysis #1794

Closed JinDJsuper closed 1 month ago

JinDJsuper commented 2 months ago

Operating system and version

Ubuntu 20.04

CPU architecture

x86_64 (PC, Intel Mac, other Intel/AMD)

ANTs code version

ants-2.5.0

ANTs installation type

Compiled from source

Summary of the problem

I would like to know if using DBM methods for two-sample t-tests in group analysis has a significant impact when generating Jacobian data, specifically whether values like 1 0 or 1 1 have substantial effects. I have already generated Jacobian data for two groups. I want to know what software others typically use for analysis. I have tried using FSL's randomise and SPM for general linear model-based two-sample t-tests, but the results still show some differences. Do you have any suggestions for the DBM analysis process?

Commands to reproduce the problem.

CreateJacobianDeterminantImage 3 Warp.nii.gz LogJacobian.nii.gz 1 0 or CreateJacobianDeterminantImage 3 Warp.nii.gz LogJacobian.nii.gz 1 1

Output of the command with verbose output.

-

Data to reproduce the problem

-

ntustison commented 2 months ago

Have you seen this simple DBM example in our ANTsR/ANTsPy tutorial?

JinDJsuper commented 2 months ago

Have you seen this simple DBM example in our ANTsR/ANTsPy tutorial?

Okay, this is the first time I've seen this. I will check out this example.

thank you

JinDJsuper commented 2 months ago

Have you seen this simple DBM example in our ANTsR/ANTsPy tutorial?

hi, I've got a good understanding of using ANTsR, and I've carefully reviewed the DBM example. Actually, the preprocessing and registration processes were all completed in ANTs. However, I still don’t fully understand the statistical analysis part. This example converts the Jacobian into a matrix and uses glm for statistical analysis. I want to know if it's possible to perform a two-sample t-test and include covariates, and how to interpret the results. For instance, `> logJacobianPvalues <- dbm$pValue[5,]

logJacobianQvalues <- p.adjust( logJacobianPvalues, method = "fdr" )` FSL or SPM usually generates a mask to show where significant changes are; does ANTsR have a command for this as well?

ntustison commented 2 months ago

Do you know how to perform a two-sample t-test with covariates in R? The application in ANTsR is exactly the same. In particular, study these lines from the example:

> # Create simulated outcomes and covariates
> neuroCondition <- rnorm( numberOfSubjects )
> age <- sample( 40:70, numberOfSubjects, replace = TRUE )
> sex <- sample( c( 0, 1 ), numberOfSubjects, replace = TRUE )
> covariates <- data.frame( neuroCondition = neuroCondition, age = age, sex = sex, brainVolume = brainVolume)
> rformula <- "neuroCondition ~ age + sex + brainVolume + logJacobian"
> 
> # Run image-based regression
> dbm <- ilr( covariates, list( logJacobian = logJacobian ), rformula )
gdevenyi commented 2 months ago

This summer school documentation on DBM methods in R may be of use https://mouse-imaging-centre.github.io/summer_school2017/

JinDJsuper commented 2 months ago

perform a two-sample t-test with covariates in R?

thank for your reply

I can use R to perform a two-sample t-test with covariates. I understand that you mean editing the data using a two-sample t-test. However, since this jacobian image has already been converted into matrix format, how should I interpret these results? Should I convert them into visual parameters, such as marking heatmaps in the brain?

JinDJsuper commented 2 months ago

This summer school documentation on DBM methods in R may be of use https://mouse-imaging-centre.github.io/summer_school2017/

Thank you for your response. I think this will be very helpful to me. I will carefully review the content on the website.

ntustison commented 2 months ago

In the example, I added how to create an overlay image of the actual qvalues.

> # Create overlay q-value image
> logJacobianQvaluesImage <- matrixToImages( matrix( data = logJacobianQvalues, nrow = 1 ), rtemplateGM )