Ejemplo n.º 1
0
        public void CreateByColumn()
        {
            Fits f = MakeAsciiTable();

            WriteFile(f, "at1.fits");

            System.Console.Out.WriteLine("\n\n**** Create a table column by Column ****");

            f = new Fits("at1.fits", FileAccess.Read);
            AsciiTableHDU hdu = (AsciiTableHDU)f.GetHDU(1);

            Object[] inputs  = GetSampleCols();
            Object[] outputs = (Object[])hdu.Kernel;

            for (int i = 0; i < 50; i += 1)
            {
                ((String[])outputs[4])[i] = ((String[])outputs[4])[i].Trim();
            }

            for (int j = 0; j < 5; j += 1)
            {
                Assertion.AssertEquals("ByCol:" + j,
                                       true,
                                       ArrayFuncs.ArrayEquals(inputs[j], outputs[j], Math.Pow(10, -6), Math.Pow(10, -14)));
            }
        }
Ejemplo n.º 2
0
        // Read a FITS file
        public void ReadFile()
        {
            Initialize();

            Fits f = null;

            try
            {
                f = new Fits(TestFileSetup.GetTargetFilename("image1.fits"));
                BasicHDU[] hdus = f.Read();

                Assert.AreEqual(f.NumberOfHDUs, 8);
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bimg, hdus[0].Data.Kernel));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(simg, hdus[1].Data.Kernel));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(iimg, hdus[2].Data.Kernel));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(limg, hdus[3].Data.Kernel));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(fimg, hdus[4].Data.Kernel));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(dimg, hdus[5].Data.Kernel));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(img3, hdus[6].Data.Kernel));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(img1, hdus[7].Data.Kernel));
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 3
0
        public void ReadByColumn()
        {
            Fits          f    = new Fits("at1.fits", FileAccess.Read);
            AsciiTableHDU hdu  = (AsciiTableHDU)f.GetHDU(1);
            AsciiTable    data = (AsciiTable)hdu.GetData();

            Object[] cols = GetSampleCols();

            Assertion.AssertEquals("Number of rows", data.NRows, 50);
            Assertion.AssertEquals("Number of columns", data.NCols, 5);

            for (int j = 0; j < data.NCols; j += 1)
            {
                Object col = data.GetColumn(j);
                if (j == 4)
                {
                    String[] st = (String[])col;
                    for (int i = 0; i < st.Length; i += 1)
                    {
                        st[i] = st[i].Trim();
                    }
                }
                Assertion.AssertEquals("Ascii Columns:" + j, true, ArrayFuncs.ArrayEquals(cols[j], col, Math.Pow(10, -6), Math.Pow(10, -14)));
            }
        }
Ejemplo n.º 4
0
        public void CreateByColumn()
        {
            Fits f = null;

            try
            {
                f = MakeAsciiTable();
                WriteFile(f, TestFileSetup.GetTargetFilename("at1.fits"));

                System.Console.Out.WriteLine("\n\n**** Create a table column by Column ****");

                f = new Fits(TestFileSetup.GetTargetFilename("at1.fits"), FileAccess.Read);
                AsciiTableHDU hdu = (AsciiTableHDU)f.GetHDU(1);

                Object[] inputs  = GetSampleCols();
                Object[] outputs = (Object[])hdu.Kernel;

                for (int i = 0; i < 50; i += 1)
                {
                    ((String[])outputs[4])[i] = ((String[])outputs[4])[i].Trim();
                }

                for (int j = 0; j < 5; j += 1)
                {
                    Assert.AreEqual(true,
                                    ArrayFuncs.ArrayEquals(inputs[j], outputs[j], Math.Pow(10, -6), Math.Pow(10, -14)));
                }
            }
            finally
            {
                f.Close();
            }
        }
Ejemplo n.º 5
0
        public void ReadByElement()
        {
            Fits f = null;

            try
            {
                f = new Fits(TestFileSetup.GetTargetFilename("at2.fits"), FileAccess.Read);
                AsciiTableHDU hdu  = (AsciiTableHDU)f.GetHDU(1);
                AsciiTable    data = (AsciiTable)hdu.GetData();

                for (int i = 0; i < data.NRows; i += 1)
                {
                    Object[] row = (Object[])data.GetRow(i);
                    for (int j = 0; j < data.NCols; j += 1)
                    {
                        Object val = data.GetElement(i, j);
                        Assert.AreEqual(true, ArrayFuncs.ArrayEquals(val, row[j]));
                    }
                }
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 6
0
        public void TestVar()
        {
            Object[] data = new Object[] { floats, vf, vs, vd, shorts, vbool };
            Fits     f    = new Fits();

            f.AddHDU(Fits.MakeHDU(data));

            //BufferedDataStream bdos = new BufferedDataStream(new FileStream("bt2.fits", FileMode.Open, FileAccess.ReadWrite));
            BufferedFile bdos = new BufferedFile("bt2.fits", FileAccess.ReadWrite, FileShare.ReadWrite);

            f.Write(bdos);
            bdos.Close();

            f = new Fits("bt2.fits", FileAccess.Read);
            f.Read();
            BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);
            Header         hdr  = bhdu.Header;

            Assertion.AssertEquals("var1", true, hdr.GetIntValue("PCOUNT") > 0);
            Assertion.AssertEquals("var2", 6, hdr.GetIntValue("TFIELDS"));

            for (int i = 0; i < data.Length; i += 1)
            {
                Assertion.AssertEquals("vardata(" + i + ")", true, ArrayFuncs.ArrayEquals(data[i], bhdu.GetColumn(i)));
            }
        }
Ejemplo n.º 7
0
        public void CreateByRow()
        {
            Fits f = null;

            try
            {
                f = new Fits();
                AsciiTable data = new AsciiTable();
                Object[]   row  = new Object[4];

                System.Console.Out.WriteLine("\n\n**** Create a table column by Row ****");

                for (int i = 0; i < 50; i += 1)
                {
                    data.AddRow(GetRow(i));
                }

                f.AddHDU(Fits.MakeHDU(data));

                WriteFile(f, TestFileSetup.GetTargetFilename("at2.fits"));
                f.Close();

                // Read it back.
                f = new Fits(TestFileSetup.GetTargetFilename("at2.fits"), FileAccess.Read);

                Object[] output = (Object[])f.GetHDU(1).Kernel;
                Object[] input  = GetRowBlock(50);

                for (int i = 0; i < 50; i += 1)
                {
                    String[] str  = (String[])output[2];
                    String[] istr = (String[])input[2];
                    int      len1 = str[1].Length;
                    str[i] = str[i].Trim();
                    // The first row would have set the length for all the
                    // remaining rows...
                    if (istr[i].Length > len1)
                    {
                        istr[i] = istr[i].Substring(0, len1);
                    }
                }

                for (int j = 0; j < 3; j += 1)
                {
                    Assert.AreEqual(true,
                                    ArrayFuncs.ArrayEquals(input[j], output[j], Math.Pow(10, -6), Math.Pow(10, -14)));
                }
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 8
0
        public void TestSimpleIO()
        {
            FitsFactory.UseAsciiTables = false;

            Fits f = new Fits();

            Object[] data = new Object[] { bytes, bits, bools, shorts, ints,
                                           floats, doubles, longs, strings };
            f.AddHDU(Fits.MakeHDU(data));

            BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);

            bhdu.SetColumnName(0, "bytes", null);
            bhdu.SetColumnName(1, "bits", "bits later on");
            bhdu.SetColumnName(6, "doubles", null);
            bhdu.SetColumnName(5, "floats", "4 x 4 array");

            BufferedFile bf = new BufferedFile("bt1.fits", FileAccess.ReadWrite, FileShare.ReadWrite);

            f.Write(bf);
            bf.Flush();
            bf.Close();

            f = new Fits("bt1.fits");
            f.Read();

            Assertion.AssertEquals("NHDU", 2, f.NumberOfHDUs);


            BinaryTableHDU thdu = (BinaryTableHDU)f.GetHDU(1);
            Header         hdr  = thdu.Header;

            Assertion.AssertEquals("HDR1", 9, hdr.GetIntValue("TFIELDS"));
            Assertion.AssertEquals("HDR2", 2, hdr.GetIntValue("NAXIS"));
            Assertion.AssertEquals("HDR3", 8, hdr.GetIntValue("BITPIX"));
            Assertion.AssertEquals("HDR4", "BINTABLE", hdr.GetStringValue("XTENSION"));
            Assertion.AssertEquals("HDR5", "bytes", hdr.GetStringValue("TTYPE1"));
            Assertion.AssertEquals("HDR6", "doubles", hdr.GetStringValue("TTYPE7"));

            for (int i = 0; i < data.Length; i += 1)
            {
                Object col = thdu.GetColumn(i);
                if (i == 8)
                {
                    String[] st = (String[])col;

                    for (int j = 0; j < st.Length; j += 1)
                    {
                        st[j] = st[j].Trim();
                    }
                }
                Assertion.AssertEquals("Data" + i, true, ArrayFuncs.ArrayEquals(data[i], col));
            }
            f.Close();
        }
Ejemplo n.º 9
0
        public void BuildByColumn()
        {
            Fits f = null;

            try
            {
                BinaryTable btab = new BinaryTable();

                btab.AddColumn(floats);
                btab.AddColumn(vf);
                btab.AddColumn(strings);
                btab.AddColumn(vbool);
                btab.AddColumn(ints);

                f = new Fits();
                f.AddHDU(Fits.MakeHDU(btab));

                BufferedFile bdos =
                    new BufferedFile(
                        TestFileSetup.GetTargetFilename("bt3.fits"),
                        FileAccess.ReadWrite,
                        FileShare.ReadWrite);
                f.Write(bdos);
                bdos.Close();
                bdos.Dispose();
                f.Close();

                f = new Fits(TestFileSetup.GetTargetFilename("bt3.fits"));
                BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);
                btab = (BinaryTable)bhdu.Data;

                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(floats, bhdu.GetColumn(0)));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(vf, bhdu.GetColumn(1))); // problem is here only

                String[] col = (String[])bhdu.GetColumn(2);
                for (int i = 0; i < col.Length; i += 1)
                {
                    col[i] = col[i].Trim();
                }

                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(strings, col));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(vbool, bhdu.GetColumn(3)));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(ints, bhdu.GetColumn(4)));
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 10
0
        public void ReadByElement()
        {
            Fits          f    = new Fits("at2.fits", FileAccess.Read);
            AsciiTableHDU hdu  = (AsciiTableHDU)f.GetHDU(1);
            AsciiTable    data = (AsciiTable)hdu.GetData();


            for (int i = 0; i < data.NRows; i += 1)
            {
                Object[] row = (Object[])data.GetRow(i);
                for (int j = 0; j < data.NCols; j += 1)
                {
                    Object val = data.GetElement(i, j);
                    Assertion.AssertEquals("Ascii readElement", true, ArrayFuncs.ArrayEquals(val, row[j]));
                }
            }
        }
Ejemplo n.º 11
0
        // Read a FITS file
        public void ReadFile()
        {
            Initialize();

            Fits f = new Fits("image1.fits");

            BasicHDU[] hdus = f.Read();

            Assertion.AssertEquals("HDU count after", f.NumberOfHDUs, 8);
            Assertion.AssertEquals("byte image", true, ArrayFuncs.ArrayEquals(bimg, hdus[0].Data.Kernel));
            Assertion.AssertEquals("short image", true, ArrayFuncs.ArrayEquals(simg, hdus[1].Data.Kernel));
            Assertion.AssertEquals("int image", true, ArrayFuncs.ArrayEquals(iimg, hdus[2].Data.Kernel));
            Assertion.AssertEquals("long image", true, ArrayFuncs.ArrayEquals(limg, hdus[3].Data.Kernel));
            Assertion.AssertEquals("float image", true, ArrayFuncs.ArrayEquals(fimg, hdus[4].Data.Kernel));
            Assertion.AssertEquals("double image", true, ArrayFuncs.ArrayEquals(dimg, hdus[5].Data.Kernel));
            Assertion.AssertEquals("int3 image", true, ArrayFuncs.ArrayEquals(img3, hdus[6].Data.Kernel));
            Assertion.AssertEquals("double1 image", true, ArrayFuncs.ArrayEquals(img1, hdus[7].Data.Kernel));
        }
Ejemplo n.º 12
0
        public void TestVar()
        {
            Fits f = null;

            try
            {
                Object[] data = new Object[] { floats, vf, vs, vd, shorts, vbool };
                f = new Fits();
                f.AddHDU(Fits.MakeHDU(data));

                BufferedFile bdos =
                    new BufferedFile(
                        TestFileSetup.GetTargetFilename("bt2.fits"),
                        FileAccess.ReadWrite,
                        FileShare.ReadWrite);

                f.Write(bdos);
                bdos.Close();
                bdos.Dispose();
                f.Close();

                f = new Fits(TestFileSetup.GetTargetFilename("bt2.fits"), FileAccess.Read);
                f.Read();
                BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);
                Header         hdr  = bhdu.Header;

                Assert.AreEqual(true, hdr.GetIntValue("PCOUNT") > 0);
                Assert.AreEqual(6, hdr.GetIntValue("TFIELDS"));

                for (int i = 0; i < data.Length; i += 1)
                {
                    Assert.AreEqual(true, ArrayFuncs.ArrayEquals(data[i], bhdu.GetColumn(i)));
                }
            }
            finally
            {
                f.Close();
            }
        }
Ejemplo n.º 13
0
        public void BuildByColumn()
        {
            BinaryTable btab = new BinaryTable();

            btab.AddColumn(floats);
            btab.AddColumn(vf);
            btab.AddColumn(strings);
            btab.AddColumn(vbool);
            btab.AddColumn(ints);

            Fits f = new Fits();

            f.AddHDU(Fits.MakeHDU(btab));

            // BufferedDataStream bdos = new BufferedDataStream(new FileStream("bt3.fits",FileMode.Open));
            BufferedFile bdos = new BufferedFile("bt3.fits", FileAccess.ReadWrite, FileShare.ReadWrite);

            f.Write(bdos);
            bdos.Close();

            f = new Fits("bt3.fits");
            BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);

            btab = (BinaryTable)bhdu.Data;

            Assertion.AssertEquals("col1", true, ArrayFuncs.ArrayEquals(floats, bhdu.GetColumn(0)));
            Assertion.AssertEquals("col2", true, ArrayFuncs.ArrayEquals(vf, bhdu.GetColumn(1))); // problem is here only

            String[] col = (String[])bhdu.GetColumn(2);
            for (int i = 0; i < col.Length; i += 1)
            {
                col[i] = col[i].Trim();
            }
            Assertion.AssertEquals("coi3", true, ArrayFuncs.ArrayEquals(strings, col));

            Assertion.AssertEquals("col4", true, ArrayFuncs.ArrayEquals(vbool, bhdu.GetColumn(3)));
            Assertion.AssertEquals("col5", true, ArrayFuncs.ArrayEquals(ints, bhdu.GetColumn(4)));
            f.Close();
        }
Ejemplo n.º 14
0
        public void ReadByColumn()
        {
            Fits f = null;

            try
            {
                f = new Fits(TestFileSetup.GetTargetFilename("at1.fits"), FileAccess.Read);
                AsciiTableHDU hdu  = (AsciiTableHDU)f.GetHDU(1);
                AsciiTable    data = (AsciiTable)hdu.GetData();
                Object[]      cols = GetSampleCols();

                Assert.AreEqual(data.NRows, 50);
                Assert.AreEqual(data.NCols, 5);

                for (int j = 0; j < data.NCols; j += 1)
                {
                    Object col = data.GetColumn(j);
                    if (j == 4)
                    {
                        String[] st = (String[])col;
                        for (int i = 0; i < st.Length; i += 1)
                        {
                            st[i] = st[i].Trim();
                        }
                    }
                    Assert.AreEqual(true, ArrayFuncs.ArrayEquals(cols[j], col, Math.Pow(10, -6), Math.Pow(10, -14)));
                }
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 15
0
        public void BuildByRow()
        {
            Fits f = null;

            try
            {
                f = new Fits(
                    TestFileSetup.GetTargetFilename("bt2.fits"),
                    FileAccess.Read);
                f.Read();

                BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);
                Header         hdr  = bhdu.Header;

                BinaryTable btab = (BinaryTable)bhdu.Data;
                for (int i = 0; i < 50; i += 1)
                {
                    Object[] row = (Object[])btab.GetRow(i);
                    float[]  qx  = (float[])row[1];
                    Array[]  p   = (Array[])row[0];
                    float[]  pt  = (float[])p.GetValue(0);
                    pt[0] = (float)(i * Math.Sin(i));
                    btab.AddRow(row);
                }
                f.Close();

                f = new Fits();
                f.AddHDU(Fits.MakeHDU(btab));

                BufferedFile bf =
                    new BufferedFile(
                        TestFileSetup.GetTargetFilename("bt4.fits"),
                        FileAccess.ReadWrite,
                        FileShare.ReadWrite);
                f.Write(bf);

                bf.Flush();
                bf.Close();
                bf.Dispose();
                f.Close();

                f = new Fits(
                    TestFileSetup.GetTargetFilename("bt4.fits"),
                    FileAccess.Read);

                btab = (BinaryTable)f.GetHDU(1).Data;
                Assert.AreEqual(100, btab.NRows);

                // Try getting data before we Read in the table.
                Array[] xf   = (Array[])btab.GetColumn(0);
                Array[] xft  = (Array[])xf.GetValue(50);
                float[] xftt = (float[])xft.GetValue(0);

                Assert.AreEqual((float)0, (float)xftt[0]);

                xft  = (Array[])xf.GetValue(99);
                xftt = (float[])xft.GetValue(0);
                Assert.AreEqual((float)(49 * Math.Sin(49)), (float)xftt[0]);

                for (int i = 0; i < xf.Length; i += 3)
                {
                    bool[]  ba = (bool[])btab.GetElement(i, 5);
                    float[] fx = (float[])btab.GetElement(i, 1);

                    int trow = i % 50;

                    Assert.AreEqual(true, ArrayFuncs.ArrayEquals(ba, vbool[trow])); // prob 1
                    Assert.AreEqual(true, ArrayFuncs.ArrayEquals(fx, vf[trow]));
                }

                // Fill the table.
                Data data = f.GetHDU(1).Data;

                xf   = (Array[])btab.GetColumn(0);
                xft  = (Array[])xf.GetValue(50);
                xftt = (float[])xft.GetValue(0);
                Assert.AreEqual(0F, (float)xftt[0]);
                xft  = (Array[])xf.GetValue(99);
                xftt = (float[])xft.GetValue(0);
                Assert.AreEqual((float)(49 * Math.Sin(49)), (float)xftt[0]);

                for (int i = 0; i < xf.Length; i += 3)
                {
                    bool[]  ba = (bool[])btab.GetElement(i, 5);
                    float[] fx = (float[])btab.GetElement(i, 1);

                    int trow = i % 50;

                    Assert.AreEqual(true, ArrayFuncs.ArrayEquals(ba, vbool[trow])); // prob 2
                    Assert.AreEqual(true, ArrayFuncs.ArrayEquals(fx, vf[trow]));
                }
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 16
0
        public void TestSet()
        {
            Fits f = null;

            try
            {
                f = new Fits(TestFileSetup.GetTargetFilename("bt2.fits"), FileAccess.Read);
                f.Read();

                BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);
                Header         hdr  = bhdu.Header;

                // Check the various set methods on variable length data.
                float[] dta = (float[])bhdu.GetElement(4, 1);
                dta = new float[] { 22, 21, 20 };
                bhdu.SetElement(4, 1, dta);

                BufferedFile bdos =
                    new BufferedFile(
                        TestFileSetup.GetTargetFilename("bt2a.fits"),
                        FileAccess.ReadWrite,
                        FileShare.ReadWrite);
                f.Write(bdos);
                bdos.Close();
                bdos.Dispose();
                f.Close();

                f    = new Fits(TestFileSetup.GetTargetFilename("bt2a.fits"));
                bhdu = (BinaryTableHDU)f.GetHDU(1);
                float[] xdta = (float[])bhdu.GetElement(4, 1);

                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(dta, xdta));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), dta));

                float[] tvf = new float[] { 101, 102, 103, 104 };
                vf[4] = tvf;

                bhdu.SetColumn(1, vf);
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));

                bdos = new BufferedFile(
                    TestFileSetup.GetTargetFilename("bt2b.fits"),
                    FileAccess.ReadWrite,
                    FileShare.ReadWrite);
                f.Write(bdos);
                bdos.Close();
                bdos.Dispose();
                f.Close();

                f    = new Fits(TestFileSetup.GetTargetFilename("bt2b.fits"));
                bhdu = (BinaryTableHDU)f.GetHDU(1);
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));

                Object[] rw = (Object[])bhdu.GetRow(4);

                float[] trw = new float[] { -1, -2, -3, -4, -5, -6 };
                rw[1] = trw;

                bhdu.SetRow(4, rw);
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
                Assert.AreEqual(false, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), trw));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));

                // bdos = new BufferedDataStream(new FileStream("bt2c.fits",FileMode.Open));
                bdos = new BufferedFile(
                    TestFileSetup.GetTargetFilename("bt2c.fits"),
                    FileAccess.ReadWrite,
                    FileShare.ReadWrite);
                f.Write(bdos);
                bdos.Close();
                bdos.Dispose();
                f.Close();

                f    = new Fits(TestFileSetup.GetTargetFilename("bt2c.fits"));
                bhdu = (BinaryTableHDU)f.GetHDU(1);
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
                Assert.AreEqual(false, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), trw));
                Assert.AreEqual(true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 17
0
        public void ModifyTable()
        {
            Fits f = null;

            try
            {
                f = new Fits(TestFileSetup.GetTargetFilename("at1.fits"), FileAccess.ReadWrite);

                Object[] samp = GetSampleCols();

                AsciiTableHDU hdu  = (AsciiTableHDU)f.GetHDU(1);
                AsciiTable    data = (AsciiTable)hdu.GetData();
                float[]       f1   = (float[])data.GetColumn(0);
                float[]       f2   = (float[])f1.Clone();
                for (int i = 0; i < f2.Length; i += 1)
                {
                    f2[i] = 2 * f2[i];
                }

                data.SetColumn(0, f2);
                f1 = new float[] { 3.14159f };
                data.SetElement(3, 0, f1);

                hdu.SetNullString(0, "**INVALID**");
                data.SetNull(5, 0, true);
                data.SetNull(6, 0, true);

                Object[] row = new Object[5];
                row[0] = new float[] { 6.28f };
                row[1] = new int[] { 22 };
                row[2] = new long[] { 0 };
                row[3] = new double[] { -3 };
                row[4] = new String[] { "A string" };

                data.SetRow(5, row);

                data.SetElement(4, 2, new long[] { 54321 });

                BufferedFile bf = new BufferedFile(TestFileSetup.GetTargetFilename("at1x.fits"), FileAccess.ReadWrite,
                                                   FileShare.ReadWrite);
                f.Write(bf);
                bf.Flush();
                bf.Close();
                bf.Dispose();
                f.Close();

                f = new Fits(TestFileSetup.GetTargetFilename("at1x.fits"), FileAccess.Read);
                AsciiTable tab = (AsciiTable)f.GetHDU(1).Data;

                Object[] kern = (Object[])tab.Kernel;

                float[]  fx = (float[])kern[0];
                int[]    ix = (int[])kern[1];
                long[]   lx = (long[])kern[2];
                double[] dx = (double[])kern[3];
                String[] sx = (String[])kern[4];

                float[]  fy = (float[])samp[0];
                int[]    iy = (int[])samp[1];
                long[]   ly = (long[])samp[2];
                double[] dy = (double[])samp[3];
                String[] sy = (String[])samp[4];

                Assert.AreEqual(true, tab.IsNull(6, 0));
                Assert.AreEqual(false, tab.IsNull(5, 0));

                for (int i = 0; i < data.NRows; i += 1)
                {
                    if (i != 5)
                    {
                        if (i != 6)
                        {
                            // Null
                            Assert.AreEqual(1f, f2[i] / fx[i], Math.Pow(10, -6));
                        }
                        Assert.AreEqual(iy[i], ix[i]);

                        if (i == 4)
                        {
                            Assert.AreEqual(54321L, lx[i]);
                        }
                        else
                        {
                            Assert.AreEqual(ly[i], lx[i]);
                        }

                        Assert.AreEqual(1f, dy[i] / dx[i], Math.Pow(10, -14));
                        Assert.AreEqual(sy[i], sx[i].Trim());
                    }
                }
                Object[] r5 = (Object[])data.GetRow(5);
                String[] st = (String[])r5[4];
                st[0] = st[0].Trim();
                for (int i = 0; i < r5.Length; i++)
                {
                    Assert.AreEqual(true, ArrayFuncs.ArrayEquals(row[i], r5[i], Math.Pow(10, -6), Math.Pow(10, -14)));
                }
            }
            finally
            {
                if (f != null)
                {
                    f.Close();
                }
            }
        }
Ejemplo n.º 18
0
        public void TestSet()
        {
            Fits f = new Fits("testdocs\\bt2.fits", FileAccess.Read);

            f.Read();
            BinaryTableHDU bhdu = (BinaryTableHDU)f.GetHDU(1);
            Header         hdr  = bhdu.Header;

            // Check the various set methods on variable length data.
            float[] dta = (float[])bhdu.GetElement(4, 1);
            dta = new float[] { 22, 21, 20 };
            bhdu.SetElement(4, 1, dta);

            // BufferedDataStream bdos = new BufferedDataStream(new FileStream("bt2a.fits",FileMode.Open));
            BufferedFile bdos = new BufferedFile("bt2a.fits", FileAccess.ReadWrite, FileShare.ReadWrite);

            f.Write(bdos);
            bdos.Close();

            f    = new Fits("bt2a.fits");
            bhdu = (BinaryTableHDU)f.GetHDU(1);
            float[] xdta = (float[])bhdu.GetElement(4, 1);

            Assertion.AssertEquals("ts1", true, ArrayFuncs.ArrayEquals(dta, xdta));
            Assertion.AssertEquals("ts2", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
            Assertion.AssertEquals("ts5", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));

            Assertion.AssertEquals("ts4", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), dta));

            float[] tvf = new float[] { 101, 102, 103, 104 };
            vf[4] = tvf;

            bhdu.SetColumn(1, vf);
            Assertion.AssertEquals("ts6", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
            Assertion.AssertEquals("ts7", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
            Assertion.AssertEquals("ts8", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));

            // bdos = new BufferedDataStream(new FileStream("bt2b.fits",FileMode.Open));
            bdos = new BufferedFile("bt2b.fits", FileAccess.ReadWrite, FileShare.ReadWrite);
            f.Write(bdos);
            bdos.Close();
            f.Close();

            f    = new Fits("bt2b.fits");
            bhdu = (BinaryTableHDU)f.GetHDU(1);
            Assertion.AssertEquals("ts9", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
            Assertion.AssertEquals("ts10", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
            Assertion.AssertEquals("ts11", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));

            Object[] rw = (Object[])bhdu.GetRow(4);

            float[] trw = new float[] { -1, -2, -3, -4, -5, -6 };
            rw[1] = trw;

            bhdu.SetRow(4, rw);
            Assertion.AssertEquals("ts12", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
            Assertion.AssertEquals("ts13", false, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
            Assertion.AssertEquals("ts14", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), trw));
            Assertion.AssertEquals("ts15", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));

            // bdos = new BufferedDataStream(new FileStream("bt2c.fits",FileMode.Open));
            bdos = new BufferedFile("bt2c.fits", FileAccess.ReadWrite, FileShare.ReadWrite);
            f.Write(bdos);
            bdos.Close();
            f.Close();

            f    = new Fits("bt2c.fits");
            bhdu = (BinaryTableHDU)f.GetHDU(1);
            Assertion.AssertEquals("ts16", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(3, 1), vf[3]));
            Assertion.AssertEquals("ts17", false, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), vf[4]));
            Assertion.AssertEquals("ts18", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(4, 1), trw));
            Assertion.AssertEquals("ts19", true, ArrayFuncs.ArrayEquals(bhdu.GetElement(5, 1), vf[5]));
            f.Close();
        }