trident.light_ray.LightRay.make_light_ray
- LightRay.make_light_ray(seed=None, periodic=True, left_edge=None, right_edge=None, min_level=None, start_position=None, end_position=None, trajectory=None, fields=None, setup_function=None, solution_filename=None, data_filename=None, get_los_velocity=None, use_peculiar_velocity=True, redshift=None, field_parameters=None, fail_empty=True, njobs=-1)[source]
Actually generate the LightRay by traversing the desired dataset.
A light ray consists of a list of field values for cells intersected by the ray and the path length of the ray through those cells. Light ray data must be written out to an hdf5 file.
Parameters
- Seed:
optional, int
Seed for the random number generator. Default: None.
- Periodic:
optional, bool
If True, ray trajectories will make use of periodic boundaries. If False, ray trajectories will not be periodic. Default : True.
- Left_edge:
optional, iterable of floats or YTArray
The left corner of the region in which rays are to be generated. If None, the left edge will be that of the domain. If specified without units, it is assumed to be in code units. Default: None.
- Right_edge:
optional, iterable of floats or YTArray
The right corner of the region in which rays are to be generated. If None, the right edge will be that of the domain. If specified without units, it is assumed to be in code units. Default: None.
- Min_level:
optional, int
The minimum refinement level of the spatial region in which the ray passes. This can be used with zoom-in simulations where the high resolution region does not keep a constant geometry. Default: None.
- Start_position:
optional, iterable of floats or YTArray.
Used only if creating a light ray from a single dataset. The coordinates of the starting position of the ray. If specified without units, it is assumed to be in code units. Default: None.
- End_position:
optional, iterable of floats or YTArray.
Used only if creating a light ray from a single dataset. The coordinates of the ending position of the ray. If specified without units, it is assumed to be in code units. Default: None.
- Trajectory:
optional, list of floats
Used only if creating a light ray from a single dataset. The (r, theta, phi) direction of the light ray. Use either end_position or trajectory, not both. Default: None.
- Fields:
optional, list
A list of fields for which to get data. Default: None.
- Setup_function:
optional, callable, accepts a ds
This function will be called on each dataset that is loaded to create the light ray. For, example, this can be used to add new derived fields. Default: None.
- Solution_filename:
optional, string
Path to a text file where the trajectories of each subray is written out. Default: None.
- Data_filename:
optional, string
Path to output file for ray data. Default: None.
- Use_peculiar_velocity:
optional, bool
If True, the peculiar velocity along the ray will be sampled for calculating the effective redshift combining the cosmological redshift and the doppler redshift. Default: True.
- Redshift:
optional, float
Used with light rays made from single datasets to specify a starting redshift for the ray. If not used, the starting redshift will be 0 for a non-cosmological dataset and the dataset redshift for a cosmological dataset. Default: None.
- Field_parameters:
optional, dict
Used to set field parameters in light rays. For example, if the ‘bulk_velocity’ field parameter is set, the relative velocities used to calculate peculiar velocity will be adjusted accordingly. Default: None.
- Fail_empty:
optional, bool
If True, Trident will fail when it tries to create an empty Ray that does not pass through any valud fluid elements. When False, it will merely return a warning. Default: True
- Njobs:
optional, int
The number of parallel jobs over which the segments will be split. Choose -1 for one processor per segment. Default: -1.
Examples
Make a light ray from multiple datasets:
>>> import yt >>> from trident import LightRay >>> my_ray = LightRay("enzo_tiny_cosmology/32Mpc_32.enzo", "Enzo", ... 0., 0.1, time_data=False) ... >>> my_ray.make_light_ray(seed=12345, ... solution_filename="solution.txt", ... data_filename="my_ray.h5", ... fields=["temperature", "density"], ... use_peculiar_velocity=True)
Make a light ray from a single dataset:
>>> import yt >>> from trident import LightRay >>> my_ray = LightRay("IsolatedGalaxy/galaxy0030/galaxy0030") ... >>> my_ray.make_light_ray(start_position=[0., 0., 0.], ... end_position=[1., 1., 1.], ... solution_filename="solution.txt", ... data_filename="my_ray.h5", ... fields=["temperature", "density"], ... use_peculiar_velocity=True)