Skip to content
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
28 changes: 15 additions & 13 deletions zuds/subtraction.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
from sqlalchemy.ext.declarative import declared_attr
from sqlalchemy.orm import relationship

from .core import DBSession
from .fitsfile import HasWCS
from .core import DBSession, Base
from .image import (CalibratableImageBase, ScienceImage, CalibratableImage,
FITSImage, CalibratedImage)
from .mask import MaskImageBase, MaskImage
Expand Down Expand Up @@ -37,7 +36,7 @@ def sub_name(frame, template):
return sub


class Subtraction(HasWCS):
class Subtraction(CalibratableImageBase):

@declared_attr
def reference_image_id(self):
Expand Down Expand Up @@ -184,21 +183,24 @@ def from_images(cls, sci, ref, data_product=False, tmpdir='/tmp',

# now read the final output products into database mapped records
sub = cls.from_file(final_out, load_others=False)
finalsubmask = MaskImage.from_file(final_out.replace('.fits',
'.mask.fits'))

finalmaskclass = MaskImage if isinstance(sub, Base) else MaskImageBase
finalsubmask = finalmaskclass.from_file(final_out.replace('.fits',
'.mask.fits'))

sub._rmsimg = FITSImage.from_file(final_out.replace('.fits',
'.rms.fits'))

sub.header['FIELD'] = sub.field = sci.field
sub.header['CCDID'] = sub.ccdid = sci.ccdid
sub.header['QID'] = sub.qid = sci.qid
sub.header['FID'] = sub.fid = sci.fid
if isinstance(sub, Base):
sub.header['FIELD'] = sub.field = sci.field
sub.header['CCDID'] = sub.ccdid = sci.ccdid
sub.header['QID'] = sub.qid = sci.qid
sub.header['FID'] = sub.fid = sci.fid

finalsubmask.header['FIELD'] = finalsubmask.field = sci.field
finalsubmask.header['CCDID'] = finalsubmask.ccdid = sci.ccdid
finalsubmask.header['QID'] = finalsubmask.qid = sci.qid
finalsubmask.header['FID'] = finalsubmask.fid = sci.fid
finalsubmask.header['FIELD'] = finalsubmask.field = sci.field
finalsubmask.header['CCDID'] = finalsubmask.ccdid = sci.ccdid
finalsubmask.header['QID'] = finalsubmask.qid = sci.qid
finalsubmask.header['FID'] = finalsubmask.fid = sci.fid

sub.mask_image = finalsubmask
finalsubmask.parent_image = sub
Expand Down
8 changes: 8 additions & 0 deletions zuds/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,14 @@ def refimg_data_first2_imgs(sci_image_data_20200531, sci_image_data_20200601):
return ref


@pytest.fixture
def refimg_data_last2_imgs(sci_image_data_20200601, sci_image_data_20200604):
imgs = [sci_image_data_20200601, sci_image_data_20200604]
out = os.path.join(TMP_DIR, f'ref-{uuid.uuid4().hex}.fits')
ref = zuds.ReferenceImage.from_images(imgs, out)
return ref


@pytest.fixture
def science_image():
return ScienceImageFactory(basename=uuid.uuid4().hex)
Expand Down
6 changes: 6 additions & 0 deletions zuds/tests/suite/test_sub.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,9 @@ def test_sub(sci_image_data_20200604, refimg_data_first2_imgs):
np.testing.assert_allclose(stamp, stampcent)
assert sub.reference_image is refimg_data_first2_imgs
assert sub.target_image is sci_image_data_20200604


def test_anonymous_sub(refimg_data_first2_imgs, refimg_data_last2_imgs):
sub = zuds.Subtraction.from_images(
refimg_data_first2_imgs, refimg_data_last2_imgs
)