Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • emfollow/gwcelery
  • leo-singer/gwcelery
  • deep.chatterjee/gwcelery
  • michael-coughlin/gwcelery
  • brandon.piotrzkowski/gwcelery
  • geoffrey.mo/gwcelery
  • vinaya.valsan/gwcelery
  • patrick.godwin/gwcelery
  • john-veitch/gwcelery
  • roberto.depietri/gwcelery
  • veronica.villa/gwcelery
  • teresa.slaven-blair/gwcelery
  • cody.messick/gwcelery
  • sarah.antier/gwcelery
  • shreya.anand/gwcelery
  • ron.tapia/gwcelery
  • andrew.toivonen/gwcelery
  • adam-zadrozny/gwcelery
  • duncanmmacleod/gwcelery
  • sushant.sharma-chaudhary/gwcelery
  • manleong.chan/gwcelery
  • satyanarayan.raypitambarmohapatra/gwcelery
  • yu-kuang.chu/gwcelery
  • jacob.golomb/gwcelery
  • daniele.monteleone/gwcelery
  • albertcheng.zhang/gwcelery
  • colm.talbot/gwcelery
  • gaurav.waratkar/gwcelery
  • yun-jing.huang/gwcelery
29 results
Show changes
Commits on Source (4)
......@@ -56,9 +56,6 @@ build:
- poetry check --lock
- poetry install -E test
needs: []
test/poetry/python3.10:
extends: .test-poetry
image: python:3.10
test/poetry/python3.11:
extends: .test-poetry
image: python:3.11
......@@ -78,9 +75,6 @@ test/poetry/python3.12:
- *install-redis
needs:
- build
test/wheel/python3.10:
extends: .test-wheel
image: python:3.10
test/wheel/python3.11:
extends: .test-wheel
image: python:3.11
......@@ -170,7 +164,7 @@ pages:
only:
- main
needs:
- test/poetry/python3.10
- test/poetry/python3.11
# Upload package to PyPI.
# Place your PyPI API token in the repository's GitLab CI secrets.
......
......@@ -4,6 +4,9 @@ Changelog
2.6.0 (unreleased)
------------------
- Add `HIGH_PROFILE` label to SSM preferred event and also log reason for
the label.
- Enabled SSM triggers and HasSSM source property
- Rework determining the preferred external event using a keyfunc method
......@@ -45,6 +48,7 @@ Changelog
- Don't download p-astro file for SSM alert canvas, since they are not required
by policy.
<<<<<<< HEAD
- Automatically rotate and compress log files to avoid running out of disk
space. Logs are rotated and compressed once per week and deleted after one
month.
......@@ -63,6 +67,9 @@ Changelog
- Plot external sky maps with contour lines and annotate with contained
areas; remove central RA/dec position.
- Drop support for Python 3.10, conforming to
`SPEC 0 — Minimum Supported Dependencies <https://scientific-python.org/specs/spec-0000/>`_.
2.5.2 "Cactus cat" (2024-11-18)
-------------------------------
......
......@@ -97,6 +97,20 @@ def create_label(label, graceid):
raise
@task(ignore_result=True, shared=False)
@catch_retryable_http_errors
def create_label_with_log(log_message, label, tags, superevent_id):
"""Create a label with a log for a superevent in GraceDB."""
try:
client.superevents[superevent_id].logs.create(
comment=log_message,
label=label,
tags=tags
)
except HTTPError as e:
raise
@task(ignore_result=True, shared=False)
@catch_retryable_http_errors
def remove_label(label, graceid):
......
......@@ -30,16 +30,29 @@ def check_high_profile(skymap, em_bright,
if far_list_sorted[0]["group"] == "Burst" and \
far_list_sorted[0]["search"] != "BBH":
gracedb.create_label.si(
'HIGH_PROFILE', superevent_id).delay()
return "Event with the lowest FAR is a Burst event. Applying label"
gracedb.create_label_with_log(
log_message='Superevent labeled '
'<span color="red">HIGH_PROFILE</span> '
'since event with lowest FAR is a Burst event.',
label='HIGH_PROFILE',
tags=['em_follow'],
superevent_id=superevent_id)
return
# annotation number condition
preferred_event = superevent['preferred_event_data']
if preferred_event["search"] == "SSM":
gracedb.create_label_with_log(
log_message='Superevent labeled '
'<span color="red">HIGH_PROFILE</span> '
'since preferred event is from SSM search.',
label='HIGH_PROFILE',
tags=['em_follow'],
superevent_id=superevent_id)
return
if preferred_event["group"] == "CBC":
em_bright_dict = json.loads(em_bright)
has_remnant = em_bright_dict['HasRemnant']
pastro_dict = json.loads(p_astro)
p_bns = pastro_dict['BNS']
p_terr = pastro_dict['Terrestrial']
......@@ -50,10 +63,41 @@ def check_high_profile(skymap, em_bright,
cl = 90
result = crossmatch(gw_skymap, contours=[cl / 100])
sky_area = result.contour_areas[0]
# This is commented out while we figure out the distance cutoff
# is_far_away = not (gw_skymap.meta.get('distmean', np.nan) < 2000)
if p_terr < 0.5:
if (p_bns > 0.1 or p_nsbh > 0.1 or has_remnant > 0.1 or sky_area < 100): # noqa: E501
gracedb.create_label.si(
'HIGH_PROFILE', superevent_id).delay()
return "Annotations condition satisfied. Applying label"
if p_bns > 0.1:
gracedb.create_label_with_log(
log_message='Superevent labeled '
'<span color="red">HIGH_PROFILE</span> since p_BNS > 10%.', # noqa: E501
label='HIGH_PROFILE',
tags=['em_follow'],
superevent_id=superevent_id)
return
elif p_nsbh > 0.1:
gracedb.create_label_with_log(
log_message='Superevent labeled '
'<span color="red">HIGH_PROFILE</span> since p_NSBH > 10%.', # noqa: E501
label='HIGH_PROFILE',
tags=['em_follow'],
superevent_id=superevent_id)
return
elif has_remnant > 0.1:
gracedb.create_label_with_log(
log_message='Superevent labeled '
'<span color="red">HIGH_PROFILE</span> since '
'p_HasRemnant > 10%.',
label='HIGH_PROFILE',
tags=['em_follow'],
superevent_id=superevent_id)
return
elif sky_area < 100:
gracedb.create_label_with_log(
log_message='Superevent labeled '
'<span color="red">HIGH_PROFILE</span> since area of '
'90% confidence level in the skymap is < 100 sq.deg.',
label='HIGH_PROFILE',
tags=['em_follow'],
superevent_id=superevent_id)
return
return "No conditions satisfied. Skipping"
No preview for this file type
......@@ -48,6 +48,15 @@ def test_create_label(mock_gracedb):
'label')
@patch('gwcelery.tasks.gracedb.client')
def test_create_label_with_log(mock_gracedb):
gracedb.create_label_with_log('log_message', 'label', ['tag'], 'graceid')
mock_gracedb.superevents['graceid'].logs.create.assert_called_once_with(
comment='log_message',
label='label',
tags=['tag'])
@patch('gwcelery.tasks.gracedb.client')
def test_remove_label(mock_gracedb):
gracedb.remove_label('label', 'graceid')
......
......@@ -16,11 +16,12 @@ skymap_large = read_binary(data, 'MS220722v_bayestar.multiorder.fits')
# 3. p_BNS check ---> True
# 4. p_NSBH check ---> True
# 5. skymap check ---> True
# 6. Simple BBH ---> False
# 7. Burst but low far ---> False
# 8. High p-terrestrial ---> False
# 9. Burst BBH low far ---> False
# 10. HIGH_PROFILE_applied-> False
# 6. SSM preferred ---> True
# 7. Simple BBH ---> False
# 8. Burst but low far ---> False
# 9. High p-terrestrial ---> False
# 10. Burst BBH low far ---> False
# 11. HIGH_PROFILE_applied-> False
def get_event(graceid):
......@@ -60,6 +61,15 @@ def get_event(graceid):
'far': 1e-10,
'gpstime': 1234,
}
elif graceid == 'G468':
event = {
'group': 'CBC',
'pipeline': 'gstlal',
'search': 'SSM',
'graceid': graceid,
'far': 1e-10,
'gpstime': 1234,
}
return event
......@@ -85,6 +95,10 @@ def get_event(graceid):
{'HasNS': 0.0, 'HasRemnant': 0.0, 'HasMassGap': 0.0},
{"BNS": 0.0, "NSBH": 0.0, "BBH": 0.9, "Terrestrial": 0.1},
skymap_small, True],
[{'labels': [], 'gw_events': ['G123', 'G468']},
{'HasNS': 0.0, 'HasSSM': 1.0, 'HasMassGap': 0.0},
{"BNS": 0.0, "NSBH": 0.0, "BBH": 0.9, "Terrestrial": 0.1},
skymap_large, True],
[{'labels': [], 'gw_events': ['G123']},
{'HasNS': 0.0, 'HasRemnant': 0.0, 'HasMassGap': 0.0},
{"BNS": 0.0, "NSBH": 0.0, "BBH": 1.0, "Terrestrial": 0.0},
......@@ -110,18 +124,20 @@ def test_high_profile(monkeypatch, superevent, embright,
pastro, skymap, result):
embright = json.dumps(embright)
pastro = json.dumps(pastro)
superevent.update({'superevent_id': 'S123',
'preferred_event_data': get_event('G123')})
mock_create_label = Mock()
monkeypatch.setattr('gwcelery.tasks.gracedb.create_label.run',
mock_create_label)
if 'G468' in superevent['gw_events']:
superevent.update({'superevent_id': 'S123',
'preferred_event_data': get_event('G468')})
else:
superevent.update({'superevent_id': 'S123',
'preferred_event_data': get_event('G123')})
mock_create_label_with_log = Mock()
monkeypatch.setattr('gwcelery.tasks.gracedb.create_label_with_log.run',
mock_create_label_with_log)
monkeypatch.setattr('gwcelery.tasks.gracedb.get_event.run',
get_event)
rrt_utils.check_high_profile(skymap, embright,
pastro, superevent)
if result is True:
mock_create_label.assert_called_once_with(
"HIGH_PROFILE", "S123"
)
mock_create_label_with_log.assert_called_once()
elif result is False:
mock_create_label.assert_not_called()
mock_create_label_with_log.assert_not_called()
# This file is automatically @generated by Poetry 1.8.4 and should not be changed by hand.
# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand.
[[package]]
name = "absl-py"
......@@ -1067,9 +1067,6 @@ files = [
{file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"},
]
[package.dependencies]
tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""}
[package.extras]
toml = ["tomli"]
......@@ -1325,20 +1322,6 @@ numpy = "*"
extras = ["h5py", "scipy"]
tests = ["coverage[toml]", "pytest", "pytest-cov"]
[[package]]
name = "exceptiongroup"
version = "1.2.0"
description = "Backport of PEP 654 (exception groups)"
optional = false
python-versions = ">=3.7"
files = [
{file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"},
{file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"},
]
[package.extras]
test = ["pytest (>=6)"]
[[package]]
name = "executing"
version = "2.0.1"
......@@ -2107,7 +2090,6 @@ files = [
[package.dependencies]
setuptools = ">=61.0"
tomli = {version = "*", markers = "python_version < \"3.11\""}
[package.extras]
scripts = ["click (>=6.0)"]
......@@ -2170,7 +2152,6 @@ files = [
[package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""}
decorator = "*"
exceptiongroup = {version = "*", markers = "python_version < \"3.11\""}
jedi = ">=0.16"
matplotlib-inline = "*"
pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
......@@ -3158,7 +3139,6 @@ files = [
[package.dependencies]
numpy = [
{version = ">=1.21.2", markers = "python_version >= \"3.10\" and python_version < \"3.11\""},
{version = ">=1.23.3", markers = "python_version >= \"3.11\" and python_version < \"3.12\""},
{version = ">=1.26.0", markers = "python_version >= \"3.12\""},
]
......@@ -3654,7 +3634,6 @@ files = [
[package.dependencies]
numpy = [
{version = ">=1.22.4", markers = "python_version < \"3.11\""},
{version = ">=1.23.2", markers = "python_version == \"3.11\""},
{version = ">=1.26.0", markers = "python_version >= \"3.12\""},
]
......@@ -3749,9 +3728,6 @@ files = [
{file = "pep517-0.13.1.tar.gz", hash = "sha256:1b2fa2ffd3938bb4beffe5d6146cbcb2bda996a5a4da9f31abffd8b24e07b317"},
]
[package.dependencies]
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
[[package]]
name = "pesummary"
version = "1.3.2"
......@@ -4312,11 +4288,9 @@ files = [
[package.dependencies]
colorama = {version = "*", markers = "sys_platform == \"win32\""}
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
iniconfig = "*"
packaging = "*"
pluggy = ">=1.4,<2.0"
tomli = {version = ">=1", markers = "python_version < \"3.11\""}
[package.extras]
testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"]
......@@ -4930,7 +4904,6 @@ files = [
[package.dependencies]
markdown-it-py = ">=2.2.0"
pygments = ">=2.13.0,<3.0.0"
typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.11\""}
[package.extras]
jupyter = ["ipywidgets (>=7.5.1,<9)"]
......@@ -5464,10 +5437,7 @@ files = [
]
[package.dependencies]
numpy = [
{version = ">=1.22.3,<2", markers = "python_version == \"3.10\" and platform_system == \"Windows\" and platform_python_implementation != \"PyPy\""},
{version = ">=1.18,<2", markers = "python_version != \"3.10\" or platform_system != \"Windows\" or platform_python_implementation == \"PyPy\""},
]
numpy = ">=1.18,<2"
packaging = ">=21.3"
pandas = ">=1.0,<2.1.0 || >2.1.0"
patsy = ">=0.5.4"
......@@ -5736,17 +5706,6 @@ files = [
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
[[package]]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
optional = false
python-versions = ">=3.7"
files = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
[[package]]
name = "toolz"
version = "0.12.1"
......@@ -6218,5 +6177,5 @@ test = ["fastavro", "pytest-celery", "pytest-cov", "pytest-flask", "pytest-socke
[metadata]
lock-version = "2.0"
python-versions = "^3.10,<3.13"
content-hash = "f7af2b834aafac0b699679ff34483277d128ff710b3770073e3a953535ee69d9"
python-versions = "^3.11,<3.13"
content-hash = "ab6da5bd2cc8068e8b9c57b9b6fb3f190ac59fd73a7c602fa09623cf94c0508f"
......@@ -17,7 +17,6 @@ classifiers = [
"License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
"Operating System :: POSIX",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Internet",
......@@ -51,7 +50,7 @@ include = [
"Bug Tracker" = "https://git.ligo.org/emfollow/gwcelery/issues"
[tool.poetry.dependencies]
python = "^3.10,<3.13"
python = "^3.11,<3.13"
adc-streaming = ">=2.3.0" # https://github.com/astronomy-commons/adc-streaming/pull/62
astropy = ">=4.3.1,!=5.3" # https://github.com/astropy/astropy/issues/11879, https://github.com/gwpy/gwpy/issues/1629
bilby = ">=2.2.2"
......@@ -85,6 +84,7 @@ ligo-segments = "*"
"ligo.skymap" = ">=2.1.2" # https://git.ligo.org/lscsoft/ligo.skymap/-/merge_requests/441
lscsoft-glue = "*"
lxml = "*"
matplotlib = "<3.10.0" # FIXME: remove when https://gitlab.com/gwpy/gwpy/-/issues/1815 is fixed
numba = ">=0.56" # Poetry update chooses an old version of numba and its deps that break the python3.9 and 3.10 build tests if this is not specified; dependence on numba comes from rift. Version chosen because it adds python 3.10 support. This requirement can be dropped here if RIFT adds it https://git.ligo.org/rapidpe-rift/rift/-/issues/24
numpy = "<2" # FIXME: TensorFlow (a dependency of GWSkyNet) does not support Numpy 2.x yet. Remove once https://git.ligo.org/computing/sccb/-/issues/1601#note_1120002 is resolved.
p_astro = ">=1.0.1" # https://git.ligo.org/lscsoft/p-astro/-/merge_requests/40
......