Exemple #1
0
        public CatalogSettings(BinaryReader reader, byte configVersion)
        {
            byte savedVersion = reader.ReadByte();

            if (savedVersion > 0)
            {
                Catalog = (StarCatalog) reader.ReadInt32();
                CatalogLocation = reader.ReadString();
            }
        }
Exemple #2
0
        public CatalogSettings(BinaryReader reader, byte configVersion)
        {
            byte savedVersion = reader.ReadByte();

            if (savedVersion > 0)
            {
                Catalog         = (StarCatalog)reader.ReadInt32();
                CatalogLocation = reader.ReadString();
            }
        }
Exemple #3
0
        public static bool IsValidCatalogLocation(StarCatalog catalog, ref string folderPath)
        {
            if (catalog == StarCatalog.UCAC2)
                return UCAC2Catalogue.IsValidCatalogLocation(ref folderPath);
            else if (catalog == StarCatalog.NOMAD)
                return NOMADCatalogue.IsValidCatalogLocation(ref folderPath);
            else if (catalog == StarCatalog.UCAC3)
                return UCAC3Catalogue.IsValidCatalogLocation(ref folderPath);

            return false;
        }
Exemple #4
0
        public static bool IsValidCatalogLocation(StarCatalog catalog, ref string folderPath)
        {
            if (catalog == StarCatalog.UCAC2)
            {
                return(UCAC2Catalogue.IsValidCatalogLocation(ref folderPath));
            }
            else if (catalog == StarCatalog.NOMAD)
            {
                return(NOMADCatalogue.IsValidCatalogLocation(ref folderPath));
            }
            else if (catalog == StarCatalog.UCAC3)
            {
                return(UCAC3Catalogue.IsValidCatalogLocation(ref folderPath));
            }

            return(false);
        }
Exemple #5
0
    public ConstellationInfo(string text, StarCatalog starCatalog, Dictionary <string, string> names)
    {
        string[] fields = text.Split(' ').Where(t => t != " " && t != "").ToArray();
        shortName = fields[0];
        names.TryGetValue(shortName, out name);
        isZodiac = IsZodiac(name);
        int numLines = int.Parse(fields[1]);

        int[] lineIDs = new int[numLines * 2];
        stars = new StarInfo[lineIDs.Length];
        for (int i = 2; i < fields.Length; i += 2)
        {
            int ci = i - 2;
            lineIDs[ci]     = int.Parse(fields[i]);
            lineIDs[ci + 1] = int.Parse(fields[i + 1]);

            stars[ci]           = starCatalog.GetStarByHDID(lineIDs[ci]);
            stars[ci + 1]       = starCatalog.GetStarByHDID(lineIDs[ci + 1]);
            stars[ci].color     = Color.red;
            stars[ci + 1].color = Color.red;
        }
    }
Exemple #6
0
        public void TestStarRetrieval()
        {
            PPMEntry entry = StarCatalog.GetPPMEntry("053543.0-052013");

            StarCatalog.Dispose();

            Assert.AreEqual(entry.PPMX, "053543.0-052013");
            Assert.AreEqual(entry.m_PPMX, " ");
            Assert.AreEqual(entry.RAmas, 302146396);
            Assert.AreEqual(entry.DEmas, -19213839);
            Assert.AreEqual(entry.pmRA, 17108);
            Assert.AreEqual(entry.pmDE, -725);
            Assert.AreEqual(entry.epRA, -22);
            Assert.AreEqual(entry.epDE, -70);
            Assert.AreEqual(entry.e_RAmas, 18);
            Assert.AreEqual(entry.e_DEmas, 19);
            Assert.AreEqual(entry.e_pmRA, 20);
            Assert.AreEqual(entry.e_pmDE, 20);
            Assert.AreEqual(entry.Cmag, 11.010m);
            Assert.AreEqual(entry.Rmag, 10.895m);
            Assert.AreEqual(entry.Bmag, -9.999m);
            Assert.AreEqual(entry.e_Bmag, -0.099m);
            Assert.AreEqual(entry.Vmag, -9.999m);
            Assert.AreEqual(entry.e_Vmag, -0.099m);
            Assert.AreEqual(entry.Jmag, 9.383m);
            Assert.AreEqual(entry.e_Jmag, 0.022m);
            Assert.AreEqual(entry.Hmag, 8.863m);
            Assert.AreEqual(entry.e_Hmag, 0.030m);
            Assert.AreEqual(entry.Kmag, 8.756m);
            Assert.AreEqual(entry.e_Kmag, 0.021m);
            Assert.AreEqual(entry.Nobs, 5);
            Assert.AreEqual(entry.P, 32);
            Assert.AreEqual(entry.sub, 'S');
            Assert.AreEqual(entry.r_ID, 'S');
            Assert.AreEqual(entry.ID, " 0477400863 ");
        }
Exemple #7
0
        static void Main(string[] args)
        {
            if (GlobalVariables.ParseCommands(args) == false)
            {
                return;
            }

            if (GlobalVariables.BuildStarDatabase == true)
            {
                StarCatalog.BuildPPMCatalog(GlobalVariables.PPMCatalogSource);
                StarCatalog.BuildVSXCatalog(GlobalVariables.VSXCatalogSource);
                return;
            }

            using (var db = new StarCatalogContext())
            {
                if (GlobalVariables.LoadFrames == true)
                {
                    FrameManager.GetFrameInfo(GlobalVariables.InputDirectory, db);
                    return;
                }

                if (GlobalVariables.LoadResults == true)
                {
                    string chartname =
                        new ChartManager().LoadChart(GlobalVariables.InputDirectory, db);

                    new SampleManager().LoadStarField(GlobalVariables.InputDirectory, chartname, db);

                    return;
                }

                var field = StarField.LoadStarField(GlobalVariables.Chart, db);

                // Apply quality filter.
                field.Stars = field.Stars.OrderByDescending(x => x.AvgInstrumentalMag).Where(x => x.MinSNR > GlobalVariables.MinSNR && x.Flags < 16).ToList();

                field.DoPhotometricReduction();

                // Output results
                StringBuilder candidates = new StringBuilder();
                candidates.AppendLine(String.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12}", "Star", "RMag", "C-VMag", "C-VMag-E", "VMag", "C-ColorIndex", "ColorIndex", "Label", "Known Variable", "Uncertainty", "Score", "Flags", "URL"));

                StringBuilder timeseries = new StringBuilder();
                timeseries.AppendLine(String.Format("{0},{1},{2},{3},{4},{5}", "Score", "Star", "ObsDate", "VMag", "TFAMag", "Uncertainty"));

                StringBuilder aavsolog = new StringBuilder();

                aavsolog.AppendLine("#TYPE=EXTENDED");
                aavsolog.AppendLine("#OBSCODE=" + GlobalVariables.ObsCode);
                aavsolog.AppendLine("#SOFTWARE=VSA V" + Assembly.GetEntryAssembly().GetName().Version);
                aavsolog.AppendLine("#DELIM=,");
                aavsolog.AppendLine("#DATE=JD");
                aavsolog.AppendLine("#OBSTYPE=DSLR");
                aavsolog.AppendLine("#NAME,DATE,MAG,MERR,FILT,TRANS,MTYPE,CNAME,CMAG,KNAME,KMAG,AMASS,GROUP,CHART,NOTES");

                Console.WriteLine("Outputing results.");
                foreach (Star star in field.Stars)
                {
                    D_VSXEntry entry = StarCatalog.GetVSXEntry((double)star.RA, (double)star.DEC);

                    string variabletype = "";
                    if (entry != null && entry.VFlag < 2)
                    {
                        Console.WriteLine("Found variable star: " + entry.Name);
                        variabletype = "http://www.aavso.org/vsx/index.php?view=detail.top&oid=" + entry.OID.Trim();

                        string ensemble = "Custom ensemble of " + (star.Comparables.Count() - 1).ToString() + " due to low chart count.";
                        if (field.ChartComparables.Count > 1)
                        {
                            ensemble = field.ChartComparables[1].Label;
                            for (int f = 2; f < field.ChartComparables.Count; f++)
                            {
                                ensemble += "/" + field.ChartComparables[f].Label;
                            }
                        }

                        // Query to get auid.
                        string auid = StarCatalog.GetAUID(entry);

                        if (auid != null)
                        {
                            aavsolog.AppendLine(String.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14}",
                                                              auid,
                                                              Math.Round(field.Frames[0].Time, 4),
                                                              Math.Round(star.VMag, 3).ToString().PadLeft(7, ' '),
                                                              Math.Round(star.e_VMag, 3),
                                                              "V",
                                                              "YES",
                                                              "STD",
                                                              "ENSEMBLE",
                                                              "na",
                                                              field.ChartComparables[0].Label.Replace("[CHECK]", "").Trim(),
                                                              Math.Round(field.ChartComparables[0].VMag, 3).ToString().PadLeft(7, ' '),
                                                              "na",
                                                              "na",
                                                              field.Frames[0].Chart,
                                                              String.Format("MAG=avg {0} img|MERR=StdDe|ENSEMBLE={1}", star.Samples.Count(), ensemble)));
                        }
                    }

                    string label = "";
                    if (field.ChartComparables.Contains(star))
                    {
                        label = star.Label;
                    }

                    candidates.Append(String.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}",
                                                    star.Name,
                                                    star.CatalogEntry.Rmag,
                                                    star.VMag,
                                                    star.e_VMag,
                                                    star.CatalogEntry.Vmag,
                                                    star.CalculatedColorIndex,
                                                    star.ColorIndex,
                                                    label,
                                                    variabletype,
                                                    star.EnsembleError,
                                                    star.Score,
                                                    Convert.ToString(star.Flags, 2).PadLeft(5, '0')));

                    // Output the calculated differential magnitude with the comparable star.
                    int i = 0;
                    foreach (SampleData sample in star.Samples)
                    {
                        timeseries.AppendLine(String.Format("{0},{1},{2},{3},{4},{5}", star.Score, star.Name, field.Frames[i].Time, sample.ApparentVMag - star.VMag, sample.TFAVMag - star.VMag, sample.Uncertainty));
                        i++;
                    }
                    candidates.Append(String.Format(",http://simbad.u-strasbg.fr/simbad/sim-coo?Coord={0}%20{1}%20{2}%20{3}%20{4}%20{5}&Radius=2&Radius.unit=arcsec&",
                                                    star.Name.Substring(0, 2), star.Name.Substring(2, 2), star.Name.Substring(4, 4), star.Name.Substring(8, 3), star.Name.Substring(11, 2), star.Name.Substring(13, 2)));
                    candidates.AppendLine();
                }
                File.WriteAllText(GlobalVariables.GetOutput(".\\AAVSO\\" + field.Frames[0].Chart + ".txt"), aavsolog.ToString());
                File.WriteAllText(GlobalVariables.GetOutput(".\\candidates_out.csv"), candidates.ToString());
                File.WriteAllText(GlobalVariables.GetOutput(".\\timeseries_out.csv"), timeseries.ToString());
            }
        }
 public StarCatalogSettings(CatalogSettings tangraSettings)
 {
     Catalog = (StarCatalog) tangraSettings.Catalog;
     CatalogLocation = tangraSettings.CatalogLocation;
 }
        public bool VerifyCurrentCatalogue(StarCatalog catalog, ref string path)
        {
            if (catalog == StarCatalog.UCAC2)
            {
                if (!UCAC2Catalogue.IsValidCatalogLocation(ref path))
                    return false;

                if (!UCAC2Catalogue.CheckAndWarnIfNoBSS(path, null))
                    return false;
            }
            else if (catalog == StarCatalog.NOMAD)
            {
                if (!NOMADCatalogue.IsValidCatalogLocation(ref path))
                    return false;

                // TODO: Check index files??
            }
            else if (catalog == StarCatalog.UCAC3)
            {
                if (!UCAC3Catalogue.IsValidCatalogLocation(ref path))
                    return false;

            }
            else if (catalog == StarCatalog.PPMXL)
            {
                if (!PPMXLCatalogue.IsValidCatalogLocation(ref path))
                    return false;

            }
            else if (catalog == StarCatalog.UCAC4)
            {
                if (!UCAC4Catalogue.IsValidCatalogLocation(ref path))
                    return false;

            }

            return true;
        }
        public List<IStar> GetStarsInRegion(StarCatalog catalog, string catalogLocation, double raDeg, double deDeg, double diameterDeg, double limitMag, float epoch)
        {
            if (catalog == StarCatalog.UCAC2)
            {
                UCAC2Catalogue cat = new UCAC2Catalogue(catalogLocation);
                List<IStar> ucac2Stars = cat.GetStarsInRegion(raDeg, deDeg, diameterDeg, limitMag, epoch);
                return (List<IStar>)ucac2Stars;
            }
            else if (catalog == StarCatalog.UCAC3)
            {
                UCAC3Catalogue cat = new UCAC3Catalogue(catalogLocation);
                List<IStar> ucac3Stars = cat.GetStarsInRegion(raDeg, deDeg, diameterDeg, limitMag, epoch);
                return (List<IStar>)ucac3Stars;
            }
            else if (catalog == StarCatalog.NOMAD)
            {
                NOMADCatalogue cat = new NOMADCatalogue(catalogLocation);
                List<IStar> nomadStars = cat.GetStarsInRegion(raDeg, deDeg, diameterDeg, limitMag, epoch);
                return (List<IStar>)nomadStars;
            }
            else if (catalog == StarCatalog.PPMXL)
            {
                PPMXLCatalogue cat = new PPMXLCatalogue(catalogLocation);
                List<IStar> ppmxlStars = cat.GetStarsInRegion(raDeg, deDeg, diameterDeg, limitMag, epoch);
                return (List<IStar>)ppmxlStars;
            }
            else if (catalog == StarCatalog.UCAC4)
            {
                UCAC4Catalogue cat = new UCAC4Catalogue(catalogLocation);
                List<IStar> ucac4Stars = cat.GetStarsInRegion(raDeg, deDeg, diameterDeg, limitMag, epoch);
                return (List<IStar>)ucac4Stars;
            }

            return null;
        }
        public static object[] MagnitudeBandsForCatalog(StarCatalog catalog)
        {
            if (catalog == StarCatalog.UCAC2)
                return UCAC2Catalogue.CatalogMagnitudeBands;
            else if (catalog == StarCatalog.NOMAD)
                return NOMADCatalogue.CatalogMagnitudeBands;
            else if (catalog == StarCatalog.UCAC3)
                return UCAC3Catalogue.CatalogMagnitudeBands;
            else if (catalog == StarCatalog.PPMXL)
                return PPMXLCatalogue.CatalogMagnitudeBands;
            else if (catalog == StarCatalog.UCAC4)
                return UCAC4Catalogue.CatalogMagnitudeBands;

            return new object[] { };
        }
 public StarCatalogueFacade(StarCatalog starCatalogue, string starCataloguePath)
 {
     m_StarCatalog = starCatalogue;
     m_StarCatalogLocation = starCataloguePath;
 }
        /// <summary>
        /// Load star-field specified in file
        /// </summary>
        /// <param name="filename">CSV file for star-field to load</param>
        /// <returns></returns>
        public void LoadStarField(string directory, string chartname, StarCatalogContext db)
        {
            // Load and parse csv.
            TextReader reader = File.OpenText(directory + "\\series_g.csv");
            var        csv    = new CsvReader(reader);

            csv.Configuration.Delimiter = ";";
            csv.ReadHeader();

            // Load headers
            int fluxsample = 6;

            while (fluxsample < csv.FieldHeaders.Count())
            {
                string filename = csv.FieldHeaders.GetValue(fluxsample++).ToString();
                var    match    = db.Frames.Where(x => filename.Contains(x.File)).First();
                match.Chart = chartname;
                frames.Add(match);
            }
            db.SaveChanges();

            csv.Read();
            csv.Read();
            csv.Read();

            int aperture = GetAperture(csv.GetField(6));

            csv.Read();

            // Pre-load all existing sample data for frames.
            List <F_Sample> existingsamples = new List <F_Sample>();

            foreach (D_Frame d_frame in frames)
            {
                existingsamples.AddRange(db.Samples.Where(x => x.ID_Frame == d_frame.ID).ToList());
            }

            int starcount = 0;

            Console.WriteLine();
            do
            {
                // Create star if it doesn't exist.
                string name = csv.GetField(0);

                D_Star star = db.Stars.Where(x => x.Nameplate == name).FirstOrDefault();
                if (star == null)
                {
                    star = new D_Star()
                    {
                        Nameplate = name,
                        J2000_RA  = csv.GetField <double>(1),
                        J2000_DEC = csv.GetField <double>(2)
                    };
                    D_VSXEntry entry = StarCatalog.GetVSXEntry(star.J2000_RA, star.J2000_DEC);
                    if (entry != null)
                    {
                        star.OID = Convert.ToInt32(entry.OID);
                    }
                    else
                    {
                        star.OID = -1;
                    }

                    db.Stars.Add(star);
                }
                stars.Add(star);

                /////
                // Load flux samples.
                string parsedflux;
                fluxsample = 6;

                int frame = 0;
                int flag  = csv.GetField <int>(3);
                while (csv.TryGetField(fluxsample++, out parsedflux))
                {
                    if (existingsamples.Where(x => x.ID_Frame == frames[frame].ID && x.ID_Star == star.ID).Count() == 0)
                    {
                        double flux = 0.0;
                        double.TryParse(parsedflux, out flux);

                        F_Sample sample = new F_Sample()
                        {
                            Star     = star,
                            ID_Frame = frames[frame].ID,
                            Aperture = aperture,
                            FluxV    = flux
                        };

                        // Save flux measurement as instrumental mag.
                        samples.Add(sample);

                        frame++;
                    }
                }
                Console.Write("\rStars loaded: " + ++starcount);
            }while (csv.Read());

            // Save stars
            db.SaveChanges();

            // Supplement and persist sample data.
            if (samples.Count > 0)
            {
                foreach (F_Sample sample in samples)
                {
                    // Set star ID.
                    sample.ID_Star = sample.Star.ID;
                    db.Samples.Add(sample);
                }

                LoadInstrumentalColorIndex(directory);
                LoadSNR(directory);
                db.SaveChanges();
            }

            csv.Dispose();
        }