protected override void LoadFromFile(string path) { var separator = _csvSeparatorSelector.GetCsvSeparator(path); //if separator selection dialog was cancelled, abort if (!(separator is char separatorCharacter)) { return; } //we keep a copy of the already loaded sheets, in case the reading fails var alreadyLoadedDataSheets = DataSheets.Clone(); DataSheets.Clear(); try { using (var reader = new CsvReaderDisposer(path, separatorCharacter)) { var csv = reader.Csv; var headers = csv.GetFieldHeaders(); var rows = new List <List <string> >(headers.Length); var dataSheet = new DataSheet { SheetName = "" }; for (var i = 0; i < headers.Length; i++) { dataSheet.AddColumn(headers[i], i); } var currentRow = new string[csv.FieldCount]; while (csv.ReadNextRecord()) { csv.CopyCurrentRecordTo(currentRow); var rowList = currentRow.ToList(); var levels = getMeasurementLevels(rowList); dataSheet.CalculateColumnDescription(levels); dataSheet.AddRow(rowList); } dataSheet.RemoveEmptyColumns(); dataSheet.RemoveEmptyRows(); DataSheets.AddSheet(dataSheet); } } catch (Exception e) { DataSheets.CopySheetsFrom(alreadyLoadedDataSheets); _logger.AddError(e.Message); throw new InvalidObservedDataFileException(e.Message); } }
protected override void LoadFromFile(string path) { //we keep a copy of the already loaded sheets, in case the reading fails var alreadyLoadedDataSheets = DataSheets.Clone(); DataSheets.Clear(); try { var reader = new ExcelReader(path); while (reader.MoveToNextSheet()) { if (!reader.MoveToNextRow()) { continue; } var rawSheetData = new DataSheet { SheetName = reader.CurrentSheet.SheetName }; var headers = reader.CurrentRow; for (var j = 0; j < headers.Count; j++) { rawSheetData.AddColumn(headers[j], j); } while (reader.MoveToNextRow()) { //the first two could even be done only once var levels = reader.GetMeasurementLevels(headers.Count); rawSheetData.CalculateColumnDescription(levels); rawSheetData.AddRow(reader.CurrentRow); } rawSheetData.RemoveEmptyColumns(); rawSheetData.RemoveEmptyRows(); DataSheets.AddSheet(rawSheetData); } } catch (Exception ex) { DataSheets.CopySheetsFrom(alreadyLoadedDataSheets); _logger.AddError(ex.Message); throw new InvalidObservedDataFileException(ex.Message); } }
public override void GlobalContext() { base.GlobalContext(); _dataSourceFile = A.Fake <IDataSourceFile>(); _importer = A.Fake <IImporter>(); _view = A.Fake <IImporterDataView>(); _dataSheet = new DataSheet { SheetName = "sheet1" }; _dataSheet.AddColumn("test_column", 0); _dataSheet.AddRow(new List <string>() { "1" }); _dataSheet2 = new DataSheet { SheetName = "sheet2" }; _dataSheet2.AddColumn("test_column", 0); _dataSheet2.AddRow(new List <string>() { "1" }); _dataSheet3 = new DataSheet { SheetName = "sheet3" }; _dataSheet3.AddColumn("test_column", 0); _dataSheet3.AddRow(new List <string>() { "1" }); _sheetsCollection = new DataSheetCollection(); _sheetsCollection.AddSheet(_dataSheet); _sheetsCollection.AddSheet(_dataSheet2); _sheetsCollection.AddSheet(_dataSheet3); A.CallTo(() => _importer.LoadFile(A <ColumnInfoCache> ._, A <string> ._, A <IReadOnlyList <MetaDataCategory> > ._)).Returns(_dataSourceFile); A.CallTo(() => _view.GetActiveFilterCriteria()).Returns("active_filter_criteria"); A.CallTo(() => _dataSourceFile.DataSheets).Returns(_sheetsCollection); }
protected override void Context() { _columnInfos = new ColumnInfoCache { new ColumnInfo() { DisplayName = "Time", IsMandatory = true }, new ColumnInfo() { DisplayName = "Concentration", IsMandatory = true }, new ColumnInfo() { DisplayName = "Error", IsMandatory = false } }; _metaDataCategories = new List <MetaDataCategory>() { new MetaDataCategory() { Name = "Organ" }, new MetaDataCategory() { Name = "Compartment" }, new MetaDataCategory() { Name = "Species" }, new MetaDataCategory() { Name = "Dose" }, new MetaDataCategory() { Name = "Molecule" }, new MetaDataCategory() { Name = "Route" } }; sut = new DataFormatNonmem(); _headersCache = new Cache <string, ColumnDescription>() { { "Organ", new ColumnDescription(0, new List <string>() { "PeripheralVenousBlood" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Compartment", new ColumnDescription(1, new List <string>() { "Arterialized" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Species", new ColumnDescription(2, new List <string>() { "Human" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Dose", new ColumnDescription(3, new List <string>() { "75 [g] glucose" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Molecule", new ColumnDescription(4, new List <string>() { "GLP-1_7-36 total", "Glucose", "Insuline", "GIP_total", "Glucagon" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Time", new ColumnDescription(5, null, ColumnDescription.MeasurementLevel.Numeric) }, { "Concentration", new ColumnDescription(6, null, ColumnDescription.MeasurementLevel.Numeric) }, { "Error", new ColumnDescription(7, null, ColumnDescription.MeasurementLevel.Numeric) }, { "Route", new ColumnDescription(8, new List <string>() { "po" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Groupe Id", new ColumnDescription(9, new List <string>() { "H", "T2DM" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Time_unit", new ColumnDescription(10, new List <string>() { "min" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Concentration_unit", new ColumnDescription(11, new List <string>() { "pmol/l" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Error_unit", new ColumnDescription(12, new List <string>() { "pmol/l" }, ColumnDescription.MeasurementLevel.Discrete) }, { "Concentration_lloq", new ColumnDescription(13) { Level = ColumnDescription.MeasurementLevel.Numeric } } }; _basicFormat = new TestDataSheet(_headersCache); foreach (var molecule in _molecules) { foreach (var groupId in _groupIds) { for (var time = 0; time < 10; time++) { _basicFormat.AddRow(new List <string>() { "PeripheralVenousBlood", "Arterialized", "Human", "75 [g] glucose", molecule, $"time", "0", "0", "po", groupId, "min", "pmol/l", "pmol/l", $"{0.01}" }); } } } }