Skip to content

Commit 5c02815

Browse files
STY: Apply ruff/Perflint rule PERF401
PERF401 Use a list comprehension to create a transformed list
1 parent e03ab6f commit 5c02815

File tree

20 files changed

+114
-139
lines changed

20 files changed

+114
-139
lines changed

nipype/algorithms/confounds.py

Lines changed: 1 addition & 4 deletions
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

Lines changed: 3 additions & 6 deletions
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(0, mx):
718-
extrafieldlist.append(self.inputs.extra_field)
715+
extrafieldlist.extend(self.inputs.extra_field for idx in range(0, mx))
719716
iflogger.info(len(extrafieldlist))
720717
output[extraheading] = extrafieldlist
721718
iflogger.info(output)

nipype/algorithms/modelgen.py

Lines changed: 8 additions & 8 deletions
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

Lines changed: 6 additions & 6 deletions
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

Lines changed: 14 additions & 17 deletions
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

Lines changed: 5 additions & 4 deletions
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

Lines changed: 5 additions & 5 deletions
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

Lines changed: 11 additions & 14 deletions
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 10 additions & 9 deletions
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

Lines changed: 1 addition & 4 deletions
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,

nipype/interfaces/mne/base.py

Lines changed: 1 addition & 3 deletions
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

Lines changed: 5 additions & 7 deletions
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

Lines changed: 1 addition & 4 deletions
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

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1493,9 +1493,9 @@ def clean_working_directory(
14931493
inputdict = inputs.trait_get()
14941494
input_files.extend(walk_outputs(inputdict))
14951495
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)
1496+
files2remove.extend(
1497+
f for f in walk_files(cwd) if f in input_files and f not in needed_files
1498+
)
14991499
logger.debug("Removing files: %s", ";".join(files2remove))
15001500
for f in files2remove:
15011501
os.remove(f)
@@ -1717,9 +1717,7 @@ def topological_sort(graph, depth_first=False):
17171717
components = nx.connected_components(G)
17181718
for desc in components:
17191719
group += 1
1720-
indices = []
1721-
for node in desc:
1722-
indices.append(nodesort.index(node))
1720+
indices = [nodesort.index(node) for node in desc]
17231721
nodes.extend(
17241722
np.array(nodesort)[np.array(indices)[np.argsort(indices)]].tolist()
17251723
)

nipype/pipeline/engine/workflows.py

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -301,11 +301,12 @@ def disconnect(self, *args):
301301
edge_data = self._graph.get_edge_data(srcnode, dstnode, {"connect": []})
302302
ed_conns = [(c[0], c[1]) for c in edge_data["connect"]]
303303

304-
remove = []
305-
for edge in conn:
306-
if edge in ed_conns:
307-
# idx = ed_conns.index(edge)
308-
remove.append((edge[0], edge[1]))
304+
remove = [
305+
# idx = ed_conns.index(edge)
306+
(edge[0], edge[1])
307+
for edge in conn
308+
if edge in ed_conns
309+
]
309310

310311
logger.debug("disconnect(): remove list %s", str(remove))
311312
for el in remove:
@@ -574,8 +575,9 @@ def export(
574575
)
575576
lines.append(connect_template2 % line_args)
576577
functionlines = ["# Functions"]
577-
for function in functions:
578-
functionlines.append(pickle.loads(function).rstrip())
578+
functionlines.extend(
579+
pickle.loads(function).rstrip() for function in functions
580+
)
579581
all_lines = importlines + functionlines + lines
580582

581583
if not filename:
@@ -846,10 +848,11 @@ def _get_inputs(self):
846848
if isinstance(node, Workflow):
847849
setattr(inputdict, node.name, node.inputs)
848850
else:
849-
taken_inputs = []
850-
for _, _, d in self._graph.in_edges(nbunch=node, data=True):
851-
for cd in d["connect"]:
852-
taken_inputs.append(cd[1])
851+
taken_inputs = [
852+
cd[1]
853+
for _, _, d in self._graph.in_edges(nbunch=node, data=True)
854+
for cd in d["connect"]
855+
]
853856
unconnectedinputs = TraitedSpec()
854857
for key, trait in list(node.inputs.items()):
855858
if key not in taken_inputs:
@@ -1091,8 +1094,10 @@ def _get_dot(
10911094
subnodefullname = ".".join(hierarchy + [subnode.fullname])
10921095
nodename = nodefullname.replace(".", "_")
10931096
subnodename = subnodefullname.replace(".", "_")
1094-
for _ in self._graph.get_edge_data(node, subnode)["connect"]:
1095-
dotlist.append(f"{nodename} -> {subnodename};")
1097+
dotlist.extend(
1098+
f"{nodename} -> {subnodename};"
1099+
for _ in self._graph.get_edge_data(node, subnode)["connect"]
1100+
)
10961101
logger.debug("connection: %s", dotlist[-1])
10971102
# add between workflow connections
10981103
for u, v, d in self._graph.edges(data=True):

0 commit comments

Comments
 (0)