Skip to content

Commit

Permalink
updated tests and Filter class strategy param
Browse files Browse the repository at this point in the history
  • Loading branch information
ldhtnp committed Feb 4, 2025
1 parent 1182f16 commit 9392213
Show file tree
Hide file tree
Showing 14 changed files with 21 additions and 14 deletions.
5 changes: 2 additions & 3 deletions pvactools/lib/binding_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from pvactools.lib.run_utils import *

class BindingFilter:
def __init__(self, input_file, output_file, binding_threshold, minimum_fold_change, top_score_metric, exclude_nas, allele_specific_cutoffs, percentile_threshold, percentile_threshold_strategy, file_type='pVACseq'):
def __init__(self, input_file, output_file, binding_threshold, minimum_fold_change, top_score_metric, exclude_nas, allele_specific_cutoffs, percentile_threshold, percentile_threshold_strategy='conservative', file_type='pVACseq'):
self.input_file = input_file
self.output_file = output_file
self.binding_threshold = binding_threshold
Expand Down Expand Up @@ -49,8 +49,7 @@ def execute(self):
elif self.top_score_metric == 'lowest':
column = 'Corresponding Fold Change'
filter_criteria.append(FilterCriterion(column, '>=', self.minimum_fold_change, exclude_nas=self.exclude_nas))

Filter(self.input_file, self.output_file, filter_criteria, [], 0 if self.percentile_threshold_strategy == 'conservative' else 1).execute()
Filter(self.input_file, self.output_file, filter_criteria, [], "AND" if self.percentile_threshold_strategy == 'conservative' else "OR").execute()

@classmethod
def parser(cls, tool):
Expand Down
11 changes: 5 additions & 6 deletions pvactools/lib/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
pd.options.mode.chained_assignment = None

class Filter:
def __init__(self, input_file, output_file, filter_criteria, int_filter_columns=[], filter_strategy=0):
def __init__(self, input_file, output_file, filter_criteria, int_filter_columns=[], filter_strategy="AND"):
self.input_file = input_file
self.output_file = output_file
self.filter_criteria = filter_criteria
Expand All @@ -22,18 +22,17 @@ def execute(self):

process_criterion = lambda criterion: (
(line[criterion.column] == 'NA' and criterion.exclude_nas) or
(line[criterion.column] != 'NA' and criterion.skip_value is not None and line[criterion.column] == criterion.skip_value) or
(line[criterion.column] != 'NA' and criterion.skip_value is None and not eval("{} {} {}".format(
(line[criterion.column] != 'NA' and criterion.skip_value != line[criterion.column] and not eval("{} {} {}".format(
line[criterion.column] if line[criterion.column] != 'inf' else sys.maxsize,
criterion.operator,
criterion.threshold
)))
)

if self.filter_strategy:
to_filter = all(process_criterion(criterion) for criterion in self.filter_criteria)
else:
if self.filter_strategy == "AND":
to_filter = any(process_criterion(criterion) for criterion in self.filter_criteria)
else:
to_filter = all(process_criterion(criterion) for criterion in self.filter_criteria)

if not to_filter:
writer.writerow(line)
Expand Down
2 changes: 1 addition & 1 deletion pvactools/tools/pvacbind/binding_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def main(args_input = sys.argv[1:]):
parser = define_parser()
args = parser.parse_args(args_input)

BindingFilter(args.input_file, args.output_file, args.binding_threshold, None, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold, 'pVACbind').execute()
BindingFilter(args.input_file, args.output_file, args.binding_threshold, None, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold, args.percentile_threshold_strategy, 'pVACbind').execute()

if __name__ == "__main__":
main()
2 changes: 1 addition & 1 deletion pvactools/tools/pvacfuse/binding_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def main(args_input = sys.argv[1:]):
parser = define_parser()
args = parser.parse_args(args_input)

BindingFilter(args.input_file, args.output_file, args.binding_threshold, None, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold, 'pVACfuse').execute()
BindingFilter(args.input_file, args.output_file, args.binding_threshold, None, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold, args.percentile_threshold_strategy, 'pVACfuse').execute()

if __name__ == "__main__":
main()
2 changes: 1 addition & 1 deletion pvactools/tools/pvacseq/binding_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def main(args_input = sys.argv[1:]):
parser = define_parser()
args = parser.parse_args(args_input)

BindingFilter(args.input_file, args.output_file, args.binding_threshold, args.minimum_fold_change, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold).execute()
BindingFilter(args.input_file, args.output_file, args.binding_threshold, args.minimum_fold_change, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold, args.percentile_threshold_strategy).execute()

if __name__ == "__main__":
main()
2 changes: 1 addition & 1 deletion pvactools/tools/pvacsplice/binding_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def main(args_input = sys.argv[1:]):
parser = define_parser()
args = parser.parse_args(args_input)

BindingFilter(args.input_file, args.output_file, args.binding_threshold, None, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold, file_type='pVACsplice').execute()
BindingFilter(args.input_file, args.output_file, args.binding_threshold, None, args.top_score_metric, args.exclude_NAs, args.allele_specific_binding_thresholds, args.percentile_threshold, args.percentile_threshold_strategy, 'pVACsplice').execute()

if __name__ == "__main__":
main()
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"allele_expr_threshold": 2.5,
"maximum_transcript_support_level": 1,
"percentile_threshold": null,
"percentile_threshold_strategy": "conservative",
"use_allele_specific_binding_thresholds": false,
"mt_top_score_metric": "Median",
"wt_top_score_metric": "Median",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"allele_expr_threshold": 2.5,
"maximum_transcript_support_level": 1,
"percentile_threshold": null,
"percentile_threshold_strategy": "conservative",
"use_allele_specific_binding_thresholds": true,
"mt_top_score_metric": "Median",
"wt_top_score_metric": "Median",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"allele_expr_threshold": 2.5,
"maximum_transcript_support_level": 1,
"percentile_threshold": null,
"percentile_threshold_strategy": "conservative",
"use_allele_specific_binding_thresholds": false,
"mt_top_score_metric": "Best",
"wt_top_score_metric": "Corresponding",
Expand Down
1 change: 1 addition & 0 deletions tests/test_data/aggregate_all_epitopes/output.metrics.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"allele_expr_threshold": 2.5,
"maximum_transcript_support_level": 1,
"percentile_threshold": null,
"percentile_threshold_strategy": "conservative",
"use_allele_specific_binding_thresholds": false,
"mt_top_score_metric": "Median",
"wt_top_score_metric": "Median",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"allele_expr_threshold": 2.5,
"maximum_transcript_support_level": 1,
"percentile_threshold": null,
"percentile_threshold_strategy": "conservative",
"use_allele_specific_binding_thresholds": false,
"mt_top_score_metric": "Median",
"wt_top_score_metric": "Median",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"allele_expr_threshold": 2.5,
"maximum_transcript_support_level": 1,
"percentile_threshold": null,
"percentile_threshold_strategy": "conservative",
"use_allele_specific_binding_thresholds": false,
"mt_top_score_metric": "Best",
"wt_top_score_metric": "Corresponding",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"allele_expr_threshold": 2.5,
"maximum_transcript_support_level": 1,
"percentile_threshold": null,
"percentile_threshold_strategy": "conservative",
"use_allele_specific_binding_thresholds": false,
"mt_top_score_metric": "Best",
"wt_top_score_metric": "Corresponding",
Expand Down
4 changes: 3 additions & 1 deletion tests/test_filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,8 @@ def test_conservative(self):
"16000",
exclude_nas=False
)],
[],
"AND"
).execute())
self.assertTrue(cmp(
output_file.name,
Expand Down Expand Up @@ -230,7 +232,7 @@ def test_exploratory(self):
exclude_nas=False
)],
[],
1
"OR"
).execute())
self.assertTrue(cmp(
output_file.name,
Expand Down

0 comments on commit 9392213

Please sign in to comment.