public SequenceData Operate(IList <ProcParam <SequenceProcEnv> > args, SequenceProcEnv env)
        {
            ICSLabelSequence labelSequence = env.SelectedSequence.GetLabelSequence();

            if (labelSequence == null)
            {
                MessageBox.Show("ラベルが空でした", this.GetType().ToString());
                return(null);
            }
            if (env.Controller.WholeEndTime > 0)
            {
                labelSequence.SetLabel(0, env.Controller.WholeEndTime, "", true);
            }
            TimeSeriesValues         sequence  = new TimeSeriesValues("value");
            Dictionary <string, int> indexInfo = new Dictionary <string, int>();
            var labelTexts = labelSequence.GetLabelTexts(true);
            int count      = 0;

            foreach (var labelText in labelTexts)
            {
                indexInfo[labelText] = count;
                count++;
            }
            sequence.SetValue(0, new decimal?[1]);
            sequence.SetValue(labelSequence.Duration, new decimal?[1]);
            foreach (var label in labelSequence.EnumerateLabels())
            {
                var value = new decimal?[1] {
                    indexInfo[label.LabelText]
                };
                sequence.SetValue(label.BeginTime, value);
            }
            SequenceData ret = new SequenceData(sequence, null, PathEx.GiveName("labelNum", env.SelectedSequence.Title));

            ret.Type = SequenceType.Numeric;
            return(ret);
        }
        public SequenceData Operate(IList <ProcParam <SequenceProcEnv> > args, SequenceProcEnv env)
        {
            var target           = ((LabelSelectParameter)args[0]).Value;
            var length           = ((NumberParameter)args[1]).Value;
            var action           = ((SingleSelectParameter)args[2]).Value;
            var border           = ((BooleanParameter)args[3]).Value;
            var glue             = ((SingleSelectParameter)args[4]).Value;
            ICSLabelSequence ret = env.SelectedSequence.GetLabelSequence();
            var    names         = ret.GetLabelTexts();
            string tmpLabel      = "tmpToRemove";

            while (names.Contains(tmpLabel))
            {
                tmpLabel += "-";
            }
            foreach (var label in ret.EnumerateLabels().Where(l => target.Contains(l.LabelText)).ToList())
            {
                if (action == 0)
                {
                    if (label.Duration < length || (border && label.Duration == length))
                    {
                        ret.SetLabel(label.BeginTime, label.EndTime, tmpLabel);
                    }
                }
                else
                {
                    if (label.Duration > length || (border && label.Duration == length))
                    {
                        ret.SetLabel(label.BeginTime, label.EndTime, tmpLabel);
                    }
                }
            }
            ret.RemoveBorderSameAsPrevious();
            var labels = ret.EnumerateLabels().ToList();

            for (int i = 0; i < labels.Count; i++)
            {
                if (labels[i].LabelText == tmpLabel)
                {
                    string to = "";
                    switch (glue)
                    {
                    case 1:
                        if (i > 0 && i < labels.Count - 1)
                        {
                            if (labels[i - 1].LabelText == labels[i + 1].LabelText)
                            {
                                to = labels[i - 1].LabelText;
                            }
                        }
                        break;

                    case 2:
                        if (i > 0)
                        {
                            to = labels[i - 1].LabelText;
                        }
                        break;

                    case 3:
                        if (i < labels.Count - 1)
                        {
                            to = labels[i + 1].LabelText;
                        }
                        break;
                    }
                    ret.SetLabel(labels[i].BeginTime, labels[i].EndTime, to);
                }
            }
            ret.RemoveBorderSameAsPrevious();
            return(SequenceData.FromLabelSequence(ret, PathEx.GiveName("Filtered", env.SelectedSequence.Title, (action == 0 ? "Lt" : "Gt") + length.ToString())));
        }