Пример #1
0
        /// <summary>
        /// This executes the discarding of reads on a background thread
        /// </summary>
        /// <param name="sender">BackgoundWorker instance</param>
        /// <param name="e">DoWorkEvent arguments</param>
        private void DoDiscardReads(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            if (worker != null)
            {
                try
                {
                    Discarder      myDiscarder = null;
                    FilterToolArgs args        = null;

                    if (e.Argument is DiscardByLengthArgs)
                    {
                        args        = e.Argument as DiscardByLengthArgs;
                        myDiscarder = ((DiscardByLengthArgs)args).discarder;

                        // If possible, verify that the discard length is not larger than the maximum read length.
                        MessageBoxResult tooLargeReadLength = TryConfirmLargeReadLength(args.InputInfo.Filename, (myDiscarder as DiscardByLength).MinLengthThreshold);
                        if (tooLargeReadLength == MessageBoxResult.Cancel)
                        {
                            e.Cancel = true;
                            return;
                        }
                    }
                    else if (e.Argument is DiscardByMeanQualityArgs)
                    {
                        args        = e.Argument as DiscardByMeanQualityArgs;
                        myDiscarder = (e.Argument as DiscardByMeanQualityArgs).discarder;
                    }
                    else
                    {
                        args        = e.Argument as DiscardByRegexArgs;
                        myDiscarder = (e.Argument as DiscardByRegexArgs).discarder;
                    }
                    myDiscarder.DiscardReads();

                    // Report results
                    string report = string.Format(Resource.DiscardReport, myDiscarder.DiscardCount, myDiscarder.Counted);

                    this.OpenInExplorer(args.OutputFilename);

                    e.Result = report.ToString();
                }
                catch (Exception ex)
                {
                    e.Cancel = true;
                    if (worker.CancellationPending)
                    {
                        return;
                    }
                    MessageBox.Show(ex.TargetSite + ": " + ex.Message);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// This event is raised when the user selects to run the discard tool
        /// after specifying all the required input parameters.
        /// </summary>
        /// <param name="sender">DiscardToolDialog window</param>
        /// <param name="e">Discard arguments</param>
        private void OnDiscardRunClick(object sender, FilterToolArgs e)
        {
            run = new RunProgressDialog(true);

            run.ProgressText = "Discarding reads...";
            run.StartRun    += new EventHandler(this.OnRunDiscardStarted);
            run.CancelRun   += new EventHandler(this.OnCancelAnalysisClicked);

            run.Args       = e;
            run.Owner      = this;
            this.IsEnabled = false;
            run.ShowDialog();
            this.IsEnabled = true;
        }
Пример #3
0
        /// <summary>
        /// This executes the trimming of reads as a background thread.
        /// </summary>
        /// <param name="sender">BackgoundWorker instance</param>
        /// <param name="e">DoWorkEvent arguments</param>
        private void DoTrimReads(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;

            if (worker != null)
            {
                try
                {
                    Trimmer        myTrimmer = null;
                    FilterToolArgs args      = null;

                    if (e.Argument is TrimByLengthArgs)
                    {
                        args      = e.Argument as TrimByLengthArgs;
                        myTrimmer = (e.Argument as TrimByLengthArgs).trimmer;

                        // If possible, verify that the trim length is not larger than the maximum read length, if it
                        // is known (e.g. if a QC analysis was run just before Trim was called).
                        if ((myTrimmer as TrimByLength).TrimLength >= 1)
                        {
                            MessageBoxResult tooLargeReadLength = TryConfirmLargeReadLength(args.InputInfo.Filename,
                                                                                            Convert.ToInt64(Math.Round((myTrimmer as TrimByLength).TrimLength)));
                            if (tooLargeReadLength == MessageBoxResult.Cancel)
                            {
                                e.Cancel = true;
                                return;
                            }
                        }
                    }
                    else if (e.Argument is TrimByQualityArgs)
                    {
                        args      = e.Argument as TrimByQualityArgs;
                        myTrimmer = (e.Argument as TrimByQualityArgs).trimmer;
                    }
                    else
                    {
                        args      = e.Argument as TrimByRegexArgs;
                        myTrimmer = (e.Argument as TrimByRegexArgs).trimmer;
                    }
                    myTrimmer.Worker     = worker;
                    myTrimmer.WorkerArgs = e;
                    myTrimmer.TrimAll();

                    // Report results
                    StringBuilder report = new StringBuilder();
                    report.AppendLine(string.Format(Resource.TrimReport, myTrimmer.TrimCount, myTrimmer.Counted));
                    report.AppendLine(string.Format(Resource.DiscardReport, myTrimmer.DiscardCount, myTrimmer.Counted));

                    this.OpenInExplorer(args.OutputFilename);

                    e.Result = report.ToString();
                }
                catch (ArgumentNullException ex)
                {
                    e.Cancel = true;
                    if (worker.CancellationPending)
                    {
                        return;
                    }
                    MessageBox.Show(ex.TargetSite + ": " + ex.Message);
                }
                catch (Exception ex)
                {
                    e.Cancel = true;
                    if (worker.CancellationPending)
                    {
                        return;
                    }
                    MessageBox.Show(ex.TargetSite + ": " + ex.Message);
                }
            }
        }