Skip to content

Commit a944b60

Browse files
committed
Revise manuscript, figures, and generator scripts
Update manuscript text and supporting assets: substantially rewrite metbit_manuscript.md (restructured abstract, implementation, results/discussion, and contact info), update the .docx, and remove a temporary docx file. Modify figure-generation scripts to change stage numbering and adjust layout (canvas height, title strip and badge sizing/positioning) for the workflow and graphical abstract; regenerate the associated PNG figures. Add a new sources/journals_research.md with manuscript review and journal recommendations.
1 parent 5d937c5 commit a944b60

8 files changed

Lines changed: 90 additions & 120 deletions

manuscript/figures/generate_graphical_abstract.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,18 +125,18 @@ def mini_heatmap(ax, cx, cy, w=1.0, h=0.6):
125125

126126
# ── stage definitions (x_left, width, colour, title, items) ─────────────────
127127
stages = [
128-
(0.30, 2.60, BLUE1, " Raw NMR Data",
128+
(0.30, 2.60, BLUE1, "1 Raw NMR Data",
129129
["Bruker FID files", "1H NMR spectra", "nmrglue I/O"]),
130-
(3.35, 2.60, BLUE2, " Preprocessing",
130+
(3.35, 2.60, BLUE2, "2 Preprocessing",
131131
["Digital filter removal", "Zero-fill + FFT", "Auto phase correction",
132132
"Baseline correction", "Calibration (TSP/DSS)"]),
133-
(6.40, 2.60, TEAL, " Normalization & Alignment",
133+
(6.40, 2.60, TEAL, "3 Normalization & Alignment",
134134
["PQN normalization", "SNV / MSC", "icoshift alignment",
135135
"Peak detection"]),
136-
(9.45, 2.60, PURPLE, " Statistical Modeling",
136+
(9.45, 2.60, PURPLE, "4 Statistical Modeling",
137137
["PCA (pareto / UV / MC)", "OPLS-DA + permutation test",
138138
"VIP scoring", "STOCSY analysis"]),
139-
(12.50, 3.00, ORANGE, " Outputs",
139+
(12.50, 3.00, ORANGE, "5 Outputs",
140140
["Interactive Plotly figures", "Dash web applications",
141141
"Biomarker candidates"]),
142142
]

manuscript/figures/generate_workflow.py

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
C_SHADE = "#D5D8DC"
2525

2626
# ── canvas ────────────────────────────────────────────────────────────────────
27-
W, H = 12, 26 # figure dimensions in data-units
27+
W, H = 12, 30 # Increased height to 30
2828
fig, ax = plt.subplots(figsize=(W * 0.72, H * 0.72), dpi=150)
2929
fig.patch.set_facecolor(BG)
3030
ax.set_facecolor(BG)
@@ -66,10 +66,10 @@ def arrow_h(x0, x1, y, lw=2.0):
6666
)
6767

6868

69-
TITLE_H = 0.52 # height of the coloured title strip
70-
ITEM_STEP = 0.48 # vertical spacing between bullet lines
71-
PAD_TOP = 0.20 # gap between title strip and first bullet
72-
PAD_BOT = 0.22 # extra space below last bullet
69+
TITLE_H = 0.90 # height of the coloured title strip (increased for centered badge)
70+
ITEM_STEP = 0.52 # vertical spacing between bullet lines
71+
PAD_TOP = 0.25 # gap between title strip and first bullet
72+
PAD_BOT = 0.25 # extra space below last bullet
7373

7474

7575
def node(x, y, w, color, title, items,
@@ -92,16 +92,16 @@ def node(x, y, w, color, title, items,
9292
rbox(x, y_bot + box_h - TITLE_H, w, TITLE_H, color, ec=WHITE,
9393
lw=0, r=0.26, zorder=4)
9494

95-
# title text
96-
ax.text(x + w / 2, y_bot + box_h - TITLE_H / 2,
95+
# title text - positioned at the top of the header area
96+
ax.text(x + w / 2, y_bot + box_h - 0.32,
9797
title, ha="center", va="center",
9898
fontsize=title_fs, fontweight="bold", color=WHITE, zorder=6)
9999

100-
# badge (dependency tag) inside title strip – right-aligned
100+
# badge (dependency tag) - centered horizontally and placed below title
101101
if badge:
102-
bw, bh = 1.30, 0.32
103-
bx = x + w - bw - 0.12
104-
by = y_bot + box_h - TITLE_H + (TITLE_H - bh) / 2
102+
bw, bh = 2.00, 0.32
103+
bx = x + (w - bw) / 2
104+
by = y_bot + box_h - 0.75
105105
rbox(bx, by, bw, bh, WHITE, ec=color, lw=1.0, r=0.12, zorder=7)
106106
ax.text(bx + bw / 2, by + bh / 2, badge,
107107
ha="center", va="center",
@@ -128,13 +128,13 @@ def node(x, y, w, color, title, items,
128128
fontsize=14, fontweight="bold", color=WHITE, zorder=5)
129129

130130
# ─────────────────────────────────────────────────────────────────────────────
131-
# DATA INPUT
131+
# 1 DATA INPUT
132132
# ─────────────────────────────────────────────────────────────────────────────
133133
y_cursor = TITLE_BOX_TOP - 0.85 - 0.30 # top of next box
134134

135135
y_bot1 = node(
136136
X0, y_cursor, WW, C_INPUT,
137-
" Data Input",
137+
"1 Data Input",
138138
[
139139
"Bruker FID directory tree · nmr_preprocessing class",
140140
"ng.bruker.read() → dic (acquisition params) + raw FID array",
@@ -146,11 +146,11 @@ def node(x, y, w, color, title, items,
146146
y_cursor = y_bot1 - 0.30
147147

148148
# ─────────────────────────────────────────────────────────────────────────────
149-
# SIGNAL PREPROCESSING
149+
# 2 SIGNAL PREPROCESSING
150150
# ─────────────────────────────────────────────────────────────────────────────
151151
y_bot2 = node(
152152
X0, y_cursor, WW, C_PRE,
153-
" Signal Preprocessing",
153+
"2 Signal Preprocessing",
154154
[
155155
"Digital filter removal · ng.bruker.remove_digital_filter()",
156156
"Zero-filling → Fourier Transform (FFT)",
@@ -165,11 +165,11 @@ def node(x, y, w, color, title, items,
165165
y_cursor = y_bot2 - 0.30
166166

167167
# ─────────────────────────────────────────────────────────────────────────────
168-
# SPECTRAL NORMALISATION
168+
# 3 SPECTRAL NORMALISATION
169169
# ─────────────────────────────────────────────────────────────────────────────
170170
y_bot3 = node(
171171
X0, y_cursor, WW, C_NORM,
172-
" Spectral Normalization",
172+
"3 Spectral Normalization",
173173
[
174174
"Probabilistic Quotient Normalization (PQN) · Normalization.pqn_normalization()",
175175
"Standard Normal Variate (SNV) · Normalization.snv_normalization()",
@@ -182,11 +182,11 @@ def node(x, y, w, color, title, items,
182182
y_cursor = y_bot3 - 0.30
183183

184184
# ─────────────────────────────────────────────────────────────────────────────
185-
# PEAK ALIGNMENT & DETECTION
185+
# 4 PEAK ALIGNMENT & DETECTION
186186
# ─────────────────────────────────────────────────────────────────────────────
187187
y_bot4 = node(
188188
X0, y_cursor, WW, C_ALIGN,
189-
" Peak Alignment & Detection",
189+
"4 Peak Alignment & Detection",
190190
[
191191
"icoshift_align() · interval-correlation-optimized shifting (icoshift)",
192192
"detect_multiplets() · singlet / doublet / triplet / quartet / multiplet",
@@ -220,10 +220,10 @@ def node(x, y, w, color, title, items,
220220

221221
y_fork_cursor = FORK_TOP - 0.28
222222

223-
# ── ⑤a STOCSY ────────────────────────────────────────────────────────────────
223+
# ── 5a STOCSY ────────────────────────────────────────────────────────────────
224224
y_botL1 = node(
225225
FX_L, y_fork_cursor, FW, C_STAT,
226-
"⑤0a STOCSY",
226+
"5a STOCSY",
227227
[
228228
"STOCSY() · Pearson corr. vs anchor ppm",
229229
"p-value threshold (default p < 0.0001)",
@@ -233,10 +233,10 @@ def node(x, y, w, color, title, items,
233233
title_fs=9.5, item_fs=8.0,
234234
)
235235

236-
# ── ⑤b MULTIVARIATE MODELING ─────────────────────────────────────────────────
236+
# ── 5b MULTIVARIATE MODELING ─────────────────────────────────────────────────
237237
y_botR1 = node(
238238
FX_R, y_fork_cursor, FW, C_STAT,
239-
"⑤0b Multivariate Modeling",
239+
"5b Multivariate Modeling",
240240
[
241241
"pca · pareto / UV / mean-center / min-max",
242242
"opls_da · OPLS-DA + permutation test",
@@ -305,11 +305,11 @@ def node(x, y, w, color, title, items,
305305
lw=2.2, mutation_scale=14), zorder=5)
306306

307307
# ─────────────────────────────────────────────────────────────────────────────
308-
# INTERACTIVE VISUALIZATION & OUTPUT
308+
# 6 INTERACTIVE VISUALIZATION & OUTPUT
309309
# ─────────────────────────────────────────────────────────────────────────────
310310
y_botViz = node(
311311
X0, MERGE_Y - 0.25, WW, C_VIZ,
312-
" Interactive Visualization & Output",
312+
"6 Interactive Visualization & Output",
313313
[
314314
"Plotly · scores plots / loadings / VIP / S-plot / trajectory / 3D PCA",
315315
"Dash apps · STOCSY_app · pickie_peak (browser-based)",
-1.45 KB
Loading
4.9 KB
Loading

manuscript/metbit_manuscript.docx

-9.77 KB
Binary file not shown.

0 commit comments

Comments
 (0)