/// <summary> /// Method to verify refractive index of tissue layer and ellipsoid match. /// Code does not yet include reflecting/refracting off ellipsoid surface. /// </summary> /// <param name="layers">list of LayerTissueRegion</param> /// <param name="ellipsoid">EllipsoidTissueRegion></param> /// <returns>ValidationResult</returns> private static ValidationResult ValidateRefractiveIndexMatch( IList <LayerTissueRegion> layers, EllipsoidTissueRegion ellipsoid) { int containingLayerIndex = -1; for (int i = 0; i < layers.Count - 1; i++) { if (layers[i].ContainsPosition(ellipsoid.Center) && ellipsoid.Center.Z + ellipsoid.Dz <= layers[i].ZRange.Stop && ellipsoid.Center.Z - ellipsoid.Dz >= layers[i].ZRange.Start) { containingLayerIndex = i; } } if ((containingLayerIndex != -1) && (layers[containingLayerIndex].RegionOP.N != ellipsoid.RegionOP.N)) { return(new ValidationResult( false, "SingleEllipsoidTissueInput: refractive index of tissue layer must match that of ellipsoid", "Change N of ellipsoid to match tissue layer N")); } return(new ValidationResult( true, "SingleEllipsoidTissueInput: refractive index of tissue and ellipsoid match")); }
public void Verify_region_is_air() { var ellisoidTissueRegion = new EllipsoidTissueRegion { RegionOP = { G = 0.8, Mua = 0D, Mus = 1E-10 } }; ellisoidTissueRegion.RegionOP.G = 1.4; var viewModel = new EllipsoidRegionViewModel(ellisoidTissueRegion, "TestEllipsiodTissue"); Assert.IsTrue(ellisoidTissueRegion.IsAir()); Assert.AreEqual("TestEllipsiodTissue" + StringLookup.GetLocalizedString("Label_Air"), viewModel.Name); }
public EllipsoidRegionViewModel(EllipsoidTissueRegion region, string name) { _region = region; _name = name ?? ""; _opticalPropertyVm = new OpticalPropertyViewModel(_region.RegionOP, StringLookup.GetLocalizedString("Measurement_Inv_mm"), "", true, true, true, false); }
public void create_instance_of_class() { _ellipsoidTissueRegion = new EllipsoidTissueRegion( new Position(0, 0, 3), 1.0, 1.0, 2.0, new OpticalProperties(0.01, 1.0, 0.8, 1.4)); }
public EllipsoidRegionViewModel(EllipsoidTissueRegion region, string name) { _region = region; _name = name ?? ""; _opticalPropertyVM = new OpticalPropertyViewModel(_region.RegionOP, "mm-1", "", true, true, true, false); }
/// <summary> /// Method to validate that the geometry of tissue layers and ellipsoid agree with capabilities /// of code. /// </summary> /// <param name="layers">list of LayerTissueRegion</param> /// <param name="ellipsoid">EllipsoidTissueRegion</param> /// <returns>ValidationResult</returns> private static ValidationResult ValidateGeometry(IList <LayerTissueRegion> layers, EllipsoidTissueRegion ellipsoid) { // check that layer definition is valid var tempResult = MultiLayerTissueInputValidation.ValidateLayers(layers); if (!tempResult.IsValid) { return(tempResult); } if ((ellipsoid.Dx == 0) || (ellipsoid.Dy == 0) || (ellipsoid.Dz == 0)) { tempResult = new ValidationResult( false, "SingleEllipsoidTissueInput: ellipsoid has a radial axis equal to 0", "SingleEllipsoidTissueInput: make sure Dx, Dy, Dz are > 0"); } if (!tempResult.IsValid) { return(tempResult); } // test for air layers and eliminate from list var tissueLayers = layers.Where(layer => !layer.IsAir()); // check that there is at least one layer of tissue if (!tissueLayers.Any()) { tempResult = new ValidationResult( false, "SingleEllipsoidTissueInput: tissue layer is assumed to be at least a single layer with air layer above and below", "SingleEllipsoidTissueInput: redefine tissue definition to contain at least a single layer of tissue"); } if (!tempResult.IsValid) { return(tempResult); } // check that ellipsoid contained within a tissue layer bool correctlyContainedInLayer = tissueLayers.Any( layer => layer.ContainsPosition(ellipsoid.Center) && ellipsoid.Center.Z + ellipsoid.Dz <= layer.ZRange.Stop && ellipsoid.Center.Z - ellipsoid.Dz >= layer.ZRange.Start ); if (!correctlyContainedInLayer) { tempResult = new ValidationResult( false, "SingleEllipsoidTissueInput: ellipsoid must be entirely contained within a tissue layer", "Resize Dz of Ellipsoid dimension so that 2*Dz<layer[1] depth"); } if (!tempResult.IsValid) { return(tempResult); } return(new ValidationResult( true, "SingleEllipsoidTissueInput: geometry and refractive index settings validated")); }