Guides › LIMS and data hygiene
Converting pre-2010 HLA allele names to current nomenclature
Before April 2010, HLA allele names had no colons: A*0101, DRB1*1501, Cw*0702. Most of them convert to current names by splitting the digits into two-digit fields and dropping the w from HLA-C. A minority do not, and those are exactly the names a mechanical converter turns into nonexistent alleles without warning.
The safe method is to resolve each old name through the IPD-IMGT/HLA name history, which follows the allele's permanent identifier rather than its spelling.
What changed in April 2010
The WHO Nomenclature Committee for Factors of the HLA System decided to introduce colons as field separators, and the change took effect in April 2010. The update page at hla.alleles.org lists four kinds of change.
1. Colons between fields. Leading zeros were kept and no new ones added:
| Before 2010 | After 2010 |
|---|---|
A*01010101 | A*01:01:01:01 |
A*260101 | A*26:01:01 |
A*3301 | A*33:01 |
B*0808N | B*08:08N |
2. Rollover families folded back. In 2002, when the A*02 and B*15 families passed 100 alleles, new ones were named in the families A*92 and B*95. In 2010 these moved back: A*9201 became A*02:101, B*9501 became B*15:101, and so on.
3. DPB1 renumbering. DPB1 alleles that had been squeezed into the old four-digit system were renamed: DPB1*0102 became DPB1*100:01, DPB1*0203 became DPB1*101:01.
4. HLA-C lost its w. Cw*0103 became C*01:03 and Cw*07020101 became C*07:02:01:01. The w stays in HLA-C antigen names, such as Cw7, to avoid confusion with complement factors and with the C1 and C2 KIR-ligand epitopes.
Where mechanical conversion fails
Splitting digits works for changes 1 and 4. It fails for 2 and 3, because the new name is not a respelling of the old one.
Checked against IPD-IMGT/HLA release 3.66.0:
| Old name | Digits split mechanically | Actual current name |
|---|---|---|
A*0101 | A*01:01 | A*01:01:01:01 (via A*01010101) |
Cw*0702 | C*07:02 | C*07:02:01:01 (via Cw*07020101) |
A*9201 | A*92:01, which does not exist | A*02:101:01 |
B*9501 | B*95:01, which does not exist | B*15:101 |
DPB1*0102 | DPB1*01:02, which does not exist | DPB1*100:01 |
The first two rows are fine at two-field level. The last three produce names that were never assigned. A converter that silently accepts A*92:01 as "a name it has not heard of" is reporting a fabricated allele.
Notice also that the old two-field A*0101 in an archived report and the current A*01:01 are the same protein-level name, but the name of the specific sequence it was first assigned to has grown to four fields. If you need the exact allele, not the protein group, the history is the only reliable source.
How to convert a legacy name safely
- Keep the original string exactly as reported, with its source and date. Never overwrite it.
- Classify the format: colon-less digits, a
Cwlocus label, or colon-style already. - Resolve the name through the IPD-IMGT/HLA name history (
Allelelist_history.txt), which records each allele's official name in every release, keyed by its permanent HLA ID. - If the history has no record of the name in any release, treat it as unknown. Do not guess by inserting colons.
- Take the allele's name in the current release from the same HLA ID, and check whether that name is still current, has gained or lost a suffix, or was deleted (
Deleted_alleles.txtgives the reason and any successor). - Store the original string, the current name and the release you converted against, side by side.
Step 3 is the one that matters. In the IPD-IMGT/HLA history, A*9201 was the name of allele HLA02538 from release 2.14.0 to 2.28.0. The same allele was A*02:101 from 3.00.0 to 3.02.0, and has been A*02:101:01 since 3.03.0. Following the identifier gets the right answer every time; following the spelling cannot.
Names keep changing after conversion
Converting once is not the end. An allele converted correctly in 2015 can have a different current name today:
- Fields get added. When a relative is found that differs only synonymously, the original allele gains a third field.
A*01:284becameA*01:284:01in release 3.66.0. - Suffixes change.
A*02:01:14becameA*02:01:14Qin March 2011 and went back toA*02:01:14in August 2026. - Names are reassigned between families.
DRB3*03:22:01was renamedDRB3*02:173:01in release 3.46.0.
That is why step 6 stores the release. A name is only "current" relative to one release. The releases guide covers how to track those moves.
Legacy names inside free text and GL Strings
Old reports rarely arrive as tidy lists. Names show up in PDF text, comments and multi-locus strings. Two practical points:
- Mixed eras in one string are common. A GL String like
A*0101+A*02:01mixes a pre-2010 and a post-2010 name. The HLA-Verify GL String validator rewrites the first toA*01:01and returns arenamed_allelewarning rather than failing the string. See the GL String guide. - The old Cw label also appears on colon-style names.
Cw*07:02is not a valid current name, but it is an unambiguous spelling ofC*07:02, and a converter should accept it and flag it rather than reject it.
Which HLA-Verify call to use
For pre-2010 names, use POST /v1/translate or GET /v1/allele/{name}/history. Both resolve through the HLA ID, so A*9201 comes back as A*02:101:01, B*9501 as B*15:101 and DPB1*0102 as DPB1*100:01.
POST /v1/normalize is built for current and near-current reporting shorthand (Cw*07:02, A*02:XX, G and P group names) and converts colon-less names mechanically. For the rollover and DPB1 cases above it returns UNRESOLVABLE with the flags deprecated_name and nonexistent_allele. That is a refusal, not a wrong answer, but it means translate is the right tool for archives that predate 2010.
Frequently asked questions
Is A*0101 the same as A*01:01?
At two-field level, yes: A*0101 is the pre-2010 spelling of A*01:01. The specific sequence first named A*0101 is now A*01:01:01:01.
What happened to HLA-A*92 and HLA-B*95?
They were rollover families created in 2002 when A*02 and B*15 ran out of two-digit numbers. In April 2010 they were renamed back into A*02 and B*15, starting at A*02:101 and B*15:101.
Why is it C*07:02 and not Cw*07:02?
The 2010 update removed the w from HLA-C allele names. It is kept only in HLA-C antigen names such as Cw7.
Can I convert old names with a regular expression?
Only for some of them. Inserting colons is correct for most names but wrong for the A*92, B*95 and renumbered DPB1 alleles, and it cannot tell you about later renames, suffix changes or deletions. Use the name history.
Sources
- https://hla.alleles.org/pages/nomenclature/nomenclature_update_april_2010/
- https://hla.alleles.org/pages/nomenclature/nomenclature_before_2010/
- https://github.com/ANHIG/IMGTHLA/blob/Latest/README.md
HLA-Verify is a research-and-evaluation tool for nomenclature and reference-release validation. It is not a medical device and this guide is not clinical advice. Send allele names, never patient identifiers.