Source code for galfitools.galin.getStar

#!/usr/bin/env python3


import os.path
import sys

import numpy as np
from astropy.io import fits
from galfitools.galin.std import GetAxis
from galfitools.galin.std import GetSize
from galfitools.galin.std import GetInfoEllip
from galfitools.galin.std import Ds9ell2Kronellv2
from galfitools.galin.std import GetPmax


[docs] def getStar( image: str, regfile: str, imsize: int, center: bool, sky: float, imout: str, sigma: str, sigout: str, ) -> None: """extracts a piece of the image file Given a DS9 ellipse region file and a specified size, it extracts a cutout image that includes the region enclosed by the ellipse. Parameters ---------- image : str name of the image file regfile : str DS9 ellipse region file imsize : int size of the new cutout image in pixels center : bool If True, it takes the geometrical center of the DS9 ellipse region. Otherwise, it will take the peak's pixels as the coordinate sky: float value of the background sky imout: str name of the output image file sigma: str name of the sigma image file if it exists otherwise None sigout: str name of the output sigma image file Returns ------- None """ ########################################## # Internal flags even = False ########################################## ########################################## # root_ext = os.path.splitext(image) # timg= root_ext[0] mask = np.array([]) # empty for the moment i = 0 # index where data is located at hdu # if checkCompHDU(image): # i = 1 hdu = fits.open(image) img = hdu[i].data # img = img.astype(float) hdu.close() (ncol, nrow) = GetAxis(image) obj, xpos, ypos, rx, ry, angle = GetInfoEllip(regfile) xx, yy, Rkron, theta, eps = Ds9ell2Kronellv2(xpos, ypos, rx, ry, angle) if center: print("center of ds9 ellipse region will be used") xpeak, ypeak = round(xpos), round(ypos) else: (xmin, xmax, ymin, ymax) = GetSize(xx, yy, Rkron, theta + 90, eps, ncol, nrow) xpeak, ypeak = GetPmax(img, mask, xmin, xmax, ymin, ymax) print("object found at ", xpeak + 1, ypeak + 1) print("Ellipticity, Angle = ", eps, theta) if sky: print("Sky = ", sky) else: print("No sky input") if imsize % 2 == 0: even = True if even: lx = int(imsize / 2) xlo = xpeak - lx + 1 ylo = ypeak - lx + 1 xhi = xpeak + lx yhi = ypeak + lx else: lx = int(imsize / 2 + 0.5) xlo = xpeak - lx + 2 ylo = ypeak - lx + 2 xhi = xpeak + lx yhi = ypeak + lx GetFits(image, imout, sky, xlo, xhi, ylo, yhi) if sigma: GetFits(sigma, sigout, 0, xlo, xhi, ylo, yhi)
#################################################### #################################################### #####################################################
[docs] def GetFits( Image: str, Imageout: str, sky: float, xlo: int, xhi: int, ylo: int, yhi: int ) -> None: """Get a piece from the image Given an image, and X-minimum, X-maximum, Y-minimum, Y-maximum, it extracts a cutout image. the X-Y-minimum, X-Y-maximum determines the coordinates of the extracted neww image. Parameters ---------- Image : str name of the image file Imageout : str name of the output image file sky : float value of the background sky xlo : int Pixel with the minimum X value. xhi : int Pixel with the maximum X value. ylo : int Pixel with the minimum Y value. yhi : int Pixel with the maximum Y value. Returns ------- None # repeated """ if os.path.isfile(Imageout): print("{} deleted; a new one is created \n".format(Imageout)) # new fits i = 0 # index indicated where the data is located # if checkCompHDU(Image): # i = 1 # newhdu = fits.CompImageHDU() # else: newhdu = fits.PrimaryHDU() hdu = fits.open(Image) dat = hdu[i].data[ylo - 1 : yhi, xlo - 1 : xhi] head = hdu[i].header if sky: newhdu.data = dat - sky else: newhdu.data = dat newhdu.header = head newhdu.writeto(Imageout, overwrite=True) hdu.close()
############################################################################# # End of program ################################### # ______________________________________________________________________ # /___/___/___/___/___/___/___/___/___/___/___/___/___/___/___/___/___/_/| # |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__/| # |_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|/| # |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__/| # |_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|/| # |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__/| # |_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|/ ##############################################################################