Index: trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- trunk/sources/HeuristicLab 3.3.sln	(revision 7093)
+++ trunk/sources/HeuristicLab 3.3.sln	(revision 7097)
@@ -81,5 +81,4 @@
 		{E10F395F-C8A6-48AD-B470-9AA7A1F43809} = {E10F395F-C8A6-48AD-B470-9AA7A1F43809}
 		{B7A64A60-B538-479F-9C47-A3180C458F6C} = {B7A64A60-B538-479F-9C47-A3180C458F6C}
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB} = {07486E68-1517-4B9D-A58D-A38E99AE71AB}
 		{4AE3FC69-C575-42D2-BC46-0FAD5850EFC5} = {4AE3FC69-C575-42D2-BC46-0FAD5850EFC5}
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7} = {56F9106A-079F-4C61-92F6-86A84C2D84B7}
@@ -93,5 +92,4 @@
 		{70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC} = {70DFD984-B1D9-46FE-8EB7-4DE92D71A9FC}
 		{06D4A186-9319-48A0-BADE-A2058D462EEA} = {06D4A186-9319-48A0-BADE-A2058D462EEA}
-		{5B9B9E8C-2706-43C2-80B8-A08341E431F7} = {5B9B9E8C-2706-43C2-80B8-A08341E431F7}
 		{997F018D-AEA2-4F21-9301-82FAF6A5612D} = {997F018D-AEA2-4F21-9301-82FAF6A5612D}
 		{D767C38D-8014-46B0-9A32-03A3AECCE34A} = {D767C38D-8014-46B0-9A32-03A3AECCE34A}
@@ -116,5 +114,4 @@
 		{66D249C3-A01D-42A8-82A2-919BC8EC3D83} = {66D249C3-A01D-42A8-82A2-919BC8EC3D83}
 		{E4CFB0C3-0589-4893-B38E-8BEDF885C765} = {E4CFB0C3-0589-4893-B38E-8BEDF885C765}
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962} = {E6CB1FC5-78EC-4EB8-BF12-35303C36F962}
 		{79271BC8-4446-40E2-BB89-9BE4E17174FE} = {79271BC8-4446-40E2-BB89-9BE4E17174FE}
 		{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086} = {7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}
@@ -299,8 +296,4 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.QuadraticAssignment.Algorithms-3.3", "HeuristicLab.Problems.QuadraticAssignment.Algorithms\3.3\HeuristicLab.Problems.QuadraticAssignment.Algorithms-3.3.csproj", "{5B9B9E8C-2706-43C2-80B8-A08341E431F7}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis-3.4", "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis-3.4.csproj", "{07486E68-1517-4B9D-A58D-A38E99AE71AB}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4", "HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4.csproj", "{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}"
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{C89ADA03-1DAC-406A-9C1F-128CC9986D80}"
@@ -1441,28 +1434,4 @@
 		{5B9B9E8C-2706-43C2-80B8-A08341E431F7}.Release|x86.ActiveCfg = Release|x86
 		{5B9B9E8C-2706-43C2-80B8-A08341E431F7}.Release|x86.Build.0 = Release|x86
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Debug|x64.ActiveCfg = Debug|x64
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Debug|x64.Build.0 = Debug|x64
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Debug|x86.ActiveCfg = Debug|x86
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Debug|x86.Build.0 = Debug|x86
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Release|Any CPU.Build.0 = Release|Any CPU
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Release|x64.ActiveCfg = Release|x64
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Release|x64.Build.0 = Release|x64
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Release|x86.ActiveCfg = Release|x86
-		{07486E68-1517-4B9D-A58D-A38E99AE71AB}.Release|x86.Build.0 = Release|x86
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Debug|x64.ActiveCfg = Debug|x64
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Debug|x64.Build.0 = Debug|x64
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Debug|x86.ActiveCfg = Debug|x86
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Debug|x86.Build.0 = Debug|x86
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|Any CPU.Build.0 = Release|Any CPU
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x64.ActiveCfg = Release|x64
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x64.Build.0 = Release|x64
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x86.ActiveCfg = Release|x86
-		{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}.Release|x86.Build.0 = Release|x86
 		{B62872C1-6752-4758-9823-751A2D28C388}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{B62872C1-6752-4758-9823-751A2D28C388}.Debug|Any CPU.Build.0 = Debug|Any CPU
Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 7093)
+++ trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/HeuristicLab.Algorithms.DataAnalysis-3.4.csproj	(revision 7097)
@@ -144,5 +144,4 @@
     </Compile>
     <Compile Include="Linear\AlglibUtil.cs" />
-    <Compile Include="Linear\LinearTimeSeriesPrognosis.cs" />
     <Compile Include="Linear\LinearDiscriminantAnalysis.cs" />
     <Compile Include="Linear\LinearRegression.cs">
@@ -248,9 +247,4 @@
       <Private>False</Private>
     </ProjectReference>
-    <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis-3.4.csproj">
-      <Project>{07486E68-1517-4B9D-A58D-A38E99AE71AB}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis-3.4</Name>
-      <Private>False</Private>
-    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Problems.DataAnalysis.Symbolic\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj">
       <Project>{3D28463F-EC96-4D82-AFEE-38BE91A0CA00}</Project>
Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/AlglibUtil.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/AlglibUtil.cs	(revision 7093)
+++ trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/AlglibUtil.cs	(revision 7097)
@@ -27,43 +27,20 @@
   public static class AlglibUtil {
     public static double[,] PrepareInputMatrix(Dataset dataset, IEnumerable<string> variables, IEnumerable<int> rows) {
-      return PrepareInputMatrix(dataset, variables, rows, new int[] { 0 });
-    }
+      List<string> variablesList = variables.ToList();
+      List<int> rowsList = rows.ToList();
 
-    public static double[,] PrepareInputMatrix(Dataset dataset, IEnumerable<string> variables, IEnumerable<int> rows, IEnumerable<int> lags) {
-      int maxLag = lags.Max();
-
-      // drop last variable (target variable)
-      List<string> inputVariablesList = variables
-        .Reverse()
-        .Skip(1)
-        .Reverse()
-        .ToList();
-      string targetVariable = variables.Last();
-      List<int> rowsList = rows.ToList();
-      int nRows = rowsList.Count - maxLag;
-      double[,] matrix = new double[nRows, inputVariablesList.Count * lags.Count() + 1];
+      double[,] matrix = new double[rowsList.Count, variablesList.Count];
 
       int col = 0;
-      int row = 0;
-      // input variables
-      foreach (int lag in lags) {
-        foreach (string column in inputVariablesList) {
-          var values = dataset.GetDoubleValues(column, rows.Select(x => x - lag).Take(nRows));
-          row = 0;
-          foreach (var value in values) {
-            if (row >= 0) {
-              matrix[row, col] = value;
-            }
-            row++;
-          }
-          col++;
+      foreach (string column in variables) {
+        var values = dataset.GetDoubleValues(column, rows);
+        int row = 0;
+        foreach (var value in values) {
+          matrix[row, col] = value;
+          row++;
         }
+        col++;
       }
-      // target variable
-      row = 0;
-      foreach (var value in dataset.GetDoubleValues(targetVariable, rows).Take(nRows)) {
-        matrix[row, col] = value;
-        row++;
-      }
+
       return matrix;
     }
Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearTimeSeriesPrognosis.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Linear/LinearTimeSeriesPrognosis.cs	(revision 7093)
+++ 	(revision )
@@ -1,138 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using HeuristicLab.Common;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
-using HeuristicLab.Optimization;
-using HeuristicLab.Parameters;
-using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
-using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Problems.DataAnalysis.Symbolic;
-using HeuristicLab.Problems.DataAnalysis.Symbolic.Regression;
-using HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis;
-
-namespace HeuristicLab.Algorithms.DataAnalysis {
-  /// <summary>
-  /// Linear time series prognosis data analysis algorithm.
-  /// </summary>
-  [Item("Linear Time Series Prognosis", "Linear time series prognosis data analysis algorithm (wrapper for ALGLIB).")]
-  [Creatable("Data Analysis")]
-  [StorableClass]
-  public sealed class LinearTimeSeriesPrognosis : FixedDataAnalysisAlgorithm<ITimeSeriesPrognosisProblem> {
-    private const string LinearTimeSeriesPrognosisModelResultName = "Linear time-series prognosis solution";
-    private const string MaximalLagParameterName = "MaximalLag";
-
-    public IFixedValueParameter<IntValue> MaximalLagParameter {
-      get { return (IFixedValueParameter<IntValue>)Parameters[MaximalLagParameterName]; }
-    }
-
-    public int MaximalLag {
-      get { return MaximalLagParameter.Value.Value; }
-      set { MaximalLagParameter.Value.Value = value; }
-    }
-
-    [StorableConstructor]
-    private LinearTimeSeriesPrognosis(bool deserializing) : base(deserializing) { }
-    private LinearTimeSeriesPrognosis(LinearTimeSeriesPrognosis original, Cloner cloner)
-      : base(original, cloner) {
-    }
-    public LinearTimeSeriesPrognosis()
-      : base() {
-      Parameters.Add(new FixedValueParameter<IntValue>(MaximalLagParameterName,
-                                                       "The maximal lag to use for auto-regressive terms.",
-                                                       new IntValue(1)));
-      Problem = new TimeSeriesPrognosisProblem();
-    }
-    [StorableHook(HookType.AfterDeserialization)]
-    private void AfterDeserialization() { }
-
-    public override IDeepCloneable Clone(Cloner cloner) {
-      return new LinearTimeSeriesPrognosis(this, cloner);
-    }
-
-    #region linear regression
-    protected override void Run() {
-      double rmsError, cvRmsError;
-      var solution = CreateLinearTimeSeriesPrognosisSolution(Problem.ProblemData, MaximalLag, out rmsError, out cvRmsError);
-      Results.Add(new Result(LinearTimeSeriesPrognosisModelResultName, "The linear time-series prognosis solution.", solution));
-      Results.Add(new Result("Root mean square error", "The root of the mean of squared errors of the linear time-series prognosis solution on the training set.", new DoubleValue(rmsError)));
-      Results.Add(new Result("Estimated root mean square error (cross-validation)", "The estimated root of the mean of squared errors of the linear time-series prognosis solution via cross validation.", new DoubleValue(cvRmsError)));
-    }
-
-    public static ISymbolicTimeSeriesPrognosisSolution CreateLinearTimeSeriesPrognosisSolution(ITimeSeriesPrognosisProblemData problemData, int maximalLag, out double rmsError, out double cvRmsError) {
-      Dataset dataset = problemData.Dataset;
-      string targetVariable = problemData.TargetVariable;
-      IEnumerable<string> allowedInputVariables = problemData.AllowedInputVariables;
-      IEnumerable<int> rows = problemData.TrainingIndizes;
-      IEnumerable<int> lags = Enumerable.Range(1, maximalLag);
-      double[,] inputMatrix = AlglibUtil.PrepareInputMatrix(dataset, allowedInputVariables.Concat(new string[] { targetVariable }), rows, lags);
-      if (inputMatrix.Cast<double>().Any(x => double.IsNaN(x) || double.IsInfinity(x)))
-        throw new NotSupportedException("Linear time-series prognosis does not support NaN or infinity values in the input dataset.");
-
-      alglib.linearmodel lm = new alglib.linearmodel();
-      alglib.lrreport ar = new alglib.lrreport();
-      int nRows = inputMatrix.GetLength(0);
-      int nFeatures = inputMatrix.GetLength(1) - 1;
-      double[] coefficients = new double[nFeatures + 1]; // last coefficient is for the constant
-
-      int retVal = 1;
-      alglib.lrbuild(inputMatrix, nRows, nFeatures, out retVal, out lm, out ar);
-      if (retVal != 1) throw new ArgumentException("Error in calculation of linear time series prognosis solution");
-      rmsError = ar.rmserror;
-      cvRmsError = ar.cvrmserror;
-
-      alglib.lrunpack(lm, out coefficients, out nFeatures);
-
-      ISymbolicExpressionTree tree = new SymbolicExpressionTree(new ProgramRootSymbol().CreateTreeNode());
-      ISymbolicExpressionTreeNode startNode = new StartSymbol().CreateTreeNode();
-      tree.Root.AddSubtree(startNode);
-      ISymbolicExpressionTreeNode addition = new Addition().CreateTreeNode();
-      startNode.AddSubtree(addition);
-
-      int col = 0;
-      foreach (string column in allowedInputVariables) {
-        foreach (int lag in lags) {
-          LaggedVariableTreeNode vNode =
-            (LaggedVariableTreeNode)new HeuristicLab.Problems.DataAnalysis.Symbolic.LaggedVariable().CreateTreeNode();
-          vNode.VariableName = column;
-          vNode.Weight = coefficients[col];
-          vNode.Lag = -lag;
-          addition.AddSubtree(vNode);
-          col++;
-        }
-      }
-
-      ConstantTreeNode cNode = (ConstantTreeNode)new Constant().CreateTreeNode();
-      cNode.Value = coefficients[coefficients.Length - 1];
-      addition.AddSubtree(cNode);
-
-      SymbolicTimeSeriesPrognosisSolution solution = new SymbolicTimeSeriesPrognosisSolution(new SymbolicTimeSeriesPrognosisModel(tree, new SymbolicDataAnalysisExpressionTreeInterpreter()), (ITimeSeriesPrognosisProblemData)problemData.Clone());
-      solution.Model.Name = "Linear Time-Series Prognosis Model";
-      return solution;
-    }
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Plugin.cs.frame
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Plugin.cs.frame	(revision 7093)
+++ trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/Plugin.cs.frame	(revision 7097)
@@ -42,5 +42,4 @@
   [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic.Classification", "3.4")]
   [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic.Regression", "3.4")]
-  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis", "3.4")]
   public class HeuristicLabAlgorithmsDataAnalysisPlugin : PluginBase {
   }
Index: trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs	(revision 7093)
+++ trunk/sources/HeuristicLab.Algorithms.DataAnalysis/3.4/SupportVectorMachine/SupportVectorRegression.cs	(revision 7097)
@@ -143,4 +143,5 @@
       parameter.Probability = false;
 
+
       SVM.Problem problem = SupportVectorMachineUtil.CreateSvmProblem(dataset, targetVariable, allowedInputVariables, rows);
       SVM.RangeTransform rangeTransform = SVM.RangeTransform.Compute(problem);
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionErrorCharacteristicsCurveView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionErrorCharacteristicsCurveView.cs	(revision 7093)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views/3.4/SymbolicRegressionSolutionErrorCharacteristicsCurveView.cs	(revision 7097)
@@ -67,10 +67,4 @@
       }
 
-      var laggedVariables = Content.Model.SymbolicExpressionTree.IterateNodesPostfix()
-        .OfType<LaggedVariableTreeNode>()
-        .Select(n => n.Lag)
-        .Where(l => l < 0);
-      if (laggedVariables.Any()) throw new NotSupportedException("The symbolic regression solution contains lagged variables.");
-
       //check inputVariables used in the symbolic regression model
       var usedVariables =
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs	(revision 7093)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs	(revision 7097)
@@ -194,11 +194,4 @@
       Symbols.Where(s => s.Name == TimeSeriesSymbolsName).First().Enabled = false;
     }
-
-    public void ConfigureAsDefaultTimeSeriesPrognosisGrammar() {
-      Symbols.Where(s => s is Variable).First().Enabled = false;
-      Symbols.Where(s => s.Name == TrigonometricFunctionsName).First().Enabled = false;
-      Symbols.Where(s => s.Name == PowerFunctionsName).First().Enabled = false;
-      Symbols.Where(s => s.Name == ConditionalSymbolsName).First().Enabled = false;
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 7093)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj	(revision 7097)
@@ -122,35 +122,4 @@
       <DependentUpon>ClassificationEnsembleSolutionModelView.cs</DependentUpon>
     </Compile>
-    <Compile Include="Plugin.cs" />
-    <Compile Include="Solution Views\TimeSeriesPrognosisSolutionView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="Solution Views\TimeSeriesPrognosisSolutionView.Designer.cs">
-      <DependentUpon>TimeSeriesPrognosisSolutionView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionErrorCharacteristicsCurveView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionErrorCharacteristicsCurveView.Designer.cs">
-      <DependentUpon>TimeSeriesPrognosisSolutionErrorCharacteristicsCurveView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionLineChartView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionLineChartView.Designer.cs">
-      <DependentUpon>TimeSeriesPrognosisSolutionLineChartView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionPrognosedValuesView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionPrognosedValuesView.Designer.cs">
-      <DependentUpon>TimeSeriesPrognosisSolutionPrognosedValuesView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionScatterPlotView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="TimeSeriesPrognosis\TimeSeriesPrognosisSolutionScatterPlotView.Designer.cs">
-      <DependentUpon>TimeSeriesPrognosisSolutionScatterPlotView.cs</DependentUpon>
-    </Compile>
     <Compile Include="DataAnalysisSolutionEvaluationView.cs">
       <SubType>UserControl</SubType>
@@ -159,4 +128,5 @@
       <DependentUpon>DataAnalysisSolutionEvaluationView.cs</DependentUpon>
     </Compile>
+    <Compile Include="Plugin.cs" />
     <Compile Include="Regression\RegressionSolutionErrorCharacteristicsCurveView.cs">
       <SubType>UserControl</SubType>
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/TimeSeriesPrognosisSolutionView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/TimeSeriesPrognosisSolutionView.Designer.cs	(revision 7093)
+++ 	(revision )
@@ -1,87 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Problems.DataAnalysis.Views {
-  partial class TimeSeriesPrognosisSolutionView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
-      this.splitContainer.Panel1.SuspendLayout();
-      this.splitContainer.Panel2.SuspendLayout();
-      this.splitContainer.SuspendLayout();
-      this.itemsGroupBox.SuspendLayout();
-      this.detailsGroupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer
-      // 
-      // 
-      // itemsGroupBox
-      // 
-      this.itemsGroupBox.Text = "Time Series Prognosis Solution";
-      // 
-      // addButton
-      // 
-      this.toolTip.SetToolTip(this.addButton, "Add");
-      // 
-      // removeButton
-      // 
-      this.toolTip.SetToolTip(this.removeButton, "Remove");
-      // 
-      // TimeSeriesPrognosisSolutionView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "TimeSeriesPrognosisSolutionView";
-      this.splitContainer.Panel1.ResumeLayout(false);
-      this.splitContainer.Panel2.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit();
-      this.splitContainer.ResumeLayout(false);
-      this.itemsGroupBox.ResumeLayout(false);
-      this.detailsGroupBox.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/TimeSeriesPrognosisSolutionView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/TimeSeriesPrognosisSolutionView.cs	(revision 7093)
+++ 	(revision )
@@ -1,53 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Problems.DataAnalysis.Views {
-  [View("TimeSeriesPrognosisnSolution View")]
-  [Content(typeof(TimeSeriesPrognosisSolutionBase), false)]
-  public partial class TimeSeriesPrognosisSolutionView : DataAnalysisSolutionView {
-    public TimeSeriesPrognosisSolutionView() {
-      InitializeComponent();
-    }
-
-    public new TimeSeriesPrognosisSolutionBase Content {
-      get { return (TimeSeriesPrognosisSolutionBase)base.Content; }
-      set { base.Content = value; }
-    }
-
-    #region drag and drop
-    protected override void itemsListView_DragEnter(object sender, DragEventArgs e) {
-      validDragOperation = false;
-      if (ReadOnly) return;
-
-      var dropData = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat);
-      if (dropData is TimeSeriesPrognosisProblemData) validDragOperation = true;
-      else if (dropData is IValueParameter) {
-        var param = (IValueParameter)dropData;
-        if (param.Value is TimeSeriesPrognosisProblemData) validDragOperation = true;
-      }
-    }
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj	(revision 7093)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/HeuristicLab.Problems.DataAnalysis-3.4.csproj	(revision 7097)
@@ -129,8 +129,4 @@
     </Compile>
     <Compile Include="Implementation\Regression\RegressionEnsembleSolution.cs" />
-    <Compile Include="Implementation\TimeSeriesPrognosis\TimeSeriesPrognosisProblem.cs" />
-    <Compile Include="Implementation\TimeSeriesPrognosis\TimeSeriesPrognosisProblemData.cs" />
-    <Compile Include="Implementation\TimeSeriesPrognosis\TimeSeriesPrognosisSolution.cs" />
-    <Compile Include="Implementation\TimeSeriesPrognosis\TimeSeriesPrognosisSolutionBase.cs" />
     <Compile Include="Interfaces\Classification\IClassificationEnsembleModel.cs">
       <SubType>Code</SubType>
@@ -145,11 +141,5 @@
     <Compile Include="Interfaces\Regression\IRegressionEnsembleSolution.cs" />
     <Compile Include="Implementation\Regression\RegressionSolutionBase.cs" />
-    <Compile Include="Interfaces\TimeSeriesPrognosis\IOnlineTimeSeriesCalculator.cs" />
-    <Compile Include="Interfaces\TimeSeriesPrognosis\ITimeSeriesPrognosisModel.cs" />
-    <Compile Include="Interfaces\TimeSeriesPrognosis\ITimeSeriesPrognosisProblem.cs" />
-    <Compile Include="Interfaces\TimeSeriesPrognosis\ITimeSeriesPrognosisProblemData.cs" />
-    <Compile Include="Interfaces\TimeSeriesPrognosis\ITimeSeriesPrognosisSolution.cs" />
     <Compile Include="OnlineCalculators\NormalizedGiniCalculator.cs" />
-    <Compile Include="OnlineCalculators\OnlineDirectionalSymmetryCalculator.cs" />
     <Compile Include="OnlineCalculators\OnlineMeanAbsoluteErrorCalculator.cs" />
     <Compile Include="OnlineCalculators\OnlineLinearScalingParameterCalculator.cs" />
@@ -187,6 +177,4 @@
     <Compile Include="OnlineCalculators\OnlinePearsonsRSquaredCalculator.cs" />
     <Compile Include="Implementation\Regression\RegressionSolution.cs" />
-    <Compile Include="OnlineCalculators\OnlineTheilsUStatisticCalculator.cs" />
-    <Compile Include="OnlineCalculators\OnlineWeightedDirectionalSymmetryCalculator.cs" />
     <Compile Include="Plugin.cs" />
     <Compile Include="TableFileParser.cs" />
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineDirectionalSymmetryCalculator.cs	(revision 7093)
+++ 	(revision )
@@ -1,113 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using HeuristicLab.Common;
-
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator {
-    private int n;
-    private int nCorrect;
-
-    public double DirectionalSymmetry {
-      get {
-        if (n < 1) return 0.0;
-        return (double)nCorrect / n;
-      }
-    }
-
-    public OnlineDirectionalSymmetryCalculator() {
-      Reset();
-    }
-
-    public double Value {
-      get { return DirectionalSymmetry; }
-    }
-
-    private OnlineCalculatorError errorState;
-    public OnlineCalculatorError ErrorState {
-      get { return errorState; }
-    }
-
-    public void Add(double startValue, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation) {
-      if (double.IsNaN(startValue) || (errorState & OnlineCalculatorError.InvalidValueAdded) > 0) {
-        errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-      } else {
-        var actualEnumerator = actualContinuation.GetEnumerator();
-        var predictedEnumerator = predictedContinuation.GetEnumerator();
-        double prevActual = startValue;
-        double prevPredicted = startValue;
-        while (actualEnumerator.MoveNext() & predictedEnumerator.MoveNext() & errorState != OnlineCalculatorError.InvalidValueAdded) {
-          double actual = actualEnumerator.Current;
-          double predicted = predictedEnumerator.Current;
-          if (double.IsNaN(actual) || double.IsNaN(predicted)) {
-            errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-          } else {
-            // count a prediction correct if the trend (positive/negative/no change) is predicted correctly
-            if ((actual - prevActual) * (predicted - prevPredicted) > 0.0 ||
-                (actual - prevActual).IsAlmost(predicted - prevPredicted)
-              ) {
-              nCorrect++;
-            }
-            n++;
-          }
-        }
-        // check if both enumerators are at the end to make sure both enumerations have the same length
-        if (actualEnumerator.MoveNext() || predictedEnumerator.MoveNext()) {
-          errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-        } else {
-          errorState = errorState & (~OnlineCalculatorError.InsufficientElementsAdded); // n >= 1
-        }
-      }
-    }
-
-    public void Reset() {
-      n = 0;
-      nCorrect = 0;
-      errorState = OnlineCalculatorError.InsufficientElementsAdded;
-    }
-
-
-    public static double Calculate(IEnumerable<double> startValues, IEnumerable<IEnumerable<double>> actualContinuations, IEnumerable<IEnumerable<double>> predictedContinuations, out OnlineCalculatorError errorState) {
-      IEnumerator<double> startValueEnumerator = startValues.GetEnumerator();
-      IEnumerator<IEnumerable<double>> actualContinuationsEnumerator = actualContinuations.GetEnumerator();
-      IEnumerator<IEnumerable<double>> predictedContinuationsEnumerator = predictedContinuations.GetEnumerator();
-      OnlineDirectionalSymmetryCalculator dsCalculator = new OnlineDirectionalSymmetryCalculator();
-
-      // always move forward all enumerators (do not use short-circuit evaluation!)
-      while (startValueEnumerator.MoveNext() & actualContinuationsEnumerator.MoveNext() & predictedContinuationsEnumerator.MoveNext()) {
-        dsCalculator.Add(startValueEnumerator.Current, actualContinuationsEnumerator.Current, predictedContinuationsEnumerator.Current);
-        if (dsCalculator.ErrorState != OnlineCalculatorError.None) break;
-      }
-
-      // check if all enumerators are at the end to make sure both enumerations have the same length
-      if (dsCalculator.ErrorState == OnlineCalculatorError.None &&
-          (startValueEnumerator.MoveNext() || actualContinuationsEnumerator.MoveNext() || predictedContinuationsEnumerator.MoveNext())) {
-        throw new ArgumentException("Number of elements in startValues, actualContinuations and estimatedValues predictedContinuations doesn't match.");
-      } else {
-        errorState = dsCalculator.ErrorState;
-        return dsCalculator.DirectionalSymmetry;
-      }
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineTheilsUStatisticCalculator.cs	(revision 7093)
+++ 	(revision )
@@ -1,112 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using HeuristicLab.Common;
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineTheilsUStatisticCalculator : IOnlineTimeSeriesCalculator {
-    private OnlineMeanAndVarianceCalculator squaredErrorMeanCalculator;
-    private OnlineMeanAndVarianceCalculator unbiasedEstimatorMeanCalculator;
-
-    public double TheilsUStatistic {
-      get {
-        return Math.Sqrt(squaredErrorMeanCalculator.Mean) / Math.Sqrt(unbiasedEstimatorMeanCalculator.Mean);
-      }
-    }
-
-    private OnlineCalculatorError errorState;
-    public OnlineCalculatorError ErrorState {
-      get { return errorState | squaredErrorMeanCalculator.MeanErrorState | unbiasedEstimatorMeanCalculator.MeanErrorState; }
-    }
-
-    public OnlineTheilsUStatisticCalculator() {
-      squaredErrorMeanCalculator = new OnlineMeanAndVarianceCalculator();
-      unbiasedEstimatorMeanCalculator = new OnlineMeanAndVarianceCalculator();
-      Reset();
-    }
-
-    #region IOnlineEvaluator Members
-    public double Value {
-      get { return TheilsUStatistic; }
-    }
-
-    public void Add(double startValue, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation) {
-      if (double.IsNaN(startValue) || (errorState & OnlineCalculatorError.InvalidValueAdded) > 0) {
-        errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-      } else {
-        var actualEnumerator = actualContinuation.GetEnumerator();
-        var predictedEnumerator = predictedContinuation.GetEnumerator();
-        while (actualEnumerator.MoveNext() & predictedEnumerator.MoveNext() & ErrorState != OnlineCalculatorError.InvalidValueAdded) {
-          double actual = actualEnumerator.Current;
-          double predicted = predictedEnumerator.Current;
-          if (double.IsNaN(actual) || double.IsNaN(predicted)) {
-            errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-          } else {
-            // error of predicted change
-            double errorPredictedChange = (predicted - startValue) - (actual - startValue);
-            squaredErrorMeanCalculator.Add(errorPredictedChange * errorPredictedChange);
-
-            double errorNoChange = (actual - startValue);
-            unbiasedEstimatorMeanCalculator.Add(errorNoChange * errorNoChange);
-          }
-        }
-        // check if both enumerators are at the end to make sure both enumerations have the same length
-        if (actualEnumerator.MoveNext() || predictedEnumerator.MoveNext()) {
-          errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-        } else {
-          errorState = errorState & (~OnlineCalculatorError.InsufficientElementsAdded); // n >= 1
-        }
-      }
-    }
-
-    public void Reset() {
-      squaredErrorMeanCalculator.Reset();
-      unbiasedEstimatorMeanCalculator.Reset();
-      errorState = OnlineCalculatorError.InsufficientElementsAdded;
-    }
-
-    #endregion
-
-    public static double Calculate(IEnumerable<double> startValues, IEnumerable<IEnumerable<double>> actualContinuations, IEnumerable<IEnumerable<double>> predictedContinuations, out OnlineCalculatorError errorState) {
-      IEnumerator<double> startValueEnumerator = startValues.GetEnumerator();
-      IEnumerator<IEnumerable<double>> actualContinuationsEnumerator = actualContinuations.GetEnumerator();
-      IEnumerator<IEnumerable<double>> predictedContinuationsEnumerator = predictedContinuations.GetEnumerator();
-      OnlineTheilsUStatisticCalculator calculator = new OnlineTheilsUStatisticCalculator();
-
-      // always move forward all enumerators (do not use short-circuit evaluation!)
-      while (startValueEnumerator.MoveNext() & actualContinuationsEnumerator.MoveNext() & predictedContinuationsEnumerator.MoveNext()) {
-        calculator.Add(startValueEnumerator.Current, actualContinuationsEnumerator.Current, predictedContinuationsEnumerator.Current);
-        if (calculator.ErrorState != OnlineCalculatorError.None) break;
-      }
-
-      // check if all enumerators are at the end to make sure both enumerations have the same length
-      if (calculator.ErrorState == OnlineCalculatorError.None &&
-          (startValueEnumerator.MoveNext() || actualContinuationsEnumerator.MoveNext() || predictedContinuationsEnumerator.MoveNext())) {
-        throw new ArgumentException("Number of elements in startValues, actualContinuations and estimatedValues predictedContinuations doesn't match.");
-      } else {
-        errorState = calculator.ErrorState;
-        return calculator.TheilsUStatistic;
-      }
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/OnlineCalculators/OnlineWeightedDirectionalSymmetryCalculator.cs	(revision 7093)
+++ 	(revision )
@@ -1,115 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using HeuristicLab.Common;
-
-
-namespace HeuristicLab.Problems.DataAnalysis {
-  public class OnlineWeightedDirectionalSymmetryCalculator : IOnlineTimeSeriesCalculator {
-    private int n;
-    private double correctSum;
-    private double incorrectSum;
-
-    public double WeightedDirectionalSymmetry {
-      get {
-        if (n <= 1) return 0.0;
-        return incorrectSum / correctSum;
-      }
-    }
-
-    public OnlineWeightedDirectionalSymmetryCalculator() {
-      Reset();
-    }
-
-    public double Value {
-      get { return WeightedDirectionalSymmetry; }
-    }
-
-    private OnlineCalculatorError errorState;
-    public OnlineCalculatorError ErrorState {
-      get { return errorState; }
-    }
-
-    public void Add(double startValue, IEnumerable<double> actualContinuation, IEnumerable<double> predictedContinuation) {
-      if (double.IsNaN(startValue) || (errorState & OnlineCalculatorError.InvalidValueAdded) > 0) {
-        errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-      } else {
-        var actualEnumerator = actualContinuation.GetEnumerator();
-        var predictedEnumerator = predictedContinuation.GetEnumerator();
-        while (actualEnumerator.MoveNext() & predictedEnumerator.MoveNext() & errorState != OnlineCalculatorError.InvalidValueAdded) {
-          double actual = actualEnumerator.Current;
-          double predicted = predictedEnumerator.Current;
-          if (double.IsNaN(actual) || double.IsNaN(predicted)) {
-            errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-          } else {
-            double err = Math.Abs(actual - predicted);
-            // count as correct only if the trend (positive/negative/no change) is predicted correctly
-            if ((actual - startValue) * (predicted - startValue) > 0.0 ||
-              (actual - startValue).IsAlmost(predicted - startValue)) {
-              correctSum += err;
-            } else {
-              incorrectSum += err;
-            }
-            n++;
-          }
-        }
-        // check if both enumerators are at the end to make sure both enumerations have the same length
-        if (actualEnumerator.MoveNext() || predictedEnumerator.MoveNext()) {
-          errorState = errorState | OnlineCalculatorError.InvalidValueAdded;
-        } else {
-          errorState = errorState & (~OnlineCalculatorError.InsufficientElementsAdded); // n >= 1
-        }
-      }
-    }
-
-    public void Reset() {
-      n = 0;
-      correctSum = 0;
-      incorrectSum = 0;
-      errorState = OnlineCalculatorError.InsufficientElementsAdded;
-    }
-
-
-    public static double Calculate(IEnumerable<double> startValues, IEnumerable<IEnumerable<double>> actualContinuations, IEnumerable<IEnumerable<double>> predictedContinuations, out OnlineCalculatorError errorState) {
-      IEnumerator<double> startValueEnumerator = startValues.GetEnumerator();
-      IEnumerator<IEnumerable<double>> actualContinuationsEnumerator = actualContinuations.GetEnumerator();
-      IEnumerator<IEnumerable<double>> predictedContinuationsEnumerator = predictedContinuations.GetEnumerator();
-      OnlineWeightedDirectionalSymmetryCalculator calculator = new OnlineWeightedDirectionalSymmetryCalculator();
-
-      // always move forward all enumerators (do not use short-circuit evaluation!)
-      while (startValueEnumerator.MoveNext() & actualContinuationsEnumerator.MoveNext() & predictedContinuationsEnumerator.MoveNext()) {
-        calculator.Add(startValueEnumerator.Current, actualContinuationsEnumerator.Current, predictedContinuationsEnumerator.Current);
-        if (calculator.ErrorState != OnlineCalculatorError.None) break;
-      }
-
-      // check if all enumerators are at the end to make sure both enumerations have the same length
-      if (calculator.ErrorState == OnlineCalculatorError.None &&
-          (startValueEnumerator.MoveNext() || actualContinuationsEnumerator.MoveNext() || predictedContinuationsEnumerator.MoveNext())) {
-        throw new ArgumentException("Number of elements in startValues, actualContinuations and estimatedValues predictedContinuations doesn't match.");
-      } else {
-        errorState = calculator.ErrorState;
-        return calculator.WeightedDirectionalSymmetry;
-      }
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis-3.4/StatisticCalculatorsTest.cs
===================================================================
--- trunk/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis-3.4/StatisticCalculatorsTest.cs	(revision 7093)
+++ trunk/sources/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis-3.4/StatisticCalculatorsTest.cs	(revision 7097)
@@ -20,5 +20,4 @@
 #endregion
 
-using System;
 using System.Collections.Generic;
 using System.Linq;
@@ -140,245 +139,4 @@
       }
     }
-
-    [TestMethod]
-    public void CalculateDirectionalSymmetryTest() {
-      // delta: +0.01, +1, -0.01, -2, -0.01, -1, +0.01, +2
-      var original = new double[]
-                       {
-                         0, 
-                         0.01, 
-                         1.01, 
-                         1, 
-                         -1, 
-                         -1.01, 
-                         -2.01, 
-                         -2, 
-                         0
-                       };
-      // delta to original(t-1): +1, +0, -1, -0, -1, +0.01, +0.01, +2
-      var estimated = new double[]
-                        {
-                          -1, 
-                          1, 
-                          0.01,
-                          0.01,
-                          1,
-                          -1,
-                          -1.02,
-                          -2.02,
-                          0
-                        };
-
-      // one-step forecast
-      var startValues = original;
-      var actualContinuations = from x in original.Skip(1)
-                                select Enumerable.Repeat(x, 1);
-      var predictedContinuations = from x in estimated.Skip(1)
-                                   select Enumerable.Repeat(x, 1);
-      double expected = 0.5;  // half of the predicted deltas are correct
-      OnlineCalculatorError errorState;
-      double actual = OnlineDirectionalSymmetryCalculator.Calculate(startValues, actualContinuations, predictedContinuations, out errorState);
-      Assert.AreEqual(expected, actual, 1E-9);
-    }
-
-    [TestMethod]
-    public void CalculateMultiStepDirectionalSymmetryTest() {
-      // delta: +0.01, +1, -0.01, -2, -0.01, -1, +0.01, +2
-      var original = new double[] { 0, 0.01, 1.01, 1, -1, -1.01, -2.01, -2, 0 };
-      {
-        var estimated = new double[][]
-                          {
-                            new double[] {0.01, 1.01, 1, -1, -1.01},
-                            new double[] {1.01, 1, -1, -1.01, -2.01},
-                            new double[] {1, -1, -1.01, -2.01, -2},
-                            new double[] {-1, -1.01, -2.01, -2, 0}
-                          };
-
-        // 5-step forecast
-        var startValues = original.Take(4);
-        var actualContinuations = from i in Enumerable.Range(1, original.Count() - 5)
-                                  select original.Skip(i).Take(5);
-        var predictedContinuations = estimated;
-        double expected = 1; // predictions are 100% correct
-        OnlineCalculatorError errorState;
-        double actual = OnlineDirectionalSymmetryCalculator.Calculate(startValues, actualContinuations,
-                                                                      predictedContinuations, out errorState);
-        Assert.AreEqual(expected, actual, 1E-9);
-      }
-      {
-        // only the direction is relevant
-        var estimated = new double[][]
-                          {
-                            new double[] {0.01, 0.01, 0.01, -0.01, -0.01},  // start=0, original deltas: 0.01, 1.01, 1.00, -1.00, -1.01
-                            new double[] {0.02, 0.02, 0.00, 0.00, 0.00}, // start=0.01, original deltas: 1.00, 0.90, -1.01, -1.02, -2.02,
-                            new double[] { 1.00, 1.00, 1.00, 1.00, 1.00}, // start=1.01, original deltas: -0.01, -2.01, -2.02, -3.02, -3.01
-                            new double[] { 0.90, 0.90, 0.90, 0.90, 0.90}  // start=1, original deltas: -2.00, -0.01, -3.01, -3.00, -1.00
-                          };
-
-        // 5-step forecast
-        var startValues = original.Take(4);
-        var actualContinuations = from i in Enumerable.Range(1, original.Count() - 5)
-                                  select original.Skip(i).Take(5);
-        var predictedContinuations = estimated;
-        double expected = 1; // half of the predicted deltas are correct
-        OnlineCalculatorError errorState;
-        double actual = OnlineDirectionalSymmetryCalculator.Calculate(startValues, actualContinuations,
-                                                                      predictedContinuations, out errorState);
-        Assert.AreEqual(expected, actual, 1E-9);
-      }
-      {
-        // also check incorrectly predicted directions
-        var estimated = new double[][]
-                          {
-                            new double[] {0.01, 0.01, 0.01, +0.01, +0.01},  // start=0, original deltas: 0.01, 1.01, 1.00, -1.00, -1.01
-                            new double[] {0.02, 0.00, 0.02, 0.00, 0.00}, // start=0.01, original deltas: 1.00, 0.90, -1.01, -1.02, -2.02,
-                            new double[] { 1.02, 1.00, 1.02, 1.00, 1.02}, // start=1.01, original deltas: -0.01, -2.01, -2.02, -3.02, -3.01
-                            new double[] { 0.90, 0.90, 0.90, 0.90, 0.90}  // start=1, original deltas: -2.00, -0.01, -3.01, -3.00, -1.00
-                          };
-
-        // 5-step forecast
-        var startValues = original.Take(4);
-        var actualContinuations = from i in Enumerable.Range(1, original.Count() - 5)
-                                  select original.Skip(i).Take(5);
-        var predictedContinuations = estimated;
-        double expected = (20 - 7) / 20.0; // half of the predicted deltas are correct
-        OnlineCalculatorError errorState;
-        double actual = OnlineDirectionalSymmetryCalculator.Calculate(startValues, actualContinuations,
-                                                                      predictedContinuations, out errorState);
-        Assert.AreEqual(expected, actual, 1E-9);
-      }
-    }
-
-
-    [TestMethod]
-    public void CalculateWeightedDirectionalSymmetryTest() {
-      var original = new double[] { 0, 0.01, 1.01, 1, -1, -1.01, -2.01, -2, 0 }; // +0.01, +1, -0.01, -2, -0.01, -1, +0.01, +2
-      var estimated = new double[] { 1, 2, 2, 1, 1, 0, 0.01, 0.02, 2.02 }; // delta to original: +2, +1.99, -0.01, 0, +1, -1.02, +2.01, +4.02
-      // one-step forecast
-      var startValues = original;
-      var actualContinuations = from x in original.Skip(1)
-                                select Enumerable.Repeat(x, 1);
-      var predictedContinuations = from x in estimated.Skip(1)
-                                   select Enumerable.Repeat(x, 1);
-      // absolute errors = 1.99, 0.99, 0, 2, 1.01, 2.02, 2.02, 2.02     
-      // sum of absolute errors for correctly predicted deltas = 2.97
-      // sum of absolute errors for incorrectly predicted deltas = 3.03 
-      double expected = 5.03 / 7.02;
-      OnlineCalculatorError errorState;
-      double actual = OnlineWeightedDirectionalSymmetryCalculator.Calculate(startValues, actualContinuations, predictedContinuations, out errorState);
-      Assert.AreEqual(expected, actual, 1E-9);
-    }
-
-    [TestMethod]
-    public void CalculateTheilsUTest() {
-      var original = new double[] { 0, 0.01, 1.01, 1, -1, -1.01, -2.01, -2, 0 };
-      var estimated = new double[] { 1, 1.01, 0.01, 2, 0, -0.01, -1.01, -3, 1 };
-      // one-step forecast
-      var startValues = original;
-      var actualContinuations = from x in original.Skip(1)
-                                select Enumerable.Repeat(x, 1);
-      var predictedContinuations = from x in estimated.Skip(1)
-                                   select Enumerable.Repeat(x, 1);
-      // Sum of squared errors of model y(t+1) = y(t) = 10.0004
-      // Sum of squared errors of predicted values = 8  
-      double expected = Math.Sqrt(8 / 10.0004);
-      OnlineCalculatorError errorState;
-      double actual = OnlineTheilsUStatisticCalculator.Calculate(startValues, actualContinuations, predictedContinuations, out errorState);
-      Assert.AreEqual(expected, actual, 1E-9);
-    }
-
-    [TestMethod]
-    public void CalculateMultiStepTheilsUTest() {
-      var original = new double[] { 0, 0.01, 1.01, 1, -1, -1.01, -2.01, -2, 0 };
-      {
-        // prefect prediction
-        var estimated = new double[][]
-                          {
-                            new double[] {0.01, 1.01, 1, -1, -1.01},
-                            new double[] {1.01, 1, -1, -1.01, -2.01},
-                            new double[] {1, -1, -1.01, -2.01, -2},
-                            new double[] {-1, -1.01, -2.01, -2, 0}
-                          };
-        // 5-step forecast
-        var startValues = original.Take(4);
-        var actualContinuations = from i in Enumerable.Range(1, original.Count() - 5)
-                                  select original.Skip(i).Take(5);
-        var predictedContinuations = estimated;
-
-        double expected = 0;
-        OnlineCalculatorError errorState;
-        double actual = OnlineTheilsUStatisticCalculator.Calculate(startValues, actualContinuations,
-                                                                   predictedContinuations, out errorState);
-        Assert.AreEqual(expected, actual, 1E-9);
-      }
-      {
-        // naive prediction
-        var estimated = new double[][]
-                          {
-                            new double[] {0, 0, 0, 0, 0},
-                            new double[] {0.01, 0.01, 0.01, 0.01, 0.01},
-                            new double[] {1.01, 1.01, 1.01, 1.01, 1.01},
-                            new double[] {1, 1, 1, 1, 1}
-                          };
-        // 5-step forecast
-        var startValues = original.Take(4);
-        var actualContinuations = from i in Enumerable.Range(1, original.Count() - 5)
-                                  select original.Skip(i).Take(5);
-        var predictedContinuations = estimated;
-
-        double expected = 1;
-        OnlineCalculatorError errorState;
-        double actual = OnlineTheilsUStatisticCalculator.Calculate(startValues, actualContinuations,
-                                                                   predictedContinuations, out errorState);
-        Assert.AreEqual(expected, actual, 1E-9);
-      }
-      {
-        // realistic prediction
-        var estimated = new double[][]
-                          {
-                            new double[] {0.005, 0.5, 0.5, -0.5, -0.5},    // start = 0
-                            new double[] {0.60, 0.5, -0.5, -0.5, -1},   // start = 0.01
-                            new double[] {-0.005, 0, 0, -0.5, -1},     // start = 1.01
-                            new double[] {-0, 0, -0.5, -1, 0.5}      // start = 1
-                          };
-        // 5-step forecast
-        var startValues = original.Take(4);
-        var actualContinuations = from i in Enumerable.Range(1, original.Count() - 5)
-                                  select original.Skip(i).Take(5);
-        var predictedContinuations = estimated;
-
-        double expected = 0.47558387;
-        OnlineCalculatorError errorState;
-        double actual = OnlineTheilsUStatisticCalculator.Calculate(startValues, actualContinuations,
-                                                                   predictedContinuations, out errorState);
-        Assert.AreEqual(expected, actual, 1E-6);
-      }
-    }
-
-    [TestMethod]
-    public void CalculateAccuracyTest() {
-      var original = new double[] { 1, 1, 0, 0 };
-      var estimated = new double[] { 1, 0, 1, 0 };
-      double expected = 0.5;
-      OnlineCalculatorError errorState;
-      double actual = OnlineAccuracyCalculator.Calculate(original, estimated, out errorState);
-      Assert.AreEqual(expected, actual, 1E-9);
-    }
-
-    [TestMethod]
-    public void CalculateMeanAbsolutePercentageErrorTest() {
-      var original = new double[] { 1, 2, 3, 1, 5 };
-      var estimated = new double[] { 2, 1, 3, 1, 0 };
-      double expected = 0.5;
-      OnlineCalculatorError errorState;
-      double actual = OnlineMeanAbsolutePercentageErrorCalculator.Calculate(original, estimated, out errorState);
-      Assert.AreEqual(expected, actual, 1E-9);
-      Assert.AreEqual(OnlineCalculatorError.None, errorState);
-
-      // if the original contains zero values the result is not defined
-      var original2 = new double[] { 1, 2, 0, 0, 0 };
-      OnlineMeanAbsolutePercentageErrorCalculator.Calculate(original2, estimated, out errorState);
-      Assert.AreEqual(OnlineCalculatorError.InvalidValueAdded, errorState);
-    }
   }
 }
Index: trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj
===================================================================
--- trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 7093)
+++ trunk/sources/HeuristicLab.Tests/HeuristicLab.Tests.csproj	(revision 7097)
@@ -830,12 +830,4 @@
       <Name>HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4</Name>
     </ProjectReference>
-    <ProjectReference Include="..\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4.csproj">
-      <Project>{E6CB1FC5-78EC-4EB8-BF12-35303C36F962}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis.Views-3.4</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis-3.4.csproj">
-      <Project>{07486E68-1517-4B9D-A58D-A38E99AE71AB}</Project>
-      <Name>HeuristicLab.Problems.DataAnalysis.Symbolic.TimeSeriesPrognosis-3.4</Name>
-    </ProjectReference>
     <ProjectReference Include="..\HeuristicLab.Problems.DataAnalysis.Symbolic.Views\3.4\HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4.csproj">
       <Project>{7A2531CE-3F7C-4F13-BCCA-ED6DC27A7086}</Project>
