def test_sourceplot_facn(factor, caplog, make_basic_datapha): """Change plot factor for test_sourceplot""" data = make_basic_datapha data.units = "energy" data.plot_fac = factor assert data.rate # use a model that is "okay" to use with keV bins # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_energy(sp, factor=factor)
def test_sourceplot_channels(caplog, make_basic_datapha): """Although we ask for channels we get energy units""" data = make_basic_datapha data.units = "channel" # use a model that is "okay" to use with keV bins # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 1 lname, lvl, msg = caplog.record_tuples[0] assert lname == 'sherpa.astro.plot' assert lvl == logging.WARN assert msg == 'Channel space is unappropriate for the PHA unfolded source model,\nusing energy.' check_sourceplot_energy(sp)
def test_sourceplot_wavelength_counts(caplog): """test_sourceplot_wavelength but when rate=False is chosen""" bins = np.arange(0.1, 10.1, 0.1) data = DataPHA('', np.arange(10), np.ones(10), bin_lo=bins[:-1].copy(), bin_hi=bins[1:].copy()) data.units = "wave" data.rate = False # use a model that is "okay" to use with keV bins # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_wavelength(sp)
def test_sourceplot_wavelength_facn(factor, caplog): """Change plot factor for test_sourceplot_wavelength""" bins = np.arange(0.1, 10.1, 0.1) data = DataPHA('', np.arange(10), np.ones(10), bin_lo=bins[:-1].copy(), bin_hi=bins[1:].copy()) data.units = "wavelength" data.plot_fac = factor assert data.rate m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_wavelength(sp, factor=factor)
def test_sourceplot_wavelength(caplog): """Check we get wavelength units""" bins = np.arange(0.1, 10.1, 0.1) data = DataPHA('', np.arange(10), np.ones(10), bin_lo=bins[:-1].copy(), bin_hi=bins[1:].copy()) data.units = "wave" # Note that the model evaluation in done in Angstroms # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_wavelength(sp)
def test_sourceplot(caplog): bins = np.arange(0.1, 10.1, 0.1) data = DataPHA('', np.arange(10), np.ones(10), bin_lo=bins[:-1].copy(), bin_hi=bins[1:].copy()) data.units = "energy" assert data.rate assert data.plot_fac == 0 # use a model that is "okay" to use with keV bins # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_energy(sp)
def test_sourceplot(): bins = np.arange(0.1, 10.1, 0.1) data = DataPHA('', np.arange(10), np.ones(10), bin_lo=bins[:-1].copy(), bin_hi=bins[1:].copy()) data.units = "energy" # use a model that is "okay" to use with keV bins # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() sp.prepare(data, src) # add in several asserts to check that something has been # added to the object # assert sp.xlabel == 'Energy (keV)' # the following depends on the backend # assert sp.ylabel == 'f(E) Photons/sec/cm$^2$/keV' assert sp.title == 'Source Model of ' assert sp.xlo == pytest.approx(bins[:-1]) assert sp.xhi == pytest.approx(bins[1:]) # The check of the values is just to check that things are going # as expected, so the model values have been adjusted so that # an "integer" check can be used with enough precision to make # sure that the model is being evaluated correctly, but without # a very-high-precision check # yexp = np.asarray([9998, 9997, 9997, 9997, 9996, 9996, 9995, 9994, 9994, 9993, 9992, 9991, 9990, 9988, 9987, 9985, 9983, 9982, 9980, 9977, 9975, 9973, 9970, 9967, 9964, 9961, 9958, 9955, 9951, 9948, 9944, 9941, 9937, 9934, 9930, 9927, 9923, 9920, 9917, 9914, 9911, 9909, 9907, 9905, 9903, 9902, 9901, 9900, 9900, 9900, 9900, 9901, 9902, 9903, 9905, 9907, 9909, 9911, 9914, 9917, 9920, 9923, 9927, 9930, 9934, 9937, 9941, 9944, 9948, 9951, 9955, 9958, 9961, 9964, 9967, 9970, 9973, 9975, 9977, 9980, 9982, 9983, 9985, 9987, 9988, 9990, 9991, 9992, 9993, 9994, 9994, 9995, 9996, 9996, 9997, 9997, 9997, 9998, 9998]) assert (sp.y.astype(np.int) == yexp).all()
def test_sourceplot_wavelength(caplog, make_basic_datapha): """Check we get wavelength units""" data = make_basic_datapha data.units = "wave" # Note that the model evaluation in done in Angstroms # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_wavelength(sp)
def test_sourceplot_wavelength_counts(caplog, make_basic_datapha): """test_sourceplot_wavelength but when rate=False is chosen""" data = make_basic_datapha data.units = "wave" data.rate = False # use a model that is "okay" to use with keV bins # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_wavelength(sp)
def test_sourceplot_counts(caplog, make_basic_datapha): """test_sourceplot but when rate=False is chosen""" data = make_basic_datapha data.units = "energy" data.rate = False # Note that the model evaluation in done in Angstroms # m1 = Const1D('bgnd') m2 = Gauss1D('abs1') src = 100 * m1 * (1 - m2) * 10000 m1.c0 = 0.01 m2.pos = 5.0 m2.fwhm = 4.0 m2.ampl = 0.1 sp = SourcePlot() with caplog.at_level(logging.INFO, logger='sherpa'): sp.prepare(data, src) assert len(caplog.records) == 0 check_sourceplot_energy(sp)
def test_sourceplot(self): sp = SourcePlot() sp.prepare(self.data, self.src)