Configuration Files Parameters¶
The configuration file contains all the parameters necessary to generate a breast phantom. They are divided into several categories, primarily by tissue type. In the following tables each parameter is given a brief description.
base parameters¶
| Name | Type | Notes |
|---|---|---|
| base.outputDir | string | directory output files are saved to |
| base.imgRes | float (mm) | voxel size |
| base.skinThick | float (mm) | thickness of skin |
| base.nippleLen | float (mm) | length of nipple |
| base.nippleRad | float (mm) | radius of nipple |
| base.areolaRad | float (mm) | radius of thicker skin around nipple |
| base.leftBreast | Boolean | true for left breast, false for right breast |
| base.targetFatFrac | float (mm) | desired fraction of interior breast volume containing fat |
| base.seed | integer | random number seed (chosen randomly if not specified) |
shape parameters¶
| Name | Type | Notes |
|---|---|---|
| shape.ures | float | mesh resolution for breast shape |
| shape.vres | float | mesh resolution for breast shape |
| shape.pointSep | float (mm) | minimum point separation for point cloud |
| shape.ringWidth | float (mm) | thickness of muscle backing layer |
| shape.ringSep | float (mm) | mesh resolution for muscle layer |
| shape.featureAngle | float (degrees) | minimum angle to preserve during mesh smoothing |
| shape.targetReduction | float | fraction of triangles to remain after decimation |
| shape.a1b | float | scale of breast bottom |
| shape.a1t | float | scale of breast top |
| shape.a2l | float | scale of breast left side |
| shape.a2r | float | scale of breast right side |
| shape.a3 | float | breast outward scale |
| shape.eps1 | float | u direction quadric shape exponent |
| shape.eps2 | float | v direction quadric shape exponent |
| shape.doPtosis | Boolean | if true include ptosis in shape |
| shape.ptosisB0 | float | ptosis parameter B0 |
| shape.ptosisB1 | float | ptosis parameter B1 |
| shape.doTurn | Boolean | if true include turn deformation |
| shape.turnC0 | float | turn deformation parameter C0 |
| shape.turnC1 | float | turn deformation parameter C1 |
| shape.doTopShape | Boolean | if true include top shape deformation |
| shape.topShapeS0 | float | top shape deformation parameter S0 |
| shape.topShapeS1 | float | top shape deformation parameter S1 |
| shape.topShapeT0 | float | top shape deformation parameter T0 |
| shape.topShapeT1 | float | top shape deformation parameter T1 |
| shape.doFlattenSide | Boolean | if true include flatten side deformation |
| shape.flattenSideG0 | float | flatten side deformation parameter G0 |
| shape.flattenSideG1 | float | flatten side deformation parameter G1 |
| shape.doTurnTop | Boolean | if true include turn top deformation |
| shape.turnTopH0 | float | turn top deformation parameter H0 |
| shape.turnTopH1 | float | turn top deformation parameter H1 |
glandular compartment parameters¶
| Name | Type | Notes |
|---|---|---|
| compartments.num | integer | number of glandular compartments |
| compartments.seedBaseDist | float (mm) | distance along nipple line of compartment seed base |
| compartments.backFatBufferFrac | float | fraction of breast at muscle layer forced to be fat |
| compartments.numBackSeeds | integer | number of back plane Voronoi seeds |
| compartments.angularJitter | float | compartment Voronoi seed jitter (fraction of subtended angle) |
| compartments.zJitter | float (mm) | maximum compartment Voronoi seed jitter in direction of nipple |
| compartments.maxFracRadialDist | float | maximum radial distance from base seed as a fraction of distance to breast surface |
| compartments.minFracRadialDist | float | minimum radial distance from base seed as a fraction of distance to breast surface |
| compartments.minScaleNippleDir | float | minimum scale in nipple direction |
| compartments.maxScaleNippleDir | float | maximum scale in nipple direction |
| compartments.minScale | float | minimum scale in non-nipple direction |
| compartments.maxScale | float | maximum scale in non-nipple direction |
| compartments.minGlandStrength | float | minimum gland strength |
| compartments.maxGlandStrength | float | maximum gland strength |
| compartments.maxDeflect | float | maximum compartment deflection angle from pointing towards nipple (fraction of pi) |
| compartments.minSkinScaleNippleDir | float | minimum scale skin seeds in nipple direction |
| compartments.maxSkinScaleNippleDir | float | maximum scale skin seeds in nipple direction |
| compartments.minSkinScale | float | minimum scale skin in non-nipple direction |
| compartments.maxSkinScale | float | maximum scale skin in non-nipple direction |
| compartments.skinStrength | float | skin strength |
| compartments.backScale | float | back scale |
| compartments.backStrength | float | back strength |
| compartments.nippleScale | float | nipple scale |
| compartments.nippleStrength | float | nipple strength |
| compartments.voronSeedRadius | float (mm) | radius from point to check Voronoi seed distance |
TDLU parameters¶
| Name | Type | Notes |
|---|---|---|
| TDLU.maxLength | float (mm) | maximum TDLU length |
| TDLU.minLength | float (mm) | minimum TDLU length |
| TDLU.maxWidth | float (mm) | maximum TDLU width |
| TDLU.minWidth | float (mm) | minimum TDLU width |
Perlin noise parameters¶
| Name | Type | Notes |
|---|---|---|
| perlin.maxDeviation | float | maximum fraction of radius deviation |
| perlin.frequency | float | starting frequency |
| perlin.lacunarity | float | octave frequency multiplier |
| perlin.persistence | float | octave signal decay |
| perlin.numOctaves | integer | number of frequency octaves |
| perlin.xNoiseGen | integer | x direction noise generation seed |
| perlin.yNoiseGen | integer | y direction noise generation seed |
| perlin.zNoiseGen | integer | z direction noise generation seed |
| perlin.seedNoiseGen | integer | seed noise generation |
| perlin.shiftNoiseGen | integer | shift noise generation seed |
Compartment boundary noise parameters¶
| Name | Type | Notes |
|---|---|---|
| boundary.maxDeviation | float | maximum fraction of distance deviation |
| boundary.frequency | float | starting frequency |
| boundary.lacunarity | float | octave frequency multiplier |
| boundary.persistence | float | octave signal decay |
fat lobule boundary perturbation noise parameters¶
| Name | Type | Notes |
|---|---|---|
| perturb.maxDeviation | float | maximum fraction of distance deviation |
| perturb.frequency | float | starting frequency |
| perturb.lacunarity | float | octave frequency multiplier |
| perturb.persistence | float | octave signal decay |
fat glandular buffer noise parameters¶
| Name | Type | Notes |
|---|---|---|
| buffer.maxDeviation | float | maximum fraction of distance deviation |
| buffer.frequency | float | starting frequency |
| buffer.lacunarity | float | octave frequency multiplier |
| buffer.persistence | float | octave signal decay |
Voronoi segmentation variables¶
| Name | Type | Notes |
|---|---|---|
| voronoi.fatInFatSeedDensity | float (mm^-3) | fat voronoi seed density |
| voronoi.fatInGlandSeedDensity | float (mm^-3) | fat voronoi seed in glandular tissue density |
| voronoi.glandInGlandSeedDensity | float (mm^-3) | glandular voronoi seed density |
| voronoi.TDLUDeflectMax | float | maximum deflection (fraction of pi) |
| voronoi.minScaleLenTDLU | float | minimum length scale |
| voronoi.maxScaleLenTDLU | float | maximum length scale |
| voronoi.minScaleWidTDLU | float | minimum width scale |
| voronoi.maxScaleWidTDLU | float | maximum width scale |
| voronoi.minStrTDLU | float | minimum strength |
| voronoi.maxStrTDLU | float | maximum strength |
| voronoi.fatInFatDeflectMax | float | maximum deflection (fraction of pi) |
| voronoi.minScaleLenFatInFat | float | minimum length scale |
| voronoi.maxScaleLenFatInFat | float | maximum length scale |
| voronoi.minScaleWidFatInFat | float | minimum width scale |
| voronoi.maxScaleWidFatInFat | float | maximum width scale |
| voronoi.minStrFatInFat | float | minimum strength |
| voronoi.maxStrFatInFat | float | maximum strength |
| voronoi.fatInGlandDeflectMax | float | maximum deflection (fraction of pi) |
| voronoi.minScaleLenFatInGland | float | minimum length scale |
| voronoi.maxScaleLenFatInGland | float | maximum length scale |
| voronoi.minScaleWidFatInGland | float | minimum width scale |
| voronoi.maxScaleWidFatInGland | float | maximum width scale |
| voronoi.minStrFatInGland | float | minimum strength |
| voronoi.maxStrFatInGland | float | maximum strength |
| voronoi.glandInGlandDeflectMax | float | maximum deflection (fraction of pi) |
| voronoi.minScaleLenGlandInGland | float | minimum length scale |
| voronoi.maxScaleLenGlandInGland | float | maximum length scale |
| voronoi.minScaleWidGlandInGland | float | minimum width scale |
| voronoi.maxScaleWidGlandInGland | float | maximum width scale |
| voronoi.minStrGlandInGland | float | minimum strength |
| voronoi.maxStrGlandInGland | float | maximum strength |
| voronoi.seedRadius | float (mm) | check seeds in radius |
fat lobule parameters¶
| Name | Type | Notes |
|---|---|---|
| fat.minLobuleAxis | float (mm) | min lobule axis length |
| fat.maxLobuleAxis | float (mm) | max lobule axis length |
| fat.minAxialRatio | float | axial ratio min |
| fat.maxAxialRatio | float | axial ratio max |
| fat.minLobuleGap | float | minimum ligament separation between lobules |
| fat.maxCoeffStr | float | maximum of absolute value of Fourier coefficient as fraction of main radius |
| fat.minCoeffStr | float | minimum of absolute value of Fourier coefficient as fraction of main radius |
| fat.maxLobuleTry | integer | maximum number of trial lobules |
ductal tree parameters¶
| Name | Type | Notes |
|---|---|---|
| ductTree.maxBranch | integer | target number of branches |
| ductTree.maxGen | integer | maximum generation |
| ductTree.initRad | float (mm) | initial radius of tree |
| ductTree.nFillX | integer | number of voxels for tree density tracking |
| ductTree.nFillY | integer | number of voxels for tree density tracking |
| ductTree.nFillZ | integer | number of voxels for tree density tracking |
ductal branch parameters¶
| Name | Type | Notes |
|---|---|---|
| ductBr.minLen0 | float (mm) | minimum and maximum branch lengths per level |
| ductBr.maxLen0 | float (mm) | minimum and maximum branch lengths per level |
| ductBr.minLen1 | float (mm) | minimum and maximum branch lengths per level |
| ductBr.maxLen1 | float (mm) | minimum and maximum branch lengths per level |
| ductBr.minLen2 | float (mm) | minimum and maximum branch lengths per level |
| ductBr.maxLen2 | float (mm) | minimum and maximum branch lengths per level |
| ductBr.minLenDefault | float (mm) | minimum and maximum branch lengths per level |
| ductBr.maxLenDefault | float (mm) | minimum and maximum branch lengths per level |
| ductBr.maxChild | integer | maximum number of children |
| ductBr.childMinRad | float (mm) | minimum branch radius to have children |
| ductBr.childLevBound | integer | |
| ductBr.child00 | float | |
| ductBr.child01 | float | |
| ductBr.child02 | float | |
| ductBr.child10 | float | |
| ductBr.child11 | float | |
| ductBr.child12 | float | |
| ductBr.child20 | float | |
| ductBr.child21 | float | |
| ductBr.child22 | float | |
| ductBr.child30 | float | |
| ductBr.child31 | float | |
| ductBr.child32 | float | |
| ductBr.child40 | float | |
| ductBr.child41 | float | |
| ductBr.child42 | float | |
| ductBr.minRadFrac | float | minimum starting radius as a fraction of parent end radius |
| ductBr.maxRadFrac | float | maximum starting radius as a fraction of parent end radius |
| ductBr.radFrac0 | float | starting radius as fraction of parent end radius for first child |
| ductBr.minAngle | float | min angle between parent end direction and child start direction for children after first (fraction of pi radians) |
| ductBr.maxAngle | float | max angle between parent end direction and child start direction for children after first (fraction of pi radians) |
ductal segment parameters¶
| Name | Type | Notes |
|---|---|---|
| ductSeg.lengthBetaA | float | length distribution shape parameters |
| ductSeg.lengthBetaB | float | length distribution shape parameters |
| ductSeg.radiusBetaA | float | radius distribution shape parameters |
| ductSeg.radiusBetaB | float | radius distribution shape parameters |
| ductSeg.minLen | float (mm) | min and max segment length |
| ductSeg.maxLen | float (mm) | min and max segment length |
| ductSeg.maxCurvRad | float (mm) | maximum radius of curvature |
| ductSeg.maxCurvFrac | float | maximum length of segment based on curvature (fraction of pi radians) |
| ductSeg.ductSeg.minEndRad | float | min and max end radius as fraction of start radius |
| ductSeg.maxEndRad | float | min and max end radius as fraction of start radius |
| ductSeg.angleWt | float | cost function preferential angle weighting |
| ductSeg.densityWt | float | cost function density weighting |
| ductSeg.numTry | integer | number of trial segments to generate |
| ductSeg.maxTry | integer | maximum number of segments to generate before giving up and reducing length |
| ductSeg.absMaxTry | integer | total number of segment tries before completely giving up |
| ductSeg.roiStep | float (mm) | step size for checking segment is valid |
vessel tree parameters¶
| Name | Type | Notes |
|---|---|---|
| vesselTree.maxBranch | integer | target number of branches |
| vesselTree.maxGen | integer | maximum generation |
| vesselTree.initRad | float (mm) | initial radius of tree |
| vesselTree.nFillX | integer | number of voxels for tree density tracking |
| vesselTree.nFillY | integer | number of voxels for tree density tracking |
| vesselTree.nFillZ | integer | number of voxels for tree density tracking |
vessel branch parameters¶
| Name | Type | Notes |
|---|---|---|
| vesselBr.minLen0 | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.maxLen0 | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.minLen1 | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.maxLen1 | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.minLen2 | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.maxLen2 | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.minLenDefault | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.maxLenDefault | float (mm) | minimum and maximum branch lengths per level |
| vesselBr.maxChild | int | maximum number of children |
| vesselBr.childMinRad | float | minimum branch radius to have children (mm) |
| vesselBr.childLevBound | integer | |
| vesselBr.child00 | float | |
| vesselBr.child01 | float | |
| vesselBr.child02 | float | |
| vesselBr.child10 | float | |
| vesselBr.child11 | float | |
| vesselBr.child12 | float | |
| vesselBr.child20 | float | |
| vesselBr.child21 | float | |
| vesselBr.child22 | float | |
| vesselBr.child30 | float | |
| vesselBr.child31 | float | |
| vesselBr.child32 | float | |
| vesselBr.child40 | float | |
| vesselBr.child41 | float | |
| vesselBr.child42 | float | |
| vesselBr.minRadFrac | float | minimum starting radius as a fraction of parent end radius |
| vesselBr.maxRadFrac | float | maximum starting radius as a fraction of parent end radius |
| vesselBr.radFrac0 | float | starting radius as fraction of parent end radius for first child |
| vesselBr.minAngle | float | min angle between parent end direction and child start direction for children after first (fraction of pi radians) |
| vesselBr.maxAngle | float | max angle between parent end direction and child start direction for children after first (fraction of pi radians) |
vessel segment parameters¶
| Name | Type | Notes |
|---|---|---|
| vesselSeg.lengthBetaA | float | length distribution shape parameters |
| vesselSeg.lengthBetaB | float | length distribution shape parameters |
| vesselSeg.radiusBetaA | float | radius distribution shape parameters |
| vesselSeg.radiusBetaB | float | radius distribution shape parameters |
| vesselSeg.minLen | float (mm) | min and max segment length |
| vesselSeg.maxLen | float (mm) | min and max segment length |
| vesselSeg.maxCurvRad | float (mm) | maximum radius of curvature |
| vesselSeg.maxCurvFrac | float | maximum length of segment based on curvature (fraction of pi radians) |
| vesselSeg.minEndRad | float | min and max end radius as fraction of start radius |
| vesselSeg.maxEndRad | float | min and max end radius as fraction of start radius |
| vesselSeg.angleWt | float | cost function preferential angle weighting |
| vesselSeg.densityWt | float | cost function density weighting |
| vesselSeg.numTry | integer | number of trial segments to generate |
| vesselSeg.maxTry | integer | maximum number of segments to generate before giving up and reducing length |
| vesselSeg.absMaxTry | integer | total number of segment tries before completely giving up |
| vesselSeg.roiStep | float (mm) | step size for checking segment is valid |