Skip to content

Commit 7650ae6

Browse files
committed
Fix errors reported by the ruff flake8-comprehensions (C4) plugin
1 parent 20dea74 commit 7650ae6

35 files changed

+71
-82
lines changed

lib/bx/align/core.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -312,9 +312,7 @@ def reverse_complement(self):
312312
if self.empty:
313313
text = None
314314
else:
315-
comp = [ch for ch in self.text.translate(DNA_COMP)]
316-
comp.reverse()
317-
text = "".join(comp)
315+
text = self.text.translate(DNA_COMP)[::-1]
318316
new = Component(self.src, start, self.size, strand, self._src_size, text)
319317
if self.empty:
320318
new.empty = True
@@ -386,7 +384,7 @@ def coord_to_col(self, pos):
386384
if pos < start or pos > end:
387385
raise ValueError("Range error: %d not in %d-%d" % (pos, start, end))
388386
if not self.index:
389-
self.index = list()
387+
self.index = []
390388
if self.strand == "-":
391389
# nota bene: for - strand self.index[x] maps to one column
392390
# higher than is actually associated with the position; thus

lib/bx/align/lav.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ def write(self, alignment):
476476
self.block += 1
477477

478478
def close(self):
479-
keys = [key for key in self.blockHash]
479+
keys = list(self.blockHash)
480480
keys = sort_keys_by_chrom(keys)
481481
for key in keys:
482482
(src1, strand1, src2, strand2) = key

lib/bx/align/score.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ def __init__(
3333
if gap2 is None:
3434
gap2 = gap1 # (scheme with gap1=gap2=None is legit)
3535
if isinstance(alphabet1, str):
36-
alphabet1 = [ch for ch in alphabet1]
36+
alphabet1 = list(alphabet1)
3737
if isinstance(alphabet2, str):
38-
alphabet2 = [ch for ch in alphabet2]
38+
alphabet2 = list(alphabet2)
3939
self.table = ones((text1_range, text2_range), typecode)
4040
self.table *= default
4141
self.gap_open = gap_open
@@ -143,7 +143,7 @@ def read_scoring_scheme(f, gap_open, gap_extend, gap1="-", gap2=None, **kwargs):
143143
if isinstance(f, str):
144144
f = open(f)
145145
close_it = True
146-
ss = build_scoring_scheme("".join([line for line in f]), gap_open, gap_extend, gap1=gap1, gap2=gap2, **kwargs)
146+
ss = build_scoring_scheme("".join(list(f)), gap_open, gap_extend, gap1=gap1, gap2=gap2, **kwargs)
147147
if close_it:
148148
f.close()
149149
return ss

lib/bx/align/sitemask/cpg.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ def __call__(self, block):
8383

8484

8585
def mask_columns(masklist, text, mask):
86-
templist = list()
86+
templist = []
8787
for position in masklist:
8888
if text[position] != "-":
8989
templist.append(position)
9090
templist.append(len(text)) # Add the end of the text
9191
# cut string
92-
newtext = list()
92+
newtext = []
9393
c = 0
9494
for position in templist:
9595
newtext.append(text[c:position])

lib/bx/bitset_builders.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def binned_bitsets_from_file(
2828
"""
2929
last_chrom = None
3030
last_bitset = None
31-
bitsets = dict()
31+
bitsets = {}
3232
for line in f:
3333
if line.startswith("#") or line.isspace():
3434
continue
@@ -68,7 +68,7 @@ def binned_bitsets_from_bed_file(
6868
"""
6969
last_chrom = None
7070
last_bitset = None
71-
bitsets = dict()
71+
bitsets = {}
7272
offset = 0
7373
for line in f:
7474
if line.startswith("#") or line.isspace():
@@ -108,7 +108,7 @@ def binned_bitsets_proximity(f, chrom_col=0, start_col=1, end_col=2, strand_col=
108108
"""Read a file into a dictionary of bitsets"""
109109
last_chrom = None
110110
last_bitset = None
111-
bitsets = dict()
111+
bitsets = {}
112112
for line in f:
113113
if line.startswith("#"):
114114
continue
@@ -143,7 +143,7 @@ def binned_bitsets_from_list(list=[]):
143143
"""Read a list into a dictionary of bitsets"""
144144
last_chrom = None
145145
last_bitset = None
146-
bitsets = dict()
146+
bitsets = {}
147147
for l in list:
148148
chrom = l[0]
149149
if chrom != last_chrom:

lib/bx/cookbook/argparse.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -304,15 +304,15 @@ def _format_usage(self, usage, actions, groups, prefix):
304304

305305
# if usage is specified, use that
306306
if usage is not None:
307-
usage = usage % dict(prog=self._prog)
307+
usage = usage % {"prog": self._prog}
308308

309309
# if no optionals or positionals are available, usage is just prog
310310
elif usage is None and not actions:
311-
usage = "%(prog)s" % dict(prog=self._prog)
311+
usage = "%(prog)s" % {"prog": self._prog}
312312

313313
# if optionals and positionals are available, calculate usage
314314
elif usage is None:
315-
prog = "%(prog)s" % dict(prog=self._prog)
315+
prog = "%(prog)s" % {"prog": self._prog}
316316

317317
# split optionals from positionals
318318
optionals = []
@@ -486,7 +486,7 @@ def _format_actions_usage(self, actions, groups):
486486

487487
def _format_text(self, text):
488488
if "%(prog)" in text:
489-
text = text % dict(prog=self._prog)
489+
text = text % {"prog": self._prog}
490490
text_width = self._width - self._current_indent
491491
indent = " " * self._current_indent
492492
return self._fill_text(text, text_width, indent) + "\n\n"
@@ -704,7 +704,7 @@ def __str__(self):
704704
format = "%(message)s"
705705
else:
706706
format = "argument %(argument_name)s: %(message)s"
707-
return format % dict(message=self.message, argument_name=self.argument_name)
707+
return format % {"message": self.message, "argument_name": self.argument_name}
708708

709709

710710
class ArgumentTypeError(Exception):

lib/bx/cookbook/doc_optparse.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def parse(docstring, arglist=None):
8585
action = "store"
8686
k = k.split("=")[0]
8787
opt_strings.append(k)
88-
p.add_option(*opt_strings, **dict(action=action, help=help.strip()))
88+
p.add_option(*opt_strings, **{"action": action, "help": help.strip()})
8989
except (IndexError, ValueError):
9090
raise ParsingError("Cannot parse the option string correctly")
9191
return p.parse_args(arglist)

lib/bx/filter.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def __call__(self, block):
2828

2929
class Pipeline(Filter):
3030
def __init__(self, **kwargs):
31-
self.pipeline = list()
31+
self.pipeline = []
3232

3333
def __call__(self, block):
3434
for function in self.pipeline:

lib/bx/interval_index_file.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def new_indexed_access(self, data_filename, index_filename=None, keep_open=False
178178
return self.indexed_access_class(data_filename, index_filename, keep_open, **kwargs)
179179

180180
def get(self, src, start, end):
181-
return [block for block in self.get_as_iterator(src, start, end)]
181+
return list(self.get_as_iterator(src, start, end))
182182

183183
def get_as_iterator(self, src, start, end):
184184
for block, _index, _offset in self.get_as_iterator_with_index_and_offset(src, start, end):
@@ -257,7 +257,7 @@ def open_data(self):
257257
return f
258258

259259
def get(self, src, start, end):
260-
return [val for val in self.get_as_iterator(src, start, end)]
260+
return list(self.get_as_iterator(src, start, end))
261261

262262
def get_as_iterator(self, src, start, end):
263263
for val, _index, _offset in self.get_as_iterator_with_index_and_offset(src, start, end):
@@ -287,7 +287,7 @@ class Indexes:
287287
"""A set of indexes, each identified by a unique name"""
288288

289289
def __init__(self, filename=None):
290-
self.indexes = dict()
290+
self.indexes = {}
291291
if filename is not None:
292292
self.open(filename)
293293

@@ -312,7 +312,7 @@ def find(self, name, start, end):
312312

313313
def open(self, filename):
314314
self.filename = filename
315-
self.offsets = dict() # (will map key to (offset,value_size))
315+
self.offsets = {} # (will map key to (offset,value_size))
316316
with open(filename, "rb") as f:
317317
magic, version, length = read_packed(f, ">3I")
318318
if magic != MAGIC:

lib/bx/intervals/cluster_tests.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def test_large_sorted(self):
4949
pairs = [(2 * i + 1, 2 * i + 2) for i in range(upto)]
5050
self.insertpairs(pairs)
5151
self.tree.insert(0, upto * 3, upto)
52-
self.assertEqual([(0, upto * 3, [x for x in range(upto + 1)])], self.tree.getregions())
52+
self.assertEqual([(0, upto * 3, list(range(upto + 1)))], self.tree.getregions())
5353

5454
def test_minregions(self):
5555
self.tree = ClusterTree(0, 2)
@@ -92,7 +92,7 @@ def test_larger(self):
9292
]
9393
self.insertpairs(pairs)
9494

95-
self.assertEqual([(1, 20, [x for x in range(14)]), (21, 22, [14])], self.tree.getregions())
95+
self.assertEqual([(1, 20, list(range(14))), (21, 22, [14])], self.tree.getregions())
9696

9797
def test_another(self):
9898
pairs = [
@@ -116,7 +116,7 @@ def test_another(self):
116116
for s, e, i in pairs:
117117
self.tree.insert(s, e, i)
118118

119-
self.assertEqual([(1, 20, [x for x in range(14)]), (21, 22, [14])], self.tree.getregions())
119+
self.assertEqual([(1, 20, list(range(14))), (21, 22, [14])], self.tree.getregions())
120120

121121
def test_none(self):
122122
pairs = []

lib/bx/intervals/intersection_tests.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,13 @@ def setUp(self):
160160
iv = IntervalTree()
161161
n = 0
162162
for i in range(1, 1000, 80):
163-
iv.insert(i, i + 10, dict(value=i * i))
163+
iv.insert(i, i + 10, {"value": i * i})
164164
# add is synonym for insert.
165-
iv.add(i + 20, i + 30, dict(astr=str(i * i)))
165+
iv.add(i + 20, i + 30, {"astr": str(i * i)})
166166

167167
# or insert/add an interval object with start, end attrs.
168-
iv.insert_interval(Interval(i + 40, i + 50, value=dict(astr=str(i * i))))
169-
iv.add_interval(Interval(i + 60, i + 70, value=dict(astr=str(i * i))))
168+
iv.insert_interval(Interval(i + 40, i + 50, value={"astr": str(i * i)}))
169+
iv.add_interval(Interval(i + 60, i + 70, value={"astr": str(i * i)}))
170170

171171
n += 4
172172
self.intervals = self.iv = iv

lib/bx/intervals/io.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ def binned_bitsets(self, upstream_pad=0, downstream_pad=0, lens=None):
194194
lens = {}
195195
last_chrom = None
196196
last_bitset = None
197-
bitsets = dict()
197+
bitsets = {}
198198
for interval in self:
199199
if isinstance(interval, GenomicInterval):
200200
chrom = interval[self.chrom_col]

lib/bx/intervals/operations/find_clusters.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919

2020
def find_clusters(reader, mincols=1, minregions=2):
21-
extra = dict()
22-
chroms = dict()
21+
extra = {}
22+
chroms = {}
2323
linenum = -1
2424
for interval in reader:
2525
linenum += 1

lib/bx/intervals/operations/join.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def report_unvisited(node, results):
6868
results = []
6969
rightTree.traverse(lambda x: report_unvisited(x, results))
7070
for item in results:
71-
outfields = list()
71+
outfields = []
7272
for x in range(leftlen):
7373
outfields.append(".")
7474
outfields.extend(item.other)

lib/bx/misc/seekbzip2.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ def readable(self):
149149
return True
150150

151151
def readlines(self, sizehint=-1):
152-
return [ln for ln in self]
152+
return list(self)
153153

154154
def seekable(self):
155155
return True

lib/bx/pwm/position_weight_matrix.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ def __init__(self, id, rows, alphabet, background=None, score_correction=True):
228228

229229
# scale counts to integers
230230
for i in range(len(rows)):
231-
hashRows.append(dict())
231+
hashRows.append({})
232232
for x, sym in enumerate(alphabet):
233233
(w, s) = rows[i][x]
234234
hashRows[i][sym] = w * scale / s

lib/bx/pwm/pwm_tests.py

+3-10
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,11 @@
6666
class PWMTestCase(unittest.TestCase):
6767
def testReader(self):
6868
# test basic format: i.e. for jaspar
69-
wms = [
70-
wm for wm in pwm.Reader(StringIO(basicPwm), format="basic", background=background, score_correction=False)
71-
]
69+
wms = list(pwm.Reader(StringIO(basicPwm), format="basic", background=background, score_correction=False))
7270
assert len(wms) == 1
7371

7472
# test transfac format
75-
wms = [
76-
wm
77-
for wm in pwm.Reader(
78-
StringIO(transfacPwm), format="transfac", background=background, score_correction=False
79-
)
80-
]
73+
wms = list(pwm.Reader(StringIO(transfacPwm), format="transfac", background=background, score_correction=False))
8174
assert len(wms) == 1
8275

8376
wm = wms[0]
@@ -87,7 +80,7 @@ def testReader(self):
8780

8881
qdSeq = []
8982
for ix, nt in enumerate(dSeq):
90-
qdSeq.append(dict())
83+
qdSeq.append({})
9184
qdSeq[ix][nt] = 1.0
9285
qScores = wm.score_seq(qdSeq)
9386
assert len(qScores) == 2

lib/bx/seq/seq.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,7 @@ def raw_fetch(self, start, length):
106106
return self.text[start : start + length]
107107

108108
def reverse_complement(self, text):
109-
comp = [ch for ch in text.translate(DNA_COMP)]
110-
comp.reverse()
111-
return "".join(comp)
109+
return text.translate(DNA_COMP)[::-1]
112110

113111

114112
class SeqReader:

lib/bx/seq/twobit.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def __init__(self, file: BinaryIO, do_mask: bool = True):
8484
# Header contains some reserved space
8585
self.reserved = self.read("L")
8686
# Read index of sequence names to offsets
87-
index: Dict[str, TwoBitSequence] = dict()
87+
index: Dict[str, TwoBitSequence] = {}
8888
for _ in range(self.seq_count):
8989
name = self.read_p_string()
9090
offset = self.read("L")

lib/bx_extras/pyparsing.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ def __init__(self, toklist, name=None, asList=True, modal=True):
318318
self.__toklist = toklist[:]
319319
else:
320320
self.__toklist = [toklist]
321-
self.__tokdict = dict()
321+
self.__tokdict = {}
322322

323323
# this line is related to debugging the asXML bug
324324
# ~ asList = False
@@ -355,13 +355,13 @@ def __getitem__(self, i):
355355

356356
def __setitem__(self, k, v):
357357
if isinstance(v, _ParseResultsWithOffset):
358-
self.__tokdict[k] = self.__tokdict.get(k, list()) + [v]
358+
self.__tokdict[k] = self.__tokdict.get(k, []) + [v]
359359
sub = v[0]
360360
elif isinstance(k, int):
361361
self.__toklist[k] = v
362362
sub = v
363363
else:
364-
self.__tokdict[k] = self.__tokdict.get(k, list()) + [_ParseResultsWithOffset(v, 0)]
364+
self.__tokdict[k] = self.__tokdict.get(k, []) + [_ParseResultsWithOffset(v, 0)]
365365
sub = v
366366
if isinstance(sub, ParseResults):
367367
sub.__parent = wkref(self)
@@ -698,7 +698,7 @@ def setDefaultWhitespaceChars(chars):
698698
setDefaultWhitespaceChars = staticmethod(setDefaultWhitespaceChars)
699699

700700
def __init__(self, savelist=False):
701-
self.parseAction = list()
701+
self.parseAction = []
702702
self.failAction = None
703703
# ~ self.name = "<unknown>" # don't define self.name, let subclasses try/except upcall
704704
self.strRepr = None
@@ -709,7 +709,7 @@ def __init__(self, savelist=False):
709709
self.copyDefaultWhiteChars = True
710710
self.mayReturnEmpty = False # used when checking for left-recursion
711711
self.keepTabs = False
712-
self.ignoreExprs = list()
712+
self.ignoreExprs = []
713713
self.debug = False
714714
self.streamlined = False
715715
self.mayIndexError = True # used to optimize exception handling for subclasses that don't advance parse index
@@ -2585,7 +2585,7 @@ def parseImpl(self, instring, loc, doActions=True):
25852585
raise ParseException(instring, loc, "Missing one or more required elements (%s)" % missing)
25862586

25872587
# add any unmatched Optionals, in case they have default values defined
2588-
matchOrder += list(e for e in self.exprs if isinstance(e, Optional) and e.expr in tmpOpt)
2588+
matchOrder += [e for e in self.exprs if isinstance(e, Optional) and e.expr in tmpOpt]
25892589

25902590
resultlist = []
25912591
for e in matchOrder:
@@ -3531,7 +3531,7 @@ def withAttribute(*args, **attrDict):
35313531
attrs = args[:]
35323532
else:
35333533
attrs = attrDict.items()
3534-
attrs = [(k, v) for k, v in attrs]
3534+
attrs = list(attrs)
35353535

35363536
def pa(s, l, tokens):
35373537
for attrName, attrValue in attrs:

0 commit comments

Comments
 (0)