Skip to content

Commit fb1442b

Browse files
authored
Fix/dynamic by bank tab (#26)
* fix: Dynamic by bank tab * remove conda from docker image * update actions * publish action only
1 parent f9df6c7 commit fb1442b

File tree

4 files changed

+78
-51
lines changed

4 files changed

+78
-51
lines changed

.github/workflows/publish.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
name: Publish Services to GHCR
22

33
on:
4-
workflow_run:
5-
workflows: [test]
6-
types:
7-
- completed
4+
push:
5+
tags:
6+
- "**"
7+
workflow_dispatch:
8+
89

910
jobs:
10-
build:
11+
publish:
1112
runs-on: ubuntu-latest
1213
env:
1314
DASHBOARD_IMAGE_NAME: intersect-dashboard
1415
DASHBOARD_SERVICE_IMAGE_NAME: intersect-service
1516
STORAGE_SERVICE_IMAGE_NAME: intersect-storage
1617

17-
if: ${{ github.event.workflow_run.conclusion == 'success' }}
1818
steps:
1919
- name: Checkout repository
2020
uses: actions/checkout@v4
@@ -52,11 +52,14 @@ jobs:
5252
- name: Push Dashboard Docker image to GHCR
5353
run: |
5454
docker push ghcr.io/${{ github.repository_owner }}/${{env.DASHBOARD_IMAGE_NAME}}:latest
55+
docker push ghcr.io/${{ github.repository_owner }}/${{env.DASHBOARD_IMAGE_NAME}}:${{github.sha}}
5556
5657
- name: Push Dashboard Service Docker image to GHCR
5758
run: |
5859
docker push ghcr.io/${{ github.repository_owner }}/${{env.DASHBOARD_SERVICE_IMAGE_NAME}}:latest
60+
docker push ghcr.io/${{ github.repository_owner }}/${{env.DASHBOARD_SERVICE_IMAGE_NAME}}:${{github.sha}}
5961
6062
- name: Push Storage Service Docker image to GHCR
6163
run: |
6264
docker push ghcr.io/${{ github.repository_owner }}/${{env.STORAGE_SERVICE_IMAGE_NAME}}:latest
65+
docker push ghcr.io/${{ github.repository_owner }}/${{env.STORAGE_SERVICE_IMAGE_NAME}}:${{github.sha}}

.github/workflows/test.yml

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,48 @@ jobs:
1515
- name: Checkout repository
1616
uses: actions/checkout@v4
1717

18-
- name: Set up Miniconda
19-
uses: conda-incubator/setup-miniconda@v2
18+
- name: Set up Python
19+
uses: actions/setup-python@v5
2020
with:
21-
conda-version: "24.11.2"
22-
auto-activate-base: false
21+
python-version: "3.10"
2322

2423
- name: Install dependencies
2524
run: |
26-
conda env create -f config/environment.yaml
27-
conda run --no-capture-output -n espd_mantid pip install pytest
25+
pip install pyyaml numpy plotly==6.0.0 panel==1.6.0 pytest
2826
2927
- name: Run tests
3028
run: |
31-
conda run --no-capture-output -n espd_mantid python -m pytest
29+
pytest
30+
build:
31+
runs-on: ubuntu-latest
32+
env:
33+
DASHBOARD_IMAGE_NAME: intersect-dashboard
34+
DASHBOARD_SERVICE_IMAGE_NAME: intersect-service
35+
STORAGE_SERVICE_IMAGE_NAME: intersect-storage
36+
37+
steps:
38+
- name: Checkout repository
39+
uses: actions/checkout@v4
40+
41+
- name: Set up Docker Buildx
42+
uses: docker/setup-buildx-action@v2
43+
44+
- name: Cache Docker layers
45+
uses: actions/cache@v4
46+
with:
47+
path: /tmp/.buildx-cache
48+
key: ${{ runner.os }}-docker-${{ github.sha }}
49+
restore-keys: |
50+
${{ runner.os }}-docker-
51+
52+
- name: Build Dashboard Docker image
53+
run: |
54+
docker build -f Dockerfile.dashboard -t ghcr.io/${{ github.repository_owner }}/${{env.DASHBOARD_IMAGE_NAME}}:latest .
55+
56+
- name: Build Dashboard Service Docker image
57+
run: |
58+
docker build -f Dockerfile.dashboard_service -t ghcr.io/${{ github.repository_owner }}/${{env.DASHBOARD_SERVICE_IMAGE_NAME}}:latest .
59+
60+
- name: Build Storage Service Docker image
61+
run: |
62+
docker build -f Dockerfile.storage_service -t ghcr.io/${{ github.repository_owner }}/${{env.STORAGE_SERVICE_IMAGE_NAME}}:latest .

Dockerfile.dashboard

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,7 @@
1-
# build the conda environment and file structure
2-
FROM continuumio/miniconda3:latest AS build
3-
4-
RUN apt-get update && apt-get install -y \
5-
wget \
6-
&& rm -rf /var/lib/apt/lists/*
7-
8-
COPY ./config/environment.yaml ./environment.yaml
9-
10-
RUN conda env create -f ./environment.yaml && \
11-
conda clean -a -y && \
12-
rm -rf /opt/conda/pkgs/* /root/.cache/* /var/lib/apt/lists/*
13-
141
# python slim image
152
FROM python:3.10-slim
163

17-
ENV PATH=/opt/conda/bin:$PATH
18-
19-
COPY --from=build /opt/conda /opt/conda
4+
RUN pip install pyyaml numpy plotly==6.0.0 panel==1.6.0
205
COPY ./config/config_dashboard.yaml /app/config_dashboard_default.yaml
216

227
WORKDIR /usr/src/dashboard
@@ -28,4 +13,4 @@ EXPOSE 10042
2813

2914
ENV BOKEH_ALLOW_WS_ORIGIN="*"
3015

31-
CMD ["conda", "run", "--no-capture-output", "-n", "espd_mantid", "python", "-m", "panel", "serve", "dashboard.py", "--address", "0.0.0.0", "--allow-websocket-origin", "*", "--port", "10042"]
16+
CMD ["python", "-m", "panel", "serve", "dashboard.py", "--address", "0.0.0.0", "--allow-websocket-origin", "*", "--port", "10042"]

services/dashboard.py

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,17 @@ def __init__(self):
5555
data=[],
5656
layout=go.Layout(
5757
title=dict(text="Bragg Data", font=dict(size=22, weight="bold")),
58-
xaxis=dict(title="d-Spacing"),
59-
yaxis=dict(title="Intensity"),
58+
xaxis=dict(title=dict(text="d-Spacing", font=dict(size=16)), tickfont=dict(size=14)),
59+
yaxis=dict(title=dict(text="Intensity", font=dict(size=16)), tickfont=dict(size=14)),
6060
),
6161
)
6262
self.bragg_data_by_bank_dict = [
6363
dict(
6464
data=[],
6565
layout=go.Layout(
6666
title=dict(text=f"Bank {i+1}", font=dict(size=22, weight="bold")),
67-
xaxis=dict(title="d-Spacing"),
68-
yaxis=dict(title="Intensity"),
67+
xaxis=dict(title=dict(text="d-Spacing", font=dict(size=16)), tickfont=dict(size=14)),
68+
yaxis=dict(title=dict(text="Intensity", font=dict(size=16)), tickfont=dict(size=14)),
6969
),
7070
)
7171
for i in range(MAX_BANKS)
@@ -82,8 +82,9 @@ def __init__(self):
8282
],
8383
layout=go.Layout(
8484
title=dict(text="Transition Plot", font=dict(size=22, weight="bold")),
85-
xaxis=dict(title="Temperature (K)"),
86-
yaxis=dict(title="d-Spacing"),
85+
xaxis=dict(title=dict(text="Temperature (K)", font=dict(size=16)), tickfont=dict(size=14)),
86+
yaxis=dict(title=dict(text="d-Spacing", font=dict(size=16)), tickfont=dict(size=14)),
87+
legend=dict(font=dict(size=16))
8788
),
8889
)
8990
self.stateful_plot_data_dict = dict(
@@ -92,8 +93,9 @@ def __init__(self):
9293
title=dict(
9394
text="Bragg Data Stateful Plot", font=dict(size=22, weight="bold")
9495
),
95-
xaxis=dict(title="d-Spacing"),
96-
yaxis=dict(title="Intensity"),
96+
xaxis=dict(title=dict(text="d-Spacing", font=dict(size=16)), tickfont=dict(size=14)),
97+
yaxis=dict(title=dict(text="Intensity", font=dict(size=16)), tickfont=dict(size=14)),
98+
9799
),
98100
)
99101

@@ -102,9 +104,8 @@ def __init__(self):
102104
self.bragg_data_dict,
103105
sizing_mode="stretch_both",
104106
)
105-
self.bragg_data_by_bank_plots: List[pn.pane.Plotly] = [
106-
pn.pane.Plotly(self.bragg_data_by_bank_dict[i]) for i in range(MAX_BANKS)
107-
]
107+
self.bragg_data_by_bank_plots: List[pn.pane.Plotly] = []
108+
108109
self.transition_plot = pn.pane.Plotly(
109110
self.transition_data_dict, sizing_mode="stretch_both"
110111
)
@@ -113,6 +114,10 @@ def __init__(self):
113114
self.stateful_plot_data_dict, sizing_mode="stretch_both"
114115
)
115116

117+
self.by_bank_tab = pn.Column(
118+
pn.pane.Markdown("<h1>By Bank</h1>"),
119+
pn.GridBox(*self.bragg_data_by_bank_plots, ncols=3))
120+
116121
self.select_bragg_file = pn.widgets.AutocompleteInput(
117122
name="Bragg File Timestamp",
118123
restrict=True,
@@ -271,6 +276,8 @@ def _render_bragg_plot(self):
271276
"""
272277

273278
traces, self.maxX, self.maxY = [], 0.0, 0.0
279+
self.bragg_data_by_bank_plots.clear()
280+
274281
for wksp_index, arr in self.bragg_data.items():
275282
scatter_line = go.Scatter(
276283
x=arr[0],
@@ -285,12 +292,18 @@ def _render_bragg_plot(self):
285292
self.maxY = max(self.maxY, np.max(arr[1]))
286293

287294
# patching individual bank plot
288-
self.bragg_data_by_bank_dict[wksp_index-1]["data"] = scatter_line
289-
self.bragg_data_by_bank_plots[wksp_index-1].object = self.bragg_data_by_bank_dict[
290-
wksp_index-1
291-
]
295+
self.bragg_data_by_bank_plots.append(
296+
pn.pane.Plotly(dict(
297+
data=scatter_line,
298+
layout=go.Layout(
299+
title=dict(text=f"Bank {wksp_index}", font=dict(size=22, weight="bold")),
300+
xaxis=dict(title="d-Spacing"),
301+
yaxis=dict(title="Intensity"))
302+
)))
303+
292304
traces.append(scatter_line)
293305

306+
self.by_bank_tab[1] = pn.GridBox(*self.bragg_data_by_bank_plots, ncols=3)
294307
# setting slider limits
295308
self.xlim_slider.start = self.minX
296309
self.xlim_slider.end = self.xlim_slider.value = self.maxX
@@ -523,11 +536,6 @@ def App() -> MaterialTemplate:
523536
app_state.bragg_data_plot,
524537
)
525538

526-
by_bank_tab = pn.Column(
527-
pn.pane.Markdown("<h1>By Bank</h1>"),
528-
pn.GridBox(*app_state.bragg_data_by_bank_plots, ncols=3),
529-
)
530-
531539
transition_plot_tab = pn.Column(
532540
pn.Row(app_state.all_banks_header_md, app_state.andie_header_md),
533541
app_state.transition_plot,
@@ -541,7 +549,7 @@ def App() -> MaterialTemplate:
541549

542550
main = pn.Tabs(
543551
("Bragg Data", bragg_data_tab),
544-
("By Bank", by_bank_tab),
552+
("By Bank", app_state.by_bank_tab),
545553
("Transition Plot", transition_plot_tab),
546554
("Timestamp", stateful_plots_tab),
547555
("Information", information_tab),

0 commit comments

Comments
 (0)