Source code for pybraincompare.testing.test_correlation

#!/usr/bin/python

"""
Test regional and whole brain correlation scores
"""
from pybraincompare.compare.mrutils import make_binary_deletion_mask,do_mask
from numpy.testing import assert_array_equal, assert_almost_equal, assert_equal
from pybraincompare.compare.maths import calculate_correlation
from pybraincompare.mr.datasets import get_data_directory
from nose.tools import assert_true, assert_false
from scipy.stats import norm, pearsonr
import nibabel
import random
import pandas
import numpy
import os

# https://github.com/NeuroVault/NeuroVault/issues/133#issuecomment-74464393
'''Test that pybraincompare returns same simulated correlations'''
[docs]def test_simulated_correlations(): # Get standard brain mask mr_directory = get_data_directory() standard = "%s/MNI152_T1_2mm_brain_mask.nii.gz" %(mr_directory) thresholds = [0.0,0.5,1.0,1.5,1.96,2.0] # Generate random data inside brain mask, run 10 iterations standard = nibabel.load(standard) number_values = len(numpy.where(standard.get_data()!=0)[0]) numpy.random.seed(9191986) for x in range(0,10): data1 = norm.rvs(size=number_values) data2 = norm.rvs(size=number_values) corr = pearsonr(data1,data2)[0] # Put into faux nifti images mr1 = numpy.zeros(standard.shape) mr1[standard.get_data()!=0] = data1 mr1 = nibabel.nifti1.Nifti1Image(mr1,affine=standard.get_affine(),header=standard.get_header()) mr2 = numpy.zeros(standard.shape) mr2[standard.get_data()!=0] = data2 mr2 = nibabel.nifti1.Nifti1Image(mr2,affine=standard.get_affine(),header=standard.get_header()) pdmask = make_binary_deletion_mask([mr1,mr2]) pdmask = nibabel.Nifti1Image(pdmask,header=mr1.get_header(),affine=mr1.get_affine()) score = calculate_correlation(images = [mr1,mr2],mask=pdmask) assert_almost_equal(corr,score,decimal=5)