예제 #1
0
    def test_region_from_object(self):
        test_region = Region([10] * 3, [50] * 3)
        objects = []
        objects.append({"lower": [10] * 3, "upper": [50] * 3})
        objects.append({"dimension": 3, "lower": 10, "upper": [50] * 3})
        objects.append({"dimension": 3, "lower": 10, "upper": 50})
        objects.append({"dimension": 3, "lower": [10] * 3, "upper": 50})
        objects.append({"dimension": 3, "interval": [10, 50]})
        objects.append({"dimension": 3, "interval": (10, 50)})
        objects.append({
            "dimension": 3,
            "interval": {
                "lower": 10,
                "upper": 50
            }
        })
        objects.append({"dimensions": [[10, 50]] * 3})
        objects.append({"dimensions": [(10, 50)] * 3})
        objects.append({"dimensions": [{"lower": 10, "upper": 50}] * 3})
        objects.append([[10, 50]] * 3)
        objects.append([(10, 50)] * 3)
        objects.append([{"lower": 10, "upper": 50}] * 3)
        objects.append((3, [10, 50]))
        objects.append((3, (10, 50)))
        objects.append((3, {"lower": 10, "upper": 50}))

        for object in objects:
            #print(f'{object}')
            self.assertEqual(test_region, Region.from_object(object))
예제 #2
0
    def generate(cls, output: FileIO, kind: str, nregions: int, dimension: int,
                 **kwargs):
        """
    Randomly generate a new collection or intersection graph of Regions. \f

    Args:
      output:
        The file to save the newly generated set
        or intersection graph of Regions.

      kind:       The output object type.
      nregions:   The number of Regions to be generated.
      dimension:  The number of dimensions for each Region.
      kwargs:     Additional arguments.

    Keyword Args:
      id:
        The unique identifier for the output.
      bounds:
        The minimum + maximum bounding value for
        each dimension that all Region must be
        enclosed within.
      sizepc:
        The minimum + maximum size of each Region
        as a percent of the bounding Region that
        all Region must be enclosed within.
      precision:
        The number of digits after the decimal pt
        in each Region's lower + upper values.
      colored:
        Boolean flag for whether to color code the
        connected Regions and save the associated
        colors in each Region's data properties.
    """
        kwargs['bounds'] = Region.from_object((dimension, kwargs['bounds']))
        kwargs['sizepc'] = Region.from_object((dimension, kwargs['sizepc']))

        colored = kwargs.pop('colored', False)
        regions = RegionSet.from_random(nregions, **kwargs)
        bundle = cls.bundle(regions)

        if colored:
            cls.colorize_components(bundle)

        cls.write(output, cls.unbundle(bundle, kind))