Source code for galfitools.galin.xy2fits
#!/usr/bin/env python3
import os
import os.path
import subprocess as sp
import numpy as np
from astropy.io import fits
from galfitools.galin.std import GetAxis
# code to convert ASCII xy positions to FTIS mask
[docs]
class xy2fits:
"""
converts a ASCII mask file with `x y` format pixels
to a FITS image.
Attributes
----------
ImageFile : str
the name of the new FITS mask image file
AsciiFile : str
the ASCII file containing the pixels
Value : float
the value to be substituted as a count value
in the FITS mask image
Methods
-------
MakeFits : this is the main method this creates the
FITS image from the ASCII file
MakeImage : create a new blank Image
PutPix : assign the count value to the pixels of the new
image
"""
[docs]
def MakeFits(self, ImageFile, AsciiFile, Value):
root_ext = os.path.splitext(AsciiFile)
namefile = root_ext[0]
maskfits = namefile + ".fits"
(ncol, nrow) = GetAxis(ImageFile)
self.MakeImage(maskfits, ncol, nrow)
X, Y = np.genfromtxt(AsciiFile, delimiter="", unpack=True)
X = X.astype(int)
Y = Y.astype(int)
X = X - 1
Y = Y - 1
self.PutPix(X, Y, Value, maskfits)
return maskfits
[docs]
def MakeImage(self, newfits, sizex, sizey):
"create a new blank Image"
if os.path.isfile(newfits):
print("{} deleted; a new one is created ".format(newfits))
runcmd = "rm {}".format(newfits)
sp.run(
[runcmd],
shell=True,
stdout=sp.PIPE,
stderr=sp.PIPE,
universal_newlines=True,
)
hdu = fits.PrimaryHDU()
hdu.data = np.zeros((sizey, sizex), dtype=np.float64)
hdu.writeto(newfits, overwrite=True)
return True
[docs]
def PutPix(self, X, Y, Value, ImageFits):
# original file
i = 0 # index of data
hdu = fits.open(ImageFits)
Image = hdu[i].data
# for some strange reason I have to interchange X and Y
Image[[Y], [X]] = Value
hdu[i].data = Image
hdu.writeto(ImageFits, overwrite=True)
hdu.close()
#############################################################################
# End of program ###################################
# ______________________________________________________________________
# /___/___/___/___/___/___/___/___/___/___/___/___/___/___/___/___/___/_/|
# |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__/|
# |_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|/|
# |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__/|
# |_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|/|
# |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__/|
# |_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|/
##############################################################################