#!/usr/bin/env python3
"""Replace two prediction tracks and remove their separate hg38 sequence track."""
import argparse,copy,json
from pathlib import Path
p=argparse.ArgumentParser();p.add_argument('input');p.add_argument('output');a=p.parse_args()
s=json.loads(Path(a.input).read_text())
r=json.loads(Path(__file__).with_name('replacement_tracks.json').read_text())
replacements={t['id']:t for t in r};removed='d7a0e1c4-5f3b-4b6e-9c51-0a6f2c1d9e12'
seen=set()
def walk(node):
 if isinstance(node,dict):
  if node.get('id') in replacements:
   seen.add(node['id']);return copy.deepcopy(replacements[node['id']])
  return {k:walk(v) for k,v in node.items()}
 if isinstance(node,list):return [walk(v) for v in node if not (isinstance(v,dict) and v.get('id')==removed)]
 return node
s=walk(s)
if seen!=set(replacements): raise ValueError('Did not find both original prediction tracks')
Path(a.output).write_text(json.dumps(s,indent=2)+'\n')
