# these plates came as negative scans.  That's bad for sextractor
# and homogeneity, and so we invert the images.

import os

from gavo import api
from gavo.utils import pyfits


class Inverter(api.FileProcessor):
	def process(self, srcName):
		im = pyfits.open(srcName)
		if sum(im[0].data.ravel()[:100000])/100000.<30000:
			return  # dark background, all is fine

		minPix = min(im[0].data.ravel())
		im[0].data -= minPix
		assert max(im[0].data.ravel())<=65535

		im[0].data = 65535-im[0].data
		im[0].scale("int16", "", bzero=32768)

		if "INVERTED" in im[0].header:
			del im[0].header["INVERTED"]

		im.writeto("zw.fits")
		im.close()
		os.rename("zw.fits", srcName)


if __name__=="__main__":
	api.procmain(Inverter, "flare_survey/q.rd", "import")
