1 unstable release
0.1.0 | Aug 21, 2024 |
---|
#309 in Date and time
59KB
1K
SLoC
bilby-rust
Rust implementation of domain-specific geometrical operations for Bilby to mirror the functionality in bilby-cython using PyO3.
Usage
To compile the project and install the python bindings you can use maturin
$ maturin develop
This will install an unoptimized version, if you want to test benchmarking, be sure to install with
$ maturin develop --release
On MacOS, you may need to install additional dependencies:
rustup target add x86_64-apple-darwin
mamba install -c conda-forge clang
The python code can then be used directly in python
>>> from bilby_rust.time import greenwich_mean_sidereal_time
>>> greenwich_mean_sidereal_time(1e9)
26930.069103915423
The API doesn't completely match bilby-cython
:
- there is currently no support for writing
numpy
ufuncs
usingPyO3
so the vectorized version ofgreenwich_mean_sidereal_time
is implemented asbilby_rust.time.greenwich_mean_sidereal_time_vectorized
. - additional functionality for dealing with time- and frequency-dependent antenna response functions is additionally implemented using, e.g.,
bilby_rust.geometry.{time_dependent_polarization_tensor,time_delay_from_geocenter_vectorized,frequency_dependent_detector_tensor}
. This was translated from an implementation by @jacobgolomb forbilby-cython
. - the convention for the detector-based reference frame from Roulet+ is included as
bilby_rust.geometry.zenith_azimuth_to_theta_phi_optimized
. - calculation of the antenna response that projects the detector pattern against the polarization tensors using
bilby_rust.geometry.{antenna_response,antenna_response_all_model,antenna_response_tensor_modes}
.
Dependencies
~7–12MB
~151K SLoC