public void TestTimeStampExposure(string format, string value) { var cfg = new TangraConfig.FITSFieldConfig() { IsTimeStampAndExposure = true, ExposureHeader = "EXP", ExposureUnit = TangraConfig.ExposureUnit.Milliseconds, TimeStampType = TangraConfig.TimeStampType.StartExposure, TimeStampFormat = format, TimeStampHeader = "TIMSTMP" }; var timestampReader = new FITSTimeStampReader(cfg); var hdr = new Header(); hdr.AddValue("TIMSTMP", value, ""); hdr.AddValue("EXP", "240.6", ""); bool isMidPoint; double?fitsExposure; var timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure); Assert.AreEqual(true, isMidPoint); Assert.AreEqual(0.2406, fitsExposure, 0.00001); Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121 + 240.6 / 2), timeStamp); }
public void TestDateTimeStartEnd(string formatS, string valueS, string formatS2, string valueS2, string formatE, string valueE, string formatE2, string valueE2) { var cfg = new TangraConfig.FITSFieldConfig() { IsTimeStampAndExposure = false, TimeStampIsDateTimeParts = true, TimeStampType = TangraConfig.TimeStampType.StartExposure, TimeStampFormat = formatS, TimeStampFormat2 = formatS2, TimeStampHeader = "OBS-DATE", TimeStampHeader2 = "OBS-TIME", TimeStamp2IsDateTimeParts = true, TimeStamp2Format = formatE, TimeStamp2Format2 = formatE2, TimeStamp2Header = "END-DATE", TimeStamp2Header2 = "END-TIME" }; var timestampReader = new FITSTimeStampReader(cfg); var hdr = new Header(); hdr.AddValue("OBS-DATE", valueS, ""); hdr.AddValue("OBS-TIME", valueS2, ""); hdr.AddValue("END-DATE", valueE, ""); hdr.AddValue("END-TIME", valueE2, ""); bool isMidPoint; double?fitsExposure; var timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure); Assert.AreEqual(true, isMidPoint); Assert.AreEqual(0.240, fitsExposure, 0.0001); Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121), timeStamp); }
public void TestStartEndTimeStamp(string format, string value, string value2) { var cfg = new TangraConfig.FITSFieldConfig() { IsTimeStampAndExposure = false, TimeStampType = TangraConfig.TimeStampType.StartExposure, TimeStampFormat = format, TimeStampHeader = "TIMSTMP", TimeStamp2Format = format, TimeStamp2Header = "TIMSTMP2" }; var timestampReader = new FITSTimeStampReader(cfg); var hdr = new Header(); hdr.AddValue("TIMSTMP", value, ""); hdr.AddValue("TIMSTMP2", value2, ""); bool isMidPoint; double?fitsExposure; var timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure); Assert.AreEqual(true, isMidPoint); Assert.AreEqual(0.240, fitsExposure, 0.0001); Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121), timeStamp); }
private void btnOK_Click(object sender, EventArgs e) { if (!ucTimestampControl.ValidateInput()) { return; } if (!m_ExposureValid) { MessageBox.Show("Please choose valid settings for the exposure."); return; } if (cbxExposureUnits.SelectedIndex == -1) { MessageBox.Show("Please choose exposure units."); cbxExposureUnits.Focus(); return; } if (HasNegativePixels && !m_PixelMappingReviewed) { if (!ReviewPixelMapping()) { MessageBox.Show("As there are negative pixels you need to confirm the pixel value mapping before continuing."); btnPixelValueMapping.Focus(); return; } } var singleTimeStampConfig = ucTimestampControl.GetSelectedInput(); var config = new TangraConfig.FITSFieldConfig() { ExposureHeader = cbxExposure.Text, ExposureUnit = (TangraConfig.ExposureUnit)cbxExposureUnits.SelectedIndex, IsTimeStampAndExposure = true, TimeStampIsDateTimeParts = singleTimeStampConfig.TimeStampIsDateTimeParts, TimeStampHeader = singleTimeStampConfig.TimeStampHeader, TimeStampFormat = singleTimeStampConfig.TimeStampFormat, TimeStampHeader2 = singleTimeStampConfig.TimeStampHeader2, TimeStampFormat2 = singleTimeStampConfig.TimeStampFormat2, TimeStampType = singleTimeStampConfig.TimeStampType, }; TimeStampReader = new FITSTimeStampReader(config); config.FileHash = m_FilesHash; config.CardNamesHash = m_CardNamesHash; TangraConfig.Settings.RecentFITSFieldConfig.Register(config); TangraConfig.Settings.Save(); FlipVertically = cbxFlipVertically.Checked; FlipHorizontally = cbxFlipHorizontally.Checked; DialogResult = DialogResult.OK; Close(); }
public void TestTimeStampType(TangraConfig.TimeStampType timeStampType, double diff) { var cfg = new TangraConfig.FITSFieldConfig() { IsTimeStampAndExposure = true, ExposureHeader = "EXP", ExposureUnit = TangraConfig.ExposureUnit.Milliseconds, TimeStampType = timeStampType, TimeStampFormat = "yyyy-MM-ddTHH:mm:ss.fff", TimeStampHeader = "TIMSTMP" }; var timestampReader = new FITSTimeStampReader(cfg); var hdr = new Header(); hdr.AddValue("TIMSTMP", "2017-09-13T18:04:58.121", ""); hdr.AddValue("EXP", "240.6", ""); bool isMidPoint; double?fitsExposure; var timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure); Assert.AreEqual(true, isMidPoint); Assert.AreEqual(0.2406, fitsExposure, 0.00001); Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121 + diff), timeStamp); cfg = new TangraConfig.FITSFieldConfig() { IsTimeStampAndExposure = true, TimeStampIsDateTimeParts = true, ExposureHeader = "EXP", ExposureUnit = TangraConfig.ExposureUnit.Milliseconds, TimeStampType = timeStampType, TimeStampFormat = "yyyy-MM-dd", TimeStampFormat2 = "HH:mm:ss.fff", TimeStampHeader = "OBS-DATE", TimeStampHeader2 = "OBS-TIME" }; timestampReader = new FITSTimeStampReader(cfg); hdr = new Header(); hdr.AddValue("OBS-DATE", "2017-09-13", ""); hdr.AddValue("OBS-TIME", "18:04:58.121", ""); hdr.AddValue("EXP", "240.6", ""); timeStamp = timestampReader.ParseExposure(null, hdr, out isMidPoint, out fitsExposure); Assert.AreEqual(true, isMidPoint); Assert.AreEqual(0.2406, fitsExposure, 0.00001); Assert.AreEqual(new DateTime(2017, 09, 13, 18, 04, 58).AddMilliseconds(121 + diff), timeStamp); }
private ThreeAxisFITSCubeFrameStream( string fileName, Fits fitsFile, BufferedFile bufferedFile, BasicHDU imageHDU, FITSTimeStampReader timeStampReader, int widthIndex, int heightIndex, int frameIndex, short minPixelValue, uint maxPixelValue, int bitPix, int negPixCorrection) { m_FileName = fileName; bool isMidPoint; double?exposureSecs; var startExposure = timeStampReader.ParseExposure(null, imageHDU.Header, out isMidPoint, out exposureSecs); if (startExposure.HasValue && exposureSecs.HasValue) { m_ExposureSeconds = exposureSecs.Value; m_FirstFrameMidTime = startExposure.Value; } m_MinPixelValue = minPixelValue; m_MaxPixelValue = maxPixelValue; m_Bpp = bitPix; m_FitsFile = fitsFile; m_TimeStampReader = timeStampReader; m_BufferedFile = bufferedFile; m_ImageHDU = imageHDU; m_HeightIndex = heightIndex; m_WidthIndex = widthIndex; m_FrameIndex = frameIndex; m_NumFrames = m_ImageHDU.Axes[frameIndex]; m_Height = m_ImageHDU.Axes[heightIndex]; m_Width = m_ImageHDU.Axes[widthIndex]; m_ArrayData = (Array)m_ImageHDU.Data.DataArray; m_BZero = FITSHelper2.GetBZero(m_ImageHDU); m_NegPixCorrection = negPixCorrection; m_Cards = new Dictionary <string, string>(); var cursor = m_ImageHDU.Header.GetCursor(); while (cursor.MoveNext()) { HeaderCard card = m_ImageHDU.Header.FindCard((string)cursor.Key); if (card != null && !string.IsNullOrWhiteSpace(card.Key) && card.Key != "END") { if (m_Cards.ContainsKey(card.Key)) { m_Cards[card.Key] += "\r\n" + card.Value; } else { m_Cards.Add(card.Key, card.Value); } } } HasUTCTimeStamps = startExposure.HasValue; VideoFileType = string.Format("FITS.{0}::Cube3D", bitPix); }