private IndividualPropertiesCache individualPropertiesCacheFrom(string fileFullPath, char delimiter) { using (var reader = new CsvReaderDisposer(fileFullPath, delimiter)) { var csv = reader.Csv; var headers = csv.GetFieldHeaders(); if (headers.Contains(Constants.Population.INDIVIDUAL_ID_COLUMN)) { return(createIndividualPropertiesFromCSV(csv, headers)); } } return(null); }
public IEnumerable <QuantityPKParameter> ImportPKParameters(string fileFullPath, IImportLogger logger) { try { _importedPK = new Cache <string, QuantityPKParameter>(x => x.Id); //cache containing a list of tupe<individual Id, value in core unit> _valuesCache = new Cache <QuantityPKParameter, List <Tuple <int, float> > >(); using (var reader = new CsvReaderDisposer(fileFullPath)) { var csv = reader.Csv; var headers = csv.GetFieldHeaders(); validateFileFormat(headers); while (csv.ReadNextRecord()) { var pkParameter = retrieveOrCreatePKParameterFor(csv); addValues(pkParameter, csv); } } foreach (var keyValue in _valuesCache.KeyValues) { var pkParameter = keyValue.Key; var values = keyValue.Value; //0-based id var maxIndividualId = values.Select(x => x.Item1).Max(); pkParameter.SetNumberOfIndividuals(maxIndividualId + 1); foreach (var value in values) { pkParameter.SetValue(value.Item1, value.Item2); } } return(_valuesCache.Keys.ToList()); } catch (Exception e) { logger.AddError(e.FullMessage()); return(Enumerable.Empty <QuantityPKParameter>()); } finally { _importedPK.Clear(); _valuesCache.Clear(); } }
public IEnumerable <IndividualResults> ImportFrom(string fileFullPath, Simulation simulation, IImportLogger logger) { //do not define this variables as member variable to be thread safe var cacheQuantitiesValues = new Cache <QuantityValues, List <float> >(); var cacheTimeValues = new Cache <IndividualResults, List <float> >(); try { var individualResults = new Cache <int, IndividualResults>(x => x.IndividualId); using (var reader = new CsvReaderDisposer(fileFullPath)) { var csv = reader.Csv; var headers = csv.GetFieldHeaders(); validateHeaders(headers); //skip the first two indexes that are individual id and time var allQuantityPaths = retrieveQuantityPathsFromHeader(headers, simulation); while (csv.ReadNextRecord()) { int individualId = retrieveParameterId(csv); if (!individualResults.Contains(individualId)) { individualResults.Add(createIndividualResults(individualId, cacheTimeValues)); } addRecordToIndividualResults(individualResults[individualId], allQuantityPaths, csv, cacheTimeValues, cacheQuantitiesValues); } } updateResults(cacheTimeValues, cacheQuantitiesValues); return(individualResults); } catch (Exception e) { logger.AddError(e.FullMessage()); return(Enumerable.Empty <IndividualResults>()); } finally { cacheQuantitiesValues.Clear(); cacheTimeValues.Clear(); } }
private IndividualPropertiesCache individualPropertiesCacheFrom(string fileFullPath, IImportLogger logger, char delimiter) { var individualPropertiesCache = new IndividualPropertiesCache(); using (var reader = new CsvReaderDisposer(fileFullPath, delimiter)) { var csv = reader.Csv; var headers = csv.GetFieldHeaders(); if (headers.Contains(Constants.Population.INDIVIDUAL_ID_COLUMN)) { loadNewCSVFormat(individualPropertiesCache, csv, headers); } else { loadOldCSVFormat(individualPropertiesCache, csv); logger.AddWarning(PKSimConstants.Warning.PopulationFileIsUsingOldFormatAndWontBeSupportedInTheNextVersion); } } return(individualPropertiesCache); }