Skip to content

Commit bfbde82

Browse files
committed
include component index in metadata
1 parent 4d2208e commit bfbde82

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

nipype/algorithms/confounds.py

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -578,12 +578,13 @@ def _run_interface(self, runtime):
578578

579579
components_file = os.path.join(os.getcwd(),
580580
self.inputs.components_file)
581+
components_header = self._make_headers(components.shape[1])
581582
np.savetxt(
582583
components_file,
583584
components,
584585
fmt=b"%.10f",
585586
delimiter='\t',
586-
header=self._make_headers(components.shape[1]),
587+
header='\t'.join(components_header),
587588
comments='')
588589

589590
if self.inputs.pre_filter and self.inputs.save_pre_filter:
@@ -617,10 +618,11 @@ def _run_interface(self, runtime):
617618
if self.inputs.save_metadata:
618619
metadata_file = self._list_outputs()['metadata_file']
619620
with open(metadata_file, 'w') as f:
620-
f.write('{}\t{}\t{}\t{}\n'.format(*list(metadata.keys())))
621-
for i in zip(*metadata.values()):
622-
f.write('{0[0]}\t{0[1]:.10f}\t{0[2]:.10f}\t'
623-
'{0[3]:.10f}\n'.format(i))
621+
f.write('{}\t{}\t{}\t{}\t{}\n'.format('component',
622+
*list(metadata.keys())))
623+
for i in zip(components_header, *metadata.values()):
624+
f.write('{0[0]}\t{0[1]}\t{0[2]:.10f}\t'
625+
'{0[3]:.10f}\t{0[4]:.10f}\n'.format(i))
624626

625627
return runtime
626628

@@ -650,10 +652,7 @@ def _make_headers(self, num_col):
650652
header = self.inputs.header_prefix if \
651653
isdefined(self.inputs.header_prefix) else self._header
652654
headers = ['{}{:02d}'.format(header, i) for i in range(num_col)]
653-
return '\t'.join(headers)
654-
655-
def _print_metadata(self, x, f):
656-
f.write('{0[0]}\t{0[1]:.10f}\t{0[2]:.10f}\t{0[3]:.10f}\n'.format(x))
655+
return headers
657656

658657

659658
class ACompCor(CompCor):
@@ -1274,26 +1273,28 @@ def compute_noise_components(imgseries, mask_images, components_criterion=0.5,
12741273
elif components_criterion == -1:
12751274
num_components = len(s)
12761275
else:
1277-
num_components = components_criterion
1276+
num_components = int(components_criterion)
12781277
if components is None:
12791278
components = u[:, :num_components]
12801279
metadata = {
1281-
'mask': np.array([i] * len(s)),
1282-
'singular_values': s,
1283-
'variance_explained': variance_explained,
1284-
'cumulative_variance_explained': cumulative_variance_explained
1280+
'mask': np.array([i] * num_components),
1281+
'singular_values': s[:num_components],
1282+
'variance_explained': variance_explained[:num_components],
1283+
'cumulative_variance_explained':
1284+
cumulative_variance_explained[:num_components]
12851285
}
12861286
else:
12871287
components = np.hstack((components, u[:, :num_components]))
1288-
metadata['mask'] = np.hstack((metadata['mask'], [i] * len(s)))
1288+
metadata['mask'] = np.hstack((metadata['mask'],
1289+
[i] * num_components))
12891290
metadata['singular_values'] = (
1290-
np.hstack((metadata['singular_values'], s)))
1291+
np.hstack((metadata['singular_values'], s[:num_components])))
12911292
metadata['variance_explained'] = (
12921293
np.hstack((metadata['variance_explained'],
1293-
variance_explained)))
1294+
variance_explained[:num_components])))
12941295
metadata['cumulative_variance_explained'] = (
12951296
np.hstack((metadata['cumulative_variance_explained'],
1296-
cumulative_variance_explained)))
1297+
cumulative_variance_explained[:num_components])))
12971298
if components is None and num_components != 0:
12981299
if self.inputs.failure_mode == 'error':
12991300
raise ValueError('No components found')

0 commit comments

Comments
 (0)