From c9c223d372ab44b3e73287c98236ac35605c2928 Mon Sep 17 00:00:00 2001 From: elias-soltani Date: Thu, 18 Aug 2022 00:19:41 +1200 Subject: [PATCH] Add bladder markers --- src/scaffoldmaker/annotation/bladder_terms.py | 6 +++++ .../meshtypes/meshtype_3d_bladderurethra1.py | 22 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/scaffoldmaker/annotation/bladder_terms.py b/src/scaffoldmaker/annotation/bladder_terms.py index b937bc4c..286c4fe3 100644 --- a/src/scaffoldmaker/annotation/bladder_terms.py +++ b/src/scaffoldmaker/annotation/bladder_terms.py @@ -16,11 +16,17 @@ ("dorsal part of serosa of neck of urinary bladder", "ILX:0739280"), ("dorsal part of serosa of urethra", "ILX:0739283"), ("dorsal part of serosa of urinary bladder", "ILX:0739248"), + ("external urethral sphincter", "UBERON:0004919"), # urinary_5 + ("fundus of urinary bladder", "UBERON:0006082"), # urinary_3 + ("hypogastric nerve", "UBERON:0005303"), # "keast_5" ("left hemi-bladder", "ILX:0793661"), + ("lumbar splanchnic nerve", "UBERON:0018683"), # "keast_7" ("lumen of body of urinary bladder", "ILX:0739252"), ("lumen of neck of urinary bladder", "ILX:0739256"), ("lumen of urethra", "UBERON:0010390", "ILX:0736762"), ("neck of urinary bladder", "UBERON:0001258", "FMA:15912"), + ("pelvic splanchnic nerve", "UBERON:0018675"), # "keast_4" + ("pudendal nerve", "UBERON:0011390"), # keast_2 ("right hemi-bladder", "ILX:0793662"), ("serosa of body of urinary bladder", "ILX:0739276"), ("serosa of neck of urinary bladder", "ILX:0739277"), diff --git a/src/scaffoldmaker/meshtypes/meshtype_3d_bladderurethra1.py b/src/scaffoldmaker/meshtypes/meshtype_3d_bladderurethra1.py index 405add15..bbbe23d4 100644 --- a/src/scaffoldmaker/meshtypes/meshtype_3d_bladderurethra1.py +++ b/src/scaffoldmaker/meshtypes/meshtype_3d_bladderurethra1.py @@ -8,7 +8,8 @@ import math from opencmiss.utils.zinc.field import findOrCreateFieldGroup, findOrCreateFieldNodeGroup, \ - findOrCreateFieldStoredMeshLocation, findOrCreateFieldStoredString + findOrCreateFieldStoredMeshLocation, findOrCreateFieldStoredString, findOrCreateFieldCoordinates +from opencmiss.utils.zinc.finiteelement import getMaximumNodeIdentifier from opencmiss.zinc.element import Element from opencmiss.zinc.field import Field from opencmiss.zinc.node import Node @@ -1163,6 +1164,25 @@ def generateBaseMesh(cls, region, options): bladderNodesetGroup.addNode(markerPoint) nodeIdentifier += 1 + ################ + # point markers + ################ + + markerTermNameBrainstemCoordinatesMap = { + # "pudendal nerve": [0.0, 1.0, 0.0], + # "pelvic splanchnic nerve": [0.0, 1.0, 0.0], + # "hypogastric nerve": [0.0, 1.0, 0.0], + # "lumbar splanchnic nerve": [0.0, 1.0, 0.0], + "fundus of urinary bladder": [14.6, 0.01, 23.1], + "external urethral sphincter": [-1.5, 6.7, 110.5], + } + bladder_coordinates = findOrCreateFieldCoordinates(fm) + nodeIdentifier = max(1, getMaximumNodeIdentifier(nodes) + 1) + for termName, brainstemCoordinatesValues in markerTermNameBrainstemCoordinatesMap.items(): + annotationGroup = findOrCreateAnnotationGroupForTerm(annotationGroups, region, get_bladder_term(termName)) + annotationGroup.createMarkerNode(nodeIdentifier, bladder_coordinates, brainstemCoordinatesValues) + nodeIdentifier += 1 + fm.endChange() return annotationGroups