From 85d1a4e6a1f573a468b7ff9cbc2d9cb06d99f4cc Mon Sep 17 00:00:00 2001 From: Alexander Harvey Nitz Date: Thu, 29 Jan 2026 00:18:32 -0500 Subject: [PATCH 1/4] pycbc plugin --- esigmapy/__init__.py | 10 ++++++++++ setup.py | 1 + 2 files changed, 11 insertions(+) diff --git a/esigmapy/__init__.py b/esigmapy/__init__.py index 55912df..cd69241 100644 --- a/esigmapy/__init__.py +++ b/esigmapy/__init__.py @@ -17,4 +17,14 @@ def get_version_information(): print("No version information file '.version' found") +# pycbc wrapper +import inspect +_params = inspect.signature(get_imr_esigma_waveform).parameters.keys() +def pycbc_esigma(**params): + pt = {p: params[p] for p in _params if p in params} + pt['f_ref'] = None + return get_imr_esigma_waveform(pt.pop('mass1'), pt.pop('mass2'), + pt.pop('f_lower'), pt.pop('delta_t'), + **pt, modes_to_use=[(2,2), (2,-2)]) + __version__ = get_version_information() diff --git a/setup.py b/setup.py index b93f8e5..dbf3fdd 100644 --- a/setup.py +++ b/setup.py @@ -109,6 +109,7 @@ def get_long_description(): author_email="prayush.kumar@gmail.com", packages=find_packages(), package_dir={NAME: NAME}, + entry_points = {"pycbc.waveform.td":"esigma = esigmapy:pycbc_esigma"}, package_data={}, install_requires=[ # 'lalsuite>=6.63', From 564e546e2ea3f57acdd8022ebf7cc156f2de9777 Mon Sep 17 00:00:00 2001 From: Alexander Harvey Nitz Date: Thu, 29 Jan 2026 15:08:20 -0500 Subject: [PATCH 2/4] allow option for no merger --- esigmapy/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/esigmapy/__init__.py b/esigmapy/__init__.py index cd69241..425fff2 100644 --- a/esigmapy/__init__.py +++ b/esigmapy/__init__.py @@ -23,7 +23,12 @@ def get_version_information(): def pycbc_esigma(**params): pt = {p: params[p] for p in _params if p in params} pt['f_ref'] = None - return get_imr_esigma_waveform(pt.pop('mass1'), pt.pop('mass2'), + + gen_wav = get_imr_esigma_waveform + if 'skip_merger' in params: + gen_wav = get_inspiral_esigma_waveform + + return gen_wav(pt.pop('mass1'), pt.pop('mass2'), pt.pop('f_lower'), pt.pop('delta_t'), **pt, modes_to_use=[(2,2), (2,-2)]) From af19861df668ed77856d6c48b9271777989253e4 Mon Sep 17 00:00:00 2001 From: Alexander Harvey Nitz Date: Wed, 18 Mar 2026 15:23:55 -0400 Subject: [PATCH 3/4] generalize the mode array --- esigmapy/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/esigmapy/__init__.py b/esigmapy/__init__.py index 425fff2..8c49691 100644 --- a/esigmapy/__init__.py +++ b/esigmapy/__init__.py @@ -21,6 +21,8 @@ def get_version_information(): import inspect _params = inspect.signature(get_imr_esigma_waveform).parameters.keys() def pycbc_esigma(**params): + from pycbc.waveform.waveform import parse_mode_array + pt = {p: params[p] for p in _params if p in params} pt['f_ref'] = None @@ -28,8 +30,10 @@ def pycbc_esigma(**params): if 'skip_merger' in params: gen_wav = get_inspiral_esigma_waveform + modes = params.pop('mode_array', [(2,2), (2,-2)]) + return gen_wav(pt.pop('mass1'), pt.pop('mass2'), - pt.pop('f_lower'), pt.pop('delta_t'), - **pt, modes_to_use=[(2,2), (2,-2)]) + pt.pop('f_lower'), pt.pop('delta_t'), + **pt, modes_to_use=parse_mode_array(modes)) __version__ = get_version_information() From 99bea55f0d9c63a65e41030160172f1acda61be8 Mon Sep 17 00:00:00 2001 From: Alexander Harvey Nitz Date: Wed, 18 Mar 2026 15:40:41 -0400 Subject: [PATCH 4/4] update --- esigmapy/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/esigmapy/__init__.py b/esigmapy/__init__.py index 8c49691..183475f 100644 --- a/esigmapy/__init__.py +++ b/esigmapy/__init__.py @@ -23,17 +23,19 @@ def get_version_information(): def pycbc_esigma(**params): from pycbc.waveform.waveform import parse_mode_array + # Pass all parameters the model suppports pt = {p: params[p] for p in _params if p in params} - pt['f_ref'] = None + pt['f_ref'] = pt['f_lower'] if pt['f_ref'] == 0 else pt['f_ref'] gen_wav = get_imr_esigma_waveform if 'skip_merger' in params: gen_wav = get_inspiral_esigma_waveform modes = params.pop('mode_array', [(2,2), (2,-2)]) + modes = parse_mode_array({'mode_array':modes})['mode_array'] return gen_wav(pt.pop('mass1'), pt.pop('mass2'), pt.pop('f_lower'), pt.pop('delta_t'), - **pt, modes_to_use=parse_mode_array(modes)) + **pt, modes_to_use=modes) __version__ = get_version_information()