├── .gitignore ├── INSTALL ├── LICENSE ├── README ├── doc ├── Makefile ├── artificial_errors.rst ├── conf.py ├── image_maker.rst ├── index.rst ├── install.rst ├── make.bat ├── plotter3.rst └── synthReadGen.rst ├── example ├── Ecoli_first350k.ale.pdf └── Ecoli_first350k.ale.pdf.png ├── makefile ├── src ├── .gitignore ├── ALE.c ├── ALE.h ├── ALE_low_scores.py ├── ALEhelpers.c ├── ALEhelpers.h ├── ALElike.c ├── ALElike.h ├── CmdIn.py ├── GCcompFinder.c ├── ProgressBar.py ├── SAMcleaner.c ├── Smooth.py ├── ale2wiggle.py ├── artificial_errors.py ├── depth_bias_scripts.py ├── geneTree.c ├── geneTree.h ├── illumina2crossbow.pl ├── image_maker.py ├── makefile ├── mixture.py ├── plotter3.py ├── readFileSplitter.c ├── runBowtieOnPair.sh ├── samtools-0.1.19 │ ├── .gitignore │ ├── AUTHORS │ ├── COPYING │ ├── ChangeLog.old │ ├── INSTALL │ ├── Makefile │ ├── Makefile.mingw │ ├── NEWS │ ├── bam.c │ ├── bam.h │ ├── bam2bcf.c │ ├── bam2bcf.h │ ├── bam2bcf_indel.c │ ├── bam2depth.c │ ├── bam_aux.c │ ├── bam_cat.c │ ├── bam_color.c │ ├── bam_endian.h │ ├── bam_import.c │ ├── bam_index.c │ ├── bam_lpileup.c │ ├── bam_mate.c │ ├── bam_md.c │ ├── bam_pileup.c │ ├── bam_plcmd.c │ ├── bam_reheader.c │ ├── bam_rmdup.c │ ├── bam_rmdupse.c │ ├── bam_sort.c │ ├── bam_stat.c │ ├── bam_tview.c │ ├── bam_tview.h │ ├── bam_tview_curses.c │ ├── bam_tview_html.c │ ├── bamshuf.c │ ├── bamtk.c │ ├── bcftools │ │ ├── Makefile │ │ ├── README │ │ ├── bcf.c │ │ ├── bcf.h │ │ ├── bcf.tex │ │ ├── bcf2qcall.c │ │ ├── bcfutils.c │ │ ├── call1.c │ │ ├── em.c │ │ ├── fet.c │ │ ├── index.c │ │ ├── kfunc.c │ │ ├── kmin.c │ │ ├── kmin.h │ │ ├── main.c │ │ ├── mut.c │ │ ├── prob1.c │ │ ├── prob1.h │ │ ├── vcf.c │ │ └── vcfutils.pl │ ├── bedcov.c │ ├── bedidx.c │ ├── bgzf.c │ ├── bgzf.h │ ├── bgzip.c │ ├── cut_target.c │ ├── errmod.c │ ├── errmod.h │ ├── examples │ │ ├── 00README.txt │ │ ├── Makefile │ │ ├── bam2bed.c │ │ ├── calDepth.c │ │ ├── chk_indel.c │ │ ├── ex1.fa │ │ ├── ex1.sam.gz │ │ ├── toy.fa │ │ └── toy.sam │ ├── faidx.c │ ├── faidx.h │ ├── kaln.c │ ├── kaln.h │ ├── khash.h │ ├── klist.h │ ├── knetfile.c │ ├── knetfile.h │ ├── kprobaln.c │ ├── kprobaln.h │ ├── kseq.h │ ├── ksort.h │ ├── kstring.c │ ├── kstring.h │ ├── misc │ │ ├── HmmGlocal.java │ │ ├── Makefile │ │ ├── ace2sam.c │ │ ├── bamcheck.c │ │ ├── blast2sam.pl │ │ ├── bowtie2sam.pl │ │ ├── export2sam.pl │ │ ├── interpolate_sam.pl │ │ ├── maq2sam.c │ │ ├── md5.c │ │ ├── md5.h │ │ ├── md5fa.c │ │ ├── novo2sam.pl │ │ ├── plot-bamcheck │ │ ├── psl2sam.pl │ │ ├── r2plot.lua │ │ ├── sam2vcf.pl │ │ ├── samtools.pl │ │ ├── soap2sam.pl │ │ ├── varfilter.py │ │ ├── vcfutils.lua │ │ ├── wgsim.c │ │ ├── wgsim_eval.pl │ │ └── zoom2sam.pl │ ├── padding.c │ ├── phase.c │ ├── razf.c │ ├── razf.h │ ├── razip.c │ ├── sam.c │ ├── sam.h │ ├── sam_header.c │ ├── sam_header.h │ ├── sam_view.c │ ├── sample.c │ ├── sample.h │ ├── samtools.1 │ └── win32 │ │ ├── xcurses.h │ │ ├── zconf.h │ │ └── zlib.h ├── samtools_helper.c ├── samtools_helper.h ├── sse2neon.h ├── ssw.c ├── ssw.h └── synthReadGen.c └── test ├── 1000.fastq ├── PhiX-SNP.ale ├── PhiX-SNP.ale.SNPreport.txt ├── PhiX-sort.ale ├── PhiX-sort.bam ├── PhiX-tiny-+unmapped-single.sam ├── PhiX-tiny-partial-single.sam ├── PhiX-tiny-partial2-single.sam ├── PhiX-tiny-partial3-single.sam ├── PhiX-tiny-partial4-single.sam ├── PhiX-tiny-partial5-single.sam ├── PhiX-tiny-removed-pair.sam ├── PhiX-tiny-removed2-pair.sam ├── PhiX-tiny-stretch0-pair.sam ├── PhiX-tiny-stretch1-pair.sam ├── PhiX-tiny-stretch2-pair.sam ├── PhiX-tiny-stretch3-pair.sam ├── PhiX-tiny-stretch4-pair.sam ├── PhiX-tiny-stretch5-pair.sam ├── PhiX-tiny-stretch6-pair.sam ├── PhiX-tiny-stretch7-pair.sam ├── PhiX-tiny-stretch8-pair.sam ├── PhiX-tiny-unmapped-single.sam ├── PhiX-tiny.ale ├── PhiX-tiny.sam ├── PhiX.ale ├── PhiX.bam ├── PhiX.sam ├── PhiX174-broken.fsa ├── PhiX174.fsa ├── PhiXbroken-tiny-chimer-pair.sam ├── PhiXbroken-tiny-removed-pair.sam ├── PhiXbroken-tiny-removed2-pair.sam ├── PhiXbroken-tiny-stretch0-pair.sam ├── PhiXbroken-tiny-stretch1-pair.sam ├── PhiXbroken-tiny-stretch2-pair.sam ├── PhiXbroken-tiny-stretch3-pair.sam ├── PhiXbroken-tiny-stretch4-pair.sam ├── PhiXbroken-tiny-stretch5-pair.sam ├── PhiXbroken-tiny-stretch6-pair.sam ├── PhiXbroken-tiny-stretch7-pair.sam ├── PhiXbroken-tiny-stretch8-pair.sam └── PhiXbroken-tiny.sam /.gitignore: -------------------------------------------------------------------------------- 1 | .*project 2 | *~ 3 | *.o 4 | *.a 5 | *.pyc 6 | *testPhiX* 7 | *testRealignPhiX* 8 | *testSNPPhiX* 9 | ALE 10 | synthReadGen 11 | GCcompFinder 12 | readFileSplitter 13 | **.DS_store 14 | doc/_build 15 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Simple run `make` to build the `ALE` binary. 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010,2011,2012 Scott Clark. All rights reserved. 3 | * 4 | * Developed by: 5 | * Scott Clark 6 | * Cornell University Center for Applied Mathematics 7 | * http://cam.cornell.edu 8 | * AND 9 | * Rob Egan 10 | * Department of Energy Joint Genome Institute 11 | * http://jgi.doe.gov 12 | * 13 | * Permission is hereby granted, free of charge, to any person obtaining a 14 | * copy of this software and associated documentation files (the "Software"), 15 | * to deal with the Software without restriction, including without limitation 16 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 | * and/or sell copies of the Software, and to permit persons to whom the 18 | * Software is furnished to do so, subject to the following conditions: 19 | * 20 | * 1. Redistributions of source code must retain the above copyright notice, 21 | * this list of conditions and the following disclaimers. 22 | * 2. Redistributions in binary form must reproduce the above copyright 23 | * notice, this list of conditions and the following disclaimers in the 24 | * documentation and/or other materials provided with the distribution. 25 | * 3. Neither the names of Cornell University, The Joint Genome Institute, 26 | * nor the names of its contributors may be used to endorse or promote 27 | * products derived from this Software without specific prior written 28 | * permission. 29 | * 30 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 31 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 32 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 33 | * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 34 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 35 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 36 | * DEALINGS WITH THE SOFTWARE. 37 | */ 38 | 39 | // For more information on the license please see 40 | // The University of Illinois/NCSA Open Source License 41 | // http://www.opensource.org/licenses/UoI-NCSA.php 42 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | DOCUMENTATION 2 | ------------- 3 | 4 | http://portal.nersc.gov/dna/RD/Adv-Seq/ALE-doc/ 5 | 6 | This code is no longer in active development. Pull requests and bugs will be addressed as needed. 7 | 8 | Plotting 9 | -------- 10 | 11 | The authors recommend using IGV to view the output. 12 | 13 | http://www.broadinstitute.org/igv/ 14 | 15 | Just import the assembly, bam and ALE scores. You can convert the .ale file to a set of .wig files with ale2wiggle.py and IGV can read those directly. Depending on your genome size you may want to convert the .wig files to the BigWig format. 16 | 17 | LICENSE 18 | ------- 19 | 20 | /* 21 | * Copyright (C) 2010,2011,2012 Scott Clark. All rights reserved. 22 | * 23 | * Developed by: 24 | * Scott Clark 25 | * Cornell University Center for Applied Mathematics 26 | * http://cam.cornell.edu 27 | * AND 28 | * Rob Egan 29 | * Department of Energy Joint Genome Institute 30 | * http://jgi.doe.gov 31 | * 32 | * Permission is hereby granted, free of charge, to any person obtaining a 33 | * copy of this software and associated documentation files (the "Software"), 34 | * to deal with the Software without restriction, including without limitation 35 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 36 | * and/or sell copies of the Software, and to permit persons to whom the 37 | * Software is furnished to do so, subject to the following conditions: 38 | * 39 | * 1. Redistributions of source code must retain the above copyright notice, 40 | * this list of conditions and the following disclaimers. 41 | * 2. Redistributions in binary form must reproduce the above copyright 42 | * notice, this list of conditions and the following disclaimers in the 43 | * documentation and/or other materials provided with the distribution. 44 | * 3. Neither the names of Cornell University, The Joint Genome Institute, 45 | * nor the names of its contributors may be used to endorse or promote 46 | * products derived from this Software without specific prior written 47 | * permission. 48 | * 49 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 50 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 51 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 52 | * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 53 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 54 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 55 | * DEALINGS WITH THE SOFTWARE. 56 | */ 57 | 58 | // For more information on the licence please see 59 | // The University of Illinois/NCSA Open Source License 60 | // http://www.opensource.org/licenses/UoI-NCSA.php 61 | 62 | INSTALL 63 | ------- 64 | 65 | http://portal.nersc.gov/dna/RD/Adv-Seq/ALE-doc/index.html#installation 66 | 67 | # 68 | # ALE comes packaged with samtools-0.1.18 Feel free to use a later version 69 | # samtools is open source (MIT license) 70 | # We would like to thank the creators for the extensive and very useful package 71 | # 72 | 73 | Requirements for plotter4.py: 74 | numpy 1.6.1 75 | mpmath 0.17 76 | setuptools 0.6c11 77 | matplotlib 1.0.1 78 | pymix 0.8 http://www.pymix.org/pymix/ 79 | -------------------------------------------------------------------------------- /doc/artificial_errors.rst: -------------------------------------------------------------------------------- 1 | .. ALE documentation master file, created by 2 | sphinx-quickstart on Fri Dec 16 21:11:32 2011. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | artificial_errors.py 7 | ==================== 8 | 9 | Jump to: 10 | #. `Running artificial_errors.py`_ 11 | #. `artificial_errors.py functions and classes`_ 12 | 13 | Running artificial_errors.py 14 | ---------------------------- 15 | 16 | We can invoke the artificial error maker by running:: 17 | 18 | $ ./artificial_errors.py [-options] 19 | 20 | This will create a new file errors_ that has the transformations requested in [-options] (performed left to right). If no options are given the errors_ will be identical to . 21 | 22 | Options are:: 23 | 24 | $ ./artificial_errors.py -h 25 | Usage: ./artificial_errors.py [-options] 26 | 27 | where basic options are: 28 | -h : show brief help on version and full usage 29 | 30 | parameter options accepting ntegers and trings (default): 31 | Note: transformations will be made left to right 32 | -ase : add substitution error at for 33 | -ade : add deletion error at for 34 | -aie : add insertion error at for 35 | -inv : add inversion error at for 36 | -cip : copy part of the assembly at for 37 | -trp : transpose assembly around 38 | -ab : add a break (split into 2 contigs) at 39 | -o : output file name (error_ + inputfile.fna) 40 | 41 | artificial_errors.py functions and classes 42 | ------------------------------------------ 43 | 44 | .. automodule:: artificial_errors 45 | :members: 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /doc/image_maker.rst: -------------------------------------------------------------------------------- 1 | .. ALE documentation master file, created by 2 | sphinx-quickstart on Fri Dec 16 21:11:32 2011. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | image_maker.py 7 | ==================== 8 | 9 | Jump to: 10 | #. `Running image_maker.py`_ 11 | #. `image_maker.py functions and classes`_ 12 | 13 | Running image_maker.py 14 | ---------------------------- 15 | 16 | Run the following command:: 17 | 18 | $ ./image_maker.py 19 | 20 | image_maker.py functions and classes 21 | ------------------------------------------ 22 | 23 | .. automodule:: image_maker 24 | :members: 25 | -------------------------------------------------------------------------------- /doc/index.rst: -------------------------------------------------------------------------------- 1 | .. ALE documentation master file, created by 2 | sphinx-quickstart on Fri Dec 16 21:11:32 2011. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to ALE's documentation! 7 | =============================== 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | 12 | install 13 | plotter3 14 | synthReadGen 15 | artificial_errors 16 | image_maker 17 | 18 | Indices and tables 19 | ================== 20 | 21 | * :ref:`genindex` 22 | * :ref:`modindex` 23 | * :ref:`search` 24 | -------------------------------------------------------------------------------- /doc/plotter3.rst: -------------------------------------------------------------------------------- 1 | .. ALE documentation master file, created by 2 | sphinx-quickstart on Fri Dec 16 21:11:32 2011. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | plotter3.py 7 | =========== 8 | 9 | Jump to: 10 | #. `Requirements for plotter3.py`_ 11 | #. `Running plotter3.py`_ 12 | #. `plotter3.py functions and classes`_ 13 | 14 | Plotting 15 | -------- 16 | 17 | The authors recommend using IGV to view the output. 18 | 19 | http://www.broadinstitute.org/igv/ 20 | 21 | Just import the assembly, bam and ALE scores. You can convert the .ale file to a set of .wig files with ale2wiggle.py and IGV can read those directly. Depending on your genome size you may want to convert the .wig files to the BigWig format. 22 | 23 | Requirements for plotter4.py 24 | ---------------------------- 25 | 26 | .. automodule:: plotter3 27 | 28 | Running plotter3.py 29 | ------------------- 30 | 31 | Here we show how to use the built in debugging plotter. Note, this plotter is no longer in active development and is not supported. We recommend using IGV. 32 | 33 | We can invoke the plotter by running:: 34 | 35 | $ ./plotter3.py ALEoutput.ale 36 | 37 | Which results in output similar to the following figure (link to figure) 38 | 39 | .. figure:: example/Ecoli_first350k.ale.pdf.png 40 | :align: center 41 | 42 | For a full list of options please see the documentation/source below or run:: 43 | 44 | $ ./plotter3.py -h 45 | Usage: ./ALE_plotter.py [-options] 46 | 47 | where basic options are: 48 | -h : show brief help on version and full usage 49 | -nosave : do not save the figure as a pdf (instead plot to screen) 50 | 51 | parameter options accepting loats and ntegers and trings (default): 52 | -s : the starting position to plot (for all contigs, ie a single insert length) 53 | -e : the ending position of the plot 54 | -pt : plot type 't'otal 'k'mer 'p'lacement 'd'epth (-pt dpkt) 55 | -dsw : depth smoothing window, averaging over position (-dsw 10000) 56 | -psw : placement smoothing window (-psw 1000) 57 | -ksw : kmer smoothing window (-ksw 1000) 58 | -t : threshold percentage, see paper (-t 0.99999) 59 | -pt : plot threshold, only plot if more than % of errors (-pt 0.0) 60 | -st : number of standard deviations to engage threshold (-st 5) 61 | -fn : figure name (default: contig name) 62 | -mps : minimum plot size in bp (-mps 20000) 63 | -sc : plot only a specific contig (ie -sc contigName213) 64 | -pmo : plot meta information only (off) 65 | -dpm : don't plot meta information at all (off) 66 | 67 | plotter3.py functions and classes 68 | --------------------------------- 69 | 70 | .. autofunction:: plotter3.read_in_info 71 | 72 | .. autoclass:: plotter3.Contig 73 | :members: 74 | 75 | -------------------------------------------------------------------------------- /doc/synthReadGen.rst: -------------------------------------------------------------------------------- 1 | .. ALE documentation master file, created by 2 | sphinx-quickstart on Fri Dec 16 21:11:32 2011. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | synthReadGen 7 | ============ 8 | 9 | Jump to: 10 | #. `Compiling synthReadGen`_ 11 | #. `Running synthReadGen`_ 12 | 13 | Compiling synthReadGen 14 | ---------------------- 15 | 16 | By running **make** in the src/ directory *synthReadGen* should be automatically compiled:: 17 | 18 | $ cd src 19 | $ make 20 | 21 | Alternately, you can compile it manually with:: 22 | 23 | $ cc -g -O3 synthReadGen.c -o synthReadGen -lz -lm -Isamtools-0.1.18 -Lsamtools-0.1.18 24 | 25 | Running synthReadGen 26 | -------------------- 27 | 28 | The usage can be found by running:: 29 | 30 | $./synthReadGen -h 31 | Usage: ./synthReadGen [options] 32 | 33 | Options: nt loat [default] 34 | -h : print out this help 35 | -id : set distribution used for insert length 36 | [1 = normal], 2 = poisson 37 | -ld : set distribution used for read length 38 | [1 = normal], 2 = poisson 39 | -im : inward insert length mean [200.0] 40 | -om : outward insert length mean [500.0] 41 | -is : inward insert length std dev [10.0] 42 | -os : outward insert length std dev [15.0] 43 | -ip : probability for an inward read [0.5] 44 | -er : illumina error char [^] 45 | -nr : number of reads to make [1000] 46 | -rl : read length mean [85.0] 47 | -rs : read length sigma [7.0] 48 | -ps : no error for first x bases in a read [0] 49 | -b : outputs two fastq files for bowtie mapping [off] 50 | 51 | -------------------------------------------------------------------------------- /example/Ecoli_first350k.ale.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sc932/ALE/e7b0777f3b1b1eaaf280bd96452c63a59cc43683/example/Ecoli_first350k.ale.pdf -------------------------------------------------------------------------------- /example/Ecoli_first350k.ale.pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sc932/ALE/e7b0777f3b1b1eaaf280bd96452c63a59cc43683/example/Ecoli_first350k.ale.pdf.png -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | DEFAULT: all 2 | 3 | .PHONY: all clean test example 4 | 5 | all: 6 | make -C src all 7 | 8 | install: 9 | make -C src install 10 | 11 | clean: 12 | make -C src clean 13 | 14 | test: 15 | make -C src test 16 | 17 | example: 18 | make -C src example 19 | -------------------------------------------------------------------------------- /src/.gitignore: -------------------------------------------------------------------------------- 1 | *.dSYM 2 | -------------------------------------------------------------------------------- /src/GCcompFinder.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010,2011,2012 Scott Clark. All rights reserved. 3 | * 4 | * Developed by: 5 | * Scott Clark 6 | * Cornell University Center for Applied Mathematics 7 | * http://cam.cornell.edu 8 | * AND 9 | * Rob Egan 10 | * Department of Energy Joint Genome Institute 11 | * http://jgi.doe.gov 12 | * 13 | * Permission is hereby granted, free of charge, to any person obtaining a 14 | * copy of this software and associated documentation files (the "Software"), 15 | * to deal with the Software without restriction, including without limitation 16 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 | * and/or sell copies of the Software, and to permit persons to whom the 18 | * Software is furnished to do so, subject to the following conditions: 19 | * 20 | * 1. Redistributions of source code must retain the above copyright notice, 21 | * this list of conditions and the following disclaimers. 22 | * 2. Redistributions in binary form must reproduce the above copyright 23 | * notice, this list of conditions and the following disclaimers in the 24 | * documentation and/or other materials provided with the distribution. 25 | * 3. Neither the names of Cornell University, The Joint Genome Institute, 26 | * nor the names of its contributors may be used to endorse or promote 27 | * products derived from this Software without specific prior written 28 | * permission. 29 | * 30 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 31 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 32 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 33 | * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 34 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 35 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 36 | * DEALINGS WITH THE SOFTWARE. 37 | */ 38 | 39 | // For more information on the license please see 40 | // The University of Illinois/NCSA Open Source License 41 | // http://www.opensource.org/licenses/UoI-NCSA.php 42 | 43 | 44 | #include 45 | #include 46 | #include 47 | 48 | int main(int argc, char **argv){ 49 | 50 | if (argc < 4) { 51 | printf("Usage: %s assemblyFile.fasta runningWindow output\n(C) 2011 Scott Clark\nFinds the running window GC content in a fasta file\nJust sequence! No gene name/info!\n", argv[0]); 52 | return 0; 53 | } 54 | 55 | // attempt to open the first input file 56 | FILE *ins = fopen(argv[argc - 3], "r"); 57 | if(ins == NULL){ 58 | printf("Error! Could not open the first input file: %s\n", argv[argc - 3]); 59 | return 1; 60 | } 61 | 62 | // attempt to open the output file 63 | FILE *fout = fopen(argv[argc - 1], "w"); 64 | if(fout == NULL){ 65 | printf("Error! Could not open the output file: %s\n", argv[argc - 1]); 66 | return 1; 67 | } 68 | 69 | int runningWindow = atoi(argv[argc - 2]); 70 | int i; 71 | char base; 72 | char *backTrace = malloc(sizeof(char)*runningWindow); 73 | int gcTot = 0; 74 | int keepGoing; 75 | 76 | for(i = 0; i < runningWindow; i++){ 77 | keepGoing = fscanf(ins, "%c", &base); 78 | // if(base == '\0' || base == '\n'){ 79 | // i--; 80 | // } 81 | backTrace[i] = base; 82 | if(base == 'G' || base == 'g' || base == 'C' || base == 'c'){ 83 | gcTot++; 84 | } 85 | } 86 | 87 | printf("%f\n", (float)gcTot/((float)runningWindow)); 88 | 89 | while(keepGoing > 0){ 90 | keepGoing = fscanf(ins, "%c", &base); 91 | if(base == '\0' || base == '\n'){ 92 | i--; 93 | } 94 | if(base == 'G' || base == 'g' || base == 'C' || base == 'c'){ 95 | gcTot++; 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/ProgressBar.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import sys 4 | # from: http://code.activestate.com/recipes/168639-progress-bar-class/ 5 | class progressBar: 6 | """ Creates a text-based progress bar. Call the object with the `print' 7 | command to see the progress bar, which looks something like this: 8 | 9 | [=======> 22% ] 10 | 11 | You may specify the progress bar's width, min and max values on init. 12 | """ 13 | 14 | def __init__(self, minValue = 0, maxValue = 100, totalWidth=80): 15 | self.progBar = "[]" # This holds the progress bar string 16 | self.min = minValue 17 | self.max = maxValue 18 | self.span = maxValue - minValue 19 | self.width = totalWidth 20 | self.amount = 0 # When amount == max, we are 100% done 21 | self.updateAmount(0) # Build progress bar string 22 | 23 | def updateAmount(self, newAmount = 0): 24 | """ Update the progress bar with the new amount (with min and max 25 | values set at initialization; if it is over or under, it takes the 26 | min or max value as a default. """ 27 | if newAmount < self.min: newAmount = self.min 28 | if newAmount > self.max: newAmount = self.max 29 | self.amount = newAmount 30 | 31 | # Figure out the new percent done, round to an integer 32 | diffFromMin = float(self.amount - self.min) 33 | percentDone = (diffFromMin / float(self.span)) * 100.0 34 | percentDone = int(round(percentDone)) 35 | 36 | # Figure out how many hash bars the percentage should be 37 | allFull = self.width - 2 38 | numHashes = (percentDone / 100.0) * allFull 39 | numHashes = int(round(numHashes)) 40 | 41 | # Build a progress bar with an arrow of equal signs; special cases for 42 | # empty and full 43 | if numHashes == 0: 44 | self.progBar = "[>%s]" % (' '*(allFull-1)) 45 | elif numHashes == allFull: 46 | self.progBar = "[%s]" % ('='*allFull) 47 | else: 48 | self.progBar = "[%s>%s]" % ('='*(numHashes-1), 49 | ' '*(allFull-numHashes)) 50 | 51 | # figure out where to put the percentage, roughly centered 52 | percentPlace = (len(self.progBar) / 2) - len(str(percentDone)) 53 | percentString = str(percentDone) + "%" 54 | 55 | # slice the percentage into the bar 56 | self.progBar = ''.join([self.progBar[0:percentPlace], percentString, 57 | self.progBar[percentPlace+len(percentString):] 58 | ]) 59 | 60 | def __str__(self): 61 | return str(self.progBar) 62 | 63 | def __call__(self, value): 64 | """ Updates the amount, and writes to stdout. Prints a carriage return 65 | first, so it will overwrite the current line in stdout.""" 66 | print '\r', 67 | self.updateAmount(value) 68 | sys.stdout.write(str(self)) 69 | sys.stdout.flush() 70 | 71 | def main(): 72 | pass 73 | 74 | if __name__ == '__main__': 75 | main() 76 | 77 | -------------------------------------------------------------------------------- /src/Smooth.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | # http://www.scipy.org/Cookbook/SignalSmooth 4 | 5 | import numpy 6 | 7 | def smooth(x,window_len=11,window='flat'): 8 | """smooth the data using a window with requested size. 9 | 10 | This method is based on the convolution of a scaled window with the signal. 11 | The signal is prepared by introducing reflected copies of the signal 12 | (with the window size) in both ends so that transient parts are minimized 13 | in the begining and end part of the output signal. 14 | 15 | input: 16 | x: the input signal 17 | window_len: the dimension of the smoothing window; should be an odd integer 18 | window: the type of window from 'flat', 'hanning', 'hamming', 'bartlett', 'blackman' 19 | flat window will produce a moving average smoothing. 20 | 21 | output: 22 | the smoothed signal 23 | 24 | example: 25 | 26 | t=linspace(-2,2,0.1) 27 | x=sin(t)+randn(len(t))*0.1 28 | y=smooth(x) 29 | 30 | see also: 31 | 32 | numpy.hanning, numpy.hamming, numpy.bartlett, numpy.blackman, numpy.convolve 33 | scipy.signal.lfilter 34 | 35 | TODO: the window parameter could be the window itself if an array instead of a string 36 | """ 37 | #t0 = time.time() 38 | if x.ndim != 1: 39 | raise ValueError, "smooth only accepts 1 dimension arrays." 40 | 41 | if x.size < window_len: 42 | raise ValueError, "Input vector needs to be bigger than window size." 43 | 44 | 45 | if window_len<3: 46 | return x 47 | 48 | 49 | if not window in ['flat', 'hanning', 'hamming', 'bartlett', 'blackman']: 50 | raise ValueError, "Window is on of 'flat', 'hanning', 'hamming', 'bartlett', 'blackman'" 51 | 52 | s=numpy.r_[2*x[0]-x[window_len-1::-1],x,2*x[-1]-x[-1:-window_len:-1]] 53 | #print(len(s)) 54 | if window == 'flat': #moving average 55 | w=numpy.ones(window_len,'d') 56 | else: 57 | w=eval('numpy.'+window+'(window_len)') 58 | 59 | y=numpy.convolve(w/w.sum(),s,mode='same') 60 | #print "Smooth of len " + str(window_len) + " in " + str(time.time() - t0) 61 | return y[window_len:-window_len+1] 62 | 63 | def main(): 64 | pass 65 | 66 | if __name__ == '__main__': 67 | main() 68 | 69 | -------------------------------------------------------------------------------- /src/geneTree.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010,2011,2012 Scott Clark. All rights reserved. 3 | * 4 | * Developed by: 5 | * Scott Clark 6 | * Cornell University Center for Applied Mathematics 7 | * http://cam.cornell.edu 8 | * AND 9 | * Rob Egan 10 | * Department of Energy Joint Genome Institute 11 | * http://jgi.doe.gov 12 | * 13 | * Permission is hereby granted, free of charge, to any person obtaining a 14 | * copy of this software and associated documentation files (the "Software"), 15 | * to deal with the Software without restriction, including without limitation 16 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 | * and/or sell copies of the Software, and to permit persons to whom the 18 | * Software is furnished to do so, subject to the following conditions: 19 | * 20 | * 1. Redistributions of source code must retain the above copyright notice, 21 | * this list of conditions and the following disclaimers. 22 | * 2. Redistributions in binary form must reproduce the above copyright 23 | * notice, this list of conditions and the following disclaimers in the 24 | * documentation and/or other materials provided with the distribution. 25 | * 3. Neither the names of Cornell University, The Joint Genome Institute, 26 | * nor the names of its contributors may be used to endorse or promote 27 | * products derived from this Software without specific prior written 28 | * permission. 29 | * 30 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 31 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 32 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 33 | * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 34 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 35 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 36 | * DEALINGS WITH THE SOFTWARE. 37 | */ 38 | 39 | // For more information on the license please see 40 | // The University of Illinois/NCSA Open Source License 41 | // http://www.opensource.org/licenses/UoI-NCSA.php 42 | 43 | // geneTree.h 44 | 45 | #ifndef _GENE_TREE_H_ 46 | #define _GENE_TREE_H_ 47 | 48 | #include 49 | #include 50 | #include "ALEhelpers.h" 51 | 52 | #define START_LENGTH 5 53 | 54 | struct LeafNode{ 55 | int length; 56 | int current; 57 | int indicies[][2]; 58 | }; 59 | 60 | struct TreeBranch{ 61 | struct TreeBranch *subBranches[4];// = {NULL,NULL,NULL,NULL}; 62 | struct LeafNode *leaf; 63 | }; 64 | 65 | typedef struct LeafNode leafNode_t; 66 | typedef struct TreeBranch treeBranch_t; 67 | 68 | int OutputIndicies(treeBranch_t *pRoot, const char sequence[], const int klen, int index[][2]); 69 | 70 | treeBranch_t MakeTree(const assembly_t theAssem, const int klen, const int NUM_ASSEMBLY_PARTS); 71 | 72 | int AddSeqToTree(const char sequence[], const int offset, const int klen, treeBranch_t *pRoot, const int assemPart); 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /src/illumina2crossbow.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | # PLEASE SEE LICENSE FILE FOR COPYRIGHT (all rights reserved) AND LICENSE (UoI/NCSA) 4 | 5 | our (@name,@fa,@qu); 6 | 7 | #TODO support unpaired fasta / fastq 8 | my $state; 9 | my $isFasta = undef; 10 | my $lastName; 11 | while (<>) { 12 | if (not defined $isFasta) { 13 | if (!/^([>\@])/) { 14 | die "Invalid fasta or fastq!"; 15 | } 16 | if ($1 eq '>') { 17 | $isFasta = 1; 18 | } else { 19 | $isFasta = 0; 20 | } 21 | } 22 | if ($isFasta) { 23 | if (!/^>(\S+)\/(\d)$/) { 24 | die "Invalid fasta line: $_!"; 25 | } 26 | if ($2 eq '1' || (defined $lastName && $lastName ne $1)) { 27 | printCrossbow(); 28 | } 29 | $state = $2; 30 | $name[$state] = $lastName = $1; 31 | chomp($fa[$state] = <>); 32 | } else { 33 | if (!/^@(\S+)\/(\d)$/) { 34 | die "Invalid fastq line: $_!"; 35 | } 36 | if ($2 eq '1') { 37 | printCrossbow(); 38 | } 39 | $state = $2; 40 | $name[$state] = $lastName = $1; 41 | chomp($fa[$state] = <>); 42 | my $dummy = <>; 43 | chomp($qu[$state] = <>); 44 | } 45 | } 46 | printCrossbow(); 47 | 48 | sub printCrossbow { 49 | return unless defined $name[1] && defined $fa[1] && defined $name[2] && defined $fa[2]; 50 | print join("\t", $name[1], $fa[1], defined $qu[1] ? $qu[1] :'a' x length($fa[1]), $fa[2], defined $qu[2] ? $qu[2] : 'a' x length($fa[2])) . "\n"; 51 | @name = (); 52 | @fa = (); 53 | @qu = (); 54 | } 55 | -------------------------------------------------------------------------------- /src/runBowtieOnPair.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | reference=$1 4 | pairedFastq=$2 5 | cores=$3 6 | dir1=$4 7 | ins1=$5 8 | std1=$6 9 | stdWidth=$7 10 | dir2=$8 11 | ins2=$9 12 | std2=${10} 13 | 14 | out=${reference##*/}-${2##*/} 15 | 16 | USAGE="Proper Usage: 17 | $0 reference.fa paired.fq numCores dir1 ins1 std1 [stdWidth [ dir2 ins2 std2 ]] 18 | 19 | " 20 | 21 | if [ $# -lt 6 ] || [ ! -f $reference ] || [ ! -f $pairedFastq ] 22 | then 23 | echo "$USAGE" 1>&2 24 | exit 1 25 | fi 26 | 27 | [ -n "$stdWidth" ] || stdWidth=10 28 | 29 | if [ ! -d "$TMPDIR" ] 30 | then 31 | TMPDIR=/tmp 32 | fi 33 | export TMPDIR 34 | 35 | set -e 36 | not1=$TMPDIR/not1.$$ 37 | not2=$TMPDIR/not2.$$ 38 | not3=$TMPDIR/not3.$$ 39 | 40 | CLEAN="$not1 $not2 $not3" 41 | cleanup() 42 | { 43 | state=$? 44 | trap '' 0 1 2 3 15 45 | if [ $state -ne 0 ] 46 | then 47 | echo "ERROR" 1>&1 48 | fi 49 | rm -rf $CLEAN 50 | exit $? 51 | } 52 | trap cleanup 0 1 2 3 15 53 | 54 | base=$(dirname $(which $0)) 55 | 56 | if [ ! -f "$reference.1.ebwt" ] 57 | then 58 | echo "Building bowtie-build files on $reference" 1>&2 59 | ref2=$TMPDIR/${reference##*/} 60 | ln -s $reference $ref2 61 | reference=$ref2 62 | CLEAN="$CLEAN $reference*" 63 | bowtie-build $reference $reference 64 | fi 65 | 66 | bowtieOpts="-p $cores -a -l 16 -v 3 -S -t -r --phred64-quals" 67 | 68 | echo "first mapping with the primary mate pair orientations $dir1" 1>&2 69 | $base/illumina2crossbow.pl $pairedFastq \ 70 | | bowtie $bowtieOpts --un $not1 \ 71 | --$dir1 --minins $((ins1-std1*stdWidth)) --maxins $((ins1+std1*stdWidth)) \ 72 | $reference --12 - \ 73 | | awk 'and($2,0x04) != 0x04 {print}' \ 74 | | gzip -c > $out.paired.sam.gz 75 | 76 | 77 | if [ -n "$dir2" ] 78 | then 79 | echo "mapping with the secondary orientation $dir2" 1>&2 80 | bowtie $bowtieOpts --sam-nohead --un $not2 \ 81 | --$dir2 --minins $((ins2-std2*stdWidth)) --maxins $((ins2+std2*stdWidth)) \ 82 | $reference --12 $not1 \ 83 | | awk 'and($2,0x04) != 0x04 {print}' \ 84 | | gzip -c >> $out.paired.sam.gz 85 | else 86 | rm $not2 87 | ln $not1 $not2 88 | fi 89 | 90 | for dir in fr rf ff 91 | do 92 | # map with any orientation, not already attempted 93 | if [ -s "$fallthrough" ] && [ "$dir" != "$dir1" ] && [ "$dir" != "$dir2" ] 94 | then 95 | echo "mapping with abnormal orientation $dir" 1>&2 96 | bowtie $bowtieOpts --sam-nohead --un $not3 \ 97 | --$dir --minins 0 --maxins 10000000000 \ 98 | $reference --12 $not2 \ 99 | | awk 'and($2,0x04) != 0x04 {print}' \ 100 | | gzip -c >> $out.paired.sam.gz 101 | mv $not3 $not2 102 | fi 103 | done 104 | 105 | 106 | if [ -s $not2 ] 107 | then 108 | # map orphans 109 | echo "mapping reads whose mate will not map" 1>&2 110 | bowtie $bowtieOpts --sam-nohead --un $out.unmapped $reference --12 $not2 \ 111 | | awk 'and($2,0x04) != 0x04 {print}' \ 112 | | gzip -c > $out.single.sam.gz 113 | fi 114 | 115 | echo "Finished" 1>&2 116 | 117 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | .*.swp 3 | *.a 4 | *.dSYM 5 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/AUTHORS: -------------------------------------------------------------------------------- 1 | Heng Li from the Sanger Institute wrote most of the initial source codes 2 | of SAMtools and various converters. 3 | 4 | Bob Handsaker from the Broad Institute is a major contributor to the 5 | SAM/BAM specification. He designed and implemented the BGZF format, the 6 | underlying indexable compression format for the BAM format. BGZF does 7 | not support arithmetic between file offsets. 8 | 9 | Jue Ruan for the Beijing Genome Institute designed and implemented the 10 | RAZF format, an alternative indexable compression format. RAZF supports 11 | arithmetic between file offsets, at the cost of increased index file 12 | size and the full compatibility with gzip. RAZF is optional and only 13 | used in `faidx' for indexing RAZF compressed fasta files. 14 | 15 | Colin Hercus updated novo2sam.pl to support gapped alignment by 16 | novoalign. 17 | 18 | Petr Danecek contributed the header parsing library sam_header.c and 19 | sam2vcf.pl script and added knet support to the RAZF library. 20 | 21 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/COPYING: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2008-2009 Genome Research Ltd. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /src/samtools-0.1.19/INSTALL: -------------------------------------------------------------------------------- 1 | System Requirements 2 | =================== 3 | 4 | SAMtools depends on the zlib library . Version 1.2.3+ is 5 | preferred and with 1.2.3+ you can compile razip and use it to compress a FASTA 6 | file. SAMtools' faidx is able to index a razip-compressed FASTA file to save 7 | diskspace. Older zlib also works with SAMtools, but razip cannot be compiled. 8 | 9 | The text-based viewer (tview) requires the GNU ncurses library 10 | , which comes with Mac OS X and most of 11 | the modern Linux/Unix distributions. If you do not have this library installed, 12 | you can still compile the rest of SAMtools by manually changing: 13 | `-D_CURSES_LIB=1' to `-D_CURSES_LIB=0' at the line starting with `DFLAGS=', and 14 | comment out the line starting with `LIBCURSES='. 15 | 16 | 17 | Compilation 18 | =========== 19 | 20 | Type `make' to compile samtools. If you have zlib >= 1.2.2.1, you can compile 21 | razip with `make razip'. 22 | 23 | 24 | Installation 25 | ============ 26 | 27 | Copy `samtools', `bcftools/bcftools' and other executables/scripts in `misc' to 28 | a location you want (e.g. a directory in your $PATH). You may also copy 29 | `samtools.1' and `bcftools/bcftools.1' to a directory in your $MANPATH such 30 | that the `man' command may find the manual. 31 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/Makefile: -------------------------------------------------------------------------------- 1 | CC= gcc 2 | CFLAGS= -g -Wall -O2 3 | #LDFLAGS= -Wl,-rpath,\$$ORIGIN/../lib 4 | DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_USE_KNETFILE -D_CURSES_LIB=1 5 | KNETFILE_O= knetfile.o 6 | LOBJS= bgzf.o kstring.o bam_aux.o bam.o bam_import.o sam.o bam_index.o \ 7 | bam_pileup.o bam_lpileup.o bam_md.o razf.o faidx.o bedidx.o \ 8 | $(KNETFILE_O) bam_sort.o sam_header.o bam_reheader.o kprobaln.o bam_cat.o 9 | AOBJS= bam_tview.o bam_plcmd.o sam_view.o \ 10 | bam_rmdup.o bam_rmdupse.o bam_mate.o bam_stat.o bam_color.o \ 11 | bamtk.o kaln.o bam2bcf.o bam2bcf_indel.o errmod.o sample.o \ 12 | cut_target.o phase.o bam2depth.o padding.o bedcov.o bamshuf.o \ 13 | bam_tview_curses.o bam_tview_html.o 14 | PROG= samtools 15 | INCLUDES= -I. 16 | SUBDIRS= . bcftools misc 17 | LIBPATH= 18 | LIBCURSES= -lcurses # -lXCurses 19 | 20 | .SUFFIXES:.c .o 21 | .PHONY: all lib 22 | 23 | .c.o: 24 | $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@ 25 | 26 | all-recur lib-recur clean-recur cleanlocal-recur install-recur: 27 | @target=`echo $@ | sed s/-recur//`; \ 28 | wdir=`pwd`; \ 29 | list='$(SUBDIRS)'; for subdir in $$list; do \ 30 | cd $$subdir; \ 31 | $(MAKE) CC="$(CC)" DFLAGS="$(DFLAGS)" CFLAGS="$(CFLAGS)" \ 32 | INCLUDES="$(INCLUDES)" LIBPATH="$(LIBPATH)" $$target || exit 1; \ 33 | cd $$wdir; \ 34 | done; 35 | 36 | all:$(PROG) 37 | 38 | .PHONY:all lib clean cleanlocal 39 | .PHONY:all-recur lib-recur clean-recur cleanlocal-recur install-recur 40 | 41 | lib:libbam.a 42 | 43 | libbam.a:$(LOBJS) 44 | $(AR) -csru $@ $(LOBJS) 45 | 46 | samtools:lib-recur $(AOBJS) 47 | $(CC) $(CFLAGS) -o $@ $(AOBJS) $(LDFLAGS) libbam.a -Lbcftools -lbcf $(LIBPATH) $(LIBCURSES) -lm -lz -lpthread 48 | 49 | razip:razip.o razf.o $(KNETFILE_O) 50 | $(CC) $(CFLAGS) -o $@ $^ -lz 51 | 52 | bgzip:bgzip.o bgzf.o $(KNETFILE_O) 53 | $(CC) $(CFLAGS) -o $@ $^ -lz -lpthread 54 | 55 | bgzf.o:bgzf.c bgzf.h 56 | $(CC) -c $(CFLAGS) $(DFLAGS) -DBGZF_CACHE $(INCLUDES) bgzf.c -o $@ 57 | 58 | razip.o:razf.h 59 | bam.o:bam.h razf.h bam_endian.h kstring.h sam_header.h 60 | sam.o:sam.h bam.h 61 | bam_import.o:bam.h kseq.h khash.h razf.h 62 | bam_pileup.o:bam.h razf.h ksort.h 63 | bam_plcmd.o:bam.h faidx.h bcftools/bcf.h bam2bcf.h 64 | bam_index.o:bam.h khash.h ksort.h razf.h bam_endian.h 65 | bam_lpileup.o:bam.h ksort.h 66 | bam_tview.o:bam.h faidx.h bam_tview.h 67 | bam_tview_curses.o:bam.h faidx.h bam_tview.h 68 | bam_tview_html.o:bam.h faidx.h bam_tview.h 69 | bam_sort.o:bam.h ksort.h razf.h 70 | bam_md.o:bam.h faidx.h 71 | sam_header.o:sam_header.h khash.h 72 | bcf.o:bcftools/bcf.h 73 | bam2bcf.o:bam2bcf.h errmod.h bcftools/bcf.h 74 | bam2bcf_indel.o:bam2bcf.h 75 | errmod.o:errmod.h 76 | phase.o:bam.h khash.h ksort.h 77 | bamtk.o:bam.h 78 | 79 | faidx.o:faidx.h razf.h khash.h 80 | faidx_main.o:faidx.h razf.h 81 | 82 | 83 | libbam.1.dylib-local:$(LOBJS) 84 | libtool -dynamic $(LOBJS) -o libbam.1.dylib -lc -lz 85 | 86 | libbam.so.1-local:$(LOBJS) 87 | $(CC) -shared -Wl,-soname,libbam.so -o libbam.so.1 $(LOBJS) -lc -lz 88 | 89 | dylib: 90 | @$(MAKE) cleanlocal; \ 91 | case `uname` in \ 92 | Linux) $(MAKE) CFLAGS="$(CFLAGS) -fPIC" libbam.so.1-local;; \ 93 | Darwin) $(MAKE) CFLAGS="$(CFLAGS) -fPIC" libbam.1.dylib-local;; \ 94 | *) echo 'Unknown OS';; \ 95 | esac 96 | 97 | 98 | cleanlocal: 99 | rm -fr gmon.out *.o a.out *.exe *.dSYM razip bgzip $(PROG) *~ *.a *.so.* *.so *.dylib 100 | 101 | clean:cleanlocal-recur 102 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/Makefile.mingw: -------------------------------------------------------------------------------- 1 | CC= gcc.exe 2 | AR= ar.exe 3 | CFLAGS= -g -Wall -O2 4 | DFLAGS= -D_USE_KNETFILE -D_CURSES_LIB=2 5 | KNETFILE_O= knetfile.o 6 | LOBJS= bgzf.o kstring.o bam_aux.o bam.o bam_import.o sam.o bam_index.o \ 7 | bam_pileup.o bam_lpileup.o bam_md.o razf.o faidx.o \ 8 | $(KNETFILE_O) bam_sort.o sam_header.o bam_reheader.o kprobaln.o bedidx.o 9 | AOBJS= bam_tview.o bam_plcmd.o sam_view.o \ 10 | bam_rmdup.o bam_rmdupse.o bam_mate.o bam_stat.o bam_color.o \ 11 | bamtk.o kaln.o bam2bcf.o bam2bcf_indel.o errmod.o sample.o \ 12 | cut_target.o phase.o bam_cat.o bam2depth.o 13 | BCFOBJS= bcftools/bcf.o bcftools/fet.o bcftools/bcf2qcall.o bcftools/bcfutils.o \ 14 | bcftools/call1.o bcftools/index.o bcftools/kfunc.o bcftools/em.o \ 15 | bcftools/kmin.o bcftools/prob1.o bcftools/vcf.o bcftools/mut.o 16 | PROG= samtools.exe bcftools.exe 17 | INCLUDES= -I. -Iwin32 18 | SUBDIRS= . 19 | LIBPATH= 20 | 21 | .SUFFIXES:.c .o 22 | 23 | .c.o: 24 | $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@ 25 | 26 | all:$(PROG) 27 | 28 | .PHONY:all lib clean cleanlocal 29 | .PHONY:all-recur lib-recur clean-recur cleanlocal-recur install-recur 30 | 31 | lib:libbam.a 32 | 33 | libbam.a:$(LOBJS) 34 | $(AR) -cru $@ $(LOBJS) 35 | 36 | samtools.exe:$(AOBJS) libbam.a $(BCFOBJS) 37 | $(CC) $(CFLAGS) -o $@ $(AOBJS) $(BCFOBJS) $(LIBPATH) -lm -L. -lbam -Lwin32 -lz -lcurses -lws2_32 38 | 39 | bcftools.exe:$(BCFOBJS) bcftools/main.o kstring.o bgzf.o knetfile.o bedidx.o 40 | $(CC) $(CFLAGS) -o $@ $(BCFOBJS) bcftools/main.o kstring.o bgzf.o knetfile.o bedidx.o -lm -Lwin32 -lz -lws2_32 41 | 42 | razip.o:razf.h 43 | bam.o:bam.h razf.h bam_endian.h kstring.h sam_header.h 44 | sam.o:sam.h bam.h 45 | bam_import.o:bam.h kseq.h khash.h razf.h 46 | bam_pileup.o:bam.h razf.h ksort.h 47 | bam_plcmd.o:bam.h faidx.h bcftools/bcf.h bam2bcf.h 48 | bam_index.o:bam.h khash.h ksort.h razf.h bam_endian.h 49 | bam_lpileup.o:bam.h ksort.h 50 | bam_tview.o:bam.h faidx.h 51 | bam_sort.o:bam.h ksort.h razf.h 52 | bam_md.o:bam.h faidx.h 53 | sam_header.o:sam_header.h khash.h 54 | bcf.o:bcftools/bcf.h 55 | bam2bcf.o:bam2bcf.h errmod.h bcftools/bcf.h 56 | bam2bcf_indel.o:bam2bcf.h 57 | errmod.o:errmod.h 58 | 59 | faidx.o:faidx.h razf.h khash.h 60 | faidx_main.o:faidx.h razf.h 61 | 62 | clean: 63 | rm -fr gmon.out *.o a.out *.exe *.dSYM razip bgzip $(PROG) *~ *.a *.so.* *.so *.dylib 64 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bam2bcf.h: -------------------------------------------------------------------------------- 1 | #ifndef BAM2BCF_H 2 | #define BAM2BCF_H 3 | 4 | #include 5 | #include "errmod.h" 6 | #include "bcftools/bcf.h" 7 | 8 | #define B2B_INDEL_NULL 10000 9 | 10 | #define B2B_FMT_DP 0x1 11 | #define B2B_FMT_SP 0x2 12 | #define B2B_FMT_DV 0x4 13 | 14 | typedef struct __bcf_callaux_t { 15 | int capQ, min_baseQ; 16 | int openQ, extQ, tandemQ; // for indels 17 | int min_support, max_support; // for collecting indel candidates 18 | double min_frac, max_frac; // for collecting indel candidates 19 | int per_sample_flt; // indel filtering strategy 20 | int *ref_pos, *alt_pos, npos; // for ReadPosBias 21 | // for internal uses 22 | int max_bases; 23 | int indel_types[4]; 24 | int maxins, indelreg; 25 | int read_len; 26 | char *inscns; 27 | uint16_t *bases; 28 | errmod_t *e; 29 | void *rghash; 30 | } bcf_callaux_t; 31 | 32 | typedef struct { 33 | int depth, n_supp, ori_depth, qsum[4]; 34 | unsigned int anno[16]; 35 | float p[25]; 36 | } bcf_callret1_t; 37 | 38 | typedef struct { 39 | int a[5]; // alleles: ref, alt, alt2, alt3 40 | float qsum[4]; 41 | int n, n_alleles, shift, ori_ref, unseen; 42 | int n_supp; // number of supporting non-reference reads 43 | unsigned int anno[16], depth, ori_depth; 44 | uint8_t *PL; 45 | float vdb; // variant distance bias 46 | float read_pos_bias; 47 | struct { float avg, var; int dp; } read_pos; 48 | } bcf_call_t; 49 | 50 | #ifdef __cplusplus 51 | extern "C" { 52 | #endif 53 | 54 | bcf_callaux_t *bcf_call_init(double theta, int min_baseQ); 55 | void bcf_call_destroy(bcf_callaux_t *bca); 56 | int bcf_call_glfgen(int _n, const bam_pileup1_t *pl, int ref_base, bcf_callaux_t *bca, bcf_callret1_t *r); 57 | int bcf_call_combine(int n, const bcf_callret1_t *calls, bcf_callaux_t *bca, int ref_base /*4-bit*/, bcf_call_t *call); 58 | int bcf_call2bcf(int tid, int pos, bcf_call_t *bc, bcf1_t *b, bcf_callret1_t *bcr, int fmt_flag, 59 | const bcf_callaux_t *bca, const char *ref); 60 | int bcf_call_gap_prep(int n, int *n_plp, bam_pileup1_t **plp, int pos, bcf_callaux_t *bca, const char *ref, 61 | const void *rghash); 62 | 63 | #ifdef __cplusplus 64 | } 65 | #endif 66 | 67 | #endif 68 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bam_endian.h: -------------------------------------------------------------------------------- 1 | #ifndef BAM_ENDIAN_H 2 | #define BAM_ENDIAN_H 3 | 4 | #include 5 | 6 | static inline int bam_is_big_endian() 7 | { 8 | long one= 1; 9 | return !(*((char *)(&one))); 10 | } 11 | static inline uint16_t bam_swap_endian_2(uint16_t v) 12 | { 13 | return (uint16_t)(((v & 0x00FF00FFU) << 8) | ((v & 0xFF00FF00U) >> 8)); 14 | } 15 | static inline void *bam_swap_endian_2p(void *x) 16 | { 17 | *(uint16_t*)x = bam_swap_endian_2(*(uint16_t*)x); 18 | return x; 19 | } 20 | static inline uint32_t bam_swap_endian_4(uint32_t v) 21 | { 22 | v = ((v & 0x0000FFFFU) << 16) | (v >> 16); 23 | return ((v & 0x00FF00FFU) << 8) | ((v & 0xFF00FF00U) >> 8); 24 | } 25 | static inline void *bam_swap_endian_4p(void *x) 26 | { 27 | *(uint32_t*)x = bam_swap_endian_4(*(uint32_t*)x); 28 | return x; 29 | } 30 | static inline uint64_t bam_swap_endian_8(uint64_t v) 31 | { 32 | v = ((v & 0x00000000FFFFFFFFLLU) << 32) | (v >> 32); 33 | v = ((v & 0x0000FFFF0000FFFFLLU) << 16) | ((v & 0xFFFF0000FFFF0000LLU) >> 16); 34 | return ((v & 0x00FF00FF00FF00FFLLU) << 8) | ((v & 0xFF00FF00FF00FF00LLU) >> 8); 35 | } 36 | static inline void *bam_swap_endian_8p(void *x) 37 | { 38 | *(uint64_t*)x = bam_swap_endian_8(*(uint64_t*)x); 39 | return x; 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bam_reheader.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "knetfile.h" 4 | #include "bgzf.h" 5 | #include "bam.h" 6 | 7 | #define BUF_SIZE 0x10000 8 | 9 | int bam_reheader(BGZF *in, const bam_header_t *h, int fd) 10 | { 11 | BGZF *fp; 12 | bam_header_t *old; 13 | int len; 14 | uint8_t *buf; 15 | if (in->is_write) return -1; 16 | buf = malloc(BUF_SIZE); 17 | old = bam_header_read(in); 18 | fp = bgzf_fdopen(fd, "w"); 19 | bam_header_write(fp, h); 20 | if (in->block_offset < in->block_length) { 21 | bgzf_write(fp, in->uncompressed_block + in->block_offset, in->block_length - in->block_offset); 22 | bgzf_flush(fp); 23 | } 24 | #ifdef _USE_KNETFILE 25 | while ((len = knet_read(in->fp, buf, BUF_SIZE)) > 0) 26 | fwrite(buf, 1, len, fp->fp); 27 | #else 28 | while (!feof(in->file) && (len = fread(buf, 1, BUF_SIZE, in->file)) > 0) 29 | fwrite(buf, 1, len, fp->file); 30 | #endif 31 | free(buf); 32 | fp->block_offset = in->block_offset = 0; 33 | bgzf_close(fp); 34 | return 0; 35 | } 36 | 37 | int main_reheader(int argc, char *argv[]) 38 | { 39 | bam_header_t *h; 40 | BGZF *in; 41 | if (argc != 3) { 42 | fprintf(stderr, "Usage: samtools reheader \n"); 43 | return 1; 44 | } 45 | { // read the header 46 | tamFile fph = sam_open(argv[1]); 47 | if (fph == 0) { 48 | fprintf(stderr, "[%s] fail to read the header from %s.\n", __func__, argv[1]); 49 | return 1; 50 | } 51 | h = sam_header_read(fph); 52 | sam_close(fph); 53 | } 54 | in = strcmp(argv[2], "-")? bam_open(argv[2], "r") : bam_dopen(fileno(stdin), "r"); 55 | if (in == 0) { 56 | fprintf(stderr, "[%s] fail to open file %s.\n", __func__, argv[2]); 57 | return 1; 58 | } 59 | bam_reheader(in, h, fileno(stdout)); 60 | bgzf_close(in); 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bam_stat.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "bam.h" 4 | 5 | typedef struct { 6 | long long n_reads[2], n_mapped[2], n_pair_all[2], n_pair_map[2], n_pair_good[2]; 7 | long long n_sgltn[2], n_read1[2], n_read2[2]; 8 | long long n_dup[2]; 9 | long long n_diffchr[2], n_diffhigh[2]; 10 | } bam_flagstat_t; 11 | 12 | #define flagstat_loop(s, c) do { \ 13 | int w = ((c)->flag & BAM_FQCFAIL)? 1 : 0; \ 14 | ++(s)->n_reads[w]; \ 15 | if ((c)->flag & BAM_FPAIRED) { \ 16 | ++(s)->n_pair_all[w]; \ 17 | if ((c)->flag & BAM_FPROPER_PAIR) ++(s)->n_pair_good[w]; \ 18 | if ((c)->flag & BAM_FREAD1) ++(s)->n_read1[w]; \ 19 | if ((c)->flag & BAM_FREAD2) ++(s)->n_read2[w]; \ 20 | if (((c)->flag & BAM_FMUNMAP) && !((c)->flag & BAM_FUNMAP)) ++(s)->n_sgltn[w]; \ 21 | if (!((c)->flag & BAM_FUNMAP) && !((c)->flag & BAM_FMUNMAP)) { \ 22 | ++(s)->n_pair_map[w]; \ 23 | if ((c)->mtid != (c)->tid) { \ 24 | ++(s)->n_diffchr[w]; \ 25 | if ((c)->qual >= 5) ++(s)->n_diffhigh[w]; \ 26 | } \ 27 | } \ 28 | } \ 29 | if (!((c)->flag & BAM_FUNMAP)) ++(s)->n_mapped[w]; \ 30 | if ((c)->flag & BAM_FDUP) ++(s)->n_dup[w]; \ 31 | } while (0) 32 | 33 | bam_flagstat_t *bam_flagstat_core(bamFile fp) 34 | { 35 | bam_flagstat_t *s; 36 | bam1_t *b; 37 | bam1_core_t *c; 38 | int ret; 39 | s = (bam_flagstat_t*)calloc(1, sizeof(bam_flagstat_t)); 40 | b = bam_init1(); 41 | c = &b->core; 42 | while ((ret = bam_read1(fp, b)) >= 0) 43 | flagstat_loop(s, c); 44 | bam_destroy1(b); 45 | if (ret != -1) 46 | fprintf(stderr, "[bam_flagstat_core] Truncated file? Continue anyway.\n"); 47 | return s; 48 | } 49 | int bam_flagstat(int argc, char *argv[]) 50 | { 51 | bamFile fp; 52 | bam_header_t *header; 53 | bam_flagstat_t *s; 54 | if (argc == optind) { 55 | fprintf(stderr, "Usage: samtools flagstat \n"); 56 | return 1; 57 | } 58 | fp = strcmp(argv[optind], "-")? bam_open(argv[optind], "r") : bam_dopen(fileno(stdin), "r"); 59 | assert(fp); 60 | header = bam_header_read(fp); 61 | s = bam_flagstat_core(fp); 62 | printf("%lld + %lld in total (QC-passed reads + QC-failed reads)\n", s->n_reads[0], s->n_reads[1]); 63 | printf("%lld + %lld duplicates\n", s->n_dup[0], s->n_dup[1]); 64 | printf("%lld + %lld mapped (%.2f%%:%.2f%%)\n", s->n_mapped[0], s->n_mapped[1], (float)s->n_mapped[0] / s->n_reads[0] * 100.0, (float)s->n_mapped[1] / s->n_reads[1] * 100.0); 65 | printf("%lld + %lld paired in sequencing\n", s->n_pair_all[0], s->n_pair_all[1]); 66 | printf("%lld + %lld read1\n", s->n_read1[0], s->n_read1[1]); 67 | printf("%lld + %lld read2\n", s->n_read2[0], s->n_read2[1]); 68 | printf("%lld + %lld properly paired (%.2f%%:%.2f%%)\n", s->n_pair_good[0], s->n_pair_good[1], (float)s->n_pair_good[0] / s->n_pair_all[0] * 100.0, (float)s->n_pair_good[1] / s->n_pair_all[1] * 100.0); 69 | printf("%lld + %lld with itself and mate mapped\n", s->n_pair_map[0], s->n_pair_map[1]); 70 | printf("%lld + %lld singletons (%.2f%%:%.2f%%)\n", s->n_sgltn[0], s->n_sgltn[1], (float)s->n_sgltn[0] / s->n_pair_all[0] * 100.0, (float)s->n_sgltn[1] / s->n_pair_all[1] * 100.0); 71 | printf("%lld + %lld with mate mapped to a different chr\n", s->n_diffchr[0], s->n_diffchr[1]); 72 | printf("%lld + %lld with mate mapped to a different chr (mapQ>=5)\n", s->n_diffhigh[0], s->n_diffhigh[1]); 73 | free(s); 74 | bam_header_destroy(header); 75 | bam_close(fp); 76 | return 0; 77 | } 78 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bam_tview.h: -------------------------------------------------------------------------------- 1 | #ifndef BAM_TVIEW_H 2 | #define BAM_TVIEW_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include "bam.h" 11 | #include "faidx.h" 12 | #include "bam2bcf.h" 13 | #include "sam_header.h" 14 | #include "khash.h" 15 | 16 | KHASH_MAP_INIT_STR(kh_rg, const char *) 17 | 18 | typedef struct AbstractTview { 19 | int mrow, mcol; 20 | 21 | bam_index_t *idx; 22 | bam_lplbuf_t *lplbuf; 23 | bam_header_t *header; 24 | bamFile fp; 25 | int curr_tid, left_pos; 26 | faidx_t *fai; 27 | bcf_callaux_t *bca; 28 | 29 | int ccol, last_pos, row_shift, base_for, color_for, is_dot, l_ref, ins, no_skip, show_name; 30 | char *ref; 31 | khash_t(kh_rg) *rg_hash; 32 | /* callbacks */ 33 | void (*my_destroy)(struct AbstractTview* ); 34 | void (*my_mvprintw)(struct AbstractTview* ,int,int,const char*,...); 35 | void (*my_mvaddch)(struct AbstractTview*,int,int,int); 36 | void (*my_attron)(struct AbstractTview*,int); 37 | void (*my_attroff)(struct AbstractTview*,int); 38 | void (*my_clear)(struct AbstractTview*); 39 | int (*my_colorpair)(struct AbstractTview*,int); 40 | int (*my_drawaln)(struct AbstractTview*,int,int); 41 | int (*my_loop)(struct AbstractTview*); 42 | int (*my_underline)(struct AbstractTview*); 43 | } tview_t; 44 | 45 | 46 | char bam_aux_getCEi(bam1_t *b, int i); 47 | char bam_aux_getCSi(bam1_t *b, int i); 48 | char bam_aux_getCQi(bam1_t *b, int i); 49 | 50 | #define TV_MIN_ALNROW 2 51 | #define TV_MAX_GOTO 40 52 | #define TV_LOW_MAPQ 10 53 | 54 | #define TV_COLOR_MAPQ 0 55 | #define TV_COLOR_BASEQ 1 56 | #define TV_COLOR_NUCL 2 57 | #define TV_COLOR_COL 3 58 | #define TV_COLOR_COLQ 4 59 | 60 | #define TV_BASE_NUCL 0 61 | #define TV_BASE_COLOR_SPACE 1 62 | 63 | int tv_pl_func(uint32_t tid, uint32_t pos, int n, const bam_pileup1_t *pl, void *data); 64 | int base_tv_init(tview_t*,const char *fn, const char *fn_fa, const char *samples); 65 | void base_tv_destroy(tview_t*); 66 | int base_draw_aln(tview_t *tv, int tid, int pos); 67 | 68 | typedef struct Tixel 69 | { 70 | int ch; 71 | int attributes; 72 | }tixel_t; 73 | 74 | #endif 75 | 76 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bcftools/Makefile: -------------------------------------------------------------------------------- 1 | CC= gcc 2 | CFLAGS= -g -Wall -O2 #-m64 #-arch ppc 3 | DFLAGS= -D_FILE_OFFSET_BITS=64 -D_USE_KNETFILE 4 | LOBJS= bcf.o vcf.o bcfutils.o prob1.o em.o kfunc.o kmin.o index.o fet.o mut.o bcf2qcall.o 5 | OMISC= .. 6 | AOBJS= call1.o main.o $(OMISC)/kstring.o $(OMISC)/bgzf.o $(OMISC)/knetfile.o $(OMISC)/bedidx.o 7 | PROG= bcftools 8 | INCLUDES= 9 | SUBDIRS= . 10 | 11 | .SUFFIXES:.c .o 12 | 13 | .c.o: 14 | $(CC) -c $(CFLAGS) $(DFLAGS) -I.. $(INCLUDES) $< -o $@ 15 | 16 | all-recur lib-recur clean-recur cleanlocal-recur install-recur: 17 | @target=`echo $@ | sed s/-recur//`; \ 18 | wdir=`pwd`; \ 19 | list='$(SUBDIRS)'; for subdir in $$list; do \ 20 | cd $$subdir; \ 21 | $(MAKE) CC="$(CC)" DFLAGS="$(DFLAGS)" CFLAGS="$(CFLAGS)" \ 22 | INCLUDES="$(INCLUDES)" LIBPATH="$(LIBPATH)" $$target || exit 1; \ 23 | cd $$wdir; \ 24 | done; 25 | 26 | all:$(PROG) 27 | 28 | lib:libbcf.a 29 | 30 | libbcf.a:$(LOBJS) 31 | $(AR) -csru $@ $(LOBJS) 32 | 33 | bcftools:lib $(AOBJS) 34 | $(CC) $(CFLAGS) -o $@ $(AOBJS) -L. $(LIBPATH) -lbcf -lm -lz -lpthread 35 | 36 | bcf.o:bcf.h 37 | vcf.o:bcf.h 38 | index.o:bcf.h 39 | bcfutils.o:bcf.h 40 | prob1.o:prob1.h bcf.h 41 | call1.o:prob1.h bcf.h 42 | bcf2qcall.o:bcf.h 43 | main.o:bcf.h 44 | 45 | bcf.pdf:bcf.tex 46 | pdflatex bcf 47 | 48 | cleanlocal: 49 | rm -fr gmon.out *.o a.out *.dSYM $(PROG) *~ *.a bcf.aux bcf.log bcf.pdf *.class libbcf.*.dylib libbcf.so* 50 | 51 | clean:cleanlocal-recur 52 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bcftools/README: -------------------------------------------------------------------------------- 1 | The view command of bcftools calls variants, tests Hardy-Weinberg 2 | equilibrium (HWE), tests allele balances and estimates allele frequency. 3 | 4 | This command calls a site as a potential variant if P(ref|D,F) is below 5 | 0.9 (controlled by the -p option), where D is data and F is the prior 6 | allele frequency spectrum (AFS). 7 | 8 | The view command performs two types of allele balance tests, both based 9 | on Fisher's exact test for 2x2 contingency tables with the row variable 10 | being reference allele or not. In the first table, the column variable 11 | is strand. Two-tail P-value is taken. We test if variant bases tend to 12 | come from one strand. In the second table, the column variable is 13 | whether a base appears in the first or the last 11bp of the read. 14 | One-tail P-value is taken. We test if variant bases tend to occur 15 | towards the end of reads, which is usually an indication of 16 | misalignment. 17 | 18 | Site allele frequency is estimated in two ways. In the first way, the 19 | frequency is esimated as \argmax_f P(D|f) under the assumption of 20 | HWE. Prior AFS is not used. In the second way, the frequency is 21 | estimated as the posterior expectation of allele counts \sum_k 22 | kP(k|D,F), dividied by the total number of haplotypes. HWE is not 23 | assumed, but the estimate depends on the prior AFS. The two estimates 24 | largely agree when the signal is strong, but may differ greatly on weak 25 | sites as in this case, the prior plays an important role. 26 | 27 | To test HWE, we calculate the posterior distribution of genotypes 28 | (ref-hom, het and alt-hom). Chi-square test is performed. It is worth 29 | noting that the model used here is prior dependent and assumes HWE, 30 | which is different from both models for allele frequency estimate. The 31 | new model actually yields a third estimate of site allele frequency. 32 | 33 | The estimate allele frequency spectrum is printed to stderr per 64k 34 | sites. The estimate is in fact only the first round of a EM 35 | procedure. The second model (not the model for HWE testing) is used to 36 | estimate the AFS. -------------------------------------------------------------------------------- /src/samtools-0.1.19/bcftools/bcf2qcall.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include "bcf.h" 6 | 7 | static int8_t nt4_table[256] = { 8 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 /*'-'*/, 4, 4, 11 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12 | 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 13 | 4, 4, 4, 4, 3, 4, 4, 4, -1, 4, 4, 4, 4, 4, 4, 4, 14 | 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, 15 | 4, 4, 4, 4, 3, 4, 4, 4, -1, 4, 4, 4, 4, 4, 4, 4, 16 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 17 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 18 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 19 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 20 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 21 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 23 | 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 24 | }; 25 | 26 | static int read_I16(bcf1_t *b, int anno[16]) 27 | { 28 | char *p; 29 | int i; 30 | if ((p = strstr(b->info, "I16=")) == 0) return -1; 31 | p += 4; 32 | for (i = 0; i < 16; ++i) { 33 | anno[i] = strtol(p, &p, 10); 34 | if (anno[i] == 0 && (errno == EINVAL || errno == ERANGE)) return -2; 35 | ++p; 36 | } 37 | return 0; 38 | } 39 | 40 | int bcf_2qcall(bcf_hdr_t *h, bcf1_t *b) 41 | { 42 | int a[4], k, g[10], l, map[4], k1, j, i, i0, anno[16], dp, mq, d_rest; 43 | char *s; 44 | if (b->ref[1] != 0 || b->n_alleles > 4) return -1; // ref is not a single base 45 | for (i = 0; i < b->n_gi; ++i) 46 | if (b->gi[i].fmt == bcf_str2int("PL", 2)) break; 47 | if (i == b->n_gi) return -1; // no PL 48 | if (read_I16(b, anno) != 0) return -1; // no I16; FIXME: can be improved 49 | d_rest = dp = anno[0] + anno[1] + anno[2] + anno[3]; 50 | if (dp == 0) return -1; // depth is zero 51 | mq = (int)(sqrt((double)(anno[9] + anno[11]) / dp) + .499); 52 | i0 = i; 53 | a[0] = nt4_table[(int)b->ref[0]]; 54 | if (a[0] > 3) return -1; // ref is not A/C/G/T 55 | a[1] = a[2] = a[3] = -2; // -1 has a special meaning 56 | if (b->alt[0] == 0) return -1; // no alternate allele 57 | map[0] = map[1] = map[2] = map[3] = -2; 58 | map[a[0]] = 0; 59 | for (k = 0, s = b->alt, k1 = -1; k < 3 && *s; ++k, s += 2) { 60 | if (s[1] != ',' && s[1] != 0) return -1; // ALT is not single base 61 | a[k+1] = nt4_table[(int)*s]; 62 | if (a[k+1] >= 0) map[a[k+1]] = k+1; 63 | else k1 = k+1; 64 | if (s[1] == 0) break; 65 | } 66 | for (k = 0; k < 4; ++k) 67 | if (map[k] < 0) map[k] = k1; 68 | for (i = 0; i < h->n_smpl; ++i) { 69 | int d; 70 | uint8_t *p = b->gi[i0].data + i * b->gi[i0].len; 71 | for (j = 0; j < b->gi[i0].len; ++j) 72 | if (p[j]) break; 73 | d = (int)((double)d_rest / (h->n_smpl - i) + .499); 74 | if (d == 0) d = 1; 75 | if (j == b->gi[i0].len) d = 0; 76 | d_rest -= d; 77 | for (k = j = 0; k < 4; ++k) { 78 | for (l = k; l < 4; ++l) { 79 | int t, x = map[k], y = map[l]; 80 | if (x > y) t = x, x = y, y = t; // swap 81 | g[j++] = p[y * (y+1) / 2 + x]; 82 | } 83 | } 84 | printf("%s\t%d\t%c", h->ns[b->tid], b->pos+1, *b->ref); 85 | printf("\t%d\t%d\t0", d, mq); 86 | for (j = 0; j < 10; ++j) 87 | printf("\t%d", g[j]); 88 | printf("\t%s\n", h->sns[i]); 89 | } 90 | return 0; 91 | } 92 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bcftools/fet.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | /* This program is implemented with ideas from this web page: 5 | * 6 | * http://www.langsrud.com/fisher.htm 7 | */ 8 | 9 | // log\binom{n}{k} 10 | static double lbinom(int n, int k) 11 | { 12 | if (k == 0 || n == k) return 0; 13 | return lgamma(n+1) - lgamma(k+1) - lgamma(n-k+1); 14 | } 15 | 16 | // n11 n12 | n1_ 17 | // n21 n22 | n2_ 18 | //-----------+---- 19 | // n_1 n_2 | n 20 | 21 | // hypergeometric distribution 22 | static double hypergeo(int n11, int n1_, int n_1, int n) 23 | { 24 | return exp(lbinom(n1_, n11) + lbinom(n-n1_, n_1-n11) - lbinom(n, n_1)); 25 | } 26 | 27 | typedef struct { 28 | int n11, n1_, n_1, n; 29 | double p; 30 | } hgacc_t; 31 | 32 | // incremental version of hypergenometric distribution 33 | static double hypergeo_acc(int n11, int n1_, int n_1, int n, hgacc_t *aux) 34 | { 35 | if (n1_ || n_1 || n) { 36 | aux->n11 = n11; aux->n1_ = n1_; aux->n_1 = n_1; aux->n = n; 37 | } else { // then only n11 changed; the rest fixed 38 | if (n11%11 && n11 + aux->n - aux->n1_ - aux->n_1) { 39 | if (n11 == aux->n11 + 1) { // incremental 40 | aux->p *= (double)(aux->n1_ - aux->n11) / n11 41 | * (aux->n_1 - aux->n11) / (n11 + aux->n - aux->n1_ - aux->n_1); 42 | aux->n11 = n11; 43 | return aux->p; 44 | } 45 | if (n11 == aux->n11 - 1) { // incremental 46 | aux->p *= (double)aux->n11 / (aux->n1_ - n11) 47 | * (aux->n11 + aux->n - aux->n1_ - aux->n_1) / (aux->n_1 - n11); 48 | aux->n11 = n11; 49 | return aux->p; 50 | } 51 | } 52 | aux->n11 = n11; 53 | } 54 | aux->p = hypergeo(aux->n11, aux->n1_, aux->n_1, aux->n); 55 | return aux->p; 56 | } 57 | 58 | double kt_fisher_exact(int n11, int n12, int n21, int n22, double *_left, double *_right, double *two) 59 | { 60 | int i, j, max, min; 61 | double p, q, left, right; 62 | hgacc_t aux; 63 | int n1_, n_1, n; 64 | 65 | n1_ = n11 + n12; n_1 = n11 + n21; n = n11 + n12 + n21 + n22; // calculate n1_, n_1 and n 66 | max = (n_1 < n1_) ? n_1 : n1_; // max n11, for right tail 67 | min = n1_ + n_1 - n; 68 | if (min < 0) min = 0; // min n11, for left tail 69 | *two = *_left = *_right = 1.; 70 | if (min == max) return 1.; // no need to do test 71 | q = hypergeo_acc(n11, n1_, n_1, n, &aux); // the probability of the current table 72 | // left tail 73 | p = hypergeo_acc(min, 0, 0, 0, &aux); 74 | for (left = 0., i = min + 1; p < 0.99999999 * q; ++i) // loop until underflow 75 | left += p, p = hypergeo_acc(i, 0, 0, 0, &aux); 76 | --i; 77 | if (p < 1.00000001 * q) left += p; 78 | else --i; 79 | // right tail 80 | p = hypergeo_acc(max, 0, 0, 0, &aux); 81 | for (right = 0., j = max - 1; p < 0.99999999 * q; --j) // loop until underflow 82 | right += p, p = hypergeo_acc(j, 0, 0, 0, &aux); 83 | ++j; 84 | if (p < 1.00000001 * q) right += p; 85 | else ++j; 86 | // two-tail 87 | *two = left + right; 88 | if (*two > 1.) *two = 1.; 89 | // adjust left and right 90 | if (abs(i - n11) < abs(j - n11)) right = 1. - left + q; 91 | else left = 1.0 - right + q; 92 | *_left = left; *_right = right; 93 | return q; 94 | } 95 | 96 | #ifdef FET_MAIN 97 | #include 98 | 99 | int main(int argc, char *argv[]) 100 | { 101 | char id[1024]; 102 | int n11, n12, n21, n22; 103 | double left, right, twotail, prob; 104 | 105 | while (scanf("%s%d%d%d%d", id, &n11, &n12, &n21, &n22) == 5) { 106 | prob = kt_fisher_exact(n11, n12, n21, n22, &left, &right, &twotail); 107 | printf("%s\t%d\t%d\t%d\t%d\t%.6g\t%.6g\t%.6g\t%.6g\n", id, n11, n12, n21, n22, 108 | prob, left, right, twotail); 109 | } 110 | return 0; 111 | } 112 | #endif 113 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bcftools/kmin.h: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2008, 2010 by Attractive Chaos 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining 5 | a copy of this software and associated documentation files (the 6 | "Software"), to deal in the Software without restriction, including 7 | without limitation the rights to use, copy, modify, merge, publish, 8 | distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so, subject to 10 | the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 19 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 20 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | */ 24 | 25 | #ifndef KMIN_H 26 | #define KMIN_H 27 | 28 | #define KMIN_RADIUS 0.5 29 | #define KMIN_EPS 1e-7 30 | #define KMIN_MAXCALL 50000 31 | 32 | typedef double (*kmin_f)(int, double*, void*); 33 | typedef double (*kmin1_f)(double, void*); 34 | 35 | #ifdef __cplusplus 36 | extern "C" { 37 | #endif 38 | 39 | double kmin_hj(kmin_f func, int n, double *x, void *data, double r, double eps, int max_calls); 40 | double kmin_brent(kmin1_f func, double a, double b, void *data, double tol, double *xmin); 41 | 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bcftools/prob1.h: -------------------------------------------------------------------------------- 1 | #ifndef BCF_PROB1_H 2 | #define BCF_PROB1_H 3 | 4 | #include "bcf.h" 5 | 6 | struct __bcf_p1aux_t; 7 | typedef struct __bcf_p1aux_t bcf_p1aux_t; 8 | 9 | typedef struct { 10 | int rank0, perm_rank; // NB: perm_rank is always set to -1 by bcf_p1_cal() 11 | int ac; // ML alternative allele count 12 | double f_exp, f_flat, p_ref_folded, p_ref, p_var_folded, p_var; 13 | double cil, cih; 14 | double cmp[3], p_chi2, lrt; // used by contrast2() 15 | } bcf_p1rst_t; 16 | 17 | typedef struct { 18 | double p[4]; 19 | int mq, depth, is_tested, d[4]; 20 | } anno16_t; 21 | 22 | #define MC_PTYPE_FULL 1 23 | #define MC_PTYPE_COND2 2 24 | #define MC_PTYPE_FLAT 3 25 | 26 | #ifdef __cplusplus 27 | extern "C" { 28 | #endif 29 | 30 | bcf_p1aux_t *bcf_p1_init(int n, uint8_t *ploidy); 31 | void bcf_p1_init_prior(bcf_p1aux_t *ma, int type, double theta); 32 | void bcf_p1_init_subprior(bcf_p1aux_t *ma, int type, double theta); 33 | void bcf_p1_destroy(bcf_p1aux_t *ma); 34 | void bcf_p1_set_ploidy(bcf1_t *b, bcf_p1aux_t *ma); 35 | int bcf_p1_cal(const bcf1_t *b, int do_contrast, bcf_p1aux_t *ma, bcf_p1rst_t *rst); 36 | int call_multiallelic_gt(bcf1_t *b, bcf_p1aux_t *ma, double threshold, int var_only); 37 | int bcf_p1_call_gt(const bcf_p1aux_t *ma, double f0, int k); 38 | void bcf_p1_dump_afs(bcf_p1aux_t *ma); 39 | int bcf_p1_read_prior(bcf_p1aux_t *ma, const char *fn); 40 | int bcf_p1_set_n1(bcf_p1aux_t *b, int n1); 41 | void bcf_p1_set_folded(bcf_p1aux_t *p1a); // only effective when set_n1() is not called 42 | 43 | int bcf_em1(const bcf1_t *b, int n1, int flag, double x[10]); 44 | 45 | #ifdef __cplusplus 46 | } 47 | #endif 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/bedcov.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include "kstring.h" 8 | #include "bgzf.h" 9 | #include "bam.h" 10 | 11 | #include "kseq.h" 12 | KSTREAM_INIT(gzFile, gzread, 16384) 13 | 14 | typedef struct { 15 | bamFile fp; 16 | bam_iter_t iter; 17 | int min_mapQ; 18 | } aux_t; 19 | 20 | static int read_bam(void *data, bam1_t *b) 21 | { 22 | aux_t *aux = (aux_t*)data; 23 | int ret = bam_iter_read(aux->fp, aux->iter, b); 24 | if ((int)b->core.qual < aux->min_mapQ) b->core.flag |= BAM_FUNMAP; 25 | return ret; 26 | } 27 | 28 | int main_bedcov(int argc, char *argv[]) 29 | { 30 | extern void bam_init_header_hash(bam_header_t*); 31 | gzFile fp; 32 | kstring_t str; 33 | kstream_t *ks; 34 | bam_index_t **idx; 35 | bam_header_t *h = 0; 36 | aux_t **aux; 37 | int *n_plp, dret, i, n, c, min_mapQ = 0; 38 | int64_t *cnt; 39 | const bam_pileup1_t **plp; 40 | 41 | while ((c = getopt(argc, argv, "Q:")) >= 0) { 42 | switch (c) { 43 | case 'Q': min_mapQ = atoi(optarg); break; 44 | } 45 | } 46 | if (optind + 2 > argc) { 47 | fprintf(stderr, "Usage: samtools bedcov [...]\n"); 48 | return 1; 49 | } 50 | memset(&str, 0, sizeof(kstring_t)); 51 | n = argc - optind - 1; 52 | aux = calloc(n, sizeof(void*)); 53 | idx = calloc(n, sizeof(void*)); 54 | for (i = 0; i < n; ++i) { 55 | aux[i] = calloc(1, sizeof(aux_t)); 56 | aux[i]->min_mapQ = min_mapQ; 57 | aux[i]->fp = bam_open(argv[i+optind+1], "r"); 58 | idx[i] = bam_index_load(argv[i+optind+1]); 59 | if (aux[i]->fp == 0 || idx[i] == 0) { 60 | fprintf(stderr, "ERROR: fail to open index BAM file '%s'\n", argv[i+optind+1]); 61 | return 2; 62 | } 63 | bgzf_set_cache_size(aux[i]->fp, 20); 64 | if (i == 0) h = bam_header_read(aux[0]->fp); 65 | } 66 | bam_init_header_hash(h); 67 | cnt = calloc(n, 8); 68 | 69 | fp = gzopen(argv[optind], "rb"); 70 | ks = ks_init(fp); 71 | n_plp = calloc(n, sizeof(int)); 72 | plp = calloc(n, sizeof(void*)); 73 | while (ks_getuntil(ks, KS_SEP_LINE, &str, &dret) >= 0) { 74 | char *p, *q; 75 | int tid, beg, end, pos; 76 | bam_mplp_t mplp; 77 | 78 | for (p = q = str.s; *p && *p != '\t'; ++p); 79 | if (*p != '\t') goto bed_error; 80 | *p = 0; tid = bam_get_tid(h, q); *p = '\t'; 81 | if (tid < 0) goto bed_error; 82 | for (q = p = p + 1; isdigit(*p); ++p); 83 | if (*p != '\t') goto bed_error; 84 | *p = 0; beg = atoi(q); *p = '\t'; 85 | for (q = p = p + 1; isdigit(*p); ++p); 86 | if (*p == '\t' || *p == 0) { 87 | int c = *p; 88 | *p = 0; end = atoi(q); *p = c; 89 | } else goto bed_error; 90 | 91 | for (i = 0; i < n; ++i) { 92 | if (aux[i]->iter) bam_iter_destroy(aux[i]->iter); 93 | aux[i]->iter = bam_iter_query(idx[i], tid, beg, end); 94 | } 95 | mplp = bam_mplp_init(n, read_bam, (void**)aux); 96 | bam_mplp_set_maxcnt(mplp, 64000); 97 | memset(cnt, 0, 8 * n); 98 | while (bam_mplp_auto(mplp, &tid, &pos, n_plp, plp) > 0) 99 | if (pos >= beg && pos < end) 100 | for (i = 0; i < n; ++i) cnt[i] += n_plp[i]; 101 | for (i = 0; i < n; ++i) { 102 | kputc('\t', &str); 103 | kputl(cnt[i], &str); 104 | } 105 | puts(str.s); 106 | bam_mplp_destroy(mplp); 107 | continue; 108 | 109 | bed_error: 110 | fprintf(stderr, "Errors in BED line '%s'\n", str.s); 111 | } 112 | free(n_plp); free(plp); 113 | ks_destroy(ks); 114 | gzclose(fp); 115 | 116 | free(cnt); 117 | for (i = 0; i < n; ++i) { 118 | if (aux[i]->iter) bam_iter_destroy(aux[i]->iter); 119 | bam_index_destroy(idx[i]); 120 | bam_close(aux[i]->fp); 121 | free(aux[i]); 122 | } 123 | bam_header_destroy(h); 124 | free(aux); free(idx); 125 | free(str.s); 126 | return 0; 127 | } 128 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/errmod.h: -------------------------------------------------------------------------------- 1 | #ifndef ERRMOD_H 2 | #define ERRMOD_H 3 | 4 | #include 5 | 6 | struct __errmod_coef_t; 7 | 8 | typedef struct { 9 | double depcorr; 10 | struct __errmod_coef_t *coef; 11 | } errmod_t; 12 | 13 | errmod_t *errmod_init(float depcorr); 14 | void errmod_destroy(errmod_t *em); 15 | 16 | /* 17 | n: number of bases 18 | m: maximum base 19 | bases[i]: qual:6, strand:1, base:4 20 | q[i*m+j]: phred-scaled likelihood of (i,j) 21 | */ 22 | int errmod_cal(const errmod_t *em, int n, int m, uint16_t *bases, float *q); 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/00README.txt: -------------------------------------------------------------------------------- 1 | File ex1.fa contains two sequences cut from the human genome 2 | build36. They were exatracted with command: 3 | 4 | samtools faidx human_b36.fa 2:2043966-2045540 20:67967-69550 5 | 6 | Sequence names were changed manually for simplicity. File ex1.sam.gz 7 | contains MAQ alignments exatracted with: 8 | 9 | (samtools view NA18507_maq.bam 2:2044001-2045500; 10 | samtools view NA18507_maq.bam 20:68001-69500) 11 | 12 | and processed with `samtools fixmate' to make it self-consistent as a 13 | standalone alignment. 14 | 15 | To try samtools, you may run the following commands: 16 | 17 | samtools faidx ex1.fa # index the reference FASTA 18 | samtools import ex1.fa.fai ex1.sam.gz ex1.bam # SAM->BAM 19 | samtools index ex1.bam # index BAM 20 | samtools tview ex1.bam ex1.fa # view alignment 21 | samtools pileup -cf ex1.fa ex1.bam # pileup and consensus 22 | samtools pileup -cf ex1.fa -t ex1.fa.fai ex1.sam.gz 23 | 24 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/Makefile: -------------------------------------------------------------------------------- 1 | all:../libbam.a ../samtools ../bcftools/bcftools \ 2 | ex1.glf ex1.pileup.gz ex1.bam.bai ex1f-rmduppe.bam ex1f-rmdupse.bam ex1.glfview.gz ex1.bcf calDepth 3 | @echo; echo \# You can now launch the viewer with: \'samtools tview ex1.bam ex1.fa\'; echo; 4 | 5 | ex1.fa.fai:ex1.fa 6 | ../samtools faidx ex1.fa 7 | ex1.bam:ex1.sam.gz ex1.fa.fai 8 | ../samtools import ex1.fa.fai ex1.sam.gz ex1.bam 9 | ex1.bam.bai:ex1.bam 10 | ../samtools index ex1.bam 11 | ex1.pileup.gz:ex1.bam ex1.fa 12 | ../samtools pileup -cf ex1.fa ex1.bam | gzip > ex1.pileup.gz 13 | ex1.glf:ex1.bam ex1.fa 14 | ../samtools pileup -gf ex1.fa ex1.bam > ex1.glf 15 | ex1.glfview.gz:ex1.glf 16 | ../samtools glfview ex1.glf | gzip > ex1.glfview.gz 17 | ex1a.bam:ex1.bam 18 | ../samtools view -h ex1.bam | awk 'BEGIN{FS=OFS="\t"}{if(/^@/)print;else{$$1=$$1"a";print}}' | ../samtools view -bS - > $@ 19 | ex1b.bam:ex1.bam 20 | ../samtools view -h ex1.bam | awk 'BEGIN{FS=OFS="\t"}{if(/^@/)print;else{$$1=$$1"b";print}}' | ../samtools view -bS - > $@ 21 | ex1f.rg: 22 | (echo "@RG ID:ex1 LB:ex1 SM:ex1"; echo "@RG ID:ex1a LB:ex1 SM:ex1"; echo "@RG ID:ex1b LB:ex1b SM:ex1b") > $@ 23 | ex1f.bam:ex1.bam ex1a.bam ex1b.bam ex1f.rg 24 | ../samtools merge -rh ex1f.rg $@ ex1.bam ex1a.bam ex1b.bam 25 | ex1f-rmduppe.bam:ex1f.bam 26 | ../samtools rmdup ex1f.bam $@ 27 | ex1f-rmdupse.bam:ex1f.bam 28 | ../samtools rmdup -S ex1f.bam $@ 29 | 30 | ex1.bcf:ex1.bam ex1.fa.fai 31 | ../samtools mpileup -gf ex1.fa ex1.bam > $@ 32 | 33 | ../bcftools/bcftools: 34 | (cd ../bcftools; make bcftools) 35 | 36 | ../samtools: 37 | (cd ..; make samtools) 38 | 39 | ../libbam.a: 40 | (cd ..; make libbam.a) 41 | 42 | calDepth:../libbam.a calDepth.c 43 | gcc -g -Wall -O2 -I.. calDepth.c -o $@ -L.. -lbam -lm -lz 44 | 45 | clean: 46 | rm -fr *.bam *.bai *.glf* *.fai *.pileup* *~ calDepth *.dSYM ex1*.rg ex1.bcf 47 | 48 | # ../samtools pileup ex1.bam|perl -ape '$_=$F[4];s/(\d+)(??{".{$1}"})|\^.//g;@_=(tr/A-Z//,tr/a-z//);$_=join("\t",@F[0,1],@_)."\n"' 49 | 50 | # ../samtools pileup -cf ex1.fa ex1.bam|perl -ape '$_=$F[8];s/\^.//g;s/(\d+)(??{".{$1}"})|\^.//g;@_=(tr/A-Za-z//,tr/,.//);$_=join("\t",@F[0,1],@_)."\n"' 51 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/bam2bed.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "sam.h" 3 | static int fetch_func(const bam1_t *b, void *data) 4 | { 5 | samfile_t *fp = (samfile_t*)data; 6 | uint32_t *cigar = bam1_cigar(b); 7 | const bam1_core_t *c = &b->core; 8 | int i, l; 9 | if (b->core.tid < 0) return 0; 10 | for (i = l = 0; i < c->n_cigar; ++i) { 11 | int op = cigar[i]&0xf; 12 | if (op == BAM_CMATCH || op == BAM_CDEL || op == BAM_CREF_SKIP) 13 | l += cigar[i]>>4; 14 | } 15 | printf("%s\t%d\t%d\t%s\t%d\t%c\n", fp->header->target_name[c->tid], 16 | c->pos, c->pos + l, bam1_qname(b), c->qual, (c->flag&BAM_FREVERSE)? '-' : '+'); 17 | return 0; 18 | } 19 | int main(int argc, char *argv[]) 20 | { 21 | samfile_t *fp; 22 | if (argc == 1) { 23 | fprintf(stderr, "Usage: bam2bed [region]\n"); 24 | return 1; 25 | } 26 | if ((fp = samopen(argv[1], "rb", 0)) == 0) { 27 | fprintf(stderr, "bam2bed: Fail to open BAM file %s\n", argv[1]); 28 | return 1; 29 | } 30 | if (argc == 2) { /* if a region is not specified */ 31 | bam1_t *b = bam_init1(); 32 | while (samread(fp, b) >= 0) fetch_func(b, fp); 33 | bam_destroy1(b); 34 | } else { 35 | int ref, beg, end; 36 | bam_index_t *idx; 37 | if ((idx = bam_index_load(argv[1])) == 0) { 38 | fprintf(stderr, "bam2bed: BAM indexing file is not available.\n"); 39 | return 1; 40 | } 41 | bam_parse_region(fp->header, argv[2], &ref, &beg, &end); 42 | if (ref < 0) { 43 | fprintf(stderr, "bam2bed: Invalid region %s\n", argv[2]); 44 | return 1; 45 | } 46 | bam_fetch(fp->x.bam, idx, ref, beg, end, fp, fetch_func); 47 | bam_index_destroy(idx); 48 | } 49 | samclose(fp); 50 | return 0; 51 | } 52 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/calDepth.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "sam.h" 3 | 4 | typedef struct { 5 | int beg, end; 6 | samfile_t *in; 7 | } tmpstruct_t; 8 | 9 | // callback for bam_fetch() 10 | static int fetch_func(const bam1_t *b, void *data) 11 | { 12 | bam_plbuf_t *buf = (bam_plbuf_t*)data; 13 | bam_plbuf_push(b, buf); 14 | return 0; 15 | } 16 | // callback for bam_plbuf_init() 17 | static int pileup_func(uint32_t tid, uint32_t pos, int n, const bam_pileup1_t *pl, void *data) 18 | { 19 | tmpstruct_t *tmp = (tmpstruct_t*)data; 20 | if ((int)pos >= tmp->beg && (int)pos < tmp->end) 21 | printf("%s\t%d\t%d\n", tmp->in->header->target_name[tid], pos + 1, n); 22 | return 0; 23 | } 24 | 25 | int main(int argc, char *argv[]) 26 | { 27 | tmpstruct_t tmp; 28 | if (argc == 1) { 29 | fprintf(stderr, "Usage: calDepth [region]\n"); 30 | return 1; 31 | } 32 | tmp.beg = 0; tmp.end = 0x7fffffff; 33 | tmp.in = samopen(argv[1], "rb", 0); 34 | if (tmp.in == 0) { 35 | fprintf(stderr, "Fail to open BAM file %s\n", argv[1]); 36 | return 1; 37 | } 38 | if (argc == 2) { // if a region is not specified 39 | sampileup(tmp.in, -1, pileup_func, &tmp); 40 | } else { 41 | int ref; 42 | bam_index_t *idx; 43 | bam_plbuf_t *buf; 44 | idx = bam_index_load(argv[1]); // load BAM index 45 | if (idx == 0) { 46 | fprintf(stderr, "BAM indexing file is not available.\n"); 47 | return 1; 48 | } 49 | bam_parse_region(tmp.in->header, argv[2], &ref, &tmp.beg, &tmp.end); // parse the region 50 | if (ref < 0) { 51 | fprintf(stderr, "Invalid region %s\n", argv[2]); 52 | return 1; 53 | } 54 | buf = bam_plbuf_init(pileup_func, &tmp); // initialize pileup 55 | bam_fetch(tmp.in->x.bam, idx, ref, tmp.beg, tmp.end, buf, fetch_func); 56 | bam_plbuf_push(0, buf); // finalize pileup 57 | bam_index_destroy(idx); 58 | bam_plbuf_destroy(buf); 59 | } 60 | samclose(tmp.in); 61 | return 0; 62 | } 63 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/chk_indel.c: -------------------------------------------------------------------------------- 1 | /* To compile, copy this file to the samtools source code directory and compile with: 2 | gcc -g -O2 -Wall chk_indel_rg.c -o chk_indel_rg -Wall -I. -L. -lbam -lz 3 | */ 4 | 5 | #include 6 | #include "bam.h" 7 | 8 | typedef struct { 9 | long cnt[4]; // short:ins, short:del, long:ins, long:del 10 | } rgcnt_t; 11 | 12 | #include "khash.h" 13 | KHASH_MAP_INIT_STR(rgcnt, rgcnt_t) 14 | 15 | #define MAX_LEN 127 16 | #define Q_THRES 10 17 | #define L_THRES 6 // short: <=L_THRES; otherwise long 18 | 19 | int main(int argc, char *argv[]) 20 | { 21 | bamFile fp; 22 | bam1_t *b; 23 | int i, x; 24 | khash_t(rgcnt) *h; 25 | khint_t k; 26 | 27 | if (argc == 1) { 28 | fprintf(stderr, "Usage: chk_indel_rg \n\n"); 29 | fprintf(stderr, "Output: filename, RG, #ins-in-short-homopolymer, #del-in-short, #ins-in-long, #del-in-long\n"); 30 | return 1; 31 | } 32 | 33 | h = kh_init(rgcnt); 34 | fp = bam_open(argv[1], "r"); 35 | bam_header_destroy(bam_header_read(fp)); // we do not need the header 36 | b = bam_init1(); 37 | 38 | while (bam_read1(fp, b) >= 0) { 39 | if (b->core.n_cigar >= 3 && b->core.qual >= Q_THRES) { 40 | const uint8_t *seq; 41 | const uint32_t *cigar = bam1_cigar(b); 42 | char *rg; 43 | for (i = 0; i < b->core.n_cigar; ++i) // check if there are 1bp indels 44 | if (bam_cigar_oplen(cigar[i]) == 1 && (bam_cigar_op(cigar[i]) == BAM_CDEL || bam_cigar_op(cigar[i]) == BAM_CINS)) 45 | break; 46 | if (i == b->core.n_cigar) continue; // no 1bp ins or del 47 | if ((rg = (char*)bam_aux_get(b, "RG")) == 0) continue; // no RG tag 48 | seq = bam1_seq(b); 49 | for (i = x = 0; i < b->core.n_cigar; ++i) { 50 | int op = bam_cigar_op(cigar[i]); 51 | if (bam_cigar_oplen(cigar[i]) == 1 && (op == BAM_CDEL || op == BAM_CINS)) { 52 | int c, j, hrun, which; 53 | c = bam1_seqi(seq, x); 54 | for (j = x + 1, hrun = 0; j < b->core.l_qseq; ++j, ++hrun) // calculate the hompolymer run length 55 | if (bam1_seqi(seq, j) != c) break; 56 | k = kh_get(rgcnt, h, rg + 1); 57 | if (k == kh_end(h)) { // absent 58 | char *key = strdup(rg + 1); 59 | k = kh_put(rgcnt, h, key, &c); 60 | memset(&kh_val(h, k), 0, sizeof(rgcnt_t)); 61 | } 62 | which = (hrun <= L_THRES? 0 : 1)<<1 | (op == BAM_CINS? 0 : 1); 63 | ++kh_val(h, k).cnt[which]; 64 | } 65 | if (bam_cigar_type(op)&1) ++x; 66 | } 67 | } 68 | } 69 | 70 | for (k = 0; k != kh_end(h); ++k) { 71 | if (!kh_exist(h, k)) continue; 72 | printf("%s\t%s", argv[1], kh_key(h, k)); 73 | for (i = 0; i < 4; ++i) 74 | printf("\t%ld", kh_val(h, k).cnt[i]); 75 | putchar('\n'); 76 | free((char*)kh_key(h, k)); 77 | } 78 | 79 | bam_destroy1(b); 80 | bam_close(fp); 81 | kh_destroy(rgcnt, h); 82 | return 0; 83 | } 84 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/ex1.fa: -------------------------------------------------------------------------------- 1 | >seq1 2 | CACTAGTGGCTCATTGTAAATGTGTGGTTTAACTCGTCCATGGCCCAGCATTAGGGAGCT 3 | GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCAC 4 | GGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG 5 | TCCCATTTGGAGCCCCTCTAAGCCGTTCTATTTGTAATGAAAACTATATTTATGCTATTC 6 | AGTTCTAAATATAGAAATTGAAACAGCTGTGTTTAGTGCCTTTGTTCAACCCCCTTGCAA 7 | CAACCTTGAGAACCCCAGGGAATTTGTCAATGTCAGGGAAGGAGCATTTTGTCAGTTACC 8 | AAATGTGTTTATTACCAGAGGGATGGAGGGAAGAGGGACGCTGAAGAACTTTGATGCCCT 9 | CTTCTTCCAAAGATGAAACGCGTAACTGCGCTCTCATTCACTCCAGCTCCCTGTCACCCA 10 | ATGGACCTGTGATATCTGGATTCTGGGAAATTCTTCATCCTGGACCCTGAGAGATTCTGC 11 | AGCCCAGCTCCAGATTGCTTGTGGTCTGACAGGCTGCAACTGTGAGCCATCACAATGAAC 12 | AACAGGAAGAAAAGGTCTTTCAAAAGGTGATGTGTGTTCTCATCAACCTCATACACACAC 13 | ATGGTTTAGGGGTATAATACCTCTACATGGCTGATTATGAAAACAATGTTCCCCAGATAC 14 | CATCCCTGTCTTACTTCCAGCTCCCCAGAGGGAAAGCTTTCAACGCTTCTAGCCATTTCT 15 | TTTGGCATTTGCCTTCAGACCCTACACGAATGCGTCTCTACCACAGGGGGCTGCGCGGTT 16 | TCCCATCATGAAGCACTGAACTTCCACGTCTCATCTAGGGGAACAGGGAGGTGCACTAAT 17 | GCGCTCCACGCCCAAGCCCTTCTCACAGTTTCTGCCCCCAGCATGGTTGTACTGGGCAAT 18 | ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA 19 | ACCACACATTAATACTATGTTTCTTATCTGCACATTACTACCCTGCAATTAATATAATTG 20 | TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA 21 | CGTCCTATCTTCTTCTTAGGGAAGAACAGCTTAGGTATCAATTTGGTGTTCTGTGTAAAG 22 | TCTCAGGGAGCCGTCCGTGTCCTCCCATCTGGCCTCGTCCACACTGGTTCTCTTGAAAGC 23 | TTGGGCTGTAATGATGCCCCTTGGCCATCACCCAGTCCCTGCCCCATCTCTTGTAATCTC 24 | TCTCCTTTTTGCTGCATCCCTGTCTTCCTCTGTCTTGATTTACTTGTTGTTGGTTTTCTG 25 | TTTCTTTGTTTGATTTGGTGGAAGACATAATCCCACGCTTCCTATGGAAAGGTTGTTGGG 26 | AGATTTTTAATGATTCCTCAATGTTAAAATGTCTATTTTTGTCTTGACACCCAACTAATA 27 | TTTGTCTGAGCAAAACAGTCTAGATGAGAGAGAACTTCCCTGGAGGTCTGATGGCGTTTC 28 | TCCCTCGTCTTCTTA 29 | >seq2 30 | TTCAAATGAACTTCTGTAATTGAAAAATTCATTTAAGAAATTACAAAATATAGTTGAAAG 31 | CTCTAACAATAGACTAAACCAAGCAGAAGAAAGAGGTTCAGAACTTGAAGACAAGTCTCT 32 | TATGAATTAACCCAGTCAGACAAAAATAAAGAAAAAAATTTTAAAAATGAACAGAGCTTT 33 | CAAGAAGTATGAGATTATGTAAAGTAACTGAACCTATGAGTCACAGGTATTCCTGAGGAA 34 | AAAGAAAAAGTGAGAAGTTTGGAAAAACTATTTGAGGAAGTAATTGGGGAAAACCTCTTT 35 | AGTCTTGCTAGAGATTTAGACATCTAAATGAAAGAGGCTCAAAGAATGCCAGGAAGATAC 36 | ATTGCAAGACAGACTTCATCAAGATATGTAGTCATCAGACTATCTAAAGTCAACATGAAG 37 | GAAAAAAATTCTAAAATCAGCAAGAGAAAAGCATACAGTCATCTATAAAGGAAATCCCAT 38 | CAGAATAACAATGGGCTTCTCAGCAGAAACCTTACAAGCCAGAAGAGATTGGATCTAATT 39 | TTTGGACTTCTTAAAGAAAAAAAAACCTGTCAAACACGAATGTTATGCCCTGCTAAACTA 40 | AGCATCATAAATGAAGGGGAAATAAAGTCAAGTCTTTCCTGACAAGCAAATGCTAAGATA 41 | ATTCATCATCACTAAACCAGTCCTATAAGAAATGCTCAAAAGAATTGTAAAAGTCAAAAT 42 | TAAAGTTCAATACTCACCATCATAAATACACACAAAAGTACAAAACTCACAGGTTTTATA 43 | AAACAATTGAGACTACAGAGCAACTAGGTAAAAAATTAACATTACAACAGGAACAAAACC 44 | TCATATATCAATATTAACTTTGAATAAAAAGGGATTAAATTCCCCCACTTAAGAGATATA 45 | GATTGGCAGAACAGATTTAAAAACATGAACTAACTATATGCTGTTTACAAGAAACTCATT 46 | AATAAAGACATGAGTTCAGGTAAAGGGGTGGAAAAAGATGTTCTACGCAAACAGAAACCA 47 | AATGAGAGAAGGAGTAGCTATACTTATATCAGATAAAGCACACTTTAAATCAACAACAGT 48 | AAAATAAAACAAAGGAGGTCATCATACAATGATAAAAAGATCAATTCAGCAAGAAGATAT 49 | AACCATCCTACTAAATACATATGCACCTAACACAAGACTACCCAGATTCATAAAACAAAT 50 | ACTACTAGACCTAAGAGGGATGAGAAATTACCTAATTGGTACAATGTACAATATTCTGAT 51 | GATGGTTACACTAAAAGCCCATACTTTACTGCTACTCAATATATCCATGTAACAAATCTG 52 | CGCTTGTACTTCTAAATCTATAAAAAAATTAAAATTTAACAAAAGTAAATAAAACACATA 53 | GCTAAAACTAAAAAAGCAAAAACAAAAACTATGCTAAGTATTGGTAAAGATGTGGGGAAA 54 | AAAGTAAACTCTCAAATATTGCTAGTGGGAGTATAAATTGTTTTCCACTTTGGAAAACAA 55 | TTTGGTAATTTCGTTTTTTTTTTTTTCTTTTCTCTTTTTTTTTTTTTTTTTTTTGCATGC 56 | CAGAAAAAAATATTTACAGTAACT 57 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/ex1.sam.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sc932/ALE/e7b0777f3b1b1eaaf280bd96452c63a59cc43683/src/samtools-0.1.19/examples/ex1.sam.gz -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/toy.fa: -------------------------------------------------------------------------------- 1 | >ref 2 | AGCATGTTAGATAAGATAGCTGTGCTAGTAGGCAGTCAGCGCCAT 3 | >ref2 4 | aggttttataaaacaattaagtctacagagcaactacgcg 5 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/examples/toy.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:ref LN:45 2 | @SQ SN:ref2 LN:40 3 | r001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG * XX:B:S,12561,2,20,112 4 | r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA * 5 | r003 0 ref 9 30 5H6M * 0 0 AGCTAA * 6 | r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC * 7 | r003 16 ref 29 30 6H5M * 0 0 TAGGC * 8 | r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT * 9 | x1 0 ref2 1 30 20M * 0 0 aggttttataaaacaaataa ???????????????????? 10 | x2 0 ref2 2 30 21M * 0 0 ggttttataaaacaaataatt ????????????????????? 11 | x3 0 ref2 6 30 9M4I13M * 0 0 ttataaaacAAATaattaagtctaca ?????????????????????????? 12 | x4 0 ref2 10 30 25M * 0 0 CaaaTaattaagtctacagagcaac ????????????????????????? 13 | x5 0 ref2 12 30 24M * 0 0 aaTaattaagtctacagagcaact ???????????????????????? 14 | x6 0 ref2 14 30 23M * 0 0 Taattaagtctacagagcaacta ??????????????????????? 15 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/faidx.h: -------------------------------------------------------------------------------- 1 | /* The MIT License 2 | 3 | Copyright (c) 2008 Genome Research Ltd (GRL). 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 20 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | */ 25 | 26 | /* Contact: Heng Li */ 27 | 28 | #ifndef FAIDX_H 29 | #define FAIDX_H 30 | 31 | /*! 32 | @header 33 | 34 | Index FASTA files and extract subsequence. 35 | 36 | @copyright The Wellcome Trust Sanger Institute. 37 | */ 38 | 39 | struct __faidx_t; 40 | typedef struct __faidx_t faidx_t; 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | /*! 47 | @abstract Build index for a FASTA or razip compressed FASTA file. 48 | @param fn FASTA file name 49 | @return 0 on success; or -1 on failure 50 | @discussion File "fn.fai" will be generated. 51 | */ 52 | int fai_build(const char *fn); 53 | 54 | /*! 55 | @abstract Distroy a faidx_t struct. 56 | @param fai Pointer to the struct to be destroyed 57 | */ 58 | void fai_destroy(faidx_t *fai); 59 | 60 | /*! 61 | @abstract Load index from "fn.fai". 62 | @param fn File name of the FASTA file 63 | */ 64 | faidx_t *fai_load(const char *fn); 65 | 66 | /*! 67 | @abstract Fetch the sequence in a region. 68 | @param fai Pointer to the faidx_t struct 69 | @param reg Region in the format "chr2:20,000-30,000" 70 | @param len Length of the region 71 | @return Pointer to the sequence; null on failure 72 | 73 | @discussion The returned sequence is allocated by malloc family 74 | and should be destroyed by end users by calling free() on it. 75 | */ 76 | char *fai_fetch(const faidx_t *fai, const char *reg, int *len); 77 | 78 | /*! 79 | @abstract Fetch the number of sequences. 80 | @param fai Pointer to the faidx_t struct 81 | @return The number of sequences 82 | */ 83 | int faidx_fetch_nseq(const faidx_t *fai); 84 | 85 | /*! 86 | @abstract Fetch the sequence in a region. 87 | @param fai Pointer to the faidx_t struct 88 | @param c_name Region name 89 | @param p_beg_i Beginning position number (zero-based) 90 | @param p_end_i End position number (zero-based) 91 | @param len Length of the region 92 | @return Pointer to the sequence; null on failure 93 | 94 | @discussion The returned sequence is allocated by malloc family 95 | and should be destroyed by end users by calling free() on it. 96 | */ 97 | char *faidx_fetch_seq(const faidx_t *fai, char *c_name, int p_beg_i, int p_end_i, int *len); 98 | 99 | #ifdef __cplusplus 100 | } 101 | #endif 102 | 103 | #endif 104 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/kaln.h: -------------------------------------------------------------------------------- 1 | /* The MIT License 2 | 3 | Copyright (c) 2003-2006, 2008, 2009 by Heng Li 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 20 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | */ 25 | 26 | #ifndef LH3_KALN_H_ 27 | #define LH3_KALN_H_ 28 | 29 | #include 30 | 31 | #define MINOR_INF -1073741823 32 | 33 | typedef struct { 34 | int gap_open; 35 | int gap_ext; 36 | int gap_end_open; 37 | int gap_end_ext; 38 | 39 | int *matrix; 40 | int row; 41 | int band_width; 42 | } ka_param_t; 43 | 44 | typedef struct { 45 | int iio, iie, ido, ide; 46 | int eio, eie, edo, ede; 47 | int *matrix; 48 | int row; 49 | int band_width; 50 | } ka_param2_t; 51 | 52 | #ifdef __cplusplus 53 | extern "C" { 54 | #endif 55 | 56 | uint32_t *ka_global_core(uint8_t *seq1, int len1, uint8_t *seq2, int len2, const ka_param_t *ap, 57 | int *_score, int *n_cigar); 58 | int ka_global_score(const uint8_t *_seq1, int len1, const uint8_t *_seq2, int len2, const ka_param2_t *ap); 59 | #ifdef __cplusplus 60 | } 61 | #endif 62 | 63 | extern ka_param_t ka_param_blast; /* = { 5, 2, 5, 2, aln_sm_blast, 5, 50 }; */ 64 | extern ka_param_t ka_param_qual; // only use this for global alignment!!! 65 | extern ka_param2_t ka_param2_qual; // only use this for global alignment!!! 66 | 67 | #endif 68 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/klist.h: -------------------------------------------------------------------------------- 1 | #ifndef _LH3_KLIST_H 2 | #define _LH3_KLIST_H 3 | 4 | #include 5 | 6 | #define KMEMPOOL_INIT(name, kmptype_t, kmpfree_f) \ 7 | typedef struct { \ 8 | size_t cnt, n, max; \ 9 | kmptype_t **buf; \ 10 | } kmp_##name##_t; \ 11 | static inline kmp_##name##_t *kmp_init_##name() { \ 12 | return calloc(1, sizeof(kmp_##name##_t)); \ 13 | } \ 14 | static inline void kmp_destroy_##name(kmp_##name##_t *mp) { \ 15 | size_t k; \ 16 | for (k = 0; k < mp->n; ++k) { \ 17 | kmpfree_f(mp->buf[k]); free(mp->buf[k]); \ 18 | } \ 19 | free(mp->buf); free(mp); \ 20 | } \ 21 | static inline kmptype_t *kmp_alloc_##name(kmp_##name##_t *mp) { \ 22 | ++mp->cnt; \ 23 | if (mp->n == 0) return calloc(1, sizeof(kmptype_t)); \ 24 | return mp->buf[--mp->n]; \ 25 | } \ 26 | static inline void kmp_free_##name(kmp_##name##_t *mp, kmptype_t *p) { \ 27 | --mp->cnt; \ 28 | if (mp->n == mp->max) { \ 29 | mp->max = mp->max? mp->max<<1 : 16; \ 30 | mp->buf = realloc(mp->buf, sizeof(void*) * mp->max); \ 31 | } \ 32 | mp->buf[mp->n++] = p; \ 33 | } 34 | 35 | #define kmempool_t(name) kmp_##name##_t 36 | #define kmp_init(name) kmp_init_##name() 37 | #define kmp_destroy(name, mp) kmp_destroy_##name(mp) 38 | #define kmp_alloc(name, mp) kmp_alloc_##name(mp) 39 | #define kmp_free(name, mp, p) kmp_free_##name(mp, p) 40 | 41 | #define KLIST_INIT(name, kltype_t, kmpfree_t) \ 42 | struct __kl1_##name { \ 43 | kltype_t data; \ 44 | struct __kl1_##name *next; \ 45 | }; \ 46 | typedef struct __kl1_##name kl1_##name; \ 47 | KMEMPOOL_INIT(name, kl1_##name, kmpfree_t) \ 48 | typedef struct { \ 49 | kl1_##name *head, *tail; \ 50 | kmp_##name##_t *mp; \ 51 | size_t size; \ 52 | } kl_##name##_t; \ 53 | static inline kl_##name##_t *kl_init_##name() { \ 54 | kl_##name##_t *kl = calloc(1, sizeof(kl_##name##_t)); \ 55 | kl->mp = kmp_init(name); \ 56 | kl->head = kl->tail = kmp_alloc(name, kl->mp); \ 57 | kl->head->next = 0; \ 58 | return kl; \ 59 | } \ 60 | static inline void kl_destroy_##name(kl_##name##_t *kl) { \ 61 | kl1_##name *p; \ 62 | for (p = kl->head; p != kl->tail; p = p->next) \ 63 | kmp_free(name, kl->mp, p); \ 64 | kmp_free(name, kl->mp, p); \ 65 | kmp_destroy(name, kl->mp); \ 66 | free(kl); \ 67 | } \ 68 | static inline kltype_t *kl_pushp_##name(kl_##name##_t *kl) { \ 69 | kl1_##name *q, *p = kmp_alloc(name, kl->mp); \ 70 | q = kl->tail; p->next = 0; kl->tail->next = p; kl->tail = p; \ 71 | ++kl->size; \ 72 | return &q->data; \ 73 | } \ 74 | static inline int kl_shift_##name(kl_##name##_t *kl, kltype_t *d) { \ 75 | kl1_##name *p; \ 76 | if (kl->head->next == 0) return -1; \ 77 | --kl->size; \ 78 | p = kl->head; kl->head = kl->head->next; \ 79 | if (d) *d = p->data; \ 80 | kmp_free(name, kl->mp, p); \ 81 | return 0; \ 82 | } 83 | 84 | #define kliter_t(name) kl1_##name 85 | #define klist_t(name) kl_##name##_t 86 | #define kl_val(iter) ((iter)->data) 87 | #define kl_next(iter) ((iter)->next) 88 | #define kl_begin(kl) ((kl)->head) 89 | #define kl_end(kl) ((kl)->tail) 90 | 91 | #define kl_init(name) kl_init_##name() 92 | #define kl_destroy(name, kl) kl_destroy_##name(kl) 93 | #define kl_pushp(name, kl) kl_pushp_##name(kl) 94 | #define kl_shift(name, kl, d) kl_shift_##name(kl, d) 95 | 96 | #endif 97 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/knetfile.h: -------------------------------------------------------------------------------- 1 | #ifndef KNETFILE_H 2 | #define KNETFILE_H 3 | 4 | #include 5 | #include 6 | 7 | #ifndef _WIN32 8 | #define netread(fd, ptr, len) read(fd, ptr, len) 9 | #define netwrite(fd, ptr, len) write(fd, ptr, len) 10 | #define netclose(fd) close(fd) 11 | #else 12 | #include 13 | #define netread(fd, ptr, len) recv(fd, ptr, len, 0) 14 | #define netwrite(fd, ptr, len) send(fd, ptr, len, 0) 15 | #define netclose(fd) closesocket(fd) 16 | #endif 17 | 18 | // FIXME: currently I/O is unbuffered 19 | 20 | #define KNF_TYPE_LOCAL 1 21 | #define KNF_TYPE_FTP 2 22 | #define KNF_TYPE_HTTP 3 23 | 24 | typedef struct knetFile_s { 25 | int type, fd; 26 | int64_t offset; 27 | char *host, *port; 28 | 29 | // the following are for FTP only 30 | int ctrl_fd, pasv_ip[4], pasv_port, max_response, no_reconnect, is_ready; 31 | char *response, *retr, *size_cmd; 32 | int64_t seek_offset; // for lazy seek 33 | int64_t file_size; 34 | 35 | // the following are for HTTP only 36 | char *path, *http_host; 37 | } knetFile; 38 | 39 | #define knet_tell(fp) ((fp)->offset) 40 | #define knet_fileno(fp) ((fp)->fd) 41 | 42 | #ifdef __cplusplus 43 | extern "C" { 44 | #endif 45 | 46 | #ifdef _WIN32 47 | int knet_win32_init(); 48 | void knet_win32_destroy(); 49 | #endif 50 | 51 | knetFile *knet_open(const char *fn, const char *mode); 52 | 53 | /* 54 | This only works with local files. 55 | */ 56 | knetFile *knet_dopen(int fd, const char *mode); 57 | 58 | /* 59 | If ->is_ready==0, this routine updates ->fd; otherwise, it simply 60 | reads from ->fd. 61 | */ 62 | off_t knet_read(knetFile *fp, void *buf, off_t len); 63 | 64 | /* 65 | This routine only sets ->offset and ->is_ready=0. It does not 66 | communicate with the FTP server. 67 | */ 68 | off_t knet_seek(knetFile *fp, int64_t off, int whence); 69 | int knet_close(knetFile *fp); 70 | 71 | #ifdef __cplusplus 72 | } 73 | #endif 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/kprobaln.h: -------------------------------------------------------------------------------- 1 | /* The MIT License 2 | 3 | Copyright (c) 2003-2006, 2008, 2009 by Heng Li 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 20 | BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 21 | ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 22 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | */ 25 | 26 | #ifndef LH3_KPROBALN_H_ 27 | #define LH3_KPROBALN_H_ 28 | 29 | #include 30 | 31 | typedef struct { 32 | float d, e; 33 | int bw; 34 | } kpa_par_t; 35 | 36 | #ifdef __cplusplus 37 | extern "C" { 38 | #endif 39 | 40 | int kpa_glocal(const uint8_t *_ref, int l_ref, const uint8_t *_query, int l_query, const uint8_t *iqual, 41 | const kpa_par_t *c, int *state, uint8_t *q); 42 | 43 | #ifdef __cplusplus 44 | } 45 | #endif 46 | 47 | extern kpa_par_t kpa_par_def, kpa_par_alt; 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/Makefile: -------------------------------------------------------------------------------- 1 | CC= gcc 2 | CXX= g++ 3 | CFLAGS= -g -Wall -O2 #-m64 #-arch ppc 4 | CXXFLAGS= $(CFLAGS) 5 | DFLAGS= -D_FILE_OFFSET_BITS=64 6 | OBJS= 7 | PROG= md5sum-lite md5fa maq2sam-short maq2sam-long ace2sam wgsim bamcheck 8 | INCLUDES= -I.. 9 | SUBDIRS= . 10 | 11 | .SUFFIXES:.c .o 12 | 13 | .c.o: 14 | $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@ 15 | 16 | all:$(PROG) 17 | 18 | lib-recur all-recur clean-recur cleanlocal-recur install-recur: 19 | @target=`echo $@ | sed s/-recur//`; \ 20 | wdir=`pwd`; \ 21 | list='$(SUBDIRS)'; for subdir in $$list; do \ 22 | cd $$subdir; \ 23 | $(MAKE) CC="$(CC)" DFLAGS="$(DFLAGS)" CFLAGS="$(CFLAGS)" \ 24 | INCLUDES="$(INCLUDES)" $$target || exit 1; \ 25 | cd $$wdir; \ 26 | done; 27 | 28 | lib: 29 | 30 | bamcheck:bamcheck.o 31 | $(CC) $(CFLAGS) -o $@ bamcheck.o -L.. -lm -lbam -lpthread -lz 32 | 33 | bamcheck.o:bamcheck.c ../faidx.h ../khash.h ../sam.h ../razf.h 34 | $(CC) $(CFLAGS) -c -I.. -o $@ bamcheck.c 35 | 36 | ace2sam:ace2sam.o 37 | $(CC) $(CFLAGS) -o $@ ace2sam.o -lz 38 | 39 | wgsim:wgsim.o 40 | $(CC) $(CFLAGS) -o $@ wgsim.o -lm -lz 41 | 42 | md5fa:md5.o md5fa.o md5.h ../kseq.h 43 | $(CC) $(CFLAGS) -o $@ md5.o md5fa.o -lz 44 | 45 | md5sum-lite:md5sum-lite.o 46 | $(CC) $(CFLAGS) -o $@ md5sum-lite.o 47 | 48 | md5sum-lite.o:md5.c md5.h 49 | $(CC) -c $(CFLAGS) -DMD5SUM_MAIN -o $@ md5.c 50 | 51 | maq2sam-short:maq2sam.c 52 | $(CC) $(CFLAGS) -o $@ maq2sam.c -lz 53 | 54 | maq2sam-long:maq2sam.c 55 | $(CC) $(CFLAGS) -DMAQ_LONGREADS -o $@ maq2sam.c -lz 56 | 57 | md5fa.o:md5.h md5fa.c 58 | $(CC) $(CFLAGS) -c -I.. -o $@ md5fa.c 59 | 60 | wgsim.o:wgsim.c ../kseq.h 61 | $(CC) $(CFLAGS) -c -I.. -o $@ wgsim.c 62 | 63 | ace2sam.o:ace2sam.c ../kstring.h ../kseq.h 64 | $(CC) $(CFLAGS) -c -I.. -o $@ ace2sam.c 65 | 66 | cleanlocal: 67 | rm -fr gmon.out *.o a.out *.exe *.dSYM $(PROG) *~ *.a 68 | 69 | clean:cleanlocal-recur 70 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/blast2sam.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | use strict; 4 | use warnings; 5 | use Getopt::Std; 6 | 7 | &blast2sam; 8 | 9 | sub blast2sam { 10 | my %opts = (); 11 | getopts('s', \%opts); 12 | die("Usage: blast2sam.pl \n") if (-t STDIN && @ARGV == 0); 13 | my ($qlen, $slen, $q, $s, $qbeg, $qend, @sam, @cigar, @cmaux, $show_seq); 14 | $show_seq = defined($opts{s}); 15 | @sam = (); @sam[0,4,6..8,10] = ('', 255, '*', 0, 0, '*'); 16 | while (<>) { 17 | if (@cigar && (/^Query=/ || /Score =.*bits.*Expect/)) { # print 18 | &blast_print_sam(\@sam, \@cigar, \@cmaux, $qlen - $qend); 19 | @cigar = (); 20 | } 21 | if (/^Query= (\S+)/) { 22 | $sam[0] = $1; 23 | } elsif (/\((\S+)\s+letters\)/) { 24 | $qlen = $1; $qlen =~ s/,//g; 25 | } elsif (/^>(\S+)/) { 26 | $sam[2] = $1; 27 | } elsif (/Length = (\d+)/) { 28 | $slen = $1; 29 | } elsif (/Score =\s+(\S+) bits.+Expect(\(\d+\))? = (\S+)/) { # the start of an alignment block 30 | my ($as, $ev) = (int($1 + .499), $3); 31 | $ev = "1$ev" if ($ev =~ /^e/); 32 | @sam[1,3,9,11,12] = (0, 0, '', "AS:i:$as", "EV:Z:$ev"); 33 | @cigar = (); $qbeg = 0; 34 | @cmaux = (0, 0, 0, ''); 35 | } elsif (/Strand = (\S+) \/ (\S+)/) { 36 | $sam[1] |= 0x10 if ($2 eq 'Minus'); 37 | } elsif (/Query\:\s(\d+)\s*(\S+)\s(\d+)/) { 38 | $q = $2; 39 | unless ($qbeg) { 40 | $qbeg = $1; 41 | push(@cigar, ($1-1) . "H") if ($1 > 1); 42 | } 43 | $qend = $3; 44 | if ($show_seq) { 45 | my $x = $q; 46 | $x =~ s/-//g; $sam[9] .= $x; 47 | } 48 | } elsif (/Sbjct\:\s(\d+)\s*(\S+)\s(\d+)/) { 49 | $s = $2; 50 | if ($sam[1] & 0x10) { 51 | $sam[3] = $3; 52 | } else { 53 | $sam[3] = $1 unless ($sam[3]); 54 | } 55 | &aln2cm(\@cigar, \$q, \$s, \@cmaux); 56 | } 57 | } 58 | &blast_print_sam(\@sam, \@cigar, \@cmaux, $qlen - $qend); 59 | } 60 | 61 | sub blast_print_sam { 62 | my ($sam, $cigar, $cmaux, $qrest) = @_; 63 | push(@$cigar, $cmaux->[1] . substr("MDI", $cmaux->[0], 1)); 64 | push(@$cigar, $qrest . 'H') if ($qrest); 65 | if ($sam->[1] & 0x10) { 66 | @$cigar = reverse(@$cigar); 67 | $sam->[9] = reverse($sam->[9]); 68 | $sam->[9] =~ tr/atgcrymkswATGCRYMKSW/tacgyrkmswTACGYRKMSW/; 69 | } 70 | $sam->[9] = '*' if (!$sam->[9]); 71 | $sam->[5] = join('', @$cigar); 72 | print join("\t", @$sam), "\n"; 73 | } 74 | 75 | sub aln2cm { 76 | my ($cigar, $q, $s, $cmaux) = @_; 77 | my $l = length($$q); 78 | for (my $i = 0; $i < $l; ++$i) { 79 | my $op; 80 | # set $op 81 | if (substr($$q, $i, 1) eq '-') { $op = 2; } 82 | elsif (substr($$s, $i, 1) eq '-') { $op = 1; } 83 | else { $op = 0; } 84 | # for CIGAR 85 | if ($cmaux->[0] == $op) { 86 | ++$cmaux->[1]; 87 | } else { 88 | push(@$cigar, $cmaux->[1] . substr("MDI", $cmaux->[0], 1)); 89 | $cmaux->[0] = $op; $cmaux->[1] = 1; 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/bowtie2sam.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # Contact: lh3 4 | # Version: 0.1.1 5 | 6 | use strict; 7 | use warnings; 8 | use Getopt::Std; 9 | 10 | &bowtie2sam; 11 | exit; 12 | 13 | sub bowtie2sam { 14 | my %opts = (); 15 | die("Usage: bowtie2sam.pl \n") if (@ARGV == 0 && -t STDIN); 16 | # core loop 17 | my (@s, $last, @staging, $k, $best_s, $subbest_s, $best_k); 18 | $last = ''; 19 | while (<>) { 20 | my ($name, $nm) = &bowtie2sam_aux($_, \@s); # read_name, number of mismatches 21 | if ($name eq $last) { 22 | # I do not know whether the multiple hits are ordered on the 23 | # number of mismatches. I assume they are not and so I have to 24 | # keep all these multiple hits in memory. 25 | @{$staging[$k]} = @s; 26 | if ($best_s > $nm) { 27 | $subbest_s = $best_s; 28 | $best_s = $nm; 29 | $best_k = $k; 30 | } elsif ($subbest_s > $nm) { 31 | $subbest_s = $nm; 32 | } 33 | ++$k; 34 | } else { 35 | if ($last) { 36 | if ($best_s == $subbest_s) { 37 | $staging[$best_k][4] = 0; 38 | } elsif ($subbest_s - $best_s == 1) { 39 | $staging[$best_k][4] = 15 if ($staging[$best_k][4] > 15); 40 | } 41 | print join("\t", @{$staging[$best_k]}), "\n"; 42 | } 43 | $k = 1; $best_s = $nm; $subbest_s = 1000; $best_k = 0; 44 | @{$staging[0]} = @s; 45 | $last = $name; 46 | } 47 | } 48 | print join("\t", @{$staging[$best_k]}), "\n" if ($best_k >= 0); 49 | } 50 | 51 | sub bowtie2sam_aux { 52 | my ($line, $s) = @_; 53 | chomp($line); 54 | my @t = split("\t", $line); 55 | my $ret; 56 | @$s = (); 57 | # read name 58 | $s->[0] = $ret = $t[0]; 59 | $s->[0] =~ s/\/[12]$//g; 60 | # initial flag (will be updated later) 61 | $s->[1] = 0; 62 | # read & quality 63 | $s->[9] = $t[4]; $s->[10] = $t[5]; 64 | # cigar 65 | $s->[5] = length($s->[9]) . "M"; 66 | # coor 67 | $s->[2] = $t[2]; $s->[3] = $t[3] + 1; 68 | $s->[1] |= 0x10 if ($t[1] eq '-'); 69 | # mapQ 70 | $s->[4] = $t[6] == 0? 25 : 0; 71 | # mate coordinate 72 | $s->[6] = '*'; $s->[7] = $s->[8] = 0; 73 | # aux 74 | my $nm = @t - 7; 75 | push(@$s, "NM:i:" . (@t-7)); 76 | push(@$s, "X$nm:i:" . ($t[6]+1)); 77 | my $md = ''; 78 | if ($t[7]) { 79 | $_ = $t[7]; 80 | my $a = 0; 81 | while (/(\d+):[ACGTN]>([ACGTN])/gi) { 82 | my ($y, $z) = ($1, $2); 83 | $md .= (int($y)-$a) . $z; 84 | $a += $y - $a + 1; 85 | } 86 | $md .= length($s->[9]) - $a; 87 | } else { 88 | $md = length($s->[9]); 89 | } 90 | push(@$s, "MD:Z:$md"); 91 | return ($ret, $nm); 92 | } 93 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/md5.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is adapted from a program in this page: 3 | 4 | http://www.fourmilab.ch/md5/ 5 | 6 | The original source code does not work on 64-bit machines due to the 7 | wrong typedef "uint32". I also added prototypes. 8 | 9 | -lh3 10 | */ 11 | 12 | #ifndef MD5_H 13 | #define MD5_H 14 | 15 | /* The following tests optimise behaviour on little-endian 16 | machines, where there is no need to reverse the byte order 17 | of 32 bit words in the MD5 computation. By default, 18 | HIGHFIRST is defined, which indicates we're running on a 19 | big-endian (most significant byte first) machine, on which 20 | the byteReverse function in md5.c must be invoked. However, 21 | byteReverse is coded in such a way that it is an identity 22 | function when run on a little-endian machine, so calling it 23 | on such a platform causes no harm apart from wasting time. 24 | If the platform is known to be little-endian, we speed 25 | things up by undefining HIGHFIRST, which defines 26 | byteReverse as a null macro. Doing things in this manner 27 | insures we work on new platforms regardless of their byte 28 | order. */ 29 | 30 | #define HIGHFIRST 31 | 32 | #if __LITTLE_ENDIAN__ != 0 33 | #undef HIGHFIRST 34 | #endif 35 | 36 | #include 37 | 38 | struct MD5Context { 39 | uint32_t buf[4]; 40 | uint32_t bits[2]; 41 | unsigned char in[64]; 42 | }; 43 | 44 | void MD5Init(struct MD5Context *ctx); 45 | void MD5Update(struct MD5Context *ctx, unsigned char *buf, unsigned len); 46 | void MD5Final(unsigned char digest[16], struct MD5Context *ctx); 47 | 48 | /* 49 | * This is needed to make RSAREF happy on some MS-DOS compilers. 50 | */ 51 | typedef struct MD5Context MD5_CTX; 52 | 53 | /* Define CHECK_HARDWARE_PROPERTIES to have main,c verify 54 | byte order and uint32_t settings. */ 55 | #define CHECK_HARDWARE_PROPERTIES 56 | 57 | #endif /* !MD5_H */ 58 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/md5fa.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "md5.h" 4 | #include "kseq.h" 5 | 6 | #define HEX_STR "0123456789abcdef" 7 | 8 | KSEQ_INIT(gzFile, gzread) 9 | 10 | static void md5_one(const char *fn) 11 | { 12 | MD5_CTX md5_one, md5_all; 13 | int l, i, k; 14 | gzFile fp; 15 | kseq_t *seq; 16 | unsigned char unordered[16], digest[16]; 17 | 18 | for (l = 0; l < 16; ++l) unordered[l] = 0; 19 | fp = strcmp(fn, "-")? gzopen(fn, "r") : gzdopen(fileno(stdin), "r"); 20 | if (fp == 0) { 21 | fprintf(stderr, "md5fa: %s: No such file or directory\n", fn); 22 | exit(1); 23 | } 24 | 25 | MD5Init(&md5_all); 26 | seq = kseq_init(fp); 27 | while ((l = kseq_read(seq)) >= 0) { 28 | for (i = k = 0; i < seq->seq.l; ++i) { 29 | if (islower(seq->seq.s[i])) seq->seq.s[k++] = toupper(seq->seq.s[i]); 30 | else if (isupper(seq->seq.s[i])) seq->seq.s[k++] = seq->seq.s[i]; 31 | } 32 | MD5Init(&md5_one); 33 | MD5Update(&md5_one, (unsigned char*)seq->seq.s, k); 34 | MD5Final(digest, &md5_one); 35 | for (l = 0; l < 16; ++l) { 36 | printf("%c%c", HEX_STR[digest[l]>>4&0xf], HEX_STR[digest[l]&0xf]); 37 | unordered[l] ^= digest[l]; 38 | } 39 | printf(" %s %s\n", fn, seq->name.s); 40 | MD5Update(&md5_all, (unsigned char*)seq->seq.s, k); 41 | } 42 | MD5Final(digest, &md5_all); 43 | kseq_destroy(seq); 44 | for (l = 0; l < 16; ++l) 45 | printf("%c%c", HEX_STR[digest[l]>>4&0xf], HEX_STR[digest[l]&0xf]); 46 | printf(" %s >ordered\n", fn); 47 | for (l = 0; l < 16; ++l) 48 | printf("%c%c", HEX_STR[unordered[l]>>4&0xf], HEX_STR[unordered[l]&0xf]); 49 | printf(" %s >unordered\n", fn); 50 | } 51 | 52 | int main(int argc, char *argv[]) 53 | { 54 | int i; 55 | if (argc == 1) md5_one("-"); 56 | else for (i = 1; i < argc; ++i) md5_one(argv[i]); 57 | return 0; 58 | } 59 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/psl2sam.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # Author: lh3 4 | 5 | # This script calculates a score using the BLAST scoring 6 | # system. However, I am not sure how to count gap opens and gap 7 | # extensions. It seems to me that column 5-8 are not what I am 8 | # after. This script counts gaps from the last three columns. It does 9 | # not generate reference skip (N) in the CIGAR as it is not easy to 10 | # directly tell which gaps correspond to introns. 11 | 12 | use strict; 13 | use warnings; 14 | use Getopt::Std; 15 | 16 | my %opts = (a=>1, b=>3, q=>5, r=>2); 17 | getopts('a:b:q:r:', \%opts); 18 | die("Usage: psl2sam.pl [-a $opts{a}] [-b $opts{b}] [-q $opts{q}] [-r $opts{r}] \n") if (@ARGV == 0 && -t STDIN); 19 | 20 | my @stack; 21 | my $last = ''; 22 | my ($a, $b, $q, $r) = ($opts{a}, $opts{b}, $opts{q}, $opts{r}); 23 | while (<>) { 24 | next unless (/^\d/); 25 | my @t = split; 26 | my @s; 27 | my $cigar = ''; 28 | if ($t[8] eq '-') { 29 | my $tmp = $t[11]; 30 | $t[11] = $t[10] - $t[12]; 31 | $t[12] = $t[10] - $tmp; 32 | } 33 | @s[0..4] = ($t[9], (($t[8] eq '+')? 0 : 16), $t[13], $t[15]+1, 0); 34 | @s[6..10] = ('*', 0, 0, '*', '*'); 35 | $cigar .= $t[11].'H' if ($t[11]); # 5'-end clipping 36 | my @x = split(',', $t[18]); 37 | my @y = split(',', $t[19]); 38 | my @z = split(',', $t[20]); 39 | my ($y0, $z0) = ($y[0], $z[0]); 40 | my ($gap_open, $gap_ext) = (0, 0, 0); 41 | for (1 .. $t[17]-1) { 42 | my $ly = $y[$_] - $y[$_-1] - $x[$_-1]; 43 | my $lz = $z[$_] - $z[$_-1] - $x[$_-1]; 44 | if ($ly < $lz) { # del: the reference gap is longer 45 | ++$gap_open; 46 | $gap_ext += $lz - $ly; 47 | $cigar .= ($y[$_] - $y0) . 'M'; 48 | $cigar .= ($lz - $ly) . 'D'; 49 | ($y0, $z0) = ($y[$_], $z[$_]); 50 | } elsif ($lz < $ly) { # ins: the query gap is longer 51 | ++$gap_open; 52 | $gap_ext += $ly - $lz; 53 | $cigar .= ($z[$_] - $z0) . 'M'; 54 | $cigar .= ($ly - $lz) . 'I'; 55 | ($y0, $z0) = ($y[$_], $z[$_]); 56 | } 57 | } 58 | $cigar .= ($t[12] - $y0) . 'M'; 59 | $cigar .= ($t[10] - $t[12]).'H' if ($t[10] != $t[12]); # 3'-end clipping 60 | $s[5] = $cigar; 61 | my $score = $a * $t[0] - $b * $t[1] - $q * $gap_open - $r * $gap_ext; 62 | $score = 0 if ($score < 0); 63 | $s[11] = "AS:i:$score"; 64 | print join("\t", @s), "\n"; 65 | } 66 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/r2plot.lua: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env luajit 2 | 3 | function string:split(sep, n) 4 | local a, start = {}, 1; 5 | sep = sep or "%s+"; 6 | repeat 7 | local b, e = self:find(sep, start); 8 | if b == nil then 9 | table.insert(a, self:sub(start)); 10 | break 11 | end 12 | a[#a+1] = self:sub(start, b - 1); 13 | start = e + 1; 14 | if n and #a == n then 15 | table.insert(a, self:sub(start)); 16 | break 17 | end 18 | until start > #self; 19 | return a; 20 | end 21 | 22 | function io.xopen(fn, mode) 23 | mode = mode or 'r'; 24 | if fn == nil then return io.stdin; 25 | elseif fn == '-' then return (mode == 'r' and io.stdin) or io.stdout; 26 | elseif fn:sub(-3) == '.gz' then return (mode == 'r' and io.popen('gzip -dc ' .. fn, 'r')) or io.popen('gzip > ' .. fn, 'w'); 27 | elseif fn:sub(-4) == '.bz2' then return (mode == 'r' and io.popen('bzip2 -dc ' .. fn, 'r')) or io.popen('bgzip2 > ' .. fn, 'w'); 28 | else return io.open(fn, mode) end 29 | end 30 | 31 | local eps = {}; 32 | 33 | function eps.func(fp) 34 | fp = fp or io.stdout 35 | fp:write("/C { dup 255 and 255 div exch dup -8 bitshift 255 and 255 div 3 1 roll -16 bitshift 255 and 255 div 3 1 roll setrgbcolor } bind def\n") 36 | fp:write("/L { 4 2 roll moveto lineto } bind def\n") 37 | fp:write("/LX { dup 4 -1 roll exch moveto lineto } bind def\n") 38 | fp:write("/LY { dup 4 -1 roll moveto exch lineto } bind def\n") 39 | fp:write("/LS { 3 1 roll moveto show } bind def\n") 40 | fp:write("/RS { dup stringwidth pop 4 -1 roll exch sub 3 -1 roll moveto show } bind def\n") 41 | fp:write("/B { 4 copy 3 1 roll exch 6 2 roll 8 -2 roll moveto lineto lineto lineto closepath } bind def\n") 42 | end 43 | 44 | function eps.font(ft, size, fp) 45 | fp = fp or io.stdout 46 | fp:write(string.format('/FS %d def\n', size)); 47 | fp:write('/FS4 FS 4 div def\n'); 48 | fp:write('/' .. ft .. ' findfont FS scalefont setfont\n'); 49 | end 50 | 51 | local scale = 8; 52 | 53 | if #arg == 0 then 54 | print("Usage: r2plot.lua "); 55 | os.exit(1) 56 | end 57 | 58 | local fp = io.xopen(arg[1]); 59 | local n = tonumber(fp:read()); 60 | 61 | print('%!PS-Adobe-3.0 EPSF-3.0'); 62 | print('%%' .. string.format('BoundingBox: -%d -%d %.3f %.3f\n', 10*scale, scale, (n+1)*scale, (n+1)*scale)); 63 | print(string.format('%.3f setlinewidth', scale)); 64 | print(string.format('/plot { setgray moveto 0 %d rlineto } def', scale)); 65 | print(string.format('/plothalf { setgray moveto 0 %.2f rlineto } def', scale/2)); 66 | eps.func(); 67 | eps.font('Helvetica', scale-1); 68 | 69 | local i = 1; 70 | for l in fp:lines() do 71 | local t = l:split('\t'); 72 | print(string.format("%d %d FS4 add (%s) RS", (i-1)*scale-2, (i-1)*scale, t[1])); 73 | for j = 2, #t do 74 | if tonumber(t[j]) > 0.01 then 75 | print(string.format('%.2f %.2f %.2f plot stroke', (i-1+.5)*scale, (j-2)*scale, 1.-t[j])); 76 | end 77 | end 78 | i = i + 1; 79 | end 80 | for j = 1, 21 do 81 | print(string.format('%.2f %.2f %.2f plothalf stroke', -8*scale, (j-1) * scale/2, 1.-(j-1)/20)); 82 | end 83 | print('showpage'); 84 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/soap2sam.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # Contact: lh3 4 | # Version: 0.1.1 5 | 6 | use strict; 7 | use warnings; 8 | use Getopt::Std; 9 | 10 | &soap2sam; 11 | exit; 12 | 13 | sub mating { 14 | my ($s1, $s2) = @_; 15 | my $isize = 0; 16 | if ($s1->[2] ne '*' && $s1->[2] eq $s2->[2]) { # then calculate $isize 17 | my $x1 = ($s1->[1] & 0x10)? $s1->[3] + length($s1->[9]) : $s1->[3]; 18 | my $x2 = ($s2->[1] & 0x10)? $s2->[3] + length($s2->[9]) : $s2->[3]; 19 | $isize = $x2 - $x1; 20 | } 21 | # update mate coordinate 22 | if ($s2->[2] ne '*') { 23 | @$s1[6..8] = (($s2->[2] eq $s1->[2])? "=" : $s2->[2], $s2->[3], $isize); 24 | $s1->[1] |= 0x20 if ($s2->[1] & 0x10); 25 | } else { 26 | $s1->[1] |= 0x8; 27 | } 28 | if ($s1->[2] ne '*') { 29 | @$s2[6..8] = (($s1->[2] eq $s2->[2])? "=" : $s1->[2], $s1->[3], -$isize); 30 | $s2->[1] |= 0x20 if ($s1->[1] & 0x10); 31 | } else { 32 | $s2->[1] |= 0x8; 33 | } 34 | } 35 | 36 | sub soap2sam { 37 | my %opts = (); 38 | getopts("p", \%opts); 39 | die("Usage: soap2sam.pl [-p] \n") if (@ARGV == 0 && -t STDIN); 40 | my $is_paired = defined($opts{p}); 41 | # core loop 42 | my @s1 = (); 43 | my @s2 = (); 44 | my ($s_last, $s_curr) = (\@s1, \@s2); 45 | while (<>) { 46 | s/[\177-\377]|[\000-\010]|[\012-\040]//g; 47 | next if (&soap2sam_aux($_, $s_curr, $is_paired) < 0); 48 | if (@$s_last != 0 && $s_last->[0] eq $s_curr->[0]) { 49 | &mating($s_last, $s_curr); 50 | print join("\t", @$s_last), "\n"; 51 | print join("\t", @$s_curr), "\n"; 52 | @$s_last = (); @$s_curr = (); 53 | } else { 54 | print join("\t", @$s_last), "\n" if (@$s_last != 0); 55 | my $s = $s_last; $s_last = $s_curr; $s_curr = $s; 56 | } 57 | } 58 | print join("\t", @$s_last), "\n" if (@$s_last != 0); 59 | } 60 | 61 | sub soap2sam_aux { 62 | my ($line, $s, $is_paired) = @_; 63 | chomp($line); 64 | my @t = split(/\s+/, $line); 65 | return -1 if (@t < 9 || $line =~ /^\s/ || !$t[0]); 66 | @$s = (); 67 | # fix SOAP-2.1.x bugs 68 | @t = @t[0..2,4..$#t] unless ($t[3] =~ /^\d+$/); 69 | # read name 70 | $s->[0] = $t[0]; 71 | $s->[0] =~ s/\/[12]$//g; 72 | # initial flag (will be updated later) 73 | $s->[1] = 0; 74 | $s->[1] |= 1 | 1<<($t[4] eq 'a'? 6 : 7); 75 | $s->[1] |= 2 if ($is_paired); 76 | # read & quality 77 | $s->[9] = $t[1]; 78 | $s->[10] = (length($t[2]) > length($t[1]))? substr($t[2], 0, length($t[1])) : $t[2]; 79 | # cigar 80 | $s->[5] = length($s->[9]) . "M"; 81 | # coor 82 | $s->[2] = $t[7]; $s->[3] = $t[8]; 83 | $s->[1] |= 0x10 if ($t[6] eq '-'); 84 | # mapQ 85 | $s->[4] = $t[3] == 1? 30 : 0; 86 | # mate coordinate 87 | $s->[6] = '*'; $s->[7] = $s->[8] = 0; 88 | # aux 89 | push(@$s, "NM:i:$t[9]"); 90 | my $md = ''; 91 | if ($t[9]) { 92 | my @x; 93 | for (10 .. $#t) { 94 | push(@x, sprintf("%.3d,$1", $2)) if ($t[$_] =~ /^([ACGT])->(\d+)/i); 95 | } 96 | @x = sort(@x); 97 | my $a = 0; 98 | for (@x) { 99 | my ($y, $z) = split(","); 100 | $md .= (int($y)-$a) . $z; 101 | $a += $y - $a + 1; 102 | } 103 | $md .= length($t[1]) - $a; 104 | } else { 105 | $md = length($t[1]); 106 | } 107 | push(@$s, "MD:Z:$md"); 108 | return 0; 109 | } 110 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/wgsim_eval.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # Contact: lh3 4 | # Version: 0.1.5 5 | 6 | use strict; 7 | use warnings; 8 | use Getopt::Std; 9 | 10 | &wgsim_eval; 11 | exit; 12 | 13 | sub wgsim_eval { 14 | my %opts = (g=>5); 15 | getopts('pcag:', \%opts); 16 | die("Usage: wgsim_eval.pl [-pca] [-g $opts{g}] \n") if (@ARGV == 0 && -t STDIN); 17 | my (@c0, @c1, %fnfp); 18 | my ($max_q, $flag) = (0, 0); 19 | my $gap = $opts{g}; 20 | $flag |= 1 if (defined $opts{p}); 21 | $flag |= 2 if (defined $opts{c}); 22 | while (<>) { 23 | next if (/^\@/); 24 | my @t = split("\t"); 25 | next if (@t < 11); 26 | my $line = $_; 27 | my ($q, $is_correct, $chr, $left, $rght) = (int($t[4]/10), 1, $t[2], $t[3], $t[3]); 28 | $max_q = $q if ($q > $max_q); 29 | # right coordinate 30 | $_ = $t[5]; s/(\d+)[MDN]/$rght+=$1,'x'/eg; 31 | --$rght; 32 | # correct for soft clipping 33 | my ($left0, $rght0) = ($left, $rght); 34 | $left -= $1 if (/^(\d+)[SH]/); 35 | $rght += $1 if (/(\d+)[SH]$/); 36 | $left0 -= $1 if (/(\d+)[SH]$/); 37 | $rght0 += $1 if (/^(\d+)[SH]/); 38 | # skip unmapped reads 39 | next if (($t[1]&0x4) || $chr eq '*'); 40 | # parse read name and check 41 | if ($t[0] =~ /^(\S+)_(\d+)_(\d+)_/) { 42 | if ($1 ne $chr) { # different chr 43 | $is_correct = 0; 44 | } else { 45 | if ($flag & 2) { 46 | if (($t[1]&0x40) && !($t[1]&0x10)) { # F3, forward 47 | $is_correct = 0 if (abs($2 - $left) > $gap && abs($2 - $left0) > $gap); 48 | } elsif (($t[1]&0x40) && ($t[1]&0x10)) { # F3, reverse 49 | $is_correct = 0 if (abs($3 - $rght) > $gap && abs($3 - $rght0) > $gap); 50 | } elsif (($t[1]&0x80) && !($t[1]&0x10)) { # R3, forward 51 | $is_correct = 0 if (abs($3 - $left) > $gap && abs($3 - $left0) > $gap); 52 | } else { # R3, reverse 53 | $is_correct = 0 if (abs($2 - $rght) > $gap && abs($3 - $rght0) > $gap); 54 | } 55 | } else { 56 | if ($t[1] & 0x10) { # reverse 57 | $is_correct = 0 if (abs($3 - $rght) > $gap && abs($3 - $rght0) > $gap); # in case of indels that are close to the end of a reads 58 | } else { 59 | $is_correct = 0 if (abs($2 - $left) > $gap && abs($2 - $left0) > $gap); 60 | } 61 | } 62 | } 63 | } else { 64 | warn("[wgsim_eval] read '$t[0]' was not generated by wgsim?\n"); 65 | next; 66 | } 67 | ++$c0[$q]; 68 | ++$c1[$q] unless ($is_correct); 69 | @{$fnfp{$t[4]}} = (0, 0) unless (defined $fnfp{$t[4]}); 70 | ++$fnfp{$t[4]}[0]; 71 | ++$fnfp{$t[4]}[1] unless ($is_correct); 72 | print STDERR $line if (($flag&1) && !$is_correct && $q > 0); 73 | } 74 | # print 75 | my ($cc0, $cc1) = (0, 0); 76 | if (!defined($opts{a})) { 77 | for (my $i = $max_q; $i >= 0; --$i) { 78 | $c0[$i] = 0 unless (defined $c0[$i]); 79 | $c1[$i] = 0 unless (defined $c1[$i]); 80 | $cc0 += $c0[$i]; $cc1 += $c1[$i]; 81 | printf("%.2dx %12d / %-12d %12d %.3e\n", $i, $c1[$i], $c0[$i], $cc0, $cc1/$cc0) if ($cc0); 82 | } 83 | } else { 84 | for (reverse(sort {$a<=>$b} (keys %fnfp))) { 85 | next if ($_ == 0); 86 | $cc0 += $fnfp{$_}[0]; 87 | $cc1 += $fnfp{$_}[1]; 88 | print join("\t", $_, $cc0, $cc1), "\n"; 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/misc/zoom2sam.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl -w 2 | 3 | # Contact: lh3 4 | # Version: 0.1.0 5 | 6 | use strict; 7 | use warnings; 8 | use Getopt::Std; 9 | 10 | &zoom2sam; 11 | exit; 12 | 13 | sub mating { 14 | my ($s1, $s2) = @_; 15 | my $isize = 0; 16 | if ($s1->[2] ne '*' && $s1->[2] eq $s2->[2]) { # then calculate $isize 17 | my $x1 = ($s1->[1] & 0x10)? $s1->[3] + length($s1->[9]) : $s1->[3]; 18 | my $x2 = ($s2->[1] & 0x10)? $s2->[3] + length($s2->[9]) : $s2->[3]; 19 | $isize = $x2 - $x1; 20 | } 21 | # update mate coordinate 22 | if ($s2->[2] ne '*') { 23 | @$s1[6..8] = (($s2->[2] eq $s1->[2])? "=" : $s2->[2], $s2->[3], $isize); 24 | $s1->[1] |= 0x20 if ($s2->[1] & 0x10); 25 | } else { 26 | $s1->[1] |= 0x8; 27 | } 28 | if ($s1->[2] ne '*') { 29 | @$s2[6..8] = (($s1->[2] eq $s2->[2])? "=" : $s1->[2], $s1->[3], -$isize); 30 | $s2->[1] |= 0x20 if ($s1->[1] & 0x10); 31 | } else { 32 | $s2->[1] |= 0x8; 33 | } 34 | } 35 | 36 | sub zoom2sam { 37 | my %opts = (); 38 | getopts("p", \%opts); 39 | die("Usage: zoom2sam.pl [-p] 40 | Warnings: This script only supports the default Illumina outputs.\n") if (@ARGV < 2); 41 | my $is_paired = defined($opts{p}); 42 | my $len = shift(@ARGV); 43 | # core loop 44 | my @s1 = (); 45 | my @s2 = (); 46 | my ($s_last, $s_curr) = (\@s1, \@s2); 47 | while (<>) { 48 | &zoom2sam_aux($_, $s_curr, $is_paired, $len); 49 | if (@$s_last != 0 && $s_last->[0] eq $s_curr->[0]) { 50 | &mating($s_last, $s_curr); 51 | print join("\t", @$s_last), "\n"; 52 | print join("\t", @$s_curr), "\n"; 53 | @$s_last = (); @$s_curr = (); 54 | } else { 55 | print join("\t", @$s_last), "\n" if (@$s_last != 0); 56 | my $s = $s_last; $s_last = $s_curr; $s_curr = $s; 57 | } 58 | } 59 | print join("\t", @$s_last), "\n" if (@$s_last != 0); 60 | } 61 | 62 | sub zoom2sam_aux { 63 | my ($line, $s, $is_paired, $len) = @_; 64 | chomp($line); 65 | my @t = split("\t", $line); 66 | @$s = (); 67 | # read name 68 | $s->[0] = $t[0]; 69 | # initial flag (will be updated later) 70 | $s->[1] = 0; 71 | $s->[1] |= 1 | 1<<6 if ($s->[0] =~ /_F$/); 72 | $s->[1] |= 1 | 1<<7 if ($s->[0] =~ /_R$/); 73 | $s->[1] |= 2 if ($is_paired); 74 | # read & quality 75 | $s->[9] = "*"; $s->[10] = "*"; 76 | # cigar 77 | $s->[5] = $len . "M"; 78 | # coor 79 | my @s = split(/\s+/, $t[1]); 80 | $s->[2] = $s[0]; 81 | $t[1] =~ /:(\d+)$/; 82 | $s->[3] = $1 + 1; 83 | if ($s->[0] =~ /_[FR]$/) { 84 | my $u = ($s->[0] =~ /_F$/)? 1 : 0; 85 | my $w = ($t[2] eq '+')? 1 : 0; 86 | $s->[1] |= 0x10 if ($u ^ $w); 87 | $s->[0] =~ s/_[FR]$//; 88 | } else { 89 | $s->[1] |= 0x10 if ($t[2] eq '-'); 90 | } 91 | # mapQ 92 | $s->[4] = 30; 93 | # mate coordinate 94 | $s->[6] = '*'; $s->[7] = $s->[8] = 0; 95 | # aux 96 | push(@$s, "NM:i:$t[3]"); 97 | } 98 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/sam.h: -------------------------------------------------------------------------------- 1 | #ifndef BAM_SAM_H 2 | #define BAM_SAM_H 3 | 4 | #include "bam.h" 5 | 6 | /*! 7 | @header 8 | 9 | This file provides higher level of I/O routines and unifies the APIs 10 | for SAM and BAM formats. These APIs are more convenient and 11 | recommended. 12 | 13 | @copyright Genome Research Ltd. 14 | */ 15 | 16 | /*! @typedef 17 | @abstract SAM/BAM file handler 18 | @field type type of the handler; bit 1 for BAM, 2 for reading and bit 3-4 for flag format 19 | @field bam BAM file handler; valid if (type&1) == 1 20 | @field tamr SAM file handler for reading; valid if type == 2 21 | @field tamw SAM file handler for writing; valid if type == 0 22 | @field header header struct 23 | */ 24 | typedef struct { 25 | int type; 26 | union { 27 | tamFile tamr; 28 | bamFile bam; 29 | FILE *tamw; 30 | } x; 31 | bam_header_t *header; 32 | } samfile_t; 33 | 34 | #ifdef __cplusplus 35 | extern "C" { 36 | #endif 37 | 38 | /*! 39 | @abstract Open a SAM/BAM file 40 | 41 | @param fn SAM/BAM file name; "-" is recognized as stdin (for 42 | reading) or stdout (for writing). 43 | 44 | @param mode open mode /[rw](b?)(u?)(h?)([xX]?)/: 'r' for reading, 45 | 'w' for writing, 'b' for BAM I/O, 'u' for uncompressed BAM output, 46 | 'h' for outputing header in SAM, 'x' for HEX flag and 'X' for 47 | string flag. If 'b' present, it must immediately follow 'r' or 48 | 'w'. Valid modes are "r", "w", "wh", "wx", "whx", "wX", "whX", 49 | "rb", "wb" and "wbu" exclusively. 50 | 51 | @param aux auxiliary data; if mode[0]=='w', aux points to 52 | bam_header_t; if strcmp(mode, "rb")!=0 and @SQ header lines in SAM 53 | are absent, aux points the file name of the list of the reference; 54 | aux is not used otherwise. If @SQ header lines are present in SAM, 55 | aux is not used, either. 56 | 57 | @return SAM/BAM file handler 58 | */ 59 | samfile_t *samopen(const char *fn, const char *mode, const void *aux); 60 | 61 | /*! 62 | @abstract Close a SAM/BAM handler 63 | @param fp file handler to be closed 64 | */ 65 | void samclose(samfile_t *fp); 66 | 67 | /*! 68 | @abstract Read one alignment 69 | @param fp file handler 70 | @param b alignment 71 | @return bytes read 72 | */ 73 | int samread(samfile_t *fp, bam1_t *b); 74 | 75 | /*! 76 | @abstract Write one alignment 77 | @param fp file handler 78 | @param b alignment 79 | @return bytes written 80 | */ 81 | int samwrite(samfile_t *fp, const bam1_t *b); 82 | 83 | /*! 84 | @abstract Get the pileup for a whole alignment file 85 | @param fp file handler 86 | @param mask mask transferred to bam_plbuf_set_mask() 87 | @param func user defined function called in the pileup process 88 | #param data user provided data for func() 89 | */ 90 | int sampileup(samfile_t *fp, int mask, bam_pileup_f func, void *data); 91 | 92 | char *samfaipath(const char *fn_ref); 93 | int samthreads(samfile_t *fp, int n_threads, int n_sub_blks); 94 | 95 | #ifdef __cplusplus 96 | } 97 | #endif 98 | 99 | #endif 100 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/sam_header.h: -------------------------------------------------------------------------------- 1 | #ifndef __SAM_HEADER_H__ 2 | #define __SAM_HEADER_H__ 3 | 4 | #ifdef __cplusplus 5 | extern "C" { 6 | #endif 7 | 8 | void *sam_header_parse2(const char *headerText); 9 | void *sam_header_merge(int n, const void **dicts); 10 | void sam_header_free(void *header); 11 | char *sam_header_write(const void *headerDict); // returns a newly allocated string 12 | 13 | /* 14 | // Usage example 15 | const char *key, *val; 16 | void *iter = sam_header_parse2(bam->header->text); 17 | while ( iter = sam_header_key_val(iter, "RG","ID","SM" &key,&val) ) printf("%s\t%s\n", key,val); 18 | */ 19 | void *sam_header2key_val(void *iter, const char type[2], const char key_tag[2], const char value_tag[2], const char **key, const char **value); 20 | char **sam_header2list(const void *_dict, char type[2], char key_tag[2], int *_n); 21 | 22 | /* 23 | // Usage example 24 | int i, j, n; 25 | const char *tags[] = {"SN","LN","UR","M5",NULL}; 26 | void *dict = sam_header_parse2(bam->header->text); 27 | char **tbl = sam_header2tbl_n(h->dict, "SQ", tags, &n); 28 | for (i=0; i 2 | #include 3 | #include "sample.h" 4 | #include "khash.h" 5 | KHASH_MAP_INIT_STR(sm, int) 6 | 7 | bam_sample_t *bam_smpl_init(void) 8 | { 9 | bam_sample_t *s; 10 | s = calloc(1, sizeof(bam_sample_t)); 11 | s->rg2smid = kh_init(sm); 12 | s->sm2id = kh_init(sm); 13 | return s; 14 | } 15 | 16 | void bam_smpl_destroy(bam_sample_t *sm) 17 | { 18 | int i; 19 | khint_t k; 20 | khash_t(sm) *rg2smid = (khash_t(sm)*)sm->rg2smid; 21 | if (sm == 0) return; 22 | for (i = 0; i < sm->n; ++i) free(sm->smpl[i]); 23 | free(sm->smpl); 24 | for (k = kh_begin(rg2smid); k != kh_end(rg2smid); ++k) 25 | if (kh_exist(rg2smid, k)) free((char*)kh_key(rg2smid, k)); 26 | kh_destroy(sm, sm->rg2smid); 27 | kh_destroy(sm, sm->sm2id); 28 | free(sm); 29 | } 30 | 31 | static void add_pair(bam_sample_t *sm, khash_t(sm) *sm2id, const char *key, const char *val) 32 | { 33 | khint_t k_rg, k_sm; 34 | int ret; 35 | khash_t(sm) *rg2smid = (khash_t(sm)*)sm->rg2smid; 36 | k_rg = kh_get(sm, rg2smid, key); 37 | if (k_rg != kh_end(rg2smid)) return; // duplicated @RG-ID 38 | k_rg = kh_put(sm, rg2smid, strdup(key), &ret); 39 | k_sm = kh_get(sm, sm2id, val); 40 | if (k_sm == kh_end(sm2id)) { // absent 41 | if (sm->n == sm->m) { 42 | sm->m = sm->m? sm->m<<1 : 1; 43 | sm->smpl = realloc(sm->smpl, sizeof(void*) * sm->m); 44 | } 45 | sm->smpl[sm->n] = strdup(val); 46 | k_sm = kh_put(sm, sm2id, sm->smpl[sm->n], &ret); 47 | kh_val(sm2id, k_sm) = sm->n++; 48 | } 49 | kh_val(rg2smid, k_rg) = kh_val(sm2id, k_sm); 50 | } 51 | 52 | int bam_smpl_add(bam_sample_t *sm, const char *fn, const char *txt) 53 | { 54 | const char *p = txt, *q, *r; 55 | kstring_t buf, first_sm; 56 | int n = 0; 57 | khash_t(sm) *sm2id = (khash_t(sm)*)sm->sm2id; 58 | if (txt == 0) { 59 | add_pair(sm, sm2id, fn, fn); 60 | return 0; 61 | } 62 | memset(&buf, 0, sizeof(kstring_t)); 63 | memset(&first_sm, 0, sizeof(kstring_t)); 64 | while ((q = strstr(p, "@RG")) != 0) { 65 | p = q + 3; 66 | r = q = 0; 67 | if ((q = strstr(p, "\tID:")) != 0) q += 4; 68 | if ((r = strstr(p, "\tSM:")) != 0) r += 4; 69 | if (r && q) { 70 | char *u, *v; 71 | int oq, or; 72 | for (u = (char*)q; *u && *u != '\t' && *u != '\n'; ++u); 73 | for (v = (char*)r; *v && *v != '\t' && *v != '\n'; ++v); 74 | oq = *u; or = *v; *u = *v = '\0'; 75 | buf.l = 0; kputs(fn, &buf); kputc('/', &buf); kputs(q, &buf); 76 | add_pair(sm, sm2id, buf.s, r); 77 | if ( !first_sm.s ) 78 | kputs(r,&first_sm); 79 | *u = oq; *v = or; 80 | } else break; 81 | p = q > r? q : r; 82 | ++n; 83 | } 84 | if (n == 0) add_pair(sm, sm2id, fn, fn); 85 | // If there is only one RG tag present in the header and reads are not annotated, don't refuse to work but 86 | // use the tag instead. 87 | else if ( n==1 && first_sm.s ) 88 | add_pair(sm,sm2id,fn,first_sm.s); 89 | if ( first_sm.s ) 90 | free(first_sm.s); 91 | 92 | // add_pair(sm, sm2id, fn, fn); 93 | free(buf.s); 94 | return 0; 95 | } 96 | 97 | int bam_smpl_rg2smid(const bam_sample_t *sm, const char *fn, const char *rg, kstring_t *str) 98 | { 99 | khint_t k; 100 | khash_t(sm) *rg2smid = (khash_t(sm)*)sm->rg2smid; 101 | if (rg) { 102 | str->l = 0; 103 | kputs(fn, str); kputc('/', str); kputs(rg, str); 104 | k = kh_get(sm, rg2smid, str->s); 105 | } else k = kh_get(sm, rg2smid, fn); 106 | return k == kh_end(rg2smid)? -1 : kh_val(rg2smid, k); 107 | } 108 | -------------------------------------------------------------------------------- /src/samtools-0.1.19/sample.h: -------------------------------------------------------------------------------- 1 | #ifndef BAM_SAMPLE_H 2 | #define BAM_SAMPLE_H 3 | 4 | #include "kstring.h" 5 | 6 | typedef struct { 7 | int n, m; 8 | char **smpl; 9 | void *rg2smid, *sm2id; 10 | } bam_sample_t; 11 | 12 | bam_sample_t *bam_smpl_init(void); 13 | int bam_smpl_add(bam_sample_t *sm, const char *abs, const char *txt); 14 | int bam_smpl_rg2smid(const bam_sample_t *sm, const char *fn, const char *rg, kstring_t *str); 15 | void bam_smpl_destroy(bam_sample_t *sm); 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /src/samtools_helper.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2010,2011,2012 Scott Clark. All rights reserved. 3 | * 4 | * Developed by: 5 | * Scott Clark 6 | * Cornell University Center for Applied Mathematics 7 | * http://cam.cornell.edu 8 | * AND 9 | * Rob Egan 10 | * Department of Energy Joint Genome Institute 11 | * http://jgi.doe.gov 12 | * 13 | * Permission is hereby granted, free of charge, to any person obtaining a 14 | * copy of this software and associated documentation files (the "Software"), 15 | * to deal with the Software without restriction, including without limitation 16 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, 17 | * and/or sell copies of the Software, and to permit persons to whom the 18 | * Software is furnished to do so, subject to the following conditions: 19 | * 20 | * 1. Redistributions of source code must retain the above copyright notice, 21 | * this list of conditions and the following disclaimers. 22 | * 2. Redistributions in binary form must reproduce the above copyright 23 | * notice, this list of conditions and the following disclaimers in the 24 | * documentation and/or other materials provided with the distribution. 25 | * 3. Neither the names of Cornell University, The Joint Genome Institute, 26 | * nor the names of its contributors may be used to endorse or promote 27 | * products derived from this Software without specific prior written 28 | * permission. 29 | * 30 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 31 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 32 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 33 | * CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 34 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 35 | * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 36 | * DEALINGS WITH THE SOFTWARE. 37 | */ 38 | 39 | // For more information on the license please see 40 | // The University of Illinois/NCSA Open Source License 41 | // http://www.opensource.org/licenses/UoI-NCSA.php 42 | 43 | 44 | #ifndef _SAMTOOLS_HELPER_H_ 45 | #define _SAMTOOLS_HELPER_H_ 46 | 47 | #include 48 | #include "sam.h" 49 | #include "kstring.h" 50 | 51 | #define USE_EQUAL 1 52 | #define DROP_TAG 2 53 | #define BIN_QUAL 4 54 | #define UPDATE_NM 8 55 | #define UPDATE_MD 16 56 | #define HASH_QNM 32 57 | 58 | void bam_fillmd1_core_ALE(bam1_t *b, char *ref); 59 | int bam_aux_drop_other(bam1_t *b, uint8_t *s); 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /test/PhiX-sort.bam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sc932/ALE/e7b0777f3b1b1eaaf280bd96452c63a59cc43683/test/PhiX-sort.bam -------------------------------------------------------------------------------- /test/PhiX-tiny-+unmapped-single.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0-unmapped 4 gi|9626372|ref|NC_001422.1| * * * * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiX-tiny-partial-single.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAA IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:1 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:64T0 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-partial2-single.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGGATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAA IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:2 MD:Z:20T43T0 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-partial3-single.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CAGACGCCGACTGCTATCAGGATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAA IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:3 MD:Z:2C17T43T0 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-partial4-single.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 10M1I55M * 0 0 CAGACGCCGCACTGCTATCAGGATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAA IHHHHHGHHIHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:5 MD:Z:2C6A10T43T0 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-partial5-single.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 10M1I55M * 0 0 CAGACGCCGCACTGCTATCAGGATTTTTGTGTGCCTGAGTATGCTACAGCTAATGGCCGTCTTCAA IHHHHHGHHIHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:6 MD:Z:2C6A10T21G21T0 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-removed-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 75 gi|9626372|ref|NC_001422.1| 24 60 88M * * * AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0-singlenow 16 gi|9626372|ref|NC_001422.1| 123 60 82M * * * CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-removed2-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0-x 75 gi|9626372|ref|NC_001422.1| 24 60 88M * * * AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0-y 155 gi|9626372|ref|NC_001422.1| 123 60 82M * * * CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch0-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 125 183 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 125 60 82M = 24 -183 GGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGAT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch1-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 150 208 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 150 60 82M = 24 -208 ATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTGTCAAAAACTGACGCGTTGGAT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch2-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 175 233 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 175 60 82M = 24 -233 TACTTTGCGACCTTTCGCCATCAACTAACGATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch3-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 200 258 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 200 60 82M = 24 -258 TAACGATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTAG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch4-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 225 283 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 225 60 82M = 24 -283 GTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTAGATATGAGTCACATTTTGTTCATGGT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch5-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 250 308 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 250 60 82M = 24 -308 ATGCTTGGCACGTTCGTCAAGGACTGGTTTAGATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAA HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch6-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 275 333 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 275 60 82M = 24 -333 GGTTTAGATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATCTGAGTC HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch7-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 300 358 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 300 60 82M = 24 -358 TCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCAACCACTAATAGGT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-stretch8-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 321 379 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 321 60 82M = 24 -379 TGACATTTTAAAAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTA HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny-unmapped-single.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 4 gi|9626372|ref|NC_001422.1| * * * * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX-tiny.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:5386 2 | @PG ID:bwa PN:bwa VN:0.5.9-r16 3 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 4 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 5 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 6 | HWI-ST122_0307:1:1:1132:2931#0 0 gi|9626372|ref|NC_001422.1| 5129 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 10 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 11 | -------------------------------------------------------------------------------- /test/PhiX.bam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sc932/ALE/e7b0777f3b1b1eaaf280bd96452c63a59cc43683/test/PhiX.bam -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-chimer-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 67 gi|9626372|ref|NC_001422.1| 24 60 88M num2 1 0 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 131 num2 1 60 82M gi|9626372|ref|NC_001422.1| 24 0 CGCAGTTCGCTACACGCAGGACGCTTTTTCACGTTCTGGTTGGTTGTGGCCTGTTGATGCTAAAGGTGAGCCGCTTAAAGCT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-removed-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 75 gi|9626372|ref|NC_001422.1| 24 60 88M * * * AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0-singlenow 16 gi|9626372|ref|NC_001422.1| 123 60 82M * * * CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-removed2-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0-x 75 gi|9626372|ref|NC_001422.1| 24 60 88M * * * AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0-y 155 gi|9626372|ref|NC_001422.1| 123 60 82M * * * CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch0-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 125 183 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 125 60 82M = 24 -183 GGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGAT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch1-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 150 208 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 150 60 82M = 24 -208 ATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACGATTCTGTCAAAAACTGACGCGTTGGAT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch2-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 175 233 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 175 60 82M = 24 -233 TACTTTGCGACCTTTCGCCATCAACTAACGATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch3-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 200 258 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 200 60 82M = 24 -258 TAACGATTCTGTCAAAAACTGACGCGTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTAG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch4-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 225 283 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 225 60 82M = 24 -283 GTTGGATGAGGAGAAGTGGCTTAATATGCTTGGCACGTTCGTCAAGGACTGGTTTAGATATGAGTCACATTTTGTTCATGGT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch5-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 250 308 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 250 60 82M = 24 -308 ATGCTTGGCACGTTCGTCAAGGACTGGTTTAGATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAA HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch6-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 275 333 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 275 60 82M = 24 -333 GGTTTAGATATGAGTCACATTTTGTTCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATCTGAGTC HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch7-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 300 358 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 300 60 82M = 24 -358 TCATGGTAGAGATTCTCTTGTTGACATTTTAAAAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCAACCACTAATAGGT HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny-stretch8-pair.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 321 379 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 321 60 82M = 24 -379 TGACATTTTAAAAGAGCGTGGATTACTATCTGAGTCCGATGCTGTTCAACCACTAATAGGTAAGAAATCATGAGTCAAGTTA HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 NM:i:0 MD:Z:82 12 | -------------------------------------------------------------------------------- /test/PhiXbroken-tiny.sam: -------------------------------------------------------------------------------- 1 | @SQ SN:gi|9626372|ref|NC_001422.1| LN:4900 2 | @SQ SN:num2 LN:486 3 | @PG ID:bwa PN:bwa VN:0.5.9-r16 4 | HWI-ST122_0307:1:1:1083:3521#0 16 gi|9626372|ref|NC_001422.1| 4705 37 65M * 0 0 CACACGCCGACTGCTATCAGTATTTTTGTGTGCCTGAGTATGGTACAGCTAATGGCCGTCTTCAT IHHHHHGHHHHHIHHHHHHGGGGHEHHHHHHHHHHHGHHHHHHHHHHHHHHHHIHHHHHHHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:65 5 | HWI-ST122_0307:1:1:1106:6980#0 99 gi|9626372|ref|NC_001422.1| 4449 60 36M = 4546 198 AAGAAAGGTATTAAGGATGAGTGTTCAAGATTGCTG HHHHHHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:36 6 | HWI-ST122_0307:1:1:1106:6980#0 147 gi|9626372|ref|NC_001422.1| 4546 60 101M = 4449 -198 GACAGGCTCATGCTGATGGTTGGTTTATCGTTTTTGACACTCTCACGTTGGCTGACGACCGATTAGAGGCGTTTTATGATAATCCCAATGCTTTGCGTGAC 2;@8A@45535<>8<;HHHHHFHHHGHFHHHBHFHHHHFHHHHHHHHHHHIHHHHHHIHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 7 | HWI-ST122_0307:1:1:1132:2931#0 0 num2 229 37 101M * 0 0 AATCAGAATGAGCCGCAACTTCGGGATGAAAATGCTCACAATGACAAATCTGTCCACGGAGTGCTTAATCCAACTTACCAAGCTGGGTTACGACGCGACGC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHGHHHHHHHHHHIHHHHGHHHHHGHGHHHHGHHIHHHHHHHHHGHHHGHHHCGGHHHEHHHHH XT:A:U NM:i:0 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 8 | HWI-ST122_0307:1:1:1135:1553#0 163 gi|9626372|ref|NC_001422.1| 2795 60 101M = 2894 200 GTACGCCGGGCAATAATGTTTATGTTGGTTTCATGGTTTGGTCTAACTTTACCGCTACTAAATGCCGCGGATTGGTTTCGCTGAATCAGGTTATTAAAGAG HHHHHHHHHHHHHHEHHHHHHHHHHHHHIHHHHHHHHHHHHIHHHHHHHHGHHHHGGHHHFAGGGHHHHHHH:HHHHHGGHHFE@GGFGDGHEHHFDDG## XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 9 | HWI-ST122_0307:1:1:1135:1553#0 83 gi|9626372|ref|NC_001422.1| 2894 60 101M = 2795 -200 AGATTATTTGTCTCCAGCCACTTAAGTGAGGTGATTTATGTTTGGTGCTATTGCTGGCGGTATTGCTTCTGCTCTTGCTGGTGGCGCCATGTCTAAATTGT ###########H6HHHHHHHHGEHHHIHHHHHGGFDHHHHHGHHHGHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:101 10 | HWI-ST122_0307:1:1:1140:9542#0 99 gi|9626372|ref|NC_001422.1| 24 60 88M = 123 181 AGAAGTTAACACTTTCGGATATTTCTGATGAGTCGAAAAATTATCTTGATAAAGCAGGAATTACTACTGCTTGTTTACGAATTAAATC FFHHHFFHHHGFGGGHHHFHFHHHHHHHHHHHHHHHFHHHHHHHHHHHHHHHHHHGHGHHHHHHHHHHGHHHHGHHHHHBHHHHHHHH XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:88 11 | HWI-ST122_0307:1:1:1140:9542#0 147 gi|9626372|ref|NC_001422.1| 123 60 82M = 24 -181 CTGGCGGAAAATGAGAAAATTCGACCTATCCTTGCGCAGCTCGAGAAGCTCTTACTTTGCGACCTTTCGCCATCAACTAACG HHHHHHHHHHHFH@HHFHFHHHHEHHH55555EBGGFEGHHHHHHGHHHHHHHEFHHA@>A5HIHHHHHHHHGGGGGCBBDD XT:A:U NM:i:0 SM:i:37 AM:i:37 X0:i:1 X1:i:0 XM:i:0 XO:i:0 XG:i:0 MD:Z:82 12 | --------------------------------------------------------------------------------