openvar / variantValidator

Public repository for VariantValidator project
GNU Affero General Public License v3.0
67 stars 21 forks source link

Some descriptions failing that should validate #508

Closed Peter-J-Freeman closed 1 year ago

Peter-J-Freeman commented 1 year ago

Describe the bug GRCh37:12:112037477:G:GAAA

chr12:112037477G>GAAA

chr12:112037475GGG>GGGAAA

To Reproduce Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior A clear and concise description of what you expected to happen.

Screenshots If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

Smartphone (please complete the following information):

Additional context Add any other context about the problem here.

leicray commented 1 year ago

The variant description chr12:112037477G>A does validate and reveals that the variant lies in the 5' UTR of coding transcripts of the ATXN2 gene.

Using the GRCh37 HGVS-compliant description (NC_000012.11:g.112037477G>A) as a template, the variant description chr12:112037477G>GAAA can be re-written as NC_000012.11:g.112037478_112037479insAAA and this does validate without errors.

This suggests that the original version of the variant description (chr12:112037477G>GAAA) is not being correctly parsed prior to validation.

Peter-J-Freeman commented 1 year ago

Great analysis. Thanks @leicray

Peter-J-Freeman commented 1 year ago

Adding this variant as well variant = 'NM_002468.4:c.855_894delinsATCTG'

Traceback (most recent call last):
  File "/local/py3Repos/vv_hgvs/vvhgvs/parser.py", line 138, in rule_fxn
    return self._grammar(s).__getattr__(rule_name)()
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/parsley.py", line 98, in invokeRule
    raise err
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/parsley.py", line 85, in invokeRule
    ret, err = self._grammar.apply(name, *args)
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/ometa/runtime.py", line 462, in apply
    val, err = self._apply(r, ruleName, args)
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/ometa/runtime.py", line 495, in _apply
    [rule(), self.input])
  File "/pymeta_generated_code/pymeta_grammar__Grammar.py", line 38, in rule_hgvs_variant
    _G_or_13, lastError = self._or([_G_or_1, _G_or_3, _G_or_5, _G_or_7, _G_or_9, _G_or_11])
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/ometa/runtime.py", line 604, in _or
    raise joinErrors(errors)

During handling of the above exception (
NM_002468.5:c.*-36_*3delinsATCTG
               ^
Parse error at line 1, column 15: expected a digit. trail: [digit num def_c_pos c_pos def_c_interval c_interval c_posedit c_variant hgvs_variant]
), another exception occurred:
  File "/local/py3Repos/variantValidator/VariantValidator/modules/vvMixinCore.py", line 750, in validate
    toskip = mappers.transcripts_to_gene(my_variant, self, select_transcripts_dict_plus_version)
  File "/local/py3Repos/variantValidator/VariantValidator/modules/mappers.py", line 709, in transcripts_to_gene
    hgvs_updated = validator.hp.parse_hgvs_variant(hgvs_updated)
  File "/local/py3Repos/vv_hgvs/vvhgvs/parser.py", line 141, in rule_fxn
    s=s, exc=exc, reason=exc.formatReason()))

During handling of the above exception (NM_002468.5:c.*-36_*3delinsATCTG: char 15: expected a digit), another exception occurred:
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/local/VVweb/web/views.py", line 144, in validate
    output = tasks.validate(variant, genome, select_transcripts, validator=validator)
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/celery/local.py", line 191, in __call__
    return self._get_current_object()(*a, **kw)
  File "/local/miniconda3/envs/vvweb/lib/python3.6/site-packages/celery/app/task.py", line 391, in __call__
    return self.run(*args, **kwargs)
  File "/local/VVweb/web/tasks.py", line 20, in validate
    output = validator.validate(variant, genome, transcripts)
  File "/local/py3Repos/variantValidator/VariantValidator/modules/vvMixinCore.py", line 1442, in validate
    raise fn.VariantValidatorError('Validation error')