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
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-17 07:31 +0000
1#!/usr/bin/env python
3"""
4This is a wrapper for simnibs.mni2subject_coords() to transform Talairach/MNI coordinates to subject space.
5"""
7import os
8import pynibs
9import pathlib
10import argparse
11import numpy as np
13from simnibs import mni2subject_coords
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)
21args = parser.parse_args()
23fn_subject = args.fn_subject
24mesh_idx = args.mesh_idx
25scripts_folder = pathlib.Path(__file__).parent.absolute()
27subject = pynibs.load_subject(fn_subject)
28m2m_folder = os.path.join(subject.mesh[mesh_idx]["mesh_folder"], f"m2m_{subject.id}")
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}
38# transform into MNI
39coords_mni = {key: pynibs.tal2mni(coord, direction='tal2mni', style='nonlinear').round(2) for
40 key, coord in coords_tal.items()}
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)
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)