Anthony-Nolan / Atlas

A free & open-source Donor Search Algorithm Service
GNU General Public License v3.0
9 stars 5 forks source link

Inconsistency in Predictive Match Categories #833

Closed zabeen closed 1 year ago

zabeen commented 1 year ago

Describe the bug Prediction match categories are assigned using decimal probability values and this seems to lead to some inconsistency in assigning the grade of Mismatch.

Example from CBU search run on UAT, match probabilities from same donor, locus A and B:

"A": { "MatchProbabilities": { "ZeroMismatchProbability": { "Decimal": 0.0000000032175224840974139724, "Percentage": 0 }, "OneMismatchProbability": { "Decimal": 0.9997048020482089823501507505, "Percentage": 100 }, "TwoMismatchProbability": { "Decimal": 0.0002951947342684898495425796, "Percentage": 0 } }, "MatchCategory": "Potential", "PositionalMatchCategories": { "Position1": "Potential", "Position2": "Potential" } }, "B": { "MatchProbabilities": { "ZeroMismatchProbability": { "Decimal": 0.0, "Percentage": 0 }, "OneMismatchProbability": { "Decimal": 0.9989001643539674846590959957, "Percentage": 100 }, "TwoMismatchProbability": { "Decimal": 0.0010998356460324716380113067, "Percentage": 0 } }, "MatchCategory": "Mismatch", "PositionalMatchCategories": { "Position1": "Mismatch", "Position2": "Potential" } } }

Expected behaviour Both locus A and B should have been assigned one Mismatch and one Potential grade, as they both had the same percentage probabilities, and the percentages are what will be displayed to end-users.

Atlas Build & Runtime Info (please complete the following information):

zabeen commented 1 year ago

Testing

"searchHlaData": {
    "a": {
      "position1": "01:XX",
      "position2": "01:XX"
    },
    "b": {
      "position1": "08:XX",
      "position2": "08:XX"
    },
    "c": {
      "position1": "07:XX",
      "position2": "07:XX"
    },
    "drb1": {
      "position1": "01:XX",
      "position2": "03:XX"
    }
"A": {
    "MatchProbabilities": {
        "ZeroMismatchProbability": {
            "Decimal": 0.0000000032175224840974139724,
            "Percentage": 0
        },
        "OneMismatchProbability": {
            "Decimal": 0.9997048020482089823501507505,
            "Percentage": 100
        },
        "TwoMismatchProbability": {
            "Decimal": 0.0002951947342684898495425796,
            "Percentage": 0
        }
    },
    "MatchCategory": "Mismatch",
    "PositionalMatchCategories": {
        "Position1": "Mismatch",
        "Position2": "Exact"
    }
},
"B": {
    "MatchProbabilities": {
        "ZeroMismatchProbability": {
            "Decimal": 0.0,
            "Percentage": 0
        },
        "OneMismatchProbability": {
            "Decimal": 0.9989001643539674846590959957,
            "Percentage": 100
        },
        "TwoMismatchProbability": {
            "Decimal": 0.0010998356460324716380113067,
            "Percentage": 0
        }
    },
    "MatchCategory": "Mismatch",
    "PositionalMatchCategories": {
        "Position1": "Mismatch",
        "Position2": "Exact"
    }
}

Testing Passed