public IPhaseExtractor NewPhaseExtractor() { if (GeneralConfigurations.Get().ViewPhase) { return(new FourierOnlyPhaseExtractor()); } var config = CorrectorConfigurations.Get(); var misConfig = MiscellaneousConfigurations.Get(); switch (config.PhaseType) { case PhaseType.FullRange: return(new FourierOnlyPhaseExtractor()); case PhaseType.CenterInterpolation: return(new CorrectCenterPhaseExtractor(NewApodizer(), config.CenterSpanLength / 2)); case PhaseType.SpecificRange: return(new SpecificRangePhaseExtractor((int)config.RangeStart, (int)config.RangeEnd, misConfig.MinFlatPhasePtsNumCnt, misConfig.MaxPhaseStd)); case PhaseType.OldCenterInterpolation: return(new ClassicWrongPhaseExtractor(NewApodizer(), config.CenterSpanLength / 2)); case PhaseType.SpecificFreqRange: return(new SpecificFreqRangePhaseExtractor(config.RangeStart, config.RangeEnd, SamplingConfigurations.Get().SamplingRateInMHz, misConfig.MinFlatPhasePtsNumCnt, misConfig.MaxPhaseStd)); default: throw new ArgumentOutOfRangeException(); } }
private void FlattenCurves_OnClick(object sender, RoutedEventArgs e) { if (!CheckPythonAndWarn()) { return; } var file = SelectFile(); if (file == null) { return; } var pythonPath = MiscellaneousConfigurations.Get().PythonPath; var cmd = Quote(AppDomain.CurrentDomain.BaseDirectory + @"Pythons\Flatter.py") + " " + file; if (File.Exists(file.Replace(".txt", "[WavelengthAxis].txt"))) { Process.Start(pythonPath, cmd); } else { var command = Quote(AppDomain.CurrentDomain.BaseDirectory + @"Pythons\Mapper.py") + " " + file + " " + SamplingConfigurations.Get().SamplingRate; Process.Start(pythonPath, command); MessageBox.Show("Generating wavelength axis, please click 'OK' AFTER completion."); Process.Start(pythonPath, cmd); } }
public virtual ICorrectorV2 NewCorrector() { if (MiscellaneousConfigurations.Get().AutoFlip) { return(new AutoFlipCorrectorV2(NewCorrectorNoFlip())); } return(NewCorrectorNoFlip()); }
public IAccumulator NewPulseSequenceProcessor() { var config = CorrectorConfigurations.Get(); if (config.LockDip) { return(new LockDipAccumulator(NewCrestFinder(), NewSlicer(), NewPulsePreprocessor(), NewCorrector(), config.LockDipFreqInMHz, MiscellaneousConfigurations.Get().LockDipScanRadiusInMhz, SamplingConfigurations.Get().SamplingRateInMHz)); } return(new Accumulator(NewCrestFinder(), NewSlicer(), NewPulsePreprocessor(), NewCorrector())); }
private void BnPositive_OnClick(object sender, RoutedEventArgs e) { SliceConfigurations.Get().CrestAtCenter = CbPeakPosition.SelectedIndex == 0; var config = MiscellaneousConfigurations.Get(); config.MaxPhaseStd = double.Parse(TbMaxPhaseStd.Text); config.MinFlatPhasePtsNumCnt = int.Parse(TbMinPhaseLength.Text); config.WaitEmptyProducerMsTimeout = int.Parse(TbProducerTimeout.Text); config.PythonPath = TbPythonPath.Text; config.AutoFlip = CkFlipMinusSpec.IsChecked.GetValueOrDefault(false); config.LockDipScanRadiusInMhz = double.Parse(TbDipLockScanRadius.Text); Close(); }
public OptionsWindow() { InitializeComponent(); CbPeakPosition.ItemsSource = new[] { "Center In Period", "Left In Period" }; CbPeakPosition.SelectedIndex = SliceConfigurations.Get().CrestAtCenter ? 0 : 1; var config = MiscellaneousConfigurations.Get(); TbMaxPhaseStd.Text = "" + config.MaxPhaseStd; TbMinPhaseLength.Text = "" + config.MinFlatPhasePtsNumCnt; TbProducerTimeout.Text = "" + config.WaitEmptyProducerMsTimeout; TbPythonPath.Text = config.PythonPath; TbDipLockScanRadius.Text = config.LockDipScanRadiusInMhz + ""; CkFlipMinusSpec.IsChecked = config.AutoFlip; }
private void GenerateWavelengthAxis_OnClick(object sender, RoutedEventArgs e) { if (!CheckPythonAndWarn()) { return; } var file = SelectFile(); if (file != null) { var command = Quote(AppDomain.CurrentDomain.BaseDirectory + @"Pythons\Mapper.py") + " " + file + " " + SamplingConfigurations.Get().SamplingRate; Process.Start(MiscellaneousConfigurations.Get().PythonPath, command); } }
private void BnViewTemporal_OnClick(object sender, RoutedEventArgs e) { if (IsProgramRunning()) { return; } if (!CheckPythonAndWarn()) { return; } Task.Run(() => { var factory = new ParallelInjector(); Sampler sampler; if (factory.TryNewSampler(out sampler)) { var data = sampler.Retrieve(SamplingConfigurations.Get().Channel); var finder = factory.NewCrestFinder(); var crestIndices = finder.Find(data); var path = AppDomain.CurrentDomain.BaseDirectory + @"temporal\"; if (!Directory.Exists(path)) { try { Directory.CreateDirectory(path); } catch (Exception) { MessageBox.Show( "Unable to create directory! Try run this program with administrator permission"); return; } } Toolbox.WriteData(path + "temporal.txt", data); Toolbox.WriteData(path + "crests.txt", crestIndices.ToArray()); Process.Start(MiscellaneousConfigurations.Get().PythonPath, Quote(AppDomain.CurrentDomain.BaseDirectory + @"Pythons\TemporalViewer.py") + " " + AppDomain.CurrentDomain.BaseDirectory); } else { MessageBox.Show("Sampler can't be initialized. Maybe another instance is running."); } }); }
private DisplayAdapterV2 NewAdapter() { if (GeneralConfigurations.Get().ViewPhase) { return(FactoryHolder.Get() .NewPhaseAdapter(new CanvasView(ScopeCanvas), new HorizontalAxisView(HorAxisCanvas), new VerticalAxisView(VerAxisCanvas), TbXCoordinate, TbDistance)); } double?lockDipFreq; if (CorrectorConfigs.LockDip) { lockDipFreq = CorrectorConfigs.LockDipFreqInMHz; } else { lockDipFreq = null; } return(FactoryHolder.Get() .NewSpectrumAdapter(new CanvasView(ScopeCanvas), new HorizontalAxisView(HorAxisCanvas), new VerticalAxisView(VerAxisCanvas), TbXCoordinate, TbDistance, lockDipFreq, MiscellaneousConfigurations.Get().LockDipScanRadiusInMhz)); }
public IConsumerV2 NewConsumer([NotNull] IProducerV2 <SampleRecord> producer, [NotNull] DisplayAdapterV2 adapter, int?targetCnt) { var timeout = MiscellaneousConfigurations.Get().WaitEmptyProducerMsTimeout; var configurations = GeneralConfigurations.Get(); if (configurations.ViewPhase) { return(new PhaseVisualizer(producer.BlockingQueue, NewPhaseReader(), adapter as PhaseDisplayAdapter, null, timeout, targetCnt)); } var threadNum = configurations.ThreadNum; if (SliceConfigurations.Get().Reference) { var splitters = new List <ISplitter>(threadNum); for (var i = 0; i < threadNum; i++) { splitters.Add(NewRefProcessor()); } return(new RefSpectroscopyVisualizer(producer.BlockingQueue, splitters, adapter as SpectrumDisplayAdapter, NewSpectrumWriter(), timeout, targetCnt, configurations.SaveSpec, configurations.SaveAcc)); } var accumulators = new List <IAccumulator>(threadNum); for (var i = 0; i < threadNum; i++) { accumulators.Add(NewPulseSequenceProcessor()); } return(new ParralelSpectroscopyVisualizerV2(producer.BlockingQueue, accumulators, adapter as SpectrumDisplayAdapter, NewSpectrumWriter(), timeout, targetCnt, configurations.SaveSpec, configurations.SaveAcc)); }
public static bool CheckPython() { var pythonPath = MiscellaneousConfigurations.Get().PythonPath; return(File.Exists(pythonPath)); }