wf-transcriptomes-v202/bin/infer_modkit_codes
2026-05-26 09:52:38 +00:00

46 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
import csv
import sys
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("modified_bases_tsv")
return parser.parse_args()
def infer_codes(modified_bases_tsv):
codes = []
seen = set()
with open(modified_bases_tsv, newline="") as handle:
reader = csv.DictReader(handle, delimiter="\t")
for row in reader:
primary_base = row.get("primary_base", "").strip()
mod_code = row.get("mod_code", "").strip()
if not primary_base or not mod_code:
continue
code = f"{primary_base}:{mod_code}"
if code not in seen:
seen.add(code)
codes.append(code)
return codes
def main():
args = parse_args()
codes = infer_codes(args.modified_bases_tsv)
if not codes:
sys.stderr.write("Failed to infer modified base codes from modified_bases.tsv\n")
raise SystemExit(1)
sys.stdout.write(",".join(codes) + "\n")
if __name__ == "__main__":
main()