def save_arrays(self): """Write out a small set of data using ui.save_arrays and then read it back in, to check it was written out correctly (or, at least, in a way that can be read back in). """ # It looks like the input arrays to `write_arrays` should be numpy # arrays, so enforce that invariant. a = numpy.asarray([1, 3, 9]) b = numpy.sqrt(numpy.asarray(a)) c = b * 0.1 if self._colnames: fields = ["x", "yy", "z"] else: fields = None ofh = tempfile.NamedTemporaryFile(suffix='sherpa_test') ui.save_arrays(ofh.name, [a, b, c], fields=fields, ascii=not self._fits, clobber=True) out = self._read_func(ofh.name) rtol = 0 atol = 1e-5 self.assertIsInstance(out, Data1D) self.assertEqual(out.name, ofh.name, msg="file name") assert_allclose(out.x, a, rtol=rtol, atol=atol, err_msg="x column") assert_allclose(out.y, b, rtol=rtol, atol=atol, err_msg="y column") assert_allclose(out.staterror, c, rtol=rtol, atol=atol, err_msg="staterror") self.assertIsNone(out.syserror, msg="syserror")
def test_save_arrays_colmismatch_errs(ascii_type): with pytest.raises(IOErr) as exc: a = numpy.asarray([1, 3, 5]) b = numpy.asarray([4, 6, 8]) c = a * b fields = ["odd", "even"] ui.save_arrays("bogus_tempfile_name", [a, b, c], fields=fields, ascii=ascii_type, clobber=True) assert 'Expected 3 columns but found 2' in str(exc.value)
def save_arrays(colnames, fits, read_func): """Write out a small set of data using ui.save_arrays and then read it back in, to check it was written out correctly (or, at least, in a way that can be read back in). Parameter --------- colnames, fits : bool read_func : function """ # It looks like the input arrays to `write_arrays` should be numpy # arrays, so enforce that invariant. a = numpy.asarray([1, 3, 9]) b = numpy.sqrt(numpy.asarray(a)) c = b * 0.1 if colnames: fields = ["x", "yy", "z"] else: fields = None ofh = tempfile.NamedTemporaryFile(suffix='sherpa_test') ui.save_arrays(ofh.name, [a, b, c], fields=fields, ascii=not fits, clobber=True) out = read_func(ofh.name) assert isinstance(out, Data1D) rtol = 0 atol = 1e-5 # remove potential dm syntax introduced by backend before checking for equality out_name = re.sub(r"\[.*\]", "", out.name) assert ofh.name == out_name, 'file name' assert_allclose(out.x, a, rtol=rtol, atol=atol, err_msg="x column") assert_allclose(out.y, b, rtol=rtol, atol=atol, err_msg="y column") assert_allclose(out.staterror, c, rtol=rtol, atol=atol, err_msg="staterror") assert out.syserror is None, 'syserror'