// takes meta data from the first series
        public ISignalSeries Create( IEnumerable<ISignalSeries> signals )
        {
            if ( !signals.Any() )
            {
                return SignalSeries.Null;
            }

            var dateSignalsMap = CreateDateSignalsMap( signals );

            int expectedSignalCount = signals.Count();
            InterpolateMissingSignals( dateSignalsMap, expectedSignalCount );

            var combinedSignals = GenerateCombinedSignals( dateSignalsMap );

            var masterInputSeries = signals.FirstOrDefault( s => s.Reference.Identifier.Type.Name == DatumNames.Prices );
            if ( masterInputSeries == null )
            {
                // then lets take the reference with max points
                var maxPoints = signals.Max( s => s.Count);
                masterInputSeries = signals.First( s => s.Count == maxPoints );
                // throw new Exception( "We could not find any signal series which seem to reference raw prices" );
            }
            var identifier = new SeriesIdentifier( masterInputSeries.Identifier.Owner, new ObjectDescriptor( "Combined" ), signals.Select( s => s.Identifier ).ToArray() );

            var series = new SignalSeries( masterInputSeries.Reference, identifier, combinedSignals );

            return series;
        }
        // takes meta data from the first series
        public ISignalSeries Create(IEnumerable <ISignalSeries> signals)
        {
            if (!signals.Any())
            {
                return(SignalSeries.Null);
            }

            var dateSignalsMap = CreateDateSignalsMap(signals);

            int expectedSignalCount = signals.Count();

            InterpolateMissingSignals(dateSignalsMap, expectedSignalCount);

            var combinedSignals = GenerateCombinedSignals(dateSignalsMap);

            var masterInputSeries = signals.FirstOrDefault(s => s.Reference.Identifier.Type.Name == DatumNames.Prices);

            if (masterInputSeries == null)
            {
                // then lets take the reference with max points
                var maxPoints = signals.Max(s => s.Count);
                masterInputSeries = signals.First(s => s.Count == maxPoints);
                // throw new Exception( "We could not find any signal series which seem to reference raw prices" );
            }
            var identifier = new SeriesIdentifier(masterInputSeries.Identifier.Owner, new ObjectDescriptor("Combined"), signals.Select(s => s.Identifier).ToArray());

            var series = new SignalSeries(masterInputSeries.Reference, identifier, combinedSignals);

            return(series);
        }
Example #3
0
        /**
         * Computes signal for terms.
         * @param term term
         * @return signal of term
         */
        public int[] computeSignal(String term)
        {
            double[] termC = this.intervals.getTermCountInIntervals(term);
            double[] tupleC = this.intervals.getTupleCountInIntervals();
            double[] inputData = new double[termC.Length];

            for (int i = 0; i < termC.Length; i++)
            {
                double tuplecc = tupleC[i] + 1.0;
                double termcc = termC[i] + 1.0;
                double value = Math.Log(tuplecc) - Math.Log(tuplecc / termcc);
                inputData[i] = value > 0.0 ? value : 1.0;
            }

            double[] kzResults = this.kzfilter.kz(inputData, this.windowSize, this.iterationCount);
            double[] kzaResults = this.kzfilter.kza(inputData, kzResults, this.windowSize, this.iterationCount);

            long[] times = new long[inputData.Length];
            for (int i = 0; i < times.Length; i++)
            {
                times[i] = (long)i;
            }

            //Create signal series
            SignalSeries signalSeries = new SignalSeries(kzaResults, times);
            //Apply continuous wavelet transformation
            WavCwt wavCwt = new WavCwt(signalSeries);
            //Apply tree map
            WavCwtTree tree = new WavCwtTree(wavCwt);
            if (tree.getBranches() != null)
            {
                //Find peaks of tree
                WavCwtTreePeaks wavCwtTreePeaks = new WavCwtTreePeaks(tree);

                //         if (term.equals("healthy")) {
                //            for (double d : inputData) {
                //               System.out.println(String.valueOf(d));
                //            }
                //            System.exit(0);
                //         }
                return wavCwtTreePeaks.getIEndTimes();
            }
            else
            {
                return new int[] { };
            }
        }
Example #4
0
 /// <summary>
 /// 添加标记
 /// </summary>
 /// <param name="panelID"></param>
 /// <param name="timeKey"></param>
 /// <param name="st"></param>
 public SignalSeries AddSignal(int panelID, string timeKey, SignalType st, Color stColor, double value, bool canDrag)
 {
     if (this.dicChartPanel.ContainsKey(panelID))
     {
         ChartPanel chartPanel = this.dicChartPanel[panelID];
         SignalSeries ss = new SignalSeries(value, st, stColor,canDrag);
         if (!chartPanel.SignalSeriesDic.ContainsKey(timeKey))
         {
             chartPanel.SignalSeriesDic[timeKey] = new List<SignalSeries>();
         }
         chartPanel.SignalSeriesDic[timeKey].Add(ss);
         return ss;
     }
     return null;
 }