public static PropertyMapping <T>[] Read(StreamReader sr) { //read head line that tells mapping count, variable names string line = sr.ReadLine(); var strs = TypeConverterEx.Split <string>(line, 1); int layer = int.Parse(strs[0]); PropertyMapping <T> [] maps = new PropertyMapping <T> [layer]; for (int l = 0; l < layer; l++) { line = sr.ReadLine(); strs = TypeConverterEx.Split <string>(line, 1); int num = int.Parse(strs[0]); line = sr.ReadLine(); var varnam = TypeConverterEx.SkipSplit <string>(line, 1); var ids = new string[num]; var values = new T[num, varnam.Length]; for (int i = 0; i < num; i++) { line = sr.ReadLine(); strs = TypeConverterEx.Split <string>(line); ids[i] = strs[0]; var row = TypeConverterEx.SkipSplit <T>(line, 1); MatrixExtension <T> .AssignRow(values, i, row); } PropertyMapping <T> map = new PropertyMapping <T>(ids, varnam, values); maps[l] = map; } return(maps); }
/// <summary> /// /// </summary> /// <param name="mappedMatrix"></param> /// <param name="variableIndex">starting from 0</param> public void Map(float[,] mappedMatrix, int variableIndex) { int row = mappedMatrix.GetLength(0); int col = mappedMatrix.GetLength(1); var map = Mappings; if (map != null) { var line = map.Keys.Cast <string>().ToArray(); float[] ids = TypeConverterEx.ChangeType <float>(line); var values = (from dic in map select float.Parse(dic.Value[variableIndex].ToString())).ToArray(); for (int r = 0; r < row; r++) { for (int c = 0; c < col; c++) { int t = 0; foreach (var kk in ids) { if (mappedMatrix[r, c] == kk) { mappedMatrix[r, c] = values[t]; break; } t++; } if (t == ids.Count()) { mappedMatrix[r, c] = 9999; } } } } }
public virtual void FromSerialArray(int var_index, int time_index, Array array) { var len = array.GetLength(0); for (int i = 0; i < len; i++) { this[var_index, time_index, i] = TypeConverterEx.ChangeType <T>(array.GetValue(i, 0)); } }
/// <summary> /// load multi-dimensional array [col][row] /// </summary> /// <param name="file"></param> /// <returns></returns> public static double[][] Load(string file, int skiplines = 0, int maxline = -1) { double[][] data = null; StreamReader sr = new StreamReader(file); string line = sr.ReadLine(); var vv = TypeConverterEx.Split <double>(line); sr.Close(); sr = new StreamReader(file); int nr = 0; while (!sr.EndOfStream) { line = sr.ReadLine(); if (line != "") { nr++; } } sr.Close(); nr -= skiplines; if (maxline > 0 && nr > maxline) { nr = maxline; } int nc = vv.Length; data = new double[nc][]; for (int i = 0; i < nc; i++) { data[i] = new double[nr]; } sr = new StreamReader(file); for (int i = 0; i < skiplines; i++) { line = sr.ReadLine(); } for (int i = 0; i < nr; i++) { line = sr.ReadLine(); vv = TypeConverterEx.Split <double>(line); for (int j = 0; j < nc; j++) { data[j][i] = vv[j]; } } sr.Close(); return(data); }
public void FromDataTable(DataTable dt) { int row = 0; foreach (DataRow dr in dt.Rows) { for (int c = 1; c < dt.Columns.Count; c++) { _MappingTable[0, row, c - 1] = TypeConverterEx.ChangeType <T>(dr[c]); } row++; } }
public virtual void FromRegularArray(int var_index, int time_index, Array array) { var nrow = array.GetLength(0); var ncol = array.GetLength(1); if (Topology != null) { var vec = GetVector(var_index, time_index.ToString(), ":"); for (int i = 0; i < vec.Length; i++) { var lc = Topology.ActiveCell[i]; this[var_index, time_index, i] = TypeConverterEx.ChangeType <T>(array.GetValue(lc[0], lc[1])); } } }
public static T[][] LoadLayeredArray(string filename) { T[][] matrix = null; StreamReader sr = new StreamReader(filename); string content = sr.ReadToEnd().Trim(new char[] { ' ', '\n' }); string[] lines = content.Split(StreamReaderSequence.cEnter); matrix = new T[lines.Length][]; for (int i = 0; i < lines.Length; i++) { matrix[i] = TypeConverterEx.Split <T>(lines[i]); } sr.Close(); return(matrix); }
/// <summary> /// a text file that has the following layout /// ID,soil_moist_max,soil_rechr_max,soil_type (First line, column names) /// 255,2,1,1 /// </summary> /// <param name="filename"></param> public void FromTextFile(string filename) { StreamReader sr = new StreamReader(filename); string line = sr.ReadLine().Trim(); _ColNames = TypeConverterEx.Split <string>(line); List <string> rownames = new List <string>(); while (!sr.EndOfStream) { line = sr.ReadLine(); if (!string.IsNullOrEmpty(line)) { line = line.Trim(); var strs = TypeConverterEx.Split <string>(line); rownames.Add(strs[0]); } } _RowNames = rownames.ToArray(); _MappingTable = new DataCube <T>(1, _RowNames.Length, _ColNames.Length - 1); _RowIndex = new Dictionary <string, int>(); _ColIndex = new Dictionary <string, int>(); for (int i = 1; i < _ColNames.Length; i++) { _ColIndex.Add(_ColNames[i], i - 1); } for (int i = 0; i < _RowNames.Length; i++) { _RowIndex.Add(_RowNames[i], i); } sr.Close(); sr = new StreamReader(filename); sr.ReadLine(); for (int i = 0; i < _RowNames.Length; i++) { line = sr.ReadLine().Trim(); var vv = TypeConverterEx.SkipSplit <T>(line, 1); _MappingTable[0, i.ToString(), ":"] = vv; } sr.Close(); }
public static T[,] LoadMatrix(string filename) { T[,] matrix = null; StreamReader sr = new StreamReader(filename); string content = sr.ReadToEnd().Trim(new char[] { ' ', '\n' }); string[] lines = content.Split(StreamReaderSequence.cEnter); var vv = TypeConverterEx.Split <T>(lines[0]); matrix = new T[lines.Length, vv.Count()]; for (int i = 0; i < lines.Length; i++) { if (i != 0) { vv = TypeConverterEx.Split <T>(lines[0]); } for (int j = 0; j < vv.Count(); j++) { matrix[i, j] = vv[j]; } } sr.Close(); return(matrix); }
public static OneToManyMap <T, T1> Read(string excelfile, string sheet, string keyField, string [] skippedFields) { FileStream stream = File.Open(excelfile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); excelReader.IsFirstRowAsColumnNames = true; System.Data.DataSet result = excelReader.AsDataSet(); var dt = result.Tables[sheet]; var dtEnum = dt.AsEnumerable(); int num = dt.Rows.Count; var varNames = new List <string>(); var varColIndex = new List <int>(); for (int c = 0; c < dt.Columns.Count; c++) { var coln = dt.Columns[c].ColumnName; if (!skippedFields.Contains(coln) && coln != keyField) { varNames.Add(dt.Columns[c].ColumnName); varColIndex.Add(c); } } T[] ids = (from r in dtEnum select TypeConverterEx.ChangeType <T>(r.Field <string>(keyField))).ToArray(); T1[,] values = new T1[num, varNames.Count]; for (int i = 0; i < num; i++) { for (int c = 0; c < varNames.Count; c++) { values[i, c] = TypeConverterEx.ChangeType <T1>(dt.Rows[i][varColIndex[c]].ToString()); } } return(new OneToManyMap <T, T1>(ids, varNames.ToArray(), values)); }