docstr: Create the UI settings for the module
docstr_tok: ["Create","the","UI","settings","for","the","module"]
code: def create_settings(self):
      """Create the UI settings for the module"""
      self.seed_objects_name = LabelSubscriber(
          "Select the seed objects",
          "None",
          doc="""\
  Select the previously identified objects that you want to use as the
  seeds for measuring branches and distances. Branches and trunks are assigned
  per seed object. Seed objects are typically not single points/pixels but
  instead are usually objects of varying sizes.""",
      )
  
      self.image_name = ImageSubscriber(
          "Select the skeletonized image",
          "None",
          doc="""\
  Select the skeletonized image of the dendrites and/or axons as produced
  by the **Morph** module’s *Skel* operation.""",
      )
  
      self.wants_branchpoint_image = Binary(
          "Retain the branchpoint image?",
          False,
          doc="""\
  Select "*Yes*" if you want to save the color image of branchpoints and
  trunks. This is the image that is displayed in the output window for
  this module."""
          % globals(),
      )
  
      self.branchpoint_image_name = ImageName(
          "Name the branchpoint image",
          "BranchpointImage",
          doc="""\
  *(Used only if a branchpoint image is to be retained)*
  
  Enter a name for the branchpoint image here. You can then use this image
  in a later module, such as **SaveImages**.""",
      )
  
      self.wants_to_fill_holes = Binary(
          "Fill small holes?",
          True,
          doc="""\
  The algorithm reskeletonizes the image and this can leave artifacts
  caused by small holes in the image prior to skeletonizing. These holes
  result in false trunks and branchpoints. Select "*Yes*" to fill in
  these small holes prior to skeletonizing."""
          % globals(),
      )
  
      self.maximum_hole_size = Integer(
          "Maximum hole size",
          10,
          minval=1,
          doc="""\
  *(Used only when filling small holes)*
  
  This is the area of the largest hole to fill, measured in pixels. The
  algorithm will fill in any hole whose area is this size or smaller.""",
      )
  
      self.wants_objskeleton_graph = Binary(
          "Export the skeleton graph relationships?",
          False,
          doc="""\
  Select "*Yes*" to produce an edge file and a vertex file that gives the
  relationships between vertices (trunks, branchpoints and endpoints)."""
          % globals(),
      )
  
      self.intensity_image_name = ImageSubscriber(
          "Intensity image",
          "None",
          doc="""\
  Select the image to be used to calculate
  the total intensity along the edges between the vertices (trunks, branchpoints, and endpoints).""",
      )
  
      self.directory = Directory(
          "File output directory",
          doc="Select the directory you want to save the graph relationships to.",
          dir_choices=[
              DEFAULT_OUTPUT_FOLDER_NAME,
              DEFAULT_INPUT_FOLDER_NAME,
              ABSOLUTE_FOLDER_NAME,
              DEFAULT_OUTPUT_SUBFOLDER_NAME,
              DEFAULT_INPUT_SUBFOLDER_NAME,
          ],
      )
      self.directory.dir_choice = DEFAULT_OUTPUT_FOLDER_NAME
  
      self.vertex_file_name = Text(
          "Vertex file name",
          "vertices.csv",
          doc="""\
  *(Used only when exporting graph relationships)*
  
  Enter the name of the file that will hold the edge information. You can
  use metadata tags in the file name.
  
  Each line of the file is a row of comma-separated values. The first
  row is the header; this names the file’s columns. Each subsequent row
  represents a vertex in the skeleton graph: either a trunk, a
  branchpoint or an endpoint. The file has the following columns:
  
  -  *image\_number:* The image number of the associated image.
  -  *vertex\_number:* The number of the vertex within the image.
  -  *i:* The I coordinate of the vertex.
  -  *j:* The J coordinate of the vertex.
  -  *label:* The label of the seed object associated with the vertex.
  -  *kind:* The vertex type, with the following choices:
  
     -  **T:** Trunk
     -  **B:** Branchpoint
     -  **E:** Endpoint
  """,
      )
  
      self.edge_file_name = Text(
          "Edge file name",
          "edges.csv",
          doc="""\
  *(Used only when exporting graph relationships)*
  
  Enter the name of the file that will hold the edge information. You can
  use metadata tags in the file name. Each line of the file is a row of
  comma-separated values. The first row is the header; this names the
  file’s columns. Each subsequent row represents an edge or connection
  between two vertices (including between a vertex and itself for certain
  loops). Note that vertices include trunks, branchpoints, and endpoints.
  
  The file has the following columns:
  
  -  *image\_number:* The image number of the associated image.
  -  *v1:* The zero-based index into the vertex table of the first vertex
     in the edge.
  -  *v2:* The zero-based index into the vertex table of the second vertex
     in the edge.
  -  *length:* The number of pixels in the path connecting the two
     vertices, including both vertex pixels.
  -  *total\_intensity:* The sum of the intensities of the pixels in the
     edge, including both vertex pixel intensities.
  """,
      )
  
imports: import os
  import centrosome.cpmorphology
  import centrosome.propagate
  import numpy
  import scipy.ndimage
  from cellprofiler_core.constants.measurement import COLTYPE_FLOAT
  from cellprofiler_core.constants.measurement import COLTYPE_INTEGER
  from cellprofiler_core.image import Image
  from cellprofiler_core.measurement import Measurements
  from cellprofiler_core.module import Module
  from cellprofiler_core.preferences import ABSOLUTE_FOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_INPUT_FOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_INPUT_SUBFOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_OUTPUT_FOLDER_NAME
  from cellprofiler_core.preferences import DEFAULT_OUTPUT_SUBFOLDER_NAME
  from cellprofiler_core.preferences import get_default_colormap
  from cellprofiler_core.setting import Binary
  from cellprofiler_core.setting.subscriber import LabelSubscriber, ImageSubscriber
  from cellprofiler_core.setting.text import ImageName, Directory
  from cellprofiler_core.setting.text import Integer
  from cellprofiler_core.setting.text import Text
  from cellprofiler_core.utilities.core.object import size_similarly
  from centrosome.cpmorphology import fixup_scipy_ndimage_result
  from scipy.ndimage import grey_dilation, grey_erosion
label_desc: Use image node_id 1 for calling the MeasureObjectSkeleton obj's underlying member method code with example usage: obj.create_settings() without return types