Skip to content

Milab 6738 vdj import chain match - #46

Merged
mchernys merged 6 commits into
mainfrom
MILAB-6738_vdj-import-chain-match
Aug 24, 2026
Merged

Milab 6738 vdj import chain match#46
mchernys merged 6 commits into
mainfrom
MILAB-6738_vdj-import-chain-match

Conversation

@mchernys

@mchernys mchernys commented Aug 10, 2026

Copy link
Copy Markdown
Contributor
  • 093dfc2 chain matching fix
  • eac8d71 pure pnpm run upgrade-sdk output, no hand-written changes
  • 7430875 fixes the upgrade forced (3 small ones)
  • f8dba62 changeset for the upgrade
  • b6a6ed5 empty-import warning + stats table fix

Greptile Summary

This PR upgrades the Platforma SDK and block structure, broadens V(D)J chain matching, and adds user-facing detection of samples left without clonotypes.

  • Makes Custom and ImmunoSeq locus matching case- and position-insensitive and makes QIAseq chain matching case-insensitive.
  • Adds an emptyChainSamples model output and warning banner for samples whose summed clonotype count is zero.
  • Allows the statistics table to render ready columns without waiting for missing column data.
  • Refreshes the package facade, build variants, CI configuration, and SDK dependencies.

Important touched terms

  • Receptor chain: A biological immunoglobulin or T-cell receptor chain such as IGHeavy, IGLight, TCRAlpha, or TCRBeta. Matching now normalizes case across the changed importers.
  • Locus: The chain-identifying token in a gene call, such as IGH, IGK, TRA, or TRB. Custom and ImmunoSeq now search for this token anywhere in the uppercased gene value.
  • Clonotype: A distinct immune-receptor sequence represented in imported data. The model now totals clonotype counts across imported chains to identify empty samples.
  • P-column: Platforma's typed column representation for result data. Statistics columns are now requested with dontWaitAllData, and only ready columns are passed to the table.
  • Block facade: The published TypeScript/JavaScript entry point exposing the block contract, data types, model, and pack pointer. It is regenerated under structure version 2.
  • Block pointer: Metadata locating the packaged block assets. The new facade exposes BlockPointer and ImportVdjBlockPointer using URLs derived from import.meta.url.
  • Build variant: A combination of channel, software selection, and artifact location used by the refreshed build system. Root scripts now provide development and release variants through PL_BUILD_* variables.

Confidence Score: 5/5

The PR appears safe to merge, with no concrete blocking or independently actionable non-blocking defects established in the changed code.

The chain normalization follows the documented cross-format behavior, the warning and table changes are coherently connected to statistics outputs, and no accepted failures remain.

Important Files Changed

Filename Overview
workflow/src/import-custom.tpl.tengo Makes Custom locus matching case- and position-insensitive while retaining separate IGK/IGL handling.
workflow/src/import-immunoSeq.tpl.tengo Replaces anchored, case-sensitive V-gene matching with normalized locus substring matching.
workflow/src/import-qiagen.tpl.tengo Uppercases the normalized QIAseq chain column before exact locus comparisons.
model/src/index.ts Adds partial-column table handling and computes zero-clonotype sample warnings from statistics p-columns.
ui/src/pages/MainPage.vue Displays a capped warning listing samples with no imported clonotypes.
block/src/index.ts Introduces the structure-v2 ESM facade, inferred block contract types, and URL-based block-pack pointer.
.github/workflows/build.yaml Moves CI to the refreshed runner and development/release build-script matrix.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[Imported VDJ rows] --> B[Normalize chain-defining value]
  B --> C[Filter rows by requested receptor chain]
  C --> D[Generate per-chain clonotypes and statistics]
  D --> E[Expose statistics as p-columns]
  E --> F[Sum clonotype counts per sample]
  F --> G{Total is zero?}
  G -- Yes --> H[Show empty-sample warning]
  G -- No --> I[Render statistics table]
Loading

Reviews (1): Last reviewed commit: "MILAB-6738: warn when chain filtering le..." | Re-trigger Greptile

Context used:

  • Context used - Terms is a types in codebase. Provide the list of ... (source)

Output of `pnpm run upgrade-sdk`. No handwritten changes in this commit.

Layout .structure v1 -> v2. Root build/build:dev scripts are replaced by
the PL_BUILD_* matrix, hence build.yaml's build-script-name 'build' ->
'build:dev-local'.
Column discovery now passes 'dontWaitAllData' so stats columns without
data are skipped instead of collapsing the request to 'undefined'.
@mchernys
mchernys added this pull request to the merge queue Aug 24, 2026
Merged via the queue into main with commit b33a46e Aug 24, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants