- Timestamp:
- 06/25/15 13:46:24 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.Problems.DataAnalysis/3.4/Dataset.cs
r12012 r12509 33 33 [Item("Dataset", "Represents a dataset containing data that should be analyzed.")] 34 34 [StorableClass] 35 public sealed class Dataset : NamedItem, IStringConvertibleMatrix{35 public class Dataset : NamedItem, IDataset { 36 36 [StorableConstructor] 37 pr ivateDataset(bool deserializing) : base(deserializing) { }38 pr ivateDataset(Dataset original, Cloner cloner)37 protected Dataset(bool deserializing) : base(deserializing) { } 38 protected Dataset(Dataset original, Cloner cloner) 39 39 : base(original, cloner) { 40 40 variableValues = new Dictionary<string, IList>(original.variableValues); … … 118 118 } 119 119 120 protected Dataset(Dataset dataset) : this(dataset.variableNames, dataset.variableValues.Values) { } 121 120 122 #region Backwards compatible code, remove with 3.5 121 123 private double[,] storableData; … … 143 145 144 146 [Storable(Name = "VariableValues")] 145 pr ivateDictionary<string, IList> variableValues;146 147 pr ivateList<string> variableNames;147 protected Dictionary<string, IList> variableValues; 148 149 protected List<string> variableNames; 148 150 [Storable] 149 151 public IEnumerable<string> VariableNames { 150 152 get { return variableNames; } 151 pr ivateset {153 protected set { 152 154 if (variableNames != null) throw new InvalidOperationException(); 153 155 variableNames = new List<string>(value); 154 156 } 155 157 } 156 157 158 public IEnumerable<string> DoubleVariables { 158 159 get { return variableValues.Where(p => p.Value is List<double>).Select(p => p.Key); } 159 160 } 160 161 161 public IEnumerable<double> GetDoubleValues(string variableName) { 162 return GetValues<double>(variableName); 163 } 164 public IEnumerable<string> GetStringValues(string variableName) { 165 return GetValues<string>(variableName); 166 } 167 public IEnumerable<DateTime> GetDateTimeValues(string variableName) { 168 return GetValues<DateTime>(variableName); 169 } 170 171 public ReadOnlyCollection<double> GetReadOnlyDoubleValues(string variableName) { 172 var values = GetValues<double>(variableName); 173 return values.AsReadOnly(); 174 } 175 public double GetDoubleValue(string variableName, int row) { 176 var values = GetValues<double>(variableName); 177 return values[row]; 178 } 179 public IEnumerable<double> GetDoubleValues(string variableName, IEnumerable<int> rows) { 180 return GetValues<double>(variableName, rows); 181 } 182 private IEnumerable<T> GetValues<T>(string variableName, IEnumerable<int> rows) { 183 var values = GetValues<T>(variableName); 184 return rows.Select(x => values[x]); 185 } 186 private List<T> GetValues<T>(string variableName) { 162 187 IList list; 163 188 if (!variableValues.TryGetValue(variableName, out list)) 164 189 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 165 List<double> values = list as List<double>; 166 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 167 168 //mkommend yield return used to enable lazy evaluation 169 foreach (double value in values) 170 yield return value; 171 } 172 173 public IEnumerable<string> GetStringValues(string variableName) { 174 IList list; 175 if (!variableValues.TryGetValue(variableName, out list)) 176 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 177 List<string> values = list as List<string>; 178 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a string variable."); 179 180 //mkommend yield return used to enable lazy evaluation 181 foreach (string value in values) 182 yield return value; 183 } 184 185 public IEnumerable<DateTime> GetDateTimeValues(string variableName) { 186 IList list; 187 if (!variableValues.TryGetValue(variableName, out list)) 188 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 189 List<DateTime> values = list as List<DateTime>; 190 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a datetime variable."); 191 192 //mkommend yield return used to enable lazy evaluation 193 foreach (DateTime value in values) 194 yield return value; 195 } 196 197 public ReadOnlyCollection<double> GetReadOnlyDoubleValues(string variableName) { 198 IList list; 199 if (!variableValues.TryGetValue(variableName, out list)) 200 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 201 List<double> values = list as List<double>; 202 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 203 return values.AsReadOnly(); 204 } 205 public double GetDoubleValue(string variableName, int row) { 206 IList list; 207 if (!variableValues.TryGetValue(variableName, out list)) 208 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 209 List<double> values = list as List<double>; 210 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 211 return values[row]; 212 } 213 public IEnumerable<double> GetDoubleValues(string variableName, IEnumerable<int> rows) { 214 IList list; 215 if (!variableValues.TryGetValue(variableName, out list)) 216 throw new ArgumentException("The variable " + variableName + " does not exist in the dataset."); 217 List<double> values = list as List<double>; 218 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a double variable."); 219 220 return rows.Select(index => values[index]); 221 } 222 190 List<T> values = list as List<T>; 191 if (values == null) throw new ArgumentException("The variable " + variableName + " is not a " + typeof(T) + " variable."); 192 return values; 193 } 223 194 public bool VariableHasType<T>(string variableName) { 224 195 return variableValues[variableName] is IList<T>; … … 227 198 #region IStringConvertibleMatrix Members 228 199 [Storable] 229 pr ivateint rows;200 protected int rows; 230 201 public int Rows { 231 202 get { return rows; } … … 236 207 set { throw new NotSupportedException(); } 237 208 } 238 239 209 public bool SortableView { 240 210 get { return false; } … … 244 214 get { return true; } 245 215 } 246 247 216 IEnumerable<string> IStringConvertibleMatrix.ColumnNames { 248 217 get { return this.VariableNames; } … … 253 222 set { throw new NotSupportedException(); } 254 223 } 255 256 224 public string GetValue(int rowIndex, int columnIndex) { 257 225 return variableValues[variableNames[columnIndex]][rowIndex].ToString(); 258 226 } 259 public boolSetValue(string value, int rowIndex, int columnIndex) {227 bool IStringConvertibleMatrix.SetValue(string value, int rowIndex, int columnIndex) { 260 228 throw new NotSupportedException(); 261 229 } 262 public boolValidate(string value, out string errorMessage) {230 bool IStringConvertibleMatrix.Validate(string value, out string errorMessage) { 263 231 throw new NotSupportedException(); 264 232 } 265 233 266 public event EventHandler ColumnsChanged { add { } remove { } }267 public event EventHandler RowsChanged { add { } remove { } }268 public event EventHandler ColumnNamesChanged { add { } remove { } }269 public event EventHandler RowNamesChanged { add { } remove { } }270 public event EventHandler SortableViewChanged { add { } remove { } }271 public event EventHandler<EventArgs<int, int>> ItemChanged { add { } remove { } }272 public event EventHandler Reset { add { } remove { } }234 public virtual event EventHandler ColumnsChanged { add { } remove { } } 235 public virtual event EventHandler RowsChanged { add { } remove { } } 236 public virtual event EventHandler ColumnNamesChanged { add { } remove { } } 237 public virtual event EventHandler RowNamesChanged { add { } remove { } } 238 public virtual event EventHandler SortableViewChanged { add { } remove { } } 239 public virtual event EventHandler<EventArgs<int, int>> ItemChanged { add { } remove { } } 240 public virtual event EventHandler Reset { add { } remove { } } 273 241 #endregion 274 242 }
Note: See TracChangeset
for help on using the changeset viewer.