def test__input_vectors_as_different_types__all_converted_to_ndarray_correctly(
):

    # Input tuples

    vector_field = aa.VectorField2DIrregular(vectors=[(1.0, -1.0), (1.0, 1.0)],
                                             grid=[[1.0, -1.0], [1.0, 1.0]])

    assert type(vector_field) == aa.VectorField2DIrregular
    assert (vector_field == np.array([[1.0, -1.0], [1.0, 1.0]])).all()
    assert vector_field.in_list == [(1.0, -1.0), (1.0, 1.0)]

    # Input np array

    vector_field = aa.VectorField2DIrregular(
        vectors=[np.array([1.0, -1.0]),
                 np.array([1.0, 1.0])],
        grid=[[1.0, -1.0], [1.0, 1.0]],
    )

    assert type(vector_field) == aa.VectorField2DIrregular
    assert (vector_field == np.array([[1.0, -1.0], [1.0, 1.0]])).all()
    assert vector_field.in_list == [(1.0, -1.0), (1.0, 1.0)]

    # Input list

    vector_field = aa.VectorField2DIrregular(vectors=[[1.0, -1.0], [1.0, 1.0]],
                                             grid=[[1.0, -1.0], [1.0, 1.0]])

    assert type(vector_field) == aa.VectorField2DIrregular
    assert (vector_field == np.array([[1.0, -1.0], [1.0, 1.0]])).all()
    assert vector_field.in_list == [(1.0, -1.0), (1.0, 1.0)]
def test__input_grids_as_different_types__all_converted_to_grid_irregular_correctly(
):

    # Input tuples

    vector_field = aa.VectorField2DIrregular(
        vectors=[(1.0, -1.0), (1.0, 1.0)],
        grid=aa.Grid2DIrregular([[1.0, -1.0], [1.0, 1.0]]),
    )

    assert type(vector_field.grid) == aa.Grid2DIrregular
    assert (vector_field.grid == np.array([[1.0, -1.0], [1.0, 1.0]])).all()

    # Input np array

    vector_field = aa.VectorField2DIrregular(vectors=[(1.0, -1.0), (1.0, 1.0)],
                                             grid=[[1.0, -1.0], [1.0, 1.0]])

    assert type(vector_field.grid) == aa.Grid2DIrregular
    assert (vector_field.grid == np.array([[1.0, -1.0], [1.0, 1.0]])).all()

    # Input list

    vector_field = aa.VectorField2DIrregular(vectors=[(1.0, -1.0), (1.0, 1.0)],
                                             grid=[(1.0, -1.0), (1.0, 1.0)])

    assert type(vector_field.grid) == aa.Grid2DIrregular
    assert (vector_field.grid == np.array([[1.0, -1.0], [1.0, 1.0]])).all()
def test__elliptical_properties_and_patches():

    vector_field = aa.VectorField2DIrregular(
        vectors=[(0.0, 1.0), (1.0, 0.0), (1.0, 1.0)],
        grid=[[1.0, -1.0], [1.0, 1.0], [0.0, 0.0]],
    )

    assert isinstance(vector_field.ellipticities, aa.ValuesIrregular)
    assert vector_field.ellipticities.in_list == [1.0, 1.0, np.sqrt(2.0)]

    assert isinstance(vector_field.semi_major_axes, aa.ValuesIrregular)
    assert vector_field.semi_major_axes.in_list == pytest.approx(
        [6.0, 6.0, 7.242640], 1.0e-4)

    assert isinstance(vector_field.semi_minor_axes, aa.ValuesIrregular)
    assert vector_field.semi_minor_axes.in_list == pytest.approx(
        [0.0, 0.0, -1.242640], 1.0e-4)

    assert isinstance(vector_field.phis, aa.ValuesIrregular)
    assert vector_field.phis.in_list == pytest.approx([0.0, 45.0, 22.5],
                                                      1.0e-4)

    assert isinstance(vector_field.elliptical_patches[0], Ellipse)
    assert vector_field.elliptical_patches[1].center == pytest.approx(
        (1.0, 1.0), 1.0e-4)
    assert vector_field.elliptical_patches[1].width == pytest.approx(
        6.0, 1.0e-4)
    assert vector_field.elliptical_patches[1].height == pytest.approx(
        0.0, 1.0e-4)
    assert vector_field.elliptical_patches[1].angle == pytest.approx(
        45.0, 1.0e-4)
def test__vectors_from_grid_within_radius():

    vector_field = aa.VectorField2DIrregular(vectors=[(1.0, 1.0), (2.0, 2.0)],
                                             grid=[[0.0, 1.0], [0.0, 2.0]])

    vector_field_masked = vector_field.vectors_within_radius(radius=3.0,
                                                             centre=(0.0, 0.0))

    assert type(vector_field_masked) == aa.VectorField2DIrregular
    assert vector_field_masked.in_list == [(1.0, 1.0), (2.0, 2.0)]
    assert vector_field_masked.grid.in_list == [(0.0, 1.0), (0.0, 2.0)]

    vector_field_masked = vector_field.vectors_within_radius(radius=1.5,
                                                             centre=(0.0, 0.0))

    assert type(vector_field_masked) == aa.VectorField2DIrregular
    assert vector_field_masked.in_list == [(1.0, 1.0)]
    assert vector_field_masked.grid.in_list == [(0.0, 1.0)]

    vector_field_masked = vector_field.vectors_within_radius(radius=0.5,
                                                             centre=(0.0, 2.0))

    assert type(vector_field_masked) == aa.VectorField2DIrregular
    assert vector_field_masked.in_list == [(2.0, 2.0)]
    assert vector_field_masked.grid.in_list == [(0.0, 2.0)]

    with pytest.raises(exc.VectorFieldException):
        vector_field.vectors_within_radius(radius=0.0, centre=(0.0, 0.0))
예제 #5
0
    def test__quiver_vector_field(self):

        quiver = aplt.VectorFieldQuiver(
            headlength=5,
            pivot="middle",
            linewidth=3,
            units="xy",
            angles="xy",
            headwidth=6,
            alpha=1.0,
        )

        vector_field = aa.VectorField2DIrregular(vectors=[(1.0, 2.0),
                                                          (2.0, 1.0)],
                                                 grid=[(-1.0, 0.0),
                                                       (-2.0, 0.0)])

        quiver.quiver_vector_field(vector_field=vector_field)