Originally posted by sdm
View Post
Unconfigured Ad
Collapse
X
-
You didn't miss anything, bowtie1 doesn't deal well with those (or whenever the start/end coordinates of one reads are found completely within another). I believe that functions normally in bowtie2. Alternatively, trim_galore has an option to get around this in your read-trimming step.
-
-
thanks for your quick reply ! Apparently, can't use bowtie1 then for paired-end alignment.Originally posted by dpryan View PostYou didn't miss anything, bowtie1 doesn't deal well with those (or whenever the start/end coordinates of one reads are found completely within another). I believe that functions normally in bowtie2. Alternatively, trim_galore has an option to get around this in your read-trimming step.
Comment
-
-
If this sort of thing is common in your library, then it'd be best not to (unless you use the trim_galore trick that I mentioned). I expect for most libraries this is a rare enough occurrence that bowtie1 works fine (I don't actually use bowtie1 these days, so I can't say I've checked).Originally posted by sdm View Postthanks for your quick reply ! Apparently, can't use bowtie1 then for paired-end alignment.
Comment
-
-
bowtie2
Hi I am using the latest builds of bowtie 1 and 2 with 64 bit support..
But they are still dying with the error:
Reading reference sizes
Error: Reference sequence has more than 2^32-1 characters! Please divide the
reference into batches or chunks of about 3.6 billion characters or less each
64-bit
Built on do-dmxp-mac.win.ad.jhu.edu
Tue Feb 26 13:33:50 EST 2013
Compiler: gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)
Options: -O3 -m64 -msse2 -funroll-loops -g3
Sizeof {int, long, long long, void*, size_t, off_t}: {4, 8, 8, 8, 8, 8}
Comment
-
-
Originally posted by sahiilseth View PostHi I am using the latest builds of bowtie 1 and 2 with 64 bit support..
But they are still dying with the error:
Reading reference sizes
Error: Reference sequence has more than 2^32-1 characters! Please divide the
reference into batches or chunks of about 3.6 billion characters or less each
64-bit
Built on do-dmxp-mac.win.ad.jhu.edu
Tue Feb 26 13:33:50 EST 2013
Compiler: gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)
Options: -O3 -m64 -msse2 -funroll-loops -g3
Sizeof {int, long, long long, void*, size_t, off_t}: {4, 8, 8, 8, 8, 8}
From Bowtie website:
BWA is able to handle genomes > 4 GB in size (individual chromosomes < 2 GB).Because bowtie2-build uses 32-bit pointers internally, it can handle up to a theoretical maximum of 2^32-1 (somewhat more than 4 billion) characters in an index, though, with other constraints, the actual ceiling is somewhat less than that. If your reference exceeds 2^32-1 characters, bowtie2-build will print an error message and abort. To resolve this, divide your reference sequences into smaller batches and/or chunks and build a separate index for each.Last edited by GenoMax; 08-22-2013, 11:51 AM.
Comment
-
-
[QUOTE=GenoMax;114232]From Bowtie website:
They also say:
'If your computer has more than 3-4 GB of memory and you would like to exploit that fact to make index building faster, use a 64-bit version of the bowtie2-build binary. The 32-bit version of the binary is restricted to using less than 4 GB of memory. If a 64-bit pre-built binary does not yet exist for your platform on the sourceforge download site, you will need to build one from source.'
I thought 64 bit binary, should be able to handle more characters as well; not true?
Comment
-
-
That reference is only for being able to use more memory during the index building stage to speed that process up.Originally posted by sahiilseth View PostFrom Bowtie website:
They also say:
'If your computer has more than 3-4 GB of memory and you would like to exploit that fact to make index building faster, use a 64-bit version of the bowtie2-build binary. The 32-bit version of the binary is restricted to using less than 4 GB of memory. If a 64-bit pre-built binary does not yet exist for your platform on the sourceforge download site, you will need to build one from source.'
I thought 64 bit binary, should be able to handle more characters as well; not true?
Comment
-
-
Dear Ben,
Why is the last version of Bowtie using the mm9 rather than mm10?
What is better Bowtie or Bowtie2 for alighment of 50 nt HiSeq Illumina ChIP-Seq redas?
I have read that Bowtie is good for short reads up to 100 nt, but Bowtie2 from 50 nt and higher. Still 50 nt reads are on the border for the programms.
If Bowtie2 is used, how to get rid of ununique reads?
Many thanks in advance
Comment
-
-
Hi Ben,
Sorry to resurrect an old post. I am getting the error Error: Reference sequence has more than 2^32-1 characters!. I know this means I need to split my reference in order to use bowtie2-build but I am wondering about mapping my reads to this reference which has been split. Is it possible to concatenate the split-indexed files and map the reads to this concatenated file or will I have to map the reads to each indexed files separately and write scripts to find which has the best hit.
Thank you
Angela
Comment
-
-
Reply to thread 'Bowtie, an ultrafast, memory-efficient, open source short read align
Hi Angie,
I think if you use split reference you'll have issues calculating the alignment quality of the best alignment during the merge, it's a bit more complicated than just selecting the best alignment.
You will likely get more accurate alignment qualities if you don't split the reference and instead use an aligner like BWA or Novoalign that can handle genomes >4Gbp.
KR, Colin
Originally posted by angie_red View PostHi Ben,
Sorry to resurrect an old post. I am getting the error Error: Reference sequence has more than 2^32-1 characters!. I know this means I need to split my reference in order to use bowtie2-build but I am wondering about mapping my reads to this reference which has been split. Is it possible to concatenate the split-indexed files and map the reads to this concatenated file or will I have to map the reads to each indexed files separately and write scripts to find which has the best hit.
Thank you
Angela
Comment
-
-
While using BWA or Novoalign are certainly the better solutions, one can relatively simply recalculate MAPQs from multiple alignment files to different references with bowtie. The bowtie MAPQ score is dependent primarily on the AS:i: and XS:i: score of each read, so you can just rerun the algorithm on that (bowtie MAPQs are more of a vague approximation than you may think). This is the approach I took in bison, where there are multiple parallel alignments of each read to different bisulfite converted genomes.Originally posted by sparks View PostHi Angie,
I think if you use split reference you'll have issues calculating the alignment quality of the best alignment during the merge, it's a bit more complicated than just selecting the best alignment.
You will likely get more accurate alignment qualities if you don't split the reference and instead use an aligner like BWA or Novoalign that can handle genomes >4Gbp.
KR, Colin
Comment
-
-
Agree you can merge Bowtie and calculate a vague alignment quality. Perhaps you can give Angie the formulae for it.
Originally posted by dpryan View PostWhile using BWA or Novoalign are certainly the better solutions, one can relatively simply recalculate MAPQs from multiple alignment files to different references with bowtie. The bowtie MAPQ score is dependent primarily on the AS:i: and XS:i: score of each read, so you can just rerun the algorithm on that (bowtie MAPQs are more of a vague approximation than you may think). This is the approach I took in bison, where there are multiple parallel alignments of each read to different bisulfite converted genomes.
Comment
-
-
Inputs are the AS and XS score of the resulting best hit (the XS score may be the AS score of the second best hit, that is the alignment to the other chunk of the reference). scMin is the minimum score for a given read (this is derived from the --score-min option given as input). I have a function to calculate this, but it depends on previously parsing user input and storing things in a struct that's specific to bison (so that function wouldn't be very useful), so I won't paste it below. This is basically a C version of what bowtie2 uses (complete with casting single-precision floats to double precision).Originally posted by sparks View PostAgree you can merge Bowtie and calculate a vague alignment quality. Perhaps you can give Angie the formulae for it.
Oh, the config.mode just denotes --end-to-end or --local. You'd need to change that to be a function input rather than relying on a global struct
I think the remainder should work, though!
Code:/****************************************************************************** * * Calculate a MAPQ, given AS, XS, and the minimum score (ala bowtie2) * *******************************************************************************/ int calc_MAPQ_BT2(int AS, int XS, int scMin) { int diff, bestOver, bestdiff; diff = abs(scMin); //Range of possible alignment scores bestOver = AS-scMin; //Shift alignment score range, so worst score is 0 //The method depends on config.mode bestdiff = (int) abs(abs((float) AS)-abs((float) XS)); //Absolute distance between alignment scores if(config.mode == 0) { //--end-to-end (default) if(XS < scMin) { if(bestOver >= diff * (double) 0.8f) return 42; else if(bestOver >= diff * (double) 0.7f) return 40; else if(bestOver >= diff * (double) 0.6f) return 24; else if(bestOver >= diff * (double) 0.5f) return 23; else if(bestOver >= diff * (double) 0.4f) return 8; else if(bestOver >= diff * (double) 0.3f) return 3; else return 0; } else { if(bestdiff >= diff * (double) 0.9f) { if(bestOver == diff) { return 39; } else { return 33; } } else if(bestdiff >= diff * (double) 0.8f) { if(bestOver == diff) { return 38; } else { return 27; } } else if(bestdiff >= diff * (double) 0.7f) { if(bestOver == diff) { return 37; } else { return 26; } } else if(bestdiff >= diff * (double) 0.6f) { if(bestOver == diff) { return 36; } else { return 22; } } else if(bestdiff >= diff * (double) 0.5f) { if(bestOver == diff) { return 35; } else if(bestOver >= diff * (double) 0.84f) { return 25; } else if(bestOver >= diff * (double) 0.68f) { return 16; } else { return 5; } } else if(bestdiff >= diff * (double) 0.4f) { if(bestOver == diff) { return 34; } else if(bestOver >= diff * (double) 0.84f) { return 21; } else if(bestOver >= diff * (double) 0.68f) { return 14; } else { return 4; } } else if(bestdiff >= diff * (double) 0.3f) { if(bestOver == diff) { return 32; } else if(bestOver >= diff * (double) 0.88f) { return 18; } else if(bestOver >= diff * (double) 0.67f) { return 15; } else { return 3; } } else if(bestdiff >= diff * (double) 0.2f) { if(bestOver == diff) { return 31; } else if(bestOver >= diff * (double) 0.88f) { return 17; } else if(bestOver >= diff * (double) 0.67f) { return 11; } else { return 0; } } else if(bestdiff >= diff * (double) 0.1f) { if(bestOver == diff) { return 30; } else if(bestOver >= diff * (double) 0.88f) { return 12; } else if(bestOver >= diff * (double) 0.67f) { return 7; } else { return 0; } } else if(bestdiff > 0) { if(bestOver >= diff * (double) 0.67f) { return 6; } else { return 2; } } else { if(bestOver >= diff * (double) 0.67f) { return 1; } else { return 0; } } } } else { //--local if(XS < scMin) { if(bestOver >= diff * (double) 0.8f) return 44; else if(bestOver >= diff * (double) 0.7f) return 42; else if(bestOver >= diff * (double) 0.6f) return 41; else if(bestOver >= diff * (double) 0.5f) return 36; else if(bestOver >= diff * (double) 0.4f) return 28; else if(bestOver >= diff * (double) 0.3f) return 24; else return 22; } else { if(bestdiff >= diff * (double) 0.9f) return 40; else if(bestdiff >= diff * (double) 0.8f) return 39; else if(bestdiff >= diff * (double) 0.7f) return 38; else if(bestdiff >= diff * (double) 0.6f) return 37; else if(bestdiff >= diff * (double) 0.5f) { if (bestOver == diff) return 35; else if(bestOver >= diff * (double) 0.5f) return 25; else return 20; } else if(bestdiff >= diff * (double) 0.4f) { if (bestOver == diff) return 34; else if(bestOver >= diff * (double) 0.5f) return 21; else return 19; } else if(bestdiff >= diff * (double) 0.3f) { if (bestOver == diff) return 33; else if(bestOver >= diff * (double) 0.5f) return 18; else return 16; } else if(bestdiff >= diff * (double) 0.2f) { if (bestOver == diff) return 32; else if(bestOver >= diff * (double) 0.5f) return 17; else return 12; } else if(bestdiff >= diff * (double) 0.1f) { if (bestOver == diff) return 31; else if(bestOver >= diff * (double) 0.5f) return 14; else return 9; } else if(bestdiff > 0) { if(bestOver >= diff * (double) 0.5f) return 11; else return 2; } else { if(bestOver >= diff * (double) 0.5f) return 1; else return 0; } } } }
Comment
-
Latest Articles
Collapse
-
by SEQadmin2
Data variability is still an issue in sequencing technologies despite the advances in reproducibility and accuracy of these platforms. But the problem does not originate in the sequencing itself, but in the previous steps, before the sample reaches the sequencer.
The first step is collection, followed by preservation and sample preparation for analysis. Most scientists overlook those steps, but not being careful might just be skewing the experiment’s results.
...-
Channel: Articles
Yesterday, 10:05 AM -
-
by SEQadmin2
With the launch of new single-cell sequencing platforms in 2026, the field stands at an exciting inflection point. This article surveys the most impactful advances in the field and discusses how they’re reshaping research in cancer, immunology, and beyond.
Introduction
Single-cell sequencing technologies have undergone remarkable advances over the past decade, transitioning from low-throughput experimental approaches to highly scalable platforms capable of...-
Channel: Articles
05-22-2026, 06:42 AM -
-
by SEQadmin2
Studying ecosystems means dealing with complex, multi-species communities that are hard to observe at scale. This complexity, however, hides many important questions to be answered, from how biogeochemical cycles work and how climate change can affect species distribution to how conservation strategies can work best.
Genomics, particularly since the expansion of NGS, has transformed ecosystem ecology. By sequencing environmental DNA, we can now assess biodiversity without direct...-
Channel: Articles
05-06-2026, 09:04 AM -
ad_right_rmr
Collapse
News
Collapse
| Topics | Statistics | Last Post | ||
|---|---|---|---|---|
|
Started by SEQadmin2, Yesterday, 12:03 PM
|
0 responses
19 views
0 reactions
|
Last Post
by SEQadmin2
Yesterday, 12:03 PM
|
||
|
Started by SEQadmin2, Yesterday, 11:40 AM
|
0 responses
14 views
0 reactions
|
Last Post
by SEQadmin2
Yesterday, 11:40 AM
|
||
|
Started by SEQadmin2, 05-28-2026, 11:40 AM
|
0 responses
29 views
0 reactions
|
Last Post
by SEQadmin2
05-28-2026, 11:40 AM
|
||
|
Started by SEQadmin2, 05-26-2026, 10:12 AM
|
0 responses
31 views
0 reactions
|
Last Post
by SEQadmin2
05-26-2026, 10:12 AM
|
Comment