LISA Analysis Tools
LISA Analysis Tools is a package for performing LISA Data Analysis tasks, including building the LISA Global Fit.
To install the latest version of lisaanalysistools
using pip
, simply run:
# For CPU-only version
pip install lisaanalysistools
# For GPU-enabled versions with CUDA 11.Y.Z
pip install lisaanalysistools-cuda11x
# For GPU-enabled versions with CUDA 12.Y.Z
pip install lisaanalysistools-cuda12x
To know your CUDA version, run the tool nvidia-smi
in a terminal a check the CUDA version reported in the table header:
$ nvidia-smi
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15 Driver Version: 550.54.15 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
...
You may also install lisaanalysistools
directly using conda (including on Windows)
as well as its CUDA 12.x plugin (only on Linux). It is strongly advised to:
Ensure that your conda environment makes sole use of the
conda-forge
channelInstall
lisaanalysistools
directly when building your conda environment, not afterwards
# For CPU-only version, on either Linux, macOS or Windows:
conda create --name lisatools_cpu -c conda-forge --override-channels python=3.12 lisaanalysistools
conda activate lisatools_cpu
# For CUDA 12.x version, only on Linux
conda create --name lisatools_cuda -c conda-forge --override-channels python=3.12 lisaanalysistools-cuda12x
conda activate lisatools_cuda
Now, in a python file or notebook:
import lisatools
You may check the currently available backends:
>>> for backend in ["cpu", "cuda11x", "cuda12x", "cuda", "gpu"]:
... print(f" - Backend '{backend}': {"available" if lisatools.has_backend(backend) else "unavailable"}")
- Backend 'cpu': available
- Backend 'cuda11x': unavailable
- Backend 'cuda12x': unavailable
- Backend 'cuda': unavailable
- Backend 'gpu': unavailable
Note that the cuda
backend is an alias for either cuda11x
or cuda12x
. If any is available, then the cuda
backend is available.
Similarly, the gpu
backend is (for now) an alias for cuda
.
If you expected a backend to be available but it is not, run the following command to obtain an error message which can guide you to fix this issue:
>>> import lisatools
>>> lisatools.get_backend("cuda12x")
ModuleNotFoundError: No module named 'lisatools_backend_cuda12x'
The above exception was the direct cause of the following exception:
...
lisatools.cutils.BackendNotInstalled: The 'cuda12x' backend is not installed.
The above exception was the direct cause of the following exception:
...
lisatools.cutils.MissingDependencies: LISAanalysistools CUDA plugin is missing.
If you are using lisatools in an environment managed using pip, run:
$ pip install lisaanalysistools-cuda12x
The above exception was the direct cause of the following exception:
...
lisatools.cutils.BackendAccessException: Backend 'cuda12x' is unavailable. See previous error messages.
Once LISA Analysis Tools is working and the expected backends are selected, check out the examples notebooks on how to start with this software.
Installing from sources
Prerequisites
To install this software from source, you will need:
A C++ compiler (g++, clang++, …)
A Python version supported by scikit-build-core (>=3.7 as of Jan. 2025)
If you want to enable GPU support in LISA Analysis Tools, you will also need the NVIDIA CUDA Compiler nvcc
in your path as well as
the CUDA toolkit (with, in particular, the
libraries CUDA Runtime Library
, cuBLAS
and cuSPARSE
).
Installation instructions using conda
We recommend to install LISA Analysis Tools using conda in order to have the compilers all within an environment. First clone the repo
git clone https://github.com/mikekatz04/LISAanalysistools.git
cd LISAanalysistools
Now create an environment (these instructions work for all platforms but some adjustements can be needed, refer to the detailed installation documentation for more information):
conda create -n lisatools_env -y -c conda-forge --override-channels |
cxx-compiler pkgconfig conda-forge/label/lapack_rc::liblapacke
activate the environment
conda activate lisatools_env
Then we can install locally for development:
pip install -e '.[dev, testing]'
Installation instructions using conda on GPUs and linux
Below is a quick set of instructions to install the LISA Analysis Tools package on GPUs and linux.
conda create -n lisatools_env -c conda-forge lisaanalysistools-cuda12x python=3.12
conda activate lisatools_env
Test the installation device by running python
import lisatools
lisatools.get_backend("cuda12x")
Running the installation
To start the from-source installation, ensure the pre-requisite are met, clone
the repository, and then simply run a pip install
command:
# Clone the repository
git clone https://github.com/mikekatz04/LISAanalysistools.git
cd LISAanalysistools
# Run the install
pip install .
If the installation does not work, first check the detailed installation documentation. If it still does not work, please open an issue on the GitHub repository or contact the developers through other means.
Running the Tests
The tests require a few dependencies which are not installed by default. To install them, add the [testing]
label to LISA Analysis Tools package
name when installing it. E.g:
# For CPU-only version with testing enabled
pip install lisaanalysistools[testing]
# For GPU version with CUDA 12.Y and testing enabled
pip install lisaanalysistools-cuda12x[testing]
# For from-source install with testing enabled
git clone https://github.com/mikekatz04/LISAanalysistools.git
cd LISAanalysistools
pip install '.[testing]'
To run the tests, open a terminal in a directory containing the sources of LISA Analysis Tools and then run the unittest
module in discover
mode:
$ git clone https://github.com/mikekatz04/LISAanalysistools.git
$ cd LISAanalysistools
$ python -m lisatools.tests # or "python -m unittest discover"
...
----------------------------------------------------------------------
Ran 20 tests in 71.514s
OK
Contributing
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.
If you want to develop LISA Analysis Tools and produce documentation, install lisatools
from source with the [dev]
label and in editable
mode:
$ git clone https://github.com/mikekatz04/LISAanalysistools.git
$ cd LISAanalysistools
pip install -e '.[dev, testing]'
This will install necessary packages for building the documentation (sphinx
, pypandoc
, sphinx_rtd_theme
, nbsphinx
) and to run the tests.
The documentation source files are in docs/source
. To compile the documentation locally, change to the docs
directory and run make html
.
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
Contributors
A (non-exhaustive) list of contributors to the LISA Analysis Tools code can be found in CONTRIBUTORS.md.
License
This project is licensed under the Apache License - see the LICENSE file for details.
Citation
Please make sure to cite LISA Analysis Tools papers and the LISA Analysis Tools software on Zenodo.
We provide a set of prepared references in PAPERS.bib. There are other papers that require citation based on the classes used. For most classes this applies to, you can find these by checking the citation
attribute for that class. All references are detailed in the CITATION.cff file.
Documentation:
- Sensitivity Information
- Detector Information
- LISA Models
- Orbits
Orbits
Orbits.xp
Orbits.armlength
Orbits.LINKS
Orbits.SC
Orbits.link_space_craft_r
Orbits.link_space_craft_e
Orbits.filename
Orbits.open()
Orbits.t_base
Orbits.ltt_base
Orbits.n_base
Orbits.x_base
Orbits.v_base
Orbits.t
Orbits.ltt
Orbits.n
Orbits.x
Orbits.v
Orbits.configure()
Orbits.dt
Orbits.pycppdetector
Orbits.pycppdetector_args
Orbits.size
Orbits.get_light_travel_times()
Orbits.get_pos()
Orbits.get_normal_unit_vec()
Orbits.ptr
Orbits.supported_backends()
- Stock Orbit Options
- Stochastic Signals
- Data / Residual / Signal Container
DataResidualArray
DataResidualArray.init_kwargs
DataResidualArray.fmax
DataResidualArray.f_arr
DataResidualArray.dt
DataResidualArray.Tobs
DataResidualArray.df
DataResidualArray.frequency_arr
DataResidualArray.data_res_arr
DataResidualArray.ndim
DataResidualArray.flatten()
DataResidualArray.shape
DataResidualArray.loglog()
DataResidualArray.char_strain
- Analysis Container
AnalysisContainer
AnalysisContainer.data_res_arr
AnalysisContainer.sens_mat
AnalysisContainer.signal_gen
AnalysisContainer.loglog()
AnalysisContainer.inner_product()
AnalysisContainer.snr()
AnalysisContainer.template_inner_product()
AnalysisContainer.template_snr()
AnalysisContainer.template_likelihood()
AnalysisContainer.likelihood()
AnalysisContainer.calculate_signal_likelihood()
AnalysisContainer.calculate_signal_inner_product()
AnalysisContainer.calculate_signal_snr()
AnalysisContainer.eryn_likelihood_function()
- Diagnostics
inner_product()
residual_source_likelihood_term()
noise_likelihood_term()
residual_full_source_and_noise_likelihood()
data_signal_source_likelihood_term()
data_signal_full_source_and_noise_likelihood()
snr()
h_var_p_eps()
dh_dlambda()
info_matrix()
covariance()
plot_covariance_corner()
plot_covariance_contour()
get_eigeninfo()
cutler_vallisneri_bias()
scale_to_snr()
- GW Source Tools