-
Notifications
You must be signed in to change notification settings - Fork 175
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
Add htsget 1.2.0, OpenAPI v3.0.2 spec #385
Conversation
@brainstorm thanks a couple of notes on quick review:
|
Re (1), that OpenAPI documentation says (IMHO the spec saying "32-bit unsigned int" here is over-constraining things. It's a text format so just "unsigned int" or "int, minimum 0" says the same thing as far as the protocol is concerned. However "32-bit" has been there since the original Google Docs document and never come up in discussion as far as I know.) Re (3), please raise this as a separate issue. Subsetting VCF fields via the Also
|
I think it would be good to avoid 32 bit limitations where not strictly needed. SAM does support positions longer than that, and we're planning to add support for them in HTSlib (see samtools/htslib#709). While not necessary for human sequencing, it is for quite a few other organisms. |
…ough. Change contact information to GA4GH
Thanks everyone for the prompt and valuable feedback, I just added the proposed changes and opened #386 as suggested. |
pub/htsget-openapi.yaml
Outdated
name: GA4GH | ||
email: security-notification@ga4gh.org | ||
license: | ||
name: GPLv3 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
“The license information for the exposed API.” Probably best to omit license
for the time being.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yea, various parties may be allergic to GPL in particular -- omitting it is probably easier than selecting an alternative? 😉
pub/htsget-openapi.yaml
Outdated
- "SAMPLE" | ||
- "FILTER" | ||
- "FORMAT" | ||
- "ALT" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably best to leave this out until #386 is resolved.
Sorry for the terrible belatedness of me adding a couple of comments here:
I would really like to help with these, but have bandwidth problems so would also welcome if somebody else is able to chew on them. Thanks again this is great! |
Thanks JMarshall Co-Authored-By: John Marshall <John.W.Marshall@glasgow.ac.uk>
Thanks everyone for the feedback and code review, I'm refactoring and while I'm at it, I'll introduce 1.2.0 spec details as well (class), WIP here: https://app.swaggerhub.com/apis/brainkod/htsget/1.2.0#/default/searchReadId And some open questions for OpenAPI (just in case somebody here knows the solution), here: |
Spec bumped to 1.2.0, thanks @mlin for the feedback and the heads up @ohofmann. I hope there's nothing else missing/broken or out of sync... looks valid/ok on SwaggerHub: https://app.swaggerhub.com/apis/brainkod/htsget/1.2.0 OT: Who is in charge of the CircleCI config on this repo? |
👋 |
The example of a
You can figure that out by looking at the relevant PR (#328). However it's immaterial — if this PR is rebased to after PR #328 landed, Circle CI will be happy. As this PR does not involve PDFs, it doesn't matter either way. |
Thanks @jmarshall, good catch, fixed now! /cc @ohofmann |
Agreed at the meeting that this is now ready for merging. Two remaining minor concerns:
servers:
url: https://virtserver.swaggerhub.com/brainkod/htsget/1.2.0 Can this be replaced with a non-specific URL like the one in refget-openapi.yaml?
@brainstorm: If you would like to address (1), I'll take care of rebasing and merging this. Thanks! |
Includes barebones authorizationCode Oauth2 flow, which should aid/inform code generation. Uses int64 with minimum 0, unsure if that is really an uint64 though.
Merged as 766424f. Thanks! |
* Update CRAM spec section on substitution matrix and codes. * Respond to review comments. * CRAM Slice and Container ref seq IDs must match (samtools#401) * Code review part 2. * Fix minor typo in the predecessors of BCF2 (samtools#427) * layed -> laid * Update MAINTAINERS.md (samtools#432) Proposal to add Rasko Leinonen as refget maintainer. * add jmmut to MAINTAINERS.md and move Cristina to "Past Members" * change order of maintainers * Clarify that INFO/END is used to form a CHROM:POS-END region (PR samtools#436) (samtools#436) INFO/END (when present) provides the size of the interval that the variant is located in, along with the CHROM and POS fields. This is also used when indexing VCF/BCF files, as can be gleaned from §6.3.1's description of BCF's rlen field. The implications of INFO/END have not previously been clear. In the absence of clear documentation, some SV tools have been using INFO/END fields for their own semi-related purposes (using INFO/CHR2:INFO/END as the other side's position in an interchromosomal rearrangement), leading to broken .csi indexes and region queries that don't work. Fixes samtools#425. * Allow C and Java native text spellings of NaN and infinities (samtools#409) C's printf doesn't output mixed case, while Java's Double.valueOf and Double.toString parse/output only `Infinity`, not `Inf`. Rather than requiring special-case code for both input and output in both languages, relax the VCF specification to allow NAN/INF/INFINITY case-insensitively. (Add "IEEE-754" to be specific and to improve the line breaks.) * Adding a note about <NON_REF> (samtools#380) * Update PDFs (CRAM and VCF additions; others cosmetic) CRAMv3 PRs samtools#401 and samtools#412. VCFv4.3 PRs samtools#380 (<NON_REF>), samtools#409 (infinity/NaN), and samtools#436 (INFO/END). All: Minor typo and whitespace formatting fixes. * Add htsget 1.2.0 OpenAPI v3.0.2 spec (PR samtools#385) Includes barebones authorizationCode Oauth2 flow, which should aid/inform code generation. Uses int64 with minimum 0, unsure if that is really an uint64 though. * Codify the existing policy of generally squashing PRs (PR samtools#444) * Permit AP_Delta in multi-ref slices. This means AP_delta can become negative. I have validated this decodes fine in both htsjdk and htslib. This is because AP is ITF8 and hence signed, like all other integers, so it would need explicit code to forbid this (which obviously isn't in the implementations). Hence the limitation is primarily one of an over-zealous specification. The impact of this is for position-sorted multi-ref slices AP can legally be stored efficiently. Also clarified fields in the container compression header when in multi-ref mode. Fixes samtools#431
As mentioned over twitter:
https://twitter.com/braincode/status/1097808553723670528
I've tried to comply with the official htsget spec, from the human-readable official spec:
https://samtools.github.io/hts-specs/htsget.html
But please let me know if there's something off. Things that concern me:
I could write in the OAuth aspects in it, but the htsget spec explicitly keeps it out since it's "beyond. Just went ahead and added it.the scope of this [htsget] specification". I feel inclined to add it regardless to ease code generation, thoughts?