Free cookie consent management tool by TermsFeed Policy Generator

source: stable/HeuristicLab.Problems.DataAnalysis/3.4/Implementation/Transformations/PowerTransformation.cs @ 16796

Last change on this file since 16796 was 12667, checked in by gkronber, 9 years ago

#2415: merged r12612 from trunk to stable

File size: 1.8 KB
RevLine 
[10782]1using System;
2using System.Collections.Generic;
[12667]3using System.Linq;
[10782]4using HeuristicLab.Common;
5using HeuristicLab.Core;
6using HeuristicLab.Data;
7using HeuristicLab.Parameters;
8using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
9
[11068]10namespace HeuristicLab.Problems.DataAnalysis {
[12667]11  [StorableClass]
[10909]12  [Item("Power Transformation", "f(x) = x ^ exp | Represents a power transformation.")]
[10805]13  public class PowerTransformation : Transformation<double> {
14    protected const string ExponentParameterName = "Exponent";
[10782]15
16    #region Parameters
[10805]17    public IValueParameter<DoubleValue> ExponentParameter {
18      get { return (IValueParameter<DoubleValue>)Parameters[ExponentParameterName]; }
[10782]19    }
20    #endregion
21
22    #region properties
[10932]23    public override string ShortName {
24      get { return "Pow"; }
25    }
[10805]26    public double Exponent {
27      get { return ExponentParameter.Value.Value; }
[10782]28    }
29    #endregion
30
31    [StorableConstructor]
[10805]32    protected PowerTransformation(bool deserializing) : base(deserializing) { }
[11114]33    protected PowerTransformation(PowerTransformation original, Cloner cloner)
[10782]34      : base(original, cloner) {
35    }
[10805]36    public PowerTransformation(IEnumerable<string> allowedColumns)
[10782]37      : base(allowedColumns) {
[10909]38      Parameters.Add(new ValueParameter<DoubleValue>(ExponentParameterName, "exp | Exponent for Exponentation", new DoubleValue(2.0)));
[10782]39    }
40
41    public override IDeepCloneable Clone(Cloner cloner) {
[10805]42      return new PowerTransformation(this, cloner);
[10782]43    }
44
45    public override IEnumerable<double> Apply(IEnumerable<double> data) {
[12667]46      return data.Select(i => Math.Pow(i, Exponent));
[10782]47    }
48
49    public override bool Check(IEnumerable<double> data, out string errorMsg) {
50      errorMsg = "";
51      return true;
52    }
53
54  }
55}
Note: See TracBrowser for help on using the repository browser.