Coverage for /builds/tms-localization/papers/tmsloc_proto/scripts/04_get_initial_m1_coords.py: 100%

24 statements  

« prev     ^ index     » next       coverage.py v7.5.1, created at 2024-05-17 07:31 +0000

1#!/usr/bin/env python 

2 

3""" 

4This is a wrapper for simnibs.mni2subject_coords() to transform Talairach/MNI coordinates to subject space. 

5""" 

6 

7import os 

8import pynibs 

9import pathlib 

10import argparse 

11import numpy as np 

12 

13from simnibs import mni2subject_coords 

14 

15parser = argparse.ArgumentParser(description='Transform MNI group coordinates to individual subject') 

16parser.add_argument('-s', '--fn_subject', 

17 help='Filename (incl. path) of subject object file', required=True, type=str) 

18parser.add_argument('-m', '--mesh_idx', 

19 help='Mesh idx', required=True) 

20 

21args = parser.parse_args() 

22 

23fn_subject = args.fn_subject 

24mesh_idx = args.mesh_idx 

25scripts_folder = pathlib.Path(__file__).parent.absolute() 

26 

27subject = pynibs.load_subject(fn_subject) 

28m2m_folder = os.path.join(subject.mesh[mesh_idx]["mesh_folder"], f"m2m_{subject.id}") 

29 

30# Coordinates taken from Maykaa et al., 2006, doi: 10.1016/j.neuroimage.2006.02.004 

31coords_tal = { 

32 'left-PMd': [-30, -4, 85], 

33 'left-PMv': [-50, 5, 22], 

34 'left-S1': [-40, -24, 50], 

35 'left-M1': [-37, -21, 58], 

36} 

37 

38# transform into MNI 

39coords_mni = {key: pynibs.tal2mni(coord, direction='tal2mni', style='nonlinear').round(2) for 

40 key, coord in coords_tal.items()} 

41 

42print(f"Transforming group level coordinates to subject space for {subject.id}:\n") 

43print(f"{' Target': <11} {'Subject space': <15}{'| '}{' MNI space'} | {'Talairach space'}") 

44print("=" * 65) 

45 

46for key in coords_mni.keys(): 

47 print(f"{key: >10}: " 

48 f"{np.array2string(mni2subject_coords(coords_mni[key], m2m_folder), formatter={'float_kind': '{0:+3.0f}'.format})} | " 

49 f"{np.array2string(np.array(coords_mni[key]), formatter={'float_kind': '{0:+3.0f}'.format})} | " 

50 f"{np.array2string(np.array(coords_tal[key]), formatter={'float_kind': '{0:+3.0f}'.format})}") 

51print("-" * 65)