generating pileup with max depth greater than 8000?
My question: How can I generate a pileup with an output of more than 8000 hits per base? I was generating pileups using the SAM tools --> Generate pileup and do not see an option to change the settings for output. In mpileup there is a variable that looks correct, -D (Output per-sample read depth) , but I cannot figure out how to adjust it. I checked the box, Output per-sample read depth, under the advanced settings but the log file generated still says the max depth was 8000. The pileup files I generated look great but I would like to know what the true read depth is at the 8000 hit plateaus. Any help appreciated. I'm a little out of my depth here. -- Lauren M. Oldfield Hatfull Laboratory Dept. of Biological Sciences University of Pittsburgh 376 Crawford Hall 4249 Fifth Ave Pittsburgh, PA 15260 412-624-6976
On Wed, Sep 25, 2013 at 7:27 PM, Lauren Oldfield <lmo14@pitt.edu> wrote:
My question: How can I generate a pileup with an output of more than 8000 hits per base? I was generating pileups using the SAM tools --> Generate pileup and do not see an option to change the settings for output. In mpileup there is a variable that looks correct, -D (Output per-sample read depth) , but I cannot figure out how to adjust it. I checked the box, Output per-sample read depth, under the advanced settings but the log file generated still says the max depth was 8000.
The pileup files I generated look great but I would like to know what the true read depth is at the 8000 hit plateaus.
Hi Lauren, Unfortunately this is a samtools design choice, 8000 is the coverage limit hard coded in the source code itself (see files bam_pileup.c and bam_plcmd.c), so at the very minimum it would mean manually editing the samtools source and recompiling samtools. It would be best to ask about this on the samtools-help mailing list (CC'd), as it may be more complicated than just editing a few lines of the C code. For the samtools folk - could this magic limit of 8000 be done via a #define to make it clearer this is a special constant, and give people just one place to change the code?
Any help appreciated. I'm a little out of my depth here.
Ha ha, good pun. Peter
Hi Lauren, You could try to apply the following patch which sets the limit from 8.000 to 1.000.000: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=671524 Index: bam2depth.c =================================================================== --- bam2depth.c (revision 995) +++ bam2depth.c (working copy) @@ -80,6 +80,7 @@ // the core multi-pileup loop mplp = bam_mplp_init(n, read_bam, (void**)data); // initialization + bam_mplp_set_maxcnt(mplp,1000000); // set maxdepth to 1M n_plp = calloc(n, sizeof(int)); // n_plp[i] is the number of covering reads from the i-th BAM plp = calloc(n, sizeof(void*)); // plp[i] points to the array of covering reads (internal in mplp) while (bam_mplp_auto(mplp, &tid, &pos, n_plp, plp) > 0) { // come to the next covered position Best -Dominique On Thu, Sep 26, 2013 at 6:14 AM, Peter Cock <p.j.a.cock@googlemail.com>wrote:
On Wed, Sep 25, 2013 at 7:27 PM, Lauren Oldfield <lmo14@pitt.edu> wrote:
My question: How can I generate a pileup with an output of more than 8000 hits per base? I was generating pileups using the SAM tools --> Generate pileup and do not see an option to change the settings for output. In mpileup there is a variable that looks correct, -D (Output per-sample read depth) , but I cannot figure out how to adjust it. I checked the box, Output per-sample read depth, under the advanced settings but the log file generated still says the max depth was 8000.
The pileup files I generated look great but I would like to know what the true read depth is at the 8000 hit plateaus.
Hi Lauren,
Unfortunately this is a samtools design choice, 8000 is the coverage limit hard coded in the source code itself (see files bam_pileup.c and bam_plcmd.c), so at the very minimum it would mean manually editing the samtools source and recompiling samtools.
It would be best to ask about this on the samtools-help mailing list (CC'd), as it may be more complicated than just editing a few lines of the C code.
For the samtools folk - could this magic limit of 8000 be done via a #define to make it clearer this is a special constant, and give people just one place to change the code?
Any help appreciated. I'm a little out of my depth here.
Ha ha, good pun.
Peter
------------------------------------------------------------------------------ October Webinars: Code for Performance Free Intel webinars can help you accelerate application performance. Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from the latest Intel processors and coprocessors. See abstracts and register > http://pubads.g.doubleclick.net/gampad/clk?id=60133471&iu=/4140/ostg.clktrk _______________________________________________ Samtools-help mailing list Samtools-help@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/samtools-help
participants (3)
-
Dominique Belhachemi
-
Lauren Oldfield
-
Peter Cock