Closed ericearl closed 1 year ago
@perronea I found the old code here:
/home/exacloud/lustre1/fnl_lab/projects/ABCD/make_FD/update_with_FD.py
It looks like this:
#! /usr/bin/env python3
import csv
import math
import numpy as np
import os
import sys
def calc_FD(motion_array, brain_radius_in_mm=50):
# motion array: N-by-6 matrix, where N is the number of frames
# brain_radius_in_mm is just that, typically 50 for adolescents/adults and 35 for infants
# motion numbers
trans_mm = motion_array[:,:3]
rot_mm = np.multiply( motion_array[:,3:6], brain_radius_in_mm*math.pi/180 )
# backwards differences
difference = np.diff( np.concatenate((trans_mm, rot_mm), axis=1), axis=0 )
# framewise displacement vector
FD = np.sum(np.absolute(difference), axis=1)
# return back FD values from calc_FD function
return FD
# user inputs
mo_tsv = os.path.abspath(sys.argv[1])
# since rows have variable number of space delimiters
f = open(mo_tsv)
tokens = f.read().split()
rows = []
for idx, token in enumerate(tokens):
if idx % 12 == 0:
row = []
rows.append(row)
row.append(token)
mo_data = np.array(rows[1:], dtype='float')
FD = calc_FD(mo_data)
FD = np.insert(FD, 0, 0)
header = rows[0] + ['FD']
header_str = ' '.join(header)
new_mo_data = np.concatenate((mo_data, FD[:, None]), axis=1)
np.savetxt(os.path.join('new_motion_nums',os.path.basename(mo_tsv)), new_mo_data, fmt='%-6.6f' ,delimiter=' ', header=header_str)
From @madisoth: Looks like it was added to DCANBOLDProc in Feb 2021 (https://github.com/DCAN-Labs/dcan_bold_processing/commit/661d656d1594684910a319a562c2811434337524)
All the HCP-based pipelines post-Aug 2021 (for ABCD-BIDS, 0.1.0 and up) should have it
@perronea We have a piece of code we used to generate the "updated_motion" uploads for collection 3165, but I don't remember where it went. I believe you wrote it. Please find that code and integrate it into the "teardown" stage here. I think it was Python code. Let me know if you have questions.