Skip to content

Hotfix - #550

Merged
mikessh merged 4 commits into
masterfrom
hotfix
Jun 1, 2026
Merged

Hotfix#550
mikessh merged 4 commits into
masterfrom
hotfix

Conversation

@mikessh

@mikessh mikessh commented Jun 1, 2026

Copy link
Copy Markdown
Member

No description provided.

Copilot AI review requested due to automatic review settings June 1, 2026 02:05
@mikessh
mikessh merged commit d42c231 into master Jun 1, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR applies a “hotfix” to the VDJdb proofreading guidance and several chunk files, primarily around MHC-II field integrity and frequency handling.

Changes:

  • Extends skills/vdjdb-proofread/SKILL.md with additional proofreading/QC rules (MHC-II repair rules, quick-scan commands, and method.frequency guidance).
  • Fills missing mouse MHC-II mhc.b values in multiple chunk files by copying mhc.a.
  • Adjusts/normalizes select human MHC-II representations in specific datasets (including split handling for combined α/β in mhc.a in other changed chunks per the PR description).

Reviewed changes

Copilot reviewed 10 out of 14 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
skills/vdjdb-proofread/SKILL.md Adds/updates proofreading rules for method.frequency and MHC-II audits/repairs; includes new “gaps” documentation.
chunks/PMID_37325645.txt Fills missing mouse MHC-II mhc.b values (mhc.b = mhc.a).
chunks/PMID_31471352.txt Same mouse MHC-II mhc.b self-fill normalization.
chunks/PMID_30541895.txt Applies combined MHC-II α/β split and updates frequency values (per PR summary).
chunks/PMID_29568993.txt Small data hygiene fix (trailing/odd whitespace cleanup).
chunks/PMID_15889096.txt Fills missing MHC-II partner chain, but currently uses a likely swapped mhc.a/mhc.b mapping for HLA-DR.
chunks/PMID_12466894.txt Fills missing HLA-DR partner chain; one row needed correction to keep mhc.a/mhc.b consistent within the file.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

| 11 | HLA allele not in IPD-IMGT/HLA | Human `mhc.a/mhc.b` (starting with `HLA-`) not found in `proofreading/mhc_alleles.tsv.gz` | Query mhc_alleles.tsv.gz |
| 12 | Unconfirmed HLA allele | Allele in `proofreading/mhc_alleles.tsv.gz` with `confirmed = Unconfirmed` | Query mhc_alleles.tsv.gz |
| 13 | Combined MHC-II α/β in `mhc.a` | `mhc.a` contains a `/` (e.g., `HLA-DQA1*01:02/DQB1*06:02`) with `mhc.b` blank — the α-chain and β-chain are collapsed into one field | Split on `/`: `mhc.a` = part before slash (including `HLA-` prefix); `mhc.b` = `HLA-` + part after slash. Check: `re.search(r'^(HLA-\S+?)/([A-Z]\S+)$', mhc_a)` where `mhc_b == ''` |
| 14 | Percentage in `method.frequency` | `method.frequency` contains `%` instead of count/total (e.g., `36.1%` instead of `13/36`). Percentages are not a valid VDJdb frequency format. Particularly suspicious when the same percentage repeats across all clones for a given epitope (indicating it is a group-level statistic, not a per-clone frequency) | **Do not blindly convert to N/M** — the denominator is often unknown from the paper. Check: if the same value repeats for all clones of one epitope, it likely represents the frequency of that epitope-reactive fraction (e.g., % of tetramer-positive cells) and should be moved to `meta.subset.frequency`. If it is truly a per-clone repertoire frequency (e.g., from high-throughput sequencing), retain as a note in the extraction log and leave blank or convert if the count/total can be determined from the paper. |
| mhc.a → class inference | If `mhc.a` starts with `HLA-DR/DQ/DP/DO/DM`, class must be `MHCII` | Correct `mhc.class` |
| HLA allele in mhc_alleles.tsv.gz | Human `mhc.a/mhc.b` starting with `HLA-` should exist in `proofreading/mhc_alleles.tsv.gz` | Note if not found |
| **No blank MHC fields** (Gap #15) | `mhc.a` and `mhc.b` must both be non-blank when `mhc.class` is provided. | Flag every row with blank `mhc.a` or `mhc.b`; apply deterministic fixes first, then curate unresolved rows manually. |
| **Combined α/β in `mhc.a`** (Gap #13) | `mhc.a` matches `HLA-DXA*/DYB*...` or similar (contains `/`), `mhc.b` is blank — both chains are collapsed into `mhc.a`. Applies to HLA-DQ, HLA-DP, HLA-DR heterodimers. | Split on `/`: `mhc.a` = prefix before slash (e.g., `HLA-DQA1*01:02`); `mhc.b` = `HLA-` + suffix after slash (e.g., `HLA-DQB1*06:02`). Detection: `bool(re.match(r'^HLA-\S+/\S+$', mhc_a)) and mhc_b == ''` |
| # | Resolution date | Details |
|---|---|---|
| 13 | June 2026 | Combined HLA α/β collapses (e.g., `HLA-DQA1*01:02/DQB1*06:02`) detected in 628 rows across 4 files (PMID_30541895, PMID_33837283, PMID_35675811, small_datasets_2026-05-29). Split using regex `r'^(HLA-\S+?)/([A-Z]\S+)$'`: mhc.a = part before slash, mhc.b = `HLA-` + part after slash. **✅ FULLY RESOLVED** |
| 14 | In progress | Percentage-format frequencies (e.g., `36.1%`) identified in 36 files; flagged as likely group-level statistics when identical across all clones of one epitope. Not auto-fixed (requires editorial decision to move to `meta.subset.frequency` or blank). See `MHC_BLANK_RESOLUTION_REPORT.md` for details |
Comment thread chunks/PMID_12466894.txt
91 CASSGSPGQGAEYF TRBV6-5 TRBJ2-7 HomoSapiens HLA-DRA*01 HLA-DRB1*01 MHCII PKYVKQNTLKLAT HA InfluenzaA PMID:12466894 tetramer-sort 1/73 sanger CD4+ SL SL-33 PBMC HLA-DR1
92 CATSAGGAEPTDTQYF TRBV24-1 TRBJ2-3 HomoSapiens HLA-DRA*01 HLA-DRB1*01 MHCII PKYVKQNTLKLAT HA InfluenzaA PMID:12466894 tetramer-sort 1/73 sanger CD4+ SL SL-34 PBMC HLA-DR1
93 CASSWRGGIQGVAGELFF TRBV13 TRBJ2-2 HomoSapiens HLA-DRA*01 HLA-DRB1*01 MHCII PKYVKQNTLKLAT HA InfluenzaA PMID:12466894 tetramer-sort 2/73 sanger CD4+ SL SL-35 PBMC HLA-DR1
94 CASSWPEWEGELFF TRBV1 TRBJ2-2 HomoSapiens HLA-DRB1*01:01 HLA-DRA*01:01 MHCII PKYVKQNTLKLAT HA InfluenzaA PMID:12466894 tetramer-sort WL1-7
| `method.singlecell` | `yes` or blank | Any other value (e.g. `no`, `true`, `single-cell`) → blank or `yes` |
| `method.sequencing` | `sanger`, `amplicon-seq`, `rna-seq`, or blank | `illumina`, `nextseq`, `miseq` → `amplicon-seq` (those are platforms, not methods); `Single cell` → `rna-seq` + set `method.singlecell=yes`; `RNA-seq` → `rna-seq`; `amplicon` → `amplicon-seq` |
| `method.verification` | tokens from the README set, comma-separated | Software names (`mixcr`, `cellranger`) → blank; sort methods misplaced here (`tetramer-sort`, `multimer-sort`) → replace with stain form (`tetramer-stain`, `multimer-stain`); `antigen-coated-targets` → `antigen-loaded-targets`; plain text descriptions → blank |
| `method.frequency` | `N/M` (count/total, e.g. `1/56`) or blank | **Percentage format (`%`) is not valid**. A repeated identical `%` value across all clones for one epitope (e.g., `36.1%` on all NP-reactive rows) means it is a group-level figure (% of tetramer+ cells reactive to that epitope) — move to `meta.subset.frequency` and blank `method.frequency`. A varied `%` value per clone from a sequencing experiment (e.g., `2.40%`, `2.48%`) may be a per-clone repertoire fraction — note in extraction log; ideally convert to `N/M` using the paper's denominators, or blank if denominator is unknown. |
Comment thread chunks/PMID_15889096.txt
Comment on lines +2 to +4
1 CASSLATSGGGSDTQYF TRBV5-1*02 TRBJ2-3*01 HomoSapiens HLA-DRB1*04:01 HLA-DRA*01:01 MHCII GIVEQCCTSICSLYQ INS HomoSapiens PMID:15889096 antigen-loaded-targets
2 CASSPWTGIPDNSPLHF TRBV5-1*02 TRBJ1-6*01 HomoSapiens HLA-DRB1*04:01 HLA-DRA*01:01 MHCII GIVEQCCTSICSLYQ INS HomoSapiens PMID:15889096 antigen-loaded-targets
3 CASSLEVPFNSPLHF TRBV5-1*02 TRBJ1-6*01 HomoSapiens HLA-DRB1*04:01 HLA-DRA*01:01 MHCII GIVEQCCTSICSLYQ INS HomoSapiens PMID:15889096 antigen-loaded-targets
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