public CatalogSettings(BinaryReader reader, byte configVersion) { byte savedVersion = reader.ReadByte(); if (savedVersion > 0) { Catalog = (StarCatalog) reader.ReadInt32(); CatalogLocation = reader.ReadString(); } }
public CatalogSettings(BinaryReader reader, byte configVersion) { byte savedVersion = reader.ReadByte(); if (savedVersion > 0) { Catalog = (StarCatalog)reader.ReadInt32(); CatalogLocation = reader.ReadString(); } }
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; }
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); }
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; } }
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 "); }
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(); }