#!/hive/groups/encode/dcc/bin/python
import sys, re, argparse
from ucscgenomics import ra


def addChange(changelist, obj, change):
	if obj not in changelist:
		changelist[obj] = list()
	changelist[obj].append(change)
	return changelist


def main():

	parser = argparse.ArgumentParser(
		prog='qaRaDiff',
		description='Describes the differences between the two .ra files',
		epilog='example: qaRaDiff alpha/wgEncodeUwTfbs.ra beta/wgEncodeUwTfbs.ra'
		)
	parser.add_argument('RaFileOne', help='The .ra file')
	parser.add_argument('RaFileTwo', help='The .ra file to compare to')


	if len(sys.argv) == 1:
		parser.print_help()
		return

	args = parser.parse_args(sys.argv[1:])
	ra1 = ra.RaFile(args.RaFileOne)
	ra2 = ra.RaFile(args.RaFileTwo)

	changelist, newStanzas, droppedStanzas = ra2.changeSummary(ra1)

	print "Dropped Stanzas (%s):" % len(droppedStanzas)
	for i in sorted(droppedStanzas, key=str.lower):
		print i
	print ""
	print "New Stanzas (%s):" % len(newStanzas)
	for i in sorted(newStanzas, key=str.lower):
		print i
	print ""

	print "Changed Stanzas (%s):" % len(changelist.keys())
	for i in sorted(changelist, key=str.lower):
		print "%s:" % i
		for j in changelist[i]:
			print "\t%s" % j
		print ""

if __name__ == "__main__":
	main()
