public ActionResult Home(AnalysisParameters parameters)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    return(View("Result", new ContentProcessor().Process(parameters)));
                }
                catch (WebException ex)
                {
                    if (ex.Status == WebExceptionStatus.NameResolutionFailure)
                    {
                        ModelState.AddModelError("Content", "Provided host name can not be resolved");
                    }

                    if (ex.Status == WebExceptionStatus.Timeout)
                    {
                        ModelState.AddModelError("Content",
                                                 "No response was received during the time-out period for a request");
                    }
                }

                catch (UriFormatException)
                {
                    ModelState.AddModelError("Content", "Please, insert a correct URI");
                }

                catch (Exception ex)
                {
                    ModelState.AddModelError("Content", ex.Message);
                }
            }

            return(View());
        }
Beispiel #2
0
        private AnalysisParameters getAnalysisParameters()
        {
            AnalysisParameters analysisParameters = new AnalysisParameters();

            analysisParameters.Tuners            = frequencySelectionControl.Tuners;
            analysisParameters.ScanningFrequency = frequencySelectionControl.SelectedFrequency;

            if (analysisParameters.ScanningFrequency as SatelliteFrequency != null)
            {
                SatelliteFrequency satelliteFrequency = (SatelliteFrequency)analysisParameters.ScanningFrequency;
                satelliteFrequency.SatelliteDish = new SatelliteDish();
                satelliteFrequency.SatelliteDish.LNBLowBandFrequency  = frequencySelectionControl.LNBLowBandFrequency;
                satelliteFrequency.SatelliteDish.LNBHighBandFrequency = frequencySelectionControl.LNBHighBandFrequency;
                satelliteFrequency.SatelliteDish.LNBSwitchFrequency   = frequencySelectionControl.LNBSwitchFrequency;
                satelliteFrequency.SatelliteDish.DiseqcSwitch         = frequencySelectionControl.DiseqcSwitch;
            }

            analysisParameters.UseSignalPresent      = frequencySelectionControl.UseSignalPresent;
            analysisParameters.SwitchAfterPlay       = frequencySelectionControl.SwitchAfterPlay;
            analysisParameters.RepeatDiseqc          = frequencySelectionControl.RepeatDiseqc;
            analysisParameters.SignalLockTimeout     = (int)nudSignalLockTimeout.Value;
            analysisParameters.DataCollectionTimeout = (int)nudDataCollectionTimeout.Value;
            analysisParameters.DumpFileName          = tbDumpFile.Text;

            return(analysisParameters);
        }
        public AnalysisResult Process(AnalysisParameters parameters)
        {
            AnalysisResult result = new AnalysisResult();

            string textForAnalysis = parameters.Content;

            if (parameters.IsUrl)
            {
                HtmlDocument doc = new HtmlWeb().Load(parameters.Content);

                textForAnalysis = _contentParser.GetTextFromHtml(doc);

                if (parameters.IsAnalyzeMetaTags)
                {
                    string metaTagsText = _contentParser.GetTextFromMetaTags(doc);

                    if (!String.IsNullOrEmpty(metaTagsText))
                    {
                        result.MetaTagsAnalysis = CalculateNumberOfOccurences(_contentParser.ParseText(metaTagsText));
                    }
                }

                if (parameters.IsCountExternalLinks)
                {
                    result.ExternalLinksCount = _contentParser.CountExternalLinks(doc, new Uri(parameters.Content).Host);
                }
            }

            result.TextAnalysis = CalculateNumberOfOccurences(_contentParser.ParseText(textForAnalysis));

            return(result);
        }
Beispiel #4
0
        // Analysis
        public void SetAnalysisParameters(double[] wavelength, double wavelengthA, double wavelengthB, double bandA, double bandB, double wavelengthStart, double wavelengthEnd)
        {
            // New instance of analysis parameters class
            analysisParameters = new AnalysisParameters();

            analysisParameters.MomentA = wavelengthStart;
            analysisParameters.MomentB = wavelengthEnd;

            analysisParameters.WavelengthA = wavelengthA;
            analysisParameters.WavelengthB = wavelengthB;

            analysisParameters.BandA = bandA;
            analysisParameters.BandB = bandB;

            // Pixel [index]
            double aLow  = wavelengthA - (bandA / 2);
            double aHigh = wavelengthA + (bandA / 2);

            double bLow  = wavelengthB - (bandB / 2);
            double bHigh = wavelengthB + (bandB / 2);


            analysisParameters.PixelA      = convert2Pixel(wavelengthA, wavelength);
            analysisParameters.PixelA_Low  = convert2Pixel(aLow, wavelength);
            analysisParameters.PixelA_High = convert2Pixel(aHigh, wavelength);

            analysisParameters.PixelB      = convert2Pixel(wavelengthB, wavelength);
            analysisParameters.PixelB_Low  = convert2Pixel(bLow, wavelength);
            analysisParameters.PixelB_High = convert2Pixel(bHigh, wavelength);

            analysisParameters.PixelA_Moment = convert2Pixel(analysisParameters.MomentA, wavelength);
            analysisParameters.PixelB_Moment = convert2Pixel(analysisParameters.MomentB, wavelength);
        }
Beispiel #5
0
 /// <summary>
 /// Nullary constructor.
 /// </summary>
 public ProjectProperties()
 {
     AnalysisParams = new AnalysisParameters();
     PlatformSymbolFileIdentifiers  = new List <string>();
     ExtensionScriptFileIdentifiers = new List <string>();
     ProjectSyms = new SortedList <string, DefSymbol>();
 }
Beispiel #6
0
        /// <summary>
        /// Copy constructor.
        /// </summary>
        /// <param name="src">Object to clone.</param>
        public ProjectProperties(ProjectProperties src) : this()
        {
            CpuType = src.CpuType;
            IncludeUndocumentedInstr = src.IncludeUndocumentedInstr;
            EntryFlags     = src.EntryFlags;
            AutoLabelStyle = src.AutoLabelStyle;

            AnalysisParams = new AnalysisParameters(src.AnalysisParams);

            // Clone PlatformSymbolFileIdentifiers
            foreach (string fileName in src.PlatformSymbolFileIdentifiers)
            {
                PlatformSymbolFileIdentifiers.Add(fileName);
            }
            // Clone ExtensionScriptFileIdentifiers
            foreach (string fileName in src.ExtensionScriptFileIdentifiers)
            {
                ExtensionScriptFileIdentifiers.Add(fileName);
            }

            // Clone ProjectSyms
            foreach (KeyValuePair <string, DefSymbol> kvp in src.ProjectSyms)
            {
                ProjectSyms[kvp.Key] = kvp.Value;
            }
        }
Beispiel #7
0
        private void duStuff(ILoads rLoads, double mult, int i, ref ErrorInfo[] err, ref ICalculation calc)
        {
            ILoadCase          lCase = rLoads.GetLoadCase(1, ItemAt.AtNo);
            AnalysisParameters param = new AnalysisParameters();

            param.ModifyLoadingByFactor = true;
            param.LoadingFactor         = mult;
            param.Method = AnalysisMethodType.SecondOrder;

            //Loads
            //lc.PrepareModification();
            rLoads.PrepareModification();
            try
            {
                lCase.SetAnalysisParameters(ref param);
            }
            finally
            {
                rLoads.FinishModification();
                //lc.FinishModification();
                lCase = null;
            }

            err = calc.Calculate(LoadingType.LoadCaseType, 1);
            if (err.Length == 0)
            {
                IResults       res   = calc.GetResultsInFeNodes(LoadingType.LoadCaseType, 1);
                MaximumResults max   = res.GetMaximum();
                Point3D        point = max.Displacement;
                double         value = Math.Sqrt(Math.Pow(point.X, 2) + Math.Pow(point.Y, 2) + Math.Pow(point.Z, 2));
                chart1.Series["deflection"].Points.AddXY(i, value);
            }
        }
 public AnalysisParameters(AnalysisParameters src)
 {
     AnalyzeUncategorizedData = src.AnalyzeUncategorizedData;
     DefaultTextScanMode      = src.DefaultTextScanMode;
     MinCharsForString        = src.MinCharsForString;
     SeekNearbyTargets        = src.SeekNearbyTargets;
     SmartPlpHandling         = src.SmartPlpHandling;
 }
Beispiel #9
0
        public IActionResult LoadAnalyzeSettings(string settings)
        {
            var parameters = JsonConvert.DeserializeObject <AnalysisSettingsModel>(settings);

            AnalysisParameters.Parameters.AnalysisMethod = parameters.AnalysisMethod;
            AnalysisParameters.Parameters.ImportIds      = parameters.ImportIds;
            AnalysisParameters.SetAdditionalArgs(parameters);

            ViewBag.Headers = AnalysisService.LoadImportHeaders(parameters.ImportIds);

            return(View());
        }
Beispiel #10
0
        private void cmdScan_Click(object sender, EventArgs e)
        {
            if (cmdScan.Text == "Stop Analysis")
            {
                Logger.Instance.Write("Stop analysis requested");
                workerAnalyze.CancelAsync();
                resetEvent.WaitOne(new TimeSpan(0, 0, 45));
                cmdScan.Text         = "Start Analysis";
                lblScanning.Visible  = false;
                pbarProgress.Visible = false;
                pbarProgress.Enabled = false;

                return;
            }

            if (!checkData())
            {
                return;
            }

            analysisParameters = getAnalysisParameters();

            if (analysisParameters.DumpFileName != null && analysisParameters.DumpFileName != string.Empty)
            {
                Logger.Instance.Write("Analysis started for file " + analysisParameters.DumpFileName);
            }
            else
            {
                Logger.Instance.Write("Analysis started for provider " + analysisParameters.ScanningFrequency.Provider.Name +
                                      " frequency " + analysisParameters.ScanningFrequency.ToString());
            }

            cmdScan.Text         = "Stop Analysis";
            lblScanning.Text     = "Scanning " + analysisParameters.ScanningFrequency.ToString();
            lblScanning.Visible  = true;
            pbarProgress.Visible = true;
            pbarProgress.Enabled = true;


            workerAnalyze = new BackgroundWorker();
            workerAnalyze.WorkerSupportsCancellation = true;
            workerAnalyze.DoWork             += new DoWorkEventHandler(doAnalysis);
            workerAnalyze.RunWorkerCompleted += new RunWorkerCompletedEventHandler(runWorkerCompleted);
            workerAnalyze.RunWorkerAsync(analysisParameters);
        }
Beispiel #11
0
        static void Main(string[] args)
        {
            Console.WriteLine("Starting analysis.");

            var watch = Stopwatch.StartNew();

            // Parse analysis arguments
            AnalysisParameters param = ParseInputArguments(args);

            // Read data files into Lists
            var spx = ReadFile <Index>(spxPriceDaily).OrderBy(x => x.Date);
            var vix = ReadFile <Vix>(vixDaily).OrderBy(x => x.Date);
            var vol = ReadFile <Volume>(volumeDaily).OrderBy(x => x.Date);

            // Make sure data files are starting at a common date
            if (spx.First().Date != vix.First().Date&& spx.First().Date != vol.First().Date&& spx.First().Date != vix.First().Date)
            {
                Console.WriteLine("ERROR: Start date of records do not match.");
            }

            // Calculate VROC for each data entry
            for (var i = 0; i < vol.Count(); i++)
            {
                if (i < param.VrocPeriod)
                {
                    continue;
                }

                double vroc = GetVROC(vol, i, param.VrocPeriod);

                if (vroc > param.VrocThreshold)
                {
                    Console.WriteLine("VROC at {0} on {1}", vroc, vol.ElementAt(i).Date);
                }
            }

            watch.Stop();

            Console.WriteLine("Analysis complete. Total execution time: {0}ms", watch.ElapsedMilliseconds);
            Console.WriteLine("\nPress any key to exit.");
            Console.ReadKey();
        }
Beispiel #12
0
        public static AnalysisParameters ParseInputArguments(string[] args)
        {
            AnalysisParameters param = new AnalysisParameters();

            // Get VROC period
            if (args.Length > 0)
            {
                param.VrocPeriod = Convert.ToInt32(args[0]);
            }

            // Get VROC threshold
            if (args.Length > 1)
            {
                param.VrocThreshold = Convert.ToDouble(args[1]);
            }

            Console.WriteLine("\nAnalysis parameters:");
            Console.WriteLine("VROC period (in days) = {0}", param.VrocPeriod);
            Console.WriteLine("VROC threshold (percentage) = {0}\n", param.VrocThreshold);

            return(param);
        }
        private double[,] ComputeCorrelationMatrix(List<double>[] ListValueDesc)
        {
            int NumDesc = ListValueDesc.Length;
            double[,] CorrelationMatrix = new double[NumDesc, NumDesc];

            if (GlobalInfo.OptionsWindow.radioButtonMIC.Checked)
            {
                double[][] dataset1 = new double[NumDesc][];
                string[] VarNames = new string[NumDesc];

                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                {
                    dataset1[iDesc] = new double[ListValueDesc[iDesc].Count];

                    Array.Copy(ListValueDesc[iDesc].ToArray(), dataset1[iDesc], ListValueDesc[iDesc].Count);
                    VarNames[iDesc] = iDesc.ToString();
                }
                data.Dataset data1 = new data.Dataset(dataset1, VarNames, 0);
                VarPairQueue Qu = new VarPairQueue(data1);

                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                    for (int jDesc = 0; jDesc < NumDesc; jDesc++)
                    {
                        Qu.addPair(iDesc, jDesc);
                    }

                Analysis ana = new Analysis(data1, Qu);
                AnalysisParameters param = new AnalysisParameters();
                double resparam = param.commonValsThreshold;

                analysis.results.FullResult Full = new analysis.results.FullResult();
                //List<analysis.results.BriefResult> Brief = new List<analysis.results.BriefResult>();
                analysis.results.BriefResult Brief = new analysis.results.BriefResult();

                java.lang.Class t = java.lang.Class.forName("analysis.results.BriefResult");

                //java.lang.Class restype = null;
                ana.analyzePairs(t, param);

                //   object o =  (ana.varPairQueue().peek());
                //   ana.getClass();
                //  int resNum = ana.numResults();
                analysis.results.Result[] res = ana.getSortedResults();
                //  double main = res[0].getMainScore();
                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                    for (int jDesc = 0; jDesc < NumDesc; jDesc++)
                    {
                        int X = int.Parse(res[jDesc + iDesc * NumDesc].getXVar());
                        int Y = int.Parse(res[jDesc + iDesc * NumDesc].getYVar());
                        CorrelationMatrix[X, Y] = res[jDesc + iDesc * NumDesc].getMainScore();

                    }
            }
            else
            {

                //return null;
                for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                    for (int jDesc = 0; jDesc < NumDesc; jDesc++)
                    {
                        try
                        {
                            if (GlobalInfo.OptionsWindow.radioButtonPearson.Checked)
                                CorrelationMatrix[iDesc, jDesc] = (alglib.pearsoncorr2(ListValueDesc[iDesc].ToArray(), ListValueDesc[jDesc].ToArray()));
                            else if (GlobalInfo.OptionsWindow.radioButtonSpearman.Checked)
                                CorrelationMatrix[iDesc, jDesc] = (alglib.spearmancorr2(ListValueDesc[iDesc].ToArray(), ListValueDesc[jDesc].ToArray()));

                        }
                        catch
                        {
                            //Console.WriteLine("Input string is not a sequence of digits.");
                            return null;
                        }

                    }
            }
            return CorrelationMatrix;
        }
Beispiel #14
0
 public AnalysisParameters(AnalysisParameters src)
 {
     AnalyzeUncategorizedData = src.AnalyzeUncategorizedData;
     MinCharsForString        = src.MinCharsForString;
     SeekNearbyTargets        = src.SeekNearbyTargets;
 }
        private AnalysisParameters getAnalysisParameters()
        {
            AnalysisParameters analysisParameters = new AnalysisParameters();

            analysisParameters.Tuners = frequencySelectionControl.Tuners;
            analysisParameters.ScanningFrequency = frequencySelectionControl.SelectedFrequency;

            if (analysisParameters.ScanningFrequency as SatelliteFrequency != null)
            {
                SatelliteFrequency satelliteFrequency = (SatelliteFrequency)analysisParameters.ScanningFrequency;
                satelliteFrequency.SatelliteDish = new SatelliteDish();
                satelliteFrequency.SatelliteDish.LNBLowBandFrequency = frequencySelectionControl.LNBLowBandFrequency;
                satelliteFrequency.SatelliteDish.LNBHighBandFrequency = frequencySelectionControl.LNBHighBandFrequency;
                satelliteFrequency.SatelliteDish.LNBSwitchFrequency = frequencySelectionControl.LNBSwitchFrequency;
                satelliteFrequency.SatelliteDish.DiseqcSwitch = frequencySelectionControl.DiseqcSwitch;
            }

            analysisParameters.UseSignalPresent = frequencySelectionControl.UseSignalPresent;
            analysisParameters.SwitchAfterPlay = frequencySelectionControl.SwitchAfterPlay;
            analysisParameters.RepeatDiseqc = frequencySelectionControl.RepeatDiseqc;
            analysisParameters.SignalLockTimeout = (int)nudSignalLockTimeout.Value;
            analysisParameters.DataCollectionTimeout = (int)nudDataCollectionTimeout.Value;
            analysisParameters.DumpFileName = tbDumpFile.Text;

            return (analysisParameters);
        }
        private void getData(ISampleDataProvider dataProvider, AnalysisParameters analysisParameters, BackgroundWorker worker)
        {
            Logger.Instance.Write("Starting analysis");

            analysisParameters.ScanningFrequency.CollectionType = CollectionType.MHEG5;
            FrequencyScanner frequencyScanner = new FrequencyScanner(dataProvider, worker);
            Collection<TVStation> stations = frequencyScanner.FindTVStations();

            pidList = new Collection<PidSpec>();

            dataProvider.ChangePidMapping(new int[] { -1 });

            IntPtr memoryPointer = dataProvider.BufferAddress;
            int currentOffset = 0;

            byte[] buffer = new byte[188];
            DateTime startTime = DateTime.Now;
            int packetCount = 0;
            int errorPackets = 0;
            int nullPackets = 0;

            while ((DateTime.Now - startTime).TotalSeconds < analysisParameters.DataCollectionTimeout && !worker.CancellationPending)
            {
                if (currentOffset >= dataProvider.BufferSpaceUsed)
                {
                    Thread.Sleep(2000);
                    if (currentOffset >= dataProvider.BufferSpaceUsed)
                    {
                        Logger.Instance.Write("Analysis resetting pid after " + packetCount + " packets (errors = " + errorPackets + " null = " + nullPackets + ")");
                        dataProvider.ChangePidMapping(new int[] { -1 });
                        currentOffset = 0;
                    }
                }
                else
                {
                    IntPtr currentPointer = new IntPtr(memoryPointer.ToInt64() + currentOffset + 136);
                    Marshal.Copy(currentPointer, buffer, 0, 188);
                    packetCount++;

                    /*if (dumpCount < 10000)
                    {
                        Logger.Instance.Dump("atsc " + dumpCount, buffer, buffer.Length);
                        dumpCount++;
                    }*/

                    TransportPacket transportPacket = new TransportPacket();

                    try
                    {
                        transportPacket.Process(buffer);

                        if (transportPacket.ErrorIndicator)
                            errorPackets++;
                        if (transportPacket.IsNullPacket)
                            nullPackets++;

                        if (!transportPacket.ErrorIndicator)
                        {
                            bool ignorePid = checkPid(transportPacket.PID, stations);
                            if (!ignorePid)
                            {
                                PidSpec pidSpec = findPidSpec(pidList, transportPacket.PID);
                                if (pidSpec == null)
                                {
                                    pidSpec = new PidSpec(transportPacket.PID);
                                    addPid(pidList, new PidSpec(transportPacket.PID));
                                }
                                pidSpec.ProcessPacket(buffer, transportPacket);
                            }
                        }
                        else
                            Logger.Instance.Write("Transport packet error in packet " + packetCount);

                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        Logger.Instance.Write("Failed to parse packet " + packetCount);
                    }

                    currentOffset += buffer.Length;
                }
            }

            Logger.Instance.Write("Analysis completed: " + pidList.Count + " PID's loaded from " + packetCount + " packets");
        }
        private void cmdScan_Click(object sender, EventArgs e)
        {
            if (cmdScan.Text == "Stop Analysis")
            {
                Logger.Instance.Write("Stop analysis requested");
                workerAnalyze.CancelAsync();
                resetEvent.WaitOne(new TimeSpan(0, 0, 45));
                cmdScan.Text = "Start Analysis";
                lblScanning.Visible = false;
                pbarProgress.Visible = false;
                pbarProgress.Enabled = false;

                return;
            }

            if (!checkData())
                return;

            analysisParameters = getAnalysisParameters();

            if (analysisParameters.DumpFileName != null && analysisParameters.DumpFileName != string.Empty)
                Logger.Instance.Write("Analysis started for file " + analysisParameters.DumpFileName);
            else
                Logger.Instance.Write("Analysis started for provider " + analysisParameters.ScanningFrequency.Provider.Name +
                    " frequency " + analysisParameters.ScanningFrequency.ToString());

            cmdScan.Text = "Stop Analysis";
            lblScanning.Text = "Scanning " + analysisParameters.ScanningFrequency.ToString();
            lblScanning.Visible = true;
            pbarProgress.Visible = true;
            pbarProgress.Enabled = true;

            workerAnalyze = new BackgroundWorker();
            workerAnalyze.WorkerSupportsCancellation = true;
            workerAnalyze.DoWork += new DoWorkEventHandler(doAnalysis);
            workerAnalyze.RunWorkerCompleted += new RunWorkerCompletedEventHandler(runWorkerCompleted);
            workerAnalyze.RunWorkerAsync(analysisParameters);
        }
Beispiel #18
0
        private void getData(ISampleDataProvider dataProvider, AnalysisParameters analysisParameters, BackgroundWorker worker)
        {
            Logger.Instance.Write("Starting analysis");

            analysisParameters.ScanningFrequency.CollectionType = CollectionType.MHEG5;
            FrequencyScanner       frequencyScanner = new FrequencyScanner(dataProvider, worker);
            Collection <TVStation> stations         = frequencyScanner.FindTVStations();

            pidList = new Collection <PidSpec>();

            dataProvider.ChangePidMapping(new int[] { -1 });

            IntPtr memoryPointer = dataProvider.BufferAddress;
            int    currentOffset = 0;

            byte[]   buffer       = new byte[188];
            DateTime startTime    = DateTime.Now;
            int      packetCount  = 0;
            int      errorPackets = 0;
            int      nullPackets  = 0;

            while ((DateTime.Now - startTime).TotalSeconds < analysisParameters.DataCollectionTimeout && !worker.CancellationPending)
            {
                if (currentOffset >= dataProvider.BufferSpaceUsed)
                {
                    Thread.Sleep(2000);
                    if (currentOffset >= dataProvider.BufferSpaceUsed)
                    {
                        Logger.Instance.Write("Analysis resetting pid after " + packetCount + " packets (errors = " + errorPackets + " null = " + nullPackets + ")");
                        dataProvider.ChangePidMapping(new int[] { -1 });
                        currentOffset = 0;
                    }
                }
                else
                {
                    IntPtr currentPointer = new IntPtr(memoryPointer.ToInt64() + currentOffset + 136);
                    Marshal.Copy(currentPointer, buffer, 0, 188);
                    packetCount++;

                    /*if (dumpCount < 10000)
                     * {
                     *  Logger.Instance.Dump("atsc " + dumpCount, buffer, buffer.Length);
                     *  dumpCount++;
                     * }*/

                    TransportPacket transportPacket = new TransportPacket();

                    try
                    {
                        transportPacket.Process(buffer);

                        if (transportPacket.ErrorIndicator)
                        {
                            errorPackets++;
                        }
                        if (transportPacket.IsNullPacket)
                        {
                            nullPackets++;
                        }

                        if (!transportPacket.ErrorIndicator)
                        {
                            bool ignorePid = checkPid(transportPacket.PID, stations);
                            if (!ignorePid)
                            {
                                PidSpec pidSpec = findPidSpec(pidList, transportPacket.PID);
                                if (pidSpec == null)
                                {
                                    pidSpec = new PidSpec(transportPacket.PID);
                                    addPid(pidList, new PidSpec(transportPacket.PID));
                                }
                                pidSpec.ProcessPacket(buffer, transportPacket);
                            }
                        }
                        else
                        {
                            Logger.Instance.Write("Transport packet error in packet " + packetCount);
                        }
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        Logger.Instance.Write("Failed to parse packet " + packetCount);
                    }

                    currentOffset += buffer.Length;
                }
            }

            Logger.Instance.Write("Analysis completed: " + pidList.Count + " PID's loaded from " + packetCount + " packets");
        }
Beispiel #19
0
        private void doAnalysis(object sender, DoWorkEventArgs e)
        {
            AnalysisParameters analysisParameters = e.Argument as AnalysisParameters;

            pidList = null;

            TunerNodeType tunerNodeType;
            TuningSpec    tuningSpec;

            SatelliteFrequency satelliteFrequency = analysisParameters.ScanningFrequency as SatelliteFrequency;

            if (satelliteFrequency != null)
            {
                tunerNodeType = TunerNodeType.Satellite;
                tuningSpec    = new TuningSpec((Satellite)satelliteFrequency.Provider, satelliteFrequency);
            }
            else
            {
                TerrestrialFrequency terrestrialFrequency = analysisParameters.ScanningFrequency as TerrestrialFrequency;
                if (terrestrialFrequency != null)
                {
                    tunerNodeType = TunerNodeType.Terrestrial;
                    tuningSpec    = new TuningSpec(terrestrialFrequency);
                }
                else
                {
                    CableFrequency cableFrequency = analysisParameters.ScanningFrequency as CableFrequency;
                    if (cableFrequency != null)
                    {
                        tunerNodeType = TunerNodeType.Cable;
                        tuningSpec    = new TuningSpec(cableFrequency);
                    }
                    else
                    {
                        AtscFrequency atscFrequency = analysisParameters.ScanningFrequency as AtscFrequency;
                        if (atscFrequency != null)
                        {
                            if (atscFrequency.TunerType == TunerType.ATSC)
                            {
                                tunerNodeType = TunerNodeType.ATSC;
                            }
                            else
                            {
                                tunerNodeType = TunerNodeType.Cable;
                            }
                            tuningSpec = new TuningSpec(atscFrequency);
                        }
                        else
                        {
                            ClearQamFrequency clearQamFrequency = analysisParameters.ScanningFrequency as ClearQamFrequency;
                            if (clearQamFrequency != null)
                            {
                                tunerNodeType = TunerNodeType.Cable;
                                tuningSpec    = new TuningSpec(clearQamFrequency);
                            }
                            else
                            {
                                ISDBSatelliteFrequency isdbSatelliteFrequency = analysisParameters.ScanningFrequency as ISDBSatelliteFrequency;
                                if (isdbSatelliteFrequency != null)
                                {
                                    tunerNodeType = TunerNodeType.ISDBS;
                                    tuningSpec    = new TuningSpec((Satellite)satelliteFrequency.Provider, isdbSatelliteFrequency);
                                }
                                else
                                {
                                    ISDBTerrestrialFrequency isdbTerrestrialFrequency = analysisParameters.ScanningFrequency as ISDBTerrestrialFrequency;
                                    if (isdbTerrestrialFrequency != null)
                                    {
                                        tunerNodeType = TunerNodeType.ISDBT;
                                        tuningSpec    = new TuningSpec(isdbTerrestrialFrequency);
                                    }
                                    else
                                    {
                                        throw (new InvalidOperationException("Tuning frequency not recognized"));
                                    }
                                }
                            }
                        }
                    }
                }
            }

            Tuner currentTuner = null;
            bool  finished     = false;

            while (!finished)
            {
                if ((sender as BackgroundWorker).CancellationPending)
                {
                    Logger.Instance.Write("Scan abandoned by user");
                    e.Cancel = true;
                    resetEvent.Set();
                    return;
                }

                BDAGraph graph = BDAGraph.FindTuner(analysisParameters.Tuners, tunerNodeType, tuningSpec, currentTuner, analysisParameters.RepeatDiseqc, analysisParameters.SwitchAfterPlay);
                if (graph == null)
                {
                    Logger.Instance.Write("<e> No tuner able to tune frequency " + analysisParameters.ScanningFrequency.ToString());

                    frequencySelectionControl.Invoke(new ShowMessage(showMessage), "No tuner able to tune frequency " + analysisParameters.ScanningFrequency.ToString(),
                                                     MessageBoxButtons.OK, MessageBoxIcon.Error);
                    finished = true;
                }
                else
                {
                    string tuneReply = checkTuning(graph, analysisParameters, sender as BackgroundWorker);

                    if ((sender as BackgroundWorker).CancellationPending)
                    {
                        Logger.Instance.Write("Scan abandoned by user");
                        graph.Dispose();
                        e.Cancel = true;
                        resetEvent.Set();
                        return;
                    }

                    if (tuneReply == null)
                    {
                        try
                        {
                            if (analysisParameters.DumpFileName == null || analysisParameters.DumpFileName == string.Empty)
                            {
                                getData(graph, analysisParameters, sender as BackgroundWorker);
                            }
                            else
                            {
                                SimulationDataProvider dataProvider = new SimulationDataProvider(analysisParameters.DumpFileName, graph.Frequency);
                                string providerReply = dataProvider.Run();
                                if (providerReply != null)
                                {
                                    Logger.Instance.Write("<e> Simulation Data Provider failed");
                                    Logger.Instance.Write("<e> " + providerReply);
                                    frequencySelectionControl.Invoke(new ShowMessage(showMessage), "Simulation Data Provider failed." +
                                                                     Environment.NewLine + Environment.NewLine + providerReply,
                                                                     MessageBoxButtons.OK, MessageBoxIcon.Error);
                                }
                                else
                                {
                                    getData(dataProvider, analysisParameters, sender as BackgroundWorker);
                                    dataProvider.Stop();
                                }
                            }
                        }
                        catch (IOException ex)
                        {
                            Logger.Instance.Write("<e> Failed to process dump file");
                            Logger.Instance.Write("<e> " + ex.Message);
                            frequencySelectionControl.Invoke(new ShowMessage(showMessage), "Failed to process dump file." +
                                                             Environment.NewLine + Environment.NewLine + ex.Message,
                                                             MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        graph.Dispose();
                        finished = true;
                    }
                    else
                    {
                        Logger.Instance.Write("Failed to tune frequency " + analysisParameters.ScanningFrequency.ToString());
                        graph.Dispose();
                        currentTuner = graph.Tuner;
                    }
                }
            }

            e.Cancel = true;
            resetEvent.Set();
        }
Beispiel #20
0
        static void Main(string[] args)
        {
            Console.WriteLine("Starting analysis");

            var watch = Stopwatch.StartNew();

            AnalysisParameters parameters = new AnalysisParameters();

            // Read data files into Lists
            var spx          = ReadFile <Index>(SpxPriceDaily).OrderBy(x => x.Date);
            var settlePrices = ReadFile <SettlePrices>(SpxSettlePrices).OrderBy(x => x.Date);

            int?   expirationDay = null;
            Index  expiration;
            Index  expirationThursday = null;
            Index  start                = null;
            Index  periodHigh           = null;
            Index  periodLow            = null;
            bool   foundFirstExpiration = false;
            bool   foundExpiration      = false;
            Index  biggestMove          = null;
            double biggestMoveAmount    = 0;

            foreach (var day in spx)
            {
                if (DateTime.Compare(day.Date, parameters.StartDate) < 0)
                {
                    continue;
                }

                if (day.Date.Day >= 1 && day.Date.Day <= 7)
                {
                    // Reset foundExpiration flag during first week of the month
                    foundExpiration = false;
                }

                if (expirationDay != null)
                {
                    // Symbolizes first day after expiration
                    start             = day;
                    expirationDay     = null;
                    periodHigh        = day;
                    periodLow         = day;
                    biggestMove       = day;
                    biggestMoveAmount = day.Close - day.Open;
                }
                else
                {
                    if (periodHigh == null || day.High > periodHigh.High)
                    {
                        periodHigh = day;
                    }

                    if (periodLow == null || day.Low < periodLow.Low)
                    {
                        periodLow = day;
                    }

                    if (Math.Abs(day.Close - day.Open) > Math.Abs(biggestMoveAmount))
                    {
                        biggestMove       = day;
                        biggestMoveAmount = day.Close - day.Open;
                    }
                }

                // Capture the Thursday before the third Friday of the month (in case of holiday)
                if (day.Date.Day >= 14 && day.Date.Day <= 20)
                {
                    if (day.Date.DayOfWeek == DayOfWeek.Thursday)
                    {
                        expirationThursday = day;
                    }
                }

                // Try to find third Friday of the month (expiration day)
                if (day.Date.Day >= 15 && day.Date.Day <= 21)
                {
                    if (day.Date.DayOfWeek == DayOfWeek.Friday)
                    {
                        foundExpiration = true;
                        expiration      = day;
                        expirationDay   = day.Date.Day;

                        if (foundFirstExpiration)
                        {
                            double expirePrice = settlePrices.Single(x => x.Date == expiration.Date).SettlePrice;
                            double spread      = Math.Round(expirePrice - start.Open, 2);
                            UpdateStats(spread);
                            PrintIntervalStats(expiration, start, periodHigh, periodLow, biggestMove, expirePrice, biggestMoveAmount);
                        }
                        else
                        {
                            foundFirstExpiration = true;
                        }
                    }
                }

                // If we are passed the third week and still have not found the Friday expiration (it was a holiday), expiration was on the preceeding Thursday
                if (day.Date.Day > 21 && !foundExpiration)
                {
                    if (expirationThursday == null)
                    {
                        Console.WriteLine("Error in data: Could not find Thursday or Friday expiration");
                        throw new Exception("Error in data: Could not find Thursday or Friday expiration");
                    }

                    foundExpiration = true;
                    expirationDay   = day.Date.Day;

                    if (foundFirstExpiration)
                    {
                        double expirePrice = settlePrices.Single(x => x.Date == expirationThursday.Date).SettlePrice;
                        double spread      = Math.Round(expirePrice - start.Open, 2);
                        UpdateStats(spread);
                        PrintIntervalStats(expirationThursday, start, periodHigh, periodLow, biggestMove, expirePrice, biggestMoveAmount);
                    }
                    else
                    {
                        foundFirstExpiration = true;
                    }
                }
            }

            watch.Stop();

            PrintFinalStats();

            Console.WriteLine("Analysis complete. Total execution time: {0}ms", watch.ElapsedMilliseconds);
            Console.WriteLine("\nPress any key to exit");
            Console.ReadLine();
        }
Beispiel #21
0
        static void Main(string[] args)
        {
            Console.WriteLine("Starting analysis");

            var watch = Stopwatch.StartNew();

            AnalysisParameters parameters = new AnalysisParameters();

            // Read data files into Lists
            var spx          = ReadFile <Index>(SpxPriceDaily).OrderBy(x => x.Date);
            var settlePrices = ReadFile <SettlePrices>(SpxSettlePrices).OrderBy(x => x.Date);

            Index  expirationFriday;
            Index  expirationThursday = null;
            Index  start                = null;
            Index  periodHigh           = null;
            Index  periodLow            = null;
            bool   foundFirstExpiration = false;
            bool   foundExpiration      = false;
            Index  biggestMove          = null;
            double biggestMoveAmount    = 0;

            // Monday open stats
            Index  mondayOpen          = null;
            Index  m_periodHigh        = null;
            Index  m_periodLow         = null;
            Index  m_biggestMove       = null;
            double m_biggestMoveAmount = 0;


            // Tuesday open stats
            Index  tuesdayOpen         = null;
            Index  t_periodHigh        = null;
            Index  t_periodLow         = null;
            Index  t_biggestMove       = null;
            double t_biggestMoveAmount = 0;

            foreach (var day in spx)
            {
                if (DateTime.Compare(day.Date, parameters.StartDate) < 0)
                {
                    continue;
                }

                // Reset some flags during first week of the month
                if (day.Date.Day >= 1 && day.Date.Day <= 7)
                {
                    foundExpiration    = false;
                    expirationThursday = null;
                    mondayOpen         = null;
                    tuesdayOpen        = null;
                }

                if (mondayOpen != null)
                {
                    if (day.High > m_periodHigh.High)
                    {
                        m_periodHigh = day;
                    }

                    if (day.Low < m_periodLow.Low)
                    {
                        m_periodLow = day;
                    }

                    if (Math.Abs(day.Close - day.Open) > Math.Abs(m_biggestMoveAmount))
                    {
                        m_biggestMove       = day;
                        m_biggestMoveAmount = day.Close - day.Open;
                    }
                }

                if (day.Date.Day >= 11 && day.Date.Day <= 17)
                {
                    if (day.Date.DayOfWeek == DayOfWeek.Monday)
                    {
                        mondayOpen          = day;
                        m_periodHigh        = day;
                        m_periodLow         = day;
                        m_biggestMove       = day;
                        m_biggestMoveAmount = day.Close - day.Open;
                    }
                }

                if (tuesdayOpen != null)
                {
                    if (day.High > t_periodHigh.High)
                    {
                        t_periodHigh = day;
                    }

                    if (day.Low < t_periodLow.Low)
                    {
                        t_periodLow = day;
                    }

                    if (Math.Abs(day.Close - day.Open) > Math.Abs(t_biggestMoveAmount))
                    {
                        t_biggestMove       = day;
                        t_biggestMoveAmount = day.Close - day.Open;
                    }
                }

                if (day.Date.Day >= 12 && day.Date.Day <= 18)
                {
                    if (day.Date.DayOfWeek == DayOfWeek.Tuesday)
                    {
                        tuesdayOpen         = day;
                        t_periodHigh        = day;
                        t_periodLow         = day;
                        t_biggestMove       = day;
                        t_biggestMoveAmount = day.Close - day.Open;
                    }
                }

                // Try to find third Friday of the month (expiration day)
                if (day.Date.Day >= 15 && day.Date.Day <= 21 && !foundExpiration)
                {
                    if (expirationThursday != null && day.Date.DayOfWeek != DayOfWeek.Friday)
                    {
                        foundExpiration = true;

                        if (foundFirstExpiration)
                        {
                            double expirePrice = settlePrices.Single(x => x.Date == expirationThursday.Date).SettlePrice;

                            if (mondayOpen == null && tuesdayOpen == null)
                            {
                                throw new Exception("Error in data: Could not find Monday or Tuesday open");
                            }

                            double spread = mondayOpen != null?Math.Round(expirePrice - mondayOpen.Open, 2) : Math.Round(expirePrice - tuesdayOpen.Open, 2);

                            UpdateStats(spread);
                            PrintIntervalStats(expirationThursday, mondayOpen ?? tuesdayOpen, mondayOpen != null ? m_periodHigh : t_periodHigh, mondayOpen != null ? m_periodLow : t_periodLow, mondayOpen != null ? m_biggestMove : t_biggestMove, expirePrice, mondayOpen != null ? m_biggestMoveAmount : t_biggestMoveAmount);
                        }
                        else
                        {
                            foundFirstExpiration = true;
                        }

                        mondayOpen  = null;
                        tuesdayOpen = null;
                    }

                    if (day.Date.DayOfWeek == DayOfWeek.Friday)
                    {
                        foundExpiration = true;

                        expirationFriday = day;

                        if (foundFirstExpiration)
                        {
                            double expirePrice = settlePrices.Single(x => x.Date == expirationFriday.Date).SettlePrice;

                            if (mondayOpen == null && tuesdayOpen == null)
                            {
                                throw new Exception("Error in data: Could not find Monday or Tuesday open");
                            }

                            double spread = mondayOpen != null?Math.Round(expirePrice - mondayOpen.Open, 2) : Math.Round(expirePrice - tuesdayOpen.Open, 2);

                            UpdateStats(spread);
                            PrintIntervalStats(expirationFriday, mondayOpen ?? tuesdayOpen, mondayOpen != null ? m_periodHigh : t_periodHigh, mondayOpen != null ? m_periodLow : t_periodLow, mondayOpen != null ? m_biggestMove : t_biggestMove, expirePrice, mondayOpen != null ? m_biggestMoveAmount : t_biggestMoveAmount);
                        }
                        else
                        {
                            foundFirstExpiration = true;
                        }

                        mondayOpen  = null;
                        tuesdayOpen = null;
                    }
                }

                // Capture the Thursday before the third Friday of the month (in case of holiday)
                if (day.Date.Day >= 14 && day.Date.Day <= 20)
                {
                    if (day.Date.DayOfWeek == DayOfWeek.Thursday)
                    {
                        expirationThursday = day;
                    }
                }
            }

            watch.Stop();

            PrintFinalStats();

            Console.WriteLine("Analysis complete. Total execution time: {0}ms", watch.ElapsedMilliseconds);
            Console.WriteLine("\nPress any key to exit");
            Console.ReadLine();
        }
Beispiel #22
0
        private string checkTuning(BDAGraph graph, AnalysisParameters analysisParameters, BackgroundWorker worker)
        {
            TimeSpan timeout          = new TimeSpan();
            bool     done             = false;
            bool     locked           = false;
            int      frequencyRetries = 0;

            while (!done)
            {
                if (worker.CancellationPending)
                {
                    Logger.Instance.Write("Analysis abandoned by user");
                    return(null);
                }

                locked = graph.SignalLocked;
                if (!locked)
                {
                    int signalQuality = graph.SignalQuality;
                    if (signalQuality > 0)
                    {
                        Logger.Instance.Write("Signal not locked but signal quality > 0");
                        locked = true;
                        done   = true;
                    }
                    else
                    {
                        if (!analysisParameters.UseSignalPresent)
                        {
                            Logger.Instance.Write("Signal not locked and signal quality not > 0");
                            Thread.Sleep(1000);
                            timeout = timeout.Add(new TimeSpan(0, 0, 1));
                            done    = (timeout.TotalSeconds == analysisParameters.SignalLockTimeout);
                        }
                        else
                        {
                            bool signalPresent = graph.SignalPresent;
                            if (signalPresent)
                            {
                                Logger.Instance.Write("Signal present");
                                locked = true;
                                done   = true;
                            }
                            else
                            {
                                Logger.Instance.Write("Signal not present");
                                Thread.Sleep(1000);
                                timeout = timeout.Add(new TimeSpan(0, 0, 1));
                                done    = (timeout.TotalSeconds == analysisParameters.SignalLockTimeout);
                            }
                        }

                        if (done)
                        {
                            done = (frequencyRetries == 2);
                            if (done)
                            {
                                Logger.Instance.Write("<e> Failed to acquire signal");
                            }
                            else
                            {
                                Logger.Instance.Write("Retrying frequency");
                                timeout = new TimeSpan();
                                frequencyRetries++;
                            }
                        }
                    }
                }
                else
                {
                    Logger.Instance.Write("Signal acquired: lock is " + graph.SignalLocked + " quality is " + graph.SignalQuality + " strength is " + graph.SignalStrength);
                    done = true;
                }
            }

            if (locked)
            {
                return(null);
            }
            else
            {
                return("<e> The tuner failed to acquire a signal for frequency " + analysisParameters.ScanningFrequency.ToString());
            }
        }
        public void DisplayMINE(List<double>[] ListValueDesc)
        {
            int NumDesc = ListValueDesc.Length;

            double[,] CorrelationMatrix = new double[NumDesc, NumDesc];

            double[][] dataset1 = new double[NumDesc][];
            string[] VarNames = new string[NumDesc];

            for (int iDesc = 0; iDesc < NumDesc; iDesc++)
            {
                dataset1[iDesc] = new double[ListValueDesc[iDesc].Count];

                Array.Copy(ListValueDesc[iDesc].ToArray(), dataset1[iDesc], ListValueDesc[iDesc].Count);
                VarNames[iDesc] = iDesc.ToString();
            }
            data.Dataset data1 = new data.Dataset(dataset1, VarNames, 0);
            VarPairQueue Qu = new VarPairQueue(data1);

            for (int iDesc = 0; iDesc < NumDesc; iDesc++)
                for (int jDesc = 0; jDesc < iDesc; jDesc++)
                {
                    Qu.addPair(iDesc, jDesc);
                }
            Analysis ana = new Analysis(data1, Qu);
            AnalysisParameters param = new AnalysisParameters();
            double resparam = param.commonValsThreshold;

            //    analysis.results.FullResult Full = new analysis.results.FullResult();
            //List<analysis.results.BriefResult> Brief = new List<analysis.results.BriefResult>();
            //analysis.results.BriefResult Brief = new analysis.results.BriefResult();

            java.lang.Class t = java.lang.Class.forName("analysis.results.BriefResult");

            //java.lang.Class restype = null;
            ana.analyzePairs(t, param);

            //   object o =  (ana.varPairQueue().peek());
            //   ana.getClass();
            //  int resNum = ana.numResults();
            analysis.results.Result[] res = ana.getSortedResults();

            List<string[]> ListValues = new List<string[]>();
            List<string> NameX = CompleteScreening.ListDescriptors.GetListNameActives();

            List<bool> ListIscolor = new List<bool>();

            for (int Idx = 0; Idx < res.Length; Idx++)
            {
                ListValues.Add(res[Idx].toString().Split(','));
                ListValues[Idx][0] = NameX[int.Parse(ListValues[Idx][0])];
                ListValues[Idx][1] = NameX[int.Parse(ListValues[Idx][1])];
            }
            string[] ListNames = res[0].getHeader().Split(',');

            ListNames[0] = "Descriptor A";
            ListNames[1] = "Descriptor B";

            for (int NIdx = 0; NIdx < ListNames.Length; NIdx++)
            {
                if (NIdx == 0) ListIscolor.Add(false);
                else if (NIdx == 1) ListIscolor.Add(false);
                else ListIscolor.Add(true);

            }

            cDisplayTable DisplayForTable = new cDisplayTable("MINE Analysis results", ListNames, ListValues, GlobalInfo, true);
        }
Beispiel #24
0
        public void Run()
        {
            // define names
            string[] VarNames = new string[Input.Count];
            double[][] dataset = new double[Input.Count][];

            int Idx = 0;
            foreach (var item in Input)
            {
                dataset[Idx] = new double[item.Count];
                Array.Copy(item.ToArray(), dataset[Idx], item.Count);
                VarNames[Idx++] = item.Name;
            }

            //// define data
            data.Dataset data_Set = new data.Dataset(dataset, VarNames, 0);
            analysis.VarPairQueue Qu = new analysis.VarPairQueue(data_Set);

            for(int Idx_0=0;Idx_0<this.Input.Count;Idx_0++)
                for (int Idx_1 = 0; Idx_1 <= Idx_0; Idx_1++)
                    Qu.addPair(Idx_1,Idx_0);

            Analysis ana = new Analysis(data_Set, Qu);
            AnalysisParameters param = new AnalysisParameters();
            double resparam = param.commonValsThreshold;

            java.lang.Class t = java.lang.Class.forName("analysis.results.FullResult");

            if(this.Is_BriefReport)
                t = java.lang.Class.forName("analysis.results.BriefResult");

            ana.analyzePairs(t, param);
            analysis.results.Result[] res = ana.getSortedResults();

            List<string[]> ListValues = new List<string[]>();
            List<bool> ListIscolor = new List<bool>();

            for (Idx = 0; Idx < res.Length; Idx++)
            {
                ListValues.Add(res[Idx].toString().Split(','));
            }
            string[] ListNames = res[0].getHeader().Split(',');

            this.Output = new cListExtendedTable();

            for (int IdxTest = 2; IdxTest < ListNames.Length; IdxTest++)    // loop over all the different type of results
            {
                // remove useless informations
                if (ListNames[IdxTest] == "MI via KDE") continue;
                if (ListNames[IdxTest] == "Fisher") continue;
                if (ListNames[IdxTest] == "last value") continue;
                if (ListNames[IdxTest] == "MAS found at (X)") continue;
                if (ListNames[IdxTest] == "MAS found at (Y)") continue;
                if (ListNames[IdxTest] == "MICfound at (Y)") continue;

                double[,] TmpTable = new double[VarNames.Length, VarNames.Length];

                for (int i = 0; i < res.Length; i++)    // loop over the different pairs
                {
                    string TmpName0 = res[i].getXVar();
                    string TmpName1 = res[i].getYVar();
                    int Idx_var0 = 0;
                    int Idx_var1 = 0;

                    for (Idx_var0 = 0; Idx_var0 < VarNames.Length; Idx_var0++)
                        if(VarNames[Idx_var0]==TmpName0)
                            break;

                    for (Idx_var1 = 0; Idx_var1 < VarNames.Length; Idx_var1++)
                        if (VarNames[Idx_var1] == TmpName1)
                            break;

                    double Value=0;
                    double.TryParse(res[i].toString().Split(',')[IdxTest], out Value);
                    TmpTable[Idx_var0, Idx_var1] = TmpTable[Idx_var1, Idx_var0] = Value;
                }

                cExtendedTable NewTable = new cExtendedTable(TmpTable);
                NewTable.ListRowNames = new List<string>();
                for (int i = 0; i < VarNames.Length; i++)
                {
                    NewTable.ListRowNames.Add(VarNames[i]);
                    NewTable[i].Name = VarNames[i];

                    if (CurrentScreening != null)
                    {
                        int IdxDesc = cGlobalInfo.CurrentScreening.ListDescriptors.GetDescriptorIndex(NewTable[i].Name);
                        if (IdxDesc > -1)
                        {
                            NewTable[i].Tag = cGlobalInfo.CurrentScreening.ListDescriptors[IdxDesc];
                        }
                    }

                }

                NewTable.Name = ListNames[IdxTest];
                this.Output.Add(NewTable);
            }
        }
        private string checkTuning(BDAGraph graph, AnalysisParameters analysisParameters, BackgroundWorker worker)
        {
            TimeSpan timeout = new TimeSpan();
            bool done = false;
            bool locked = false;
            int frequencyRetries = 0;

            while (!done)
            {
                if (worker.CancellationPending)
                {
                    Logger.Instance.Write("Analysis abandoned by user");
                    return (null);
                }

                locked = graph.SignalLocked;
                if (!locked)
                {
                    int signalQuality = graph.SignalQuality;
                    if (signalQuality > 0)
                    {
                        Logger.Instance.Write("Signal not locked but signal quality > 0");
                        locked = true;
                        done = true;
                    }
                    else
                    {
                        if (!analysisParameters.UseSignalPresent)
                        {
                            Logger.Instance.Write("Signal not locked and signal quality not > 0");
                            Thread.Sleep(1000);
                            timeout = timeout.Add(new TimeSpan(0, 0, 1));
                            done = (timeout.TotalSeconds == analysisParameters.SignalLockTimeout);
                        }
                        else
                        {
                            bool signalPresent = graph.SignalPresent;
                            if (signalPresent)
                            {
                                Logger.Instance.Write("Signal present");
                                locked = true;
                                done = true;
                            }
                            else
                            {
                                Logger.Instance.Write("Signal not present");
                                Thread.Sleep(1000);
                                timeout = timeout.Add(new TimeSpan(0, 0, 1));
                                done = (timeout.TotalSeconds == analysisParameters.SignalLockTimeout);
                            }
                        }

                        if (done)
                        {
                            done = (frequencyRetries == 2);
                            if (done)
                                Logger.Instance.Write("<e> Failed to acquire signal");
                            else
                            {
                                Logger.Instance.Write("Retrying frequency");
                                timeout = new TimeSpan();
                                frequencyRetries++;
                            }
                        }
                    }
                }
                else
                {
                    Logger.Instance.Write("Signal acquired: lock is " + graph.SignalLocked + " quality is " + graph.SignalQuality + " strength is " + graph.SignalStrength);
                    done = true;
                }
            }

            if (locked)
                return (null);
            else
                return ("<e> The tuner failed to acquire a signal for frequency " + analysisParameters.ScanningFrequency.ToString());
        }