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

CRAM support #1120

Merged
merged 52 commits into from Jul 18, 2018

Conversation

Projects
None yet
3 participants
@rbuels
Copy link
Collaborator

rbuels commented Jul 14, 2018

Adds JBrowse/Store/SeqFeature/CRAM, which works the same as the BAM store. Uses @gmod/cram from npm for the heavy lifting. Also adds a basic selenium test for it, and Track->Open support for CRAM.

rbuels added some commits Jun 30, 2018

make prepare-refseqs --sizes, --gff-sizes, and --twobit preserve the …
…ref seq order, which is important for cram

@rbuels rbuels added this to the 1.15.0 milestone Jul 17, 2018

@rbuels

This comment has been minimized.

Copy link
Collaborator Author

rbuels commented Jul 17, 2018

Response to the comments:

  1. Yeah, the node min version is a little bit of a drag, but remember only people using -dev things need it.
  2. Most users should be using the SAM header, I think most implementations put that in there.
  3. Yeah, it's not lazy features right now. Doing real lazy features with CRAM is very hard, I have a lazy branch of gff-js that does it, but it ended up being slower because of all the state it was recording to enable being lazy!
  4. I'll have a look at renderAlignments
@ihh

This comment has been minimized.

Copy link
Member

ihh commented Jul 17, 2018

libhtsget might support lazy more easily

@cmdcolin

This comment has been minimized.

Copy link
Contributor

cmdcolin commented Jul 17, 2018

Looks like renderAlignments uses the feat.get('seq') data that BAM reads have. Dunno if that is possible to do in CRAM. It is actually using the mismatches data structure though instead of CIGAR/MD directly so my previous comment was mistaken

@cmdcolin

This comment has been minimized.

Copy link
Contributor

cmdcolin commented Jul 17, 2018

@ihh I could be mistaken about htsget but I think it is just a platform that delivers some binary pieces of CRAM or BAM, it doesn't necessarily have anything that assists converting that binary data into features? Or is libhtsget something that exists that does that?

I think from jbrowse point of view, we could make a htsget adapter for JBrowse, but the basic idea is that the response from htsget would just be binary BAM or CRAM and then that would be passed to our existing binary adapters (this press release sort of says, for example, that htsget obviates the need for index file format, which makes sense as it delivers the binary from a request, instead of querying the index for where to grab the binary data https://blog.dnanexus.com/2017-10-17-introducing-htsget-a-new-ga4gh-protocol-for-genomic-data-delivery/)

This image seems to help http://samtools.github.io/hts-specs/pub/htsget-ticket.png

rbuels and others added some commits Jul 17, 2018

@@ -233,7 +233,7 @@ return declare( null,
callback( response, null, {nocache: nocache } );
};

req.onreadystatechange = dojo.hitch( this, function() {
req.onreadystatechange = dojo.hitch( this, async function() {

This comment has been minimized.

@rbuels

rbuels Jul 17, 2018

Author Collaborator

i do not think that means what you think it means

This comment has been minimized.

@cmdcolin

cmdcolin Jul 17, 2018

Contributor

Woops meant to remove that

This comment has been minimized.

@cmdcolin

cmdcolin Jul 17, 2018

Contributor

Can you do that for me

This comment has been minimized.

@cmdcolin

cmdcolin Jul 17, 2018

Contributor

Nevermind I got it :)

cmdcolin and others added some commits Jul 17, 2018

@ihh

This comment has been minimized.

Copy link
Member

ihh commented Jul 17, 2018

Ok thanks - was not a very deeply considered comment - but yes that fits my understanding of htsget (it’s about piecewise delivery)

@rbuels rbuels force-pushed the cram branch from 22be8fa to 3a9fb46 Jul 17, 2018

@rbuels rbuels merged commit d4b95d5 into dev Jul 18, 2018

2 checks passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details
continuous-integration/travis-ci/push The Travis CI build passed
Details

@wafflebot wafflebot bot removed the in progress label Jul 18, 2018

@rbuels rbuels referenced this pull request Jul 18, 2018

Closed

CRAM support #546

@cmdcolin cmdcolin deleted the cram branch Aug 6, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.