Skip to content

Combined #181

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion sdi/combine.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def combine(hduls, name="ALGN"):
raise KeyError(str(f"Name {name} not found in HDUList! Try running again with `combine -n [name]` from above")) from None

comb = np.median(data, axis=0)
hdu = fits.PrimaryHDU(comb)
hdu = fits.PrimaryHDU(data = comb, header = hduls_list[0][name].header)

# We do not need to create a list of HDUL's here. We return a single median image.

Expand Down
48 changes: 37 additions & 11 deletions sdi/subtract.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,16 @@
from astropy.io.fits import CompImageHDU
from . import _cli as cli
from .combine import combine
import os #sfft specific
from sfft.EasyCrowdedPacket import Easy_CrowdedPacket #sfft specific
import os
#from .sfft.sfft.EasyCrowdedPacket import Easy_CrowdedPacket #sfft specific
from sfft.CustomizedPacket import Customized_Packet #sfft specific
from sfft.EasySparsePacket import Easy_SparsePacket #sfft specific
import time
import numpy as np #sfft specific
import sys
import os.path as pa
from sfft.utils.SExSkySubtract import SEx_SkySubtract


def subtract(hduls, name="ALGN", method: ("sfft", "ois", "numpy")="sfft"):
"""
Expand All @@ -29,12 +32,12 @@ def subtract(hduls, name="ALGN", method: ("sfft", "ois", "numpy")="sfft"):
temp_image_fits_filenames = []
venv_file_path = sys.prefix
for i, hdu in enumerate(hduls): #Write the science hduls into temporary fits files
temp_filename = venv_file_path + "/sdi_pipeline/sdi/temp_image{}.fits".format(i)
temp_filename = venv_file_path + "/temp_image{}.fits".format(i)
temp_data = hdu[name].data
primary = fits.PrimaryHDU(temp_data)
primary = fits.PrimaryHDU(data= temp_data, header = hduls[i][name].header)
primary.writeto(temp_filename, overwrite = True)
temp_image_fits_filenames.append(temp_filename)
temp_ref_path = venv_file_path + "/sdi_pipeline/temp_ref.fits"
temp_ref_path = venv_file_path + "/temp_ref.fits"
template_fits = combine(hduls, name) # Create the reference image
template_fits.writeto(temp_ref_path, overwrite = True) # Write the reference image into temporary fits file

Expand All @@ -49,25 +52,48 @@ def subtract(hduls, name="ALGN", method: ("sfft", "ois", "numpy")="sfft"):
size += os.path.getsize(temp_ref_path)
print("Total size of temporary files is {} mb".format(size/1024**2))
outputs = []
#Sky-Subtraction
print("Performing Sky-Subtraction")
skysub_fits = []
for i, FITS_obj in enumerate(temp_image_fits_filenames):
FITS_skysub = venv_file_path + "/temp_skysub_image{}.fits".format(i)
skysub_fits.append(FITS_skysub)
SEx_SkySubtract.SSS(FITS_obj=FITS_obj, FITS_skysub=FITS_skysub, FITS_sky=None, FITS_skyrms=None, \
SATUR_KEY='SATURATE', ESATUR_KEY='ESATUR', BACK_SIZE=64, BACK_FILTERSIZE=3, \
DETECT_THRESH=1.5, DETECT_MINAREA=5, DETECT_MAXAREA=0)
REF_skysub = venv_file_path + "/temp_skysub_ref.fits".format(i)
SEx_SkySubtract.SSS(FITS_obj=temp_ref_path, FITS_skysub=REF_skysub, FITS_sky=None, FITS_skyrms=None, \
SATUR_KEY='SATURATE', ESATUR_KEY='ESATUR', BACK_SIZE=64, BACK_FILTERSIZE=3, \
DETECT_THRESH=1.5, DETECT_MINAREA=5, DETECT_MAXAREA=0)

#Subtract
start = time.perf_counter()
print("Method = sfft") #TODO Incorperate input masks for when we take real data
for i, fits_name in enumerate(temp_image_fits_filenames):
sol, diff = Customized_Packet.CP(FITS_REF = temp_ref_path, FITS_SCI = fits_name,
FITS_mREF = temp_ref_path, FITS_mSCI = fits_name,
ForceConv = "REF", GKerHW = 4, BGPolyOrder = 2, KerPolyOrder = 2)


# for i, fits_name in enumerate(temp_image_fits_filenames):
# sol, diff = Customized_Packet.CP(FITS_REF = temp_ref_path, FITS_SCI = fits_name,
# FITS_mREF = temp_ref_path, FITS_mSCI = fits_name,
# ForceConv = "REF", GKerHW = 4, BGPolyOrder = 2, KerPolyOrder = 2)

# if np.isnan(np.sum(diff)) == True:
# raise ValueError("Residual contains NaN")
# else:
# hduls[i].insert(1,CompImageHDU(data = diff, header = hduls[i][name].header, name = "SUB"))
# outputs.append(hduls[i])
for i, fits_name in enumerate(skysub_fits):
dic, sol, diff = Easy_SparsePacket.ESP(FITS_REF = REF_skysub, FITS_SCI = fits_name)

if np.isnan(np.sum(diff)) == True:
raise ValueError("Residual contains NaN")
else:
hduls[i].insert(1,CompImageHDU(data = diff, header = hduls[i][name].header, name = "SUB"))
outputs.append(hduls[i])
outputs.append(hduls[i])
stop = time.perf_counter()
print("Subtraction Complete")
print("Time Elapsed: {} sec".format(round(stop-start, 4)))
print("Removing Temporary Fits Files")
for i, fits_name in enumerate(temp_image_fits_filenames): #Remove Temporary Fits files from disc
for i, fits_name in enumerate(skysub_fits): #Remove Temporary Fits files from disc
if os.path.exists(fits_name):
os.remove(fits_name)
else:
Expand Down
61 changes: 49 additions & 12 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
import os
import sys
from setuptools import setup, find_packages

DESCRIPTION = "Pipeline to Take a Stack of Images and Extract Residuals"
NAME = "sdi-pipeline"
AUTHOR = "Kyle Lam"
AUTHOR_EMAIL = "[email protected]"
MAINTAINER = "Kyle Lama"
MAINTAINER_EMAIL = "[email protected]"
DOWNLOAD_URL = "https://github.com/ucsbdeepspace/sdi_pipeline.git"

LICENSE = 'MIT Licence'
VERSION = '0.99'
=======
import subprocess
import sys

Expand All @@ -18,15 +32,38 @@

subprocess.run(sys.executable + " -m pip install --upgrade pip setuptools==56.0.0 setuptools_rust numpy", shell=True)

setup(
name="sdi-cli",
version="0.99",
py_modules=["sdi"],
# packages=find_packages(include=["openfits"]),
include_package_data=True,
install_requires=["click", "astropy", "photutils", "ois", "astroalign", "astroquery", "sklearn"],
entry_points="""
[console_scripts]
sdi=sdi._cli:cli
""",
)
install_reqs = ["numpy",
"setuptools_rust",
"click",
"astropy",
"photutils",
"ois",
"astroalign",
"astroquery",
"sklearn",
]
setup_reqs = ["numpy",
"setuptools_rust"]

setup(name = NAME,
version = VERSION,
description = DESCRIPTION,
setup_requires = setup_reqs,
install_requires = install_reqs,
author = AUTHOR,
author_email = AUTHOR_EMAIL,
maintainer = MAINTAINER,
maintainer_email = MAINTAINER_EMAIL,
download_url = DOWNLOAD_URL,
license = LICENSE,
packages = find_packages(),
include_package_data = True,
# classifiers = [
# 'Development Status :: 4 - Beta',
# 'Environment :: Console',
# 'Intended Audience :: Science/Research',
# 'Natural Language :: English',
# 'Programming Language :: Python :: 3.7',
# 'Programming Language :: Python :: 3 :: Only',
# 'Topic :: Scientific/Engineering :: Astronomy'],
)