Skip to content
PAired-eND Assembler for DNA sequences
C Vala Groff C++ M4 Makefile Other
Failed to load latest commit information.
debian Release 2.9 Jul 5, 2015
m4 Try to clean up configure script May 15, 2014
testing Release v2.8 Nov 6, 2014
.gitignore Release v2.8 Nov 6, 2014
.indent.pro Add more type to indent file Mar 10, 2014
.travis.yml Try Travis with clang again Feb 20, 2014
CHANGES Point a CHANGES file at the Debian changelog Nov 17, 2013
COPYING Created C version with module system Jan 28, 2012
Makefile.am Add a primer filter module Nov 24, 2015
README Include a symlink to README to keep AutoTools happy Oct 12, 2013
README.md Include dependency on pkgconfig Feb 2, 2015
algo.c Added UPARSE algorithm Nov 6, 2014
algo.h Move scoring algorithm to a separate module Nov 1, 2013
algo_ea_util.c Log-scale the scores Jul 31, 2014
algo_example.c Make algorithm list able to handle new plugins Dec 24, 2013
algo_flash.c Fixes from CLANG static analyzer May 15, 2015
algo_pear.c Compile cleanly with all the warnings Jul 17, 2014
algo_rdp_mle.c Compile cleanly with all the warnings Jul 17, 2014
algo_simple_bayes.c Compile cleanly with all the warnings Jul 17, 2014
algo_stitch.c Log-scale the scores Jul 31, 2014
algo_uparse.c Fix UPARSE scoring algorithms Nov 10, 2014
args.c Autoformatting Oct 31, 2014
args_array.c Clean up includes Dec 24, 2013
args_assembler.c Add -D flag to add a penalty for shifting primers Nov 5, 2014
args_fastq.c Allow reading separate index reads Mar 13, 2015
args_hang.c Compile cleanly with all the warnings Jul 17, 2014
assembler.c Sanity check sequence length after primer stripping Nov 5, 2014
assembler.h Add -D flag to add a penalty for shifting primers Nov 6, 2014
assembler_support.c Allow reading separate index reads Mar 13, 2015
async.c Fixes from CLANG static analyzer May 15, 2015
autogen.sh Created C version with module system Jan 29, 2012
buffer.c Fix memory leak in static_buffer Feb 12, 2014
buffer.h Fixed bug in non-pthreaded buffer allocation Apr 18, 2013
buffer.list Move mux to having dedicated buffers May 23, 2013
build-macos-pkg.in Packaging scripts for MacOS Apr 25, 2013
bzstream.c Addes streaming BZip decompressor for cURL Jan 9, 2014
configure.ac Release 2.9 Jul 5, 2015
curl_reader.c Fixes from CLANG static analyzer May 15, 2015
deps-url.in Add dependency file for Vala binding for pandaseq-url Nov 22, 2013
diff.c Fixes from CLANG static analyzer May 15, 2015
fastq.c Skip read pairs with no sequence Jun 15, 2015
fileio.c Allow reading separate index reads Mar 13, 2015
hang.c Add -D flag to add a penalty for shifting primers Nov 6, 2014
idset.c Added PandaIdFmt to formatting types and reformatted Aug 28, 2013
iter.c More warning-induced cleanup (from Windows and no threads) Jul 17, 2014
lib.rc Separate product and file versions in Windows. Jan 7, 2014
linebuf.c Prevent memory corruption when reading blank lines Jun 11, 2015
main-diff.c Add a program to compare differening conditions Feb 1, 2014
main-hang.c Clean up includes Dec 24, 2013
main-parse.c Change run from int to string Nov 24, 2014
main.c Clean up includes Dec 24, 2013
misc.c Compile cleanly with all the warnings Jul 17, 2014
misc.h More warning-induced cleanup (from Windows and no threads) Jul 18, 2014
mktable.c Flip probabilities in UPARSE tables Nov 10, 2014
module.c Fixes from CLANG static analyzer May 15, 2015
module.h List all known modules when the help is invoked Dec 19, 2013
mux.c Allow reading separate index reads Mar 13, 2015
nt.c Add nucleotide complement function Oct 31, 2014
nt.h Formatted and reorganised code Sep 26, 2012
offset.c Add -D flag to add a penalty for shifting primers Nov 6, 2014
output.c Compile cleanly with all the warnings Jul 17, 2014
panda_api.c Formatted and reorganised code Sep 26, 2012
pandabug Added bug-filing script Mar 4, 2013
pandaseq-algorithm.h Added UPARSE algorithm Nov 6, 2014
pandaseq-args.h Add -D flag to add a penalty for shifting primers Nov 6, 2014
pandaseq-assembler.h Add -D flag to add a penalty for shifting primers Nov 6, 2014
pandaseq-checkid.1 Thorough review and update of all man pages Mar 5, 2013
pandaseq-common.h Change run from int to string Nov 24, 2014
pandaseq-diff.1 Add a man page for pandaseq-diff Feb 1, 2014
pandaseq-hang.1 Added pandaseq-hang manual page May 23, 2013
pandaseq-iter.h Split up the massive header file into manageable pieces May 25, 2013
pandaseq-linebuf.h Move to buffered reads to improve performance Aug 14, 2013
pandaseq-log.h Add a perror-like function to log proxy Dec 18, 2013
pandaseq-module.h Make plugins have no static state Jan 23, 2014
pandaseq-mux.h Detect compression automatically. Jan 1, 2014
pandaseq-nt.h Add nucleotide complement function Oct 31, 2014
pandaseq-plugin.h Make plugins have no static state Jan 24, 2014
pandaseq-seqid.h Add support for EBI SRA header formats Mar 8, 2014
pandaseq-set.h Added PandaIdFmt to formatting types and reformatted Aug 29, 2013
pandaseq-tablebuilder.h Add documentation. Everyone loves documentation. Sep 3, 2013
pandaseq-url.h Addes streaming BZip decompressor for cURL Jan 10, 2014
pandaseq-writer.h Add a discarding writer Jan 9, 2014
pandaseq.1 Add a primer filter module Nov 25, 2015
pandaseq.h Allow reading separate index reads Mar 13, 2015
pandaseq.spec.in Fix spec for building RPMs Aug 8, 2014
pandaseq.svg Added logo and made README markdown Oct 9, 2013
pandaxs.1 Thorough review and update of all man pages Mar 6, 2013
pandaxs.in For -module flag in pandaxs Nov 17, 2015
pc-url.in Add a URL data source Nov 21, 2013
pc.in Make library naming more automatic Dec 6, 2012
plugin_after.c Compile cleanly with all the warnings Jul 17, 2014
plugin_before.c Compile cleanly with all the warnings Jul 17, 2014
plugin_completely_miss_the_point.c Compile cleanly with all the warnings Jul 17, 2014
plugin_empty.c Fixes from CLANG static analyzer May 15, 2015
plugin_filter.c Compile cleanly with all the warnings Jul 17, 2014
plugin_min_overlapbits.c Compile cleanly with all the warnings Jul 17, 2014
plugin_min_phred.c Compile cleanly with all the warnings Jul 17, 2014
plugin_other_primer.c Use unused variables in other_primer plugin Apr 25, 2016
plugin_overlap_stat.c Silence unused parameter. Jul 17, 2014
plugin_pear_test.c Compile cleanly with all the warnings Jul 17, 2014
plugin_sample.c Make plugins have no static state Jan 24, 2014
plugin_validtag.c Compile cleanly with all the warnings Jul 17, 2014
pool.c Fixes from CLANG static analyzer May 15, 2015
prob.h Migrate PHREDCLAMP to header file Aug 29, 2013
proxy.c Add a perror-like function to log proxy Dec 19, 2013
seqid.c Fix buffer overrun during parsing Apr 25, 2016
tablebuilder.c Compile cleanly with all the warnings Jul 17, 2014
vapi-url.in Fix cheader_filename in pandaseq-url VAPI Jul 31, 2014
vapi.in Allow reading separate index reads Mar 13, 2015
writer.c Fixes from CLANG static analyzer May 15, 2015

README.md

PANDASEQ

PANDASEQ is a program to align Illumina reads, optionally with PCR primers embedded in the sequence, and reconstruct an overlapping sequence.

INSTALLATION

Build Status

Binary packages are available for recent versions of Windows, MacOS and Linux. Source code is also available. See Installation instructions for details.

Development packages for zlib and libbz2 are needed, as well as a standard compiler environment. On Ubuntu, this can be installed via:

sudo apt-get install build-essential libtool automake zlib1g-dev libbz2-dev pkg-config

On MacOS, the Apple Developer tools and Fink (or MacPorts or Brew) must be installed, then:

sudo fink install bzip2-dev pkgconfig

The newer AutoTools from Fink are needed over the ones provided by Apple, so ensure that Fink's bin directory precedes /usr/bin in the $PATH.

After the support packages are installed, one should be able to do:

./autogen.sh && ./configure && make && sudo make install

If you receive an error that libpandaseq.so.[number] is not found on Linux, try running:

sudo ldconfig

USAGE

Please consult the manual page by invoking:

man pandaseq

or visiting online PANDAseq manual page.

The short version is:

pandaseq -f forward.fastq -r reverse.fastq

REPORTING BUGS

Before filing a bug, consult how to file a bug.

Please run:

curl https://raw.github.com/neufeld/pandaseq/master/pandabug | sh

or

wget -O- https://raw.github.com/neufeld/pandaseq/master/pandabug | sh

to create a header with basic details about your system. Please include:

  1. The output of the above script.
  2. The exact error message. If this is a compilation error, do not truncate the output. If this is a problem when assembling, keep the INFO ARG lines, and the last few lines, but you may truncate the middle.
  3. If you have tried multiple different things, please list them all.
  4. Your sequencing data may be requested. This usually does not necessitate all the reads.

BINDING

PANDAseq may be used in other programs via a programmatic interface. Consult the header file pandaseq.h for more details. The C interface is pseudo-object oriented and documented in the header. The library provides pkg-config information, so compiling against it can be done using something like:

cc mycode.c `pkg-config --cflags --libs pandaseq-2`

or using, in configure.ac:

PKG_CHECK_MODULES(PANDASEQ, [ pandaseq-2 >= 2.5 ])

A Vala binding is also included.

Other language bindings are welcome.

FAQ

Can I insist that PANDAseq only assemble perfect sequences?

Yes, but you shouldn't want to do it. The whole point is to fix sequences which are probably good. There is no quality setting that will achieve this effect. You can use the plugin completely_miss_the_point, but this really does miss the point. Moreover, assuming that the sequencer is right in the overlap region and in the non-overlapping regions requires an unsound leap in statistics.

Can I use SAM/BAM files as input without converting them to FASTQ?

Yes. PANDAseq-sam extends PANDAseq to do this. SAM/BAM files do not guarantee that sequences will be in the right order, so using SAM/BAM files may be slower and PANDAseq will use more memory.

The scores of the output bases seem really low. What's wrong?

Nothing. The quality scores of the output do not have any similarity to the original quality scores and are not uniform across the sequence (i.e., the overlap is scored differently from the unpaired ends.

In the overlap region where there is a mismatch, it is probable that one base was sequenced correctly and the other was sequenced incorrectly. If both bases have high scores (i.e., are probably correct), the chance of the resulting base is low (i.e., is probably incorrect). For more information, see the paper. Also, remember that the PHRED to probability conversion is not linear, so most scores are relatively high. It's also not uncommon to see the PHRED score !, which is zero, but in this context, it means less than " (PHRED = 1, P = .20567).

Again, these scores are not meant to be interpreted as regular scores and should not be processed by downstream applications expecting PHRED scores from Illumina sequences.

The scores of the non-overlapping regions are not the same as the original reads. Why?

The PHRED scores from the input are not copied directly to the output when using FASTQ (-F) output. They go through a transformation from PHRED scores into probabilities, which is what PANDAseq uses. When output as FASTQ, the probabilities are converted back to PHRED scores. The rounding error involved can cause a score to jump by one.

How many sequences should there be in the output?

You should expect that PANDAseq will output fewer sequences than the read pairs given to it. The log contains several STAT lines that will help with the analysis. Lines containing STAT READS report the number of read pairs in the input. Sequences first go through a number of basic filtering steps and then user-specified filtering steps. If provided, forward and reverse primers are aligned and clipped. The optimal overlap is selected and the sequence is constructed. The quality score is verified and any user-specified filtering is done. Any of these steps might fail and cause the sequence to be rejected. For each of the possible rejection reasons, the log file will contain a STAT line reporting the number of sequences filtered, as is described in the Output Statistics section of the manual.

If multiple threads are used, which the default on most platforms, each thread collects this information separately. The output log will output a group of STAT lines per thread.

The STAT SLOW line is informative; those sequences were not rejected. The other STAT lines (i.e., not READS or SLOW) should sum to the STAT READS line.

ALTERNATIVES

Similar algorithms (i.e., determine the overlap, then fuse the reads):

Completely different methods:

CITATION

Andre P Masella, Andrea K Bartram, Jakub M Truszkowski, Daniel G Brown and Josh D Neufeld. PANDAseq: paired-end assembler for illumina sequences. BMC Bioinformatics 2012, 13:31. http://www.biomedcentral.com/1471-2105/13/31

Something went wrong with that request. Please try again.