Skip to content

Commit c5fa777

Browse files
authored
Merge pull request #3674 from DimitriPapadopoulos/PERF
STY: Apply ruff/Perflint rules (PERF)
2 parents 8553b39 + 60aa048 commit c5fa777

File tree

20 files changed

+135
-161
lines changed

20 files changed

+135
-161
lines changed

nipype/algorithms/confounds.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -1290,11 +1290,8 @@ def combine_mask_files(mask_files, mask_method=None, mask_index=None):
12901290
raise ValueError(
12911291
f"mask_index {mask_index} must be less than number of mask files {len(mask_files)}"
12921292
)
1293-
masks = []
12941293
if mask_method == "none":
1295-
for filename in mask_files:
1296-
masks.append(nb.load(filename))
1297-
return masks
1294+
return [nb.load(filename) for filename in mask_files]
12981295

12991296
if mask_method == "union":
13001297
mask = None

nipype/algorithms/misc.py

+3-6
Original file line numberDiff line numberDiff line change
@@ -549,11 +549,9 @@ def maketypelist(rowheadings, shape, extraheadingBool, extraheading):
549549
if rowheadings:
550550
typelist.append(("heading", "a40"))
551551
if len(shape) > 1:
552-
for idx in range(1, (min(shape) + 1)):
553-
typelist.append((str(idx), float))
552+
typelist.extend((str(idx), float) for idx in range(1, (min(shape) + 1)))
554553
else:
555-
for idx in range(1, (shape[0] + 1)):
556-
typelist.append((str(idx), float))
554+
typelist.extend((str(idx), float) for idx in range(1, (shape[0] + 1)))
557555
if extraheadingBool:
558556
typelist.append((extraheading, "a40"))
559557
iflogger.info(typelist)
@@ -714,8 +712,7 @@ def _run_interface(self, runtime):
714712
mx = shape[0]
715713
else:
716714
mx = 1
717-
for idx in range(mx):
718-
extrafieldlist.append(self.inputs.extra_field)
715+
extrafieldlist.extend(self.inputs.extra_field for idx in range(mx))
719716
iflogger.info(len(extrafieldlist))
720717
output[extraheading] = extrafieldlist
721718
iflogger.info(output)

nipype/algorithms/modelgen.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -473,15 +473,15 @@ def _generate_design(self, infolist=None):
473473
"""Generate design specification for a typical fmri paradigm"""
474474
realignment_parameters = []
475475
if isdefined(self.inputs.realignment_parameters):
476-
for parfile in self.inputs.realignment_parameters:
477-
realignment_parameters.append(
478-
np.apply_along_axis(
479-
func1d=normalize_mc_params,
480-
axis=1,
481-
arr=np.loadtxt(parfile),
482-
source=self.inputs.parameter_source,
483-
)
476+
realignment_parameters.extend(
477+
np.apply_along_axis(
478+
func1d=normalize_mc_params,
479+
axis=1,
480+
arr=np.loadtxt(parfile),
481+
source=self.inputs.parameter_source,
484482
)
483+
for parfile in self.inputs.realignment_parameters
484+
)
485485
outliers = []
486486
if isdefined(self.inputs.outlier_files):
487487
for filename in self.inputs.outlier_files:

nipype/interfaces/ants/registration.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -190,10 +190,11 @@ def _transformation_constructor(self):
190190
delta_time = self.inputs.delta_time
191191
symmetry_type = self.inputs.symmetry_type
192192
retval = ["--transformation-model %s" % model]
193-
parameters = []
194-
for elem in (step_length, time_step, delta_time, symmetry_type):
195-
if elem is not traits.Undefined:
196-
parameters.append("%#.2g" % elem)
193+
parameters = [
194+
"%#.2g" % elem
195+
for elem in (step_length, time_step, delta_time, symmetry_type)
196+
if elem is not traits.Undefined
197+
]
197198
if len(parameters) > 0:
198199
if len(parameters) > 1:
199200
parameters = ",".join(parameters)
@@ -1134,8 +1135,7 @@ def _format_registration(self):
11341135
retval = []
11351136
for ii in range(len(self.inputs.transforms)):
11361137
retval.append("--transform %s" % (self._format_transform(ii)))
1137-
for metric in self._format_metric(ii):
1138-
retval.append("--metric %s" % metric)
1138+
retval.extend("--metric %s" % metric for metric in self._format_metric(ii))
11391139
retval.append("--convergence %s" % self._format_convergence(ii))
11401140
if isdefined(self.inputs.sigma_units):
11411141
retval.append(

nipype/interfaces/ants/segmentation.py

+14-17
Original file line numberDiff line numberDiff line change
@@ -813,16 +813,15 @@ def _list_outputs(self):
813813
os.getcwd(),
814814
self.inputs.out_prefix + "BrainSegmentation0N4." + self.inputs.image_suffix,
815815
)
816-
posteriors = []
817-
for i in range(len(self.inputs.segmentation_priors)):
818-
posteriors.append(
819-
os.path.join(
820-
os.getcwd(),
821-
self.inputs.out_prefix
822-
+ "BrainSegmentationPosteriors%02d." % (i + 1)
823-
+ self.inputs.image_suffix,
824-
)
816+
posteriors = [
817+
os.path.join(
818+
os.getcwd(),
819+
self.inputs.out_prefix
820+
+ "BrainSegmentationPosteriors%02d." % (i + 1)
821+
+ self.inputs.image_suffix,
825822
)
823+
for i in range(len(self.inputs.segmentation_priors))
824+
]
826825
outputs["BrainSegmentationPosteriors"] = posteriors
827826
outputs["CorticalThickness"] = os.path.join(
828827
os.getcwd(),
@@ -1488,15 +1487,13 @@ class JointFusion(ANTSCommand):
14881487

14891488
def _format_arg(self, opt, spec, val):
14901489
if opt == "exclusion_image_label":
1491-
retval = []
1492-
for ii in range(len(self.inputs.exclusion_image_label)):
1493-
retval.append(
1494-
"-e {}[{}]".format(
1495-
self.inputs.exclusion_image_label[ii],
1496-
self.inputs.exclusion_image[ii],
1497-
)
1490+
return " ".join(
1491+
"-e {}[{}]".format(
1492+
self.inputs.exclusion_image_label[ii],
1493+
self.inputs.exclusion_image[ii],
14981494
)
1499-
return " ".join(retval)
1495+
for ii in range(len(self.inputs.exclusion_image_label))
1496+
)
15001497
if opt == "patch_radius":
15011498
return f"-p {self._format_xarray(val)}"
15021499
if opt == "search_radius":

nipype/interfaces/base/core.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1047,10 +1047,11 @@ def __init__(self, check_import=True, *args, **kwargs):
10471047
if check_import:
10481048
import pkgutil
10491049

1050-
failed_imports = []
1051-
for pkg in (self._pkg,) + tuple(self.imports):
1052-
if pkgutil.find_loader(pkg) is None:
1053-
failed_imports.append(pkg)
1050+
failed_imports = [
1051+
pkg
1052+
for pkg in (self._pkg,) + tuple(self.imports)
1053+
if pkgutil.find_loader(pkg) is None
1054+
]
10541055
if failed_imports:
10551056
iflogger.warning(
10561057
"Unable to import %s; %s interface may fail to run",

nipype/interfaces/cmtk/cmtk.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,11 @@ def cmat(
328328
else:
329329
final_fibers_indices = final_fibers_idx
330330

331-
for idx in final_fibers_indices:
331+
finalfiberlength.extend(
332332
# compute length of fiber
333-
finalfiberlength.append(length(fib[idx][0]))
333+
length(fib[idx][0])
334+
for idx in final_fibers_indices
335+
)
334336

335337
# convert to array
336338
final_fiberlength_array = np.array(finalfiberlength)
@@ -463,9 +465,7 @@ def cmat(
463465
def save_fibers(oldhdr, oldfib, fname, indices):
464466
"""Stores a new trackvis file fname using only given indices"""
465467
hdrnew = oldhdr.copy()
466-
outstreams = []
467-
for i in indices:
468-
outstreams.append(oldfib[i])
468+
outstreams = [oldfib[i] for i in indices]
469469
n_fib_out = len(outstreams)
470470
hdrnew["n_count"] = n_fib_out
471471
iflogger.info("Writing final non-orphan fibers as %s", fname)

nipype/interfaces/dipy/simulate.py

+11-14
Original file line numberDiff line numberDiff line change
@@ -222,20 +222,17 @@ def _run_interface(self, runtime):
222222
mevals = [sf_evals] * nsticks + [[ba_evals[d]] * 3 for d in range(nballs)]
223223

224224
b0 = b0_im.get_fdata()[msk > 0]
225-
args = []
226-
for i in range(nvox):
227-
args.append(
228-
{
229-
"fractions": fracs[i, ...].tolist(),
230-
"sticks": [
231-
tuple(dirs[i, j : j + 3]) for j in range(nsticks + nballs)
232-
],
233-
"gradients": gtab,
234-
"mevals": mevals,
235-
"S0": b0[i],
236-
"snr": self.inputs.snr,
237-
}
238-
)
225+
args = [
226+
{
227+
"fractions": fracs[i, ...].tolist(),
228+
"sticks": [tuple(dirs[i, j : j + 3]) for j in range(nsticks + nballs)],
229+
"gradients": gtab,
230+
"mevals": mevals,
231+
"S0": b0[i],
232+
"snr": self.inputs.snr,
233+
}
234+
for i in range(nvox)
235+
]
239236

240237
n_proc = self.inputs.n_proc
241238
if n_proc == 0:

nipype/interfaces/freesurfer/preprocess.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -594,10 +594,10 @@ def _list_outputs(self):
594594
raise Exception(
595595
"Not taking frame manipulations into account- please warn the developers"
596596
)
597-
outfiles = []
598597
outfile = self._get_outfilename()
599-
for i in range(tp):
600-
outfiles.append(fname_presuffix(outfile, suffix="%03d" % (i + 1)))
598+
outfiles = [
599+
fname_presuffix(outfile, suffix="%03d" % (i + 1)) for i in range(tp)
600+
]
601601
outfile = outfiles
602602
outputs["out_file"] = outfile
603603
return outputs

nipype/interfaces/fsl/fix.py

+10-9
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,11 @@ class TrainingSetCreator(BaseInterface):
105105
_always_run = True
106106

107107
def _run_interface(self, runtime):
108-
mel_icas = []
109-
for item in self.inputs.mel_icas_in:
110-
if os.path.exists(os.path.join(item, "hand_labels_noise.txt")):
111-
mel_icas.append(item)
112-
108+
mel_icas = [
109+
item
110+
for item in self.inputs.mel_icas_in
111+
if os.path.exists(os.path.join(item, "hand_labels_noise.txt"))
112+
]
113113
if len(mel_icas) == 0:
114114
raise Exception(
115115
"%s did not find any hand_labels_noise.txt files in the following directories: %s"
@@ -119,10 +119,11 @@ def _run_interface(self, runtime):
119119
return runtime
120120

121121
def _list_outputs(self):
122-
mel_icas = []
123-
for item in self.inputs.mel_icas_in:
124-
if os.path.exists(os.path.join(item, "hand_labels_noise.txt")):
125-
mel_icas.append(item)
122+
mel_icas = [
123+
item
124+
for item in self.inputs.mel_icas_in
125+
if os.path.exists(os.path.join(item, "hand_labels_noise.txt"))
126+
]
126127
outputs = self._outputs().get()
127128
outputs["mel_icas_out"] = mel_icas
128129
return outputs

nipype/interfaces/io.py

+5-10
Original file line numberDiff line numberDiff line change
@@ -959,10 +959,7 @@ def _list_outputs(self):
959959
if isdefined(self.inputs.bucket_path):
960960
template = os.path.join(self.inputs.bucket_path, template)
961961
if not args:
962-
filelist = []
963-
for fname in bkt_files:
964-
if re.match(template, fname):
965-
filelist.append(fname)
962+
filelist = [fname for fname in bkt_files if re.match(template, fname)]
966963
if len(filelist) == 0:
967964
msg = "Output key: {} Template: {} returned no files".format(
968965
key,
@@ -2720,16 +2717,14 @@ class JSONFileGrabber(IOBase):
27202717
def _list_outputs(self):
27212718
import simplejson
27222719

2723-
outputs = {}
27242720
if isdefined(self.inputs.in_file):
27252721
with open(self.inputs.in_file) as f:
2726-
data = simplejson.load(f)
2722+
outputs = simplejson.load(f)
27272723

2728-
if not isinstance(data, dict):
2724+
if not isinstance(outputs, dict):
27292725
raise RuntimeError("JSON input has no dictionary structure")
2730-
2731-
for key, value in list(data.items()):
2732-
outputs[key] = value
2726+
else:
2727+
outputs = {}
27332728

27342729
if isdefined(self.inputs.defaults):
27352730
defaults = self.inputs.defaults

nipype/interfaces/mne/base.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,7 @@ def _list_outputs(self):
132132
if val:
133133
value_list = simplify_list(val)
134134
if isinstance(value_list, list):
135-
out_files = []
136-
for value in value_list:
137-
out_files.append(op.abspath(value))
135+
out_files = [op.abspath(value) for value in value_list]
138136
elif isinstance(value_list, (str, bytes)):
139137
out_files = op.abspath(value_list)
140138
else:

nipype/interfaces/nilearn.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,7 @@ class SignalExtraction(NilearnBaseInterface, SimpleInterface):
9898
def _run_interface(self, runtime):
9999
maskers = self._process_inputs()
100100

101-
signals = []
102-
for masker in maskers:
103-
signals.append(masker.fit_transform(self.inputs.in_file))
101+
signals = [masker.fit_transform(self.inputs.in_file) for masker in maskers]
104102
region_signals = np.hstack(signals)
105103

106104
output = np.vstack((self.inputs.class_labels, region_signals.astype(str)))
@@ -127,10 +125,10 @@ def _process_inputs(self):
127125
else: # 4d labels
128126
n_labels = label_data.shape[3]
129127
if self.inputs.incl_shared_variance: # independent computation
130-
for img in nli.iter_img(label_data):
131-
maskers.append(
132-
nl.NiftiMapsMasker(self._4d(img.dataobj, img.affine))
133-
)
128+
maskers.extend(
129+
nl.NiftiMapsMasker(self._4d(img.dataobj, img.affine))
130+
for img in nli.iter_img(label_data)
131+
)
134132
else: # one computation fitting all
135133
maskers.append(nl.NiftiMapsMasker(label_data))
136134

nipype/interfaces/nipy/model.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,7 @@ def _run_interface(self, runtime):
138138
hpf = 0
139139
drift_model = "Blank"
140140

141-
reg_names = []
142-
for reg in session_info[0]["regress"]:
143-
reg_names.append(reg["name"])
144-
141+
reg_names = [reg["name"] for reg in session_info[0]["regress"]]
145142
reg_vals = np.zeros((nscans, len(reg_names)))
146143
for i in range(len(reg_names)):
147144
reg_vals[:, i] = np.array(session_info[0]["regress"][i]["val"]).reshape(

nipype/pipeline/engine/utils.py

+7-10
Original file line numberDiff line numberDiff line change
@@ -1489,13 +1489,12 @@ def clean_working_directory(
14891489
files2remove.append(f)
14901490
else:
14911491
if not str2bool(config["execution"]["keep_inputs"]):
1492-
input_files = []
1493-
inputdict = inputs.trait_get()
1494-
input_files.extend(walk_outputs(inputdict))
1495-
input_files = [path for path, type in input_files if type == "f"]
1496-
for f in walk_files(cwd):
1497-
if f in input_files and f not in needed_files:
1498-
files2remove.append(f)
1492+
input_files = {
1493+
path for path, type in walk_outputs(inputs.trait_get()) if type == "f"
1494+
}
1495+
files2remove.extend(
1496+
f for f in walk_files(cwd) if f in input_files and f not in needed_files
1497+
)
14991498
logger.debug("Removing files: %s", ";".join(files2remove))
15001499
for f in files2remove:
15011500
os.remove(f)
@@ -1717,9 +1716,7 @@ def topological_sort(graph, depth_first=False):
17171716
components = nx.connected_components(G)
17181717
for desc in components:
17191718
group += 1
1720-
indices = []
1721-
for node in desc:
1722-
indices.append(nodesort.index(node))
1719+
indices = [nodesort.index(node) for node in desc]
17231720
nodes.extend(
17241721
np.array(nodesort)[np.array(indices)[np.argsort(indices)]].tolist()
17251722
)

0 commit comments

Comments
 (0)