diff --git a/mhcnames/__init__.py b/mhcnames/__init__.py index bb6416d..6f12062 100644 --- a/mhcnames/__init__.py +++ b/mhcnames/__init__.py @@ -7,7 +7,7 @@ ) from .allele_parse_error import AlleleParseError -__version__ = "0.4.4" +__version__ = "0.4.5" __all__ = [ "AlleleName", diff --git a/mhcnames/allele_name.py b/mhcnames/allele_name.py index 2fe5d2a..f7cd5a5 100644 --- a/mhcnames/allele_name.py +++ b/mhcnames/allele_name.py @@ -104,15 +104,15 @@ def parse_allele_name(name, species_prefix=None): if gene.isalpha(): # expand e.g. DRA -> DRA1, DQB -> DQB1 gene = gene + "1" + elif len(name) == 5: + # example: SLA-30101 + gene, name = name[0], name[1:] elif name[0].isalpha(): # if there are more separators to come, then assume the gene names # can have the form "DQA1" gene, name = parse_letters(name) elif name[0].isdigit(): gene, name = parse_numbers(name) - elif len(name) == 5: - # example: SLA-30101 - gene, name = name[0], name[1:] elif len(name) in (6, 7) and ("*" in name or "-" in name or ":" in name): # example: SLA-3*0101 or SLA-3*01:01 gene, name = parse_alphanum(name) @@ -127,7 +127,6 @@ def parse_allele_name(name, species_prefix=None): raise AlleleParseError("Malformed MHC type %s" % original) gene = gene.upper() - # skip initial separator sep, name = parse_separator(name) diff --git a/test/test_swine.py b/test/test_swine.py index d39ecf7..2dad229 100644 --- a/test/test_swine.py +++ b/test/test_swine.py @@ -1,3 +1,8 @@ +""" +Pig allele names from: + Analyzing the genetic characteristics and function of the swine + leukocyte antigen 2 gene in a Chinese inbreed of pigs +""" from mhcnames import ( parse_allele_name, @@ -5,7 +10,7 @@ ) from nose.tools import eq_ -def test_SLA_1_0101(): +def test_SLA_1_0101_with_seps(): eq_( parse_allele_name("SLA-1*01:01"), AlleleName("SLA", "1", "01", "01")) @@ -14,3 +19,20 @@ def test_SLA_1_HB01(): eq_( parse_allele_name("SLA-1-HB01"), AlleleName("SLA", "1", "HB", "01")) + +def test_SLA_1_0101_no_seps(): + eq_( + parse_allele_name("SLA-10101"), + AlleleName("SLA", "1", "01", "01")) + +def test_SLA_2_07we01(): + eq_(parse_allele_name("SLA-2*07we01"), + AlleleName("SLA", "2", "07we", "01")) + +def test_SLA_2_jh01(): + eq_(parse_allele_name("SLA-2*jh01"), + AlleleName("SLA", "2", "jh", "01")) + +def test_SLA_2_w09pt22(): + eq_(parse_allele_name("SLA-2*w09pt22"), + AlleleName("SLA", "2", "w09pt", "22"))