ワンクリックで
hdl73-signal-isolation
Batch signal isolation for Phenocycler spleen channels using matched blank pairs and kintsugi.signal
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Batch signal isolation for Phenocycler spleen channels using matched blank pairs and kintsugi.signal
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Normalize long-form CODEX cycle folders to short form before notebooks run. Trigger: cyc001_reg001_*, hard-coded cyc paths breaking, staged CODEX raw data failing in Notebooks 1/2.
v5.6.0 joint multi-TF model: single model per symbol with broadcast 1Hour context replaces dual 15Min/1Hour models. Trigger: (1) replacing weighted-voting model aggregation, (2) adding broadcast features to vectorized env, (3) limited training data + worried about overfitting from doubling obs_dim, (4) backtest builder mismatch with newer feature counts.
DEPRECATED in v5.6.0 — see joint-multi-tf-v560 skill. Documents the v5.2.0 dual-model approach (train separate 15Min/1Hour models, combine via weighted voting). Still relevant for: (1) loading legacy v5.5.0 dual models, (2) understanding the historical aggregation layer, (3) resampling pattern via origin='start'.
Surface a shipped-but-undocumented CLI feature in user-facing docs. Trigger: user reports a known feature missing from README/readthedocs even though the CLI command exists.
KINTSUGI Snakefile + CLI changes that route SLURM jobs around accounts saturated by OTHER users on the same QOS pool. Trigger: QOSGrpMemLimit, jobs stuck pending despite available GPU slots in config, noisy neighbor on shared QOS, multi-user investment pool exhaustion, _build_cycle_assignment static-vs-live.
KINTSUGI SLURM batch processing: Maximize throughput using multi-account resource calculation with GPU+CPU pools per account. Trigger: SLURM job submission, batch processing, resource maximization, GPU+CPU concurrent, headless processing, resource pool.
| name | hdl73-signal-isolation |
| description | Batch signal isolation for Phenocycler spleen channels using matched blank pairs and kintsugi.signal |
| author | smith6jt |
| date | "2026-02-25T00:00:00.000Z" |
| Item | Details |
|---|---|
| Date | 2026-02-25 |
| Goal | Process all 28 signal channels from HDL73 spleen sample with autofluorescence subtraction using matched blank pairs |
| Environment | KINTSUGI conda env, kintsugi.signal module, Python 3.x, tifffile, numpy |
| Status | Success |
HDL73 spleen sample from HiperGator had 28 signal markers but only 5 had been manually signal-isolated (CD11c, CD20, CD3e, CD4, CD8). The remaining 23 markers needed autofluorescence subtraction before the OME-TIFF could be rebuilt with all channels. Existing param files covered 9 channels (including the 5 already done), so 19 channels needed auto-analysis.
The Phenocycler cycle layout in channelnames.txt encodes 3 positions per cycle (a/b/c). Blanks at cycles 1 and 13 provide matched autofluorescence references:
POSITION_A = ["CD20", "CD31", "CD34", "CD35", "Lyve1", "PanCK", "SMActin"]
POSITION_B = ["CD8", "CD15", "CD21", "CD44", "CD45RO", "CD5", "CollagenIV", "ECAD", "FoxP3", "Ki67", "Podoplanin"]
POSITION_C = ["CD3e", "CD4", "CD11c", "CD107a", "CD163", "CD1c", "CD45", "CD68", "HLADR", "Vimentin"]
blank_avg = ((blank1.astype(np.float32) + blank13.astype(np.float32)) / 2.0).astype(np.uint16)
from kintsugi.signal import analyze_for_subtraction, subtract_autofluorescence, compute_subtraction_quality
# If param file exists, parse blank_clip_factor and background_scale_factor
# If not, auto-analyze:
params = analyze_for_subtraction(signal, blank_avg, tissue_type="spleen", marker_name=name)
result = subtract_autofluorescence(signal, blank_avg,
blank_clip_factor=params["blank_clip_factor"],
blank_scale_factor=params["blank_scale_factor"])
quality = compute_subtraction_quality(signal, result, blank_avg)
python scripts/convert_to_ome_tiff.py FromHipergator/HDL73_SPL_Processed/ImageJ Images/HDL073_PC29.ome.tiff
| Attempt | Why it Failed | Lesson Learned |
|---|---|---|
conda run -n KINTSUGI python script.py | stdout completely buffered — appeared to hang with no output for 10+ minutes | Use direct python path: $HOME/miniconda3/envs/KINTSUGI/bin/python -u |
conda run --no-banner flag | Not supported in this conda version | Stick with direct python invocation |
Importing kintsugi.signal_isolation | Module doesn't exist | Correct path is kintsugi.signal (check kintsugi._SUBMODULE_MAPPING) |
| f-strings with nested braces in inline python | SyntaxError on older Python | Use .format() for complex formatting in -c one-liners |
CD11c: clip=7000, scale=1.4
CD15: clip=9000, scale=0.7
CD1c: clip=5000, scale=1.8 # failed marker
CD20: clip=7000, scale=0.2
CD21: clip=3000, scale=1.6
CD3e: clip=12000, scale=1.9 # param file also contains ImageJ macros
CD4: clip=7000, scale=2.0
CD5: clip=10000, scale=1.4 # failed marker
CD8: clip=8000, scale=1.5
position_a: 14526 # highest autofluorescence
position_b: 6708
position_c: 4341 # lowest autofluorescence
blank_clip_factor and background_scale_factoranalyze_for_subtraction() with tissue_type="spleen" works well for most channels but PanCK, Podoplanin, SMActin got low signal preservation (<0.3) — may need manual parameter tuningFailed_markers.txt — processed anyway but results should be visually validatedscripts/process_hdl73_channels.py — the processing scriptscripts/convert_to_ome_tiff.py — OME-TIFF builderFromHipergator/HDL73_SPL_meta/channelnames.txt — cycle layout sourceFromHipergator/HDL73_SPL_Processed/Processing_parameters/ — existing param files