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))
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)), [])
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))
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'))
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))
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))
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")
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")
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])