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)