Source code for velociraptor

"""
The velociraptor module.

More information is available in the documentation.
"""

# First things first, we need to upgrade msun and mh from a symbol to a
# first-class unit. We also add a dimensionless unit for magnitudes.
import unyt

try:
    unyt.define_unit("msun", 1.0 * unyt.msun, tex_repr=r"M_\odot")
except RuntimeError:
    # We've already done that, oops.
    pass

try:
    unyt.define_unit("mh", 1.0 * unyt.hydrogen_mass, tex_repr=r"m_{\rm H}")
except RuntimeError:
    # We've already done that, oops.
    pass

try:
    unyt.define_unit("mag", 1.0 * unyt.dimensionless, tex_repr=r"mag")
except RuntimeError:
    # We've already done that, oops.
    pass


from velociraptor.catalogue.catalogue import Catalogue, CatalogueTypeError
from velociraptor.catalogue.velociraptor_catalogue import VelociraptorCatalogue
from velociraptor.catalogue.soap_catalogue import SOAPCatalogue
from velociraptor.__version__ import __version__

from typing import Union, List


[docs]def load( filename: str, disregard_units: bool = False, registration_file_path: Union[List[str], str, None] = None, mask: slice = Ellipsis, ) -> Catalogue: """ Loads a velociraptor catalogue, producing a Catalogue object. Parameters ---------- filename: str The filename of your VELOCIraptor catalogue file (i.e. the path to the .properties file). disregard_units: bool, optional If ``True``, then disregard any additional units in the VELOCIraptor catalogues, and instead base everything on the 'base' units of velocity, length, and mass. In this case metallicities are left dimensionless. If you are using EAGLE data, you should set this to False, as the star formation rate units are presented in non-internal units. registration_file_path: Union[List[str], str], optional The filename of the derived quantities script(s) to register additional properties with the catalogue. This is an advanced feature. See the documentation for more details. mask: Union[None, NDArray[bool], int], optional If a boolean array is provided, it is used to mask all catalogue arrays. If an int is provided, catalogue arrays are masked to the single corresponding element. Returns ------- Catalogue The Catalogue object that describes your .properties file. """ try: catalogue = VelociraptorCatalogue( filename, disregard_units=disregard_units, mask=mask ) except CatalogueTypeError: catalogue = SOAPCatalogue(filename) if registration_file_path is not None: catalogue.register_derived_quantities(registration_file_path) return catalogue