示例#1
0
def fits_osiris_allclose(a, b):
    """Assert that two OSIRIS fits files are close."""

    a = fits.open(a)
    b = fits.open(b)

    try:
        del a[0].header['COMMENT']
        del b[0].header['COMMENT']

        report = StringIO()
        diff = FITSDiff(a,
                        b,
                        ignore_keywords=["COMMENT"],
                        ignore_comments=["SIMPLE"],
                        ignore_fields=[],
                        ignore_blanks=True,
                        ignore_blank_cards=True,
                        tolerance=1e-5)
        diff.report(fileobj=report)
        assert diff.identical, report.getvalue()

    finally:
        a.close()
        b.close()
示例#2
0
def fitsdiff(input1,
             input2,
             comment_excl_list='',
             value_excl_list='',
             field_excl_list='',
             maxdiff=10,
             delta=0.0,
             neglect_blanks=True,
             output=None):

    if isinstance(comment_excl_list, string_types):
        comment_excl_list = list_parse(comment_excl_list)

    if isinstance(value_excl_list, string_types):
        value_excl_list = list_parse(value_excl_list)

    if isinstance(field_excl_list, string_types):
        field_excl_list = list_parse(field_excl_list)

    diff = FITSDiff(input1,
                    input2,
                    ignore_keywords=value_excl_list,
                    ignore_comments=comment_excl_list,
                    ignore_fields=field_excl_list,
                    numdiffs=maxdiff,
                    tolerance=delta,
                    ignore_blanks=neglect_blanks)

    if output is None:
        output = sys.stdout

    diff.report(output)

    return diff.identical
示例#3
0
def pruebas_varias():

    # from subprocess import Popen, PIPE
    # resultado = Popen(["fitsdiff", "-k", "filename,filtnam1,NUM-BS,NUM-OVPE,NUM-TRIM", "-n 1", "-d 1.e-1", "arc_rss.fits", "cArcCalibrationRecipe_arc_rss.fits" ], stdout=PIPE, stderr=PIPE)
    # if "Data contains differences" in resultado.stdout.read():
    #     print "Hay Diferencias"
    # else:
    #     print "Son iguales"


    # print "*" * 40

    # ejemplo = FITSDiff( "arc_rss.fits", "cArcCalibrationRecipe_arc_rss.fits",["filename","filtnam1","NUM-BS","NUM-OVPE","NUM-TRIM"])
    ejemplo = FITSDiff( "arc_rss.fits", "cArcCalibrationRecipe_arc_rss.fits",["NUM-BS","NUM-OVPE"])
    print ejemplo.report()
    if "Data contains differences" in ejemplo.report():
        print "Hay Diferencias"
    else:
        print "Son iguales"


    print "*" * 40
    # hd = HeaderDiff.fromdiff(ejemplo, "arc_rss.fits", "cArcCalibrationRecipe_arc_rss.fits")
    hd = HeaderDiff.fromdiff(ejemplo, "arc_image.fits", "cArcCalibrationRecipe_arc_rss.fits")
    print "Cabeceras identicas: ", hd.identical
示例#4
0
文件: diff.py 项目: aboehle/OsirisDRP
def fits_osiris_allclose(a, b):
    """Assert that two OSIRIS fits files are close."""
    
    a = fits.open(a)
    b = fits.open(b)
    
    try:
        del a[0].header['COMMENT']
        del b[0].header['COMMENT']
    
        report = StringIO()
        diff = FITSDiff(
            a, b,
            ignore_keywords=["COMMENT"],
            ignore_comments=["SIMPLE"],
            ignore_fields=[],
            ignore_blanks=True,
            ignore_blank_cards=True,
            tolerance=1e-5)
        diff.report(fileobj=report)
        assert diff.identical, report.getvalue()
    
    finally:
        a.close()
        b.close()
示例#5
0
def test_level_1(out_dir):
    l0 = test_data.products.L0_LightCurve_fits
    l1 = Level1(out_dir / 'LB', out_dir)
    res = sorted(l1.process_fits_files(files=l0))
    assert len(res) == 2

    # test for https://github.com/i4Ds/STIXCore/issues/180
    # TODO remove when solved
    lc1 = Product(res[0])
    lc2 = Product(res[1])
    t = np.hstack((np.array(lc1.data['time']), (np.array(lc2.data['time']))))
    td = np.hstack(
        (np.array(lc1.data['timedel']), (np.array(lc2.data['timedel']))))
    range(len(lc1.data['time']) - 3, len(lc1.data['time']) + 3)
    assert np.all((t[1:] - t[0:-1]) == td[0:-1])
    # end test for https://github.com/i4Ds/STIXCore/issues/180

    for fits in res:
        diff = FITSDiff(
            test_data.products.DIR / fits.name,
            fits,
            ignore_keywords=['CHECKSUM', 'DATASUM', 'DATE', 'VERS_SW'])
        if not diff.identical:
            print(diff.report())
        assert diff.identical
示例#6
0
    def test_partially_identical_files3(self):
        """
        Test files that have some identical HDUs but a different extension
        name.
        """

        phdu = PrimaryHDU()
        ehdu = ImageHDU(name='FOO')
        hdula = HDUList([phdu, ehdu])
        ehdu = BinTableHDU(name='BAR')
        ehdu.header['EXTVER'] = 2
        ehdu.header['EXTLEVEL'] = 3
        hdulb = HDUList([phdu, ehdu])
        diff = FITSDiff(hdula, hdulb)
        assert not diff.identical

        assert diff.diff_hdus[0][0] == 1

        hdu_diff = diff.diff_hdus[0][1]
        assert hdu_diff.diff_extension_types == ('IMAGE', 'BINTABLE')
        assert hdu_diff.diff_extnames == ('FOO', 'BAR')
        assert hdu_diff.diff_extvers == (1, 2)
        assert hdu_diff.diff_extlevels == (1, 3)

        report = diff.report()
        assert 'Extension types differ' in report
        assert 'a: IMAGE\n    b: BINTABLE' in report
        assert 'Extension names differ' in report
        assert 'a: FOO\n    b: BAR' in report
        assert 'Extension versions differ' in report
        assert 'a: 1\n    b: 2' in report
        assert 'Extension levels differ' in report
        assert 'a: 1\n    b: 2' in report
示例#7
0
def test_image3_closedfile(run_image3_closedfile, rtdata, fitsdiff_default_kwargs):
    """Ensure production of Image3Pipeline output with data having closed file issues"""
    rtdata.output = 'jw00617-o082_t001_nircam_clear-f090w-sub320_i2d.fits'
    rtdata.get_truth('truth/test_nircam_image/jw00617-o082_t001_nircam_clear-f090w-sub320_i2d.fits')

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#8
0
    def test_partially_identical_files3(self):
        """
        Test files that have some identical HDUs but a different extension
        name.
        """

        phdu = PrimaryHDU()
        ehdu = ImageHDU(name='FOO')
        hdula = HDUList([phdu, ehdu])
        ehdu = BinTableHDU(name='BAR')
        ehdu.header['EXTVER'] = 2
        ehdu.header['EXTLEVEL'] = 3
        hdulb = HDUList([phdu, ehdu])
        diff = FITSDiff(hdula, hdulb)
        assert not diff.identical

        assert diff.diff_hdus[0][0] == 1

        hdu_diff = diff.diff_hdus[0][1]
        assert hdu_diff.diff_extension_types == ('IMAGE', 'BINTABLE')
        assert hdu_diff.diff_extnames == ('FOO', 'BAR')
        assert hdu_diff.diff_extvers == (1, 2)
        assert hdu_diff.diff_extlevels == (1, 3)

        report = diff.report()
        assert 'Extension types differ' in report
        assert 'a: IMAGE\n    b: BINTABLE' in report
        assert 'Extension names differ' in report
        assert 'a: FOO\n    b: BAR' in report
        assert 'Extension versions differ' in report
        assert 'a: 1\n    b: 2' in report
        assert 'Extension levels differ' in report
        assert 'a: 1\n    b: 2' in report
示例#9
0
def test_miri_setpointing(_jail, rtdata, fitsdiff_default_kwargs):
    """
    Regression test of the set_telescope_pointing script on a level-1b MIRI image.
    """

    # Get SIAF PRD database file
    siaf_path = rtdata.get_data("common/prd.db")

    # Get the input level-1b file
    rtdata.get_data("miri/image/jw80600010001_02101_00001_mirimage_uncal.fits")

    # The add_wcs function overwrites its input, so output = input
    rtdata.output = rtdata.input

    # Call the WCS routine, using the ENGDB_Service
    # Note that there aren't any quaternion mnemonics in the ENGDB for the time
    # range of this exposure, so we set "allow_default" to tell add_wcs to use
    # default values for the pointing-related keywords. Keyword values retrieved
    # from the SIAF will be good.
    add_wcs(rtdata.input, allow_default=True, siaf_path=siaf_path)

    # Compare the results
    rtdata.get_truth(
        "truth/test_miri_setpointing/jw80600010001_02101_00001_mirimage_uncal.fits"
    )
    fitsdiff_default_kwargs['rtol'] = 1e-6
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#10
0
def test_miri_lrs_slitless_tso3(
    run_spec3_pipeline,
    generate_tso3_asn,
    rtdata_module,
    fitsdiff_default_kwargs,
    step_suffix,
    filename_extension,
    is_product,
    diff_astropy_tables,
):
    """Compare the output of a MIRI LRS slitless calwebb_tso3 step."""
    rtdata = rtdata_module
    _, asn_id = generate_tso3_asn

    if is_product:
        output_filename = f"{PRODUCT_NAME}_{step_suffix}.{filename_extension}"
    else:
        output_filename = f"{DATASET_ID}_{asn_id}_{step_suffix}.{filename_extension}"
    rtdata.output = output_filename
    rtdata.get_truth(f"truth/test_miri_lrs_slitless_tso3/{output_filename}")

    if filename_extension == "fits":
        diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
        assert diff.identical, diff.report()
    else:
        diff = diff_astropy_tables(rtdata.output, rtdata.truth)
        assert len(diff) == 0, "\n".join(diff)
def test_nirspec_ifu_mbkg_user(rtdata, fitsdiff_default_kwargs):
    """Test NIRSpec IFU data with a user-supplied background file."""
    # Get user-supplied background
    user_background = "prism_bkg_x1d.fits"
    rtdata.get_data(f"nirspec/ifu/{user_background}")

    # Get input data
    rtdata.get_data("nirspec/ifu/prism_sci_bkg_cal.fits")

    collect_pipeline_cfgs("config")
    args = [
        "config/master_background.cfg", rtdata.input, "--user_background",
        user_background
    ]
    Step.from_cmdline(args)

    output = "prism_sci_bkg_master_background.fits"
    rtdata.output = output

    # Get the truth file
    rtdata.get_truth(f"truth/test_nirspec_ifu_mbkg_user/{output}")

    # Compare the results
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#12
0
def test_nircam_setpointing_tsimg(_jail, rtdata, fitsdiff_default_kwargs):
    """
    Regression test of the set_telescope_pointing script on a level-1b
    NIRCam TSO imaging file.
    """
    # Get SIAF PRD database file
    siaf_path = rtdata.get_data("common/prd.db")
    rtdata.get_data(
        "nircam/tsimg/jw00312006001_02102_00001-seg001_nrcb1_uncal.fits")
    # The add_wcs function overwrites its input, so output = input
    rtdata.output = rtdata.input

    # Call the WCS routine, using the ENGDB_Service
    try:
        add_wcs(rtdata.input, siaf_path=siaf_path)
    except ValueError:
        pytest.skip('Engineering Database not available.')

    rtdata.get_truth(
        "truth/test_nircam_setpointing/jw00312006001_02102_00001-seg001_nrcb1_uncal.fits"
    )

    fitsdiff_default_kwargs['rtol'] = 1e-6
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#13
0
 def compare(cls, reference_file, test_file, atol=None, rtol=None):
     import astropy
     from astropy.io.fits.diff import FITSDiff
     from astropy.utils.introspection import minversion
     if minversion(astropy, '2.0'):
         diff = FITSDiff(reference_file, test_file, rtol=rtol)
     else:
         diff = FITSDiff(reference_file, test_file, tolerance=rtol)
     return diff.identical, diff.report()
示例#14
0
def test_miri_image2(run_pipeline, fitsdiff_default_kwargs, output):
    """Regression test of calwebb_image2 pipeline performed on MIRI data."""
    rtdata = run_pipeline
    rtdata.output = output

    rtdata.get_truth(os.path.join("truth/test_miri_image2_cal", output))

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#15
0
def test_miri_image3_i2d(run_image3, rtdata_module, fitsdiff_default_kwargs):
    rtdata = rtdata_module
    rtdata.input = "det_dithered_5stars_image3_asn.json"
    rtdata.output = "det_dithered_5stars_f770w_i2d.fits"
    rtdata.get_truth("truth/test_miri_image_stages/det_dithered_5stars_f770w_i2d.fits")

    fitsdiff_default_kwargs["rtol"] = 1e-4
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#16
0
 def compare(cls, reference_file, test_file, atol=None, rtol=None):
     import astropy
     from astropy.io.fits.diff import FITSDiff
     from astropy.utils.introspection import minversion
     if minversion(astropy, '2.0'):
         diff = FITSDiff(reference_file, test_file, rtol=rtol)
     else:
         diff = FITSDiff(reference_file, test_file, tolerance=rtol)
     return diff.identical, diff.report()
def test_miri_lrs_extract1d_from_cal(run_pipeline, rtdata_module, fitsdiff_default_kwargs):
    rtdata = rtdata_module
    rtdata.input = "jw00623032001_03102_00001_mirimage_cal.fits"
    Extract1dStep.call(rtdata.input, save_results=True)
    output = "jw00623032001_03102_00001_mirimage_extract1dstep.fits"
    rtdata.output = output
    rtdata.get_truth(f"truth/test_miri_lrs_slit_spec2/{output}")
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#18
0
def test_nircam_image_stages12(run_pipelines, fitsdiff_default_kwargs, suffix):
    """Regression test of detector1 and image2 pipelines performed on NIRCam data."""
    rtdata = run_pipelines
    rtdata.input = "jw42424001001_01101_00001_nrca5_uncal.fits"
    output = "jw42424001001_01101_00001_nrca5_" + suffix + ".fits"
    rtdata.output = output
    rtdata.get_truth("truth/test_nircam_image_stages/" + output)

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#19
0
def test_nirspec_detector1(run_pipeline, fitsdiff_default_kwargs, output):
    """
    Regression test of calwebb_detector1 pipeline performed on NIRSpec data.
    """
    rtdata = run_pipeline
    rtdata.output = output
    rtdata.get_truth(os.path.join("truth/test_nirspec_subarray", output))

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#20
0
def test_spec3(run_spec3, fitsdiff_default_kwargs, output):
    """Regression test matching output files"""

    rtdata = run_spec3
    rtdata.output = output

    rtdata.get_truth(os.path.join(TRUTH_PATH, rtdata.output))

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#21
0
def test_nircam_image_stage3_segm(run_image3pipeline, rtdata_module, fitsdiff_default_kwargs):
    """Test that segmentation map looks good for NIRCam imaging"""
    rtdata = rtdata_module
    rtdata.input = "jw42424-o002_20191220t214154_image3_001_asn.json"
    output = "jw42424-o002_t001_nircam_clear-f444w_segm.fits"
    rtdata.output = output
    rtdata.get_truth(f"truth/test_nircam_image_stages/{output}")

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#22
0
def test_niriss_soss_stage3_x1dints(run_pipelines, fitsdiff_default_kwargs):
    rtdata = run_pipelines
    rtdata.input = "jw00625-o023_20191210t204036_tso3_001_asn.json"
    rtdata.output = "jw00625-o023_t001_niriss_clear-gr700xd-substrip256_x1dints.fits"
    rtdata.get_truth(
        "truth/test_niriss_soss_stages/jw00625-o023_t001_niriss_clear-gr700xd-substrip256_x1dints.fits"
    )

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#23
0
def test_nircam_tsgrism_stage3_x1dints(run_pipelines, fitsdiff_default_kwargs):
    rtdata = run_pipelines
    rtdata.input = "jw00721-o012_20191119t043909_tso3_001_asn.json"
    rtdata.output = "jw00721-o012_t004_nircam_f444w-grismr-subgrism256_x1dints.fits"
    rtdata.get_truth(
        "truth/test_nircam_tsgrism_stages/jw00721-o012_t004_nircam_f444w-grismr-subgrism256_x1dints.fits"
    )

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#24
0
def test_spec2(rtdata_module, run_spec2, fitsdiff_default_kwargs, suffix):
    """Test ensuring the calwebb_tso-spec2 is operating appropriately for MIRI MRS TSO data"""
    rtdata = rtdata_module
    output = f"jw80600018001_02101_00003_mirifushort_{suffix}.fits"
    rtdata.output = output

    rtdata.get_truth(f"{TRUTH_PATH}/{output}")

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#25
0
def test_nircam_coron3_exp(run_pipeline, suffix, exposure, fitsdiff_default_kwargs):
    """Check intermediate results of calwebb_coron3"""
    rtdata = run_pipeline

    output = "jw9999947001_02102_" + exposure + "_nrcb3_a3001_" + suffix + ".fits"
    rtdata.output = output
    rtdata.get_truth("truth/test_nircam_coron3/" + output)

    fitsdiff_default_kwargs["atol"] = 1e-5
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#26
0
def test_nircam_tsgrism_stage2(run_pipelines, fitsdiff_default_kwargs, suffix):
    """Regression test of tso-spec2 pipeline performed on NIRCam TSO grism data."""
    rtdata = run_pipelines
    rtdata.input = "jw00721012001_03103_00001-seg001_nrcalong_rateints.fits"
    output = "jw00721012001_03103_00001-seg001_nrcalong_" + suffix + ".fits"
    rtdata.output = output

    rtdata.get_truth("truth/test_nircam_tsgrism_stages/" + output)

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#27
0
def test_niriss_soss_stage2(run_pipelines, fitsdiff_default_kwargs, suffix):
    """Regression test of tso-spec2 pipeline performed on NIRISS SOSS data."""
    rtdata = run_pipelines
    rtdata.input = "jw00625023001_03101_00001-seg001_nis_rateints.fits"
    output = "jw00625023001_03101_00001-seg001_nis_" + suffix + ".fits"
    rtdata.output = output

    rtdata.get_truth("truth/test_niriss_soss_stages/" + output)

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#28
0
def test_miri_image_stage3_i2d(run_pipelines, fitsdiff_default_kwargs):
    rtdata = run_pipelines
    rtdata.input = "det_dithered_5stars_image3_asn.json"
    rtdata.output = "det_dithered_5stars_f770w_i2d.fits"
    rtdata.get_truth(
        "truth/test_miri_image_stages/det_dithered_5stars_f770w_i2d.fits")

    fitsdiff_default_kwargs['ignore_fields'] = ['date', 'filename']
    fitsdiff_default_kwargs['ignore_keywords'] += ['naxis1', 'tform*']
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#29
0
def test_nircam_coron3_product(run_pipeline, suffix, fitsdiff_default_kwargs):
    """Check final products of calwebb_coron3"""
    rtdata = run_pipeline

    output = "jw99999-a3001_t1_nircam_f140m-maskbar_" + suffix + ".fits"
    rtdata.output = output
    rtdata.get_truth("truth/test_nircam_coron3/" + output)

    fitsdiff_default_kwargs['atol'] = 1e-5
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#30
0
def test_nircam_image_moving_target_i2d(rtdata, fitsdiff_default_kwargs):
    """Test resampled i2d of moving target exposures for NIRCam imaging"""
    rtdata.get_asn("nircam/image/mt_asn.json")
    rtdata.output = "mt_assoc_i2d.fits"
    args = ["calwebb_image3", rtdata.input]
    Step.from_cmdline(args)
    rtdata.get_truth("truth/test_nircam_mtimage/mt_assoc_i2d.fits")

    fitsdiff_default_kwargs["atol"] = 1e-5
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#31
0
def test_miri_lrs_slitless_spec2(run_spec2_pipeline, rtdata_module,
                                 fitsdiff_default_kwargs, step_suffix):
    """Compare the output of a MIRI LRS slitless calwebb_tso-spec2 step."""
    rtdata = rtdata_module

    output_filename = f"{DATASET_ID}_{step_suffix}.fits"
    rtdata.output = output_filename
    rtdata.get_truth(f"truth/test_miri_lrs_slitless_spec2/{output_filename}")

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#32
0
def test_nircam_tsimg_stage2(run_pipelines, fitsdiff_default_kwargs, suffix):
    """Regression test of tso-image2 pipeline performed on NIRCam TSIMG data."""
    rtdata = run_pipelines
    rtdata.input = "jw00312006001_02102_00001-seg001_nrcb1_rateints.fits"
    output = "jw00312006001_02102_00001-seg001_nrcb1_" + suffix + ".fits"
    rtdata.output = output

    rtdata.get_truth("truth/test_nircam_tsimg_stage23/" + output)

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#33
0
def test_niriss_ami3_product(run_pipeline, suffix, fitsdiff_default_kwargs):
    """Check final products of calwebb_ami3"""
    rtdata = run_pipeline

    output = "jw00793-c1014_t005_niriss_f480m-nrm-sub80_" + suffix + ".fits"
    rtdata.output = output
    rtdata.get_truth("truth/test_niriss_ami3/" + output)

    fitsdiff_default_kwargs['atol'] = 1e-5
    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#34
0
def test_miri_lrs_slitless_tso3_x1dints(run_tso3_pipeline, rtdata_module,
    fitsdiff_default_kwargs):
    """Compare the output of a MIRI LRS slitless calwebb_tso3 pipeline."""
    rtdata = rtdata_module

    output_filename = f"{PRODUCT_NAME}_x1dints.fits"
    rtdata.output = output_filename
    rtdata.get_truth(f"truth/test_miri_lrs_slitless_tso3/{output_filename}")

    diff = FITSDiff(rtdata.output, rtdata.truth, **fitsdiff_default_kwargs)
    assert diff.identical, diff.report()
示例#35
0
    def test_ignore_hdus(self):
        a = np.arange(100).reshape(10, 10)
        b = a.copy()
        ha = Header([('A', 1), ('B', 2), ('C', 3)])
        xa = np.array([(1.0, 1), (3.0, 4)], dtype=[('x', float), ('y', int)])
        xb = np.array([(1.0, 2), (3.0, 5)], dtype=[('x', float), ('y', int)])
        phdu = PrimaryHDU(header=ha)
        ihdua = ImageHDU(data=a, name='SCI')
        ihdub = ImageHDU(data=b, name='SCI')
        bhdu1 = BinTableHDU(data=xa, name='ASDF')
        bhdu2 = BinTableHDU(data=xb, name='ASDF')
        hdula = HDUList([phdu, ihdua, bhdu1])
        hdulb = HDUList([phdu, ihdub, bhdu2])

        # ASDF extension should be different
        diff = FITSDiff(hdula, hdulb)
        assert not diff.identical
        assert diff.diff_hdus[0][0] == 2

        # ASDF extension should be ignored
        diff = FITSDiff(hdula, hdulb, ignore_hdus=['ASDF'])
        assert diff.identical, diff.report()

        diff = FITSDiff(hdula, hdulb, ignore_hdus=['ASD*'])
        assert diff.identical, diff.report()

        # SCI extension should be different
        hdulb['SCI'].data += 1
        diff = FITSDiff(hdula, hdulb, ignore_hdus=['ASDF'])
        assert not diff.identical

        # SCI and ASDF extensions should be ignored
        diff = FITSDiff(hdula, hdulb, ignore_hdus=['SCI', 'ASDF'])
        assert diff.identical, diff.report()

        # All EXTVER of SCI should be ignored
        ihduc = ImageHDU(data=a, name='SCI', ver=2)
        hdulb.append(ihduc)
        diff = FITSDiff(hdula, hdulb, ignore_hdus=['SCI', 'ASDF'])
        assert not any(diff.diff_hdus), diff.report()
        assert any(diff.diff_hdu_count), diff.report()
示例#36
0
    def test_identical_files_basic(self):
        """Test identicality of two simple, extensionless files."""

        a = np.arange(100).reshape(10, 10)
        hdu = PrimaryHDU(data=a)
        hdu.writeto(self.temp('testa.fits'))
        hdu.writeto(self.temp('testb.fits'))
        diff = FITSDiff(self.temp('testa.fits'), self.temp('testb.fits'))
        assert diff.identical

        report = diff.report()
        # Primary HDUs should contain no differences
        assert 'Primary HDU' not in report
        assert 'Extension HDU' not in report
        assert 'No differences found.' in report

        a = np.arange(10)
        ehdu = ImageHDU(data=a)
        diff = HDUDiff(ehdu, ehdu)
        assert diff.identical
        report = diff.report()
        assert 'No differences found.' in report
示例#37
0
def fitsdiff(input1, input2, comment_excl_list='', value_excl_list='',
             field_excl_list='', maxdiff=10, delta=0.0, neglect_blanks=True,
             output=None):

    if isinstance(comment_excl_list, string_types):
        comment_excl_list = list_parse(comment_excl_list)

    if isinstance(value_excl_list, string_types):
        value_excl_list = list_parse(value_excl_list)

    if isinstance(field_excl_list, string_types):
        field_excl_list = list_parse(field_excl_list)

    diff = FITSDiff(input1, input2, ignore_keywords=value_excl_list,
                    ignore_comments=comment_excl_list,
                    ignore_fields=field_excl_list, numdiffs=maxdiff,
                    tolerance=delta, ignore_blanks=neglect_blanks)

    if output is None:
        output = sys.stdout

    diff.report(output)

    return diff.identical
示例#38
0
    def test_partially_identical_files2(self):
        """
        Test files that have some identical HDUs but one different HDU.
        """

        a = np.arange(100).reshape(10, 10)
        phdu = PrimaryHDU(data=a)
        ehdu = ImageHDU(data=a)
        ehdu2 = ImageHDU(data=(a + 1))
        hdula = HDUList([phdu, ehdu, ehdu])
        hdulb = HDUList([phdu, ehdu2, ehdu])
        diff = FITSDiff(hdula, hdulb)

        assert not diff.identical
        assert diff.diff_hdu_count == ()
        assert len(diff.diff_hdus) == 1
        assert diff.diff_hdus[0][0] == 1

        hdudiff = diff.diff_hdus[0][1]
        assert not hdudiff.identical
        assert hdudiff.diff_extnames == ()
        assert hdudiff.diff_extvers == ()
        assert hdudiff.diff_extension_types == ()
        assert hdudiff.diff_headers.identical
        assert hdudiff.diff_data is not None

        datadiff = hdudiff.diff_data
        assert isinstance(datadiff, ImageDataDiff)
        assert not datadiff.identical
        assert datadiff.diff_dimensions == ()
        assert (datadiff.diff_pixels ==
                [((0, y), (y, y + 1)) for y in range(10)])
        assert datadiff.diff_ratio == 1.0
        assert datadiff.diff_total == 100

        report = diff.report()
        # Primary HDU and 2nd extension HDU should have no differences
        assert 'Primary HDU' not in report
        assert 'Extension HDU 2' not in report
        assert 'Extension HDU 1' in report

        assert 'Headers contain differences' not in report
        assert 'Data contains differences' in report
        for y in range(10):
            assert 'Data differs at [{}, 1]'.format(y + 1) in report
        assert '100 different pixels found (100.00% different).' in report
示例#39
0
    def test_partially_identical_files1(self):
        """
        Test files that have some identical HDUs but a different extension
        count.
        """

        a = np.arange(100).reshape(10, 10)
        phdu = PrimaryHDU(data=a)
        ehdu = ImageHDU(data=a)
        hdula = HDUList([phdu, ehdu])
        hdulb = HDUList([phdu, ehdu, ehdu])
        diff = FITSDiff(hdula, hdulb)
        assert not diff.identical
        assert diff.diff_hdu_count == (2, 3)

        # diff_hdus should be empty, since the third extension in hdulb
        # has nothing to compare against
        assert diff.diff_hdus == []

        report = diff.report()
        assert 'Files contain different numbers of HDUs' in report
        assert 'a: 2\n b: 3' in report
        assert 'No differences found between common HDUs' in report