htslib icon indicating copy to clipboard operation
htslib copied to clipboard

htslib in pysam.fetch on S3 Bucket

Open StephanHolgerD opened this issue 1 year ago • 6 comments

Hi, I want to report a potentially problematic behaviour using pysam.fetch on AWS S3 bucket infrastructure. Using the following pseudo code on a Bam file in a S3 Bucket will create requests without a defined end range.

Code

with pysam.AlignmentFile(bamfile_S3,filepath_index=baifile_S3) as f:       for r in f.fetch(chrom,start,end):

Request

image

This kind of 'open' request results in high egress costs because aws logs the whole file after the start byte as delivered, even if you stop reading the data at the end of your fetch coordinates.

Compared to the requests from IGV on S3 data (low egress costs, only the exact byte range is logged)

Request

image

Initially I reported this here:

https://github.com/pysam-developers/pysam/issues/1215

StephanHolgerD avatar Sep 07 '23 12:09 StephanHolgerD

That looks unfortunate. We'll investigate and see if we can make these requests less open-ended. It may need a bit of rework to how our http requests work though so I can't be sure how long it will take.

daviesrob avatar Sep 12 '23 13:09 daviesrob

Thx, initially I used pysam.fetch which created the problematic open end requests. After some debugging I switched to pysam.view (more or less a wrapper around the samtools view cmd), this created clean range requests.

StephanHolgerD avatar Sep 12 '23 13:09 StephanHolgerD

I checked the requests from Samtools view, they are also open and will create inflated egress costs.

StephanHolgerD avatar Feb 14 '24 20:02 StephanHolgerD

Hi @StephanHolgerD , did pysam.view end up producing clean range requests? I wonder if you would be able to share some code for how you implemented it as I am looking for a similar functionality and haven't found an easy solution!

apena23 avatar May 21 '24 23:05 apena23