Skip to content

Commit

Permalink
Fixes Open-Systems-Pharmacology#549 Import Population from File error
Browse files Browse the repository at this point in the history
  • Loading branch information
msevestre committed Apr 4, 2018
1 parent 4f03f41 commit eac29a3
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 7 deletions.
8 changes: 6 additions & 2 deletions src/PKSim.Core/Model/ImportPopulationFactory.cs
Expand Up @@ -35,8 +35,12 @@ public class ImportPopulationFactory : IImportPopulationFactory
private PathCache<IParameter> _allParameters;
private PathCache<IParameter> _allCreateIndividualParameters;

public ImportPopulationFactory(IObjectBaseFactory objectBaseFactory, IProgressManager progressManager,
IIndividualPropertiesCacheImporter individualPropertiesCacheImporter, ICloner cloner, IContainerTask containerTask, IAdvancedParameterFactory advancedParameterFactory)
public ImportPopulationFactory(IObjectBaseFactory objectBaseFactory,
IProgressManager progressManager,
IIndividualPropertiesCacheImporter individualPropertiesCacheImporter,
ICloner cloner,
IContainerTask containerTask,
IAdvancedParameterFactory advancedParameterFactory)
{
_objectBaseFactory = objectBaseFactory;
_progressManager = progressManager;
Expand Down
@@ -0,0 +1,6 @@
#Project: test
#PK-Sim version: 7.3.0 - Build 0
"IndividualId","Gender","RaceIndex","Population Name","Organism|Weight [kg]","Organism|BMI [kg/dm²]","Organism|Gestational age [week(s)]","Organism|Age [year(s)]","Organism|Ontogeny factor (alpha1-acid glycoprotein)","Organism|Ontogeny factor (albumin)","Organism|Height [dm]","Organism|Hematocrit","Organism|VenousBlood|Volume [l]","Organism|ArterialBlood|Volume [l]","Organism|ArterialBlood|Volume [l]","Organism|Bone|Volume [l]","Organism|Brain|Volume [l]","Organism|Brain|Specific blood flow rate [l/min/kg organ]","Organism|Fat|Volume [l]","Organism|Fat|Vf (neutral lipid)-PT","Organism|Fat|Vf (lipid)","Organism|Fat|Vf (phospholipid)-PT","Organism|Fat|Fraction interstitial","Organism|Fat|Vf (water)","Organism|Fat|Vf (water)-PT","Organism|Fat|Vf (neutral lipid)-RR","Organism|Fat|Vf (neutral lipid)-WS","Organism|Fat|Vf (neutral phospholipid)-RR","Organism|Fat|Vf (neutral phospholipid, plasma)-WS","Organism|Fat|Vf (extracellular water)-RR","Organism|Fat|Vf (intracellular water)-RR","Organism|Fat|Vf (water)-WS","Organism|Fat|Specific blood flow rate [l/min/kg organ]","Organism|Gonads|Volume [l]","Organism|Gonads|Specific blood flow rate [l/min/kg organ]","Organism|Heart|Volume [l]","Organism|Heart|Specific blood flow rate [l/min/kg organ]","Organism|Kidney|Volume [l]","Organism|Kidney|Maximal decreasing rate factor","Organism|Kidney|TM50 for GFR [week(s)]","Organism|Kidney|Age of aging onset [year(s)]","Organism|Kidney|GFRmat [l/min]","Organism|Kidney|Hill coefficient for GFR","Organism|Kidney|Hill coefficient for aging GFR","Organism|Kidney|Aging half-time [year(s)]","Organism|Kidney|Specific blood flow rate [l/min/kg organ]","Organism|Lumen|Effective surface area variability factor","Organism|Lumen|Stomach|Distal radius [dm]","Organism|Lumen|Stomach|Length [dm]","Organism|Lumen|Stomach|GET_beta (Weibull function) variability factor","Organism|Lumen|Stomach|Gastric emptying time [min]","Organism|Lumen|Stomach|GET_alpha (Weibull function) variability factor","Organism|Lumen|Stomach|Proximal radius [dm]","Organism|Lumen|Duodenum|Effective surface area enhancement factor","Organism|Lumen|UpperJejunum|Effective surface area enhancement factor","Organism|Lumen|LowerJejunum|Effective surface area enhancement factor","Organism|Lumen|UpperIleum|Effective surface area enhancement factor","Organism|Lumen|LowerIleum|Effective surface area enhancement factor","Organism|Lumen|Caecum|Effective surface area enhancement factor","Organism|Lumen|ColonAscendens|Effective surface area enhancement factor","Organism|Lumen|ColonTransversum|Effective surface area enhancement factor","Organism|Lumen|ColonDescendens|Effective surface area enhancement factor","Organism|Lumen|ColonSigmoid|Effective surface area enhancement factor","Organism|Lumen|Rectum|Effective surface area enhancement factor","Organism|Stomach|Volume [l]","Organism|Stomach|Specific blood flow rate [l/min/kg organ]","Organism|SmallIntestine|Small intestinal transit time [min]","Organism|SmallIntestine|Volume [l]","Organism|SmallIntestine|Specific blood flow rate [l/min/kg organ]","Organism|LargeIntestine|Large intestinal transit time [min]","Organism|LargeIntestine|Volume [l]","Organism|LargeIntestine|Specific blood flow rate [l/min/kg organ]","Organism|Liver|Volume [l]","Organism|Liver|Specific blood flow rate [l/min/kg organ]","Organism|Lung|Volume [l]","Organism|Lung|Fraction vascular","Organism|Muscle|Volume [l]","Organism|Muscle|Vf (neutral lipid)-PT","Organism|Muscle|Vf (lipid)","Organism|Muscle|Vf (phospholipid)-PT","Organism|Muscle|Vf (protein)","Organism|Muscle|Vf (water)","Organism|Muscle|Vf (water)-PT","Organism|Muscle|Fraction interstitial","Organism|Muscle|Vf (neutral lipid)-WS","Organism|Muscle|Vf (neutral lipid)-RR","Organism|Muscle|Vf (neutral phospholipid, plasma)-WS","Organism|Muscle|Vf (neutral phospholipid)-RR","Organism|Muscle|Vf (extracellular water)-RR","Organism|Muscle|Vf (protein)-WS","Organism|Muscle|Vf (intracellular water)-RR","Organism|Muscle|Vf (water)-WS","Organism|Muscle|Specific blood flow rate [l/min/kg organ]","Organism|Pancreas|Volume [l]","Organism|Pancreas|Specific blood flow rate [l/min/kg organ]","Organism|PortalVein|Volume [l]","Organism|Skin|Volume [l]","Organism|Skin|Specific blood flow rate [l/min/kg organ]","Organism|Spleen|Volume [l]","Organism|Spleen|Specific blood flow rate [l/min/kg organ]","Neighborhoods|ArterialBlood_pls_ArterialBlood_bc|Surface area (blood cells/plasma) [dm²]"
0,1,4,pop_3_advanced_parameter,24.3098761193692,0.150385124095121,40,7.62459469895092,0.961597899080313,0.989616171547037,12.7141969205058,0.4,0.412015140954677,0.161796932502928,0.0483070526874319,4.38171025374977,1.44025633560603,0.620142296213189,3.99659672962054,0.654702894365137,0.662990272774822,0.00165747568193706,0.287009727225178,0.287009727222802,0.344411672667363,0.706913378346154,0.762438813691046,0.00132598054554964,0.0016773653901203,0.258308754500522,0.0172205836333681,0.0574019454445605,0.0342252286480293,0.00248652681222078,1.02473987149117,0.130227745757385,1.17195528627011,0.275570631538654,0,43.806846738471,30,0.119042048300705,15.2372906198173,1.5,54,3.22105762973856,1.25284596437776,0.352908071449313,1.41161328255484,0.603138609136629,18.8646431060578,1.84496285140041,0.352908071449313,292.6883,447.9877,372.9358,260.7527,146.565,1.8,2.5,2.5,2.5,2.5,3.56,0.0856651944957352,0.564251651421169,136.721487746153,0.309927161552078,1.29405311305217,2505,0.192087067752148,0.953206693464297,0.983842256531059,0.291601997068006,0.280113703191328,0.58,10.161531272131,0.0238,0.013,0.0072,0.177,0.811,0.76,0.259003242408393,0.0049,0.022,0.0042,0.0078,0.079,0.19,0.666,0.76,0.0343992432273803,0.0796256742397655,0.674631196761843,0.420541432934087,0.842420874451136,0.281519632261372,0.153461185548661,1.18077158889791,0.85051024636301
1,1,4,pop_3_advanced_parameter,23.6162360823072,0.139501783555842,40,8.92982464466701,0.758828867922422,1.05493608525292,13.0111433201518,0.4,0.431539847044617,0.170507785197151,0.0512747522850354,4.72188282748986,1.32239876763019,0.53060373881887,2.4039625074526,0.685636844078608,0.694315791472008,0.00173578947868002,0.255684208527992,0.255684208526922,0.306821050232306,0.740314212657029,0.79846316019281,0.00138863158294402,0.00175661895242418,0.230115787674229,0.0153410525116153,0.0511368417053843,0.0311260716892646,0.00244349898212182,1.03468119057274,0.10440462113888,1.09701948869058,0.242619352154829,0,42.764759577732,30,0.126225469805317,15.1902020420467,1.5,54,3.22687219761194,1.72926686260423,0.374415650494823,1.49765404057645,0.689128870877513,28.0573643042788,0.912355566540064,0.374415650494823,292.6883,447.9877,372.9358,260.7527,146.565,1.8,2.5,2.5,2.5,2.5,3.56,0.101340687313458,0.519481300127087,205.470099149715,0.361014511549662,1.22080824294807,2505,0.278329615221841,0.86456203136143,0.979297184972815,0.298679005341465,0.380280554142528,0.58,10.5852409391004,0.0238,0.013,0.0072,0.177,0.811,0.76,0.248561402842664,0.0049,0.022,0.0042,0.0078,0.079,0.19,0.666,0.76,0.0331765479447578,0.0715116130668544,0.61970843204302,0.403238305831037,0.933315773228256,0.253260461788864,0.122907690790116,1.16525612666102,0.556758708424433
2,2,4,pop_3_advanced_parameter,58.4388474533529,0.239253413893126,40,60.906041087539,0.81474465686797,0.895650377287751,15.6286602190228,0.41,0.64180435054746,0.264069356626335,0.0358042309850916,8.14866546977513,1.41193631521698,0.478585413760752,17.2831106241801,0.79,0.8,0.002,0.16,0.15,0.18,0.853,0.92,0.0016,0.002024,0.135,0.00899999999999998,0.03,0.0267963968739824,0.0116194188676426,0.0992949592671104,0.345048893147042,0.874032954674417,0.380535200667326,0,45.9186486255534,30,0.129634466897458,14.7479908130052,1.5,59,2.90689488100257,0.72385806350362,0.5,2,0.763283475986543,14.5709460204838,1.33766690475331,0.5,292.6883,447.9877,372.9358,260.7527,146.565,1.8,2.5,2.5,2.5,2.5,3.56,0.15026923454203,0.357438751722625,172.054979796341,0.616322709550325,0.975297141759361,2652,0.418716103029798,0.702115724591058,1.71205170439143,0.260784914056149,1.36568283951576,0.53,21.9649161991845,0.0238,0.013,0.0072,0.177,0.811,0.76,0.16,0.0049,0.022,0.0042,0.0078,0.079,0.19,0.666,0.76,0.0446670205954974,0.159481120090264,0.364266316513546,0.668627317979673,2.66986255341182,0.108931419329944,0.226128042629265,0.793691450803616,0.863309631220447
Expand Up @@ -60,7 +60,6 @@ public void should_have_imported_the_individuals(string delimiter)
}
}


public class When_importing_a_population_from_a_file_that_is_using_the_old_format_with_semi_colon : concern_for_IndividualPropertiesCacheImporter
{
private IndividualPropertiesCache _results;
Expand Down
34 changes: 30 additions & 4 deletions tests/PKSim.Tests/IntegrationTests/ImportPopulationFactorySpecs.cs
Expand Up @@ -2,29 +2,38 @@
using System.Threading;
using OSPSuite.BDDHelper;
using OSPSuite.BDDHelper.Extensions;
using OSPSuite.Core.Domain;
using OSPSuite.Utility.Container;
using PKSim.Core;
using PKSim.Core.Model;
using PKSim.Infrastructure;

namespace PKSim.IntegrationTests
{
public class When_importing_a_population_file_containing_an_advanced_parameters : ContextForIntegration<IImportPopulationFactory>
public class concern_for_ImportPopulationFactory : ContextForIntegration<IImportPopulationFactory>
{
private Individual _individual;
private ImportPopulation _population;
protected Individual _individual;
protected ImportPopulation _population;

public override void GlobalContext()
{
base.GlobalContext();
_individual = DomainFactoryForSpecs.CreateStandardIndividual();
sut = IoC.Resolve<IImportPopulationFactory>();
_population = sut.CreateFor(new[] {DomainHelperForSpecs.PopulationFilePathFor("pop_3_advanced_parameter")}, _individual, new CancellationToken()).Result;
}

protected override void Context()
{
}
}

public class When_importing_a_population_file_containing_an_advanced_parameters : concern_for_ImportPopulationFactory
{
public override void GlobalContext()
{
base.GlobalContext();
_population = sut.CreateFor(new[] {DomainHelperForSpecs.PopulationFilePathFor("pop_3_advanced_parameter")}, _individual, new CancellationToken()).Result;
}

[Observation]
public void should_have_created_one_advanced_parameter()
Expand All @@ -38,4 +47,21 @@ public void should_have_imported_3_individuals()
_population.NumberOfItems.ShouldBeEqualTo(3);
}
}

public class When_importing_a_population_file_containing_two_column_with_the_same_entity_path : concern_for_ImportPopulationFactory
{
public override void GlobalContext()
{
base.GlobalContext();
_population = sut.CreateFor(new[] { DomainHelperForSpecs.PopulationFilePathFor("pop_3_duplicated_column") }, _individual, new CancellationToken()).Result;
}

[Observation]
public void should_show_an_error_to_the_user_explaning_that_a_column_duplicate_and_specify_which_one_is_duplicated()
{
var populationfIle = _population.Settings.AllFiles.ElementAt(0);
populationfIle.Status.ShouldBeEqualTo(NotificationType.Error);
populationfIle.Log.ElementAt(0).Contains("Organism|ArterialBlood|Volume [l]").ShouldBeTrue();
}
}
}
1 change: 1 addition & 0 deletions tests/PKSim.Tests/PKSim.Tests.csproj
Expand Up @@ -1170,6 +1170,7 @@
<None Include="Data\PopulationFiles\pop_10_semi_colon.csv" />
<None Include="Data\PopulationFiles\pop_3.csv" />
<None Include="Data\PopulationFiles\pop_3_advanced_parameter.csv" />
<None Include="Data\PopulationFiles\pop_3_duplicated_column.csv" />
<None Include="Data\PopulationFiles\unknown_3.csv" />
<None Include="Data\PopulationRange_565.pksim5" />
<None Include="Data\Population_515.pksim5" />
Expand Down

0 comments on commit eac29a3

Please sign in to comment.