public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var row    = new SequenceSingleSelectParameter("Source Label Row", x => x.Type != SequenceType.Numeric);
            var labels = new LabelSelectParameter("Labels where Value is to keep existing", true, row);

            return(new ProcParam <SequenceProcEnv>[] { row, labels });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var row    = new SequenceSingleSelectParameter("Sequence for Target Label", x => x.Type != SequenceType.Numeric);
            var labels = new LabelSelectParameter("Target Labels", true, row);

            return(new ProcParam <SequenceProcEnv>[] { row, labels });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            // 仮引数作成
            var label  = new SequenceSingleSelectParameter("Target", viewer => (viewer.Type & SequenceType.Label) != 0);
            var append = new BooleanParameter("Append Title to label");

            return(new ProcParam <SequenceProcEnv>[] { label, append });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var mode      = new SingleSelectParameter("Mode", new[] { "Per Time", "Per Correct Label Count", "Per Obtained Label Count" });
            var threshold = new NumberParameter("Threshold for Ratio of Label Coverage for Matching", 0.001M, 1, 3);

            threshold.Value = 0.001M;
            var correct = new SequenceSingleSelectParameter("Correct Label", (v) => v.Type != SequenceType.Numeric);

            return(new ProcParam <SequenceProcEnv>[] { mode, threshold, correct });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            List <ProcParam <SequenceProcEnv> > ret = new List <ProcParam <SequenceProcEnv> >();
            var label = new SequenceSingleSelectParameter("Target");

            ret.Add(label);
            var sameOnly = new BooleanParameter("Same Label Text Only");

            sameOnly.Value = true;
            ret.Add(sameOnly);
            return(ret);
        }
        public SequenceData Operate(IList <ProcParam <SequenceProcEnv> > args, SequenceProcEnv env)
        {
            SequenceSingleSelectParameter operand = args[0] as SequenceSingleSelectParameter;
            TimeSeriesValues ret = new TimeSeriesValues("InnerProduct");

            int count = Math.Min(env.SelectedSequence.Values.ColumnCount, operand.Value.Values.ColumnCount);

            using (IEnumerator <KeyValuePair <decimal, decimal?[]> > one = env.SelectedSequence.Values.Enumerate().GetEnumerator())
                using (IEnumerator <KeyValuePair <decimal, decimal?[]> > another = operand.Value.Values.Enumerate().GetEnumerator()) {
                    bool oneAlive     = one.MoveNext();
                    bool anotherAlive = another.MoveNext();
                    while (oneAlive && anotherAlive)
                    {
                        decimal?value = 0;
                        for (int i = 0; i < count; i++)
                        {
                            if (one.Current.Value[i].HasValue && another.Current.Value[i].HasValue)
                            {
                                value = value.Value + one.Current.Value[i].Value * another.Current.Value[i].Value;
                            }
                            else
                            {
                                value = null;
                                break;
                            }
                        }
                        // 後にある時刻のところに値を入れる
                        // 前にある方を進める
                        if (one.Current.Key < another.Current.Key)
                        {
                            ret.SetValue(another.Current.Key, value);
                            oneAlive = one.MoveNext();
                        }
                        else
                        {
                            ret.SetValue(one.Current.Key, value);
                            anotherAlive = another.MoveNext();
                        }
                    }
                }
            return(new SequenceData(ret, null, PathEx.GiveName("InnerProduct", env.SelectedSequence.Title, operand.Value.Title)));
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            SequenceSingleSelectParameter operand = new SequenceSingleSelectParameter("Other operand", (v) => (v.Type & SequenceType.Numeric) != 0);

            return(new ProcParam <SequenceProcEnv>[] { operand });
        }