예제 #1
0
    def test_trajectory_intervals_with_dedicated_time_index(self, trajectory, time, objects, expected):
        td = np.array(trajectory) * km

        np.testing.assert_array_equal(
            broni.intervals(
                broni.Trajectory(td[:, 0], td[:, 1], td[:, 2], time, 'gse'),
                objects),
            np.array(expected))
예제 #2
0
 def test_empty_trajectory(self):
     np.testing.assert_array_equal(
         broni.intervals(
             broni.Trajectory([] * km, [] * km, [] * km,
                              [],
                              'gse'),
             Cuboid(*(0, 0, 0, 2, 2, 2) * km)),
         [])
예제 #3
0
    def test_trajectory_intervals_with_primitive_objects_no_time_index(self, trajectory, objects, expected):
        td = np.array(trajectory) * km

        np.testing.assert_array_equal(
            broni.intervals(
                broni.Trajectory(td[:, 0], td[:, 1], td[:, 2],
                                 np.arange(0, len(trajectory)),
                                 'gse'),
                objects),
            np.array(expected))
예제 #4
0
    def test_boundary_kwargs_forwarding_and_creation(self):
        def func(theta, phi, **kwargs):
            assert ('test' in kwargs)
            assert (kwargs['test'] == 'value')

            assert ('base' in kwargs)
            assert (kwargs['base'] == 'spherical')

            return np.zeros(theta.shape), theta, phi

        shape = SphericalBoundary(func, 0, test='value')
        shape.intersect(broni.Trajectory([] * km, [] * km, [] * km, [], 'gse'))
예제 #5
0
    def test_sheath_with_2_spheres_intersections(self, model, trajectory,
                                                 expected):
        shape = Sheath(SphereModel(model[0] * km), SphereModel(model[1] * km),
                       model[2] * km, model[3] * km)

        td = np.array(trajectory) * km

        np.testing.assert_array_equal(
            shape.intersect(
                broni.Trajectory(td[:, 0], td[:, 1], td[:, 2],
                                 np.arange(0, len(trajectory)), "gse")),
            np.array(expected))
예제 #6
0
    def test_boundary_with_sphere_model_intersections(self, model, trajectory,
                                                      expected):
        shape = SphericalBoundary(
            SphereModel(model[0] * km),
            model[1] * km if model[1] is not None else None,
            model[2] * km if model[2] is not None else None)

        td = np.array(trajectory) * km

        np.testing.assert_array_equal(
            shape.intersect(
                broni.Trajectory(td[:, 0], td[:, 1], td[:, 2],
                                 np.arange(0, len(trajectory)), "gse")),
            np.array(expected))
예제 #7
0
 def test_invalid_ctor_args_time_series_has_to_match_trajectory_length(self):
     with self.assertRaises(ValueError):
         assert broni.Trajectory(
             [0, 0] * km, [0, 0] * km, [0, 0] * km,
             [1, 2, 3],
             coordinate_system="gse")
예제 #8
0
 def test_invalid_ctor_args_with_different_y_z_length(self):
     with self.assertRaises(ValueError):
         assert broni.Trajectory(
             [1], [2], [1, 2],
             [],
             coordinate_system="gse")
예제 #9
0
파일: main.py 프로젝트: SciQLop/broni
    return np.array((x, y, z), dtype=float)


if __name__ == '__main__':
    coord_sys = "gse"

    ssc = sscweb.SscWeb()
    sv = ssc.get_orbit(product="mms1",
                       start_time="2020-10-10",
                       stop_time="2020-10-24",
                       coordinate_system=coord_sys)

    orbit = broni.Trajectory(sv.data[::2, 0] * km,
                             sv.data[::2, 1] * km,
                             sv.data[::2, 2] * km,
                             sv.time[::2],
                             coordinate_system=coord_sys)

    # sphere = Sphere(30000, 30000, 30000, 15000)
    # intervals = broni.intervals(orbit, sphere)

    # cuboid = Cuboid(10000, 10000, 10000,
    #                25000, 25000, 25000)
    # intervals += broni.intervals(orbit, cuboid)

    sphere = Sphere(30000 * km, 30000 * km, 30000 * km, 20000 * km)
    cuboid = Cuboid(10000 * km, 10000 * km, 10000 * km, 25000 * km, 25000 * km,
                    25000 * km)
    intervals = broni.intervals(orbit, [sphere, cuboid])