/// <summary> /// Creates an input vector containing specific subset of predictors for the specified readout unit. /// </summary> /// <param name="readoutUnitName">ReadoutUnit name</param> /// <param name="predictors">Available predictors</param> public double[] CreateVector(string readoutUnitName, double[] predictors) { if (predictors.Length != PredictorGeneralSwitchCollection.Length) { throw new ArgumentException("Incorrect number of predictors", "predictors"); } if (_mapCollection.ContainsKey(readoutUnitName)) { ReadoutUnitMap rum = _mapCollection[readoutUnitName]; return(CreateVector(predictors, rum.Map, rum.VectorLength)); } else { return(CreateVector(predictors, PredictorGeneralSwitchCollection, _numOfAllowedPredictors)); } }
/// <summary> /// Creates input vector containing specific subset of predictors for the ReadoutUnit. /// </summary> /// <param name="readoutUnitName">ReadoutUnit name</param> /// <param name="predictors">Available predictors</param> public double[] CreateVector(string readoutUnitName, double[] predictors) { if (_mapCollection.ContainsKey(readoutUnitName)) { ReadoutUnitMap rum = _mapCollection[readoutUnitName]; return(CreateVector(predictors, rum.Map, rum.VectorLength)); } else { if (predictors.Length != _numOfPredictors) { throw new ArgumentException("Incorrect number of predictors", "predictors"); } return((double[])predictors.Clone()); } }
/// <summary> /// Creates an input vector collection where each vector contains the specific subset of predictors for the specified readout unit. /// </summary> /// <param name="readoutUnitName">ReadoutUnit name</param> /// <param name="predictorsCollection">Collection of available predictors</param> public List <double[]> CreateVectorCollection(string readoutUnitName, IEnumerable <double[]> predictorsCollection) { List <double[]> vectorCollection = new List <double[]>(); ReadoutUnitMap rum = null; if (_mapCollection.ContainsKey(readoutUnitName)) { rum = _mapCollection[readoutUnitName]; } foreach (double[] predictors in predictorsCollection) { if (rum == null) { vectorCollection.Add(CreateVector(predictors, PredictorGeneralSwitchCollection, _numOfAllowedPredictors)); } else { vectorCollection.Add(CreateVector(predictors, rum.Map, rum.VectorLength)); } } return(vectorCollection); }
/// <summary> /// Creates input vector collection where each vector containing specific subset of predictors for the ReadoutUnit. /// </summary> /// <param name="readoutUnitName">ReadoutUnit name</param> /// <param name="predictorsCollection">Collection of available predictors</param> public List <double[]> CreateVectorCollection(string readoutUnitName, List <double[]> predictorsCollection) { List <double[]> vectorCollection = new List <double[]>(predictorsCollection.Count); ReadoutUnitMap rum = null; if (_mapCollection.ContainsKey(readoutUnitName)) { rum = _mapCollection[readoutUnitName]; } foreach (double[] predictors in predictorsCollection) { if (rum == null) { vectorCollection.Add((double[])predictors.Clone()); } else { vectorCollection.Add(CreateVector(predictors, rum.Map, rum.VectorLength)); } } return(vectorCollection); }
/// <summary> /// Adds new mapping for ReadoutUntit /// </summary> /// <param name="readoutUnitName"></param> /// <param name="map">Boolean switches indicating if to use available prdictor for the ReadoutUnit</param> public void Add(string readoutUnitName, bool[] map) { if (map.Length != _numOfPredictors) { throw new ArgumentException("Incorrect number of switches in the map", "map"); } if (readoutUnitName.Length == 0) { throw new ArgumentException("ReadoutUnit name can not be empty", "readoutUnitName"); } if (_mapCollection.ContainsKey(readoutUnitName)) { throw new ArgumentException($"Mapping already contains mapping for ReadoutUnit {readoutUnitName}", "readoutUnitName"); } ReadoutUnitMap rum = new ReadoutUnitMap(map); if (rum.VectorLength == 0) { throw new ArgumentException("Map does not contain mapped predictors", "map"); } _mapCollection.Add(readoutUnitName, rum); return; }