Beispiel #1
0
        /// <summary>Add some data to the heap.</summary>
        internal virtual int PutData(Object data)
        {
            int size = ArrayFuncs.ComputeSize(data);

            ExpandHeap(size);
            MemoryStream bo = new MemoryStream(size);

            try
            {
                BufferedDataStream o = new BufferedDataStream(bo);
                o.WriteArray(data);
                o.Flush();
                o.Close();
            }
            catch (IOException)
            {
                throw new FitsException("Unable to write variable column length data");
            }

            Array.Copy(bo.ToArray(), 0, heap, heapSize, size);
            int oldOffset = heapSize;

            heapSize += size;

            // change suggested in .99.1 version:
            heapOffset = heapSize;

            return(oldOffset);
        }
Beispiel #2
0
        public static void  BuffStreamSimpleTest(System.String filename, int numIts, int[] in_Renamed, int[] in2)
        {
            System.Console.Out.WriteLine("New libraries:  nom.tam.BufferedDataXXputStream");
            System.Console.Out.WriteLine("                Using non-array I/O");
            BufferedDataStream f = new BufferedDataStream(new FileStream(filename, FileMode.Create), 32768);

            ResetTime();
            int dim = in_Renamed.Length;

            for (int j = 0; j < numIts; j += 1)
            {
                for (int i = 0; i < dim; i += 1)
                {
                    f.Write(in_Renamed[i]);
                }
            }
            f.Flush();
            f.Close();
            System.Console.Out.WriteLine("  BDS Int write: " + (4 * dim * numIts) / (1000 * DeltaTime()));

            BufferedDataStream is_Renamed = new BufferedDataStream(new BufferedStream(new FileStream(filename, FileMode.Open, FileAccess.Read), 32768));

            ResetTime();
            for (int j = 0; j < numIts; j += 1)
            {
                for (int i = 0; i < dim; i += 1)
                {
                    in2[i] = is_Renamed.ReadInt32();
                }
            }
            System.Console.Out.WriteLine("  BDS Int read:  " + (4 * dim * numIts) / (1000 * DeltaTime()));
        }
Beispiel #3
0
        // Make FITS file
        public void MakeFile(string FileName, float[][] ImgArray)
        {
            //Create a FITS file from an image:
            Fits f = new Fits();
            //BasicHDU h = FitsFactory.HDUFactory(ImgArray);
            BasicHDU h   = Fits.MakeHDU(ImgArray);
            Header   hdr = h.Header;

            //添加关键字
            hdr.AddValue("OBS2", "hss", "Observer");
            f.AddHDU(h);
            BufferedDataStream bf = new BufferedDataStream(new FileStream(FileName, FileMode.Create));

            f.Write(bf);
            bf.Flush();
            bf.Close();
        }
Beispiel #4
0
        public static void  BufferedStreamTest(System.String filename, int numIts, double[] db, double[] db2, float[] fl, float[] fl2, long[] ln, long[] ln2, int[] in_Renamed, int[] in2, short[] sh, short[] sh2, char[] ch, char[] ch2, byte[] by, byte[] by2, bool[] bl, bool[] bl2, int[][][][] multi, int[][][][] multi2)
        {
            int dim = db.Length;

            double ds = SupportClass.Random.NextDouble() - 0.5;
            double ds2;
            float  fs = (float)(SupportClass.Random.NextDouble() - 0.5);
            float  fs2;
            int    is_Renamed = (int)(1000000 * (SupportClass.Random.NextDouble() - 500000));
            int    is2;
            long   ls = (long)(100000000000L * (SupportClass.Random.NextDouble() - 50000000000L));
            long   ls2;
            short  ss = (short)(60000 * (SupportClass.Random.NextDouble() - 30000));
            short  ss2;
            char   cs = (char)(60000 * SupportClass.Random.NextDouble());
            char   cs2;
            byte   bs = (byte)(256 * SupportClass.Random.NextDouble() - 128);
            byte   bs2;
            bool   bls = (SupportClass.Random.NextDouble() > 0.5);
            bool   bls2;

            System.Console.Out.WriteLine("New libraries: nom.tam.util.BufferedDataXXputStream");
            System.Console.Out.WriteLine("               Using array I/O methods");

            {
                BufferedDataStream f = new BufferedDataStream(new FileStream(filename, FileMode.Create));

                ResetTime();
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray(db);
                }
                System.Console.Out.WriteLine("  BDS Dbl write: " + (8 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray(fl);
                }
                System.Console.Out.WriteLine("  BDS Flt write: " + (4 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray(in_Renamed);
                }
                System.Console.Out.WriteLine("  BDS Int write: " + (4 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray(ln);
                }
                System.Console.Out.WriteLine("  BDS Lng write: " + (8 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray(sh);
                }
                System.Console.Out.WriteLine("  BDS Sht write: " + (2 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray(ch);
                }
                System.Console.Out.WriteLine("  BDS Chr write: " + (2 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray((byte[])by);
                }
                System.Console.Out.WriteLine("  BDS Byt write: " + (1 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.WriteArray(bl);
                }
                System.Console.Out.WriteLine("  BDS Boo write: " + (1 * dim * numIts) / (1000 * DeltaTime()));

                f.Write((byte)bs);
                f.Write((System.Char)cs);
                f.Write((System.Int16)ss);
                f.Write(is_Renamed);
                f.Write(ls);
                f.Write(fs);
                f.Write(ds);
                f.Write(bls);

                f.WriteArray(multi);
                f.Flush();
                f.Close();
            }

            {
                BufferedDataStream f = new BufferedDataStream(new FileStream(filename, FileMode.Open, FileAccess.Read));

                ResetTime();
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray(db2);
                }
                System.Console.Out.WriteLine("  BDS Dbl read:  " + (8 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray(fl2);
                }
                System.Console.Out.WriteLine("  BDS Flt read:  " + (4 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray(in2);
                }
                System.Console.Out.WriteLine("  BDS Int read:  " + (4 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray(ln2);
                }
                System.Console.Out.WriteLine("  BDS Lng read:  " + (8 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray(sh2);
                }
                System.Console.Out.WriteLine("  BDS Sht read:  " + (2 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray(ch2);
                }
                System.Console.Out.WriteLine("  BDS Chr read:  " + (2 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray((byte[])by2);
                }
                System.Console.Out.WriteLine("  BDS Byt read:  " + (1 * dim * numIts) / (1000 * DeltaTime()));
                for (int i = 0; i < numIts; i += 1)
                {
                    f.ReadArray(bl2);
                }
                System.Console.Out.WriteLine("  BDS Boo read:  " + (1 * dim * numIts) / (1000 * DeltaTime()));

                bs2  = (byte)f.ReadByte();
                cs2  = f.ReadChar();
                ss2  = f.ReadInt16();
                is2  = f.ReadInt32();
                ls2  = f.ReadInt64();
                fs2  = f.ReadSingle();
                ds2  = f.ReadDouble();
                bls2 = f.ReadBoolean();

                for (int i = 0; i < 10; i += 1)
                {
                    multi2[i][i][i][i] = 0;
                }

                // Now read only pieces of the multidimensional array.
                for (int i = 0; i < 5; i += 1)
                {
                    System.Console.Out.WriteLine("Multiread:" + i);
                    // Skip the odd initial indices and
                    // read the evens.
                    //BinaryReader temp_BinaryReader;
                    System.Int64 temp_Int64;
                    //temp_BinaryReader = f;
                    temp_Int64 = f.Position;                      //temp_BinaryReader.BaseStream.Position;
                    temp_Int64 = f.Seek(4000) - temp_Int64;       //temp_BinaryReader.BaseStream.Seek(4000, SeekOrigin.Current) - temp_Int64;
                    int generatedAux28 = (int)temp_Int64;
                    f.ReadArray(multi2[2 * i + 1]);
                }
                f.Close();
            }

            System.Console.Out.WriteLine("Stream Verification:");
            System.Console.Out.WriteLine("  An error should be reported for double and float NaN's");
            System.Console.Out.WriteLine("  Arrays:");

            for (int i = 0; i < dim; i += 1)
            {
                if (db[i] != db2[i] && !Double.IsNaN(db[i]) && !Double.IsNaN(db2[i]))
                {
                    System.Console.Out.WriteLine("     Double error at " + i + " " + db[i] + " " + db2[i]);
                }
                if (fl[i] != fl2[i] && !Single.IsNaN(fl[i]) && !Single.IsNaN(fl2[i]))
                {
                    System.Console.Out.WriteLine("     Float error at " + i + " " + fl[i] + " " + fl2[i]);
                }
                if (in_Renamed[i] != in2[i])
                {
                    System.Console.Out.WriteLine("     Int error at " + i + " " + in_Renamed[i] + " " + in2[i]);
                }
                if (ln[i] != ln2[i])
                {
                    System.Console.Out.WriteLine("     Long error at " + i + " " + ln[i] + " " + ln2[i]);
                }
                if (sh[i] != sh2[i])
                {
                    System.Console.Out.WriteLine("     Short error at " + i + " " + sh[i] + " " + sh2[i]);
                }
                if (ch[i] != ch2[i])
                {
                    System.Console.Out.WriteLine("     Char error at " + i + " " + (int)ch[i] + " " + (int)ch2[i]);
                }
                if (by[i] != by2[i])
                {
                    System.Console.Out.WriteLine("     Byte error at " + i + " " + by[i] + " " + by2[i]);
                }
                if (bl[i] != bl2[i])
                {
                    System.Console.Out.WriteLine("     Bool error at " + i + " " + bl[i] + " " + bl2[i]);
                }
            }

            System.Console.Out.WriteLine("  Scalars:");
            // Check the scalars.
            if (bls != bls2)
            {
                System.Console.Out.WriteLine("     Bool Scalar mismatch:" + bls + " " + bls2);
            }
            if (bs != bs2)
            {
                System.Console.Out.WriteLine("     Byte Scalar mismatch:" + bs + " " + bs2);
            }
            if (cs != cs2)
            {
                System.Console.Out.WriteLine("     Char Scalar mismatch:" + (int)cs + " " + (int)cs2);
            }
            if (ss != ss2)
            {
                System.Console.Out.WriteLine("     Short Scalar mismatch:" + ss + " " + ss2);
            }
            if (is_Renamed != is2)
            {
                System.Console.Out.WriteLine("     Int Scalar mismatch:" + is_Renamed + " " + is2);
            }
            if (ls != ls2)
            {
                System.Console.Out.WriteLine("     Long Scalar mismatch:" + ls + " " + ls2);
            }
            if (fs != fs2)
            {
                System.Console.Out.WriteLine("     Float Scalar mismatch:" + fs + " " + fs2);
            }
            if (ds != ds2)
            {
                System.Console.Out.WriteLine("     Double Scalar mismatch:" + ds + " " + ds2);
            }

            System.Console.Out.WriteLine("  Multi: odd rows should match");
            for (int i = 0; i < 10; i += 1)
            {
                System.Console.Out.WriteLine("      " + i + " " + multi[i][i][i][i] + " " + multi2[i][i][i][i]);
            }
            System.Console.Out.WriteLine("Done BufferedStream Tests");
        }