Python numpy.asfortranarray() 使用实例

The following are code examples for showing how to use . They are extracted from open source Python projects. You can vote up the examples you like or vote down the exmaples you don’t like. You can also save this page to your account.

Example 1

def mask_to_mscoco(alpha, annotations, img_id, mode='rle'):
        if mode == 'rle':
            in_ = np.reshape(np.asfortranarray(alpha), (alpha.shape[0], alpha.shape[1], 1))
            in_ = np.asfortranarray(in_)
            rle = mask.encode(in_)
            segmentation = rle[0]
        else:
            raise ValueError('Unknown mask mode "{}"'.format(mode))
        for idx, c in enumerate(np.unique(alpha)):
            area = mask.area(rle).tolist()
            if isinstance(area, list):
                area = area[0]
            bbox = mask.toBbox(rle).tolist()
            if isinstance(bbox[0], list):
                bbox = bbox[0]
            annotation = {
                'area': area,
                'bbox': bbox,
                'category_id': c,
                'id': len(annotations)+idx,
                'image_id': img_id,
                'iscrowd': 0,
                'segmentation': segmentation}
            annotations.append(annotation)
        return annotations 

Example 2

def initialize(self, corpus):
        """
        Initialize the random projection matrix.
        """
        if self.id2word is None:
            logger.info("no word id mapping provided; initializing from corpus, assuming identity")
            self.id2word = utils.dict_from_corpus(corpus)
            self.num_terms = len(self.id2word)
        else:
            self.num_terms = 1 + max([-1] + self.id2word.keys())

        shape = self.num_topics, self.num_terms
        logger.info("constructing %s random matrix" % str(shape))
        # Now construct the projection matrix itself.
        # Here i use a particular form, derived in "Achlioptas: Database-friendly random projection",
        # and his (1) scenario of Theorem 1.1 in particular (all entries are +1/-1).
        randmat = 1 - 2 * numpy.random.binomial(1, 0.5, shape) # convert from 0/1 to +1/-1
        self.projection = numpy.asfortranarray(randmat, dtype=numpy.float32) # convert from int32 to floats, for faster multiplications 

Example 3

def set_attribute(self, attribute, value):
        if isinstance(value, np.ndarray):
            getattr(self.veros_new, attribute)[...] = value
        else:
            setattr(self.veros_new, attribute, value)
        for module in self.legacy_modules:
            module_handle = getattr(self.veros_legacy, module)
            if hasattr(module_handle, attribute):
                try:
                    v = np.asfortranarray(value.copy2numpy())
                except AttributeError:
                    v = np.asfortranarray(value)
                setattr(module_handle, attribute, v)
                assert np.all(value == getattr(module_handle, attribute)), attribute
                return
        raise AttributeError("Legacy pyOM has no attribute {}".format(attribute)) 

Example 4

def _create_ann(whole_m, lbl, sc, img_id, ann_id, crw=None, ar=None):
    H, W = whole_m.shape
    if crw is None:
        crw = False
    whole_m = np.asfortranarray(whole_m.astype(np.uint8))
    rle = mask_tools.encode(whole_m)
    # Surprisingly, ground truth ar can be different from area(rle)
    if ar is None:
        ar = mask_tools.area(rle)
    ann = {
        'image_id': img_id, 'category_id': lbl,
        'segmentation': rle,
        'area': ar,
        'id': ann_id,
        'iscrowd': crw}
    if sc is not None:
        ann.update({'score': sc})
    return ann 

Example 5

def initialize(self, corpus):
        """
        Initialize the random projection matrix.
        """
        if self.id2word is None:
            logger.info("no word id mapping provided; initializing from corpus, assuming identity")
            self.id2word = utils.dict_from_corpus(corpus)
            self.num_terms = len(self.id2word)
        else:
            self.num_terms = 1 + max([-1] + self.id2word.keys())

        shape = self.num_topics, self.num_terms
        logger.info("constructing %s random matrix" % str(shape))
        # Now construct the projection matrix itself.
        # Here i use a particular form, derived in "Achlioptas: Database-friendly random projection",
        # and his (1) scenario of Theorem 1.1 in particular (all entries are +1/-1).
        randmat = 1 - 2 * numpy.random.binomial(1, 0.5, shape) # convert from 0/1 to +1/-1
        self.projection = numpy.asfortranarray(randmat, dtype=numpy.float32) # convert from int32 to floats, for faster multiplications 

Example 6

def initialize(self, corpus):
        """
        Initialize the random projection matrix.
        """
        if self.id2word is None:
            logger.info("no word id mapping provided; initializing from corpus, assuming identity")
            self.id2word = utils.dict_from_corpus(corpus)
            self.num_terms = len(self.id2word)
        else:
            self.num_terms = 1 + max([-1] + self.id2word.keys())

        shape = self.num_topics, self.num_terms
        logger.info("constructing %s random matrix" % str(shape))
        # Now construct the projection matrix itself.
        # Here i use a particular form, derived in "Achlioptas: Database-friendly random projection",
        # and his (1) scenario of Theorem 1.1 in particular (all entries are +1/-1).
        randmat = 1 - 2 * numpy.random.binomial(1, 0.5, shape) # convert from 0/1 to +1/-1
        self.projection = numpy.asfortranarray(randmat, dtype=numpy.float32) # convert from int32 to floats, for faster multiplications 

Example 7

def initialize(self, corpus):
        """
        Initialize the random projection matrix.
        """
        if self.id2word is None:
            logger.info("no word id mapping provided; initializing from corpus, assuming identity")
            self.id2word = utils.dict_from_corpus(corpus)
            self.num_terms = len(self.id2word)
        else:
            self.num_terms = 1 + max([-1] + self.id2word.keys())

        shape = self.num_topics, self.num_terms
        logger.info("constructing %s random matrix" % str(shape))
        # Now construct the projection matrix itself.
        # Here i use a particular form, derived in "Achlioptas: Database-friendly random projection",
        # and his (1) scenario of Theorem 1.1 in particular (all entries are +1/-1).
        randmat = 1 - 2 * numpy.random.binomial(1, 0.5, shape) # convert from 0/1 to +1/-1
        self.projection = numpy.asfortranarray(randmat, dtype=numpy.float32) # convert from int32 to floats, for faster multiplications 

Example 8

def deposit(self, positions, fields = None, method = None,
                kernel_name = 'cubic'):
        # Here we perform our particle deposition.
        if fields is None: fields = []
        cls = getattr(particle_deposit, "deposit_%s" % method, None)
        if cls is None:
            raise YTParticleDepositionNotImplemented(method)
        nz = self.nz
        nvals = (nz, nz, nz, self.ires.size)
        # We allocate number of zones, not number of octs
        op = cls(nvals, kernel_name)
        op.initialize()
        mylog.debug("Depositing %s (%s^3) particles into %s Root Mesh",
            positions.shape[0], positions.shape[0]**0.3333333, nvals[-1])
        pos = np.array(positions, dtype="float64")
        f64 = [np.array(f, dtype="float64") for f in fields]
        self.oct_handler.deposit(op, self.base_selector, pos, f64)
        vals = op.finalize()
        if vals is None: return
        return np.asfortranarray(vals) 

Example 9

def _init_kd_tree(self):
        """
        Builds the kd tree of grid center points.
        """
        # Grid cell centers.
        mylog.info("Multigrid: Building kD-Tree.")
        xp = self.ds["x"]
        yp = self.ds["y"]
        zp = self.ds["z"]
        fKD.pos = np.asfortranarray(np.empty((3,xp.size), dtype='float64'))
        # Normalize the grid points only within the kdtree.
        fKD.pos[0, :] = xp[:] / self.period[0]
        fKD.pos[1, :] = yp[:] / self.period[1]
        fKD.pos[2, :] = zp[:] / self.period[2]
        fKD.nn = 1
        fKD.sort = False
        fKD.rearrange = True
        create_tree(0) 

Example 10

def _find_nearest_cell(self, points):
        """
        Finds the closest grid cell for each point in a vectorized manner.
        """
        if self.nlevels == 0:
            pos = (points - self.ds.left_edge) / self.width
            n = (self.sizes[2] * pos[:,2]).astype('int32')
            n += self.sizes[2] * (self.sizes[1] * pos[:,1]).astype('int32')
            n += self.sizes[2] * self.sizes[1] * (self.sizes[0] * pos[:,0]).astype('int32')
        else:
            # Normalize the points to a 1-period for use only within the kdtree.
            points[:, 0] = points[:, 0] / self.period[0]
            points[:, 1] = points[:, 1] / self.period[1]
            points[:, 2] = points[:, 2] / self.period[2]
            fKD.qv_many = points.T
            fKD.nn_tags = np.asfortranarray(np.empty((1, points.shape[0]), dtype='int64'))
            fKD.find_many_nn_nearest_neighbors()
            # The -1 is for fortran counting.
            n = fKD.nn_tags[0,:] - 1
        return n 

Example 11

def newton_refine2(s_vals, curve1, curve2):
    """Image for :func:`.newton_refine` docstring."""
    if NO_IMAGES:
        return

    ax = curve1.plot(256)
    ax.lines[-1].zorder = 1
    curve2.plot(256, ax=ax)
    ax.lines[-1].zorder = 1

    points = curve1.evaluate_multi(np.asfortranarray(s_vals))
    colors = seaborn.dark_palette('blue', 5)
    ax.scatter(points[:, 0], points[:, 1], c=colors,
               s=20, alpha=0.75, zorder=2)

    ax.axis('scaled')
    ax.set_xlim(0.0, 1.0)
    ax.set_ylim(0.0, 1.0)
    save_image(ax.figure, 'newton_refine2.png') 

Example 12

def newton_refine3(s_vals, curve1, curve2):
    """Image for :func:`.newton_refine` docstring."""
    if NO_IMAGES:
        return

    ax = curve1.plot(256)
    ax.lines[-1].zorder = 1
    curve2.plot(256, ax=ax)
    ax.lines[-1].zorder = 1

    points = curve1.evaluate_multi(np.asfortranarray(s_vals))
    colors = seaborn.dark_palette('blue', 6)
    ax.scatter(points[:, 0], points[:, 1], c=colors,
               s=20, alpha=0.75, zorder=2)

    ax.axis('scaled')
    ax.set_xlim(0.0, 1.0)
    ax.set_ylim(0.0, 0.5625)
    save_image(ax.figure, 'newton_refine3.png') 

Example 13

def newton_refine_curve(curve, point, s, new_s):
    """Image for :func:`._curve_helpers.newton_refine` docstring."""
    if NO_IMAGES:
        return

    ax = curve.plot(256)
    ax.plot(point[:, 0], point[:, 1], marker='H')
    wrong_points = curve.evaluate_multi(np.asfortranarray([s, new_s]))
    ax.plot(wrong_points[[0], 0], wrong_points[[0], 1],
            color='black', linestyle='None', marker='o')
    ax.plot(wrong_points[[1], 0], wrong_points[[1], 1],
            color='black', linestyle='None', marker='o',
            markeredgewidth=1, markerfacecolor='None')

    # Set the axis bounds / scaling.
    ax.axis('scaled')
    ax.set_xlim(-0.125, 3.125)
    ax.set_ylim(-0.125, 1.375)

    save_image(ax.figure, 'newton_refine_curve.png') 

Example 14

def newton_refine_curve_cusp(curve, s_vals):
    """Image for :func:`._curve_helpers.newton_refine` docstring."""
    if NO_IMAGES:
        return

    ax = curve.plot(256)
    ax.lines[-1].zorder = 1

    points = curve.evaluate_multi(np.asfortranarray(s_vals))
    colors = seaborn.dark_palette('blue', 6)
    ax.scatter(points[:, 0], points[:, 1], c=colors,
               s=20, alpha=0.75, zorder=2)

    # Set the axis bounds / scaling.
    ax.axis('scaled')
    ax.set_xlim(-0.125, 6.125)
    ax.set_ylim(-3.125, 3.125)

    save_image(ax.figure, 'newton_refine_curve_cusp.png') 

Example 15

def unit_triangle():
    """Image for :class:`.surface.Surface` docstring."""
    if NO_IMAGES:
        return

    nodes = np.asfortranarray([
        [0.0, 0.0],
        [1.0, 0.0],
        [0.0, 1.0],
    ])
    surface = bezier.Surface(nodes, degree=1)

    ax = surface.plot(256)

    ax.axis('scaled')
    _plot_helpers.add_plot_boundary(ax)

    save_image(ax.figure, 'unit_triangle.png') 

Example 16

def from_json(cls, id_, info):
        """Convert JSON curve info into ``CurveInfo``.

        This involves parsing the dictionary and converting some stringified
        values (rationals and IEEE-754) to Python ``float``-s.

        Args:
            id_ (str): The ID of the curve.
            info (dict): The JSON data of the curve.

        Returns:
            CurveInfo: The curve info parsed from the JSON.
        """
        control_points = info.pop('control_points')
        control_points = np.asfortranarray(_convert_float(control_points))
        implicitized = info.pop('implicitized', None)

        # Optional fields.
        note = info.pop('note', None)
        _ensure_empty(info)

        return cls(id_, control_points, implicitized=implicitized, note=note) 

Example 17

def from_json(cls, id_, info):
        """Convert JSON surface info into ``SurfaceInfo``.

        This involves parsing the dictionary and converting some stringified
        values (rationals and IEEE-754) to Python ``float``-s.

        Args:
            id_ (str): The ID of the surface.
            info (dict): The JSON data of the surface.

        Returns:
            SurfaceInfo: The surface info parsed from the JSON.
        """
        control_points = info.pop('control_points')
        control_points = np.asfortranarray(_convert_float(control_points))

        # Optional fields.
        note = info.pop('note', None)
        _ensure_empty(info)

        return cls(id_, control_points, note=note)


# pylint: disable=too-few-public-methods 

Example 18

def test_degree_elevated_linear(self):
        nodes = np.asfortranarray([
            [0.0, 0.0],
            [0.5, 1.0],
            [1.0, 2.0],
        ])
        error_val = self._call_function_under_test(nodes)
        self.assertEqual(error_val, 0.0)

        nodes = np.asfortranarray([
            [0.0, 0.0],
            [0.25, 0.5],
            [0.5, 1.0],
            [0.75, 1.5],
            [1.0, 2.0],
        ])
        error_val = self._call_function_under_test(nodes)
        self.assertEqual(error_val, 0.0) 

Example 19

def test_quadratic(self):
        from bezier import _curve_helpers

        nodes = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
            [5.0, 6.0],
        ])
        # NOTE: This is hand picked so that
        #             d Nodes = [1, 1], [4, 5]
        #           d^2 Nodes = [3, 4]
        #       so that sqrt(3^2 + 4^2) = 5.0
        error_val = self._call_function_under_test(nodes)
        expected = 0.125 * 2 * 1 * 5.0
        self.assertEqual(error_val, expected)

        # For a degree two curve, the 2nd derivative is constant
        # so by subdividing, our error should drop by a factor
        # of (1/2)^2 = 4.
        left_nodes, right_nodes = _curve_helpers.subdivide_nodes(nodes)
        error_left = self._call_function_under_test(left_nodes)
        error_right = self._call_function_under_test(right_nodes)
        self.assertEqual(error_left, 0.25 * expected)
        self.assertEqual(error_right, 0.25 * expected) 

Example 20

def test_degree_weights_on_the_fly(self):
        nodes = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
            [7.0, 3.0],
            [11.0, 8.0],
            [15.0, 1.0],
            [16.0, -3.0],
        ])
        # NOTE: This is hand picked so that
        #             d Nodes = [1, 1], [6, 2], [4, 5], [4, -7], [1, -4]
        #           d^2 Nodes = [5, 1], [-2, 3], [0, -12], [-3, 3]
        #       so that sqrt(5^2 + 12^2) = 13.0
        error_val = self._call_function_under_test(nodes)
        expected = 0.125 * 5 * 4 * 13.0
        self.assertEqual(error_val, expected) 

Example 21

def test_success(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [0.5, 1.0],
            [1.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        # NOTE: This curve isn't close to linear, but that's OK.
        lin1 = make_linearization(curve1)

        nodes2 = np.asfortranarray([
            [0.0, 1.0],
            [0.5, 1.0],
            [1.0, 0.0],
        ])
        curve2 = subdivided_curve(nodes2)
        # NOTE: This curve isn't close to linear, but that's OK.
        lin2 = make_linearization(curve2)

        intersections = []
        self.assertIsNone(
            self._call_function_under_test(lin1, lin2, intersections))
        self.assertEqual(intersections, [(0.5, 0.5)]) 

Example 22

def test_failure(self):
        # The bounding boxes intersect but the lines do not.
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        lin1 = make_linearization(curve1, 0.0)

        nodes2 = np.asfortranarray([
            [1.75, -0.75],
            [0.75, 0.25],
        ])
        curve2 = subdivided_curve(nodes2)
        lin2 = make_linearization(curve2, 0.0)

        intersections = []
        self.assertIsNone(
            self._call_function_under_test(lin1, lin2, intersections))
        self.assertEqual(len(intersections), 0) 

Example 23

def test_parallel_intersection(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        lin1 = make_linearization(curve1, 0.0)

        nodes2 = np.asfortranarray([
            [0.0, 1.0],
            [1.0, 2.0],
        ])
        curve2 = subdivided_curve(nodes2)
        lin2 = make_linearization(curve2, 0.0)

        intersections = []
        return_value = self._call_function_under_test(
            lin1, lin2, intersections)
        self.assertIsNone(return_value)
        self.assertEqual(intersections, []) 

Example 24

def test_same_line_intersection(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        lin1 = make_linearization(curve1, 0.0)

        nodes2 = np.asfortranarray([
            [0.5, 0.5],
            [3.0, 3.0],
        ])
        curve2 = subdivided_curve(nodes2)
        lin2 = make_linearization(curve2, 0.0)

        intersections = []
        with self.assertRaises(NotImplementedError):
            self._call_function_under_test(lin1, lin2, intersections)

        self.assertEqual(intersections, []) 

Example 25

def test_parallel_non_degree_one_disjoint(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        lin1 = make_linearization(curve1, 0.0)

        nodes2 = np.asfortranarray([
            [2.0, 2.0],
            [2.5009765625, 2.5009765625],
            [3.0, 3.0],
        ])
        curve2 = subdivided_curve(nodes2)
        lin2 = make_linearization(curve2, np.nan)

        intersections = []
        return_value = self._call_function_under_test(
            lin1, lin2, intersections)
        self.assertIsNone(return_value)
        self.assertEqual(intersections, []) 

Example 26

def test_parallel_non_degree_not_disjoint(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        lin1 = make_linearization(curve1, 0.0)

        nodes2 = np.asfortranarray([
            [0.5, 0.75],
            [1.0009765625, 1.2509765625],
            [1.5, 1.75],
        ])
        curve2 = subdivided_curve(nodes2)
        lin2 = make_linearization(curve2, np.nan)

        intersections = []
        with self.assertRaises(NotImplementedError):
            self._call_function_under_test(lin1, lin2, intersections)

        self.assertEqual(intersections, []) 

Example 27

def test_same(self):
        nodes_first = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        first = subdivided_curve(nodes_first)
        nodes_second = np.asfortranarray([
            [1.0, 1.0],
            [2.0, 1.0],
        ])
        second = subdivided_curve(nodes_second)

        s_val = 1.0
        node_first = np.asfortranarray(first.nodes[[1], :])
        t_val = 0.0
        node_second = np.asfortranarray(second.nodes[[0], :])

        intersections = []
        self._call_function_under_test(
            first, node_first, s_val,
            second, node_second, t_val, intersections)

        self.assertEqual(intersections, [(s_val, t_val)]) 

Example 28

def test_one_endpoint(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 2.0],
            [2.0, 0.0],
        ])
        curve1 = subdivided_curve(nodes1)
        nodes2 = np.asfortranarray([
            [2.0, 0.0],
            [3.0, 2.0],
            [4.0, 0.0],
        ])
        curve2 = subdivided_curve(nodes2)

        intersections = []
        self.assertIsNone(
            self._call_function_under_test(curve1, curve2, intersections))
        self.assertEqual(intersections, [(1.0, 0.0)]) 

Example 29

def test_two_endpoints(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [-1.0, 0.5],
            [0.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        nodes2 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 0.5],
            [0.0, 1.0],
        ])
        curve2 = subdivided_curve(nodes2)

        intersections = []
        self.assertIsNone(
            self._call_function_under_test(curve1, curve2, intersections))
        expected = [
            (0.0, 0.0),
            (1.0, 1.0),
        ]
        self.assertEqual(intersections, expected) 

Example 30

def test_no_endpoints(self):
        # Lines have tangent bounding boxes but don't intersect.
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [2.0, 1.0],
        ])
        curve1 = subdivided_curve(nodes1)
        nodes2 = np.asfortranarray([
            [0.5, 1.0],
            [2.5, 2.0],
        ])
        curve2 = subdivided_curve(nodes2)

        intersections = []
        self.assertIsNone(
            self._call_function_under_test(curve1, curve2, intersections))
        self.assertEqual(intersections, []) 

Example 31

def test_tangent_bboxes(self):
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [0.5, 1.0],
            [1.0, 0.0],
        ])
        curve1 = subdivided_curve(nodes1)
        nodes2 = np.asfortranarray([
            [1.0, 0.0],
            [1.5, 0.5],
            [2.0, -0.25],
        ])
        curve2 = subdivided_curve(nodes2)

        intersections = []
        next_candidates = self._call_function_under_test(
            [(curve1, curve2)], intersections)
        self.assertEqual(next_candidates, [])
        self.assertEqual(intersections, [(1.0, 0.0)]) 

Example 32

def test_quadratics_intersect_once(self):
        # NOTE: ``nodes1`` is a specialization of [0, 0], [1/2, 1], [1, 1]
        #       onto the interval [1/4, 1] and ``nodes`` is a specialization
        #       of [0, 1], [1/2, 1], [1, 0] onto the interval [0, 3/4].
        #       We expect them to intersect at s = 1/3, t = 2/3, which is
        #       the point [1/2, 3/4].
        nodes1 = np.asfortranarray([
            [0.25, 0.4375],
            [0.625, 1.0],
            [1.0, 1.0],
        ])
        nodes2 = np.asfortranarray([
            [0.0, 1.0],
            [0.375, 1.0],
            [0.75, 0.4375],
        ])
        s_val = 1.0 / 3.0
        t_val = 2.0 / 3.0
        intersections = self._call_function_under_test(nodes1, nodes2)

        # Due to round-off, the answer may be wrong by a tiny wiggle.
        self.assertEqual(intersections.shape, (1, 2))
        self.assertAlmostEqual(
            intersections[0, 0], s_val, delta=SPACING(s_val))
        self.assertEqual(intersections[0, 1], t_val) 

Example 33

def test_parallel_failure(self):
        from bezier import _geometric_intersection

        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [0.375, 0.75],
            [0.75, 0.375],
        ])
        nodes2 = np.asfortranarray([
            [0.25, 0.625],
            [0.625, 0.25],
            [1.0, 1.0],
        ])
        with self.assertRaises(NotImplementedError) as exc_info:
            self._call_function_under_test(nodes1, nodes2)

        exc_args = exc_info.exception.args
        self.assertEqual(
            exc_args, (_geometric_intersection._SEGMENTS_PARALLEL,)) 

Example 34

def test_non_convergence(self):
        from bezier import _geometric_intersection

        multiplier = 16384.0
        nodes1 = multiplier * np.asfortranarray([
            [0.0, 0.0],
            [4.5, 9.0],
            [9.0, 0.0],
        ])
        nodes2 = multiplier * np.asfortranarray([
            [0.0, 8.0],
            [6.0, 0.0],
        ])
        with self.assertRaises(ValueError) as exc_info:
            self._call_function_under_test(nodes1, nodes2)

        exc_args = exc_info.exception.args
        expected = _geometric_intersection._NO_CONVERGE_TEMPLATE.format(
            _geometric_intersection._MAX_INTERSECT_SUBDIVISIONS)
        self.assertEqual(exc_args, (expected,)) 

Example 35

def test_duplicates(self):
        # After three subdivisions, there are 8 pairs of curve segments
        # which have bounding boxes that touch at corners (these corners are
        # also intersections). This test makes sure the duplicates are
        # de-duplicated.
        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [0.5, 1.0],
            [1.0, 0.0],
        ])
        nodes2 = np.asfortranarray([
            [0.0, 0.75],
            [0.5, -0.25],
            [1.0, 0.75],
        ])
        intersections = self._call_function_under_test(nodes1, nodes2)
        expected = np.asfortranarray([
            [0.25, 0.25],
            [0.75, 0.75],
        ])
        self.assertEqual(intersections, expected) 

Example 36

def test_workspace_resize(self):
        nodes1 = np.asfortranarray([
            [-3.0, 0.0],
            [5.0, 0.0],
        ])
        nodes2 = np.asfortranarray([
            [-7.0, -9.0],
            [9.0, 13.0],
            [-7.0, -13.0],
            [9.0, 9.0],
        ])
        # NOTE: These curves intersect 3 times, so a workspace of
        #       2 is not large enough.
        self.reset_workspace(2)
        intersections = self._call_function_under_test(nodes1, nodes2)
        expected = np.asfortranarray([
            [0.5, 0.5],
            [0.375, 0.25],
            [0.625, 0.75],
        ])
        self.assertEqual(intersections, expected)
        # Make sure the workspace was resized.
        self.assertEqual(self.workspace_size(), 3) 

Example 37

def test_workspace_too_small(self):
        from bezier import _curve_intersection_speedup

        nodes1 = np.asfortranarray([
            [-3.0, 0.0],
            [5.0, 0.0],
        ])
        nodes2 = np.asfortranarray([
            [-7.0, -9.0],
            [9.0, 13.0],
            [-7.0, -13.0],
            [9.0, 9.0],
        ])
        # NOTE: These curves intersect 3 times, so a workspace of
        #       2 is not large enough.
        self.reset_workspace(2)
        with self.assertRaises(ValueError) as exc_info:
            self._call_function_under_test(
                nodes1, nodes2, allow_resize=False)

        exc_args = exc_info.exception.args
        expected = _curve_intersection_speedup.TOO_SMALL_TEMPLATE.format(3, 2)
        self.assertEqual(exc_args, (expected,))
        # Make sure the workspace was **not** resized.
        self.assertEqual(self.workspace_size(), 2) 

Example 38

def test___dict___property(self):
        nodes = np.asfortranarray([
            [0.0, 1.0],
            [0.0, 2.0],
        ])
        curve = subdivided_curve(nodes)
        error = 0.0
        linearization = self._make_one(curve, error)
        props_dict = linearization.__dict__
        # NOTE: We cannot use dictionary equality check because of
        #       the comparison of NumPy arrays.
        self.assertEqual(len(props_dict), 4)
        self.assertIs(props_dict['curve'], curve)
        self.assertEqual(props_dict['error'], error)
        self.assertEqual(props_dict['start_node'], nodes[[0], :])
        self.assertEqual(props_dict['end_node'], nodes[[1], :])
        # Check that modifying ``props_dict`` won't modify ``linearization``.
        props_dict['error'] = 0.5
        self.assertNotEqual(linearization.error, props_dict['error']) 

Example 39

def test_length_property_not_cached(self):
        nodes = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 2.0],
        ])
        curve = self._make_one(nodes, 1)
        self.assertIsNone(curve._length)

        patch = unittest.mock.patch(
            'bezier._curve_helpers.compute_length',
            return_value=unittest.mock.sentinel.length)
        with patch as mocked:
            self.assertEqual(curve.length, unittest.mock.sentinel.length)

            self.assertEqual(mocked.call_count, 1)
            call = mocked.mock_calls[0]
            _, positional, keyword = call
            self.assertEqual(keyword, {})
            self.assertEqual(len(positional), 1)
            self.assertEqual(positional[0], nodes) 

Example 40

def test_evaluate_multi(self):
        s_vals = np.asfortranarray([0.0, 0.25, 0.5, 1.0, 1.25])
        nodes = np.asfortranarray([
            [0.0, 0.0],
            [0.375, 0.375],
            [1.0, 1.0],
        ])
        curve = self._make_one(nodes, 2)
        expected = np.asfortranarray([
            [0.0, 0.0],
            [0.203125, 0.203125],
            [0.4375, 0.4375],
            [1.0, 1.0],
            [1.328125, 1.328125],
        ])
        result = curve.evaluate_multi(s_vals)
        self.assertEqual(expected, result) 

Example 41

def test_plot_defaults(self, new_axis_mock):
        ax = unittest.mock.Mock(spec=['plot'])
        new_axis_mock.return_value = ax

        nodes = np.asfortranarray([
            [0.0, 1.0],
            [1.0, 3.0],
        ])
        curve = self._make_one(nodes, 1, _copy=False)

        num_pts = 2  # This value is crucial for the plot call.
        result = curve.plot(num_pts)
        self.assertIs(result, ax)

        # Verify mocks.
        new_axis_mock.assert_called_once_with()
        # Check the call to ax.plot(). We can't assert_any_call()
        # since == breaks on NumPy arrays.
        self.assertEqual(ax.plot.call_count, 1)
        call = ax.plot.mock_calls[0]
        utils.check_plot_call(self, call, nodes, color=None, alpha=None) 

Example 42

def test_plot_explicit(self, new_axis_mock):
        nodes = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        curve = self._make_one(nodes, 1, _copy=False)

        num_pts = 2  # This value is crucial for the plot call.
        ax = unittest.mock.Mock(spec=['plot'])
        color = (0.75, 1.0, 1.0)
        alpha = 0.625
        result = curve.plot(num_pts, color=color, alpha=alpha, ax=ax)
        self.assertIs(result, ax)

        # Verify mocks.
        new_axis_mock.assert_not_called()
        # Check the call to ax.plot(). We can't assert_any_call()
        # since == breaks on NumPy arrays.
        self.assertEqual(ax.plot.call_count, 1)
        call = ax.plot.mock_calls[0]
        utils.check_plot_call(self, call, nodes, color=color, alpha=alpha) 

Example 43

def test_intersect_algebraic(self):
        from bezier import _intersection_helpers

        nodes1 = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 1.0],
        ])
        curve1 = self._make_one(nodes1, 1)
        nodes2 = np.asfortranarray([
            [0.0, 1.0],
            [1.0, 0.0],
        ])
        curve2 = self._make_one(nodes2, 1)
        strategy = _intersection_helpers.IntersectionStrategy.ALGEBRAIC

        intersections = curve1.intersect(curve2, strategy=strategy)
        expected = np.asfortranarray([
            [0.5, 0.5],
        ])
        self.assertEqual(intersections, expected) 

Example 44

def _intersect_helper(self, **kwargs):
        # NOTE: ``nodes1`` is a specialization of [0, 0], [1/2, 1], [1, 1]
        #       onto the interval [1/4, 1] and ``nodes`` is a specialization
        #       of [0, 1], [1/2, 1], [1, 0] onto the interval [0, 3/4].
        #       We expect them to intersect at s = 1/3, t = 2/3.
        nodes_left = np.asfortranarray([
            [0.25, 0.4375],
            [0.625, 1.0],
            [1.0, 1.0],
        ])
        left = self._make_one(nodes_left, 2)

        nodes_right = np.asfortranarray([
            [0.0, 1.0],
            [0.375, 1.0],
            [0.75, 0.4375],
        ])
        right = self._make_one(nodes_right, 2)

        result = left.intersect(right, **kwargs)
        expected = np.asfortranarray([[1.0, 2.0]]) / 3.0
        self.assertTrue(
            np.allclose(result, expected, atol=0.0, rtol=0.5**52)) 

Example 45

def test_elevate(self):
        nodes = np.asfortranarray([
            [0.0, 0.5],
            [1.0, 1.0],
            [3.0, 2.0],
            [3.5, 4.0],
        ])
        curve = self._make_one(nodes, 3)
        self.assertEqual(curve.degree, 3)
        elevated = curve.elevate()
        self.assertEqual(elevated.degree, 4)
        self.assertEqual(elevated.start, curve.start)
        self.assertEqual(elevated.end, curve.end)

        s_vals = np.linspace(0.0, 1.0, 64 + 1)
        orig_vals = curve.evaluate_multi(s_vals)
        new_vals = elevated.evaluate_multi(s_vals)
        self.assertEqual(orig_vals, new_vals) 

Example 46

def test_reduce_(self):
        nodes = np.asfortranarray([
            [0.0, 0.0],
            [1.0, 3.0],
            [2.0, 3.0],
            [3.0, 0.0],
        ])
        curve = self._make_one(nodes, 3)
        self.assertEqual(curve.degree, 3)
        reduced = curve.reduce_()

        expected = np.asfortranarray([
            [0.0, 0.0],
            [1.5, 4.5],
            [3.0, 0.0],
        ])
        self.assertEqual(reduced.nodes, expected)
        self.assertEqual(reduced.start, curve.start)
        self.assertEqual(reduced.end, curve.end)

        s_vals = np.linspace(0.0, 1.0, 64 + 1)
        orig_vals = curve.evaluate_multi(s_vals)
        new_vals = reduced.evaluate_multi(s_vals)
        self.assertEqual(orig_vals, new_vals) 

Example 47

def test_quartic(self):
        expected_l = np.asfortranarray([
            [1.0, 0.0, 0.0, 0.0, 0.0],
            [1.0, 1.0, 0.0, 0.0, 0.0],
            [1.0, 2.0, 1.0, 0.0, 0.0],
            [1.0, 3.0, 3.0, 1.0, 0.0],
            [1.0, 4.0, 6.0, 4.0, 1.0],
        ])
        expected_r = np.asfortranarray([
            [1.0, 4.0, 6.0, 4.0, 1.0],
            [0.0, 1.0, 3.0, 3.0, 1.0],
            [0.0, 0.0, 1.0, 2.0, 1.0],
            [0.0, 0.0, 0.0, 1.0, 1.0],
            [0.0, 0.0, 0.0, 0.0, 1.0],
        ])

        row_scaling = np.asfortranarray([[1.0], [2.0], [4.0], [8.0], [16.0]])
        expected_l /= row_scaling
        expected_r /= row_scaling[::-1, :]

        self._helper(4, expected_l, expected_r) 

Example 48

def test_cubic(self):
        nodes = np.asfortranarray([
            [0.0, 1.0],
            [4.0, 6.0],
            [7.0, 3.0],
            [6.0, 5.0],
        ])
        expected_l = np.asfortranarray([
            [0.0, 1.0],
            [2.0, 3.5],
            [3.75, 4.0],
            [4.875, 4.125],
        ])
        expected_r = np.asfortranarray([
            [4.875, 4.125],
            [6.0, 4.25],
            [6.5, 4.0],
            [6.0, 5.0],
        ])
        self._helper(nodes, expected_l, expected_r) 

Example 49

def test_non_unity(self):
        nodes = np.asfortranarray([
            [0.0, 0.0, 0.0],
            [0.5, 3.0, 1.0],
            [1.5, 4.0, 1.0],
            [2.0, 8.0, 1.0],
        ])
        lambda1 = np.asfortranarray([0.25, 0.5, 0.75])
        lambda2 = np.asfortranarray([0.25, 0.125, -0.75])

        result = self._call_function_under_test(nodes, lambda1, lambda2)
        expected = np.asfortranarray([
            [0.125, 0.453125, 0.109375],
            [0.0859375, 0.390625, 0.119140625],
            [0.421875, -2.109375, -0.421875],
        ])
        self.assertEqual(result, expected) 

Example 50

def test_linear(self):
        num_vals = 129
        s_vals = np.linspace(0.0, 1.0, num_vals)
        # B(s) = [s + 1, 1 - 2 s, 3 s - 7]
        nodes = np.asfortranarray([
            [1.0, 1.0, -7.0],
            [2.0, -1.0, -4.0],
        ])

        result = self._call_function_under_test(nodes, s_vals)

        expected = np.empty((num_vals, 3), order='F')
        expected[:, 0] = 1.0 + s_vals
        expected[:, 1] = 1.0 - 2.0 * s_vals
        expected[:, 2] = -7.0 + 3.0 * s_vals

        self.assertEqual(result, expected) 
点赞