Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fail responsibly when dealing with VCF files without headers #821

Open
armish opened this issue Aug 28, 2015 · 1 comment
Open

Fail responsibly when dealing with VCF files without headers #821

armish opened this issue Aug 28, 2015 · 1 comment

Comments

@armish
Copy link
Member

armish commented Aug 28, 2015

Turns out the reason behind issue #783 was a VCF file without any headers. This is how that particular VCF file looks like:

$ head -10 $SOMEPATH/work-Mutect-PT189-PT189_6_13-merged.SureSelect.vcf
chr1    69511   rs75062661  A   G   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:0,196:33:196:1.00   0:0,75:.:66:1.00
chr1    69557   .   C   T   .   REJECT  .   GT:AD:BQ:DP:FA  0/1:255,3:34:258:0.012  0:92,0:.:92:0.00
chr1    762273  rs3115849   G   A   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:209,195:34:404:0.483    0:24,12:.:34:0.333
chr1    762472  rs145493205 C   T   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:54,22:32:76:0.289   0:42,13:.:49:0.236
chr1    762485  rs148989274 C   A   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:54,15:33:69:0.217   0:40,18:.:50:0.310
chr1    876499  rs4372192   A   G   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:0,55:34:55:1.00 0:0,11:.:11:1.00
chr1    877715  rs6605066   C   G   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:0,20:31:20:1.00 0:0,4:.:4:1.00
chr1    877831  rs6672356   T   C   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:0,23:33:23:1.00 0:0,3:.:3:1.00
chr1    878314  rs142558220 G   C   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:134,88:36:222:0.396 0:4,12:.:16:0.750
chr1    880238  rs3748592   A   G   .   REJECT  DB  GT:AD:BQ:DP:FA  0/1:0,227:36:227:1.00   0:0,15:.:15:1.00

Submitting VCFs without any headers triggers an Internal Server Error, yet the Run is still created. See this example, which was a re-submission of the same VCF file that was causing #783:
http://cycledash.demeter.hpc.mssm.edu/runs/352/examine

and the error on the server side is as follows:

[ERROR] 2015-08-28 17:16:32,790 - cycledash
/home/cycledash/cycledash/venv/lib/python2.7/site-packages/flask_restful/__init__.py:299
Internal Error
Traceback (most recent call last):
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/flask_restful/__init__.py", line 462, in wrapper
    resp = resource(*args, **kwargs)
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/flask/views.py", line 84, in view
    return self.dispatch_request(*args, **kwargs)
  File "/home/cycledash/cycledash/cycledash/api/__init__.py", line 37, in dispatch_request
    return super(Resource, self).dispatch_request(*args, **kwargs)
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/flask_restful/__init__.py", line 572, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/home/cycledash/cycledash/cycledash/api/__init__.py", line 100, in wrapper
    return f(*args, **kwargs)
  File "/home/cycledash/cycledash/cycledash/api/__init__.py", line 74, in wrapper
    content = marshal(resp[0], schema, envelope=envelope)
  File "/home/cycledash/cycledash/cycledash/api/__init__.py", line 56, in marshal
    items = schema(data)
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/voluptuous.py", line 333, in __call__
    return self._compiled([], data)
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/voluptuous.py", line 631, in validate_dict
    return base_validate(path, iteritems(data), out)
  File "/home/cycledash/cycledash/venv/lib/python2.7/site-packages/voluptuous.py", line 467, in validate_mapping
    raise MultipleInvalid(errors)
MultipleInvalid: extra keys not allowed @ data['normal']

We should not allow these problematic files to be submitted in the first place.

@armish
Copy link
Member Author

armish commented Aug 29, 2015

also relevant: #490

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant