Skip to content

Commit c122d56

Browse files
committed
Add method for setting up notification parameters from message sent by PATo
1 parent f380299 commit c122d56

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ murfey = "murfey.client:run"
107107
"clem.register_align_and_merge_result" = "murfey.workflows.clem.register_align_and_merge_results:register_align_and_merge_result"
108108
"clem.register_lif_preprocessing_result" = "murfey.workflows.clem.register_preprocessing_results:register_lif_preprocessing_result"
109109
"clem.register_tiff_preprocessing_result" = "murfey.workflows.clem.register_preprocessing_results:register_tiff_preprocessing_result"
110+
"pato" = "murfey.workflows.notifications:notification_setup"
110111
"spa.flush_spa_preprocess" = "murfey.workflows.spa.flush_spa_preprocess:flush_spa_preprocess"
111112

112113
[tool.setuptools]
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
from typing import Dict, Tuple
2+
3+
from sqlmodel import Session, select
4+
5+
from murfey.util.db import NotificationParameter
6+
7+
8+
def notification_setup(
9+
message: dict, murfey_db: Session, num_instances_between_triggers: int = 500
10+
) -> bool:
11+
parameters: Dict[str, Tuple[float, float]] = {}
12+
for k in message.keys():
13+
parameter_name = ""
14+
if k.endswith(("Min", "Max")):
15+
parameter_name = k[:-3]
16+
else:
17+
continue
18+
if parameter_name in parameters.keys():
19+
continue
20+
parameters[parameter_name] = (
21+
message.get(f"{parameter_name}Min", 0),
22+
message.get(f"{parameter_name}Max", 10000),
23+
)
24+
dcgid = message["dcg"]
25+
existing_notification_parameters = murfey_db.exec(
26+
select(NotificationParameter).where(NotificationParameter.dcg_id == dcgid)
27+
).all()
28+
new_notification_parameters = []
29+
for k, v in parameters.items():
30+
for enp in existing_notification_parameters:
31+
if enp.name == k:
32+
enp.min_value = v[0]
33+
enp.max_value = v[1]
34+
break
35+
else:
36+
new_notification_parameters.append(
37+
NotificationParameter(
38+
dcg_id=dcgid,
39+
name=k,
40+
min_value=v[0],
41+
max_value=v[1],
42+
num_instances_since_triggered=num_instances_between_triggers,
43+
)
44+
)
45+
murfey_db.add(existing_notification_parameters + new_notification_parameters)
46+
murfey_db.commit()
47+
murfey_db.close()
48+
return True

0 commit comments

Comments
 (0)