# experimental hack to get rid of in-db obspos table
# generate obspos for usnob directly on-disk, separated by survey

'''
import psycopg2
import sys
import time

def iterCorrections(connection):
	curs = connection.cursor()
	curs.execute("SELECT survey, field, da, dd, nTotal"
		" FROM usnob.platecorrs")
	for rec in curs:
		yield rec


fieldNames = {
	"A": ("b1xi", "b1eta", "b1f", "b1s", "b1mag"),
	"B": ("r1xi", "r1eta", "r1f", "r1s", "r1mag"),
	"C": ("b2xi", "b2eta", "b2f", "b2s", "b2mag"),
	"D": ("r2xi", "r2eta", "r2f", "r2s", "r2mag"),
	"E": ("b2xi", "b2eta", "b2f", "b2s", "b2mag"),
	"F": ("r1xi", "r1eta", "r1f", "r1s", "r1mag"),
	"G": ("r2xi", "r2eta", "r2f", "r2s", "r2mag"),
	"I": ("ixi", "ieta", "if", "i_s", "imag"),
	"H": ("ixi", "ieta", "if", "i_s", "imag"),
}


def printCorrected(connection, survey, field, da, dd):
	sys.stderr.write("Correcting %s%s..."%(survey, field))
	sys.stderr.flush()
	startTime = time.time()
	xicol, etacol, fieldcol, surveycol, magcol = fieldNames[survey]
	curs = connection.cursor()
	curs.execute("BEGIN")
	curs.execute("SELECT usnob_createorigtable(%(survey)s, %(field)s,"
		" %(xicol)s, %(etacol)s, %(magcol)s, %(surveycol)s, %(fieldcol)s, '')",
		locals())
	curs.execute("SELECT q3c_ang2ipix(raj2000, dej2000), alphaEp, deltaEp,"
		" epoch, mag FROM origPos")
	fmtStr = ("%%023d %7s %7s %%011.7f %%+12.8f %%22s %%4.1f"
			" %5s %20s\n"%(None, None, survey, None))
	for ipix, alphaEp, deltaEp, epoch, mag in curs:
		sys.stdout.write(fmtStr%(ipix, alphaEp+da, deltaEp+dd,
			epoch, mag))
	sys.stderr.write("%d rows in %.2f seconds\n"%(curs.rowcount,
		time.time()-startTime))
	sys.stderr.flush()
	curs.execute("ROLLBACK")
	curs.close()


def getConnection():
	conn = psycopg2.connect("dbname=gavo")
	curs = conn.cursor()
	curs.execute("SET work_mem=597151")
	curs.close()
	return conn


def main():
	connection = getConnection()
	for survey, field, da, dd, nTotal in iterCorrections(connection):
		if nTotal<50:
			print "Skipping %s%s (n=%s)"%(survey, field, nTotal)
			continue
		printCorrected(connection, survey, field, da, dd)
		

if __name__=="__main__":
	main()
'''

import obspos
obspos.main()
