Skip to content

Commit

Permalink
Reformat with black, ensure flake8 passes
Browse files Browse the repository at this point in the history
  • Loading branch information
pvanheus committed Aug 6, 2023
1 parent de5efc3 commit 7bbf72a
Show file tree
Hide file tree
Showing 14 changed files with 1,474 additions and 1,424 deletions.
4 changes: 4 additions & 0 deletions .flake8
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[flake8]
max-line-length = 80
select = C,E,F,W,B,B950
ignore = E501
2 changes: 0 additions & 2 deletions src/tb_variant_filter/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ def __get__(self, obj, cls):
return self.get_no_inst(cls)

def get_with_inst(self, obj, cls):

overridden = getattr(super(cls, obj), self.name, None)

@wraps(self.mthd, assigned=("__name__", "__module__"))
Expand All @@ -68,7 +67,6 @@ def f(*args, **kwargs):
return self.use_parent_doc(f, overridden)

def get_no_inst(self, cls):

for parent in cls.__mro__[1:]:
overridden = getattr(parent, self.name, None)
if overridden:
Expand Down
30 changes: 22 additions & 8 deletions src/tb_variant_filter/filters/alt_percentage_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
class AltPercentageDepthFilter(Filter):
min_percentage = 0

def __init__(self, args: argparse.Namespace, header: vcfpy.Header) -> "AltPercentageDepthFilter":
def __init__(
self, args: argparse.Namespace, header: vcfpy.Header
) -> "AltPercentageDepthFilter":
super().__init__(args, header)
if (
hasattr(args, "min_percentage_alt_filter")
Expand Down Expand Up @@ -71,34 +73,46 @@ def __call__(self, record: vcfpy.Record) -> Union[vcfpy.Record, None]:
alt_percentage = record.INFO["AF1"] * 100
elif self.header.has_header_line("INFO", "DP4"):
(fwd_ref, rev_ref, fwd_alt, rev_alt) = record.INFO["DP4"]
alt_percentage = (fwd_alt + rev_alt) / (fwd_ref + rev_ref + fwd_alt + rev_alt) * 100
alt_percentage = (
(fwd_alt + rev_alt) / (fwd_ref + rev_ref + fwd_alt + rev_alt) * 100
)
if alt_percentage is not None:
retain.append(not alt_percentage < self.min_percentage)
elif self.header.has_header_line("INFO", "AF") or (self.header.has_header_line("INFO", "AO") and self.header.has_header_line("INFO", "DP")):
elif self.header.has_header_line("INFO", "AF") or (
self.header.has_header_line("INFO", "AO")
and self.header.has_header_line("INFO", "DP") # noqa: W503
):
for i, _ in enumerate(record.ALT):
if self.header.has_header_line("INFO", "AF"):
alt_percentage = record.INFO["AF"][i] * 100
elif self.header.has_header_line("INFO", "AO") and self.header.has_header_line("INFO", "DP"):
elif self.header.has_header_line(
"INFO", "AO"
) and self.header.has_header_line("INFO", "DP"):
alt_percentage = (
float(record.INFO["AO"][i]) / float(record.INFO["DP"]) * 100
)
retain.append(not alt_percentage < self.min_percentage)
else:
# we've got nothing to add to retain - leave it as an empty list
print("No alt allele depth information found in VCF, disabling alt allele percentage filter", file=sys.stderr)
print(
"No alt allele depth information found in VCF, disabling alt allele percentage filter",
file=sys.stderr,
)
if not any(retain):
return None

new_ALT = [alt for i, alt in enumerate(record.ALT) if retain[i]]
new_INFO = OrderedDict()
# these are produced by snpEff and keys occur once per implicated gene
# the simplest solution is to copy them all across
for key in record.INFO:
if self.header.get_info_field_info(key).number == 'A':
if self.header.get_info_field_info(key).number == "A":
# 'A' fields have one entry for each alternative allele - copy only those for retained alleles
field_len = len(record.INFO[key])
retain_len = len(retain)
assert field_len == retain_len, f"Length of array-type INFO field ({field_len}) does not match length of retain ({retain_len})"
assert (
field_len == retain_len
), f"Length of array-type INFO field ({field_len}) does not match length of retain ({retain_len})"
new_INFO[key] = [
# retain all ANN records and the only those other records that correspond to alts that we retain
el
Expand Down
5 changes: 3 additions & 2 deletions src/tb_variant_filter/filters/close_to_indel_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ class CloseToIndelFilter(Filter):
intervaltree = None
dist = 0

def __init__(self, args: argparse.Namespace, header: Header) -> "CloseToIndelFilter":
def __init__(
self, args: argparse.Namespace, header: Header
) -> "CloseToIndelFilter":
super().__init__(args, header)
self.intervaltree = IntervalTree()
if hasattr(args, "close_to_indel_filter") and args.close_to_indel_filter:
Expand All @@ -50,7 +52,6 @@ def __init__(self, args: argparse.Namespace, header: Header) -> "CloseToIndelFil
args.input_file.seek(0)

def __repr__(self) -> str:

name = f"{self.__class__.__name__}"
if self.dist:
name += f" (Window {self.dist})"
Expand Down
4 changes: 3 additions & 1 deletion src/tb_variant_filter/filters/min_depth_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
class MinDepthFilter(Filter):
min_depth = 0

def __init__(self, args: argparse.Namespace, header: vcfpy.Header) -> "MinDepthFilter":
def __init__(
self, args: argparse.Namespace, header: vcfpy.Header
) -> "MinDepthFilter":
super().__init__(args, header)
if (
hasattr(args, "min_depth_filter")
Expand Down
Loading

0 comments on commit 7bbf72a

Please sign in to comment.