9a49290fedc8b4f9c7a631dedcfe8ac3aa2b4cee chinhli Thu Oct 20 14:10:43 2011 -0700 merge conflict resolved diff --git python/programs/qaUpdateMetadata/qaUpdateMetadata python/programs/qaUpdateMetadata/qaUpdateMetadata new file mode 100755 index 0000000..a2cee40 --- /dev/null +++ python/programs/qaUpdateMetadata/qaUpdateMetadata @@ -0,0 +1,82 @@ +#!/hive/groups/encode/dcc/bin/python +import sys, os, re, argparse, subprocess, math +from ucscgenomics import ra, track + +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='qaUpdateMetadata', + description='Update a metaDb fix', + epilog='example: qaUpdateMetadata hg19 wgEncodeUwDnaseSeq --list "md5sum objType cell treatment"' + ) + parser.add_argument('-t', '--trackPath', help='Overrides the default track path ~/kent/src/hg/makeDb/trackDb/') + parser.add_argument('database', help='The database, typically hg19 or mm9') + parser.add_argument('composite', help='The composite name, wgEncodeCshlLongRnaSeq for instance') + parser.add_argument('vars', metavar='VARS', type=str, nargs='+', help='The list of metadata variables to update from alpha to beta') + + args = parser.parse_args(sys.argv[1:]) + vars = args.vars + + + + c = track.CompositeTrack(args.database, args.composite) + newMdb = c.alphaMetaDb + oldMdb = c.betaMetaDb + + + commonStanzas = set(newMdb.filter(lambda s: 1, lambda s: s['metaObject'])) & set(oldMdb.filter(lambda s: 1, lambda s: s['metaObject'])) + + changelist = dict() + + for i in sorted(commonStanzas): + #print oldMdb[i] + for j in vars: + if j not in newMdb[i]: + if j in oldMdb[i]: + changelist = addChange(changelist, i, "deleted %s" % j) + del oldMdb[i][j] + continue + else: + continue + if j not in oldMdb[i]: + changelist = addChange(changelist, i, "added %s = %s" % (j, newMdb[i][j])) + oldMdb[i][j] = newMdb[i][j] + continue + elif oldMdb[i][j] != newMdb[i][j]: + changelist = addChange(changelist, i, "changed %s from %s to %s" % (j, oldMdb[i][j], newMdb[i][j])) + oldMdb[i][j] = newMdb[i][j] + + + for i in sorted(changelist): + print i + for j in changelist[i]: + pass + print j + print "" + + + f = open(c._betaMdbPath, 'w') + magic = "" + for i in sorted(oldMdb): + if re.search('MAGIC', i): + magic = i + continue + f.write("metaObject " + str(oldMdb[i]['metaObject'] + "\n")) + del oldMdb[i]['metaObject'] + f.write("objType " + str(oldMdb[i]['objType'] + "\n")) + del oldMdb[i]['objType'] + for j in sorted(oldMdb[i]): + f.write(("%s %s" % (j, oldMdb[i][j])) + "\n") + f.write("\n") + magic = magic + "\n" + f.write(magic) + f.close + +if __name__ == '__main__': + main()