example.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """
  2. Example for how to load data and display results on one subject's cortical surface.
  3. """
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. import utils
  7. import os
  8. from scipy.stats import zscore
  9. # Get path to data files
  10. fdir = os.path.abspath('../')
  11. modality = "listening"
  12. subject = "01"
  13. # Load training data for subject 1, Listening dataset
  14. fname_trn = os.path.join(fdir, 'responses', 'subject{}_{}_fmri_data_trn.hdf'.format(subject, modality))
  15. trndata = utils.load_data(fname_trn)
  16. print(trndata.keys())
  17. # Load validation data for subject 1, Listening dataset
  18. # story_11 is the validation story ==> Check README
  19. fname_val = os.path.join(fdir, 'responses', 'subject{}_{}_fmri_data_val.hdf'.format(subject, modality))
  20. valdata = utils.load_data(fname_val, "story_11")["story_11"]
  21. # Correlate repetitions across time points (per voxel)
  22. valdata_corr = np.array(list(map(lambda c1,c2: (zscore(c1)*zscore(c2)).mean(0), valdata[0].T, valdata[1].T)))
  23. # Map to subject flatmap
  24. map_file = os.path.join(fdir, 'mappers', 'subject{}_mappers.hdf'.format(subject))
  25. flatmap = utils.map_to_flat(valdata_corr, map_file)
  26. # Plot flatmap
  27. fig, ax = plt.subplots()
  28. _ = ax.imshow(flatmap, cmap='inferno')
  29. ax.axis('off')
  30. plt.show()