diff --git a/.github/workflows/test_suite.yml b/.github/workflows/test_suite.yml index 9d64f3e..032f6ff 100644 --- a/.github/workflows/test_suite.yml +++ b/.github/workflows/test_suite.yml @@ -4,7 +4,7 @@ on: branches: [ main ] jobs: - build: + python_3_10_job: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -15,5 +15,18 @@ jobs: run: | python -m pip install --upgrade pip pip install -r requirements.txt + - name: Test with pytest + run: python -m unittest discover tests + python_3_12_job: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + with: + python-version: '3.12' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt - name: Test with pytest run: python -m unittest discover tests \ No newline at end of file diff --git a/CITATION.cff b/CITATION.cff index 8c24977..8457a6d 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -30,7 +30,7 @@ authors: - family-names: "Valorz" given-names: "Finny" title: "mayawaves" -version: v2023.10 -date-released: 2023-10-23 +version: v2024.4 +date-released: 2024-04-05 url: "https://github.com/MayaWaves/mayawaves" doi: 10.5281/zenodo.10035526 \ No newline at end of file diff --git a/docs/html/_sources/source/getting_started.rst.txt b/docs/html/_sources/source/getting_started.rst.txt index e45a2e4..b38e493 100644 --- a/docs/html/_sources/source/getting_started.rst.txt +++ b/docs/html/_sources/source/getting_started.rst.txt @@ -31,11 +31,17 @@ at the top of your file. You can also import specific parts of mayawaves instead Requirements ------------------------------------- -Due to its dependencies, this package requires 3.9 :math:`\leq` python :math:`\leq` 3.10. +For most usecases, this package requires 3.9 :math:`\leq` python. It also relies upon the following python packages which are automatically installed from pip when you install mayawaves:: - numpy, scipy, pandas, romspline, wget, matplotlib, mock, numba, scri + numpy, scipy, pandas, romspline, wget, matplotlib, mock + + +However, if you want to use the ability to switch to a center-of-mass frame for the gravitational radiation, that has +additional dependencies that require python :math:`\leq` 3.10 as well as the following dependencies:: + + numba, scri This package has been tested with Einstein Toolkit Release Meitner (released on December 6th, 2023). It supports output from the following thorns:: diff --git a/docs/html/searchindex.js b/docs/html/searchindex.js index 6ddae9d..18f8977 100644 --- a/docs/html/searchindex.js +++ b/docs/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index", "source/contributing", "source/getting_help", "source/getting_started", "source/mayawaves.coalescence", "source/mayawaves.compactobject", "source/mayawaves.radiation", "source/mayawaves.utils", "source/notebooks/catalog_utils", "source/notebooks/compact_objects", "source/notebooks/creating_h5", "source/notebooks/exporting_lvk", "source/notebooks/gravitational_waves", "source/notebooks/reading_raw_files"], "filenames": ["index.rst", "source/contributing.rst", "source/getting_help.rst", "source/getting_started.rst", "source/mayawaves.coalescence.rst", "source/mayawaves.compactobject.rst", "source/mayawaves.radiation.rst", "source/mayawaves.utils.rst", "source/notebooks/catalog_utils.ipynb", "source/notebooks/compact_objects.ipynb", "source/notebooks/creating_h5.ipynb", "source/notebooks/exporting_lvk.ipynb", "source/notebooks/gravitational_waves.ipynb", "source/notebooks/reading_raw_files.ipynb"], "titles": ["Welcome to Mayawaves\u2019s documentation!", "Contributor\u2019s Guide", "Getting Help", "Getting Started", "mayawaves.coalescence module", "mayawaves.compactobject module", "mayawaves.radiation module", "mayawaves.utils package", "Catalog Utils", "Compact Objects", "Creating a Mayawaves h5 File", "Exporting to LVK Catalog Format", "Gravitational Waves", "Reading raw simulation files"], "terms": {"i": [0, 1, 3, 4, 5, 6, 7], "python": [0, 1, 3], "librari": [0, 1, 2, 3], "analysi": [0, 1], "numer": [0, 3, 8], "rel": [0, 3, 8], "simul": [0, 4, 5, 6, 7], "binari": [0, 7], "black": [0, 3, 4], "hole": [0, 3, 4], "perform": [0, 4, 7], "einstein": [0, 3], "toolkit": [0, 3], "http": [0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13], "einsteintoolkit": 0, "org": [0, 3, 4, 6, 7, 9, 10, 11, 12, 13], "provid": [0, 3, 4, 6, 7], "through": [0, 3, 4, 6], "maya": [0, 1, 7, 9, 11, 12], "public": [0, 3, 7], "waveform": [0, 3, 7, 9, 12], "catalog": [0, 4, 7, 9, 12], "cgp": [0, 8, 9, 11, 12], "ph": [0, 8, 9, 11, 12], "utexa": [0, 8, 9, 11, 12], "edu": [0, 2, 8, 9, 11, 12], "produc": 0, "larg": 0, "amount": 0, "data": [0, 3, 4, 5, 6, 7, 11], "ar": [0, 1, 3, 4, 6, 7], "gener": [0, 3, 7], "over": [0, 4, 5, 6], "cours": 0, "mani": 0, "dai": 0, "The": [0, 1, 3, 4, 5, 6, 7], "typic": 0, "broken": [0, 1], "multipl": 0, "output": [0, 3, 7], "directori": [0, 1, 7, 13], "within": [0, 4, 6, 7], "which": [0, 3, 4, 5, 6, 7], "must": [0, 7], "stitch": [0, 3, 7], "togeth": [0, 3, 7], "process": [0, 1], "whole": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 13], "design": 0, "streamlin": 0, "analsi": 0, "raw": [0, 4, 6, 7], "store": [0, 3, 4, 6, 7, 10, 11], "them": [0, 1], "h5": [0, 4, 7], "file": [0, 2, 4, 7, 8], "format": [0, 3, 7, 9, 12], "handl": [0, 3], "more": [0, 3], "effici": 0, "than": [0, 4, 7], "ascii": [0, 3, 4, 7], "reduc": 0, "disc": 0, "space": 0, "taken": 0, "while": 0, "still": 0, "retain": 0, "precis": 0, "some": [0, 3], "kei": [0, 4, 7], "function": [0, 1, 3, 4, 5], "follow": [0, 1, 3, 8], "read": [0, 3, 7], "track": [0, 1], "properti": [0, 4, 5, 6, 7], "trajectori": [0, 3], "spin": [0, 3, 4, 5, 6, 7], "mass": [0, 3, 4, 5, 6, 7], "horizon": [0, 3, 4, 5, 7], "inform": [0, 3, 5, 6, 7, 10], "etc": [0, 3, 8], "comput": [0, 3, 4, 6, 7], "about": [0, 3, 4], "orbit": [0, 4, 7], "eccentr": [0, 3, 4, 8], "separ": [0, 3, 4, 7, 8, 13], "frequenc": [0, 4, 6, 7], "kick": [0, 4], "quantiti": 0, "pertain": [0, 3, 5, 6], "gravit": [0, 3, 4, 6, 7, 8], "radiat": [0, 3, 4], "psi_4": [0, 3, 4, 6], "strain": [0, 4, 6], "extrapol": [0, 4, 6, 7], "energi": [0, 3, 4, 6], "export": [0, 3, 7], "requir": [0, 7], "ligo": [0, 7], "analys": [0, 3], "analyz": 0, "learn": 0, "how": 0, "us": [0, 1, 4, 5, 6, 7], "both": [0, 1], "your": [0, 3], "own": 0, "get": [0, 5], "start": [0, 6], "help": [0, 1], "contributor": 0, "guid": 0, "creat": [0, 1, 4, 6, 7], "wave": [0, 3, 4, 6, 7], "compact": [0, 3, 4, 5, 10], "object": [0, 3, 4, 5, 6, 7, 8, 10], "lvk": [0, 3], "util": [0, 10, 11, 13], "coalesc": [0, 5, 7], "modul": [0, 3], "compactobject": [0, 4], "radiationbundl": [0, 4, 6], "radiationspher": [0, 3, 6], "radiationmod": [0, 3, 6], "packag": [0, 3], "postprocessingutil": [0, 3, 10, 11, 13], "catalogutil": [0, 3, 8], "postnewtonianutil": 0, "index": 0, "mayawav": [1, 2, 8, 9, 11, 12, 13], "intend": 1, "grow": 1, "expand": 1, "addit": [1, 3], "tool": 1, "we": [1, 3, 8], "welcom": 1, "input": 1, "commun": 1, "new": [1, 6], "featur": 1, "implement": 1, "In": [1, 3], "order": [1, 4, 6, 7], "smooth": 1, "workflow": 1, "you": [1, 2, 3, 6, 7, 12], "repositori": [1, 2, 3], "branch": 1, "all": [1, 3, 4, 5, 6, 7], "do": 1, "ani": [1, 2, 3], "main": [1, 3], "mai": [1, 3], "primari": [1, 3, 4, 7], "can": [1, 3, 4, 6, 7, 12], "step": 1, "section": [1, 3], "onli": [1, 6], "need": 1, "done": [1, 3], "onc": [1, 9, 11, 12], "click": 1, "button": 1, "github": [1, 2, 3], "com": [1, 2, 3, 11], "Then": [1, 9, 10, 11, 12, 13], "clone": [1, 3], "machin": 1, "git": [1, 3], "your_workspac": 1, "link": 1, "upstream": 1, "cd": [1, 3], "remot": 1, "add": 1, "setup": 1, "checkout": 1, "fetch": 1, "set": [1, 4, 6, 9, 10, 11, 12, 13], "pull": 1, "To": [1, 3, 8, 9, 10, 11, 12, 13], "regularli": 1, "push": 1, "origin": [1, 4, 6, 7], "b": [1, 3], "name": [1, 4, 7, 8], "desir": [1, 4, 5, 7], "commit": 1, "frequent": 1, "descript": 1, "messag": 1, "when": [1, 3, 4, 6, 7], "readi": 1, "first": [1, 4, 6, 8], "futur": 1, "period": 1, "rebas": 1, "f": [1, 3, 8, 9], "ensur": 1, "exist": [1, 4], "pass": 1, "suit": 1, "from": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13], "m": [1, 3, 4, 5, 6, 7, 9, 11], "unittest": 1, "discov": 1, "pleas": [1, 2, 3], "thei": [1, 7], "also": [1, 3, 7, 9, 11, 12], "ve": 1, "made": 1, "doc": 1, "rm": [1, 3], "r": [1, 3, 4, 9, 12, 13], "html": 1, "doctre": 1, "happi": 1, "review": 1, "develop": [1, 2], "team": 1, "If": [2, 3, 4, 6, 7], "encount": 2, "bug": 2, "unexpect": 2, "behavior": 2, "an": [2, 4], "issu": 2, "feel": 2, "free": 2, "contact": 2, "directli": [2, 3], "dferg": 2, "illinoi": 2, "have": [2, 5, 7, 9, 12], "question": [2, 3, 7], "regard": [2, 7], "either": [3, 4, 6], "pypi": 3, "sourc": [3, 4], "pip": 3, "code": [3, 7], "put": 3, "import": [3, 7, 8, 9, 10, 11, 12, 13], "top": 3, "specif": [3, 4, 6], "part": [3, 4, 5, 6, 11], "instead": [3, 7], "would": [3, 6], "rather": [3, 7], "create_h5_from_simul": [3, 7, 10], "due": 3, "its": [3, 4, 6], "depend": 3, "3": [3, 6, 7, 8, 9, 10, 11, 12], "9": [3, 8, 9, 12], "leq": [3, 4, 6], "10": [3, 7, 8, 9, 12], "It": 3, "reli": 3, "upon": [3, 7], "automat": 3, "numpi": [3, 4, 6, 7, 12, 13], "scipi": 3, "panda": [3, 4], "romsplin": 3, "wget": 3, "matplotlib": [3, 9, 12, 13], "mock": 3, "numba": 3, "scri": 3, "ha": [3, 4, 6], "been": [3, 6], "test": 3, "releas": 3, "meitner": 3, "decemb": 3, "6th": 3, "2023": 3, "support": 3, "thorn": 3, "ahfinderdirect": 3, "puncturetrack": 3, "quasilocalmeasur": 3, "multipol": [3, 4], "weylscal4": 3, "ihspin": 3, "shifttrack": 3, "ylm_decomp": 3, "runstat": [3, 4], "research": 3, "bibtex": [3, 7], "softwar": 3, "ferguson_mayawaves_2023": 3, "author": 3, "ferguson": 3, "deborah": 3, "ann": 3, "surendra": 3, "gracia": 3, "linar": 3, "miguel": 3, "iglesia": 3, "hector": 3, "jan": 3, "aasim": 3, "martinez": 3, "erick": 3, "lu": 3, "meoni": 3, "filippo": 3, "nowicki": 3, "ryan": 3, "trostel": 3, "max": [3, 4, 6], "tsao": 3, "bing": 3, "jyun": 3, "valorz": 3, "finni": 3, "doi": 3, "5281": 3, "zenodo": [3, 9, 10, 11, 12, 13], "10035526": 3, "month": 3, "oct": 3, "titl": 3, "url": 3, "version": 3, "v2023": 3, "year": 3, "apa": 3, "d": 3, "": [3, 4, 5], "h": [3, 4, 6], "A": [3, 4, 6], "e": [3, 6, 7], "l": [3, 4, 5, 6, 11, 12], "These": 3, "citat": 3, "download": [3, 7, 9, 10, 11, 12, 13], "heart": 3, "interact": [3, 4, 6, 7, 8], "contain": [3, 4, 5, 6, 7], "everyth": 3, "each": [3, 4, 6, 7], "involv": 3, "refer": [3, 4], "tutori": [3, 9, 10, 11], "detail": 3, "list": [3, 4, 5, 6, 7], "well": [3, 7], "attribut": 3, "access": 3, "secondari": [3, 4, 7], "final": [3, 4], "larger": [3, 4, 7], "initi": [3, 4, 7], "primarili": 3, "behind": 3, "scene": 3, "extract": [3, 4, 6, 7], "concentr": 3, "sphere": [3, 6], "sever": 3, "express": [3, 6], "wai": 3, "independ": 3, "locat": [3, 4, 6, 7], "decompos": [3, 4, 6], "term": [3, 6], "spheric": [3, 4, 6], "harmon": [3, 4, 6], "t": [3, 4, 6, 9, 12, 13], "theta": [3, 4, 6, 12], "phi": [3, 4, 6, 12], "sum_": [3, 4, 6], "ell": [3, 4, 6], "psi_": [3, 12, 13], "4": [3, 8, 9, 10, 11, 12, 13], "_": [3, 4, 6], "2": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "y_": [3, 4, 6], "pair": [3, 6], "There": 3, "includ": [3, 4, 5, 6, 7], "shown": 3, "creating_h5": [3, 9, 11, 12], "exporting_lvk": 3, "enabl": 3, "user": 3, "entir": 3, "metadata": [3, 4, 7, 8, 10], "walk": 3, "two": [3, 4, 7], "want": [3, 7], "describ": [3, 4, 6], "below": [3, 4], "begin": [3, 4, 5], "instruct": 3, "With": 3, "hand": 3, "h5_filepath": [3, 4], "limit": 3, "For": [3, 7], "exampl": 3, "exhaust": 3, "coales": [3, 4], "method": [3, 4, 6], "see": 3, "call": 3, "primary_compact_object": [3, 4, 9], "secondary_compact_object": [3, 4, 9], "final_compact_object": [3, 4], "associ": [3, 4, 6, 7], "know": 3, "relev": 3, "appar": [3, 5], "document": [3, 7], "back": [3, 4], "summarize_coalesc": [3, 7], "quick": 3, "summari": [3, 7], "paramet": [3, 4, 5, 6, 7, 10], "plot": [3, 7, 9, 12], "gravitaiton": 3, "monitor": 3, "ongo": 3, "run": [3, 7, 9, 10, 11, 12, 13], "simpli": 3, "make": 3, "get_stitched_data": [3, 7], "given": [3, 4, 5, 6, 7], "return": [3, 4, 5, 6, 7], "arrai": [3, 4, 5, 6, 7], "same": [3, 6, 7], "request": [3, 5, 6, 7], "full": [3, 5, 7], "search": 3, "even": 3, "class": [4, 5, 6, 7], "str": [4, 5, 7], "fundament": 4, "average_run_spe": 4, "float": [4, 5, 6, 7], "averag": 4, "speed": 4, "hr": 4, "catalog_id": [4, 7], "id": [4, 7, 8, 11], "center_of_mass": [4, 6], "tupl": [4, 5, 6, 7], "center": [4, 6, 7, 8], "coordin": [4, 13], "posit": [4, 5], "close": 4, "compact_object_by_id": 4, "int": [4, 5, 6, 7], "type": [4, 5, 6, 7], "compact_object_data_for_object": 4, "object_num": 4, "ndarrai": [4, 5, 6, 7], "intern": [4, 5, 7], "compact_object_metadata_dict": 4, "dict": [4, 6, 7], "retriev": 4, "relat": 4, "compact_object": 4, "denergy_dt_radi": [4, 6], "lmin": [4, 6], "none": [4, 6, 7], "lmax": [4, 6], "extraction_radiu": [4, 6, 7, 11], "rate": [4, 6], "arxiv": [4, 6, 7], "ab": [4, 6, 7], "0707": [4, 6], "4654": [4, 6], "total": [4, 6, 7, 8], "sum": [4, 6], "mode": [4, 6], "option": [4, 6, 7], "minumum": [4, 6], "valu": [4, 5, 6, 7, 8], "rang": [4, 6], "maximum": [4, 5, 6, 8], "radiu": [4, 5, 6, 7], "infinit": [4, 6, 7], "time": [4, 5, 6, 7, 9], "np": [4, 5, 12, 13], "de": [4, 6], "dt": [4, 6], "dp_dt_radiat": [4, 6], "deriv": [4, 6, 7], "linear": [4, 6], "momentum": [4, 5, 6, 7], "being": [4, 7], "dp": [4, 6], "eccentricity_and_mean_anomaly_at_tim": 4, "start_tim": 4, "desired_tim": [4, 5], "mean": [4, 5], "anomali": 4, "1810": [4, 7], "00036": [4, 7], "four": 4, "unabl": 4, "fit": 4, "successfulli": 4, "estim": 4, "base": [4, 7], "defin": [4, 6, 7], "math": 4, "pi": [4, 6, 12], "rac": 4, "t_": 4, "prev": 4, "next": 4, "where": [4, 5, 6, 7], "periapsi": 4, "arg": 4, "energy_radi": [4, 6], "cummul": [4, 6], "nergi": 4, "cumul": [4, 6], "extrapolate_psi4_to_infinite_radiu": 4, "1": [4, 6, 7, 8, 9, 10, 11, 12], "calcul": [4, 7], "finit": 4, "obtain": [4, 7, 8, 10, 11, 13], "1008": [4, 6], "4360": [4, 6], "1108": [4, 6], "4421": [4, 6], "default": [4, 6, 7], "remnant": 4, "form": [4, 5], "after": 4, "merger": 4, "path": [4, 7, 9, 10, 11, 12], "included_extraction_radii": 4, "radii": [4, 6], "included_mod": [4, 6], "label": [4, 6, 9], "initial_orbital_frequ": 4, "init": 4, "vector": [4, 5], "between": [4, 7], "initial_separ": 4, "l_max": [4, 6], "linear_momentum_radi": [4, 6], "inear": 4, "mass_ratio": [4, 7, 8], "ratio": [4, 7], "alwai": 4, "greater": 4, "divid": 4, "smaller": [4, 7], "q": [4, 7, 8], "m_1": [4, 7], "m_2": [4, 7], "merge_tim": [4, 8], "goe": 4, "1e": 4, "what": [4, 7], "wa": [4, 6], "object_numb": 4, "orbital_angular_momentum_unit_vector": 4, "angular": [4, 7], "unit": 4, "orbital_angular_momentum_unit_vector_at_tim": 4, "orbital_frequ": [4, 7], "orbital_frequency_at_tim": 4, "orbital_phase_in_xy_plan": 4, "phase": [4, 6], "xy": [4, 5, 9], "plane": [4, 5, 6, 9], "parameter_fil": 4, "dictionari": [4, 6, 7], "text": 4, "rpar": 4, "par": [4, 8], "psi4_amp_phase_for_mod": 4, "0": [4, 6, 7, 8, 9, 10, 11, 12], "amplitud": [4, 6], "psi4_max_time_for_mod": 4, "reach": [4, 6], "peak": [4, 6], "specifi": [4, 6, 7], "singl": [4, 6], "psi4_real_imag_for_mod": [4, 12], "real": [4, 6, 12], "imaginari": [4, 6], "compon": [4, 6, 9], "psi4_sourc": 4, "could": 4, "weylscal": 4, "radiation_fram": 4, "current": [4, 6, 8], "frame": [4, 6], "radius_for_extrapol": [4, 6], "recoil_spe": 4, "km_per_sec": 4, "bool": [4, 6, 7], "fals": [4, 6, 7], "magnitud": [4, 7], "recoil": 4, "whether": [4, 6, 7], "report": 4, "km": 4, "fraction": 4, "c": [4, 12, 13], "recoil_veloc": 4, "veloc": [4, 5], "runstats_data": 4, "dataset": [4, 5], "separation_at_tim": 4, "point": [4, 6, 13], "separation_unit_vector_at_tim": 4, "separation_vector": [4, 13], "set_radiation_fram": [4, 12], "center_of_mass_correct": [4, 6, 7, 11, 12], "decomposit": [4, 6], "drift": [4, 6, 7], "correct": [4, 6, 7], "spin_configur": 4, "configur": 4, "non": 4, "align": [4, 7], "precess": [4, 7], "neither": 4, "anti": [4, 7], "least": 4, "one": [4, 6, 7], "strain_amp_phase_for_mod": 4, "second": [4, 6], "integr": [4, 6], "fix": [4, 6], "rh_": [4, 6, 12], "strain_for_mod": [4, 12], "plu": [4, 6], "cross": [4, 6], "rh": [4, 6, 12], "strain_recomposed_at_sky_loc": [4, 12], "recompos": [4, 6], "sky": [4, 6], "up": [4, 6], "weight": [4, 6], "h_": [4, 6], "lt": [4, 6, 8, 9], "symmetric_mass_ratio": [4, 8], "symmetr": [4, 7], "eta": [4, 7, 8], "data_arrai": 5, "header_list": 5, "identifi": 5, "object_typ": 5, "initial_irreducible_mass": [5, 9], "initial_horizon_mass": [5, 9], "initial_dimensionless_spin": [5, 9], "initial_dimensional_spin": [5, 9], "column": [5, 7, 9], "enum": [5, 6, 7], "easili": [5, 7], "referenc": [5, 7], "apparent_horizon_area": 5, "area": [5, 9], "apparent_horizon_areal_radiu": 5, "areal": 5, "apparent_horizon_circumfer": 5, "circumfer": [5, 9], "xz": 5, "yz": 5, "respect": [5, 7], "apparent_horizon_expansion_theta_l": 5, "expans": 5, "theta_": 5, "apparent_horizon_inner_expansion_theta_n": 5, "inner": 5, "n": [5, 8], "apparent_horizon_maximum_radiu": 5, "apparent_horizon_mean_curvatur": 5, "curvatur": 5, "apparent_horizon_mean_radiu": 5, "apparent_horizon_minimum_radiu": 5, "minimum": [5, 6, 8], "apparent_horizon_quadrupol": 5, "quadrupol": 5, "xx": 5, "yy": 5, "zz": 5, "available_data_column": [5, 9], "dimensional_spin_at_tim": 5, "dimension": [5, 9], "pmb": 5, "j": 5, "dimensional_spin_vector": 5, "dimensionless_spin_at_tim": 5, "dimensionless": [5, 7, 9], "chi": 5, "giventim": 5, "dimensionless_spin_vector": [5, 9], "final_dimensional_spin": 5, "last": 5, "avail": [5, 7, 8], "final_dimensionless_spin": 5, "final_horizon_mass": 5, "final_irreducible_mass": 5, "irreduc": [5, 9], "get_data_from_column": [5, 9], "column_nam": 5, "iter": 5, "horizon_mass": 5, "horizon_mass_at_tim": 5, "irreducible_mass": 5, "irreducible_mass_at_tim": 5, "last_available_spin_data_tim": 5, "momentum_vector": 5, "position_vector": [5, 9], "velocity_vector": 5, "radiation_spher": 6, "radi": [6, 10], "create_extrapolated_spher": 6, "those": [6, 7], "static": 6, "create_radiation_bundl": 6, "radiation_group": 6, "group": [6, 7], "h5py": 6, "consist": 6, "extrapolated_spher": 6, "com_correct": 6, "get_denergy_dt_radi": 6, "kwarg": 6, "like": 6, "valid": 6, "keyword": 6, "argument": 6, "get_dp_dt_radi": 6, "get_energy_radi": 6, "get_linear_momentum_radi": 6, "get_psi4_amplitude_for_mod": 6, "infin": 6, "get_psi4_imaginary_for_mod": 6, "get_psi4_max_time_for_mod": 6, "get_psi4_phase_for_mod": 6, "get_psi4_real_for_mod": 6, "get_strain_amplitude_for_mod": 6, "get_strain_cross_for_mod": 6, "get_strain_phase_for_mod": 6, "get_strain_plus_for_mod": 6, "get_strain_recomposed_at_sky_loc": 6, "get_tim": 6, "timeseri": 6, "included_radii": 6, "set_fram": 6, "new_fram": 6, "transform": 6, "stamp": [6, 7], "necessari": 6, "move": 6, "seri": [6, 7], "mode_dict": 6, "create_radiation_spher": 6, "radius_group": 6, "inerti": 6, "get_extrapolated_spher": 6, "get_mod": 6, "raw_mod": 6, "alpha": 6, "beta": 6, "offset": 6, "boost": 6, "rad": 6, "psi4_group": 6, "psi4_real": 6, "psi4_imaginari": 6, "strain_plu": 6, "strain_cross": 6, "compute_and_store_strain": 6, "doubl": 6, "fourier": 6, "create_radiation_mod": 6, "psi4": 6, "empti": 6, "construct": 6, "pdf": [6, 7], "eq": 6, "8": [6, 8, 9, 11, 12, 13], "14": [6, 8, 9, 12], "15": [6, 8, 9, 12], "get_mode_with_extrapolated_radiu": 6, "h_cross_dot": 6, "h_plus_dot": 6, "l_valu": 6, "denot": 6, "m_valu": 6, "omega_start": 6, "psi4_amplitud": 6, "weyl": 6, "scalar": 6, "sqrt": [6, 13], "mathcal": 6, "re": 6, "im": 6, "psi4_max_tim": 6, "psi4_omega": 6, "psi4_phas": 6, "textrm": 6, "tan": 6, "strain_amplitud": 6, "strain_phas": 6, "ylm": 6, "angl": 6, "z": [6, 9], "axi": [6, 13], "x": [6, 9, 12], "y": [6, 9], "counterclockwis": 6, "raw_directori": 7, "output_directori": [7, 10], "compat": 7, "determine_lvc_format": 7, "initial_horizon_tim": 7, "determin": 7, "lvc": 7, "number": 7, "definit": 7, "1703": 7, "01076": 7, "export_to_ascii": 7, "individu": 7, "export_to_lal_compatible_format": [7, 11], "nr_group": [7, 11], "nr_code": [7, 11], "bibtex_kei": [7, 11], "contact_email": [7, 11], "license_typ": 7, "nr_techniqu": 7, "comparable_simul": 7, "files_in_error_seri": 7, "production_run": 7, "true": [7, 8, 11, 12], "lalsuit": 7, "readabl": 7, "pycbc": 7, "less": 7, "stringent": 7, "nr": 7, "cite": 7, "email": [7, 11], "aris": 7, "tag": 7, "save": 7, "g": 7, "maya0908": 7, "techniqu": 7, "were": 7, "other": 7, "similar": 7, "error": 7, "product": 7, "export_to_lvcnr_catalog": [7, 11], "suffici": 7, "abl": 7, "eeccentr": 7, "Will": 7, "filenam": 7, "low_pass_filt": 7, "low_pass_freq_cutoff": 7, "filter": 7, "out": 7, "high": 7, "nois": 7, "butter": 7, "cutoff": 7, "remov": 7, "summar": 7, "collect": 7, "txt": 7, "displai": 7, "aligned_spin_simul": [7, 8], "download_waveform": [7, 8], "save_wf_path": [7, 8], "safeti": 7, "lvcnr_format": [7, 8], "By": 7, "verif": 7, "size": [7, 8], "exce": 7, "gb": [7, 8], "get_parameters_for_simul": [7, 8], "get_simulations_with_mass_ratio": [7, 8], "tol": [7, 8], "0001": 7, "toler": 7, "geq": 7, "satisfi": 7, "get_simulations_with_paramet": [7, 8], "param": [7, 8], "take": 7, "correspond": 7, "get_simulations_with_symmetric_mass_ratio": [7, 8], "nonspinning_simul": [7, 8], "plot_catalog_paramet": [7, 8], "p1": 7, "p2": 7, "save_path": [7, 8], "dpi": [7, 8], "300": 7, "color": [7, 8], "cornflowerblu": 7, "against": 7, "histogram": 7, "distribut": 7, "figur": 7, "precessing_simul": [7, 8], "spin_magnitudes_for_simul": 7, "system": 7, "dh_dr_from_separ": 7, "primary_dimensionless_spin": 7, "secondary_dimensionless_spin": 7, "hamiltonian": 7, "orbital_frequency_from_separ": 7, "quasi": 7, "circular": 7, "equat": 7, "1702": 7, "00872": 7, "radial_momentum_from_separ": 7, "radial": 7, "give": 7, "separation_from_orbital_frequ": 7, "tangential_momentum_from_separ": 7, "tangenti": 7, "p": 8, "updat": 8, "all_simul": 8, "print": [8, 9, 10], "len": 8, "ten": 8, "635": 8, "gt0001": 8, "39": [8, 9], "gt0002": 8, "gt0003": 8, "gt0004": 8, "gt0005": 8, "gt0006": 8, "gt0007": 8, "gt0008": 8, "gt0009": 8, "gt0010": 8, "sep": 8, "mass_1": 8, "mass_2": 8, "irreducible_mass_1": 8, "irreducible_mass_2": 8, "dimensionless_spin_1": 8, "dimensionless_spin_x_1": 8, "dimensionless_spin_y_1": 8, "dimensionless_spin_z_1": 8, "dimensionless_spin_2": 8, "dimensionless_spin_x_2": 8, "dimensionless_spin_y_2": 8, "dimensionless_spin_z_2": 8, "chi_eff": 8, "chi_p": 8, "f_lower_at_1msun": 8, "mean_anomali": 8, "maya_size_gb": 8, "lvcnr_size_gb": 8, "5": [8, 9, 11, 12, 13], "103": 8, "gt0370": 8, "6": [8, 9, 11, 12, 13], "157": 8, "gt0355": 8, "7": [8, 9, 11, 12, 13], "370": 8, "sim": 8, "53": 8, "gt0428": 8, "92": 8, "gt0376": 8, "23": [8, 9], "005": 8, "11": [8, 9, 12], "simulation_paramet": 8, "gt0378": 8, "050005889145129": 8, "12": [8, 9, 12], "simulation_parameter_str": 8, "join": 8, "item": 8, "d10_a0": 8, "0_q2": 8, "05_m103_q": 8, "m1": 8, "672130590009755": 8, "m2": 8, "3278676386095844": 8, "m1_irr": 8, "67213059": 8, "m2_irr": 8, "3278676386": 8, "220371": 8, "a1": 8, "0775370384725463e": 8, "05": [8, 9], "a1x": 8, "189079683097315e": 8, "13": [8, 9, 12], "a1i": 8, "31375343569779e": 8, "a1z": 8, "0775370384725444e": 8, "a2": 8, "5292461249223795e": 8, "a2x": 8, "0523082784791894e": 8, "a2i": 8, "0845157044129532e": 8, "a2z": 8, "5292461249220173e": 8, "2256380923285683e": 8, "652204568862241e": 8, "1807": 8, "5340709236116": 8, "99995249833483": 8, "005865368688535364": 8, "998": 8, "6407813": 8, "3597998470067978": 8, "lvcnr": 8, "00412185862660408": 8, "01": 8, "001": 8, "4999": 8, "125": 8, "21": [8, 9], "27": [8, 9], "500": 8, "432x288": 8, "ax": [8, 9], "gt": [8, 9], "9996440633567225": 8, "07085918507278": 8, "8089458636660637": 8, "8085713846964644": 8, "salmon": 8, "990315336895653e": 8, "18": [8, 9], "9316840649738882": 8, "16": [8, 9, 12], "green": 8, "8462054439966505e": 8, "9261967059788215": 8, "physic": 8, "websit": 8, "here": 8, "gt0898": 8, "17": [8, 9, 12, 13], "gw15_d12_q1": 8, "2_a0": 8, "0_m140": 8, "5455": 8, "4545": 8, "2000": 8, "2479": 8, "0000": 8, "1445": 8, "3053": 8, "0021": 8, "2766": 8, "1891": 8, "1250": 8, "9177": 8, "0084": 8, "tar": [9, 10, 11, 12, 13], "gz": [9, 10, 11, 12, 13], "record": [9, 10, 11, 12, 13], "10668525": [9, 10, 11, 12, 13], "unzip": [9, 10, 11, 12, 13], "example_h5_filepath": [9, 11, 12], "sampl": [9, 11, 12], "try": [9, 11, 12], "pyplot": [9, 12, 13], "plt": [9, 12, 13], "d11_q5_a1_": [9, 10, 11, 12, 13], "362_": [9, 10, 11, 12, 13], "0548_": [9, 10, 11, 12, 13], "64_a2_": [9, 10, 11, 12, 13], "0013_0": [9, 10, 11, 12, 13], "001_": [9, 10, 11, 12, 13], "0838_m533": [9, 10, 11, 12, 13], "33": [9, 10, 11, 12, 13], "primary_posit": 9, "secondary_posit": 9, "gca": [9, 13], "set_aspect": [9, 13], "equal": [9, 13], "adjust": [9, 13], "box": [9, 13], "xlabel": [9, 12, 13], "ylabel": [9, 12, 13], "show": [9, 12, 13], "bh": 9, "36451101": 9, "05518085": 9, "64443774": 9, "00129516": 9, "00100747": 9, "08374188": 9, "25138458": 9, "0380554": 9, "4444357": 9, "59770435e": 9, "79857020e": 9, "32619237e": 9, "03": 9, "8304509510300787": 9, "16666770757317356": 9, "7588330514": 9, "166521231": 9, "primary_spin": 9, "a_": 9, "legend": 9, "secondary_spin": 9, "available_column": 9, "itt": 9, "vx": 9, "vy": 9, "vz": 9, "ai": 9, "az": 9, "sx": 9, "sy": 9, "sz": 9, "px": 9, "py": 9, "pz": 9, "min_radiu": 9, "max_radiu": 9, "19": 9, "mean_radiu": 9, "20": 9, "quadrupole_xx": 9, "quadrupole_xi": 9, "22": [9, 12, 13], "quadrupole_xz": 9, "quadrupole_yi": 9, "24": 9, "quadrupole_yz": 9, "25": 9, "quadrupole_zz": 9, "26": 9, "min_x": 9, "max_x": 9, "28": 9, "min_i": 9, "29": 9, "max_i": 9, "30": 9, "min_z": 9, "31": 9, "max_z": 9, "32": 9, "xy_plane_circumfer": 9, "xz_plane_circumfer": 9, "34": 9, "yz_plane_circumfer": 9, "35": 9, "ratio_of_xz_xy_plane_circumfer": 9, "36": 9, "ratio_of_yz_xy_plane_circumfer": 9, "37": 9, "38": 9, "m_irreduc": 9, "areal_radiu": 9, "40": 9, "expansion_theta_l": 9, "41": 9, "inner_expansion_theta_n": 9, "42": 9, "product_of_the_expans": 9, "43": 9, "mean_curvatur": 9, "44": 9, "gradient_of_the_areal_radiu": 9, "45": 9, "gradient_of_the_expansion_theta_l": 9, "46": 9, "gradient_of_the_inner_expansion_theta_n": 9, "47": 9, "gradient_of_the_product_of_the_expans": 9, "48": 9, "gradient_of_the_mean_curvatur": 9, "49": 9, "minimum_of_the_mean_curvatur": 9, "50": 9, "maximum_of_the_mean_curvatur": 9, "51": 9, "integral_of_the_mean_curvatur": 9, "52": 9, "example_simul": 10, "result": [10, 13], "h5_path": 10, "output_direcori": 11, "ut": 11, "austin": 11, "jani": 11, "2016wkt": 11, "doe": 11, "sim0001": 11, "75": 11, "example_h5_filenam": 12, "time_psi4": 12, "imag": 12, "axvlin": [12, 13], "150": [12, 13], "a9a9a9": [12, 13], "linestyl": [12, 13], "time_strain": 12, "rh_plu": 12, "rh_cross": 12, "time_strain_extrapol": 12, "rh_plus_extrapol": 12, "rh_cross_extrapol": 12, "time_strain_com": 12, "rh_plus_com": 12, "rh_cross_com": 12, "simulation_directori": 13, "shifttracker0_data": 13, "shifttracker0": 13, "asc": 13, "shifttracker1_data": 13, "shifttracker1": 13, "separation_mag": 13, "linalg": 13, "norm": 13, "psi4_data": 13, "psi4r_l2_m2_r75": 13, "00": 13}, "objects": {"mayawaves": [[4, 0, 0, "-", "coalescence"], [5, 0, 0, "-", "compactobject"]], "mayawaves.coalescence": [[4, 1, 1, "", "Coalescence"]], "mayawaves.coalescence.Coalescence": [[4, 2, 1, "", "average_run_speed"], [4, 2, 1, "", "catalog_id"], [4, 2, 1, "", "center_of_mass"], [4, 3, 1, "", "close"], [4, 3, 1, "", "compact_object_by_id"], [4, 3, 1, "", "compact_object_data_for_object"], [4, 3, 1, "", "compact_object_metadata_dict"], [4, 2, 1, "", "compact_objects"], [4, 3, 1, "", "dEnergy_dt_radiated"], [4, 3, 1, "", "dP_dt_radiated"], [4, 3, 1, "", "eccentricity_and_mean_anomaly_at_time"], [4, 3, 1, "", "energy_radiated"], [4, 3, 1, "", "extrapolate_psi4_to_infinite_radius"], [4, 2, 1, "", "final_compact_object"], [4, 2, 1, "", "h5_filepath"], [4, 2, 1, "", "included_extraction_radii"], [4, 2, 1, "", "included_modes"], [4, 2, 1, "", "initial_orbital_frequency"], [4, 2, 1, "", "initial_separation"], [4, 2, 1, "", "l_max"], [4, 3, 1, "", "linear_momentum_radiated"], [4, 2, 1, "", "mass_ratio"], [4, 2, 1, "", "merge_time"], [4, 2, 1, "", "name"], [4, 2, 1, "", "object_numbers"], [4, 2, 1, "", "orbital_angular_momentum_unit_vector"], [4, 3, 1, "", "orbital_angular_momentum_unit_vector_at_time"], [4, 2, 1, "", "orbital_frequency"], [4, 3, 1, "", "orbital_frequency_at_time"], [4, 2, 1, "", "orbital_phase_in_xy_plane"], [4, 2, 1, "", "parameter_files"], [4, 2, 1, "", "primary_compact_object"], [4, 3, 1, "", "psi4_amp_phase_for_mode"], [4, 3, 1, "", "psi4_max_time_for_mode"], [4, 3, 1, "", "psi4_real_imag_for_mode"], [4, 2, 1, "", "psi4_source"], [4, 2, 1, "", "radiation_frame"], [4, 2, 1, "", "radiationbundle"], [4, 2, 1, "", "radius_for_extrapolation"], [4, 3, 1, "", "recoil_speed"], [4, 3, 1, "", "recoil_velocity"], [4, 2, 1, "", "runstats_data"], [4, 2, 1, "", "secondary_compact_object"], [4, 3, 1, "", "separation_at_time"], [4, 3, 1, "", "separation_unit_vector_at_time"], [4, 2, 1, "", "separation_vector"], [4, 3, 1, "", "set_radiation_frame"], [4, 2, 1, "", "spin_configuration"], [4, 3, 1, "", "strain_amp_phase_for_mode"], [4, 3, 1, "", "strain_for_mode"], [4, 3, 1, "", "strain_recomposed_at_sky_location"], [4, 2, 1, "", "symmetric_mass_ratio"]], "mayawaves.compactobject": [[5, 1, 1, "", "CompactObject"]], "mayawaves.compactobject.CompactObject": [[5, 1, 1, "", "Column"], [5, 2, 1, "", "apparent_horizon_area"], [5, 2, 1, "", "apparent_horizon_areal_radius"], [5, 2, 1, "", "apparent_horizon_circumferences"], [5, 2, 1, "", "apparent_horizon_expansion_theta_l"], [5, 2, 1, "", "apparent_horizon_inner_expansion_theta_n"], [5, 2, 1, "", "apparent_horizon_maximum_radius"], [5, 2, 1, "", "apparent_horizon_mean_curvature"], [5, 2, 1, "", "apparent_horizon_mean_radius"], [5, 2, 1, "", "apparent_horizon_minimum_radius"], [5, 2, 1, "", "apparent_horizon_quadrupoles"], [5, 2, 1, "", "available_data_columns"], [5, 2, 1, "", "data_array"], [5, 3, 1, "", "dimensional_spin_at_time"], [5, 2, 1, "", "dimensional_spin_vector"], [5, 3, 1, "", "dimensionless_spin_at_time"], [5, 2, 1, "", "dimensionless_spin_vector"], [5, 2, 1, "", "final_dimensional_spin"], [5, 2, 1, "", "final_dimensionless_spin"], [5, 2, 1, "", "final_horizon_mass"], [5, 2, 1, "", "final_irreducible_mass"], [5, 3, 1, "", "get_data_from_columns"], [5, 2, 1, "", "horizon_mass"], [5, 3, 1, "", "horizon_mass_at_time"], [5, 2, 1, "", "initial_dimensional_spin"], [5, 2, 1, "", "initial_dimensionless_spin"], [5, 2, 1, "", "initial_horizon_mass"], [5, 2, 1, "", "initial_irreducible_mass"], [5, 2, 1, "", "irreducible_mass"], [5, 3, 1, "", "irreducible_mass_at_time"], [5, 2, 1, "", "last_available_spin_data_time"], [5, 2, 1, "", "momentum_vector"], [5, 2, 1, "", "position_vector"], [5, 2, 1, "", "velocity_vector"]], "mayawaves.radiation": [[6, 1, 1, "", "RadiationBundle"], [6, 1, 1, "", "RadiationMode"], [6, 1, 1, "", "RadiationSphere"]], "mayawaves.radiation.RadiationBundle": [[6, 3, 1, "", "create_extrapolated_sphere"], [6, 3, 1, "", "create_radiation_bundle"], [6, 2, 1, "", "extrapolated_sphere"], [6, 2, 1, "", "frame"], [6, 3, 1, "", "get_dEnergy_dt_radiated"], [6, 3, 1, "", "get_dP_dt_radiated"], [6, 3, 1, "", "get_energy_radiated"], [6, 3, 1, "", "get_linear_momentum_radiated"], [6, 3, 1, "", "get_psi4_amplitude_for_mode"], [6, 3, 1, "", "get_psi4_imaginary_for_mode"], [6, 3, 1, "", "get_psi4_max_time_for_mode"], [6, 3, 1, "", "get_psi4_phase_for_mode"], [6, 3, 1, "", "get_psi4_real_for_mode"], [6, 3, 1, "", "get_strain_amplitude_for_mode"], [6, 3, 1, "", "get_strain_cross_for_mode"], [6, 3, 1, "", "get_strain_phase_for_mode"], [6, 3, 1, "", "get_strain_plus_for_mode"], [6, 3, 1, "", "get_strain_recomposed_at_sky_location"], [6, 3, 1, "", "get_time"], [6, 2, 1, "", "included_modes"], [6, 2, 1, "", "included_radii"], [6, 2, 1, "", "l_max"], [6, 2, 1, "", "radiation_spheres"], [6, 2, 1, "", "radius_for_extrapolation"], [6, 3, 1, "", "set_frame"]], "mayawaves.radiation.RadiationMode": [[6, 3, 1, "", "compute_and_store_strain"], [6, 3, 1, "", "create_radiation_mode"], [6, 2, 1, "", "dEnergy_dt_radiated"], [6, 2, 1, "", "dP_dt_radiated"], [6, 2, 1, "", "energy_radiated"], [6, 2, 1, "", "extrapolated"], [6, 3, 1, "", "get_mode_with_extrapolated_radius"], [6, 2, 1, "", "h_cross_dot"], [6, 2, 1, "", "h_plus_dot"], [6, 2, 1, "", "l_value"], [6, 2, 1, "", "linear_momentum_radiated"], [6, 2, 1, "", "m_value"], [6, 2, 1, "", "omega_start"], [6, 2, 1, "", "psi4_amplitude"], [6, 2, 1, "", "psi4_imaginary"], [6, 2, 1, "", "psi4_max_time"], [6, 2, 1, "", "psi4_omega"], [6, 2, 1, "", "psi4_phase"], [6, 2, 1, "", "psi4_real"], [6, 2, 1, "", "radiation_sphere"], [6, 2, 1, "", "radius"], [6, 2, 1, "", "strain_amplitude"], [6, 2, 1, "", "strain_cross"], [6, 2, 1, "", "strain_phase"], [6, 2, 1, "", "strain_plus"], [6, 2, 1, "", "time"], [6, 3, 1, "", "ylm"]], "mayawaves.radiation.RadiationSphere": [[6, 3, 1, "", "create_radiation_sphere"], [6, 2, 1, "", "extrapolated"], [6, 2, 1, "", "frame"], [6, 3, 1, "", "get_dEnergy_dt_radiated"], [6, 3, 1, "", "get_dP_dt_radiated"], [6, 3, 1, "", "get_energy_radiated"], [6, 3, 1, "", "get_extrapolated_sphere"], [6, 3, 1, "", "get_linear_momentum_radiated"], [6, 3, 1, "", "get_mode"], [6, 3, 1, "", "get_psi4_amplitude_for_mode"], [6, 3, 1, "", "get_psi4_imaginary_for_mode"], [6, 3, 1, "", "get_psi4_max_time_for_mode"], [6, 3, 1, "", "get_psi4_phase_for_mode"], [6, 3, 1, "", "get_psi4_real_for_mode"], [6, 3, 1, "", "get_strain_amplitude_for_mode"], [6, 3, 1, "", "get_strain_cross_for_mode"], [6, 3, 1, "", "get_strain_phase_for_mode"], [6, 3, 1, "", "get_strain_plus_for_mode"], [6, 3, 1, "", "get_strain_recomposed_at_sky_location"], [6, 2, 1, "", "included_modes"], [6, 2, 1, "", "l_max"], [6, 2, 1, "", "modes"], [6, 2, 1, "", "radius"], [6, 2, 1, "", "raw_modes"], [6, 3, 1, "", "set_frame"], [6, 2, 1, "", "time"]], "mayawaves.utils": [[7, 0, 0, "-", "catalogutils"], [7, 0, 0, "-", "postnewtonianutils"], [7, 0, 0, "-", "postprocessingutils"]], "mayawaves.utils.catalogutils": [[7, 1, 1, "", "Catalog"], [7, 1, 1, "", "Parameter"]], "mayawaves.utils.catalogutils.Catalog": [[7, 2, 1, "", "aligned_spin_simulations"], [7, 3, 1, "", "download_waveforms"], [7, 3, 1, "", "get_parameters_for_simulation"], [7, 3, 1, "", "get_simulations_with_mass_ratio"], [7, 3, 1, "", "get_simulations_with_parameters"], [7, 3, 1, "", "get_simulations_with_symmetric_mass_ratio"], [7, 2, 1, "", "nonspinning_simulations"], [7, 3, 1, "", "plot_catalog_parameters"], [7, 2, 1, "", "precessing_simulations"], [7, 3, 1, "", "spin_magnitudes_for_simulation"]], "mayawaves.utils.postnewtonianutils": [[7, 4, 1, "", "dH_dr_from_separation"], [7, 4, 1, "", "orbital_frequency_from_separation"], [7, 4, 1, "", "radial_momentum_from_separation"], [7, 4, 1, "", "separation_from_orbital_frequency"], [7, 4, 1, "", "tangential_momentum_from_separation"]], "mayawaves.utils.postprocessingutils": [[7, 4, 1, "", "create_h5_from_simulation"], [7, 4, 1, "", "determine_lvc_format"], [7, 4, 1, "", "export_to_ascii"], [7, 4, 1, "", "export_to_lal_compatible_format"], [7, 4, 1, "", "export_to_lvcnr_catalog"], [7, 4, 1, "", "get_stitched_data"], [7, 4, 1, "", "low_pass_filter"], [7, 4, 1, "", "summarize_coalescence"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"]}, "titleterms": {"welcom": 0, "mayawav": [0, 3, 4, 5, 6, 7, 10], "": [0, 1], "document": [0, 1], "tutori": [0, 12, 13], "indic": 0, "tabl": 0, "contributor": 1, "guid": 1, "make": 1, "fork": 1, "keep": 1, "your": [1, 8], "up": 1, "date": 1, "chang": [1, 12], "run": 1, "test": 1, "updat": 1, "submit": 1, "merg": 1, "request": [1, 8], "get": [2, 3, 8], "help": 2, "start": [3, 13], "how": 3, "instal": 3, "requir": [3, 11], "cite": 3, "basic": 3, "overview": 3, "structur": [3, 13], "coalesc": [3, 4, 9, 11, 12], "compactobject": [3, 5, 9], "radiationbundl": 3, "util": [3, 7, 8], "workflow": 3, "obtain": [3, 9, 12], "compat": [3, 11], "h5": [3, 9, 10, 11, 12, 13], "file": [3, 9, 10, 11, 12, 13], "work": 3, "us": [3, 8, 9, 11, 12, 13], "analyz": 3, "raw": [3, 13], "simul": [3, 8, 9, 10, 11, 12, 13], "without": 3, "creat": [3, 8, 9, 10, 11, 12], "an": [3, 8, 10, 11, 13], "maya": [3, 8], "catalog": [3, 8, 11], "modul": [4, 5, 6, 7], "radiat": [6, 12, 13], "packag": [7, 12], "postprocessingutil": 7, "catalogutil": 7, "postnewtonianutil": 7, "instanc": 8, "class": 8, "ha": 8, "properti": 8, "list": 8, "all": [8, 9, 10], "The": [8, 11], "paramet": [8, 9], "enum": 8, "allow": [8, 11], "you": [8, 9, 11, 13], "easili": 8, "refer": 8, "specif": 8, "grab": 8, "nonspin": 8, "align": 8, "spin": [8, 9], "precess": 8, "given": [8, 9, 12], "mass": [8, 9, 11, 12], "ratio": 8, "can": [8, 9, 11, 13], "also": 8, "enter": 8, "toler": 8, "receiv": 8, "ar": [8, 9], "within": 8, "symmetr": 8, "thi": [8, 11], "method": 8, "ani": [8, 9, 13], "number": 8, "It": [8, 11], "i": [8, 9, 11, 12, 13], "better": 8, "non": 8, "zero": 8, "while": 8, "search": 8, "waveform": [8, 11], "ensur": 8, "fit": 8, "desir": [8, 10, 11], "plot": [8, 13], "distribtut": 8, "provid": [8, 11], "directori": [8, 10], "save": 8, "figur": 8, "thei": 8, "rather": 8, "than": 8, "displai": 8, "download": 8, "lvc": [8, 11], "nr": [8, 11], "format": [8, 11], "http": 8, "arxiv": 8, "org": 8, "ab": 8, "1703": 8, "01076": 8, "compact": 9, "object": [9, 11, 12], "associ": [9, 11, 12], "larger": 9, "primari": 9, "smaller": 9, "secondari": 9, "trajectori": 9, "data": [9, 10, 12, 13], "initi": [9, 11, 12, 13], "timeseri": 9, "note": [9, 12, 13], "mani": 9, "system": 9, "horizon": 9, "track": 9, "wai": 9, "through": 9, "merger": 9, "after": 9, "which": [9, 11], "valu": 9, "longer": 9, "reliabl": 9, "access": 9, "avail": 9, "close": [9, 11, 12], "point": 10, "root": 10, "stitch": [10, 13], "export": 11, "lvk": 11, "extrapol": [11, 12], "infinit": [11, 12], "radiu": [11, 12], "have": [11, 13], "same": 11, "name": 11, "option": 11, "correct": [11, 12], "center": [11, 12], "drift": [11, 12], "befor": [11, 12, 13], "lal": 11, "let": 11, "lalsimul": 11, "pycbc": 11, "specifi": 11, "finit": 11, "extract": [11, 12], "so": 11, "gravit": 12, "wave": 12, "read": [12, 13], "psi_4": [12, 13], "mode": 12, "75": [12, 13], "extraction_radiu": [12, 13], "m": [12, 13], "junk": [12, 13], "should": [12, 13], "cut": [12, 13], "off": [12, 13], "most": [12, 13], "analys": [12, 13], "That": [12, 13], "time": [12, 13], "mark": [12, 13], "follow": [12, 13], "vertic": [12, 13], "dash": [12, 13], "line": [12, 13], "strain": 12, "If": 12, "recombin": 12, "sky": 12, "locat": 12, "frame": 12, "when": 12, "send": 12, "scri": 12, "reset": 12, "origin": 12, "do": 13, "fulli": 13, "visualz": 13, "get_stitched_data": 13, "togeth": 13, "output": 13, "column": 13, "each": 13, "row": 13, "being": 13, "iter": 13, "step": 13, "base": 13, "present": 13, "In": 13, "2": 13, "3": 13, "0": 13, "shift": 13, "tracker": 13, "contain": 13, "x": 13, "y": 13, "compon": 13, "posit": 13, "real": 13, "componenet": 13, "1": 13, "ylm_weylscal4": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Welcome to Mayawaves\u2019s documentation!": [[0, "welcome-to-mayawaves-s-documentation"]], "Tutorials:": [[0, null]], "Documentation:": [[0, null]], "Indices and tables": [[0, "indices-and-tables"]], "Contributor\u2019s Guide": [[1, "contributor-s-guide"]], "Make a fork": [[1, "make-a-fork"]], "Keeping your fork up to date": [[1, "keeping-your-fork-up-to-date"]], "Making changes": [[1, "making-changes"]], "Running tests": [[1, "running-tests"]], "Updating the documentation": [[1, "updating-the-documentation"]], "Submitting a merge request": [[1, "submitting-a-merge-request"]], "Getting Help": [[2, "getting-help"]], "Getting Started": [[3, "getting-started"]], "How to install": [[3, "how-to-install"]], "Requirements": [[3, "requirements"]], "How to cite": [[3, "how-to-cite"]], "Basic overview of structure": [[3, "basic-overview-of-structure"]], "Coalescence": [[3, "coalescence"]], "CompactObject": [[3, "compactobject"]], "RadiationBundle": [[3, "radiationbundle"]], "Utilities": [[3, "utilities"]], "Basic overview of workflow": [[3, "basic-overview-of-workflow"]], "Obtaining a mayawaves compatible h5 file": [[3, "obtaining-a-mayawaves-compatible-h5-file"]], "Working with a mayawaves h5 file using Coalescence": [[3, "working-with-a-mayawaves-h5-file-using-coalescence"]], "Analyzing raw simulations without creating an h5 file": [[3, "analyzing-raw-simulations-without-creating-an-h5-file"]], "Analyzing the MAYA Catalog": [[3, "analyzing-the-maya-catalog"]], "mayawaves.coalescence module": [[4, "module-mayawaves.coalescence"]], "mayawaves.compactobject module": [[5, "module-mayawaves.compactobject"]], "mayawaves.radiation module": [[6, "mayawaves-radiation-module"]], "mayawaves.utils package": [[7, "mayawaves-utils-package"]], "mayawaves.utils.postprocessingutils module": [[7, "module-mayawaves.utils.postprocessingutils"]], "mayawaves.utils.catalogutils module": [[7, "module-mayawaves.utils.catalogutils"]], "mayawaves.utils.postnewtonianutils module": [[7, "module-mayawaves.utils.postnewtonianutils"]], "Catalog Utils": [[8, "Catalog-Utils"]], "Create an instance of the Catalog class": [[8, "Create-an-instance-of-the-Catalog-class"]], "Catalog has a property to list all simulations in the maya catalog": [[8, "Catalog-has-a-property-to-list-all-simulations-in-the-maya-catalog"]], "The Parameter enum allows you to easily reference specific parameters": [[8, "The-Parameter-enum-allows-you-to-easily-reference-specific-parameters"]], "Catalog has properties to grab all nonspinning, aligned spin, or precessing simulations": [[8, "Catalog-has-properties-to-grab-all-nonspinning,-aligned-spin,-or-precessing-simulations"]], "Get simulations with a given mass ratio": [[8, "Get-simulations-with-a-given-mass-ratio"]], "You can also enter a tolerance for a parameter, and will receive simulations that are within that tolerance of the requested mass ratio": [[8, "You-can-also-enter-a-tolerance-for-a-parameter,-and-will-receive-simulations-that-are-within-that-tolerance-of-the-requested-mass-ratio"]], "Get simulations with a given symmetric mass ratio": [[8, "Get-simulations-with-a-given-symmetric-mass-ratio"]], "Get the all the parameters of a given simulation": [[8, "Get-the-all-the-parameters-of-a-given-simulation"]], "Get all simulations with given parameters": [[8, "Get-all-simulations-with-given-parameters"]], "This method can be used with any number of parameters. It is better to use non-zero tolerances while searching for waveforms to ensure you get all simulations that fit your desired parameters.": [[8, "This-method-can-be-used-with-any-number-of-parameters.-It-is-better-to-use-non-zero-tolerances-while-searching-for-waveforms-to-ensure-you-get-all-simulations-that-fit-your-desired-parameters."]], "Plotting the distribtution of waveform parameters in the catalog": [[8, "Plotting-the-distribtution-of-waveform-parameters-in-the-catalog"]], "You can also provide a directory to save the figures in and they will be saved rather than displayed.": [[8, "You-can-also-provide-a-directory-to-save-the-figures-in-and-they-will-be-saved-rather-than-displayed."]], "Downloading waveforms": [[8, "Downloading-waveforms"]], "Waveforms can also be downloaded in the lvc-nr format (https://arxiv.org/abs/1703.01076)": [[8, "Waveforms-can-also-be-downloaded-in-the-lvc-nr-format-(https://arxiv.org/abs/1703.01076)"]], "Compact Objects": [[9, "Compact-Objects"]], "Create a Coalescence object using the simulation h5 file": [[9, "Create-a-Coalescence-object-using-the-simulation-h5-file"], [11, "Create-a-Coalescence-object-using-the-simulation-h5-file"], [12, "Create-a-Coalescence-object-using-the-simulation-h5-file"]], "Obtain the CompactObject objects associated with the larger object (primary) and smaller object (secondary)": [[9, "Obtain-the-CompactObject-objects-associated-with-the-larger-object-(primary)-and-smaller-object-(secondary)"]], "Obtain trajectory data": [[9, "Obtain-trajectory-data"]], "Obtain initial data such as masses and spins": [[9, "Obtain-initial-data-such-as-masses-and-spins"]], "Obtain timeseries data for parameters such as spin": [[9, "Obtain-timeseries-data-for-parameters-such-as-spin"]], "Note that for many systems, the initial horizons are tracked all the way through merger after which the values are no longer reliable.": [[9, "Note-that-for-many-systems,-the-initial-horizons-are-tracked-all-the-way-through-merger-after-which-the-values-are-no-longer-reliable."]], "You can access any data that is available for the given compact object": [[9, "You-can-access-any-data-that-is-available-for-the-given-compact-object"]], "Close the Coalescence object to close the associated h5 file": [[9, "Close-the-Coalescence-object-to-close-the-associated-h5-file"], [11, "Close-the-Coalescence-object-to-close-the-associated-h5-file"], [12, "Close-the-Coalescence-object-to-close-the-associated-h5-file"]], "Creating a Mayawaves h5 File": [[10, "Creating-a-Mayawaves-h5-File"]], "Point to the root of the desired simulation directory": [[10, "Point-to-the-root-of-the-desired-simulation-directory"]], "Create an h5 file with all the stitched data for the simulation": [[10, "Create-an-h5-file-with-all-the-stitched-data-for-the-simulation"]], "Exporting to LVK Catalog Format": [[11, "Exporting-to-LVK-Catalog-Format"]], "Export to the LVC NR catalog format": [[11, "Export-to-the-LVC-NR-catalog-format"]], "Exporting to this format requires extrapolating the waveforms to infinite radius.": [[11, "Exporting-to-this-format-requires-extrapolating-the-waveforms-to-infinite-radius."]], "The exported file will have the same name as the initial simulation h5 file.": [[11, "The-exported-file-will-have-the-same-name-as-the-initial-simulation-h5-file."]], "An optional name can be provided which will be used as the name of the exported file": [[11, "An-optional-name-can-be-provided-which-will-be-used-as-the-name-of-the-exported-file"]], "You can optionally correct for the center of mass drift before exporting": [[11, "You-can-optionally-correct-for-the-center-of-mass-drift-before-exporting"]], "Export to LAL Compatible format": [[11, "Export-to-LAL-Compatible-format"]], "This format lets you use the waveform with LALSimulation and PyCBC. It is of the same format as the LVC NR catalog but allows you to specify a finite extraction radius if so desired.": [[11, "This-format-lets-you-use-the-waveform-with-LALSimulation-and-PyCBC.-It-is-of-the-same-format-as-the-LVC-NR-catalog-but-allows-you-to-specify-a-finite-extraction-radius-if-so-desired."]], "Gravitational Waves": [[12, "Gravitational-Waves"]], "Read the \\Psi_4 data for a given mode and extraction radius": [[12, "Read-the-\\Psi_4-data-for-a-given-mode-and-extraction-radius"]], "Note that the initial ~(75 + extraction_radius) M will be junk radiation and should be cut off for most analyses. That time is marked in the following tutorial with a vertical dashed line.": [[12, "Note-that-the-initial-~(75-+-extraction_radius)-M-will-be-junk-radiation-and-should-be-cut-off-for-most-analyses.-That-time-is-marked-in-the-following-tutorial-with-a-vertical-dashed-line."], [13, "Note-that-the-initial-~(75-+-extraction_radius)-M-will-be-junk-radiation-and-should-be-cut-off-for-most-analyses.-That-time-is-marked-in-the-following-tutorial-with-a-vertical-dashed-line."]], "Read the strain data for a given mode and extraction radius": [[12, "Read-the-strain-data-for-a-given-mode-and-extraction-radius"]], "If no extraction radius is given, the radiation is extrapolated to infinite radius": [[12, "If-no-extraction-radius-is-given,-the-radiation-is-extrapolated-to-infinite-radius"]], "Recombine the modes to obtain the strain at a given sky location": [[12, "Recombine-the-modes-to-obtain-the-strain-at-a-given-sky-location"]], "Correct for center of mass drift by changing the frame of the radiation extraction": [[12, "Correct-for-center-of-mass-drift-by-changing-the-frame-of-the-radiation-extraction"]], "When correcting for center of mass drift, the junk radiation is cut off before sending the data to the scri package.": [[12, "When-correcting-for-center-of-mass-drift,-the-junk-radiation-is-cut-off-before-sending-the-data-to-the-scri-package."]], "Reset to the original frame": [[12, "Reset-to-the-original-frame"]], "Reading raw simulation files": [[13, "Reading-raw-simulation-files"]], "Simulations do not have to be fully stitched into an h5 file before reading and visualzing their data": [[13, "Simulations-do-not-have-to-be-fully-stitched-into-an-h5-file-before-reading-and-visualzing-their-data"]], "Use get_stitched_data to stitch together any output file structured as columns of data with each row being a time/iteration step": [[13, "Use-get_stitched_data-to-stitch-together-any-output-file-structured-as-columns-of-data-with-each-row-being-a-time/iteration-step"]], "You can then plot the data based on the columns present in the data file. In the following, columns 2 and 3 (starting at 0) of the shift tracker files contain the x and y components of the positions.": [[13, "You-can-then-plot-the-data-based-on-the-columns-present-in-the-data-file.-In-the-following,-columns-2-and-3-(starting-at-0)-of-the-shift-tracker-files-contain-the-x-and-y-components-of-the-positions."]], "Plot the real componenet of the \\Psi_4 data using columns 0 and 1 of the Ylm_WEYLSCAL4 files": [[13, "Plot-the-real-componenet-of-the-\\Psi_4-data-using-columns-0-and-1-of-the-Ylm_WEYLSCAL4-files"]]}, "indexentries": {"coalescence (class in mayawaves.coalescence)": [[4, "mayawaves.coalescence.Coalescence"]], "average_run_speed (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.average_run_speed"]], "catalog_id (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.catalog_id"]], "center_of_mass (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.center_of_mass"]], "close() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.close"]], "compact_object_by_id() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.compact_object_by_id"]], "compact_object_data_for_object() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.compact_object_data_for_object"]], "compact_object_metadata_dict() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.compact_object_metadata_dict"]], "compact_objects (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.compact_objects"]], "denergy_dt_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.dEnergy_dt_radiated"]], "dp_dt_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.dP_dt_radiated"]], "eccentricity_and_mean_anomaly_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.eccentricity_and_mean_anomaly_at_time"]], "energy_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.energy_radiated"]], "extrapolate_psi4_to_infinite_radius() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.extrapolate_psi4_to_infinite_radius"]], "final_compact_object (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.final_compact_object"]], "h5_filepath (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.h5_filepath"]], "included_extraction_radii (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.included_extraction_radii"]], "included_modes (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.included_modes"]], "initial_orbital_frequency (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.initial_orbital_frequency"]], "initial_separation (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.initial_separation"]], "l_max (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.l_max"]], "linear_momentum_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.linear_momentum_radiated"]], "mass_ratio (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.mass_ratio"]], "mayawaves.coalescence": [[4, "module-mayawaves.coalescence"]], "merge_time (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.merge_time"]], "module": [[4, "module-mayawaves.coalescence"], [5, "module-mayawaves.compactobject"], [7, "module-mayawaves.utils.catalogutils"], [7, "module-mayawaves.utils.postnewtonianutils"], [7, "module-mayawaves.utils.postprocessingutils"]], "name (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.name"]], "object_numbers (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.object_numbers"]], "orbital_angular_momentum_unit_vector (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.orbital_angular_momentum_unit_vector"]], "orbital_angular_momentum_unit_vector_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.orbital_angular_momentum_unit_vector_at_time"]], "orbital_frequency (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.orbital_frequency"]], "orbital_frequency_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.orbital_frequency_at_time"]], "orbital_phase_in_xy_plane (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.orbital_phase_in_xy_plane"]], "parameter_files (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.parameter_files"]], "primary_compact_object (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.primary_compact_object"]], "psi4_amp_phase_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.psi4_amp_phase_for_mode"]], "psi4_max_time_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.psi4_max_time_for_mode"]], "psi4_real_imag_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.psi4_real_imag_for_mode"]], "psi4_source (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.psi4_source"]], "radiation_frame (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.radiation_frame"]], "radiationbundle (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.radiationbundle"]], "radius_for_extrapolation (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.radius_for_extrapolation"]], "recoil_speed() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.recoil_speed"]], "recoil_velocity() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.recoil_velocity"]], "runstats_data (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.runstats_data"]], "secondary_compact_object (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.secondary_compact_object"]], "separation_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.separation_at_time"]], "separation_unit_vector_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.separation_unit_vector_at_time"]], "separation_vector (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.separation_vector"]], "set_radiation_frame() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.set_radiation_frame"]], "spin_configuration (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.spin_configuration"]], "strain_amp_phase_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.strain_amp_phase_for_mode"]], "strain_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.strain_for_mode"]], "strain_recomposed_at_sky_location() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.strain_recomposed_at_sky_location"]], "symmetric_mass_ratio (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.symmetric_mass_ratio"]], "compactobject (class in mayawaves.compactobject)": [[5, "mayawaves.compactobject.CompactObject"]], "compactobject.column (class in mayawaves.compactobject)": [[5, "mayawaves.compactobject.CompactObject.Column"]], "apparent_horizon_area (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_area"]], "apparent_horizon_areal_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_areal_radius"]], "apparent_horizon_circumferences (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_circumferences"]], "apparent_horizon_expansion_theta_l (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_expansion_theta_l"]], "apparent_horizon_inner_expansion_theta_n (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_inner_expansion_theta_n"]], "apparent_horizon_maximum_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_maximum_radius"]], "apparent_horizon_mean_curvature (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_mean_curvature"]], "apparent_horizon_mean_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_mean_radius"]], "apparent_horizon_minimum_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_minimum_radius"]], "apparent_horizon_quadrupoles (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_quadrupoles"]], "available_data_columns (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.available_data_columns"]], "data_array (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.data_array"]], "dimensional_spin_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.dimensional_spin_at_time"]], "dimensional_spin_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.dimensional_spin_vector"]], "dimensionless_spin_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.dimensionless_spin_at_time"]], "dimensionless_spin_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.dimensionless_spin_vector"]], "final_dimensional_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_dimensional_spin"]], "final_dimensionless_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_dimensionless_spin"]], "final_horizon_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_horizon_mass"]], "final_irreducible_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_irreducible_mass"]], "get_data_from_columns() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.get_data_from_columns"]], "horizon_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.horizon_mass"]], "horizon_mass_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.horizon_mass_at_time"]], "initial_dimensional_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_dimensional_spin"]], "initial_dimensionless_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_dimensionless_spin"]], "initial_horizon_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_horizon_mass"]], "initial_irreducible_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_irreducible_mass"]], "irreducible_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.irreducible_mass"]], "irreducible_mass_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.irreducible_mass_at_time"]], "last_available_spin_data_time (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.last_available_spin_data_time"]], "mayawaves.compactobject": [[5, "module-mayawaves.compactobject"]], "momentum_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.momentum_vector"]], "position_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.position_vector"]], "velocity_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.velocity_vector"]], "radiationbundle (class in mayawaves.radiation)": [[6, "mayawaves.radiation.RadiationBundle"]], "radiationmode (class in mayawaves.radiation)": [[6, "mayawaves.radiation.RadiationMode"]], "radiationsphere (class in mayawaves.radiation)": [[6, "mayawaves.radiation.RadiationSphere"]], "compute_and_store_strain() (mayawaves.radiation.radiationmode method)": [[6, "mayawaves.radiation.RadiationMode.compute_and_store_strain"]], "create_extrapolated_sphere() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.create_extrapolated_sphere"]], "create_radiation_bundle() (mayawaves.radiation.radiationbundle static method)": [[6, "mayawaves.radiation.RadiationBundle.create_radiation_bundle"]], "create_radiation_mode() (mayawaves.radiation.radiationmode static method)": [[6, "mayawaves.radiation.RadiationMode.create_radiation_mode"]], "create_radiation_sphere() (mayawaves.radiation.radiationsphere static method)": [[6, "mayawaves.radiation.RadiationSphere.create_radiation_sphere"]], "denergy_dt_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.dEnergy_dt_radiated"]], "dp_dt_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.dP_dt_radiated"]], "energy_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.energy_radiated"]], "extrapolated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.extrapolated"]], "extrapolated (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.extrapolated"]], "extrapolated_sphere (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.extrapolated_sphere"]], "frame (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.frame"]], "frame (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.frame"]], "get_denergy_dt_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_dEnergy_dt_radiated"]], "get_denergy_dt_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_dEnergy_dt_radiated"]], "get_dp_dt_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_dP_dt_radiated"]], "get_dp_dt_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_dP_dt_radiated"]], "get_energy_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_energy_radiated"]], "get_energy_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_energy_radiated"]], "get_extrapolated_sphere() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_extrapolated_sphere"]], "get_linear_momentum_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_linear_momentum_radiated"]], "get_linear_momentum_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_linear_momentum_radiated"]], "get_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_mode"]], "get_mode_with_extrapolated_radius() (mayawaves.radiation.radiationmode method)": [[6, "mayawaves.radiation.RadiationMode.get_mode_with_extrapolated_radius"]], "get_psi4_amplitude_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_amplitude_for_mode"]], "get_psi4_amplitude_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_amplitude_for_mode"]], "get_psi4_imaginary_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_imaginary_for_mode"]], "get_psi4_imaginary_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_imaginary_for_mode"]], "get_psi4_max_time_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_max_time_for_mode"]], "get_psi4_max_time_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_max_time_for_mode"]], "get_psi4_phase_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_phase_for_mode"]], "get_psi4_phase_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_phase_for_mode"]], "get_psi4_real_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_real_for_mode"]], "get_psi4_real_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_real_for_mode"]], "get_strain_amplitude_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_amplitude_for_mode"]], "get_strain_amplitude_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_amplitude_for_mode"]], "get_strain_cross_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_cross_for_mode"]], "get_strain_cross_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_cross_for_mode"]], "get_strain_phase_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_phase_for_mode"]], "get_strain_phase_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_phase_for_mode"]], "get_strain_plus_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_plus_for_mode"]], "get_strain_plus_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_plus_for_mode"]], "get_strain_recomposed_at_sky_location() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_recomposed_at_sky_location"]], "get_strain_recomposed_at_sky_location() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_recomposed_at_sky_location"]], "get_time() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_time"]], "h_cross_dot (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.h_cross_dot"]], "h_plus_dot (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.h_plus_dot"]], "included_modes (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.included_modes"]], "included_modes (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.included_modes"]], "included_radii (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.included_radii"]], "l_max (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.l_max"]], "l_max (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.l_max"]], "l_value (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.l_value"]], "linear_momentum_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.linear_momentum_radiated"]], "m_value (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.m_value"]], "modes (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.modes"]], "omega_start (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.omega_start"]], "psi4_amplitude (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_amplitude"]], "psi4_imaginary (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_imaginary"]], "psi4_max_time (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_max_time"]], "psi4_omega (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_omega"]], "psi4_phase (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_phase"]], "psi4_real (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_real"]], "radiation_sphere (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.radiation_sphere"]], "radiation_spheres (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.radiation_spheres"]], "radius (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.radius"]], "radius (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.radius"]], "radius_for_extrapolation (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.radius_for_extrapolation"]], "raw_modes (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.raw_modes"]], "set_frame() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.set_frame"]], "set_frame() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.set_frame"]], "strain_amplitude (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_amplitude"]], "strain_cross (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_cross"]], "strain_phase (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_phase"]], "strain_plus (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_plus"]], "time (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.time"]], "time (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.time"]], "ylm() (mayawaves.radiation.radiationmode static method)": [[6, "mayawaves.radiation.RadiationMode.ylm"]], "catalog (class in mayawaves.utils.catalogutils)": [[7, "mayawaves.utils.catalogutils.Catalog"]], "parameter (class in mayawaves.utils.catalogutils)": [[7, "mayawaves.utils.catalogutils.Parameter"]], "aligned_spin_simulations (mayawaves.utils.catalogutils.catalog property)": [[7, "mayawaves.utils.catalogutils.Catalog.aligned_spin_simulations"]], "create_h5_from_simulation() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.create_h5_from_simulation"]], "dh_dr_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.dH_dr_from_separation"]], "determine_lvc_format() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.determine_lvc_format"]], "download_waveforms() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.download_waveforms"]], "export_to_ascii() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.export_to_ascii"]], "export_to_lal_compatible_format() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.export_to_lal_compatible_format"]], "export_to_lvcnr_catalog() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.export_to_lvcnr_catalog"]], "get_parameters_for_simulation() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_parameters_for_simulation"]], "get_simulations_with_mass_ratio() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_simulations_with_mass_ratio"]], "get_simulations_with_parameters() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_simulations_with_parameters"]], "get_simulations_with_symmetric_mass_ratio() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_simulations_with_symmetric_mass_ratio"]], "get_stitched_data() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.get_stitched_data"]], "low_pass_filter() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.low_pass_filter"]], "mayawaves.utils.catalogutils": [[7, "module-mayawaves.utils.catalogutils"]], "mayawaves.utils.postnewtonianutils": [[7, "module-mayawaves.utils.postnewtonianutils"]], "mayawaves.utils.postprocessingutils": [[7, "module-mayawaves.utils.postprocessingutils"]], "nonspinning_simulations (mayawaves.utils.catalogutils.catalog property)": [[7, "mayawaves.utils.catalogutils.Catalog.nonspinning_simulations"]], "orbital_frequency_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.orbital_frequency_from_separation"]], "plot_catalog_parameters() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.plot_catalog_parameters"]], "precessing_simulations (mayawaves.utils.catalogutils.catalog property)": [[7, "mayawaves.utils.catalogutils.Catalog.precessing_simulations"]], "radial_momentum_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.radial_momentum_from_separation"]], "separation_from_orbital_frequency() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.separation_from_orbital_frequency"]], "spin_magnitudes_for_simulation() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.spin_magnitudes_for_simulation"]], "summarize_coalescence() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.summarize_coalescence"]], "tangential_momentum_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.tangential_momentum_from_separation"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["index", "source/contributing", "source/getting_help", "source/getting_started", "source/mayawaves.coalescence", "source/mayawaves.compactobject", "source/mayawaves.radiation", "source/mayawaves.utils", "source/notebooks/catalog_utils", "source/notebooks/compact_objects", "source/notebooks/creating_h5", "source/notebooks/exporting_lvk", "source/notebooks/gravitational_waves", "source/notebooks/reading_raw_files"], "filenames": ["index.rst", "source/contributing.rst", "source/getting_help.rst", "source/getting_started.rst", "source/mayawaves.coalescence.rst", "source/mayawaves.compactobject.rst", "source/mayawaves.radiation.rst", "source/mayawaves.utils.rst", "source/notebooks/catalog_utils.ipynb", "source/notebooks/compact_objects.ipynb", "source/notebooks/creating_h5.ipynb", "source/notebooks/exporting_lvk.ipynb", "source/notebooks/gravitational_waves.ipynb", "source/notebooks/reading_raw_files.ipynb"], "titles": ["Welcome to Mayawaves\u2019s documentation!", "Contributor\u2019s Guide", "Getting Help", "Getting Started", "mayawaves.coalescence module", "mayawaves.compactobject module", "mayawaves.radiation module", "mayawaves.utils package", "Catalog Utils", "Compact Objects", "Creating a Mayawaves h5 File", "Exporting to LVK Catalog Format", "Gravitational Waves", "Reading raw simulation files"], "terms": {"i": [0, 1, 3, 4, 5, 6, 7], "python": [0, 1, 3], "librari": [0, 1, 2, 3], "analysi": [0, 1], "numer": [0, 3, 8], "rel": [0, 3, 8], "simul": [0, 4, 5, 6, 7], "binari": [0, 7], "black": [0, 3, 4], "hole": [0, 3, 4], "perform": [0, 4, 7], "einstein": [0, 3], "toolkit": [0, 3], "http": [0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13], "einsteintoolkit": 0, "org": [0, 3, 4, 6, 7, 9, 10, 11, 12, 13], "provid": [0, 3, 4, 6, 7], "through": [0, 3, 4, 6], "maya": [0, 1, 7, 9, 11, 12], "public": [0, 3, 7], "waveform": [0, 3, 7, 9, 12], "catalog": [0, 4, 7, 9, 12], "cgp": [0, 8, 9, 11, 12], "ph": [0, 8, 9, 11, 12], "utexa": [0, 8, 9, 11, 12], "edu": [0, 2, 8, 9, 11, 12], "produc": 0, "larg": 0, "amount": 0, "data": [0, 3, 4, 5, 6, 7, 11], "ar": [0, 1, 3, 4, 6, 7], "gener": [0, 3, 7], "over": [0, 4, 5, 6], "cours": 0, "mani": 0, "dai": 0, "The": [0, 1, 3, 4, 5, 6, 7], "typic": 0, "broken": [0, 1], "multipl": 0, "output": [0, 3, 7], "directori": [0, 1, 7, 13], "within": [0, 4, 6, 7], "which": [0, 3, 4, 5, 6, 7], "must": [0, 7], "stitch": [0, 3, 7], "togeth": [0, 3, 7], "process": [0, 1], "whole": 0, "thi": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 13], "design": 0, "streamlin": 0, "analsi": 0, "raw": [0, 4, 6, 7], "store": [0, 3, 4, 6, 7, 10, 11], "them": [0, 1], "h5": [0, 4, 7], "file": [0, 2, 4, 7, 8], "format": [0, 3, 7, 9, 12], "handl": [0, 3], "more": [0, 3], "effici": 0, "than": [0, 4, 7], "ascii": [0, 3, 4, 7], "reduc": 0, "disc": 0, "space": 0, "taken": 0, "while": 0, "still": 0, "retain": 0, "precis": 0, "some": [0, 3], "kei": [0, 4, 7], "function": [0, 1, 3, 4, 5], "follow": [0, 1, 3, 8], "read": [0, 3, 7], "track": [0, 1], "properti": [0, 4, 5, 6, 7], "trajectori": [0, 3], "spin": [0, 3, 4, 5, 6, 7], "mass": [0, 3, 4, 5, 6, 7], "horizon": [0, 3, 4, 5, 7], "inform": [0, 3, 5, 6, 7, 10], "etc": [0, 3, 8], "comput": [0, 3, 4, 6, 7], "about": [0, 3, 4], "orbit": [0, 4, 7], "eccentr": [0, 3, 4, 8], "separ": [0, 3, 4, 7, 8, 13], "frequenc": [0, 4, 6, 7], "kick": [0, 4], "quantiti": 0, "pertain": [0, 3, 5, 6], "gravit": [0, 3, 4, 6, 7, 8], "radiat": [0, 3, 4], "psi_4": [0, 3, 4, 6], "strain": [0, 4, 6], "extrapol": [0, 4, 6, 7], "energi": [0, 3, 4, 6], "export": [0, 3, 7], "requir": [0, 7], "ligo": [0, 7], "analys": [0, 3], "analyz": 0, "learn": 0, "how": 0, "us": [0, 1, 4, 5, 6, 7], "both": [0, 1], "your": [0, 3], "own": 0, "get": [0, 5], "start": [0, 6], "help": [0, 1], "contributor": 0, "guid": 0, "creat": [0, 1, 4, 6, 7], "wave": [0, 3, 4, 6, 7], "compact": [0, 3, 4, 5, 10], "object": [0, 3, 4, 5, 6, 7, 8, 10], "lvk": [0, 3], "util": [0, 10, 11, 13], "coalesc": [0, 5, 7], "modul": [0, 3], "compactobject": [0, 4], "radiationbundl": [0, 4, 6], "radiationspher": [0, 3, 6], "radiationmod": [0, 3, 6], "packag": [0, 3], "postprocessingutil": [0, 3, 10, 11, 13], "catalogutil": [0, 3, 8], "postnewtonianutil": 0, "index": 0, "mayawav": [1, 2, 8, 9, 11, 12, 13], "intend": 1, "grow": 1, "expand": 1, "addit": [1, 3], "tool": 1, "we": [1, 3, 8], "welcom": 1, "input": 1, "commun": 1, "new": [1, 6], "featur": 1, "implement": 1, "In": [1, 3], "order": [1, 4, 6, 7], "smooth": 1, "workflow": 1, "you": [1, 2, 3, 6, 7, 12], "repositori": [1, 2, 3], "branch": 1, "all": [1, 3, 4, 5, 6, 7], "do": 1, "ani": [1, 2, 3], "main": [1, 3], "mai": [1, 3], "primari": [1, 3, 4, 7], "can": [1, 3, 4, 6, 7, 12], "step": 1, "section": [1, 3], "onli": [1, 6], "need": 1, "done": [1, 3], "onc": [1, 9, 11, 12], "click": 1, "button": 1, "github": [1, 2, 3], "com": [1, 2, 3, 11], "Then": [1, 9, 10, 11, 12, 13], "clone": [1, 3], "machin": 1, "git": [1, 3], "your_workspac": 1, "link": 1, "upstream": 1, "cd": [1, 3], "remot": 1, "add": 1, "setup": 1, "checkout": 1, "fetch": 1, "set": [1, 4, 6, 9, 10, 11, 12, 13], "pull": 1, "To": [1, 3, 8, 9, 10, 11, 12, 13], "regularli": 1, "push": 1, "origin": [1, 4, 6, 7], "b": [1, 3], "name": [1, 4, 7, 8], "desir": [1, 4, 5, 7], "commit": 1, "frequent": 1, "descript": 1, "messag": 1, "when": [1, 3, 4, 6, 7], "readi": 1, "first": [1, 4, 6, 8], "futur": 1, "period": 1, "rebas": 1, "f": [1, 3, 8, 9], "ensur": 1, "exist": [1, 4], "pass": 1, "suit": 1, "from": [1, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13], "m": [1, 3, 4, 5, 6, 7, 9, 11], "unittest": 1, "discov": 1, "pleas": [1, 2, 3], "thei": [1, 7], "also": [1, 3, 7, 9, 11, 12], "ve": 1, "made": 1, "doc": 1, "rm": [1, 3], "r": [1, 3, 4, 9, 12, 13], "html": 1, "doctre": 1, "happi": 1, "review": 1, "develop": [1, 2], "team": 1, "If": [2, 3, 4, 6, 7], "encount": 2, "bug": 2, "unexpect": 2, "behavior": 2, "an": [2, 4], "issu": 2, "feel": 2, "free": 2, "contact": 2, "directli": [2, 3], "dferg": 2, "illinoi": 2, "have": [2, 5, 7, 9, 12], "question": [2, 3, 7], "regard": [2, 7], "either": [3, 4, 6], "pypi": 3, "sourc": [3, 4], "pip": 3, "code": [3, 7], "put": 3, "import": [3, 7, 8, 9, 10, 11, 12, 13], "top": 3, "specif": [3, 4, 6], "part": [3, 4, 5, 6, 11], "instead": [3, 7], "would": [3, 6], "rather": [3, 7], "create_h5_from_simul": [3, 7, 10], "For": [3, 7], "most": 3, "usecas": 3, "3": [3, 6, 7, 8, 9, 10, 11, 12], "9": [3, 8, 9, 12], "leq": [3, 4, 6], "It": 3, "reli": 3, "upon": [3, 7], "automat": 3, "numpi": [3, 4, 6, 7, 12, 13], "scipi": 3, "panda": [3, 4], "romsplin": 3, "wget": 3, "matplotlib": [3, 9, 12, 13], "mock": 3, "howev": 3, "want": [3, 7], "abil": 3, "switch": 3, "center": [3, 4, 6, 7, 8], "frame": [3, 4, 6], "ha": [3, 4, 6], "depend": 3, "10": [3, 7, 8, 9, 12], "well": [3, 7], "numba": 3, "scri": 3, "been": [3, 6], "test": 3, "releas": 3, "meitner": 3, "decemb": 3, "6th": 3, "2023": 3, "support": 3, "thorn": 3, "ahfinderdirect": 3, "puncturetrack": 3, "quasilocalmeasur": 3, "multipol": [3, 4], "weylscal4": 3, "ihspin": 3, "shifttrack": 3, "ylm_decomp": 3, "runstat": [3, 4], "research": 3, "bibtex": [3, 7], "softwar": 3, "ferguson_mayawaves_2023": 3, "author": 3, "ferguson": 3, "deborah": 3, "ann": 3, "surendra": 3, "gracia": 3, "linar": 3, "miguel": 3, "iglesia": 3, "hector": 3, "jan": 3, "aasim": 3, "martinez": 3, "erick": 3, "lu": 3, "meoni": 3, "filippo": 3, "nowicki": 3, "ryan": 3, "trostel": 3, "max": [3, 4, 6], "tsao": 3, "bing": 3, "jyun": 3, "valorz": 3, "finni": 3, "doi": 3, "5281": 3, "zenodo": [3, 9, 10, 11, 12, 13], "10035526": 3, "month": 3, "oct": 3, "titl": 3, "url": 3, "version": 3, "v2023": 3, "year": 3, "apa": 3, "d": 3, "": [3, 4, 5], "h": [3, 4, 6], "A": [3, 4, 6], "e": [3, 6, 7], "l": [3, 4, 5, 6, 11, 12], "These": 3, "citat": 3, "download": [3, 7, 9, 10, 11, 12, 13], "heart": 3, "interact": [3, 4, 6, 7, 8], "contain": [3, 4, 5, 6, 7], "everyth": 3, "each": [3, 4, 6, 7], "involv": 3, "refer": [3, 4], "tutori": [3, 9, 10, 11], "detail": 3, "list": [3, 4, 5, 6, 7], "attribut": 3, "access": 3, "secondari": [3, 4, 7], "final": [3, 4], "larger": [3, 4, 7], "initi": [3, 4, 7], "primarili": 3, "behind": 3, "scene": 3, "extract": [3, 4, 6, 7], "concentr": 3, "sphere": [3, 6], "sever": 3, "express": [3, 6], "wai": 3, "independ": 3, "locat": [3, 4, 6, 7], "decompos": [3, 4, 6], "term": [3, 6], "spheric": [3, 4, 6], "harmon": [3, 4, 6], "t": [3, 4, 6, 9, 12, 13], "theta": [3, 4, 6, 12], "phi": [3, 4, 6, 12], "sum_": [3, 4, 6], "ell": [3, 4, 6], "psi_": [3, 12, 13], "4": [3, 8, 9, 10, 11, 12, 13], "_": [3, 4, 6], "2": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "y_": [3, 4, 6], "pair": [3, 6], "There": 3, "includ": [3, 4, 5, 6, 7], "shown": 3, "creating_h5": [3, 9, 11, 12], "exporting_lvk": 3, "enabl": 3, "user": 3, "entir": 3, "metadata": [3, 4, 7, 8, 10], "walk": 3, "two": [3, 4, 7], "describ": [3, 4, 6], "below": [3, 4], "begin": [3, 4, 5], "instruct": 3, "With": 3, "hand": 3, "h5_filepath": [3, 4], "limit": 3, "exampl": 3, "exhaust": 3, "coales": [3, 4], "method": [3, 4, 6], "see": 3, "call": 3, "primary_compact_object": [3, 4, 9], "secondary_compact_object": [3, 4, 9], "final_compact_object": [3, 4], "associ": [3, 4, 6, 7], "know": 3, "relev": 3, "appar": [3, 5], "document": [3, 7], "back": [3, 4], "summarize_coalesc": [3, 7], "quick": 3, "summari": [3, 7], "paramet": [3, 4, 5, 6, 7, 10], "plot": [3, 7, 9, 12], "gravitaiton": 3, "monitor": 3, "ongo": 3, "run": [3, 7, 9, 10, 11, 12, 13], "simpli": 3, "make": 3, "get_stitched_data": [3, 7], "given": [3, 4, 5, 6, 7], "return": [3, 4, 5, 6, 7], "arrai": [3, 4, 5, 6, 7], "same": [3, 6, 7], "request": [3, 5, 6, 7], "full": [3, 5, 7], "search": 3, "even": 3, "class": [4, 5, 6, 7], "str": [4, 5, 7], "fundament": 4, "average_run_spe": 4, "float": [4, 5, 6, 7], "averag": 4, "speed": 4, "hr": 4, "catalog_id": [4, 7], "id": [4, 7, 8, 11], "center_of_mass": [4, 6], "tupl": [4, 5, 6, 7], "coordin": [4, 13], "posit": [4, 5], "close": 4, "its": [4, 6], "compact_object_by_id": 4, "int": [4, 5, 6, 7], "type": [4, 5, 6, 7], "compact_object_data_for_object": 4, "object_num": 4, "ndarrai": [4, 5, 6, 7], "intern": [4, 5, 7], "compact_object_metadata_dict": 4, "dict": [4, 6, 7], "retriev": 4, "relat": 4, "compact_object": 4, "denergy_dt_radi": [4, 6], "lmin": [4, 6], "none": [4, 6, 7], "lmax": [4, 6], "extraction_radiu": [4, 6, 7, 11], "rate": [4, 6], "arxiv": [4, 6, 7], "ab": [4, 6, 7], "0707": [4, 6], "4654": [4, 6], "total": [4, 6, 7, 8], "sum": [4, 6], "mode": [4, 6], "option": [4, 6, 7], "minumum": [4, 6], "valu": [4, 5, 6, 7, 8], "rang": [4, 6], "maximum": [4, 5, 6, 8], "radiu": [4, 5, 6, 7], "infinit": [4, 6, 7], "time": [4, 5, 6, 7, 9], "np": [4, 5, 12, 13], "de": [4, 6], "dt": [4, 6], "dp_dt_radiat": [4, 6], "deriv": [4, 6, 7], "linear": [4, 6], "momentum": [4, 5, 6, 7], "being": [4, 7], "dp": [4, 6], "eccentricity_and_mean_anomaly_at_tim": 4, "start_tim": 4, "desired_tim": [4, 5], "mean": [4, 5], "anomali": 4, "1810": [4, 7], "00036": [4, 7], "four": 4, "unabl": 4, "fit": 4, "successfulli": 4, "estim": 4, "base": [4, 7], "defin": [4, 6, 7], "math": 4, "pi": [4, 6, 12], "rac": 4, "t_": 4, "prev": 4, "next": 4, "where": [4, 5, 6, 7], "periapsi": 4, "arg": 4, "energy_radi": [4, 6], "cummul": [4, 6], "nergi": 4, "cumul": [4, 6], "extrapolate_psi4_to_infinite_radiu": 4, "1": [4, 6, 7, 8, 9, 10, 11, 12], "calcul": [4, 7], "finit": 4, "obtain": [4, 7, 8, 10, 11, 13], "1008": [4, 6], "4360": [4, 6], "1108": [4, 6], "4421": [4, 6], "default": [4, 6, 7], "remnant": 4, "form": [4, 5], "after": 4, "merger": 4, "path": [4, 7, 9, 10, 11, 12], "included_extraction_radii": 4, "radii": [4, 6], "included_mod": [4, 6], "label": [4, 6, 9], "initial_orbital_frequ": 4, "init": 4, "vector": [4, 5], "between": [4, 7], "initial_separ": 4, "l_max": [4, 6], "linear_momentum_radi": [4, 6], "inear": 4, "mass_ratio": [4, 7, 8], "ratio": [4, 7], "alwai": 4, "greater": 4, "divid": 4, "smaller": [4, 7], "q": [4, 7, 8], "m_1": [4, 7], "m_2": [4, 7], "merge_tim": [4, 8], "goe": 4, "1e": 4, "what": [4, 7], "wa": [4, 6], "object_numb": 4, "orbital_angular_momentum_unit_vector": 4, "angular": [4, 7], "unit": 4, "orbital_angular_momentum_unit_vector_at_tim": 4, "orbital_frequ": [4, 7], "orbital_frequency_at_tim": 4, "orbital_phase_in_xy_plan": 4, "phase": [4, 6], "xy": [4, 5, 9], "plane": [4, 5, 6, 9], "parameter_fil": 4, "dictionari": [4, 6, 7], "text": 4, "rpar": 4, "par": [4, 8], "psi4_amp_phase_for_mod": 4, "0": [4, 6, 7, 8, 9, 10, 11, 12], "amplitud": [4, 6], "psi4_max_time_for_mod": 4, "reach": [4, 6], "peak": [4, 6], "specifi": [4, 6, 7], "singl": [4, 6], "psi4_real_imag_for_mod": [4, 12], "real": [4, 6, 12], "imaginari": [4, 6], "compon": [4, 6, 9], "psi4_sourc": 4, "could": 4, "weylscal": 4, "radiation_fram": 4, "current": [4, 6, 8], "radius_for_extrapol": [4, 6], "recoil_spe": 4, "km_per_sec": 4, "bool": [4, 6, 7], "fals": [4, 6, 7], "magnitud": [4, 7], "recoil": 4, "whether": [4, 6, 7], "report": 4, "km": 4, "fraction": 4, "c": [4, 12, 13], "recoil_veloc": 4, "veloc": [4, 5], "runstats_data": 4, "dataset": [4, 5], "separation_at_tim": 4, "point": [4, 6, 13], "separation_unit_vector_at_tim": 4, "separation_vector": [4, 13], "set_radiation_fram": [4, 12], "center_of_mass_correct": [4, 6, 7, 11, 12], "decomposit": [4, 6], "drift": [4, 6, 7], "correct": [4, 6, 7], "spin_configur": 4, "configur": 4, "non": 4, "align": [4, 7], "precess": [4, 7], "neither": 4, "anti": [4, 7], "least": 4, "one": [4, 6, 7], "strain_amp_phase_for_mod": 4, "second": [4, 6], "integr": [4, 6], "fix": [4, 6], "rh_": [4, 6, 12], "strain_for_mod": [4, 12], "plu": [4, 6], "cross": [4, 6], "rh": [4, 6, 12], "strain_recomposed_at_sky_loc": [4, 12], "recompos": [4, 6], "sky": [4, 6], "up": [4, 6], "weight": [4, 6], "h_": [4, 6], "lt": [4, 6, 8, 9], "symmetric_mass_ratio": [4, 8], "symmetr": [4, 7], "eta": [4, 7, 8], "data_arrai": 5, "header_list": 5, "identifi": 5, "object_typ": 5, "initial_irreducible_mass": [5, 9], "initial_horizon_mass": [5, 9], "initial_dimensionless_spin": [5, 9], "initial_dimensional_spin": [5, 9], "column": [5, 7, 9], "enum": [5, 6, 7], "easili": [5, 7], "referenc": [5, 7], "apparent_horizon_area": 5, "area": [5, 9], "apparent_horizon_areal_radiu": 5, "areal": 5, "apparent_horizon_circumfer": 5, "circumfer": [5, 9], "xz": 5, "yz": 5, "respect": [5, 7], "apparent_horizon_expansion_theta_l": 5, "expans": 5, "theta_": 5, "apparent_horizon_inner_expansion_theta_n": 5, "inner": 5, "n": [5, 8], "apparent_horizon_maximum_radiu": 5, "apparent_horizon_mean_curvatur": 5, "curvatur": 5, "apparent_horizon_mean_radiu": 5, "apparent_horizon_minimum_radiu": 5, "minimum": [5, 6, 8], "apparent_horizon_quadrupol": 5, "quadrupol": 5, "xx": 5, "yy": 5, "zz": 5, "available_data_column": [5, 9], "dimensional_spin_at_tim": 5, "dimension": [5, 9], "pmb": 5, "j": 5, "dimensional_spin_vector": 5, "dimensionless_spin_at_tim": 5, "dimensionless": [5, 7, 9], "chi": 5, "giventim": 5, "dimensionless_spin_vector": [5, 9], "final_dimensional_spin": 5, "last": 5, "avail": [5, 7, 8], "final_dimensionless_spin": 5, "final_horizon_mass": 5, "final_irreducible_mass": 5, "irreduc": [5, 9], "get_data_from_column": [5, 9], "column_nam": 5, "iter": 5, "horizon_mass": 5, "horizon_mass_at_tim": 5, "irreducible_mass": 5, "irreducible_mass_at_tim": 5, "last_available_spin_data_tim": 5, "momentum_vector": 5, "position_vector": [5, 9], "velocity_vector": 5, "radiation_spher": 6, "radi": [6, 10], "create_extrapolated_spher": 6, "those": [6, 7], "static": 6, "create_radiation_bundl": 6, "radiation_group": 6, "group": [6, 7], "h5py": 6, "consist": 6, "extrapolated_spher": 6, "com_correct": 6, "get_denergy_dt_radi": 6, "kwarg": 6, "like": 6, "valid": 6, "keyword": 6, "argument": 6, "get_dp_dt_radi": 6, "get_energy_radi": 6, "get_linear_momentum_radi": 6, "get_psi4_amplitude_for_mod": 6, "infin": 6, "get_psi4_imaginary_for_mod": 6, "get_psi4_max_time_for_mod": 6, "get_psi4_phase_for_mod": 6, "get_psi4_real_for_mod": 6, "get_strain_amplitude_for_mod": 6, "get_strain_cross_for_mod": 6, "get_strain_phase_for_mod": 6, "get_strain_plus_for_mod": 6, "get_strain_recomposed_at_sky_loc": 6, "get_tim": 6, "timeseri": 6, "included_radii": 6, "set_fram": 6, "new_fram": 6, "transform": 6, "stamp": [6, 7], "necessari": 6, "move": 6, "seri": [6, 7], "mode_dict": 6, "create_radiation_spher": 6, "radius_group": 6, "inerti": 6, "get_extrapolated_spher": 6, "get_mod": 6, "raw_mod": 6, "alpha": 6, "beta": 6, "offset": 6, "boost": 6, "rad": 6, "psi4_group": 6, "psi4_real": 6, "psi4_imaginari": 6, "strain_plu": 6, "strain_cross": 6, "compute_and_store_strain": 6, "doubl": 6, "fourier": 6, "create_radiation_mod": 6, "psi4": 6, "empti": 6, "construct": 6, "pdf": [6, 7], "eq": 6, "8": [6, 8, 9, 11, 12, 13], "14": [6, 8, 9, 12], "15": [6, 8, 9, 12], "get_mode_with_extrapolated_radiu": 6, "h_cross_dot": 6, "h_plus_dot": 6, "l_valu": 6, "denot": 6, "m_valu": 6, "omega_start": 6, "psi4_amplitud": 6, "weyl": 6, "scalar": 6, "sqrt": [6, 13], "mathcal": 6, "re": 6, "im": 6, "psi4_max_tim": 6, "psi4_omega": 6, "psi4_phas": 6, "textrm": 6, "tan": 6, "strain_amplitud": 6, "strain_phas": 6, "ylm": 6, "angl": 6, "z": [6, 9], "axi": [6, 13], "x": [6, 9, 12], "y": [6, 9], "counterclockwis": 6, "raw_directori": 7, "output_directori": [7, 10], "compat": 7, "determine_lvc_format": 7, "initial_horizon_tim": 7, "determin": 7, "lvc": 7, "number": 7, "definit": 7, "1703": 7, "01076": 7, "export_to_ascii": 7, "individu": 7, "export_to_lal_compatible_format": [7, 11], "nr_group": [7, 11], "nr_code": [7, 11], "bibtex_kei": [7, 11], "contact_email": [7, 11], "license_typ": 7, "nr_techniqu": 7, "comparable_simul": 7, "files_in_error_seri": 7, "production_run": 7, "true": [7, 8, 11, 12], "lalsuit": 7, "readabl": 7, "pycbc": 7, "less": 7, "stringent": 7, "nr": 7, "cite": 7, "email": [7, 11], "aris": 7, "tag": 7, "save": 7, "g": 7, "maya0908": 7, "techniqu": 7, "were": 7, "other": 7, "similar": 7, "error": 7, "product": 7, "export_to_lvcnr_catalog": [7, 11], "suffici": 7, "abl": 7, "eeccentr": 7, "Will": 7, "filenam": 7, "low_pass_filt": 7, "low_pass_freq_cutoff": 7, "filter": 7, "out": 7, "high": 7, "nois": 7, "butter": 7, "cutoff": 7, "remov": 7, "summar": 7, "collect": 7, "txt": 7, "displai": 7, "aligned_spin_simul": [7, 8], "download_waveform": [7, 8], "save_wf_path": [7, 8], "safeti": 7, "lvcnr_format": [7, 8], "By": 7, "verif": 7, "size": [7, 8], "exce": 7, "gb": [7, 8], "get_parameters_for_simul": [7, 8], "get_simulations_with_mass_ratio": [7, 8], "tol": [7, 8], "0001": 7, "toler": 7, "geq": 7, "satisfi": 7, "get_simulations_with_paramet": [7, 8], "param": [7, 8], "take": 7, "correspond": 7, "get_simulations_with_symmetric_mass_ratio": [7, 8], "nonspinning_simul": [7, 8], "plot_catalog_paramet": [7, 8], "p1": 7, "p2": 7, "save_path": [7, 8], "dpi": [7, 8], "300": 7, "color": [7, 8], "cornflowerblu": 7, "against": 7, "histogram": 7, "distribut": 7, "figur": 7, "precessing_simul": [7, 8], "spin_magnitudes_for_simul": 7, "system": 7, "dh_dr_from_separ": 7, "primary_dimensionless_spin": 7, "secondary_dimensionless_spin": 7, "hamiltonian": 7, "orbital_frequency_from_separ": 7, "quasi": 7, "circular": 7, "equat": 7, "1702": 7, "00872": 7, "radial_momentum_from_separ": 7, "radial": 7, "give": 7, "separation_from_orbital_frequ": 7, "tangential_momentum_from_separ": 7, "tangenti": 7, "p": 8, "updat": 8, "all_simul": 8, "print": [8, 9, 10], "len": 8, "ten": 8, "635": 8, "gt0001": 8, "39": [8, 9], "gt0002": 8, "gt0003": 8, "gt0004": 8, "gt0005": 8, "gt0006": 8, "gt0007": 8, "gt0008": 8, "gt0009": 8, "gt0010": 8, "sep": 8, "mass_1": 8, "mass_2": 8, "irreducible_mass_1": 8, "irreducible_mass_2": 8, "dimensionless_spin_1": 8, "dimensionless_spin_x_1": 8, "dimensionless_spin_y_1": 8, "dimensionless_spin_z_1": 8, "dimensionless_spin_2": 8, "dimensionless_spin_x_2": 8, "dimensionless_spin_y_2": 8, "dimensionless_spin_z_2": 8, "chi_eff": 8, "chi_p": 8, "f_lower_at_1msun": 8, "mean_anomali": 8, "maya_size_gb": 8, "lvcnr_size_gb": 8, "5": [8, 9, 11, 12, 13], "103": 8, "gt0370": 8, "6": [8, 9, 11, 12, 13], "157": 8, "gt0355": 8, "7": [8, 9, 11, 12, 13], "370": 8, "sim": 8, "53": 8, "gt0428": 8, "92": 8, "gt0376": 8, "23": [8, 9], "005": 8, "11": [8, 9, 12], "simulation_paramet": 8, "gt0378": 8, "050005889145129": 8, "12": [8, 9, 12], "simulation_parameter_str": 8, "join": 8, "item": 8, "d10_a0": 8, "0_q2": 8, "05_m103_q": 8, "m1": 8, "672130590009755": 8, "m2": 8, "3278676386095844": 8, "m1_irr": 8, "67213059": 8, "m2_irr": 8, "3278676386": 8, "220371": 8, "a1": 8, "0775370384725463e": 8, "05": [8, 9], "a1x": 8, "189079683097315e": 8, "13": [8, 9, 12], "a1i": 8, "31375343569779e": 8, "a1z": 8, "0775370384725444e": 8, "a2": 8, "5292461249223795e": 8, "a2x": 8, "0523082784791894e": 8, "a2i": 8, "0845157044129532e": 8, "a2z": 8, "5292461249220173e": 8, "2256380923285683e": 8, "652204568862241e": 8, "1807": 8, "5340709236116": 8, "99995249833483": 8, "005865368688535364": 8, "998": 8, "6407813": 8, "3597998470067978": 8, "lvcnr": 8, "00412185862660408": 8, "01": 8, "001": 8, "4999": 8, "125": 8, "21": [8, 9], "27": [8, 9], "500": 8, "432x288": 8, "ax": [8, 9], "gt": [8, 9], "9996440633567225": 8, "07085918507278": 8, "8089458636660637": 8, "8085713846964644": 8, "salmon": 8, "990315336895653e": 8, "18": [8, 9], "9316840649738882": 8, "16": [8, 9, 12], "green": 8, "8462054439966505e": 8, "9261967059788215": 8, "physic": 8, "websit": 8, "here": 8, "gt0898": 8, "17": [8, 9, 12, 13], "gw15_d12_q1": 8, "2_a0": 8, "0_m140": 8, "5455": 8, "4545": 8, "2000": 8, "2479": 8, "0000": 8, "1445": 8, "3053": 8, "0021": 8, "2766": 8, "1891": 8, "1250": 8, "9177": 8, "0084": 8, "tar": [9, 10, 11, 12, 13], "gz": [9, 10, 11, 12, 13], "record": [9, 10, 11, 12, 13], "10668525": [9, 10, 11, 12, 13], "unzip": [9, 10, 11, 12, 13], "example_h5_filepath": [9, 11, 12], "sampl": [9, 11, 12], "try": [9, 11, 12], "pyplot": [9, 12, 13], "plt": [9, 12, 13], "d11_q5_a1_": [9, 10, 11, 12, 13], "362_": [9, 10, 11, 12, 13], "0548_": [9, 10, 11, 12, 13], "64_a2_": [9, 10, 11, 12, 13], "0013_0": [9, 10, 11, 12, 13], "001_": [9, 10, 11, 12, 13], "0838_m533": [9, 10, 11, 12, 13], "33": [9, 10, 11, 12, 13], "primary_posit": 9, "secondary_posit": 9, "gca": [9, 13], "set_aspect": [9, 13], "equal": [9, 13], "adjust": [9, 13], "box": [9, 13], "xlabel": [9, 12, 13], "ylabel": [9, 12, 13], "show": [9, 12, 13], "bh": 9, "36451101": 9, "05518085": 9, "64443774": 9, "00129516": 9, "00100747": 9, "08374188": 9, "25138458": 9, "0380554": 9, "4444357": 9, "59770435e": 9, "79857020e": 9, "32619237e": 9, "03": 9, "8304509510300787": 9, "16666770757317356": 9, "7588330514": 9, "166521231": 9, "primary_spin": 9, "a_": 9, "legend": 9, "secondary_spin": 9, "available_column": 9, "itt": 9, "vx": 9, "vy": 9, "vz": 9, "ai": 9, "az": 9, "sx": 9, "sy": 9, "sz": 9, "px": 9, "py": 9, "pz": 9, "min_radiu": 9, "max_radiu": 9, "19": 9, "mean_radiu": 9, "20": 9, "quadrupole_xx": 9, "quadrupole_xi": 9, "22": [9, 12, 13], "quadrupole_xz": 9, "quadrupole_yi": 9, "24": 9, "quadrupole_yz": 9, "25": 9, "quadrupole_zz": 9, "26": 9, "min_x": 9, "max_x": 9, "28": 9, "min_i": 9, "29": 9, "max_i": 9, "30": 9, "min_z": 9, "31": 9, "max_z": 9, "32": 9, "xy_plane_circumfer": 9, "xz_plane_circumfer": 9, "34": 9, "yz_plane_circumfer": 9, "35": 9, "ratio_of_xz_xy_plane_circumfer": 9, "36": 9, "ratio_of_yz_xy_plane_circumfer": 9, "37": 9, "38": 9, "m_irreduc": 9, "areal_radiu": 9, "40": 9, "expansion_theta_l": 9, "41": 9, "inner_expansion_theta_n": 9, "42": 9, "product_of_the_expans": 9, "43": 9, "mean_curvatur": 9, "44": 9, "gradient_of_the_areal_radiu": 9, "45": 9, "gradient_of_the_expansion_theta_l": 9, "46": 9, "gradient_of_the_inner_expansion_theta_n": 9, "47": 9, "gradient_of_the_product_of_the_expans": 9, "48": 9, "gradient_of_the_mean_curvatur": 9, "49": 9, "minimum_of_the_mean_curvatur": 9, "50": 9, "maximum_of_the_mean_curvatur": 9, "51": 9, "integral_of_the_mean_curvatur": 9, "52": 9, "example_simul": 10, "result": [10, 13], "h5_path": 10, "output_direcori": 11, "ut": 11, "austin": 11, "jani": 11, "2016wkt": 11, "doe": 11, "sim0001": 11, "75": 11, "example_h5_filenam": 12, "time_psi4": 12, "imag": 12, "axvlin": [12, 13], "150": [12, 13], "a9a9a9": [12, 13], "linestyl": [12, 13], "time_strain": 12, "rh_plu": 12, "rh_cross": 12, "time_strain_extrapol": 12, "rh_plus_extrapol": 12, "rh_cross_extrapol": 12, "time_strain_com": 12, "rh_plus_com": 12, "rh_cross_com": 12, "simulation_directori": 13, "shifttracker0_data": 13, "shifttracker0": 13, "asc": 13, "shifttracker1_data": 13, "shifttracker1": 13, "separation_mag": 13, "linalg": 13, "norm": 13, "psi4_data": 13, "psi4r_l2_m2_r75": 13, "00": 13}, "objects": {"mayawaves": [[4, 0, 0, "-", "coalescence"], [5, 0, 0, "-", "compactobject"]], "mayawaves.coalescence": [[4, 1, 1, "", "Coalescence"]], "mayawaves.coalescence.Coalescence": [[4, 2, 1, "", "average_run_speed"], [4, 2, 1, "", "catalog_id"], [4, 2, 1, "", "center_of_mass"], [4, 3, 1, "", "close"], [4, 3, 1, "", "compact_object_by_id"], [4, 3, 1, "", "compact_object_data_for_object"], [4, 3, 1, "", "compact_object_metadata_dict"], [4, 2, 1, "", "compact_objects"], [4, 3, 1, "", "dEnergy_dt_radiated"], [4, 3, 1, "", "dP_dt_radiated"], [4, 3, 1, "", "eccentricity_and_mean_anomaly_at_time"], [4, 3, 1, "", "energy_radiated"], [4, 3, 1, "", "extrapolate_psi4_to_infinite_radius"], [4, 2, 1, "", "final_compact_object"], [4, 2, 1, "", "h5_filepath"], [4, 2, 1, "", "included_extraction_radii"], [4, 2, 1, "", "included_modes"], [4, 2, 1, "", "initial_orbital_frequency"], [4, 2, 1, "", "initial_separation"], [4, 2, 1, "", "l_max"], [4, 3, 1, "", "linear_momentum_radiated"], [4, 2, 1, "", "mass_ratio"], [4, 2, 1, "", "merge_time"], [4, 2, 1, "", "name"], [4, 2, 1, "", "object_numbers"], [4, 2, 1, "", "orbital_angular_momentum_unit_vector"], [4, 3, 1, "", "orbital_angular_momentum_unit_vector_at_time"], [4, 2, 1, "", "orbital_frequency"], [4, 3, 1, "", "orbital_frequency_at_time"], [4, 2, 1, "", "orbital_phase_in_xy_plane"], [4, 2, 1, "", "parameter_files"], [4, 2, 1, "", "primary_compact_object"], [4, 3, 1, "", "psi4_amp_phase_for_mode"], [4, 3, 1, "", "psi4_max_time_for_mode"], [4, 3, 1, "", "psi4_real_imag_for_mode"], [4, 2, 1, "", "psi4_source"], [4, 2, 1, "", "radiation_frame"], [4, 2, 1, "", "radiationbundle"], [4, 2, 1, "", "radius_for_extrapolation"], [4, 3, 1, "", "recoil_speed"], [4, 3, 1, "", "recoil_velocity"], [4, 2, 1, "", "runstats_data"], [4, 2, 1, "", "secondary_compact_object"], [4, 3, 1, "", "separation_at_time"], [4, 3, 1, "", "separation_unit_vector_at_time"], [4, 2, 1, "", "separation_vector"], [4, 3, 1, "", "set_radiation_frame"], [4, 2, 1, "", "spin_configuration"], [4, 3, 1, "", "strain_amp_phase_for_mode"], [4, 3, 1, "", "strain_for_mode"], [4, 3, 1, "", "strain_recomposed_at_sky_location"], [4, 2, 1, "", "symmetric_mass_ratio"]], "mayawaves.compactobject": [[5, 1, 1, "", "CompactObject"]], "mayawaves.compactobject.CompactObject": [[5, 1, 1, "", "Column"], [5, 2, 1, "", "apparent_horizon_area"], [5, 2, 1, "", "apparent_horizon_areal_radius"], [5, 2, 1, "", "apparent_horizon_circumferences"], [5, 2, 1, "", "apparent_horizon_expansion_theta_l"], [5, 2, 1, "", "apparent_horizon_inner_expansion_theta_n"], [5, 2, 1, "", "apparent_horizon_maximum_radius"], [5, 2, 1, "", "apparent_horizon_mean_curvature"], [5, 2, 1, "", "apparent_horizon_mean_radius"], [5, 2, 1, "", "apparent_horizon_minimum_radius"], [5, 2, 1, "", "apparent_horizon_quadrupoles"], [5, 2, 1, "", "available_data_columns"], [5, 2, 1, "", "data_array"], [5, 3, 1, "", "dimensional_spin_at_time"], [5, 2, 1, "", "dimensional_spin_vector"], [5, 3, 1, "", "dimensionless_spin_at_time"], [5, 2, 1, "", "dimensionless_spin_vector"], [5, 2, 1, "", "final_dimensional_spin"], [5, 2, 1, "", "final_dimensionless_spin"], [5, 2, 1, "", "final_horizon_mass"], [5, 2, 1, "", "final_irreducible_mass"], [5, 3, 1, "", "get_data_from_columns"], [5, 2, 1, "", "horizon_mass"], [5, 3, 1, "", "horizon_mass_at_time"], [5, 2, 1, "", "initial_dimensional_spin"], [5, 2, 1, "", "initial_dimensionless_spin"], [5, 2, 1, "", "initial_horizon_mass"], [5, 2, 1, "", "initial_irreducible_mass"], [5, 2, 1, "", "irreducible_mass"], [5, 3, 1, "", "irreducible_mass_at_time"], [5, 2, 1, "", "last_available_spin_data_time"], [5, 2, 1, "", "momentum_vector"], [5, 2, 1, "", "position_vector"], [5, 2, 1, "", "velocity_vector"]], "mayawaves.radiation": [[6, 1, 1, "", "RadiationBundle"], [6, 1, 1, "", "RadiationMode"], [6, 1, 1, "", "RadiationSphere"]], "mayawaves.radiation.RadiationBundle": [[6, 3, 1, "", "create_extrapolated_sphere"], [6, 3, 1, "", "create_radiation_bundle"], [6, 2, 1, "", "extrapolated_sphere"], [6, 2, 1, "", "frame"], [6, 3, 1, "", "get_dEnergy_dt_radiated"], [6, 3, 1, "", "get_dP_dt_radiated"], [6, 3, 1, "", "get_energy_radiated"], [6, 3, 1, "", "get_linear_momentum_radiated"], [6, 3, 1, "", "get_psi4_amplitude_for_mode"], [6, 3, 1, "", "get_psi4_imaginary_for_mode"], [6, 3, 1, "", "get_psi4_max_time_for_mode"], [6, 3, 1, "", "get_psi4_phase_for_mode"], [6, 3, 1, "", "get_psi4_real_for_mode"], [6, 3, 1, "", "get_strain_amplitude_for_mode"], [6, 3, 1, "", "get_strain_cross_for_mode"], [6, 3, 1, "", "get_strain_phase_for_mode"], [6, 3, 1, "", "get_strain_plus_for_mode"], [6, 3, 1, "", "get_strain_recomposed_at_sky_location"], [6, 3, 1, "", "get_time"], [6, 2, 1, "", "included_modes"], [6, 2, 1, "", "included_radii"], [6, 2, 1, "", "l_max"], [6, 2, 1, "", "radiation_spheres"], [6, 2, 1, "", "radius_for_extrapolation"], [6, 3, 1, "", "set_frame"]], "mayawaves.radiation.RadiationMode": [[6, 3, 1, "", "compute_and_store_strain"], [6, 3, 1, "", "create_radiation_mode"], [6, 2, 1, "", "dEnergy_dt_radiated"], [6, 2, 1, "", "dP_dt_radiated"], [6, 2, 1, "", "energy_radiated"], [6, 2, 1, "", "extrapolated"], [6, 3, 1, "", "get_mode_with_extrapolated_radius"], [6, 2, 1, "", "h_cross_dot"], [6, 2, 1, "", "h_plus_dot"], [6, 2, 1, "", "l_value"], [6, 2, 1, "", "linear_momentum_radiated"], [6, 2, 1, "", "m_value"], [6, 2, 1, "", "omega_start"], [6, 2, 1, "", "psi4_amplitude"], [6, 2, 1, "", "psi4_imaginary"], [6, 2, 1, "", "psi4_max_time"], [6, 2, 1, "", "psi4_omega"], [6, 2, 1, "", "psi4_phase"], [6, 2, 1, "", "psi4_real"], [6, 2, 1, "", "radiation_sphere"], [6, 2, 1, "", "radius"], [6, 2, 1, "", "strain_amplitude"], [6, 2, 1, "", "strain_cross"], [6, 2, 1, "", "strain_phase"], [6, 2, 1, "", "strain_plus"], [6, 2, 1, "", "time"], [6, 3, 1, "", "ylm"]], "mayawaves.radiation.RadiationSphere": [[6, 3, 1, "", "create_radiation_sphere"], [6, 2, 1, "", "extrapolated"], [6, 2, 1, "", "frame"], [6, 3, 1, "", "get_dEnergy_dt_radiated"], [6, 3, 1, "", "get_dP_dt_radiated"], [6, 3, 1, "", "get_energy_radiated"], [6, 3, 1, "", "get_extrapolated_sphere"], [6, 3, 1, "", "get_linear_momentum_radiated"], [6, 3, 1, "", "get_mode"], [6, 3, 1, "", "get_psi4_amplitude_for_mode"], [6, 3, 1, "", "get_psi4_imaginary_for_mode"], [6, 3, 1, "", "get_psi4_max_time_for_mode"], [6, 3, 1, "", "get_psi4_phase_for_mode"], [6, 3, 1, "", "get_psi4_real_for_mode"], [6, 3, 1, "", "get_strain_amplitude_for_mode"], [6, 3, 1, "", "get_strain_cross_for_mode"], [6, 3, 1, "", "get_strain_phase_for_mode"], [6, 3, 1, "", "get_strain_plus_for_mode"], [6, 3, 1, "", "get_strain_recomposed_at_sky_location"], [6, 2, 1, "", "included_modes"], [6, 2, 1, "", "l_max"], [6, 2, 1, "", "modes"], [6, 2, 1, "", "radius"], [6, 2, 1, "", "raw_modes"], [6, 3, 1, "", "set_frame"], [6, 2, 1, "", "time"]], "mayawaves.utils": [[7, 0, 0, "-", "catalogutils"], [7, 0, 0, "-", "postnewtonianutils"], [7, 0, 0, "-", "postprocessingutils"]], "mayawaves.utils.catalogutils": [[7, 1, 1, "", "Catalog"], [7, 1, 1, "", "Parameter"]], "mayawaves.utils.catalogutils.Catalog": [[7, 2, 1, "", "aligned_spin_simulations"], [7, 3, 1, "", "download_waveforms"], [7, 3, 1, "", "get_parameters_for_simulation"], [7, 3, 1, "", "get_simulations_with_mass_ratio"], [7, 3, 1, "", "get_simulations_with_parameters"], [7, 3, 1, "", "get_simulations_with_symmetric_mass_ratio"], [7, 2, 1, "", "nonspinning_simulations"], [7, 3, 1, "", "plot_catalog_parameters"], [7, 2, 1, "", "precessing_simulations"], [7, 3, 1, "", "spin_magnitudes_for_simulation"]], "mayawaves.utils.postnewtonianutils": [[7, 4, 1, "", "dH_dr_from_separation"], [7, 4, 1, "", "orbital_frequency_from_separation"], [7, 4, 1, "", "radial_momentum_from_separation"], [7, 4, 1, "", "separation_from_orbital_frequency"], [7, 4, 1, "", "tangential_momentum_from_separation"]], "mayawaves.utils.postprocessingutils": [[7, 4, 1, "", "create_h5_from_simulation"], [7, 4, 1, "", "determine_lvc_format"], [7, 4, 1, "", "export_to_ascii"], [7, 4, 1, "", "export_to_lal_compatible_format"], [7, 4, 1, "", "export_to_lvcnr_catalog"], [7, 4, 1, "", "get_stitched_data"], [7, 4, 1, "", "low_pass_filter"], [7, 4, 1, "", "summarize_coalescence"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"]}, "titleterms": {"welcom": 0, "mayawav": [0, 3, 4, 5, 6, 7, 10], "": [0, 1], "document": [0, 1], "tutori": [0, 12, 13], "indic": 0, "tabl": 0, "contributor": 1, "guid": 1, "make": 1, "fork": 1, "keep": 1, "your": [1, 8], "up": 1, "date": 1, "chang": [1, 12], "run": 1, "test": 1, "updat": 1, "submit": 1, "merg": 1, "request": [1, 8], "get": [2, 3, 8], "help": 2, "start": [3, 13], "how": 3, "instal": 3, "requir": [3, 11], "cite": 3, "basic": 3, "overview": 3, "structur": [3, 13], "coalesc": [3, 4, 9, 11, 12], "compactobject": [3, 5, 9], "radiationbundl": 3, "util": [3, 7, 8], "workflow": 3, "obtain": [3, 9, 12], "compat": [3, 11], "h5": [3, 9, 10, 11, 12, 13], "file": [3, 9, 10, 11, 12, 13], "work": 3, "us": [3, 8, 9, 11, 12, 13], "analyz": 3, "raw": [3, 13], "simul": [3, 8, 9, 10, 11, 12, 13], "without": 3, "creat": [3, 8, 9, 10, 11, 12], "an": [3, 8, 10, 11, 13], "maya": [3, 8], "catalog": [3, 8, 11], "modul": [4, 5, 6, 7], "radiat": [6, 12, 13], "packag": [7, 12], "postprocessingutil": 7, "catalogutil": 7, "postnewtonianutil": 7, "instanc": 8, "class": 8, "ha": 8, "properti": 8, "list": 8, "all": [8, 9, 10], "The": [8, 11], "paramet": [8, 9], "enum": 8, "allow": [8, 11], "you": [8, 9, 11, 13], "easili": 8, "refer": 8, "specif": 8, "grab": 8, "nonspin": 8, "align": 8, "spin": [8, 9], "precess": 8, "given": [8, 9, 12], "mass": [8, 9, 11, 12], "ratio": 8, "can": [8, 9, 11, 13], "also": 8, "enter": 8, "toler": 8, "receiv": 8, "ar": [8, 9], "within": 8, "symmetr": 8, "thi": [8, 11], "method": 8, "ani": [8, 9, 13], "number": 8, "It": [8, 11], "i": [8, 9, 11, 12, 13], "better": 8, "non": 8, "zero": 8, "while": 8, "search": 8, "waveform": [8, 11], "ensur": 8, "fit": 8, "desir": [8, 10, 11], "plot": [8, 13], "distribtut": 8, "provid": [8, 11], "directori": [8, 10], "save": 8, "figur": 8, "thei": 8, "rather": 8, "than": 8, "displai": 8, "download": 8, "lvc": [8, 11], "nr": [8, 11], "format": [8, 11], "http": 8, "arxiv": 8, "org": 8, "ab": 8, "1703": 8, "01076": 8, "compact": 9, "object": [9, 11, 12], "associ": [9, 11, 12], "larger": 9, "primari": 9, "smaller": 9, "secondari": 9, "trajectori": 9, "data": [9, 10, 12, 13], "initi": [9, 11, 12, 13], "timeseri": 9, "note": [9, 12, 13], "mani": 9, "system": 9, "horizon": 9, "track": 9, "wai": 9, "through": 9, "merger": 9, "after": 9, "which": [9, 11], "valu": 9, "longer": 9, "reliabl": 9, "access": 9, "avail": 9, "close": [9, 11, 12], "point": 10, "root": 10, "stitch": [10, 13], "export": 11, "lvk": 11, "extrapol": [11, 12], "infinit": [11, 12], "radiu": [11, 12], "have": [11, 13], "same": 11, "name": 11, "option": 11, "correct": [11, 12], "center": [11, 12], "drift": [11, 12], "befor": [11, 12, 13], "lal": 11, "let": 11, "lalsimul": 11, "pycbc": 11, "specifi": 11, "finit": 11, "extract": [11, 12], "so": 11, "gravit": 12, "wave": 12, "read": [12, 13], "psi_4": [12, 13], "mode": 12, "75": [12, 13], "extraction_radiu": [12, 13], "m": [12, 13], "junk": [12, 13], "should": [12, 13], "cut": [12, 13], "off": [12, 13], "most": [12, 13], "analys": [12, 13], "That": [12, 13], "time": [12, 13], "mark": [12, 13], "follow": [12, 13], "vertic": [12, 13], "dash": [12, 13], "line": [12, 13], "strain": 12, "If": 12, "recombin": 12, "sky": 12, "locat": 12, "frame": 12, "when": 12, "send": 12, "scri": 12, "reset": 12, "origin": 12, "do": 13, "fulli": 13, "visualz": 13, "get_stitched_data": 13, "togeth": 13, "output": 13, "column": 13, "each": 13, "row": 13, "being": 13, "iter": 13, "step": 13, "base": 13, "present": 13, "In": 13, "2": 13, "3": 13, "0": 13, "shift": 13, "tracker": 13, "contain": 13, "x": 13, "y": 13, "compon": 13, "posit": 13, "real": 13, "componenet": 13, "1": 13, "ylm_weylscal4": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Welcome to Mayawaves\u2019s documentation!": [[0, "welcome-to-mayawaves-s-documentation"]], "Tutorials:": [[0, null]], "Documentation:": [[0, null]], "Indices and tables": [[0, "indices-and-tables"]], "Contributor\u2019s Guide": [[1, "contributor-s-guide"]], "Make a fork": [[1, "make-a-fork"]], "Keeping your fork up to date": [[1, "keeping-your-fork-up-to-date"]], "Making changes": [[1, "making-changes"]], "Running tests": [[1, "running-tests"]], "Updating the documentation": [[1, "updating-the-documentation"]], "Submitting a merge request": [[1, "submitting-a-merge-request"]], "Getting Help": [[2, "getting-help"]], "Getting Started": [[3, "getting-started"]], "How to install": [[3, "how-to-install"]], "Requirements": [[3, "requirements"]], "How to cite": [[3, "how-to-cite"]], "Basic overview of structure": [[3, "basic-overview-of-structure"]], "Coalescence": [[3, "coalescence"]], "CompactObject": [[3, "compactobject"]], "RadiationBundle": [[3, "radiationbundle"]], "Utilities": [[3, "utilities"]], "Basic overview of workflow": [[3, "basic-overview-of-workflow"]], "Obtaining a mayawaves compatible h5 file": [[3, "obtaining-a-mayawaves-compatible-h5-file"]], "Working with a mayawaves h5 file using Coalescence": [[3, "working-with-a-mayawaves-h5-file-using-coalescence"]], "Analyzing raw simulations without creating an h5 file": [[3, "analyzing-raw-simulations-without-creating-an-h5-file"]], "Analyzing the MAYA Catalog": [[3, "analyzing-the-maya-catalog"]], "mayawaves.coalescence module": [[4, "module-mayawaves.coalescence"]], "mayawaves.compactobject module": [[5, "module-mayawaves.compactobject"]], "mayawaves.radiation module": [[6, "mayawaves-radiation-module"]], "mayawaves.utils package": [[7, "mayawaves-utils-package"]], "mayawaves.utils.postprocessingutils module": [[7, "module-mayawaves.utils.postprocessingutils"]], "mayawaves.utils.catalogutils module": [[7, "module-mayawaves.utils.catalogutils"]], "mayawaves.utils.postnewtonianutils module": [[7, "module-mayawaves.utils.postnewtonianutils"]], "Catalog Utils": [[8, "Catalog-Utils"]], "Create an instance of the Catalog class": [[8, "Create-an-instance-of-the-Catalog-class"]], "Catalog has a property to list all simulations in the maya catalog": [[8, "Catalog-has-a-property-to-list-all-simulations-in-the-maya-catalog"]], "The Parameter enum allows you to easily reference specific parameters": [[8, "The-Parameter-enum-allows-you-to-easily-reference-specific-parameters"]], "Catalog has properties to grab all nonspinning, aligned spin, or precessing simulations": [[8, "Catalog-has-properties-to-grab-all-nonspinning,-aligned-spin,-or-precessing-simulations"]], "Get simulations with a given mass ratio": [[8, "Get-simulations-with-a-given-mass-ratio"]], "You can also enter a tolerance for a parameter, and will receive simulations that are within that tolerance of the requested mass ratio": [[8, "You-can-also-enter-a-tolerance-for-a-parameter,-and-will-receive-simulations-that-are-within-that-tolerance-of-the-requested-mass-ratio"]], "Get simulations with a given symmetric mass ratio": [[8, "Get-simulations-with-a-given-symmetric-mass-ratio"]], "Get the all the parameters of a given simulation": [[8, "Get-the-all-the-parameters-of-a-given-simulation"]], "Get all simulations with given parameters": [[8, "Get-all-simulations-with-given-parameters"]], "This method can be used with any number of parameters. It is better to use non-zero tolerances while searching for waveforms to ensure you get all simulations that fit your desired parameters.": [[8, "This-method-can-be-used-with-any-number-of-parameters.-It-is-better-to-use-non-zero-tolerances-while-searching-for-waveforms-to-ensure-you-get-all-simulations-that-fit-your-desired-parameters."]], "Plotting the distribtution of waveform parameters in the catalog": [[8, "Plotting-the-distribtution-of-waveform-parameters-in-the-catalog"]], "You can also provide a directory to save the figures in and they will be saved rather than displayed.": [[8, "You-can-also-provide-a-directory-to-save-the-figures-in-and-they-will-be-saved-rather-than-displayed."]], "Downloading waveforms": [[8, "Downloading-waveforms"]], "Waveforms can also be downloaded in the lvc-nr format (https://arxiv.org/abs/1703.01076)": [[8, "Waveforms-can-also-be-downloaded-in-the-lvc-nr-format-(https://arxiv.org/abs/1703.01076)"]], "Compact Objects": [[9, "Compact-Objects"]], "Create a Coalescence object using the simulation h5 file": [[9, "Create-a-Coalescence-object-using-the-simulation-h5-file"], [11, "Create-a-Coalescence-object-using-the-simulation-h5-file"], [12, "Create-a-Coalescence-object-using-the-simulation-h5-file"]], "Obtain the CompactObject objects associated with the larger object (primary) and smaller object (secondary)": [[9, "Obtain-the-CompactObject-objects-associated-with-the-larger-object-(primary)-and-smaller-object-(secondary)"]], "Obtain trajectory data": [[9, "Obtain-trajectory-data"]], "Obtain initial data such as masses and spins": [[9, "Obtain-initial-data-such-as-masses-and-spins"]], "Obtain timeseries data for parameters such as spin": [[9, "Obtain-timeseries-data-for-parameters-such-as-spin"]], "Note that for many systems, the initial horizons are tracked all the way through merger after which the values are no longer reliable.": [[9, "Note-that-for-many-systems,-the-initial-horizons-are-tracked-all-the-way-through-merger-after-which-the-values-are-no-longer-reliable."]], "You can access any data that is available for the given compact object": [[9, "You-can-access-any-data-that-is-available-for-the-given-compact-object"]], "Close the Coalescence object to close the associated h5 file": [[9, "Close-the-Coalescence-object-to-close-the-associated-h5-file"], [11, "Close-the-Coalescence-object-to-close-the-associated-h5-file"], [12, "Close-the-Coalescence-object-to-close-the-associated-h5-file"]], "Creating a Mayawaves h5 File": [[10, "Creating-a-Mayawaves-h5-File"]], "Point to the root of the desired simulation directory": [[10, "Point-to-the-root-of-the-desired-simulation-directory"]], "Create an h5 file with all the stitched data for the simulation": [[10, "Create-an-h5-file-with-all-the-stitched-data-for-the-simulation"]], "Exporting to LVK Catalog Format": [[11, "Exporting-to-LVK-Catalog-Format"]], "Export to the LVC NR catalog format": [[11, "Export-to-the-LVC-NR-catalog-format"]], "Exporting to this format requires extrapolating the waveforms to infinite radius.": [[11, "Exporting-to-this-format-requires-extrapolating-the-waveforms-to-infinite-radius."]], "The exported file will have the same name as the initial simulation h5 file.": [[11, "The-exported-file-will-have-the-same-name-as-the-initial-simulation-h5-file."]], "An optional name can be provided which will be used as the name of the exported file": [[11, "An-optional-name-can-be-provided-which-will-be-used-as-the-name-of-the-exported-file"]], "You can optionally correct for the center of mass drift before exporting": [[11, "You-can-optionally-correct-for-the-center-of-mass-drift-before-exporting"]], "Export to LAL Compatible format": [[11, "Export-to-LAL-Compatible-format"]], "This format lets you use the waveform with LALSimulation and PyCBC. It is of the same format as the LVC NR catalog but allows you to specify a finite extraction radius if so desired.": [[11, "This-format-lets-you-use-the-waveform-with-LALSimulation-and-PyCBC.-It-is-of-the-same-format-as-the-LVC-NR-catalog-but-allows-you-to-specify-a-finite-extraction-radius-if-so-desired."]], "Gravitational Waves": [[12, "Gravitational-Waves"]], "Read the \\Psi_4 data for a given mode and extraction radius": [[12, "Read-the-\\Psi_4-data-for-a-given-mode-and-extraction-radius"]], "Note that the initial ~(75 + extraction_radius) M will be junk radiation and should be cut off for most analyses. That time is marked in the following tutorial with a vertical dashed line.": [[12, "Note-that-the-initial-~(75-+-extraction_radius)-M-will-be-junk-radiation-and-should-be-cut-off-for-most-analyses.-That-time-is-marked-in-the-following-tutorial-with-a-vertical-dashed-line."], [13, "Note-that-the-initial-~(75-+-extraction_radius)-M-will-be-junk-radiation-and-should-be-cut-off-for-most-analyses.-That-time-is-marked-in-the-following-tutorial-with-a-vertical-dashed-line."]], "Read the strain data for a given mode and extraction radius": [[12, "Read-the-strain-data-for-a-given-mode-and-extraction-radius"]], "If no extraction radius is given, the radiation is extrapolated to infinite radius": [[12, "If-no-extraction-radius-is-given,-the-radiation-is-extrapolated-to-infinite-radius"]], "Recombine the modes to obtain the strain at a given sky location": [[12, "Recombine-the-modes-to-obtain-the-strain-at-a-given-sky-location"]], "Correct for center of mass drift by changing the frame of the radiation extraction": [[12, "Correct-for-center-of-mass-drift-by-changing-the-frame-of-the-radiation-extraction"]], "When correcting for center of mass drift, the junk radiation is cut off before sending the data to the scri package.": [[12, "When-correcting-for-center-of-mass-drift,-the-junk-radiation-is-cut-off-before-sending-the-data-to-the-scri-package."]], "Reset to the original frame": [[12, "Reset-to-the-original-frame"]], "Reading raw simulation files": [[13, "Reading-raw-simulation-files"]], "Simulations do not have to be fully stitched into an h5 file before reading and visualzing their data": [[13, "Simulations-do-not-have-to-be-fully-stitched-into-an-h5-file-before-reading-and-visualzing-their-data"]], "Use get_stitched_data to stitch together any output file structured as columns of data with each row being a time/iteration step": [[13, "Use-get_stitched_data-to-stitch-together-any-output-file-structured-as-columns-of-data-with-each-row-being-a-time/iteration-step"]], "You can then plot the data based on the columns present in the data file. In the following, columns 2 and 3 (starting at 0) of the shift tracker files contain the x and y components of the positions.": [[13, "You-can-then-plot-the-data-based-on-the-columns-present-in-the-data-file.-In-the-following,-columns-2-and-3-(starting-at-0)-of-the-shift-tracker-files-contain-the-x-and-y-components-of-the-positions."]], "Plot the real componenet of the \\Psi_4 data using columns 0 and 1 of the Ylm_WEYLSCAL4 files": [[13, "Plot-the-real-componenet-of-the-\\Psi_4-data-using-columns-0-and-1-of-the-Ylm_WEYLSCAL4-files"]]}, "indexentries": {"coalescence (class in mayawaves.coalescence)": [[4, "mayawaves.coalescence.Coalescence"]], "average_run_speed (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.average_run_speed"]], "catalog_id (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.catalog_id"]], "center_of_mass (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.center_of_mass"]], "close() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.close"]], "compact_object_by_id() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.compact_object_by_id"]], "compact_object_data_for_object() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.compact_object_data_for_object"]], "compact_object_metadata_dict() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.compact_object_metadata_dict"]], "compact_objects (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.compact_objects"]], "denergy_dt_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.dEnergy_dt_radiated"]], "dp_dt_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.dP_dt_radiated"]], "eccentricity_and_mean_anomaly_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.eccentricity_and_mean_anomaly_at_time"]], "energy_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.energy_radiated"]], "extrapolate_psi4_to_infinite_radius() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.extrapolate_psi4_to_infinite_radius"]], "final_compact_object (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.final_compact_object"]], "h5_filepath (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.h5_filepath"]], "included_extraction_radii (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.included_extraction_radii"]], "included_modes (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.included_modes"]], "initial_orbital_frequency (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.initial_orbital_frequency"]], "initial_separation (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.initial_separation"]], "l_max (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.l_max"]], "linear_momentum_radiated() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.linear_momentum_radiated"]], "mass_ratio (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.mass_ratio"]], "mayawaves.coalescence": [[4, "module-mayawaves.coalescence"]], "merge_time (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.merge_time"]], "module": [[4, "module-mayawaves.coalescence"], [5, "module-mayawaves.compactobject"], [7, "module-mayawaves.utils.catalogutils"], [7, "module-mayawaves.utils.postnewtonianutils"], [7, "module-mayawaves.utils.postprocessingutils"]], "name (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.name"]], "object_numbers (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.object_numbers"]], "orbital_angular_momentum_unit_vector (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.orbital_angular_momentum_unit_vector"]], "orbital_angular_momentum_unit_vector_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.orbital_angular_momentum_unit_vector_at_time"]], "orbital_frequency (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.orbital_frequency"]], "orbital_frequency_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.orbital_frequency_at_time"]], "orbital_phase_in_xy_plane (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.orbital_phase_in_xy_plane"]], "parameter_files (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.parameter_files"]], "primary_compact_object (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.primary_compact_object"]], "psi4_amp_phase_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.psi4_amp_phase_for_mode"]], "psi4_max_time_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.psi4_max_time_for_mode"]], "psi4_real_imag_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.psi4_real_imag_for_mode"]], "psi4_source (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.psi4_source"]], "radiation_frame (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.radiation_frame"]], "radiationbundle (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.radiationbundle"]], "radius_for_extrapolation (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.radius_for_extrapolation"]], "recoil_speed() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.recoil_speed"]], "recoil_velocity() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.recoil_velocity"]], "runstats_data (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.runstats_data"]], "secondary_compact_object (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.secondary_compact_object"]], "separation_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.separation_at_time"]], "separation_unit_vector_at_time() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.separation_unit_vector_at_time"]], "separation_vector (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.separation_vector"]], "set_radiation_frame() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.set_radiation_frame"]], "spin_configuration (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.spin_configuration"]], "strain_amp_phase_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.strain_amp_phase_for_mode"]], "strain_for_mode() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.strain_for_mode"]], "strain_recomposed_at_sky_location() (mayawaves.coalescence.coalescence method)": [[4, "mayawaves.coalescence.Coalescence.strain_recomposed_at_sky_location"]], "symmetric_mass_ratio (mayawaves.coalescence.coalescence property)": [[4, "mayawaves.coalescence.Coalescence.symmetric_mass_ratio"]], "compactobject (class in mayawaves.compactobject)": [[5, "mayawaves.compactobject.CompactObject"]], "compactobject.column (class in mayawaves.compactobject)": [[5, "mayawaves.compactobject.CompactObject.Column"]], "apparent_horizon_area (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_area"]], "apparent_horizon_areal_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_areal_radius"]], "apparent_horizon_circumferences (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_circumferences"]], "apparent_horizon_expansion_theta_l (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_expansion_theta_l"]], "apparent_horizon_inner_expansion_theta_n (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_inner_expansion_theta_n"]], "apparent_horizon_maximum_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_maximum_radius"]], "apparent_horizon_mean_curvature (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_mean_curvature"]], "apparent_horizon_mean_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_mean_radius"]], "apparent_horizon_minimum_radius (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_minimum_radius"]], "apparent_horizon_quadrupoles (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.apparent_horizon_quadrupoles"]], "available_data_columns (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.available_data_columns"]], "data_array (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.data_array"]], "dimensional_spin_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.dimensional_spin_at_time"]], "dimensional_spin_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.dimensional_spin_vector"]], "dimensionless_spin_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.dimensionless_spin_at_time"]], "dimensionless_spin_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.dimensionless_spin_vector"]], "final_dimensional_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_dimensional_spin"]], "final_dimensionless_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_dimensionless_spin"]], "final_horizon_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_horizon_mass"]], "final_irreducible_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.final_irreducible_mass"]], "get_data_from_columns() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.get_data_from_columns"]], "horizon_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.horizon_mass"]], "horizon_mass_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.horizon_mass_at_time"]], "initial_dimensional_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_dimensional_spin"]], "initial_dimensionless_spin (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_dimensionless_spin"]], "initial_horizon_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_horizon_mass"]], "initial_irreducible_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.initial_irreducible_mass"]], "irreducible_mass (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.irreducible_mass"]], "irreducible_mass_at_time() (mayawaves.compactobject.compactobject method)": [[5, "mayawaves.compactobject.CompactObject.irreducible_mass_at_time"]], "last_available_spin_data_time (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.last_available_spin_data_time"]], "mayawaves.compactobject": [[5, "module-mayawaves.compactobject"]], "momentum_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.momentum_vector"]], "position_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.position_vector"]], "velocity_vector (mayawaves.compactobject.compactobject property)": [[5, "mayawaves.compactobject.CompactObject.velocity_vector"]], "radiationbundle (class in mayawaves.radiation)": [[6, "mayawaves.radiation.RadiationBundle"]], "radiationmode (class in mayawaves.radiation)": [[6, "mayawaves.radiation.RadiationMode"]], "radiationsphere (class in mayawaves.radiation)": [[6, "mayawaves.radiation.RadiationSphere"]], "compute_and_store_strain() (mayawaves.radiation.radiationmode method)": [[6, "mayawaves.radiation.RadiationMode.compute_and_store_strain"]], "create_extrapolated_sphere() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.create_extrapolated_sphere"]], "create_radiation_bundle() (mayawaves.radiation.radiationbundle static method)": [[6, "mayawaves.radiation.RadiationBundle.create_radiation_bundle"]], "create_radiation_mode() (mayawaves.radiation.radiationmode static method)": [[6, "mayawaves.radiation.RadiationMode.create_radiation_mode"]], "create_radiation_sphere() (mayawaves.radiation.radiationsphere static method)": [[6, "mayawaves.radiation.RadiationSphere.create_radiation_sphere"]], "denergy_dt_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.dEnergy_dt_radiated"]], "dp_dt_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.dP_dt_radiated"]], "energy_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.energy_radiated"]], "extrapolated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.extrapolated"]], "extrapolated (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.extrapolated"]], "extrapolated_sphere (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.extrapolated_sphere"]], "frame (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.frame"]], "frame (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.frame"]], "get_denergy_dt_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_dEnergy_dt_radiated"]], "get_denergy_dt_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_dEnergy_dt_radiated"]], "get_dp_dt_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_dP_dt_radiated"]], "get_dp_dt_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_dP_dt_radiated"]], "get_energy_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_energy_radiated"]], "get_energy_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_energy_radiated"]], "get_extrapolated_sphere() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_extrapolated_sphere"]], "get_linear_momentum_radiated() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_linear_momentum_radiated"]], "get_linear_momentum_radiated() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_linear_momentum_radiated"]], "get_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_mode"]], "get_mode_with_extrapolated_radius() (mayawaves.radiation.radiationmode method)": [[6, "mayawaves.radiation.RadiationMode.get_mode_with_extrapolated_radius"]], "get_psi4_amplitude_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_amplitude_for_mode"]], "get_psi4_amplitude_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_amplitude_for_mode"]], "get_psi4_imaginary_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_imaginary_for_mode"]], "get_psi4_imaginary_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_imaginary_for_mode"]], "get_psi4_max_time_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_max_time_for_mode"]], "get_psi4_max_time_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_max_time_for_mode"]], "get_psi4_phase_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_phase_for_mode"]], "get_psi4_phase_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_phase_for_mode"]], "get_psi4_real_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_psi4_real_for_mode"]], "get_psi4_real_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_psi4_real_for_mode"]], "get_strain_amplitude_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_amplitude_for_mode"]], "get_strain_amplitude_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_amplitude_for_mode"]], "get_strain_cross_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_cross_for_mode"]], "get_strain_cross_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_cross_for_mode"]], "get_strain_phase_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_phase_for_mode"]], "get_strain_phase_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_phase_for_mode"]], "get_strain_plus_for_mode() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_plus_for_mode"]], "get_strain_plus_for_mode() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_plus_for_mode"]], "get_strain_recomposed_at_sky_location() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_strain_recomposed_at_sky_location"]], "get_strain_recomposed_at_sky_location() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.get_strain_recomposed_at_sky_location"]], "get_time() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.get_time"]], "h_cross_dot (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.h_cross_dot"]], "h_plus_dot (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.h_plus_dot"]], "included_modes (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.included_modes"]], "included_modes (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.included_modes"]], "included_radii (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.included_radii"]], "l_max (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.l_max"]], "l_max (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.l_max"]], "l_value (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.l_value"]], "linear_momentum_radiated (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.linear_momentum_radiated"]], "m_value (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.m_value"]], "modes (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.modes"]], "omega_start (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.omega_start"]], "psi4_amplitude (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_amplitude"]], "psi4_imaginary (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_imaginary"]], "psi4_max_time (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_max_time"]], "psi4_omega (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_omega"]], "psi4_phase (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_phase"]], "psi4_real (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.psi4_real"]], "radiation_sphere (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.radiation_sphere"]], "radiation_spheres (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.radiation_spheres"]], "radius (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.radius"]], "radius (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.radius"]], "radius_for_extrapolation (mayawaves.radiation.radiationbundle property)": [[6, "mayawaves.radiation.RadiationBundle.radius_for_extrapolation"]], "raw_modes (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.raw_modes"]], "set_frame() (mayawaves.radiation.radiationbundle method)": [[6, "mayawaves.radiation.RadiationBundle.set_frame"]], "set_frame() (mayawaves.radiation.radiationsphere method)": [[6, "mayawaves.radiation.RadiationSphere.set_frame"]], "strain_amplitude (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_amplitude"]], "strain_cross (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_cross"]], "strain_phase (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_phase"]], "strain_plus (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.strain_plus"]], "time (mayawaves.radiation.radiationmode property)": [[6, "mayawaves.radiation.RadiationMode.time"]], "time (mayawaves.radiation.radiationsphere property)": [[6, "mayawaves.radiation.RadiationSphere.time"]], "ylm() (mayawaves.radiation.radiationmode static method)": [[6, "mayawaves.radiation.RadiationMode.ylm"]], "catalog (class in mayawaves.utils.catalogutils)": [[7, "mayawaves.utils.catalogutils.Catalog"]], "parameter (class in mayawaves.utils.catalogutils)": [[7, "mayawaves.utils.catalogutils.Parameter"]], "aligned_spin_simulations (mayawaves.utils.catalogutils.catalog property)": [[7, "mayawaves.utils.catalogutils.Catalog.aligned_spin_simulations"]], "create_h5_from_simulation() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.create_h5_from_simulation"]], "dh_dr_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.dH_dr_from_separation"]], "determine_lvc_format() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.determine_lvc_format"]], "download_waveforms() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.download_waveforms"]], "export_to_ascii() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.export_to_ascii"]], "export_to_lal_compatible_format() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.export_to_lal_compatible_format"]], "export_to_lvcnr_catalog() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.export_to_lvcnr_catalog"]], "get_parameters_for_simulation() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_parameters_for_simulation"]], "get_simulations_with_mass_ratio() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_simulations_with_mass_ratio"]], "get_simulations_with_parameters() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_simulations_with_parameters"]], "get_simulations_with_symmetric_mass_ratio() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.get_simulations_with_symmetric_mass_ratio"]], "get_stitched_data() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.get_stitched_data"]], "low_pass_filter() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.low_pass_filter"]], "mayawaves.utils.catalogutils": [[7, "module-mayawaves.utils.catalogutils"]], "mayawaves.utils.postnewtonianutils": [[7, "module-mayawaves.utils.postnewtonianutils"]], "mayawaves.utils.postprocessingutils": [[7, "module-mayawaves.utils.postprocessingutils"]], "nonspinning_simulations (mayawaves.utils.catalogutils.catalog property)": [[7, "mayawaves.utils.catalogutils.Catalog.nonspinning_simulations"]], "orbital_frequency_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.orbital_frequency_from_separation"]], "plot_catalog_parameters() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.plot_catalog_parameters"]], "precessing_simulations (mayawaves.utils.catalogutils.catalog property)": [[7, "mayawaves.utils.catalogutils.Catalog.precessing_simulations"]], "radial_momentum_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.radial_momentum_from_separation"]], "separation_from_orbital_frequency() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.separation_from_orbital_frequency"]], "spin_magnitudes_for_simulation() (mayawaves.utils.catalogutils.catalog method)": [[7, "mayawaves.utils.catalogutils.Catalog.spin_magnitudes_for_simulation"]], "summarize_coalescence() (in module mayawaves.utils.postprocessingutils)": [[7, "mayawaves.utils.postprocessingutils.summarize_coalescence"]], "tangential_momentum_from_separation() (in module mayawaves.utils.postnewtonianutils)": [[7, "mayawaves.utils.postnewtonianutils.tangential_momentum_from_separation"]]}}) \ No newline at end of file diff --git a/docs/html/source/getting_started.html b/docs/html/source/getting_started.html index f032913..86abcd6 100644 --- a/docs/html/source/getting_started.html +++ b/docs/html/source/getting_started.html @@ -136,9 +136,14 @@

How to install

Requirements

-

Due to its dependencies, this package requires 3.9 \(\leq\) python \(\leq\) 3.10.

+

For most usecases, this package requires 3.9 \(\leq\) python.

It also relies upon the following python packages which are automatically installed from pip when you install mayawaves:

-
numpy, scipy, pandas, romspline, wget, matplotlib, mock, numba, scri
+
numpy, scipy, pandas, romspline, wget, matplotlib, mock
+
+
+

However, if you want to use the ability to switch to a center-of-mass frame for the gravitational radiation, that has +additional dependencies that require python \(\leq\) 3.10 as well as the following dependencies:

+
numba, scri
 

This package has been tested with Einstein Toolkit Release Meitner (released on December 6th, 2023). diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index e45a2e4..b38e493 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -31,11 +31,17 @@ at the top of your file. You can also import specific parts of mayawaves instead Requirements ------------------------------------- -Due to its dependencies, this package requires 3.9 :math:`\leq` python :math:`\leq` 3.10. +For most usecases, this package requires 3.9 :math:`\leq` python. It also relies upon the following python packages which are automatically installed from pip when you install mayawaves:: - numpy, scipy, pandas, romspline, wget, matplotlib, mock, numba, scri + numpy, scipy, pandas, romspline, wget, matplotlib, mock + + +However, if you want to use the ability to switch to a center-of-mass frame for the gravitational radiation, that has +additional dependencies that require python :math:`\leq` 3.10 as well as the following dependencies:: + + numba, scri This package has been tested with Einstein Toolkit Release Meitner (released on December 6th, 2023). It supports output from the following thorns:: diff --git a/mayawaves/coalescence.py b/mayawaves/coalescence.py index df4670a..7e8db2f 100644 --- a/mayawaves/coalescence.py +++ b/mayawaves/coalescence.py @@ -292,6 +292,11 @@ def set_radiation_frame(self, center_of_mass_corrected: bool = False): Args: center_of_mass_corrected (:obj:`bool`, optional): Whether to correct for center of mass drift. Default False. If false, the frame is set back to the original, raw frame. """ + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + warnings.warn('Python version too recent to be compatible with Scri package. Unable to change the radiation frame.') + raise ImportError('Unable to change the radiation frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + from mayawaves.radiation import Frame if center_of_mass_corrected: diff --git a/mayawaves/radiation.py b/mayawaves/radiation.py index 2190169..c1e1982 100644 --- a/mayawaves/radiation.py +++ b/mayawaves/radiation.py @@ -3,12 +3,10 @@ import h5py import numpy as np import scipy.integrate -import scri from scipy.ndimage import uniform_filter1d from scipy.signal import butter, filtfilt from scipy.signal.windows import blackmanharris import math -from spherical_functions import LM_index class Frame(Enum): @@ -76,6 +74,10 @@ def set_frame(self, new_frame: Frame, time: np.ndarray = None, center_of_mass: n center_of_mass (:obj:`numpy.ndarray`, optional): Time series of center of mass. Only necessary if moving to center of mass corrected frame. """ + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError('Unable to change the radiation frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + if type(new_frame) != Frame: warnings.warn("You must provide the frame as a Frame enum value") return @@ -685,6 +687,11 @@ def set_frame(self, new_frame: Frame, time: np.ndarray = None, center_of_mass: n alpha (:obj:`numpy.ndarray`, optional): Offset for center of mass correction. Only necessary if moving to center of mass corrected frame and not providing the center of mass timeseries. beta (:obj:`numpy.ndarray`, optional): Boost for center of mass correction. Only necessary if moving to center of mass corrected frame and not providing the center of mass timeseries. """ + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError( + 'Unable to change the radiation frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + if type(new_frame) != Frame: warnings.warn('You must provide the new frame as a Frame enum') return @@ -704,6 +711,11 @@ def modes(self) -> dict: if self.frame == Frame.RAW: return self.raw_modes if self.frame == Frame.COM_CORRECTED: + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError( + 'Unable to return modes in center-of-mass corrected frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + if self.__com_corrected_modes is None: self.__frame = Frame.RAW self._generate_com_corrected_modes() @@ -736,6 +748,11 @@ def l_max(self) -> int: def time(self) -> np.ndarray: """Time array associated with all timeseries provided by this RadiationSphere.""" if self.frame == Frame.COM_CORRECTED: + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError( + 'Unable to return time in center-of-mass corrected frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + return self.__com_corrected_time return self.__time @@ -1239,11 +1256,16 @@ def get_extrapolated_sphere(self, order: int = 1): extrapolated_sphere = RadiationSphere(mode_dict=temp_modes, time=np.array(self.__time), radius=self.radius, extrapolated=True) if self.frame != Frame.RAW: + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError( + 'Unable to set center-of-mass corrected frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + extrapolated_sphere.set_frame(self.frame, alpha=self.__alpha, beta=self.__beta) return extrapolated_sphere - def _scri_waveform_modes_object(self) -> scri.WaveformModes: + def _scri_waveform_modes_object(self): """Create and return a Scri WaveformModes object containing the data for this extraction sphere. For more information on scri objects, refer to https://scri.readthedocs.io. @@ -1251,6 +1273,11 @@ def _scri_waveform_modes_object(self) -> scri.WaveformModes: Returns: A Scri WaveformModes object """ + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError( + 'Unable to create scri waveform modes object. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + from scri import WaveformModes from scri import h as scri_h from scri import Inertial @@ -1292,6 +1319,11 @@ def _set_alpha_beta_for_com_transformation(self, com_time, center_of_mass): center_of_mass (np.ndarray): timeseries of center of mass """ + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError( + 'Unable to convert to center-of-mass corrected frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + com_time = com_time + self.radius t_max = np.max(com_time) ti = 0.1 * t_max @@ -1316,6 +1348,13 @@ def _generate_com_corrected_modes(self): Uses scri to perform the transformation. For more information on scri, refer to https://scri.readthedocs.io. """ + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + raise ImportError( + 'Unable to return modes in center-of-mass corrected frame. Python version too recent to be compatible with Scri package. If you would like the ability to move to center-of-mass corrected frame, use python <= 3.10.') + + from spherical_functions import LM_index + scri_waveform_object = self._scri_waveform_modes_object() if scri_waveform_object is None: return diff --git a/mayawaves/utils/postprocessingutils.py b/mayawaves/utils/postprocessingutils.py index 5ee92fd..f82de20 100644 --- a/mayawaves/utils/postprocessingutils.py +++ b/mayawaves/utils/postprocessingutils.py @@ -2667,10 +2667,12 @@ def _put_data_in_lal_compatible_format(coalescence: Coalescence, lal_h5_file_nam center_of_mass_correction (:obj:'bool', optional): whether to correct for center of mass drift. Default False. """ + from mayawaves.radiation import Frame if center_of_mass_correction: coalescence.set_radiation_frame(center_of_mass_corrected=True) else: - coalescence.set_radiation_frame() + if not coalescence.radiation_frame == Frame.RAW: + coalescence.set_radiation_frame() initial_time_horizon = 75 if extraction_radius != 0: @@ -2737,15 +2739,18 @@ def _put_data_in_lal_compatible_format(coalescence: Coalescence, lal_h5_file_nam _store_compact_object_timeseries_data(coalescence, lal_h5_file, lvc_format, time_shift, initial_time_horizon) lal_h5_file.close() - coalescence.set_radiation_frame() + if coalescence.radiation_frame != Frame.RAW: + coalescence.set_radiation_frame() except Exception as e: lal_h5_file.close() - coalescence.set_radiation_frame() + if coalescence.radiation_frame != Frame.RAW: + coalescence.set_radiation_frame() raise e if raise_mode_error: - coalescence.set_radiation_frame() + if coalescence.radiation_frame != Frame.RAW: + coalescence.set_radiation_frame() raise IOError(f"Data is missing for one of the included modes") diff --git a/pyproject.toml b/pyproject.toml index 4827ce5..b63f04b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "mayawaves" -version = "2023.10" +version = "2024.4" authors = [ { name="Deborah Ferguson", email="deborah.l.ferguson@gmail.com" }, { name="Surendra Anne" }, @@ -22,7 +22,7 @@ authors = [ description = "A python package for interacting with Einstein Toolkit simulations and the MAYA Catalog of NR Waveforms" readme = "README.md" license = { file="LICENSE" } -requires-python = ">=3.8,<3.11" +requires-python = ">=3.8" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", @@ -35,8 +35,8 @@ dependencies = ["numpy", "wget", "matplotlib", "mock", - "numba", - "scri" + "numba; python_version < '3.11'", + "scri; python_version < '3.11'" ] [project.urls] diff --git a/requirements.txt b/requirements.txt index c6a92c6..40e15c8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,5 +5,5 @@ romspline wget matplotlib mock -numba -scri +numba; python_version < '3.11' +scri; python_version < '3.11' diff --git a/tests/test_coalescence.py b/tests/test_coalescence.py index c02725c..572cee9 100644 --- a/tests/test_coalescence.py +++ b/tests/test_coalescence.py @@ -622,31 +622,65 @@ def test_set_radiation_frame(self): # center of mass # center of mass data is None - with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: - with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, - return_value=(None, None)) as mock_center_of_mass: - TestCoalescence.coalescence.set_radiation_frame(center_of_mass_corrected=True) - - mock_center_of_mass.assert_called_once() - mock_set_frame.assert_not_called() - # center of mass data is not None - with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: - with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, - return_value=( - np.array([1, 2, 3]), np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))) as mock_center_of_mass: - TestCoalescence.coalescence.set_radiation_frame(center_of_mass_corrected=True) - - mock_center_of_mass.assert_called_once() - self.assertEqual(Frame.COM_CORRECTED, mock_set_frame.call_args[0][0]) - self.assertEqual(2, len(mock_set_frame.call_args[1])) - self.assertTrue(np.all(np.array([1, 2, 3]) == mock_set_frame.call_args[1]['time'])) - self.assertTrue(np.all( - np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) == mock_set_frame.call_args[1]['center_of_mass'])) - - # resetting to raw frame - with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: - TestCoalescence.coalescence.set_radiation_frame() - mock_set_frame.assert_called_once_with(Frame.RAW) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + try: + TestCoalescence.coalescence.set_radiation_frame(center_of_mass_corrected=True) + self.fail() + except ImportError: + mock_center_of_mass.assert_not_called() + mock_set_frame.assert_not_called() + + # center of mass data is not None + with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=( + np.array([1, 2, 3]), np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))) as mock_center_of_mass: + try: + TestCoalescence.coalescence.set_radiation_frame(center_of_mass_corrected=True) + self.fail() + except ImportError: + mock_center_of_mass.assert_not_called() + + # resetting to raw frame + with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: + try: + TestCoalescence.coalescence.set_radiation_frame() + self.fail() + except ImportError: + mock_set_frame.assert_not_called() + + else: + with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + TestCoalescence.coalescence.set_radiation_frame(center_of_mass_corrected=True) + + mock_center_of_mass.assert_called_once() + mock_set_frame.assert_not_called() + + # center of mass data is not None + with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=( + np.array([1, 2, 3]), + np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]))) as mock_center_of_mass: + TestCoalescence.coalescence.set_radiation_frame(center_of_mass_corrected=True) + + mock_center_of_mass.assert_called_once() + self.assertEqual(Frame.COM_CORRECTED, mock_set_frame.call_args[0][0]) + self.assertEqual(2, len(mock_set_frame.call_args[1])) + self.assertTrue(np.all(np.array([1, 2, 3]) == mock_set_frame.call_args[1]['time'])) + self.assertTrue(np.all( + np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) == mock_set_frame.call_args[1]['center_of_mass'])) + + # resetting to raw frame + with patch.object(RadiationBundle, 'set_frame') as mock_set_frame: + TestCoalescence.coalescence.set_radiation_frame() + mock_set_frame.assert_called_once_with(Frame.RAW) @mock.patch("mayawaves.compactobject.CompactObject.initial_horizon_mass", new_callable=PropertyMock) @mock.patch("mayawaves.compactobject.CompactObject.horizon_mass", new_callable=PropertyMock) diff --git a/tests/test_postprocessingutils.py b/tests/test_postprocessingutils.py index e553b01..ec87cd6 100644 --- a/tests/test_postprocessingutils.py +++ b/tests/test_postprocessingutils.py @@ -3123,58 +3123,60 @@ def test__store_lal_metadata(self): # test setting frame # com corrected frame - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) + import sys + if sys.version_info.major == 3 and sys.version_info.minor <= 10: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) - temp_h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") - temp_lal_h5 = h5py.File(temp_h5_filename, 'w') - name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" - alternative_names = [] - initial_time_horizon = 75 - omega_22_nr = 0.2 + temp_h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") + temp_lal_h5 = h5py.File(temp_h5_filename, 'w') + name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" + alternative_names = [] + initial_time_horizon = 75 + omega_22_nr = 0.2 - lvc_format = 1 + lvc_format = 1 - coalescence.set_radiation_frame(center_of_mass_corrected=True) + coalescence.set_radiation_frame(center_of_mass_corrected=True) - _store_lal_metadata(coalescence, temp_lal_h5, name, alternative_names, - initial_time_horizon, omega_22_nr, lvc_format, NR_group='UT Austin', NR_code='MAYA', - bibtex_keys='Jani:2016wkt', contact_email='deirdre.shoemaker@austin.utexas.edu') + _store_lal_metadata(coalescence, temp_lal_h5, name, alternative_names, + initial_time_horizon, omega_22_nr, lvc_format, NR_group='UT Austin', NR_code='MAYA', + bibtex_keys='Jani:2016wkt', contact_email='deirdre.shoemaker@austin.utexas.edu') - self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) - self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) + self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) + self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) - coalescence.close() - temp_lal_h5.close() - os.remove(temp_h5_filename) + coalescence.close() + temp_lal_h5.close() + os.remove(temp_h5_filename) - # failed com corrected frame - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) + # failed com corrected frame + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) - temp_h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") - temp_lal_h5 = h5py.File(temp_h5_filename, 'w') - name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" - alternative_names = [] - initial_time_horizon = 75 - omega_22_nr = 0.2 + temp_h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") + temp_lal_h5 = h5py.File(temp_h5_filename, 'w') + name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" + alternative_names = [] + initial_time_horizon = 75 + omega_22_nr = 0.2 - lvc_format = 1 + lvc_format = 1 - with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, - return_value=(None, None)) as mock_center_of_mass: - coalescence.set_radiation_frame(center_of_mass_corrected=True) - _store_lal_metadata(coalescence, temp_lal_h5, name, alternative_names, - initial_time_horizon, omega_22_nr, lvc_format, NR_group='UT Austin', NR_code='MAYA', - bibtex_keys='Jani:2016wkt', contact_email='deirdre.shoemaker@austin.utexas.edu', ) + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + coalescence.set_radiation_frame(center_of_mass_corrected=True) + _store_lal_metadata(coalescence, temp_lal_h5, name, alternative_names, + initial_time_horizon, omega_22_nr, lvc_format, NR_group='UT Austin', NR_code='MAYA', + bibtex_keys='Jani:2016wkt', contact_email='deirdre.shoemaker@austin.utexas.edu', ) - self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) + self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) - coalescence.close() - temp_lal_h5.close() - os.remove(temp_h5_filename) + coalescence.close() + temp_lal_h5.close() + os.remove(temp_h5_filename) # change metadata @@ -3431,49 +3433,93 @@ def test__put_data_in_lal_compatible_format(self): os.remove(temp_lal_h5_file_name) # com corrected case - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) - - temp_lal_h5_file_name = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") - name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" - alternative_names = [] - extraction_radius = 70 - _put_data_in_lal_compatible_format(coalescence, temp_lal_h5_file_name, name, alternative_names, - extraction_radius, center_of_mass_correction=True, NR_group='UT Austin', - NR_code='MAYA', bibtex_keys='Jani:2016wkt', - contact_email='deirdre.shoemaker@austin.utexas.edu') - - temp_lal_h5 = h5py.File(temp_lal_h5_file_name, 'r') - self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) - self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) - - coalescence.close() - temp_lal_h5.close() - os.remove(temp_lal_h5_file_name) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + + temp_lal_h5_file_name = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") + name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" + alternative_names = [] + extraction_radius = 70 + try: + _put_data_in_lal_compatible_format(coalescence, temp_lal_h5_file_name, name, alternative_names, + extraction_radius, center_of_mass_correction=True, + NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + self.fail() + except ImportError: + pass + coalescence.close() - # failed com corrected case - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) - - temp_lal_h5_file_name = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") - name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" - alternative_names = [] - extraction_radius = 70 - with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, - return_value=(None, None)) as mock_center_of_mass: + else: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + + temp_lal_h5_file_name = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") + name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" + alternative_names = [] + extraction_radius = 70 _put_data_in_lal_compatible_format(coalescence, temp_lal_h5_file_name, name, alternative_names, extraction_radius, center_of_mass_correction=True, NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', contact_email='deirdre.shoemaker@austin.utexas.edu') - temp_lal_h5 = h5py.File(temp_lal_h5_file_name, 'r') - self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) + temp_lal_h5 = h5py.File(temp_lal_h5_file_name, 'r') + self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) + self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) - coalescence.close() - temp_lal_h5.close() - os.remove(temp_lal_h5_file_name) + coalescence.close() + temp_lal_h5.close() + os.remove(temp_lal_h5_file_name) + + # failed com corrected case + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + + temp_lal_h5_file_name = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") + name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" + alternative_names = [] + extraction_radius = 70 + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + try: + _put_data_in_lal_compatible_format(coalescence, temp_lal_h5_file_name, name, alternative_names, + extraction_radius, center_of_mass_correction=True, + NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + self.fail() + except ImportError: + pass + coalescence.close() + + else: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + + temp_lal_h5_file_name = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp.h5") + name = "D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67" + alternative_names = [] + extraction_radius = 70 + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + _put_data_in_lal_compatible_format(coalescence, temp_lal_h5_file_name, name, alternative_names, + extraction_radius, center_of_mass_correction=True, + NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + + temp_lal_h5 = h5py.File(temp_lal_h5_file_name, 'r') + self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) + + coalescence.close() + temp_lal_h5.close() + os.remove(temp_lal_h5_file_name) def test_export_to_ascii(self): h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, @@ -3638,12 +3684,13 @@ def test__export_ascii_file(self): @mock.patch("mayawaves.coalescence.Coalescence.spin_configuration", new_callable=PropertyMock) def test_export_to_lvcnr_catalog(self, mock_coalescence_spin_configuration): + from mayawaves.radiation import Frame mock_coalescence_spin_configuration.return_value = "non-spinning" output_directory = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output") h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") coalescence = Coalescence(h5_filename) - + coalescence.radiationbundle._RadiationBundle__frame = Frame.RAW pputils.export_to_lvcnr_catalog(coalescence, output_directory, NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', contact_email='deirdre.shoemaker@austin.utexas.edu') @@ -3691,46 +3738,79 @@ def test_export_to_lvcnr_catalog(self, mock_coalescence_spin_configuration): os.remove(lal_h5_filepath) # com corrected case - output_directory = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output") - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) - pputils.export_to_lvcnr_catalog(coalescence, output_directory, center_of_mass_correction=True, - NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', - contact_email='deirdre.shoemaker@austin.utexas.edu') - - lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - self.assertTrue(os.path.exists(lal_h5_filepath)) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + output_directory = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output") + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + try: + pputils.export_to_lvcnr_catalog(coalescence, output_directory, center_of_mass_correction=True, + NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + self.fail() + except ImportError: + pass - temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') - self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) - self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) + coalescence.close() - coalescence.close() - temp_lal_h5.close() - os.remove(lal_h5_filepath) - - # failed com corrected case - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) - with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, - return_value=(None, None)) as mock_center_of_mass: + else: + output_directory = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output") + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) pputils.export_to_lvcnr_catalog(coalescence, output_directory, center_of_mass_correction=True, NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', contact_email='deirdre.shoemaker@austin.utexas.edu') - lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - self.assertTrue(os.path.exists(lal_h5_filepath)) + lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + self.assertTrue(os.path.exists(lal_h5_filepath)) - temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') - self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) + temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') + self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) + self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) - coalescence.close() - temp_lal_h5.close() - os.remove(lal_h5_filepath) + coalescence.close() + temp_lal_h5.close() + os.remove(lal_h5_filepath) + + # failed com corrected case + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + try: + pputils.export_to_lvcnr_catalog(coalescence, output_directory, center_of_mass_correction=True, + NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + self.fail() + except ImportError: + pass + coalescence.close() + + else: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + pputils.export_to_lvcnr_catalog(coalescence, output_directory, center_of_mass_correction=True, + NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + + lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + self.assertTrue(os.path.exists(lal_h5_filepath)) + + temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') + self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) + + coalescence.close() + temp_lal_h5.close() + os.remove(lal_h5_filepath) # if precessing without enough spin data, this should fail coalescence = Coalescence(h5_filename) @@ -3797,48 +3877,85 @@ def test_export_to_lal_compatible_format(self, mock_coalescence_spin_configurati os.remove(lal_h5_filepath) # com corrected case - output_directory = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output") - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) - pputils.export_to_lal_compatible_format(coalescence, output_directory, extraction_radius=70, - center_of_mass_correction=True, NR_group='UT Austin', - NR_code='MAYA', bibtex_keys='Jani:2016wkt', - contact_email='deirdre.shoemaker@austin.utexas.edu',) - - lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - self.assertTrue(os.path.exists(lal_h5_filepath)) - - temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') - self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) - self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) - - coalescence.close() - temp_lal_h5.close() - os.remove(lal_h5_filepath) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + output_directory = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output") + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + try: + pputils.export_to_lal_compatible_format(coalescence, output_directory, extraction_radius=70, + center_of_mass_correction=True, NR_group='UT Austin', + NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + self.fail() + except ImportError: + pass + + coalescence.close() - # failed com corrected case - h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - coalescence = Coalescence(h5_filename) - with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, - return_value=(None, None)) as mock_center_of_mass: + else: + output_directory = os.path.join(TestPostprocessingUtils.CURR_DIR, "resources/test_output") + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) pputils.export_to_lal_compatible_format(coalescence, output_directory, extraction_radius=70, center_of_mass_correction=True, NR_group='UT Austin', NR_code='MAYA', bibtex_keys='Jani:2016wkt', - contact_email='deirdre.shoemaker@austin.utexas.edu',) + contact_email='deirdre.shoemaker@austin.utexas.edu') - lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, - "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") - self.assertTrue(os.path.exists(lal_h5_filepath)) + lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + self.assertTrue(os.path.exists(lal_h5_filepath)) - temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') - self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) + temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') + self.assertTrue('frame' in temp_lal_h5['auxiliary-info'].attrs) + self.assertEqual('Center of mass drift corrected', temp_lal_h5['auxiliary-info'].attrs['frame']) - coalescence.close() - temp_lal_h5.close() - os.remove(lal_h5_filepath) + coalescence.close() + temp_lal_h5.close() + os.remove(lal_h5_filepath) + + # failed com corrected case + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + try: + pputils.export_to_lal_compatible_format(coalescence, output_directory, extraction_radius=70, + center_of_mass_correction=True, NR_group='UT Austin', + NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + self.fail() + except ImportError: + pass + + coalescence.close() + + else: + h5_filename = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/temp/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + coalescence = Coalescence(h5_filename) + with patch.object(Coalescence, 'center_of_mass', new_callable=PropertyMock, + return_value=(None, None)) as mock_center_of_mass: + pputils.export_to_lal_compatible_format(coalescence, output_directory, extraction_radius=70, + center_of_mass_correction=True, NR_group='UT Austin', + NR_code='MAYA', bibtex_keys='Jani:2016wkt', + contact_email='deirdre.shoemaker@austin.utexas.edu') + + lal_h5_filepath = os.path.join(TestPostprocessingUtils.CURR_DIR, + "resources/test_output/D2.33_q1_a1_0_0_0_a2_0_0_0_m42.67.h5") + self.assertTrue(os.path.exists(lal_h5_filepath)) + + temp_lal_h5 = h5py.File(lal_h5_filepath, 'r') + self.assertTrue('frame' not in temp_lal_h5['auxiliary-info'].attrs) + + coalescence.close() + temp_lal_h5.close() + os.remove(lal_h5_filepath) # if precessing without enough spin data, this should just warn coalescence = Coalescence(h5_filename) diff --git a/tests/test_radiationbundle.py b/tests/test_radiationbundle.py index 8d0ef02..ddf70c1 100644 --- a/tests/test_radiationbundle.py +++ b/tests/test_radiationbundle.py @@ -102,29 +102,62 @@ def test_frame(self): def test_set_frame(self): from mayawaves.radiation import Frame - # invalid frame - self.radiation_bundle.set_frame('test') - self.assertEqual(Frame.RAW, self.radiation_bundle._RadiationBundle__frame) - - self.radiation_bundle._RadiationBundle__frame = Frame.COM_CORRECTED - self.radiation_bundle.set_frame('test') - self.assertEqual(Frame.COM_CORRECTED, self.radiation_bundle._RadiationBundle__frame) - - # raw - self.radiation_bundle.set_frame(Frame.RAW) - self.assertEqual(Frame.RAW, self.radiation_bundle._RadiationBundle__frame) - # check that it set the frame for all the spheres - for sphere in self.radiation_bundle.radiation_spheres.values(): - self.assertEqual(Frame.RAW, sphere.frame) - - # com - self.__extrapolated_sphere = self.radiation_bundle.radiation_spheres[70] - self.radiation_bundle.set_frame(Frame.COM_CORRECTED) - self.assertEqual(Frame.COM_CORRECTED, self.radiation_bundle._RadiationBundle__frame) - # check that it set the frame for all the spheres - for sphere in self.radiation_bundle.radiation_spheres.values(): - self.assertEqual(Frame.COM_CORRECTED, sphere.frame) - self.assertEqual(Frame.COM_CORRECTED, self.__extrapolated_sphere.frame) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + # invalid frame + try: + self.radiation_bundle.set_frame('test') + self.fail() + except ImportError: + self.assertEqual(Frame.RAW, self.radiation_bundle._RadiationBundle__frame) + + self.radiation_bundle._RadiationBundle__frame = Frame.COM_CORRECTED + try: + self.radiation_bundle.set_frame('test') + self.fail() + except ImportError: + self.assertEqual(Frame.COM_CORRECTED, self.radiation_bundle._RadiationBundle__frame) + + # raw + self.radiation_bundle._RadiationBundle__frame = Frame.RAW + try: + self.radiation_bundle.set_frame(Frame.RAW) + self.fail() + except ImportError: + self.assertEqual(Frame.RAW, self.radiation_bundle._RadiationBundle__frame) + + # com + self.__extrapolated_sphere = self.radiation_bundle.radiation_spheres[70] + try: + self.radiation_bundle.set_frame(Frame.COM_CORRECTED) + self.fail() + except ImportError: + self.assertEqual(Frame.RAW, self.radiation_bundle._RadiationBundle__frame) + + else: + # invalid frame + self.radiation_bundle.set_frame('test') + self.assertEqual(Frame.RAW, self.radiation_bundle._RadiationBundle__frame) + + self.radiation_bundle._RadiationBundle__frame = Frame.COM_CORRECTED + self.radiation_bundle.set_frame('test') + self.assertEqual(Frame.COM_CORRECTED, self.radiation_bundle._RadiationBundle__frame) + + # raw + self.radiation_bundle.set_frame(Frame.RAW) + self.assertEqual(Frame.RAW, self.radiation_bundle._RadiationBundle__frame) + # check that it set the frame for all the spheres + for sphere in self.radiation_bundle.radiation_spheres.values(): + self.assertEqual(Frame.RAW, sphere.frame) + + # com + self.__extrapolated_sphere = self.radiation_bundle.radiation_spheres[70] + self.radiation_bundle.set_frame(Frame.COM_CORRECTED) + self.assertEqual(Frame.COM_CORRECTED, self.radiation_bundle._RadiationBundle__frame) + # check that it set the frame for all the spheres + for sphere in self.radiation_bundle.radiation_spheres.values(): + self.assertEqual(Frame.COM_CORRECTED, sphere.frame) + self.assertEqual(Frame.COM_CORRECTED, self.__extrapolated_sphere.frame) def test_radiation_spheres(self): self.assertTrue( diff --git a/tests/test_radiationsphere.py b/tests/test_radiationsphere.py index ed8886a..eeb63f3 100644 --- a/tests/test_radiationsphere.py +++ b/tests/test_radiationsphere.py @@ -98,39 +98,102 @@ def test_frame(self): def test_set_frame(self): from mayawaves.radiation import Frame - # invalid frame - self.radiation_sphere.set_frame('coprecessing') - self.assertEqual(Frame.RAW, self.radiation_sphere._RadiationSphere__frame) - - self.radiation_sphere._RadiationSphere__frame = Frame.COM_CORRECTED - self.radiation_sphere.set_frame('coprecessing') - self.assertEqual(Frame.COM_CORRECTED, self.radiation_sphere._RadiationSphere__frame) - - # raw - self.radiation_sphere.set_frame(Frame.RAW) - self.assertEqual(Frame.RAW, self.radiation_sphere._RadiationSphere__frame) - - # com - self.radiation_sphere.set_frame(Frame.COM_CORRECTED) - self.assertEqual(Frame.COM_CORRECTED, self.radiation_sphere._RadiationSphere__frame) - - # test with time, com - self.radiation_sphere.set_frame(Frame.RAW) - time = np.array([1, 2, 3, 4]) - com = np.array([5, 6, 7, 8]) - with patch.object(RadiationSphere, '_set_alpha_beta_for_com_transformation') as mock_set_alpha_beta: - self.radiation_sphere.set_frame(Frame.COM_CORRECTED, time=time, center_of_mass=com) - mock_set_alpha_beta.assert_called_once_with(time, com) - - # test setting alpha, beta directly - self.radiation_sphere.set_frame(Frame.RAW) - alpha = np.array([1, 2, 3]) - beta = np.array([5, 6, 7]) - with patch.object(RadiationSphere, '_set_alpha_beta_for_com_transformation') as mock_set_alpha_beta: - self.radiation_sphere.set_frame(Frame.COM_CORRECTED, alpha=alpha, beta=beta) - mock_set_alpha_beta.assert_not_called() - self.assertTrue(np.all(alpha == self.radiation_sphere._RadiationSphere__alpha)) - self.assertTrue(np.all(beta == self.radiation_sphere._RadiationSphere__beta)) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + # invalid frame + try: + self.radiation_sphere.set_frame('coprecessing') + self.fail() + except ImportError: + self.assertEqual(Frame.RAW, self.radiation_sphere._RadiationSphere__frame) + + self.radiation_sphere._RadiationSphere__frame = Frame.COM_CORRECTED + try: + self.radiation_sphere.set_frame('coprecessing') + self.fail() + except ImportError: + self.assertEqual(Frame.COM_CORRECTED, self.radiation_sphere._RadiationSphere__frame) + + # raw + try: + self.radiation_sphere.set_frame(Frame.RAW) + self.fail() + except ImportError: + self.assertEqual(Frame.COM_CORRECTED, self.radiation_sphere._RadiationSphere__frame) + + # com + self.radiation_sphere._RadiationSphere__frame = Frame.RAW + try: + self.radiation_sphere.set_frame(Frame.COM_CORRECTED) + self.fail() + except ImportError: + self.assertEqual(Frame.RAW, self.radiation_sphere._RadiationSphere__frame) + + # test with time, com + try: + self.radiation_sphere.set_frame(Frame.RAW) + self.fail() + except: + pass + time = np.array([1, 2, 3, 4]) + com = np.array([5, 6, 7, 8]) + with patch.object(RadiationSphere, '_set_alpha_beta_for_com_transformation') as mock_set_alpha_beta: + try: + self.radiation_sphere.set_frame(Frame.COM_CORRECTED, time=time, center_of_mass=com) + self.fail() + except ImportError: + mock_set_alpha_beta.assert_not_called() + self.assertEqual(Frame.RAW, self.radiation_sphere._RadiationSphere__frame) + + # test setting alpha, beta directly + try: + self.radiation_sphere.set_frame(Frame.RAW) + self.fail() + except: + pass + alpha = np.array([1, 2, 3]) + beta = np.array([5, 6, 7]) + with patch.object(RadiationSphere, '_set_alpha_beta_for_com_transformation') as mock_set_alpha_beta: + try: + self.radiation_sphere.set_frame(Frame.COM_CORRECTED, alpha=alpha, beta=beta) + self.fail() + except ImportError: + mock_set_alpha_beta.assert_not_called() + + else: + # invalid frame + self.radiation_sphere.set_frame('coprecessing') + self.assertEqual(Frame.RAW, self.radiation_sphere._RadiationSphere__frame) + + self.radiation_sphere._RadiationSphere__frame = Frame.COM_CORRECTED + self.radiation_sphere.set_frame('coprecessing') + self.assertEqual(Frame.COM_CORRECTED, self.radiation_sphere._RadiationSphere__frame) + + # raw + self.radiation_sphere.set_frame(Frame.RAW) + self.assertEqual(Frame.RAW, self.radiation_sphere._RadiationSphere__frame) + + # com + self.radiation_sphere.set_frame(Frame.COM_CORRECTED) + self.assertEqual(Frame.COM_CORRECTED, self.radiation_sphere._RadiationSphere__frame) + + # test with time, com + self.radiation_sphere.set_frame(Frame.RAW) + time = np.array([1, 2, 3, 4]) + com = np.array([5, 6, 7, 8]) + with patch.object(RadiationSphere, '_set_alpha_beta_for_com_transformation') as mock_set_alpha_beta: + self.radiation_sphere.set_frame(Frame.COM_CORRECTED, time=time, center_of_mass=com) + mock_set_alpha_beta.assert_called_once_with(time, com) + + # test setting alpha, beta directly + self.radiation_sphere.set_frame(Frame.RAW) + alpha = np.array([1, 2, 3]) + beta = np.array([5, 6, 7]) + with patch.object(RadiationSphere, '_set_alpha_beta_for_com_transformation') as mock_set_alpha_beta: + self.radiation_sphere.set_frame(Frame.COM_CORRECTED, alpha=alpha, beta=beta) + mock_set_alpha_beta.assert_not_called() + self.assertTrue(np.all(alpha == self.radiation_sphere._RadiationSphere__alpha)) + self.assertTrue(np.all(beta == self.radiation_sphere._RadiationSphere__beta)) def test_modes(self): example_radiation_mode = RadiationMode(l=2, m=2, rad=75, time=TestRadiationSphere.time, @@ -151,7 +214,16 @@ def test_modes(self): # test that it returns correctly based on frame from mayawaves.radiation import Frame self.radiation_sphere._RadiationSphere__frame = Frame.COM_CORRECTED - self.assertTrue(self.radiation_sphere._RadiationSphere__com_corrected_modes == self.radiation_sphere.modes) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + try: + com_modes = self.radiation_sphere.modes + self.fail() + except ImportError: + pass + else: + self.assertTrue(self.radiation_sphere._RadiationSphere__com_corrected_modes == self.radiation_sphere.modes) + def test_raw_modes(self): example_radiation_mode = RadiationMode(l=2, m=2, rad=75, time=TestRadiationSphere.time, @@ -194,7 +266,15 @@ def test_time(self): # check when using other frames from mayawaves.radiation import Frame self.radiation_sphere._RadiationSphere__frame = Frame.COM_CORRECTED - self.assertTrue(np.all(com_time == self.radiation_sphere.time)) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + try: + time = self.radiation_sphere.time + self.fail() + except ImportError: + pass + else: + self.assertTrue(np.all(com_time == self.radiation_sphere.time)) def test_radius(self): self.radiation_sphere._RadiationSphere__radius = 80 @@ -1111,126 +1191,180 @@ def test_get_extrapolated_sphere(self): self.assertEqual(Frame.RAW, extrapolated_radiation_sphere.frame) # test frame - self.radiation_sphere._RadiationSphere__extrapolated = False - self.radiation_sphere.set_frame(Frame.COM_CORRECTED, alpha=np.array([0.1, 0.1, 0.1]), - beta=np.array([0.2, 0.2, 0.2])) - with patch.object(RadiationMode, 'get_mode_with_extrapolated_radius', - return_value=extrapolated_example_mode) as mock_get_mode_with_extrapolated_radius: - extrapolated_radiation_sphere = self.radiation_sphere.get_extrapolated_sphere() - self.assertTrue(isinstance(extrapolated_radiation_sphere, RadiationSphere)) - self.assertTrue(extrapolated_radiation_sphere._RadiationSphere__extrapolated) - expected_included_modes = [(2, 2), (3, 1), (3, 3)] - generated_included_modes = sorted(list(extrapolated_radiation_sphere._RadiationSphere__raw_modes.keys())) - self.assertTrue(expected_included_modes == generated_included_modes) - for mode in generated_included_modes: - self.assertTrue( - isinstance(extrapolated_radiation_sphere._RadiationSphere__raw_modes[mode], RadiationMode)) - self.assertTrue( - extrapolated_radiation_sphere._RadiationSphere__raw_modes[mode]._RadiationMode__extrapolated) - self.assertEqual(Frame.COM_CORRECTED, extrapolated_radiation_sphere.frame) - self.assertTrue(np.all(np.array([0.1, 0.1, 0.1]) == extrapolated_radiation_sphere._RadiationSphere__alpha)) - self.assertTrue(np.all(np.array([0.2, 0.2, 0.2]) == extrapolated_radiation_sphere._RadiationSphere__beta)) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + self.radiation_sphere._RadiationSphere__extrapolated = False + try: + self.radiation_sphere.set_frame(Frame.COM_CORRECTED, alpha=np.array([0.1, 0.1, 0.1]), + beta=np.array([0.2, 0.2, 0.2])) + self.fail() + except ImportError: + pass + + else: + self.radiation_sphere._RadiationSphere__extrapolated = False + self.radiation_sphere.set_frame(Frame.COM_CORRECTED, alpha=np.array([0.1, 0.1, 0.1]), + beta=np.array([0.2, 0.2, 0.2])) + with patch.object(RadiationMode, 'get_mode_with_extrapolated_radius', + return_value=extrapolated_example_mode) as mock_get_mode_with_extrapolated_radius: + extrapolated_radiation_sphere = self.radiation_sphere.get_extrapolated_sphere() + self.assertTrue(isinstance(extrapolated_radiation_sphere, RadiationSphere)) + self.assertTrue(extrapolated_radiation_sphere._RadiationSphere__extrapolated) + + expected_included_modes = [(2, 2), (3, 1), (3, 3)] + generated_included_modes = sorted(list(extrapolated_radiation_sphere._RadiationSphere__raw_modes.keys())) + self.assertTrue(expected_included_modes == generated_included_modes) + for mode in generated_included_modes: + self.assertTrue( + isinstance(extrapolated_radiation_sphere._RadiationSphere__raw_modes[mode], RadiationMode)) + self.assertTrue(extrapolated_radiation_sphere._RadiationSphere__raw_modes[mode]._RadiationMode__extrapolated) + self.assertEqual(Frame.COM_CORRECTED, extrapolated_radiation_sphere.frame) + self.assertTrue(np.all(np.array([0.1, 0.1, 0.1]) == extrapolated_radiation_sphere._RadiationSphere__alpha)) + self.assertTrue(np.all(np.array([0.2, 0.2, 0.2]) == extrapolated_radiation_sphere._RadiationSphere__beta)) def test__scri_waveform_modes_object(self): - from spherical_functions import LM_index - coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, + 'resources/radiative_quantities_resources/D11_q2_a1_0.0_0.0_0.4_a2_0.0_0.0_0.4_m282.35.h5')) + test_radiation_sphere = coalescence.radiationbundle.radiation_spheres[75] + + try: + scri_waveform_modes_object = test_radiation_sphere._scri_waveform_modes_object() + self.fail() + except ImportError: + self.assertTrue(True) + + else: + from spherical_functions import LM_index + coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, 'resources/radiative_quantities_resources/D11_q2_a1_0.0_0.0_0.4_a2_0.0_0.0_0.4_m282.35.h5')) - test_radiation_sphere = coalescence.radiationbundle.radiation_spheres[75] - - scri_waveform_modes_object = test_radiation_sphere._scri_waveform_modes_object() - - # go through each mode and see if it has the same data - for l in range(2, coalescence.l_max + 1): - for m in range(-l, l + 1): - data_lm = scri_waveform_modes_object.data[:, LM_index(l, m, scri_waveform_modes_object.ell_min)] - scri_time = scri_waveform_modes_object.t - scri_strain_plus = np.real(data_lm) - scri_strain_cross = -1 * np.imag(data_lm) - raw_time, raw_strain_plus, raw_strain_cross = coalescence.strain_for_mode(l=l, m=m, - extraction_radius=75) - cut_index = np.argmax(raw_time > 150) - maya_time = raw_time[cut_index:] - maya_strain_plus = raw_strain_plus[cut_index:] - maya_strain_cross = raw_strain_cross[cut_index:] - self.assertTrue(np.allclose(maya_time, scri_time, rtol=1e-6)) - self.assertTrue(np.allclose(maya_strain_plus, scri_strain_plus, rtol=1e-6)) - self.assertTrue(np.allclose(maya_strain_cross, scri_strain_cross, rtol=1e-6)) + test_radiation_sphere = coalescence.radiationbundle.radiation_spheres[75] + + scri_waveform_modes_object = test_radiation_sphere._scri_waveform_modes_object() + + # go through each mode and see if it has the same data + for l in range(2, coalescence.l_max + 1): + for m in range(-l, l + 1): + data_lm = scri_waveform_modes_object.data[:, LM_index(l, m, scri_waveform_modes_object.ell_min)] + scri_time = scri_waveform_modes_object.t + scri_strain_plus = np.real(data_lm) + scri_strain_cross = -1 * np.imag(data_lm) + raw_time, raw_strain_plus, raw_strain_cross = coalescence.strain_for_mode(l=l, m=m, + extraction_radius=75) + cut_index = np.argmax(raw_time > 150) + maya_time = raw_time[cut_index:] + maya_strain_plus = raw_strain_plus[cut_index:] + maya_strain_cross = raw_strain_cross[cut_index:] + self.assertTrue(np.allclose(maya_time, scri_time, rtol=1e-6)) + self.assertTrue(np.allclose(maya_strain_plus, scri_strain_plus, rtol=1e-6)) + self.assertTrue(np.allclose(maya_strain_cross, scri_strain_cross, rtol=1e-6)) def test__set_alpha_beta_for_com_transformation(self): # check if alpha and beta minimize eq 5 of https://arxiv.org/abs/1904.04842 - coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, 'resources/radiative_quantities_resources/D11_q2_a1_0.0_0.0_0.4_a2_0.0_0.0_0.4_m282.35.h5')) - time, com = coalescence.center_of_mass - coalescence.radiationbundle.radiation_spheres[75]._set_alpha_beta_for_com_transformation(time, com) - computed_alpha = coalescence.radiationbundle.radiation_spheres[75]._RadiationSphere__alpha - computed_beta = coalescence.radiationbundle.radiation_spheres[75]._RadiationSphere__beta - - time = time + 75 - t_max = np.max(time) - ti = 0.1 * t_max - tf = 0.9 * t_max - ti_iter = np.argmax(time > ti) - tf_iter = np.argmax(time > tf) - time = time[ti_iter: tf_iter] - com = com[ti_iter: tf_iter] - - def func_of_alpha_beta(x): - ax, ay, az, bx, by, bz = x - alpha = np.array([ax, ay, az]) - beta = np.array([bx, by, bz]) - alpha_plus_beta_t = alpha.reshape(1, 3) + beta.reshape(1, 3) * time.reshape(len(time), 1) - alpha_plus_beta_t = alpha_plus_beta_t.reshape(len(alpha_plus_beta_t), 3) - integrand = np.linalg.norm(com - alpha_plus_beta_t, axis=1) ** 2 - return np.trapz(integrand, time) - - result = scipy.optimize.minimize(func_of_alpha_beta, x0=(0, 0, 0, 0, 0, 0), method='Nelder-Mead') - minimized_alpha = result.x[:3] - minimized_beta = result.x[3:] - self.assertTrue(np.allclose(minimized_alpha, computed_alpha, atol=5e-3)) - self.assertTrue(np.allclose(minimized_beta, computed_beta, atol=1e-3)) + time, com = coalescence.center_of_mass + try: + coalescence.radiationbundle.radiation_spheres[75]._set_alpha_beta_for_com_transformation(time, com) + self.fail() + except ImportError: + pass + + else: + coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, + 'resources/radiative_quantities_resources/D11_q2_a1_0.0_0.0_0.4_a2_0.0_0.0_0.4_m282.35.h5')) + time, com = coalescence.center_of_mass + coalescence.radiationbundle.radiation_spheres[75]._set_alpha_beta_for_com_transformation(time, com) + computed_alpha = coalescence.radiationbundle.radiation_spheres[75]._RadiationSphere__alpha + computed_beta = coalescence.radiationbundle.radiation_spheres[75]._RadiationSphere__beta + + time = time + 75 + t_max = np.max(time) + ti = 0.1 * t_max + tf = 0.9 * t_max + ti_iter = np.argmax(time > ti) + tf_iter = np.argmax(time > tf) + time = time[ti_iter: tf_iter] + com = com[ti_iter: tf_iter] + + def func_of_alpha_beta(x): + ax, ay, az, bx, by, bz = x + alpha = np.array([ax, ay, az]) + beta = np.array([bx, by, bz]) + alpha_plus_beta_t = alpha.reshape(1, 3) + beta.reshape(1, 3) * time.reshape(len(time), 1) + alpha_plus_beta_t = alpha_plus_beta_t.reshape(len(alpha_plus_beta_t), 3) + integrand = np.linalg.norm(com - alpha_plus_beta_t, axis=1) ** 2 + return np.trapz(integrand, time) + + result = scipy.optimize.minimize(func_of_alpha_beta, x0=(0, 0, 0, 0, 0, 0), method='Nelder-Mead') + minimized_alpha = result.x[:3] + minimized_beta = result.x[3:] + self.assertTrue(np.allclose(minimized_alpha, computed_alpha, atol=5e-3)) + self.assertTrue(np.allclose(minimized_beta, computed_beta, atol=1e-3)) def test__generate_com_corrected_modes(self): - coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, - 'resources/radiative_quantities_resources/D11_q2_a1_0.0_0.0_0.4_a2_0.0_0.0_0.4_m282.35.h5')) - incl_modes = coalescence.included_modes - test_radiation_sphere = coalescence.radiationbundle.radiation_spheres[75] - time, center_of_mass = coalescence.center_of_mass - test_radiation_sphere._set_alpha_beta_for_com_transformation(time, center_of_mass) - test_radiation_sphere._generate_com_corrected_modes() - - # com corrected time set and starts close to but greater than 75 - generated_com_corrected_time = test_radiation_sphere._RadiationSphere__com_corrected_time - self.assertIsNotNone(generated_com_corrected_time) - self.assertTrue(generated_com_corrected_time[0] >= 150) - self.assertTrue(np.isclose(generated_com_corrected_time[0], 150, atol=1)) - - # com corrected modes set - com_corrected_modes = test_radiation_sphere._RadiationSphere__com_corrected_modes - self.assertIsNotNone(com_corrected_modes) - - # all the modes from raw are represented - self.assertEqual(sorted(incl_modes), sorted(list(com_corrected_modes.keys()))) - - max_22_amp = max(test_radiation_sphere._RadiationSphere__raw_modes[(2, 2)].strain_amplitude) - - # strains are within ~10 percent of each other but not identical - for mode_key in incl_modes: - raw_mode = test_radiation_sphere._RadiationSphere__raw_modes[mode_key] - com_corrected_mode = com_corrected_modes[mode_key] - raw_time = raw_mode.time - raw_strain_plus = raw_mode.strain_plus - com_time = com_corrected_mode.time - com_strain_plus = com_corrected_mode.strain_plus - - time_array = np.linspace(max(raw_time[0], com_time[0]), min(raw_time[-1], com_time[-1]), 1000) - - interpolated_raw_strain_plus = np.interp(time_array, raw_time, raw_strain_plus) - interpolated_com_strain_plus = np.interp(time_array, com_time, com_strain_plus) - - self.assertFalse(np.all(interpolated_raw_strain_plus == interpolated_com_strain_plus)) - - max_amp = max(raw_mode.strain_amplitude) - if max_amp > 1e-2 * max_22_amp: - tol = 0.1 * max_amp - self.assertTrue(np.allclose(interpolated_raw_strain_plus, interpolated_com_strain_plus, atol=tol)) + import sys + if sys.version_info.major == 3 and sys.version_info.minor > 10: + coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, + 'resources/radiative_quantities_resources/D11_q2_a1_0.0_0.0_0.4_a2_0.0_0.0_0.4_m282.35.h5')) + incl_modes = coalescence.included_modes + test_radiation_sphere = coalescence.radiationbundle.radiation_spheres[75] + time, center_of_mass = coalescence.center_of_mass + try: + test_radiation_sphere._set_alpha_beta_for_com_transformation(time, center_of_mass) + self.fail() + except ImportError: + pass + try: + test_radiation_sphere._generate_com_corrected_modes() + self.fail() + except ImportError: + pass + + else: + coalescence = Coalescence(os.path.join(TestRadiationSphere.CURR_DIR, 'resources/radiative_quantities_resources/D11_q2_a1_0.0_0.0_0.4_a2_0.0_0.0_0.4_m282.35.h5')) + incl_modes = coalescence.included_modes + test_radiation_sphere = coalescence.radiationbundle.radiation_spheres[75] + time, center_of_mass = coalescence.center_of_mass + test_radiation_sphere._set_alpha_beta_for_com_transformation(time, center_of_mass) + test_radiation_sphere._generate_com_corrected_modes() + + # com corrected time set and starts close to but greater than 75 + generated_com_corrected_time = test_radiation_sphere._RadiationSphere__com_corrected_time + self.assertIsNotNone(generated_com_corrected_time) + self.assertTrue(generated_com_corrected_time[0] >= 150) + self.assertTrue(np.isclose(generated_com_corrected_time[0], 150, atol=1)) + + # com corrected modes set + com_corrected_modes = test_radiation_sphere._RadiationSphere__com_corrected_modes + self.assertIsNotNone(com_corrected_modes) + + # all the modes from raw are represented + self.assertEqual(sorted(incl_modes), sorted(list(com_corrected_modes.keys()))) + + max_22_amp = max(test_radiation_sphere._RadiationSphere__raw_modes[(2, 2)].strain_amplitude) + + # strains are within ~10 percent of each other but not identical + for mode_key in incl_modes: + raw_mode = test_radiation_sphere._RadiationSphere__raw_modes[mode_key] + com_corrected_mode = com_corrected_modes[mode_key] + raw_time = raw_mode.time + raw_strain_plus = raw_mode.strain_plus + com_time = com_corrected_mode.time + com_strain_plus = com_corrected_mode.strain_plus + + time_array = np.linspace(max(raw_time[0], com_time[0]), min(raw_time[-1], com_time[-1]), 1000) + + interpolated_raw_strain_plus = np.interp(time_array, raw_time, raw_strain_plus) + interpolated_com_strain_plus = np.interp(time_array, com_time, com_strain_plus) + + self.assertFalse(np.all(interpolated_raw_strain_plus == interpolated_com_strain_plus)) + + max_amp = max(raw_mode.strain_amplitude) + if max_amp > 1e-2 * max_22_amp: + tol = 0.1 * max_amp + self.assertTrue(np.allclose(interpolated_raw_strain_plus, interpolated_com_strain_plus, atol=tol))