// 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); }
/** * 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[] { }; } }
/// <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; }