Mercurial > repos > greg > cfsan_snp_pipeline_quast_select
diff cfsan_snp_pipeline_quast_select.py @ 0:fedc60909fbe draft default tip
Uploaded
author | greg |
---|---|
date | Tue, 17 Oct 2023 14:13:45 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cfsan_snp_pipeline_quast_select.py Tue Oct 17 14:13:45 2023 +0000 @@ -0,0 +1,31 @@ +#!/usr/bin/env python + +import csv +import sys + + +def pick(rows, key, reverse=False): + sorted_rows = sorted(rows, key=lambda r: r[key], reverse=reverse) + return sorted_rows[0]['Assembly'] + + +def int_or_str(token): + try: + return int(token) + except ValueError: + return str(token) + + +if __name__ == '__main__': + path, criterion = sys.argv[1:] + # QUAST tables have sample info as columns, so we need to transpose the table. + rows = list(zip(*csv.reader(open(path, "r"), delimiter='\t', dialect='excel'))) + hed = rows.pop(0) + dict_rows = [{h: int_or_str(r[i]) for i, h in enumerate(hed)} for r in rows] + if "fewest" in criterion: + # If it's a count, we want the fewest. + reverse = False + else: + # Otherwise it's a length and we want the longest. + reverse = True + print(pick(dict_rows, criterion, reverse))