Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 4
0
        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);
        }