Exemplo n.º 1
0
 /// <summary>
 /// Set the absorbers and the scatterer for the specified tissue type
 /// </summary>
 /// <param name="tissueType">Tissue type</param>
 private void SetPredefinedTissueDefinitions(TissueType tissueType) // this data should be in XML
 {
     TissueType = tissueType;
     Absorbers  = TissueProvider.CreateAbsorbers(tissueType);
     Scatterer  = TissueProvider.CreateScatterer(tissueType);
     N          = 1.4;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Sets the values for the first prefactor, the first exponent, the second prefactor and the second exponent for the given tissue type
        /// Skin: 1.2, 1.42, 0.0, 0.0
        /// Breast (pre-menopause): 0.67, 0.95, 0.0, 0.0
        /// Breast (post-menopause): 0.72, 0.58, 0.0, 0.0
        /// Brain (white matter): 3.56, 0.84, 0.0, 0.0
        /// Brain (grey matter): 0.56, 1.36, 0.0, 0.0
        /// Liver: 0.84, 0.55, 0.0, 0.0
        /// Custom: 1.0, 0.1, 0.0, 0.0
        /// </summary>
        /// <param name="tissueType">Tissue type</param>
        public void SetTissueType(TissueType tissueType)
        {
            switch (tissueType)
            {
            case (TissueType.Skin):
                A = 1.2;
                B = 1.42;
                C = 0.0;
                D = 0.0;
                break;

            case TissueType.BreastPreMenopause:
                A = 0.67;
                B = 0.95;
                C = 0.0;
                D = 0.0;
                break;

            case TissueType.BreastPostMenopause:
                A = 0.72;
                B = 0.58;
                C = 0.0;
                D = 0.0;
                break;

            case (TissueType.BrainWhiteMatter):
                A = 3.56;
                B = 0.84;
                C = 0.0;
                D = 0.0;
                break;

            case (TissueType.BrainGrayMatter):
                A = 0.56;
                B = 1.36;
                C = 0.0;
                D = 0.0;
                break;

            case (TissueType.Liver):
                A = 0.84;
                B = 0.55;
                C = 0.0;
                D = 0.0;
                break;

            case (TissueType.Custom):
                A = 1;
                B = 0.1;
                C = 0.0;
                D = 0.0;
                break;

            default:
                throw new ArgumentOutOfRangeException("tissueType");
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Sends a cell to a randomly-selected type-specific tissue.
        /// </summary>
        /// <param name="cell">The cell to be sent to another tissue.</param>
        /// <param name="tissueType">The type of destination tissue.</param>
        protected void SendCellToRandomTissue(Cell cell, TissueType tissueType)
        {
            var typeAddresses =
                from address in addressList where (address.Value == tissueType) select address.Key;

            var typeCount = typeAddresses.Count();

            if (typeCount > 0)
            {
                int randIx = RandGen.Next(0, typeCount);
                SendCell(cell, typeAddresses.ElementAt(randIx));
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Sets the scatterer type for the specified tissue type
        /// </summary>
        /// <param name="tissueType">Tissue type</param>
        public static IScatterer CreateScatterer(TissueType tissueType)
        {
            switch (tissueType)
            {
            case TissueType.Skin:
            case TissueType.Liver:
            case TissueType.BrainWhiteMatter:
            case TissueType.BrainGrayMatter:
            case TissueType.BreastPreMenopause:
            case TissueType.BreastPostMenopause:
            case TissueType.Custom:
                return(new PowerLawScatterer(tissueType));

            case TissueType.IntralipidPhantom:
                return(new IntralipidScatterer());

            case TissueType.PolystyreneSpherePhantom:
                return(new MieScatterer());

            default:
                throw new ArgumentOutOfRangeException("tissueType");
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Creates a power law scatterer using the specified tissue type
 /// </summary>
 /// <param name="tissueType">The tissue type as defined by the Enum <see cref="Vts.TissueType">TissueType</see></param>
 public PowerLawScatterer(TissueType tissueType)
 {
     SetTissueType(tissueType);
 }
Exemplo n.º 6
0
 public AddressNotification(Address address, TissueType tissueType, NotifyReason reason)
 {
     Address    = address;
     TissueType = tissueType;
     Reason     = reason;
 }
Exemplo n.º 7
0
 /// <summary>
 /// Creates a tissue with the specified tissue type
 /// </summary>
 /// <param name="tissueType">Tissue type</param>
 public Tissue(TissueType tissueType)
 {
     TissueType = tissueType;
     SetPredefinedTissueDefinitions(tissueType);
     Name = tissueType.ToString();
 }
Exemplo n.º 8
0
        /// <summary>
        /// Creates standard templates lists of absorbers for the specified tissue type
        /// </summary>
        /// <param name="tissueType">Tissue type</param>
        public static IChromophoreAbsorber[] CreateAbsorbers(TissueType tissueType)
        {
            // todo: this should come from a file...
            var defaultAbsorberDictionary = new Dictionary <TissueType, Dictionary <ChromophoreType, double> >
            {
                //ref: Meglinski, Matcher, Computer Methods and Programs in Biomedicine 70, 2003, 179-186.
                {
                    TissueType.Skin,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Hb, 28.4 },
                        { ChromophoreType.HbO2, 22.4 },
                        { ChromophoreType.H2O, 0.7 },
                        { ChromophoreType.Fat, 0.0 },
                        { ChromophoreType.Melanin, 0.0051 },
                    }
                },
                {
                    TissueType.BreastPreMenopause,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Hb, 6.9 },
                        { ChromophoreType.HbO2, 19.6 },
                        { ChromophoreType.H2O, 0.345 },
                        { ChromophoreType.Fat, 0.41 },
                    }
                },
                {
                    TissueType.BreastPostMenopause,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Hb, 3.75 },
                        { ChromophoreType.HbO2, 11.25 },
                        { ChromophoreType.H2O, 0.205 },
                        { ChromophoreType.Fat, 0.585 },
                    }
                },
                {
                    TissueType.BrainWhiteMatter,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Hb, 24 },
                        { ChromophoreType.HbO2, 56 },
                        { ChromophoreType.H2O, 0.80 },
                        { ChromophoreType.Fat, 0.12 },
                    }
                },
                {
                    TissueType.BrainGrayMatter,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Hb, 24 },
                        { ChromophoreType.HbO2, 56 },
                        { ChromophoreType.H2O, 0.80 },
                        { ChromophoreType.Fat, 0.12 },
                    }
                },
                {
                    TissueType.Liver,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Hb, 66 },
                        { ChromophoreType.HbO2, 124 },
                        { ChromophoreType.H2O, 0.87 },
                        { ChromophoreType.Fat, 0.02 },
                    }
                },
                {
                    TissueType.IntralipidPhantom,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Nigrosin, 0.01 }
                    }
                },
                {
                    TissueType.PolystyreneSpherePhantom,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Nigrosin, 0.01 }
                    }
                },
                {
                    TissueType.Custom,
                    new Dictionary <ChromophoreType, double>
                    {
                        { ChromophoreType.Hb, 20 },
                        { ChromophoreType.HbO2, 20 },
                        { ChromophoreType.H2O, 0.0 },
                        { ChromophoreType.Fat, 0.0 },
                        { ChromophoreType.Melanin, 0.0 },
                    }
                }
            };

            var absorbers = defaultAbsorberDictionary[tissueType]
                            .Select(kvp => new ChromophoreAbsorber(kvp.Key, kvp.Value))
                            .ToArray();

            return(absorbers);
        }
Exemplo n.º 9
0
 public Tissue(TissueType type)
 {
     Type = type;
 }
Exemplo n.º 10
0
		public Tissue(TissueType type)
		{
			Type = type;
		}
Exemplo n.º 11
0
		/// <summary>
		/// Sends a cell to a randomly-selected type-specific tissue.
		/// </summary>
		/// <param name="cell">The cell to be sent to another tissue.</param>
		/// <param name="tissueType">The type of destination tissue.</param>
		protected void SendCellToRandomTissue(Cell cell, TissueType tissueType)
		{
			var typeAddresses =
				from address in addressList where (address.Value == tissueType) select address.Key;

			var typeCount = typeAddresses.Count();
			if (typeCount > 0)
			{
				int randIx = RandGen.Next(0, typeCount);
				SendCell(cell, typeAddresses.ElementAt(randIx));
			}
		}
Exemplo n.º 12
0
		public AddressNotification(Address address, TissueType tissueType, NotifyReason reason)
		{
			Address = address;
			TissueType = tissueType;
			Reason = reason;
		}