import taskutil def ptgs2ann(ptgs, diam, ann, color = 'green'): """ Given a list of pointings ptgs, make a kvis annotation file ann with a cross and circle of diameter diam (an angle qa) at each pointing. """ try: anf = open(ann, 'w') except: print "Error opening %s for writing!" % ann return anf.write("color %s\n" % color) myf = taskutil.get_global_namespace() qa = myf['qa'] if type(diam) == str: diam = qa.quantity(diam) d = 0.5 * qa.convert(diam, 'deg')['value'] crosssize = 0.1 * d for i in xrange(0, len(ptgs)): epoch, x, y = direction_splitter(ptgs[i]) wxy = "w %10.6f %10.6f" % (x['value'] - crosssize, y['value'] + crosssize) anf.write("text %s %d # %s\n" % (wxy, i, ptgs[i])) wxy = "w %10.6f %10.6f" % (x['value'], y['value']) anf.write("cross %s %8.6f %8.6f # %d\n" % (wxy, crosssize, crosssize, i)) anf.write("circle %s %9.6f # %d\n" % (wxy, d, i)) anf.close() def direction_splitter(direction): """ Given a direction, return its epoch, x, and y parts. Epoch will be '' if absent, or '%s ' % epoch if present. x and y will be angle qa's in degrees. """ dirl = direction.split() if len(dirl) == 3: epoch = dirl[0] + ' ' else: epoch = '' myf = taskutil.get_global_namespace() qa = myf['qa'] x, y = map(qa.toangle, dirl[-2:]) return epoch, qa.convert(x, 'deg'), qa.convert(y, 'deg')