public void should_update_elderly_ICRP_organ_volumes() { var meanStdRatios = new[] { new { organ = CoreConstants.Organ.ArterialBlood, maleRatio = 0.05, femaleRatio = 0.05 }, new { organ = CoreConstants.Organ.Bone, maleRatio = 0.011059, femaleRatio = 0.01 }, new { organ = CoreConstants.Organ.Gonads, maleRatio = 0.05, femaleRatio = 0.05 }, new { organ = CoreConstants.Organ.Kidney, maleRatio = 0.24628, femaleRatio = 0.25 }, new { organ = CoreConstants.Organ.LargeIntestine, maleRatio = 0.14, femaleRatio = 0.14 }, new { organ = CoreConstants.Organ.Liver, maleRatio = 0.25, femaleRatio = 0.25 }, new { organ = CoreConstants.Organ.Pancreas, maleRatio = 0.2689, femaleRatio = 0.28 }, new { organ = CoreConstants.Organ.Skin, maleRatio = 0.05, femaleRatio = 0.05 }, new { organ = CoreConstants.Organ.VenousBlood, maleRatio = 0.05, femaleRatio = 0.05 } }; foreach (var meanStdRatio in meanStdRatios) { var volumeParameters = _parameterDistributionRepository.All().Where(pd => isElderlyICRPVolumeParameterIn(pd, meanStdRatio.organ)); foreach (var volumeParameter in volumeParameters) { if (meanStdRatio.organ.Equals(CoreConstants.Organ.Liver) && volumeParameter.Gender.Equals(CoreConstants.Gender.Male)) { continue; //no update for this combination } var ratio = volumeParameter.Deviation / volumeParameter.Mean; var expectedRatio = volumeParameter.Gender.Equals(CoreConstants.Gender.Male) ? meanStdRatio.maleRatio : meanStdRatio.femaleRatio; ratio.ShouldBeEqualTo(expectedRatio, 1e-3, $"{meanStdRatio.organ}.{volumeParameter.Gender}.{volumeParameter.Age} years"); } } }
public void should_update_elderly_ICRP_organ_volumes() { var meanStdRatios = new[] { new { organ = ARTERIAL_BLOOD, maleRatio = 0.05, femaleRatio = 0.05 }, new { organ = BONE, maleRatio = 0.011059, femaleRatio = 0.01 }, new { organ = GONADS, maleRatio = 0.05, femaleRatio = 0.05 }, new { organ = KIDNEY, maleRatio = 0.24628, femaleRatio = 0.25 }, new { organ = LARGE_INTESTINE, maleRatio = 0.14, femaleRatio = 0.14 }, new { organ = LIVER, maleRatio = 0.25, femaleRatio = 0.25 }, new { organ = PANCREAS, maleRatio = 0.2689, femaleRatio = 0.28 }, new { organ = SKIN, maleRatio = 0.05, femaleRatio = 0.05 }, new { organ = VENOUS_BLOOD, maleRatio = 0.05, femaleRatio = 0.05 } }; foreach (var meanStdRatio in meanStdRatios) { var volumeParameters = _parameterDistributionRepository.All().Where(pd => isElderlyICRPVolumeParameterIn(pd, meanStdRatio.organ)); foreach (var volumeParameter in volumeParameters) { if (meanStdRatio.organ.Equals(LIVER) && volumeParameter.Gender.Equals(CoreConstants.Gender.MALE)) { continue; //no update for this combination } var ratio = volumeParameter.Deviation / volumeParameter.Mean; var expectedRatio = volumeParameter.Gender.Equals(CoreConstants.Gender.MALE) ? meanStdRatio.maleRatio : meanStdRatio.femaleRatio; ratio.ShouldBeEqualTo(expectedRatio, 1e-3, $"{meanStdRatio.organ}.{volumeParameter.Gender}.{volumeParameter.Age} years"); } } }
public void should_update_nhanes_values() { var nhanesParams = _parameterDistributionRepository.All().Where(pd => pd.Population.EndsWith("NHANES_1997")).ToList(); var bwParams = nhanesParams.Where(p => p.ParameterName.Equals(CoreConstants.Parameters.MEAN_WEIGHT)).ToList(); var heightParams = nhanesParams.Where(p => p.ParameterName.Equals(CoreConstants.Parameters.MEAN_HEIGHT)).ToList(); var volumeParams = nhanesParams.Where(p => p.ParameterName.Equals(Constants.Parameters.VOLUME)).ToList(); //check number of new bw/height/volume parameters (bwParams.Count + heightParams.Count + volumeParams.Count).ShouldBeEqualTo(1420); //check some height standard deviations var teenHeightParams = heightParams.Where(p => p.Age == 13 || p.Age == 15).ToList(); teenHeightParams.Count.ShouldBeEqualTo(2 * 2 * 3); //2 age groups*2genders*3populations teenHeightParams.Each(p => p.Deviation.ShouldBeGreaterThan(0.6)); }
public void should_properly_set_some_value_origins() { var agesWithFilledValueOrigins = new double[] { 0, 1, 5, 10, 15, 30, 40, 50, 60, 70, 80, 90, 100 }; var icrpParams = _parameterDistributionRepository.All() .Where(p => p.Population.Equals(CoreConstants.Population.ICRP)) .Where(p => p.ParameterName.IsOneOf( Constants.Parameters.VOLUME, CoreConstants.Parameters.BLOOD_FLOW)).ToList(); icrpParams.Count.ShouldBeGreaterThanOrEqualTo(agesWithFilledValueOrigins.Length * 2 * 2); //2 Genders * 2 parameters per age foreach (var param in icrpParams) { if (param.Age.IsOneOf(agesWithFilledValueOrigins)) { param.ValueOrigin.IsUndefined.ShouldBeFalse(); } else { param.ValueOrigin.IsUndefined.ShouldBeTrue(); } } }
public IEnumerable <ParameterDistributionMetaData> AllParameterDistributionsFor(OriginData originData) { return(distributedParameterMetaDataFor(_parameterDistributionRepository.All(), originData)); }