diff --git a/docs/Makefile b/docs/Makefile new file mode 100755 index 0000000000000000000000000000000000000000..071223baabccb81db1784cacba6985f1ca2c2dc4 --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,130 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest + +help: + @echo "Please use \`make <target>' where <target> is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + -rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/track.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/track.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/track" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/track" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + make -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." diff --git a/docs/_build/doctrees/content/advanced-usage.doctree b/docs/_build/doctrees/content/advanced-usage.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3f51c816304266e5f6cd1eb7e4bdf928a04b674e Binary files /dev/null and b/docs/_build/doctrees/content/advanced-usage.doctree differ diff --git a/docs/_build/doctrees/content/annotateBed.doctree b/docs/_build/doctrees/content/annotateBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..97b0fc521092645e1f3c194c055660f7405354ca Binary files /dev/null and b/docs/_build/doctrees/content/annotateBed.doctree differ diff --git a/docs/_build/doctrees/content/bamToBed.doctree b/docs/_build/doctrees/content/bamToBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ee5d9153bb4fb3767c32febac4ceb026c17ccc37 Binary files /dev/null and b/docs/_build/doctrees/content/bamToBed.doctree differ diff --git a/docs/_build/doctrees/content/bed12ToBed6.doctree b/docs/_build/doctrees/content/bed12ToBed6.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1ef4dbb0efad6fdbb3a9d7faa9f0808f2aad1522 Binary files /dev/null and b/docs/_build/doctrees/content/bed12ToBed6.doctree differ diff --git a/docs/_build/doctrees/content/bedToBam.doctree b/docs/_build/doctrees/content/bedToBam.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bcc97557355721ce19748659c4eca660789deeaf Binary files /dev/null and b/docs/_build/doctrees/content/bedToBam.doctree differ diff --git a/docs/_build/doctrees/content/bedToIgv.doctree b/docs/_build/doctrees/content/bedToIgv.doctree new file mode 100644 index 0000000000000000000000000000000000000000..822a77ee2282a9dcf07faabd08ede1cf119b054d Binary files /dev/null and b/docs/_build/doctrees/content/bedToIgv.doctree differ diff --git a/docs/_build/doctrees/content/bedtools-suite.doctree b/docs/_build/doctrees/content/bedtools-suite.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e0948ee3afd0fe654b75a2535af39a9802c39b2b Binary files /dev/null and b/docs/_build/doctrees/content/bedtools-suite.doctree differ diff --git a/docs/_build/doctrees/content/closestBed.doctree b/docs/_build/doctrees/content/closestBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7ff121e6886ed7e8872f1c3cafffc298556a3b65 Binary files /dev/null and b/docs/_build/doctrees/content/closestBed.doctree differ diff --git a/docs/_build/doctrees/content/complementBed.doctree b/docs/_build/doctrees/content/complementBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7e4e5bd2d32e63de7a5ea7f29199f32931a300af Binary files /dev/null and b/docs/_build/doctrees/content/complementBed.doctree differ diff --git a/docs/_build/doctrees/content/coverageBed.doctree b/docs/_build/doctrees/content/coverageBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5c848c40afb8231f31bd5669fd88c092e4661ac7 Binary files /dev/null and b/docs/_build/doctrees/content/coverageBed.doctree differ diff --git a/docs/_build/doctrees/content/example-usage.doctree b/docs/_build/doctrees/content/example-usage.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c6822d5e80c10a72660bb7f8070721e21b069d6e Binary files /dev/null and b/docs/_build/doctrees/content/example-usage.doctree differ diff --git a/docs/_build/doctrees/content/fastafromBed.doctree b/docs/_build/doctrees/content/fastafromBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d6c12aa9001de3811296673d033948b088df7c89 Binary files /dev/null and b/docs/_build/doctrees/content/fastafromBed.doctree differ diff --git a/docs/_build/doctrees/content/general-usage.doctree b/docs/_build/doctrees/content/general-usage.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3d9efcc0472f1cc24a8191eeda480b357f667c99 Binary files /dev/null and b/docs/_build/doctrees/content/general-usage.doctree differ diff --git a/docs/_build/doctrees/content/genomecoverageBed.doctree b/docs/_build/doctrees/content/genomecoverageBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ff2ff1fd1a5b9808ef75bb09148647d0aacb052e Binary files /dev/null and b/docs/_build/doctrees/content/genomecoverageBed.doctree differ diff --git a/docs/_build/doctrees/content/groupBy.doctree b/docs/_build/doctrees/content/groupBy.doctree new file mode 100644 index 0000000000000000000000000000000000000000..222166fe0f1c0088c5469e45c5a109f7bfe13b91 Binary files /dev/null and b/docs/_build/doctrees/content/groupBy.doctree differ diff --git a/docs/_build/doctrees/content/installation.doctree b/docs/_build/doctrees/content/installation.doctree new file mode 100644 index 0000000000000000000000000000000000000000..00f7911f34847654fa55e5c1ba831a258db1c32d Binary files /dev/null and b/docs/_build/doctrees/content/installation.doctree differ diff --git a/docs/_build/doctrees/content/intersectBed.doctree b/docs/_build/doctrees/content/intersectBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5b4172496177a01873648b26abe0c4b23210f2c5 Binary files /dev/null and b/docs/_build/doctrees/content/intersectBed.doctree differ diff --git a/docs/_build/doctrees/content/linksBed.doctree b/docs/_build/doctrees/content/linksBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..919731d870be856bd978e77781d763083d762b86 Binary files /dev/null and b/docs/_build/doctrees/content/linksBed.doctree differ diff --git a/docs/_build/doctrees/content/maskfastafromBed.doctree b/docs/_build/doctrees/content/maskfastafromBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..927c9727f0d2f205c50d1272fefcdd105afdf700 Binary files /dev/null and b/docs/_build/doctrees/content/maskfastafromBed.doctree differ diff --git a/docs/_build/doctrees/content/mergeBed.doctree b/docs/_build/doctrees/content/mergeBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..8ec8c517faf720591cde0f35c99a9d0bb25530a2 Binary files /dev/null and b/docs/_build/doctrees/content/mergeBed.doctree differ diff --git a/docs/_build/doctrees/content/overlap.doctree b/docs/_build/doctrees/content/overlap.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bd3aaab28681af8373ae1a4d435b96d001a091a5 Binary files /dev/null and b/docs/_build/doctrees/content/overlap.doctree differ diff --git a/docs/_build/doctrees/content/overview.doctree b/docs/_build/doctrees/content/overview.doctree new file mode 100644 index 0000000000000000000000000000000000000000..086d8f6e38074f08e8277338ad1e27e0489f5d9e Binary files /dev/null and b/docs/_build/doctrees/content/overview.doctree differ diff --git a/docs/_build/doctrees/content/pairToBed.doctree b/docs/_build/doctrees/content/pairToBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e47b8c02f11ab5b2b9423413df061c147d7aefd6 Binary files /dev/null and b/docs/_build/doctrees/content/pairToBed.doctree differ diff --git a/docs/_build/doctrees/content/pairToPair.doctree b/docs/_build/doctrees/content/pairToPair.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d1b3945f4f1ce87f3bd73797d8fa3dbb0e2b9389 Binary files /dev/null and b/docs/_build/doctrees/content/pairToPair.doctree differ diff --git a/docs/_build/doctrees/content/quick-start.doctree b/docs/_build/doctrees/content/quick-start.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d00a93bfef665e6d4770c3f179bd8b51fe87bf29 Binary files /dev/null and b/docs/_build/doctrees/content/quick-start.doctree differ diff --git a/docs/_build/doctrees/content/shuffleBed.doctree b/docs/_build/doctrees/content/shuffleBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1bdfc48c6853b7cae0e5da71339b2097581bfec6 Binary files /dev/null and b/docs/_build/doctrees/content/shuffleBed.doctree differ diff --git a/docs/_build/doctrees/content/slopBed.doctree b/docs/_build/doctrees/content/slopBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5dc021dd1670735850cf3f5f0591fddd10ee8768 Binary files /dev/null and b/docs/_build/doctrees/content/slopBed.doctree differ diff --git a/docs/_build/doctrees/content/sortBed.doctree b/docs/_build/doctrees/content/sortBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..93f3442d6dc2e2f04c5faca49ea8231f4e5a6d5d Binary files /dev/null and b/docs/_build/doctrees/content/sortBed.doctree differ diff --git a/docs/_build/doctrees/content/subtractBed.doctree b/docs/_build/doctrees/content/subtractBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cf0171b0c6d0d876621e1a8f55b1c3520851afb3 Binary files /dev/null and b/docs/_build/doctrees/content/subtractBed.doctree differ diff --git a/docs/_build/doctrees/content/unionBedGraphs.doctree b/docs/_build/doctrees/content/unionBedGraphs.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c93d8fdb02cb8b3311e2a4914ff57a86f67edaf6 Binary files /dev/null and b/docs/_build/doctrees/content/unionBedGraphs.doctree differ diff --git a/docs/_build/doctrees/content/windowBed.doctree b/docs/_build/doctrees/content/windowBed.doctree new file mode 100644 index 0000000000000000000000000000000000000000..a3ba55b88f36a469cdf7f7120fb55bedd1c0e7cc Binary files /dev/null and b/docs/_build/doctrees/content/windowBed.doctree differ diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..154ea3ff621d0e2f86cdd61974be2a3724da7b55 Binary files /dev/null and b/docs/_build/doctrees/environment.pickle differ diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0024245b8ff3aacf3153d7b442954d2060d05db0 Binary files /dev/null and b/docs/_build/doctrees/index.doctree differ diff --git a/docs/_build/html/.buildinfo b/docs/_build/html/.buildinfo new file mode 100644 index 0000000000000000000000000000000000000000..3460d23ee2e2cf4fcc75714b23640e1e092f0c95 --- /dev/null +++ b/docs/_build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 74474c7b4889e5875af2f21f963837f1 +tags: fbb0d17656682115ca4d033fb2f83ba1 diff --git a/docs/_build/html/_sources/content/advanced-usage.txt b/docs/_build/html/_sources/content/advanced-usage.txt new file mode 100644 index 0000000000000000000000000000000000000000..8f706807e2f198a7430162543d316de6a568a018 --- /dev/null +++ b/docs/_build/html/_sources/content/advanced-usage.txt @@ -0,0 +1,92 @@ +############### +Advanced usage +############### + + +========================================================================== +7.1 Mask all regions in a genome except for targeted capture regions. +========================================================================== +# Add 500 bp up and downstream of each probe +:: + slopBed -i probes.bed -b 500 > probes.500bp.bed + +# Get a BED file of all regions not covered by the probes (+500 bp up/down) +:: + complementBed -i probes.500bp.bed -g hg18.genome > probes.500bp.complement.bed + +# Create a masked genome where all bases are masked except for the probes +500bp +:: + maskFastaFromBed -in hg18.fa -bed probes.500bp.complement.bed -fo hg18.probecomplement. + masked.fa + + +========================================================================== +7.2 Screening for novel SNPs. +========================================================================== +# Find all SNPs that are not in dbSnp and not in the latest 1000 genomes calls +:: + intersectBed -a snp.calls.bed -b dbSnp.bed -v | intersectBed -a stdin -b 1KG.bed + -v > snp.calls.novel.bed + + + +========================================================================== +7.3 Computing the coverage of features that align entirely within an +interval. +========================================================================== +# By default, coverageBed counts any feature in A that overlaps B by >= 1 bp. If +you want to require that a feature align entirely within B for it to be counted, +you can first use intersectBed with the "-f 1.0" option. +:: + intersectBed -a features.bed -b windows.bed -f 1.0 | coverageBed -a stdin -b + windows.bed > windows.bed.coverage + + +========================================================================== +7.4 Computing the coverage of BAM alignments on exons. +========================================================================== +# One can combine SAMtools with BEDtools to compute coverage directly from the BAM +data by using bamToBed. +:: + bamToBed -i reads.bam | coverageBed -a stdin -b exons.bed > exons.bed.coverage + +# Take it a step further and require that coverage be from properly-paired reads. +:: + samtools view -bf 0x2 reads.bam | bamToBed -i stdin | coverageBed -a stdin -b + exons.bed > exons.bed.proper.coverage + + + +========================================================================== +7.5 Computing coverage separately for each strand. +========================================================================== +# Use grep to only look at forward strand features (i.e. those that end in "+"). +:: + bamToBed -i reads.bam | grep \+$ | coverageBed -a stdin -b genes.bed > + genes.bed.forward.coverage + +# Use grep to only look at reverse strand features (i.e. those that end in "-"). +:: + bamToBed -i reads.bam | grep \-$ | coverageBed -a stdin -b genes.bed > + genes.bed.forward.coverage + + + +========================================================================== +7.6 Find structural variant calls that are private to one sample. +========================================================================== +# : +:: + pairToPair -a sample1.sv.bedpe -b othersamples.sv.bedpe -type neither > + sample1.sv.private.bedpe + + + +================================================================================== +7.7 Exclude SV deletions that appear to be ALU insertions in the reference genome. +================================================================================== +# We'll require that 90% of the inner span of the deletion be overlapped by a +recent ALU. +:: + pairToBed -a deletions.sv.bedpe -b ALUs.recent.bed -type notispan -f 0.80 > + deletions.notALUsinRef.bedpe \ No newline at end of file diff --git a/docs/_build/html/_sources/content/annotateBed.txt b/docs/_build/html/_sources/content/annotateBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..9a55b3b84f79678bb4303e05a8aa42161e7bcbbd --- /dev/null +++ b/docs/_build/html/_sources/content/annotateBed.txt @@ -0,0 +1,99 @@ +############### +5.24 annotateBed +############### +**annotateBed** annotates one BED/VCF/GFF file with the coverage and number of overlaps observed +from multiple other BED/VCF/GFF files. In this way, it allows one to ask to what degree one feature +coincides with multiple other feature types with a single command. + +========================================================================== +5.24.1 Usage and option summary +========================================================================== +Usage: +:: + annotateBed [OPTIONS] -i <BED/GFF/VCF> -files FILE1 FILE2 FILE3 ... FILEn + + +=========================== =============================================================================================================================================================================================================== + Option Description + +=========================== =============================================================================================================================================================================================================== +**-namesr** A list of names (one per file) to describe each file in -i. These names will be printed as a header line. +**-counts** Report the count of features in each file that overlap -i. Default behavior is to report the fraction of -i covered by each file. +**-both** Report the count of features followed by the % coverage for each annotation file. Default is to report solely the fraction of -i covered by each file. +**-s** Force strandedness. That is, only include hits in A that overlap B on the same strand. By default, hits are included without respect to strand. +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.24.2 Default behavior - annotate one file with coverage from others. +========================================================================== +By default, the fraction of each feature covered by each annotation file is reported after the complete +feature in the file to be annotated. +:: + cat variants.bed + chr1 100 200 nasty 1 - + chr2 500 1000 ugly 2 + + chr3 1000 5000 big 3 - + + cat genes.bed + chr1 150 200 geneA 1 + + chr1 175 250 geneB 2 + + chr3 0 10000 geneC 3 - + + cat conserve.bed + chr1 0 10000 cons1 1 + + chr2 700 10000 cons2 2 - + chr3 4000 10000 cons3 3 + + + cat known_var.bed + chr1 0 120 known1 - + chr1 150 160 known2 - + chr2 0 10000 known3 + + + annotateBed -i variants.bed -files genes.bed conserv.bed known_var.bed + chr1 100 200 nasty 1 - 0.500000 1.000000 0.300000 + chr2 500 1000 ugly 2 + 0.000000 0.600000 1.000000 + chr3 1000 5000 big 3 - 1.000000 0.250000 0.000000 + + +========================================================================== +5.24.3 Report the count of hits from the annotation files +========================================================================== +Figure: +:: + annotateBed -counts -i variants.bed -files genes.bed conserv.bed known_var.bed + chr1 100 200 nasty 1 - 2 1 2 + chr2 500 1000 ugly 2 + 0 1 1 + chr3 1000 5000 big 3 - 1 1 0 + + + +========================================================================== +5.24.4 Report both the count of hits and the fraction covered from the annotation files +========================================================================== +Figure: +:: + annotateBed -both -i variants.bed -files genes.bed conserv.bed known_var.bed + #chr start end name score +/- cnt1 pct1 cnt2 pct2 cnt3 pct3 + chr1 100 200 nasty 1 - 2 0.500000 1 1.000000 2 0.300000 + chr2 500 1000 ugly 2 + 0 0.000000 1 0.600000 1 1.000000 + chr3 1000 5000 big 3 - 1 1.000000 1 0.250000 0 0.000000 + + + + +========================================================================== +5.24.5 Restrict the reporting to overlaps on the same strand. +========================================================================== +Note: Compare with the result from 5.24.3 +:: + annotateBed -s -i variants.bed -files genes.bed conserv.bed known_var.bed + chr1 100 200 nasty var1 - 0.000000 0.000000 0.000000 + chr2 500 1000 ugly var2 + 0.000000 0.000000 0.000000 + chr3 1000 5000 big var3 - 1.000000 0.000000 0.000000 + + + diff --git a/docs/_build/html/_sources/content/bamToBed.txt b/docs/_build/html/_sources/content/bamToBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..8647e9204d996f725e5d43b8dd5ec3d1251dfbcc --- /dev/null +++ b/docs/_build/html/_sources/content/bamToBed.txt @@ -0,0 +1,88 @@ +############### +5.4 bamToBed +############### + +**bamToBed** is a general purpose tool that will convert sequence alignments in BAM format to either +BED6, BED12 or BEDPE format. This enables one to convert BAM files for use with all of the other +BEDTools. The CIGAR string is used to compute the alignment end coordinate in an "ungapped" +fashion. That is, match ("M"), deletion ("D"), and splice ("N") operations are observed when computing +alignment ends. + +============================================ +5.4.1 Usage and option summary +============================================ +**Usage:** +:: + bamToBed [OPTIONS] -i <BAM> + + +====================== ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= +Option Description +====================== ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= +**-bedpe** Write BAM alignments in BEDPE format. Only one alignment from paired-end reads will be reported. Specifically, it each mate is aligned to the same chromosome, the BAM alignment reported will be the one where the BAM insert size is greater than zero. When the mate alignments are interchromosomal, the lexicographically lower chromosome will be reported first. Lastly, when an end is unmapped, the chromosome and strand will be set to "." and the start and end coordinates will be set to -1. *By default, this is disabled and the output will be reported in BED format*. + **NOTE: When using this option, it is required that the BAM file is sorted/grouped by the read name. This allows bamToBed to extract correct alignment coordinates for each end based on their respective CIGAR strings. It also assumes that the alignments for a given pair come in groups of twos. There is not yet a standard method for reporting multiple alignments using BAM. bamToBed will fail if an aligner does not report alignments in pairs**. + BAM files may be piped to bamToBed by specifying "-i stdin". See example below. +**-bed12** Write "blocked" BED (a.k.a. BED12) format. This will convert "spliced" BAM alignments (denoted by the "N" CIGAR operation) to BED12. +**-ed** Use the "edit distance" tag (NM) for the BED score field. Default for BED is to use mapping quality. Default for BEDPE is to use the *minimum* of the two mapping qualities for the pair. When -ed is used with -bedpe, the total edit distance from the two mates is reported. +**-tag** Use other *numeric* BAM alignment tag for BED score. Default for BED is to use mapping quality. Disallowed with BEDPE output. +**-color** An R,G,B string for the color used with BED12 format. Default is (255,0,0). +**-split** Report each portion of a "split" BAM (i.e., having an "N" CIGAR operation) alignment as a distinct BED intervals. +====================== ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= + +By default, each alignment in the BAM file is converted to a 6 column BED. The BED "name" field is +comprised of the RNAME field in the BAM alignment. If mate information is available, the mate (e.g., +"/1" or "/2") field will be appended to the name. The "score" field is the mapping quality score from the +BAM alignment, unless the **-ed** option is used. + +Examples: +:: + bamToBed -i reads.bam | head -5 + chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 37 - + chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 37 + + chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 37 - + + bamToBed -i reads.bam -tag NM | head -5 + chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 1 - + chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 3 + + chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 1 - + + bamToBed -i reads.bam -bedpe | head -3 + chr7 118965072 118965122 chr7 118970079 118970129 + TUPAC_0001:3:1:0:1452#0 37 + - + chr11 46765606 46765656 chr11 46769934 46769984 + TUPAC_0001:3:1:0:1472#0 37 + - + chr20 54704674 54704724 chr20 54708987 54709037 + TUPAC_0001:3:1:1:1833#0 37 + + + +One can easily use samtools and bamToBed together as part of a UNIX pipe. In this example, we will +only convert properly-paired (BAM flag == 0x2) reads to BED format. +:: + samtools view -bf 0x2 reads.bam | bamToBed -i stdin | head + chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 37 - + chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 37 + + chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 37 - + chr11 46765606 46765656 TUPAC_0001:3:1:0:1472#0/2 37 + + chr20 54704674 54704724 TUPAC_0001:3:1:1:1833#0/1 37 + + chr20 54708987 54709037 TUPAC_0001:3:1:1:1833#0/2 37 - + chrX 9380413 9380463 TUPAC_0001:3:1:1:285#0/1 0 - + chrX 9375861 9375911 TUPAC_0001:3:1:1:285#0/2 0 + + chrX 131756978 131757028 TUPAC_0001:3:1:2:523#0/1 37 + + chrX 131761790 131761840 TUPAC_0001:3:1:2:523#0/2 37 - + + +================================================================== +5.4.2 (-split)Creating BED12 features from "spliced" BAM entries. +================================================================== +bamToBed will, by default, create a BED6 feature that represents the entire span of a spliced/split +BAM alignment. However, when using the **-split** command, a BED12 feature is reported where BED +blocks will be created for each aligned portion of the sequencing read. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Exons *************** ********** + + BED/BAM A ^^^^^^^^^^^^....................................^^^^ + + Result =============== ==== + diff --git a/docs/_build/html/_sources/content/bed12ToBed6.txt b/docs/_build/html/_sources/content/bed12ToBed6.txt new file mode 100644 index 0000000000000000000000000000000000000000..d9159e3bdcb455bc88b51616040bef22853fa915 --- /dev/null +++ b/docs/_build/html/_sources/content/bed12ToBed6.txt @@ -0,0 +1,49 @@ +############### +5.21 bed12ToBed6 +############### +**bed12ToBed6** is a convenience tool that converts BED features in BED12 (a.k.a. "blocked" BED +features such as genes) to discrete BED6 features. For example, in the case of a gene with six exons, +bed12ToBed6 would create six separate BED6 features (i.e., one for each exon). + + +========================================================================== +5.21.1 Usage and option summary +========================================================================== +Usage: +:: + bed12ToBed6 [OPTIONS] -i <BED12> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-i** The BED12 file that should be split into discrete BED6 features. *Use "stdin" when using piped input*. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.21.2 Default behavior +========================================================================== +Figure: +:: + head data/knownGene.hg18.chr21.bed | tail -n 3 + chr21 10079666 10120808 uc002yiv.1 0 - 10081686 1 0 1 2 0 6 0 8 + 0 4 528,91,101,215, 0,1930,39750,40927, + chr21 10080031 10081687 uc002yiw.1 0 - 10080031 1 0 0 8 0 0 3 1 + 0 2 200,91, 0,1565, + chr21 10081660 10120796 uc002yix.2 0 - 10081660 1 0 0 8 1 6 6 0 + 0 3 27,101,223,0,37756,38913, + + head data/knownGene.hg18.chr21.bed | tail -n 3 | bed12ToBed6 -i stdin + chr21 10079666 10080194 uc002yiv.1 0 - + chr21 10081596 10081687 uc002yiv.1 0 - + chr21 10119416 10119517 uc002yiv.1 0 - + chr21 10120593 10120808 uc002yiv.1 0 - + chr21 10080031 10080231 uc002yiw.1 0 - + chr21 10081596 10081687 uc002yiw.1 0 - + chr21 10081660 10081687 uc002yix.2 0 - + chr21 10119416 10119517 uc002yix.2 0 - + chr21 10120573 10120796 uc002yix.2 0 - + + diff --git a/docs/_build/html/_sources/content/bedToBam.txt b/docs/_build/html/_sources/content/bedToBam.txt new file mode 100644 index 0000000000000000000000000000000000000000..c0f1d6acd078cd08585d9ff6e62a302fe29a70ec --- /dev/null +++ b/docs/_build/html/_sources/content/bedToBam.txt @@ -0,0 +1,71 @@ +############### +5.18 bedToBam +############### +**bedToBam** converts features in a feature file to BAM format. This is useful as an efficient means of +storing large genome annotations in a compact, indexed format for visualization purposes. + +========================================================================== +5.18.1 Usage and option summary +========================================================================== +Usage: +:: + bedToBam [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> > <BAM> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-mapq** Set a mapping quality (SAM MAPQ field) value for all BED entries. *Default: 255* +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bed12** Indicate that the input BED file is in BED12 (a.k.a "blocked" BED) format. In this case, bedToBam will convert blocked BED features (e.g., gene annotaions) into "spliced" BAM alignments by creating an appropriate CIGAR string. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.18.2 Default behavior +========================================================================== +The default behavior is to assume that the input file is in unblocked format. For example: +:: + head -5 rmsk.hg18.chr21.bed + chr21 9719768 9721892 ALR/Alpha 1004 + + chr21 9721905 9725582 ALR/Alpha 1010 + + chr21 9725582 9725977 L1PA3 3288 + + chr21 9726021 9729309 ALR/Alpha 1051 + + chr21 9729320 9729809 L1PA3 3897 - + + bedToBam -i rmsk.hg18.chr21.bed -g human.hg18.genome > rmsk.hg18.chr21.bam + + samtools view rmsk.hg18.chr21.bam | head -5 + ALR/Alpha 0 chr21 9719769 255 2124M * 0 0 * * + ALR/Alpha 0 chr21 9721906 255 3677M * 0 0 * * + L1PA3 0 chr21 9725583 255 395M * 0 0 * * + ALR/Alpha 0 chr21 9726022 255 3288M * 0 0 * * + L1PA3 16 chr21 9729321 255 489M * 0 0 * * + + +========================================================================== +5.18.3 Creating "spliced" BAM entries from "blocked" BED features +========================================================================== +Optionally, **bedToBam** will create spliced BAM entries from "blocked" BED features by using the +-bed12 option. This will create CIGAR strings in the BAM output that will be displayed as "spliced" +alignments. The image illustrates this behavior, as the top track is a BAM representation (using +bedToBam) of a BED file of UCSC genes. + +For example: +:: + bedToBam -i knownGene.hg18.chr21.bed -g human.hg18.genome -bed12 > knownGene.bam + + samtools view knownGene.bam | head -2 + uc002yip.1 16 chr21 9928614 2 5 5 + + 298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M + 738N64M146N100M1647N120M6478N162M1485N51M6777N60M9274N54M880N54M1229N54M2377N54M112 + 68N58M2666N109M2885N158M * 0 0 * * + uc002yiq.1 16 chr21 9928614 2 5 5 + + 298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M + 738N64M146N100M1647N120M6478N162M1485N51M6777N60M10208N54M1229N54M2377N54M11268N58M + 2666N109M2885N158M * 0 0 * * + + diff --git a/docs/_build/html/_sources/content/bedToIgv.txt b/docs/_build/html/_sources/content/bedToIgv.txt new file mode 100644 index 0000000000000000000000000000000000000000..64d7578e5060327265890cdda0de4310004e6c41 --- /dev/null +++ b/docs/_build/html/_sources/content/bedToIgv.txt @@ -0,0 +1,68 @@ +############### +5.20 bedToIgv +############### +**bedToIgv** creates an IGV (http://www.broadinstitute.org/igv/) batch script (see: http:// +www.broadinstitute.org/igv/batch for details) such that a ¡°snapshot¡± will be taken at each features in a +feature file. This is useful as an efficient means for quickly collecting images of primary data at several +loci for subsequent screening, etc. + +**NOTE: One must use IGV version 1.5 or higher.** + + + +========================================================================== +5.20.1 Usage and option summary +========================================================================== +Usage: +:: + bedToIgv [OPTIONS] -i <BED/GFF/VCF> > <igv.batch> + + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-path** The full path to which the IGV snapshots should be written. *Default: ./* +**-sess** The full path to an existing IGV session file to be loaded prior to taking snapshots. *Default is for no session to be loaded and the assumption is that you already have IGV open and loaded with your relevant data prior to running the batch script*. +**-sort** The type of BAM sorting you would like to apply to each image. **Valid sorting options**: *base, position, strand, quality, sample, and readGroup Default is to apply no sorting at all*. +**-clps** Collapse the aligned reads prior to taking a snapshot. *Default is to not collapse*. +**-name** Use the "name" field (column 4) for each image's filename. *Default is to use the "chr:start-pos.ext"*. +**-slop** Number of flanking base pairs on the left & right of the image. +**-img** The type of image to be created. **Valid options**: *png, eps, svg Default is png*. +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.20.2 Default behavior +========================================================================== +Figure: +:: + bedToIgv -i data/rmsk.hg18.chr21.bed | head -9 + snapshotDirectory ./ + goto chr21:9719768-9721892 + snapshot chr21:9719768-9721892.png + goto chr21:9721905-9725582 + snapshot chr21:9721905-9725582.png + goto chr21:9725582-9725977 + snapshot chr21:9725582-9725977.png + goto chr21:9726021-9729309 + snapshot chr21:9726021-9729309.png + + + + +========================================================================== +5.20.3 Using a bedToIgv batch script within IGV. +========================================================================== +Once an IGV batch script has been created with **bedToIgv**, it is simply a matter of running it from +within IGV. + +For example, first create the batch script: +:: + bedToIgv -i data/rmsk.hg18.chr21.bed > rmsk.igv.batch + +Then, open and launch the batch script from within IGV. This will immediately cause IGV to begin +taking snapshots of your requested regions. + diff --git a/docs/_build/html/_sources/content/bedtools-suite.txt b/docs/_build/html/_sources/content/bedtools-suite.txt new file mode 100644 index 0000000000000000000000000000000000000000..bbe1802d1a8d7d81c103672c5d0f693bd4683f3e --- /dev/null +++ b/docs/_build/html/_sources/content/bedtools-suite.txt @@ -0,0 +1,45 @@ +############### +The BEDTools suite +############### + +This section covers the functionality and default / optional usage for each of the available BEDTools. +Example "figures" are provided in some cases in an effort to convey the purpose of the tool. The +behavior of each available parameter is discussed for each tool in abstract terms. More concrete usage +examples are provided in **Section 6**. + + +================= +Table of contents +================= +.. toctree:: + :maxdepth: 1 + + intersectBed + pairToBed + pairToPair + bamToBed + windowBed + closestBed + subtractBed + mergeBed + coverageBed + genomecoverageBed + fastafromBed + maskfastafromBed + shuffleBed + slopBed + sortBed + linksBed + complementBed + bedToBam + overlap + bedToIgv + bed12ToBed6 + groupBy + unionBedGraphs + annotateBed + + + + + \ No newline at end of file diff --git a/docs/_build/html/_sources/content/closestBed.txt b/docs/_build/html/_sources/content/closestBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..3276718c9418842d894f0df28ad341e825870a58 --- /dev/null +++ b/docs/_build/html/_sources/content/closestBed.txt @@ -0,0 +1,130 @@ +############### +5.6 closestBed +############### +Similar to **intersectBed, closestBed** searches for overlapping features in A and B. In the event that +no feature in B overlaps the current feature in A, **closestBed** will report the *closest* (that is, least +genomic distance from the start or end of A) feature in B. For example, one might want to find which +is the closest gene to a significant GWAS polymorphism. Note that **closestBed** will report an +overlapping feature as the closest---that is, it does not restrict to closest *non-overlapping* feature. + +========================================================================== +5.6.1 Usage and option summary +========================================================================== +**Usage:** +:: + closestBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-s** Force strandedness. That is, find the closest feature in B overlaps A on the same strand. *By default, this is disabled*. +**-d** In addition to the closest feature in B, report its distance to A as an extra column. The reported distance for overlapping features will be 0. +**-t** How ties for closest feature should be handled. This occurs when two features in B have exactly the same overlap with a feature in A. *By default, all such features in B are reported*. + + Here are the other choices controlling how ties are handled: + + *all-* Report all ties (default). + + *first-* Report the first tie that occurred in the B file. + + *last-* Report the last tie that occurred in the B file. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.6.2 Default behavior +========================================================================== +**closestBed** first searches for features in B that overlap a feature in A. If overlaps are found, the feature +in B that overlaps the highest fraction of A is reported. If no overlaps are found, **closestBed** looks for +the feature in B that is *closest* (that is, least genomic distance to the start or end of A) to A. For +example, in the figure below, feature B1 would be reported as the closest feature to A1. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE A ************* + + BED File B ^^^^^^^^ ^^^^^^ + + Result ====== + + +For example: +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + closestBed -a A.bed -b B.bed + chr1 100 200 chr1 500 1000 + + + +========================================================================== +5.6.3 (-s)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for the closest +(overlapping or not) feature in B. See the discussion in the intersectBed section for details. + + + +========================================================================== +5.6.4 (-t)Controlling how ties for "closest" are broken +========================================================================== +When there are two or more features in B that overlap the *same fraction* of A, **closestBed** will, by +default, report both features in B. Imagine feature A is a SNP and file B contains genes. It can often +occur that two gene annotations (e.g. opposite strands) in B will overlap the SNP. As mentioned, the +default behavior is to report both such genes in B. However, the -t option allows one to optionally +choose the just first or last feature (in terms of where it occurred in the input file, not chromosome +position) that occurred in B. + +For example (note the difference between -l 200 and -l 300): +:: + cat A.bed + chr1 100 101 rs1234 + + cat B.bed + chr1 0 1000 geneA 100 + + chr1 0 1000 geneB 100 - + + closestBed -a A.bed -b B.bed + chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + + closestBed -a A.bed -b B.bed -t all + chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + + closestBed -a A.bed -b B.bed -t first + chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + + closestBed -a A.bed -b B.bed -t last + chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + + + + + + +========================================================================== +5.6.5 (-d)Reporting the distance to the closest feature in base pairs +========================================================================== +ClosestBed will optionally report the distance to the closest feature in the B file using the **-d** option. +When a feature in B overlaps a feature in A, a distance of 0 is reported. +:: + cat A.bed + chr1 100 200 + chr1 500 600 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + closestBed -a A.bed -b B.bed -d + chr1 100 200 chr1 500 1000 300 + chr1 500 600 chr1 500 1000 0 diff --git a/docs/_build/html/_sources/content/complementBed.txt b/docs/_build/html/_sources/content/complementBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..1951d0d43c4747312cae81db89343f4addee7c19 --- /dev/null +++ b/docs/_build/html/_sources/content/complementBed.txt @@ -0,0 +1,48 @@ +############### +5.17 complementBed +############### +**complementBed** returns the intervals in a genome that are not by the features in a feature file. An +example usage of this tool would be to return the intervals of the genome that are not annotated as a +repeat. + + +========================================================================== +5.17.1 Usage and option summary +========================================================================== +Usage: +:: + complementBed [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> + +**No additional options.** + + + + +========================================================================== +5.17.2 Default behavior +========================================================================== +Figure: +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE A ************* *************** ****************** + + Result === === ===== ======= + + +For example: +:: + cat A.bed + chr1 100 200 + chr1 400 500 + chr1 500 800 + + cat my.genome + chr1 1000 + + complementBed -i A.bed -g my.genome + chr1 0 100 + chr1 200 400 + chr1 800 1000 + + diff --git a/docs/_build/html/_sources/content/coverageBed.txt b/docs/_build/html/_sources/content/coverageBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..ccd5acd2407e16a4d44399df9cc16e738d3d8f37 --- /dev/null +++ b/docs/_build/html/_sources/content/coverageBed.txt @@ -0,0 +1,184 @@ +############### +5.9 coverageBed +############### +**coverageBed** computes both the *depth* and *breadth* of coverage of features in file A across the features +in file B. For example, **coverageBed** can compute the coverage of sequence alignments (file A) across 1 +kilobase (arbitrary) windows (file B) tiling a genome of interest. One advantage that **coverageBed** +offers is that it not only *counts* the number of features that overlap an interval in file B, it also +computes the fraction of bases in B interval that were overlapped by one or more features. Thus, +**coverageBed** also computes the *breadth* of coverage for each interval in B. + +========================================================================== +5.9.1 Usage and option summary +========================================================================== +Usage: +:: + coverageBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-abam** BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: + + | samtools view -b <BAM> | intersectBed -abam stdin -b genes.bed + +**-s** Force strandedness. That is, only features in A are only counted towards coverage in B if they are the same strand. *By default, this is disabled and coverage is counted without respect to strand*. +**-hist** Report a histogram of coverage for each feature in B as well as a summary histogram for _all_ features in B. + + | Output (tab delimited) after each feature in B: + + | 1) depth + | 2) # bases at depth + | 3) size of B + | 4) % of B at depth +**-d** Report the depth at each position in each B feature. Positions reported are one based. Each position and depth follow the complete B feature. +**-split** Treat "split" BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR "N" and "D" operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +=========================== =============================================================================================================================================================================================================== + + + + + + +========================================================================== +5.9.2 Default behavior +========================================================================== +After each interval in B, **coverageBed** will report: + +1) The number of features in A that overlapped (by at least one base pair) the B interval. +2) The number of bases in B that had non-zero coverage from features in A. +3) The length of the entry in B. +4) The fraction of bases in B that had non-zero coverage from features in A. + +Below are the number of features in A (N=...) overlapping B and fraction of bases in B with coverage. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE B *************** *************** ****** ************** + + BED File A ^^^^ ^^^^ ^^ ^^^^^^^^^ ^^^ ^^ ^^^^ + ^^^^^^^^ ^^^^^ ^^^^^ ^^ + + Result [ N=3, 10/15 ] [ N=1, 2/16 ] [N=1,6/6] [N=5, 11/12 ] + + +For example: +:: + cat A.bed + chr1 10 20 + chr1 20 30 + chr1 30 40 + chr1 100 200 + + cat B.bed + chr1 0 100 + chr1 100 200 + chr2 0 100 + + coverageBed -a A.bed -b B.bed + chr1 0 100 3 30 100 0.3000000 + chr1 100 200 1 100 100 1.0000000 + chr2 0 100 0 0 100 0.0000000 + + + +========================================================================== +5.9.4 (-s)Calculating coverage by strand +========================================================================== +Use the "**-s**" option if one wants to only count coverage if features in A are on the same strand as the +feature / window in B. This is especially useful for RNA-seq experiments. + +For example (note the difference in coverage with and without **-s**: +:: + cat A.bed + chr1 10 20 a1 1 - + chr1 20 30 a2 1 - + chr1 30 40 a3 1 - + chr1 100 200 a4 1 + + + cat B.bed + chr1 0 100 b1 1 + + chr1 100 200 b2 1 - + chr2 0 100 b3 1 + + + coverageBed -a A.bed -b B.bed + chr1 0 100 b1 1 + 3 30 100 0.3000000 + chr1 100 200 b2 1 - 1 100 100 1.0000000 + chr2 0 100 b3 1 + 0 0 100 0.0000000 + + coverageBed -a A.bed -b B.bed -s + chr1 0 100 b1 1 + 0 0 100 0.0000000 + chr1 100 200 b2 1 - 0 0 100 0.0000000 + chr2 0 100 b3 1 + 0 0 100 0.0000000 + +========================================================================== +5.9.5 (-hist)Creating a histogram of coverage for each feature in the B file +========================================================================== +One should use the "**-hist**" option to create, for each interval in B, a histogram of coverage of the +features in A across B. + +In this case, each entire feature in B will be reported, followed by the depth of coverage, the number of +bases at that depth, the size of the feature, and the fraction covered. After all of the features in B have +been reported, a histogram summarizing the coverage among all features in B will be reported. +:: + cat A.bed + chr1 10 20 a1 1 - + chr1 20 30 a2 1 - + chr1 30 40 a3 1 - + chr1 100 200 a4 1 + + + cat B.bed + chr1 0 100 b1 1 + + chr1 100 200 b2 1 - + chr2 0 100 b3 1 + + + coverageBed -a A.bed -b B.bed -hist + chr1 0 100 b1 1 + 0 70 100 0.7000000 + chr1 0 100 b1 1 + 1 30 100 0.3000000 + chr1 100 200 b2 1 - 1 100 100 1.0000000 + chr2 0 100 b3 1 + 0 100 100 1.0000000 + all 0 170 300 0.5666667 + all 1 130 300 0.4333333 + + + +========================================================================== +5.9.6 (-hist)Reporting the per-base of coverage for each feature in the B file +========================================================================== +One should use the "**-d**" option to create, for each interval in B, a detailed list of coverage at each of the +positions across each B interval. + +The output will consist of a line for each one-based position in each B feature, followed by the coverage +detected at that position. +:: + cat A.bed + chr1 0 5 + chr1 3 8 + chr1 4 8 + chr1 5 9 + + cat B.bed + chr1 0 10 + + coverageBed -a A.bed -b B.bed -d + chr1 0 10 B 1 1 + chr1 0 10 B 2 1 + chr1 0 10 B 3 1 + chr1 0 10 B 4 2 + chr1 0 10 B 5 3 + chr1 0 10 B 6 3 + chr1 0 10 B 7 3 + chr1 0 10 B 8 3 + chr1 0 10 B 9 1 + chr1 0 10 B 10 0 + + + +========================================================================== +5.9.7 (-split)Reporting coverage with spliced alignments or blocked BED features +========================================================================== +As described in section 1.3.19, coverageBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq reads, for +example, one typically wants to only tabulate coverage for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The **-split** command allows for such coverage to be +performed. diff --git a/docs/_build/html/_sources/content/example-usage.txt b/docs/_build/html/_sources/content/example-usage.txt new file mode 100644 index 0000000000000000000000000000000000000000..3fe5edf30f95582bae97e213d550a3f883adf8f5 --- /dev/null +++ b/docs/_build/html/_sources/content/example-usage.txt @@ -0,0 +1,331 @@ +############### +Example usage +############### +Below are several examples of basic BEDTools usage. Example BED files are provided in the +/data directory of the BEDTools distribution. + + + +========================================================================== +6.1 intersectBed +========================================================================== + + +6.1.1 Report the base-pair overlap between sequence alignments and genes. +:: + intersectBed -a reads.bed -b genes.bed + + + +6.1.2 Report whether each alignment overlaps one or more genes. If not, the alignment is not reported. +:: + intersectBed -a reads.bed -b genes.bed -u + + + +6.1.3 Report those alignments that overlap NO genes. Like "grep -v" +:: + intersectBed -a reads.bed -b genes.bed -v + + +6.1.4 Report the number of genes that each alignment overlaps. +:: + intersectBed -a reads.bed -b genes.bed -c + + + +6.1.5 Report the entire, original alignment entry for each overlap with a gene. +:: + intersectBed -a reads.bed -b genes.bed -wa + + + +6.1.6 Report the entire, original gene entry for each overlap with a gene. +:: + intersectBed -a reads.bed -b genes.bed -wb + + + +6.1.7 Report the entire, original alignment and gene entries for each overlap. +:: + intersectBed -a reads.bed -b genes.bed -wa -wb + + + +6.1.8 Only report an overlap with a repeat if it spans at least 50% of the exon. +:: + intersectBed -a exons.bed -b repeatMasker.bed -f 0.50 + + + +6.1.9 Only report an overlap if comprises 50% of the structural variant and 50% of the segmental duplication. Thus, it is reciprocally at least a 50% overlap. +:: + intersectBed -a SV.bed -b segmentalDups.bed -f 0.50 -r + + + + +6.1.10 Read BED A from stdin. For example, find genes that overlap LINEs but not SINEs. +:: + intersectBed -a genes.bed -b LINES.bed | intersectBed -a stdin -b SINEs.bed -v + + + + +6.1.11 Retain only single-end BAM alignments that overlap exons. +:: + intersectBed -abam reads.bam -b exons.bed > reads.touchingExons.bam + + + + + +6.1.12 Retain only single-end BAM alignments that do not overlap simple sequence +repeats. +:: + intersectBed -abam reads.bam -b SSRs.bed -v > reads.noSSRs.bam + + + +========================================================================== +6.2 pairToBed +========================================================================== + + + +6.2.1 Return all structural variants (in BEDPE format) that overlap with genes on either +end. +:: + pairToBed -a sv.bedpe -b genes > sv.genes + + + +6.2.2 Return all structural variants (in BEDPE format) that overlap with genes on both +end. +:: + pairToBed -a sv.bedpe -b genes -type both > sv.genes + + + + +6.2.3 Retain only paired-end BAM alignments where neither end overlaps simple +sequence repeats. +:: + pairToBed -abam reads.bam -b SSRs.bed -type neither > reads.noSSRs.bam + + + +6.2.4 Retain only paired-end BAM alignments where both ends overlap segmental +duplications. +:: + pairToBed -abam reads.bam -b segdups.bed -type both > reads.SSRs.bam + + + + +6.2.5 Retain only paired-end BAM alignments where neither or one and only one end +overlaps segmental duplications. +:: + pairToBed -abam reads.bam -b segdups.bed -type notboth > reads.notbothSSRs.bam + + + + + + +========================================================================== +6.3 pairToPair +========================================================================== + + +6.3.1 Find all SVs (in BEDPE format) in sample 1 that are also in sample 2. +:: + pairToPair -a 1.sv.bedpe -b 2.sv.bedpe | cut -f 1-10 > 1.sv.in2.bedpe + + + +6.3.2 Find all SVs (in BEDPE format) in sample 1 that are not in sample 2. +:: + pairToPair -a 1.sv.bedpe -b 2.sv.bedpe -type neither | cut -f 1-10 > +1.sv.notin2.bedpe + + + + + +========================================================================== +6.4 bamToBed +========================================================================== + + +6.4.1 Convert BAM alignments to BED format. +:: + bamToBed -i reads.bam > reads.bed + + +6.4.2 Convert BAM alignments to BED format using the BAM edit distance (NM) as the +BED "score". +:: + bamToBed -i reads.bam -ed > reads.bed + + +6.4.3 Convert BAM alignments to BEDPE format. +:: + bamToBed -i reads.bam -bedpe > reads.bedpe + + + + + +========================================================================== +6.5 windowBed +========================================================================== + + + +6.5.1 Report all genes that are within 10000 bp upstream or downstream of CNVs. +:: + windowBed -a CNVs.bed -b genes.bed -w 10000 + + + +6.5.2 Report all genes that are within 10000 bp upstream or 5000 bp downstream of +CNVs. +:: + windowBed -a CNVs.bed -b genes.bed -l 10000 -r 5000 + + +6.5.3 Report all SNPs that are within 5000 bp upstream or 1000 bp downstream of genes. +Define upstream and downstream based on strand. +:: + windowBed -a genes.bed -b snps.bed -l 5000 -r 1000 -sw + + + + + +========================================================================== +6.6 closestBed +========================================================================== +Note: By default, if there is a tie for closest, all ties will be reported. **closestBed** allows overlapping +features to be the closest. + + + +6.6.1 Find the closest ALU to each gene. +:: + closestBed -a genes.bed -b ALUs.bed + + +6.6.2 Find the closest ALU to each gene, choosing the first ALU in the file if there is a +tie. +:: + closestBed -a genes.bed -b ALUs.bed -t first + + + +6.6.3 Find the closest ALU to each gene, choosing the last ALU in the file if there is a +tie. +:: + closestBed -a genes.bed -b ALUs.bed -t last + + + + + +========================================================================== +6.7 subtractBed +========================================================================== +Note: If a feature in A is entirely "spanned" by any feature in B, it will not be reported. + + + +6.7.1 Remove introns from gene features. Exons will (should) be reported. +:: + subtractBed -a genes.bed -b introns.bed + + +========================================================================== +6.8 mergeBed +========================================================================== + + +6.8.1 Merge overlapping repetitive elements into a single entry. +:: + mergeBed -i repeatMasker.bed + + + +6.8.2 Merge overlapping repetitive elements into a single entry, returning the number of +entries merged. +:: + mergeBed -i repeatMasker.bed -n + + +6.8.3 Merge nearby (within 1000 bp) repetitive elements into a single entry. +:: + mergeBed -i repeatMasker.bed -d 1000 + + +========================================================================== +6.9 coverageBed +========================================================================== + + +6.9.1 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome. +:: + coverageBed -a reads.bed -b windows10kb.bed | head + chr1 0 10000 0 10000 0.00 + chr1 10001 20000 33 10000 0.21 + chr1 20001 30000 42 10000 0.29 + chr1 30001 40000 71 10000 0.36 + + + +6.9.2 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome and created a BEDGRAPH of the number of aligned reads in each window for +display on the UCSC browser. +:: + coverageBed -a reads.bed -b windows10kb.bed | cut -f 1-4 > windows10kb.cov.bedg + + + +6.9.3 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome and created a BEDGRAPH of the fraction of each window covered by at least +one aligned read for display on the UCSC browser. +:: + coverageBed -a reads.bed -b windows10kb.bed | awk ¡®{OFS="\t"; print $1,$2,$3,$6}¡¯ + > windows10kb.pctcov.bedg + + + + +========================================================================== +6.10 complementBed +========================================================================== + + +6.10.1 Report all intervals in the human genome that are not covered by repetitive +elements. +:: + complementBed -i repeatMasker.bed -g hg18.genome + + + +========================================================================== +6.11 shuffleBed +========================================================================== + + +6.11.1 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps. +:: + shuffleBed -i variants.bed -g hg18.genome -excl genome_gaps.bed + + +6.11.2 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps and require that the variants be randomly +placed on the same chromosome. +:: + shuffleBed -i variants.bed -g hg18.genome -excl genome_gaps.bed -chrom diff --git a/docs/_build/html/_sources/content/fastafromBed.txt b/docs/_build/html/_sources/content/fastafromBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..6e2b4ca0d6416bd298eb7242ff048c43cdc468e8 --- /dev/null +++ b/docs/_build/html/_sources/content/fastafromBed.txt @@ -0,0 +1,126 @@ +############### +5.11 fastaFromBed +############### +**fastaFromBed** extracts sequences from a FASTA file for each of the intervals defined in a BED file. +The headers in the input FASTA file must exactly match the chromosome column in the BED file. + +========================================================================== +5.11.1 Usage and option summary +========================================================================== +Usage: +:: + fastaFromBed [OPTIONS] -fi <input FASTA> -bed <BED/GFF/VCF> -fo <output FASTA> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-name** Use the "name" column in the BED file for the FASTA headers in the output FASTA file. +**-tab** Report extract sequences in a tab-delimited format instead of in FASTA format. +**-s** Force strandedness. If the feature occupies the antisense strand, the sequence will be reverse complemented. *Default: strand information is ignored*. +=========================== =============================================================================================================================================================================================================== + + + + + + + +========================================================================== +5.11.2 Default behavior +========================================================================== +**fastaFromBed** will extract the sequence defined by the coordinates in a BED interval and create a +new FASTA entry in the output file for each extracted sequence. By default, the FASTA header for each +extracted sequence will be formatted as follows: "<chrom>:<start>-<end>". + +For example: +:: + $ cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 + + fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out + + cat test.fa.out + >chr1:5-10 + AAACC + + + + +========================================================================== +5.11.3 Using the BED "name" column as a FASTA header. +========================================================================== +Using the **-name** option, one can set the FASTA header for each extracted sequence to be the "name" +columns from the BED feature. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 myseq + + fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out -name + + cat test.fa.out + >myseq + AAACC + + + + + + + + + + +========================================================================== +5.11.4 Creating a tab-delimited output file in lieu of FASTA output. +========================================================================== +Using the **-tab** option, the **-fo** output file will be tab-delimited instead of in FASTA format. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 myseq + + fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out.tab -name -tab + + cat test.fa.out + myseq AAACC + + + +========================================================================== +5.11.5 (-s)Forcing the extracted sequence to reflect the requested strand +========================================================================== +**fastaFromBed** will extract the sequence in the orientation defined in the strand column when the "-s" +option is used. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 20 25 forward 1 + + chr1 20 25 reverse 1 - + + fastaFromBed -fi test.fa -bed test.bed -s -name -fo test.fa.out + + cat test.fa.out + >forward + CGCTA + >reverse + TAGCG diff --git a/docs/_build/html/_sources/content/general-usage.txt b/docs/_build/html/_sources/content/general-usage.txt new file mode 100644 index 0000000000000000000000000000000000000000..7047cc550059da9fe4fe0ed01a33f1f288b17b87 --- /dev/null +++ b/docs/_build/html/_sources/content/general-usage.txt @@ -0,0 +1,213 @@ +############### +General usage +############### + +======================= +4.1 Supported file formats +======================= + +---------------------- +4.1.1 BED format +---------------------- +As described on the UCSC Genome Browser website (see link below), the BED format is a concise and +flexible way to represent genomic features and annotations. The BED format description supports up to +12 columns, but only the first 3 are required for the UCSC browser, the Galaxy browser and for +BEDTools. BEDTools allows one to use the "BED12" format (that is, all 12 fields listed below). +However, only intersectBed, coverageBed, genomeCoverageBed, and bamToBed will obey the BED12 +"blocks" when computing overlaps, etc., via the **"-split"** option. For all other tools, the last six columns +are not used for any comparisons by the BEDTools. Instead, they will use the entire span (start to end) +of the BED12 entry to perform any relevant feature comparisons. The last six columns will be reported +in the output of all comparisons. + +The file description below is modified from: http://genome.ucsc.edu/FAQ/FAQformat#format1. + +1. **chrom** - The name of the chromosome on which the genome feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. +2. **start** - The zero-based starting position of the feature in the chromosome. + - *The first base in a chromosome is numbered 0*. + - *The start position in each BED feature is therefore interpreted to be 1 greater than the start position listed in the feature. For example, start=9, end=20 is interpreted to span bases 10 through 20,inclusive*. + - *This column is required*. +3. **end** - The one-based ending position of the feature in the chromosome. + - *The end position in each BED feature is one-based. See example above*. + - *This column is required*. +4. **name** - Defines the name of the BED feature. + - *Any string can be used*. For example, "LINE", "Exon3", "HWIEAS_0001:3:1:0:266#0/1", or "my_Feature". + - *This column is optional*. +5. **score** - The UCSC definition requires that a BED score range from 0 to 1000, inclusive. However, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. For example, strings allow scientific notation for p-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. + - *Any string can be used*. For example, 7.31E-05 (p-value), 0.33456 (mean enrichment value), "up", "down", etc. + - *This column is optional*. +6. **strand** - Defines the strand - either '+' or '-'. + - *This column is optional*. +7. **thickStart** - The starting position at which the feature is drawn thickly. + - *Allowed yet ignored by BEDTools*. +8. **thickEnd** - The ending position at which the feature is drawn thickly. + - *Allowed yet ignored by BEDTools*. +9. **itemRgb** - An RGB value of the form R,G,B (e.g. 255,0,0). + - *Allowed yet ignored by BEDTools*. +10. **blockCount** - The number of blocks (exons) in the BED line. + - *Allowed yet ignored by BEDTools*. +11. **blockSizes** - A comma-separated list of the block sizes. + - *Allowed yet ignored by BEDTools*. +12. **blockStarts** - A comma-separated list of block starts. + - *Allowed yet ignored by BEDTools*. + + +BEDTools requires that all BED input files (and input received from stdin) are **tab-delimited**. The following types of BED files are supported by BEDTools: + + +1. | **BED3**: A BED file where each feature is described by **chrom**, **start**, and **end**. + | For example: chr1 11873 14409 +2. | **BED4**: A BED file where each feature is described by **chrom**, **start**, **end**, and **name**. + | For example: chr1 11873 14409 uc001aaa.3 +3. | **BED5**: A BED file where each feature is described by **chrom**, **start**, **end**, **name**, and **score**. + | For example: chr1 11873 14409 uc001aaa.3 0 +4. | **BED6**: A BED file where each feature is described by **chrom**, **start**, **end**, **name**, **score**, and **strand**. + | For example: chr1 11873 14409 uc001aaa.3 0 + +5. | **BED12**: A BED file where each feature is described by all twelve columns listed above. + | For example: chr1 11873 14409 uc001aaa.3 0 + 11873 + | 11873 0 3 354,109,1189, 0,739,1347, + +---------------------- +4.1.2 BEDPE format +---------------------- +We have defined a new file format (BEDPE) in order to concisely describe disjoint genome features, +such as structural variations or paired-end sequence alignments. We chose to define a new format +because the existing "blocked" BED format (a.k.a. BED12) does not allow inter-chromosomal feature +definitions. In addition, BED12 only has one strand field, which is insufficient for paired-end sequence +alignments, especially when studying structural variation. + +The BEDPE format is described below. The description is modified from: http://genome.ucsc.edu/FAQ/FAQformat#format1. + +1. **chrom1** - The name of the chromosome on which the **first** end of the feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. + - *Use "." for unknown*. +2. **start1** - The zero-based starting position of the **first** end of the feature on **chrom1**. + - *The first base in a chromosome is numbered 0*. + - *As with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required*. + - *Use -1 for unknown*. +3. **end1** - The one-based ending position of the first end of the feature on **chrom1**. + - *The end position in each BEDPE feature is one-based*. + - *This column is required*. + - *Use -1 for unknown*. +4. **chrom2** - The name of the chromosome on which the **second** end of the feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. + - *Use "." for unknown*. +5. **start2** - The zero-based starting position of the **second** end of the feature on **chrom2**. + - *The first base in a chromosome is numbered 0*. + - *As with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required*. + - *Use -1 for unknown*. +6. **end2** - The one-based ending position of the **second** end of the feature on **chrom2**. + - *The end position in each BEDPE feature is one-based*. + - *This column is required*. + - *Use -1 for unknown*. +7. **name** - Defines the name of the BEDPE feature. + - *Any string can be used*. For example, "LINE", "Exon3", "HWIEAS_0001:3:1:0:266#0/1", or "my_Feature". + - *This column is optional*. +8. **score** - The UCSC definition requires that a BED score range from 0 to 1000, inclusive. *However, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features*. For example, strings allow scientific notation for p-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. + - *Any string can be used*. For example, 7.31E-05 (p-value), 0.33456 (mean enrichment value), "up", "down", etc. + - *This column is optional*. +9. **strand1** - Defines the strand for the first end of the feature. Either '+' or '-'. + - *This column is optional*. + - *Use "." for unknown*. +10. **strand2** - Defines the strand for the second end of the feature. Either '+' or '-'. + - *This column is optional*. + - *Use "." for unknown*. +11. **Any number of additional, user-defined fields** - BEDTools allows one to add as many additional fields to the normal, 10-column BEDPE format as necessary. These columns are merely "passed through" **pairToBed** and **pairToPair** and are not part of any analysis. One would use these additional columns to add extra information (e.g., edit distance for each end of an alignment, or "deletion", "inversion", etc.) to each BEDPE feature. + - *These additional columns are optional*. + + +Entries from an typical BEDPE file: +:: + chr1 100 200 chr5 5000 5100 bedpe_example1 30 + - + chr9 1000 5000 chr9 3000 3800 bedpe_example2 100 + - + + +Entries from a BEDPE file with two custom fields added to each record: +:: + chr1 10 20 chr5 50 60 a1 30 + - 0 1 + chr9 30 40 chr9 80 90 a2 100 + - 2 1 + + + +---------------------- +4.1.3 GFF format +---------------------- +The GFF format is described on the Sanger Institute's website (http://www.sanger.ac.uk/resources/software/gff/spec.html). The GFF description below is modified from the definition at this URL. All nine columns in the GFF format description are required by BEDTools. + +1. **seqname** - The name of the sequence (e.g. chromosome) on which the feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. +2. **source** - The source of this feature. This field will normally be used to indicate the program making the prediction, or if it comes from public database annotation, or is experimentally verified, etc. + - *This column is required*. +3. **feature** - The feature type name. Equivalent to BED's **name** field. + - *Any string can be used*. For example, "exon", etc. + - *This column is required*. +4. **start** - The one-based starting position of feature on **seqname**. + - *This column is required*. + - *BEDTools accounts for the fact the GFF uses a one-based position and BED uses a zero-based start position*. +5. **end** - The one-based ending position of feature on **seqname**. + - *This column is required*. +6. **score** - A score assigned to the GFF feature. Like BED format, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. We note that this differs from the GFF definition in the interest of flexibility. + - *This column is required*. +7. **strand** - Defines the strand. Use '+', '-' or '.' + - *This column is required*. +8. **frame** - The frame of the coding sequence. Use '0', '1', '2', or '.'. + - *This column is required*. +9. **attribute** - Taken from http://www.sanger.ac.uk/resources/software/gff/spec.html: From version 2 onwards, the attribute field must have an tag value structure following the syntax used within objects in a .ace file, flattened onto one line by semicolon separators. Tags must be standard identifiers ([A-Za-z][AZa-z0-9_]*). Free text values must be quoted with double quotes. *Note: all non-printing characters in such free text value strings (e.g. newlines, tabs, control characters, etc) must be explicitly represented by their C (UNIX) style backslash-escaped representation (e.g. newlines as '\n', tabs as '\t')*. As in ACEDB, multiple values can follow a specific tag. The aim is to establish consistent use of particular tags, corresponding to an underlying implied ACEDB model if you want to think that way (but acedb is not required). + - *This column is required*. + +An entry from an example GFF file : +:: + seq1 BLASTX similarity 101 235 87.1 + 0 Target "HBA_HUMAN" 11 55 ; + E_value 0.0003 dJ102G20 GD_mRNA coding_exon 7105 7201 . - 2 Sequence + "dJ102G20.C1.1" + + + +---------------------- +4.1.3 GFF format +---------------------- +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which which species/genome build you are +working. The way you do this for BEDTools is to create a "genome" file, which simply lists the names of +the chromosomes (or scaffolds, etc.) and their size (in basepairs). + + +Genome files must be **tab-delimited** and are structured as follows (this is an example for *C. elegans*): +:: + chrI 15072421 + chrII 15279323 + ... + chrX 17718854 + chrM 13794 + +BEDTools includes pre-defined genome files for human and mouse in the **/genomes** directory included +in the BEDTools distribution. + + +---------------------- +4.1.5 SAM/BAM format +---------------------- +The SAM / BAM format is a powerful and widely-used format for storing sequence alignment data (see +http://samtools.sourceforge.net/ for more details). It has quickly become the standard format to which +most DNA sequence alignment programs write their output. Currently, the following BEDTools +support inout in BAM format: *intersectBed, windowBed, coverageBed, genomeCoverageBed, +pairToBed, bamToBed*. Support for the BAM format in BEDTools allows one to (to name a few): +compare sequence alignments to annotations, refine alignment datasets, screen for potential mutations +and compute aligned sequence coverage. + +The details of how these tools work with BAM files are addressed in **Section 5** of this manual. + + +---------------------- +4.1.6 VCF format +---------------------- +The Variant Call Format (VCF) was conceived as part of the 1000 Genomes Project as a standardized +means to report genetic variation calls from SNP, INDEL and structural variant detection programs +(see http://www.1000genomes.org/wiki/doku.php?id=1000_genomes:analysis:vcf4.0 for details). +BEDTools now supports the latest version of this format (i.e, Version 4.0). As a result, BEDTools can +be used to compare genetic variation calls with other genomic features. diff --git a/docs/_build/html/_sources/content/genomecoverageBed.txt b/docs/_build/html/_sources/content/genomecoverageBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..3c5d691971abaf9d13330eccd8e9df34a9efbbba --- /dev/null +++ b/docs/_build/html/_sources/content/genomecoverageBed.txt @@ -0,0 +1,122 @@ +############### +5.10 genomeCoverageBed +############### +**genomeCoverageBed** computes a histogram of feature coverage (e.g., aligned sequences) for a given +genome. Optionally, by using the **-d** option, it will report the depth of coverage at *each base* on each +chromosome in the genome file (**-g**). + +========================================================================== +5.10.1 Usage and option summary +========================================================================== +Usage: +:: + genomeCoverageBed [OPTIONS] -i <BED> -g <GENOME> + +NOTE: genomeCoverageBed requires that the input BED file be sorted by +chromosome. A simple sort -k1,1 will suffice. + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-ibam** BAM file as input for coverage. Each BAM alignment in A added to the total coverage for the genome. Use "stdin" if passing it with a UNIX pipe: For example: + | samtools view -b <BAM> | genomeCoverageBed -ibam stdin -g hg18.genome +**-d** Report the depth at each genome position. *Default behavior is to report a histogram*. +**-max** Combine all positions with a depth >= max into a single bin in the histogram. +**-bg** Report depth in BedGraph format. For details, see: http://genome.ucsc.edu/goldenPath/help/bedgraph.html +**-bga** Report depth in BedGraph format, as above (i.e., -bg). However with this option, regions with zero coverage are also reported. This allows one to quickly extract all regions of a genome with 0 coverage by applying: "grep -w 0$" to the output. +**-split** Treat "split" BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR "N" and "D" operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +**-strand** Calculate coverage of intervals from a specific strand. With BED files, requires at least 6 columns (strand is column 6). +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.10.2 Default behavior +========================================================================== +By default, **genomeCoverageBed** will compute a histogram of coverage for the genome file provided. +The default output format is as follows: +1. chromosome (or entire genome) +2. depth of coverage from features in input file +3. number of bases on chromosome (or genome) with depth equal to column 2. +4. size of chromosome (or entire genome) in base pairs +5. fraction of bases on chromosome (or entire genome) with depth equal to column 2. + +For example: +:: + cat A.bed + chr1 10 20 + chr1 20 30 + chr2 0 500 + + cat my.genome + chr1 1000 + chr2 500 + + genomeCoverageBed -i A.bed -g my.genome + chr1 0 980 1000 0.98 + chr1 1 20 1000 0.02 + chr2 1 500 500 1 + genome 0 980 1500 0.653333 + genome 1 520 1500 0.346667 + + + + +========================================================================== +5.10.3 (-max)Controlling the histogram's maximum depth +========================================================================== +Using the **-max** option, **genomeCoverageBed** will "lump" all positions in the genome having feature +coverage greather than or equal to **max** into the **max** histogram bin. For example, if one sets **-max** +equal to 50, the max depth reported in the output will be 50 and all positions with a depth >= 50 will +be represented in bin 50. + +========================================================================== +5.10.4 (-d)Reporting "per-base" genome coverage +========================================================================== +Using the **-d** option, **genomeCoverageBed** will compute the depth of feature coverage for each base +on each chromosome in genome file provided. + +The "per-base" output format is as follows: +1. chromosome +2. chromosome position +3. depth (number) of features overlapping this chromosome position. + +For example: +:: + cat A.bed + chr1 10 20 + chr1 20 30 + chr2 0 500 + + cat my.genome + chr1 1000 + chr2 500 + + genomeCoverageBed -i A.bed -g my.genome -d | head -15 | tail -n 10 + chr1 6 0 + chr1 7 0 + chr1 8 0 + chr1 9 0 + chr1 10 0 + chr1 11 1 + chr1 12 1 + chr1 13 1 + chr1 14 1 + chr1 15 1 + + + +========================================================================== +5.1.13 (-split)Reporting coverage with spliced alignments or blocked BED features +========================================================================== +As described in section 1.3.19, genomeCoverageBed will, by default, screen for overlaps against the +entire span of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq +reads, for example, one typically wants to only screen for overlaps for the portions of the reads that +come from exons (and ignore the interstitial intron sequence). The **-split** command allows for such +overlaps to be performed. + +For additional details, please visit the Usage From The Wild site and have a look at example 5, +contributed by Assaf Gordon. + + diff --git a/docs/_build/html/_sources/content/groupBy.txt b/docs/_build/html/_sources/content/groupBy.txt new file mode 100644 index 0000000000000000000000000000000000000000..178f828271446a34197d3824291c5259873d90e0 --- /dev/null +++ b/docs/_build/html/_sources/content/groupBy.txt @@ -0,0 +1,194 @@ +############### +5.22 groupBy +############### +**groupBy** is a useful tool that mimics the "groupBy" clause in database systems. Given a file or stream +that is sorted by the appropriate "grouping columns", groupBy will compute summary statistics on +another column in the file or stream. This will work with output from all BEDTools as well as any other +tab-delimited file or stream. + +**NOTE: When using groupBy, the input data must be ordered by the same +columns as specified with the -grp argument. For example, if -grp is 1,2,3, the the +data should be pre-grouped accordingly. When groupBy detects changes in the +group columns it then summarizes all lines with that group**. + + +========================================================================== +5.22.1 Usage and option summary +========================================================================== +Usage: +:: + groupBy [OPTIONS] -i <input> -opCol <input column> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-i** The input file that should be grouped and summarized. *Use "stdin" when using piped input*. + **Note: if -i is omitted, input is assumed to come from standard input (stdin)** +**-g OR -grp** Specifies which column(s) (1-based) should be used to group the input. The columns must be comma-separated and each column must be explicitly listed. No ranges (e.g. 1-4) yet allowed. *Default: 1,2,3* +**-c OR -opCol** Specify the column (1-based) that should be summarized. *Required*. +**-o OR -op** Specify the operation that should be applied to **opCol**. + + | Valid operations: + + | **sum** - *numeric only* + | **count** - *numeric or text* + | **min** - *numeric only* + | **max** - *numeric only* + | **mean** - *numeric only* + | **stdev** - *numeric only* + | **median** - *numeric only* + | **mode** - *numeric or text* + | **antimode** - *numeric or text* + | **collapse** (i.e., print a comma separated list) - *numeric or text* + | **freqasc** - *print a comma separated list of values observed and the number of times they were observed. Reported in ascending order of frequency* + | **freqdesc** - *print a comma separated list of values observed and the number of times they were observed. Reported in descending order of frequency* + + | *Default: sum* +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.22.2 Default behavior. +========================================================================== +Let's imagine we have three incredibly interesting genetic variants that we are studying and we are +interested in what annotated repeats these variants overlap. +:: + cat variants.bed + chr21 9719758 9729320 variant1 + chr21 9729310 9757478 variant2 + chr21 9795588 9796685 variant3 + + intersectBed -a variants.bed -b repeats.bed -wa -wb > variantsToRepeats.bed + cat variantsToRepeats.bed + chr21 9719758 9729320 variant1 chr21 9719768 9721892 ALR/Alpha 1004 + + chr21 9719758 9729320 variant1 chr21 9721905 9725582 ALR/Alpha 1010 + + chr21 9719758 9729320 variant1 chr21 9725582 9725977 L1PA3 3288 + + chr21 9719758 9729320 variant1 chr21 9726021 9729309 ALR/Alpha 1051 + + chr21 9729310 9757478 variant2 chr21 9729320 9729809 L1PA3 3897 - + chr21 9729310 9757478 variant2 chr21 9729809 9730866 L1P1 8367 + + chr21 9729310 9757478 variant2 chr21 9730866 9734026 ALR/Alpha 1036 - + chr21 9729310 9757478 variant2 chr21 9734037 9757471 ALR/Alpha 1182 - + chr21 9795588 9796685 variant3 chr21 9795589 9795713 (GAATG)n 308 + + chr21 9795588 9796685 variant3 chr21 9795736 9795894 (GAATG)n 683 + + chr21 9795588 9796685 variant3 chr21 9795911 9796007 (GAATG)n 345 + + chr21 9795588 9796685 variant3 chr21 9796028 9796187 (GAATG)n 756 + + chr21 9795588 9796685 variant3 chr21 9796202 9796615 (GAATG)n 891 + + chr21 9795588 9796685 variant3 chr21 9796637 9796824 (GAATG)n 621 + + + +We can see that variant1 overlaps with 3 repeats, variant2 with 4 and variant3 with 6. We can use +groupBy to summarize the hits for each variant in several useful ways. The default behavior is to +compute the *sum* of the opCol. +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3 -opCol 9 + chr21 9719758 9729320 6353 + chr21 9729310 9757478 14482 + chr21 9795588 9796685 3604 + + + +========================================================================== +5.22.3 Computing the min and max. +========================================================================== +Now let's find the *min* and *max* repeat score for each variant. We do this by "grouping" on the variant +coordinate columns (i.e. cols. 1,2 and 3) and ask for the min and max of the repeat score column (i.e. +col. 9). +:: + groupBy -i variantsToRepeats.bed -g 1,2,3 -c 9 -o min + chr21 9719758 9729320 1004 + chr21 9729310 9757478 1036 + chr21 9795588 9796685 308 + +We can also group on just the *name* column with similar effect. +:: + groupBy -i variantsToRepeats.bed -grp 4 -opCol 9 -op min + variant1 1004 + variant2 1036 + variant3 308 + +What about the *max* score? Let's keep the coordinates and the name of the variants so that we +stay in BED format. +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op max + chr21 9719758 9729320 variant1 3288 + chr21 9729310 9757478 variant2 8367 + chr21 9795588 9796685 variant3 891 + + + +========================================================================== +5.22.4 Computing the mean and median. +========================================================================== +Now let's find the *mean* and *median* repeat score for each variant. +:: + cat variantsToRepeats.bed | groupBy -g 1,2,3,4 -c 9 -o mean + chr21 9719758 9729320 variant1 1588.25 + chr21 9729310 9757478 variant2 3620.5 + chr21 9795588 9796685 variant3 600.6667 + + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op median + chr21 9719758 9729320 variant1 1030.5 + chr21 9729310 9757478 variant2 2539.5 + chr21 9795588 9796685 variant3 652 + + +========================================================================== +5.22.5 Computing the mode and "antimode". +========================================================================== +Now let's find the *mode* and *antimode* (i.e., the least frequent) repeat score for each variant (in this case +they are identical). +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op mode + chr21 9719758 9729320 variant1 1004 + chr21 9729310 9757478 variant2 1036 + chr21 9795588 9796685 variant3 308 + + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op antimode + chr21 9719758 9729320 variant1 1004 + chr21 9729310 9757478 variant2 1036 + chr21 9795588 9796685 variant3 308 + + + +========================================================================== +5.22.6 Computing the count of lines for a given group. +========================================================================== +Figure: +:: + groupBy -i variantsToRepeats.bed -g 1,2,3,4 -c 9 -c count + chr21 9719758 9729320 variant1 4 + chr21 9729310 9757478 variant2 4 + chr21 9795588 9796685 variant3 6 + + + + +========================================================================== +5.22.7 Collapsing: listing all of the values in the opCol for a given group. +========================================================================== +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This "denormalizes" things. Now you have a list of all the +repeats on a single line. +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op collapse + chr21 9719758 9729320 variant1 ALR/Alpha,ALR/Alpha,L1PA3,ALR/Alpha, + chr21 9729310 9757478 variant2 L1PA3,L1P1,ALR/Alpha,ALR/Alpha, + chr21 9795588 9796685 variant3 (GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n, + + + +========================================================================== +5.22.8 Computing frequencies: freqasc and freqdesc. +========================================================================== +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This "denormalizes" things. Now you have a list of all the +repeats on a single line. +:: + cat variantsToRepeats.bed | groupBy -g 1 -c 8 -o freqdesc + chr21 (GAATG)n:6,ALR/Alpha:5,L1PA3:2,L1P1:1, + + cat variantsToRepeats.bed | groupBy -g 1 -c 8 -o freqasc + chr21 L1P1:1,L1PA3:2,ALR/Alpha:5,(GAATG)n:6, \ No newline at end of file diff --git a/docs/_build/html/_sources/content/installation.txt b/docs/_build/html/_sources/content/installation.txt new file mode 100644 index 0000000000000000000000000000000000000000..675cb33d4dacb53d91ff5e518b2ccdb49383997d --- /dev/null +++ b/docs/_build/html/_sources/content/installation.txt @@ -0,0 +1,25 @@ +############ +Installation +############ + +BEDTools is intended to run in a "command line" environment on UNIX, LINUX and Apple OS X +operating systems. Installing BEDTools involves downloading the latest source code archive followed by +compiling the source code into binaries on your local system. The following commands will install +BEDTools in a local directory on a NIX or OS X machine. Note that the **"<version>"** refers to the +latest posted version number on http://bedtools.googlecode.com/. + +Note: *The BEDTools "makefiles" use the GCC compiler. One should edit the Makefiles accordingly if +one wants to use a different compiler.*:: + + curl http://bedtools.googlecode.com/files/BEDTools.<version>.tar.gz > BEDTools.tar.gz + tar -zxvf BEDTools.tar.gz + cd BEDTools-<version> + make clean + make all + ls bin + +At this point, one should copy the binaries in BEDTools/bin/ to either usr/local/bin/ or some +other repository for commonly used UNIX tools in your environment. You will typically require +administrator (e.g. "root" or "sudo") privileges to copy to usr/local/bin/. If in doubt, contact you +system administrator for help. + diff --git a/docs/_build/html/_sources/content/intersectBed.txt b/docs/_build/html/_sources/content/intersectBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..8c048566a3e6a19f34f22c85a373636561d7b272 --- /dev/null +++ b/docs/_build/html/_sources/content/intersectBed.txt @@ -0,0 +1,371 @@ +################ +5.1 intersectBed +################ + +By far, the most common question asked of two sets of genomic features is whether or not any of the +features in the two sets "overlap" with one another. This is known as feature intersection. **intersectBed** +allows one to screen for overlaps between two sets of genomic features. Moreover, it allows one to have +fine control as to how the intersections are reported. **intersectBed** works with both BED/GFF/VCF +and BAM files as input. + +=============================== +5.1.1 Usage and option summary +=============================== +**Usage**: +:: + + intersectBed [OPTIONS] [-a <BED/GFF/VCF> || -abam <BAM>] -b <BED/GFF/VCF> + + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-a** BED/GFF/VCF file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. +**-b** BED/GFF/VCF file B. Use "stdin" if passing B with a UNIX pipe. +**-abam** BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view -b <BAM> | intersectBed -abam stdin -b genes.bed +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bed** When using BAM input (-abam), write output as BED. The default is to write output in BAM when using -abam. For example: intersectBed -abam reads.bam -b genes.bed -bed +**-wa** Write the original entry in A for each overlap. +**-wb** Write the original entry in B for each overlap. Useful for knowing what A overlaps. Restricted by -f and -r. +**-wo** Write the original A and B entries plus the number of base pairs of overlap between the two features. Only A features with overlap are reported. Restricted by -f and -r. +**-wao** Write the original A and B entries plus the number of base pairs of overlap between the two features. However, A features w/o overlap are also reported with a NULL B feature and overlap = 0. Restricted by -f and -r. +**-u** Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. Restricted by -f and -r. +**-c** For each entry in A, report the number of hits in B while restricting to -f. Reports 0 for A entries that have no overlap with B. Restricted by -f and -r. +**-v** Only report those entries in A that have no overlap in B. Restricted by -f and -r. +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-r** Require that the fraction of overlap be reciprocal for A and B. In other words, if -f is 0.90 and -r is used, this requires that B overlap at least 90% of A and that A also overlaps at least 90% of B. +**-s** Force "strandedness". That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +**-split** Treat "split" BAM (i.e., having an "N" CIGAR operation) or BED12 entries as distinct BED intervals. +=========================== ========================================================================================================================================================= + + +=============================== +5.1.2 Default behavior +=============================== +By default, if an overlap is found, **intersectBed** reports the shared interval between the two +overlapping features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED/BAM A ******************* ************* + + BED File B ^^^^^^^^ + + Result ======== + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed + chr1 150 200 + + +============================================= +5.1.3 (-wa)Reporting the original A feature +============================================= +Instead, one can force **intersectBed** to report the *original* **"A"** feature when an overlap is found. As +shown below, the entire "A" feature is reported, not just the portion that overlaps with the "B" feature. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED/BAM A ******************* ************* + + BED File B ^^^^^^^^ + + Result =================== + +For example (compare with example from default behavior): +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed -wa + chr1 100 200 + +============================================= +5.1.4 (-wb)Reporting the original B feature +============================================= +Similarly, one can force **intersectBed** to report the *original* **"B"** feature when an overlap is found. If +just -wb is used, the overlapping portion of A will be reported followed by the *original* **"B"**. If both -wa +and -wb are used, the *originals* of both **"A"** and **"B"** will be reported. + +For example (-wb alone): +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed -wb + chr1 150 200 chr1 150 250 + +Now -wa and -wb: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed -wa -wb + chr1 100 200 chr1 150 250 + +======================================================================= +5.1.5 (-u)Reporting the presence of *at least one* overlapping feature +======================================================================= +Frequently a feature in "A" will overlap with multiple features in "B". By default, **intersectBed** will +report each overlap as a separate output line. However, one may want to simply know that there is at +least one overlap (or none). When one uses the -u option, "A" features that overlap with one or more +"B" features are reported once. Those that overlap with no "B" features are not reported at all. + + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -u + chr1 100 200 + +======================================================================= +5.1.6 (-c)Reporting the number of overlapping features +======================================================================= +The -c option reports a column after each "A" feature indicating the *number* (0 or more) of overlapping +features found in "B". Therefore, *each feature in A is reported once*. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -c + chr1 100 200 2 + chr1 1000 2000 0 + + +======================================================================= +5.1.6 (-c)Reporting the number of overlapping features +======================================================================= +The -c option reports a column after each "A" feature indicating the *number* (0 or more) of overlapping +features found in "B". Therefore, *each feature in A is reported once*. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -c + chr1 100 200 2 + chr1 1000 2000 0 + + +======================================================================= +5.1.7 (-v)Reporting the absence of any overlapping features +======================================================================= +There will likely be cases where you'd like to know which "A" features do not overlap with any of the +"B" features. Perhaps you'd like to know which SNPs don't overlap with any gene annotations. The -v +(an homage to "grep -v") option will only report those "A" features that have no overlaps in "B". + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -v + chr1 1000 2000 + + +======================================================================= +5.1.8 (-f)Requiring a minimal overlap fraction +======================================================================= +By default, **intersectBed** will report an overlap between A and B so long as there is at least one base +pair is overlapping. Yet sometimes you may want to restrict reported overlaps between A and B to cases +where the feature in B overlaps at least X% (e.g. 50%) of the A feature. The -f option does exactly +this. + +For example (note that the second B entry is not reported): +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 130 201 + chr1 180 220 + + intersectBed -a A.bed -b B.bed -f 0.50 -wa -wb + chr1 100 200 chr1 130 201 + +========================================================================== +5.1.9 (-r, combined with -f)Requiring reciprocal minimal overlap fraction +========================================================================== +Similarly, you may want to require that a minimal fraction of both the A and the B features is +overlapped. For example, if feature A is 1kb and feature B is 1Mb, you might not want to report the +overlap as feature A can overlap at most 1% of feature B. If one set -f to say, 0.02, and one also +enable the -r (reciprocal overlap fraction required), this overlap would not be reported. + +For example (note that the second B entry is not reported): +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 130 201 + chr1 130 200000 + + intersectBed -a A.bed -b B.bed -f 0.50 -r -wa -wb + chr1 100 200 chr1 130 201 + +========================================================================== +5.1.10 (-s)Enforcing "strandedness" +========================================================================== +By default, **intersectBed** will report overlaps between features even if the features are on opposite +strands. However, if strand information is present in both BED files and the "-s" option is used, overlaps +will only be reported when features are on the same strand. + +For example (note that the second B entry is not reported): +:: + cat A.bed + chr1 100 200 a1 100 + + + cat B.bed + chr1 130 201 b1 100 - + chr1 130 201 b2 100 + + + intersectBed -a A.bed -b B.bed -wa -wb -s + chr1 100 200 a1 100 + chr1 130 201 b2 100 + + + +========================================================================== +5.1.11 (-abam)Default behavior when using BAM input +========================================================================== +When comparing alignments in BAM format (**-abam**) to features in BED format (**-b**), **intersectBed** +will, **by default**, write the output in BAM format. That is, each alignment in the BAM file that meets +the user's criteria will be written (to standard output) in BAM format. This serves as a mechanism to +create subsets of BAM alignments are of biological interest, etc. Note that only the mate in the BAM +alignment is compared to the BED file. Thus, if only one end of a paired-end sequence overlaps with a +feature in B, then that end will be written to the BAM output. By contrast, the other mate for the +pair will not be written. One should use **pairToBed(Section 5.2)** if one wants each BAM alignment +for a pair to be written to BAM output. + +For example: +:: + intersectBed -abam reads.unsorted.bam -b simreps.bed | samtools view - | head -3 + + BERTHA_0001:3:1:15:1362#0 99 chr4 9236904 0 50M = 9242033 5 1 7 9 + AGACGTTAACTTTACACACCTCTGCCAAGGTCCTCATCCTTGTATTGAAG W c T U ] b \ g c e g X g f c b f c c b d d g g V Y P W W _ + \c`dcdabdfW^a^gggfgd XT:A:R NM:i:0 SM:i:0 AM:i:0 X0:i:19 X1:i:2 XM:i:0 XO:i:0 XG:i:0 MD:Z:50 + BERTHA _0001:3:1:16:994#0 83 chr6 114221672 37 25S6M1I11M7S = + 114216196 -5493 G A A A G G C C A G A G T A T A G A A T A A A C A C A A C A A T G T C C A A G G T A C A C T G T T A + gffeaaddddggggggedgcgeggdegggggffcgggggggegdfggfgf XT:A:M NM:i:3 SM:i:37 AM:i:37 XM:i:2 X O : i : + 1 XG:i:1 MD:Z:6A6T3 + BERTHA _0001:3:1:16:594#0 147 chr8 43835330 0 50M = + 43830893 -4487 CTTTGGGAGGGCTTTGTAGCCTATCTGGAAAAAGGAAATATCTTCCCATG U + \e^bgeTdg_Kgcg`ggeggg_gggggggggddgdggVg\gWdfgfgff XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:10 X1:i:7 X M : i : + 2 XO:i:0 XG:i:0 MD:Z:1A2T45 + + +========================================================================== +5.1.12 (-bed)Output BED format when using BAM input +========================================================================== +When comparing alignments in BAM format (**-abam**) to features in BED format (**-b**), **intersectBed** +will **optionally** write the output in BED format. That is, each alignment in the BAM file is converted +to a 6 column BED feature and if overlaps are found (or not) based on the user's criteria, the BAM +alignment will be reported in BED format. The BED "name" field is comprised of the RNAME field in +the BAM alignment. If mate information is available, the mate (e.g., "/1" or "/2") field will be +appended to the name. The "score" field is the mapping quality score from the BAM alignment. + +For example: +:: + intersectBed -abam reads.unsorted.bam -b simreps.bed -bed | head -20 + + chr4 9236903 9236953 BERTHA_0001:3:1:15:1362#0/1 0 + + chr6 114221671 114221721 BERTHA_0001:3:1:16:994#0/1 37 - + chr8 43835329 43835379 BERTHA_0001:3:1:16:594#0/2 0 - + chr4 49110668 49110718 BERTHA_0001:3:1:31:487#0/1 23 + + chr19 27732052 27732102 BERTHA_0001:3:1:32:890#0/2 46 + + chr19 27732012 27732062 BERTHA_0001:3:1:45:1135#0/1 37 + + chr10 117494252 117494302 BERTHA_0001:3:1:68:627#0/1 37 - + chr19 27731966 27732016 BERTHA_0001:3:1:83:931#0/2 9 + + chr8 48660075 48660125 BERTHA_0001:3:1:86:608#0/2 37 - + chr9 34986400 34986450 BERTHA_0001:3:1:113:183#0/2 37 - + chr10 42372771 42372821 BERTHA_0001:3:1:128:1932#0/1 3 - + chr19 27731954 27732004 BERTHA_0001:3:1:130:1402#0/2 0 + + chr10 42357337 42357387 BERTHA_0001:3:1:137:868#0/2 9 + + chr1 159720631 159720681 BERTHA_0001:3:1:147:380#0/2 37 - + chrX 58230155 58230205 BERTHA_0001:3:1:151:656#0/2 37 - + chr5 142612746 142612796 BERTHA_0001:3:1:152:1893#0/1 37 - + chr9 71795659 71795709 BERTHA_0001:3:1:177:387#0/1 37 + + chr1 106240854 106240904 BERTHA_0001:3:1:194:928#0/1 37 - + chr4 74128456 74128506 BERTHA_0001:3:1:221:724#0/1 37 - + chr8 42606164 42606214 BERTHA_0001:3:1:244:962#0/1 37 + + +================================================================================== +5.1.13 (-split)Reporting overlaps with spliced alignments or blocked BED features +================================================================================== +As described in section 1.3.19, intersectBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq reads, for +example, one typically wants to only screen for overlaps for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The **-split** command allows for such overlaps to be +performed. + +For example, the diagram below illustrates the *default* behavior. The blue dots represent the "split/ +spliced" portion of the alignment (i.e., CIGAR "N" operation). In this case, the two exon annotations +are reported as overlapping with the "split" BAM alignment, but in addition, a third feature that +overlaps the "split" portion of the alignment is also reported. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Exons --------------- ---------- + + BED/BAM A ************.......................................**** + + BED File B ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + + Result =============== ======== ========== + + +In contrast, when using the **-split** option, only the exon overlaps are reported. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Exons --------------- ---------- + + BED/BAM A ************.......................................**** + + BED File B ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + + Result =============== ========== \ No newline at end of file diff --git a/docs/_build/html/_sources/content/linksBed.txt b/docs/_build/html/_sources/content/linksBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..ca32e8b2816123f0e5c8384c02409db67c1c4086 --- /dev/null +++ b/docs/_build/html/_sources/content/linksBed.txt @@ -0,0 +1,74 @@ +############### +5.16 linksBed +############### +Creates an HTML file with links to an instance of the UCSC Genome Browser for all features / +intervals in a file. This is useful for cases when one wants to manually inspect through a large set of +annotations or features. + +========================================================================== +5.16.1 Usage and option summary +========================================================================== +Usage: +:: + linksBed [OPTIONS] -i <BED/GFF/VCF> > <HTML file> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-base** The "basename" for the UCSC browser. *Default: http://genome.ucsc.edu* +**-org** The organism (e.g. mouse, human). *Default: human* +**-db** The genome build. *Default: hg18* +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.16.2 Default behavior +========================================================================== +By default, **linksBed** creates links to the public UCSC Genome Browser. + +For example: +:: + head genes.bed + chr21 9928613 10012791 uc002yip.1 0 - + chr21 9928613 10012791 uc002yiq.1 0 - + chr21 9928613 10012791 uc002yir.1 0 - + chr21 9928613 10012791 uc010gkv.1 0 - + chr21 9928613 10061300 uc002yis.1 0 - + chr21 10042683 10120796 uc002yit.1 0 - + chr21 10042683 10120808 uc002yiu.1 0 - + chr21 10079666 10120808 uc002yiv.1 0 - + chr21 10080031 10081687 uc002yiw.1 0 - + chr21 10081660 10120796 uc002yix.2 0 - + + linksBed -i genes.bed > genes.html + +When genes.html is opened in a web browser, one should see something like the following, where each +link on the page is built from the features in genes.bed: + + + + + +========================================================================== +5.16.3 Creating HTML links to a local UCSC Browser installation +========================================================================== +Optionally, **linksBed** will create links to a local copy of the UCSC Genome Browser. + +For example: +:: + head -3 genes.bed + chr21 9928613 10012791 uc002yip.1 0 - + chr21 9928613 10012791 uc002yiq.1 0 - + + linksBed -i genes.bed -base http://mirror.uni.edu > genes.html + +One can point the links to the appropriate organism and genome build as well: +:: + head -3 genes.bed + chr21 9928613 10012791 uc002yip.1 0 - + chr21 9928613 10012791 uc002yiq.1 0 - + + linksBed -i genes.bed -base http://mirror.uni.edu -org mouse -db mm9 > genes.html + diff --git a/docs/_build/html/_sources/content/maskfastafromBed.txt b/docs/_build/html/_sources/content/maskfastafromBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..1a8530e00723f944499740dc355b84f0359f7aee --- /dev/null +++ b/docs/_build/html/_sources/content/maskfastafromBed.txt @@ -0,0 +1,70 @@ +############### +5.12 maskFastaFromBed +############### +**maskFastaFromBed** masks sequences in a FASTA file based on intervals defined in a feature file. The +headers in the input FASTA file must exactly match the chromosome column in the feature file. This +may be useful fro creating your own masked genome file based on custom annotations or for masking all +but your target regions when aligning sequence data from a targeted capture experiment. + + +========================================================================== +5.12.1 Usage and option summary +========================================================================== +Usage: +:: + maskFastaFromBed [OPTIONS] -fi <input FASTA> -bed <BED/GFF/VCF> -fo <output FASTA> + +NOTE: The input and output FASTA files must be different. + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-soft** Soft-mask (that is, convert to lower-case bases) the FASTA sequence. *By default, hard-masking (that is, conversion to Ns) is performed*. +=========================== =============================================================================================================================================================================================================== + + + + + + +========================================================================== +5.12.2 Default behavior +========================================================================== +**maskFastaFromBed** will mask a FASTA file based on the intervals in a BED file. The newly masked +FASTA file is written to the output FASTA file. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 + + maskFastaFromBed -fi test.fa -bed test.bed -fo test.fa.out + + cat test.fa.out + >chr1 + AAAAANNNNNCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + +========================================================================== +5.12.3 Soft-masking the FASTA file. +========================================================================== +Using the **-soft** option, one can optionally "soft-mask" the FASTA file. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 + + maskFastaFromBed -fi test.fa -bed test.bed -fo test.fa.out -soft + + cat test.fa.out + >chr1 + AAAAAaaaccCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG diff --git a/docs/_build/html/_sources/content/mergeBed.txt b/docs/_build/html/_sources/content/mergeBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..16f73cc00aaaff5f2b62e3d178309cd203c9269e --- /dev/null +++ b/docs/_build/html/_sources/content/mergeBed.txt @@ -0,0 +1,120 @@ +############### +5.8 mergeBed +############### +**mergeBed** combines overlapping or "book-ended" (that is, one base pair away) features in a feature file +into a single feature which spans all of the combined features. + +========================================================================== +5.8.1 Usage and option summary +========================================================================== +Usage: +:: + mergeBed [OPTIONS] -i <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-s** Force strandedness. That is, only merge features that are the same strand. *By default, this is disabled*. +**-n** Report the number of BED entries that were merged. *1 is reported if no merging occurred*. +**-d** Maximum distance between features allowed for features to be merged. *Default is 0. That is, overlapping and/or book-ended features are merged*. +**-nms** Report the names of the merged features separated by semicolons. +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.8.2 Default behavior +========================================================================== +Figure: +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE ************* *************** ********************** + ******** + + Result =============================== ====================== + + + +For example: +:: + cat A.bed + chr1 100 200 + chr1 180 250 + chr1 250 500 + chr1 501 1000 + + mergeBed -i A.bed + chr1 100 500 + chr1 501 1000 + + + + + + +========================================================================== +5.8.3 (-s)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for features that should +be merged. Only features on the same strand will be merged. See the discussion in the intersectBed +section for details. + +========================================================================== +5.8.4 (-n)Reporting the number of features that were merged +========================================================================== +The -n option will report the number of features that were combined from the original file in order to +make the newly merged feature. If a feature in the original file was not merged with any other features, +a "1" is reported. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 180 250 + chr1 250 500 + chr1 501 1000 + + mergeBed -i A.bed -n + chr1 100 500 3 + chr1 501 1000 1 + + +========================================================================== +5.8.5 (-d)Controlling how close two features must be in order to merge +========================================================================== +By default, only overlapping or book-ended features are combined into a new feature. However, one can +force mergeBed to combine more distant features with the -d option. For example, were one to set -d to +1000, any features that overlap or are within 1000 base pairs of one another will be combined. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 501 1000 + + mergeBed -i A.bed + chr1 100 200 + chr1 501 1000 + + mergeBed -i A.bed -d 1000 + chr1 100 200 1000 + +========================================================================== +5.8.6 (-nms)Reporting the names of the features that were merged +========================================================================== +Occasionally, one might like to know that names of the features that were merged into a new feature. +The -nms option will add an extra column to the mergeBed output which lists (separated by +semicolons) the names of the merged features. + +For example: +:: + cat A.bed + chr1 100 200 A1 + chr1 150 300 A2 + chr1 250 500 A3 + + mergeBed -i A.bed -nms + chr1 100 500 A1;A2;A3 diff --git a/docs/_build/html/_sources/content/overlap.txt b/docs/_build/html/_sources/content/overlap.txt new file mode 100644 index 0000000000000000000000000000000000000000..418c4c8a11a1ccce0a659880f20aa28436205d9b --- /dev/null +++ b/docs/_build/html/_sources/content/overlap.txt @@ -0,0 +1,41 @@ +############### +5.19 overlap +############### +**overlap** computes the amount of overlap (in the case of positive values) or distance (in the case of +negative values) between feature coordinates occurring on the same input line and reports the result at +the end of the same line. In this way, it is a useful method for computing custom overlap scores from +the output of other BEDTools. + +========================================================================== +5.19.1 Usage and option summary +========================================================================== +Usage: +:: + overlap [OPTIONS] -i <input> -cols s1,e1,s2,e2 + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-i** Input file. Use "stdin" for pipes. +**-cols** Specify the columns (1-based) for the starts and ends of the features for which you'd like to compute the overlap/distance. The columns must be listed in the following order: *start1,end1,start2,end2* +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.19.2 Default behavior +========================================================================== +The default behavior is to compute the amount of overlap between the features you specify based on the +start and end coordinates. For example: +:: + windowBed -a A.bed -b B.bed -w 10 + chr1 10 20 A chr1 15 25 B + chr1 10 20 C chr1 25 35 D + +# Now let's say we want to compute the number of base pairs of overlap +# between the overlapping features from the output of windowBed. +:: + windowBed -a A.bed -b B.bed -w 10 | overlap -i stdin -cols 2,3,6,7 + chr1 10 20 A chr1 15 25 B 5 + chr1 10 20 C chr1 25 35 D -5 + diff --git a/docs/_build/html/_sources/content/overview.txt b/docs/_build/html/_sources/content/overview.txt new file mode 100644 index 0000000000000000000000000000000000000000..a836365eed7efe9af3f73c1d5f705d9a7cc7ef8b --- /dev/null +++ b/docs/_build/html/_sources/content/overview.txt @@ -0,0 +1,348 @@ +.. role:: red + +############ +Overview +############ + +========== +1.1 Background +========== + +The development of BEDTools was motivated by a need for fast, flexible tools with which to compare large sets of genomic +features. Answering fundamental research questions with existing tools was either too slow or required modifications to the +way they reported or computed their results. We were aware of the utilities on the UCSC Genome Browser and Galaxy websites, as +well as the elegant tools available as part of Jim Kent’s monolithic suite of tools (“Kent sourceâ€). However, we found that +the web-based tools were too cumbersome when working with large datasets generated by current sequencing technologies. +Similarly, we found that the Kent source command line tools often required a local installation of the UCSC Genome Browser. +These limitations, combined with the fact that we often wanted an extra option here or there that wasn’t available with +existing tools, led us to develop our own from scratch. The initial version of BEDTools was publicly released in the spring of +2009. The current version has evolved from our research experiences and those of the scientists using the suite over the last +year. The BEDTools suite enables one to answer common questions of genomic data in a fast and reliable manner. The fact that +almost all the utilities accept input from “stdin†allows one to “stream / pipe†several commands together to facilitate more +complicated analyses. Also, the tools allow fine control over how output is reported. The initial version of BEDTools +supported solely 6-column `BED <http://genome.ucsc.edu/FAQ/FAQformat#format1>`_ files. *However, we have subsequently added support for sequence alignments in* `BAM <http://samtools.sourceforge.net/>`_ +*format, as well as for features in* `GFF <http://genome.ucsc.edu/FAQ/FAQformat#format3>`_ , *“blocked†BED format, and* +`VCF <http://www.1000genomes.org/wiki/Analysis/Variant%20Call%20Format/vcf-variant-call-format-version-41>`_ *format*. +The tools are quite fast and typically finish in a matter of a few seconds, even for large datasets. This manual seeks to describe the behavior and +available functionality for each BEDTool. Usage examples are scattered throughout the text, and formal examples are +provided in the last two sections, we hope that this document will give you a sense of the flexibility of +the toolkit and the types of analyses that are possible with BEDTools. If you have further questions, please join the BEDTools +discussion group, visit the Usage Examples on the Google Code site (usage, advanced usage), or take a look at the nascent +“Usage From the Wild†page. + +=========================== +1.2 Summary of available tools. +=========================== + +BEDTools support a wide range of operations for interrogating and manipulating genomic features. The table below summarizes +the tools available in the suite. + +=========================== ========================================================================================================================================================= +Utility Description +=========================== ========================================================================================================================================================= +**intersectBed** Returns overlaps between two BED/GFF/VCF files. +**pairToBed** Returns overlaps between a paired-end BED file and a regular BED/VCF/GFF file. +**bamToBed** Converts BAM alignments to BED6, BED12, or BEDPE format. +**bedToBam** Converts BED/GFF/VCF features to BAM format. +**bed12ToBed6** Converts "blocked" BED12 features to discrete BED6 features. +**bedToIgv** Creates IGV batch scripts for taking multiple snapshots from BED/GFF/VCF features. +**coverageBed** Summarizes the depth and breadth of coverage of features in one BED versus features (e.g, windows, exons, etc.) defined in another BED/GFF/VCF file. +**multiBamCov** Counts sequence coverage for multiple position-sorted bams at specific loci defined in a BED/GFF/VCF file +**tagBam** Annotates a BAM file with custom tag fields based on overlaps with BED/GFF/VCF files +**nuclBed** Profiles the nucleotide content of intervals in a fasta file +**genomeCoverageBed** Creates either a histogram, BEDGRAPH, or a "per base" report of genome coverage. +**unionBedGraphs** Combines multiple BedGraph? files into a single file, allowing coverage/other comparisons between them. +**annotateBed** Annotates one BED/VCF/GFF file with overlaps from many others. +**groupBy** Deprecated. Now in the filo package. +**overlap** Returns the number of bases pairs of overlap b/w two features on the same line. +**pairToPair** Returns overlaps between two paired-end BED files. +**closestBed** Returns the closest feature to each entry in a BED/GFF/VCF file. +**subtractBed** Removes the portion of an interval that is overlapped by another feature. +**windowBed** Returns overlaps between two BED/VCF/GFF files based on a user-defined window. +**mergeBed** Merges overlapping features into a single feature. +**complementBed** Returns all intervals not spanned by the features in a BED/GFF/VCF file. +**fastaFromBed** Creates FASTA sequences based on intervals in a BED/GFF/VCF file. +**maskFastaFromBed** Masks a FASTA file based on BED coordinates. +**shuffleBed** Randomly permutes the locations of a BED file among a genome. +**slopBed** Adjusts each BED entry by a requested number of base pairs. +**flankBed** Creates flanking intervals for each feature in a BED/GFF/VCF file. +**sortBed** Sorts a BED file by chrom, then start position. Other ways as well. +**linksBed** Creates an HTML file of links to the UCSC or a custom browser. +=========================== ========================================================================================================================================================= + + + + + + +=========================== +1.3 Fundamental concepts. +=========================== +------------------------------------------------------ +1.3.1 What are genome features and how are they represented? +------------------------------------------------------ +Throughout this manual, we will discuss how to use BEDTools to manipulate, compare and ask questions of genome “featuresâ€. Genome features can be functional elements (e.g., genes), genetic polymorphisms (e.g. +SNPs, INDELs, or structural variants), or other annotations that have been discovered or curated by genome sequencing groups or genome browser groups. In addition, genome features can be custom annotations that +an individual lab or researcher defines (e.g., my novel gene or variant). + +The basic characteristics of a genome feature are the chromosome or scaffold on which the feature “residesâ€, the base pair on which the +feature starts (i.e. the “startâ€), the base pair on which feature ends (i.e. the “endâ€), the strand on which the feature exists (i.e. “+†or “-“), and the name of the feature if one is applicable. + +The two most widely used formats for representing genome features are the BED (Browser Extensible Data) and GFF (General Feature Format) formats. BEDTools was originally written to work exclusively with genome features +described using the BED format, but it has been recently extended to seamlessly work with BED, GFF and VCF files. + +Existing annotations for the genomes of many species can be easily downloaded in BED and GFF +format from the UCSC Genome Browser’s “Table Browser†(http://genome.ucsc.edu/cgi-bin/hgTables?command=start) or from the “Bulk Downloads†page (http://hgdownload.cse.ucsc.edu/downloads.html). In addition, the +Ensemble Genome Browser contains annotations in GFF/GTF format for many species (http://www.ensembl.org/info/data/ftp/index.html) + +------------------------------------- +1.3.2 Overlapping / intersecting features. +------------------------------------- +Two genome features (henceforth referred to as “featuresâ€) are said to overlap or intersect if they share at least one base in common. +In the figure below, Feature A intersects/overlaps Feature B, but it does not intersect/overlap Feature C. + +**TODO: place figure here** + +-------------------------------------------- +1.3.3 Comparing features in file “A†and file “Bâ€. +-------------------------------------------- +The previous section briefly introduced a fundamental naming convention used in BEDTools. Specifically, all BEDTools that compare features contained in two distinct files refer to one file as feature set “A†and the other file as feature set “Bâ€. This is mainly in the interest of brevity, but it also has its roots in set theory. +As an example, if one wanted to look for SNPs (file A) that overlap with exons (file B), one would use intersectBed in the following manner:: + + intersectBed –a snps.bed –b exons.bed + +There are two exceptions to this rule: 1) When the “A†file is in BAM format, the “-abam†option must bed used. For example:: + + intersectBed –abam alignedReads.bam –b exons.bed + +And 2) For tools where only one input feature file is needed, the “-i†option is used. For example:: + + mergeBed –i repeats.bed + +----------------------------------------------------- +1.3.4 BED starts are zero-based and BED ends are one-based. +----------------------------------------------------- +BEDTools users are sometimes confused by the way the start and end of BED features are represented. Specifically, BEDTools uses the UCSC Genome Browser’s internal database convention of making the start position 0-based and the end position 1-based: (http://genome.ucsc.edu/FAQ/FAQtracks#tracks1) +In other words, BEDTools interprets the “start†column as being 1 basepair higher than what is represented in the file. For example, the following BED feature represents a single base on chromosome 1; namely, the 1st base:: + + chr1 0 1 first_base + +Why, you might ask? The advantage of storing features this way is that when computing the length of a feature, one must simply subtract the start from the end. Were the start position 1-based, +the calculation would be (slightly) more complex (i.e. (end-start)+1). Thus, storing BED features this way reduces the computational burden. + +----------------------------------------------------- +1.3.5 GFF starts and ends are one-based. +----------------------------------------------------- +In contrast, the GFF format uses 1-based coordinates for both the start and the end positions. BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your GFF features for them to work correctly with BEDTools. + +----------------------------------------------------- +1.3.6 VCF coordinates are one-based. +----------------------------------------------------- +The VCF format uses 1-based coordinates. As in GFF, BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your VCF features for them to work correctly with BEDTools. + +----------------------------------------------------- +1.3.7 File B is loaded into memory (most of the time). +----------------------------------------------------- +Whenever a BEDTool compares two files of features, the “B†file is loaded into memory. By contrast, the “A†file is processed line by line and compared with the features from B. +Therefore to minimize memory usage, one should set the smaller of the two files as the B file. One salient example is the comparison of aligned sequence reads from a +current DNA sequencer to gene annotations. In this case, the aligned sequence file (in BED format) may have tens of millions of features (the sequence alignments), +while the gene annotation file will have tens of thousands of features. In this case, it is wise to sets the reads as file A and the genes as file B. + +----------------------------------------------------- +1.3.8 Feature files *must* be tab-delimited. +----------------------------------------------------- +This is rather self-explanatory. While it is possible to allow BED files to be space-delimited, we have decided to require tab delimiters for three reasons: + +1. By requiring one delimiter type, the processing time is minimized. +2. Tab-delimited files are more amenable to other UNIX utilities. +3. GFF files can contain spaces within attribute columns. This complicates the use of space-delimited files as spaces must therefore be treated specially depending on the context. + +------------------------------------------------------------- +1.3.9 All BEDTools allow features to be “piped†via standard input. +------------------------------------------------------------- + +In an effort to allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, all BEDTools allow features +to be passed to them via standard input. Only one feature file may be passed to a BEDTool via standard input. +The convention used by all BEDTools is to set either file A or file B to “stdin†or "-". For example:: + + cat snps.bed | intersectBed –a stdin –b exons.bed + cat snps.bed | intersectBed –a - –b exons.bed + +In addition, all BEDTools that simply require one main input file (the -i file) will assume that input is +coming from standard input if the -i parameter is ignored. For example, the following are equivalent:: + + cat snps.bed | sortBed –i stdin + cat snps.bed | sortBed + +------------------------------------------------------ +1.3.10 Most BEDTools write their results to standard output. +------------------------------------------------------ +To allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, +most BEDTools report their output to standard output, rather than to a named file. If one wants to write the output to a named file, one can use the UNIX “file redirection†symbol “>†to do so. +Writing to standard output (the default):: + + intersectBed –a snps.bed –b exons.bed + chr1 100100 100101 rs233454 + chr1 200100 200101 rs446788 + chr1 300100 300101 rs645678 + +Writing to a file:: + + intersectBed –a snps.bed –b exons.bed > snps.in.exons.bed + + cat snps.in.exons.bed + chr1 100100 100101 rs233454 + chr1 200100 200101 rs446788 + chr1 300100 300101 rs645678 + +------------------------ +1.3.11 What is a “genome†file? +------------------------ +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which species / genome build you are working. +The way you do this for BEDTools is to create a “genome†file, which simply lists the names of the +chromosomes (or scaffolds, etc.) and their size (in basepairs). +Genome files must be tab-delimited and are structured as follows (this is an example for C. elegans):: + + chrI 15072421 + chrII 15279323 + ... + chrX 17718854 + chrM 13794 + +BEDTools includes predefined genome files for human and mouse in the /genomes directory included +in the BEDTools distribution. Additionally, the “chromInfo†files/tables available from the UCSC +Genome Browser website are acceptable. For example, one can download the hg19 chromInfo file here: +http://hgdownload.cse.ucsc.edu/goldenPath/hg19/database/chromInfo.txt.gz + +------------------------------------ +1.3.12 Paired-end BED files (BEDPE files). +------------------------------------ +We have defined a new file format (BEDPE) to concisely describe disjoint genome features, such as +structural variations or paired-end sequence alignments. We chose to define a new format because the +existing BED block format (i.e. BED12) does not allow inter-chromosomal feature definitions. Moreover, +the BED12 format feels rather bloated when one want to describe events with only two blocks. + +------------------------------------------ +1.3.13 Use “-h†for help with any BEDTool. +------------------------------------------ +Rather straightforward. If you use the “-h†option with any BEDTool, a full menu of example usage +and available options (when applicable) will be reported. + +-------------------------------------------------- +1.3.14 BED features must not contain negative positions. +-------------------------------------------------- +BEDTools will typically reject BED features that contain negative positions. In special cases, however, +BEDPE positions may be set to -1 to indicate that one or more ends of a BEDPE feature is unaligned. + +--------------------------------------------------- +1.3.15 The start position must be <= to the end position. +--------------------------------------------------- +BEDTools will reject BED features where the start position is greater than the end position. + +----------------------------------------- +1.3.16 Headers are allowed in GFF and BED files +----------------------------------------- +BEDTools will ignore headers at the beginning of BED and GFF files. Valid header lines begin with a +“#†symbol, the work “trackâ€, or the word “browserâ€. For example, the following examples are valid +headers for BED or GFF files:: + + track name=aligned_read description="Illumina aligned reads†+ chr5 100000 500000 read1 50 + + chr5 2380000 2386000 read2 60 - + + #This is a fascinating dataset + chr5 100000 500000 read1 50 + + chr5 2380000 2386000 read2 60 - + + browser position chr22:1-20000 + chr5 100000 500000 read1 50 + + chr5 2380000 2386000 read2 60 - + +------------------------------------------------------------- +1.3.17 GZIP support: BED, GFF, VCF, and BEDPE file can be “gzipped†+------------------------------------------------------------- +BEDTools will process gzipped BED, GFF, VCF and BEDPE files in the same manner as +uncompressed files. Gzipped files are auto-detected thanks to a helpful contribution from Gordon +Assaf. + +---------------------------------------------------------------------------- +1.3.18 Support for “split†or “spliced†BAM alignments and “blocked†BED features +---------------------------------------------------------------------------- +As of Version 2.8.0, five BEDTools (``intersectBed``, ``coverageBed``, ``genomeCoverageBed``, +``bamToBed``, and ``bed12ToBed6``) can properly handle “splitâ€/â€spliced†BAM alignments (i.e., having an +“N†CIGAR operation) and/or “blocked†BED (aka BED12) features. + +``intersectBed``, ``coverageBed``, and ``genomeCoverageBed`` will optionally handle “split†BAM and/or +“blocked†BED by using the ``-split`` option. This will cause intersects or coverage to be computed only +for the alignment or feature blocks. In contrast, without this option, the intersects/coverage would be +computed for the entire “span†of the alignment or feature, regardless of the size of the gaps between +each alignment or feature block. For example, imagine you have a RNA-seq read that originates from +the junction of two exons that were spliced together in a mRNA. In the genome, these two exons +happen to be 30Kb apart. Thus, when the read is aligned to the reference genome, one portion of the +read will align to the first exon, while another portion of the read will align ca. 30Kb downstream to the +other exon. The corresponding CIGAR string would be something like (assuming a 76bp read): +30M*3000N*46M. In the genome, this alignment “spans†3076 bp, yet the nucleotides in the sequencing +read only align “cover†76bp. Without the ``-split`` option, coverage or overlaps would be reported for the +entire 3076bp span of the alignment. However, with the ``-split`` option, coverage or overlaps will only +be reported for the portions of the read that overlap the exons (i.e. 30bp on one exon, and +46bp on the other). + + +Using the -split option with bamToBed causes “spliced/split†alignments to be reported in BED12 +format. Using the -split option with bed12ToBed6 causes “blocked†BED12 features to be reported in +BED6 format. + +-------------------------------- +1.3.19 Writing uncompressed BAM output. +-------------------------------- +When working with a large BAM file using a complex set of tools in a pipe/stream, it is advantageous +to pass uncompressed BAM output to each downstream program. This minimizes the amount of time +spent compressing and decompressing output from one program to the next. All BEDTools that create +BAM output (e.g. ``intersectBed``, ``windowBed``) will now optionally create uncompressed BAM output +using the ``-ubam`` option. + + + +===================================== +1.4 Implementation and algorithmic notes. +===================================== +BEDTools was implemented in C++ and makes extensive use of data structures and fundamental +algorithms from the Standard Template Library (STL). Many of the core algorithms are based upon the +genome binning algorithm described in the original UCSC Genome Browser paper (Kent et al, 2002). +The tools have been designed to inherit core data structures from central source files, thus allowing +rapid tool development and deployment of improvements and corrections. Support for BAM files is +made possible through Derek Barnett’s elegant C++ API called BamTools. + + + +===================================== +1.5 License and availability. +===================================== +BEDTools is freely available under a GNU Public License (Version 2) at: +http://bedtools.googlecode.com + + + +===================================== +1.6 Mailing list. +===================================== +A discussion group for reporting bugs, asking questions of the developer and of the user community, as +well as for requesting new features is available at: +http://groups.google.com/group/bedtools-discuss + + + +===================================== +1.7 Contributors. +===================================== +As open-source software, BEDTools greatly benefits from contributions made by other developers and +users of the tools. We encourage and welcome suggestions, contributions and complaints. This is how +software matures, improves and stays on top of the needs of its user community. The Google Code +(GC) site maintains a list of individuals who have contributed either source code or useful ideas for +improving the tools. In the near future, we hope to maintain a source repository on the GC site in +order to facilitate further contributions. We are currently unable to do so because we use Git for +version control, which is not yet supported by GC. \ No newline at end of file diff --git a/docs/_build/html/_sources/content/pairToBed.txt b/docs/_build/html/_sources/content/pairToBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..75db129a8e589956b227f6b4efef7f7a077445dc --- /dev/null +++ b/docs/_build/html/_sources/content/pairToBed.txt @@ -0,0 +1,378 @@ +############### +5.2 pairToBed +############### +**pairToBed** compares each end of a BEDPE feature or a paired-end BAM alignment to a feature file in +search of overlaps. + +**NOTE: pairToBed requires that the BAM file is sorted/grouped by the read name. This +allows pairToBed to extract correct alignment coordinates for each end based on their +respective CIGAR strings. It also assumes that the alignments for a given pair come in +groups of twos. There is not yet a standard method for reporting multiple alignments +using BAM. pairToBed will fail if an aligner does not report alignments in pairs.** + +========================================================================== +5.2.1 Usage and option summary +========================================================================== +**Usage:** +:: + pairToBed [OPTIONS] [-a <BEDPE> || -abam <BAM>] -b <BED/GFF/VCF> + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-a** BEDPE file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. Output will be in BEDPE format. +**-b** BED file B. Use "stdin" if passing B with a UNIX pipe. +**-abam** BAM file A. Each end of each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view ¨Cb <BAM> | pairToBed ¨Cabam stdin ¨Cb genes.bed | samtools view - +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bedpe** When using BAM input (-abam), write output as BEDPE. The default is to write output in BAM when using -abam. For example: pairToBed ¨Cabam reads.bam ¨Cb genes.bed ¨Cbedpe +**-ed** Use BAM total edit distance (NM tag) for BEDPE score. Default for BEDPE is to use the *minimum* of the two mapping qualities for the pair. When -ed is used the *total* edit distance from the two mates is reported as the score. +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-s** Force "strandedness". That is, only report hits in B that overlap A on the **same** strand. By default, overlaps are reported without respect to strand. +**-type** + Approach to reporting overlaps between BEDPE and BED. + + + **either-** Report overlaps if either end of A overlaps B. + + - *Default* + + **neither-** Report A if neither end of A overlaps B. + + **xor-** Report overlaps if one and only one end of A overlaps B. + + **both-** Report overlaps if both ends of A overlap B. + + **notboth-** Report overlaps if neither end or one and only one end of A overlap B. + + **ispan-** Report overlaps between [end1, start2] of A and B. + + - Note: If chrom1 <> chrom2, entry is ignored. + + **ospan-** Report overlaps between [start1, end2] of A and B. + + - Note: If chrom1 <> chrom2, entry is ignored. + + **notispan-** Report A if ispan of A doesn't overlap B. + - Note: If chrom1 <> chrom2, entry is ignored. + + **notospan-** Report A if ospan of A doesn't overlap B. + - Note: If chrom1 <> chrom2, entry is ignored. +=========================== ========================================================================================================================================================= + + + +========================================================================== +5.2.2 Default behavior +========================================================================== +By default, a BEDPE / BAM feature will be reported if *either* end overlaps a feature in the BED file. +In the example below, the left end of the pair overlaps B yet the right end does not. Thus, BEDPE/ +BAM A is reported since the default is to report A if either end overlaps B. + +Default: Report A if *either* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + +========================================================================== +5.2.3 (-type)Optional overlap requirements +========================================================================== +Using then **-type** option, **pairToBed** provides several other overlap requirements for controlling how +overlaps between BEDPE/BAM A and BED B are reported. The examples below illustrate how each +option behaves. + +**-type both**: Report A only if *both* ends overlap B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + +**-type neither**: Report A only if *neither* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result =====.................................===== + + +**-type xor**: Report A only if *one and only one* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result + + +**-type notboth**: Report A only if *neither end* **or** *one and only one* end overlaps B. Thus "notboth" +includes what would be reported by "neither" and by "xor". +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^ ^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result + + +**-type ispan**: Report A if it's "*inner span*" overlaps B. Applicable only to intra-chromosomal features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Inner span |-------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A =====.................................===== + + BED File B ==== + + Result + + +**-type ospan**: Report A if it's "*outer span*" overlaps B. Applicable only to intra-chromosomal features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Outer span |-----------------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ + + Result + + +**-type notispan**: Report A only if it's "*inner span*" does not overlap B. Applicable only to intrachromosomal +features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Inner span |-------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ + + Result =====.................................===== + + +**-type notospan**: Report A if it's "*outer span*" overlaps B. Applicable only to intra-chromosomal +features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Outer span |-----------------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ + + Result =====.................................===== + + + +========================================================================== +5.2.4 (-f)Requiring a minimum overlap fraction +========================================================================== +By default, **pairToBed** will report an overlap between A and B so long as there is at least one base +pair is overlapping on either end. Yet sometimes you may want to restrict reported overlaps between A +and B to cases where the feature in B overlaps at least X% (e.g. 50%) of A. The **¨Cf** option does exactly +this. The **-f** option may also be combined with the -type option for additional control. For example, +combining **-f 0.50** with **-type both** requires that both ends of A have at least 50% overlap with a +feature in B. + +For example, report A only at least 50% of one of the two ends is overlapped by B. +:: + pairToBed -a A.bedpe -b B.bed -f 0.5 + + + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^ ^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result =====.................................===== + + + +========================================================================== +5.2.5 (-s)Enforcing "strandedness" +========================================================================== +By default, **pairToBed** will report overlaps between features even if the features are on opposing +strands. However, if strand information is present in both files and the **"-s"** option is used, overlaps will +only be reported when features are on the same strand. + +For example, report A only at least 50% of one of the two ends is overlapped by B. +:: + pairToBed -a A.bedpe -b B.bed -s + + + + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A >>>>>.................................<<<<< + + BED File B << >>>>> + + Result + + + + BEDPE/BAM A >>>>>.................................<<<<< + + BED File B >> >>>>> + + Result >>>>>.................................<<<<< + + +========================================================================== +5.2.6 (-abam)Default is to write BAM output when using BAM input +========================================================================== +When comparing *paired* alignments in BAM format (**-abam**) to features in BED format (**-b**), +**pairToBed** will , by default, write the output in BAM format. That is, each alignment in the BAM +file that meets the user's criteria will be written (to standard output) in BAM format. This serves as a +mechanism to create subsets of BAM alignments are of biological interest, etc. Note that both +alignments for each aligned pair will be written to the BAM output. + +For example: +:: + pairToBed ¨Cabam pairedReads.bam ¨Cb simreps.bed | samtools view - | head -4 + + JOBU_0001:3:1:4:1060#0 99 chr10 42387928 29 50M = 42393091 5 2 1 3 + AA A A A C G G A A T T A T C G A A T G G A A T C G A A G A G A A T C T T C G A A C G G A C C C G A + dcgggggfbgfgdgggggggfdfgggcggggfcggcggggggagfgbggc XT:A:R NM:i:5 SM:i:0 AM:i:0 X0:i:3 X 1 : i : + 3 XM:i:5 XO:i:0 XG:i:0 MD:Z:0T0C33A5T4T3 + JOBU_0001:3:1:4:1060#0 147 chr10 42393091 0 50M = 42387928 - 5 2 1 3 + AAATGGAATCGAATGGAATCAACATCAAATGGAATCAAATGGAATCATTG K g d c g g d e c d g + \d`ggfcgcggffcgggc^cgfgccgggfc^gcdgg\bg XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:3 X1:i:13 XM:i:2 X O : i : + 0 XG:i:0 MD:Z:21T14G13 + JOBU_0001:3:1:8:446#0 99 chr10 42388091 9 50M = 42392738 4 6 9 7 + GAATCGACTGGAATCATCATCGGATGGAAATGAATGGAATAATCATCGAA f _ O f f ` ] I e Y f f ` f f e d d c f e f c P ` c _ W \ \ R _ ] + _BBBBBBBBBBBBBBBB XT:A:U NM:i:4 SM:i:0 AM:i:0 X0:i:1 X1:i:3 XM:i:4 XO:i:0 XG:i:0 M D : Z : + 7A22C9C2T6 + JOBU_0001:3:1:8:446#0 147 chr10 42392738 9 50M = 42388091 - 4 6 9 7 + TTATCGAATGCAATCGAATGGAATTATCGAATGCAATCGAATAGAATCAT df^ffec_JW[`MWceRec``fee`dcecfeeZae`c] + f^cNeecfccf^ XT:A:R NM:i:1 SM:i:0 AM:i:0 X0:i:2 X1:i:2 XM:i:1 XO:i:0 XG:i:0 MD:Z:38A11 + + + +========================================================================== +5.2.7 (-bedpe)Output BEDPE format when using BAM input +========================================================================== +When comparing *paired* alignments in BAM format (**-abam**) to features in BED format (**-b**), +**pairToBed** will optionally write the output in BEDPE format. That is, each alignment in the BAM +file is converted to a 10 column BEDPE feature and if overlaps are found (or not) based on the user's +criteria, the BAM alignment will be reported in BEDPE format. The BEDPE "name" field is comprised +of the RNAME field in the BAM alignment. The "score" field is the mapping quality score from the +BAM alignment. + +For example: +:: + pairToBed ¨Cabam pairedReads.bam ¨Cb simreps.bed -bedpe | head -5 + chr10 42387927 42387977 chr10 42393090 42393140 + JOBU_0001:3:1:4:1060#0 29 + - + chr10 42388090 42388140 chr10 42392737 42392787 + JOBU_0001:3:1:8:446#0 9 + - + chr10 42390552 42390602 chr10 42396045 42396095 + JOBU_0001:3:1:10:1865#0 9 + - + chrX 139153741 139153791 chrX 139159018 139159068 + JOBU_0001:3:1:14:225#0 37 + - + chr4 9236903 9236953 chr4 9242032 9242082 + JOBU_0001:3:1:15:1362#0 0 + - diff --git a/docs/_build/html/_sources/content/pairToPair.txt b/docs/_build/html/_sources/content/pairToPair.txt new file mode 100644 index 0000000000000000000000000000000000000000..7be68197e1e93a4dbe9686c93ff0681bcfcea5d7 --- /dev/null +++ b/docs/_build/html/_sources/content/pairToPair.txt @@ -0,0 +1,103 @@ +############### +5.3 pairToPair +############### +**pairToPair** compares two BEDPE files in search of overlaps where each end of a BEDPE feature in A +overlaps with the ends of a feature in B. For example, using pairToPair, one could screen for the exact +same discordant paired-end alignment in two files. This could suggest (among other things) that the +discordant pair suggests the same structural variation in each file/sample. + + +================================ +5.3.1 Usage and option summary +================================ +**Usage:** +:: + pairToPair [OPTIONS] -a <BEDPE> -b <BEDPE> + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-a** BEDPE file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. +**-b** BEDPE file B. Use "stdin" if passing B with a UNIX pipe. +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-is** Force "strandedness". That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +**-type** Approach to reporting overlaps between BEDPE and BED. + | **either** Report overlaps if either ends of A overlap B. + + + | **neither** Report A if neither end of A overlaps B. + + + | **both** Report overlaps if both ends of A overlap B. -*Default behavior.* +=========================== ========================================================================================================================================================= + + + + + +================================ +5.3.2 Default behavior +================================ +By default, a BEDPE feature from A will be reported if *both* ends overlap a feature in the BEDPE B +file. If strand information is present for the two BEDPE files, it will be further required that the +overlaps on each end be on the same strand. This way, an otherwise overlapping (in terms of genomic +locations) F/R alignment will not be matched with a R/R alignment. + +Default: Report A if *both* ends overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + +Default when strand information is present in both BEDPE files: Report A if *both* ends overlaps B *on +the same strands*. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE A >>>>>.................................>>>>> + + BEDPE B <<<<<.............................>>>>> + + Result + + + + BEDPE A >>>>>.................................>>>>> + + BEDPE B >>>>>.............................>>>>> + + Result >>>>>.................................>>>>> + + + +================================================== +5.3.3 (-type neither)Optional overlap requirements +================================================== +Using then **-type neither, pairToPair** will only report A if *neither* end overlaps with a BEDPE +feature in B. + +**-type neither**: Report A only if *neither* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^......................................^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^................................................^^^^^^ + + Result =====.................................===== + + \ No newline at end of file diff --git a/docs/_build/html/_sources/content/quick-start.txt b/docs/_build/html/_sources/content/quick-start.txt new file mode 100644 index 0000000000000000000000000000000000000000..64f2df32c3f342cf9c53adeb7949653276afec59 --- /dev/null +++ b/docs/_build/html/_sources/content/quick-start.txt @@ -0,0 +1,60 @@ +########### +Quick start +########### + +================ +Install BEDTools +================ +:: + + curl http://bedtools.googlecode.com/files/BEDTools.<version>.tar.gz > BEDTools.tar.gz + tar -zxvf BEDTools.tar.gz + cd BEDTools + make clean + make all + sudo cp bin/* /usr/local/bin/ + +=============== +Use BEDTools +=============== +Below are examples of typical BEDTools usage. **Additional usage examples are described in +section 6 of this manual.** Using the "-h" option with any BEDTools will report a list of all command +line options. + +A. Report the base-pair overlap between the features in two BED files. +:: + + intersectBed -a reads.bed -b genes.bed + +B. Report those entries in A that overlap NO entries in B. Like "grep -v" +:: + + intersectBed -a reads.bed -b genes.bed ¨Cv + +C. Read BED A from stdin. Useful for stringing together commands. For example, find genes that overlap LINEs +but not SINEs. +:: + + intersectBed -a genes.bed -b LINES.bed | intersectBed -a stdin -b SINEs.bed ¨Cv + +D. Find the closest ALU to each gene. +:: + + closestBed -a genes.bed -b ALUs.bed + +E. Merge overlapping repetitive elements into a single entry, returning the number of entries merged. +:: + + mergeBed -i repeatMasker.bed -n + +F. Merge nearby repetitive elements into a single entry, so long as they are within 1000 bp of one another. +:: + + mergeBed -i repeatMasker.bed -d 1000 + + + + + + + \ No newline at end of file diff --git a/docs/_build/html/_sources/content/shuffleBed.txt b/docs/_build/html/_sources/content/shuffleBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..d840277e900e1356d23444187b23912b036b72f7 --- /dev/null +++ b/docs/_build/html/_sources/content/shuffleBed.txt @@ -0,0 +1,155 @@ +############### +5.13 shuffleBed +############### +**shuffleBed** will randomly permute the genomic locations of a fearure file among a genome defined in a +genome file. One can also provide an "exclusions" BED/GFF/VCF file that lists regions where you do +not want the permuted features to be placed. For example, one might want to prevent features from +being placed in known genome gaps. **shuffleBed** is useful as a *null* basis against which to test the +significance of associations of one feature with another. + + + +========================================================================== +5.13.1 Usage and option summary +========================================================================== +Usage: +:: + shuffleBed [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-excl** A BED file of coordinates in which features from -i should *not* be placed (e.g., genome gaps). +**-chrom** Keep features in -i on the same chromosome. Solely permute their location on the chromosome. *By default, both the chromosome and position are randomly chosen*. +**-seed** Supply an integer seed for the shuffling. This will allow feature shuffling experiments to be recreated exactly as the seed for the pseudo-random number generation will be constant. *By default, the seed is chosen automatically*. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.13.2 Default behavior +========================================================================== +By default, **shuffleBed** will reposition each feature in the input BED file on a random chromosome at a +random position. The size and strand of each feature are preserved. + +For example: +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + chr2 8000 + chr3 5000 + chr4 2000 + + shuffleBed -i A.bed -g my.genome + chr4 1498 1598 a1 1 + + chr3 2156 3156 a2 2 - + + + + + +========================================================================== +5.13.3 (-chrom)Requiring that features be shuffled on the same chromosome +========================================================================== +The "**-chrom**" option behaves the same as the default behavior except that features are randomly +placed on the same chromosome as defined in the BED file. + +For example: +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + chr2 8000 + chr3 5000 + chr4 2000 + + shuffleBed -i A.bed -g my.genome -chrom + chr1 9560 9660 a1 1 + + chr1 7258 8258 a2 2 - + + + + +========================================================================== +5.13.4 Excluding certain genome regions from shuffleBed +========================================================================== +One may want to prevent BED features from being placed in certain regions of the genome. For +example, one may want to exclude genome gaps from permutation experiment. The "**-excl**" option +defines a BED file of regions that should be excluded. **shuffleBed** will attempt to permute the +locations of all features while adhering to the exclusion rules. However it will stop looking for an +appropriate location if it cannot find a valid spot for a feature after 1,000,000 tries. + +For example (*note that the exclude file excludes all but 100 base pairs of the chromosome*): +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + + cat exclude.bed + chr1 100 10000 + + shuffleBed -i A.bed -g my.genome -excl exclude.bed + chr1 0 100 a1 1 + + Error, line 2: tried 1000000 potential loci for entry, but could not avoid excluded + regions. Ignoring entry and moving on. + + +For example (*now the exclusion file only excludes the first 100 bases of the chromosome*): +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + + cat exclude.bed + chr1 0 100 + + shuffleBed -i A.bed -g my.genome -excl exclude.bed + chr1 147 247 a1 1 + + chr1 2441 3441 a2 2 - + + +========================================================================== +5.13.5 Defining a "seed" for the random replacement. +========================================================================== +**shuffleBed** uses a pseudo-random number generator to permute the locations of BED features. +Therefore, each run should produce a different result. This can be problematic if one wants to exactly +recreate an experiment. By using the "**-seed**" option, one can supply a custom integer seed for +**shuffleBed**. In turn, each execution of **shuffleBed** with the same seed and input files should produce +identical results. + +For example (*note that the exclude file below excludes all but 100 base pairs of the chromosome*): +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + + shuffleBed -i A.bed -g my.genome -seed 927442958 + chr1 6177 6277 a1 1 + + chr1 8119 9119 a2 2 - + + shuffleBed -i A.bed -g my.genome -seed 927442958 + chr1 6177 6277 a1 1 + + chr1 8119 9119 a2 2 - + + . . . + + shuffleBed -i A.bed -g my.genome -seed 927442958 + chr1 6177 6277 a1 1 + + chr1 8119 9119 a2 2 - diff --git a/docs/_build/html/_sources/content/slopBed.txt b/docs/_build/html/_sources/content/slopBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..0646afcaafc9476f605a6cc0ed2f6968c888c3ef --- /dev/null +++ b/docs/_build/html/_sources/content/slopBed.txt @@ -0,0 +1,84 @@ +############### +5.14 slopBed +############### +**slopBed** will increase the size of each feature in a feature file be a user-defined number of bases. While +something like this could be done with an "**awk '{OFS="\t" print $1,$2-<slop>,$3+<slop>}'**", +**slopBed** will restrict the resizing to the size of the chromosome (i.e. no start < 0 and no end > +chromosome size). + + +========================================================================== +5.14.1 Usage and option summary +========================================================================== +Usage: +:: + slopBed [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> [-b or (-l and -r)] + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-b** Increase the BED/GFF/VCF entry by the same number base pairs in each direction. *Integer*. +**-l** The number of base pairs to subtract from the start coordinate. *Integer*. +**-r** The number of base pairs to add to the end coordinate. *Integer*. +**-s** Define -l and -r based on strand. For example. if used, -l 500 for a negative-stranded feature, it will add 500 bp to the *end* coordinate. +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.14.2 Default behavior +========================================================================== +By default, **slopBed** will either add a fixed number of bases in each direction (**-b**) or an asymmetric +number of bases in each direction (**-l** and **-r**). + +For example: +:: + cat A.bed + chr1 5 100 + chr1 800 980 + + cat my.genome + chr1 1000 + + slopBed -i A.bed -g my.genome -b 5 + chr1 0 105 + chr1 795 985 + + slopBed -i A.bed -g my.genome -l 2 -r 3 + chr1 3 103 + chr1 798 983 + + +However, if the requested number of bases exceeds the boundaries of the chromosome, **slopBed** will +"clip" the feature accordingly. +:: + cat A.bed + chr1 5 100 + chr1 800 980 + + cat my.genome + chr1 1000 + + slopBed -i A.bed -g my.genome -b 5000 + chr1 0 1000 + chr1 0 1000 + + + +========================================================================== +5.14.3 Resizing features according to strand +========================================================================== +**slopBed** will optionally increase the size of a feature based on strand. + +For example: +:: + cat A.bed + chr1 100 200 a1 1 + + chr1 100 200 a2 2 - + + cat my.genome + chr1 1000 + + slopBed -i A.bed -g my.genome -l 50 -r 80 -s + chr1 50 280 a1 1 + + chr1 20 250 a2 2 - diff --git a/docs/_build/html/_sources/content/sortBed.txt b/docs/_build/html/_sources/content/sortBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..7ea166676c1e815f9e0f4d8101697bdbea6244af --- /dev/null +++ b/docs/_build/html/_sources/content/sortBed.txt @@ -0,0 +1,77 @@ +############### +5.15 sortBed +############### +**sortBed** sorts a feature file by chromosome and other criteria. + +========================================================================== +5.15.1 Usage and option summary +========================================================================== +Usage: +:: + sortBed [OPTIONS] -i <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-sizeA** Sort by feature size in ascending order. +**-sizeD** Sort by feature size in descending order. +**-chrThenSizeA** Sort by chromosome, then by feature size (asc). +**-chrThenSizeD** Sort by chromosome, then by feature size (desc). +**-chrThenScoreA** Sort by chromosome, then by score (asc). +**-chrThenScoreD** Sort by chromosome, then by score (desc). +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.15.2 Default behavior +========================================================================== +By default, **sortBed** sorts a BED file by chromosome and then by start position in ascending order. + +For example: +:: + cat A.bed + chr1 800 1000 + chr1 80 180 + chr1 1 10 + chr1 750 10000 + + sortBed -i A.bed + chr1 1 10 + chr1 80 180 + chr1 750 10000 + chr1 800 1000 + + + + +========================================================================== +5.15.3 Optional sorting behavior +========================================================================== +**sortBed** will also sorts a BED file by chromosome and then by other criteria. + +For example, to sort by chromosome and then by feature size (in descending order): +:: + cat A.bed + chr1 800 1000 + chr1 80 180 + chr1 1 10 + chr1 750 10000 + + sortBed -i A.bed -sizeD + chr1 750 10000 + chr1 800 1000 + chr1 80 180 + chr1 1 10 + + +**Disclaimer:** it should be noted that **sortBed** is merely a convenience utility, as the UNIX sort utility +will sort BED files more quickly while using less memory. For example, UNIX sort will sort a BED file +by chromosome then by start position in the following manner: +:: + sort -k 1,1 -k2,2 -n a.bed + chr1 1 10 + chr1 80 180 + chr1 750 10000 + chr1 800 1000 + diff --git a/docs/_build/html/_sources/content/subtractBed.txt b/docs/_build/html/_sources/content/subtractBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..81dfb0e7e1fd6fff7e191ecc9510f2016bbcdeb1 --- /dev/null +++ b/docs/_build/html/_sources/content/subtractBed.txt @@ -0,0 +1,88 @@ +############### +5.7 subtractBed +############### +**subtractBed** searches for features in B that overlap A. If an overlapping feature is found in B, the +overlapping portion is removed from A and the remaining portion of A is reported. If a feature in B +overlaps all of a feature in A, the A feature will not be reported. + + +========================================================================== +5.7.1 Usage and option summary +========================================================================== +Usage: +:: + subtractBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-s** Force strandedness. That is, find the closest feature in B overlaps A on the same strand. *By default, this is disabled*. +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.7.2 Default behavior +========================================================================== +Figure: +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE A ************* ****** + + BED File B ^^^^^^^^ ^^^^^^^^^^^ + + Result ========= + +For example: +:: + cat A.bed + chr1 100 200 + chr1 10 20 + + cat B.bed + chr1 0 30 + chr1 180 300 + + subtractBed -a A.bed -b B.bed + chr1 100 180 + + + + + + +========================================================================== +5.7.3 (-f)Requiring a minimal overlap fraction before subtracting +========================================================================== +This option behaves the same as the -f option for intersectBed. In this case, subtractBed will only +subtract an overlap with B if it covers at least the fraction of A defined by -f. If an overlap is found, +but it does not meet the overlap fraction, the original A feature is reported without subtraction. + +For example: +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 180 300 + + subtractBed -a A.bed -b B.bed -f 0.10 + chr1 100 180 + + subtractBed -a A.bed -b B.bed -f 0.80 + chr1 100 200 + + + + +========================================================================== +5.7.4 (-s)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for features in B that +should be subtracted from A. See the discussion in the intersectBed section for details. + + + + diff --git a/docs/_build/html/_sources/content/unionBedGraphs.txt b/docs/_build/html/_sources/content/unionBedGraphs.txt new file mode 100644 index 0000000000000000000000000000000000000000..b1e34a18edb9aac6eacd446c9ae1d39a3f387fa9 --- /dev/null +++ b/docs/_build/html/_sources/content/unionBedGraphs.txt @@ -0,0 +1,163 @@ +############### +5.23 unionBedGraphs +############### +**unionBedGraphs** combines multiple BEDGRAPH files into a single file such that one can directly +compare coverage (and other text-values such as genotypes) across multiple sample + + +========================================================================== +5.23.1 Usage and option summary +========================================================================== +Usage: +:: + unionBedGraphs [OPTIONS] -i FILE1 FILE2 FILE3 ... FILEn + +=========================== =============================================================================================================================================================================================================== + Option Description + +=========================== =============================================================================================================================================================================================================== +**-header** Print a header line, consisting of chrom, start, end followed by the names of each input BEDGRAPH file. +**-names** A list of names (one per file) to describe each file in -i. These names will be printed in the header line. +**-empty** Report empty regions (i.e., start/end intervals w/o values in all files). *Requires the '-g FILE' parameter (see below)*. +**-g** The genome file to be used to calculate empty regions. +**-filler TEXT** Use TEXT when representing intervals having no value. Default is '0', but you can use 'N/A' or any other text. +**-examples** Show detailed usage examples. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.23.2 Default behavior +========================================================================== +Figure: +:: + cat 1.bg + chr1 1000 1500 10 + chr1 2000 2100 20 + + cat 2.bg + chr1 900 1600 60 + chr1 1700 2050 50 + + cat 3.bg + chr1 1980 2070 80 + chr1 2090 2100 20 + + cat sizes.txt + chr1 5000 + + unionBedGraphs -i 1.bg 2.bg 3.bg + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + +========================================================================== +5.23.3 Add a header line to the output +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -header + chrom start end 1 2 3 + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + + +========================================================================== +5.23.4 Add a header line with custom file names to the output +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -header -names WT-1 WT-2 KO-1 + chrom start end WT-1 WT-2 KO-1 + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + + + + +========================================================================== +5.23.5 Include regions that have zero coverage in all BEDGRAPH files. +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -empty -g sizes.txt -header + chrom start end WT-1 WT-2 KO-1 + chrom start end 1 2 3 + chr1 0 900 0 0 0 + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1600 1700 0 0 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + chr1 2100 5000 0 0 0 + + +========================================================================== +5.23.6 Use a custom value for missing values. +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -empty -g sizes.txt -header -filler N/A + chrom start end WT-1 WT-2 KO-1 + chrom start end 1 2 3 + chr1 0 900 N/A N/A N/A + chr1 900 1000 N/A 60 N/A + chr1 1000 1500 10 60 N/A + chr1 1500 1600 N/A 60 N/A + chr1 1600 1700 N/A N/A N/A + chr1 1700 1980 N/A 50 N/A + chr1 1980 2000 N/A 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 N/A 80 + chr1 2070 2090 20 N/A N/A + chr1 2090 2100 20 N/A 20 + chr1 2100 5000 N/A N/A N/A + + +========================================================================== +5.23.7 Use BEDGRAPH files with non-numeric values. +========================================================================== +Figure: +:: + cat 1.snp.bg + chr1 0 1 A/G + chr1 5 6 C/T + + cat 2.snp.bg + chr1 0 1 C/C + chr1 7 8 T/T + + cat 3.snp.bg + chr1 0 1 A/G + chr1 5 6 C/T + + unionBedGraphs -i 1.snp.bg 2.snp.bg 3.snp.bg -filler -/- + chr1 0 1 A/G C/C A/G + chr1 5 6 C/T -/- C/T + chr1 7 8 -/- T/T -/- \ No newline at end of file diff --git a/docs/_build/html/_sources/content/windowBed.txt b/docs/_build/html/_sources/content/windowBed.txt new file mode 100644 index 0000000000000000000000000000000000000000..30d231ea975e4a070a330e9dd4e32716e9d4deaa --- /dev/null +++ b/docs/_build/html/_sources/content/windowBed.txt @@ -0,0 +1,157 @@ +############### +5.5 windowBed +############### + +Similar to **intersectBed**, **windowBed** searches for overlapping features in A and B. However, +**windowBed** adds a specified number (1000, by default) of base pairs upstream and downstream of +each feature in A. In effect, this allows features in B that are "near" features in A to be detected. + +========================================================================== +5.5.1 Usage and option summary +========================================================================== +**Usage:** +:: + windowBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-abam** BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view -b <BAM> | windowBed -abam stdin -b genes.bed +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bed** When using BAM input (-abam), write output as BED. The default is to write output in BAM when using -abam. For example: windowBed -abam reads.bam -b genes.bed -bed +**-w** Base pairs added upstream and downstream of each entry in A when searching for overlaps in B. *Default is 1000 bp*. +**-l** Base pairs added upstream (left of) of each entry in A when searching for overlaps in B. *Allows one to create assymetrical "windows". Default is 1000bp*. +**-r** Base pairs added downstream (right of) of each entry in A when searching for overlaps in B. *Allows one to create assymetrical "windows". Default is 1000bp*. +**-sw** Define -l and -r based on strand. For example if used, -l 500 for a negative-stranded feature will add 500 bp downstream. *By default, this is disabled*. +**-sm** Only report hits in B that overlap A on the same strand. *By default, overlaps are reported without respect to strand*. +**-u** Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. +**-c** For each entry in A, report the number of hits in B while restricting to -f. Reports 0 for A entries that have no overlap with B. +=========================== ========================================================================================================================================================= + +========================================================================== +5.5.2 Default behavior +========================================================================== +By default, **windowBed** adds 1000 bp upstream and downstream of each A feature and searches for +features in B that overlap this "window". If an overlap is found in B, both the *original* A feature and the +*original* B feature are reported. For example, in the figure below, feature B1 would be found, but B2 +would not. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + "window" = 10 + BED File A <----------*************----------> + + BED File B ^^^^^^^^ ^^^^^^ + + Result ======== + +For example: +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + windowBed -a A.bed -b B.bed + chr1 100 200 chr1 500 1000 + + +========================================================================== +5.5.3 (-w)Defining a custom window size +========================================================================== +Instead of using the default window size of 1000bp, one can define a custom, *symmetric* window around +each feature in A using the **-w** option. One should specify the window size in base pairs. For example, +a window of 5kb should be defined as **-w 5000**. + +For example (note that in contrast to the default behavior, the second B entry is reported): +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + windowBed -a A.bed -b B.bed -w 5000 + chr1 100 200 chr1 500 1000 + chr1 100 200 chr1 1300 2000 + +========================================================================== +5.5.4 (-l and -r)Defining assymteric windows +========================================================================== +One can also define asymmetric windows where a differing number of bases are added upstream and +downstream of each feature using the **-l (upstream)** and **-r (downstream)** options. + +For example (note the difference between -l 200 and -l 300): +:: + cat A.bed + chr1 1000 2000 + + cat B.bed + chr1 500 800 + chr1 10000 20000 + + windowBed -a A.bed -b B.bed -l 200 -r 20000 + chr1 100 200 chr1 10000 20000 + + windowBed -a A.bed -b B.bed -l 300 -r 20000 + chr1 100 200 chr1 500 800 + chr1 100 200 chr1 10000 20000 + +========================================================================== +5.5.5 (-sw)Defining assymteric windows based on strand +========================================================================== +Especially when dealing with gene annotations or RNA-seq experiments, you may want to define +asymmetric windows based on "strand". For example, you may want to screen for overlaps that occur +within 5000 bp upstream of a gene (e.g. a promoter region) while screening only 1000 bp downstream of +the gene. By enabling the **-sw** ("stranded" windows) option, the windows are added upstream or +downstream according to strand. For example, imagine one specifies **-l 5000 -r 1000** as well as the **- +sw** option. In this case, forward stranded ("+") features will screen 5000 bp to the *left* (that is, *lower* +genomic coordinates) and 1000 bp to the *right* (that is, *higher* genomic coordinates). By contrast, +reverse stranded ("-") features will screen 5000 bp to the *right* (that is, *higher* genomic coordinates) and +1000 bp to the *left* (that is, *lower* genomic coordinates). + +For example (note the difference between -l 200 and -l 300): +:: + cat A.bed + chr1 10000 20000 A.forward 1 + + chr1 10000 20000 A.reverse 1 - + + cat B.bed + chr1 1000 8000 B1 + chr1 24000 32000 B2 + + windowBed -a A.bed -b B.bed -l 5000 -r 1000 -sw + chr1 10000 20000 A.forward 1 + chr1 1000 8000 B1 + chr1 10000 20000 A.reverse 1 - chr1 24000 32000 B2 + + + +========================================================================== +5.5.6 (-sm)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for overlaps within the +"window" surrounding A. See the discussion in the intersectBed section for details. + +========================================================================== +5.5.7 (-u)Reporting the presence of at least one overlapping feature +========================================================================== +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. + + +========================================================================== +5.5.8 (-c)Reporting the number of overlapping features +========================================================================== +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. + + +========================================================================== +5.5.9 (-v)Reporting the absence of any overlapping features +========================================================================== +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. + diff --git a/docs/_build/html/_sources/index.txt b/docs/_build/html/_sources/index.txt new file mode 100644 index 0000000000000000000000000000000000000000..0ed81653ef695d3f0c8ca7f8641c9d70f44d7f7a --- /dev/null +++ b/docs/_build/html/_sources/index.txt @@ -0,0 +1,31 @@ +================================================================ +**bedtools**: *a powerful toolset for genome arithmetic* +================================================================ + +================= +Overview +================= + +Brief paragraph of the software. + + +================= +Table of contents +================= +.. toctree:: + :maxdepth: 1 + + content/overview + content/installation + content/quick-start + content/general-usage + content/bedtools-suite + content/example-usage + content/advanced-usage + + +================= +Mailing list +================= +Refer to the mailing list. + diff --git a/docs/_build/html/_static/ajax-loader.gif b/docs/_build/html/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 Binary files /dev/null and b/docs/_build/html/_static/ajax-loader.gif differ diff --git a/docs/_build/html/_static/basic.css b/docs/_build/html/_static/basic.css new file mode 100644 index 0000000000000000000000000000000000000000..f0379f359b558408e03f5199557280c3a18cec10 --- /dev/null +++ b/docs/_build/html/_static/basic.css @@ -0,0 +1,540 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar input[type="text"] { + width: 170px; +} + +div.sphinxsidebar input[type="submit"] { + width: 30px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/docs/_build/html/_static/bedtools.png b/docs/_build/html/_static/bedtools.png new file mode 100644 index 0000000000000000000000000000000000000000..2d44356e6b4858b57e94c811db8e827d4ce72a72 Binary files /dev/null and b/docs/_build/html/_static/bedtools.png differ diff --git a/docs/_build/html/_static/comment-bright.png b/docs/_build/html/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903 Binary files /dev/null and b/docs/_build/html/_static/comment-bright.png differ diff --git a/docs/_build/html/_static/comment-close.png b/docs/_build/html/_static/comment-close.png new file mode 100644 index 0000000000000000000000000000000000000000..09b54be46da3f0d4a5061da289dc91d8a2cdbc9c Binary files /dev/null and b/docs/_build/html/_static/comment-close.png differ diff --git a/docs/_build/html/_static/comment.png b/docs/_build/html/_static/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95 Binary files /dev/null and b/docs/_build/html/_static/comment.png differ diff --git a/docs/_build/html/_static/default.css b/docs/_build/html/_static/default.css new file mode 100644 index 0000000000000000000000000000000000000000..21f3f5098d74ca71c6c3f917a765fb6bf78b4dea --- /dev/null +++ b/docs/_build/html/_static/default.css @@ -0,0 +1,256 @@ +/* + * default.css_t + * ~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- default theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: sans-serif; + font-size: 100%; + background-color: #11303d; + color: #000; + margin: 0; + padding: 0; +} + +div.document { + background-color: #1c4e63; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: #ffffff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-color: #133f52; + line-height: 30px; + color: #ffffff; +} + +div.related a { + color: #ffffff; +} + +div.sphinxsidebar { +} + +div.sphinxsidebar h3 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; +} + +div.sphinxsidebar h3 a { + color: #ffffff; +} + +div.sphinxsidebar h4 { + font-family: 'Trebuchet MS', sans-serif; + color: #ffffff; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; +} + +div.sphinxsidebar p { + color: #ffffff; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; + color: #ffffff; +} + +div.sphinxsidebar a { + color: #98dbcc; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + color: #355f7c; + text-decoration: none; +} + +a:visited { + color: #355f7c; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Trebuchet MS', sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning tt { + background: #efc2c2; +} + +.note tt { + background: #d6d6d6; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} \ No newline at end of file diff --git a/docs/_build/html/_static/doctools.js b/docs/_build/html/_static/doctools.js new file mode 100644 index 0000000000000000000000000000000000000000..d4619fdfb10d95e06dbcb92107cc64c34f709eaf --- /dev/null +++ b/docs/_build/html/_static/doctools.js @@ -0,0 +1,247 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + */ +jQuery.urldecode = function(x) { + return decodeURIComponent(x).replace(/\+/g, ' '); +} + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s == 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * small function to check if an array contains + * a given item. + */ +jQuery.contains = function(arr, item) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] == item) + return true; + } + return false; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node) { + if (node.nodeType == 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('<a class="headerlink">\u00B6</a>'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('<a class="headerlink">\u00B6</a>'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('<p class="highlight-link"><a href="javascript:Documentation.' + + 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/docs/_build/html/_static/down-pressed.png b/docs/_build/html/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7ad782782e4f8e39b0c6e15c7344700cdd2527 Binary files /dev/null and b/docs/_build/html/_static/down-pressed.png differ diff --git a/docs/_build/html/_static/down.png b/docs/_build/html/_static/down.png new file mode 100644 index 0000000000000000000000000000000000000000..3003a88770de3977d47a2ba69893436a2860f9e7 Binary files /dev/null and b/docs/_build/html/_static/down.png differ diff --git a/docs/_build/html/_static/file.png b/docs/_build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..d18082e397e7e54f20721af768c4c2983258f1b4 Binary files /dev/null and b/docs/_build/html/_static/file.png differ diff --git a/docs/_build/html/_static/jquery.js b/docs/_build/html/_static/jquery.js new file mode 100644 index 0000000000000000000000000000000000000000..7c243080233761859937d52195b670602731a379 --- /dev/null +++ b/docs/_build/html/_static/jquery.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i? +e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r= +j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g, +"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e= +true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)|| +c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded", +L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype, +"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+ +a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f], +d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]=== +a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&& +!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari= +true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ", +i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ", +" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className= +this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i= +e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!= +null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), +fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| +d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this, +"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent= +a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y, +isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit= +{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}}; +if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&& +!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}}, +toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector, +u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), +function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q]; +if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[]; +for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length- +1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, +CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}}, +relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]= +l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[]; +h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m= +m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition|| +!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m= +h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>"; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/, +gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length; +c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)? +a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&& +this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]|| +u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length=== +1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay"); +this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a], +"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)}, +animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing= +j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]); +this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length|| +c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement? +function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b= +this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle; +k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&& +f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/docs/_build/html/_static/minus.png b/docs/_build/html/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..da1c5620d10c047525a467a425abe9ff5269cfc2 Binary files /dev/null and b/docs/_build/html/_static/minus.png differ diff --git a/docs/_build/html/_static/plus.png b/docs/_build/html/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cb37425ea68b39ffa7b2e5fb69161275a87541 Binary files /dev/null and b/docs/_build/html/_static/plus.png differ diff --git a/docs/_build/html/_static/pygments.css b/docs/_build/html/_static/pygments.css new file mode 100644 index 0000000000000000000000000000000000000000..1a14f2ae1abd2bed71fc76bee7a0d49bc6fcbc01 --- /dev/null +++ b/docs/_build/html/_static/pygments.css @@ -0,0 +1,62 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #303030 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0040D0 } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/docs/_build/html/_static/rtd.css b/docs/_build/html/_static/rtd.css new file mode 100644 index 0000000000000000000000000000000000000000..a8cedebf88315601256c394c3f11f7dabdb23b72 --- /dev/null +++ b/docs/_build/html/_static/rtd.css @@ -0,0 +1,1438 @@ +/* + * rtd.css + * ~~~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- sphinxdoc theme. Originally created by + * Armin Ronacher for Werkzeug. + * + * Customized for ReadTheDocs by Eric Pierce & Eric Holscher + * + * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* RTD colors + * light blue: #e8ecef + * medium blue: #8ca1af + * dark blue: #465158 + * dark grey: #444444 + * + * white hover: #d1d9df; + * medium blue hover: #697983; + * green highlight: #8ecc4c + * light blue (project bar): #e8ecef + */ + +@import url("basic.css"); + +/* PAGE LAYOUT -------------------------------------------------------------- */ + +body { + font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; + text-align: center; + color: black; + background-color: #465158; + padding: 0; + margin: 0; +} + +div.document { + text-align: left; + background-color: #e8ecef; +} + +div.bodywrapper { + background-color: #ffffff; + border-left: 1px solid #ccc; + border-bottom: 1px solid #ccc; + margin: 0 0 0 16em; +} + +div.body { + margin: 0; + padding: 0.5em 1.3em; + max-width: 55em; + min-width: 20em; +} + +div.related { + font-size: 1em; + background-color: #465158; +} + +div.documentwrapper { + float: left; + width: 100%; + background-color: #e8ecef; +} + + +/* HEADINGS --------------------------------------------------------------- */ + +h1 { + margin: 0; + padding: 0.7em 0 0.3em 0; + font-size: 1.5em; + line-height: 1.15; + color: #111; + clear: both; +} + +h2 { + margin: 2em 0 0.2em 0; + font-size: 1.35em; + padding: 0; + color: #465158; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.2em; + color: #6c818f; +} + +div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { + color: black; +} + +h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { + display: none; + margin: 0 0 0 0.3em; + padding: 0 0.2em 0 0.2em; + color: #aaa !important; +} + +h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, +h5:hover a.anchor, h6:hover a.anchor { + display: inline; +} + +h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, +h5 a.anchor:hover, h6 a.anchor:hover { + color: #777; + background-color: #eee; +} + + +/* LINKS ------------------------------------------------------------------ */ + +/* Normal links get a pseudo-underline */ +a { + color: #444; + text-decoration: none; + border-bottom: 1px solid #ccc; +} + +/* Links in sidebar, TOC, index trees and tables have no underline */ +.sphinxsidebar a, +.toctree-wrapper a, +.indextable a, +#indices-and-tables a { + color: #444; + text-decoration: none; + border-bottom: none; +} + +/* Most links get an underline-effect when hovered */ +a:hover, +div.toctree-wrapper a:hover, +.indextable a:hover, +#indices-and-tables a:hover { + color: #111; + text-decoration: none; + border-bottom: 1px solid #111; +} + +/* Footer links */ +div.footer a { + color: #86989B; + text-decoration: none; + border: none; +} +div.footer a:hover { + color: #a6b8bb; + text-decoration: underline; + border: none; +} + +/* Permalink anchor (subtle grey with a red hover) */ +div.body a.headerlink { + color: #ccc; + font-size: 1em; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none; + border: none; +} +div.body a.headerlink:hover { + color: #c60f0f; + border: none; +} + + +/* NAVIGATION BAR --------------------------------------------------------- */ + +div.related ul { + height: 2.5em; +} + +div.related ul li { + margin: 0; + padding: 0.65em 0; + float: left; + display: block; + color: white; /* For the >> separators */ + font-size: 0.8em; +} + +div.related ul li.right { + float: right; + margin-right: 5px; + color: transparent; /* Hide the | separators */ +} + +/* "Breadcrumb" links in nav bar */ +div.related ul li a { + order: none; + background-color: inherit; + font-weight: bold; + margin: 6px 0 6px 4px; + line-height: 1.75em; + color: #ffffff; + padding: 0.4em 0.8em; + border: none; + border-radius: 3px; +} +/* previous / next / modules / index links look more like buttons */ +div.related ul li.right a { + margin: 0.375em 0; + background-color: #697983; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* All navbar links light up as buttons when hovered */ +div.related ul li a:hover { + background-color: #8ca1af; + color: #ffffff; + text-decoration: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* Take extra precautions for tt within links */ +a tt, +div.related ul li a tt { + background: inherit !important; + color: inherit !important; +} + + +/* SIDEBAR ---------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + margin-left: -100%; + float: left; + top: 3em; + left: 0; + padding: 0 1em; + width: 14em; + font-size: 1em; + text-align: left; + background-color: #e8ecef; +} + +div.sphinxsidebar img { + max-width: 12em; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin: 1.2em 0 0.3em 0; + font-size: 1em; + padding: 0; + color: #222222; + font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; +} + +div.sphinxsidebar h3 a { + color: #444444; +} + +div.sphinxsidebar ul, +div.sphinxsidebar p { + margin-top: 0; + padding-left: 0; + line-height: 130%; + background-color: #e8ecef; +} + +/* No bullets for nested lists, but a little extra indentation */ +div.sphinxsidebar ul ul { + list-style-type: none; + margin-left: 1.5em; + padding: 0; +} + +/* A little top/bottom padding to prevent adjacent links' borders + * from overlapping each other */ +div.sphinxsidebar ul li { + padding: 1px 0; +} + +/* A little left-padding to make these align with the ULs */ +div.sphinxsidebar p.topless { + padding-left: 0 0 0 1em; +} + +/* Make these into hidden one-liners */ +div.sphinxsidebar ul li, +div.sphinxsidebar p.topless { + white-space: nowrap; + overflow: hidden; +} +/* ...which become visible when hovered */ +div.sphinxsidebar ul li:hover, +div.sphinxsidebar p.topless:hover { + overflow: visible; +} + +/* Search text box and "Go" button */ +#searchbox { + margin-top: 2em; + margin-bottom: 1em; + background: #ddd; + padding: 0.5em; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} +#searchbox h3 { + margin-top: 0; +} + +/* Make search box and button abut and have a border */ +input, +div.sphinxsidebar input { + border: 1px solid #999; + float: left; +} + +/* Search textbox */ +input[type="text"] { + margin: 0; + padding: 0 3px; + height: 20px; + width: 144px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; +} +/* Search button */ +input[type="submit"] { + margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ + height: 22px; + color: #444; + background-color: #e8ecef; + padding: 1px 4px; + font-weight: bold; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; +} +input[type="submit"]:hover { + color: #ffffff; + background-color: #8ecc4c; +} + +div.sphinxsidebar p.searchtip { + clear: both; + padding: 0.5em 0 0 0; + background: #ddd; + color: #666; + font-size: 0.9em; +} + +/* Sidebar links are unusual */ +div.sphinxsidebar li a, +div.sphinxsidebar p a { + background: #e8ecef; /* In case links overlap main content */ + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border: 1px solid transparent; /* To prevent things jumping around on hover */ + padding: 0 5px 0 5px; +} +div.sphinxsidebar li a:hover, +div.sphinxsidebar p a:hover { + color: #111; + text-decoration: none; + border: 1px solid #888; +} + +/* Tweak any link appearing in a heading */ +div.sphinxsidebar h3 a { +} + + + + +/* OTHER STUFF ------------------------------------------------------------ */ + +cite, code, tt { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.01em; +} + +tt { + background-color: #f2f2f2; + color: #444; +} + +tt.descname, tt.descclassname, tt.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +pre, #_fontwidthtest { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + margin: 1em 2em; + font-size: 0.95em; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid #ccc; + background-color: #eee; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 2px 7px; + border: 1px solid #ccc; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + + +/* ADMONITIONS AND WARNINGS ------------------------------------------------- */ + +/* Shared by admonitions, warnings and sidebars */ +div.admonition, +div.warning, +div.sidebar { + font-size: 0.9em; + margin: 2em; + padding: 0; + /* + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + */ +} +div.admonition p, +div.warning p, +div.sidebar p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} +div.admonition pre, +div.warning pre, +div.sidebar pre { + margin: 0.4em 1em 0.4em 1em; +} +div.admonition p.admonition-title, +div.warning p.admonition-title, +div.sidebar p.sidebar-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + font-weight: bold; + font-size: 1.1em; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); +} +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol, +div.sidebar ul, div.sidebar ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + + +/* Admonitions and sidebars only */ +div.admonition, div.sidebar { + border: 1px solid #609060; + background-color: #e9ffe9; +} +div.admonition p.admonition-title, +div.sidebar p.sidebar-title { + background-color: #70A070; + border-bottom: 1px solid #609060; +} + + +/* Warnings only */ +div.warning { + border: 1px solid #900000; + background-color: #ffe9e9; +} +div.warning p.admonition-title { + background-color: #b04040; + border-bottom: 1px solid #900000; +} + + +/* Sidebars only */ +div.sidebar { + max-width: 200px; +} + + + +div.versioninfo { + margin: 1em 0 0 0; + border: 1px solid #ccc; + background-color: #DDEAF0; + padding: 8px; + line-height: 1.3em; + font-size: 0.9em; +} + +.viewcode-back { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +dl { + margin: 1em 0 2.5em 0; +} + +/* Highlight target when you click an internal link */ +dt:target { + background: #ffe080; +} +/* Don't highlight whole divs */ +div.highlight { + background: transparent; +} +/* But do highlight spans (so search results can be highlighted) */ +span.highlight { + background: #ffe080; +} + +div.footer { + background-color: #465158; + color: #eeeeee; + padding: 0 2em 2em 2em; + clear: both; + font-size: 0.8em; + text-align: center; +} + +p { + margin: 0.8em 0 0.5em 0; +} + +.section p img { + margin: 1em 2em; +} + + +/* MOBILE LAYOUT -------------------------------------------------------------- */ + +@media screen and (max-width: 600px) { + + h1, h2, h3, h4, h5 { + position: relative; + } + + ul { + padding-left: 1.25em; + } + + div.bodywrapper a.headerlink, #indices-and-tables h1 a { + color: #e6e6e6; + font-size: 80%; + float: right; + line-height: 1.8; + position: absolute; + right: -0.7em; + visibility: inherit; + } + + div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { + line-height: 1.5; + } + + pre { + font-size: 0.7em; + overflow: auto; + word-wrap: break-word; + white-space: pre-wrap; + } + + div.related ul { + height: 2.5em; + padding: 0; + text-align: left; + } + + div.related ul li { + clear: both; + color: #465158; + padding: 0.2em 0; + } + + div.related ul li:last-child { + border-bottom: 1px dotted #8ca1af; + padding-bottom: 0.4em; + margin-bottom: 1em; + width: 100%; + } + + div.related ul li a { + color: #465158; + padding-right: 0; + } + + div.related ul li a:hover { + background: inherit; + color: inherit; + } + + div.related ul li.right { + clear: none; + padding: 0.65em 0; + margin-bottom: 0.5em; + } + + div.related ul li.right a { + color: #fff; + padding-right: 0.8em; + } + + div.related ul li.right a:hover { + background-color: #8ca1af; + } + + div.body { + clear: both; + min-width: 0; + word-wrap: break-word; + } + + div.bodywrapper { + margin: 0 0 0 0; + } + + div.sphinxsidebar { + float: none; + margin: 0; + width: auto; + } + + div.sphinxsidebar input[type="text"] { + height: 2em; + line-height: 2em; + width: 70%; + } + + div.sphinxsidebar input[type="submit"] { + height: 2em; + margin-left: 0.5em; + width: 20%; + } + + div.sphinxsidebar p.searchtip { + background: inherit; + margin-bottom: 1em; + } + + div.sphinxsidebar ul li, div.sphinxsidebar p.topless { + white-space: normal; + } + + .bodywrapper img { + display: block; + margin-left: auto; + margin-right: auto; + max-width: 100%; + } + + div.documentwrapper { + float: none; + } + + div.admonition, div.warning, pre, blockquote { + margin-left: 0em; + margin-right: 0em; + } + + .body p img { + margin: 0; + } + + #searchbox { + background: transparent; + } + + .related:not(:first-child) li { + display: none; + } + + .related:not(:first-child) li.right { + display: block; + } + + div.footer { + padding: 1em; + } + + .rtd_doc_footer .badge { + float: none; + margin: 1em auto; + position: static; + } + + .rtd_doc_footer .badge.revsys-inline { + margin-right: auto; + margin-bottom: 2em; + } + + table.indextable { + display: block; + width: auto; + } + + .indextable tr { + display: block; + } + + .indextable td { + display: block; + padding: 0; + width: auto !important; + } + + .indextable td dt { + margin: 1em 0; + } + + ul.search { + margin-left: 0.25em; + } + + ul.search li div.context { + font-size: 90%; + line-height: 1.1; + margin-bottom: 1; + margin-left: 0; + } + +} + +/* Links in sidebar, TOC, index trees and tables have no underline */ +.sphinxsidebar a, +.toctree-wrapper a, +.indextable a, +#indices-and-tables a { + color: #444444; + text-decoration: none; + border-bottom: none; +} + +/* Most links get an underline-effect when hovered */ +a:hover, +div.toctree-wrapper a:hover, +.indextable a:hover, +#indices-and-tables a:hover { + color: #111111; + text-decoration: none; + border-bottom: 1px solid #111111; +} + +/* Footer links */ +div.footer a { + color: #86989b; + text-decoration: none; + border: none; +} +div.footer a:hover { + color: #a6b8bb; + text-decoration: underline; + border: none; +} + +/* Permalink anchor (subtle grey with a red hover) */ +div.body a.headerlink { + color: #cccccc; + font-size: 1em; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none; + border: none; +} +div.body a.headerlink:hover { + color: #c60f0f; + border: none; +} + + +/* NAVIGATION BAR --------------------------------------------------------- */ + +div.related ul { + height: 2.5em; +} + +div.related ul li { + margin: 0; + padding: 0.65em 0; + float: left; + display: block; + color: #ffffff; /* For the >> separators */ + font-size: 0.8em; +} + +div.related ul li.right { + float: right; + margin-right: 5px; + color: transparent; /* Hide the | separators */ +} + +/* "Breadcrumb" links in nav bar */ +div.related ul li a { + order: none; + background-color: inherit; + font-weight: bold; + margin: 6px 0 6px 4px; + line-height: 1.75em; + color: #ffffff; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); + padding: 0.4em 0.8em; + border: none; + border-radius: 3px; +} +/* previous / next / modules / index links look more like buttons */ +div.related ul li.right a { + margin: 0.375em 0; + background-color: #697983; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* All navbar links light up as buttons when hovered */ +div.related ul li a:hover { + background-color: #8ca1af; + color: #ffffff; + text-decoration: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* Take extra precautions for tt within links */ +a tt, +div.related ul li a tt { + background: inherit !important; + color: inherit !important; +} + + +/* SIDEBAR ---------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + margin-left: -100%; + float: left; + top: 3em; + left: 0; + padding: 0 1em; + width: 14em; + font-size: 1em; + text-align: left; + background-color: #e8ecef; +} + +div.sphinxsidebar img { + max-width: 12em; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin: 1.2em 0 0.3em 0; + font-size: 1em; + padding: 0; + color: #222222; + font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; +} + +div.sphinxsidebar h3 a { + color: ; +} + +div.sphinxsidebar ul, +div.sphinxsidebar p { + margin-top: 0; + padding-left: 0; + line-height: 130%; + background-color: #e8ecef; +} + +/* No bullets for nested lists, but a little extra indentation */ +div.sphinxsidebar ul ul { + list-style-type: none; + margin-left: 1.5em; + padding: 0; +} + +/* A little top/bottom padding to prevent adjacent links' borders + * from overlapping each other */ +div.sphinxsidebar ul li { + padding: 1px 0; +} + +/* A little left-padding to make these align with the ULs */ +div.sphinxsidebar p.topless { + padding-left: 0 0 0 1em; +} + +/* Make these into hidden one-liners */ +div.sphinxsidebar ul li, +div.sphinxsidebar p.topless { + white-space: nowrap; + overflow: hidden; +} +/* ...which become visible when hovered */ +div.sphinxsidebar ul li:hover, +div.sphinxsidebar p.topless:hover { + overflow: visible; +} + +/* Search text box and "Go" button */ +#searchbox { + margin-top: 2em; + margin-bottom: 1em; + background: #dddddd; + padding: 0.5em; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} +#searchbox h3 { + margin-top: 0; +} + +/* Make search box and button abut and have a border */ +input, +div.sphinxsidebar input { + border: 1px solid #999999; + float: left; +} + +/* Search textbox */ +input[type="text"] { + margin: 0; + padding: 0 3px; + height: 20px; + width: 144px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; +} +/* Search button */ +input[type="submit"] { + margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ + height: 22px; + color: #444444; + background-color: #e8ecef; + padding: 1px 4px; + font-weight: bold; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; +} +input[type="submit"]:hover { + color: #ffffff; + background-color: #8ecc4c; +} + +div.sphinxsidebar p.searchtip { + clear: both; + padding: 0.5em 0 0 0; + background: #dddddd; + color: #666666; + font-size: 0.9em; +} + +/* Sidebar links are unusual */ +div.sphinxsidebar li a, +div.sphinxsidebar p a { + background: #e8ecef; /* In case links overlap main content */ + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border: 1px solid transparent; /* To prevent things jumping around on hover */ + padding: 0 5px 0 5px; +} +div.sphinxsidebar li a:hover, +div.sphinxsidebar p a:hover { + color: #111111; + text-decoration: none; + border: 1px solid #888888; +} + +/* Tweak any link appearing in a heading */ +div.sphinxsidebar h3 a { +} + + + + +/* OTHER STUFF ------------------------------------------------------------ */ + +cite, code, tt { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.01em; +} + +tt { + background-color: ; + color: #444444; +} + +tt.descname, tt.descclassname, tt.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +pre, #_fontwidthtest { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + margin: 1em 2em; + font-size: 0.95em; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid #cccccc; + background-color: ; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 2px 7px; + border: 1px solid #cccccc; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + + +/* ADMONITIONS AND WARNINGS ------------------------------------------------- */ + +/* Shared by admonitions, warnings and sidebars */ +div.admonition, +div.warning, +div.sidebar { + font-size: 0.9em; + margin: 2em; + padding: 0; + /* + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + */ +} +div.admonition p, +div.warning p, +div.sidebar p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} +div.admonition pre, +div.warning pre, +div.sidebar pre { + margin: 0.4em 1em 0.4em 1em; +} +div.admonition p.admonition-title, +div.warning p.admonition-title, +div.sidebar p.sidebar-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + font-weight: bold; + font-size: 1.1em; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); +} +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol, +div.sidebar ul, div.sidebar ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + + +/* Admonitions and sidebars only */ +div.admonition, div.sidebar { + border: 1px solid #609060; + background-color: #e9ffe9; +} +div.admonition p.admonition-title, +div.sidebar p.sidebar-title { + background-color: #70a070; + border-bottom: 1px solid #609060; +} + + +/* Warnings only */ +div.warning { + border: 1px solid #900000; + background-color: #ffe9e9; +} +div.warning p.admonition-title { + background-color: #b04040; + border-bottom: 1px solid #900000; +} + + +/* Sidebars only */ +div.sidebar { + max-width: 200px; +} + + + +div.versioninfo { + margin: 1em 0 0 0; + border: 1px solid #cccccc; + background-color: #DDEAF0; + padding: 8px; + line-height: 1.3em; + font-size: 0.9em; +} + +.viewcode-back { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +dl { + margin: 1em 0 2.5em 0; +} + +/* Highlight target when you click an internal link */ +dt:target { + background: #ffe080; +} +/* Don't highlight whole divs */ +div.highlight { + background: transparent; +} +/* But do highlight spans (so search results can be highlighted) */ +span.highlight { + background: #ffe080; +} + +div.footer { + background-color: #465158; + color: #eeeeee; + padding: 0 2em 2em 2em; + clear: both; + font-size: 0.8em; + text-align: center; +} + +p { + margin: 0.8em 0 0.5em 0; +} + +.section p img { + margin: 1em 2em; +} + + +/* MOBILE LAYOUT -------------------------------------------------------------- */ + +@media screen and (max-width: 600px) { + + h1, h2, h3, h4, h5 { + position: relative; + } + + ul { + padding-left: 1.75em; + } + + div.bodywrapper a.headerlink, #indices-and-tables h1 a { + color: #e6e6e6; + font-size: 80%; + float: right; + line-height: 1.8; + position: absolute; + right: -0.7em; + visibility: inherit; + } + + div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { + line-height: 1.5; + } + + pre { + font-size: 0.7em; + overflow: auto; + word-wrap: break-word; + white-space: pre-wrap; + } + + div.related ul { + height: 2.5em; + padding: 0; + text-align: left; + } + + div.related ul li { + clear: both; + color: #465158; + padding: 0.2em 0; + } + + div.related ul li:last-child { + border-bottom: 1px dotted #8ca1af; + padding-bottom: 0.4em; + margin-bottom: 1em; + width: 100%; + } + + div.related ul li a { + color: #465158; + padding-right: 0; + } + + div.related ul li a:hover { + background: inherit; + color: inherit; + } + + div.related ul li.right { + clear: none; + padding: 0.65em 0; + margin-bottom: 0.5em; + } + + div.related ul li.right a { + color: #ffffff; + padding-right: 0.8em; + } + + div.related ul li.right a:hover { + background-color: #8ca1af; + } + + div.body { + clear: both; + min-width: 0; + word-wrap: break-word; + } + + div.bodywrapper { + margin: 0 0 0 0; + } + + div.sphinxsidebar { + float: none; + margin: 0; + width: auto; + } + + div.sphinxsidebar input[type="text"] { + height: 2em; + line-height: 2em; + width: 70%; + } + + div.sphinxsidebar input[type="submit"] { + height: 2em; + margin-left: 0.5em; + width: 20%; + } + + div.sphinxsidebar p.searchtip { + background: inherit; + margin-bottom: 1em; + } + + div.sphinxsidebar ul li, div.sphinxsidebar p.topless { + white-space: normal; + } + + .bodywrapper img { + display: block; + margin-left: auto; + margin-right: auto; + max-width: 100%; + } + + div.documentwrapper { + float: none; + } + + div.admonition, div.warning, pre, blockquote { + margin-left: 0em; + margin-right: 0em; + } + + .body p img { + margin: 0; + } + + #searchbox { + background: transparent; + } + + .related:not(:first-child) li { + display: none; + } + + .related:not(:first-child) li.right { + display: block; + } + + div.footer { + padding: 1em; + } + + .rtd_doc_footer .badge { + float: none; + margin: 1em auto; + position: static; + } + + .rtd_doc_footer .badge.revsys-inline { + margin-right: auto; + margin-bottom: 2em; + } + + table.indextable { + display: block; + width: auto; + } + + .indextable tr { + display: block; + } + + .indextable td { + display: block; + padding: 0; + width: auto !important; + } + + .indextable td dt { + margin: 1em 0; + } + + ul.search { + margin-left: 0.25em; + } + + ul.search li div.context { + font-size: 90%; + line-height: 1.1; + margin-bottom: 1; + margin-left: 0; + } + +} \ No newline at end of file diff --git a/docs/_build/html/_static/searchtools.js b/docs/_build/html/_static/searchtools.js new file mode 100644 index 0000000000000000000000000000000000000000..663be4c909bac88c941735e8af0a223fc0743198 --- /dev/null +++ b/docs/_build/html/_static/searchtools.js @@ -0,0 +1,560 @@ +/* + * searchtools.js_t + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for the full-text search. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words, hlwords is the list of normal, unstemmed + * words. the first one is used to find the occurance, the + * latter for highlighting it. + */ + +jQuery.makeSearchSummary = function(text, keywords, hlwords) { + var textLower = text.toLowerCase(); + var start = 0; + $.each(keywords, function() { + var i = textLower.indexOf(this.toLowerCase()); + if (i > -1) + start = i; + }); + start = Math.max(start - 120, 0); + var excerpt = ((start > 0) ? '...' : '') + + $.trim(text.substr(start, 240)) + + ((start + 240 - text.length) ? '...' : ''); + var rv = $('<div class="context"></div>').text(excerpt); + $.each(hlwords, function() { + rv = rv.highlightText(this, 'highlighted'); + }); + return rv; +} + + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, success: null, + dataType: "script", cache: true}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (var i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out); + this.dots = $('<span></span>').appendTo(this.title); + this.status = $('<p style="display: none"></p>').appendTo(this.out); + this.output = $('<ul class="search"/>').appendTo(this.out); + + $('#search-progress').text(_('Preparing search...')); + this.startPulse(); + + // index already loaded, the browser was quick! + if (this.hasIndex()) + this.query(query); + else + this.deferQuery(query); + }, + + query : function(query) { + var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"]; + + // Stem the searchterms and add them to the correct list + var stemmer = new Stemmer(); + var searchterms = []; + var excluded = []; + var hlterms = []; + var tmp = query.split(/\s+/); + var objectterms = []; + for (var i = 0; i < tmp.length; i++) { + if (tmp[i] != "") { + objectterms.push(tmp[i].toLowerCase()); + } + + if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) || + tmp[i] == "") { + // skip this "word" + continue; + } + // stem the word + var word = stemmer.stemWord(tmp[i]).toLowerCase(); + // select the correct list + if (word[0] == '-') { + var toAppend = excluded; + word = word.substr(1); + } + else { + var toAppend = searchterms; + hlterms.push(tmp[i].toLowerCase()); + } + // only add if not already in the list + if (!$.contains(toAppend, word)) + toAppend.push(word); + }; + var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" ")); + + // console.debug('SEARCH: searching for:'); + // console.info('required: ', searchterms); + // console.info('excluded: ', excluded); + + // prepare search + var filenames = this._index.filenames; + var titles = this._index.titles; + var terms = this._index.terms; + var fileMap = {}; + var files = null; + // different result priorities + var importantResults = []; + var objectResults = []; + var regularResults = []; + var unimportantResults = []; + $('#search-progress').empty(); + + // lookup as object + for (var i = 0; i < objectterms.length; i++) { + var others = [].concat(objectterms.slice(0,i), + objectterms.slice(i+1, objectterms.length)) + var results = this.performObjectSearch(objectterms[i], others); + // Assume first word is most likely to be the object, + // other words more likely to be in description. + // Therefore put matches for earlier words first. + // (Results are eventually used in reverse order). + objectResults = results[0].concat(objectResults); + importantResults = results[1].concat(importantResults); + unimportantResults = results[2].concat(unimportantResults); + } + + // perform the search on the required terms + for (var i = 0; i < searchterms.length; i++) { + var word = searchterms[i]; + // no match but word was a required one + if ((files = terms[word]) == null) + break; + if (files.length == undefined) { + files = [files]; + } + // create the mapping + for (var j = 0; j < files.length; j++) { + var file = files[j]; + if (file in fileMap) + fileMap[file].push(word); + else + fileMap[file] = [word]; + } + } + + // now check if the files don't contain excluded terms + for (var file in fileMap) { + var valid = true; + + // check if all requirements are matched + if (fileMap[file].length != searchterms.length) + continue; + + // ensure that none of the excluded terms is in the + // search result. + for (var i = 0; i < excluded.length; i++) { + if (terms[excluded[i]] == file || + $.contains(terms[excluded[i]] || [], file)) { + valid = false; + break; + } + } + + // if we have still a valid result we can add it + // to the result list + if (valid) + regularResults.push([filenames[file], titles[file], '', null]); + } + + // delete unused variables in order to not waste + // memory until list is retrieved completely + delete filenames, titles, terms; + + // now sort the regular results descending by title + regularResults.sort(function(a, b) { + var left = a[1].toLowerCase(); + var right = b[1].toLowerCase(); + return (left > right) ? -1 : ((left < right) ? 1 : 0); + }); + + // combine all results + var results = unimportantResults.concat(regularResults) + .concat(objectResults).concat(importantResults); + + // print the results + var resultCount = results.length; + function displayNextItem() { + // results left, load the summary and display it + if (results.length) { + var item = results.pop(); + var listItem = $('<li style="display:none"></li>'); + if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') { + // dirhtml builder + var dirname = item[0] + '/'; + if (dirname.match(/\/index\/$/)) { + dirname = dirname.substring(0, dirname.length-6); + } else if (dirname == 'index/') { + dirname = ''; + } + listItem.append($('<a/>').attr('href', + DOCUMENTATION_OPTIONS.URL_ROOT + dirname + + highlightstring + item[2]).html(item[1])); + } else { + // normal html builders + listItem.append($('<a/>').attr('href', + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX + + highlightstring + item[2]).html(item[1])); + } + if (item[3]) { + listItem.append($('<span> (' + item[3] + ')</span>')); + Search.output.append(listItem); + listItem.slideDown(5, function() { + displayNextItem(); + }); + } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { + $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + + item[0] + '.txt', function(data) { + if (data != '') { + listItem.append($.makeSearchSummary(data, searchterms, hlterms)); + Search.output.append(listItem); + } + listItem.slideDown(5, function() { + displayNextItem(); + }); + }, "text"); + } else { + // no source available, just display title + Search.output.append(listItem); + listItem.slideDown(5, function() { + displayNextItem(); + }); + } + } + // search finished, update title and status message + else { + Search.stopPulse(); + Search.title.text(_('Search Results')); + if (!resultCount) + Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.')); + else + Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount)); + Search.status.fadeIn(500); + } + } + displayNextItem(); + }, + + performObjectSearch : function(object, otherterms) { + var filenames = this._index.filenames; + var objects = this._index.objects; + var objnames = this._index.objnames; + var titles = this._index.titles; + + var importantResults = []; + var objectResults = []; + var unimportantResults = []; + + for (var prefix in objects) { + for (var name in objects[prefix]) { + var fullname = (prefix ? prefix + '.' : '') + name; + if (fullname.toLowerCase().indexOf(object) > -1) { + var match = objects[prefix][name]; + var objname = objnames[match[1]][2]; + var title = titles[match[0]]; + // If more than one term searched for, we require other words to be + // found in the name/title/description + if (otherterms.length > 0) { + var haystack = (prefix + ' ' + name + ' ' + + objname + ' ' + title).toLowerCase(); + var allfound = true; + for (var i = 0; i < otherterms.length; i++) { + if (haystack.indexOf(otherterms[i]) == -1) { + allfound = false; + break; + } + } + if (!allfound) { + continue; + } + } + var descr = objname + _(', in ') + title; + anchor = match[3]; + if (anchor == '') + anchor = fullname; + else if (anchor == '-') + anchor = objnames[match[1]][1] + '-' + fullname; + result = [filenames[match[0]], fullname, '#'+anchor, descr]; + switch (match[2]) { + case 1: objectResults.push(result); break; + case 0: importantResults.push(result); break; + case 2: unimportantResults.push(result); break; + } + } + } + } + + // sort results descending + objectResults.sort(function(a, b) { + return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); + }); + + importantResults.sort(function(a, b) { + return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); + }); + + unimportantResults.sort(function(a, b) { + return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0); + }); + + return [importantResults, objectResults, unimportantResults] + } +} + +$(document).ready(function() { + Search.init(); +}); \ No newline at end of file diff --git a/docs/_build/html/_static/sidebar.js b/docs/_build/html/_static/sidebar.js new file mode 100644 index 0000000000000000000000000000000000000000..a45e1926addf0b96c1cf0180287763bbece82960 --- /dev/null +++ b/docs/_build/html/_static/sidebar.js @@ -0,0 +1,151 @@ +/* + * sidebar.js + * ~~~~~~~~~~ + * + * This script makes the Sphinx sidebar collapsible. + * + * .sphinxsidebar contains .sphinxsidebarwrapper. This script adds + * in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton + * used to collapse and expand the sidebar. + * + * When the sidebar is collapsed the .sphinxsidebarwrapper is hidden + * and the width of the sidebar and the margin-left of the document + * are decreased. When the sidebar is expanded the opposite happens. + * This script saves a per-browser/per-session cookie used to + * remember the position of the sidebar among the pages. + * Once the browser is closed the cookie is deleted and the position + * reset to the default (expanded). + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +$(function() { + // global elements used by the functions. + // the 'sidebarbutton' element is defined as global after its + // creation, in the add_sidebar_button function + var bodywrapper = $('.bodywrapper'); + var sidebar = $('.sphinxsidebar'); + var sidebarwrapper = $('.sphinxsidebarwrapper'); + + // for some reason, the document has no sidebar; do not run into errors + if (!sidebar.length) return; + + // original margin-left of the bodywrapper and width of the sidebar + // with the sidebar expanded + var bw_margin_expanded = bodywrapper.css('margin-left'); + var ssb_width_expanded = sidebar.width(); + + // margin-left of the bodywrapper and width of the sidebar + // with the sidebar collapsed + var bw_margin_collapsed = '.8em'; + var ssb_width_collapsed = '.8em'; + + // colors used by the current theme + var dark_color = $('.related').css('background-color'); + var light_color = $('.document').css('background-color'); + + function sidebar_is_collapsed() { + return sidebarwrapper.is(':not(:visible)'); + } + + function toggle_sidebar() { + if (sidebar_is_collapsed()) + expand_sidebar(); + else + collapse_sidebar(); + } + + function collapse_sidebar() { + sidebarwrapper.hide(); + sidebar.css('width', ssb_width_collapsed); + bodywrapper.css('margin-left', bw_margin_collapsed); + sidebarbutton.css({ + 'margin-left': '0', + 'height': bodywrapper.height() + }); + sidebarbutton.find('span').text('»'); + sidebarbutton.attr('title', _('Expand sidebar')); + document.cookie = 'sidebar=collapsed'; + } + + function expand_sidebar() { + bodywrapper.css('margin-left', bw_margin_expanded); + sidebar.css('width', ssb_width_expanded); + sidebarwrapper.show(); + sidebarbutton.css({ + 'margin-left': ssb_width_expanded-12, + 'height': bodywrapper.height() + }); + sidebarbutton.find('span').text('«'); + sidebarbutton.attr('title', _('Collapse sidebar')); + document.cookie = 'sidebar=expanded'; + } + + function add_sidebar_button() { + sidebarwrapper.css({ + 'float': 'left', + 'margin-right': '0', + 'width': ssb_width_expanded - 28 + }); + // create the button + sidebar.append( + '<div id="sidebarbutton"><span>«</span></div>' + ); + var sidebarbutton = $('#sidebarbutton'); + light_color = sidebarbutton.css('background-color'); + // find the height of the viewport to center the '<<' in the page + var viewport_height; + if (window.innerHeight) + viewport_height = window.innerHeight; + else + viewport_height = $(window).height(); + sidebarbutton.find('span').css({ + 'display': 'block', + 'margin-top': (viewport_height - sidebar.position().top - 20) / 2 + }); + + sidebarbutton.click(toggle_sidebar); + sidebarbutton.attr('title', _('Collapse sidebar')); + sidebarbutton.css({ + 'color': '#FFFFFF', + 'border-left': '1px solid ' + dark_color, + 'font-size': '1.2em', + 'cursor': 'pointer', + 'height': bodywrapper.height(), + 'padding-top': '1px', + 'margin-left': ssb_width_expanded - 12 + }); + + sidebarbutton.hover( + function () { + $(this).css('background-color', dark_color); + }, + function () { + $(this).css('background-color', light_color); + } + ); + } + + function set_position_from_cookie() { + if (!document.cookie) + return; + var items = document.cookie.split(';'); + for(var k=0; k<items.length; k++) { + var key_val = items[k].split('='); + var key = key_val[0]; + if (key == 'sidebar') { + var value = key_val[1]; + if ((value == 'collapsed') && (!sidebar_is_collapsed())) + collapse_sidebar(); + else if ((value == 'expanded') && (sidebar_is_collapsed())) + expand_sidebar(); + } + } + } + + add_sidebar_button(); + var sidebarbutton = $('#sidebarbutton'); + set_position_from_cookie(); +}); diff --git a/docs/_build/html/_static/underscore.js b/docs/_build/html/_static/underscore.js new file mode 100644 index 0000000000000000000000000000000000000000..5d89914340fd27e98f727d4c3844caca261fa261 --- /dev/null +++ b/docs/_build/html/_static/underscore.js @@ -0,0 +1,23 @@ +// Underscore.js 0.5.5 +// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc. +// Underscore is freely distributable under the terms of the MIT license. +// Portions of Underscore are inspired by or borrowed from Prototype.js, +// Oliver Steele's Functional, and John Resig's Micro-Templating. +// For all details and documentation: +// http://documentcloud.github.com/underscore/ +(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d, +a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c); +var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c, +d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck= +function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a, +function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a, +0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d, +e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d= +a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)}); +return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length); +var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false; +if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length== +0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&& +a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g, +" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments); +o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})(); diff --git a/docs/_build/html/_static/up-pressed.png b/docs/_build/html/_static/up-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd587afee2fe38989383ff82010147ea56b93dd Binary files /dev/null and b/docs/_build/html/_static/up-pressed.png differ diff --git a/docs/_build/html/_static/up.png b/docs/_build/html/_static/up.png new file mode 100644 index 0000000000000000000000000000000000000000..b94625680b4a4b9647c3a6f3f283776930696aa9 Binary files /dev/null and b/docs/_build/html/_static/up.png differ diff --git a/docs/_build/html/_static/websupport.js b/docs/_build/html/_static/websupport.js new file mode 100644 index 0000000000000000000000000000000000000000..e9bd1b851c62bf625a2cac10d8da09526c440373 --- /dev/null +++ b/docs/_build/html/_static/websupport.js @@ -0,0 +1,808 @@ +/* + * websupport.js + * ~~~~~~~~~~~~~ + * + * sphinx.websupport utilties for all documentation. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +(function($) { + $.fn.autogrow = function() { + return this.each(function() { + var textarea = this; + + $.fn.autogrow.resize(textarea); + + $(textarea) + .focus(function() { + textarea.interval = setInterval(function() { + $.fn.autogrow.resize(textarea); + }, 500); + }) + .blur(function() { + clearInterval(textarea.interval); + }); + }); + }; + + $.fn.autogrow.resize = function(textarea) { + var lineHeight = parseInt($(textarea).css('line-height'), 10); + var lines = textarea.value.split('\n'); + var columns = textarea.cols; + var lineCount = 0; + $.each(lines, function() { + lineCount += Math.ceil(this.length / columns) || 1; + }); + var height = lineHeight * (lineCount + 1); + $(textarea).css('height', height); + }; +})(jQuery); + +(function($) { + var comp, by; + + function init() { + initEvents(); + initComparator(); + } + + function initEvents() { + $('a.comment-close').live("click", function(event) { + event.preventDefault(); + hide($(this).attr('id').substring(2)); + }); + $('a.vote').live("click", function(event) { + event.preventDefault(); + handleVote($(this)); + }); + $('a.reply').live("click", function(event) { + event.preventDefault(); + openReply($(this).attr('id').substring(2)); + }); + $('a.close-reply').live("click", function(event) { + event.preventDefault(); + closeReply($(this).attr('id').substring(2)); + }); + $('a.sort-option').live("click", function(event) { + event.preventDefault(); + handleReSort($(this)); + }); + $('a.show-proposal').live("click", function(event) { + event.preventDefault(); + showProposal($(this).attr('id').substring(2)); + }); + $('a.hide-proposal').live("click", function(event) { + event.preventDefault(); + hideProposal($(this).attr('id').substring(2)); + }); + $('a.show-propose-change').live("click", function(event) { + event.preventDefault(); + showProposeChange($(this).attr('id').substring(2)); + }); + $('a.hide-propose-change').live("click", function(event) { + event.preventDefault(); + hideProposeChange($(this).attr('id').substring(2)); + }); + $('a.accept-comment').live("click", function(event) { + event.preventDefault(); + acceptComment($(this).attr('id').substring(2)); + }); + $('a.delete-comment').live("click", function(event) { + event.preventDefault(); + deleteComment($(this).attr('id').substring(2)); + }); + $('a.comment-markup').live("click", function(event) { + event.preventDefault(); + toggleCommentMarkupBox($(this).attr('id').substring(2)); + }); + } + + /** + * Set comp, which is a comparator function used for sorting and + * inserting comments into the list. + */ + function setComparator() { + // If the first three letters are "asc", sort in ascending order + // and remove the prefix. + if (by.substring(0,3) == 'asc') { + var i = by.substring(3); + comp = function(a, b) { return a[i] - b[i]; }; + } else { + // Otherwise sort in descending order. + comp = function(a, b) { return b[by] - a[by]; }; + } + + // Reset link styles and format the selected sort option. + $('a.sel').attr('href', '#').removeClass('sel'); + $('a.by' + by).removeAttr('href').addClass('sel'); + } + + /** + * Create a comp function. If the user has preferences stored in + * the sortBy cookie, use those, otherwise use the default. + */ + function initComparator() { + by = 'rating'; // Default to sort by rating. + // If the sortBy cookie is set, use that instead. + if (document.cookie.length > 0) { + var start = document.cookie.indexOf('sortBy='); + if (start != -1) { + start = start + 7; + var end = document.cookie.indexOf(";", start); + if (end == -1) { + end = document.cookie.length; + by = unescape(document.cookie.substring(start, end)); + } + } + } + setComparator(); + } + + /** + * Show a comment div. + */ + function show(id) { + $('#ao' + id).hide(); + $('#ah' + id).show(); + var context = $.extend({id: id}, opts); + var popup = $(renderTemplate(popupTemplate, context)).hide(); + popup.find('textarea[name="proposal"]').hide(); + popup.find('a.by' + by).addClass('sel'); + var form = popup.find('#cf' + id); + form.submit(function(event) { + event.preventDefault(); + addComment(form); + }); + $('#s' + id).after(popup); + popup.slideDown('fast', function() { + getComments(id); + }); + } + + /** + * Hide a comment div. + */ + function hide(id) { + $('#ah' + id).hide(); + $('#ao' + id).show(); + var div = $('#sc' + id); + div.slideUp('fast', function() { + div.remove(); + }); + } + + /** + * Perform an ajax request to get comments for a node + * and insert the comments into the comments tree. + */ + function getComments(id) { + $.ajax({ + type: 'GET', + url: opts.getCommentsURL, + data: {node: id}, + success: function(data, textStatus, request) { + var ul = $('#cl' + id); + var speed = 100; + $('#cf' + id) + .find('textarea[name="proposal"]') + .data('source', data.source); + + if (data.comments.length === 0) { + ul.html('<li>No comments yet.</li>'); + ul.data('empty', true); + } else { + // If there are comments, sort them and put them in the list. + var comments = sortComments(data.comments); + speed = data.comments.length * 100; + appendComments(comments, ul); + ul.data('empty', false); + } + $('#cn' + id).slideUp(speed + 200); + ul.slideDown(speed); + }, + error: function(request, textStatus, error) { + showError('Oops, there was a problem retrieving the comments.'); + }, + dataType: 'json' + }); + } + + /** + * Add a comment via ajax and insert the comment into the comment tree. + */ + function addComment(form) { + var node_id = form.find('input[name="node"]').val(); + var parent_id = form.find('input[name="parent"]').val(); + var text = form.find('textarea[name="comment"]').val(); + var proposal = form.find('textarea[name="proposal"]').val(); + + if (text == '') { + showError('Please enter a comment.'); + return; + } + + // Disable the form that is being submitted. + form.find('textarea,input').attr('disabled', 'disabled'); + + // Send the comment to the server. + $.ajax({ + type: "POST", + url: opts.addCommentURL, + dataType: 'json', + data: { + node: node_id, + parent: parent_id, + text: text, + proposal: proposal + }, + success: function(data, textStatus, error) { + // Reset the form. + if (node_id) { + hideProposeChange(node_id); + } + form.find('textarea') + .val('') + .add(form.find('input')) + .removeAttr('disabled'); + var ul = $('#cl' + (node_id || parent_id)); + if (ul.data('empty')) { + $(ul).empty(); + ul.data('empty', false); + } + insertComment(data.comment); + var ao = $('#ao' + node_id); + ao.find('img').attr({'src': opts.commentBrightImage}); + if (node_id) { + // if this was a "root" comment, remove the commenting box + // (the user can get it back by reopening the comment popup) + $('#ca' + node_id).slideUp(); + } + }, + error: function(request, textStatus, error) { + form.find('textarea,input').removeAttr('disabled'); + showError('Oops, there was a problem adding the comment.'); + } + }); + } + + /** + * Recursively append comments to the main comment list and children + * lists, creating the comment tree. + */ + function appendComments(comments, ul) { + $.each(comments, function() { + var div = createCommentDiv(this); + ul.append($(document.createElement('li')).html(div)); + appendComments(this.children, div.find('ul.comment-children')); + // To avoid stagnating data, don't store the comments children in data. + this.children = null; + div.data('comment', this); + }); + } + + /** + * After adding a new comment, it must be inserted in the correct + * location in the comment tree. + */ + function insertComment(comment) { + var div = createCommentDiv(comment); + + // To avoid stagnating data, don't store the comments children in data. + comment.children = null; + div.data('comment', comment); + + var ul = $('#cl' + (comment.node || comment.parent)); + var siblings = getChildren(ul); + + var li = $(document.createElement('li')); + li.hide(); + + // Determine where in the parents children list to insert this comment. + for(i=0; i < siblings.length; i++) { + if (comp(comment, siblings[i]) <= 0) { + $('#cd' + siblings[i].id) + .parent() + .before(li.html(div)); + li.slideDown('fast'); + return; + } + } + + // If we get here, this comment rates lower than all the others, + // or it is the only comment in the list. + ul.append(li.html(div)); + li.slideDown('fast'); + } + + function acceptComment(id) { + $.ajax({ + type: 'POST', + url: opts.acceptCommentURL, + data: {id: id}, + success: function(data, textStatus, request) { + $('#cm' + id).fadeOut('fast'); + $('#cd' + id).removeClass('moderate'); + }, + error: function(request, textStatus, error) { + showError('Oops, there was a problem accepting the comment.'); + } + }); + } + + function deleteComment(id) { + $.ajax({ + type: 'POST', + url: opts.deleteCommentURL, + data: {id: id}, + success: function(data, textStatus, request) { + var div = $('#cd' + id); + if (data == 'delete') { + // Moderator mode: remove the comment and all children immediately + div.slideUp('fast', function() { + div.remove(); + }); + return; + } + // User mode: only mark the comment as deleted + div + .find('span.user-id:first') + .text('[deleted]').end() + .find('div.comment-text:first') + .text('[deleted]').end() + .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id + + ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id) + .remove(); + var comment = div.data('comment'); + comment.username = '[deleted]'; + comment.text = '[deleted]'; + div.data('comment', comment); + }, + error: function(request, textStatus, error) { + showError('Oops, there was a problem deleting the comment.'); + } + }); + } + + function showProposal(id) { + $('#sp' + id).hide(); + $('#hp' + id).show(); + $('#pr' + id).slideDown('fast'); + } + + function hideProposal(id) { + $('#hp' + id).hide(); + $('#sp' + id).show(); + $('#pr' + id).slideUp('fast'); + } + + function showProposeChange(id) { + $('#pc' + id).hide(); + $('#hc' + id).show(); + var textarea = $('#pt' + id); + textarea.val(textarea.data('source')); + $.fn.autogrow.resize(textarea[0]); + textarea.slideDown('fast'); + } + + function hideProposeChange(id) { + $('#hc' + id).hide(); + $('#pc' + id).show(); + var textarea = $('#pt' + id); + textarea.val('').removeAttr('disabled'); + textarea.slideUp('fast'); + } + + function toggleCommentMarkupBox(id) { + $('#mb' + id).toggle(); + } + + /** Handle when the user clicks on a sort by link. */ + function handleReSort(link) { + var classes = link.attr('class').split(/\s+/); + for (var i=0; i<classes.length; i++) { + if (classes[i] != 'sort-option') { + by = classes[i].substring(2); + } + } + setComparator(); + // Save/update the sortBy cookie. + var expiration = new Date(); + expiration.setDate(expiration.getDate() + 365); + document.cookie= 'sortBy=' + escape(by) + + ';expires=' + expiration.toUTCString(); + $('ul.comment-ul').each(function(index, ul) { + var comments = getChildren($(ul), true); + comments = sortComments(comments); + appendComments(comments, $(ul).empty()); + }); + } + + /** + * Function to process a vote when a user clicks an arrow. + */ + function handleVote(link) { + if (!opts.voting) { + showError("You'll need to login to vote."); + return; + } + + var id = link.attr('id'); + if (!id) { + // Didn't click on one of the voting arrows. + return; + } + // If it is an unvote, the new vote value is 0, + // Otherwise it's 1 for an upvote, or -1 for a downvote. + var value = 0; + if (id.charAt(1) != 'u') { + value = id.charAt(0) == 'u' ? 1 : -1; + } + // The data to be sent to the server. + var d = { + comment_id: id.substring(2), + value: value + }; + + // Swap the vote and unvote links. + link.hide(); + $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id) + .show(); + + // The div the comment is displayed in. + var div = $('div#cd' + d.comment_id); + var data = div.data('comment'); + + // If this is not an unvote, and the other vote arrow has + // already been pressed, unpress it. + if ((d.value !== 0) && (data.vote === d.value * -1)) { + $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide(); + $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show(); + } + + // Update the comments rating in the local data. + data.rating += (data.vote === 0) ? d.value : (d.value - data.vote); + data.vote = d.value; + div.data('comment', data); + + // Change the rating text. + div.find('.rating:first') + .text(data.rating + ' point' + (data.rating == 1 ? '' : 's')); + + // Send the vote information to the server. + $.ajax({ + type: "POST", + url: opts.processVoteURL, + data: d, + error: function(request, textStatus, error) { + showError('Oops, there was a problem casting that vote.'); + } + }); + } + + /** + * Open a reply form used to reply to an existing comment. + */ + function openReply(id) { + // Swap out the reply link for the hide link + $('#rl' + id).hide(); + $('#cr' + id).show(); + + // Add the reply li to the children ul. + var div = $(renderTemplate(replyTemplate, {id: id})).hide(); + $('#cl' + id) + .prepend(div) + // Setup the submit handler for the reply form. + .find('#rf' + id) + .submit(function(event) { + event.preventDefault(); + addComment($('#rf' + id)); + closeReply(id); + }) + .find('input[type=button]') + .click(function() { + closeReply(id); + }); + div.slideDown('fast', function() { + $('#rf' + id).find('textarea').focus(); + }); + } + + /** + * Close the reply form opened with openReply. + */ + function closeReply(id) { + // Remove the reply div from the DOM. + $('#rd' + id).slideUp('fast', function() { + $(this).remove(); + }); + + // Swap out the hide link for the reply link + $('#cr' + id).hide(); + $('#rl' + id).show(); + } + + /** + * Recursively sort a tree of comments using the comp comparator. + */ + function sortComments(comments) { + comments.sort(comp); + $.each(comments, function() { + this.children = sortComments(this.children); + }); + return comments; + } + + /** + * Get the children comments from a ul. If recursive is true, + * recursively include childrens' children. + */ + function getChildren(ul, recursive) { + var children = []; + ul.children().children("[id^='cd']") + .each(function() { + var comment = $(this).data('comment'); + if (recursive) + comment.children = getChildren($(this).find('#cl' + comment.id), true); + children.push(comment); + }); + return children; + } + + /** Create a div to display a comment in. */ + function createCommentDiv(comment) { + if (!comment.displayed && !opts.moderator) { + return $('<div class="moderate">Thank you! Your comment will show up ' + + 'once it is has been approved by a moderator.</div>'); + } + // Prettify the comment rating. + comment.pretty_rating = comment.rating + ' point' + + (comment.rating == 1 ? '' : 's'); + // Make a class (for displaying not yet moderated comments differently) + comment.css_class = comment.displayed ? '' : ' moderate'; + // Create a div for this comment. + var context = $.extend({}, opts, comment); + var div = $(renderTemplate(commentTemplate, context)); + + // If the user has voted on this comment, highlight the correct arrow. + if (comment.vote) { + var direction = (comment.vote == 1) ? 'u' : 'd'; + div.find('#' + direction + 'v' + comment.id).hide(); + div.find('#' + direction + 'u' + comment.id).show(); + } + + if (opts.moderator || comment.text != '[deleted]') { + div.find('a.reply').show(); + if (comment.proposal_diff) + div.find('#sp' + comment.id).show(); + if (opts.moderator && !comment.displayed) + div.find('#cm' + comment.id).show(); + if (opts.moderator || (opts.username == comment.username)) + div.find('#dc' + comment.id).show(); + } + return div; + } + + /** + * A simple template renderer. Placeholders such as <%id%> are replaced + * by context['id'] with items being escaped. Placeholders such as <#id#> + * are not escaped. + */ + function renderTemplate(template, context) { + var esc = $(document.createElement('div')); + + function handle(ph, escape) { + var cur = context; + $.each(ph.split('.'), function() { + cur = cur[this]; + }); + return escape ? esc.text(cur || "").html() : cur; + } + + return template.replace(/<([%#])([\w\.]*)\1>/g, function() { + return handle(arguments[2], arguments[1] == '%' ? true : false); + }); + } + + /** Flash an error message briefly. */ + function showError(message) { + $(document.createElement('div')).attr({'class': 'popup-error'}) + .append($(document.createElement('div')) + .attr({'class': 'error-message'}).text(message)) + .appendTo('body') + .fadeIn("slow") + .delay(2000) + .fadeOut("slow"); + } + + /** Add a link the user uses to open the comments popup. */ + $.fn.comment = function() { + return this.each(function() { + var id = $(this).attr('id').substring(1); + var count = COMMENT_METADATA[id]; + var title = count + ' comment' + (count == 1 ? '' : 's'); + var image = count > 0 ? opts.commentBrightImage : opts.commentImage; + var addcls = count == 0 ? ' nocomment' : ''; + $(this) + .append( + $(document.createElement('a')).attr({ + href: '#', + 'class': 'sphinx-comment-open' + addcls, + id: 'ao' + id + }) + .append($(document.createElement('img')).attr({ + src: image, + alt: 'comment', + title: title + })) + .click(function(event) { + event.preventDefault(); + show($(this).attr('id').substring(2)); + }) + ) + .append( + $(document.createElement('a')).attr({ + href: '#', + 'class': 'sphinx-comment-close hidden', + id: 'ah' + id + }) + .append($(document.createElement('img')).attr({ + src: opts.closeCommentImage, + alt: 'close', + title: 'close' + })) + .click(function(event) { + event.preventDefault(); + hide($(this).attr('id').substring(2)); + }) + ); + }); + }; + + var opts = { + processVoteURL: '/_process_vote', + addCommentURL: '/_add_comment', + getCommentsURL: '/_get_comments', + acceptCommentURL: '/_accept_comment', + deleteCommentURL: '/_delete_comment', + commentImage: '/static/_static/comment.png', + closeCommentImage: '/static/_static/comment-close.png', + loadingImage: '/static/_static/ajax-loader.gif', + commentBrightImage: '/static/_static/comment-bright.png', + upArrow: '/static/_static/up.png', + downArrow: '/static/_static/down.png', + upArrowPressed: '/static/_static/up-pressed.png', + downArrowPressed: '/static/_static/down-pressed.png', + voting: false, + moderator: false + }; + + if (typeof COMMENT_OPTIONS != "undefined") { + opts = jQuery.extend(opts, COMMENT_OPTIONS); + } + + var popupTemplate = '\ + <div class="sphinx-comments" id="sc<%id%>">\ + <p class="sort-options">\ + Sort by:\ + <a href="#" class="sort-option byrating">best rated</a>\ + <a href="#" class="sort-option byascage">newest</a>\ + <a href="#" class="sort-option byage">oldest</a>\ + </p>\ + <div class="comment-header">Comments</div>\ + <div class="comment-loading" id="cn<%id%>">\ + loading comments... <img src="<%loadingImage%>" alt="" /></div>\ + <ul id="cl<%id%>" class="comment-ul"></ul>\ + <div id="ca<%id%>">\ + <p class="add-a-comment">Add a comment\ + (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\ + <div class="comment-markup-box" id="mb<%id%>">\ + reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \ + <tt>``code``</tt>, \ + code blocks: <tt>::</tt> and an indented block after blank line</div>\ + <form method="post" id="cf<%id%>" class="comment-form" action="">\ + <textarea name="comment" cols="80"></textarea>\ + <p class="propose-button">\ + <a href="#" id="pc<%id%>" class="show-propose-change">\ + Propose a change ▹\ + </a>\ + <a href="#" id="hc<%id%>" class="hide-propose-change">\ + Propose a change ▿\ + </a>\ + </p>\ + <textarea name="proposal" id="pt<%id%>" cols="80"\ + spellcheck="false"></textarea>\ + <input type="submit" value="Add comment" />\ + <input type="hidden" name="node" value="<%id%>" />\ + <input type="hidden" name="parent" value="" />\ + </form>\ + </div>\ + </div>'; + + var commentTemplate = '\ + <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\ + <div class="vote">\ + <div class="arrow">\ + <a href="#" id="uv<%id%>" class="vote" title="vote up">\ + <img src="<%upArrow%>" />\ + </a>\ + <a href="#" id="uu<%id%>" class="un vote" title="vote up">\ + <img src="<%upArrowPressed%>" />\ + </a>\ + </div>\ + <div class="arrow">\ + <a href="#" id="dv<%id%>" class="vote" title="vote down">\ + <img src="<%downArrow%>" id="da<%id%>" />\ + </a>\ + <a href="#" id="du<%id%>" class="un vote" title="vote down">\ + <img src="<%downArrowPressed%>" />\ + </a>\ + </div>\ + </div>\ + <div class="comment-content">\ + <p class="tagline comment">\ + <span class="user-id"><%username%></span>\ + <span class="rating"><%pretty_rating%></span>\ + <span class="delta"><%time.delta%></span>\ + </p>\ + <div class="comment-text comment"><#text#></div>\ + <p class="comment-opts comment">\ + <a href="#" class="reply hidden" id="rl<%id%>">reply ▹</a>\ + <a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\ + <a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\ + <a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</a>\ + <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\ + <span id="cm<%id%>" class="moderation hidden">\ + <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\ + </span>\ + </p>\ + <pre class="proposal" id="pr<%id%>">\ +<#proposal_diff#>\ + </pre>\ + <ul class="comment-children" id="cl<%id%>"></ul>\ + </div>\ + <div class="clearleft"></div>\ + </div>\ + </div>'; + + var replyTemplate = '\ + <li>\ + <div class="reply-div" id="rd<%id%>">\ + <form id="rf<%id%>">\ + <textarea name="comment" cols="80"></textarea>\ + <input type="submit" value="Add reply" />\ + <input type="button" value="Cancel" />\ + <input type="hidden" name="parent" value="<%id%>" />\ + <input type="hidden" name="node" value="" />\ + </form>\ + </div>\ + </li>'; + + $(document).ready(function() { + init(); + }); +})(jQuery); + +$(document).ready(function() { + // add comment anchors for all paragraphs that are commentable + $('.sphinx-has-comment').comment(); + + // highlight search words in search results + $("div.context").each(function() { + var params = $.getQueryParameters(); + var terms = (params.q) ? params.q[0].split(/\s+/) : []; + var result = $(this); + $.each(terms, function() { + result.highlightText(this.toLowerCase(), 'highlighted'); + }); + }); + + // directly open comment window if requested + var anchor = document.location.hash; + if (anchor.substring(0, 9) == '#comment-') { + $('#ao' + anchor.substring(9)).click(); + document.location.hash = '#s' + anchor.substring(9); + } +}); diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..f31ecc12cc0f481582c27d23b772de7f01fe64c5 Binary files /dev/null and b/docs/_build/html/objects.inv differ diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js new file mode 100644 index 0000000000000000000000000000000000000000..51d314aad4c188c300f29ca8e56d679cdb01ba4a --- /dev/null +++ b/docs/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({objects:{},terms:{genome_gap:8,represent:[27,23],all:[18,7,8,21,24,30,10,11,2,9,3,23,1,15,25,26,27,5,17,19],code:[27,1,11],breadth:[9,11],illustr:[23,24,31],scratch:11,signific:[26,10],unblock:23,per:[29,9,7,19,11],edu:[27,30,7,11],follow:[30,7,12,1,11,29,9,14,24,4,27,19],alu:[2,21,8],alr:[23,5],ctttgggagggctttgtagcctatctggaaaaaggaaatatcttcccatg:24,compact:23,content:[6,20,11],privat:2,tagcg:12,depend:11,gff:[18,30,31,0,24,12,10,11,29,26,9,23,3,15,25,4,27,16,28],iii:27,intron:[9,7,24,8],slopb:[0,2,20,27,11],greather:7,descript:[0,24,29,3,4,5,7,9,10,11,12,13,14,15,16,17,18,19,22,23,25,26,27,30,31],tail:[13,7],concret:20,fastafromb:[20,12,11],under:11,sens:11,spec:27,introduc:11,"case":[18,20,30,3,5,9,13,14,24,31,23,16,11],sourc:[27,1,11],aaaaaaaaccccccccccccgctactgggggggggggggggggg:3,string:[21,11,23,31,27,17],downstream:[2,16,8,11],without:[18,24,11,29,9,22,31,16],far:24,faq:[27,11],account:27,mous:[27,30,11],faqformat:27,novel:[2,11],mechan:[24,31],upstream:[16,8],join:11,assaf:[7,11],exact:22,relev:[27,15],strand:[18,2,7,8,0,31,12,10,11,29,9,22,24,15,25,26,27,16,17],tri:26,cons1:29,cons2:29,cons3:29,administr:1,complic:11,list:[6,19,21,5,29,9,14,25,26,27,11],"21t14g13":31,previou:11,adjust:11,larg:[30,23,11],sine:[21,8],aaaaannnnnccccccccccgctactgggggggggggggggggg:3,quick:[6,21],bed6:[27,13,17,11],path:15,refer:[2,6,1,11],bedgraph:[8,7,19,11],pleas:[7,11],prevent:[26,27,8],impli:27,work:[27,5,24,11],snapshotdirectori:15,othersampl:2,ten:11,speci:[27,11],rs645678:11,"0x2":[2,17],"500bp":2,among:[26,9,22,11],direct:0,maintain:11,known2:29,zero:[19,11,9,27,17,7],design:11,bed12:[7,24,11,9,13,23,27,17],pass:[7,24,11,9,22,31,27,16],download:[1,11],further:[2,22,11],append:[24,17],slop:[0,15],even:[31,24,11],index:[23,11],what:[29,31,5,24,11],xor:31,appear:2,compar:[19,24,11,29,9,22,31,27,16],filler:19,neg:[0,16,14,11],section:[18,20,7,21,10,11,9,24,25,27,16],brief:6,unsort:24,current:[27,10,11],delet:[2,27,17],version:[27,21,15,1,11],indel:[27,11],intersect:[24,11],"new":[27,12,25,11],net:27,method:[14,17,31],contrast:[16,24,11],redirect:11,full:[15,11],led:11,chose:[27,11],variat:[27,22,11],gener:[26,6,27,17,11],error:26,genet:[27,5,11],decid:11,here:[10,11],disclaim:4,explicitli:[27,5],let:[14,5],splice:[7,24,11,9,23,17],address:27,genea:[29,10],coincid:29,genec:29,modifi:27,sinc:31,interpret:[27,11],unionbedgraph:[20,19,11],either:[8,0,1,11,22,31,27,17],convert:[8,3,11,13,23,24,31,17],produc:26,convers:3,conceiv:27,technolog:11,"6a6t3":24,prior:15,amount:[14,11],behav:[18,25,10,31,26,16],"_all_":9,dcecfeeza:31,typic:[7,21,24,11,9,1,27],gene:[2,8,21,30,10,11,29,9,13,23,24,31,16],commonli:1,promot:16,intern:11,via:[27,11],notbothssr:8,"489m":23,extra:[27,25,10,11],curat:11,appli:[7,15,5],dcdabdfw:24,opcol:5,filenam:15,unix:[7,1,11,9,22,24,31,4,27,16,17],api:11,subtractb:[18,20,8,11],instal:[6,30,21,1,11],total:[7,17,31],establish:27,blockend:[9,7],"1000genom":27,notispan:[2,31],fee:31,from:[0,24,2,3,5,7,8,9,10,11,12,14,15,17,18,21,22,23,25,26,27,29,30,31],describ:[7,21,24,11,29,9,27,19],would:[24,11,13,10,15,31,27,16,28],memori:[4,11],distinct:[24,9,7,17,11],doubl:27,visit:[7,11],two:[31,21,24,11,22,10,25,27,17],coverag:[2,7,8,11,29,9,27,19],next:11,websit:[27,11],few:[27,11],chr:[29,15],doubt:1,call:[2,27,11],usr:[21,1],criteria:[4,24,31],taken:[27,15],pctcov:8,repres:[19,24,11,27,17,7],type:[2,8,11,29,22,15,31,27],exampl:[0,24,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,25,26,27,28,20,30,31],more:[20,8,24,11,9,10,25,4,27],sort:[7,5,15,31,4,11,17],aaaaaaaacccccccccccccgctactgggggggggggggggggg:[12,3],sudo:[21,1],itemrgb:27,comparison:[27,11],detail:[18,7,10,9,15,25,27,16,19],claus:5,e_valu:27,toolkit:11,multibamcov:11,flag:17,exce:0,accept:11,particular:27,known:[26,24],excl:[26,8],given:[31,7,17,5],effort:[20,11],must:[3,5,12,14,15,25,27,11],none:24,word:[16,24,11],notin2:8,monolith:11,local:[30,21,1,11],ubam:[16,31,23,24,11],bedtoigv:[20,15,11],annot:[24,3,5,29,30,23,10,27,16,11,28],cumbersom:11,cat:[18,7,0,24,12,10,11,29,26,9,3,25,4,16,5,28,19],other:[31,19,24,10,5,29,22,14,1,25,4,27,16,11,17],remain:18,minimum:[18,22,24,17,31],nine:27,can:[30,19,24,12,3,5,2,9,10,25,26,27,16,11,17],tabul:9,meet:[18,24,31],purpos:[20,23,17],root:[1,11],scatter:11,problemat:26,control:[7,31,24,11,10,25,27],tab:[27,9,5,12,11],tar:[21,1],scan:[18,16,10,25],predict:27,dcgggggfbgfgdgggggggfdfgggcggggfcggcggggggagfgbggc:31,loci:[26,15,11],share:[24,11],backslash:27,indic:[27,23,24,11],tag:[27,31,17,11],want:[7,30,10,5,24,9,14,1,31,26,27,16,11],dbsnp:2,faqtrack:11,concept:11,gcc:1,shuffleb:[26,20,8,11],multipl:[19,24,11,29,31,27,17],newlin:27,manipul:11,quot:27,cse:11,anoth:[21,24,5,25,26,11],six:[27,13],length:[9,11],chrx:[27,31,24,17,11],write:[24,11,23,31,27,16,17],how:[31,24,11,10,25,27],need:[27,11],mapq:23,reject:11,answer:11,instead:[27,12,16,24],chrm:[27,11],simpl:[7,8],chri:[27,11],collaps:[15,5],map:[23,24,17,31],resourc:27,bedpe_example2:27,bedpe_example1:27,max:[7,5],after:[29,26,9,24],variant:[2,8,5,29,27,11],cbedp:31,lump:7,reflect:12,befor:18,orient:12,snp:[19,8,24,11,2,10,27],mai:[24,11,3,31,26,16,17],end:[2,19,8,0,31,10,11,29,12,22,14,24,25,27,17],ssr:8,data:[8,3,5,2,13,15,27,11],chr7:17,chr6:24,chr5:[27,24,11],chr4:[26,24,31],chr3:[29,26],chr2:[29,26,9,7],chr1:[18,7,8,0,24,12,10,11,29,26,9,14,3,25,4,27,16,28,19],read:[7,8,21,24,11,2,9,15,31,16,17],confus:11,stdin:[7,8,21,24,5,2,9,13,14,31,22,27,16,11,17],correspond:[27,11],chr9:[27,24],exclud:[2,26],caus:[15,11],inform:[24,12,22,31,27,17],segmentaldup:8,combin:[7,31,24,11,2,25,19],frequent:[24,5],allow:[7,8,31,10,11,29,9,24,25,26,27,16,5,17],ensembl:[27,11],exclus:[26,11],region:[7,3,2,15,26,16,19],element:[8,21,11],order:[5,14,25,4,27,11],thickend:27,oper:[7,1,5,9,24,11,17],alignedread:11,help:[7,1,11],file2:[29,19],over:11,thickstart:27,becaus:[27,11],galaxi:[27,11],report:[18,31,7,8,21,12,10,11,29,9,22,14,24,25,27,16,5,17,19],chr11:17,chr10:[24,31],through:[27,30,11],same:[18,8,0,31,10,11,29,9,22,14,24,25,26,16,5,17],chr19:24,flexibl:[27,11],mainli:11,paramet:[20,19,11],style:27,occur:[16,14,10,25],group:[31,5,17,11],thank:11,gtf:11,concis:[27,11],chosen:26,fix:0,jim:11,window:[2,9,8,16,11],flank:[15,11],opposit:[24,10],creat:[30,8,12,3,11,2,9,13,23,24,15,31,27,16,17],mail:[6,11],main:11,assymetr:16,split:[7,24,11,9,13,27,17],non:[27,9,19,10],lastli:17,junction:11,greater:[27,17,11],var3:29,var2:29,handl:[10,11],auto:11,gaatg:5,ggfcgcggffcgggc:31,initi:11,number:[7,8,0,21,1,11,29,9,14,24,15,25,26,27,16,5],segdup:8,tile:9,rs1234:10,exon:[7,8,24,11,2,9,13,27,17],facilit:11,verifi:27,complement:[2,12],studi:[27,5],now:[24,5,14,26,27,11],discuss:[18,20,10,11,25,16],"68n58m2666n109m2885n158m":23,term:[20,22,10],"3677m":23,name:[19,31,24,5,29,12,15,25,27,11,17],edit:[27,31,17,1,8],rmsk:[23,15],revers:[2,12,16],notboth:[31,8],separ:[24,5,2,13,25,27],easili:[17,11],alreadi:15,mode:5,compris:[31,24,17,8],genom:[6,7,8,0,24,30,10,11,2,9,22,23,3,26,27,16,28,19],found:[18,24,11,10,31,16],doku:27,complet:[29,9],mean:[27,23,15,5],compil:1,mwcerec:31,nossr:8,mm9:30,first_bas:11,individu:11,hard:3,idea:11,antimod:5,each:[0,24,2,5,7,8,9,11,12,13,15,16,17,19,20,21,22,26,27,29,30,31],rs446788:11,year:11,our:11,happen:11,extract:[12,7,17,31],event:[10,11],special:11,out:[12,3],merg:[25,8,21,11],ftp:11,shown:24,closest:[18,8,21,10,11],vcf:[18,30,31,0,24,12,10,11,29,26,9,23,3,15,25,4,27,16,28],space:11,start2:[27,14,31],open:[30,15,11],newli:[3,25],start1:[27,14,31],research:11,profil:11,bamtool:11,mate:[24,17,31],kent:11,print:[19,8,0,5,29,27],size:[7,0,11,26,9,4,27,16,17,19],correct:[31,17,11],statist:5,cigar:[7,24,11,9,23,31,17],"goto":15,exon3:27,advanc:[2,6,11],spot:26,million:11,differ:[3,5,9,10,1,26,27,16],free:27,standard:[24,5,31,27,11,17],asc:4,cut:8,reason:11,base:[31,7,8,0,21,24,30,10,11,2,9,14,3,15,25,26,27,16,5,17],variantstorepeat:5,lab:11,ospan:31,ibam:7,ask:[29,5,24,11],org:[27,30,15,11],dna:[27,11],featur:[0,24,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,21,22,23,25,26,27,28,29,30,31],basi:26,diagram:24,your:[27,15,3,1,11],launch:15,frequenc:5,could:[0,26,22,27],omit:5,keep:[26,5],thing:[22,5],perhap:24,enforc:[18,25,24,10,31,16],place:[26,8,11],unabl:11,retain:8,"30bp":11,onto:27,broadinstitut:15,assymter:16,first:[8,10,11,2,15,26,27,17],origin:[18,8,24,11,25,16],softwar:[6,27,11],rang:[27,5,11],directli:[2,19],feel:11,onc:[16,24,15],refin:27,qualiti:[24,23,17,15,31],denorm:5,system:[1,5],restrict:[0,24,29,10,31,16],nucleotid:11,smaller:11,done:0,"long":[21,24,31],mask:[2,3,11],wasn:11,oppos:31,miss:19,primari:15,suffic:7,vcf4:27,avail:[20,24,17,11],freqasc:5,annotateb:[29,20,11],breviti:11,convent:11,script:[15,11],unknown:27,top:[23,11],sometim:[31,24,11],least:[18,7,8,10,5,9,24,31,16,11],binari:1,just:[16,24,10,5],too:11,similarli:[24,11],toolset:6,dj102g20:27,conveni:[4,13],store:[27,23,11],unalign:11,chrii:[27,11],adher:26,assign:27,option:[0,24,2,3,4,5,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,31],especi:[27,9,16],maskfastafromb:[2,20,3,11],tool:[20,1,5,13,28,27,11,17],copi:[30,1],lower:[16,17,3],specifi:[16,14,17,5],probecompl:2,part:[27,17,11],conserv:29,attempt:26,exactli:[31,24,12,3,10,26],than:[27,7,17,11],png:15,serv:[24,31],wide:[27,11],"738n64m146n100m1647n120m6478n162m1485n51m6777n60m9274n54m880n54m1229n54m2377n54m112":23,unmap:17,third:24,whenev:11,provid:[20,7,8,11,31,26],remov:[18,8,11],eleg:11,biolog:[24,31],bed:[0,24,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,21,22,23,25,26,27,28,29,30,31],charact:27,project:27,coverageb:[20,8,11,2,9,27],becom:27,were:[25,9,5,11],posit:[7,10,11,26,9,14,15,4,27],knowngen:[13,23],toward:9,reposit:26,randomli:[26,8,11],uc002yiq:[30,23],sai:[14,24],fashion:17,comput:[7,8,5,2,9,14,27,11,17],uc002yiu:30,sam:[27,23],uc002yiw:[30,13],uc002yix:[30,13],argument:5,inout:27,"return":[8,28,21,11],packag:11,bertha:24,seed:26,manner:[4,11],have:[7,10,5,9,24,15,31,27,16,11,17,19],tabl:[6,20,11],disjoint:[27,11],fasta:[12,3,11],chr8:24,windows10kb:8,tupac_0001:17,henceforth:11,bed12tobed6:[20,13,11],imagin:[16,5,10,11],built:30,equival:[27,11],min:5,"0t0c33a5t4t3":31,moreov:[24,11],agacgttaactttacacacctctgccaaggtcctcatccttgtattgaag:24,note:[7,8,24,10,11,29,26,9,3,1,15,31,4,27,16,5,17],also:[7,8,24,5,26,9,31,4,16,11,17],chromosom:[18,7,8,0,31,12,10,11,24,26,9,22,3,25,4,27,16,28,17],"2666n109m2885n158m":23,derek:11,take:[2,15,11],which:[24,5,14,10,15,25,26,27,11],neither:[2,31,22,8],environ:1,known_var:29,tracks1:11,singl:[7,8,21,5,29,25,11,19],said:11,therefor:[26,27,24,11],pipelin:11,unless:17,distribut:[27,8,11],notospan:31,normal:27,track:[23,11],who:11,compress:[16,31,23,24,11],discov:[8,11],most:[27,24,11],regular:11,awk:[0,8],portion:[18,7,24,11,9,17],pair:[31,7,8,0,21,10,11,2,9,22,14,24,15,25,26,27,16,17],alpha:[23,5],segment:8,why:11,l1pa3:[23,5],don:[24,11],correctli:[27,11],url:27,closestb:[20,8,21,10,11],gggfgd:24,stranded:[18,31,12,10,29,9,22,24,25,16],request:[0,12,15,11],tagbam:11,doe:[18,24,11,10,31,27,17],pipe:[7,24,5,9,13,14,31,22,16,11,17],pct2:29,ext:15,snapshot:[15,11],clean:[21,1],aligned_read:11,windowb:[20,8,11,14,27,16],effect:[16,5],latest:[2,27,1],scaffold:[27,11],dot:24,ungap:17,think:27,set:[7,30,24,11,12,23,25,17],rs233454:11,show:19,text:[27,5,19,11],ttatcgaatgcaatcgaatggaattatcgaatgcaatcgaatagaatcat:31,random:26,pct3:29,syntax:27,mychrom:27,sequenc:[7,8,9,3,11,12,24,27,17],session:15,identifi:27,uc002yi:30,fine:[24,11],find:[18,8,21,10,5,2,26],involv:1,depth:[9,7,11],onli:[18,2,7,8,31,24,11,29,9,22,25,26,27,16,5,17],slow:11,locat:[26,22,11],thei:[27,9,5,21,11],illumina:11,menu:11,discord:22,releas:11,figur:[18,20,19,10,5,29,13,15,25,16,11,28],should:[18,8,30,10,11,24,26,9,13,1,15,25,4,27,16,5],experiment:27,templat:11,occupi:12,mergeb:[20,25,8,21,11],analys:11,hope:11,count:[29,9,5,11],move:26,hit:[24,5,29,22,31,16],contribut:[7,11],get:2,pairtob:[20,8,24,11,2,31,27],nasti:29,comma:[27,5],stop:26,"1000bp":16,theori:11,cannot:26,mention:10,fearur:26,increas:0,grep:[2,21,7,24,8],chrom:[19,8,11,12,26,27],symmetr:16,requir:[18,7,8,1,5,2,22,24,31,26,27,11,17,19],target:[2,27,3],igv:[15,11],characterist:11,enabl:[16,24,17,11],organ:[27,30,11],homag:24,bloat:11,median:5,"public":[27,30,11],sum:5,stl:11,twelv:27,common:[24,11],contain:[10,11],privileg:1,bam:[7,8,24,11,2,9,22,23,15,31,27,16,17],where:[8,10,11,2,30,22,24,31,26,27,16,17],seamlessli:11,summari:[0,24,29,3,4,5,7,9,10,11,12,13,14,15,16,17,18,19,22,23,25,26,28,30,31],wiki:27,end2:[27,14,31],cnt1:29,seq:[9,16,7,24,11],frame:27,"_0001":24,assumpt:15,displai:[27,23,8],see:[18,7,10,5,30,15,25,27,16,17,19],result:[18,31,10,11,29,9,22,14,24,25,26,27,16,28,17],fail:[17,31],close:25,institut:27,notalusinref:2,awar:11,detect:[27,9,5,16,11],kilobas:[9,8],give:11,chrthenscorea:4,matter:[15,11],databas:[27,5,11],boundari:0,sortb:[4,20,11],hist:9,written:[24,31,15,3,11],score:[8,24,5,29,14,31,4,27,17],between:[8,21,10,11,22,14,24,25,31,16],drawn:27,awai:25,experi:[26,9,16,3,11],approach:[22,31],across:[9,19],attribut:[27,11],accord:[0,16],predefin:11,extend:11,amen:11,numer:[19,17,5],screen:[7,24,2,9,22,15,27,16],sole:[29,26,11],disallow:17,extens:11,entir:[7,8,24,11,9,27,17],"_bbbbbbbbbbbbbbbb":31,stdev:5,genomecoverageb:[27,20,7,11],outer:31,come:[7,24,5,9,31,27,11,17],blockcount:[27,9,7],"31e":27,addit:[7,21,24,11,10,31,27,28],both:[8,10,11,29,9,22,24,31,26,16],blastx:27,img:15,hgdownload:11,someth:[0,30,5,11],howev:[7,8,0,31,10,11,24,25,26,27,16,17],alon:24,groupbi:[20,5,11],against:[26,9,7,24],nearbi:[21,8],etc:[27,31,24,15,11],instanc:30,context:11,chrthensizea:4,browser:[27,30,8,11],com:[21,1,11],col:[14,5],incred:5,load:[15,11],uc002yip:[30,23],onward:27,simpli:[27,24,15,11],publicli:11,stream:[5,11],point:[30,1],color:17,had:9,format:[7,8,24,5,12,23,31,27,11,17],"50m":[24,31],uc002yir:30,"46m":11,header:[29,12,19,3,11],permut:[26,11],bamtob:[20,8,11,2,27,17],suppli:26,"3000n":11,uc002yit:30,sanger:27,throughout:11,assum:[31,5,23,17,11],gcdgg:31,duplic:8,quit:11,sess:15,strong:6,uc002yiv:[30,13],second:[27,16,24,11],addition:11,receiv:27,fro:3,add:[19,0,2,25,27,16],been:[9,15,11],insuffici:27,valu:[23,14,19,27,5],interest:[24,5,9,31,27,11],modif:11,gd_mrna:27,immedi:15,quickli:[4,27,7,15],probe:2,rather:11,nuclb:11,uc010gkv:30,imag:[23,15],shuffl:26,search:[18,24,9,22,10,31,16],cnt3:29,ani:[19,8,21,24,5,25,27,16,11],bulk:11,coordin:[0,5,12,14,31,26,16,11,17],repeatmask:[21,8],togeth:[21,17,11],turn:26,gwa:10,repetit:[21,8],"1mb":24,present:[22,24,31],delimit:[27,9,5,12,11],known1:29,ugli:29,known3:29,ident:[26,5],look:[2,26,7,10,11],gnu:11,clp:15,align:[7,8,3,11,2,9,22,23,24,15,31,27,16,17],cov:8,sourceforg:27,aim:27,defin:[18,8,0,3,11,12,26,27,16],calcul:[9,7,19,11],bertha_0001:24,invers:27,abov:[27,7],cgcta:12,wild:[7,11],exist:[27,15,11],cneecfccf:31,chrom1:[27,31],observ:[29,17,5],chrom2:[27,31],program:[27,11],advantag:[9,11],almost:11,"2124m":23,site:[7,11],equal:7,pairedread:31,archiv:1,motiv:11,clip:0,myseq:12,var1:29,mani:[27,11],sever:[31,8,5,15,11],"null":[26,24],develop:11,welcom:11,minim:[18,24,11],perform:[24,27,9,7,3],suggest:[22,11],make:[27,25,21,1,11],interstiti:[9,7,24],hgtabl:11,"while":[18,0,10,11,26,24,25,4,16],cgfgccgggfc:31,complex:11,descend:[4,5],enrich:27,document:11,infer:[9,7],file3:[29,19],higher:[16,15,11],"1bp":[18,22,24,31],finish:11,http:[7,21,1,11,30,15,27],structur:[2,27,22,8,11],bedtool:[6,8,21,1,5,2,14,20,27,11,17],denot:17,interrog:11,blue:24,upon:11,hwieas_0001:27,decompress:11,read1:11,nix:1,read2:11,user:[0,27,31,24,11],uni:30,pairtopair:[20,8,11,2,22,27],end1:[27,14,31],php:27,aka:11,recent:[2,11],gordon:[7,11],appropri:[26,30,23,5],linksb:[20,30,11],"38a11":31,entri:[31,7,8,0,21,12,24,11,9,23,25,26,27,16,17],thu:[31,9,8,24,11],touchingexon:8,well:[30,9,5,16,11],spent:11,inherit:11,thickli:27,contact:1,command:[7,21,1,11,29,9,24,17],thi:[0,24,29,3,5,7,10,11,9,14,15,16,17,18,21,22,23,1,25,26,27,28,20,30,31],choos:[10,8],gzip:11,salient:11,model:27,self:11,left:[16,15,31],distanc:[8,31,10,14,25,27,17],gffeaaddddggggggedgcgeggdegggggffcgggggggegdfggfgf:24,background:11,execut:26,less:4,paragraph:6,abam:[8,24,11,9,31,16],bed4:27,distant:25,cnt2:29,human:[27,30,8,23,11],variant1:5,regardless:11,variant3:5,variant2:5,yet:[24,5,31,27,11,17],cabam:31,"46bp":11,web:[30,11],versu:11,rapid:11,aaacc:12,bedtobam:[20,23,11],field:[7,24,11,9,23,15,31,27,17],complementb:[20,8,11,2,27,28],mutat:27,makefil:1,except:[2,26,11],bgetdg_kgcg:24,format1:27,rgb:27,discret:[13,11],inner:[2,31],overview:[6,11],samtool:[7,24,2,9,23,31,27,16,17],subsequ:[15,11],explanatori:11,match:[12,22,17,3],build:[27,30,11],bin:[21,7,1,11],applic:[31,11],complaint:11,around:16,recreat:26,last:[27,8,10,11],preserv:26,big:29,rna:[9,16,7,24,11],goldenpath:[7,11],choic:10,intrachromosom:31,five:11,know:[27,25,8,24,11],burden:11,chr20:17,blockstart:[27,9,7],apart:11,lexicograph:17,associ:26,scientist:11,licens:11,desc:4,linux:1,insert:[2,17],resid:11,like:[8,0,21,24,11,30,14,15,25,27],specif:[27,7,17,11],deprec:11,seek:11,arbitrari:9,manual:[27,30,21,11],html:[27,30,7,11],integ:[0,26],collect:15,benefit:11,sample1:2,sizea:4,chr21:[30,13,23,15,5],view:[7,24,2,9,23,31,16,17],output:[7,27,31,9,3,5,12,14,24,25,23,16,11,17,19],resiz:0,inter:[27,11],soft:3,page:[30,11],underli:27,www:[27,15,11],right:[16,15,31],often:[10,11],convei:20,captur:[2,3],spring:11,interv:[30,7,8,9,3,11,12,24,28,17,19],"1st":11,some:[27,20,1,11],begin:[15,11],ffec_jw:31,certain:26,chrthenscor:4,sampl:[2,22,19,15,8],flatten:27,"395m":23,respect:[24,29,9,22,31,16,17],proper:2,seq1:27,process:11,gwdfgfgff:24,librari:11,cnv:8,elegan:[27,11],txt:[19,11],"function":[20,11],avoid:26,deploy:11,definit:[27,11],aaatggaatcgaatggaatcaacatcaaatggaatcaaatggaatcattg:31,overlap:[18,2,31,7,8,21,10,11,29,9,22,14,24,20,25,27,16,5],summar:[9,5,11],filen:[29,19],ucsc:[7,8,11,30,23,27],evolv:11,readgroup:15,coding_exon:27,"1kb":24,l1p1:5,necessari:27,three:[5,11],straightforward:11,"25s6m1i11m7":24,blocksiz:27,cgi:11,core:11,encourag:11,object:27,run:[26,15,1],mrna:11,flankb:11,uncompress:[16,31,23,24,11],inspect:30,usag:[0,24,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,25,26,27,28,29,30,31],paper:11,broken:10,step:2,obei:27,repositori:[1,11],contig1112:27,geneb:[29,10],hba_human:27,post:1,subtract:[0,18,11],inclus:27,bga:7,about:5,central:11,greatli:11,pre:[27,5],column:[7,31,12,3,5,24,9,14,10,15,25,27,11,17],simrep:[24,31],commun:11,slightli:11,briefli:11,surround:16,degre:29,jobu_0001:31,hg18:[7,8,2,30,13,23,15],hg19:11,disabl:[18,10,9,25,16,17],my_featur:27,zxvf:[21,1],ispan:31,subset:[24,31],file1:[29,19],own:[3,11],effici:[23,15],antisens:12,acedb:27,basenam:30,within:[8,21,11,15,25,27,16],automat:26,dataset:[27,11],down:[2,27],empti:19,lieu:12,contributor:11,chang:5,batch:[15,11],mere:[4,27],annotaion:23,wao:24,freqdesc:5,accordingli:[0,5,1,11],git:11,span:[7,8,31,24,11,2,9,25,27,17],deal:[9,16,7,24],wai:[5,29,22,14,27,11],uc001aaa:27,"3288m":23,support:[27,11],question:[24,11],limit:11,fast:11,custom:[19,3,11,14,26,27,16],book:25,start:[6,19,0,21,10,11,29,12,14,15,4,27,17],fascin:11,appl:1,arithmet:6,includ:[29,27,31,19,11],fraction:[18,7,8,10,29,9,22,24,31],replac:26,forward:[2,12,16],interchromosom:17,machin:1,strand2:27,strand1:27,treat:[9,7,24,11],analysi:27,reduc:11,head:[7,8,24,30,13,23,15,31,17],basepair:[27,11],namesr:29,form:27,offer:9,forc:[18,31,12,10,29,9,22,24,25],ascend:[4,5],"3076bp":11,basic:[8,11],histogram:[9,7,11],link:[27,30,11],seqnam:27,might:[26,25,24,10,11],line:[19,8,21,1,5,29,9,14,24,26,27,11],highest:10,bug:11,info:11,notat:27,made:11,wise:11,input:[7,31,3,5,24,12,13,14,10,27,26,23,16,11,19],consist:[27,9,19],possibl:11,whether:[24,8],aza:27,directori:[27,8,1,11],googlecod:[21,1,11],maximum:[7,25],record:27,below:[19,8,21,10,11,9,24,31,26,27,16,17],those:[2,8,24,21,11],absenc:[16,24],fundament:11,otherwis:22,"298m1784n71m1411n93m3963n80m1927n106m3608n81m1769n62m11856n89m98n82m816n61m6910n65m":23,similar:[27,16,10,5],reliabl:11,"30m":11,block:[7,24,11,9,13,23,27,17],rname:[24,17,31],reciproc:[24,8],constant:26,semicolon:[27,25],cover:[18,2,8,11,29,9,20],"abstract":20,mirror:30,"1000_genom":27,doesn:31,nascent:11,barnett:11,implement:11,intersectb:[18,20,8,21,10,5,2,9,24,25,27,16,11],file:[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29,30,31],behavior:[0,24,29,3,4,5,7,9,10,11,12,13,14,15,16,18,19,22,23,25,26,28,20,30,31],chrthensiz:4,curl:[21,1],improv:11,filo:11,intra:31,chrominfo:11,ggeggg_gggggggggddgdggvg:24,freeli:11,"76bp":11,grp:5,todo:11,"1a2t45":24,when:[30,7,12,3,5,24,9,13,22,10,31,27,16,11,17,19],pct1:29,"738n64m146n100m1647n120m6478n162m1485n51m6777n60m10208n54m1229n54m2377n54m11268n58m":23,power:[6,27],"default":[0,24,29,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,22,23,25,26,28,20,30,31],valid:[26,5,15,11],futur:11,bed5:27,presenc:[16,24],test:[26,12,3],tie:[10,8],you:[19,1,5,2,14,24,15,31,26,27,16,11],thousand:11,asymmetr:[0,16],gaatcgactggaatcatcatcggatggaaatgaatggaataatcatcgaa:31,matur:11,repeat:[8,5,28,11],intend:1,polymorph:[10,11],symbol:11,"7a22c9c2t6":31,"1kg":2,in2:8,googl:11,properli:[2,17,11],chr22:11,"30kb":11,occasion:25,formal:11,gap:[26,8,11],stai:[5,11],genotyp:19,bed3:27,bedg:8,algorithm:11,scientif:27,util:[4,11],svg:15,suit:[6,20,11],pseudo:26,visual:23,rule:[26,11],them:[8,11],mimic:5,bedp:[8,11,2,22,31,27,17],ignor:[7,12,24,11,9,31,26,27],fact:[27,16,24,11],potenti:[26,27],time:[5,11],plu:24,escap:27,"5kb":16},objtypes:{},titles:["5.14 slopBed","Installation","Advanced usage","5.12 maskFastaFromBed","5.15 sortBed","5.22 groupBy","<strong>bedtools</strong>: <em>a powerful toolset for genome arithmetic</em>","5.10 genomeCoverageBed","Example usage","5.9 coverageBed","5.6 closestBed","Overview","5.11 fastaFromBed","5.21 bed12ToBed6","5.19 overlap","5.20 bedToIgv","5.5 windowBed","5.4 bamToBed","5.7 subtractBed","5.23 unionBedGraphs","The BEDTools suite","Quick start","5.3 pairToPair","5.18 bedToBam","5.1 intersectBed","5.8 mergeBed","5.13 shuffleBed","General usage","5.17 complementBed","5.24 annotateBed","5.16 linksBed","5.2 pairToBed"],objnames:{},filenames:["content/slopBed","content/installation","content/advanced-usage","content/maskfastafromBed","content/sortBed","content/groupBy","index","content/genomecoverageBed","content/example-usage","content/coverageBed","content/closestBed","content/overview","content/fastafromBed","content/bed12ToBed6","content/overlap","content/bedToIgv","content/windowBed","content/bamToBed","content/subtractBed","content/unionBedGraphs","content/bedtools-suite","content/quick-start","content/pairToPair","content/bedToBam","content/intersectBed","content/mergeBed","content/shuffleBed","content/general-usage","content/complementBed","content/annotateBed","content/linksBed","content/pairToBed"]}) \ No newline at end of file diff --git a/docs/_build/latex/Makefile b/docs/_build/latex/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..76e7c3e25f88698a1625051a6c17ab561a03c293 --- /dev/null +++ b/docs/_build/latex/Makefile @@ -0,0 +1,66 @@ +# Makefile for Sphinx LaTeX output + +ALLDOCS = $(basename $(wildcard *.tex)) +ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) +ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) + +# Prefix for archive names +ARCHIVEPRREFIX = +# Additional LaTeX options +LATEXOPTS = + +all: $(ALLPDF) +all-pdf: $(ALLPDF) +all-dvi: $(ALLDVI) +all-ps: all-dvi + for f in *.dvi; do dvips $$f; done + +all-pdf-ja: + for f in *.pdf *.png *.gif *.jpg *.jpeg; do ebb $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.idx; do mendex -U -f -d "`basename $$f .idx`.dic" -s python.ist $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.tex; do platex -kanji=utf8 $(LATEXOPTS) $$f; done + for f in *.dvi; do dvipdfmx $$f; done + +zip: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +tar: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +bz2: tar + bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +# The number of LaTeX runs is quite conservative, but I don't expect it +# to get run often, so the little extra time won't hurt. +%.dvi: %.tex + latex $(LATEXOPTS) '$<' + latex $(LATEXOPTS) '$<' + latex $(LATEXOPTS) '$<' + -makeindex -s python.ist '$(basename $<).idx' + latex $(LATEXOPTS) '$<' + latex $(LATEXOPTS) '$<' + +%.pdf: %.tex + pdflatex $(LATEXOPTS) '$<' + pdflatex $(LATEXOPTS) '$<' + pdflatex $(LATEXOPTS) '$<' + -makeindex -s python.ist '$(basename $<).idx' + pdflatex $(LATEXOPTS) '$<' + pdflatex $(LATEXOPTS) '$<' + +clean: + rm -f *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla + +.PHONY: all all-pdf all-dvi all-ps clean +.PHONY: all-pdf-ja + diff --git a/docs/_build/latex/bedtools.aux b/docs/_build/latex/bedtools.aux new file mode 100644 index 0000000000000000000000000000000000000000..fb18bc9e08428769a3814705f44be6346f6df771 --- /dev/null +++ b/docs/_build/latex/bedtools.aux @@ -0,0 +1,463 @@ +\relax +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\select@language{english} +\@writefile{toc}{\select@language{english}} +\@writefile{lof}{\select@language{english}} +\@writefile{lot}{\select@language{english}} +\newlabel{index::doc}{{}{1}{\relax }{section*.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Overview}{1}{chapter.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{index:bedtools-a-powerful-toolset-for-genome-arithmetic}{{1}{1}{Overview\relax }{chapter.1}{}} +\newlabel{index:overview}{{1}{1}{Overview\relax }{chapter.1}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Table of contents}{3}{chapter.2}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{index:table-of-contents}{{2}{3}{Table of contents\relax }{chapter.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}Overview}{3}{section.2.1}} +\newlabel{content/overview:overview}{{2.1}{3}{Overview\relax }{section.2.1}{}} +\newlabel{content/overview::doc}{{2.1}{3}{Overview\relax }{section.2.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.1}1.1 Background}{3}{subsection.2.1.1}} +\newlabel{content/overview:background}{{2.1.1}{3}{1.1 Background\relax }{subsection.2.1.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}1.2 Summary of available tools.}{3}{subsection.2.1.2}} +\newlabel{content/overview:summary-of-available-tools}{{2.1.2}{3}{1.2 Summary of available tools}{subsection.2.1.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.3}1.3 Fundamental concepts.}{4}{subsection.2.1.3}} +\newlabel{content/overview:fundamental-concepts}{{2.1.3}{4}{1.3 Fundamental concepts}{subsection.2.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.1 What are genome features and how are they represented?}{4}{subsubsection*.3}} +\newlabel{content/overview:what-are-genome-features-and-how-are-they-represented}{{2.1.3}{4}{1.3.1 What are genome features and how are they represented?\relax }{subsubsection*.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.2 Overlapping / intersecting features.}{5}{subsubsection*.4}} +\newlabel{content/overview:overlapping-intersecting-features}{{2.1.3}{5}{1.3.2 Overlapping / intersecting features}{subsubsection*.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.3 Comparing features in file \IeC {\textquotedblleft }A\IeC {\textquotedblright } and file \IeC {\textquotedblleft }B\IeC {\textquotedblright }.}{5}{subsubsection*.5}} +\newlabel{content/overview:comparing-features-in-file-a-and-file-b}{{2.1.3}{5}{1.3.3 Comparing features in file “A†and file “Bâ€}{subsubsection*.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.4 BED starts are zero-based and BED ends are one-based.}{5}{subsubsection*.6}} +\newlabel{content/overview:bed-starts-are-zero-based-and-bed-ends-are-one-based}{{2.1.3}{5}{1.3.4 BED starts are zero-based and BED ends are one-based}{subsubsection*.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.5 GFF starts and ends are one-based.}{5}{subsubsection*.7}} +\newlabel{content/overview:gff-starts-and-ends-are-one-based}{{2.1.3}{5}{1.3.5 GFF starts and ends are one-based}{subsubsection*.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.6 VCF coordinates are one-based.}{6}{subsubsection*.8}} +\newlabel{content/overview:vcf-coordinates-are-one-based}{{2.1.3}{6}{1.3.6 VCF coordinates are one-based}{subsubsection*.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.7 File B is loaded into memory (most of the time).}{6}{subsubsection*.9}} +\newlabel{content/overview:file-b-is-loaded-into-memory-most-of-the-time}{{2.1.3}{6}{1.3.7 File B is loaded into memory (most of the time)}{subsubsection*.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.8 Feature files \emph {must} be tab-delimited.}{6}{subsubsection*.10}} +\newlabel{content/overview:feature-files-must-be-tab-delimited}{{2.1.3}{6}{1.3.8 Feature files \emph {must} be tab-delimited}{subsubsection*.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.9 All BEDTools allow features to be \IeC {\textquotedblleft }piped\IeC {\textquotedblright } via standard input.}{6}{subsubsection*.11}} +\newlabel{content/overview:all-bedtools-allow-features-to-be-piped-via-standard-input}{{2.1.3}{6}{1.3.9 All BEDTools allow features to be “piped†via standard input}{subsubsection*.11}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.10 Most BEDTools write their results to standard output.}{6}{subsubsection*.12}} +\newlabel{content/overview:most-bedtools-write-their-results-to-standard-output}{{2.1.3}{6}{1.3.10 Most BEDTools write their results to standard output}{subsubsection*.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.11 What is a \IeC {\textquotedblleft }genome\IeC {\textquotedblright } file?}{7}{subsubsection*.13}} +\newlabel{content/overview:what-is-a-genome-file}{{2.1.3}{7}{1.3.11 What is a “genome†file?\relax }{subsubsection*.13}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.12 Paired-end BED files (BEDPE files).}{7}{subsubsection*.14}} +\newlabel{content/overview:paired-end-bed-files-bedpe-files}{{2.1.3}{7}{1.3.12 Paired-end BED files (BEDPE files)}{subsubsection*.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.13 Use \IeC {\textquotedblleft }-h\IeC {\textquotedblright } for help with any BEDTool.}{7}{subsubsection*.15}} +\newlabel{content/overview:use-h-for-help-with-any-bedtool}{{2.1.3}{7}{1.3.13 Use “-h†for help with any BEDTool}{subsubsection*.15}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.14 BED features must not contain negative positions.}{7}{subsubsection*.16}} +\newlabel{content/overview:bed-features-must-not-contain-negative-positions}{{2.1.3}{7}{1.3.14 BED features must not contain negative positions}{subsubsection*.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.15 The start position must be \textless {}= to the end position.}{7}{subsubsection*.17}} +\newlabel{content/overview:the-start-position-must-be-to-the-end-position}{{2.1.3}{7}{1.3.15 The start position must be \textless {}= to the end position}{subsubsection*.17}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.16 Headers are allowed in GFF and BED files}{7}{subsubsection*.18}} +\newlabel{content/overview:headers-are-allowed-in-gff-and-bed-files}{{2.1.3}{7}{1.3.16 Headers are allowed in GFF and BED files\relax }{subsubsection*.18}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.17 GZIP support: BED, GFF, VCF, and BEDPE file can be \IeC {\textquotedblleft }gzipped\IeC {\textquotedblright }}{8}{subsubsection*.19}} +\newlabel{content/overview:gzip-support-bed-gff-vcf-and-bedpe-file-can-be-gzipped}{{2.1.3}{8}{1.3.17 GZIP support: BED, GFF, VCF, and BEDPE file can be “gzippedâ€\relax }{subsubsection*.19}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.18 Support for \IeC {\textquotedblleft }split\IeC {\textquotedblright } or \IeC {\textquotedblleft }spliced\IeC {\textquotedblright } BAM alignments and \IeC {\textquotedblleft }blocked\IeC {\textquotedblright } BED features}{8}{subsubsection*.20}} +\newlabel{content/overview:support-for-split-or-spliced-bam-alignments-and-blocked-bed-features}{{2.1.3}{8}{1.3.18 Support for “split†or “spliced†BAM alignments and “blocked†BED features\relax }{subsubsection*.20}{}} +\@writefile{toc}{\contentsline {subsubsection}{1.3.19 Writing uncompressed BAM output.}{8}{subsubsection*.21}} +\newlabel{content/overview:writing-uncompressed-bam-output}{{2.1.3}{8}{1.3.19 Writing uncompressed BAM output}{subsubsection*.21}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.4}1.4 Implementation and algorithmic notes.}{8}{subsection.2.1.4}} +\newlabel{content/overview:implementation-and-algorithmic-notes}{{2.1.4}{8}{1.4 Implementation and algorithmic notes}{subsection.2.1.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.5}1.5 License and availability.}{9}{subsection.2.1.5}} +\newlabel{content/overview:license-and-availability}{{2.1.5}{9}{1.5 License and availability}{subsection.2.1.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.6}1.6 Mailing list.}{9}{subsection.2.1.6}} +\newlabel{content/overview:mailing-list}{{2.1.6}{9}{1.6 Mailing list}{subsection.2.1.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.7}1.7 Contributors.}{9}{subsection.2.1.7}} +\newlabel{content/overview:contributors}{{2.1.7}{9}{1.7 Contributors}{subsection.2.1.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.2}Installation}{9}{section.2.2}} +\newlabel{content/installation:installation}{{2.2}{9}{Installation\relax }{section.2.2}{}} +\newlabel{content/installation::doc}{{2.2}{9}{Installation\relax }{section.2.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.3}Quick start}{9}{section.2.3}} +\newlabel{content/quick-start:quick-start}{{2.3}{9}{Quick start\relax }{section.2.3}{}} +\newlabel{content/quick-start::doc}{{2.3}{9}{Quick start\relax }{section.2.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.1}Install BEDTools}{9}{subsection.2.3.1}} +\newlabel{content/quick-start:install-bedtools}{{2.3.1}{9}{Install BEDTools\relax }{subsection.2.3.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3.2}Use BEDTools}{10}{subsection.2.3.2}} +\newlabel{content/quick-start:use-bedtools}{{2.3.2}{10}{Use BEDTools\relax }{subsection.2.3.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.4}General usage}{10}{section.2.4}} +\newlabel{content/general-usage::doc}{{2.4}{10}{General usage\relax }{section.2.4}{}} +\newlabel{content/general-usage:general-usage}{{2.4}{10}{General usage\relax }{section.2.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.4.1}4.1 Supported file formats}{10}{subsection.2.4.1}} +\newlabel{content/general-usage:supported-file-formats}{{2.4.1}{10}{4.1 Supported file formats\relax }{subsection.2.4.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{4.1.1 BED format}{10}{subsubsection*.22}} +\newlabel{content/general-usage:bed-format}{{2.4.1}{10}{4.1.1 BED format\relax }{subsubsection*.22}{}} +\@writefile{toc}{\contentsline {subsubsection}{4.1.2 BEDPE format}{12}{subsubsection*.23}} +\newlabel{content/general-usage:bedpe-format}{{2.4.1}{12}{4.1.2 BEDPE format\relax }{subsubsection*.23}{}} +\@writefile{toc}{\contentsline {subsubsection}{4.1.3 GFF format}{13}{subsubsection*.24}} +\newlabel{content/general-usage:gff-format}{{2.4.1}{13}{4.1.3 GFF format\relax }{subsubsection*.24}{}} +\@writefile{toc}{\contentsline {subsubsection}{4.1.3 GFF format}{14}{subsubsection*.25}} +\newlabel{content/general-usage:id1}{{2.4.1}{14}{4.1.3 GFF format\relax }{subsubsection*.25}{}} +\@writefile{toc}{\contentsline {subsubsection}{4.1.5 SAM/BAM format}{15}{subsubsection*.26}} +\newlabel{content/general-usage:sam-bam-format}{{2.4.1}{15}{4.1.5 SAM/BAM format\relax }{subsubsection*.26}{}} +\@writefile{toc}{\contentsline {subsubsection}{4.1.6 VCF format}{15}{subsubsection*.27}} +\newlabel{content/general-usage:vcf-format}{{2.4.1}{15}{4.1.6 VCF format\relax }{subsubsection*.27}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.5}The BEDTools suite}{15}{section.2.5}} +\newlabel{content/bedtools-suite:the-bedtools-suite}{{2.5}{15}{The BEDTools suite\relax }{section.2.5}{}} +\newlabel{content/bedtools-suite::doc}{{2.5}{15}{The BEDTools suite\relax }{section.2.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.5.1}Table of contents}{15}{subsection.2.5.1}} +\newlabel{content/bedtools-suite:table-of-contents}{{2.5.1}{15}{Table of contents\relax }{subsection.2.5.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.1 intersectBed}{15}{subsubsection*.28}} +\newlabel{content/intersectBed:intersectbed}{{2.5.1}{15}{5.1 intersectBed\relax }{subsubsection*.28}{}} +\newlabel{content/intersectBed::doc}{{2.5.1}{15}{5.1 intersectBed\relax }{subsubsection*.28}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.1 Usage and option summary}{15}{paragraph*.29}} +\newlabel{content/intersectBed:usage-and-option-summary}{{2.5.1}{15}{5.1.1 Usage and option summary\relax }{paragraph*.29}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.2 Default behavior}{16}{paragraph*.30}} +\newlabel{content/intersectBed:default-behavior}{{2.5.1}{16}{5.1.2 Default behavior\relax }{paragraph*.30}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.3 (-wa)Reporting the original A feature}{17}{paragraph*.31}} +\newlabel{content/intersectBed:wa-reporting-the-original-a-feature}{{2.5.1}{17}{5.1.3 (-wa)Reporting the original A feature\relax }{paragraph*.31}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.4 (-wb)Reporting the original B feature}{17}{paragraph*.32}} +\newlabel{content/intersectBed:wb-reporting-the-original-b-feature}{{2.5.1}{17}{5.1.4 (-wb)Reporting the original B feature\relax }{paragraph*.32}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.5 (-u)Reporting the presence of \emph {at least one} overlapping feature}{18}{paragraph*.33}} +\newlabel{content/intersectBed:u-reporting-the-presence-of-at-least-one-overlapping-feature}{{2.5.1}{18}{5.1.5 (-u)Reporting the presence of \emph {at least one} overlapping feature\relax }{paragraph*.33}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.6 (-c)Reporting the number of overlapping features}{18}{paragraph*.34}} +\newlabel{content/intersectBed:c-reporting-the-number-of-overlapping-features}{{2.5.1}{18}{5.1.6 (-c)Reporting the number of overlapping features\relax }{paragraph*.34}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.6 (-c)Reporting the number of overlapping features}{18}{paragraph*.35}} +\newlabel{content/intersectBed:id1}{{2.5.1}{18}{5.1.6 (-c)Reporting the number of overlapping features\relax }{paragraph*.35}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.7 (-v)Reporting the absence of any overlapping features}{19}{paragraph*.36}} +\newlabel{content/intersectBed:v-reporting-the-absence-of-any-overlapping-features}{{2.5.1}{19}{5.1.7 (-v)Reporting the absence of any overlapping features\relax }{paragraph*.36}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.8 (-f)Requiring a minimal overlap fraction}{19}{paragraph*.37}} +\newlabel{content/intersectBed:f-requiring-a-minimal-overlap-fraction}{{2.5.1}{19}{5.1.8 (-f)Requiring a minimal overlap fraction\relax }{paragraph*.37}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.9 (-r, combined with -f)Requiring reciprocal minimal overlap fraction}{19}{paragraph*.38}} +\newlabel{content/intersectBed:r-combined-with-f-requiring-reciprocal-minimal-overlap-fraction}{{2.5.1}{19}{5.1.9 (-r, combined with -f)Requiring reciprocal minimal overlap fraction\relax }{paragraph*.38}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.10 (-s)Enforcing ``strandedness''}{20}{paragraph*.39}} +\newlabel{content/intersectBed:s-enforcing-strandedness}{{2.5.1}{20}{5.1.10 (-s)Enforcing ``strandedness''\relax }{paragraph*.39}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.11 (-abam)Default behavior when using BAM input}{20}{paragraph*.40}} +\newlabel{content/intersectBed:abam-default-behavior-when-using-bam-input}{{2.5.1}{20}{5.1.11 (-abam)Default behavior when using BAM input\relax }{paragraph*.40}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.12 (-bed)Output BED format when using BAM input}{20}{paragraph*.41}} +\newlabel{content/intersectBed:bed-output-bed-format-when-using-bam-input}{{2.5.1}{20}{5.1.12 (-bed)Output BED format when using BAM input\relax }{paragraph*.41}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.13 (-split)Reporting overlaps with spliced alignments or blocked BED features}{21}{paragraph*.42}} +\newlabel{content/intersectBed:split-reporting-overlaps-with-spliced-alignments-or-blocked-bed-features}{{2.5.1}{21}{5.1.13 (-split)Reporting overlaps with spliced alignments or blocked BED features\relax }{paragraph*.42}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.2 pairToBed}{22}{subsubsection*.43}} +\newlabel{content/pairToBed::doc}{{2.5.1}{22}{5.2 pairToBed\relax }{subsubsection*.43}{}} +\newlabel{content/pairToBed:pairtobed}{{2.5.1}{22}{5.2 pairToBed\relax }{subsubsection*.43}{}} +\@writefile{toc}{\contentsline {paragraph}{5.2.1 Usage and option summary}{22}{paragraph*.44}} +\newlabel{content/pairToBed:usage-and-option-summary}{{2.5.1}{22}{5.2.1 Usage and option summary\relax }{paragraph*.44}{}} +\@writefile{toc}{\contentsline {paragraph}{5.2.2 Default behavior}{24}{paragraph*.45}} +\newlabel{content/pairToBed:default-behavior}{{2.5.1}{24}{5.2.2 Default behavior\relax }{paragraph*.45}{}} +\@writefile{toc}{\contentsline {paragraph}{5.2.3 (-type)Optional overlap requirements}{24}{paragraph*.46}} +\newlabel{content/pairToBed:type-optional-overlap-requirements}{{2.5.1}{24}{5.2.3 (-type)Optional overlap requirements\relax }{paragraph*.46}{}} +\@writefile{toc}{\contentsline {paragraph}{5.2.4 (-f)Requiring a minimum overlap fraction}{27}{paragraph*.47}} +\newlabel{content/pairToBed:f-requiring-a-minimum-overlap-fraction}{{2.5.1}{27}{5.2.4 (-f)Requiring a minimum overlap fraction\relax }{paragraph*.47}{}} +\@writefile{toc}{\contentsline {paragraph}{5.2.5 (-s)Enforcing ``strandedness''}{27}{paragraph*.48}} +\newlabel{content/pairToBed:s-enforcing-strandedness}{{2.5.1}{27}{5.2.5 (-s)Enforcing ``strandedness''\relax }{paragraph*.48}{}} +\@writefile{toc}{\contentsline {paragraph}{5.2.6 (-abam)Default is to write BAM output when using BAM input}{28}{paragraph*.49}} +\newlabel{content/pairToBed:abam-default-is-to-write-bam-output-when-using-bam-input}{{2.5.1}{28}{5.2.6 (-abam)Default is to write BAM output when using BAM input\relax }{paragraph*.49}{}} +\@writefile{toc}{\contentsline {paragraph}{5.2.7 (-bedpe)Output BEDPE format when using BAM input}{28}{paragraph*.50}} +\newlabel{content/pairToBed:bedpe-output-bedpe-format-when-using-bam-input}{{2.5.1}{28}{5.2.7 (-bedpe)Output BEDPE format when using BAM input\relax }{paragraph*.50}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.3 pairToPair}{29}{subsubsection*.51}} +\newlabel{content/pairToPair:pairtopair}{{2.5.1}{29}{5.3 pairToPair\relax }{subsubsection*.51}{}} +\newlabel{content/pairToPair::doc}{{2.5.1}{29}{5.3 pairToPair\relax }{subsubsection*.51}{}} +\@writefile{toc}{\contentsline {paragraph}{5.3.1 Usage and option summary}{29}{paragraph*.52}} +\newlabel{content/pairToPair:usage-and-option-summary}{{2.5.1}{29}{5.3.1 Usage and option summary\relax }{paragraph*.52}{}} +\@writefile{toc}{\contentsline {paragraph}{5.3.2 Default behavior}{29}{paragraph*.53}} +\newlabel{content/pairToPair:default-behavior}{{2.5.1}{29}{5.3.2 Default behavior\relax }{paragraph*.53}{}} +\@writefile{toc}{\contentsline {paragraph}{5.3.3 (-type neither)Optional overlap requirements}{30}{paragraph*.54}} +\newlabel{content/pairToPair:type-neither-optional-overlap-requirements}{{2.5.1}{30}{5.3.3 (-type neither)Optional overlap requirements\relax }{paragraph*.54}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.4 bamToBed}{30}{subsubsection*.55}} +\newlabel{content/bamToBed:bamtobed}{{2.5.1}{30}{5.4 bamToBed\relax }{subsubsection*.55}{}} +\newlabel{content/bamToBed::doc}{{2.5.1}{30}{5.4 bamToBed\relax }{subsubsection*.55}{}} +\@writefile{toc}{\contentsline {paragraph}{5.4.1 Usage and option summary}{30}{paragraph*.56}} +\newlabel{content/bamToBed:usage-and-option-summary}{{2.5.1}{30}{5.4.1 Usage and option summary\relax }{paragraph*.56}{}} +\@writefile{toc}{\contentsline {paragraph}{5.4.2 (-split)Creating BED12 features from ``spliced'' BAM entries.}{32}{paragraph*.57}} +\newlabel{content/bamToBed:split-creating-bed12-features-from-spliced-bam-entries}{{2.5.1}{32}{5.4.2 (-split)Creating BED12 features from ``spliced'' BAM entries}{paragraph*.57}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.5 windowBed}{32}{subsubsection*.58}} +\newlabel{content/windowBed:windowbed}{{2.5.1}{32}{5.5 windowBed\relax }{subsubsection*.58}{}} +\newlabel{content/windowBed::doc}{{2.5.1}{32}{5.5 windowBed\relax }{subsubsection*.58}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.1 Usage and option summary}{32}{paragraph*.59}} +\newlabel{content/windowBed:usage-and-option-summary}{{2.5.1}{32}{5.5.1 Usage and option summary\relax }{paragraph*.59}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.2 Default behavior}{33}{paragraph*.60}} +\newlabel{content/windowBed:default-behavior}{{2.5.1}{33}{5.5.2 Default behavior\relax }{paragraph*.60}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.3 (-w)Defining a custom window size}{33}{paragraph*.61}} +\newlabel{content/windowBed:w-defining-a-custom-window-size}{{2.5.1}{33}{5.5.3 (-w)Defining a custom window size\relax }{paragraph*.61}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.4 (-l and -r)Defining assymteric windows}{34}{paragraph*.62}} +\newlabel{content/windowBed:l-and-r-defining-assymteric-windows}{{2.5.1}{34}{5.5.4 (-l and -r)Defining assymteric windows\relax }{paragraph*.62}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.5 (-sw)Defining assymteric windows based on strand}{34}{paragraph*.63}} +\newlabel{content/windowBed:sw-defining-assymteric-windows-based-on-strand}{{2.5.1}{34}{5.5.5 (-sw)Defining assymteric windows based on strand\relax }{paragraph*.63}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.6 (-sm)Enforcing ``strandedness''}{35}{paragraph*.64}} +\newlabel{content/windowBed:sm-enforcing-strandedness}{{2.5.1}{35}{5.5.6 (-sm)Enforcing ``strandedness''\relax }{paragraph*.64}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.7 (-u)Reporting the presence of at least one overlapping feature}{35}{paragraph*.65}} +\newlabel{content/windowBed:u-reporting-the-presence-of-at-least-one-overlapping-feature}{{2.5.1}{35}{5.5.7 (-u)Reporting the presence of at least one overlapping feature\relax }{paragraph*.65}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.8 (-c)Reporting the number of overlapping features}{35}{paragraph*.66}} +\newlabel{content/windowBed:c-reporting-the-number-of-overlapping-features}{{2.5.1}{35}{5.5.8 (-c)Reporting the number of overlapping features\relax }{paragraph*.66}{}} +\@writefile{toc}{\contentsline {paragraph}{5.5.9 (-v)Reporting the absence of any overlapping features}{35}{paragraph*.67}} +\newlabel{content/windowBed:v-reporting-the-absence-of-any-overlapping-features}{{2.5.1}{35}{5.5.9 (-v)Reporting the absence of any overlapping features\relax }{paragraph*.67}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.6 closestBed}{35}{subsubsection*.68}} +\newlabel{content/closestBed:closestbed}{{2.5.1}{35}{5.6 closestBed\relax }{subsubsection*.68}{}} +\newlabel{content/closestBed::doc}{{2.5.1}{35}{5.6 closestBed\relax }{subsubsection*.68}{}} +\@writefile{toc}{\contentsline {paragraph}{5.6.1 Usage and option summary}{35}{paragraph*.69}} +\newlabel{content/closestBed:usage-and-option-summary}{{2.5.1}{35}{5.6.1 Usage and option summary\relax }{paragraph*.69}{}} +\@writefile{toc}{\contentsline {paragraph}{5.6.2 Default behavior}{36}{paragraph*.70}} +\newlabel{content/closestBed:default-behavior}{{2.5.1}{36}{5.6.2 Default behavior\relax }{paragraph*.70}{}} +\@writefile{toc}{\contentsline {paragraph}{5.6.3 (-s)Enforcing ``strandedness''}{36}{paragraph*.71}} +\newlabel{content/closestBed:s-enforcing-strandedness}{{2.5.1}{36}{5.6.3 (-s)Enforcing ``strandedness''\relax }{paragraph*.71}{}} +\@writefile{toc}{\contentsline {paragraph}{5.6.4 (-t)Controlling how ties for ``closest'' are broken}{37}{paragraph*.72}} +\newlabel{content/closestBed:t-controlling-how-ties-for-closest-are-broken}{{2.5.1}{37}{5.6.4 (-t)Controlling how ties for ``closest'' are broken\relax }{paragraph*.72}{}} +\@writefile{toc}{\contentsline {paragraph}{5.6.5 (-d)Reporting the distance to the closest feature in base pairs}{37}{paragraph*.73}} +\newlabel{content/closestBed:d-reporting-the-distance-to-the-closest-feature-in-base-pairs}{{2.5.1}{37}{5.6.5 (-d)Reporting the distance to the closest feature in base pairs\relax }{paragraph*.73}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.7 subtractBed}{37}{subsubsection*.74}} +\newlabel{content/subtractBed:subtractbed}{{2.5.1}{37}{5.7 subtractBed\relax }{subsubsection*.74}{}} +\newlabel{content/subtractBed::doc}{{2.5.1}{37}{5.7 subtractBed\relax }{subsubsection*.74}{}} +\@writefile{toc}{\contentsline {paragraph}{5.7.1 Usage and option summary}{38}{paragraph*.75}} +\newlabel{content/subtractBed:usage-and-option-summary}{{2.5.1}{38}{5.7.1 Usage and option summary\relax }{paragraph*.75}{}} +\@writefile{toc}{\contentsline {paragraph}{5.7.2 Default behavior}{38}{paragraph*.76}} +\newlabel{content/subtractBed:default-behavior}{{2.5.1}{38}{5.7.2 Default behavior\relax }{paragraph*.76}{}} +\@writefile{toc}{\contentsline {paragraph}{5.7.3 (-f)Requiring a minimal overlap fraction before subtracting}{38}{paragraph*.77}} +\newlabel{content/subtractBed:f-requiring-a-minimal-overlap-fraction-before-subtracting}{{2.5.1}{38}{5.7.3 (-f)Requiring a minimal overlap fraction before subtracting\relax }{paragraph*.77}{}} +\@writefile{toc}{\contentsline {paragraph}{5.7.4 (-s)Enforcing ``strandedness''}{39}{paragraph*.78}} +\newlabel{content/subtractBed:s-enforcing-strandedness}{{2.5.1}{39}{5.7.4 (-s)Enforcing ``strandedness''\relax }{paragraph*.78}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.8 mergeBed}{39}{subsubsection*.79}} +\newlabel{content/mergeBed:mergebed}{{2.5.1}{39}{5.8 mergeBed\relax }{subsubsection*.79}{}} +\newlabel{content/mergeBed::doc}{{2.5.1}{39}{5.8 mergeBed\relax }{subsubsection*.79}{}} +\@writefile{toc}{\contentsline {paragraph}{5.8.1 Usage and option summary}{39}{paragraph*.80}} +\newlabel{content/mergeBed:usage-and-option-summary}{{2.5.1}{39}{5.8.1 Usage and option summary\relax }{paragraph*.80}{}} +\@writefile{toc}{\contentsline {paragraph}{5.8.2 Default behavior}{39}{paragraph*.81}} +\newlabel{content/mergeBed:default-behavior}{{2.5.1}{39}{5.8.2 Default behavior\relax }{paragraph*.81}{}} +\@writefile{toc}{\contentsline {paragraph}{5.8.3 (-s)Enforcing ``strandedness''}{39}{paragraph*.82}} +\newlabel{content/mergeBed:s-enforcing-strandedness}{{2.5.1}{39}{5.8.3 (-s)Enforcing ``strandedness''\relax }{paragraph*.82}{}} +\@writefile{toc}{\contentsline {paragraph}{5.8.4 (-n)Reporting the number of features that were merged}{40}{paragraph*.83}} +\newlabel{content/mergeBed:n-reporting-the-number-of-features-that-were-merged}{{2.5.1}{40}{5.8.4 (-n)Reporting the number of features that were merged\relax }{paragraph*.83}{}} +\@writefile{toc}{\contentsline {paragraph}{5.8.5 (-d)Controlling how close two features must be in order to merge}{40}{paragraph*.84}} +\newlabel{content/mergeBed:d-controlling-how-close-two-features-must-be-in-order-to-merge}{{2.5.1}{40}{5.8.5 (-d)Controlling how close two features must be in order to merge\relax }{paragraph*.84}{}} +\@writefile{toc}{\contentsline {paragraph}{5.8.6 (-nms)Reporting the names of the features that were merged}{40}{paragraph*.85}} +\newlabel{content/mergeBed:nms-reporting-the-names-of-the-features-that-were-merged}{{2.5.1}{40}{5.8.6 (-nms)Reporting the names of the features that were merged\relax }{paragraph*.85}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.9 coverageBed}{41}{subsubsection*.86}} +\newlabel{content/coverageBed:coveragebed}{{2.5.1}{41}{5.9 coverageBed\relax }{subsubsection*.86}{}} +\newlabel{content/coverageBed::doc}{{2.5.1}{41}{5.9 coverageBed\relax }{subsubsection*.86}{}} +\@writefile{toc}{\contentsline {paragraph}{5.9.1 Usage and option summary}{41}{paragraph*.87}} +\newlabel{content/coverageBed:usage-and-option-summary}{{2.5.1}{41}{5.9.1 Usage and option summary\relax }{paragraph*.87}{}} +\@writefile{toc}{\contentsline {paragraph}{5.9.2 Default behavior}{41}{paragraph*.88}} +\newlabel{content/coverageBed:default-behavior}{{2.5.1}{41}{5.9.2 Default behavior\relax }{paragraph*.88}{}} +\@writefile{toc}{\contentsline {paragraph}{5.9.4 (-s)Calculating coverage by strand}{42}{paragraph*.89}} +\newlabel{content/coverageBed:s-calculating-coverage-by-strand}{{2.5.1}{42}{5.9.4 (-s)Calculating coverage by strand\relax }{paragraph*.89}{}} +\@writefile{toc}{\contentsline {paragraph}{5.9.5 (-hist)Creating a histogram of coverage for each feature in the B file}{43}{paragraph*.90}} +\newlabel{content/coverageBed:hist-creating-a-histogram-of-coverage-for-each-feature-in-the-b-file}{{2.5.1}{43}{5.9.5 (-hist)Creating a histogram of coverage for each feature in the B file\relax }{paragraph*.90}{}} +\@writefile{toc}{\contentsline {paragraph}{5.9.6 (-hist)Reporting the per-base of coverage for each feature in the B file}{43}{paragraph*.91}} +\newlabel{content/coverageBed:hist-reporting-the-per-base-of-coverage-for-each-feature-in-the-b-file}{{2.5.1}{43}{5.9.6 (-hist)Reporting the per-base of coverage for each feature in the B file\relax }{paragraph*.91}{}} +\@writefile{toc}{\contentsline {paragraph}{5.9.7 (-split)Reporting coverage with spliced alignments or blocked BED features}{44}{paragraph*.92}} +\newlabel{content/coverageBed:split-reporting-coverage-with-spliced-alignments-or-blocked-bed-features}{{2.5.1}{44}{5.9.7 (-split)Reporting coverage with spliced alignments or blocked BED features\relax }{paragraph*.92}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.10 genomeCoverageBed}{44}{subsubsection*.93}} +\newlabel{content/genomecoverageBed:genomecoveragebed}{{2.5.1}{44}{5.10 genomeCoverageBed\relax }{subsubsection*.93}{}} +\newlabel{content/genomecoverageBed::doc}{{2.5.1}{44}{5.10 genomeCoverageBed\relax }{subsubsection*.93}{}} +\@writefile{toc}{\contentsline {paragraph}{5.10.1 Usage and option summary}{44}{paragraph*.94}} +\newlabel{content/genomecoverageBed:usage-and-option-summary}{{2.5.1}{44}{5.10.1 Usage and option summary\relax }{paragraph*.94}{}} +\@writefile{toc}{\contentsline {paragraph}{5.10.2 Default behavior}{45}{paragraph*.95}} +\newlabel{content/genomecoverageBed:default-behavior}{{2.5.1}{45}{5.10.2 Default behavior\relax }{paragraph*.95}{}} +\@writefile{toc}{\contentsline {paragraph}{5.10.3 (-max)Controlling the histogram's maximum depth}{46}{paragraph*.96}} +\newlabel{content/genomecoverageBed:max-controlling-the-histogram-s-maximum-depth}{{2.5.1}{46}{5.10.3 (-max)Controlling the histogram's maximum depth\relax }{paragraph*.96}{}} +\@writefile{toc}{\contentsline {paragraph}{5.10.4 (-d)Reporting ``per-base'' genome coverage}{46}{paragraph*.97}} +\newlabel{content/genomecoverageBed:d-reporting-per-base-genome-coverage}{{2.5.1}{46}{5.10.4 (-d)Reporting ``per-base'' genome coverage\relax }{paragraph*.97}{}} +\@writefile{toc}{\contentsline {paragraph}{5.1.13 (-split)Reporting coverage with spliced alignments or blocked BED features}{46}{paragraph*.98}} +\newlabel{content/genomecoverageBed:split-reporting-coverage-with-spliced-alignments-or-blocked-bed-features}{{2.5.1}{46}{5.1.13 (-split)Reporting coverage with spliced alignments or blocked BED features\relax }{paragraph*.98}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.11 fastaFromBed}{46}{subsubsection*.99}} +\newlabel{content/fastafromBed:fastafrombed}{{2.5.1}{46}{5.11 fastaFromBed\relax }{subsubsection*.99}{}} +\newlabel{content/fastafromBed::doc}{{2.5.1}{46}{5.11 fastaFromBed\relax }{subsubsection*.99}{}} +\@writefile{toc}{\contentsline {paragraph}{5.11.1 Usage and option summary}{47}{paragraph*.100}} +\newlabel{content/fastafromBed:usage-and-option-summary}{{2.5.1}{47}{5.11.1 Usage and option summary\relax }{paragraph*.100}{}} +\@writefile{toc}{\contentsline {paragraph}{5.11.2 Default behavior}{47}{paragraph*.101}} +\newlabel{content/fastafromBed:default-behavior}{{2.5.1}{47}{5.11.2 Default behavior\relax }{paragraph*.101}{}} +\@writefile{toc}{\contentsline {paragraph}{5.11.3 Using the BED ``name'' column as a FASTA header.}{47}{paragraph*.102}} +\newlabel{content/fastafromBed:using-the-bed-name-column-as-a-fasta-header}{{2.5.1}{47}{5.11.3 Using the BED ``name'' column as a FASTA header}{paragraph*.102}{}} +\@writefile{toc}{\contentsline {paragraph}{5.11.4 Creating a tab-delimited output file in lieu of FASTA output.}{48}{paragraph*.103}} +\newlabel{content/fastafromBed:creating-a-tab-delimited-output-file-in-lieu-of-fasta-output}{{2.5.1}{48}{5.11.4 Creating a tab-delimited output file in lieu of FASTA output}{paragraph*.103}{}} +\@writefile{toc}{\contentsline {paragraph}{5.11.5 (-s)Forcing the extracted sequence to reflect the requested strand}{48}{paragraph*.104}} +\newlabel{content/fastafromBed:s-forcing-the-extracted-sequence-to-reflect-the-requested-strand}{{2.5.1}{48}{5.11.5 (-s)Forcing the extracted sequence to reflect the requested strand\relax }{paragraph*.104}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.12 maskFastaFromBed}{48}{subsubsection*.105}} +\newlabel{content/maskfastafromBed:maskfastafrombed}{{2.5.1}{48}{5.12 maskFastaFromBed\relax }{subsubsection*.105}{}} +\newlabel{content/maskfastafromBed::doc}{{2.5.1}{48}{5.12 maskFastaFromBed\relax }{subsubsection*.105}{}} +\@writefile{toc}{\contentsline {paragraph}{5.12.1 Usage and option summary}{48}{paragraph*.106}} +\newlabel{content/maskfastafromBed:usage-and-option-summary}{{2.5.1}{48}{5.12.1 Usage and option summary\relax }{paragraph*.106}{}} +\@writefile{toc}{\contentsline {paragraph}{5.12.2 Default behavior}{49}{paragraph*.107}} +\newlabel{content/maskfastafromBed:default-behavior}{{2.5.1}{49}{5.12.2 Default behavior\relax }{paragraph*.107}{}} +\@writefile{toc}{\contentsline {paragraph}{5.12.3 Soft-masking the FASTA file.}{49}{paragraph*.108}} +\newlabel{content/maskfastafromBed:soft-masking-the-fasta-file}{{2.5.1}{49}{5.12.3 Soft-masking the FASTA file}{paragraph*.108}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.13 shuffleBed}{49}{subsubsection*.109}} +\newlabel{content/shuffleBed:shufflebed}{{2.5.1}{49}{5.13 shuffleBed\relax }{subsubsection*.109}{}} +\newlabel{content/shuffleBed::doc}{{2.5.1}{49}{5.13 shuffleBed\relax }{subsubsection*.109}{}} +\@writefile{toc}{\contentsline {paragraph}{5.13.1 Usage and option summary}{49}{paragraph*.110}} +\newlabel{content/shuffleBed:usage-and-option-summary}{{2.5.1}{49}{5.13.1 Usage and option summary\relax }{paragraph*.110}{}} +\@writefile{toc}{\contentsline {paragraph}{5.13.2 Default behavior}{50}{paragraph*.111}} +\newlabel{content/shuffleBed:default-behavior}{{2.5.1}{50}{5.13.2 Default behavior\relax }{paragraph*.111}{}} +\@writefile{toc}{\contentsline {paragraph}{5.13.3 (-chrom)Requiring that features be shuffled on the same chromosome}{50}{paragraph*.112}} +\newlabel{content/shuffleBed:chrom-requiring-that-features-be-shuffled-on-the-same-chromosome}{{2.5.1}{50}{5.13.3 (-chrom)Requiring that features be shuffled on the same chromosome\relax }{paragraph*.112}{}} +\@writefile{toc}{\contentsline {paragraph}{5.13.4 Excluding certain genome regions from shuffleBed}{51}{paragraph*.113}} +\newlabel{content/shuffleBed:excluding-certain-genome-regions-from-shufflebed}{{2.5.1}{51}{5.13.4 Excluding certain genome regions from shuffleBed\relax }{paragraph*.113}{}} +\@writefile{toc}{\contentsline {paragraph}{5.13.5 Defining a ``seed'' for the random replacement.}{51}{paragraph*.114}} +\newlabel{content/shuffleBed:defining-a-seed-for-the-random-replacement}{{2.5.1}{51}{5.13.5 Defining a ``seed'' for the random replacement}{paragraph*.114}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.14 slopBed}{52}{subsubsection*.115}} +\newlabel{content/slopBed:slopbed}{{2.5.1}{52}{5.14 slopBed\relax }{subsubsection*.115}{}} +\newlabel{content/slopBed::doc}{{2.5.1}{52}{5.14 slopBed\relax }{subsubsection*.115}{}} +\@writefile{toc}{\contentsline {paragraph}{5.14.1 Usage and option summary}{52}{paragraph*.116}} +\newlabel{content/slopBed:usage-and-option-summary}{{2.5.1}{52}{5.14.1 Usage and option summary\relax }{paragraph*.116}{}} +\@writefile{toc}{\contentsline {paragraph}{5.14.2 Default behavior}{52}{paragraph*.117}} +\newlabel{content/slopBed:default-behavior}{{2.5.1}{52}{5.14.2 Default behavior\relax }{paragraph*.117}{}} +\@writefile{toc}{\contentsline {paragraph}{5.14.3 Resizing features according to strand}{53}{paragraph*.118}} +\newlabel{content/slopBed:resizing-features-according-to-strand}{{2.5.1}{53}{5.14.3 Resizing features according to strand\relax }{paragraph*.118}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.15 sortBed}{53}{subsubsection*.119}} +\newlabel{content/sortBed::doc}{{2.5.1}{53}{5.15 sortBed\relax }{subsubsection*.119}{}} +\newlabel{content/sortBed:sortbed}{{2.5.1}{53}{5.15 sortBed\relax }{subsubsection*.119}{}} +\@writefile{toc}{\contentsline {paragraph}{5.15.1 Usage and option summary}{53}{paragraph*.120}} +\newlabel{content/sortBed:usage-and-option-summary}{{2.5.1}{53}{5.15.1 Usage and option summary\relax }{paragraph*.120}{}} +\@writefile{toc}{\contentsline {paragraph}{5.15.2 Default behavior}{54}{paragraph*.121}} +\newlabel{content/sortBed:default-behavior}{{2.5.1}{54}{5.15.2 Default behavior\relax }{paragraph*.121}{}} +\@writefile{toc}{\contentsline {paragraph}{5.15.3 Optional sorting behavior}{54}{paragraph*.122}} +\newlabel{content/sortBed:optional-sorting-behavior}{{2.5.1}{54}{5.15.3 Optional sorting behavior\relax }{paragraph*.122}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.16 linksBed}{54}{subsubsection*.123}} +\newlabel{content/linksBed:linksbed}{{2.5.1}{54}{5.16 linksBed\relax }{subsubsection*.123}{}} +\newlabel{content/linksBed::doc}{{2.5.1}{54}{5.16 linksBed\relax }{subsubsection*.123}{}} +\@writefile{toc}{\contentsline {paragraph}{5.16.1 Usage and option summary}{54}{paragraph*.124}} +\newlabel{content/linksBed:usage-and-option-summary}{{2.5.1}{54}{5.16.1 Usage and option summary\relax }{paragraph*.124}{}} +\@writefile{toc}{\contentsline {paragraph}{5.16.2 Default behavior}{55}{paragraph*.125}} +\newlabel{content/linksBed:default-behavior}{{2.5.1}{55}{5.16.2 Default behavior\relax }{paragraph*.125}{}} +\@writefile{toc}{\contentsline {paragraph}{5.16.3 Creating HTML links to a local UCSC Browser installation}{55}{paragraph*.126}} +\newlabel{content/linksBed:creating-html-links-to-a-local-ucsc-browser-installation}{{2.5.1}{55}{5.16.3 Creating HTML links to a local UCSC Browser installation\relax }{paragraph*.126}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.17 complementBed}{55}{subsubsection*.127}} +\newlabel{content/complementBed:complementbed}{{2.5.1}{55}{5.17 complementBed\relax }{subsubsection*.127}{}} +\newlabel{content/complementBed::doc}{{2.5.1}{55}{5.17 complementBed\relax }{subsubsection*.127}{}} +\@writefile{toc}{\contentsline {paragraph}{5.17.1 Usage and option summary}{56}{paragraph*.128}} +\newlabel{content/complementBed:usage-and-option-summary}{{2.5.1}{56}{5.17.1 Usage and option summary\relax }{paragraph*.128}{}} +\@writefile{toc}{\contentsline {paragraph}{5.17.2 Default behavior}{56}{paragraph*.129}} +\newlabel{content/complementBed:default-behavior}{{2.5.1}{56}{5.17.2 Default behavior\relax }{paragraph*.129}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.18 bedToBam}{56}{subsubsection*.130}} +\newlabel{content/bedToBam::doc}{{2.5.1}{56}{5.18 bedToBam\relax }{subsubsection*.130}{}} +\newlabel{content/bedToBam:bedtobam}{{2.5.1}{56}{5.18 bedToBam\relax }{subsubsection*.130}{}} +\@writefile{toc}{\contentsline {paragraph}{5.18.1 Usage and option summary}{56}{paragraph*.131}} +\newlabel{content/bedToBam:usage-and-option-summary}{{2.5.1}{56}{5.18.1 Usage and option summary\relax }{paragraph*.131}{}} +\@writefile{toc}{\contentsline {paragraph}{5.18.2 Default behavior}{57}{paragraph*.132}} +\newlabel{content/bedToBam:default-behavior}{{2.5.1}{57}{5.18.2 Default behavior\relax }{paragraph*.132}{}} +\@writefile{toc}{\contentsline {paragraph}{5.18.3 Creating ``spliced'' BAM entries from ``blocked'' BED features}{57}{paragraph*.133}} +\newlabel{content/bedToBam:creating-spliced-bam-entries-from-blocked-bed-features}{{2.5.1}{57}{5.18.3 Creating ``spliced'' BAM entries from ``blocked'' BED features\relax }{paragraph*.133}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.19 overlap}{57}{subsubsection*.134}} +\newlabel{content/overlap::doc}{{2.5.1}{57}{5.19 overlap\relax }{subsubsection*.134}{}} +\newlabel{content/overlap:overlap}{{2.5.1}{57}{5.19 overlap\relax }{subsubsection*.134}{}} +\@writefile{toc}{\contentsline {paragraph}{5.19.1 Usage and option summary}{57}{paragraph*.135}} +\newlabel{content/overlap:usage-and-option-summary}{{2.5.1}{57}{5.19.1 Usage and option summary\relax }{paragraph*.135}{}} +\@writefile{toc}{\contentsline {paragraph}{5.19.2 Default behavior}{58}{paragraph*.136}} +\newlabel{content/overlap:default-behavior}{{2.5.1}{58}{5.19.2 Default behavior\relax }{paragraph*.136}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.20 bedToIgv}{58}{subsubsection*.137}} +\newlabel{content/bedToIgv:bedtoigv}{{2.5.1}{58}{5.20 bedToIgv\relax }{subsubsection*.137}{}} +\newlabel{content/bedToIgv::doc}{{2.5.1}{58}{5.20 bedToIgv\relax }{subsubsection*.137}{}} +\@writefile{toc}{\contentsline {paragraph}{5.20.1 Usage and option summary}{58}{paragraph*.138}} +\newlabel{content/bedToIgv:usage-and-option-summary}{{2.5.1}{58}{5.20.1 Usage and option summary\relax }{paragraph*.138}{}} +\@writefile{toc}{\contentsline {paragraph}{5.20.2 Default behavior}{59}{paragraph*.139}} +\newlabel{content/bedToIgv:default-behavior}{{2.5.1}{59}{5.20.2 Default behavior\relax }{paragraph*.139}{}} +\@writefile{toc}{\contentsline {paragraph}{5.20.3 Using a bedToIgv batch script within IGV.}{59}{paragraph*.140}} +\newlabel{content/bedToIgv:using-a-bedtoigv-batch-script-within-igv}{{2.5.1}{59}{5.20.3 Using a bedToIgv batch script within IGV}{paragraph*.140}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.21 bed12ToBed6}{59}{subsubsection*.141}} +\newlabel{content/bed12ToBed6::doc}{{2.5.1}{59}{5.21 bed12ToBed6\relax }{subsubsection*.141}{}} +\newlabel{content/bed12ToBed6:bed12tobed6}{{2.5.1}{59}{5.21 bed12ToBed6\relax }{subsubsection*.141}{}} +\@writefile{toc}{\contentsline {paragraph}{5.21.1 Usage and option summary}{59}{paragraph*.142}} +\newlabel{content/bed12ToBed6:usage-and-option-summary}{{2.5.1}{59}{5.21.1 Usage and option summary\relax }{paragraph*.142}{}} +\@writefile{toc}{\contentsline {paragraph}{5.21.2 Default behavior}{59}{paragraph*.143}} +\newlabel{content/bed12ToBed6:default-behavior}{{2.5.1}{59}{5.21.2 Default behavior\relax }{paragraph*.143}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.22 groupBy}{60}{subsubsection*.144}} +\newlabel{content/groupBy::doc}{{2.5.1}{60}{5.22 groupBy\relax }{subsubsection*.144}{}} +\newlabel{content/groupBy:groupby}{{2.5.1}{60}{5.22 groupBy\relax }{subsubsection*.144}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.1 Usage and option summary}{60}{paragraph*.145}} +\newlabel{content/groupBy:usage-and-option-summary}{{2.5.1}{60}{5.22.1 Usage and option summary\relax }{paragraph*.145}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.2 Default behavior.}{61}{paragraph*.146}} +\newlabel{content/groupBy:default-behavior}{{2.5.1}{61}{5.22.2 Default behavior}{paragraph*.146}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.3 Computing the min and max.}{62}{paragraph*.147}} +\newlabel{content/groupBy:computing-the-min-and-max}{{2.5.1}{62}{5.22.3 Computing the min and max}{paragraph*.147}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.4 Computing the mean and median.}{62}{paragraph*.148}} +\newlabel{content/groupBy:computing-the-mean-and-median}{{2.5.1}{62}{5.22.4 Computing the mean and median}{paragraph*.148}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.5 Computing the mode and ``antimode''.}{63}{paragraph*.149}} +\newlabel{content/groupBy:computing-the-mode-and-antimode}{{2.5.1}{63}{5.22.5 Computing the mode and ``antimode''}{paragraph*.149}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.6 Computing the count of lines for a given group.}{63}{paragraph*.150}} +\newlabel{content/groupBy:computing-the-count-of-lines-for-a-given-group}{{2.5.1}{63}{5.22.6 Computing the count of lines for a given group}{paragraph*.150}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.7 Collapsing: listing all of the values in the opCol for a given group.}{63}{paragraph*.151}} +\newlabel{content/groupBy:collapsing-listing-all-of-the-values-in-the-opcol-for-a-given-group}{{2.5.1}{63}{5.22.7 Collapsing: listing all of the values in the opCol for a given group}{paragraph*.151}{}} +\@writefile{toc}{\contentsline {paragraph}{5.22.8 Computing frequencies: freqasc and freqdesc.}{63}{paragraph*.152}} +\newlabel{content/groupBy:computing-frequencies-freqasc-and-freqdesc}{{2.5.1}{63}{5.22.8 Computing frequencies: freqasc and freqdesc}{paragraph*.152}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.23 unionBedGraphs}{64}{subsubsection*.153}} +\newlabel{content/unionBedGraphs:unionbedgraphs}{{2.5.1}{64}{5.23 unionBedGraphs\relax }{subsubsection*.153}{}} +\newlabel{content/unionBedGraphs::doc}{{2.5.1}{64}{5.23 unionBedGraphs\relax }{subsubsection*.153}{}} +\@writefile{toc}{\contentsline {paragraph}{5.23.1 Usage and option summary}{64}{paragraph*.154}} +\newlabel{content/unionBedGraphs:usage-and-option-summary}{{2.5.1}{64}{5.23.1 Usage and option summary\relax }{paragraph*.154}{}} +\@writefile{toc}{\contentsline {paragraph}{5.23.2 Default behavior}{64}{paragraph*.155}} +\newlabel{content/unionBedGraphs:default-behavior}{{2.5.1}{64}{5.23.2 Default behavior\relax }{paragraph*.155}{}} +\@writefile{toc}{\contentsline {paragraph}{5.23.3 Add a header line to the output}{65}{paragraph*.156}} +\newlabel{content/unionBedGraphs:add-a-header-line-to-the-output}{{2.5.1}{65}{5.23.3 Add a header line to the output\relax }{paragraph*.156}{}} +\@writefile{toc}{\contentsline {paragraph}{5.23.4 Add a header line with custom file names to the output}{65}{paragraph*.157}} +\newlabel{content/unionBedGraphs:add-a-header-line-with-custom-file-names-to-the-output}{{2.5.1}{65}{5.23.4 Add a header line with custom file names to the output\relax }{paragraph*.157}{}} +\@writefile{toc}{\contentsline {paragraph}{5.23.5 Include regions that have zero coverage in all BEDGRAPH files.}{65}{paragraph*.158}} +\newlabel{content/unionBedGraphs:include-regions-that-have-zero-coverage-in-all-bedgraph-files}{{2.5.1}{65}{5.23.5 Include regions that have zero coverage in all BEDGRAPH files}{paragraph*.158}{}} +\@writefile{toc}{\contentsline {paragraph}{5.23.6 Use a custom value for missing values.}{65}{paragraph*.159}} +\newlabel{content/unionBedGraphs:use-a-custom-value-for-missing-values}{{2.5.1}{65}{5.23.6 Use a custom value for missing values}{paragraph*.159}{}} +\@writefile{toc}{\contentsline {paragraph}{5.23.7 Use BEDGRAPH files with non-numeric values.}{66}{paragraph*.160}} +\newlabel{content/unionBedGraphs:use-bedgraph-files-with-non-numeric-values}{{2.5.1}{66}{5.23.7 Use BEDGRAPH files with non-numeric values}{paragraph*.160}{}} +\@writefile{toc}{\contentsline {subsubsection}{5.24 annotateBed}{66}{subsubsection*.161}} +\newlabel{content/annotateBed::doc}{{2.5.1}{66}{5.24 annotateBed\relax }{subsubsection*.161}{}} +\newlabel{content/annotateBed:annotatebed}{{2.5.1}{66}{5.24 annotateBed\relax }{subsubsection*.161}{}} +\@writefile{toc}{\contentsline {paragraph}{5.24.1 Usage and option summary}{66}{paragraph*.162}} +\newlabel{content/annotateBed:usage-and-option-summary}{{2.5.1}{66}{5.24.1 Usage and option summary\relax }{paragraph*.162}{}} +\@writefile{toc}{\contentsline {paragraph}{5.24.2 Default behavior - annotate one file with coverage from others.}{67}{paragraph*.163}} +\newlabel{content/annotateBed:default-behavior-annotate-one-file-with-coverage-from-others}{{2.5.1}{67}{5.24.2 Default behavior - annotate one file with coverage from others}{paragraph*.163}{}} +\@writefile{toc}{\contentsline {paragraph}{5.24.3 Report the count of hits from the annotation files}{67}{paragraph*.164}} +\newlabel{content/annotateBed:report-the-count-of-hits-from-the-annotation-files}{{2.5.1}{67}{5.24.3 Report the count of hits from the annotation files\relax }{paragraph*.164}{}} +\@writefile{toc}{\contentsline {paragraph}{5.24.4 Report both the count of hits and the fraction covered from the annotation files}{67}{paragraph*.165}} +\newlabel{content/annotateBed:report-both-the-count-of-hits-and-the-fraction-covered-from-the-annotation-files}{{2.5.1}{67}{5.24.4 Report both the count of hits and the fraction covered from the annotation files\relax }{paragraph*.165}{}} +\@writefile{toc}{\contentsline {paragraph}{5.24.5 Restrict the reporting to overlaps on the same strand.}{68}{paragraph*.166}} +\newlabel{content/annotateBed:restrict-the-reporting-to-overlaps-on-the-same-strand}{{2.5.1}{68}{5.24.5 Restrict the reporting to overlaps on the same strand}{paragraph*.166}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.6}Example usage}{68}{section.2.6}} +\newlabel{content/example-usage:example-usage}{{2.6}{68}{Example usage\relax }{section.2.6}{}} +\newlabel{content/example-usage::doc}{{2.6}{68}{Example usage\relax }{section.2.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.1}6.1 intersectBed}{68}{subsection.2.6.1}} +\newlabel{content/example-usage:intersectbed}{{2.6.1}{68}{6.1 intersectBed\relax }{subsection.2.6.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.2}6.2 pairToBed}{69}{subsection.2.6.2}} +\newlabel{content/example-usage:pairtobed}{{2.6.2}{69}{6.2 pairToBed\relax }{subsection.2.6.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.3}6.3 pairToPair}{69}{subsection.2.6.3}} +\newlabel{content/example-usage:pairtopair}{{2.6.3}{69}{6.3 pairToPair\relax }{subsection.2.6.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.4}6.4 bamToBed}{69}{subsection.2.6.4}} +\newlabel{content/example-usage:bamtobed}{{2.6.4}{69}{6.4 bamToBed\relax }{subsection.2.6.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.5}6.5 windowBed}{70}{subsection.2.6.5}} +\newlabel{content/example-usage:windowbed}{{2.6.5}{70}{6.5 windowBed\relax }{subsection.2.6.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.6}6.6 closestBed}{70}{subsection.2.6.6}} +\newlabel{content/example-usage:closestbed}{{2.6.6}{70}{6.6 closestBed\relax }{subsection.2.6.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.7}6.7 subtractBed}{70}{subsection.2.6.7}} +\newlabel{content/example-usage:subtractbed}{{2.6.7}{70}{6.7 subtractBed\relax }{subsection.2.6.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.8}6.8 mergeBed}{70}{subsection.2.6.8}} +\newlabel{content/example-usage:mergebed}{{2.6.8}{70}{6.8 mergeBed\relax }{subsection.2.6.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.9}6.9 coverageBed}{71}{subsection.2.6.9}} +\newlabel{content/example-usage:coveragebed}{{2.6.9}{71}{6.9 coverageBed\relax }{subsection.2.6.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.10}6.10 complementBed}{71}{subsection.2.6.10}} +\newlabel{content/example-usage:complementbed}{{2.6.10}{71}{6.10 complementBed\relax }{subsection.2.6.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.6.11}6.11 shuffleBed}{71}{subsection.2.6.11}} +\newlabel{content/example-usage:shufflebed}{{2.6.11}{71}{6.11 shuffleBed\relax }{subsection.2.6.11}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.7}Advanced usage}{71}{section.2.7}} +\newlabel{content/advanced-usage::doc}{{2.7}{71}{Advanced usage\relax }{section.2.7}{}} +\newlabel{content/advanced-usage:advanced-usage}{{2.7}{71}{Advanced usage\relax }{section.2.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.7.1}7.1 Mask all regions in a genome except for targeted capture regions.}{71}{subsection.2.7.1}} +\newlabel{content/advanced-usage:mask-all-regions-in-a-genome-except-for-targeted-capture-regions}{{2.7.1}{71}{7.1 Mask all regions in a genome except for targeted capture regions}{subsection.2.7.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.7.2}7.2 Screening for novel SNPs.}{72}{subsection.2.7.2}} +\newlabel{content/advanced-usage:screening-for-novel-snps}{{2.7.2}{72}{7.2 Screening for novel SNPs}{subsection.2.7.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.7.3}7.4 Computing the coverage of BAM alignments on exons.}{72}{subsection.2.7.3}} +\newlabel{content/advanced-usage:computing-the-coverage-of-bam-alignments-on-exons}{{2.7.3}{72}{7.4 Computing the coverage of BAM alignments on exons}{subsection.2.7.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.7.4}7.5 Computing coverage separately for each strand.}{72}{subsection.2.7.4}} +\newlabel{content/advanced-usage:computing-coverage-separately-for-each-strand}{{2.7.4}{72}{7.5 Computing coverage separately for each strand}{subsection.2.7.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.7.5}7.6 Find structural variant calls that are private to one sample.}{72}{subsection.2.7.5}} +\newlabel{content/advanced-usage:find-structural-variant-calls-that-are-private-to-one-sample}{{2.7.5}{72}{7.6 Find structural variant calls that are private to one sample}{subsection.2.7.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.7.6}7.7 Exclude SV deletions that appear to be ALU insertions in the reference genome.}{73}{subsection.2.7.6}} +\newlabel{content/advanced-usage:exclude-sv-deletions-that-appear-to-be-alu-insertions-in-the-reference-genome}{{2.7.6}{73}{7.7 Exclude SV deletions that appear to be ALU insertions in the reference genome}{subsection.2.7.6}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Mailing list}{75}{chapter.3}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{index:mailing-list}{{3}{75}{Mailing list\relax }{chapter.3}{}} diff --git a/docs/_build/latex/bedtools.idx b/docs/_build/latex/bedtools.idx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs/_build/latex/bedtools.ilg b/docs/_build/latex/bedtools.ilg new file mode 100644 index 0000000000000000000000000000000000000000..37d9dd581dac21ece6b7d8d22619c7911c9908b0 --- /dev/null +++ b/docs/_build/latex/bedtools.ilg @@ -0,0 +1,5 @@ +This is makeindex, version 2.15 [TeX Live 2011] (kpathsea + Thai support). +Scanning style file ./python.ist......done (6 attributes redefined, 0 ignored). +Scanning input file bedtools.idx...done (0 entries accepted, 0 rejected). +Nothing written in bedtools.ind. +Transcript written in bedtools.ilg. diff --git a/docs/_build/latex/bedtools.ind b/docs/_build/latex/bedtools.ind new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs/_build/latex/bedtools.log b/docs/_build/latex/bedtools.log new file mode 100644 index 0000000000000000000000000000000000000000..ea7d0c757f9ba8cfc519ef7927495646e9c754fe --- /dev/null +++ b/docs/_build/latex/bedtools.log @@ -0,0 +1,1131 @@ +This is pdfTeX, Version 3.1415926-2.3-1.40.12 (TeX Live 2011) (format=pdflatex 2011.7.3) 21 JUL 2012 11:01 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**bedtools.tex +(./bedtools.tex +LaTeX2e <2009/09/24> +Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ge +rman-x-2009-06-19, ngerman-x-2009-06-19, afrikaans, ancientgreek, ibycus, arabi +c, armenian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danis +h, dutch, ukenglish, usenglishmax, esperanto, estonian, ethiopic, farsi, finnis +h, french, galician, german, ngerman, swissgerman, monogreek, greek, hungarian, + icelandic, assamese, bengali, gujarati, hindi, kannada, malayalam, marathi, or +iya, panjabi, tamil, telugu, indonesian, interlingua, irish, italian, kurmanji, + lao, latin, latvian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, pol +ish, portuguese, romanian, russian, sanskrit, serbian, serbianc, slovak, sloven +ian, spanish, swedish, turkish, turkmen, ukrainian, uppersorbian, welsh, loaded +. +(./sphinxmanual.cls +Document Class: sphinxmanual 2009/06/02 Document class (Sphinx manual) +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/report.cls +Document Class: report 2007/10/19 v1.4h Standard LaTeX document class +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@chapter=\count80 +\c@section=\count81 +\c@subsection=\count82 +\c@subsubsection=\count83 +\c@paragraph=\count84 +\c@subparagraph=\count85 +\c@figure=\count86 +\c@table=\count87 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +)) +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2008/03/30 v1.1d Input encoding file +\inpenc@prehook=\toks14 +\inpenc@posthook=\toks15 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/utf8.def +File: utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc +Now handling font encoding OML ... +... no UTF-8 mapping file for font encoding OML +Now handling font encoding T1 ... +... processing UTF-8 mapping file for font encoding T1 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/t1enc.dfu +File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00AB (decimal 171) + defining Unicode char U+00BB (decimal 187) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C0 (decimal 192) + defining Unicode char U+00C1 (decimal 193) + defining Unicode char U+00C2 (decimal 194) + defining Unicode char U+00C3 (decimal 195) + defining Unicode char U+00C4 (decimal 196) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00C7 (decimal 199) + defining Unicode char U+00C8 (decimal 200) + defining Unicode char U+00C9 (decimal 201) + defining Unicode char U+00CA (decimal 202) + defining Unicode char U+00CB (decimal 203) + defining Unicode char U+00CC (decimal 204) + defining Unicode char U+00CD (decimal 205) + defining Unicode char U+00CE (decimal 206) + defining Unicode char U+00CF (decimal 207) + defining Unicode char U+00D0 (decimal 208) + defining Unicode char U+00D1 (decimal 209) + defining Unicode char U+00D2 (decimal 210) + defining Unicode char U+00D3 (decimal 211) + defining Unicode char U+00D4 (decimal 212) + defining Unicode char U+00D5 (decimal 213) + defining Unicode char U+00D6 (decimal 214) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00D9 (decimal 217) + defining Unicode char U+00DA (decimal 218) + defining Unicode char U+00DB (decimal 219) + defining Unicode char U+00DC (decimal 220) + defining Unicode char U+00DD (decimal 221) + defining Unicode char U+00DE (decimal 222) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E0 (decimal 224) + defining Unicode char U+00E1 (decimal 225) + defining Unicode char U+00E2 (decimal 226) + defining Unicode char U+00E3 (decimal 227) + defining Unicode char U+00E4 (decimal 228) + defining Unicode char U+00E5 (decimal 229) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00E7 (decimal 231) + defining Unicode char U+00E8 (decimal 232) + defining Unicode char U+00E9 (decimal 233) + defining Unicode char U+00EA (decimal 234) + defining Unicode char U+00EB (decimal 235) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F0 (decimal 240) + defining Unicode char U+00F1 (decimal 241) + defining Unicode char U+00F2 (decimal 242) + defining Unicode char U+00F3 (decimal 243) + defining Unicode char U+00F4 (decimal 244) + defining Unicode char U+00F5 (decimal 245) + defining Unicode char U+00F6 (decimal 246) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+00F9 (decimal 249) + defining Unicode char U+00FA (decimal 250) + defining Unicode char U+00FB (decimal 251) + defining Unicode char U+00FC (decimal 252) + defining Unicode char U+00FD (decimal 253) + defining Unicode char U+00FE (decimal 254) + defining Unicode char U+00FF (decimal 255) + defining Unicode char U+0102 (decimal 258) + defining Unicode char U+0103 (decimal 259) + defining Unicode char U+0104 (decimal 260) + defining Unicode char U+0105 (decimal 261) + defining Unicode char U+0106 (decimal 262) + defining Unicode char U+0107 (decimal 263) + defining Unicode char U+010C (decimal 268) + defining Unicode char U+010D (decimal 269) + defining Unicode char U+010E (decimal 270) + defining Unicode char U+010F (decimal 271) + defining Unicode char U+0110 (decimal 272) + defining Unicode char U+0111 (decimal 273) + defining Unicode char U+0118 (decimal 280) + defining Unicode char U+0119 (decimal 281) + defining Unicode char U+011A (decimal 282) + defining Unicode char U+011B (decimal 283) + defining Unicode char U+011E (decimal 286) + defining Unicode char U+011F (decimal 287) + defining Unicode char U+0130 (decimal 304) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0132 (decimal 306) + defining Unicode char U+0133 (decimal 307) + defining Unicode char U+0139 (decimal 313) + defining Unicode char U+013A (decimal 314) + defining Unicode char U+013D (decimal 317) + defining Unicode char U+013E (decimal 318) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0143 (decimal 323) + defining Unicode char U+0144 (decimal 324) + defining Unicode char U+0147 (decimal 327) + defining Unicode char U+0148 (decimal 328) + defining Unicode char U+014A (decimal 330) + defining Unicode char U+014B (decimal 331) + defining Unicode char U+0150 (decimal 336) + defining Unicode char U+0151 (decimal 337) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0154 (decimal 340) + defining Unicode char U+0155 (decimal 341) + defining Unicode char U+0158 (decimal 344) + defining Unicode char U+0159 (decimal 345) + defining Unicode char U+015A (decimal 346) + defining Unicode char U+015B (decimal 347) + defining Unicode char U+015E (decimal 350) + defining Unicode char U+015F (decimal 351) + defining Unicode char U+0160 (decimal 352) + defining Unicode char U+0161 (decimal 353) + defining Unicode char U+0162 (decimal 354) + defining Unicode char U+0163 (decimal 355) + defining Unicode char U+0164 (decimal 356) + defining Unicode char U+0165 (decimal 357) + defining Unicode char U+016E (decimal 366) + defining Unicode char U+016F (decimal 367) + defining Unicode char U+0170 (decimal 368) + defining Unicode char U+0171 (decimal 369) + defining Unicode char U+0178 (decimal 376) + defining Unicode char U+0179 (decimal 377) + defining Unicode char U+017A (decimal 378) + defining Unicode char U+017B (decimal 379) + defining Unicode char U+017C (decimal 380) + defining Unicode char U+017D (decimal 381) + defining Unicode char U+017E (decimal 382) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201A (decimal 8218) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) + defining Unicode char U+201E (decimal 8222) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+2039 (decimal 8249) + defining Unicode char U+203A (decimal 8250) + defining Unicode char U+2423 (decimal 9251) +) +Now handling font encoding OT1 ... +... processing UTF-8 mapping file for font encoding OT1 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/ot1enc.dfu +File: ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00B8 (decimal 184) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) +) +Now handling font encoding OMS ... +... processing UTF-8 mapping file for font encoding OMS + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/omsenc.dfu +File: omsenc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) +) +Now handling font encoding OMX ... +... no UTF-8 mapping file for font encoding OMX +Now handling font encoding U ... +... no UTF-8 mapping file for font encoding U + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+02C6 (decimal 710) + defining Unicode char U+02DC (decimal 732) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2026 (decimal 8230) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2423 (decimal 9251) +)) + defining Unicode char U+00A0 (decimal 160) + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2005/09/27 v1.99g Standard LaTeX package + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 43. +)) +(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2008/07/06 v3.8l The Babel package + +(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/english.ldf +Language: english 2005/03/30 v3.3o English support from the babel system + +(/usr/local/texlive/2011/texmf-dist/tex/generic/babel/babel.def +File: babel.def 2008/07/06 v3.8l Babel common definitions +\babel@savecnt=\count88 +\U@D=\dimen103 +) +\l@canadian = a dialect from \language\l@american +\l@australian = a dialect from \language\l@british +\l@newzealand = a dialect from \language\l@british +)) +(/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/times.sty +Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) +) (./fncychap.sty +Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters) +\RW=\skip43 +\mylen=\skip44 +\myhi=\skip45 +\px=\skip46 +\py=\skip47 +\pyy=\skip48 +\pxx=\skip49 +\c@AlphaCnt=\count89 +\c@AlphaDecCnt=\count90 +) (/usr/local/texlive/2011/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2004/02/01 v4.11 Multi-page Table package (DPC) +\LTleft=\skip50 +\LTright=\skip51 +\LTpre=\skip52 +\LTpost=\skip53 +\LTchunksize=\count91 +\LTcapwidth=\dimen104 +\LT@head=\box26 +\LT@firsthead=\box27 +\LT@foot=\box28 +\LT@lastfoot=\box29 +\LT@cols=\count92 +\LT@rows=\count93 +\c@LT@tables=\count94 +\c@LT@chunks=\count95 +\LT@p@ftn=\toks16 +) +(./sphinx.sty +Package: sphinx 2010/01/15 LaTeX package (Sphinx markup) + (/usr/local/texlive/2011/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2005/09/27 v1.99g Standard LaTeX package +Package textcomp Info: Sub-encoding information: +(textcomp) 5 = only ISO-Adobe without \textcurrency +(textcomp) 4 = 5 + \texteuro +(textcomp) 3 = 4 + \textohm +(textcomp) 2 = 3 + \textestimated + \textcurrency +(textcomp) 1 = TS1 - \textcircled - \t +(textcomp) 0 = TS1 (full) +(textcomp) Font families with sub-encoding setting implement +(textcomp) only a restricted character set as indicated. +(textcomp) Family '?' is the default used for unknown fonts. +(textcomp) See the documentation for details. +Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 71. + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/ts1enc.def +File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file +Now handling font encoding TS1 ... +... processing UTF-8 mapping file for font encoding TS1 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/ts1enc.dfu +File: ts1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A2 (decimal 162) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00A4 (decimal 164) + defining Unicode char U+00A5 (decimal 165) + defining Unicode char U+00A6 (decimal 166) + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00A8 (decimal 168) + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AC (decimal 172) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00AF (decimal 175) + defining Unicode char U+00B0 (decimal 176) + defining Unicode char U+00B1 (decimal 177) + defining Unicode char U+00B2 (decimal 178) + defining Unicode char U+00B3 (decimal 179) + defining Unicode char U+00B4 (decimal 180) + defining Unicode char U+00B5 (decimal 181) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+00B9 (decimal 185) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+00BC (decimal 188) + defining Unicode char U+00BD (decimal 189) + defining Unicode char U+00BE (decimal 190) + defining Unicode char U+00D7 (decimal 215) + defining Unicode char U+00F7 (decimal 247) + defining Unicode char U+0192 (decimal 402) + defining Unicode char U+02C7 (decimal 711) + defining Unicode char U+02D8 (decimal 728) + defining Unicode char U+02DD (decimal 733) + defining Unicode char U+0E3F (decimal 3647) + defining Unicode char U+2016 (decimal 8214) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+203B (decimal 8251) + defining Unicode char U+203D (decimal 8253) + defining Unicode char U+2044 (decimal 8260) + defining Unicode char U+204E (decimal 8270) + defining Unicode char U+2052 (decimal 8274) + defining Unicode char U+20A1 (decimal 8353) + defining Unicode char U+20A4 (decimal 8356) + defining Unicode char U+20A6 (decimal 8358) + defining Unicode char U+20A9 (decimal 8361) + defining Unicode char U+20AB (decimal 8363) + defining Unicode char U+20AC (decimal 8364) + defining Unicode char U+20B1 (decimal 8369) + defining Unicode char U+2103 (decimal 8451) + defining Unicode char U+2116 (decimal 8470) + defining Unicode char U+2117 (decimal 8471) + defining Unicode char U+211E (decimal 8478) + defining Unicode char U+2120 (decimal 8480) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2126 (decimal 8486) + defining Unicode char U+2127 (decimal 8487) + defining Unicode char U+212E (decimal 8494) + defining Unicode char U+2190 (decimal 8592) + defining Unicode char U+2191 (decimal 8593) + defining Unicode char U+2192 (decimal 8594) + defining Unicode char U+2193 (decimal 8595) + defining Unicode char U+2329 (decimal 9001) + defining Unicode char U+232A (decimal 9002) + defining Unicode char U+2422 (decimal 9250) + defining Unicode char U+25E6 (decimal 9702) + defining Unicode char U+25EF (decimal 9711) + defining Unicode char U+266A (decimal 9834) +)) +LaTeX Info: Redefining \oldstylenums on input line 266. +Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 281. +Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 282. +Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 283. +Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 284. +Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 285. +Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 286. +Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 287. +Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 288. +Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 289. +Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 290. +Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 291. +Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 292. +Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 293. +Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 294. +Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 295. +Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 296. +Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 297. +Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 298. +Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 299. +Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 300. +Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 301. +Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 302. +Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 303. +Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 304. + +Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 305. +Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 306. +Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 307. +Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 308. +Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 309. +Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 310. +Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 311. +Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 312. +Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 313. +Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 314. +Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 315. +Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 316. +Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 317. +Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 318. +Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 319. +Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 320. +Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 321. +Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 322. +Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 323. +Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 324. +Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 325. +Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 326. +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +\fancy@headwidth=\skip54 +\f@ncyO@elh=\skip55 +\f@ncyO@erh=\skip56 +\f@ncyO@olh=\skip57 +\f@ncyO@orh=\skip58 +\f@ncyO@elf=\skip59 +\f@ncyO@erf=\skip60 +\f@ncyO@olf=\skip61 +\f@ncyO@orf=\skip62 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/fancybox/fancybox.sty +Package: fancybox 2010/05/15 1.4 + +Style option: `fancybox' v1.4 <2010/05/15> (tvz) +\@fancybox=\box30 +\shadowsize=\dimen105 +\@Sbox=\box31 +\do@VerbBox=\toks17 +\the@fancyput=\toks18 +\this@fancyput=\toks19 +\EndVerbatimTokens=\toks20 +\Verbatim@Outfile=\write3 +\Verbatim@Infile=\read1 +) (/usr/local/texlive/2011/texmf-dist/tex/latex/titlesec/titlesec.sty +Package: titlesec 2007/08/12 v2.8 Sectioning titles +\ttl@box=\box32 +\beforetitleunit=\skip63 +\aftertitleunit=\skip64 +\ttl@plus=\dimen106 +\ttl@minus=\dimen107 +\ttl@toksa=\toks21 +\titlewidth=\dimen108 +\titlewidthlast=\dimen109 +\titlewidthfirst=\dimen110 +) +(./tabulary.sty +Package: tabulary 2007/10/02 v0.9 tabulary package (DPC) + (/usr/local/texlive/2011/texmf-dist/tex/latex/tools/array.sty +Package: array 2008/09/09 v2.4c Tabular extension package (FMi) +\col@sep=\dimen111 +\extrarowheight=\dimen112 +\NC@list=\toks22 +\extratabsurround=\skip65 +\backup@length=\skip66 +) +\TY@count=\count96 +\TY@linewidth=\dimen113 +\tymin=\dimen114 +\tymax=\dimen115 +\TY@tablewidth=\dimen116 +) (/usr/local/texlive/2011/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2000/07/18 v2.13 AMS math features +\@mathmargin=\skip67 + +For additional information on amsmath, use the `?' option. +(/usr/local/texlive/2011/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 +\@emptytoks=\toks23 +\ex@=\dimen117 +)) +(/usr/local/texlive/2011/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d +\pmbraise@=\dimen118 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count97 +LaTeX Info: Redefining \frac on input line 211. +\uproot@=\count98 +\leftroot@=\count99 +LaTeX Info: Redefining \overline on input line 307. +\classnum@=\count100 +\DOTSCASE@=\count101 +LaTeX Info: Redefining \ldots on input line 379. +LaTeX Info: Redefining \dots on input line 382. +LaTeX Info: Redefining \cdots on input line 467. +\Mathstrutbox@=\box33 +\strutbox@=\box34 +\big@size=\dimen119 +LaTeX Font Info: Redeclaring font encoding OML on input line 567. +LaTeX Font Info: Redeclaring font encoding OMS on input line 568. +\macc@depth=\count102 +\c@MaxMatrixCols=\count103 +\dotsspace@=\muskip10 +\c@parentequation=\count104 +\dspbrk@lvl=\count105 +\tag@help=\toks24 +\row@=\count106 +\column@=\count107 +\maxfields@=\count108 +\andhelp@=\toks25 +\eqnshift@=\dimen120 +\alignsep@=\dimen121 +\tagshift@=\dimen122 +\tagwidth@=\dimen123 +\totwidth@=\dimen124 +\lineht@=\dimen125 +\@envbody=\toks26 +\multlinegap=\skip68 +\multlinetaggap=\skip69 +\mathdisplay@stack=\toks27 +LaTeX Info: Redefining \[ on input line 2666. +LaTeX Info: Redefining \] on input line 2667. +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/makeidx.sty +Package: makeidx 2000/03/29 v1.0m Standard LaTeX package +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/framed/framed.sty +Package: framed 2007/10/04 v 0.95: framed or shaded text with page breaks +\fb@frw=\dimen126 +\fb@frh=\dimen127 +\FrameRule=\dimen128 +\FrameSep=\dimen129 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC) +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/color.sty +Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC) + +(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package color Info: Driver file: pdftex.def on input line 130. + +(/usr/local/texlive/2011/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/message (HO) +) +(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/04/18 v1.20 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count109 +)) +(/usr/local/texlive/2011/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2008/02/07 + +Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix +<2008/02/07> (tvz) +(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 1999/03/16 v1.13 key=value parser (DPC) +\KV@toks@=\toks28 +) +\FV@CodeLineNo=\count110 +\FV@InFile=\read2 +\FV@TabBox=\box35 +\c@FancyVerbLine=\count111 +\FV@StepNumber=\count112 +\FV@OutFile=\write4 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/threeparttable/threeparttable.sty +Package: threeparttable 2003/06/13 v 3.0 +\@tempboxb=\box36 +) (/usr/local/texlive/2011/texmf-dist/tex/latex/mdwtools/footnote.sty +Package: footnote 1997/01/28 1.13 Save footnotes around boxes +\fn@notes=\box37 +\fn@width=\dimen130 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/wrapfig/wrapfig.sty +\wrapoverhang=\dimen131 +\WF@size=\dimen132 +\c@WF@wrappedlines=\count113 +\WF@box=\box38 +\WF@everypar=\toks29 +Package: wrapfig 2003/01/31 v 3.6 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/parskip/parskip.sty +Package: parskip 2001/04/09 non-zero parskip adjustments +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2011/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 91. +) +\Gin@req@height=\dimen133 +\Gin@req@width=\dimen134 +) +(/usr/local/texlive/2011/texmf-dist/tex/plain/misc/pdfcolor.tex) +\distancetoright=\skip70 +\py@argswidth=\skip71 +\py@noticelength=\skip72 +\lineblockindentation=\skip73 +\image@box=\box39 +\image@width=\dimen135 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2011/04/17 v6.82g Hypertext links for LaTeX + +(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2011/04/23 v1.4 Bundle oberdiek, subset hyperref (HO) + +(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2011/04/23 v1.4 Bundle oberdiek, subset generic (HO) +Package: hobsub 2011/04/23 v1.4 Subsetting bundle oberdiek (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +Package: ifvtex 2010/03/01 v1.5 Switches for detecting VTeX and its modes (HO) +Package ifvtex Info: VTeX not detected. +Package: intcalc 2007/09/27 v1.1 Expandable integer calculations (HO) +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +Package: etexcmds 2011/02/16 v1.5 Prefix for e-TeX command names (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +Package: kvsetkeys 2011/04/07 v1.13 Key value parser (HO) +Package: kvdefinekeys 2011/04/07 v1.3 Defining keys (HO) +Package: pdftexcmds 2011/04/22 v0.16 Utilities of pdfTeX for LuaTeX (HO) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2011/04/04 v1.12 Provides string conversions (HO) +Package: bigintcalc 2011/01/30 v1.2 Expandable big integer calculations (HO) +Package: bitset 2011/01/30 v1.1 Data type bit set (HO) +Package: uniquecounter 2011/01/30 v1.2 Provides unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) +Package: hopatch 2011/01/30 v1.0 Wrapper for package hooks (HO) +Package: xcolor-patch 2011/01/30 xcolor patch +Package: atveryend 2011/04/23 v1.7 Hooks at very end of document (HO) +Package atveryend Info: \enddocument detected (standard). +Package: atbegshi 2011/01/30 v1.15 At begin shipout hook (HO) +Package: refcount 2010/12/01 v3.2 Data extraction from references (HO) +Package: hycolor 2011/01/30 v1.7 Color options of hyperref/bookmark (HO) +) +(/usr/local/texlive/2011/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2010/12/23 v3.10 Keyval support for LaTeX options (HO) +) +\@linkdim=\dimen136 +\Hy@linkcounter=\count114 +\Hy@pagecounter=\count115 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2011/04/17 v6.82g Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +\Hy@SavedSpaceFactor=\count116 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Option `colorlinks' set `true' on input line 3905. +Package hyperref Info: Option `breaklinks' set `true' on input line 3905. +Package hyperref Info: Hyper figures OFF on input line 4026. +Package hyperref Info: Link nesting OFF on input line 4031. +Package hyperref Info: Hyper index ON on input line 4034. +Package hyperref Info: Plain pages OFF on input line 4041. +Package hyperref Info: Backreferencing OFF on input line 4046. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4264. +\c@Hy@tempcnt=\count117 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip11 +Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 4617. +\Fld@menulength=\count118 +\Field@Width=\dimen137 +\Fld@charsize=\dimen138 +Package hyperref Info: Hyper figures OFF on input line 5701. +Package hyperref Info: Link nesting OFF on input line 5706. +Package hyperref Info: Hyper index ON on input line 5709. +Package hyperref Info: backreferencing OFF on input line 5716. +Package hyperref Info: Link coloring ON on input line 5719. +Package hyperref Info: Link coloring with OCG OFF on input line 5726. +Package hyperref Info: PDF/A mode OFF on input line 5731. +LaTeX Info: Redefining \ref on input line 5771. +LaTeX Info: Redefining \pageref on input line 5775. +\Hy@abspage=\count119 +\c@Item=\count120 +\c@Hfootnote=\count121 +) + +Package hyperref Message: Driver (autodetected): hpdftex. + +(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2011/04/17 v6.82g Hyperref driver for pdfTeX +\Fld@listcount=\count122 +\c@bookmark@seq@number=\count123 + +(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip74 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/hypcap.sty +Package: hypcap 2011/02/16 v1.11 Adjusting anchors of captions (HO) +) +\DUlineblockindent=\skip75 +) +(/usr/local/texlive/2011/texmf-dist/tex/latex/multirow/multirow.sty +\bigstrutjot=\dimen139 +) +\@indexfile=\write5 +\openout5 = `bedtools.idx'. + + +Writing index file bedtools.idx +(./bedtools.aux) +\openout1 = `bedtools.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 110. +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 110. +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 110. +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 110. +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 110. +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 110. +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 110. +LaTeX Font Info: Try loading font information for TS1+cmr on input line 110. + + (/usr/local/texlive/2011/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 110. +LaTeX Font Info: ... okay on input line 110. +LaTeX Font Info: Try loading font information for T1+ptm on input line 110. + +(/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/t1ptm.fd +File: t1ptm.fd 2001/06/04 font definitions for T1/ptm. +) +(/usr/local/texlive/2011/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count124 +\scratchdimen=\dimen140 +\scratchbox=\box40 +\nofMPsegments=\count125 +\nofMParguments=\count126 +\everyMPshowfont=\toks30 +\MPscratchCnt=\count127 +\MPscratchDim=\dimen141 +\MPnumerator=\count128 +\makeMPintoPDFobject=\count129 +\everyMPtoPDFconversion=\toks31 +) (/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/local/texlive/2011/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Managing graphics extensions (HO) +) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/local/texlive/2011/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +\AtBeginShipoutBox=\box41 +Package hyperref Info: Link coloring ON on input line 110. + +(/usr/local/texlive/2011/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2010/04/30 v2.40 Cross-referencing by name of section + +(/usr/local/texlive/2011/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO) +) +\c@section@level=\count130 +) +LaTeX Info: Redefining \ref on input line 110. +LaTeX Info: Redefining \pageref on input line 110. +LaTeX Info: Redefining \nameref on input line 110. + +(./bedtools.out) (./bedtools.out) +\@outlinefile=\write6 +\openout6 = `bedtools.out'. + + +Underfull \hbox (badness 10000) in paragraph at lines 113--113 + + [] + +LaTeX Font Info: Try loading font information for T1+phv on input line 113. +(/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/t1phv.fd +File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv. +) +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <24.88> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 113. +LaTeX Font Info: Font shape `T1/phv/m/it' in size <17.28> not available +(Font) Font shape `T1/phv/m/sl' tried instead on input line 113. +LaTeX Font Info: Font shape `T1/phv/bx/it' in size <17.28> not available +(Font) Font shape `T1/phv/b/it' tried instead on input line 113. +LaTeX Font Info: Font shape `T1/phv/b/it' in size <17.28> not available +(Font) Font shape `T1/phv/b/sl' tried instead on input line 113. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <17.28> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 113. + [1 + +{/usr/local/texlive/2011/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2 + +] (./bedtools.toc +LaTeX Font Info: Font shape `T1/ptm/bx/n' in size <10> not available +(Font) Font shape `T1/ptm/b/n' tried instead on input line 2. +) +\tf@toc=\write7 +\openout7 = `bedtools.toc'. + + +Adding blank page after the table of contents. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <10> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 113. +pdfTeX warning (ext4): destination with the same identifier (name{page.i}) has +been already used, duplicate ignored +<to be read again> + \relax +l.113 \tableofcontents + [1 + +]pdfTeX warning (ext4): destination with the same identifier (name{page.ii}) ha +s been already used, duplicate ignored +<to be read again> + \relax +l.113 \tableofcontents + [2] +Chapter 1. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <14.4> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 118. +[1 + + +] [2 + +] +Chapter 2. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <12> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 129. + +Overfull \hbox (0.92122pt too wide) in paragraph at lines 306--306 +[]\T1/ptm/b/n/10 bed12ToBed6| + [] + + +Overfull \hbox (3.86118pt too wide) in paragraph at lines 306--306 +[]\T1/ptm/b/n/10 fastaFromBed| + [] + + +Overfull \hbox (6.3912pt too wide) in paragraph at lines 306--306 +\T1/ptm/b/n/10 FastaFromBed| + [] + +[3] [4] +LaTeX Font Info: Try loading font information for T1+pcr on input line 343. + (/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/t1pcr.fd +File: t1pcr.fd 2001/06/04 font definitions for T1/pcr. +) [5] +LaTeX Font Info: Font shape `T1/phv/bx/it' in size <10> not available +(Font) Font shape `T1/phv/b/it' tried instead on input line 393. +LaTeX Font Info: Font shape `T1/phv/b/it' in size <10> not available +(Font) Font shape `T1/phv/b/sl' tried instead on input line 393. + +[6] +Underfull \hbox (badness 6268) in paragraph at lines 471--475 +\T1/ptm/m/n/10 Browser web-site are ac-cept-able. For ex-am-ple, one can down-l +oad the hg19 chromInfo file here: + [] + +[7] [8] [9] +LaTeX Font Info: Try loading font information for TS1+ptm on input line 709. + + (/usr/local/texlive/2011/texmf-dist/tex/latex/psnfss/ts1ptm.fd +File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm. +) +[10] [11] +Underfull \hbox (badness 10000) in paragraph at lines 897--898 +[]\T1/ptm/m/n/10 The BEDPE for-mat is de-scribed be-low. The de-scrip-tion is m +od-i-fied from: + [] + +[12] +Overfull \hbox (13.9989pt too wide) in paragraph at lines 1084--1085 +\T1/ptm/m/n/10 The GFF for-mat is de-scribed on the Sanger In-sti-tute's web-si +te ([][]http://www.sanger.ac.uk/resources/software/gff/spec.html[][]). + [] + +[13] [14] +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <9> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 1266. + +Overfull \hbox (1.8124pt too wide) in paragraph at lines 1361--1361 +\T1/ptm/b/n/10 abam| + [] + + +Overfull \hbox (2.37233pt too wide) in paragraph at lines 1361--1361 +\T1/ptm/b/n/10 ubam| + [] + +[15] [16] +LaTeX Font Info: Font shape `T1/phv/bx/it' in size <9> not available +(Font) Font shape `T1/phv/b/it' tried instead on input line 1460. +LaTeX Font Info: Font shape `T1/phv/b/it' in size <9> not available +(Font) Font shape `T1/phv/b/sl' tried instead on input line 1460. + [17] [18] [19] [20] [21] +Underfull \hbox (badness 10000) in paragraph at lines 1813--1814 +[]\T1/ptm/m/n/10 Note: If chrom1 <> + [] + + +Underfull \hbox (badness 10000) in paragraph at lines 1822--1823 +[]\T1/ptm/m/n/10 Note: If chrom1 <> + [] + + +Overfull \hbox (1.71796pt too wide) in paragraph at lines 1741--1835 +[][] + [] + +[22] +Overfull \vbox (32.96994pt too high) has occurred while \output is active [] + + +[23] [24] [25] [26] [27] [28] +Overfull \hbox (1.71796pt too wide) in paragraph at lines 2180--2229 +[][] + [] + +[29] +LaTeX Font Info: Font shape `T1/ptm/bx/it' in size <10> not available +(Font) Font shape `T1/ptm/b/it' tried instead on input line 2327. + +Overfull \hbox (2266.84943pt too wide) in paragraph at lines 2327--2329 +[] + [] + + +Overfull \hbox (1.71796pt too wide) in paragraph at lines 2316--2361 +[][] + [] + +[30] [31] +Overfull \hbox (1.8124pt too wide) in paragraph at lines 2497--2497 +\T1/ptm/b/n/10 abam| + [] + + +Overfull \hbox (2.37233pt too wide) in paragraph at lines 2497--2497 +\T1/ptm/b/n/10 ubam| + [] + +[32] [33] [34] +Overfull \hbox (1.71796pt too wide) in paragraph at lines 2649--2682 +[][] + [] + +[35] [36] [37] [38] [39] [40] +Overfull \hbox (1.71796pt too wide) in paragraph at lines 3033--3085 +[][] + [] + +[41] [42] [43] +Overfull \hbox (1.71796pt too wide) in paragraph at lines 3261--3310 +[][] + [] + +[44] [45] [46] [47] [48] [49] +Overfull \hbox (5.51234pt too wide) in paragraph at lines 3652--3652 +\T1/ptm/b/n/10 chrom| + [] + +[50] [51] +LaTeX Font Info: Font shape `T1/pcr/bx/n' in size <9> not available +(Font) Font shape `T1/pcr/b/n' tried instead on input line 3797. + [52] [53] [54] [55] +Overfull \hbox (2.37233pt too wide) in paragraph at lines 4176--4176 +\T1/ptm/b/n/10 mapq| + [] + + +Overfull \hbox (2.37233pt too wide) in paragraph at lines 4176--4176 +\T1/ptm/b/n/10 ubam| + [] + + +Overfull \hbox (3.48232pt too wide) in paragraph at lines 4176--4176 +\T1/ptm/b/n/10 bed12| + [] + +[56] [57] +Underfull \hbox (badness 10000) in paragraph at lines 4289--4293 +\T1/ptm/b/n/10 bedToIgv \T1/ptm/m/n/10 cre-ates an IGV ([][]http://www.broadins +titute.org/igv/[][]) batch script (see: [][]http://[][] + [] + + +Overfull \hbox (1.25233pt too wide) in paragraph at lines 4347--4347 +\T1/ptm/b/n/10 name| + [] + +[58] [59] +Overfull \hbox (1.71796pt too wide) in paragraph at lines 4462--4524 +[][] + [] + +[60] [61] [62] [63] [64] [65] +Overfull \hbox (6.12906pt too wide) in paragraph at lines 4915--4915 +\T1/ptm/b/n/10 namesr| + [] + + +Overfull \hbox (2.24905pt too wide) in paragraph at lines 4915--4915 +\T1/ptm/b/n/10 counts| + [] + +[66] [67] [68] [69] [70] [71] [72] [73] [74 + +] +Chapter 3. +(./bedtools.ind) +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 5394. + [75] +Package atveryend Info: Empty hook `AfterLastShipout' on input line 5394. + (./bedtools.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 5394. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 5394. + +Package rerunfilecheck Info: File `bedtools.out' has not changed. +(rerunfilecheck) Checksum: 5C046F6ADF8B6680025890F98DBD26AC;554. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 5394. + ) +Here is how much of TeX's memory you used: + 9283 strings out of 493633 + 136195 string characters out of 3143378 + 242702 words of memory out of 3000000 + 12072 multiletter control sequences out of 15000+200000 + 68623 words of font info for 72 fonts, out of 3000000 for 9000 + 832 hyphenation exceptions out of 8191 + 36i,12n,49p,1133b,403s stack positions out of 5000i,500n,10000p,200000b,50000s +{/usr/local/texlive/2011/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/local/t +exlive/2011/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb></usr/local/texlive/2 +011/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb></usr/local/texlive/2011/texm +f-dist/fonts/type1/urw/helvetic/uhvb8a.pfb></usr/local/texlive/2011/texmf-dist/ +fonts/type1/urw/helvetic/uhvbo8a.pfb></usr/local/texlive/2011/texmf-dist/fonts/ +type1/urw/times/utmb8a.pfb></usr/local/texlive/2011/texmf-dist/fonts/type1/urw/ +times/utmbi8a.pfb></usr/local/texlive/2011/texmf-dist/fonts/type1/urw/times/utm +r8a.pfb></usr/local/texlive/2011/texmf-dist/fonts/type1/urw/times/utmri8a.pfb> +Output written on bedtools.pdf (79 pages, 270556 bytes). +PDF statistics: + 756 PDF objects out of 1000 (max. 8388607) + 660 compressed objects within 7 object streams + 326 named destinations out of 1000 (max. 500000) + 81 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/docs/_build/latex/bedtools.out b/docs/_build/latex/bedtools.out new file mode 100644 index 0000000000000000000000000000000000000000..383e9302ca09647513ffbbc29ca752c9e3d4b626 --- /dev/null +++ b/docs/_build/latex/bedtools.out @@ -0,0 +1,10 @@ +\BOOKMARK [0][-]{chapter.1}{Overview}{}% 1 +\BOOKMARK [0][-]{chapter.2}{Table of contents}{}% 2 +\BOOKMARK [1][-]{section.2.1}{Overview}{chapter.2}% 3 +\BOOKMARK [1][-]{section.2.2}{Installation}{chapter.2}% 4 +\BOOKMARK [1][-]{section.2.3}{Quick start}{chapter.2}% 5 +\BOOKMARK [1][-]{section.2.4}{General usage}{chapter.2}% 6 +\BOOKMARK [1][-]{section.2.5}{The BEDTools suite}{chapter.2}% 7 +\BOOKMARK [1][-]{section.2.6}{Example usage}{chapter.2}% 8 +\BOOKMARK [1][-]{section.2.7}{Advanced usage}{chapter.2}% 9 +\BOOKMARK [0][-]{chapter.3}{Mailing list}{}% 10 diff --git a/docs/_build/latex/bedtools.tex b/docs/_build/latex/bedtools.tex new file mode 100644 index 0000000000000000000000000000000000000000..1fc68119bf47921b2c711d890c382553d90e8bb5 --- /dev/null +++ b/docs/_build/latex/bedtools.tex @@ -0,0 +1,5394 @@ +% Generated by Sphinx. +\def\sphinxdocclass{report} +\documentclass[letterpaper,10pt,english]{sphinxmanual} +\usepackage[utf8]{inputenc} +\DeclareUnicodeCharacter{00A0}{\nobreakspace} +\usepackage[T1]{fontenc} +\usepackage{babel} +\usepackage{times} +\usepackage[Bjarne]{fncychap} +\usepackage{longtable} +\usepackage{sphinx} +\usepackage{multirow} + + +\title{Bedtools Documentation} +\date{July 21, 2012} +\release{2.16.2} +\author{Quinlan lab @ UVa} +\newcommand{\sphinxlogo}{} +\renewcommand{\releasename}{Release} +\makeindex + +\makeatletter +\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax% + \let\PYG@ul=\relax \let\PYG@tc=\relax% + \let\PYG@bc=\relax \let\PYG@ff=\relax} +\def\PYG@tok#1{\csname PYG@tok@#1\endcsname} +\def\PYG@toks#1+{\ifx\relax#1\empty\else% + \PYG@tok{#1}\expandafter\PYG@toks\fi} +\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{% + \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}} +\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}} + +\def\PYG@tok@gd{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\def\PYG@tok@gu{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\def\PYG@tok@gt{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.25,0.82}{##1}}} +\def\PYG@tok@gs{\let\PYG@bf=\textbf} +\def\PYG@tok@gr{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\def\PYG@tok@cm{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\def\PYG@tok@vg{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\def\PYG@tok@m{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\def\PYG@tok@mh{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\def\PYG@tok@cs{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{\colorbox[rgb]{1.00,0.94,0.94}{##1}}} +\def\PYG@tok@ge{\let\PYG@it=\textit} +\def\PYG@tok@vc{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\def\PYG@tok@il{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\def\PYG@tok@go{\def\PYG@tc##1{\textcolor[rgb]{0.19,0.19,0.19}{##1}}} +\def\PYG@tok@cp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@gi{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\def\PYG@tok@gh{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\def\PYG@tok@ni{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}} +\def\PYG@tok@nl{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}} +\def\PYG@tok@nn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\def\PYG@tok@no{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}} +\def\PYG@tok@na{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@nb{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@nc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\def\PYG@tok@nd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}} +\def\PYG@tok@ne{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@nf{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}} +\def\PYG@tok@si{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}} +\def\PYG@tok@s2{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@vi{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\def\PYG@tok@nt{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}} +\def\PYG@tok@nv{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\def\PYG@tok@s1{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@gp{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\def\PYG@tok@sh{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@ow{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@sx{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\def\PYG@tok@bp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@c1{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\def\PYG@tok@kc{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@c{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\def\PYG@tok@mf{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\def\PYG@tok@err{\def\PYG@bc##1{\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{##1}}} +\def\PYG@tok@kd{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@ss{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}} +\def\PYG@tok@sr{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}} +\def\PYG@tok@mo{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\def\PYG@tok@mi{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\def\PYG@tok@kn{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@o{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\def\PYG@tok@kr{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@s{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@kp{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@w{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\def\PYG@tok@kt{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}} +\def\PYG@tok@sc{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@sb{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@k{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\def\PYG@tok@se{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\def\PYG@tok@sd{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} + +\def\PYGZbs{\char`\\} +\def\PYGZus{\char`\_} +\def\PYGZob{\char`\{} +\def\PYGZcb{\char`\}} +\def\PYGZca{\char`\^} +\def\PYGZsh{\char`\#} +\def\PYGZpc{\char`\%} +\def\PYGZdl{\char`\$} +\def\PYGZti{\char`\~} +% for compatibility with earlier versions +\def\PYGZat{@} +\def\PYGZlb{[} +\def\PYGZrb{]} +\makeatother + +\begin{document} + +\maketitle +\tableofcontents +\phantomsection\label{index::doc} + + + +\chapter{Overview} +\label{index:bedtools-a-powerful-toolset-for-genome-arithmetic}\label{index:overview} +Brief paragraph of the software. + + +\chapter{Table of contents} +\label{index:table-of-contents} + +\section{Overview} +\label{content/overview:overview}\label{content/overview::doc} + +\subsection{1.1 Background} +\label{content/overview:background} +The development of BEDTools was motivated by a need for fast, flexible tools with which to compare large sets of genomic +features. Answering fundamental research questions with existing tools was either too slow or required modifications to the +way they reported or computed their results. We were aware of the utilities on the UCSC Genome Browser and Galaxy websites, as +well as the elegant tools available as part of Jim Kent’s monolithic suite of tools (“Kent sourceâ€). However, we found that +the web-based tools were too cumbersome when working with large datasets generated by current sequencing technologies. +Similarly, we found that the Kent source command line tools often required a local installation of the UCSC Genome Browser. +These limitations, combined with the fact that we often wanted an extra option here or there that wasn’t available with +existing tools, led us to develop our own from scratch. The initial version of BEDTools was publicly released in the spring of +2009. The current version has evolved from our research experiences and those of the scientists using the suite over the last +year. The BEDTools suite enables one to answer common questions of genomic data in a fast and reliable manner. The fact that +almost all the utilities accept input from “stdin†allows one to “stream / pipe†several commands together to facilitate more +complicated analyses. Also, the tools allow fine control over how output is reported. The initial version of BEDTools +supported solely 6-column \href{http://genome.ucsc.edu/FAQ/FAQformat\#format1}{BED} files. \emph{However, we have subsequently added support for sequence alignments in} \href{http://samtools.sourceforge.net/}{BAM} +\emph{format, as well as for features in} \href{http://genome.ucsc.edu/FAQ/FAQformat\#format3}{GFF} , \emph{“blocked†BED format, and} +\href{http://www.1000genomes.org/wiki/Analysis/Variant\%20Call\%20Format/vcf-variant-call-format-version-41}{VCF} \emph{format}. +The tools are quite fast and typically finish in a matter of a few seconds, even for large datasets. This manual seeks to describe the behavior and +available functionality for each BEDTool. Usage examples are scattered throughout the text, and formal examples are +provided in the last two sections, we hope that this document will give you a sense of the flexibility of +the toolkit and the types of analyses that are possible with BEDTools. If you have further questions, please join the BEDTools +discussion group, visit the Usage Examples on the Google Code site (usage, advanced usage), or take a look at the nascent +“Usage From the Wild†page. + + +\subsection{1.2 Summary of available tools.} +\label{content/overview:summary-of-available-tools} +BEDTools support a wide range of operations for interrogating and manipulating genomic features. The table below summarizes +the tools available in the suite. + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Utility +} & \textbf{ +Description +}\\\hline + +\textbf{intersectBed} + & +Returns overlaps between two BED/GFF/VCF files. +\\\hline + +\textbf{pairToBed} + & +Returns overlaps between a paired-end BED file and a regular BED/VCF/GFF file. +\\\hline + +\textbf{bamToBed} + & +Converts BAM alignments to BED6, BED12, or BEDPE format. +\\\hline + +\textbf{bedToBam} + & +Converts BED/GFF/VCF features to BAM format. +\\\hline + +\textbf{bed12ToBed6} + & +Converts ``blocked'' BED12 features to discrete BED6 features. +\\\hline + +\textbf{bedToIgv} + & +Creates IGV batch scripts for taking multiple snapshots from BED/GFF/VCF features. +\\\hline + +\textbf{coverageBed} + & +Summarizes the depth and breadth of coverage of features in one BED versus features (e.g, windows, exons, etc.) defined in another BED/GFF/VCF file. +\\\hline + +\textbf{multiBamCov} + & +Counts sequence coverage for multiple position-sorted bams at specific loci defined in a BED/GFF/VCF file +\\\hline + +\textbf{tagBam} + & +Annotates a BAM file with custom tag fields based on overlaps with BED/GFF/VCF files +\\\hline + +\textbf{nuclBed} + & +Profiles the nucleotide content of intervals in a fasta file +\\\hline + +\textbf{genomeCoverageBed} + & +Creates either a histogram, BEDGRAPH, or a ``per base'' report of genome coverage. +\\\hline + +\textbf{unionBedGraphs} + & +Combines multiple BedGraph? files into a single file, allowing coverage/other comparisons between them. +\\\hline + +\textbf{annotateBed} + & +Annotates one BED/VCF/GFF file with overlaps from many others. +\\\hline + +\textbf{groupBy} + & +Deprecated. Now in the filo package. +\\\hline + +\textbf{overlap} + & +Returns the number of bases pairs of overlap b/w two features on the same line. +\\\hline + +\textbf{pairToPair} + & +Returns overlaps between two paired-end BED files. +\\\hline + +\textbf{closestBed} + & +Returns the closest feature to each entry in a BED/GFF/VCF file. +\\\hline + +\textbf{subtractBed} + & +Removes the portion of an interval that is overlapped by another feature. +\\\hline + +\textbf{windowBed} + & +Returns overlaps between two BED/VCF/GFF files based on a user-defined window. +\\\hline + +\textbf{mergeBed} + & +Merges overlapping features into a single feature. +\\\hline + +\textbf{complementBed} + & +Returns all intervals not spanned by the features in a BED/GFF/VCF file. +\\\hline + +\textbf{fastaFromBed} + & +Creates FASTA sequences based on intervals in a BED/GFF/VCF file. +\\\hline + +\textbf{maskFastaFromBed} + & +Masks a FASTA file based on BED coordinates. +\\\hline + +\textbf{shuffleBed} + & +Randomly permutes the locations of a BED file among a genome. +\\\hline + +\textbf{slopBed} + & +Adjusts each BED entry by a requested number of base pairs. +\\\hline + +\textbf{flankBed} + & +Creates flanking intervals for each feature in a BED/GFF/VCF file. +\\\hline + +\textbf{sortBed} + & +Sorts a BED file by chrom, then start position. Other ways as well. +\\\hline + +\textbf{linksBed} + & +Creates an HTML file of links to the UCSC or a custom browser. +\\\hline +\end{tabulary} + + + +\subsection{1.3 Fundamental concepts.} +\label{content/overview:fundamental-concepts} + +\subsubsection{1.3.1 What are genome features and how are they represented?} +\label{content/overview:what-are-genome-features-and-how-are-they-represented} +Throughout this manual, we will discuss how to use BEDTools to manipulate, compare and ask questions of genome “featuresâ€. Genome features can be functional elements (e.g., genes), genetic polymorphisms (e.g. +SNPs, INDELs, or structural variants), or other annotations that have been discovered or curated by genome sequencing groups or genome browser groups. In addition, genome features can be custom annotations that +an individual lab or researcher defines (e.g., my novel gene or variant). + +The basic characteristics of a genome feature are the chromosome or scaffold on which the feature “residesâ€, the base pair on which the +feature starts (i.e. the “startâ€), the base pair on which feature ends (i.e. the “endâ€), the strand on which the feature exists (i.e. “+†or “-“), and the name of the feature if one is applicable. + +The two most widely used formats for representing genome features are the BED (Browser Extensible Data) and GFF (General Feature Format) formats. BEDTools was originally written to work exclusively with genome features +described using the BED format, but it has been recently extended to seamlessly work with BED, GFF and VCF files. + +Existing annotations for the genomes of many species can be easily downloaded in BED and GFF +format from the UCSC Genome Browser’s “Table Browser†(\href{http://genome.ucsc.edu/cgi-bin/hgTables?command=start}{http://genome.ucsc.edu/cgi-bin/hgTables?command=start}) or from the “Bulk Downloads†page (\href{http://hgdownload.cse.ucsc.edu/downloads.html}{http://hgdownload.cse.ucsc.edu/downloads.html}). In addition, the +Ensemble Genome Browser contains annotations in GFF/GTF format for many species (\href{http://www.ensembl.org/info/data/ftp/index.html}{http://www.ensembl.org/info/data/ftp/index.html}) + + +\subsubsection{1.3.2 Overlapping / intersecting features.} +\label{content/overview:overlapping-intersecting-features} +Two genome features (henceforth referred to as “featuresâ€) are said to overlap or intersect if they share at least one base in common. +In the figure below, Feature A intersects/overlaps Feature B, but it does not intersect/overlap Feature C. + +\textbf{TODO: place figure here} + + +\subsubsection{1.3.3 Comparing features in file “A†and file “Bâ€.} +\label{content/overview:comparing-features-in-file-a-and-file-b} +The previous section briefly introduced a fundamental naming convention used in BEDTools. Specifically, all BEDTools that compare features contained in two distinct files refer to one file as feature set “A†and the other file as feature set “Bâ€. This is mainly in the interest of brevity, but it also has its roots in set theory. +As an example, if one wanted to look for SNPs (file A) that overlap with exons (file B), one would use intersectBed in the following manner: + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed –a snps.bed –b exons.bed +\end{Verbatim} + +There are two exceptions to this rule: 1) When the “A†file is in BAM format, the “-abam†option must bed used. For example: + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed –abam alignedReads.bam –b exons.bed +\end{Verbatim} + +And 2) For tools where only one input feature file is needed, the “-i†option is used. For example: + +\begin{Verbatim}[commandchars=\\\{\}] +mergeBed –i repeats.bed +\end{Verbatim} + + +\subsubsection{1.3.4 BED starts are zero-based and BED ends are one-based.} +\label{content/overview:bed-starts-are-zero-based-and-bed-ends-are-one-based} +BEDTools users are sometimes confused by the way the start and end of BED features are represented. Specifically, BEDTools uses the UCSC Genome Browser’s internal database convention of making the start position 0-based and the end position 1-based: (\href{http://genome.ucsc.edu/FAQ/FAQtracks\#tracks1}{http://genome.ucsc.edu/FAQ/FAQtracks\#tracks1}) +In other words, BEDTools interprets the “start†column as being 1 basepair higher than what is represented in the file. For example, the following BED feature represents a single base on chromosome 1; namely, the 1st base: + +\begin{Verbatim}[commandchars=\\\{\}] +chr1 0 1 first\_base +\end{Verbatim} + +Why, you might ask? The advantage of storing features this way is that when computing the length of a feature, one must simply subtract the start from the end. Were the start position 1-based, +the calculation would be (slightly) more complex (i.e. (end-start)+1). Thus, storing BED features this way reduces the computational burden. + + +\subsubsection{1.3.5 GFF starts and ends are one-based.} +\label{content/overview:gff-starts-and-ends-are-one-based} +In contrast, the GFF format uses 1-based coordinates for both the start and the end positions. BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your GFF features for them to work correctly with BEDTools. + + +\subsubsection{1.3.6 VCF coordinates are one-based.} +\label{content/overview:vcf-coordinates-are-one-based} +The VCF format uses 1-based coordinates. As in GFF, BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your VCF features for them to work correctly with BEDTools. + + +\subsubsection{1.3.7 File B is loaded into memory (most of the time).} +\label{content/overview:file-b-is-loaded-into-memory-most-of-the-time} +Whenever a BEDTool compares two files of features, the “B†file is loaded into memory. By contrast, the “A†file is processed line by line and compared with the features from B. +Therefore to minimize memory usage, one should set the smaller of the two files as the B file. One salient example is the comparison of aligned sequence reads from a +current DNA sequencer to gene annotations. In this case, the aligned sequence file (in BED format) may have tens of millions of features (the sequence alignments), +while the gene annotation file will have tens of thousands of features. In this case, it is wise to sets the reads as file A and the genes as file B. + + +\subsubsection{1.3.8 Feature files \emph{must} be tab-delimited.} +\label{content/overview:feature-files-must-be-tab-delimited} +This is rather self-explanatory. While it is possible to allow BED files to be space-delimited, we have decided to require tab delimiters for three reasons: +\begin{enumerate} +\item {} +By requiring one delimiter type, the processing time is minimized. + +\item {} +Tab-delimited files are more amenable to other UNIX utilities. + +\item {} +GFF files can contain spaces within attribute columns. This complicates the use of space-delimited files as spaces must therefore be treated specially depending on the context. + +\end{enumerate} + + +\subsubsection{1.3.9 All BEDTools allow features to be “piped†via standard input.} +\label{content/overview:all-bedtools-allow-features-to-be-piped-via-standard-input} +In an effort to allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, all BEDTools allow features +to be passed to them via standard input. Only one feature file may be passed to a BEDTool via standard input. +The convention used by all BEDTools is to set either file A or file B to “stdin†or ``-''. For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat snps.bed \textbar{} intersectBed –a stdin –b exons.bed +cat snps.bed \textbar{} intersectBed –a - –b exons.bed +\end{Verbatim} + +In addition, all BEDTools that simply require one main input file (the -i file) will assume that input is +coming from standard input if the -i parameter is ignored. For example, the following are equivalent: + +\begin{Verbatim}[commandchars=\\\{\}] +cat snps.bed \textbar{} sortBed –i stdin +cat snps.bed \textbar{} sortBed +\end{Verbatim} + + +\subsubsection{1.3.10 Most BEDTools write their results to standard output.} +\label{content/overview:most-bedtools-write-their-results-to-standard-output} +To allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, +most BEDTools report their output to standard output, rather than to a named file. If one wants to write the output to a named file, one can use the UNIX “file redirection†symbol “\textgreater{}†to do so. +Writing to standard output (the default): + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed –a snps.bed –b exons.bed +chr1 100100 100101 rs233454 +chr1 200100 200101 rs446788 +chr1 300100 300101 rs645678 +\end{Verbatim} + +Writing to a file: + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed –a snps.bed –b exons.bed \textgreater{} snps.in.exons.bed + +cat snps.in.exons.bed +chr1 100100 100101 rs233454 +chr1 200100 200101 rs446788 +chr1 300100 300101 rs645678 +\end{Verbatim} + + +\subsubsection{1.3.11 What is a “genome†file?} +\label{content/overview:what-is-a-genome-file} +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which species / genome build you are working. +The way you do this for BEDTools is to create a “genome†file, which simply lists the names of the +chromosomes (or scaffolds, etc.) and their size (in basepairs). +Genome files must be tab-delimited and are structured as follows (this is an example for C. elegans): + +\begin{Verbatim}[commandchars=\\\{\}] +chrI 15072421 +chrII 15279323 +... +chrX 17718854 +chrM 13794 +\end{Verbatim} + +BEDTools includes predefined genome files for human and mouse in the /genomes directory included +in the BEDTools distribution. Additionally, the “chromInfo†files/tables available from the UCSC +Genome Browser website are acceptable. For example, one can download the hg19 chromInfo file here: +\href{http://hgdownload.cse.ucsc.edu/goldenPath/hg19/database/chromInfo.txt.gz}{http://hgdownload.cse.ucsc.edu/goldenPath/hg19/database/chromInfo.txt.gz} + + +\subsubsection{1.3.12 Paired-end BED files (BEDPE files).} +\label{content/overview:paired-end-bed-files-bedpe-files} +We have defined a new file format (BEDPE) to concisely describe disjoint genome features, such as +structural variations or paired-end sequence alignments. We chose to define a new format because the +existing BED block format (i.e. BED12) does not allow inter-chromosomal feature definitions. Moreover, +the BED12 format feels rather bloated when one want to describe events with only two blocks. + + +\subsubsection{1.3.13 Use “-h†for help with any BEDTool.} +\label{content/overview:use-h-for-help-with-any-bedtool} +Rather straightforward. If you use the “-h†option with any BEDTool, a full menu of example usage +and available options (when applicable) will be reported. + + +\subsubsection{1.3.14 BED features must not contain negative positions.} +\label{content/overview:bed-features-must-not-contain-negative-positions} +BEDTools will typically reject BED features that contain negative positions. In special cases, however, +BEDPE positions may be set to -1 to indicate that one or more ends of a BEDPE feature is unaligned. + + +\subsubsection{1.3.15 The start position must be \textless{}= to the end position.} +\label{content/overview:the-start-position-must-be-to-the-end-position} +BEDTools will reject BED features where the start position is greater than the end position. + + +\subsubsection{1.3.16 Headers are allowed in GFF and BED files} +\label{content/overview:headers-are-allowed-in-gff-and-bed-files} +BEDTools will ignore headers at the beginning of BED and GFF files. Valid header lines begin with a +“\#†symbol, the work “trackâ€, or the word “browserâ€. For example, the following examples are valid +headers for BED or GFF files: + +\begin{Verbatim}[commandchars=\\\{\}] +track name=aligned\_read description="Illumina aligned reads†+chr5 100000 500000 read1 50 + +chr5 2380000 2386000 read2 60 - + +\#This is a fascinating dataset +chr5 100000 500000 read1 50 + +chr5 2380000 2386000 read2 60 - + +browser position chr22:1-20000 +chr5 100000 500000 read1 50 + +chr5 2380000 2386000 read2 60 - +\end{Verbatim} + + +\subsubsection{1.3.17 GZIP support: BED, GFF, VCF, and BEDPE file can be “gzippedâ€} +\label{content/overview:gzip-support-bed-gff-vcf-and-bedpe-file-can-be-gzipped} +BEDTools will process gzipped BED, GFF, VCF and BEDPE files in the same manner as +uncompressed files. Gzipped files are auto-detected thanks to a helpful contribution from Gordon +Assaf. + + +\subsubsection{1.3.18 Support for “split†or “spliced†BAM alignments and “blocked†BED features} +\label{content/overview:support-for-split-or-spliced-bam-alignments-and-blocked-bed-features} +As of Version 2.8.0, five BEDTools (\code{intersectBed}, \code{coverageBed}, \code{genomeCoverageBed}, +\code{bamToBed}, and \code{bed12ToBed6}) can properly handle “splitâ€/â€spliced†BAM alignments (i.e., having an +“N†CIGAR operation) and/or “blocked†BED (aka BED12) features. + +\code{intersectBed}, \code{coverageBed}, and \code{genomeCoverageBed} will optionally handle “split†BAM and/or +“blocked†BED by using the \code{-split} option. This will cause intersects or coverage to be computed only +for the alignment or feature blocks. In contrast, without this option, the intersects/coverage would be +computed for the entire “span†of the alignment or feature, regardless of the size of the gaps between +each alignment or feature block. For example, imagine you have a RNA-seq read that originates from +the junction of two exons that were spliced together in a mRNA. In the genome, these two exons +happen to be 30Kb apart. Thus, when the read is aligned to the reference genome, one portion of the +read will align to the first exon, while another portion of the read will align ca. 30Kb downstream to the +other exon. The corresponding CIGAR string would be something like (assuming a 76bp read): +30M*3000N*46M. In the genome, this alignment “spans†3076 bp, yet the nucleotides in the sequencing +read only align “cover†76bp. Without the \code{-split} option, coverage or overlaps would be reported for the +entire 3076bp span of the alignment. However, with the \code{-split} option, coverage or overlaps will only +be reported for the portions of the read that overlap the exons (i.e. 30bp on one exon, and +46bp on the other). + +Using the -split option with bamToBed causes “spliced/split†alignments to be reported in BED12 +format. Using the -split option with bed12ToBed6 causes “blocked†BED12 features to be reported in +BED6 format. + + +\subsubsection{1.3.19 Writing uncompressed BAM output.} +\label{content/overview:writing-uncompressed-bam-output} +When working with a large BAM file using a complex set of tools in a pipe/stream, it is advantageous +to pass uncompressed BAM output to each downstream program. This minimizes the amount of time +spent compressing and decompressing output from one program to the next. All BEDTools that create +BAM output (e.g. \code{intersectBed}, \code{windowBed}) will now optionally create uncompressed BAM output +using the \code{-ubam} option. + + +\subsection{1.4 Implementation and algorithmic notes.} +\label{content/overview:implementation-and-algorithmic-notes} +BEDTools was implemented in C++ and makes extensive use of data structures and fundamental +algorithms from the Standard Template Library (STL). Many of the core algorithms are based upon the +genome binning algorithm described in the original UCSC Genome Browser paper (Kent et al, 2002). +The tools have been designed to inherit core data structures from central source files, thus allowing +rapid tool development and deployment of improvements and corrections. Support for BAM files is +made possible through Derek Barnett’s elegant C++ API called BamTools. + + +\subsection{1.5 License and availability.} +\label{content/overview:license-and-availability} +BEDTools is freely available under a GNU Public License (Version 2) at: +\href{http://bedtools.googlecode.com}{http://bedtools.googlecode.com} + + +\subsection{1.6 Mailing list.} +\label{content/overview:mailing-list} +A discussion group for reporting bugs, asking questions of the developer and of the user community, as +well as for requesting new features is available at: +\href{http://groups.google.com/group/bedtools-discuss}{http://groups.google.com/group/bedtools-discuss} + + +\subsection{1.7 Contributors.} +\label{content/overview:contributors} +As open-source software, BEDTools greatly benefits from contributions made by other developers and +users of the tools. We encourage and welcome suggestions, contributions and complaints. This is how +software matures, improves and stays on top of the needs of its user community. The Google Code +(GC) site maintains a list of individuals who have contributed either source code or useful ideas for +improving the tools. In the near future, we hope to maintain a source repository on the GC site in +order to facilitate further contributions. We are currently unable to do so because we use Git for +version control, which is not yet supported by GC. + + +\section{Installation} +\label{content/installation:installation}\label{content/installation::doc} +BEDTools is intended to run in a ``command line'' environment on UNIX, LINUX and Apple OS X +operating systems. Installing BEDTools involves downloading the latest source code archive followed by +compiling the source code into binaries on your local system. The following commands will install +BEDTools in a local directory on a NIX or OS X machine. Note that the \textbf{``\textless{}version\textgreater{}''} refers to the +latest posted version number on \href{http://bedtools.googlecode.com/}{http://bedtools.googlecode.com/}. + +Note: \emph{The BEDTools ``makefiles'' use the GCC compiler. One should edit the Makefiles accordingly if +one wants to use a different compiler.}: + +\begin{Verbatim}[commandchars=\\\{\}] +curl http://bedtools.googlecode.com/files/BEDTools.\textless{}version\textgreater{}.tar.gz \textgreater{} BEDTools.tar.gz +tar -zxvf BEDTools.tar.gz +cd BEDTools-\textless{}version\textgreater{} +make clean +make all +ls bin +\end{Verbatim} + +At this point, one should copy the binaries in BEDTools/bin/ to either usr/local/bin/ or some +other repository for commonly used UNIX tools in your environment. You will typically require +administrator (e.g. ``root'' or ``sudo'') privileges to copy to usr/local/bin/. If in doubt, contact you +system administrator for help. + + +\section{Quick start} +\label{content/quick-start:quick-start}\label{content/quick-start::doc} + +\subsection{Install BEDTools} +\label{content/quick-start:install-bedtools} +\begin{Verbatim}[commandchars=\\\{\}] +curl http://bedtools.googlecode.com/files/BEDTools.\textless{}version\textgreater{}.tar.gz \textgreater{} BEDTools.tar.gz +tar -zxvf BEDTools.tar.gz +cd BEDTools +make clean +make all +sudo cp bin/* /usr/local/bin/ +\end{Verbatim} + + +\subsection{Use BEDTools} +\label{content/quick-start:use-bedtools} +Below are examples of typical BEDTools usage. \textbf{Additional usage examples are described in +section 6 of this manual.} Using the ``-h'' option with any BEDTools will report a list of all command +line options. + +A. Report the base-pair overlap between the features in two BED files. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed +\end{Verbatim} + +B. Report those entries in A that overlap NO entries in B. Like ``grep -v'' + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed ?Cv +\end{Verbatim} + +C. Read BED A from stdin. Useful for stringing together commands. For example, find genes that overlap LINEs +but not SINEs. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a genes.bed -b LINES.bed \textbar{} intersectBed -a stdin -b SINEs.bed ?Cv +\end{Verbatim} + +D. Find the closest ALU to each gene. + +\begin{Verbatim}[commandchars=\\\{\}] +closestBed -a genes.bed -b ALUs.bed +\end{Verbatim} + +E. Merge overlapping repetitive elements into a single entry, returning the number of entries merged. + +\begin{Verbatim}[commandchars=\\\{\}] +mergeBed -i repeatMasker.bed -n +\end{Verbatim} + +F. Merge nearby repetitive elements into a single entry, so long as they are within 1000 bp of one another. + +\begin{Verbatim}[commandchars=\\\{\}] +mergeBed -i repeatMasker.bed -d 1000 +\end{Verbatim} + + +\section{General usage} +\label{content/general-usage::doc}\label{content/general-usage:general-usage} + +\subsection{4.1 Supported file formats} +\label{content/general-usage:supported-file-formats} + +\subsubsection{4.1.1 BED format} +\label{content/general-usage:bed-format} +As described on the UCSC Genome Browser website (see link below), the BED format is a concise and +flexible way to represent genomic features and annotations. The BED format description supports up to +12 columns, but only the first 3 are required for the UCSC browser, the Galaxy browser and for +BEDTools. BEDTools allows one to use the ``BED12'' format (that is, all 12 fields listed below). +However, only intersectBed, coverageBed, genomeCoverageBed, and bamToBed will obey the BED12 +``blocks'' when computing overlaps, etc., via the \textbf{``-split''} option. For all other tools, the last six columns +are not used for any comparisons by the BEDTools. Instead, they will use the entire span (start to end) +of the BED12 entry to perform any relevant feature comparisons. The last six columns will be reported +in the output of all comparisons. + +The file description below is modified from: \href{http://genome.ucsc.edu/FAQ/FAQformat\#format1}{http://genome.ucsc.edu/FAQ/FAQformat\#format1}. +\begin{enumerate} +\item {} +\textbf{chrom} - The name of the chromosome on which the genome feature exists. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, ``chr1'', ``III'', ``myChrom'', ``contig1112.23''. + +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{1} +\item {} +\textbf{start} - The zero-based starting position of the feature in the chromosome. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{The first base in a chromosome is numbered 0}. + +\item {} +\emph{The start position in each BED feature is therefore interpreted to be 1 greater than the start position listed in the feature. For example, start=9, end=20 is interpreted to span bases 10 through 20,inclusive}. + +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{2} +\item {} +\textbf{end} - The one-based ending position of the feature in the chromosome. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{The end position in each BED feature is one-based. See example above}. + +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{3} +\item {} +\textbf{name} - Defines the name of the BED feature. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, ``LINE'', ``Exon3'', ``HWIEAS\_0001:3:1:0:266\#0/1'', or ``my\_Feature''. + +\item {} +\emph{This column is optional}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{4} +\item {} +\textbf{score} - The UCSC definition requires that a BED score range from 0 to 1000, inclusive. However, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. For example, strings allow scientific notation for p-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, 7.31E-05 (p-value), 0.33456 (mean enrichment value), ``up'', ``down'', etc. + +\item {} +\emph{This column is optional}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{5} +\item {} +\textbf{strand} - Defines the strand - either `+' or `-`. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is optional}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{6} +\item {} +\textbf{thickStart} - The starting position at which the feature is drawn thickly. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Allowed yet ignored by BEDTools}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{7} +\item {} +\textbf{thickEnd} - The ending position at which the feature is drawn thickly. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Allowed yet ignored by BEDTools}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{8} +\item {} +\textbf{itemRgb} - An RGB value of the form R,G,B (e.g. 255,0,0). + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Allowed yet ignored by BEDTools}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{9} +\item {} +\textbf{blockCount} - The number of blocks (exons) in the BED line. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Allowed yet ignored by BEDTools}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{10} +\item {} +\textbf{blockSizes} - A comma-separated list of the block sizes. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Allowed yet ignored by BEDTools}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{11} +\item {} +\textbf{blockStarts} - A comma-separated list of block starts. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Allowed yet ignored by BEDTools}. + +\end{itemize} + +BEDTools requires that all BED input files (and input received from stdin) are \textbf{tab-delimited}. The following types of BED files are supported by BEDTools: +\begin{enumerate} +\item {} +\begin{DUlineblock}{0em} +\item[] \textbf{BED3}: A BED file where each feature is described by \textbf{chrom}, \textbf{start}, and \textbf{end}. +\item[] For example: chr1 11873 14409 +\end{DUlineblock} + +\item {} +\begin{DUlineblock}{0em} +\item[] \textbf{BED4}: A BED file where each feature is described by \textbf{chrom}, \textbf{start}, \textbf{end}, and \textbf{name}. +\item[] For example: chr1 11873 14409 uc001aaa.3 +\end{DUlineblock} + +\item {} +\begin{DUlineblock}{0em} +\item[] \textbf{BED5}: A BED file where each feature is described by \textbf{chrom}, \textbf{start}, \textbf{end}, \textbf{name}, and \textbf{score}. +\item[] For example: chr1 11873 14409 uc001aaa.3 0 +\end{DUlineblock} + +\item {} +\begin{DUlineblock}{0em} +\item[] \textbf{BED6}: A BED file where each feature is described by \textbf{chrom}, \textbf{start}, \textbf{end}, \textbf{name}, \textbf{score}, and \textbf{strand}. +\item[] For example: chr1 11873 14409 uc001aaa.3 0 + +\end{DUlineblock} + +\item {} +\begin{DUlineblock}{0em} +\item[] \textbf{BED12}: A BED file where each feature is described by all twelve columns listed above. +\item[] For example: chr1 11873 14409 uc001aaa.3 0 + 11873 +\item[] 11873 0 3 354,109,1189, 0,739,1347, +\end{DUlineblock} + +\end{enumerate} + + +\subsubsection{4.1.2 BEDPE format} +\label{content/general-usage:bedpe-format} +We have defined a new file format (BEDPE) in order to concisely describe disjoint genome features, +such as structural variations or paired-end sequence alignments. We chose to define a new format +because the existing ``blocked'' BED format (a.k.a. BED12) does not allow inter-chromosomal feature +definitions. In addition, BED12 only has one strand field, which is insufficient for paired-end sequence +alignments, especially when studying structural variation. + +The BEDPE format is described below. The description is modified from: \href{http://genome.ucsc.edu/FAQ/FAQformat\#format1}{http://genome.ucsc.edu/FAQ/FAQformat\#format1}. +\begin{enumerate} +\item {} +\textbf{chrom1} - The name of the chromosome on which the \textbf{first} end of the feature exists. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, ``chr1'', ``III'', ``myChrom'', ``contig1112.23''. + +\item {} +\emph{This column is required}. + +\item {} +\emph{Use ''.'' for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{1} +\item {} +\textbf{start1} - The zero-based starting position of the \textbf{first} end of the feature on \textbf{chrom1}. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{The first base in a chromosome is numbered 0}. + +\item {} +\emph{As with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required}. + +\item {} +\emph{Use -1 for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{2} +\item {} +\textbf{end1} - The one-based ending position of the first end of the feature on \textbf{chrom1}. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{The end position in each BEDPE feature is one-based}. + +\item {} +\emph{This column is required}. + +\item {} +\emph{Use -1 for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{3} +\item {} +\textbf{chrom2} - The name of the chromosome on which the \textbf{second} end of the feature exists. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, ``chr1'', ``III'', ``myChrom'', ``contig1112.23''. + +\item {} +\emph{This column is required}. + +\item {} +\emph{Use ''.'' for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{4} +\item {} +\textbf{start2} - The zero-based starting position of the \textbf{second} end of the feature on \textbf{chrom2}. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{The first base in a chromosome is numbered 0}. + +\item {} +\emph{As with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required}. + +\item {} +\emph{Use -1 for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{5} +\item {} +\textbf{end2} - The one-based ending position of the \textbf{second} end of the feature on \textbf{chrom2}. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{The end position in each BEDPE feature is one-based}. + +\item {} +\emph{This column is required}. + +\item {} +\emph{Use -1 for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{6} +\item {} +\textbf{name} - Defines the name of the BEDPE feature. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, ``LINE'', ``Exon3'', ``HWIEAS\_0001:3:1:0:266\#0/1'', or ``my\_Feature''. + +\item {} +\emph{This column is optional}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{7} +\item {} +\textbf{score} - The UCSC definition requires that a BED score range from 0 to 1000, inclusive. \emph{However, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features}. For example, strings allow scientific notation for p-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, 7.31E-05 (p-value), 0.33456 (mean enrichment value), ``up'', ``down'', etc. + +\item {} +\emph{This column is optional}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{8} +\item {} +\textbf{strand1} - Defines the strand for the first end of the feature. Either `+' or `-`. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is optional}. + +\item {} +\emph{Use ''.'' for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{9} +\item {} +\textbf{strand2} - Defines the strand for the second end of the feature. Either `+' or `-`. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is optional}. + +\item {} +\emph{Use ''.'' for unknown}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{10} +\item {} +\textbf{Any number of additional, user-defined fields} - BEDTools allows one to add as many additional fields to the normal, 10-column BEDPE format as necessary. These columns are merely ``passed through'' \textbf{pairToBed} and \textbf{pairToPair} and are not part of any analysis. One would use these additional columns to add extra information (e.g., edit distance for each end of an alignment, or ``deletion'', ``inversion'', etc.) to each BEDPE feature. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{These additional columns are optional}. + +\end{itemize} + +Entries from an typical BEDPE file: + +\begin{Verbatim}[commandchars=\\\{\}] +chr1 100 200 chr5 5000 5100 bedpe\_example1 30 + - +chr9 1000 5000 chr9 3000 3800 bedpe\_example2 100 + - +\end{Verbatim} + +Entries from a BEDPE file with two custom fields added to each record: + +\begin{Verbatim}[commandchars=\\\{\}] +chr1 10 20 chr5 50 60 a1 30 + - 0 1 +chr9 30 40 chr9 80 90 a2 100 + - 2 1 +\end{Verbatim} + + +\subsubsection{4.1.3 GFF format} +\label{content/general-usage:gff-format} +The GFF format is described on the Sanger Institute's website (\href{http://www.sanger.ac.uk/resources/software/gff/spec.html}{http://www.sanger.ac.uk/resources/software/gff/spec.html}). The GFF description below is modified from the definition at this URL. All nine columns in the GFF format description are required by BEDTools. +\begin{enumerate} +\item {} +\textbf{seqname} - The name of the sequence (e.g. chromosome) on which the feature exists. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, ``chr1'', ``III'', ``myChrom'', ``contig1112.23''. + +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{1} +\item {} +\textbf{source} - The source of this feature. This field will normally be used to indicate the program making the prediction, or if it comes from public database annotation, or is experimentally verified, etc. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{2} +\item {} +\textbf{feature} - The feature type name. Equivalent to BED's \textbf{name} field. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{Any string can be used}. For example, ``exon'', etc. + +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{3} +\item {} +\textbf{start} - The one-based starting position of feature on \textbf{seqname}. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is required}. + +\item {} +\emph{BEDTools accounts for the fact the GFF uses a one-based position and BED uses a zero-based start position}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{4} +\item {} +\textbf{end} - The one-based ending position of feature on \textbf{seqname}. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{5} +\item {} +\textbf{score} - A score assigned to the GFF feature. Like BED format, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. We note that this differs from the GFF definition in the interest of flexibility. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{6} +\item {} +\textbf{strand} - Defines the strand. Use `+', `-` or `.' + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{7} +\item {} +\textbf{frame} - The frame of the coding sequence. Use `0', `1', `2', or `.'. + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is required}. + +\end{itemize} +\begin{enumerate} +\setcounter{enumi}{8} +\item {} +\textbf{attribute} - Taken from \href{http://www.sanger.ac.uk/resources/software/gff/spec.html}{http://www.sanger.ac.uk/resources/software/gff/spec.html}: From version 2 onwards, the attribute field must have an tag value structure following the syntax used within objects in a .ace file, flattened onto one line by semicolon separators. Tags must be standard identifiers ({[}A-Za-z{]}{[}{\color{red}\bfseries{}AZa-z0-9\_}{]}*). Free text values must be quoted with double quotes. \emph{Note: all non-printing characters in such free text value strings (e.g. newlines, tabs, control characters, etc) must be explicitly represented by their C (UNIX) style backslash-escaped representation (e.g. newlines as `n', tabs as `t')}. As in ACEDB, multiple values can follow a specific tag. The aim is to establish consistent use of particular tags, corresponding to an underlying implied ACEDB model if you want to think that way (but acedb is not required). + +\end{enumerate} +\begin{itemize} +\item {} +\emph{This column is required}. + +\end{itemize} + +An entry from an example GFF file : + +\begin{Verbatim}[commandchars=\\\{\}] +seq1 BLASTX similarity 101 235 87.1 + 0 Target "HBA\_HUMAN" 11 55 ; +E\_value 0.0003 dJ102G20 GD\_mRNA coding\_exon 7105 7201 . - 2 Sequence +"dJ102G20.C1.1" +\end{Verbatim} + + +\subsubsection{4.1.3 GFF format} +\label{content/general-usage:id1} +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which which species/genome build you are +working. The way you do this for BEDTools is to create a ``genome'' file, which simply lists the names of +the chromosomes (or scaffolds, etc.) and their size (in basepairs). + +Genome files must be \textbf{tab-delimited} and are structured as follows (this is an example for \emph{C. elegans}): + +\begin{Verbatim}[commandchars=\\\{\}] +chrI 15072421 +chrII 15279323 +... +chrX 17718854 +chrM 13794 +\end{Verbatim} + +BEDTools includes pre-defined genome files for human and mouse in the \textbf{/genomes} directory included +in the BEDTools distribution. + + +\subsubsection{4.1.5 SAM/BAM format} +\label{content/general-usage:sam-bam-format} +The SAM / BAM format is a powerful and widely-used format for storing sequence alignment data (see +\href{http://samtools.sourceforge.net/}{http://samtools.sourceforge.net/} for more details). It has quickly become the standard format to which +most DNA sequence alignment programs write their output. Currently, the following BEDTools +support inout in BAM format: \emph{intersectBed, windowBed, coverageBed, genomeCoverageBed, +pairToBed, bamToBed}. Support for the BAM format in BEDTools allows one to (to name a few): +compare sequence alignments to annotations, refine alignment datasets, screen for potential mutations +and compute aligned sequence coverage. + +The details of how these tools work with BAM files are addressed in \textbf{Section 5} of this manual. + + +\subsubsection{4.1.6 VCF format} +\label{content/general-usage:vcf-format} +The Variant Call Format (VCF) was conceived as part of the 1000 Genomes Project as a standardized +means to report genetic variation calls from SNP, INDEL and structural variant detection programs +(see \href{http://www.1000genomes.org/wiki/doku.php?id=1000\_genomes:analysis:vcf4.0}{http://www.1000genomes.org/wiki/doku.php?id=1000\_genomes:analysis:vcf4.0} for details). +BEDTools now supports the latest version of this format (i.e, Version 4.0). As a result, BEDTools can +be used to compare genetic variation calls with other genomic features. + + +\section{The BEDTools suite} +\label{content/bedtools-suite:the-bedtools-suite}\label{content/bedtools-suite::doc} +This section covers the functionality and default / optional usage for each of the available BEDTools. +Example ``figures'' are provided in some cases in an effort to convey the purpose of the tool. The +behavior of each available parameter is discussed for each tool in abstract terms. More concrete usage +examples are provided in \textbf{Section 6}. + + +\subsection{Table of contents} +\label{content/bedtools-suite:table-of-contents} + +\subsubsection{5.1 intersectBed} +\label{content/intersectBed:intersectbed}\label{content/intersectBed::doc} +By far, the most common question asked of two sets of genomic features is whether or not any of the +features in the two sets ``overlap'' with one another. This is known as feature intersection. \textbf{intersectBed} +allows one to screen for overlaps between two sets of genomic features. Moreover, it allows one to have +fine control as to how the intersections are reported. \textbf{intersectBed} works with both BED/GFF/VCF +and BAM files as input. + + +\paragraph{5.1.1 Usage and option summary} +\label{content/intersectBed:usage-and-option-summary} +\textbf{Usage}: + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed [OPTIONS] [-a \textless{}BED/GFF/VCF\textgreater{} \textbar{}\textbar{} -abam \textless{}BAM\textgreater{}] -b \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-a} + & +BED/GFF/VCF file A. Each feature in A is compared to B in search of overlaps. Use ``stdin'' if passing A with a UNIX pipe. +\\\hline + +\textbf{-b} + & +BED/GFF/VCF file B. Use ``stdin'' if passing B with a UNIX pipe. +\\\hline + +\textbf{-abam} + & +BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use ``stdin'' if passing A with a UNIX pipe: For example: samtools view -b \textless{}BAM\textgreater{} \textbar{} intersectBed -abam stdin -b genes.bed +\\\hline + +\textbf{-ubam} + & +Write uncompressed BAM output. The default is write compressed BAM output. +\\\hline + +\textbf{-bed} + & +When using BAM input (-abam), write output as BED. The default is to write output in BAM when using -abam. For example: intersectBed -abam reads.bam -b genes.bed -bed +\\\hline + +\textbf{-wa} + & +Write the original entry in A for each overlap. +\\\hline + +\textbf{-wb} + & +Write the original entry in B for each overlap. Useful for knowing what A overlaps. Restricted by -f and -r. +\\\hline + +\textbf{-wo} + & +Write the original A and B entries plus the number of base pairs of overlap between the two features. Only A features with overlap are reported. Restricted by -f and -r. +\\\hline + +\textbf{-wao} + & +Write the original A and B entries plus the number of base pairs of overlap between the two features. However, A features w/o overlap are also reported with a NULL B feature and overlap = 0. Restricted by -f and -r. +\\\hline + +\textbf{-u} + & +Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. Restricted by -f and -r. +\\\hline + +\textbf{-c} + & +For each entry in A, report the number of hits in B while restricting to -f. Reports 0 for A entries that have no overlap with B. Restricted by -f and -r. +\\\hline + +\textbf{-v} + & +Only report those entries in A that have no overlap in B. Restricted by -f and -r. +\\\hline + +\textbf{-f} + & +Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +\\\hline + +\textbf{-r} + & +Require that the fraction of overlap be reciprocal for A and B. In other words, if -f is 0.90 and -r is used, this requires that B overlap at least 90\% of A and that A also overlaps at least 90\% of B. +\\\hline + +\textbf{-s} + & +Force ``strandedness''. That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +\\\hline + +\textbf{-split} + & +Treat ``split'' BAM (i.e., having an ``N'' CIGAR operation) or BED12 entries as distinct BED intervals. +\\\hline +\end{tabulary} + + + +\paragraph{5.1.2 Default behavior} +\label{content/intersectBed:default-behavior} +By default, if an overlap is found, \textbf{intersectBed} reports the shared interval between the two +overlapping features. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BED/BAM A ******************* ************* + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result ======== +\end{Verbatim} + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed -a A.bed -b B.bed +chr1 150 200 +\end{Verbatim} + + +\paragraph{5.1.3 (-wa)Reporting the original A feature} +\label{content/intersectBed:wa-reporting-the-original-a-feature} +Instead, one can force \textbf{intersectBed} to report the \emph{original} \textbf{``A''} feature when an overlap is found. As +shown below, the entire ``A'' feature is reported, not just the portion that overlaps with the ``B'' feature. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BED/BAM A ******************* ************* + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =================== +\end{Verbatim} + +For example (compare with example from default behavior): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed -a A.bed -b B.bed -wa +chr1 100 200 +\end{Verbatim} + + +\paragraph{5.1.4 (-wb)Reporting the original B feature} +\label{content/intersectBed:wb-reporting-the-original-b-feature} +Similarly, one can force \textbf{intersectBed} to report the \emph{original} \textbf{``B''} feature when an overlap is found. If +just -wb is used, the overlapping portion of A will be reported followed by the \emph{original} \textbf{``B''}. If both -wa +and -wb are used, the \emph{originals} of both \textbf{``A''} and \textbf{``B''} will be reported. + +For example (-wb alone): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed -a A.bed -b B.bed -wb +chr1 150 200 chr1 150 250 +\end{Verbatim} + +Now -wa and -wb: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed -a A.bed -b B.bed -wa -wb +chr1 100 200 chr1 150 250 +\end{Verbatim} + + +\paragraph{5.1.5 (-u)Reporting the presence of \emph{at least one} overlapping feature} +\label{content/intersectBed:u-reporting-the-presence-of-at-least-one-overlapping-feature} +Frequently a feature in ``A'' will overlap with multiple features in ``B''. By default, \textbf{intersectBed} will +report each overlap as a separate output line. However, one may want to simply know that there is at +least one overlap (or none). When one uses the -u option, ``A'' features that overlap with one or more +``B'' features are reported once. Those that overlap with no ``B'' features are not reported at all. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed -a A.bed -b B.bed -u +chr1 100 200 +\end{Verbatim} + + +\paragraph{5.1.6 (-c)Reporting the number of overlapping features} +\label{content/intersectBed:c-reporting-the-number-of-overlapping-features} +The -c option reports a column after each ``A'' feature indicating the \emph{number} (0 or more) of overlapping +features found in ``B''. Therefore, \emph{each feature in A is reported once}. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed -a A.bed -b B.bed -c +chr1 100 200 2 +chr1 1000 2000 0 +\end{Verbatim} + + +\paragraph{5.1.6 (-c)Reporting the number of overlapping features} +\label{content/intersectBed:id1} +The -c option reports a column after each ``A'' feature indicating the \emph{number} (0 or more) of overlapping +features found in ``B''. Therefore, \emph{each feature in A is reported once}. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed -a A.bed -b B.bed -c +chr1 100 200 2 +chr1 1000 2000 0 +\end{Verbatim} + + +\paragraph{5.1.7 (-v)Reporting the absence of any overlapping features} +\label{content/intersectBed:v-reporting-the-absence-of-any-overlapping-features} +There will likely be cases where you'd like to know which ``A'' features do not overlap with any of the +``B'' features. Perhaps you'd like to know which SNPs don't overlap with any gene annotations. The -v +(an homage to ``grep -v'') option will only report those ``A'' features that have no overlaps in ``B''. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed -a A.bed -b B.bed -v +chr1 1000 2000 +\end{Verbatim} + + +\paragraph{5.1.8 (-f)Requiring a minimal overlap fraction} +\label{content/intersectBed:f-requiring-a-minimal-overlap-fraction} +By default, \textbf{intersectBed} will report an overlap between A and B so long as there is at least one base +pair is overlapping. Yet sometimes you may want to restrict reported overlaps between A and B to cases +where the feature in B overlaps at least X\% (e.g. 50\%) of the A feature. The -f option does exactly +this. + +For example (note that the second B entry is not reported): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 + +cat B.bed +chr1 130 201 +chr1 180 220 + +intersectBed -a A.bed -b B.bed -f 0.50 -wa -wb +chr1 100 200 chr1 130 201 +\end{Verbatim} + + +\paragraph{5.1.9 (-r, combined with -f)Requiring reciprocal minimal overlap fraction} +\label{content/intersectBed:r-combined-with-f-requiring-reciprocal-minimal-overlap-fraction} +Similarly, you may want to require that a minimal fraction of both the A and the B features is +overlapped. For example, if feature A is 1kb and feature B is 1Mb, you might not want to report the +overlap as feature A can overlap at most 1\% of feature B. If one set -f to say, 0.02, and one also +enable the -r (reciprocal overlap fraction required), this overlap would not be reported. + +For example (note that the second B entry is not reported): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 + +cat B.bed +chr1 130 201 +chr1 130 200000 + +intersectBed -a A.bed -b B.bed -f 0.50 -r -wa -wb +chr1 100 200 chr1 130 201 +\end{Verbatim} + + +\paragraph{5.1.10 (-s)Enforcing ``strandedness''} +\label{content/intersectBed:s-enforcing-strandedness} +By default, \textbf{intersectBed} will report overlaps between features even if the features are on opposite +strands. However, if strand information is present in both BED files and the ``-s'' option is used, overlaps +will only be reported when features are on the same strand. + +For example (note that the second B entry is not reported): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 a1 100 + + +cat B.bed +chr1 130 201 b1 100 - +chr1 130 201 b2 100 + + +intersectBed -a A.bed -b B.bed -wa -wb -s +chr1 100 200 a1 100 + chr1 130 201 b2 100 + +\end{Verbatim} + + +\paragraph{5.1.11 (-abam)Default behavior when using BAM input} +\label{content/intersectBed:abam-default-behavior-when-using-bam-input} +When comparing alignments in BAM format (\textbf{-abam}) to features in BED format (\textbf{-b}), \textbf{intersectBed} +will, \textbf{by default}, write the output in BAM format. That is, each alignment in the BAM file that meets +the user's criteria will be written (to standard output) in BAM format. This serves as a mechanism to +create subsets of BAM alignments are of biological interest, etc. Note that only the mate in the BAM +alignment is compared to the BED file. Thus, if only one end of a paired-end sequence overlaps with a +feature in B, then that end will be written to the BAM output. By contrast, the other mate for the +pair will not be written. One should use \textbf{pairToBed(Section 5.2)} if one wants each BAM alignment +for a pair to be written to BAM output. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -abam reads.unsorted.bam -b simreps.bed \textbar{} samtools view - \textbar{} head -3 + +BERTHA\_0001:3:1:15:1362\#0 99 chr4 9236904 0 50M = 9242033 5 1 7 9 +AGACGTTAACTTTACACACCTCTGCCAAGGTCCTCATCCTTGTATTGAAG W c T U ] b \PYGZbs{} g c e g X g f c b f c c b d d g g V Y P W W \_ +\PYGZbs{}c{}`dcdabdfW\textasciicircum{}a\textasciicircum{}gggfgd XT:A:R NM:i:0 SM:i:0 AM:i:0 X0:i:19 X1:i:2 XM:i:0 XO:i:0 XG:i:0 MD:Z:50 +BERTHA \_0001:3:1:16:994\#0 83 chr6 114221672 37 25S6M1I11M7S = +114216196 -5493 G A A A G G C C A G A G T A T A G A A T A A A C A C A A C A A T G T C C A A G G T A C A C T G T T A +gffeaaddddggggggedgcgeggdegggggffcgggggggegdfggfgf XT:A:M NM:i:3 SM:i:37 AM:i:37 XM:i:2 X O : i : +1 XG:i:1 MD:Z:6A6T3 +BERTHA \_0001:3:1:16:594\#0 147 chr8 43835330 0 50M = +43830893 -4487 CTTTGGGAGGGCTTTGTAGCCTATCTGGAAAAAGGAAATATCTTCCCATG U +\PYGZbs{}e\textasciicircum{}bgeTdg\_Kgcg{}`ggeggg\_gggggggggddgdggVg\PYGZbs{}gWdfgfgff XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:10 X1:i:7 X M : i : +2 XO:i:0 XG:i:0 MD:Z:1A2T45 +\end{Verbatim} + + +\paragraph{5.1.12 (-bed)Output BED format when using BAM input} +\label{content/intersectBed:bed-output-bed-format-when-using-bam-input} +When comparing alignments in BAM format (\textbf{-abam}) to features in BED format (\textbf{-b}), \textbf{intersectBed} +will \textbf{optionally} write the output in BED format. That is, each alignment in the BAM file is converted +to a 6 column BED feature and if overlaps are found (or not) based on the user's criteria, the BAM +alignment will be reported in BED format. The BED ``name'' field is comprised of the RNAME field in +the BAM alignment. If mate information is available, the mate (e.g., ``/1'' or ``/2'') field will be +appended to the name. The ``score'' field is the mapping quality score from the BAM alignment. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -abam reads.unsorted.bam -b simreps.bed -bed \textbar{} head -20 + +chr4 9236903 9236953 BERTHA\_0001:3:1:15:1362\#0/1 0 + +chr6 114221671 114221721 BERTHA\_0001:3:1:16:994\#0/1 37 - +chr8 43835329 43835379 BERTHA\_0001:3:1:16:594\#0/2 0 - +chr4 49110668 49110718 BERTHA\_0001:3:1:31:487\#0/1 23 + +chr19 27732052 27732102 BERTHA\_0001:3:1:32:890\#0/2 46 + +chr19 27732012 27732062 BERTHA\_0001:3:1:45:1135\#0/1 37 + +chr10 117494252 117494302 BERTHA\_0001:3:1:68:627\#0/1 37 - +chr19 27731966 27732016 BERTHA\_0001:3:1:83:931\#0/2 9 + +chr8 48660075 48660125 BERTHA\_0001:3:1:86:608\#0/2 37 - +chr9 34986400 34986450 BERTHA\_0001:3:1:113:183\#0/2 37 - +chr10 42372771 42372821 BERTHA\_0001:3:1:128:1932\#0/1 3 - +chr19 27731954 27732004 BERTHA\_0001:3:1:130:1402\#0/2 0 + +chr10 42357337 42357387 BERTHA\_0001:3:1:137:868\#0/2 9 + +chr1 159720631 159720681 BERTHA\_0001:3:1:147:380\#0/2 37 - +chrX 58230155 58230205 BERTHA\_0001:3:1:151:656\#0/2 37 - +chr5 142612746 142612796 BERTHA\_0001:3:1:152:1893\#0/1 37 - +chr9 71795659 71795709 BERTHA\_0001:3:1:177:387\#0/1 37 + +chr1 106240854 106240904 BERTHA\_0001:3:1:194:928\#0/1 37 - +chr4 74128456 74128506 BERTHA\_0001:3:1:221:724\#0/1 37 - +chr8 42606164 42606214 BERTHA\_0001:3:1:244:962\#0/1 37 + +\end{Verbatim} + + +\paragraph{5.1.13 (-split)Reporting overlaps with spliced alignments or blocked BED features} +\label{content/intersectBed:split-reporting-overlaps-with-spliced-alignments-or-blocked-bed-features} +As described in section 1.3.19, intersectBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq reads, for +example, one typically wants to only screen for overlaps for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The \textbf{-split} command allows for such overlaps to be +performed. + +For example, the diagram below illustrates the \emph{default} behavior. The blue dots represent the ``split/ +spliced'' portion of the alignment (i.e., CIGAR ``N'' operation). In this case, the two exon annotations +are reported as overlapping with the ``split'' BAM alignment, but in addition, a third feature that +overlaps the ``split'' portion of the alignment is also reported. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +Exons --------------- ---------- + +BED/BAM A ************.......................................**** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =============== ======== ========== +\end{Verbatim} + +In contrast, when using the \textbf{-split} option, only the exon overlaps are reported. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +Exons --------------- ---------- + +BED/BAM A ************.......................................**** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =============== ========== +\end{Verbatim} + + +\subsubsection{5.2 pairToBed} +\label{content/pairToBed::doc}\label{content/pairToBed:pairtobed} +\textbf{pairToBed} compares each end of a BEDPE feature or a paired-end BAM alignment to a feature file in +search of overlaps. + +\textbf{NOTE: pairToBed requires that the BAM file is sorted/grouped by the read name. This +allows pairToBed to extract correct alignment coordinates for each end based on their +respective CIGAR strings. It also assumes that the alignments for a given pair come in +groups of twos. There is not yet a standard method for reporting multiple alignments +using BAM. pairToBed will fail if an aligner does not report alignments in pairs.} + + +\paragraph{5.2.1 Usage and option summary} +\label{content/pairToBed:usage-and-option-summary} +\textbf{Usage:} + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed [OPTIONS] [-a \textless{}BEDPE\textgreater{} \textbar{}\textbar{} -abam \textless{}BAM\textgreater{}] -b \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabular}{|p{0.475\linewidth}|p{0.475\linewidth}|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-a} + & +BEDPE file A. Each feature in A is compared to B in search of overlaps. Use ``stdin'' if passing A with a UNIX pipe. Output will be in BEDPE format. +\\\hline + +\textbf{-b} + & +BED file B. Use ``stdin'' if passing B with a UNIX pipe. +\\\hline + +\textbf{-abam} + & +BAM file A. Each end of each BAM alignment in A is compared to B in search of overlaps. Use ``stdin'' if passing A with a UNIX pipe: For example: samtools view ?Cb \textless{}BAM\textgreater{} \textbar{} pairToBed ?Cabam stdin ?Cb genes.bed \textbar{} samtools view - +\\\hline + +\textbf{-ubam} + & +Write uncompressed BAM output. The default is write compressed BAM output. +\\\hline + +\textbf{-bedpe} + & +When using BAM input (-abam), write output as BEDPE. The default is to write output in BAM when using -abam. For example: pairToBed ?Cabam reads.bam ?Cb genes.bed ?Cbedpe +\\\hline + +\textbf{-ed} + & +Use BAM total edit distance (NM tag) for BEDPE score. Default for BEDPE is to use the \emph{minimum} of the two mapping qualities for the pair. When -ed is used the \emph{total} edit distance from the two mates is reported as the score. +\\\hline + +\textbf{-f} + & +Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +\\\hline + +\textbf{-s} + & +Force ``strandedness''. That is, only report hits in B that overlap A on the \textbf{same} strand. By default, overlaps are reported without respect to strand. +\\\hline + +\textbf{-type} + & +Approach to reporting overlaps between BEDPE and BED. +\begin{quote} +\begin{quote} + +\textbf{either-} Report overlaps if either end of A overlaps B. +\begin{itemize} +\item {} +\emph{Default} + +\end{itemize} + +\textbf{neither-} Report A if neither end of A overlaps B. + +\textbf{xor-} Report overlaps if one and only one end of A overlaps B. + +\textbf{both-} Report overlaps if both ends of A overlap B. + +\textbf{notboth-} Report overlaps if neither end or one and only one end of A overlap B. + +\textbf{ispan-} Report overlaps between {[}end1, start2{]} of A and B. +\begin{itemize} +\item {} +Note: If chrom1 \textless{}\textgreater{} chrom2, entry is ignored. + +\end{itemize} +\end{quote} + +\textbf{ospan-} Report overlaps between {[}start1, end2{]} of A and B. +\begin{quote} +\begin{itemize} +\item {} +Note: If chrom1 \textless{}\textgreater{} chrom2, entry is ignored. + +\end{itemize} + +\textbf{notispan-} Report A if ispan of A doesn't overlap B. +- Note: If chrom1 \textless{}\textgreater{} chrom2, entry is ignored. + +\textbf{notospan-} Report A if ospan of A doesn't overlap B. +- Note: If chrom1 \textless{}\textgreater{} chrom2, entry is ignored. +\end{quote} +\end{quote} +\\\hline +\end{tabular} + + + +\paragraph{5.2.2 Default behavior} +\label{content/pairToBed:default-behavior} +By default, a BEDPE / BAM feature will be reported if \emph{either} end overlaps a feature in the BED file. +In the example below, the left end of the pair overlaps B yet the right end does not. Thus, BEDPE/ +BAM A is reported since the default is to report A if either end overlaps B. + +Default: Report A if \emph{either} end overlaps B. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + + +\paragraph{5.2.3 (-type)Optional overlap requirements} +\label{content/pairToBed:type-optional-overlap-requirements} +Using then \textbf{-type} option, \textbf{pairToBed} provides several other overlap requirements for controlling how +overlaps between BEDPE/BAM A and BED B are reported. The examples below illustrate how each +option behaves. + +\textbf{-type both}: Report A only if \emph{both} ends overlap B. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + +\textbf{-type neither}: Report A only if \emph{neither} end overlaps B. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + +\textbf{-type xor}: Report A only if \emph{one and only one} end overlaps B. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result +\end{Verbatim} + +\textbf{-type notboth}: Report A only if \emph{neither end} \textbf{or} \emph{one and only one} end overlaps B. Thus ``notboth'' +includes what would be reported by ``neither'' and by ``xor''. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result +\end{Verbatim} + +\textbf{-type ispan}: Report A if it's ``\emph{inner span}'' overlaps B. Applicable only to intra-chromosomal features. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + + Inner span \textbar{}-------------------------------\textbar{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== + + + +BEDPE/BAM A =====.................................===== + +BED File B ==== + +Result +\end{Verbatim} + +\textbf{-type ospan}: Report A if it's ``\emph{outer span}'' overlaps B. Applicable only to intra-chromosomal features. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + + Outer span \textbar{}-----------------------------------------\textbar{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result +\end{Verbatim} + +\textbf{-type notispan}: Report A only if it's ``\emph{inner span}'' does not overlap B. Applicable only to intrachromosomal +features. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + + Inner span \textbar{}-------------------------------\textbar{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + +\textbf{-type notospan}: Report A if it's ``\emph{outer span}'' overlaps B. Applicable only to intra-chromosomal +features. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + + Outer span \textbar{}-----------------------------------------\textbar{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + + +\paragraph{5.2.4 (-f)Requiring a minimum overlap fraction} +\label{content/pairToBed:f-requiring-a-minimum-overlap-fraction} +By default, \textbf{pairToBed} will report an overlap between A and B so long as there is at least one base +pair is overlapping on either end. Yet sometimes you may want to restrict reported overlaps between A +and B to cases where the feature in B overlaps at least X\% (e.g. 50\%) of A. The \textbf{?Cf} option does exactly +this. The \textbf{-f} option may also be combined with the -type option for additional control. For example, +combining \textbf{-f 0.50} with \textbf{-type both} requires that both ends of A have at least 50\% overlap with a +feature in B. + +For example, report A only at least 50\% of one of the two ends is overlapped by B. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -a A.bedpe -b B.bed -f 0.5 + + +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + + +\paragraph{5.2.5 (-s)Enforcing ``strandedness''} +\label{content/pairToBed:s-enforcing-strandedness} +By default, \textbf{pairToBed} will report overlaps between features even if the features are on opposing +strands. However, if strand information is present in both files and the \textbf{``-s''} option is used, overlaps will +only be reported when features are on the same strand. + +For example, report A only at least 50\% of one of the two ends is overlapped by B. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -a A.bedpe -b B.bed -s + + + +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{}.................................\textless{}\textless{}\textless{}\textless{}\textless{} + +BED File B \textless{}\textless{} \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{} + +Result + + + +BEDPE/BAM A \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{}.................................\textless{}\textless{}\textless{}\textless{}\textless{} + +BED File B \textgreater{}\textgreater{} \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{} + +Result \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{}.................................\textless{}\textless{}\textless{}\textless{}\textless{} +\end{Verbatim} + + +\paragraph{5.2.6 (-abam)Default is to write BAM output when using BAM input} +\label{content/pairToBed:abam-default-is-to-write-bam-output-when-using-bam-input} +When comparing \emph{paired} alignments in BAM format (\textbf{-abam}) to features in BED format (\textbf{-b}), +\textbf{pairToBed} will , by default, write the output in BAM format. That is, each alignment in the BAM +file that meets the user's criteria will be written (to standard output) in BAM format. This serves as a +mechanism to create subsets of BAM alignments are of biological interest, etc. Note that both +alignments for each aligned pair will be written to the BAM output. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed ?Cabam pairedReads.bam ?Cb simreps.bed \textbar{} samtools view - \textbar{} head -4 + +JOBU\_0001:3:1:4:1060\#0 99 chr10 42387928 29 50M = 42393091 5 2 1 3 +AA A A A C G G A A T T A T C G A A T G G A A T C G A A G A G A A T C T T C G A A C G G A C C C G A +dcgggggfbgfgdgggggggfdfgggcggggfcggcggggggagfgbggc XT:A:R NM:i:5 SM:i:0 AM:i:0 X0:i:3 X 1 : i : +3 XM:i:5 XO:i:0 XG:i:0 MD:Z:0T0C33A5T4T3 +JOBU\_0001:3:1:4:1060\#0 147 chr10 42393091 0 50M = 42387928 - 5 2 1 3 +AAATGGAATCGAATGGAATCAACATCAAATGGAATCAAATGGAATCATTG K g d c g g d e c d g +\PYGZbs{}d{}`ggfcgcggffcgggc\textasciicircum{}cgfgccgggfc\textasciicircum{}gcdgg\PYGZbs{}bg XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:3 X1:i:13 XM:i:2 X O : i : +0 XG:i:0 MD:Z:21T14G13 +JOBU\_0001:3:1:8:446\#0 99 chr10 42388091 9 50M = 42392738 4 6 9 7 +GAATCGACTGGAATCATCATCGGATGGAAATGAATGGAATAATCATCGAA f \_ O f f {}` ] I e Y f f {}` f f e d d c f e f c P {}` c \_ W \PYGZbs{} \PYGZbs{} R \_ ] +\_BBBBBBBBBBBBBBBB XT:A:U NM:i:4 SM:i:0 AM:i:0 X0:i:1 X1:i:3 XM:i:4 XO:i:0 XG:i:0 M D : Z : +7A22C9C2T6 +JOBU\_0001:3:1:8:446\#0 147 chr10 42392738 9 50M = 42388091 - 4 6 9 7 +TTATCGAATGCAATCGAATGGAATTATCGAATGCAATCGAATAGAATCAT df\textasciicircum{}ffec\_JW[{}`MWceRec{}`{}`fee{}`dcecfeeZae{}`c] +f\textasciicircum{}cNeecfccf\textasciicircum{} XT:A:R NM:i:1 SM:i:0 AM:i:0 X0:i:2 X1:i:2 XM:i:1 XO:i:0 XG:i:0 MD:Z:38A11 +\end{Verbatim} + + +\paragraph{5.2.7 (-bedpe)Output BEDPE format when using BAM input} +\label{content/pairToBed:bedpe-output-bedpe-format-when-using-bam-input} +When comparing \emph{paired} alignments in BAM format (\textbf{-abam}) to features in BED format (\textbf{-b}), +\textbf{pairToBed} will optionally write the output in BEDPE format. That is, each alignment in the BAM +file is converted to a 10 column BEDPE feature and if overlaps are found (or not) based on the user's +criteria, the BAM alignment will be reported in BEDPE format. The BEDPE ``name'' field is comprised +of the RNAME field in the BAM alignment. The ``score'' field is the mapping quality score from the +BAM alignment. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed ?Cabam pairedReads.bam ?Cb simreps.bed -bedpe \textbar{} head -5 +chr10 42387927 42387977 chr10 42393090 42393140 + JOBU\_0001:3:1:4:1060\#0 29 + - +chr10 42388090 42388140 chr10 42392737 42392787 + JOBU\_0001:3:1:8:446\#0 9 + - +chr10 42390552 42390602 chr10 42396045 42396095 + JOBU\_0001:3:1:10:1865\#0 9 + - +chrX 139153741 139153791 chrX 139159018 139159068 + JOBU\_0001:3:1:14:225\#0 37 + - +chr4 9236903 9236953 chr4 9242032 9242082 + JOBU\_0001:3:1:15:1362\#0 0 + - +\end{Verbatim} + + +\subsubsection{5.3 pairToPair} +\label{content/pairToPair:pairtopair}\label{content/pairToPair::doc} +\textbf{pairToPair} compares two BEDPE files in search of overlaps where each end of a BEDPE feature in A +overlaps with the ends of a feature in B. For example, using pairToPair, one could screen for the exact +same discordant paired-end alignment in two files. This could suggest (among other things) that the +discordant pair suggests the same structural variation in each file/sample. + + +\paragraph{5.3.1 Usage and option summary} +\label{content/pairToPair:usage-and-option-summary} +\textbf{Usage:} + +\begin{Verbatim}[commandchars=\\\{\}] +pairToPair [OPTIONS] -a \textless{}BEDPE\textgreater{} -b \textless{}BEDPE\textgreater{} +\end{Verbatim} + +\begin{tabular}{|p{0.475\linewidth}|p{0.475\linewidth}|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-a} + & +BEDPE file A. Each feature in A is compared to B in search of overlaps. Use ``stdin'' if passing A with a UNIX pipe. +\\\hline + +\textbf{-b} + & +BEDPE file B. Use ``stdin'' if passing B with a UNIX pipe. +\\\hline + +\textbf{-f} + & +Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +\\\hline + +\textbf{-is} + & +Force ``strandedness''. That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +\\\hline + +\textbf{-type} + & \begin{quote} + +Approach to reporting overlaps between BEDPE and BED. +\end{quote} + +\begin{DUlineblock}{0em} +\item[] \textbf{either} Report overlaps if either ends of A overlap B. +\end{DUlineblock} +\begin{quote} + +\begin{DUlineblock}{0em} +\item[] \textbf{neither} Report A if neither end of A overlaps B. +\end{DUlineblock} + +\begin{DUlineblock}{0em} +\item[] \textbf{both} Report overlaps if both ends of A overlap B. -\emph{Default behavior.} +\end{DUlineblock} +\end{quote} +\\\hline +\end{tabular} + + + +\paragraph{5.3.2 Default behavior} +\label{content/pairToPair:default-behavior} +By default, a BEDPE feature from A will be reported if \emph{both} ends overlap a feature in the BEDPE B +file. If strand information is present for the two BEDPE files, it will be further required that the +overlaps on each end be on the same strand. This way, an otherwise overlapping (in terms of genomic +locations) F/R alignment will not be matched with a R/R alignment. + +Default: Report A if \emph{both} ends overlaps B. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + +Default when strand information is present in both BEDPE files: Report A if \emph{both} ends overlaps B \emph{on +the same strands}. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE A \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{}.................................\textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{} + +BEDPE B \textless{}\textless{}\textless{}\textless{}\textless{}.............................\textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{} + +Result + + + +BEDPE A \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{}.................................\textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{} + +BEDPE B \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{}.............................\textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{} + +Result \textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{}.................................\textgreater{}\textgreater{}\textgreater{}\textgreater{}\textgreater{} +\end{Verbatim} + + +\paragraph{5.3.3 (-type neither)Optional overlap requirements} +\label{content/pairToPair:type-neither-optional-overlap-requirements} +Using then \textbf{-type neither, pairToPair} will only report A if \emph{neither} end overlaps with a BEDPE +feature in B. + +\textbf{-type neither}: Report A only if \emph{neither} end overlaps B. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}......................................\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}................................................\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =====.................................===== +\end{Verbatim} + + +\subsubsection{5.4 bamToBed} +\label{content/bamToBed:bamtobed}\label{content/bamToBed::doc} +\textbf{bamToBed} is a general purpose tool that will convert sequence alignments in BAM format to either +BED6, BED12 or BEDPE format. This enables one to convert BAM files for use with all of the other +BEDTools. The CIGAR string is used to compute the alignment end coordinate in an ``ungapped'' +fashion. That is, match (``M''), deletion (``D''), and splice (``N'') operations are observed when computing +alignment ends. + + +\paragraph{5.4.1 Usage and option summary} +\label{content/bamToBed:usage-and-option-summary} +\textbf{Usage:} + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed [OPTIONS] -i \textless{}BAM\textgreater{} +\end{Verbatim} + +\begin{tabular}{|p{0.475\linewidth}|p{0.475\linewidth}|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-bedpe} + & \begin{quote} +\begin{description} +\item[{Write BAM alignments in BEDPE format. Only one alignment from paired-end reads will be reported. Specifically, it each mate is aligned to the same chromosome, the BAM alignment reported will be the one where the BAM insert size is greater than zero. When the mate alignments are interchromosomal, the lexicographically lower chromosome will be reported first. Lastly, when an end is unmapped, the chromosome and strand will be set to ''.'' and the start and end coordinates will be set to -1. \emph{By default, this is disabled and the output will be reported in BED format}.}] \leavevmode +\textbf{NOTE: When using this option, it is required that the BAM file is sorted/grouped by the read name. This allows bamToBed to extract correct alignment coordinates for each end based on their respective CIGAR strings. It also assumes that the alignments for a given pair come in groups of twos. There is not yet a standard method for reporting multiple alignments using BAM. bamToBed will fail if an aligner does not report alignments in pairs}. + +\end{description} +\end{quote} + +BAM files may be piped to bamToBed by specifying ``-i stdin''. See example below. +\\\hline + +\textbf{-bed12} + & +Write ``blocked'' BED (a.k.a. BED12) format. This will convert ``spliced'' BAM alignments (denoted by the ``N'' CIGAR operation) to BED12. +\\\hline + +\textbf{-ed} + & +Use the ``edit distance'' tag (NM) for the BED score field. Default for BED is to use mapping quality. Default for BEDPE is to use the \emph{minimum} of the two mapping qualities for the pair. When -ed is used with -bedpe, the total edit distance from the two mates is reported. +\\\hline + +\textbf{-tag} + & +Use other \emph{numeric} BAM alignment tag for BED score. Default for BED is to use mapping quality. Disallowed with BEDPE output. +\\\hline + +\textbf{-color} + & +An R,G,B string for the color used with BED12 format. Default is (255,0,0). +\\\hline + +\textbf{-split} + & +Report each portion of a ``split'' BAM (i.e., having an ``N'' CIGAR operation) alignment as a distinct BED intervals. +\\\hline +\end{tabular} + + +By default, each alignment in the BAM file is converted to a 6 column BED. The BED ``name'' field is +comprised of the RNAME field in the BAM alignment. If mate information is available, the mate (e.g., +``/1'' or ``/2'') field will be appended to the name. The ``score'' field is the mapping quality score from the +BAM alignment, unless the \textbf{-ed} option is used. + +Examples: + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed -i reads.bam \textbar{} head -5 +chr7 118970079 118970129 TUPAC\_0001:3:1:0:1452\#0/1 37 - +chr7 118965072 118965122 TUPAC\_0001:3:1:0:1452\#0/2 37 + +chr11 46769934 46769984 TUPAC\_0001:3:1:0:1472\#0/1 37 - + +bamToBed -i reads.bam -tag NM \textbar{} head -5 +chr7 118970079 118970129 TUPAC\_0001:3:1:0:1452\#0/1 1 - +chr7 118965072 118965122 TUPAC\_0001:3:1:0:1452\#0/2 3 + +chr11 46769934 46769984 TUPAC\_0001:3:1:0:1472\#0/1 1 - + +bamToBed -i reads.bam -bedpe \textbar{} head -3 +chr7 118965072 118965122 chr7 118970079 118970129 + TUPAC\_0001:3:1:0:1452\#0 37 + - +chr11 46765606 46765656 chr11 46769934 46769984 + TUPAC\_0001:3:1:0:1472\#0 37 + - +chr20 54704674 54704724 chr20 54708987 54709037 + TUPAC\_0001:3:1:1:1833\#0 37 + +\end{Verbatim} + +One can easily use samtools and bamToBed together as part of a UNIX pipe. In this example, we will +only convert properly-paired (BAM flag == 0x2) reads to BED format. + +\begin{Verbatim}[commandchars=\\\{\}] +samtools view -bf 0x2 reads.bam \textbar{} bamToBed -i stdin \textbar{} head +chr7 118970079 118970129 TUPAC\_0001:3:1:0:1452\#0/1 37 - +chr7 118965072 118965122 TUPAC\_0001:3:1:0:1452\#0/2 37 + +chr11 46769934 46769984 TUPAC\_0001:3:1:0:1472\#0/1 37 - +chr11 46765606 46765656 TUPAC\_0001:3:1:0:1472\#0/2 37 + +chr20 54704674 54704724 TUPAC\_0001:3:1:1:1833\#0/1 37 + +chr20 54708987 54709037 TUPAC\_0001:3:1:1:1833\#0/2 37 - +chrX 9380413 9380463 TUPAC\_0001:3:1:1:285\#0/1 0 - +chrX 9375861 9375911 TUPAC\_0001:3:1:1:285\#0/2 0 + +chrX 131756978 131757028 TUPAC\_0001:3:1:2:523\#0/1 37 + +chrX 131761790 131761840 TUPAC\_0001:3:1:2:523\#0/2 37 - +\end{Verbatim} + + +\paragraph{5.4.2 (-split)Creating BED12 features from ``spliced'' BAM entries.} +\label{content/bamToBed:split-creating-bed12-features-from-spliced-bam-entries} +bamToBed will, by default, create a BED6 feature that represents the entire span of a spliced/split +BAM alignment. However, when using the \textbf{-split} command, a BED12 feature is reported where BED +blocks will be created for each aligned portion of the sequencing read. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +Exons *************** ********** + +BED/BAM A \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}....................................\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result =============== ==== +\end{Verbatim} + + +\subsubsection{5.5 windowBed} +\label{content/windowBed:windowbed}\label{content/windowBed::doc} +Similar to \textbf{intersectBed}, \textbf{windowBed} searches for overlapping features in A and B. However, +\textbf{windowBed} adds a specified number (1000, by default) of base pairs upstream and downstream of +each feature in A. In effect, this allows features in B that are ``near'' features in A to be detected. + + +\paragraph{5.5.1 Usage and option summary} +\label{content/windowBed:usage-and-option-summary} +\textbf{Usage:} + +\begin{Verbatim}[commandchars=\\\{\}] +windowBed [OPTIONS] -a \textless{}BED/GFF/VCF\textgreater{} -b \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-abam} + & +BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use ``stdin'' if passing A with a UNIX pipe: For example: samtools view -b \textless{}BAM\textgreater{} \textbar{} windowBed -abam stdin -b genes.bed +\\\hline + +\textbf{-ubam} + & +Write uncompressed BAM output. The default is write compressed BAM output. +\\\hline + +\textbf{-bed} + & +When using BAM input (-abam), write output as BED. The default is to write output in BAM when using -abam. For example: windowBed -abam reads.bam -b genes.bed -bed +\\\hline + +\textbf{-w} + & +Base pairs added upstream and downstream of each entry in A when searching for overlaps in B. \emph{Default is 1000 bp}. +\\\hline + +\textbf{-l} + & +Base pairs added upstream (left of) of each entry in A when searching for overlaps in B. \emph{Allows one to create assymetrical ``windows''. Default is 1000bp}. +\\\hline + +\textbf{-r} + & +Base pairs added downstream (right of) of each entry in A when searching for overlaps in B. \emph{Allows one to create assymetrical ``windows''. Default is 1000bp}. +\\\hline + +\textbf{-sw} + & +Define -l and -r based on strand. For example if used, -l 500 for a negative-stranded feature will add 500 bp downstream. \emph{By default, this is disabled}. +\\\hline + +\textbf{-sm} + & +Only report hits in B that overlap A on the same strand. \emph{By default, overlaps are reported without respect to strand}. +\\\hline + +\textbf{-u} + & +Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. +\\\hline + +\textbf{-c} + & +For each entry in A, report the number of hits in B while restricting to -f. Reports 0 for A entries that have no overlap with B. +\\\hline +\end{tabulary} + + + +\paragraph{5.5.2 Default behavior} +\label{content/windowBed:default-behavior} +By default, \textbf{windowBed} adds 1000 bp upstream and downstream of each A feature and searches for +features in B that overlap this ``window''. If an overlap is found in B, both the \emph{original} A feature and the +\emph{original} B feature are reported. For example, in the figure below, feature B1 would be found, but B2 +would not. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + "window" = 10 +BED File A \textless{}----------*************----------\textgreater{} + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result ======== +\end{Verbatim} + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +windowBed -a A.bed -b B.bed +chr1 100 200 chr1 500 1000 +\end{Verbatim} + + +\paragraph{5.5.3 (-w)Defining a custom window size} +\label{content/windowBed:w-defining-a-custom-window-size} +Instead of using the default window size of 1000bp, one can define a custom, \emph{symmetric} window around +each feature in A using the \textbf{-w} option. One should specify the window size in base pairs. For example, +a window of 5kb should be defined as \textbf{-w 5000}. + +For example (note that in contrast to the default behavior, the second B entry is reported): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +windowBed -a A.bed -b B.bed -w 5000 +chr1 100 200 chr1 500 1000 +chr1 100 200 chr1 1300 2000 +\end{Verbatim} + + +\paragraph{5.5.4 (-l and -r)Defining assymteric windows} +\label{content/windowBed:l-and-r-defining-assymteric-windows} +One can also define asymmetric windows where a differing number of bases are added upstream and +downstream of each feature using the \textbf{-l (upstream)} and \textbf{-r (downstream)} options. + +For example (note the difference between -l 200 and -l 300): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 1000 2000 + +cat B.bed +chr1 500 800 +chr1 10000 20000 + +windowBed -a A.bed -b B.bed -l 200 -r 20000 +chr1 100 200 chr1 10000 20000 + +windowBed -a A.bed -b B.bed -l 300 -r 20000 +chr1 100 200 chr1 500 800 +chr1 100 200 chr1 10000 20000 +\end{Verbatim} + + +\paragraph{5.5.5 (-sw)Defining assymteric windows based on strand} +\label{content/windowBed:sw-defining-assymteric-windows-based-on-strand} +Especially when dealing with gene annotations or RNA-seq experiments, you may want to define +asymmetric windows based on ``strand''. For example, you may want to screen for overlaps that occur +within 5000 bp upstream of a gene (e.g. a promoter region) while screening only 1000 bp downstream of +the gene. By enabling the \textbf{-sw} (``stranded'' windows) option, the windows are added upstream or +downstream according to strand. For example, imagine one specifies \textbf{-l 5000 -r 1000} as well as the \textbf{- +sw} option. In this case, forward stranded (``+'') features will screen 5000 bp to the \emph{left} (that is, \emph{lower} +genomic coordinates) and 1000 bp to the \emph{right} (that is, \emph{higher} genomic coordinates). By contrast, +reverse stranded (``-'') features will screen 5000 bp to the \emph{right} (that is, \emph{higher} genomic coordinates) and +1000 bp to the \emph{left} (that is, \emph{lower} genomic coordinates). + +For example (note the difference between -l 200 and -l 300): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 10000 20000 A.forward 1 + +chr1 10000 20000 A.reverse 1 - + +cat B.bed +chr1 1000 8000 B1 +chr1 24000 32000 B2 + +windowBed -a A.bed -b B.bed -l 5000 -r 1000 -sw +chr1 10000 20000 A.forward 1 + chr1 1000 8000 B1 +chr1 10000 20000 A.reverse 1 - chr1 24000 32000 B2 +\end{Verbatim} + + +\paragraph{5.5.6 (-sm)Enforcing ``strandedness''} +\label{content/windowBed:sm-enforcing-strandedness} +This option behaves the same as the -s option for intersectBed while scanning for overlaps within the +``window'' surrounding A. See the discussion in the intersectBed section for details. + + +\paragraph{5.5.7 (-u)Reporting the presence of at least one overlapping feature} +\label{content/windowBed:u-reporting-the-presence-of-at-least-one-overlapping-feature} +This option behaves the same as for intersectBed while scanning for overlaps within the ``window'' +surrounding A. See the discussion in the intersectBed section for details. + + +\paragraph{5.5.8 (-c)Reporting the number of overlapping features} +\label{content/windowBed:c-reporting-the-number-of-overlapping-features} +This option behaves the same as for intersectBed while scanning for overlaps within the ``window'' +surrounding A. See the discussion in the intersectBed section for details. + + +\paragraph{5.5.9 (-v)Reporting the absence of any overlapping features} +\label{content/windowBed:v-reporting-the-absence-of-any-overlapping-features} +This option behaves the same as for intersectBed while scanning for overlaps within the ``window'' +surrounding A. See the discussion in the intersectBed section for details. + + +\subsubsection{5.6 closestBed} +\label{content/closestBed:closestbed}\label{content/closestBed::doc} +Similar to \textbf{intersectBed, closestBed} searches for overlapping features in A and B. In the event that +no feature in B overlaps the current feature in A, \textbf{closestBed} will report the \emph{closest} (that is, least +genomic distance from the start or end of A) feature in B. For example, one might want to find which +is the closest gene to a significant GWAS polymorphism. Note that \textbf{closestBed} will report an +overlapping feature as the closest---that is, it does not restrict to closest \emph{non-overlapping} feature. + + +\paragraph{5.6.1 Usage and option summary} +\label{content/closestBed:usage-and-option-summary} +\textbf{Usage:} + +\begin{Verbatim}[commandchars=\\\{\}] +closestBed [OPTIONS] -a \textless{}BED/GFF/VCF\textgreater{} -b \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabular}{|p{0.475\linewidth}|p{0.475\linewidth}|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-s} + & +Force strandedness. That is, find the closest feature in B overlaps A on the same strand. \emph{By default, this is disabled}. +\\\hline + +\textbf{-d} + & +In addition to the closest feature in B, report its distance to A as an extra column. The reported distance for overlapping features will be 0. +\\\hline + +\textbf{-t} + & +How ties for closest feature should be handled. This occurs when two features in B have exactly the same overlap with a feature in A. \emph{By default, all such features in B are reported}. +\begin{quote} + +Here are the other choices controlling how ties are handled: + +\emph{all-} Report all ties (default). + +\emph{first-} Report the first tie that occurred in the B file. + +\emph{last-} Report the last tie that occurred in the B file. +\end{quote} +\\\hline +\end{tabular} + + + +\paragraph{5.6.2 Default behavior} +\label{content/closestBed:default-behavior} +\textbf{closestBed} first searches for features in B that overlap a feature in A. If overlaps are found, the feature +in B that overlaps the highest fraction of A is reported. If no overlaps are found, \textbf{closestBed} looks for +the feature in B that is \emph{closest} (that is, least genomic distance to the start or end of A) to A. For +example, in the figure below, feature B1 would be reported as the closest feature to A1. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BED FILE A ************* + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result ====== +\end{Verbatim} + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +closestBed -a A.bed -b B.bed +chr1 100 200 chr1 500 1000 +\end{Verbatim} + + +\paragraph{5.6.3 (-s)Enforcing ``strandedness''} +\label{content/closestBed:s-enforcing-strandedness} +This option behaves the same as the -s option for intersectBed while scanning for the closest +(overlapping or not) feature in B. See the discussion in the intersectBed section for details. + + +\paragraph{5.6.4 (-t)Controlling how ties for ``closest'' are broken} +\label{content/closestBed:t-controlling-how-ties-for-closest-are-broken} +When there are two or more features in B that overlap the \emph{same fraction} of A, \textbf{closestBed} will, by +default, report both features in B. Imagine feature A is a SNP and file B contains genes. It can often +occur that two gene annotations (e.g. opposite strands) in B will overlap the SNP. As mentioned, the +default behavior is to report both such genes in B. However, the -t option allows one to optionally +choose the just first or last feature (in terms of where it occurred in the input file, not chromosome +position) that occurred in B. + +For example (note the difference between -l 200 and -l 300): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 101 rs1234 + +cat B.bed +chr1 0 1000 geneA 100 + +chr1 0 1000 geneB 100 - + +closestBed -a A.bed -b B.bed +chr1 100 101 rs1234 chr1 0 1000 geneA 100 + +chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + +closestBed -a A.bed -b B.bed -t all +chr1 100 101 rs1234 chr1 0 1000 geneA 100 + +chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + +closestBed -a A.bed -b B.bed -t first +chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + +closestBed -a A.bed -b B.bed -t last +chr1 100 101 rs1234 chr1 0 1000 geneB 100 - +\end{Verbatim} + + +\paragraph{5.6.5 (-d)Reporting the distance to the closest feature in base pairs} +\label{content/closestBed:d-reporting-the-distance-to-the-closest-feature-in-base-pairs} +ClosestBed will optionally report the distance to the closest feature in the B file using the \textbf{-d} option. +When a feature in B overlaps a feature in A, a distance of 0 is reported. + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 500 600 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +closestBed -a A.bed -b B.bed -d +chr1 100 200 chr1 500 1000 300 +chr1 500 600 chr1 500 1000 0 +\end{Verbatim} + + +\subsubsection{5.7 subtractBed} +\label{content/subtractBed:subtractbed}\label{content/subtractBed::doc} +\textbf{subtractBed} searches for features in B that overlap A. If an overlapping feature is found in B, the +overlapping portion is removed from A and the remaining portion of A is reported. If a feature in B +overlaps all of a feature in A, the A feature will not be reported. + + +\paragraph{5.7.1 Usage and option summary} +\label{content/subtractBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +subtractBed [OPTIONS] -a \textless{}BED/GFF/VCF\textgreater{} -b \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-f} + & +Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +\\\hline + +\textbf{-s} + & +Force strandedness. That is, find the closest feature in B overlaps A on the same strand. \emph{By default, this is disabled}. +\\\hline +\end{tabulary} + + + +\paragraph{5.7.2 Default behavior} +\label{content/subtractBed:default-behavior} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BED FILE A ************* ****** + +BED File B \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + +Result ========= +\end{Verbatim} + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 10 20 + +cat B.bed +chr1 0 30 +chr1 180 300 + +subtractBed -a A.bed -b B.bed +chr1 100 180 +\end{Verbatim} + + +\paragraph{5.7.3 (-f)Requiring a minimal overlap fraction before subtracting} +\label{content/subtractBed:f-requiring-a-minimal-overlap-fraction-before-subtracting} +This option behaves the same as the -f option for intersectBed. In this case, subtractBed will only +subtract an overlap with B if it covers at least the fraction of A defined by -f. If an overlap is found, +but it does not meet the overlap fraction, the original A feature is reported without subtraction. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 + +cat B.bed +chr1 180 300 + +subtractBed -a A.bed -b B.bed -f 0.10 +chr1 100 180 + +subtractBed -a A.bed -b B.bed -f 0.80 +chr1 100 200 +\end{Verbatim} + + +\paragraph{5.7.4 (-s)Enforcing ``strandedness''} +\label{content/subtractBed:s-enforcing-strandedness} +This option behaves the same as the -s option for intersectBed while scanning for features in B that +should be subtracted from A. See the discussion in the intersectBed section for details. + + +\subsubsection{5.8 mergeBed} +\label{content/mergeBed:mergebed}\label{content/mergeBed::doc} +\textbf{mergeBed} combines overlapping or ``book-ended'' (that is, one base pair away) features in a feature file +into a single feature which spans all of the combined features. + + +\paragraph{5.8.1 Usage and option summary} +\label{content/mergeBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +mergeBed [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-s} + & +Force strandedness. That is, only merge features that are the same strand. \emph{By default, this is disabled}. +\\\hline + +\textbf{-n} + & +Report the number of BED entries that were merged. \emph{1 is reported if no merging occurred}. +\\\hline + +\textbf{-d} + & +Maximum distance between features allowed for features to be merged. \emph{Default is 0. That is, overlapping and/or book-ended features are merged}. +\\\hline + +\textbf{-nms} + & +Report the names of the merged features separated by semicolons. +\\\hline +\end{tabulary} + + + +\paragraph{5.8.2 Default behavior} +\label{content/mergeBed:default-behavior} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BED FILE ************* *************** ********************** + ******** + +Result =============================== ====================== +\end{Verbatim} + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 180 250 +chr1 250 500 +chr1 501 1000 + +mergeBed -i A.bed +chr1 100 500 +chr1 501 1000 +\end{Verbatim} + + +\paragraph{5.8.3 (-s)Enforcing ``strandedness''} +\label{content/mergeBed:s-enforcing-strandedness} +This option behaves the same as the -s option for intersectBed while scanning for features that should +be merged. Only features on the same strand will be merged. See the discussion in the intersectBed +section for details. + + +\paragraph{5.8.4 (-n)Reporting the number of features that were merged} +\label{content/mergeBed:n-reporting-the-number-of-features-that-were-merged} +The -n option will report the number of features that were combined from the original file in order to +make the newly merged feature. If a feature in the original file was not merged with any other features, +a ``1'' is reported. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 180 250 +chr1 250 500 +chr1 501 1000 + +mergeBed -i A.bed -n +chr1 100 500 3 +chr1 501 1000 1 +\end{Verbatim} + + +\paragraph{5.8.5 (-d)Controlling how close two features must be in order to merge} +\label{content/mergeBed:d-controlling-how-close-two-features-must-be-in-order-to-merge} +By default, only overlapping or book-ended features are combined into a new feature. However, one can +force mergeBed to combine more distant features with the -d option. For example, were one to set -d to +1000, any features that overlap or are within 1000 base pairs of one another will be combined. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 501 1000 + +mergeBed -i A.bed +chr1 100 200 +chr1 501 1000 + +mergeBed -i A.bed -d 1000 +chr1 100 200 1000 +\end{Verbatim} + + +\paragraph{5.8.6 (-nms)Reporting the names of the features that were merged} +\label{content/mergeBed:nms-reporting-the-names-of-the-features-that-were-merged} +Occasionally, one might like to know that names of the features that were merged into a new feature. +The -nms option will add an extra column to the mergeBed output which lists (separated by +semicolons) the names of the merged features. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 A1 +chr1 150 300 A2 +chr1 250 500 A3 + +mergeBed -i A.bed -nms +chr1 100 500 A1;A2;A3 +\end{Verbatim} + + +\subsubsection{5.9 coverageBed} +\label{content/coverageBed:coveragebed}\label{content/coverageBed::doc} +\textbf{coverageBed} computes both the \emph{depth} and \emph{breadth} of coverage of features in file A across the features +in file B. For example, \textbf{coverageBed} can compute the coverage of sequence alignments (file A) across 1 +kilobase (arbitrary) windows (file B) tiling a genome of interest. One advantage that \textbf{coverageBed} +offers is that it not only \emph{counts} the number of features that overlap an interval in file B, it also +computes the fraction of bases in B interval that were overlapped by one or more features. Thus, +\textbf{coverageBed} also computes the \emph{breadth} of coverage for each interval in B. + + +\paragraph{5.9.1 Usage and option summary} +\label{content/coverageBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +coverageBed [OPTIONS] -a \textless{}BED/GFF/VCF\textgreater{} -b \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabular}{|p{0.475\linewidth}|p{0.475\linewidth}|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-abam} + & \begin{quote} + +BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use ``stdin'' if passing A with a UNIX pipe: For example: +\end{quote} + +\begin{DUlineblock}{0em} +\item[] samtools view -b \textless{}BAM\textgreater{} \textbar{} intersectBed -abam stdin -b genes.bed +\end{DUlineblock} +\\\hline + +\textbf{-s} + & +Force strandedness. That is, only features in A are only counted towards coverage in B if they are the same strand. \emph{By default, this is disabled and coverage is counted without respect to strand}. +\\\hline + +\textbf{-hist} + & +Report a histogram of coverage for each feature in B as well as a summary histogram for \_all\_ features in B. + +\begin{DUlineblock}{0em} +\item[] Output (tab delimited) after each feature in B: +\end{DUlineblock} +\begin{quote} + +\begin{DUlineblock}{0em} +\item[] 1) depth +\item[] 2) \# bases at depth +\item[] 3) size of B +\item[] 4) \% of B at depth +\end{DUlineblock} +\end{quote} +\\\hline + +\textbf{-d} + & +Report the depth at each position in each B feature. Positions reported are one based. Each position and depth follow the complete B feature. +\\\hline + +\textbf{-split} + & +Treat ``split'' BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR ``N'' and ``D'' operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +\\\hline +\end{tabular} + + + +\paragraph{5.9.2 Default behavior} +\label{content/coverageBed:default-behavior} +After each interval in B, \textbf{coverageBed} will report: +\begin{enumerate} +\item {} +The number of features in A that overlapped (by at least one base pair) the B interval. + +\item {} +The number of bases in B that had non-zero coverage from features in A. + +\item {} +The length of the entry in B. + +\item {} +The fraction of bases in B that had non-zero coverage from features in A. + +\end{enumerate} + +Below are the number of features in A (N=...) overlapping B and fraction of bases in B with coverage. + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BED FILE B *************** *************** ****** ************** + +BED File A \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} + \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{}\textasciicircum{} \textasciicircum{}\textasciicircum{} + +Result [ N=3, 10/15 ] [ N=1, 2/16 ] [N=1,6/6] [N=5, 11/12 ] +\end{Verbatim} + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 10 20 +chr1 20 30 +chr1 30 40 +chr1 100 200 + +cat B.bed +chr1 0 100 +chr1 100 200 +chr2 0 100 + +coverageBed -a A.bed -b B.bed +chr1 0 100 3 30 100 0.3000000 +chr1 100 200 1 100 100 1.0000000 +chr2 0 100 0 0 100 0.0000000 +\end{Verbatim} + + +\paragraph{5.9.4 (-s)Calculating coverage by strand} +\label{content/coverageBed:s-calculating-coverage-by-strand} +Use the ``\textbf{-s}'' option if one wants to only count coverage if features in A are on the same strand as the +feature / window in B. This is especially useful for RNA-seq experiments. + +For example (note the difference in coverage with and without \textbf{-s}: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 10 20 a1 1 - +chr1 20 30 a2 1 - +chr1 30 40 a3 1 - +chr1 100 200 a4 1 + + +cat B.bed +chr1 0 100 b1 1 + +chr1 100 200 b2 1 - +chr2 0 100 b3 1 + + +coverageBed -a A.bed -b B.bed +chr1 0 100 b1 1 + 3 30 100 0.3000000 +chr1 100 200 b2 1 - 1 100 100 1.0000000 +chr2 0 100 b3 1 + 0 0 100 0.0000000 + +coverageBed -a A.bed -b B.bed -s +chr1 0 100 b1 1 + 0 0 100 0.0000000 +chr1 100 200 b2 1 - 0 0 100 0.0000000 +chr2 0 100 b3 1 + 0 0 100 0.0000000 +\end{Verbatim} + + +\paragraph{5.9.5 (-hist)Creating a histogram of coverage for each feature in the B file} +\label{content/coverageBed:hist-creating-a-histogram-of-coverage-for-each-feature-in-the-b-file} +One should use the ``\textbf{-hist}'' option to create, for each interval in B, a histogram of coverage of the +features in A across B. + +In this case, each entire feature in B will be reported, followed by the depth of coverage, the number of +bases at that depth, the size of the feature, and the fraction covered. After all of the features in B have +been reported, a histogram summarizing the coverage among all features in B will be reported. + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 10 20 a1 1 - +chr1 20 30 a2 1 - +chr1 30 40 a3 1 - +chr1 100 200 a4 1 + + +cat B.bed +chr1 0 100 b1 1 + +chr1 100 200 b2 1 - +chr2 0 100 b3 1 + + +coverageBed -a A.bed -b B.bed -hist +chr1 0 100 b1 1 + 0 70 100 0.7000000 +chr1 0 100 b1 1 + 1 30 100 0.3000000 +chr1 100 200 b2 1 - 1 100 100 1.0000000 +chr2 0 100 b3 1 + 0 100 100 1.0000000 +all 0 170 300 0.5666667 +all 1 130 300 0.4333333 +\end{Verbatim} + + +\paragraph{5.9.6 (-hist)Reporting the per-base of coverage for each feature in the B file} +\label{content/coverageBed:hist-reporting-the-per-base-of-coverage-for-each-feature-in-the-b-file} +One should use the ``\textbf{-d}'' option to create, for each interval in B, a detailed list of coverage at each of the +positions across each B interval. + +The output will consist of a line for each one-based position in each B feature, followed by the coverage +detected at that position. + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 0 5 +chr1 3 8 +chr1 4 8 +chr1 5 9 + +cat B.bed +chr1 0 10 + +coverageBed -a A.bed -b B.bed -d +chr1 0 10 B 1 1 +chr1 0 10 B 2 1 +chr1 0 10 B 3 1 +chr1 0 10 B 4 2 +chr1 0 10 B 5 3 +chr1 0 10 B 6 3 +chr1 0 10 B 7 3 +chr1 0 10 B 8 3 +chr1 0 10 B 9 1 +chr1 0 10 B 10 0 +\end{Verbatim} + + +\paragraph{5.9.7 (-split)Reporting coverage with spliced alignments or blocked BED features} +\label{content/coverageBed:split-reporting-coverage-with-spliced-alignments-or-blocked-bed-features} +As described in section 1.3.19, coverageBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq reads, for +example, one typically wants to only tabulate coverage for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The \textbf{-split} command allows for such coverage to be +performed. + + +\subsubsection{5.10 genomeCoverageBed} +\label{content/genomecoverageBed:genomecoveragebed}\label{content/genomecoverageBed::doc} +\textbf{genomeCoverageBed} computes a histogram of feature coverage (e.g., aligned sequences) for a given +genome. Optionally, by using the \textbf{-d} option, it will report the depth of coverage at \emph{each base} on each +chromosome in the genome file (\textbf{-g}). + + +\paragraph{5.10.1 Usage and option summary} +\label{content/genomecoverageBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +genomeCoverageBed [OPTIONS] -i \textless{}BED\textgreater{} -g \textless{}GENOME\textgreater{} +\end{Verbatim} + +NOTE: genomeCoverageBed requires that the input BED file be sorted by +chromosome. A simple sort -k1,1 will suffice. + +\begin{tabular}{|p{0.475\linewidth}|p{0.475\linewidth}|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-ibam} + & \begin{quote} + +BAM file as input for coverage. Each BAM alignment in A added to the total coverage for the genome. Use ``stdin'' if passing it with a UNIX pipe: For example: +\end{quote} + +\begin{DUlineblock}{0em} +\item[] samtools view -b \textless{}BAM\textgreater{} \textbar{} genomeCoverageBed -ibam stdin -g hg18.genome +\end{DUlineblock} +\\\hline + +\textbf{-d} + & +Report the depth at each genome position. \emph{Default behavior is to report a histogram}. +\\\hline + +\textbf{-max} + & +Combine all positions with a depth \textgreater{}= max into a single bin in the histogram. +\\\hline + +\textbf{-bg} + & +Report depth in BedGraph format. For details, see: \href{http://genome.ucsc.edu/goldenPath/help/bedgraph.html}{http://genome.ucsc.edu/goldenPath/help/bedgraph.html} +\\\hline + +\textbf{-bga} + & +Report depth in BedGraph format, as above (i.e., -bg). However with this option, regions with zero coverage are also reported. This allows one to quickly extract all regions of a genome with 0 coverage by applying: ``grep -w 0\$'' to the output. +\\\hline + +\textbf{-split} + & +Treat ``split'' BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR ``N'' and ``D'' operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +\\\hline + +\textbf{-strand} + & +Calculate coverage of intervals from a specific strand. With BED files, requires at least 6 columns (strand is column 6). +\\\hline +\end{tabular} + + + +\paragraph{5.10.2 Default behavior} +\label{content/genomecoverageBed:default-behavior} +By default, \textbf{genomeCoverageBed} will compute a histogram of coverage for the genome file provided. +The default output format is as follows: +1. chromosome (or entire genome) +2. depth of coverage from features in input file +3. number of bases on chromosome (or genome) with depth equal to column 2. +4. size of chromosome (or entire genome) in base pairs +5. fraction of bases on chromosome (or entire genome) with depth equal to column 2. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 10 20 +chr1 20 30 +chr2 0 500 + +cat my.genome +chr1 1000 +chr2 500 + +genomeCoverageBed -i A.bed -g my.genome +chr1 0 980 1000 0.98 +chr1 1 20 1000 0.02 +chr2 1 500 500 1 +genome 0 980 1500 0.653333 +genome 1 520 1500 0.346667 +\end{Verbatim} + + +\paragraph{5.10.3 (-max)Controlling the histogram's maximum depth} +\label{content/genomecoverageBed:max-controlling-the-histogram-s-maximum-depth} +Using the \textbf{-max} option, \textbf{genomeCoverageBed} will ``lump'' all positions in the genome having feature +coverage greather than or equal to \textbf{max} into the \textbf{max} histogram bin. For example, if one sets \textbf{-max} +equal to 50, the max depth reported in the output will be 50 and all positions with a depth \textgreater{}= 50 will +be represented in bin 50. + + +\paragraph{5.10.4 (-d)Reporting ``per-base'' genome coverage} +\label{content/genomecoverageBed:d-reporting-per-base-genome-coverage} +Using the \textbf{-d} option, \textbf{genomeCoverageBed} will compute the depth of feature coverage for each base +on each chromosome in genome file provided. + +The ``per-base'' output format is as follows: +1. chromosome +2. chromosome position +3. depth (number) of features overlapping this chromosome position. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 10 20 +chr1 20 30 +chr2 0 500 + +cat my.genome +chr1 1000 +chr2 500 + +genomeCoverageBed -i A.bed -g my.genome -d \textbar{} head -15 \textbar{} tail -n 10 +chr1 6 0 +chr1 7 0 +chr1 8 0 +chr1 9 0 +chr1 10 0 +chr1 11 1 +chr1 12 1 +chr1 13 1 +chr1 14 1 +chr1 15 1 +\end{Verbatim} + + +\paragraph{5.1.13 (-split)Reporting coverage with spliced alignments or blocked BED features} +\label{content/genomecoverageBed:split-reporting-coverage-with-spliced-alignments-or-blocked-bed-features} +As described in section 1.3.19, genomeCoverageBed will, by default, screen for overlaps against the +entire span of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq +reads, for example, one typically wants to only screen for overlaps for the portions of the reads that +come from exons (and ignore the interstitial intron sequence). The \textbf{-split} command allows for such +overlaps to be performed. + +For additional details, please visit the Usage From The Wild site and have a look at example 5, +contributed by Assaf Gordon. + + +\subsubsection{5.11 fastaFromBed} +\label{content/fastafromBed:fastafrombed}\label{content/fastafromBed::doc} +\textbf{fastaFromBed} extracts sequences from a FASTA file for each of the intervals defined in a BED file. +The headers in the input FASTA file must exactly match the chromosome column in the BED file. + + +\paragraph{5.11.1 Usage and option summary} +\label{content/fastafromBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +fastaFromBed [OPTIONS] -fi \textless{}input FASTA\textgreater{} -bed \textless{}BED/GFF/VCF\textgreater{} -fo \textless{}output FASTA\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-name} + & +Use the ``name'' column in the BED file for the FASTA headers in the output FASTA file. +\\\hline + +\textbf{-tab} + & +Report extract sequences in a tab-delimited format instead of in FASTA format. +\\\hline + +\textbf{-s} + & +Force strandedness. If the feature occupies the antisense strand, the sequence will be reverse complemented. \emph{Default: strand information is ignored}. +\\\hline +\end{tabulary} + + + +\paragraph{5.11.2 Default behavior} +\label{content/fastafromBed:default-behavior} +\textbf{fastaFromBed} will extract the sequence defined by the coordinates in a BED interval and create a +new FASTA entry in the output file for each extracted sequence. By default, the FASTA header for each +extracted sequence will be formatted as follows: ``\textless{}chrom\textgreater{}:\textless{}start\textgreater{}-\textless{}end\textgreater{}''. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +\$ cat test.fa +\textgreater{}chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 + +fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out + +cat test.fa.out +\textgreater{}chr1:5-10 +AAACC +\end{Verbatim} + + +\paragraph{5.11.3 Using the BED ``name'' column as a FASTA header.} +\label{content/fastafromBed:using-the-bed-name-column-as-a-fasta-header} +Using the \textbf{-name} option, one can set the FASTA header for each extracted sequence to be the ``name'' +columns from the BED feature. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat test.fa +\textgreater{}chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 myseq + +fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out -name + +cat test.fa.out +\textgreater{}myseq +AAACC +\end{Verbatim} + + +\paragraph{5.11.4 Creating a tab-delimited output file in lieu of FASTA output.} +\label{content/fastafromBed:creating-a-tab-delimited-output-file-in-lieu-of-fasta-output} +Using the \textbf{-tab} option, the \textbf{-fo} output file will be tab-delimited instead of in FASTA format. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat test.fa +\textgreater{}chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 myseq + +fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out.tab -name -tab + +cat test.fa.out +myseq AAACC +\end{Verbatim} + + +\paragraph{5.11.5 (-s)Forcing the extracted sequence to reflect the requested strand} +\label{content/fastafromBed:s-forcing-the-extracted-sequence-to-reflect-the-requested-strand} +\textbf{fastaFromBed} will extract the sequence in the orientation defined in the strand column when the ``-s'' +option is used. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat test.fa +\textgreater{}chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 20 25 forward 1 + +chr1 20 25 reverse 1 - + +fastaFromBed -fi test.fa -bed test.bed -s -name -fo test.fa.out + +cat test.fa.out +\textgreater{}forward +CGCTA +\textgreater{}reverse +TAGCG +\end{Verbatim} + + +\subsubsection{5.12 maskFastaFromBed} +\label{content/maskfastafromBed:maskfastafrombed}\label{content/maskfastafromBed::doc} +\textbf{maskFastaFromBed} masks sequences in a FASTA file based on intervals defined in a feature file. The +headers in the input FASTA file must exactly match the chromosome column in the feature file. This +may be useful fro creating your own masked genome file based on custom annotations or for masking all +but your target regions when aligning sequence data from a targeted capture experiment. + + +\paragraph{5.12.1 Usage and option summary} +\label{content/maskfastafromBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +maskFastaFromBed [OPTIONS] -fi \textless{}input FASTA\textgreater{} -bed \textless{}BED/GFF/VCF\textgreater{} -fo \textless{}output FASTA\textgreater{} +\end{Verbatim} + +NOTE: The input and output FASTA files must be different. + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-soft} + & +Soft-mask (that is, convert to lower-case bases) the FASTA sequence. \emph{By default, hard-masking (that is, conversion to Ns) is performed}. +\\\hline +\end{tabulary} + + + +\paragraph{5.12.2 Default behavior} +\label{content/maskfastafromBed:default-behavior} +\textbf{maskFastaFromBed} will mask a FASTA file based on the intervals in a BED file. The newly masked +FASTA file is written to the output FASTA file. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat test.fa +\textgreater{}chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 + +maskFastaFromBed -fi test.fa -bed test.bed -fo test.fa.out + +cat test.fa.out +\textgreater{}chr1 +AAAAANNNNNCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG +\end{Verbatim} + + +\paragraph{5.12.3 Soft-masking the FASTA file.} +\label{content/maskfastafromBed:soft-masking-the-fasta-file} +Using the \textbf{-soft} option, one can optionally ``soft-mask'' the FASTA file. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat test.fa +\textgreater{}chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 + +maskFastaFromBed -fi test.fa -bed test.bed -fo test.fa.out -soft + +cat test.fa.out +\textgreater{}chr1 +AAAAAaaaccCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG +\end{Verbatim} + + +\subsubsection{5.13 shuffleBed} +\label{content/shuffleBed:shufflebed}\label{content/shuffleBed::doc} +\textbf{shuffleBed} will randomly permute the genomic locations of a fearure file among a genome defined in a +genome file. One can also provide an ``exclusions'' BED/GFF/VCF file that lists regions where you do +not want the permuted features to be placed. For example, one might want to prevent features from +being placed in known genome gaps. \textbf{shuffleBed} is useful as a \emph{null} basis against which to test the +significance of associations of one feature with another. + + +\paragraph{5.13.1 Usage and option summary} +\label{content/shuffleBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +shuffleBed [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} -g \textless{}GENOME\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-excl} + & +A BED file of coordinates in which features from -i should \emph{not} be placed (e.g., genome gaps). +\\\hline + +\textbf{-chrom} + & +Keep features in -i on the same chromosome. Solely permute their location on the chromosome. \emph{By default, both the chromosome and position are randomly chosen}. +\\\hline + +\textbf{-seed} + & +Supply an integer seed for the shuffling. This will allow feature shuffling experiments to be recreated exactly as the seed for the pseudo-random number generation will be constant. \emph{By default, the seed is chosen automatically}. +\\\hline +\end{tabulary} + + + +\paragraph{5.13.2 Default behavior} +\label{content/shuffleBed:default-behavior} +By default, \textbf{shuffleBed} will reposition each feature in the input BED file on a random chromosome at a +random position. The size and strand of each feature are preserved. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 - + +cat my.genome +chr1 10000 +chr2 8000 +chr3 5000 +chr4 2000 + +shuffleBed -i A.bed -g my.genome +chr4 1498 1598 a1 1 + +chr3 2156 3156 a2 2 - +\end{Verbatim} + + +\paragraph{5.13.3 (-chrom)Requiring that features be shuffled on the same chromosome} +\label{content/shuffleBed:chrom-requiring-that-features-be-shuffled-on-the-same-chromosome} +The ``\textbf{-chrom}'' option behaves the same as the default behavior except that features are randomly +placed on the same chromosome as defined in the BED file. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 - + +cat my.genome +chr1 10000 +chr2 8000 +chr3 5000 +chr4 2000 + +shuffleBed -i A.bed -g my.genome -chrom +chr1 9560 9660 a1 1 + +chr1 7258 8258 a2 2 - +\end{Verbatim} + + +\paragraph{5.13.4 Excluding certain genome regions from shuffleBed} +\label{content/shuffleBed:excluding-certain-genome-regions-from-shufflebed} +One may want to prevent BED features from being placed in certain regions of the genome. For +example, one may want to exclude genome gaps from permutation experiment. The ``\textbf{-excl}'' option +defines a BED file of regions that should be excluded. \textbf{shuffleBed} will attempt to permute the +locations of all features while adhering to the exclusion rules. However it will stop looking for an +appropriate location if it cannot find a valid spot for a feature after 1,000,000 tries. + +For example (\emph{note that the exclude file excludes all but 100 base pairs of the chromosome}): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 - + +cat my.genome +chr1 10000 + +cat exclude.bed +chr1 100 10000 + +shuffleBed -i A.bed -g my.genome -excl exclude.bed +chr1 0 100 a1 1 + +Error, line 2: tried 1000000 potential loci for entry, but could not avoid excluded +regions. Ignoring entry and moving on. +\end{Verbatim} + +For example (\emph{now the exclusion file only excludes the first 100 bases of the chromosome}): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 - + +cat my.genome +chr1 10000 + +cat exclude.bed +chr1 0 100 + +shuffleBed -i A.bed -g my.genome -excl exclude.bed +chr1 147 247 a1 1 + +chr1 2441 3441 a2 2 - +\end{Verbatim} + + +\paragraph{5.13.5 Defining a ``seed'' for the random replacement.} +\label{content/shuffleBed:defining-a-seed-for-the-random-replacement} +\textbf{shuffleBed} uses a pseudo-random number generator to permute the locations of BED features. +Therefore, each run should produce a different result. This can be problematic if one wants to exactly +recreate an experiment. By using the ``\textbf{-seed}'' option, one can supply a custom integer seed for +\textbf{shuffleBed}. In turn, each execution of \textbf{shuffleBed} with the same seed and input files should produce +identical results. + +For example (\emph{note that the exclude file below excludes all but 100 base pairs of the chromosome}): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 - + +cat my.genome +chr1 10000 + +shuffleBed -i A.bed -g my.genome -seed 927442958 +chr1 6177 6277 a1 1 + +chr1 8119 9119 a2 2 - + +shuffleBed -i A.bed -g my.genome -seed 927442958 +chr1 6177 6277 a1 1 + +chr1 8119 9119 a2 2 - + +. . . + +shuffleBed -i A.bed -g my.genome -seed 927442958 +chr1 6177 6277 a1 1 + +chr1 8119 9119 a2 2 - +\end{Verbatim} + + +\subsubsection{5.14 slopBed} +\label{content/slopBed:slopbed}\label{content/slopBed::doc} +\textbf{slopBed} will increase the size of each feature in a feature file be a user-defined number of bases. While +something like this could be done with an ``\textbf{awk `\{OFS=''t'' print \$1,\$2-\textless{}slop\textgreater{},\$3+\textless{}slop\textgreater{}\}'}'', +\textbf{slopBed} will restrict the resizing to the size of the chromosome (i.e. no start \textless{} 0 and no end \textgreater{} +chromosome size). + + +\paragraph{5.14.1 Usage and option summary} +\label{content/slopBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +\PYG{n}{slopBed} \PYG{p}{[}\PYG{n}{OPTIONS}\PYG{p}{]} \PYG{o}{-}\PYG{n}{i} \PYG{o}{\textless{}}\PYG{n}{BED}\PYG{o}{/}\PYG{n}{GFF}\PYG{o}{/}\PYG{n}{VCF}\PYG{o}{\textgreater{}} \PYG{o}{-}\PYG{n}{g} \PYG{o}{\textless{}}\PYG{n}{GENOME}\PYG{o}{\textgreater{}} \PYG{p}{[}\PYG{o}{-}\PYG{n}{b} \PYG{o+ow}{or} \PYG{p}{(}\PYG{o}{-}\PYG{n}{l} \PYG{o+ow}{and} \PYG{o}{-}\PYG{n}{r}\PYG{p}{)}\PYG{p}{]} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-b} + & +Increase the BED/GFF/VCF entry by the same number base pairs in each direction. \emph{Integer}. +\\\hline + +\textbf{-l} + & +The number of base pairs to subtract from the start coordinate. \emph{Integer}. +\\\hline + +\textbf{-r} + & +The number of base pairs to add to the end coordinate. \emph{Integer}. +\\\hline + +\textbf{-s} + & +Define -l and -r based on strand. For example. if used, -l 500 for a negative-stranded feature, it will add 500 bp to the \emph{end} coordinate. +\\\hline +\end{tabulary} + + + +\paragraph{5.14.2 Default behavior} +\label{content/slopBed:default-behavior} +By default, \textbf{slopBed} will either add a fixed number of bases in each direction (\textbf{-b}) or an asymmetric +number of bases in each direction (\textbf{-l} and \textbf{-r}). + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 5 100 +chr1 800 980 + +cat my.genome +chr1 1000 + +slopBed -i A.bed -g my.genome -b 5 +chr1 0 105 +chr1 795 985 + +slopBed -i A.bed -g my.genome -l 2 -r 3 +chr1 3 103 +chr1 798 983 +\end{Verbatim} + +However, if the requested number of bases exceeds the boundaries of the chromosome, \textbf{slopBed} will +``clip'' the feature accordingly. + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 5 100 +chr1 800 980 + +cat my.genome +chr1 1000 + +slopBed -i A.bed -g my.genome -b 5000 +chr1 0 1000 +chr1 0 1000 +\end{Verbatim} + + +\paragraph{5.14.3 Resizing features according to strand} +\label{content/slopBed:resizing-features-according-to-strand} +\textbf{slopBed} will optionally increase the size of a feature based on strand. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 a1 1 + +chr1 100 200 a2 2 - + +cat my.genome +chr1 1000 + +slopBed -i A.bed -g my.genome -l 50 -r 80 -s +chr1 50 280 a1 1 + +chr1 20 250 a2 2 - +\end{Verbatim} + + +\subsubsection{5.15 sortBed} +\label{content/sortBed::doc}\label{content/sortBed:sortbed} +\textbf{sortBed} sorts a feature file by chromosome and other criteria. + + +\paragraph{5.15.1 Usage and option summary} +\label{content/sortBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +sortBed [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-sizeA} + & +Sort by feature size in ascending order. +\\\hline + +\textbf{-sizeD} + & +Sort by feature size in descending order. +\\\hline + +\textbf{-chrThenSizeA} + & +Sort by chromosome, then by feature size (asc). +\\\hline + +\textbf{-chrThenSizeD} + & +Sort by chromosome, then by feature size (desc). +\\\hline + +\textbf{-chrThenScoreA} + & +Sort by chromosome, then by score (asc). +\\\hline + +\textbf{-chrThenScoreD} + & +Sort by chromosome, then by score (desc). +\\\hline +\end{tabulary} + + + +\paragraph{5.15.2 Default behavior} +\label{content/sortBed:default-behavior} +By default, \textbf{sortBed} sorts a BED file by chromosome and then by start position in ascending order. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 800 1000 +chr1 80 180 +chr1 1 10 +chr1 750 10000 + +sortBed -i A.bed +chr1 1 10 +chr1 80 180 +chr1 750 10000 +chr1 800 1000 +\end{Verbatim} + + +\paragraph{5.15.3 Optional sorting behavior} +\label{content/sortBed:optional-sorting-behavior} +\textbf{sortBed} will also sorts a BED file by chromosome and then by other criteria. + +For example, to sort by chromosome and then by feature size (in descending order): + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 800 1000 +chr1 80 180 +chr1 1 10 +chr1 750 10000 + +sortBed -i A.bed -sizeD +chr1 750 10000 +chr1 800 1000 +chr1 80 180 +chr1 1 10 +\end{Verbatim} + +\textbf{Disclaimer:} it should be noted that \textbf{sortBed} is merely a convenience utility, as the UNIX sort utility +will sort BED files more quickly while using less memory. For example, UNIX sort will sort a BED file +by chromosome then by start position in the following manner: + +\begin{Verbatim}[commandchars=\\\{\}] +sort -k 1,1 -k2,2 -n a.bed +chr1 1 10 +chr1 80 180 +chr1 750 10000 +chr1 800 1000 +\end{Verbatim} + + +\subsubsection{5.16 linksBed} +\label{content/linksBed:linksbed}\label{content/linksBed::doc} +Creates an HTML file with links to an instance of the UCSC Genome Browser for all features / +intervals in a file. This is useful for cases when one wants to manually inspect through a large set of +annotations or features. + + +\paragraph{5.16.1 Usage and option summary} +\label{content/linksBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +linksBed [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} \textgreater{} \textless{}HTML file\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-base} + & +The ``basename'' for the UCSC browser. \emph{Default: http://genome.ucsc.edu} +\\\hline + +\textbf{-org} + & +The organism (e.g. mouse, human). \emph{Default: human} +\\\hline + +\textbf{-db} + & +The genome build. \emph{Default: hg18} +\\\hline +\end{tabulary} + + + +\paragraph{5.16.2 Default behavior} +\label{content/linksBed:default-behavior} +By default, \textbf{linksBed} creates links to the public UCSC Genome Browser. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +head genes.bed +chr21 9928613 10012791 uc002yip.1 0 - +chr21 9928613 10012791 uc002yiq.1 0 - +chr21 9928613 10012791 uc002yir.1 0 - +chr21 9928613 10012791 uc010gkv.1 0 - +chr21 9928613 10061300 uc002yis.1 0 - +chr21 10042683 10120796 uc002yit.1 0 - +chr21 10042683 10120808 uc002yiu.1 0 - +chr21 10079666 10120808 uc002yiv.1 0 - +chr21 10080031 10081687 uc002yiw.1 0 - +chr21 10081660 10120796 uc002yix.2 0 - + +linksBed -i genes.bed \textgreater{} genes.html +\end{Verbatim} + +When genes.html is opened in a web browser, one should see something like the following, where each +link on the page is built from the features in genes.bed: + + +\paragraph{5.16.3 Creating HTML links to a local UCSC Browser installation} +\label{content/linksBed:creating-html-links-to-a-local-ucsc-browser-installation} +Optionally, \textbf{linksBed} will create links to a local copy of the UCSC Genome Browser. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +head -3 genes.bed +chr21 9928613 10012791 uc002yip.1 0 - +chr21 9928613 10012791 uc002yiq.1 0 - + +linksBed -i genes.bed -base http://mirror.uni.edu \textgreater{} genes.html +\end{Verbatim} + +One can point the links to the appropriate organism and genome build as well: + +\begin{Verbatim}[commandchars=\\\{\}] +head -3 genes.bed +chr21 9928613 10012791 uc002yip.1 0 - +chr21 9928613 10012791 uc002yiq.1 0 - + +linksBed -i genes.bed -base http://mirror.uni.edu -org mouse -db mm9 \textgreater{} genes.html +\end{Verbatim} + + +\subsubsection{5.17 complementBed} +\label{content/complementBed:complementbed}\label{content/complementBed::doc} +\textbf{complementBed} returns the intervals in a genome that are not by the features in a feature file. An +example usage of this tool would be to return the intervals of the genome that are not annotated as a +repeat. + + +\paragraph{5.17.1 Usage and option summary} +\label{content/complementBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +complementBed [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} -g \textless{}GENOME\textgreater{} +\end{Verbatim} + +\textbf{No additional options.} + + +\paragraph{5.17.2 Default behavior} +\label{content/complementBed:default-behavior} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +Chromosome \textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{}\textasciitilde{} + +BED FILE A ************* *************** ****************** + +Result === === ===== ======= +\end{Verbatim} + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +cat A.bed +chr1 100 200 +chr1 400 500 +chr1 500 800 + +cat my.genome +chr1 1000 + +complementBed -i A.bed -g my.genome +chr1 0 100 +chr1 200 400 +chr1 800 1000 +\end{Verbatim} + + +\subsubsection{5.18 bedToBam} +\label{content/bedToBam::doc}\label{content/bedToBam:bedtobam} +\textbf{bedToBam} converts features in a feature file to BAM format. This is useful as an efficient means of +storing large genome annotations in a compact, indexed format for visualization purposes. + + +\paragraph{5.18.1 Usage and option summary} +\label{content/bedToBam:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +bedToBam [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} -g \textless{}GENOME\textgreater{} \textgreater{} \textless{}BAM\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-mapq} + & +Set a mapping quality (SAM MAPQ field) value for all BED entries. \emph{Default: 255} +\\\hline + +\textbf{-ubam} + & +Write uncompressed BAM output. The default is write compressed BAM output. +\\\hline + +\textbf{-bed12} + & +Indicate that the input BED file is in BED12 (a.k.a ``blocked'' BED) format. In this case, bedToBam will convert blocked BED features (e.g., gene annotaions) into ``spliced'' BAM alignments by creating an appropriate CIGAR string. +\\\hline +\end{tabulary} + + + +\paragraph{5.18.2 Default behavior} +\label{content/bedToBam:default-behavior} +The default behavior is to assume that the input file is in unblocked format. For example: + +\begin{Verbatim}[commandchars=\\\{\}] +head -5 rmsk.hg18.chr21.bed +chr21 9719768 9721892 ALR/Alpha 1004 + +chr21 9721905 9725582 ALR/Alpha 1010 + +chr21 9725582 9725977 L1PA3 3288 + +chr21 9726021 9729309 ALR/Alpha 1051 + +chr21 9729320 9729809 L1PA3 3897 - + +bedToBam -i rmsk.hg18.chr21.bed -g human.hg18.genome \textgreater{} rmsk.hg18.chr21.bam + +samtools view rmsk.hg18.chr21.bam \textbar{} head -5 +ALR/Alpha 0 chr21 9719769 255 2124M * 0 0 * * +ALR/Alpha 0 chr21 9721906 255 3677M * 0 0 * * +L1PA3 0 chr21 9725583 255 395M * 0 0 * * +ALR/Alpha 0 chr21 9726022 255 3288M * 0 0 * * +L1PA3 16 chr21 9729321 255 489M * 0 0 * * +\end{Verbatim} + + +\paragraph{5.18.3 Creating ``spliced'' BAM entries from ``blocked'' BED features} +\label{content/bedToBam:creating-spliced-bam-entries-from-blocked-bed-features} +Optionally, \textbf{bedToBam} will create spliced BAM entries from ``blocked'' BED features by using the +-bed12 option. This will create CIGAR strings in the BAM output that will be displayed as ``spliced'' +alignments. The image illustrates this behavior, as the top track is a BAM representation (using +bedToBam) of a BED file of UCSC genes. + +For example: + +\begin{Verbatim}[commandchars=\\\{\}] +bedToBam -i knownGene.hg18.chr21.bed -g human.hg18.genome -bed12 \textgreater{} knownGene.bam + +samtools view knownGene.bam \textbar{} head -2 +uc002yip.1 16 chr21 9928614 2 5 5 + +298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M +738N64M146N100M1647N120M6478N162M1485N51M6777N60M9274N54M880N54M1229N54M2377N54M112 +68N58M2666N109M2885N158M * 0 0 * * +uc002yiq.1 16 chr21 9928614 2 5 5 + +298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M +738N64M146N100M1647N120M6478N162M1485N51M6777N60M10208N54M1229N54M2377N54M11268N58M +2666N109M2885N158M * 0 0 * * +\end{Verbatim} + + +\subsubsection{5.19 overlap} +\label{content/overlap::doc}\label{content/overlap:overlap} +\textbf{overlap} computes the amount of overlap (in the case of positive values) or distance (in the case of +negative values) between feature coordinates occurring on the same input line and reports the result at +the end of the same line. In this way, it is a useful method for computing custom overlap scores from +the output of other BEDTools. + + +\paragraph{5.19.1 Usage and option summary} +\label{content/overlap:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +overlap [OPTIONS] -i \textless{}input\textgreater{} -cols s1,e1,s2,e2 +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-i} + & +Input file. Use ``stdin'' for pipes. +\\\hline + +\textbf{-cols} + & +Specify the columns (1-based) for the starts and ends of the features for which you'd like to compute the overlap/distance. The columns must be listed in the following order: \emph{start1,end1,start2,end2} +\\\hline +\end{tabulary} + + + +\paragraph{5.19.2 Default behavior} +\label{content/overlap:default-behavior} +The default behavior is to compute the amount of overlap between the features you specify based on the +start and end coordinates. For example: + +\begin{Verbatim}[commandchars=\\\{\}] +windowBed -a A.bed -b B.bed -w 10 +chr1 10 20 A chr1 15 25 B +chr1 10 20 C chr1 25 35 D +\end{Verbatim} + +\# Now let's say we want to compute the number of base pairs of overlap +\# between the overlapping features from the output of windowBed. + +\begin{Verbatim}[commandchars=\\\{\}] +windowBed -a A.bed -b B.bed -w 10 \textbar{} overlap -i stdin -cols 2,3,6,7 +chr1 10 20 A chr1 15 25 B 5 +chr1 10 20 C chr1 25 35 D -5 +\end{Verbatim} + + +\subsubsection{5.20 bedToIgv} +\label{content/bedToIgv:bedtoigv}\label{content/bedToIgv::doc} +\textbf{bedToIgv} creates an IGV (\href{http://www.broadinstitute.org/igv/}{http://www.broadinstitute.org/igv/}) batch script (see: \href{http://}{http://} +www.broadinstitute.org/igv/batch for details) such that a ??snapshot?? will be taken at each features in a +feature file. This is useful as an efficient means for quickly collecting images of primary data at several +loci for subsequent screening, etc. + +\textbf{NOTE: One must use IGV version 1.5 or higher.} + + +\paragraph{5.20.1 Usage and option summary} +\label{content/bedToIgv:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +bedToIgv [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} \textgreater{} \textless{}igv.batch\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-path} + & +The full path to which the IGV snapshots should be written. \emph{Default: ./} +\\\hline + +\textbf{-sess} + & +The full path to an existing IGV session file to be loaded prior to taking snapshots. \emph{Default is for no session to be loaded and the assumption is that you already have IGV open and loaded with your relevant data prior to running the batch script}. +\\\hline + +\textbf{-sort} + & +The type of BAM sorting you would like to apply to each image. \textbf{Valid sorting options}: \emph{base, position, strand, quality, sample, and readGroup Default is to apply no sorting at all}. +\\\hline + +\textbf{-clps} + & +Collapse the aligned reads prior to taking a snapshot. \emph{Default is to not collapse}. +\\\hline + +\textbf{-name} + & +Use the ``name'' field (column 4) for each image's filename. \emph{Default is to use the ``chr:start-pos.ext''}. +\\\hline + +\textbf{-slop} + & +Number of flanking base pairs on the left \& right of the image. +\\\hline + +\textbf{-img} + & +The type of image to be created. \textbf{Valid options}: \emph{png, eps, svg Default is png}. +\\\hline +\end{tabulary} + + + +\paragraph{5.20.2 Default behavior} +\label{content/bedToIgv:default-behavior} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +bedToIgv -i data/rmsk.hg18.chr21.bed \textbar{} head -9 +snapshotDirectory ./ +goto chr21:9719768-9721892 +snapshot chr21:9719768-9721892.png +goto chr21:9721905-9725582 +snapshot chr21:9721905-9725582.png +goto chr21:9725582-9725977 +snapshot chr21:9725582-9725977.png +goto chr21:9726021-9729309 +snapshot chr21:9726021-9729309.png +\end{Verbatim} + + +\paragraph{5.20.3 Using a bedToIgv batch script within IGV.} +\label{content/bedToIgv:using-a-bedtoigv-batch-script-within-igv} +Once an IGV batch script has been created with \textbf{bedToIgv}, it is simply a matter of running it from +within IGV. + +For example, first create the batch script: + +\begin{Verbatim}[commandchars=\\\{\}] +bedToIgv -i data/rmsk.hg18.chr21.bed \textgreater{} rmsk.igv.batch +\end{Verbatim} + +Then, open and launch the batch script from within IGV. This will immediately cause IGV to begin +taking snapshots of your requested regions. + + +\subsubsection{5.21 bed12ToBed6} +\label{content/bed12ToBed6::doc}\label{content/bed12ToBed6:bed12tobed6} +\textbf{bed12ToBed6} is a convenience tool that converts BED features in BED12 (a.k.a. ``blocked'' BED +features such as genes) to discrete BED6 features. For example, in the case of a gene with six exons, +bed12ToBed6 would create six separate BED6 features (i.e., one for each exon). + + +\paragraph{5.21.1 Usage and option summary} +\label{content/bed12ToBed6:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +bed12ToBed6 [OPTIONS] -i \textless{}BED12\textgreater{} +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-i} + & +The BED12 file that should be split into discrete BED6 features. \emph{Use ``stdin'' when using piped input}. +\\\hline +\end{tabulary} + + + +\paragraph{5.21.2 Default behavior} +\label{content/bed12ToBed6:default-behavior} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +head data/knownGene.hg18.chr21.bed \textbar{} tail -n 3 +chr21 10079666 10120808 uc002yiv.1 0 - 10081686 1 0 1 2 0 6 0 8 + 0 4 528,91,101,215, 0,1930,39750,40927, +chr21 10080031 10081687 uc002yiw.1 0 - 10080031 1 0 0 8 0 0 3 1 + 0 2 200,91, 0,1565, +chr21 10081660 10120796 uc002yix.2 0 - 10081660 1 0 0 8 1 6 6 0 + 0 3 27,101,223,0,37756,38913, + +head data/knownGene.hg18.chr21.bed \textbar{} tail -n 3 \textbar{} bed12ToBed6 -i stdin +chr21 10079666 10080194 uc002yiv.1 0 - +chr21 10081596 10081687 uc002yiv.1 0 - +chr21 10119416 10119517 uc002yiv.1 0 - +chr21 10120593 10120808 uc002yiv.1 0 - +chr21 10080031 10080231 uc002yiw.1 0 - +chr21 10081596 10081687 uc002yiw.1 0 - +chr21 10081660 10081687 uc002yix.2 0 - +chr21 10119416 10119517 uc002yix.2 0 - +chr21 10120573 10120796 uc002yix.2 0 - +\end{Verbatim} + + +\subsubsection{5.22 groupBy} +\label{content/groupBy::doc}\label{content/groupBy:groupby} +\textbf{groupBy} is a useful tool that mimics the ``groupBy'' clause in database systems. Given a file or stream +that is sorted by the appropriate ``grouping columns'', groupBy will compute summary statistics on +another column in the file or stream. This will work with output from all BEDTools as well as any other +tab-delimited file or stream. + +\textbf{NOTE: When using groupBy, the input data must be ordered by the same +columns as specified with the -grp argument. For example, if -grp is 1,2,3, the the +data should be pre-grouped accordingly. When groupBy detects changes in the +group columns it then summarizes all lines with that group}. + + +\paragraph{5.22.1 Usage and option summary} +\label{content/groupBy:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy [OPTIONS] -i \textless{}input\textgreater{} -opCol \textless{}input column\textgreater{} +\end{Verbatim} + +\begin{tabular}{|p{0.475\linewidth}|p{0.475\linewidth}|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-i} + & \begin{quote} + +The input file that should be grouped and summarized. \emph{Use ``stdin'' when using piped input}. +\end{quote} + +\textbf{Note: if -i is omitted, input is assumed to come from standard input (stdin)} +\\\hline + +\textbf{-g OR -grp} + & +Specifies which column(s) (1-based) should be used to group the input. The columns must be comma-separated and each column must be explicitly listed. No ranges (e.g. 1-4) yet allowed. \emph{Default: 1,2,3} +\\\hline + +\textbf{-c OR -opCol} + & +Specify the column (1-based) that should be summarized. \emph{Required}. +\\\hline + +\textbf{-o OR -op} + & +Specify the operation that should be applied to \textbf{opCol}. + +\begin{DUlineblock}{0em} +\item[] Valid operations: +\end{DUlineblock} +\begin{quote} + +\begin{DUlineblock}{0em} +\item[] \textbf{sum} - \emph{numeric only} +\item[] \textbf{count} - \emph{numeric or text} +\item[] \textbf{min} - \emph{numeric only} +\item[] \textbf{max} - \emph{numeric only} +\item[] \textbf{mean} - \emph{numeric only} +\item[] \textbf{stdev} - \emph{numeric only} +\item[] \textbf{median} - \emph{numeric only} +\item[] \textbf{mode} - \emph{numeric or text} +\item[] \textbf{antimode} - \emph{numeric or text} +\item[] \textbf{collapse} (i.e., print a comma separated list) - \emph{numeric or text} +\item[] \textbf{freqasc} - \emph{print a comma separated list of values observed and the number of times they were observed. Reported in ascending order of frequency} +\end{DUlineblock} +\end{quote} + +\begin{DUlineblock}{0em} +\item[] \textbf{freqdesc} - \emph{print a comma separated list of values observed and the number of times they were observed. Reported in descending order of frequency} +\end{DUlineblock} +\begin{quote} + +\begin{DUlineblock}{0em} +\item[] \emph{Default: sum} +\end{DUlineblock} +\end{quote} +\\\hline +\end{tabular} + + + +\paragraph{5.22.2 Default behavior.} +\label{content/groupBy:default-behavior} +Let's imagine we have three incredibly interesting genetic variants that we are studying and we are +interested in what annotated repeats these variants overlap. + +\begin{Verbatim}[commandchars=\\\{\}] +cat variants.bed +chr21 9719758 9729320 variant1 +chr21 9729310 9757478 variant2 +chr21 9795588 9796685 variant3 + +intersectBed -a variants.bed -b repeats.bed -wa -wb \textgreater{} variantsToRepeats.bed +cat variantsToRepeats.bed +chr21 9719758 9729320 variant1 chr21 9719768 9721892 ALR/Alpha 1004 + +chr21 9719758 9729320 variant1 chr21 9721905 9725582 ALR/Alpha 1010 + +chr21 9719758 9729320 variant1 chr21 9725582 9725977 L1PA3 3288 + +chr21 9719758 9729320 variant1 chr21 9726021 9729309 ALR/Alpha 1051 + +chr21 9729310 9757478 variant2 chr21 9729320 9729809 L1PA3 3897 - +chr21 9729310 9757478 variant2 chr21 9729809 9730866 L1P1 8367 + +chr21 9729310 9757478 variant2 chr21 9730866 9734026 ALR/Alpha 1036 - +chr21 9729310 9757478 variant2 chr21 9734037 9757471 ALR/Alpha 1182 - +chr21 9795588 9796685 variant3 chr21 9795589 9795713 (GAATG)n 308 + +chr21 9795588 9796685 variant3 chr21 9795736 9795894 (GAATG)n 683 + +chr21 9795588 9796685 variant3 chr21 9795911 9796007 (GAATG)n 345 + +chr21 9795588 9796685 variant3 chr21 9796028 9796187 (GAATG)n 756 + +chr21 9795588 9796685 variant3 chr21 9796202 9796615 (GAATG)n 891 + +chr21 9795588 9796685 variant3 chr21 9796637 9796824 (GAATG)n 621 + +\end{Verbatim} + +We can see that variant1 overlaps with 3 repeats, variant2 with 4 and variant3 with 6. We can use +groupBy to summarize the hits for each variant in several useful ways. The default behavior is to +compute the \emph{sum} of the opCol. + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy -i variantsToRepeats.bed -grp 1,2,3 -opCol 9 +chr21 9719758 9729320 6353 +chr21 9729310 9757478 14482 +chr21 9795588 9796685 3604 +\end{Verbatim} + + +\paragraph{5.22.3 Computing the min and max.} +\label{content/groupBy:computing-the-min-and-max} +Now let's find the \emph{min} and \emph{max} repeat score for each variant. We do this by ``grouping'' on the variant +coordinate columns (i.e. cols. 1,2 and 3) and ask for the min and max of the repeat score column (i.e. +col. 9). + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy -i variantsToRepeats.bed -g 1,2,3 -c 9 -o min +chr21 9719758 9729320 1004 +chr21 9729310 9757478 1036 +chr21 9795588 9796685 308 +\end{Verbatim} + +We can also group on just the \emph{name} column with similar effect. + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy -i variantsToRepeats.bed -grp 4 -opCol 9 -op min +variant1 1004 +variant2 1036 +variant3 308 +\end{Verbatim} + +What about the \emph{max} score? Let's keep the coordinates and the name of the variants so that we +stay in BED format. + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op max +chr21 9719758 9729320 variant1 3288 +chr21 9729310 9757478 variant2 8367 +chr21 9795588 9796685 variant3 891 +\end{Verbatim} + + +\paragraph{5.22.4 Computing the mean and median.} +\label{content/groupBy:computing-the-mean-and-median} +Now let's find the \emph{mean} and \emph{median} repeat score for each variant. + +\begin{Verbatim}[commandchars=\\\{\}] +cat variantsToRepeats.bed \textbar{} groupBy -g 1,2,3,4 -c 9 -o mean +chr21 9719758 9729320 variant1 1588.25 +chr21 9729310 9757478 variant2 3620.5 +chr21 9795588 9796685 variant3 600.6667 + +groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op median +chr21 9719758 9729320 variant1 1030.5 +chr21 9729310 9757478 variant2 2539.5 +chr21 9795588 9796685 variant3 652 +\end{Verbatim} + + +\paragraph{5.22.5 Computing the mode and ``antimode''.} +\label{content/groupBy:computing-the-mode-and-antimode} +Now let's find the \emph{mode} and \emph{antimode} (i.e., the least frequent) repeat score for each variant (in this case +they are identical). + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op mode +chr21 9719758 9729320 variant1 1004 +chr21 9729310 9757478 variant2 1036 +chr21 9795588 9796685 variant3 308 + +groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op antimode +chr21 9719758 9729320 variant1 1004 +chr21 9729310 9757478 variant2 1036 +chr21 9795588 9796685 variant3 308 +\end{Verbatim} + + +\paragraph{5.22.6 Computing the count of lines for a given group.} +\label{content/groupBy:computing-the-count-of-lines-for-a-given-group} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy -i variantsToRepeats.bed -g 1,2,3,4 -c 9 -c count +chr21 9719758 9729320 variant1 4 +chr21 9729310 9757478 variant2 4 +chr21 9795588 9796685 variant3 6 +\end{Verbatim} + + +\paragraph{5.22.7 Collapsing: listing all of the values in the opCol for a given group.} +\label{content/groupBy:collapsing-listing-all-of-the-values-in-the-opcol-for-a-given-group} +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This ``denormalizes'' things. Now you have a list of all the +repeats on a single line. + +\begin{Verbatim}[commandchars=\\\{\}] +groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op collapse +chr21 9719758 9729320 variant1 ALR/Alpha,ALR/Alpha,L1PA3,ALR/Alpha, +chr21 9729310 9757478 variant2 L1PA3,L1P1,ALR/Alpha,ALR/Alpha, +chr21 9795588 9796685 variant3 (GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n, +\end{Verbatim} + + +\paragraph{5.22.8 Computing frequencies: freqasc and freqdesc.} +\label{content/groupBy:computing-frequencies-freqasc-and-freqdesc} +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This ``denormalizes'' things. Now you have a list of all the +repeats on a single line. + +\begin{Verbatim}[commandchars=\\\{\}] +cat variantsToRepeats.bed \textbar{} groupBy -g 1 -c 8 -o freqdesc +chr21 (GAATG)n:6,ALR/Alpha:5,L1PA3:2,L1P1:1, + +cat variantsToRepeats.bed \textbar{} groupBy -g 1 -c 8 -o freqasc +chr21 L1P1:1,L1PA3:2,ALR/Alpha:5,(GAATG)n:6, +\end{Verbatim} + + +\subsubsection{5.23 unionBedGraphs} +\label{content/unionBedGraphs:unionbedgraphs}\label{content/unionBedGraphs::doc} +\textbf{unionBedGraphs} combines multiple BEDGRAPH files into a single file such that one can directly +compare coverage (and other text-values such as genotypes) across multiple sample + + +\paragraph{5.23.1 Usage and option summary} +\label{content/unionBedGraphs:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +unionBedGraphs [OPTIONS] -i FILE1 FILE2 FILE3 ... FILEn +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-header} + & +Print a header line, consisting of chrom, start, end followed by the names of each input BEDGRAPH file. +\\\hline + +\textbf{-names} + & +A list of names (one per file) to describe each file in -i. These names will be printed in the header line. +\\\hline + +\textbf{-empty} + & +Report empty regions (i.e., start/end intervals w/o values in all files). \emph{Requires the `-g FILE' parameter (see below)}. +\\\hline + +\textbf{-g} + & +The genome file to be used to calculate empty regions. +\\\hline + +\textbf{-filler TEXT} + & +Use TEXT when representing intervals having no value. Default is `0', but you can use `N/A' or any other text. +\\\hline + +\textbf{-examples} + & +Show detailed usage examples. +\\\hline +\end{tabulary} + + + +\paragraph{5.23.2 Default behavior} +\label{content/unionBedGraphs:default-behavior} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +cat 1.bg +chr1 1000 1500 10 +chr1 2000 2100 20 + +cat 2.bg +chr1 900 1600 60 +chr1 1700 2050 50 + +cat 3.bg +chr1 1980 2070 80 +chr1 2090 2100 20 + +cat sizes.txt +chr1 5000 + +unionBedGraphs -i 1.bg 2.bg 3.bg +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +\end{Verbatim} + + +\paragraph{5.23.3 Add a header line to the output} +\label{content/unionBedGraphs:add-a-header-line-to-the-output} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +unionBedGraphs -i 1.bg 2.bg 3.bg -header +chrom start end 1 2 3 +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +\end{Verbatim} + + +\paragraph{5.23.4 Add a header line with custom file names to the output} +\label{content/unionBedGraphs:add-a-header-line-with-custom-file-names-to-the-output} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +unionBedGraphs -i 1.bg 2.bg 3.bg -header -names WT-1 WT-2 KO-1 +chrom start end WT-1 WT-2 KO-1 +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +\end{Verbatim} + + +\paragraph{5.23.5 Include regions that have zero coverage in all BEDGRAPH files.} +\label{content/unionBedGraphs:include-regions-that-have-zero-coverage-in-all-bedgraph-files} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +unionBedGraphs -i 1.bg 2.bg 3.bg -empty -g sizes.txt -header +chrom start end WT-1 WT-2 KO-1 +chrom start end 1 2 3 +chr1 0 900 0 0 0 +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1600 1700 0 0 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +chr1 2100 5000 0 0 0 +\end{Verbatim} + + +\paragraph{5.23.6 Use a custom value for missing values.} +\label{content/unionBedGraphs:use-a-custom-value-for-missing-values} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +unionBedGraphs -i 1.bg 2.bg 3.bg -empty -g sizes.txt -header -filler N/A +chrom start end WT-1 WT-2 KO-1 +chrom start end 1 2 3 +chr1 0 900 N/A N/A N/A +chr1 900 1000 N/A 60 N/A +chr1 1000 1500 10 60 N/A +chr1 1500 1600 N/A 60 N/A +chr1 1600 1700 N/A N/A N/A +chr1 1700 1980 N/A 50 N/A +chr1 1980 2000 N/A 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 N/A 80 +chr1 2070 2090 20 N/A N/A +chr1 2090 2100 20 N/A 20 +chr1 2100 5000 N/A N/A N/A +\end{Verbatim} + + +\paragraph{5.23.7 Use BEDGRAPH files with non-numeric values.} +\label{content/unionBedGraphs:use-bedgraph-files-with-non-numeric-values} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +cat 1.snp.bg +chr1 0 1 A/G +chr1 5 6 C/T + +cat 2.snp.bg +chr1 0 1 C/C +chr1 7 8 T/T + +cat 3.snp.bg +chr1 0 1 A/G +chr1 5 6 C/T + +unionBedGraphs -i 1.snp.bg 2.snp.bg 3.snp.bg -filler -/- +chr1 0 1 A/G C/C A/G +chr1 5 6 C/T -/- C/T +chr1 7 8 -/- T/T -/- +\end{Verbatim} + + +\subsubsection{5.24 annotateBed} +\label{content/annotateBed::doc}\label{content/annotateBed:annotatebed} +\textbf{annotateBed} annotates one BED/VCF/GFF file with the coverage and number of overlaps observed +from multiple other BED/VCF/GFF files. In this way, it allows one to ask to what degree one feature +coincides with multiple other feature types with a single command. + + +\paragraph{5.24.1 Usage and option summary} +\label{content/annotateBed:usage-and-option-summary} +Usage: + +\begin{Verbatim}[commandchars=\\\{\}] +annotateBed [OPTIONS] -i \textless{}BED/GFF/VCF\textgreater{} -files FILE1 FILE2 FILE3 ... FILEn +\end{Verbatim} + +\begin{tabulary}{\linewidth}{|L|L|} +\hline +\textbf{ +Option +} & \textbf{ +Description +}\\\hline + +\textbf{-namesr} + & +A list of names (one per file) to describe each file in -i. These names will be printed as a header line. +\\\hline + +\textbf{-counts} + & +Report the count of features in each file that overlap -i. Default behavior is to report the fraction of -i covered by each file. +\\\hline + +\textbf{-both} + & +Report the count of features followed by the \% coverage for each annotation file. Default is to report solely the fraction of -i covered by each file. +\\\hline + +\textbf{-s} + & +Force strandedness. That is, only include hits in A that overlap B on the same strand. By default, hits are included without respect to strand. +\\\hline +\end{tabulary} + + + +\paragraph{5.24.2 Default behavior - annotate one file with coverage from others.} +\label{content/annotateBed:default-behavior-annotate-one-file-with-coverage-from-others} +By default, the fraction of each feature covered by each annotation file is reported after the complete +feature in the file to be annotated. + +\begin{Verbatim}[commandchars=\\\{\}] +cat variants.bed +chr1 100 200 nasty 1 - +chr2 500 1000 ugly 2 + +chr3 1000 5000 big 3 - + +cat genes.bed +chr1 150 200 geneA 1 + +chr1 175 250 geneB 2 + +chr3 0 10000 geneC 3 - + +cat conserve.bed +chr1 0 10000 cons1 1 + +chr2 700 10000 cons2 2 - +chr3 4000 10000 cons3 3 + + +cat known\_var.bed +chr1 0 120 known1 - +chr1 150 160 known2 - +chr2 0 10000 known3 + + +annotateBed -i variants.bed -files genes.bed conserv.bed known\_var.bed +chr1 100 200 nasty 1 - 0.500000 1.000000 0.300000 +chr2 500 1000 ugly 2 + 0.000000 0.600000 1.000000 +chr3 1000 5000 big 3 - 1.000000 0.250000 0.000000 +\end{Verbatim} + + +\paragraph{5.24.3 Report the count of hits from the annotation files} +\label{content/annotateBed:report-the-count-of-hits-from-the-annotation-files} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +annotateBed -counts -i variants.bed -files genes.bed conserv.bed known\_var.bed +chr1 100 200 nasty 1 - 2 1 2 +chr2 500 1000 ugly 2 + 0 1 1 +chr3 1000 5000 big 3 - 1 1 0 +\end{Verbatim} + + +\paragraph{5.24.4 Report both the count of hits and the fraction covered from the annotation files} +\label{content/annotateBed:report-both-the-count-of-hits-and-the-fraction-covered-from-the-annotation-files} +Figure: + +\begin{Verbatim}[commandchars=\\\{\}] +annotateBed -both -i variants.bed -files genes.bed conserv.bed known\_var.bed +\#chr start end name score +/- cnt1 pct1 cnt2 pct2 cnt3 pct3 +chr1 100 200 nasty 1 - 2 0.500000 1 1.000000 2 0.300000 +chr2 500 1000 ugly 2 + 0 0.000000 1 0.600000 1 1.000000 +chr3 1000 5000 big 3 - 1 1.000000 1 0.250000 0 0.000000 +\end{Verbatim} + + +\paragraph{5.24.5 Restrict the reporting to overlaps on the same strand.} +\label{content/annotateBed:restrict-the-reporting-to-overlaps-on-the-same-strand} +Note: Compare with the result from 5.24.3 + +\begin{Verbatim}[commandchars=\\\{\}] +annotateBed -s -i variants.bed -files genes.bed conserv.bed known\_var.bed +chr1 100 200 nasty var1 - 0.000000 0.000000 0.000000 +chr2 500 1000 ugly var2 + 0.000000 0.000000 0.000000 +chr3 1000 5000 big var3 - 1.000000 0.000000 0.000000 +\end{Verbatim} + + +\section{Example usage} +\label{content/example-usage:example-usage}\label{content/example-usage::doc} +Below are several examples of basic BEDTools usage. Example BED files are provided in the +/data directory of the BEDTools distribution. + + +\subsection{6.1 intersectBed} +\label{content/example-usage:intersectbed} +6.1.1 Report the base-pair overlap between sequence alignments and genes. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed +\end{Verbatim} + +6.1.2 Report whether each alignment overlaps one or more genes. If not, the alignment is not reported. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed -u +\end{Verbatim} + +6.1.3 Report those alignments that overlap NO genes. Like ``grep -v'' + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed -v +\end{Verbatim} + +6.1.4 Report the number of genes that each alignment overlaps. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed -c +\end{Verbatim} + +6.1.5 Report the entire, original alignment entry for each overlap with a gene. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed -wa +\end{Verbatim} + +6.1.6 Report the entire, original gene entry for each overlap with a gene. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed -wb +\end{Verbatim} + +6.1.7 Report the entire, original alignment and gene entries for each overlap. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a reads.bed -b genes.bed -wa -wb +\end{Verbatim} + +6.1.8 Only report an overlap with a repeat if it spans at least 50\% of the exon. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a exons.bed -b repeatMasker.bed -f 0.50 +\end{Verbatim} + +6.1.9 Only report an overlap if comprises 50\% of the structural variant and 50\% of the segmental duplication. Thus, it is reciprocally at least a 50\% overlap. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a SV.bed -b segmentalDups.bed -f 0.50 -r +\end{Verbatim} + +6.1.10 Read BED A from stdin. For example, find genes that overlap LINEs but not SINEs. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a genes.bed -b LINES.bed \textbar{} intersectBed -a stdin -b SINEs.bed -v +\end{Verbatim} + +6.1.11 Retain only single-end BAM alignments that overlap exons. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -abam reads.bam -b exons.bed \textgreater{} reads.touchingExons.bam +\end{Verbatim} + +6.1.12 Retain only single-end BAM alignments that do not overlap simple sequence +repeats. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -abam reads.bam -b SSRs.bed -v \textgreater{} reads.noSSRs.bam +\end{Verbatim} + + +\subsection{6.2 pairToBed} +\label{content/example-usage:pairtobed} +6.2.1 Return all structural variants (in BEDPE format) that overlap with genes on either +end. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -a sv.bedpe -b genes \textgreater{} sv.genes +\end{Verbatim} + +6.2.2 Return all structural variants (in BEDPE format) that overlap with genes on both +end. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -a sv.bedpe -b genes -type both \textgreater{} sv.genes +\end{Verbatim} + +6.2.3 Retain only paired-end BAM alignments where neither end overlaps simple +sequence repeats. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -abam reads.bam -b SSRs.bed -type neither \textgreater{} reads.noSSRs.bam +\end{Verbatim} + +6.2.4 Retain only paired-end BAM alignments where both ends overlap segmental +duplications. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -abam reads.bam -b segdups.bed -type both \textgreater{} reads.SSRs.bam +\end{Verbatim} + +6.2.5 Retain only paired-end BAM alignments where neither or one and only one end +overlaps segmental duplications. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -abam reads.bam -b segdups.bed -type notboth \textgreater{} reads.notbothSSRs.bam +\end{Verbatim} + + +\subsection{6.3 pairToPair} +\label{content/example-usage:pairtopair} +6.3.1 Find all SVs (in BEDPE format) in sample 1 that are also in sample 2. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToPair -a 1.sv.bedpe -b 2.sv.bedpe \textbar{} cut -f 1-10 \textgreater{} 1.sv.in2.bedpe +\end{Verbatim} + +6.3.2 Find all SVs (in BEDPE format) in sample 1 that are not in sample 2. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToPair -a 1.sv.bedpe -b 2.sv.bedpe -type neither \textbar{} cut -f 1-10 \textgreater{} +\end{Verbatim} + +1.sv.notin2.bedpe + + +\subsection{6.4 bamToBed} +\label{content/example-usage:bamtobed} +6.4.1 Convert BAM alignments to BED format. + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed -i reads.bam \textgreater{} reads.bed +\end{Verbatim} + +6.4.2 Convert BAM alignments to BED format using the BAM edit distance (NM) as the +BED ``score''. + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed -i reads.bam -ed \textgreater{} reads.bed +\end{Verbatim} + +6.4.3 Convert BAM alignments to BEDPE format. + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed -i reads.bam -bedpe \textgreater{} reads.bedpe +\end{Verbatim} + + +\subsection{6.5 windowBed} +\label{content/example-usage:windowbed} +6.5.1 Report all genes that are within 10000 bp upstream or downstream of CNVs. + +\begin{Verbatim}[commandchars=\\\{\}] +windowBed -a CNVs.bed -b genes.bed -w 10000 +\end{Verbatim} + +6.5.2 Report all genes that are within 10000 bp upstream or 5000 bp downstream of +CNVs. + +\begin{Verbatim}[commandchars=\\\{\}] +windowBed -a CNVs.bed -b genes.bed -l 10000 -r 5000 +\end{Verbatim} + +6.5.3 Report all SNPs that are within 5000 bp upstream or 1000 bp downstream of genes. +Define upstream and downstream based on strand. + +\begin{Verbatim}[commandchars=\\\{\}] +windowBed -a genes.bed -b snps.bed -l 5000 -r 1000 -sw +\end{Verbatim} + + +\subsection{6.6 closestBed} +\label{content/example-usage:closestbed} +Note: By default, if there is a tie for closest, all ties will be reported. \textbf{closestBed} allows overlapping +features to be the closest. + +6.6.1 Find the closest ALU to each gene. + +\begin{Verbatim}[commandchars=\\\{\}] +closestBed -a genes.bed -b ALUs.bed +\end{Verbatim} + +6.6.2 Find the closest ALU to each gene, choosing the first ALU in the file if there is a +tie. + +\begin{Verbatim}[commandchars=\\\{\}] +closestBed -a genes.bed -b ALUs.bed -t first +\end{Verbatim} + +6.6.3 Find the closest ALU to each gene, choosing the last ALU in the file if there is a +tie. + +\begin{Verbatim}[commandchars=\\\{\}] +closestBed -a genes.bed -b ALUs.bed -t last +\end{Verbatim} + + +\subsection{6.7 subtractBed} +\label{content/example-usage:subtractbed} +Note: If a feature in A is entirely ``spanned'' by any feature in B, it will not be reported. + +6.7.1 Remove introns from gene features. Exons will (should) be reported. + +\begin{Verbatim}[commandchars=\\\{\}] +subtractBed -a genes.bed -b introns.bed +\end{Verbatim} + + +\subsection{6.8 mergeBed} +\label{content/example-usage:mergebed} +6.8.1 Merge overlapping repetitive elements into a single entry. + +\begin{Verbatim}[commandchars=\\\{\}] +mergeBed -i repeatMasker.bed +\end{Verbatim} + +6.8.2 Merge overlapping repetitive elements into a single entry, returning the number of +entries merged. + +\begin{Verbatim}[commandchars=\\\{\}] +mergeBed -i repeatMasker.bed -n +\end{Verbatim} + +6.8.3 Merge nearby (within 1000 bp) repetitive elements into a single entry. + +\begin{Verbatim}[commandchars=\\\{\}] +mergeBed -i repeatMasker.bed -d 1000 +\end{Verbatim} + + +\subsection{6.9 coverageBed} +\label{content/example-usage:coveragebed} +6.9.1 Compute the coverage of aligned sequences on 10 kilobase ``windows'' spanning the +genome. + +\begin{Verbatim}[commandchars=\\\{\}] +coverageBed -a reads.bed -b windows10kb.bed \textbar{} head +chr1 0 10000 0 10000 0.00 +chr1 10001 20000 33 10000 0.21 +chr1 20001 30000 42 10000 0.29 +chr1 30001 40000 71 10000 0.36 +\end{Verbatim} + +6.9.2 Compute the coverage of aligned sequences on 10 kilobase ``windows'' spanning the +genome and created a BEDGRAPH of the number of aligned reads in each window for +display on the UCSC browser. + +\begin{Verbatim}[commandchars=\\\{\}] +coverageBed -a reads.bed -b windows10kb.bed \textbar{} cut -f 1-4 \textgreater{} windows10kb.cov.bedg +\end{Verbatim} + +6.9.3 Compute the coverage of aligned sequences on 10 kilobase ``windows'' spanning the +genome and created a BEDGRAPH of the fraction of each window covered by at least +one aligned read for display on the UCSC browser. + +\begin{Verbatim}[commandchars=\\\{\}] +coverageBed -a reads.bed -b windows10kb.bed \textbar{} awk ??\PYGZob{}OFS="\PYGZbs{}t"; print \$1,\$2,\$3,\$6\PYGZcb{}?? +\textgreater{} windows10kb.pctcov.bedg +\end{Verbatim} + + +\subsection{6.10 complementBed} +\label{content/example-usage:complementbed} +6.10.1 Report all intervals in the human genome that are not covered by repetitive +elements. + +\begin{Verbatim}[commandchars=\\\{\}] +complementBed -i repeatMasker.bed -g hg18.genome +\end{Verbatim} + + +\subsection{6.11 shuffleBed} +\label{content/example-usage:shufflebed} +6.11.1 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps. + +\begin{Verbatim}[commandchars=\\\{\}] +shuffleBed -i variants.bed -g hg18.genome -excl genome\_gaps.bed +\end{Verbatim} + +6.11.2 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps and require that the variants be randomly +placed on the same chromosome. + +\begin{Verbatim}[commandchars=\\\{\}] +shuffleBed -i variants.bed -g hg18.genome -excl genome\_gaps.bed -chrom +\end{Verbatim} + + +\section{Advanced usage} +\label{content/advanced-usage::doc}\label{content/advanced-usage:advanced-usage} + +\subsection{7.1 Mask all regions in a genome except for targeted capture regions.} +\label{content/advanced-usage:mask-all-regions-in-a-genome-except-for-targeted-capture-regions} +\# Add 500 bp up and downstream of each probe + +\begin{Verbatim}[commandchars=\\\{\}] +slopBed -i probes.bed -b 500 \textgreater{} probes.500bp.bed +\end{Verbatim} + +\# Get a BED file of all regions not covered by the probes (+500 bp up/down) + +\begin{Verbatim}[commandchars=\\\{\}] +complementBed -i probes.500bp.bed -g hg18.genome \textgreater{} probes.500bp.complement.bed +\end{Verbatim} + +\# Create a masked genome where all bases are masked except for the probes +500bp + +\begin{Verbatim}[commandchars=\\\{\}] +maskFastaFromBed -in hg18.fa -bed probes.500bp.complement.bed -fo hg18.probecomplement. +masked.fa +\end{Verbatim} + + +\subsection{7.2 Screening for novel SNPs.} +\label{content/advanced-usage:screening-for-novel-snps} +\# Find all SNPs that are not in dbSnp and not in the latest 1000 genomes calls + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a snp.calls.bed -b dbSnp.bed -v \textbar{} intersectBed -a stdin -b 1KG.bed +-v \textgreater{} snp.calls.novel.bed +\end{Verbatim} + +you can first use intersectBed with the ``-f 1.0'' option. + +\begin{Verbatim}[commandchars=\\\{\}] +intersectBed -a features.bed -b windows.bed -f 1.0 \textbar{} coverageBed -a stdin -b +windows.bed \textgreater{} windows.bed.coverage +\end{Verbatim} + + +\subsection{7.4 Computing the coverage of BAM alignments on exons.} +\label{content/advanced-usage:computing-the-coverage-of-bam-alignments-on-exons} +\# One can combine SAMtools with BEDtools to compute coverage directly from the BAM +data by using bamToBed. + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed -i reads.bam \textbar{} coverageBed -a stdin -b exons.bed \textgreater{} exons.bed.coverage +\end{Verbatim} + +\# Take it a step further and require that coverage be from properly-paired reads. + +\begin{Verbatim}[commandchars=\\\{\}] +samtools view -bf 0x2 reads.bam \textbar{} bamToBed -i stdin \textbar{} coverageBed -a stdin -b +exons.bed \textgreater{} exons.bed.proper.coverage +\end{Verbatim} + + +\subsection{7.5 Computing coverage separately for each strand.} +\label{content/advanced-usage:computing-coverage-separately-for-each-strand} +\# Use grep to only look at forward strand features (i.e. those that end in ``+''). + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed -i reads.bam \textbar{} grep \PYGZbs{}+\$ \textbar{} coverageBed -a stdin -b genes.bed \textgreater{} +genes.bed.forward.coverage +\end{Verbatim} + +\# Use grep to only look at reverse strand features (i.e. those that end in ``-''). + +\begin{Verbatim}[commandchars=\\\{\}] +bamToBed -i reads.bam \textbar{} grep \PYGZbs{}-\$ \textbar{} coverageBed -a stdin -b genes.bed \textgreater{} +genes.bed.forward.coverage +\end{Verbatim} + + +\subsection{7.6 Find structural variant calls that are private to one sample.} +\label{content/advanced-usage:find-structural-variant-calls-that-are-private-to-one-sample} +\# : + +\begin{Verbatim}[commandchars=\\\{\}] +pairToPair -a sample1.sv.bedpe -b othersamples.sv.bedpe -type neither \textgreater{} +sample1.sv.private.bedpe +\end{Verbatim} + + +\subsection{7.7 Exclude SV deletions that appear to be ALU insertions in the reference genome.} +\label{content/advanced-usage:exclude-sv-deletions-that-appear-to-be-alu-insertions-in-the-reference-genome} +\# We'll require that 90\% of the inner span of the deletion be overlapped by a +recent ALU. + +\begin{Verbatim}[commandchars=\\\{\}] +pairToBed -a deletions.sv.bedpe -b ALUs.recent.bed -type notispan -f 0.80 \textgreater{} +deletions.notALUsinRef.bedpe +\end{Verbatim} + + +\chapter{Mailing list} +\label{index:mailing-list} +Refer to the mailing list. + + + +\renewcommand{\indexname}{Index} +\printindex +\end{document} diff --git a/docs/_build/latex/bedtools.toc b/docs/_build/latex/bedtools.toc new file mode 100644 index 0000000000000000000000000000000000000000..65e06b1d213b0301fa68159919e77b7a98cf899d --- /dev/null +++ b/docs/_build/latex/bedtools.toc @@ -0,0 +1,203 @@ +\select@language {english} +\contentsline {chapter}{\numberline {1}Overview}{1}{chapter.1} +\contentsline {chapter}{\numberline {2}Table of contents}{3}{chapter.2} +\contentsline {section}{\numberline {2.1}Overview}{3}{section.2.1} +\contentsline {subsection}{\numberline {2.1.1}1.1 Background}{3}{subsection.2.1.1} +\contentsline {subsection}{\numberline {2.1.2}1.2 Summary of available tools.}{3}{subsection.2.1.2} +\contentsline {subsection}{\numberline {2.1.3}1.3 Fundamental concepts.}{4}{subsection.2.1.3} +\contentsline {subsubsection}{1.3.1 What are genome features and how are they represented?}{4}{subsubsection*.3} +\contentsline {subsubsection}{1.3.2 Overlapping / intersecting features.}{5}{subsubsection*.4} +\contentsline {subsubsection}{1.3.3 Comparing features in file \IeC {\textquotedblleft }A\IeC {\textquotedblright } and file \IeC {\textquotedblleft }B\IeC {\textquotedblright }.}{5}{subsubsection*.5} +\contentsline {subsubsection}{1.3.4 BED starts are zero-based and BED ends are one-based.}{5}{subsubsection*.6} +\contentsline {subsubsection}{1.3.5 GFF starts and ends are one-based.}{5}{subsubsection*.7} +\contentsline {subsubsection}{1.3.6 VCF coordinates are one-based.}{6}{subsubsection*.8} +\contentsline {subsubsection}{1.3.7 File B is loaded into memory (most of the time).}{6}{subsubsection*.9} +\contentsline {subsubsection}{1.3.8 Feature files \emph {must} be tab-delimited.}{6}{subsubsection*.10} +\contentsline {subsubsection}{1.3.9 All BEDTools allow features to be \IeC {\textquotedblleft }piped\IeC {\textquotedblright } via standard input.}{6}{subsubsection*.11} +\contentsline {subsubsection}{1.3.10 Most BEDTools write their results to standard output.}{6}{subsubsection*.12} +\contentsline {subsubsection}{1.3.11 What is a \IeC {\textquotedblleft }genome\IeC {\textquotedblright } file?}{7}{subsubsection*.13} +\contentsline {subsubsection}{1.3.12 Paired-end BED files (BEDPE files).}{7}{subsubsection*.14} +\contentsline {subsubsection}{1.3.13 Use \IeC {\textquotedblleft }-h\IeC {\textquotedblright } for help with any BEDTool.}{7}{subsubsection*.15} +\contentsline {subsubsection}{1.3.14 BED features must not contain negative positions.}{7}{subsubsection*.16} +\contentsline {subsubsection}{1.3.15 The start position must be \textless {}= to the end position.}{7}{subsubsection*.17} +\contentsline {subsubsection}{1.3.16 Headers are allowed in GFF and BED files}{7}{subsubsection*.18} +\contentsline {subsubsection}{1.3.17 GZIP support: BED, GFF, VCF, and BEDPE file can be \IeC {\textquotedblleft }gzipped\IeC {\textquotedblright }}{8}{subsubsection*.19} +\contentsline {subsubsection}{1.3.18 Support for \IeC {\textquotedblleft }split\IeC {\textquotedblright } or \IeC {\textquotedblleft }spliced\IeC {\textquotedblright } BAM alignments and \IeC {\textquotedblleft }blocked\IeC {\textquotedblright } BED features}{8}{subsubsection*.20} +\contentsline {subsubsection}{1.3.19 Writing uncompressed BAM output.}{8}{subsubsection*.21} +\contentsline {subsection}{\numberline {2.1.4}1.4 Implementation and algorithmic notes.}{8}{subsection.2.1.4} +\contentsline {subsection}{\numberline {2.1.5}1.5 License and availability.}{9}{subsection.2.1.5} +\contentsline {subsection}{\numberline {2.1.6}1.6 Mailing list.}{9}{subsection.2.1.6} +\contentsline {subsection}{\numberline {2.1.7}1.7 Contributors.}{9}{subsection.2.1.7} +\contentsline {section}{\numberline {2.2}Installation}{9}{section.2.2} +\contentsline {section}{\numberline {2.3}Quick start}{9}{section.2.3} +\contentsline {subsection}{\numberline {2.3.1}Install BEDTools}{9}{subsection.2.3.1} +\contentsline {subsection}{\numberline {2.3.2}Use BEDTools}{10}{subsection.2.3.2} +\contentsline {section}{\numberline {2.4}General usage}{10}{section.2.4} +\contentsline {subsection}{\numberline {2.4.1}4.1 Supported file formats}{10}{subsection.2.4.1} +\contentsline {subsubsection}{4.1.1 BED format}{10}{subsubsection*.22} +\contentsline {subsubsection}{4.1.2 BEDPE format}{12}{subsubsection*.23} +\contentsline {subsubsection}{4.1.3 GFF format}{13}{subsubsection*.24} +\contentsline {subsubsection}{4.1.3 GFF format}{14}{subsubsection*.25} +\contentsline {subsubsection}{4.1.5 SAM/BAM format}{15}{subsubsection*.26} +\contentsline {subsubsection}{4.1.6 VCF format}{15}{subsubsection*.27} +\contentsline {section}{\numberline {2.5}The BEDTools suite}{15}{section.2.5} +\contentsline {subsection}{\numberline {2.5.1}Table of contents}{15}{subsection.2.5.1} +\contentsline {subsubsection}{5.1 intersectBed}{15}{subsubsection*.28} +\contentsline {paragraph}{5.1.1 Usage and option summary}{15}{paragraph*.29} +\contentsline {paragraph}{5.1.2 Default behavior}{16}{paragraph*.30} +\contentsline {paragraph}{5.1.3 (-wa)Reporting the original A feature}{17}{paragraph*.31} +\contentsline {paragraph}{5.1.4 (-wb)Reporting the original B feature}{17}{paragraph*.32} +\contentsline {paragraph}{5.1.5 (-u)Reporting the presence of \emph {at least one} overlapping feature}{18}{paragraph*.33} +\contentsline {paragraph}{5.1.6 (-c)Reporting the number of overlapping features}{18}{paragraph*.34} +\contentsline {paragraph}{5.1.6 (-c)Reporting the number of overlapping features}{18}{paragraph*.35} +\contentsline {paragraph}{5.1.7 (-v)Reporting the absence of any overlapping features}{19}{paragraph*.36} +\contentsline {paragraph}{5.1.8 (-f)Requiring a minimal overlap fraction}{19}{paragraph*.37} +\contentsline {paragraph}{5.1.9 (-r, combined with -f)Requiring reciprocal minimal overlap fraction}{19}{paragraph*.38} +\contentsline {paragraph}{5.1.10 (-s)Enforcing ``strandedness''}{20}{paragraph*.39} +\contentsline {paragraph}{5.1.11 (-abam)Default behavior when using BAM input}{20}{paragraph*.40} +\contentsline {paragraph}{5.1.12 (-bed)Output BED format when using BAM input}{20}{paragraph*.41} +\contentsline {paragraph}{5.1.13 (-split)Reporting overlaps with spliced alignments or blocked BED features}{21}{paragraph*.42} +\contentsline {subsubsection}{5.2 pairToBed}{22}{subsubsection*.43} +\contentsline {paragraph}{5.2.1 Usage and option summary}{22}{paragraph*.44} +\contentsline {paragraph}{5.2.2 Default behavior}{24}{paragraph*.45} +\contentsline {paragraph}{5.2.3 (-type)Optional overlap requirements}{24}{paragraph*.46} +\contentsline {paragraph}{5.2.4 (-f)Requiring a minimum overlap fraction}{27}{paragraph*.47} +\contentsline {paragraph}{5.2.5 (-s)Enforcing ``strandedness''}{27}{paragraph*.48} +\contentsline {paragraph}{5.2.6 (-abam)Default is to write BAM output when using BAM input}{28}{paragraph*.49} +\contentsline {paragraph}{5.2.7 (-bedpe)Output BEDPE format when using BAM input}{28}{paragraph*.50} +\contentsline {subsubsection}{5.3 pairToPair}{29}{subsubsection*.51} +\contentsline {paragraph}{5.3.1 Usage and option summary}{29}{paragraph*.52} +\contentsline {paragraph}{5.3.2 Default behavior}{29}{paragraph*.53} +\contentsline {paragraph}{5.3.3 (-type neither)Optional overlap requirements}{30}{paragraph*.54} +\contentsline {subsubsection}{5.4 bamToBed}{30}{subsubsection*.55} +\contentsline {paragraph}{5.4.1 Usage and option summary}{30}{paragraph*.56} +\contentsline {paragraph}{5.4.2 (-split)Creating BED12 features from ``spliced'' BAM entries.}{32}{paragraph*.57} +\contentsline {subsubsection}{5.5 windowBed}{32}{subsubsection*.58} +\contentsline {paragraph}{5.5.1 Usage and option summary}{32}{paragraph*.59} +\contentsline {paragraph}{5.5.2 Default behavior}{33}{paragraph*.60} +\contentsline {paragraph}{5.5.3 (-w)Defining a custom window size}{33}{paragraph*.61} +\contentsline {paragraph}{5.5.4 (-l and -r)Defining assymteric windows}{34}{paragraph*.62} +\contentsline {paragraph}{5.5.5 (-sw)Defining assymteric windows based on strand}{34}{paragraph*.63} +\contentsline {paragraph}{5.5.6 (-sm)Enforcing ``strandedness''}{35}{paragraph*.64} +\contentsline {paragraph}{5.5.7 (-u)Reporting the presence of at least one overlapping feature}{35}{paragraph*.65} +\contentsline {paragraph}{5.5.8 (-c)Reporting the number of overlapping features}{35}{paragraph*.66} +\contentsline {paragraph}{5.5.9 (-v)Reporting the absence of any overlapping features}{35}{paragraph*.67} +\contentsline {subsubsection}{5.6 closestBed}{35}{subsubsection*.68} +\contentsline {paragraph}{5.6.1 Usage and option summary}{35}{paragraph*.69} +\contentsline {paragraph}{5.6.2 Default behavior}{36}{paragraph*.70} +\contentsline {paragraph}{5.6.3 (-s)Enforcing ``strandedness''}{36}{paragraph*.71} +\contentsline {paragraph}{5.6.4 (-t)Controlling how ties for ``closest'' are broken}{37}{paragraph*.72} +\contentsline {paragraph}{5.6.5 (-d)Reporting the distance to the closest feature in base pairs}{37}{paragraph*.73} +\contentsline {subsubsection}{5.7 subtractBed}{37}{subsubsection*.74} +\contentsline {paragraph}{5.7.1 Usage and option summary}{38}{paragraph*.75} +\contentsline {paragraph}{5.7.2 Default behavior}{38}{paragraph*.76} +\contentsline {paragraph}{5.7.3 (-f)Requiring a minimal overlap fraction before subtracting}{38}{paragraph*.77} +\contentsline {paragraph}{5.7.4 (-s)Enforcing ``strandedness''}{39}{paragraph*.78} +\contentsline {subsubsection}{5.8 mergeBed}{39}{subsubsection*.79} +\contentsline {paragraph}{5.8.1 Usage and option summary}{39}{paragraph*.80} +\contentsline {paragraph}{5.8.2 Default behavior}{39}{paragraph*.81} +\contentsline {paragraph}{5.8.3 (-s)Enforcing ``strandedness''}{39}{paragraph*.82} +\contentsline {paragraph}{5.8.4 (-n)Reporting the number of features that were merged}{40}{paragraph*.83} +\contentsline {paragraph}{5.8.5 (-d)Controlling how close two features must be in order to merge}{40}{paragraph*.84} +\contentsline {paragraph}{5.8.6 (-nms)Reporting the names of the features that were merged}{40}{paragraph*.85} +\contentsline {subsubsection}{5.9 coverageBed}{41}{subsubsection*.86} +\contentsline {paragraph}{5.9.1 Usage and option summary}{41}{paragraph*.87} +\contentsline {paragraph}{5.9.2 Default behavior}{41}{paragraph*.88} +\contentsline {paragraph}{5.9.4 (-s)Calculating coverage by strand}{42}{paragraph*.89} +\contentsline {paragraph}{5.9.5 (-hist)Creating a histogram of coverage for each feature in the B file}{43}{paragraph*.90} +\contentsline {paragraph}{5.9.6 (-hist)Reporting the per-base of coverage for each feature in the B file}{43}{paragraph*.91} +\contentsline {paragraph}{5.9.7 (-split)Reporting coverage with spliced alignments or blocked BED features}{44}{paragraph*.92} +\contentsline {subsubsection}{5.10 genomeCoverageBed}{44}{subsubsection*.93} +\contentsline {paragraph}{5.10.1 Usage and option summary}{44}{paragraph*.94} +\contentsline {paragraph}{5.10.2 Default behavior}{45}{paragraph*.95} +\contentsline {paragraph}{5.10.3 (-max)Controlling the histogram's maximum depth}{46}{paragraph*.96} +\contentsline {paragraph}{5.10.4 (-d)Reporting ``per-base'' genome coverage}{46}{paragraph*.97} +\contentsline {paragraph}{5.1.13 (-split)Reporting coverage with spliced alignments or blocked BED features}{46}{paragraph*.98} +\contentsline {subsubsection}{5.11 fastaFromBed}{46}{subsubsection*.99} +\contentsline {paragraph}{5.11.1 Usage and option summary}{47}{paragraph*.100} +\contentsline {paragraph}{5.11.2 Default behavior}{47}{paragraph*.101} +\contentsline {paragraph}{5.11.3 Using the BED ``name'' column as a FASTA header.}{47}{paragraph*.102} +\contentsline {paragraph}{5.11.4 Creating a tab-delimited output file in lieu of FASTA output.}{48}{paragraph*.103} +\contentsline {paragraph}{5.11.5 (-s)Forcing the extracted sequence to reflect the requested strand}{48}{paragraph*.104} +\contentsline {subsubsection}{5.12 maskFastaFromBed}{48}{subsubsection*.105} +\contentsline {paragraph}{5.12.1 Usage and option summary}{48}{paragraph*.106} +\contentsline {paragraph}{5.12.2 Default behavior}{49}{paragraph*.107} +\contentsline {paragraph}{5.12.3 Soft-masking the FASTA file.}{49}{paragraph*.108} +\contentsline {subsubsection}{5.13 shuffleBed}{49}{subsubsection*.109} +\contentsline {paragraph}{5.13.1 Usage and option summary}{49}{paragraph*.110} +\contentsline {paragraph}{5.13.2 Default behavior}{50}{paragraph*.111} +\contentsline {paragraph}{5.13.3 (-chrom)Requiring that features be shuffled on the same chromosome}{50}{paragraph*.112} +\contentsline {paragraph}{5.13.4 Excluding certain genome regions from shuffleBed}{51}{paragraph*.113} +\contentsline {paragraph}{5.13.5 Defining a ``seed'' for the random replacement.}{51}{paragraph*.114} +\contentsline {subsubsection}{5.14 slopBed}{52}{subsubsection*.115} +\contentsline {paragraph}{5.14.1 Usage and option summary}{52}{paragraph*.116} +\contentsline {paragraph}{5.14.2 Default behavior}{52}{paragraph*.117} +\contentsline {paragraph}{5.14.3 Resizing features according to strand}{53}{paragraph*.118} +\contentsline {subsubsection}{5.15 sortBed}{53}{subsubsection*.119} +\contentsline {paragraph}{5.15.1 Usage and option summary}{53}{paragraph*.120} +\contentsline {paragraph}{5.15.2 Default behavior}{54}{paragraph*.121} +\contentsline {paragraph}{5.15.3 Optional sorting behavior}{54}{paragraph*.122} +\contentsline {subsubsection}{5.16 linksBed}{54}{subsubsection*.123} +\contentsline {paragraph}{5.16.1 Usage and option summary}{54}{paragraph*.124} +\contentsline {paragraph}{5.16.2 Default behavior}{55}{paragraph*.125} +\contentsline {paragraph}{5.16.3 Creating HTML links to a local UCSC Browser installation}{55}{paragraph*.126} +\contentsline {subsubsection}{5.17 complementBed}{55}{subsubsection*.127} +\contentsline {paragraph}{5.17.1 Usage and option summary}{56}{paragraph*.128} +\contentsline {paragraph}{5.17.2 Default behavior}{56}{paragraph*.129} +\contentsline {subsubsection}{5.18 bedToBam}{56}{subsubsection*.130} +\contentsline {paragraph}{5.18.1 Usage and option summary}{56}{paragraph*.131} +\contentsline {paragraph}{5.18.2 Default behavior}{57}{paragraph*.132} +\contentsline {paragraph}{5.18.3 Creating ``spliced'' BAM entries from ``blocked'' BED features}{57}{paragraph*.133} +\contentsline {subsubsection}{5.19 overlap}{57}{subsubsection*.134} +\contentsline {paragraph}{5.19.1 Usage and option summary}{57}{paragraph*.135} +\contentsline {paragraph}{5.19.2 Default behavior}{58}{paragraph*.136} +\contentsline {subsubsection}{5.20 bedToIgv}{58}{subsubsection*.137} +\contentsline {paragraph}{5.20.1 Usage and option summary}{58}{paragraph*.138} +\contentsline {paragraph}{5.20.2 Default behavior}{59}{paragraph*.139} +\contentsline {paragraph}{5.20.3 Using a bedToIgv batch script within IGV.}{59}{paragraph*.140} +\contentsline {subsubsection}{5.21 bed12ToBed6}{59}{subsubsection*.141} +\contentsline {paragraph}{5.21.1 Usage and option summary}{59}{paragraph*.142} +\contentsline {paragraph}{5.21.2 Default behavior}{59}{paragraph*.143} +\contentsline {subsubsection}{5.22 groupBy}{60}{subsubsection*.144} +\contentsline {paragraph}{5.22.1 Usage and option summary}{60}{paragraph*.145} +\contentsline {paragraph}{5.22.2 Default behavior.}{61}{paragraph*.146} +\contentsline {paragraph}{5.22.3 Computing the min and max.}{62}{paragraph*.147} +\contentsline {paragraph}{5.22.4 Computing the mean and median.}{62}{paragraph*.148} +\contentsline {paragraph}{5.22.5 Computing the mode and ``antimode''.}{63}{paragraph*.149} +\contentsline {paragraph}{5.22.6 Computing the count of lines for a given group.}{63}{paragraph*.150} +\contentsline {paragraph}{5.22.7 Collapsing: listing all of the values in the opCol for a given group.}{63}{paragraph*.151} +\contentsline {paragraph}{5.22.8 Computing frequencies: freqasc and freqdesc.}{63}{paragraph*.152} +\contentsline {subsubsection}{5.23 unionBedGraphs}{64}{subsubsection*.153} +\contentsline {paragraph}{5.23.1 Usage and option summary}{64}{paragraph*.154} +\contentsline {paragraph}{5.23.2 Default behavior}{64}{paragraph*.155} +\contentsline {paragraph}{5.23.3 Add a header line to the output}{65}{paragraph*.156} +\contentsline {paragraph}{5.23.4 Add a header line with custom file names to the output}{65}{paragraph*.157} +\contentsline {paragraph}{5.23.5 Include regions that have zero coverage in all BEDGRAPH files.}{65}{paragraph*.158} +\contentsline {paragraph}{5.23.6 Use a custom value for missing values.}{65}{paragraph*.159} +\contentsline {paragraph}{5.23.7 Use BEDGRAPH files with non-numeric values.}{66}{paragraph*.160} +\contentsline {subsubsection}{5.24 annotateBed}{66}{subsubsection*.161} +\contentsline {paragraph}{5.24.1 Usage and option summary}{66}{paragraph*.162} +\contentsline {paragraph}{5.24.2 Default behavior - annotate one file with coverage from others.}{67}{paragraph*.163} +\contentsline {paragraph}{5.24.3 Report the count of hits from the annotation files}{67}{paragraph*.164} +\contentsline {paragraph}{5.24.4 Report both the count of hits and the fraction covered from the annotation files}{67}{paragraph*.165} +\contentsline {paragraph}{5.24.5 Restrict the reporting to overlaps on the same strand.}{68}{paragraph*.166} +\contentsline {section}{\numberline {2.6}Example usage}{68}{section.2.6} +\contentsline {subsection}{\numberline {2.6.1}6.1 intersectBed}{68}{subsection.2.6.1} +\contentsline {subsection}{\numberline {2.6.2}6.2 pairToBed}{69}{subsection.2.6.2} +\contentsline {subsection}{\numberline {2.6.3}6.3 pairToPair}{69}{subsection.2.6.3} +\contentsline {subsection}{\numberline {2.6.4}6.4 bamToBed}{69}{subsection.2.6.4} +\contentsline {subsection}{\numberline {2.6.5}6.5 windowBed}{70}{subsection.2.6.5} +\contentsline {subsection}{\numberline {2.6.6}6.6 closestBed}{70}{subsection.2.6.6} +\contentsline {subsection}{\numberline {2.6.7}6.7 subtractBed}{70}{subsection.2.6.7} +\contentsline {subsection}{\numberline {2.6.8}6.8 mergeBed}{70}{subsection.2.6.8} +\contentsline {subsection}{\numberline {2.6.9}6.9 coverageBed}{71}{subsection.2.6.9} +\contentsline {subsection}{\numberline {2.6.10}6.10 complementBed}{71}{subsection.2.6.10} +\contentsline {subsection}{\numberline {2.6.11}6.11 shuffleBed}{71}{subsection.2.6.11} +\contentsline {section}{\numberline {2.7}Advanced usage}{71}{section.2.7} +\contentsline {subsection}{\numberline {2.7.1}7.1 Mask all regions in a genome except for targeted capture regions.}{71}{subsection.2.7.1} +\contentsline {subsection}{\numberline {2.7.2}7.2 Screening for novel SNPs.}{72}{subsection.2.7.2} +\contentsline {subsection}{\numberline {2.7.3}7.4 Computing the coverage of BAM alignments on exons.}{72}{subsection.2.7.3} +\contentsline {subsection}{\numberline {2.7.4}7.5 Computing coverage separately for each strand.}{72}{subsection.2.7.4} +\contentsline {subsection}{\numberline {2.7.5}7.6 Find structural variant calls that are private to one sample.}{72}{subsection.2.7.5} +\contentsline {subsection}{\numberline {2.7.6}7.7 Exclude SV deletions that appear to be ALU insertions in the reference genome.}{73}{subsection.2.7.6} +\contentsline {chapter}{\numberline {3}Mailing list}{75}{chapter.3} diff --git a/docs/_build/latex/fncychap.sty b/docs/_build/latex/fncychap.sty new file mode 100644 index 0000000000000000000000000000000000000000..9a56c04ed4223ce77e463eea87755151f5d4864c --- /dev/null +++ b/docs/_build/latex/fncychap.sty @@ -0,0 +1,683 @@ +%%% Copyright Ulf A. Lindgren +%%% +%%% Note Premission is granted to modify this file under +%%% the condition that it is saved using another +%%% file and package name. +%%% +%%% Revision 1.1 (1997) +%%% +%%% Jan. 8th Modified package name base date option +%%% Jan. 22th Modified FmN and FmTi for error in book.cls +%%% \MakeUppercase{#}->{\MakeUppercase#} +%%% Apr. 6th Modified Lenny option to prevent undesired +%%% skip of line. +%%% Nov. 8th Fixed \@chapapp for AMS +%%% +%%% Revision 1.2 (1998) +%%% +%%% Feb. 11th Fixed appendix problem related to Bjarne +%%% Aug. 11th Fixed problem related to 11pt and 12pt +%%% suggested by Tomas Lundberg. THANKS! +%%% +%%% Revision 1.3 (2004) +%%% Sep. 20th problem with frontmatter, mainmatter and +%%% backmatter, pointed out by Lapo Mori +%%% +%%% Revision 1.31 (2004) +%%% Sep. 21th problem with the Rejne definition streched text +%%% caused ugly gaps in the vrule aligned with the title +%%% text. Kindly pointed out to me by Hendri Adriaens +%%% +%%% Revision 1.32 (2005) +%%% Jun. 23th compatibility problem with the KOMA class 'scrbook.cls' +%%% a remedy is a redefinition of '\@schapter' in +%%% line with that used in KOMA. The problem was pointed +%%% out to me by Mikkel Holm Olsen +%%% +%%% Revision 1.33 (2005) +%%% Aug. 9th misspelled ``TWELV'' corrected, the error was pointed +%%% out to me by George Pearson +%%% +%%% Revision 1.34 (2007) +%%% Added an alternative to Lenny provided by Peter +%%% Osborne (2005-11-28) +%%% Corrected front, main and back matter, based on input +%%% from Bas van Gils (2006-04-24) +%%% Jul. 30th Added Bjornstrup option provided by Jean-Marc +%%% Francois (2007-01-05). +%%% Reverted to \MakeUppercase{#} see rev 1.1, solved +%%% problem with MakeUppercase and MakeLowercase pointed +%%% out by Marco Feuerstein (2007-06-06) + + +%%% Last modified Jul. 2007 + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{fncychap} + [2007/07/30 v1.34 + LaTeX package (Revised chapters)] + +%%%% For conditional inclusion of color +\newif\ifusecolor +\usecolorfalse + + + +%%%% DEFINITION OF Chapapp variables +\newcommand{\CNV}{\huge\bfseries} +\newcommand{\ChNameVar}[1]{\renewcommand{\CNV}{#1}} + + +%%%% DEFINITION OF TheChapter variables +\newcommand{\CNoV}{\huge\bfseries} +\newcommand{\ChNumVar}[1]{\renewcommand{\CNoV}{#1}} + +\newif\ifUCN +\UCNfalse +\newif\ifLCN +\LCNfalse +\def\ChNameLowerCase{\LCNtrue\UCNfalse} +\def\ChNameUpperCase{\UCNtrue\LCNfalse} +\def\ChNameAsIs{\UCNfalse\LCNfalse} + +%%%%% Fix for AMSBook 971008 + +\@ifundefined{@chapapp}{\let\@chapapp\chaptername}{} + + +%%%%% Fix for Bjarne and appendix 980211 + +\newif\ifinapp +\inappfalse +\renewcommand\appendix{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \inapptrue% + \renewcommand\@chapapp{\appendixname}% + \renewcommand\thechapter{\@Alph\c@chapter}} + +%%%%% Fix for frontmatter, mainmatter, and backmatter 040920 + +\@ifundefined{@mainmatter}{\newif\if@mainmatter \@mainmattertrue}{} + +%%%%% + + + +\newcommand{\FmN}[1]{% +\ifUCN + {\MakeUppercase{#1}}\LCNfalse +\else + \ifLCN + {\MakeLowercase{#1}}\UCNfalse + \else #1 + \fi +\fi} + + +%%%% DEFINITION OF Title variables +\newcommand{\CTV}{\Huge\bfseries} +\newcommand{\ChTitleVar}[1]{\renewcommand{\CTV}{#1}} + +%%%% DEFINITION OF the basic rule width +\newlength{\RW} +\setlength{\RW}{1pt} +\newcommand{\ChRuleWidth}[1]{\setlength{\RW}{#1}} + +\newif\ifUCT +\UCTfalse +\newif\ifLCT +\LCTfalse +\def\ChTitleLowerCase{\LCTtrue\UCTfalse} +\def\ChTitleUpperCase{\UCTtrue\LCTfalse} +\def\ChTitleAsIs{\UCTfalse\LCTfalse} +\newcommand{\FmTi}[1]{% +\ifUCT + {\MakeUppercase{#1}}\LCTfalse +\else + \ifLCT + {\MakeLowercase{#1}}\UCTfalse + \else {#1} + \fi +\fi} + + + +\newlength{\mylen} +\newlength{\myhi} +\newlength{\px} +\newlength{\py} +\newlength{\pyy} +\newlength{\pxx} + + +\def\mghrulefill#1{\leavevmode\leaders\hrule\@height #1\hfill\kern\z@} + +\newcommand{\DOCH}{% + \CNV\FmN{\@chapapp}\space \CNoV\thechapter + \par\nobreak + \vskip 20\p@ + } +\newcommand{\DOTI}[1]{% + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@ + } +\newcommand{\DOTIS}[1]{% + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@ + } + +%%%%%% SONNY DEF + +\DeclareOption{Sonny}{% + \ChNameVar{\Large\sf} + \ChNumVar{\Huge} + \ChTitleVar{\Large\sf} + \ChRuleWidth{0.5pt} + \ChNameUpperCase + \renewcommand{\DOCH}{% + \raggedleft + \CNV\FmN{\@chapapp}\space \CNoV\thechapter + \par\nobreak + \vskip 40\p@} + \renewcommand{\DOTI}[1]{% + \CTV\raggedleft\mghrulefill{\RW}\par\nobreak + \vskip 5\p@ + \CTV\FmTi{#1}\par\nobreak + \mghrulefill{\RW}\par\nobreak + \vskip 40\p@} + \renewcommand{\DOTIS}[1]{% + \CTV\raggedleft\mghrulefill{\RW}\par\nobreak + \vskip 5\p@ + \CTV\FmTi{#1}\par\nobreak + \mghrulefill{\RW}\par\nobreak + \vskip 40\p@} +} + +%%%%%% LENNY DEF + +\DeclareOption{Lenny}{% + + \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont} + \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont} + \ChTitleVar{\Huge\bfseries\rm} + \ChRuleWidth{1pt} + \renewcommand{\DOCH}{% + \settowidth{\px}{\CNV\FmN{\@chapapp}} + \addtolength{\px}{2pt} + \settoheight{\py}{\CNV\FmN{\@chapapp}} + \addtolength{\py}{1pt} + + \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter} + \addtolength{\mylen}{1pt} + \settowidth{\pxx}{\CNoV\thechapter} + \addtolength{\pxx}{-1pt} + + \settoheight{\pyy}{\CNoV\thechapter} + \addtolength{\pyy}{-2pt} + \setlength{\myhi}{\pyy} + \addtolength{\myhi}{-1\py} + \par + \parbox[b]{\textwidth}{% + \rule[\py]{\RW}{\myhi}% + \hskip -\RW% + \rule[\pyy]{\px}{\RW}% + \hskip -\px% + \raggedright% + \CNV\FmN{\@chapapp}\space\CNoV\thechapter% + \hskip1pt% + \mghrulefill{\RW}% + \rule{\RW}{\pyy}\par\nobreak% + \vskip -\baselineskip% + \vskip -\pyy% + \hskip \mylen% + \mghrulefill{\RW}\par\nobreak% + \vskip \pyy}% + \vskip 20\p@} + + + \renewcommand{\DOTI}[1]{% + \raggedright + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@} + + \renewcommand{\DOTIS}[1]{% + \raggedright + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@} + } + +%%%%%% Peter Osbornes' version of LENNY DEF + +\DeclareOption{PetersLenny}{% + +% five new lengths +\newlength{\bl} % bottom left : orig \space +\setlength{\bl}{6pt} +\newcommand{\BL}[1]{\setlength{\bl}{#1}} +\newlength{\br} % bottom right : orig 1pt +\setlength{\br}{1pt} +\newcommand{\BR}[1]{\setlength{\br}{#1}} +\newlength{\tl} % top left : orig 2pt +\setlength{\tl}{2pt} +\newcommand{\TL}[1]{\setlength{\tl}{#1}} +\newlength{\trr} % top right :orig 1pt +\setlength{\trr}{1pt} +\newcommand{\TR}[1]{\setlength{\trr}{#1}} +\newlength{\blrule} % top right :orig 1pt +\setlength{\trr}{0pt} +\newcommand{\BLrule}[1]{\setlength{\blrule}{#1}} + + + \ChNameVar{\fontsize{14}{16}\usefont{OT1}{phv}{m}{n}\selectfont} + \ChNumVar{\fontsize{60}{62}\usefont{OT1}{ptm}{m}{n}\selectfont} + \ChTitleVar{\Huge\bfseries\rm} + \ChRuleWidth{1pt} +\renewcommand{\DOCH}{% + + +%%%%%%% tweaks for 1--9 and A--Z +\ifcase\c@chapter\relax% +\or\BL{-3pt}\TL{-4pt}\BR{0pt}\TR{-6pt}%1 +\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%2 +\or\BL{0pt}\TL{-4pt}\BR{2pt}\TR{-4pt}%3 +\or\BL{0pt}\TL{5pt}\BR{2pt}\TR{-4pt}%4 +\or\BL{0pt}\TL{3pt}\BR{2pt}\TR{-4pt}%5 +\or\BL{-1pt}\TL{0pt}\BR{2pt}\TR{-2pt}%6 +\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%7 +\or\BL{0pt}\TL{-3pt}\BR{2pt}\TR{-2pt}%8 +\or\BL{0pt}\TL{-3pt}\BR{-4pt}\TR{-2pt}%9 +\or\BL{-3pt}\TL{-3pt}\BR{2pt}\TR{-7pt}%10 +\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%11 +\or\BL{-6pt}\TL{-6pt}\BR{2pt}\TR{-7pt}%12 +\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%13 +\or\BL{-6pt}\TL{-6pt}\BR{0pt}\TR{-9pt}%14 +\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%15 +\or\BL{-3pt}\TL{-3pt}\BR{3pt}\TR{-6pt}%16 +\or\BL{-5pt}\TL{-3pt}\BR{-8pt}\TR{-6pt}%17 +\or\BL{-5pt}\TL{-5pt}\BR{0pt}\TR{-9pt}%18 +\or\BL{-3pt}\TL{-3pt}\BR{-6pt}\TR{-9pt}%19 +\or\BL{0pt}\TL{0pt}\BR{0pt}\TR{-5pt}%20 +\fi + +\ifinapp\ifcase\c@chapter\relax% +\or\BL{0pt}\TL{14pt}\BR{5pt}\TR{-19pt}%A +\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}%B +\or\BL{-3pt}\TL{-2pt}\BR{1pt}\TR{-6pt}\BLrule{0pt}%C +\or\BL{0pt}\TL{-5pt}\BR{-3pt}\TR{-8pt}\BLrule{0pt}%D +\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-3pt}%E +\or\BL{0pt}\TL{-5pt}\BR{-10pt}\TR{-1pt}%F +\or\BL{-3pt}\TL{0pt}\BR{0pt}\TR{-7pt}%G +\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%H +\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%I +\or\BL{2pt}\TL{0pt}\BR{-3pt}\TR{1pt}%J +\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%K +\or\BL{0pt}\TL{-5pt}\BR{2pt}\TR{-19pt}%L +\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}%M +\or\BL{0pt}\TL{-5pt}\BR{-2pt}\TR{-1pt}%N +\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%O +\or\BL{0pt}\TL{-5pt}\BR{-9pt}\TR{-3pt}%P +\or\BL{-3pt}\TL{-2pt}\BR{-3pt}\TR{-11pt}%Q +\or\BL{0pt}\TL{-5pt}\BR{4pt}\TR{-8pt}%R +\or\BL{-2pt}\TL{-2pt}\BR{-2pt}\TR{-7pt}%S +\or\BL{-3pt}\TL{0pt}\BR{-5pt}\TR{4pt}\BLrule{8pt}%T +\or\BL{-7pt}\TL{-11pt}\BR{-5pt}\TR{-7pt}\BLrule{0pt}%U +\or\BL{-14pt}\TL{-5pt}\BR{-14pt}\TR{-1pt}\BLrule{14pt}%V +\or\BL{-10pt}\TL{-9pt}\BR{-13pt}\TR{-3pt}\BLrule{7pt}%W +\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%X +\or\BL{-6pt}\TL{-4pt}\BR{-7pt}\TR{1pt}\BLrule{7pt}%Y +\or\BL{0pt}\TL{-5pt}\BR{3pt}\TR{-1pt}\BLrule{0pt}%Z +\fi\fi +%%%%%%% + \settowidth{\px}{\CNV\FmN{\@chapapp}} + \addtolength{\px}{\tl} %MOD change 2pt to \tl + \settoheight{\py}{\CNV\FmN{\@chapapp}} + \addtolength{\py}{1pt} + + \settowidth{\mylen}{\CNV\FmN{\@chapapp}\space\CNoV\thechapter} + \addtolength{\mylen}{\trr}% MOD change 1pt to \tr + \settowidth{\pxx}{\CNoV\thechapter} + \addtolength{\pxx}{-1pt} + + \settoheight{\pyy}{\CNoV\thechapter} + \addtolength{\pyy}{-2pt} + \setlength{\myhi}{\pyy} + \addtolength{\myhi}{-1\py} + \par + \parbox[b]{\textwidth}{% + \rule[\py]{\RW}{\myhi}% + \hskip -\RW% + \rule[\pyy]{\px}{\RW}% + \hskip -\px% + \raggedright% + \CNV\FmN{\@chapapp}\rule{\blrule}{\RW}\hskip\bl\CNoV\thechapter%MOD +% \CNV\FmN{\@chapapp}\space\CNoV\thechapter %ORIGINAL + \hskip\br% %MOD 1pt to \br + \mghrulefill{\RW}% + \rule{\RW}{\pyy}\par\nobreak% + \vskip -\baselineskip% + \vskip -\pyy% + \hskip \mylen% + \mghrulefill{\RW}\par\nobreak% + \vskip \pyy}% + \vskip 20\p@} + + + \renewcommand{\DOTI}[1]{% + \raggedright + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@} + + \renewcommand{\DOTIS}[1]{% + \raggedright + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@} + } + + +% + + +%%%%%% BJORNSTRUP DEF + +\DeclareOption{Bjornstrup}{% + \usecolortrue + % pzc (Zapf Chancelery) is nice. ppl (Palatino) is cool too. + \ChNumVar{\fontsize{76}{80}\usefont{OT1}{pzc}{m}{n}\selectfont} + \ChTitleVar{\raggedleft\Large\sffamily\bfseries} + + \setlength{\myhi}{10pt} % Space between grey box border and text + \setlength{\mylen}{\textwidth} + \addtolength{\mylen}{-2\myhi} + \renewcommand{\DOCH}{% + \settowidth{\py}{\CNoV\thechapter} + \addtolength{\py}{-10pt} % Amount of space by which the +% % number is shifted right + \fboxsep=0pt% + \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}% + \kern-\py\raise20pt% + \hbox{\color[gray]{.5}\CNoV\thechapter}\\% + } + + \renewcommand{\DOTI}[1]{% + \nointerlineskip\raggedright% + \fboxsep=\myhi% + \vskip-1ex% + \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak% + \vskip 40\p@% + } + + \renewcommand{\DOTIS}[1]{% + \fboxsep=0pt + \colorbox[gray]{.85}{\rule{0pt}{40pt}\parbox[b]{\textwidth}{\hfill}}\\% + \nointerlineskip\raggedright% + \fboxsep=\myhi% + \colorbox[gray]{.85}{\parbox[t]{\mylen}{\CTV\FmTi{#1}}}\par\nobreak% + \vskip 40\p@% + } +} + + +%%%%%%% GLENN DEF + + +\DeclareOption{Glenn}{% + \ChNameVar{\bfseries\Large\sf} + \ChNumVar{\Huge} + \ChTitleVar{\bfseries\Large\rm} + \ChRuleWidth{1pt} + \ChNameUpperCase + \ChTitleUpperCase + \renewcommand{\DOCH}{% + \settoheight{\myhi}{\CTV\FmTi{Test}} + \setlength{\py}{\baselineskip} + \addtolength{\py}{\RW} + \addtolength{\py}{\myhi} + \setlength{\pyy}{\py} + \addtolength{\pyy}{-1\RW} + + \raggedright + \CNV\FmN{\@chapapp}\space\CNoV\thechapter + \hskip 3pt\mghrulefill{\RW}\rule[-1\pyy]{2\RW}{\py}\par\nobreak} + + \renewcommand{\DOTI}[1]{% + \addtolength{\pyy}{-4pt} + \settoheight{\myhi}{\CTV\FmTi{#1}} + \addtolength{\myhi}{\py} + \addtolength{\myhi}{-1\RW} + \vskip -1\pyy + \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt + \raggedleft\CTV\FmTi{#1}\par\nobreak + \vskip 80\p@} + +\newlength{\backskip} + \renewcommand{\DOTIS}[1]{% +% \setlength{\py}{10pt} +% \setlength{\pyy}{\py} +% \addtolength{\pyy}{\RW} +% \setlength{\myhi}{\baselineskip} +% \addtolength{\myhi}{\pyy} +% \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak +% \addtolength{}{} +%\vskip -1\baselineskip +% \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 2pt +% \raggedleft\CTV\FmTi{#1}\par\nobreak +% \vskip 60\p@} +%% Fix suggested by Tomas Lundberg + \setlength{\py}{25pt} % eller vad man vill + \setlength{\pyy}{\py} + \setlength{\backskip}{\py} + \addtolength{\backskip}{2pt} + \addtolength{\pyy}{\RW} + \setlength{\myhi}{\baselineskip} + \addtolength{\myhi}{\pyy} + \mghrulefill{\RW}\rule[-1\py]{2\RW}{\pyy}\par\nobreak + \vskip -1\backskip + \rule{2\RW}{\myhi}\mghrulefill{\RW}\hskip 3pt % + \raggedleft\CTV\FmTi{#1}\par\nobreak + \vskip 40\p@} + } + +%%%%%%% CONNY DEF + +\DeclareOption{Conny}{% + \ChNameUpperCase + \ChTitleUpperCase + \ChNameVar{\centering\Huge\rm\bfseries} + \ChNumVar{\Huge} + \ChTitleVar{\centering\Huge\rm} + \ChRuleWidth{2pt} + + \renewcommand{\DOCH}{% + \mghrulefill{3\RW}\par\nobreak + \vskip -0.5\baselineskip + \mghrulefill{\RW}\par\nobreak + \CNV\FmN{\@chapapp}\space \CNoV\thechapter + \par\nobreak + \vskip -0.5\baselineskip + } + \renewcommand{\DOTI}[1]{% + \mghrulefill{\RW}\par\nobreak + \CTV\FmTi{#1}\par\nobreak + \vskip 60\p@ + } + \renewcommand{\DOTIS}[1]{% + \mghrulefill{\RW}\par\nobreak + \CTV\FmTi{#1}\par\nobreak + \vskip 60\p@ + } + } + +%%%%%%% REJNE DEF + +\DeclareOption{Rejne}{% + + \ChNameUpperCase + \ChTitleUpperCase + \ChNameVar{\centering\Large\rm} + \ChNumVar{\Huge} + \ChTitleVar{\centering\Huge\rm} + \ChRuleWidth{1pt} + \renewcommand{\DOCH}{% + \settoheight{\py}{\CNoV\thechapter} + \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31 + \addtolength{\py}{-1pt} + \CNV\FmN{\@chapapp}\par\nobreak + \vskip 20\p@ + \setlength{\myhi}{2\baselineskip} + \setlength{\px}{\myhi} + \addtolength{\px}{-1\RW} + \rule[-1\px]{\RW}{\myhi}\mghrulefill{\RW}\hskip + 10pt\raisebox{-0.5\py}{\CNoV\thechapter}\hskip 10pt\mghrulefill{\RW}\rule[-1\px]{\RW}{\myhi}\par\nobreak + \vskip -3\p@% Added -2pt vskip to correct for streched text v1.31 + } + \renewcommand{\DOTI}[1]{% + \setlength{\mylen}{\textwidth} + \parskip=0pt plus 1pt % Set parskip to default, just in case v1.31 + \addtolength{\mylen}{-2\RW} + {\vrule width\RW}\parbox{\mylen}{\CTV\FmTi{#1}}{\vrule width\RW}\par\nobreak% + \vskip -3pt\rule{\RW}{2\baselineskip}\mghrulefill{\RW}\rule{\RW}{2\baselineskip}% + \vskip 60\p@% Added -2pt in vskip to correct for streched text v1.31 + } + \renewcommand{\DOTIS}[1]{% + \setlength{\py}{\fboxrule} + \setlength{\fboxrule}{\RW} + \setlength{\mylen}{\textwidth} + \addtolength{\mylen}{-2\RW} + \fbox{\parbox{\mylen}{\vskip 2\baselineskip\CTV\FmTi{#1}\par\nobreak\vskip \baselineskip}} + \setlength{\fboxrule}{\py} + \vskip 60\p@ + } + } + + +%%%%%%% BJARNE DEF + +\DeclareOption{Bjarne}{% + \ChNameUpperCase + \ChTitleUpperCase + \ChNameVar{\raggedleft\normalsize\rm} + \ChNumVar{\raggedleft \bfseries\Large} + \ChTitleVar{\raggedleft \Large\rm} + \ChRuleWidth{1pt} + + +%% Note thechapter -> c@chapter fix appendix bug +%% Fixed misspelled 12 + + \newcounter{AlphaCnt} + \newcounter{AlphaDecCnt} + \newcommand{\AlphaNo}{% + \ifcase\number\theAlphaCnt + \ifnum\c@chapter=0 + ZERO\else{}\fi + \or ONE\or TWO\or THREE\or FOUR\or FIVE + \or SIX\or SEVEN\or EIGHT\or NINE\or TEN + \or ELEVEN\or TWELVE\or THIRTEEN\or FOURTEEN\or FIFTEEN + \or SIXTEEN\or SEVENTEEN\or EIGHTEEN\or NINETEEN\fi +} + + \newcommand{\AlphaDecNo}{% + \setcounter{AlphaDecCnt}{0} + \@whilenum\number\theAlphaCnt>0\do + {\addtocounter{AlphaCnt}{-10} + \addtocounter{AlphaDecCnt}{1}} + \ifnum\number\theAlphaCnt=0 + \else + \addtocounter{AlphaDecCnt}{-1} + \addtocounter{AlphaCnt}{10} + \fi + + + \ifcase\number\theAlphaDecCnt\or TEN\or TWENTY\or THIRTY\or + FORTY\or FIFTY\or SIXTY\or SEVENTY\or EIGHTY\or NINETY\fi + } + \newcommand{\TheAlphaChapter}{% + + \ifinapp + \thechapter + \else + \setcounter{AlphaCnt}{\c@chapter} + \ifnum\c@chapter<20 + \AlphaNo + \else + \AlphaDecNo\AlphaNo + \fi + \fi + } + \renewcommand{\DOCH}{% + \mghrulefill{\RW}\par\nobreak + \CNV\FmN{\@chapapp}\par\nobreak + \CNoV\TheAlphaChapter\par\nobreak + \vskip -1\baselineskip\vskip 5pt\mghrulefill{\RW}\par\nobreak + \vskip 20\p@ + } + \renewcommand{\DOTI}[1]{% + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@ + } + \renewcommand{\DOTIS}[1]{% + \CTV\FmTi{#1}\par\nobreak + \vskip 40\p@ + } +} + +\DeclareOption*{% + \PackageWarning{fancychapter}{unknown style option} + } + +\ProcessOptions* \relax + +\ifusecolor + \RequirePackage{color} +\fi +\def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 040920 + \DOCH + \fi + \fi + \interlinepenalty\@M + \if@mainmatter%%%%% Fix for frontmatter, mainmatter, and backmatter 060424 + \DOTI{#1}% + \else% + \DOTIS{#1}% + \fi + }} + + +%%% Begin: To avoid problem with scrbook.cls (fncychap version 1.32) + +%%OUT: +%\def\@schapter#1{\if@twocolumn +% \@topnewpage[\@makeschapterhead{#1}]% +% \else +% \@makeschapterhead{#1}% +% \@afterheading +% \fi} + +%%IN: +\def\@schapter#1{% +\if@twocolumn% + \@makeschapterhead{#1}% +\else% + \@makeschapterhead{#1}% + \@afterheading% +\fi} + +%%% End: To avoid problem with scrbook.cls (fncychap version 1.32) + +\def\@makeschapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright + \normalfont + \interlinepenalty\@M + \DOTIS{#1} + \vskip 40\p@ + }} + +\endinput + + diff --git a/docs/_build/latex/python.ist b/docs/_build/latex/python.ist new file mode 100644 index 0000000000000000000000000000000000000000..9ffa0f959f9e60e18c3a7f5fcd518a34964bf68c --- /dev/null +++ b/docs/_build/latex/python.ist @@ -0,0 +1,11 @@ +line_max 100 +headings_flag 1 +heading_prefix " \\bigletter " + +preamble "\\begin{theindex} +\\def\\bigletter#1{{\\Large\\sffamily#1}\\nopagebreak\\vspace{1mm}} + +" + +symhead_positive "{Symbols}" +numhead_positive "{Numbers}" diff --git a/docs/_build/latex/sphinx.sty b/docs/_build/latex/sphinx.sty new file mode 100644 index 0000000000000000000000000000000000000000..84c1ca1e4012c5a617b23d65ff0aee610707bc8a --- /dev/null +++ b/docs/_build/latex/sphinx.sty @@ -0,0 +1,481 @@ +% +% sphinx.sty +% +% Adapted from the old python.sty, mostly written by Fred Drake, +% by Georg Brandl. +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinx}[2010/01/15 LaTeX package (Sphinx markup)] + +\RequirePackage{textcomp} +\RequirePackage{fancyhdr} +\RequirePackage{fancybox} +\RequirePackage{titlesec} +\RequirePackage{tabulary} +\RequirePackage{amsmath} % for \text +\RequirePackage{makeidx} +\RequirePackage{framed} +\RequirePackage{ifthen} +\RequirePackage{color} +% For highlighted code. +\RequirePackage{fancyvrb} +% For table captions. +\RequirePackage{threeparttable} +% Handle footnotes in tables. +\RequirePackage{footnote} +\makesavenoteenv{tabulary} +% For floating figures in the text. +\RequirePackage{wrapfig} +% Separate paragraphs by space by default. +\RequirePackage{parskip} + +% Redefine these colors to your liking in the preamble. +\definecolor{TitleColor}{rgb}{0.126,0.263,0.361} +\definecolor{InnerLinkColor}{rgb}{0.208,0.374,0.486} +\definecolor{OuterLinkColor}{rgb}{0.216,0.439,0.388} +% Redefine these colors to something not white if you want to have colored +% background and border for code examples. +\definecolor{VerbatimColor}{rgb}{1,1,1} +\definecolor{VerbatimBorderColor}{rgb}{1,1,1} + +% Uncomment these two lines to ignore the paper size and make the page +% size more like a typical published manual. +%\renewcommand{\paperheight}{9in} +%\renewcommand{\paperwidth}{8.5in} % typical squarish manual +%\renewcommand{\paperwidth}{7in} % O'Reilly ``Programmming Python'' + +% For graphicx, check if we are compiling under latex or pdflatex. +\ifx\pdftexversion\undefined + \usepackage{graphicx} +\else + \usepackage[pdftex]{graphicx} +\fi + +% for PDF output, use colors and maximal compression +\newif\ifsphinxpdfoutput\sphinxpdfoutputfalse +\ifx\pdfoutput\undefined\else\ifcase\pdfoutput + \let\py@NormalColor\relax + \let\py@TitleColor\relax +\else + \sphinxpdfoutputtrue + \input{pdfcolor} + \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}} + \def\py@TitleColor{\color{TitleColor}} + \pdfcompresslevel=9 +\fi\fi + +% XeLaTeX can do colors, too +\ifx\XeTeXrevision\undefined\else + \def\py@NormalColor{\color[rgb]{0.0,0.0,0.0}} + \def\py@TitleColor{\color{TitleColor}} +\fi + +% Increase printable page size (copied from fullpage.sty) +\topmargin 0pt +\advance \topmargin by -\headheight +\advance \topmargin by -\headsep + +% attempt to work a little better for A4 users +\textheight \paperheight +\advance\textheight by -2in + +\oddsidemargin 0pt +\evensidemargin 0pt +%\evensidemargin -.25in % for ``manual size'' documents +\marginparwidth 0.5in + +\textwidth \paperwidth +\advance\textwidth by -2in + + +% Style parameters and macros used by most documents here +\raggedbottom +\sloppy +\hbadness = 5000 % don't print trivial gripes + +\pagestyle{empty} % start this way; change for +\pagenumbering{roman} % ToC & chapters + +% Use this to set the font family for headers and other decor: +\newcommand{\py@HeaderFamily}{\sffamily\bfseries} + +% Redefine the 'normal' header/footer style when using "fancyhdr" package: +\@ifundefined{fancyhf}{}{ + % Use \pagestyle{normal} as the primary pagestyle for text. + \fancypagestyle{normal}{ + \fancyhf{} + \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} + \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} + \fancyhead[LE,RO]{{\py@HeaderFamily \@title, \py@release}} + \renewcommand{\headrulewidth}{0.4pt} + \renewcommand{\footrulewidth}{0.4pt} + } + % Update the plain style so we get the page number & footer line, + % but not a chapter or section title. This is to keep the first + % page of a chapter and the blank page between chapters `clean.' + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[LE,RO]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0.4pt} + } +} + +% Some custom font markup commands. +% +\newcommand{\strong}[1]{{\bf #1}} +\newcommand{\code}[1]{\texttt{#1}} +\newcommand{\bfcode}[1]{\code{\bfseries#1}} +\newcommand{\email}[1]{\textsf{#1}} + +% Redefine the Verbatim environment to allow border and background colors. +% The original environment is still used for verbatims within tables. +\let\OriginalVerbatim=\Verbatim +\let\endOriginalVerbatim=\endVerbatim + +% Play with vspace to be able to keep the indentation. +\newlength\distancetoright +\def\mycolorbox#1{% + \setlength\distancetoright{\linewidth}% + \advance\distancetoright -\@totalleftmargin % + \fcolorbox{VerbatimBorderColor}{VerbatimColor}{% + \begin{minipage}{\distancetoright}% + #1 + \end{minipage}% + }% +} +\def\FrameCommand{\mycolorbox} + +\renewcommand{\Verbatim}[1][1]{% + % list starts new par, but we don't want it to be set apart vertically + \bgroup\parskip=0pt% + \smallskip% + % The list environement is needed to control perfectly the vertical + % space. + \list{}{% + \setlength\parskip{0pt}% + \setlength\itemsep{0ex}% + \setlength\topsep{0ex}% + \setlength\partopsep{0pt}% + \setlength\leftmargin{0pt}% + }% + \item\MakeFramed {\FrameRestore}% + \small% + \OriginalVerbatim[#1]% +} +\renewcommand{\endVerbatim}{% + \endOriginalVerbatim% + \endMakeFramed% + \endlist% + % close group to restore \parskip + \egroup% +} + + +% \moduleauthor{name}{email} +\newcommand{\moduleauthor}[2]{} + +% \sectionauthor{name}{email} +\newcommand{\sectionauthor}[2]{} + +% Augment the sectioning commands used to get our own font family in place, +% and reset some internal data items: +\titleformat{\section}{\Large\py@HeaderFamily}% + {\py@TitleColor\thesection}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subsection}{\large\py@HeaderFamily}% + {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\subsubsection}{\py@HeaderFamily}% + {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor} +\titleformat{\paragraph}{\small\py@HeaderFamily}% + {\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor} + +% {fulllineitems} is the main environment for object descriptions. +% +\newcommand{\py@itemnewline}[1]{% + \@tempdima\linewidth% + \advance\@tempdima \leftmargin\makebox[\@tempdima][l]{#1}% +} + +\newenvironment{fulllineitems}{ + \begin{list}{}{\labelwidth \leftmargin \labelsep 0pt + \rightmargin 0pt \topsep -\parskip \partopsep \parskip + \itemsep -\parsep + \let\makelabel=\py@itemnewline} +}{\end{list}} + +% \optional is used for ``[, arg]``, i.e. desc_optional nodes. +\newcommand{\optional}[1]{% + {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} + +\newlength{\py@argswidth} +\newcommand{\py@sigparams}[2]{% + \parbox[t]{\py@argswidth}{#1\code{)}#2}} +\newcommand{\pysigline}[1]{\item[#1]\nopagebreak} +\newcommand{\pysiglinewithargsret}[3]{% + \settowidth{\py@argswidth}{#1\code{(}}% + \addtolength{\py@argswidth}{-2\py@argswidth}% + \addtolength{\py@argswidth}{\linewidth}% + \item[#1\code{(}\py@sigparams{#2}{#3}]} + +% Production lists +% +\newenvironment{productionlist}{ +% \def\optional##1{{\Large[}##1{\Large]}} + \def\production##1##2{\\\code{##1}&::=&\code{##2}} + \def\productioncont##1{\\& &\code{##1}} + \parindent=2em + \indent + \begin{tabular}{lcl} +}{% + \end{tabular} +} + +% Notices / Admonitions +% +\newlength{\py@noticelength} + +\newcommand{\py@heavybox}{ + \setlength{\fboxrule}{1pt} + \setlength{\fboxsep}{6pt} + \setlength{\py@noticelength}{\linewidth} + \addtolength{\py@noticelength}{-2\fboxsep} + \addtolength{\py@noticelength}{-2\fboxrule} + %\setlength{\shadowsize}{3pt} + \Sbox + \minipage{\py@noticelength} +} +\newcommand{\py@endheavybox}{ + \endminipage + \endSbox + \fbox{\TheSbox} +} + +\newcommand{\py@lightbox}{{% + \setlength\parskip{0pt}\par + \rule[0ex]{\linewidth}{0.5pt}% + \par\vspace{-0.5ex}% + }} +\newcommand{\py@endlightbox}{{% + \setlength{\parskip}{0pt}% + \par\rule[0.5ex]{\linewidth}{0.5pt}% + \par\vspace{-0.5ex}% + }} + +% Some are quite plain: +\newcommand{\py@noticestart@note}{\py@lightbox} +\newcommand{\py@noticeend@note}{\py@endlightbox} +\newcommand{\py@noticestart@hint}{\py@lightbox} +\newcommand{\py@noticeend@hint}{\py@endlightbox} +\newcommand{\py@noticestart@important}{\py@lightbox} +\newcommand{\py@noticeend@important}{\py@endlightbox} +\newcommand{\py@noticestart@tip}{\py@lightbox} +\newcommand{\py@noticeend@tip}{\py@endlightbox} + +% Others gets more visible distinction: +\newcommand{\py@noticestart@warning}{\py@heavybox} +\newcommand{\py@noticeend@warning}{\py@endheavybox} +\newcommand{\py@noticestart@caution}{\py@heavybox} +\newcommand{\py@noticeend@caution}{\py@endheavybox} +\newcommand{\py@noticestart@attention}{\py@heavybox} +\newcommand{\py@noticeend@attention}{\py@endheavybox} +\newcommand{\py@noticestart@danger}{\py@heavybox} +\newcommand{\py@noticeend@danger}{\py@endheavybox} +\newcommand{\py@noticestart@error}{\py@heavybox} +\newcommand{\py@noticeend@error}{\py@endheavybox} + +\newenvironment{notice}[2]{ + \def\py@noticetype{#1} + \csname py@noticestart@#1\endcsname + \strong{#2} +}{\csname py@noticeend@\py@noticetype\endcsname} + +% Allow the release number to be specified independently of the +% \date{}. This allows the date to reflect the document's date and +% release to specify the release that is documented. +% +\newcommand{\py@release}{} +\newcommand{\version}{} +\newcommand{\shortversion}{} +\newcommand{\releaseinfo}{} +\newcommand{\releasename}{Release} +\newcommand{\release}[1]{% + \renewcommand{\py@release}{\releasename\space\version}% + \renewcommand{\version}{#1}} +\newcommand{\setshortversion}[1]{% + \renewcommand{\shortversion}{#1}} +\newcommand{\setreleaseinfo}[1]{% + \renewcommand{\releaseinfo}{#1}} + +% Allow specification of the author's address separately from the +% author's name. This can be used to format them differently, which +% is a good thing. +% +\newcommand{\py@authoraddress}{} +\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}} + +% This sets up the fancy chapter headings that make the documents look +% at least a little better than the usual LaTeX output. +% +\@ifundefined{ChTitleVar}{}{ + \ChNameVar{\raggedleft\normalsize\py@HeaderFamily} + \ChNumVar{\raggedleft \bfseries\Large\py@HeaderFamily} + \ChTitleVar{\raggedleft \rm\Huge\py@HeaderFamily} + % This creates chapter heads without the leading \vspace*{}: + \def\@makechapterhead#1{% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \DOCH + \fi + \interlinepenalty\@M + \DOTI{#1} + } + } +} + +% Redefine description environment so that it is usable inside fulllineitems. +% +\renewcommand{\description}{% + \list{}{\labelwidth\z@% + \itemindent-\leftmargin% + \labelsep5pt% + \let\makelabel=\descriptionlabel}} + +% Definition lists; requested by AMK for HOWTO documents. Probably useful +% elsewhere as well, so keep in in the general style support. +% +\newenvironment{definitions}{% + \begin{description}% + \def\term##1{\item[##1]\mbox{}\\*[0mm]} +}{% + \end{description}% +} + +% Tell TeX about pathological hyphenation cases: +\hyphenation{Base-HTTP-Re-quest-Hand-ler} + + +% The following is stuff copied from docutils' latex writer. +% +\newcommand{\optionlistlabel}[1]{\bf #1 \hfill} +\newenvironment{optionlist}[1] +{\begin{list}{} + {\setlength{\labelwidth}{#1} + \setlength{\rightmargin}{1cm} + \setlength{\leftmargin}{\rightmargin} + \addtolength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \renewcommand{\makelabel}{\optionlistlabel}} +}{\end{list}} + +\newlength{\lineblockindentation} +\setlength{\lineblockindentation}{2.5em} +\newenvironment{lineblock}[1] +{\begin{list}{} + {\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \topsep0pt\itemsep0.15\baselineskip\parsep0pt + \leftmargin#1} + \raggedright} +{\end{list}} + +% Redefine includgraphics for avoiding images larger than the screen size +% If the size is not specified. +\let\py@Oldincludegraphics\includegraphics + +\newbox\image@box% +\newdimen\image@width% +\renewcommand\includegraphics[2][\@empty]{% + \ifx#1\@empty% + \setbox\image@box=\hbox{\py@Oldincludegraphics{#2}}% + \image@width\wd\image@box% + \ifdim \image@width>\linewidth% + \setbox\image@box=\hbox{\py@Oldincludegraphics[width=\linewidth]{#2}}% + \box\image@box% + \else% + \py@Oldincludegraphics{#2}% + \fi% + \else% + \py@Oldincludegraphics[#1]{#2}% + \fi% +} + + +% Fix the index and bibliography environments to add an entry to the Table of +% Contents; this is much nicer than just having to jump to the end of the book +% and flip around, especially with multiple indexes. +% +\let\py@OldTheindex=\theindex +\renewcommand{\theindex}{ + \cleardoublepage + \phantomsection + \py@OldTheindex + \addcontentsline{toc}{chapter}{\indexname} +} + +\let\py@OldThebibliography=\thebibliography +\renewcommand{\thebibliography}[1]{ + \cleardoublepage + \phantomsection + \py@OldThebibliography{1} + \addcontentsline{toc}{chapter}{\bibname} +} + +% Include hyperref last. +\RequirePackage[colorlinks,breaklinks, + linkcolor=InnerLinkColor,filecolor=OuterLinkColor, + menucolor=OuterLinkColor,urlcolor=OuterLinkColor, + citecolor=InnerLinkColor]{hyperref} +% Fix anchor placement for figures with captions. +% (Note: we don't use a package option here; instead, we give an explicit +% \capstart for figures that actually have a caption.) +\RequirePackage{hypcap} + +% From docutils.writers.latex2e +\providecommand{\DUspan}[2]{% + {% group ("span") to limit the scope of styling commands + \@for\node@class@name:=#1\do{% + \ifcsname docutilsrole\node@class@name\endcsname% + \csname docutilsrole\node@class@name\endcsname% + \fi% + }% + {#2}% node content + }% close "span" +} + +\providecommand*{\DUprovidelength}[2]{ + \ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{} +} + +\DUprovidelength{\DUlineblockindent}{2.5em} +\ifthenelse{\isundefined{\DUlineblock}}{ + \newenvironment{DUlineblock}[1]{% + \list{}{\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \setlength{\topsep}{0pt} + \setlength{\itemsep}{0.15\baselineskip} + \setlength{\parsep}{0pt} + \setlength{\leftmargin}{#1}} + \raggedright + } + {\endlist} +}{} + + +% From footmisc.sty: allows footnotes in titles +\let\FN@sf@@footnote\footnote +\def\footnote{\ifx\protect\@typeset@protect + \expandafter\FN@sf@@footnote + \else + \expandafter\FN@sf@gobble@opt + \fi +} +\edef\FN@sf@gobble@opt{\noexpand\protect + \expandafter\noexpand\csname FN@sf@gobble@opt \endcsname} +\expandafter\def\csname FN@sf@gobble@opt \endcsname{% + \@ifnextchar[%] + \FN@sf@gobble@twobracket + \@gobble +} +\def\FN@sf@gobble@twobracket[#1]#2{} diff --git a/docs/_build/latex/sphinxhowto.cls b/docs/_build/latex/sphinxhowto.cls new file mode 100644 index 0000000000000000000000000000000000000000..1ebdd4346dc50c2cd0f725c19b925a756cde1a35 --- /dev/null +++ b/docs/_build/latex/sphinxhowto.cls @@ -0,0 +1,81 @@ +% +% sphinxhowto.cls for Sphinx (http://sphinx.pocoo.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxhowto}[2009/06/02 Document class (Sphinx HOWTO)] + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Default to two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} + +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\renewcommand{\maketitle}{ + \rule{\textwidth}{1pt} + \ifsphinxpdfoutput + \begingroup + % These \defs are required to deal with multi-line authors; it + % changes \\ to ', ' (comma-space), making it pass muster for + % generating document info in the PDF file. + \def\\{, } + \def\and{and } + \pdfinfo{ + /Author (\@author) + /Title (\@title) + } + \endgroup + \fi + \begin{flushright} + \sphinxlogo% + {\rm\Huge\py@HeaderFamily \@title} \par + {\em\large\py@HeaderFamily \py@release\releaseinfo} \par + \vspace{25pt} + {\Large\py@HeaderFamily + \begin{tabular}[t]{c} + \@author + \end{tabular}} \par + \vspace{25pt} + \@date \par + \py@authoraddress \par + \end{flushright} + \@thanks + \setcounter{footnote}{0} + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} +} + +\let\py@OldTableofcontents=\tableofcontents +\renewcommand{\tableofcontents}{ + \begingroup + \parskip = 0mm + \py@OldTableofcontents + \endgroup + \rule{\textwidth}{1pt} + \vspace{12pt} +} + +\@ifundefined{fancyhf}{ + \pagestyle{plain}}{ + \pagestyle{normal}} % start this way; change for +\pagenumbering{arabic} % ToC & chapters + +\thispagestyle{empty} diff --git a/docs/_build/latex/sphinxmanual.cls b/docs/_build/latex/sphinxmanual.cls new file mode 100644 index 0000000000000000000000000000000000000000..57517798000e94331100aff03ac9919c60f81461 --- /dev/null +++ b/docs/_build/latex/sphinxmanual.cls @@ -0,0 +1,122 @@ +% +% sphinxmanual.cls for Sphinx (http://sphinx.pocoo.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxmanual}[2009/06/02 Document class (Sphinx manual)] + +% chapters starting at odd pages (overridden by 'openany' document option) +\PassOptionsToClass{openright}{\sphinxdocclass} + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Defaults two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{1} + +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\renewcommand{\maketitle}{% + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \rule{\textwidth}{1pt}% + \ifsphinxpdfoutput + \begingroup + % These \defs are required to deal with multi-line authors; it + % changes \\ to ', ' (comma-space), making it pass muster for + % generating document info in the PDF file. + \def\\{, } + \def\and{and } + \pdfinfo{ + /Author (\@author) + /Title (\@title) + } + \endgroup + \fi + \begin{flushright}% + \sphinxlogo% + {\rm\Huge\py@HeaderFamily \@title \par}% + {\em\LARGE\py@HeaderFamily \py@release\releaseinfo \par} + \vfill + {\LARGE\py@HeaderFamily + \begin{tabular}[t]{c} + \@author + \end{tabular} + \par} + \vfill\vfill + {\large + \@date \par + \vfill + \py@authoraddress \par + }% + \end{flushright}%\par + \@thanks + \end{titlepage}% + \cleardoublepage% + \setcounter{footnote}{0}% + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} +} + + +% Catch the end of the {abstract} environment, but here make sure the abstract +% is followed by a blank page if the 'openright' option is used. +% +\let\py@OldEndAbstract=\endabstract +\renewcommand{\endabstract}{ + \if@openright + \ifodd\value{page} + \typeout{Adding blank page after the abstract.} + \vfil\pagebreak + \fi + \fi + \py@OldEndAbstract +} + +% This wraps the \tableofcontents macro with all the magic to get the spacing +% right and have the right number of pages if the 'openright' option has been +% used. This eliminates a fair amount of crud in the individual document files. +% +\let\py@OldTableofcontents=\tableofcontents +\renewcommand{\tableofcontents}{% + \setcounter{page}{1}% + \pagebreak% + \pagestyle{plain}% + {% + \parskip = 0mm% + \py@OldTableofcontents% + \if@openright% + \ifodd\value{page}% + \typeout{Adding blank page after the table of contents.}% + \pagebreak\hspace{0pt}% + \fi% + \fi% + \cleardoublepage% + }% + \pagenumbering{arabic}% + \@ifundefined{fancyhf}{}{\pagestyle{normal}}% +} + +% This is needed to get the width of the section # area wide enough in the +% library reference. Doing it here keeps it the same for all the manuals. +% +\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}} +\renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}} diff --git a/docs/_build/latex/tabulary.sty b/docs/_build/latex/tabulary.sty new file mode 100644 index 0000000000000000000000000000000000000000..ba83c0afb6afbec843f6bc2eb98a057761194036 --- /dev/null +++ b/docs/_build/latex/tabulary.sty @@ -0,0 +1,452 @@ +%% +%% This is file `tabulary.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tabulary.dtx (with options: `package') +%% DRAFT VERSION +%% +%% File `tabulary.dtx'. +%% Copyright (C) 1995 1996 2003 David Carlisle +%% This file may be distributed under the terms of the LPPL. +%% See 00readme.txt for details. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tabulary} + [2007/10/02 v0.9 tabulary package (DPC)] +\RequirePackage{array} +\catcode`\Z=14 +\DeclareOption{debugshow}{\catcode`\Z=9\relax} +\ProcessOptions +\def\arraybackslash{\let\\=\@arraycr} +\def\@finalstrut#1{% + \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1} +\newcount\TY@count +\def\tabulary{% + \let\TY@final\tabular + \let\endTY@final\endtabular + \TY@tabular} +\def\TY@tabular#1{% + \edef\TY@{\@currenvir}% + {\ifnum0=`}\fi + \@ovxx\TY@linewidth + \@ovyy\TY@tablewidth + \count@\z@ + \@tempswatrue + \@whilesw\if@tempswa\fi{% + \advance\count@\@ne + \expandafter\ifx\csname TY@F\the\count@\endcsname\relax + \@tempswafalse + \else + \expandafter\let\csname TY@SF\the\count@\expandafter\endcsname + \csname TY@F\the\count@\endcsname + \global\expandafter\let\csname TY@F\the\count@\endcsname\relax + \expandafter\let\csname TY@S\the\count@\expandafter\endcsname + \csname TY@\the\count@\endcsname + \fi}% + \global\TY@count\@ne + \TY@width\xdef{0pt}% + \global\TY@tablewidth\z@ + \global\TY@linewidth#1\relax +Z\message{^^J^^JTable^^J% +Z Target Width: \the\TY@linewidth^^J% +Z \string\tabcolsep: \the\tabcolsep\space +Z \string\arrayrulewidth: \the\arrayrulewidth\space +Z \string\doublerulesep: \the\doublerulesep^^J% +Z \string\tymin: \the\tymin\space +Z \string\tymax: \the\tymax^^J}% + \let\@classz\TY@classz + \let\verb\TX@verb + \toks@{}\TY@get@body} +\let\TY@@mkpream\@mkpream +\def\TY@mkpream{% + \def\@addamp{% + \if@firstamp \@firstampfalse \else + \global\advance\TY@count\@ne + \edef\@preamble{\@preamble &}\fi + \TY@width\xdef{0pt}}% + \def\@acol{% + \TY@subwidth\col@sep + \@addtopreamble{\hskip\col@sep}}% + \let\@arrayrule\TY@arrayrule + \let\@classvi\TY@classvi + \def\@classv{\save@decl + \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@ + \sbox\z@{\d@llarbegin\@nextchar\d@llarend}% + \TY@subwidth{\wd\z@}% + \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}% + \prepnext@tok}% + \global\let\@mkpream\TY@@mkpream + \TY@@mkpream} +\def\TY@arrayrule{% + \TY@subwidth\arrayrulewidth + \@addtopreamble \vline} +\def\TY@classvi{\ifcase \@lastchclass + \@acol \or + \TY@subwidth\doublerulesep + \@addtopreamble{\hskip \doublerulesep}\or + \@acol \or + \@classvii + \fi} +\def\TY@tab{% + \setbox\z@\hbox\bgroup + \let\[$\let\]$% + \let\equation$\let\endequation$% + \col@sep\tabcolsep + \let\d@llarbegin\begingroup\let\d@llarend\endgroup + \let\@mkpream\TY@mkpream + \def\multicolumn##1##2##3{\multispan##1\relax}% + \CT@start\TY@tabarray} +\def\TY@tabarray{\@ifnextchar[{\TY@array}{\@array[t]}} +\def\TY@array[#1]{\@array[t]} +\def\TY@width#1{% + \expandafter#1\csname TY@\the\TY@count\endcsname} +\def\TY@subwidth#1{% + \TY@width\dimen@ + \advance\dimen@-#1\relax + \TY@width\xdef{\the\dimen@}% + \global\advance\TY@linewidth-#1\relax} +\def\endtabulary{% + \gdef\@halignto{}% + \let\TY@footnote\footnote% + \def\footnote{}% prevent footnotes from doing anything + \expandafter\TY@tab\the\toks@ + \crcr\omit + {\xdef\TY@save@row{}% + \loop + \advance\TY@count\m@ne + \ifnum\TY@count>\z@ + \xdef\TY@save@row{\TY@save@row&\omit}% + \repeat}\TY@save@row + \endarray\global\setbox1=\lastbox\setbox0=\vbox{\unvbox1 + \unskip\global\setbox1=\lastbox}\egroup + \dimen@\TY@linewidth + \divide\dimen@\TY@count + \ifdim\dimen@<\tymin + \TY@warn{tymin too large (\the\tymin), resetting to \the\dimen@}% + \tymin\dimen@ + \fi + \setbox\tw@=\hbox{\unhbox\@ne + \loop +\@tempdima=\lastskip +\ifdim\@tempdima>\z@ +Z \message{ecs=\the\@tempdima^^J}% + \global\advance\TY@linewidth-\@tempdima +\fi + \unskip + \setbox\tw@=\lastbox + \ifhbox\tw@ +Z \message{Col \the\TY@count: Initial=\the\wd\tw@\space}% + \ifdim\wd\tw@>\tymax + \wd\tw@\tymax +Z \message{> max\space}% +Z \else +Z \message{ \@spaces\space}% + \fi + \TY@width\dimen@ +Z \message{\the\dimen@\space}% + \advance\dimen@\wd\tw@ +Z \message{Final=\the\dimen@\space}% + \TY@width\xdef{\the\dimen@}% + \ifdim\dimen@<\tymin +Z \message{< tymin}% + \global\advance\TY@linewidth-\dimen@ + \expandafter\xdef\csname TY@F\the\TY@count\endcsname + {\the\dimen@}% + \else + \expandafter\ifx\csname TY@F\the\TY@count\endcsname\z@ +Z \message{***}% + \global\advance\TY@linewidth-\dimen@ + \expandafter\xdef\csname TY@F\the\TY@count\endcsname + {\the\dimen@}% + \else +Z \message{> tymin}% + \global\advance\TY@tablewidth\dimen@ + \global\expandafter\let\csname TY@F\the\TY@count\endcsname + \maxdimen + \fi\fi + \advance\TY@count\m@ne + \repeat}% + \TY@checkmin + \TY@checkmin + \TY@checkmin + \TY@checkmin + \TY@count\z@ + \let\TY@box\TY@box@v + \let\footnote\TY@footnote % restore footnotes + {\expandafter\TY@final\the\toks@\endTY@final}% + \count@\z@ + \@tempswatrue + \@whilesw\if@tempswa\fi{% + \advance\count@\@ne + \expandafter\ifx\csname TY@SF\the\count@\endcsname\relax + \@tempswafalse + \else + \global\expandafter\let\csname TY@F\the\count@\expandafter\endcsname + \csname TY@SF\the\count@\endcsname + \global\expandafter\let\csname TY@\the\count@\expandafter\endcsname + \csname TY@S\the\count@\endcsname + \fi}% + \TY@linewidth\@ovxx + \TY@tablewidth\@ovyy + \ifnum0=`{\fi}} +\def\TY@checkmin{% + \let\TY@checkmin\relax +\ifdim\TY@tablewidth>\z@ + \Gscale@div\TY@ratio\TY@linewidth\TY@tablewidth + \ifdim\TY@tablewidth <\linewidth + \def\TY@ratio{1}% + \fi +\else + \TY@warn{No suitable columns!}% + \def\TY@ratio{1}% +\fi +\count@\z@ +Z \message{^^JLine Width: \the\TY@linewidth, +Z Natural Width: \the\TY@tablewidth, +Z Ratio: \TY@ratio^^J}% +\@tempdima\z@ +\loop +\ifnum\count@<\TY@count +\advance\count@\@ne + \ifdim\csname TY@F\the\count@\endcsname>\tymin + \dimen@\csname TY@\the\count@\endcsname + \dimen@\TY@ratio\dimen@ + \ifdim\dimen@<\tymin +Z \message{Column \the\count@\space ->}% + \global\expandafter\let\csname TY@F\the\count@\endcsname\tymin + \global\advance\TY@linewidth-\tymin + \global\advance\TY@tablewidth-\csname TY@\the\count@\endcsname + \let\TY@checkmin\TY@@checkmin + \else + \expandafter\xdef\csname TY@F\the\count@\endcsname{\the\dimen@}% + \advance\@tempdima\csname TY@F\the\count@\endcsname + \fi + \fi +Z \dimen@\csname TY@F\the\count@\endcsname\message{\the\dimen@, }% +\repeat +Z \message{^^JTotal:\the\@tempdima^^J}% +} +\let\TY@@checkmin\TY@checkmin +\newdimen\TY@linewidth +\def\tyformat{\everypar{{\nobreak\hskip\z@skip}}} +\newdimen\tymin +\tymin=10pt +\newdimen\tymax +\tymax=2\textwidth +\def\@testpach{\@chclass + \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else + \ifnum \@lastchclass=7 5 \else + \ifnum \@lastchclass=8 \tw@ \else + \ifnum \@lastchclass=9 \thr@@ + \else \z@ + \ifnum \@lastchclass = 10 \else + \edef\@nextchar{\expandafter\string\@nextchar}% + \@chnum + \if \@nextchar c\z@ \else + \if \@nextchar l\@ne \else + \if \@nextchar r\tw@ \else + \if \@nextchar C7 \else + \if \@nextchar L8 \else + \if \@nextchar R9 \else + \if \@nextchar J10 \else + \z@ \@chclass + \if\@nextchar |\@ne \else + \if \@nextchar !6 \else + \if \@nextchar @7 \else + \if \@nextchar <8 \else + \if \@nextchar >9 \else + 10 + \@chnum + \if \@nextchar m\thr@@\else + \if \@nextchar p4 \else + \if \@nextchar b5 \else + \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi\fi \fi \fi\fi \fi + \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi} +\def\TY@classz{% + \@classx + \@tempcnta\count@ + \ifx\TY@box\TY@box@v + \global\advance\TY@count\@ne + \fi + \let\centering c% + \let\raggedright\noindent + \let\raggedleft\indent + \let\arraybackslash\relax + \prepnext@tok + \ifnum\@chnum<4 + \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ + \fi + \ifnum\@chnum=6 + \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ + \fi + \@addtopreamble{% + \ifcase\@chnum + \hfil \d@llarbegin\insert@column\d@llarend \hfil \or + \kern\z@ + \d@llarbegin \insert@column \d@llarend \hfil \or + \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or + $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or + \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or + \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or + \d@llarbegin \insert@column \d@llarend \or% dubious "s" case + \TY@box\centering\or + \TY@box\raggedright\or + \TY@box\raggedleft\or + \TY@box\relax + \fi}\prepnext@tok} +\def\TY@box#1{% + \ifx\centering#1% + \hfil \d@llarbegin\insert@column\d@llarend \hfil \else + \ifx\raggedright#1% + \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + \d@llarbegin \insert@column \d@llarend \hfil \else + \ifx\raggedleft#1% + \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \else + \ifx\relax#1% + \d@llarbegin \insert@column \d@llarend + \fi \fi \fi \fi} +\def\TY@box@v#1{% + \vtop \@startpbox{\csname TY@F\the\TY@count\endcsname}% + #1\arraybackslash\tyformat + \insert@column\@endpbox} +\newdimen\TY@tablewidth +\def\Gscale@div#1#2#3{% + \setlength\dimen@{#3}% + \ifdim\dimen@=\z@ + \PackageError{graphics}{Division by 0}\@eha + \dimen@#2% + \fi + \edef\@tempd{\the\dimen@}% + \setlength\dimen@{#2}% + \count@65536\relax + \ifdim\dimen@<\z@ + \dimen@-\dimen@ + \count@-\count@ + \fi + \loop + \ifdim\dimen@<8192\p@ + \dimen@\tw@\dimen@ + \divide\count@\tw@ + \repeat + \dimen@ii=\@tempd\relax + \divide\dimen@ii\count@ + \divide\dimen@\dimen@ii + \edef#1{\strip@pt\dimen@}} +\long\def\TY@get@body#1\end + {\toks@\expandafter{\the\toks@#1}\TY@find@end} +\def\TY@find@end#1{% + \def\@tempa{#1}% + \ifx\@tempa\TY@\def\@tempa{\end{#1}}\expandafter\@tempa + \else\toks@\expandafter + {\the\toks@\end{#1}}\expandafter\TY@get@body\fi} +\def\TY@warn{% + \PackageWarning{tabulary}} +\catcode`\Z=11 +\AtBeginDocument{ +\@ifpackageloaded{colortbl}{% +\expandafter\def\expandafter\@mkpream\expandafter#\expandafter1% + \expandafter{% + \expandafter\let\expandafter\CT@setup\expandafter\relax + \expandafter\let\expandafter\CT@color\expandafter\relax + \expandafter\let\expandafter\CT@do@color\expandafter\relax + \expandafter\let\expandafter\color\expandafter\relax + \expandafter\let\expandafter\CT@column@color\expandafter\relax + \expandafter\let\expandafter\CT@row@color\expandafter\relax + \@mkpream{#1}} +\let\TY@@mkpream\@mkpream +\def\TY@classz{% + \@classx + \@tempcnta\count@ + \ifx\TY@box\TY@box@v + \global\advance\TY@count\@ne + \fi + \let\centering c% + \let\raggedright\noindent + \let\raggedleft\indent + \let\arraybackslash\relax + \prepnext@tok +\expandafter\CT@extract\the\toks\@tempcnta\columncolor!\@nil + \ifnum\@chnum<4 + \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ + \fi + \ifnum\@chnum=6 + \global\expandafter\let\csname TY@F\the\TY@count\endcsname\z@ + \fi + \@addtopreamble{% + \setbox\z@\hbox\bgroup\bgroup + \ifcase\@chnum + \hskip\stretch{.5}\kern\z@ + \d@llarbegin\insert@column\d@llarend\hskip\stretch{.5}\or + \kern\z@%<<<<<<<<<<<<<<<<<<<<<<<<<<< + \d@llarbegin \insert@column \d@llarend \hfill \or + \hfill\kern\z@ \d@llarbegin \insert@column \d@llarend \or + $\vcenter\@startpbox{\@nextchar}\insert@column \@endpbox $\or + \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or + \vbox \@startpbox{\@nextchar}\insert@column \@endpbox \or + \d@llarbegin \insert@column \d@llarend \or% dubious s case + \TY@box\centering\or + \TY@box\raggedright\or + \TY@box\raggedleft\or + \TY@box\relax + \fi + \egroup\egroup +\begingroup + \CT@setup + \CT@column@color + \CT@row@color + \CT@do@color +\endgroup + \@tempdima\ht\z@ + \advance\@tempdima\minrowclearance + \vrule\@height\@tempdima\@width\z@ +\unhbox\z@ +}\prepnext@tok}% + \def\TY@arrayrule{% + \TY@subwidth\arrayrulewidth + \@addtopreamble{{\CT@arc@\vline}}}% + \def\TY@classvi{\ifcase \@lastchclass + \@acol \or + \TY@subwidth\doublerulesep + \ifx\CT@drsc@\relax + \@addtopreamble{\hskip\doublerulesep}% + \else + \@addtopreamble{{\CT@drsc@\vrule\@width\doublerulesep}}% + \fi\or + \@acol \or + \@classvii + \fi}% +}{% +\let\CT@start\relax +} +} +{\uccode`\*=`\ % +\uppercase{\gdef\TX@verb{% + \leavevmode\null\TX@vwarn + {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces + \@ifstar{\let~*\TX@vb}{\TX@vb}}}} +\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}% + \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!} +\def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= } +\begingroup +\catcode`\*=\catcode`\# +\catcode`\#=12 +\gdef\TX@vfirst{% + \if\@tempa#% + \def\@tempb{\TX@v@#}% + \else + \let\@tempb\TX@v@ + \if\@tempa\space~\else\@tempa\fi + \fi + \@tempb} +\gdef\TX@v@*1 *2{% + \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2} +\gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2} +\endgroup +\def\TX@vwarn{% + \@warning{\noexpand\verb may be unreliable inside tabularx/y}% + \global\let\TX@vwarn\@empty} +\endinput +%% +%% End of file `tabulary.sty'. diff --git a/docs/_build/man/bedtools.1 b/docs/_build/man/bedtools.1 new file mode 100644 index 0000000000000000000000000000000000000000..3ea615850f3f4bcc3f1a0af6427850b6aaa38c18 --- /dev/null +++ b/docs/_build/man/bedtools.1 @@ -0,0 +1,5506 @@ +.TH "BEDTOOLS" "1" "July 21, 2012" "2.16.2" "bedtools" +.SH NAME +bedtools \- Bedtools Documentation +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.\" Man page generated from reStructeredText. +. +.sp +Brief paragraph of the software. +.SH OVERVIEW +.SS 1.1 Background +.sp +The development of BEDTools was motivated by a need for fast, flexible tools with which to compare large sets of genomic +features. Answering fundamental research questions with existing tools was either too slow or required modifications to the +way they reported or computed their results. We were aware of the utilities on the UCSC Genome Browser and Galaxy websites, as +well as the elegant tools available as part of Jim Kent’s monolithic suite of tools (“Kent sourceâ€). However, we found that +the web\-based tools were too cumbersome when working with large datasets generated by current sequencing technologies. +Similarly, we found that the Kent source command line tools often required a local installation of the UCSC Genome Browser. +These limitations, combined with the fact that we often wanted an extra option here or there that wasn’t available with +existing tools, led us to develop our own from scratch. The initial version of BEDTools was publicly released in the spring of +2009. The current version has evolved from our research experiences and those of the scientists using the suite over the last +year. The BEDTools suite enables one to answer common questions of genomic data in a fast and reliable manner. The fact that +almost all the utilities accept input from “stdin†allows one to “stream / pipe†several commands together to facilitate more +complicated analyses. Also, the tools allow fine control over how output is reported. The initial version of BEDTools +supported solely 6\-column \fI\%BED\fP files. \fIHowever, we have subsequently added support for sequence alignments in\fP \fI\%BAM\fP +\fIformat, as well as for features in\fP \fI\%GFF\fP , \fI“blocked†BED format, and\fP +\fI\%VCF\fP \fIformat\fP. +The tools are quite fast and typically finish in a matter of a few seconds, even for large datasets. This manual seeks to describe the behavior and +available functionality for each BEDTool. Usage examples are scattered throughout the text, and formal examples are +provided in the last two sections, we hope that this document will give you a sense of the flexibility of +the toolkit and the types of analyses that are possible with BEDTools. If you have further questions, please join the BEDTools +discussion group, visit the Usage Examples on the Google Code site (usage, advanced usage), or take a look at the nascent +“Usage From the Wild†page. +.SS 1.2 Summary of available tools. +.sp +BEDTools support a wide range of operations for interrogating and manipulating genomic features. The table below summarizes +the tools available in the suite. +.TS +center; +|l|l|. +_ +T{ +Utility +T} T{ +Description +T} +_ +T{ +\fBintersectBed\fP +T} T{ +Returns overlaps between two BED/GFF/VCF files. +T} +_ +T{ +\fBpairToBed\fP +T} T{ +Returns overlaps between a paired\-end BED file and a regular BED/VCF/GFF file. +T} +_ +T{ +\fBbamToBed\fP +T} T{ +Converts BAM alignments to BED6, BED12, or BEDPE format. +T} +_ +T{ +\fBbedToBam\fP +T} T{ +Converts BED/GFF/VCF features to BAM format. +T} +_ +T{ +\fBbed12ToBed6\fP +T} T{ +Converts "blocked" BED12 features to discrete BED6 features. +T} +_ +T{ +\fBbedToIgv\fP +T} T{ +Creates IGV batch scripts for taking multiple snapshots from BED/GFF/VCF features. +T} +_ +T{ +\fBcoverageBed\fP +T} T{ +Summarizes the depth and breadth of coverage of features in one BED versus features (e.g, windows, exons, etc.) defined in another BED/GFF/VCF file. +T} +_ +T{ +\fBmultiBamCov\fP +T} T{ +Counts sequence coverage for multiple position\-sorted bams at specific loci defined in a BED/GFF/VCF file +T} +_ +T{ +\fBtagBam\fP +T} T{ +Annotates a BAM file with custom tag fields based on overlaps with BED/GFF/VCF files +T} +_ +T{ +\fBnuclBed\fP +T} T{ +Profiles the nucleotide content of intervals in a fasta file +T} +_ +T{ +\fBgenomeCoverageBed\fP +T} T{ +Creates either a histogram, BEDGRAPH, or a "per base" report of genome coverage. +T} +_ +T{ +\fBunionBedGraphs\fP +T} T{ +Combines multiple BedGraph? files into a single file, allowing coverage/other comparisons between them. +T} +_ +T{ +\fBannotateBed\fP +T} T{ +Annotates one BED/VCF/GFF file with overlaps from many others. +T} +_ +T{ +\fBgroupBy\fP +T} T{ +Deprecated. Now in the filo package. +T} +_ +T{ +\fBoverlap\fP +T} T{ +Returns the number of bases pairs of overlap b/w two features on the same line. +T} +_ +T{ +\fBpairToPair\fP +T} T{ +Returns overlaps between two paired\-end BED files. +T} +_ +T{ +\fBclosestBed\fP +T} T{ +Returns the closest feature to each entry in a BED/GFF/VCF file. +T} +_ +T{ +\fBsubtractBed\fP +T} T{ +Removes the portion of an interval that is overlapped by another feature. +T} +_ +T{ +\fBwindowBed\fP +T} T{ +Returns overlaps between two BED/VCF/GFF files based on a user\-defined window. +T} +_ +T{ +\fBmergeBed\fP +T} T{ +Merges overlapping features into a single feature. +T} +_ +T{ +\fBcomplementBed\fP +T} T{ +Returns all intervals not spanned by the features in a BED/GFF/VCF file. +T} +_ +T{ +\fBfastaFromBed\fP +T} T{ +Creates FASTA sequences based on intervals in a BED/GFF/VCF file. +T} +_ +T{ +\fBmaskFastaFromBed\fP +T} T{ +Masks a FASTA file based on BED coordinates. +T} +_ +T{ +\fBshuffleBed\fP +T} T{ +Randomly permutes the locations of a BED file among a genome. +T} +_ +T{ +\fBslopBed\fP +T} T{ +Adjusts each BED entry by a requested number of base pairs. +T} +_ +T{ +\fBflankBed\fP +T} T{ +Creates flanking intervals for each feature in a BED/GFF/VCF file. +T} +_ +T{ +\fBsortBed\fP +T} T{ +Sorts a BED file by chrom, then start position. Other ways as well. +T} +_ +T{ +\fBlinksBed\fP +T} T{ +Creates an HTML file of links to the UCSC or a custom browser. +T} +_ +.TE +.SS 1.3 Fundamental concepts. +.SS 1.3.1 What are genome features and how are they represented? +.sp +Throughout this manual, we will discuss how to use BEDTools to manipulate, compare and ask questions of genome “featuresâ€. Genome features can be functional elements (e.g., genes), genetic polymorphisms (e.g. +SNPs, INDELs, or structural variants), or other annotations that have been discovered or curated by genome sequencing groups or genome browser groups. In addition, genome features can be custom annotations that +an individual lab or researcher defines (e.g., my novel gene or variant). +.sp +The basic characteristics of a genome feature are the chromosome or scaffold on which the feature “residesâ€, the base pair on which the +feature starts (i.e. the “startâ€), the base pair on which feature ends (i.e. the “endâ€), the strand on which the feature exists (i.e. “+†or “\-“), and the name of the feature if one is applicable. +.sp +The two most widely used formats for representing genome features are the BED (Browser Extensible Data) and GFF (General Feature Format) formats. BEDTools was originally written to work exclusively with genome features +described using the BED format, but it has been recently extended to seamlessly work with BED, GFF and VCF files. +.sp +Existing annotations for the genomes of many species can be easily downloaded in BED and GFF +format from the UCSC Genome Browser’s “Table Browser†(\fI\%http://genome.ucsc.edu/cgi-bin/hgTables?command=start\fP) or from the “Bulk Downloads†page (\fI\%http://hgdownload.cse.ucsc.edu/downloads.html\fP). In addition, the +Ensemble Genome Browser contains annotations in GFF/GTF format for many species (\fI\%http://www.ensembl.org/info/data/ftp/index.html\fP) +.SS 1.3.2 Overlapping / intersecting features. +.sp +Two genome features (henceforth referred to as “featuresâ€) are said to overlap or intersect if they share at least one base in common. +In the figure below, Feature A intersects/overlaps Feature B, but it does not intersect/overlap Feature C. +.sp +\fBTODO: place figure here\fP +.SS 1.3.3 Comparing features in file “A†and file “Bâ€. +.sp +The previous section briefly introduced a fundamental naming convention used in BEDTools. Specifically, all BEDTools that compare features contained in two distinct files refer to one file as feature set “A†and the other file as feature set “Bâ€. This is mainly in the interest of brevity, but it also has its roots in set theory. +As an example, if one wanted to look for SNPs (file A) that overlap with exons (file B), one would use intersectBed in the following manner: +.sp +.nf +.ft C +intersectBed –a snps.bed –b exons.bed +.ft P +.fi +.sp +There are two exceptions to this rule: 1) When the “A†file is in BAM format, the “\-abam†option must bed used. For example: +.sp +.nf +.ft C +intersectBed –abam alignedReads.bam –b exons.bed +.ft P +.fi +.sp +And 2) For tools where only one input feature file is needed, the “\-i†option is used. For example: +.sp +.nf +.ft C +mergeBed –i repeats.bed +.ft P +.fi +.SS 1.3.4 BED starts are zero\-based and BED ends are one\-based. +.sp +BEDTools users are sometimes confused by the way the start and end of BED features are represented. Specifically, BEDTools uses the UCSC Genome Browser’s internal database convention of making the start position 0\-based and the end position 1\-based: (\fI\%http://genome.ucsc.edu/FAQ/FAQtracks#tracks1\fP) +In other words, BEDTools interprets the “start†column as being 1 basepair higher than what is represented in the file. For example, the following BED feature represents a single base on chromosome 1; namely, the 1st base: +.sp +.nf +.ft C +chr1 0 1 first_base +.ft P +.fi +.sp +Why, you might ask? The advantage of storing features this way is that when computing the length of a feature, one must simply subtract the start from the end. Were the start position 1\-based, +the calculation would be (slightly) more complex (i.e. (end\-start)+1). Thus, storing BED features this way reduces the computational burden. +.SS 1.3.5 GFF starts and ends are one\-based. +.sp +In contrast, the GFF format uses 1\-based coordinates for both the start and the end positions. BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your GFF features for them to work correctly with BEDTools. +.SS 1.3.6 VCF coordinates are one\-based. +.sp +The VCF format uses 1\-based coordinates. As in GFF, BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your VCF features for them to work correctly with BEDTools. +.SS 1.3.7 File B is loaded into memory (most of the time). +.sp +Whenever a BEDTool compares two files of features, the “B†file is loaded into memory. By contrast, the “A†file is processed line by line and compared with the features from B. +Therefore to minimize memory usage, one should set the smaller of the two files as the B file. One salient example is the comparison of aligned sequence reads from a +current DNA sequencer to gene annotations. In this case, the aligned sequence file (in BED format) may have tens of millions of features (the sequence alignments), +while the gene annotation file will have tens of thousands of features. In this case, it is wise to sets the reads as file A and the genes as file B. +.SS 1.3.8 Feature files \fImust\fP be tab\-delimited. +.sp +This is rather self\-explanatory. While it is possible to allow BED files to be space\-delimited, we have decided to require tab delimiters for three reasons: +.INDENT 0.0 +.IP 1. 3 +By requiring one delimiter type, the processing time is minimized. +.IP 2. 3 +Tab\-delimited files are more amenable to other UNIX utilities. +.IP 3. 3 +GFF files can contain spaces within attribute columns. This complicates the use of space\-delimited files as spaces must therefore be treated specially depending on the context. +.UNINDENT +.SS 1.3.9 All BEDTools allow features to be “piped†via standard input. +.sp +In an effort to allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, all BEDTools allow features +to be passed to them via standard input. Only one feature file may be passed to a BEDTool via standard input. +The convention used by all BEDTools is to set either file A or file B to “stdin†or "\-". For example: +.sp +.nf +.ft C +cat snps.bed | intersectBed –a stdin –b exons.bed +cat snps.bed | intersectBed –a \- –b exons.bed +.ft P +.fi +.sp +In addition, all BEDTools that simply require one main input file (the \-i file) will assume that input is +coming from standard input if the \-i parameter is ignored. For example, the following are equivalent: +.sp +.nf +.ft C +cat snps.bed | sortBed –i stdin +cat snps.bed | sortBed +.ft P +.fi +.SS 1.3.10 Most BEDTools write their results to standard output. +.sp +To allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, +most BEDTools report their output to standard output, rather than to a named file. If one wants to write the output to a named file, one can use the UNIX “file redirection†symbol “>†to do so. +Writing to standard output (the default): +.sp +.nf +.ft C +intersectBed –a snps.bed –b exons.bed +chr1 100100 100101 rs233454 +chr1 200100 200101 rs446788 +chr1 300100 300101 rs645678 +.ft P +.fi +.sp +Writing to a file: +.sp +.nf +.ft C +intersectBed –a snps.bed –b exons.bed > snps.in.exons.bed + +cat snps.in.exons.bed +chr1 100100 100101 rs233454 +chr1 200100 200101 rs446788 +chr1 300100 300101 rs645678 +.ft P +.fi +.SS 1.3.11 What is a “genome†file? +.sp +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which species / genome build you are working. +The way you do this for BEDTools is to create a “genome†file, which simply lists the names of the +chromosomes (or scaffolds, etc.) and their size (in basepairs). +Genome files must be tab\-delimited and are structured as follows (this is an example for C. elegans): +.sp +.nf +.ft C +chrI 15072421 +chrII 15279323 +\&... +chrX 17718854 +chrM 13794 +.ft P +.fi +.sp +BEDTools includes predefined genome files for human and mouse in the /genomes directory included +in the BEDTools distribution. Additionally, the “chromInfo†files/tables available from the UCSC +Genome Browser website are acceptable. For example, one can download the hg19 chromInfo file here: +\fI\%http://hgdownload.cse.ucsc.edu/goldenPath/hg19/database/chromInfo.txt.gz\fP +.SS 1.3.12 Paired\-end BED files (BEDPE files). +.sp +We have defined a new file format (BEDPE) to concisely describe disjoint genome features, such as +structural variations or paired\-end sequence alignments. We chose to define a new format because the +existing BED block format (i.e. BED12) does not allow inter\-chromosomal feature definitions. Moreover, +the BED12 format feels rather bloated when one want to describe events with only two blocks. +.SS 1.3.13 Use “\-h†for help with any BEDTool. +.sp +Rather straightforward. If you use the “\-h†option with any BEDTool, a full menu of example usage +and available options (when applicable) will be reported. +.SS 1.3.14 BED features must not contain negative positions. +.sp +BEDTools will typically reject BED features that contain negative positions. In special cases, however, +BEDPE positions may be set to \-1 to indicate that one or more ends of a BEDPE feature is unaligned. +.SS 1.3.15 The start position must be <= to the end position. +.sp +BEDTools will reject BED features where the start position is greater than the end position. +.SS 1.3.16 Headers are allowed in GFF and BED files +.sp +BEDTools will ignore headers at the beginning of BED and GFF files. Valid header lines begin with a +“#†symbol, the work “trackâ€, or the word “browserâ€. For example, the following examples are valid +headers for BED or GFF files: +.sp +.nf +.ft C +track name=aligned_read description="Illumina aligned reads†+chr5 100000 500000 read1 50 + +chr5 2380000 2386000 read2 60 \- + +#This is a fascinating dataset +chr5 100000 500000 read1 50 + +chr5 2380000 2386000 read2 60 \- + +browser position chr22:1\-20000 +chr5 100000 500000 read1 50 + +chr5 2380000 2386000 read2 60 \- +.ft P +.fi +.SS 1.3.17 GZIP support: BED, GFF, VCF, and BEDPE file can be “gzipped†+.sp +BEDTools will process gzipped BED, GFF, VCF and BEDPE files in the same manner as +uncompressed files. Gzipped files are auto\-detected thanks to a helpful contribution from Gordon +Assaf. +.SS 1.3.18 Support for “split†or “spliced†BAM alignments and “blocked†BED features +.sp +As of Version 2.8.0, five BEDTools (\fBintersectBed\fP, \fBcoverageBed\fP, \fBgenomeCoverageBed\fP, +\fBbamToBed\fP, and \fBbed12ToBed6\fP) can properly handle “splitâ€/â€spliced†BAM alignments (i.e., having an +“N†CIGAR operation) and/or “blocked†BED (aka BED12) features. +.sp +\fBintersectBed\fP, \fBcoverageBed\fP, and \fBgenomeCoverageBed\fP will optionally handle “split†BAM and/or +“blocked†BED by using the \fB\-split\fP option. This will cause intersects or coverage to be computed only +for the alignment or feature blocks. In contrast, without this option, the intersects/coverage would be +computed for the entire “span†of the alignment or feature, regardless of the size of the gaps between +each alignment or feature block. For example, imagine you have a RNA\-seq read that originates from +the junction of two exons that were spliced together in a mRNA. In the genome, these two exons +happen to be 30Kb apart. Thus, when the read is aligned to the reference genome, one portion of the +read will align to the first exon, while another portion of the read will align ca. 30Kb downstream to the +other exon. The corresponding CIGAR string would be something like (assuming a 76bp read): +30M*3000N*46M. In the genome, this alignment “spans†3076 bp, yet the nucleotides in the sequencing +read only align “cover†76bp. Without the \fB\-split\fP option, coverage or overlaps would be reported for the +entire 3076bp span of the alignment. However, with the \fB\-split\fP option, coverage or overlaps will only +be reported for the portions of the read that overlap the exons (i.e. 30bp on one exon, and +46bp on the other). +.sp +Using the \-split option with bamToBed causes “spliced/split†alignments to be reported in BED12 +format. Using the \-split option with bed12ToBed6 causes “blocked†BED12 features to be reported in +BED6 format. +.SS 1.3.19 Writing uncompressed BAM output. +.sp +When working with a large BAM file using a complex set of tools in a pipe/stream, it is advantageous +to pass uncompressed BAM output to each downstream program. This minimizes the amount of time +spent compressing and decompressing output from one program to the next. All BEDTools that create +BAM output (e.g. \fBintersectBed\fP, \fBwindowBed\fP) will now optionally create uncompressed BAM output +using the \fB\-ubam\fP option. +.SS 1.4 Implementation and algorithmic notes. +.sp +BEDTools was implemented in C++ and makes extensive use of data structures and fundamental +algorithms from the Standard Template Library (STL). Many of the core algorithms are based upon the +genome binning algorithm described in the original UCSC Genome Browser paper (Kent et al, 2002). +The tools have been designed to inherit core data structures from central source files, thus allowing +rapid tool development and deployment of improvements and corrections. Support for BAM files is +made possible through Derek Barnett’s elegant C++ API called BamTools. +.SS 1.5 License and availability. +.sp +BEDTools is freely available under a GNU Public License (Version 2) at: +\fI\%http://bedtools.googlecode.com\fP +.SS 1.6 Mailing list. +.sp +A discussion group for reporting bugs, asking questions of the developer and of the user community, as +well as for requesting new features is available at: +\fI\%http://groups.google.com/group/bedtools-discuss\fP +.SS 1.7 Contributors. +.sp +As open\-source software, BEDTools greatly benefits from contributions made by other developers and +users of the tools. We encourage and welcome suggestions, contributions and complaints. This is how +software matures, improves and stays on top of the needs of its user community. The Google Code +(GC) site maintains a list of individuals who have contributed either source code or useful ideas for +improving the tools. In the near future, we hope to maintain a source repository on the GC site in +order to facilitate further contributions. We are currently unable to do so because we use Git for +version control, which is not yet supported by GC. +.SH INSTALLATION +.sp +BEDTools is intended to run in a "command line" environment on UNIX, LINUX and Apple OS X +operating systems. Installing BEDTools involves downloading the latest source code archive followed by +compiling the source code into binaries on your local system. The following commands will install +BEDTools in a local directory on a NIX or OS X machine. Note that the \fB"<version>"\fP refers to the +latest posted version number on \fI\%http://bedtools.googlecode.com/\fP. +.sp +Note: \fIThe BEDTools "makefiles" use the GCC compiler. One should edit the Makefiles accordingly if +one wants to use a different compiler.\fP: +.sp +.nf +.ft C +curl http://bedtools.googlecode.com/files/BEDTools.<version>.tar.gz > BEDTools.tar.gz +tar \-zxvf BEDTools.tar.gz +cd BEDTools\-<version> +make clean +make all +ls bin +.ft P +.fi +.sp +At this point, one should copy the binaries in BEDTools/bin/ to either usr/local/bin/ or some +other repository for commonly used UNIX tools in your environment. You will typically require +administrator (e.g. "root" or "sudo") privileges to copy to usr/local/bin/. If in doubt, contact you +system administrator for help. +.SH QUICK START +.SS Install BEDTools +.sp +.nf +.ft C +curl http://bedtools.googlecode.com/files/BEDTools.<version>.tar.gz > BEDTools.tar.gz +tar \-zxvf BEDTools.tar.gz +cd BEDTools +make clean +make all +sudo cp bin/* /usr/local/bin/ +.ft P +.fi +.SS Use BEDTools +.sp +Below are examples of typical BEDTools usage. \fBAdditional usage examples are described in +section 6 of this manual.\fP Using the "\-h" option with any BEDTools will report a list of all command +line options. +.sp +A. Report the base\-pair overlap between the features in two BED files. +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed +.ft P +.fi +.sp +B. Report those entries in A that overlap NO entries in B. Like "grep \-v" +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed ?Cv +.ft P +.fi +.sp +C. Read BED A from stdin. Useful for stringing together commands. For example, find genes that overlap LINEs +but not SINEs. +.sp +.nf +.ft C +intersectBed \-a genes.bed \-b LINES.bed | intersectBed \-a stdin \-b SINEs.bed ?Cv +.ft P +.fi +.sp +D. Find the closest ALU to each gene. +.sp +.nf +.ft C +closestBed \-a genes.bed \-b ALUs.bed +.ft P +.fi +.sp +E. Merge overlapping repetitive elements into a single entry, returning the number of entries merged. +.sp +.nf +.ft C +mergeBed \-i repeatMasker.bed \-n +.ft P +.fi +.sp +F. Merge nearby repetitive elements into a single entry, so long as they are within 1000 bp of one another. +.sp +.nf +.ft C +mergeBed \-i repeatMasker.bed \-d 1000 +.ft P +.fi +.SH GENERAL USAGE +.SS 4.1 Supported file formats +.SS 4.1.1 BED format +.sp +As described on the UCSC Genome Browser website (see link below), the BED format is a concise and +flexible way to represent genomic features and annotations. The BED format description supports up to +12 columns, but only the first 3 are required for the UCSC browser, the Galaxy browser and for +BEDTools. BEDTools allows one to use the "BED12" format (that is, all 12 fields listed below). +However, only intersectBed, coverageBed, genomeCoverageBed, and bamToBed will obey the BED12 +"blocks" when computing overlaps, etc., via the \fB"\-split"\fP option. For all other tools, the last six columns +are not used for any comparisons by the BEDTools. Instead, they will use the entire span (start to end) +of the BED12 entry to perform any relevant feature comparisons. The last six columns will be reported +in the output of all comparisons. +.sp +The file description below is modified from: \fI\%http://genome.ucsc.edu/FAQ/FAQformat#format1\fP. +.INDENT 0.0 +.IP 1. 3 +\fBchrom\fP \- The name of the chromosome on which the genome feature exists. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, "chr1", "III", "myChrom", "contig1112.23". +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 2. 3 +\fBstart\fP \- The zero\-based starting position of the feature in the chromosome. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThe first base in a chromosome is numbered 0\fP. +.IP \(bu 2 +\fIThe start position in each BED feature is therefore interpreted to be 1 greater than the start position listed in the feature. For example, start=9, end=20 is interpreted to span bases 10 through 20,inclusive\fP. +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 3. 3 +\fBend\fP \- The one\-based ending position of the feature in the chromosome. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThe end position in each BED feature is one\-based. See example above\fP. +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 4. 3 +\fBname\fP \- Defines the name of the BED feature. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, "LINE", "Exon3", "HWIEAS_0001:3:1:0:266#0/1", or "my_Feature". +.IP \(bu 2 +\fIThis column is optional\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 5. 3 +\fBscore\fP \- The UCSC definition requires that a BED score range from 0 to 1000, inclusive. However, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. For example, strings allow scientific notation for p\-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, 7.31E\-05 (p\-value), 0.33456 (mean enrichment value), "up", "down", etc. +.IP \(bu 2 +\fIThis column is optional\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 6. 3 +\fBstrand\fP \- Defines the strand \- either \(aq+\(aq or \(aq\-\(aq. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is optional\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 7. 3 +\fBthickStart\fP \- The starting position at which the feature is drawn thickly. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAllowed yet ignored by BEDTools\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 8. 3 +\fBthickEnd\fP \- The ending position at which the feature is drawn thickly. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAllowed yet ignored by BEDTools\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 9. 3 +\fBitemRgb\fP \- An RGB value of the form R,G,B (e.g. 255,0,0). +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAllowed yet ignored by BEDTools\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 10. 3 +\fBblockCount\fP \- The number of blocks (exons) in the BED line. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAllowed yet ignored by BEDTools\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 11. 4 +\fBblockSizes\fP \- A comma\-separated list of the block sizes. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAllowed yet ignored by BEDTools\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 12. 4 +\fBblockStarts\fP \- A comma\-separated list of block starts. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAllowed yet ignored by BEDTools\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.sp +BEDTools requires that all BED input files (and input received from stdin) are \fBtab\-delimited\fP. The following types of BED files are supported by BEDTools: +.INDENT 0.0 +.IP 1. 3 +.nf +\fBBED3\fP: A BED file where each feature is described by \fBchrom\fP, \fBstart\fP, and \fBend\fP. +For example: chr1 11873 14409 +.fi +.sp +.IP 2. 3 +.nf +\fBBED4\fP: A BED file where each feature is described by \fBchrom\fP, \fBstart\fP, \fBend\fP, and \fBname\fP. +For example: chr1 11873 14409 uc001aaa.3 +.fi +.sp +.IP 3. 3 +.nf +\fBBED5\fP: A BED file where each feature is described by \fBchrom\fP, \fBstart\fP, \fBend\fP, \fBname\fP, and \fBscore\fP. +For example: chr1 11873 14409 uc001aaa.3 0 +.fi +.sp +.IP 4. 3 +.nf +\fBBED6\fP: A BED file where each feature is described by \fBchrom\fP, \fBstart\fP, \fBend\fP, \fBname\fP, \fBscore\fP, and \fBstrand\fP. +For example: chr1 11873 14409 uc001aaa.3 0 + +.fi +.sp +.IP 5. 3 +.nf +\fBBED12\fP: A BED file where each feature is described by all twelve columns listed above. +For example: chr1 11873 14409 uc001aaa.3 0 + 11873 +11873 0 3 354,109,1189, 0,739,1347, +.fi +.sp +.UNINDENT +.SS 4.1.2 BEDPE format +.sp +We have defined a new file format (BEDPE) in order to concisely describe disjoint genome features, +such as structural variations or paired\-end sequence alignments. We chose to define a new format +because the existing "blocked" BED format (a.k.a. BED12) does not allow inter\-chromosomal feature +definitions. In addition, BED12 only has one strand field, which is insufficient for paired\-end sequence +alignments, especially when studying structural variation. +.sp +The BEDPE format is described below. The description is modified from: \fI\%http://genome.ucsc.edu/FAQ/FAQformat#format1\fP. +.INDENT 0.0 +.IP 1. 3 +\fBchrom1\fP \- The name of the chromosome on which the \fBfirst\fP end of the feature exists. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, "chr1", "III", "myChrom", "contig1112.23". +.IP \(bu 2 +\fIThis column is required\fP. +.IP \(bu 2 +\fIUse "." for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 2. 3 +\fBstart1\fP \- The zero\-based starting position of the \fBfirst\fP end of the feature on \fBchrom1\fP. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThe first base in a chromosome is numbered 0\fP. +.IP \(bu 2 +\fIAs with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required\fP. +.IP \(bu 2 +\fIUse \-1 for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 3. 3 +\fBend1\fP \- The one\-based ending position of the first end of the feature on \fBchrom1\fP. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThe end position in each BEDPE feature is one\-based\fP. +.IP \(bu 2 +\fIThis column is required\fP. +.IP \(bu 2 +\fIUse \-1 for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 4. 3 +\fBchrom2\fP \- The name of the chromosome on which the \fBsecond\fP end of the feature exists. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, "chr1", "III", "myChrom", "contig1112.23". +.IP \(bu 2 +\fIThis column is required\fP. +.IP \(bu 2 +\fIUse "." for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 5. 3 +\fBstart2\fP \- The zero\-based starting position of the \fBsecond\fP end of the feature on \fBchrom2\fP. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThe first base in a chromosome is numbered 0\fP. +.IP \(bu 2 +\fIAs with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required\fP. +.IP \(bu 2 +\fIUse \-1 for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 6. 3 +\fBend2\fP \- The one\-based ending position of the \fBsecond\fP end of the feature on \fBchrom2\fP. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThe end position in each BEDPE feature is one\-based\fP. +.IP \(bu 2 +\fIThis column is required\fP. +.IP \(bu 2 +\fIUse \-1 for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 7. 3 +\fBname\fP \- Defines the name of the BEDPE feature. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, "LINE", "Exon3", "HWIEAS_0001:3:1:0:266#0/1", or "my_Feature". +.IP \(bu 2 +\fIThis column is optional\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 8. 3 +\fBscore\fP \- The UCSC definition requires that a BED score range from 0 to 1000, inclusive. \fIHowever, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features\fP. For example, strings allow scientific notation for p\-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, 7.31E\-05 (p\-value), 0.33456 (mean enrichment value), "up", "down", etc. +.IP \(bu 2 +\fIThis column is optional\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 9. 3 +\fBstrand1\fP \- Defines the strand for the first end of the feature. Either \(aq+\(aq or \(aq\-\(aq. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is optional\fP. +.IP \(bu 2 +\fIUse "." for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 10. 3 +\fBstrand2\fP \- Defines the strand for the second end of the feature. Either \(aq+\(aq or \(aq\-\(aq. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is optional\fP. +.IP \(bu 2 +\fIUse "." for unknown\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 11. 4 +\fBAny number of additional, user\-defined fields\fP \- BEDTools allows one to add as many additional fields to the normal, 10\-column BEDPE format as necessary. These columns are merely "passed through" \fBpairToBed\fP and \fBpairToPair\fP and are not part of any analysis. One would use these additional columns to add extra information (e.g., edit distance for each end of an alignment, or "deletion", "inversion", etc.) to each BEDPE feature. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThese additional columns are optional\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.sp +Entries from an typical BEDPE file: +.sp +.nf +.ft C +chr1 100 200 chr5 5000 5100 bedpe_example1 30 + \- +chr9 1000 5000 chr9 3000 3800 bedpe_example2 100 + \- +.ft P +.fi +.sp +Entries from a BEDPE file with two custom fields added to each record: +.sp +.nf +.ft C +chr1 10 20 chr5 50 60 a1 30 + \- 0 1 +chr9 30 40 chr9 80 90 a2 100 + \- 2 1 +.ft P +.fi +.SS 4.1.3 GFF format +.sp +The GFF format is described on the Sanger Institute\(aqs website (\fI\%http://www.sanger.ac.uk/resources/software/gff/spec.html\fP). The GFF description below is modified from the definition at this URL. All nine columns in the GFF format description are required by BEDTools. +.INDENT 0.0 +.IP 1. 3 +\fBseqname\fP \- The name of the sequence (e.g. chromosome) on which the feature exists. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, "chr1", "III", "myChrom", "contig1112.23". +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 2. 3 +\fBsource\fP \- The source of this feature. This field will normally be used to indicate the program making the prediction, or if it comes from public database annotation, or is experimentally verified, etc. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 3. 3 +\fBfeature\fP \- The feature type name. Equivalent to BED\(aqs \fBname\fP field. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIAny string can be used\fP. For example, "exon", etc. +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 4. 3 +\fBstart\fP \- The one\-based starting position of feature on \fBseqname\fP. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is required\fP. +.IP \(bu 2 +\fIBEDTools accounts for the fact the GFF uses a one\-based position and BED uses a zero\-based start position\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 5. 3 +\fBend\fP \- The one\-based ending position of feature on \fBseqname\fP. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 6. 3 +\fBscore\fP \- A score assigned to the GFF feature. Like BED format, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. We note that this differs from the GFF definition in the interest of flexibility. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 7. 3 +\fBstrand\fP \- Defines the strand. Use \(aq+\(aq, \(aq\-\(aq or \(aq.\(aq +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 8. 3 +\fBframe\fP \- The frame of the coding sequence. Use \(aq0\(aq, \(aq1\(aq, \(aq2\(aq, or \(aq.\(aq. +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.INDENT 0.0 +.IP 9. 3 +\fBattribute\fP \- Taken from \fI\%http://www.sanger.ac.uk/resources/software/gff/spec.html\fP: From version 2 onwards, the attribute field must have an tag value structure following the syntax used within objects in a .ace file, flattened onto one line by semicolon separators. Tags must be standard identifiers ([A\-Za\-z][ +.nf +AZa\-z0\-9_ +.fi +]*). Free text values must be quoted with double quotes. \fINote: all non\-printing characters in such free text value strings (e.g. newlines, tabs, control characters, etc) must be explicitly represented by their C (UNIX) style backslash\-escaped representation (e.g. newlines as \(aqn\(aq, tabs as \(aqt\(aq)\fP. As in ACEDB, multiple values can follow a specific tag. The aim is to establish consistent use of particular tags, corresponding to an underlying implied ACEDB model if you want to think that way (but acedb is not required). +.UNINDENT +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +\fIThis column is required\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.sp +An entry from an example GFF file : +.sp +.nf +.ft C +seq1 BLASTX similarity 101 235 87.1 + 0 Target "HBA_HUMAN" 11 55 ; +E_value 0.0003 dJ102G20 GD_mRNA coding_exon 7105 7201 . \- 2 Sequence +"dJ102G20.C1.1" +.ft P +.fi +.SS 4.1.3 GFF format +.sp +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which which species/genome build you are +working. The way you do this for BEDTools is to create a "genome" file, which simply lists the names of +the chromosomes (or scaffolds, etc.) and their size (in basepairs). +.sp +Genome files must be \fBtab\-delimited\fP and are structured as follows (this is an example for \fIC. elegans\fP): +.sp +.nf +.ft C +chrI 15072421 +chrII 15279323 +\&... +chrX 17718854 +chrM 13794 +.ft P +.fi +.sp +BEDTools includes pre\-defined genome files for human and mouse in the \fB/genomes\fP directory included +in the BEDTools distribution. +.SS 4.1.5 SAM/BAM format +.sp +The SAM / BAM format is a powerful and widely\-used format for storing sequence alignment data (see +\fI\%http://samtools.sourceforge.net/\fP for more details). It has quickly become the standard format to which +most DNA sequence alignment programs write their output. Currently, the following BEDTools +support inout in BAM format: \fIintersectBed, windowBed, coverageBed, genomeCoverageBed, +pairToBed, bamToBed\fP. Support for the BAM format in BEDTools allows one to (to name a few): +compare sequence alignments to annotations, refine alignment datasets, screen for potential mutations +and compute aligned sequence coverage. +.sp +The details of how these tools work with BAM files are addressed in \fBSection 5\fP of this manual. +.SS 4.1.6 VCF format +.sp +The Variant Call Format (VCF) was conceived as part of the 1000 Genomes Project as a standardized +means to report genetic variation calls from SNP, INDEL and structural variant detection programs +(see \fI\%http://www.1000genomes.org/wiki/doku.php?id=1000_genomes:analysis:vcf4.0\fP for details). +BEDTools now supports the latest version of this format (i.e, Version 4.0). As a result, BEDTools can +be used to compare genetic variation calls with other genomic features. +.SH THE BEDTOOLS SUITE +.sp +This section covers the functionality and default / optional usage for each of the available BEDTools. +Example "figures" are provided in some cases in an effort to convey the purpose of the tool. The +behavior of each available parameter is discussed for each tool in abstract terms. More concrete usage +examples are provided in \fBSection 6\fP. +.SS Table of contents +.SS 5.1 intersectBed +.sp +By far, the most common question asked of two sets of genomic features is whether or not any of the +features in the two sets "overlap" with one another. This is known as feature intersection. \fBintersectBed\fP +allows one to screen for overlaps between two sets of genomic features. Moreover, it allows one to have +fine control as to how the intersections are reported. \fBintersectBed\fP works with both BED/GFF/VCF +and BAM files as input. +.SS 5.1.1 Usage and option summary +.sp +\fBUsage\fP: +.sp +.nf +.ft C +intersectBed [OPTIONS] [\-a <BED/GFF/VCF> || \-abam <BAM>] \-b <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-a\fP +T} T{ +BED/GFF/VCF file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. +T} +_ +T{ +\fB\-b\fP +T} T{ +BED/GFF/VCF file B. Use "stdin" if passing B with a UNIX pipe. +T} +_ +T{ +\fB\-abam\fP +T} T{ +BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view \-b <BAM> | intersectBed \-abam stdin \-b genes.bed +T} +_ +T{ +\fB\-ubam\fP +T} T{ +Write uncompressed BAM output. The default is write compressed BAM output. +T} +_ +T{ +\fB\-bed\fP +T} T{ +When using BAM input (\-abam), write output as BED. The default is to write output in BAM when using \-abam. For example: intersectBed \-abam reads.bam \-b genes.bed \-bed +T} +_ +T{ +\fB\-wa\fP +T} T{ +Write the original entry in A for each overlap. +T} +_ +T{ +\fB\-wb\fP +T} T{ +Write the original entry in B for each overlap. Useful for knowing what A overlaps. Restricted by \-f and \-r. +T} +_ +T{ +\fB\-wo\fP +T} T{ +Write the original A and B entries plus the number of base pairs of overlap between the two features. Only A features with overlap are reported. Restricted by \-f and \-r. +T} +_ +T{ +\fB\-wao\fP +T} T{ +Write the original A and B entries plus the number of base pairs of overlap between the two features. However, A features w/o overlap are also reported with a NULL B feature and overlap = 0. Restricted by \-f and \-r. +T} +_ +T{ +\fB\-u\fP +T} T{ +Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. Restricted by \-f and \-r. +T} +_ +T{ +\fB\-c\fP +T} T{ +For each entry in A, report the number of hits in B while restricting to \-f. Reports 0 for A entries that have no overlap with B. Restricted by \-f and \-r. +T} +_ +T{ +\fB\-v\fP +T} T{ +Only report those entries in A that have no overlap in B. Restricted by \-f and \-r. +T} +_ +T{ +\fB\-f\fP +T} T{ +Minimum overlap required as a fraction of A. Default is 1E\-9 (i.e. 1bp). +T} +_ +T{ +\fB\-r\fP +T} T{ +Require that the fraction of overlap be reciprocal for A and B. In other words, if \-f is 0.90 and \-r is used, this requires that B overlap at least 90% of A and that A also overlaps at least 90% of B. +T} +_ +T{ +\fB\-s\fP +T} T{ +Force "strandedness". That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +T} +_ +T{ +\fB\-split\fP +T} T{ +Treat "split" BAM (i.e., having an "N" CIGAR operation) or BED12 entries as distinct BED intervals. +T} +_ +.TE +.SS 5.1.2 Default behavior +.sp +By default, if an overlap is found, \fBintersectBed\fP reports the shared interval between the two +overlapping features. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BED/BAM A ******************* ************* + +BED File B ^^^^^^^^ + +Result ======== +.ft P +.fi +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed \-a A.bed \-b B.bed +chr1 150 200 +.ft P +.fi +.SS 5.1.3 (\-wa)Reporting the original A feature +.sp +Instead, one can force \fBintersectBed\fP to report the \fIoriginal\fP \fB"A"\fP feature when an overlap is found. As +shown below, the entire "A" feature is reported, not just the portion that overlaps with the "B" feature. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BED/BAM A ******************* ************* + +BED File B ^^^^^^^^ + +Result =================== +.ft P +.fi +.sp +For example (compare with example from default behavior): +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed \-a A.bed \-b B.bed \-wa +chr1 100 200 +.ft P +.fi +.SS 5.1.4 (\-wb)Reporting the original B feature +.sp +Similarly, one can force \fBintersectBed\fP to report the \fIoriginal\fP \fB"B"\fP feature when an overlap is found. If +just \-wb is used, the overlapping portion of A will be reported followed by the \fIoriginal\fP \fB"B"\fP. If both \-wa +and \-wb are used, the \fIoriginals\fP of both \fB"A"\fP and \fB"B"\fP will be reported. +.sp +For example (\-wb alone): +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed \-a A.bed \-b B.bed \-wb +chr1 150 200 chr1 150 250 +.ft P +.fi +.sp +Now \-wa and \-wb: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 150 250 + +intersectBed \-a A.bed \-b B.bed \-wa \-wb +chr1 100 200 chr1 150 250 +.ft P +.fi +.SS 5.1.5 (\-u)Reporting the presence of \fIat least one\fP overlapping feature +.sp +Frequently a feature in "A" will overlap with multiple features in "B". By default, \fBintersectBed\fP will +report each overlap as a separate output line. However, one may want to simply know that there is at +least one overlap (or none). When one uses the \-u option, "A" features that overlap with one or more +"B" features are reported once. Those that overlap with no "B" features are not reported at all. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed \-a A.bed \-b B.bed \-u +chr1 100 200 +.ft P +.fi +.SS 5.1.6 (\-c)Reporting the number of overlapping features +.sp +The \-c option reports a column after each "A" feature indicating the \fInumber\fP (0 or more) of overlapping +features found in "B". Therefore, \fIeach feature in A is reported once\fP. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed \-a A.bed \-b B.bed \-c +chr1 100 200 2 +chr1 1000 2000 0 +.ft P +.fi +.SS 5.1.6 (\-c)Reporting the number of overlapping features +.sp +The \-c option reports a column after each "A" feature indicating the \fInumber\fP (0 or more) of overlapping +features found in "B". Therefore, \fIeach feature in A is reported once\fP. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed \-a A.bed \-b B.bed \-c +chr1 100 200 2 +chr1 1000 2000 0 +.ft P +.fi +.SS 5.1.7 (\-v)Reporting the absence of any overlapping features +.sp +There will likely be cases where you\(aqd like to know which "A" features do not overlap with any of the +"B" features. Perhaps you\(aqd like to know which SNPs don\(aqt overlap with any gene annotations. The \-v +(an homage to "grep \-v") option will only report those "A" features that have no overlaps in "B". +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 1000 2000 + +cat B.bed +chr1 101 201 +chr1 120 220 + +intersectBed \-a A.bed \-b B.bed \-v +chr1 1000 2000 +.ft P +.fi +.SS 5.1.8 (\-f)Requiring a minimal overlap fraction +.sp +By default, \fBintersectBed\fP will report an overlap between A and B so long as there is at least one base +pair is overlapping. Yet sometimes you may want to restrict reported overlaps between A and B to cases +where the feature in B overlaps at least X% (e.g. 50%) of the A feature. The \-f option does exactly +this. +.sp +For example (note that the second B entry is not reported): +.sp +.nf +.ft C +cat A.bed +chr1 100 200 + +cat B.bed +chr1 130 201 +chr1 180 220 + +intersectBed \-a A.bed \-b B.bed \-f 0.50 \-wa \-wb +chr1 100 200 chr1 130 201 +.ft P +.fi +.SS 5.1.9 (\-r, combined with \-f)Requiring reciprocal minimal overlap fraction +.sp +Similarly, you may want to require that a minimal fraction of both the A and the B features is +overlapped. For example, if feature A is 1kb and feature B is 1Mb, you might not want to report the +overlap as feature A can overlap at most 1% of feature B. If one set \-f to say, 0.02, and one also +enable the \-r (reciprocal overlap fraction required), this overlap would not be reported. +.sp +For example (note that the second B entry is not reported): +.sp +.nf +.ft C +cat A.bed +chr1 100 200 + +cat B.bed +chr1 130 201 +chr1 130 200000 + +intersectBed \-a A.bed \-b B.bed \-f 0.50 \-r \-wa \-wb +chr1 100 200 chr1 130 201 +.ft P +.fi +.SS 5.1.10 (\-s)Enforcing "strandedness" +.sp +By default, \fBintersectBed\fP will report overlaps between features even if the features are on opposite +strands. However, if strand information is present in both BED files and the "\-s" option is used, overlaps +will only be reported when features are on the same strand. +.sp +For example (note that the second B entry is not reported): +.sp +.nf +.ft C +cat A.bed +chr1 100 200 a1 100 + + +cat B.bed +chr1 130 201 b1 100 \- +chr1 130 201 b2 100 + + +intersectBed \-a A.bed \-b B.bed \-wa \-wb \-s +chr1 100 200 a1 100 + chr1 130 201 b2 100 + +.ft P +.fi +.SS 5.1.11 (\-abam)Default behavior when using BAM input +.sp +When comparing alignments in BAM format (\fB\-abam\fP) to features in BED format (\fB\-b\fP), \fBintersectBed\fP +will, \fBby default\fP, write the output in BAM format. That is, each alignment in the BAM file that meets +the user\(aqs criteria will be written (to standard output) in BAM format. This serves as a mechanism to +create subsets of BAM alignments are of biological interest, etc. Note that only the mate in the BAM +alignment is compared to the BED file. Thus, if only one end of a paired\-end sequence overlaps with a +feature in B, then that end will be written to the BAM output. By contrast, the other mate for the +pair will not be written. One should use \fBpairToBed(Section 5.2)\fP if one wants each BAM alignment +for a pair to be written to BAM output. +.sp +For example: +.sp +.nf +.ft C +intersectBed \-abam reads.unsorted.bam \-b simreps.bed | samtools view \- | head \-3 + +BERTHA_0001:3:1:15:1362#0 99 chr4 9236904 0 50M = 9242033 5 1 7 9 +AGACGTTAACTTTACACACCTCTGCCAAGGTCCTCATCCTTGTATTGAAG W c T U ] b \e g c e g X g f c b f c c b d d g g V Y P W W _ +\ec\(gadcdabdfW^a^gggfgd XT:A:R NM:i:0 SM:i:0 AM:i:0 X0:i:19 X1:i:2 XM:i:0 XO:i:0 XG:i:0 MD:Z:50 +BERTHA _0001:3:1:16:994#0 83 chr6 114221672 37 25S6M1I11M7S = +114216196 \-5493 G A A A G G C C A G A G T A T A G A A T A A A C A C A A C A A T G T C C A A G G T A C A C T G T T A +gffeaaddddggggggedgcgeggdegggggffcgggggggegdfggfgf XT:A:M NM:i:3 SM:i:37 AM:i:37 XM:i:2 X O : i : +1 XG:i:1 MD:Z:6A6T3 +BERTHA _0001:3:1:16:594#0 147 chr8 43835330 0 50M = +43830893 \-4487 CTTTGGGAGGGCTTTGTAGCCTATCTGGAAAAAGGAAATATCTTCCCATG U +\ee^bgeTdg_Kgcg\(gaggeggg_gggggggggddgdggVg\egWdfgfgff XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:10 X1:i:7 X M : i : +2 XO:i:0 XG:i:0 MD:Z:1A2T45 +.ft P +.fi +.SS 5.1.12 (\-bed)Output BED format when using BAM input +.sp +When comparing alignments in BAM format (\fB\-abam\fP) to features in BED format (\fB\-b\fP), \fBintersectBed\fP +will \fBoptionally\fP write the output in BED format. That is, each alignment in the BAM file is converted +to a 6 column BED feature and if overlaps are found (or not) based on the user\(aqs criteria, the BAM +alignment will be reported in BED format. The BED "name" field is comprised of the RNAME field in +the BAM alignment. If mate information is available, the mate (e.g., "/1" or "/2") field will be +appended to the name. The "score" field is the mapping quality score from the BAM alignment. +.sp +For example: +.sp +.nf +.ft C +intersectBed \-abam reads.unsorted.bam \-b simreps.bed \-bed | head \-20 + +chr4 9236903 9236953 BERTHA_0001:3:1:15:1362#0/1 0 + +chr6 114221671 114221721 BERTHA_0001:3:1:16:994#0/1 37 \- +chr8 43835329 43835379 BERTHA_0001:3:1:16:594#0/2 0 \- +chr4 49110668 49110718 BERTHA_0001:3:1:31:487#0/1 23 + +chr19 27732052 27732102 BERTHA_0001:3:1:32:890#0/2 46 + +chr19 27732012 27732062 BERTHA_0001:3:1:45:1135#0/1 37 + +chr10 117494252 117494302 BERTHA_0001:3:1:68:627#0/1 37 \- +chr19 27731966 27732016 BERTHA_0001:3:1:83:931#0/2 9 + +chr8 48660075 48660125 BERTHA_0001:3:1:86:608#0/2 37 \- +chr9 34986400 34986450 BERTHA_0001:3:1:113:183#0/2 37 \- +chr10 42372771 42372821 BERTHA_0001:3:1:128:1932#0/1 3 \- +chr19 27731954 27732004 BERTHA_0001:3:1:130:1402#0/2 0 + +chr10 42357337 42357387 BERTHA_0001:3:1:137:868#0/2 9 + +chr1 159720631 159720681 BERTHA_0001:3:1:147:380#0/2 37 \- +chrX 58230155 58230205 BERTHA_0001:3:1:151:656#0/2 37 \- +chr5 142612746 142612796 BERTHA_0001:3:1:152:1893#0/1 37 \- +chr9 71795659 71795709 BERTHA_0001:3:1:177:387#0/1 37 + +chr1 106240854 106240904 BERTHA_0001:3:1:194:928#0/1 37 \- +chr4 74128456 74128506 BERTHA_0001:3:1:221:724#0/1 37 \- +chr8 42606164 42606214 BERTHA_0001:3:1:244:962#0/1 37 + +.ft P +.fi +.SS 5.1.13 (\-split)Reporting overlaps with spliced alignments or blocked BED features +.sp +As described in section 1.3.19, intersectBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA\-seq reads, for +example, one typically wants to only screen for overlaps for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The \fB\-split\fP command allows for such overlaps to be +performed. +.sp +For example, the diagram below illustrates the \fIdefault\fP behavior. The blue dots represent the "split/ +spliced" portion of the alignment (i.e., CIGAR "N" operation). In this case, the two exon annotations +are reported as overlapping with the "split" BAM alignment, but in addition, a third feature that +overlaps the "split" portion of the alignment is also reported. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Exons \-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- + +BED/BAM A ************.......................................**** + +BED File B ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + +Result =============== ======== ========== +.ft P +.fi +.sp +In contrast, when using the \fB\-split\fP option, only the exon overlaps are reported. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Exons \-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- + +BED/BAM A ************.......................................**** + +BED File B ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + +Result =============== ========== +.ft P +.fi +.SS 5.2 pairToBed +.sp +\fBpairToBed\fP compares each end of a BEDPE feature or a paired\-end BAM alignment to a feature file in +search of overlaps. +.sp +\fBNOTE: pairToBed requires that the BAM file is sorted/grouped by the read name. This +allows pairToBed to extract correct alignment coordinates for each end based on their +respective CIGAR strings. It also assumes that the alignments for a given pair come in +groups of twos. There is not yet a standard method for reporting multiple alignments +using BAM. pairToBed will fail if an aligner does not report alignments in pairs.\fP +.SS 5.2.1 Usage and option summary +.sp +\fBUsage:\fP +.sp +.nf +.ft C +pairToBed [OPTIONS] [\-a <BEDPE> || \-abam <BAM>] \-b <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-a\fP +T} T{ +BEDPE file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. Output will be in BEDPE format. +T} +_ +T{ +\fB\-b\fP +T} T{ +BED file B. Use "stdin" if passing B with a UNIX pipe. +T} +_ +T{ +\fB\-abam\fP +T} T{ +BAM file A. Each end of each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view ?Cb <BAM> | pairToBed ?Cabam stdin ?Cb genes.bed | samtools view \- +T} +_ +T{ +\fB\-ubam\fP +T} T{ +Write uncompressed BAM output. The default is write compressed BAM output. +T} +_ +T{ +\fB\-bedpe\fP +T} T{ +When using BAM input (\-abam), write output as BEDPE. The default is to write output in BAM when using \-abam. For example: pairToBed ?Cabam reads.bam ?Cb genes.bed ?Cbedpe +T} +_ +T{ +\fB\-ed\fP +T} T{ +Use BAM total edit distance (NM tag) for BEDPE score. Default for BEDPE is to use the \fIminimum\fP of the two mapping qualities for the pair. When \-ed is used the \fItotal\fP edit distance from the two mates is reported as the score. +T} +_ +T{ +\fB\-f\fP +T} T{ +Minimum overlap required as a fraction of A. Default is 1E\-9 (i.e. 1bp). +T} +_ +T{ +\fB\-s\fP +T} T{ +Force "strandedness". That is, only report hits in B that overlap A on the \fBsame\fP strand. By default, overlaps are reported without respect to strand. +T} +_ +T{ +\fB\-type\fP +T} T{ +Approach to reporting overlaps between BEDPE and BED. +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.INDENT 3.5 +\fBeither\-\fP Report overlaps if either end of A overlaps B. +.INDENT 0.0 +.IP \(bu 2 +\fIDefault\fP +.UNINDENT +.sp +\fBneither\-\fP Report A if neither end of A overlaps B. +.sp +\fBxor\-\fP Report overlaps if one and only one end of A overlaps B. +.sp +\fBboth\-\fP Report overlaps if both ends of A overlap B. +.sp +\fBnotboth\-\fP Report overlaps if neither end or one and only one end of A overlap B. +.sp +\fBispan\-\fP Report overlaps between [end1, start2] of A and B. +.INDENT 0.0 +.IP \(bu 2 +Note: If chrom1 <> chrom2, entry is ignored. +.UNINDENT +.UNINDENT +.UNINDENT +.sp +\fBospan\-\fP Report overlaps between [start1, end2] of A and B. +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.IP \(bu 2 +Note: If chrom1 <> chrom2, entry is ignored. +.UNINDENT +.sp +\fBnotispan\-\fP Report A if ispan of A doesn\(aqt overlap B. +\- Note: If chrom1 <> chrom2, entry is ignored. +.sp +\fBnotospan\-\fP Report A if ospan of A doesn\(aqt overlap B. +\- Note: If chrom1 <> chrom2, entry is ignored. +.UNINDENT +.UNINDENT +.UNINDENT +.UNINDENT +T} +_ +.TE +.SS 5.2.2 Default behavior +.sp +By default, a BEDPE / BAM feature will be reported if \fIeither\fP end overlaps a feature in the BED file. +In the example below, the left end of the pair overlaps B yet the right end does not. Thus, BEDPE/ +BAM A is reported since the default is to report A if either end overlaps B. +.sp +Default: Report A if \fIeither\fP end overlaps B. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ ^^^^^^ + +Result =====.................................===== +.ft P +.fi +.SS 5.2.3 (\-type)Optional overlap requirements +.sp +Using then \fB\-type\fP option, \fBpairToBed\fP provides several other overlap requirements for controlling how +overlaps between BEDPE/BAM A and BED B are reported. The examples below illustrate how each +option behaves. +.sp +\fB\-type both\fP: Report A only if \fIboth\fP ends overlap B. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ ^^^^^^ + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ ^^^^^^ + +Result =====.................................===== +.ft P +.fi +.sp +\fB\-type neither\fP: Report A only if \fIneither\fP end overlaps B. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ ^^^^^^ + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^ ^^^^^^ + +Result =====.................................===== +.ft P +.fi +.sp +\fB\-type xor\fP: Report A only if \fIone and only one\fP end overlaps B. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ ^^^^^^ + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^ ^^^^^^ + +Result +.ft P +.fi +.sp +\fB\-type notboth\fP: Report A only if \fIneither end\fP \fBor\fP \fIone and only one\fP end overlaps B. Thus "notboth" +includes what would be reported by "neither" and by "xor". +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ ^^^^^^ + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^ ^^^^^^ + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^ ^^^^^^ + +Result +.ft P +.fi +.sp +\fB\-type ispan\fP: Report A if it\(aqs "\fIinner span\fP" overlaps B. Applicable only to intra\-chromosomal features. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Inner span |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ + +Result =====.................................===== + + + +BEDPE/BAM A =====.................................===== + +BED File B ==== + +Result +.ft P +.fi +.sp +\fB\-type ospan\fP: Report A if it\(aqs "\fIouter span\fP" overlaps B. Applicable only to intra\-chromosomal features. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Outer span |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^^^^^ + +Result =====.................................===== + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^ + +Result +.ft P +.fi +.sp +\fB\-type notispan\fP: Report A only if it\(aqs "\fIinner span\fP" does not overlap B. Applicable only to intrachromosomal +features. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Inner span |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^ + +Result =====.................................===== +.ft P +.fi +.sp +\fB\-type notospan\fP: Report A if it\(aqs "\fIouter span\fP" overlaps B. Applicable only to intra\-chromosomal +features. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Outer span |\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-| + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^^^^^ + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^ + +Result =====.................................===== +.ft P +.fi +.SS 5.2.4 (\-f)Requiring a minimum overlap fraction +.sp +By default, \fBpairToBed\fP will report an overlap between A and B so long as there is at least one base +pair is overlapping on either end. Yet sometimes you may want to restrict reported overlaps between A +and B to cases where the feature in B overlaps at least X% (e.g. 50%) of A. The \fB?Cf\fP option does exactly +this. The \fB\-f\fP option may also be combined with the \-type option for additional control. For example, +combining \fB\-f 0.50\fP with \fB\-type both\fP requires that both ends of A have at least 50% overlap with a +feature in B. +.sp +For example, report A only at least 50% of one of the two ends is overlapped by B. +.sp +.nf +.ft C +pairToBed \-a A.bedpe \-b B.bed \-f 0.5 + + +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^ ^^^^^^ + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^ ^^^^^^ + +Result =====.................................===== +.ft P +.fi +.SS 5.2.5 (\-s)Enforcing "strandedness" +.sp +By default, \fBpairToBed\fP will report overlaps between features even if the features are on opposing +strands. However, if strand information is present in both files and the \fB"\-s"\fP option is used, overlaps will +only be reported when features are on the same strand. +.sp +For example, report A only at least 50% of one of the two ends is overlapped by B. +.sp +.nf +.ft C +pairToBed \-a A.bedpe \-b B.bed \-s + + + +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A >>>>>.................................<<<<< + +BED File B << >>>>> + +Result + + + +BEDPE/BAM A >>>>>.................................<<<<< + +BED File B >> >>>>> + +Result >>>>>.................................<<<<< +.ft P +.fi +.SS 5.2.6 (\-abam)Default is to write BAM output when using BAM input +.sp +When comparing \fIpaired\fP alignments in BAM format (\fB\-abam\fP) to features in BED format (\fB\-b\fP), +\fBpairToBed\fP will , by default, write the output in BAM format. That is, each alignment in the BAM +file that meets the user\(aqs criteria will be written (to standard output) in BAM format. This serves as a +mechanism to create subsets of BAM alignments are of biological interest, etc. Note that both +alignments for each aligned pair will be written to the BAM output. +.sp +For example: +.sp +.nf +.ft C +pairToBed ?Cabam pairedReads.bam ?Cb simreps.bed | samtools view \- | head \-4 + +JOBU_0001:3:1:4:1060#0 99 chr10 42387928 29 50M = 42393091 5 2 1 3 +AA A A A C G G A A T T A T C G A A T G G A A T C G A A G A G A A T C T T C G A A C G G A C C C G A +dcgggggfbgfgdgggggggfdfgggcggggfcggcggggggagfgbggc XT:A:R NM:i:5 SM:i:0 AM:i:0 X0:i:3 X 1 : i : +3 XM:i:5 XO:i:0 XG:i:0 MD:Z:0T0C33A5T4T3 +JOBU_0001:3:1:4:1060#0 147 chr10 42393091 0 50M = 42387928 \- 5 2 1 3 +AAATGGAATCGAATGGAATCAACATCAAATGGAATCAAATGGAATCATTG K g d c g g d e c d g +\ed\(gaggfcgcggffcgggc^cgfgccgggfc^gcdgg\ebg XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:3 X1:i:13 XM:i:2 X O : i : +0 XG:i:0 MD:Z:21T14G13 +JOBU_0001:3:1:8:446#0 99 chr10 42388091 9 50M = 42392738 4 6 9 7 +GAATCGACTGGAATCATCATCGGATGGAAATGAATGGAATAATCATCGAA f _ O f f \(ga ] I e Y f f \(ga f f e d d c f e f c P \(ga c _ W \e \e R _ ] +_BBBBBBBBBBBBBBBB XT:A:U NM:i:4 SM:i:0 AM:i:0 X0:i:1 X1:i:3 XM:i:4 XO:i:0 XG:i:0 M D : Z : +7A22C9C2T6 +JOBU_0001:3:1:8:446#0 147 chr10 42392738 9 50M = 42388091 \- 4 6 9 7 +TTATCGAATGCAATCGAATGGAATTATCGAATGCAATCGAATAGAATCAT df^ffec_JW[\(gaMWceRec\(ga\(gafee\(gadcecfeeZae\(gac] +f^cNeecfccf^ XT:A:R NM:i:1 SM:i:0 AM:i:0 X0:i:2 X1:i:2 XM:i:1 XO:i:0 XG:i:0 MD:Z:38A11 +.ft P +.fi +.SS 5.2.7 (\-bedpe)Output BEDPE format when using BAM input +.sp +When comparing \fIpaired\fP alignments in BAM format (\fB\-abam\fP) to features in BED format (\fB\-b\fP), +\fBpairToBed\fP will optionally write the output in BEDPE format. That is, each alignment in the BAM +file is converted to a 10 column BEDPE feature and if overlaps are found (or not) based on the user\(aqs +criteria, the BAM alignment will be reported in BEDPE format. The BEDPE "name" field is comprised +of the RNAME field in the BAM alignment. The "score" field is the mapping quality score from the +BAM alignment. +.sp +For example: +.sp +.nf +.ft C +pairToBed ?Cabam pairedReads.bam ?Cb simreps.bed \-bedpe | head \-5 +chr10 42387927 42387977 chr10 42393090 42393140 + JOBU_0001:3:1:4:1060#0 29 + \- +chr10 42388090 42388140 chr10 42392737 42392787 + JOBU_0001:3:1:8:446#0 9 + \- +chr10 42390552 42390602 chr10 42396045 42396095 + JOBU_0001:3:1:10:1865#0 9 + \- +chrX 139153741 139153791 chrX 139159018 139159068 + JOBU_0001:3:1:14:225#0 37 + \- +chr4 9236903 9236953 chr4 9242032 9242082 + JOBU_0001:3:1:15:1362#0 0 + \- +.ft P +.fi +.SS 5.3 pairToPair +.sp +\fBpairToPair\fP compares two BEDPE files in search of overlaps where each end of a BEDPE feature in A +overlaps with the ends of a feature in B. For example, using pairToPair, one could screen for the exact +same discordant paired\-end alignment in two files. This could suggest (among other things) that the +discordant pair suggests the same structural variation in each file/sample. +.SS 5.3.1 Usage and option summary +.sp +\fBUsage:\fP +.sp +.nf +.ft C +pairToPair [OPTIONS] \-a <BEDPE> \-b <BEDPE> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-a\fP +T} T{ +BEDPE file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. +T} +_ +T{ +\fB\-b\fP +T} T{ +BEDPE file B. Use "stdin" if passing B with a UNIX pipe. +T} +_ +T{ +\fB\-f\fP +T} T{ +Minimum overlap required as a fraction of A. Default is 1E\-9 (i.e. 1bp). +T} +_ +T{ +\fB\-is\fP +T} T{ +Force "strandedness". That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +T} +_ +T{ +\fB\-type\fP +T} T{ +.INDENT 0.0 +.INDENT 3.5 +Approach to reporting overlaps between BEDPE and BED. +.UNINDENT +.UNINDENT +.nf +\fBeither\fP Report overlaps if either ends of A overlap B. +.fi +.sp +.INDENT 0.0 +.INDENT 3.5 +.nf +\fBneither\fP Report A if neither end of A overlaps B. +.fi +.sp +.nf +\fBboth\fP Report overlaps if both ends of A overlap B. \-\fIDefault behavior.\fP +.fi +.sp +.UNINDENT +.UNINDENT +T} +_ +.TE +.SS 5.3.2 Default behavior +.sp +By default, a BEDPE feature from A will be reported if \fIboth\fP ends overlap a feature in the BEDPE B +file. If strand information is present for the two BEDPE files, it will be further required that the +overlaps on each end be on the same strand. This way, an otherwise overlapping (in terms of genomic +locations) F/R alignment will not be matched with a R/R alignment. +.sp +Default: Report A if \fIboth\fP ends overlaps B. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^ ^^^^^^ + +Result =====.................................===== +.ft P +.fi +.sp +Default when strand information is present in both BEDPE files: Report A if \fIboth\fP ends overlaps B \fIon +the same strands\fP. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE A >>>>>.................................>>>>> + +BEDPE B <<<<<.............................>>>>> + +Result + + + +BEDPE A >>>>>.................................>>>>> + +BEDPE B >>>>>.............................>>>>> + +Result >>>>>.................................>>>>> +.ft P +.fi +.SS 5.3.3 (\-type neither)Optional overlap requirements +.sp +Using then \fB\-type neither, pairToPair\fP will only report A if \fIneither\fP end overlaps with a BEDPE +feature in B. +.sp +\fB\-type neither\fP: Report A only if \fIneither\fP end overlaps B. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^^^^^......................................^^^^^^ + +Result + + + +BEDPE/BAM A *****.................................***** + +BED File B ^^^^................................................^^^^^^ + +Result =====.................................===== +.ft P +.fi +.SS 5.4 bamToBed +.sp +\fBbamToBed\fP is a general purpose tool that will convert sequence alignments in BAM format to either +BED6, BED12 or BEDPE format. This enables one to convert BAM files for use with all of the other +BEDTools. The CIGAR string is used to compute the alignment end coordinate in an "ungapped" +fashion. That is, match ("M"), deletion ("D"), and splice ("N") operations are observed when computing +alignment ends. +.SS 5.4.1 Usage and option summary +.sp +\fBUsage:\fP +.sp +.nf +.ft C +bamToBed [OPTIONS] \-i <BAM> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-bedpe\fP +T} T{ +.INDENT 0.0 +.INDENT 3.5 +.INDENT 0.0 +.TP +.B Write BAM alignments in BEDPE format. Only one alignment from paired\-end reads will be reported. Specifically, it each mate is aligned to the same chromosome, the BAM alignment reported will be the one where the BAM insert size is greater than zero. When the mate alignments are interchromosomal, the lexicographically lower chromosome will be reported first. Lastly, when an end is unmapped, the chromosome and strand will be set to "." and the start and end coordinates will be set to \-1. \fIBy default, this is disabled and the output will be reported in BED format\fP. +\fBNOTE: When using this option, it is required that the BAM file is sorted/grouped by the read name. This allows bamToBed to extract correct alignment coordinates for each end based on their respective CIGAR strings. It also assumes that the alignments for a given pair come in groups of twos. There is not yet a standard method for reporting multiple alignments using BAM. bamToBed will fail if an aligner does not report alignments in pairs\fP. +.UNINDENT +.UNINDENT +.UNINDENT +.sp +BAM files may be piped to bamToBed by specifying "\-i stdin". See example below. +T} +_ +T{ +\fB\-bed12\fP +T} T{ +Write "blocked" BED (a.k.a. BED12) format. This will convert "spliced" BAM alignments (denoted by the "N" CIGAR operation) to BED12. +T} +_ +T{ +\fB\-ed\fP +T} T{ +Use the "edit distance" tag (NM) for the BED score field. Default for BED is to use mapping quality. Default for BEDPE is to use the \fIminimum\fP of the two mapping qualities for the pair. When \-ed is used with \-bedpe, the total edit distance from the two mates is reported. +T} +_ +T{ +\fB\-tag\fP +T} T{ +Use other \fInumeric\fP BAM alignment tag for BED score. Default for BED is to use mapping quality. Disallowed with BEDPE output. +T} +_ +T{ +\fB\-color\fP +T} T{ +An R,G,B string for the color used with BED12 format. Default is (255,0,0). +T} +_ +T{ +\fB\-split\fP +T} T{ +Report each portion of a "split" BAM (i.e., having an "N" CIGAR operation) alignment as a distinct BED intervals. +T} +_ +.TE +.sp +By default, each alignment in the BAM file is converted to a 6 column BED. The BED "name" field is +comprised of the RNAME field in the BAM alignment. If mate information is available, the mate (e.g., +"/1" or "/2") field will be appended to the name. The "score" field is the mapping quality score from the +BAM alignment, unless the \fB\-ed\fP option is used. +.sp +Examples: +.sp +.nf +.ft C +bamToBed \-i reads.bam | head \-5 +chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 37 \- +chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 37 + +chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 37 \- + +bamToBed \-i reads.bam \-tag NM | head \-5 +chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 1 \- +chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 3 + +chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 1 \- + +bamToBed \-i reads.bam \-bedpe | head \-3 +chr7 118965072 118965122 chr7 118970079 118970129 + TUPAC_0001:3:1:0:1452#0 37 + \- +chr11 46765606 46765656 chr11 46769934 46769984 + TUPAC_0001:3:1:0:1472#0 37 + \- +chr20 54704674 54704724 chr20 54708987 54709037 + TUPAC_0001:3:1:1:1833#0 37 + +.ft P +.fi +.sp +One can easily use samtools and bamToBed together as part of a UNIX pipe. In this example, we will +only convert properly\-paired (BAM flag == 0x2) reads to BED format. +.sp +.nf +.ft C +samtools view \-bf 0x2 reads.bam | bamToBed \-i stdin | head +chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 37 \- +chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 37 + +chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 37 \- +chr11 46765606 46765656 TUPAC_0001:3:1:0:1472#0/2 37 + +chr20 54704674 54704724 TUPAC_0001:3:1:1:1833#0/1 37 + +chr20 54708987 54709037 TUPAC_0001:3:1:1:1833#0/2 37 \- +chrX 9380413 9380463 TUPAC_0001:3:1:1:285#0/1 0 \- +chrX 9375861 9375911 TUPAC_0001:3:1:1:285#0/2 0 + +chrX 131756978 131757028 TUPAC_0001:3:1:2:523#0/1 37 + +chrX 131761790 131761840 TUPAC_0001:3:1:2:523#0/2 37 \- +.ft P +.fi +.SS 5.4.2 (\-split)Creating BED12 features from "spliced" BAM entries. +.sp +bamToBed will, by default, create a BED6 feature that represents the entire span of a spliced/split +BAM alignment. However, when using the \fB\-split\fP command, a BED12 feature is reported where BED +blocks will be created for each aligned portion of the sequencing read. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Exons *************** ********** + +BED/BAM A ^^^^^^^^^^^^....................................^^^^ + +Result =============== ==== +.ft P +.fi +.SS 5.5 windowBed +.sp +Similar to \fBintersectBed\fP, \fBwindowBed\fP searches for overlapping features in A and B. However, +\fBwindowBed\fP adds a specified number (1000, by default) of base pairs upstream and downstream of +each feature in A. In effect, this allows features in B that are "near" features in A to be detected. +.SS 5.5.1 Usage and option summary +.sp +\fBUsage:\fP +.sp +.nf +.ft C +windowBed [OPTIONS] \-a <BED/GFF/VCF> \-b <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-abam\fP +T} T{ +BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view \-b <BAM> | windowBed \-abam stdin \-b genes.bed +T} +_ +T{ +\fB\-ubam\fP +T} T{ +Write uncompressed BAM output. The default is write compressed BAM output. +T} +_ +T{ +\fB\-bed\fP +T} T{ +When using BAM input (\-abam), write output as BED. The default is to write output in BAM when using \-abam. For example: windowBed \-abam reads.bam \-b genes.bed \-bed +T} +_ +T{ +\fB\-w\fP +T} T{ +Base pairs added upstream and downstream of each entry in A when searching for overlaps in B. \fIDefault is 1000 bp\fP. +T} +_ +T{ +\fB\-l\fP +T} T{ +Base pairs added upstream (left of) of each entry in A when searching for overlaps in B. \fIAllows one to create assymetrical "windows". Default is 1000bp\fP. +T} +_ +T{ +\fB\-r\fP +T} T{ +Base pairs added downstream (right of) of each entry in A when searching for overlaps in B. \fIAllows one to create assymetrical "windows". Default is 1000bp\fP. +T} +_ +T{ +\fB\-sw\fP +T} T{ +Define \-l and \-r based on strand. For example if used, \-l 500 for a negative\-stranded feature will add 500 bp downstream. \fIBy default, this is disabled\fP. +T} +_ +T{ +\fB\-sm\fP +T} T{ +Only report hits in B that overlap A on the same strand. \fIBy default, overlaps are reported without respect to strand\fP. +T} +_ +T{ +\fB\-u\fP +T} T{ +Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. +T} +_ +T{ +\fB\-c\fP +T} T{ +For each entry in A, report the number of hits in B while restricting to \-f. Reports 0 for A entries that have no overlap with B. +T} +_ +.TE +.SS 5.5.2 Default behavior +.sp +By default, \fBwindowBed\fP adds 1000 bp upstream and downstream of each A feature and searches for +features in B that overlap this "window". If an overlap is found in B, both the \fIoriginal\fP A feature and the +\fIoriginal\fP B feature are reported. For example, in the figure below, feature B1 would be found, but B2 +would not. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + "window" = 10 +BED File A <\-\-\-\-\-\-\-\-\-\-*************\-\-\-\-\-\-\-\-\-\-> + +BED File B ^^^^^^^^ ^^^^^^ + +Result ======== +.ft P +.fi +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +windowBed \-a A.bed \-b B.bed +chr1 100 200 chr1 500 1000 +.ft P +.fi +.SS 5.5.3 (\-w)Defining a custom window size +.sp +Instead of using the default window size of 1000bp, one can define a custom, \fIsymmetric\fP window around +each feature in A using the \fB\-w\fP option. One should specify the window size in base pairs. For example, +a window of 5kb should be defined as \fB\-w 5000\fP. +.sp +For example (note that in contrast to the default behavior, the second B entry is reported): +.sp +.nf +.ft C +cat A.bed +chr1 100 200 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +windowBed \-a A.bed \-b B.bed \-w 5000 +chr1 100 200 chr1 500 1000 +chr1 100 200 chr1 1300 2000 +.ft P +.fi +.SS 5.5.4 (\-l and \-r)Defining assymteric windows +.sp +One can also define asymmetric windows where a differing number of bases are added upstream and +downstream of each feature using the \fB\-l (upstream)\fP and \fB\-r (downstream)\fP options. +.sp +For example (note the difference between \-l 200 and \-l 300): +.sp +.nf +.ft C +cat A.bed +chr1 1000 2000 + +cat B.bed +chr1 500 800 +chr1 10000 20000 + +windowBed \-a A.bed \-b B.bed \-l 200 \-r 20000 +chr1 100 200 chr1 10000 20000 + +windowBed \-a A.bed \-b B.bed \-l 300 \-r 20000 +chr1 100 200 chr1 500 800 +chr1 100 200 chr1 10000 20000 +.ft P +.fi +.SS 5.5.5 (\-sw)Defining assymteric windows based on strand +.sp +Especially when dealing with gene annotations or RNA\-seq experiments, you may want to define +asymmetric windows based on "strand". For example, you may want to screen for overlaps that occur +within 5000 bp upstream of a gene (e.g. a promoter region) while screening only 1000 bp downstream of +the gene. By enabling the \fB\-sw\fP ("stranded" windows) option, the windows are added upstream or +downstream according to strand. For example, imagine one specifies \fB\-l 5000 \-r 1000\fP as well as the \fB\- +sw\fP option. In this case, forward stranded ("+") features will screen 5000 bp to the \fIleft\fP (that is, \fIlower\fP +genomic coordinates) and 1000 bp to the \fIright\fP (that is, \fIhigher\fP genomic coordinates). By contrast, +reverse stranded ("\-") features will screen 5000 bp to the \fIright\fP (that is, \fIhigher\fP genomic coordinates) and +1000 bp to the \fIleft\fP (that is, \fIlower\fP genomic coordinates). +.sp +For example (note the difference between \-l 200 and \-l 300): +.sp +.nf +.ft C +cat A.bed +chr1 10000 20000 A.forward 1 + +chr1 10000 20000 A.reverse 1 \- + +cat B.bed +chr1 1000 8000 B1 +chr1 24000 32000 B2 + +windowBed \-a A.bed \-b B.bed \-l 5000 \-r 1000 \-sw +chr1 10000 20000 A.forward 1 + chr1 1000 8000 B1 +chr1 10000 20000 A.reverse 1 \- chr1 24000 32000 B2 +.ft P +.fi +.SS 5.5.6 (\-sm)Enforcing "strandedness" +.sp +This option behaves the same as the \-s option for intersectBed while scanning for overlaps within the +"window" surrounding A. See the discussion in the intersectBed section for details. +.SS 5.5.7 (\-u)Reporting the presence of at least one overlapping feature +.sp +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. +.SS 5.5.8 (\-c)Reporting the number of overlapping features +.sp +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. +.SS 5.5.9 (\-v)Reporting the absence of any overlapping features +.sp +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. +.SS 5.6 closestBed +.sp +Similar to \fBintersectBed, closestBed\fP searches for overlapping features in A and B. In the event that +no feature in B overlaps the current feature in A, \fBclosestBed\fP will report the \fIclosest\fP (that is, least +genomic distance from the start or end of A) feature in B. For example, one might want to find which +is the closest gene to a significant GWAS polymorphism. Note that \fBclosestBed\fP will report an +overlapping feature as the closest\-\-\-that is, it does not restrict to closest \fInon\-overlapping\fP feature. +.SS 5.6.1 Usage and option summary +.sp +\fBUsage:\fP +.sp +.nf +.ft C +closestBed [OPTIONS] \-a <BED/GFF/VCF> \-b <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-s\fP +T} T{ +Force strandedness. That is, find the closest feature in B overlaps A on the same strand. \fIBy default, this is disabled\fP. +T} +_ +T{ +\fB\-d\fP +T} T{ +In addition to the closest feature in B, report its distance to A as an extra column. The reported distance for overlapping features will be 0. +T} +_ +T{ +\fB\-t\fP +T} T{ +How ties for closest feature should be handled. This occurs when two features in B have exactly the same overlap with a feature in A. \fIBy default, all such features in B are reported\fP. +.INDENT 0.0 +.INDENT 3.5 +Here are the other choices controlling how ties are handled: +.sp +\fIall\-\fP Report all ties (default). +.sp +\fIfirst\-\fP Report the first tie that occurred in the B file. +.sp +\fIlast\-\fP Report the last tie that occurred in the B file. +.UNINDENT +.UNINDENT +T} +_ +.TE +.SS 5.6.2 Default behavior +.sp +\fBclosestBed\fP first searches for features in B that overlap a feature in A. If overlaps are found, the feature +in B that overlaps the highest fraction of A is reported. If no overlaps are found, \fBclosestBed\fP looks for +the feature in B that is \fIclosest\fP (that is, least genomic distance to the start or end of A) to A. For +example, in the figure below, feature B1 would be reported as the closest feature to A1. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BED FILE A ************* + +BED File B ^^^^^^^^ ^^^^^^ + +Result ====== +.ft P +.fi +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +closestBed \-a A.bed \-b B.bed +chr1 100 200 chr1 500 1000 +.ft P +.fi +.SS 5.6.3 (\-s)Enforcing "strandedness" +.sp +This option behaves the same as the \-s option for intersectBed while scanning for the closest +(overlapping or not) feature in B. See the discussion in the intersectBed section for details. +.SS 5.6.4 (\-t)Controlling how ties for "closest" are broken +.sp +When there are two or more features in B that overlap the \fIsame fraction\fP of A, \fBclosestBed\fP will, by +default, report both features in B. Imagine feature A is a SNP and file B contains genes. It can often +occur that two gene annotations (e.g. opposite strands) in B will overlap the SNP. As mentioned, the +default behavior is to report both such genes in B. However, the \-t option allows one to optionally +choose the just first or last feature (in terms of where it occurred in the input file, not chromosome +position) that occurred in B. +.sp +For example (note the difference between \-l 200 and \-l 300): +.sp +.nf +.ft C +cat A.bed +chr1 100 101 rs1234 + +cat B.bed +chr1 0 1000 geneA 100 + +chr1 0 1000 geneB 100 \- + +closestBed \-a A.bed \-b B.bed +chr1 100 101 rs1234 chr1 0 1000 geneA 100 + +chr1 100 101 rs1234 chr1 0 1000 geneB 100 \- + +closestBed \-a A.bed \-b B.bed \-t all +chr1 100 101 rs1234 chr1 0 1000 geneA 100 + +chr1 100 101 rs1234 chr1 0 1000 geneB 100 \- + +closestBed \-a A.bed \-b B.bed \-t first +chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + +closestBed \-a A.bed \-b B.bed \-t last +chr1 100 101 rs1234 chr1 0 1000 geneB 100 \- +.ft P +.fi +.SS 5.6.5 (\-d)Reporting the distance to the closest feature in base pairs +.sp +ClosestBed will optionally report the distance to the closest feature in the B file using the \fB\-d\fP option. +When a feature in B overlaps a feature in A, a distance of 0 is reported. +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 500 600 + +cat B.bed +chr1 500 1000 +chr1 1300 2000 + +closestBed \-a A.bed \-b B.bed \-d +chr1 100 200 chr1 500 1000 300 +chr1 500 600 chr1 500 1000 0 +.ft P +.fi +.SS 5.7 subtractBed +.sp +\fBsubtractBed\fP searches for features in B that overlap A. If an overlapping feature is found in B, the +overlapping portion is removed from A and the remaining portion of A is reported. If a feature in B +overlaps all of a feature in A, the A feature will not be reported. +.SS 5.7.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +subtractBed [OPTIONS] \-a <BED/GFF/VCF> \-b <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-f\fP +T} T{ +Minimum overlap required as a fraction of A. Default is 1E\-9 (i.e. 1bp). +T} +_ +T{ +\fB\-s\fP +T} T{ +Force strandedness. That is, find the closest feature in B overlaps A on the same strand. \fIBy default, this is disabled\fP. +T} +_ +.TE +.SS 5.7.2 Default behavior +.sp +Figure: +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BED FILE A ************* ****** + +BED File B ^^^^^^^^ ^^^^^^^^^^^ + +Result ========= +.ft P +.fi +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 10 20 + +cat B.bed +chr1 0 30 +chr1 180 300 + +subtractBed \-a A.bed \-b B.bed +chr1 100 180 +.ft P +.fi +.SS 5.7.3 (\-f)Requiring a minimal overlap fraction before subtracting +.sp +This option behaves the same as the \-f option for intersectBed. In this case, subtractBed will only +subtract an overlap with B if it covers at least the fraction of A defined by \-f. If an overlap is found, +but it does not meet the overlap fraction, the original A feature is reported without subtraction. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 + +cat B.bed +chr1 180 300 + +subtractBed \-a A.bed \-b B.bed \-f 0.10 +chr1 100 180 + +subtractBed \-a A.bed \-b B.bed \-f 0.80 +chr1 100 200 +.ft P +.fi +.SS 5.7.4 (\-s)Enforcing "strandedness" +.sp +This option behaves the same as the \-s option for intersectBed while scanning for features in B that +should be subtracted from A. See the discussion in the intersectBed section for details. +.SS 5.8 mergeBed +.sp +\fBmergeBed\fP combines overlapping or "book\-ended" (that is, one base pair away) features in a feature file +into a single feature which spans all of the combined features. +.SS 5.8.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +mergeBed [OPTIONS] \-i <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-s\fP +T} T{ +Force strandedness. That is, only merge features that are the same strand. \fIBy default, this is disabled\fP. +T} +_ +T{ +\fB\-n\fP +T} T{ +Report the number of BED entries that were merged. \fI1 is reported if no merging occurred\fP. +T} +_ +T{ +\fB\-d\fP +T} T{ +Maximum distance between features allowed for features to be merged. \fIDefault is 0. That is, overlapping and/or book\-ended features are merged\fP. +T} +_ +T{ +\fB\-nms\fP +T} T{ +Report the names of the merged features separated by semicolons. +T} +_ +.TE +.SS 5.8.2 Default behavior +.sp +Figure: +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BED FILE ************* *************** ********************** + ******** + +Result =============================== ====================== +.ft P +.fi +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 180 250 +chr1 250 500 +chr1 501 1000 + +mergeBed \-i A.bed +chr1 100 500 +chr1 501 1000 +.ft P +.fi +.SS 5.8.3 (\-s)Enforcing "strandedness" +.sp +This option behaves the same as the \-s option for intersectBed while scanning for features that should +be merged. Only features on the same strand will be merged. See the discussion in the intersectBed +section for details. +.SS 5.8.4 (\-n)Reporting the number of features that were merged +.sp +The \-n option will report the number of features that were combined from the original file in order to +make the newly merged feature. If a feature in the original file was not merged with any other features, +a "1" is reported. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 180 250 +chr1 250 500 +chr1 501 1000 + +mergeBed \-i A.bed \-n +chr1 100 500 3 +chr1 501 1000 1 +.ft P +.fi +.SS 5.8.5 (\-d)Controlling how close two features must be in order to merge +.sp +By default, only overlapping or book\-ended features are combined into a new feature. However, one can +force mergeBed to combine more distant features with the \-d option. For example, were one to set \-d to +1000, any features that overlap or are within 1000 base pairs of one another will be combined. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 501 1000 + +mergeBed \-i A.bed +chr1 100 200 +chr1 501 1000 + +mergeBed \-i A.bed \-d 1000 +chr1 100 200 1000 +.ft P +.fi +.SS 5.8.6 (\-nms)Reporting the names of the features that were merged +.sp +Occasionally, one might like to know that names of the features that were merged into a new feature. +The \-nms option will add an extra column to the mergeBed output which lists (separated by +semicolons) the names of the merged features. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 A1 +chr1 150 300 A2 +chr1 250 500 A3 + +mergeBed \-i A.bed \-nms +chr1 100 500 A1;A2;A3 +.ft P +.fi +.SS 5.9 coverageBed +.sp +\fBcoverageBed\fP computes both the \fIdepth\fP and \fIbreadth\fP of coverage of features in file A across the features +in file B. For example, \fBcoverageBed\fP can compute the coverage of sequence alignments (file A) across 1 +kilobase (arbitrary) windows (file B) tiling a genome of interest. One advantage that \fBcoverageBed\fP +offers is that it not only \fIcounts\fP the number of features that overlap an interval in file B, it also +computes the fraction of bases in B interval that were overlapped by one or more features. Thus, +\fBcoverageBed\fP also computes the \fIbreadth\fP of coverage for each interval in B. +.SS 5.9.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +coverageBed [OPTIONS] \-a <BED/GFF/VCF> \-b <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-abam\fP +T} T{ +.INDENT 0.0 +.INDENT 3.5 +BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: +.UNINDENT +.UNINDENT +.nf +samtools view \-b <BAM> | intersectBed \-abam stdin \-b genes.bed +.fi +T} +_ +T{ +\fB\-s\fP +T} T{ +Force strandedness. That is, only features in A are only counted towards coverage in B if they are the same strand. \fIBy default, this is disabled and coverage is counted without respect to strand\fP. +T} +_ +T{ +\fB\-hist\fP +T} T{ +Report a histogram of coverage for each feature in B as well as a summary histogram for _all_ features in B. +.nf +Output (tab delimited) after each feature in B: +.fi +.sp +.INDENT 0.0 +.INDENT 3.5 +.nf +1) depth +2) # bases at depth +3) size of B +4) % of B at depth +.fi +.sp +.UNINDENT +.UNINDENT +T} +_ +T{ +\fB\-d\fP +T} T{ +Report the depth at each position in each B feature. Positions reported are one based. Each position and depth follow the complete B feature. +T} +_ +T{ +\fB\-split\fP +T} T{ +Treat "split" BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR "N" and "D" operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +T} +_ +.TE +.SS 5.9.2 Default behavior +.sp +After each interval in B, \fBcoverageBed\fP will report: +.INDENT 0.0 +.IP 1. 3 +The number of features in A that overlapped (by at least one base pair) the B interval. +.IP 2. 3 +The number of bases in B that had non\-zero coverage from features in A. +.IP 3. 3 +The length of the entry in B. +.IP 4. 3 +The fraction of bases in B that had non\-zero coverage from features in A. +.UNINDENT +.sp +Below are the number of features in A (N=...) overlapping B and fraction of bases in B with coverage. +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BED FILE B *************** *************** ****** ************** + +BED File A ^^^^ ^^^^ ^^ ^^^^^^^^^ ^^^ ^^ ^^^^ + ^^^^^^^^ ^^^^^ ^^^^^ ^^ + +Result [ N=3, 10/15 ] [ N=1, 2/16 ] [N=1,6/6] [N=5, 11/12 ] +.ft P +.fi +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 10 20 +chr1 20 30 +chr1 30 40 +chr1 100 200 + +cat B.bed +chr1 0 100 +chr1 100 200 +chr2 0 100 + +coverageBed \-a A.bed \-b B.bed +chr1 0 100 3 30 100 0.3000000 +chr1 100 200 1 100 100 1.0000000 +chr2 0 100 0 0 100 0.0000000 +.ft P +.fi +.SS 5.9.4 (\-s)Calculating coverage by strand +.sp +Use the "\fB\-s\fP" option if one wants to only count coverage if features in A are on the same strand as the +feature / window in B. This is especially useful for RNA\-seq experiments. +.sp +For example (note the difference in coverage with and without \fB\-s\fP: +.sp +.nf +.ft C +cat A.bed +chr1 10 20 a1 1 \- +chr1 20 30 a2 1 \- +chr1 30 40 a3 1 \- +chr1 100 200 a4 1 + + +cat B.bed +chr1 0 100 b1 1 + +chr1 100 200 b2 1 \- +chr2 0 100 b3 1 + + +coverageBed \-a A.bed \-b B.bed +chr1 0 100 b1 1 + 3 30 100 0.3000000 +chr1 100 200 b2 1 \- 1 100 100 1.0000000 +chr2 0 100 b3 1 + 0 0 100 0.0000000 + +coverageBed \-a A.bed \-b B.bed \-s +chr1 0 100 b1 1 + 0 0 100 0.0000000 +chr1 100 200 b2 1 \- 0 0 100 0.0000000 +chr2 0 100 b3 1 + 0 0 100 0.0000000 +.ft P +.fi +.SS 5.9.5 (\-hist)Creating a histogram of coverage for each feature in the B file +.sp +One should use the "\fB\-hist\fP" option to create, for each interval in B, a histogram of coverage of the +features in A across B. +.sp +In this case, each entire feature in B will be reported, followed by the depth of coverage, the number of +bases at that depth, the size of the feature, and the fraction covered. After all of the features in B have +been reported, a histogram summarizing the coverage among all features in B will be reported. +.sp +.nf +.ft C +cat A.bed +chr1 10 20 a1 1 \- +chr1 20 30 a2 1 \- +chr1 30 40 a3 1 \- +chr1 100 200 a4 1 + + +cat B.bed +chr1 0 100 b1 1 + +chr1 100 200 b2 1 \- +chr2 0 100 b3 1 + + +coverageBed \-a A.bed \-b B.bed \-hist +chr1 0 100 b1 1 + 0 70 100 0.7000000 +chr1 0 100 b1 1 + 1 30 100 0.3000000 +chr1 100 200 b2 1 \- 1 100 100 1.0000000 +chr2 0 100 b3 1 + 0 100 100 1.0000000 +all 0 170 300 0.5666667 +all 1 130 300 0.4333333 +.ft P +.fi +.SS 5.9.6 (\-hist)Reporting the per\-base of coverage for each feature in the B file +.sp +One should use the "\fB\-d\fP" option to create, for each interval in B, a detailed list of coverage at each of the +positions across each B interval. +.sp +The output will consist of a line for each one\-based position in each B feature, followed by the coverage +detected at that position. +.sp +.nf +.ft C +cat A.bed +chr1 0 5 +chr1 3 8 +chr1 4 8 +chr1 5 9 + +cat B.bed +chr1 0 10 + +coverageBed \-a A.bed \-b B.bed \-d +chr1 0 10 B 1 1 +chr1 0 10 B 2 1 +chr1 0 10 B 3 1 +chr1 0 10 B 4 2 +chr1 0 10 B 5 3 +chr1 0 10 B 6 3 +chr1 0 10 B 7 3 +chr1 0 10 B 8 3 +chr1 0 10 B 9 1 +chr1 0 10 B 10 0 +.ft P +.fi +.SS 5.9.7 (\-split)Reporting coverage with spliced alignments or blocked BED features +.sp +As described in section 1.3.19, coverageBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA\-seq reads, for +example, one typically wants to only tabulate coverage for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The \fB\-split\fP command allows for such coverage to be +performed. +.SS 5.10 genomeCoverageBed +.sp +\fBgenomeCoverageBed\fP computes a histogram of feature coverage (e.g., aligned sequences) for a given +genome. Optionally, by using the \fB\-d\fP option, it will report the depth of coverage at \fIeach base\fP on each +chromosome in the genome file (\fB\-g\fP). +.SS 5.10.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +genomeCoverageBed [OPTIONS] \-i <BED> \-g <GENOME> +.ft P +.fi +.sp +NOTE: genomeCoverageBed requires that the input BED file be sorted by +chromosome. A simple sort \-k1,1 will suffice. +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-ibam\fP +T} T{ +.INDENT 0.0 +.INDENT 3.5 +BAM file as input for coverage. Each BAM alignment in A added to the total coverage for the genome. Use "stdin" if passing it with a UNIX pipe: For example: +.UNINDENT +.UNINDENT +.nf +samtools view \-b <BAM> | genomeCoverageBed \-ibam stdin \-g hg18.genome +.fi +T} +_ +T{ +\fB\-d\fP +T} T{ +Report the depth at each genome position. \fIDefault behavior is to report a histogram\fP. +T} +_ +T{ +\fB\-max\fP +T} T{ +Combine all positions with a depth >= max into a single bin in the histogram. +T} +_ +T{ +\fB\-bg\fP +T} T{ +Report depth in BedGraph format. For details, see: \fI\%http://genome.ucsc.edu/goldenPath/help/bedgraph.html\fP +T} +_ +T{ +\fB\-bga\fP +T} T{ +Report depth in BedGraph format, as above (i.e., \-bg). However with this option, regions with zero coverage are also reported. This allows one to quickly extract all regions of a genome with 0 coverage by applying: "grep \-w 0$" to the output. +T} +_ +T{ +\fB\-split\fP +T} T{ +Treat "split" BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR "N" and "D" operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +T} +_ +T{ +\fB\-strand\fP +T} T{ +Calculate coverage of intervals from a specific strand. With BED files, requires at least 6 columns (strand is column 6). +T} +_ +.TE +.SS 5.10.2 Default behavior +.sp +By default, \fBgenomeCoverageBed\fP will compute a histogram of coverage for the genome file provided. +The default output format is as follows: +1. chromosome (or entire genome) +2. depth of coverage from features in input file +3. number of bases on chromosome (or genome) with depth equal to column 2. +4. size of chromosome (or entire genome) in base pairs +5. fraction of bases on chromosome (or entire genome) with depth equal to column 2. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 10 20 +chr1 20 30 +chr2 0 500 + +cat my.genome +chr1 1000 +chr2 500 + +genomeCoverageBed \-i A.bed \-g my.genome +chr1 0 980 1000 0.98 +chr1 1 20 1000 0.02 +chr2 1 500 500 1 +genome 0 980 1500 0.653333 +genome 1 520 1500 0.346667 +.ft P +.fi +.SS 5.10.3 (\-max)Controlling the histogram\(aqs maximum depth +.sp +Using the \fB\-max\fP option, \fBgenomeCoverageBed\fP will "lump" all positions in the genome having feature +coverage greather than or equal to \fBmax\fP into the \fBmax\fP histogram bin. For example, if one sets \fB\-max\fP +equal to 50, the max depth reported in the output will be 50 and all positions with a depth >= 50 will +be represented in bin 50. +.SS 5.10.4 (\-d)Reporting "per\-base" genome coverage +.sp +Using the \fB\-d\fP option, \fBgenomeCoverageBed\fP will compute the depth of feature coverage for each base +on each chromosome in genome file provided. +.sp +The "per\-base" output format is as follows: +1. chromosome +2. chromosome position +3. depth (number) of features overlapping this chromosome position. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 10 20 +chr1 20 30 +chr2 0 500 + +cat my.genome +chr1 1000 +chr2 500 + +genomeCoverageBed \-i A.bed \-g my.genome \-d | head \-15 | tail \-n 10 +chr1 6 0 +chr1 7 0 +chr1 8 0 +chr1 9 0 +chr1 10 0 +chr1 11 1 +chr1 12 1 +chr1 13 1 +chr1 14 1 +chr1 15 1 +.ft P +.fi +.SS 5.1.13 (\-split)Reporting coverage with spliced alignments or blocked BED features +.sp +As described in section 1.3.19, genomeCoverageBed will, by default, screen for overlaps against the +entire span of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA\-seq +reads, for example, one typically wants to only screen for overlaps for the portions of the reads that +come from exons (and ignore the interstitial intron sequence). The \fB\-split\fP command allows for such +overlaps to be performed. +.sp +For additional details, please visit the Usage From The Wild site and have a look at example 5, +contributed by Assaf Gordon. +.SS 5.11 fastaFromBed +.sp +\fBfastaFromBed\fP extracts sequences from a FASTA file for each of the intervals defined in a BED file. +The headers in the input FASTA file must exactly match the chromosome column in the BED file. +.SS 5.11.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +fastaFromBed [OPTIONS] \-fi <input FASTA> \-bed <BED/GFF/VCF> \-fo <output FASTA> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-name\fP +T} T{ +Use the "name" column in the BED file for the FASTA headers in the output FASTA file. +T} +_ +T{ +\fB\-tab\fP +T} T{ +Report extract sequences in a tab\-delimited format instead of in FASTA format. +T} +_ +T{ +\fB\-s\fP +T} T{ +Force strandedness. If the feature occupies the antisense strand, the sequence will be reverse complemented. \fIDefault: strand information is ignored\fP. +T} +_ +.TE +.SS 5.11.2 Default behavior +.sp +\fBfastaFromBed\fP will extract the sequence defined by the coordinates in a BED interval and create a +new FASTA entry in the output file for each extracted sequence. By default, the FASTA header for each +extracted sequence will be formatted as follows: "<chrom>:<start>\-<end>". +.sp +For example: +.sp +.nf +.ft C +$ cat test.fa +>chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 + +fastaFromBed \-fi test.fa \-bed test.bed \-fo test.fa.out + +cat test.fa.out +>chr1:5\-10 +AAACC +.ft P +.fi +.SS 5.11.3 Using the BED "name" column as a FASTA header. +.sp +Using the \fB\-name\fP option, one can set the FASTA header for each extracted sequence to be the "name" +columns from the BED feature. +.sp +For example: +.sp +.nf +.ft C +cat test.fa +>chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 myseq + +fastaFromBed \-fi test.fa \-bed test.bed \-fo test.fa.out \-name + +cat test.fa.out +>myseq +AAACC +.ft P +.fi +.SS 5.11.4 Creating a tab\-delimited output file in lieu of FASTA output. +.sp +Using the \fB\-tab\fP option, the \fB\-fo\fP output file will be tab\-delimited instead of in FASTA format. +.sp +For example: +.sp +.nf +.ft C +cat test.fa +>chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 myseq + +fastaFromBed \-fi test.fa \-bed test.bed \-fo test.fa.out.tab \-name \-tab + +cat test.fa.out +myseq AAACC +.ft P +.fi +.SS 5.11.5 (\-s)Forcing the extracted sequence to reflect the requested strand +.sp +\fBfastaFromBed\fP will extract the sequence in the orientation defined in the strand column when the "\-s" +option is used. +.sp +For example: +.sp +.nf +.ft C +cat test.fa +>chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 20 25 forward 1 + +chr1 20 25 reverse 1 \- + +fastaFromBed \-fi test.fa \-bed test.bed \-s \-name \-fo test.fa.out + +cat test.fa.out +>forward +CGCTA +>reverse +TAGCG +.ft P +.fi +.SS 5.12 maskFastaFromBed +.sp +\fBmaskFastaFromBed\fP masks sequences in a FASTA file based on intervals defined in a feature file. The +headers in the input FASTA file must exactly match the chromosome column in the feature file. This +may be useful fro creating your own masked genome file based on custom annotations or for masking all +but your target regions when aligning sequence data from a targeted capture experiment. +.SS 5.12.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +maskFastaFromBed [OPTIONS] \-fi <input FASTA> \-bed <BED/GFF/VCF> \-fo <output FASTA> +.ft P +.fi +.sp +NOTE: The input and output FASTA files must be different. +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-soft\fP +T} T{ +Soft\-mask (that is, convert to lower\-case bases) the FASTA sequence. \fIBy default, hard\-masking (that is, conversion to Ns) is performed\fP. +T} +_ +.TE +.SS 5.12.2 Default behavior +.sp +\fBmaskFastaFromBed\fP will mask a FASTA file based on the intervals in a BED file. The newly masked +FASTA file is written to the output FASTA file. +.sp +For example: +.sp +.nf +.ft C +cat test.fa +>chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 + +maskFastaFromBed \-fi test.fa \-bed test.bed \-fo test.fa.out + +cat test.fa.out +>chr1 +AAAAANNNNNCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG +.ft P +.fi +.SS 5.12.3 Soft\-masking the FASTA file. +.sp +Using the \fB\-soft\fP option, one can optionally "soft\-mask" the FASTA file. +.sp +For example: +.sp +.nf +.ft C +cat test.fa +>chr1 +AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + +cat test.bed +chr1 5 10 + +maskFastaFromBed \-fi test.fa \-bed test.bed \-fo test.fa.out \-soft + +cat test.fa.out +>chr1 +AAAAAaaaccCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG +.ft P +.fi +.SS 5.13 shuffleBed +.sp +\fBshuffleBed\fP will randomly permute the genomic locations of a fearure file among a genome defined in a +genome file. One can also provide an "exclusions" BED/GFF/VCF file that lists regions where you do +not want the permuted features to be placed. For example, one might want to prevent features from +being placed in known genome gaps. \fBshuffleBed\fP is useful as a \fInull\fP basis against which to test the +significance of associations of one feature with another. +.SS 5.13.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +shuffleBed [OPTIONS] \-i <BED/GFF/VCF> \-g <GENOME> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-excl\fP +T} T{ +A BED file of coordinates in which features from \-i should \fInot\fP be placed (e.g., genome gaps). +T} +_ +T{ +\fB\-chrom\fP +T} T{ +Keep features in \-i on the same chromosome. Solely permute their location on the chromosome. \fIBy default, both the chromosome and position are randomly chosen\fP. +T} +_ +T{ +\fB\-seed\fP +T} T{ +Supply an integer seed for the shuffling. This will allow feature shuffling experiments to be recreated exactly as the seed for the pseudo\-random number generation will be constant. \fIBy default, the seed is chosen automatically\fP. +T} +_ +.TE +.SS 5.13.2 Default behavior +.sp +By default, \fBshuffleBed\fP will reposition each feature in the input BED file on a random chromosome at a +random position. The size and strand of each feature are preserved. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 \- + +cat my.genome +chr1 10000 +chr2 8000 +chr3 5000 +chr4 2000 + +shuffleBed \-i A.bed \-g my.genome +chr4 1498 1598 a1 1 + +chr3 2156 3156 a2 2 \- +.ft P +.fi +.SS 5.13.3 (\-chrom)Requiring that features be shuffled on the same chromosome +.sp +The "\fB\-chrom\fP" option behaves the same as the default behavior except that features are randomly +placed on the same chromosome as defined in the BED file. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 \- + +cat my.genome +chr1 10000 +chr2 8000 +chr3 5000 +chr4 2000 + +shuffleBed \-i A.bed \-g my.genome \-chrom +chr1 9560 9660 a1 1 + +chr1 7258 8258 a2 2 \- +.ft P +.fi +.SS 5.13.4 Excluding certain genome regions from shuffleBed +.sp +One may want to prevent BED features from being placed in certain regions of the genome. For +example, one may want to exclude genome gaps from permutation experiment. The "\fB\-excl\fP" option +defines a BED file of regions that should be excluded. \fBshuffleBed\fP will attempt to permute the +locations of all features while adhering to the exclusion rules. However it will stop looking for an +appropriate location if it cannot find a valid spot for a feature after 1,000,000 tries. +.sp +For example (\fInote that the exclude file excludes all but 100 base pairs of the chromosome\fP): +.sp +.nf +.ft C +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 \- + +cat my.genome +chr1 10000 + +cat exclude.bed +chr1 100 10000 + +shuffleBed \-i A.bed \-g my.genome \-excl exclude.bed +chr1 0 100 a1 1 + +Error, line 2: tried 1000000 potential loci for entry, but could not avoid excluded +regions. Ignoring entry and moving on. +.ft P +.fi +.sp +For example (\fInow the exclusion file only excludes the first 100 bases of the chromosome\fP): +.sp +.nf +.ft C +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 \- + +cat my.genome +chr1 10000 + +cat exclude.bed +chr1 0 100 + +shuffleBed \-i A.bed \-g my.genome \-excl exclude.bed +chr1 147 247 a1 1 + +chr1 2441 3441 a2 2 \- +.ft P +.fi +.SS 5.13.5 Defining a "seed" for the random replacement. +.sp +\fBshuffleBed\fP uses a pseudo\-random number generator to permute the locations of BED features. +Therefore, each run should produce a different result. This can be problematic if one wants to exactly +recreate an experiment. By using the "\fB\-seed\fP" option, one can supply a custom integer seed for +\fBshuffleBed\fP. In turn, each execution of \fBshuffleBed\fP with the same seed and input files should produce +identical results. +.sp +For example (\fInote that the exclude file below excludes all but 100 base pairs of the chromosome\fP): +.sp +.nf +.ft C +cat A.bed +chr1 0 100 a1 1 + +chr1 0 1000 a2 2 \- + +cat my.genome +chr1 10000 + +shuffleBed \-i A.bed \-g my.genome \-seed 927442958 +chr1 6177 6277 a1 1 + +chr1 8119 9119 a2 2 \- + +shuffleBed \-i A.bed \-g my.genome \-seed 927442958 +chr1 6177 6277 a1 1 + +chr1 8119 9119 a2 2 \- + +\&. . . + +shuffleBed \-i A.bed \-g my.genome \-seed 927442958 +chr1 6177 6277 a1 1 + +chr1 8119 9119 a2 2 \- +.ft P +.fi +.SS 5.14 slopBed +.sp +\fBslopBed\fP will increase the size of each feature in a feature file be a user\-defined number of bases. While +something like this could be done with an "\fBawk \(aq{OFS="t" print $1,$2\-<slop>,$3+<slop>}\(aq\fP", +\fBslopBed\fP will restrict the resizing to the size of the chromosome (i.e. no start < 0 and no end > +chromosome size). +.SS 5.14.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +slopBed [OPTIONS] \-i <BED/GFF/VCF> \-g <GENOME> [\-b or (\-l and \-r)] +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-b\fP +T} T{ +Increase the BED/GFF/VCF entry by the same number base pairs in each direction. \fIInteger\fP. +T} +_ +T{ +\fB\-l\fP +T} T{ +The number of base pairs to subtract from the start coordinate. \fIInteger\fP. +T} +_ +T{ +\fB\-r\fP +T} T{ +The number of base pairs to add to the end coordinate. \fIInteger\fP. +T} +_ +T{ +\fB\-s\fP +T} T{ +Define \-l and \-r based on strand. For example. if used, \-l 500 for a negative\-stranded feature, it will add 500 bp to the \fIend\fP coordinate. +T} +_ +.TE +.SS 5.14.2 Default behavior +.sp +By default, \fBslopBed\fP will either add a fixed number of bases in each direction (\fB\-b\fP) or an asymmetric +number of bases in each direction (\fB\-l\fP and \fB\-r\fP). +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 5 100 +chr1 800 980 + +cat my.genome +chr1 1000 + +slopBed \-i A.bed \-g my.genome \-b 5 +chr1 0 105 +chr1 795 985 + +slopBed \-i A.bed \-g my.genome \-l 2 \-r 3 +chr1 3 103 +chr1 798 983 +.ft P +.fi +.sp +However, if the requested number of bases exceeds the boundaries of the chromosome, \fBslopBed\fP will +"clip" the feature accordingly. +.sp +.nf +.ft C +cat A.bed +chr1 5 100 +chr1 800 980 + +cat my.genome +chr1 1000 + +slopBed \-i A.bed \-g my.genome \-b 5000 +chr1 0 1000 +chr1 0 1000 +.ft P +.fi +.SS 5.14.3 Resizing features according to strand +.sp +\fBslopBed\fP will optionally increase the size of a feature based on strand. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 a1 1 + +chr1 100 200 a2 2 \- + +cat my.genome +chr1 1000 + +slopBed \-i A.bed \-g my.genome \-l 50 \-r 80 \-s +chr1 50 280 a1 1 + +chr1 20 250 a2 2 \- +.ft P +.fi +.SS 5.15 sortBed +.sp +\fBsortBed\fP sorts a feature file by chromosome and other criteria. +.SS 5.15.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +sortBed [OPTIONS] \-i <BED/GFF/VCF> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-sizeA\fP +T} T{ +Sort by feature size in ascending order. +T} +_ +T{ +\fB\-sizeD\fP +T} T{ +Sort by feature size in descending order. +T} +_ +T{ +\fB\-chrThenSizeA\fP +T} T{ +Sort by chromosome, then by feature size (asc). +T} +_ +T{ +\fB\-chrThenSizeD\fP +T} T{ +Sort by chromosome, then by feature size (desc). +T} +_ +T{ +\fB\-chrThenScoreA\fP +T} T{ +Sort by chromosome, then by score (asc). +T} +_ +T{ +\fB\-chrThenScoreD\fP +T} T{ +Sort by chromosome, then by score (desc). +T} +_ +.TE +.SS 5.15.2 Default behavior +.sp +By default, \fBsortBed\fP sorts a BED file by chromosome and then by start position in ascending order. +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 800 1000 +chr1 80 180 +chr1 1 10 +chr1 750 10000 + +sortBed \-i A.bed +chr1 1 10 +chr1 80 180 +chr1 750 10000 +chr1 800 1000 +.ft P +.fi +.SS 5.15.3 Optional sorting behavior +.sp +\fBsortBed\fP will also sorts a BED file by chromosome and then by other criteria. +.sp +For example, to sort by chromosome and then by feature size (in descending order): +.sp +.nf +.ft C +cat A.bed +chr1 800 1000 +chr1 80 180 +chr1 1 10 +chr1 750 10000 + +sortBed \-i A.bed \-sizeD +chr1 750 10000 +chr1 800 1000 +chr1 80 180 +chr1 1 10 +.ft P +.fi +.sp +\fBDisclaimer:\fP it should be noted that \fBsortBed\fP is merely a convenience utility, as the UNIX sort utility +will sort BED files more quickly while using less memory. For example, UNIX sort will sort a BED file +by chromosome then by start position in the following manner: +.sp +.nf +.ft C +sort \-k 1,1 \-k2,2 \-n a.bed +chr1 1 10 +chr1 80 180 +chr1 750 10000 +chr1 800 1000 +.ft P +.fi +.SS 5.16 linksBed +.sp +Creates an HTML file with links to an instance of the UCSC Genome Browser for all features / +intervals in a file. This is useful for cases when one wants to manually inspect through a large set of +annotations or features. +.SS 5.16.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +linksBed [OPTIONS] \-i <BED/GFF/VCF> > <HTML file> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-base\fP +T} T{ +The "basename" for the UCSC browser. \fIDefault: http://genome.ucsc.edu\fP +T} +_ +T{ +\fB\-org\fP +T} T{ +The organism (e.g. mouse, human). \fIDefault: human\fP +T} +_ +T{ +\fB\-db\fP +T} T{ +The genome build. \fIDefault: hg18\fP +T} +_ +.TE +.SS 5.16.2 Default behavior +.sp +By default, \fBlinksBed\fP creates links to the public UCSC Genome Browser. +.sp +For example: +.sp +.nf +.ft C +head genes.bed +chr21 9928613 10012791 uc002yip.1 0 \- +chr21 9928613 10012791 uc002yiq.1 0 \- +chr21 9928613 10012791 uc002yir.1 0 \- +chr21 9928613 10012791 uc010gkv.1 0 \- +chr21 9928613 10061300 uc002yis.1 0 \- +chr21 10042683 10120796 uc002yit.1 0 \- +chr21 10042683 10120808 uc002yiu.1 0 \- +chr21 10079666 10120808 uc002yiv.1 0 \- +chr21 10080031 10081687 uc002yiw.1 0 \- +chr21 10081660 10120796 uc002yix.2 0 \- + +linksBed \-i genes.bed > genes.html +.ft P +.fi +.sp +When genes.html is opened in a web browser, one should see something like the following, where each +link on the page is built from the features in genes.bed: +.SS 5.16.3 Creating HTML links to a local UCSC Browser installation +.sp +Optionally, \fBlinksBed\fP will create links to a local copy of the UCSC Genome Browser. +.sp +For example: +.sp +.nf +.ft C +head \-3 genes.bed +chr21 9928613 10012791 uc002yip.1 0 \- +chr21 9928613 10012791 uc002yiq.1 0 \- + +linksBed \-i genes.bed \-base http://mirror.uni.edu > genes.html +.ft P +.fi +.sp +One can point the links to the appropriate organism and genome build as well: +.sp +.nf +.ft C +head \-3 genes.bed +chr21 9928613 10012791 uc002yip.1 0 \- +chr21 9928613 10012791 uc002yiq.1 0 \- + +linksBed \-i genes.bed \-base http://mirror.uni.edu \-org mouse \-db mm9 > genes.html +.ft P +.fi +.SS 5.17 complementBed +.sp +\fBcomplementBed\fP returns the intervals in a genome that are not by the features in a feature file. An +example usage of this tool would be to return the intervals of the genome that are not annotated as a +repeat. +.SS 5.17.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +complementBed [OPTIONS] \-i <BED/GFF/VCF> \-g <GENOME> +.ft P +.fi +.sp +\fBNo additional options.\fP +.SS 5.17.2 Default behavior +.sp +Figure: +.sp +.nf +.ft C +Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +BED FILE A ************* *************** ****************** + +Result === === ===== ======= +.ft P +.fi +.sp +For example: +.sp +.nf +.ft C +cat A.bed +chr1 100 200 +chr1 400 500 +chr1 500 800 + +cat my.genome +chr1 1000 + +complementBed \-i A.bed \-g my.genome +chr1 0 100 +chr1 200 400 +chr1 800 1000 +.ft P +.fi +.SS 5.18 bedToBam +.sp +\fBbedToBam\fP converts features in a feature file to BAM format. This is useful as an efficient means of +storing large genome annotations in a compact, indexed format for visualization purposes. +.SS 5.18.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +bedToBam [OPTIONS] \-i <BED/GFF/VCF> \-g <GENOME> > <BAM> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-mapq\fP +T} T{ +Set a mapping quality (SAM MAPQ field) value for all BED entries. \fIDefault: 255\fP +T} +_ +T{ +\fB\-ubam\fP +T} T{ +Write uncompressed BAM output. The default is write compressed BAM output. +T} +_ +T{ +\fB\-bed12\fP +T} T{ +Indicate that the input BED file is in BED12 (a.k.a "blocked" BED) format. In this case, bedToBam will convert blocked BED features (e.g., gene annotaions) into "spliced" BAM alignments by creating an appropriate CIGAR string. +T} +_ +.TE +.SS 5.18.2 Default behavior +.sp +The default behavior is to assume that the input file is in unblocked format. For example: +.sp +.nf +.ft C +head \-5 rmsk.hg18.chr21.bed +chr21 9719768 9721892 ALR/Alpha 1004 + +chr21 9721905 9725582 ALR/Alpha 1010 + +chr21 9725582 9725977 L1PA3 3288 + +chr21 9726021 9729309 ALR/Alpha 1051 + +chr21 9729320 9729809 L1PA3 3897 \- + +bedToBam \-i rmsk.hg18.chr21.bed \-g human.hg18.genome > rmsk.hg18.chr21.bam + +samtools view rmsk.hg18.chr21.bam | head \-5 +ALR/Alpha 0 chr21 9719769 255 2124M * 0 0 * * +ALR/Alpha 0 chr21 9721906 255 3677M * 0 0 * * +L1PA3 0 chr21 9725583 255 395M * 0 0 * * +ALR/Alpha 0 chr21 9726022 255 3288M * 0 0 * * +L1PA3 16 chr21 9729321 255 489M * 0 0 * * +.ft P +.fi +.SS 5.18.3 Creating "spliced" BAM entries from "blocked" BED features +.sp +Optionally, \fBbedToBam\fP will create spliced BAM entries from "blocked" BED features by using the +\-bed12 option. This will create CIGAR strings in the BAM output that will be displayed as "spliced" +alignments. The image illustrates this behavior, as the top track is a BAM representation (using +bedToBam) of a BED file of UCSC genes. +.sp +For example: +.sp +.nf +.ft C +bedToBam \-i knownGene.hg18.chr21.bed \-g human.hg18.genome \-bed12 > knownGene.bam + +samtools view knownGene.bam | head \-2 +uc002yip.1 16 chr21 9928614 2 5 5 + +298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M +738N64M146N100M1647N120M6478N162M1485N51M6777N60M9274N54M880N54M1229N54M2377N54M112 +68N58M2666N109M2885N158M * 0 0 * * +uc002yiq.1 16 chr21 9928614 2 5 5 + +298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M +738N64M146N100M1647N120M6478N162M1485N51M6777N60M10208N54M1229N54M2377N54M11268N58M +2666N109M2885N158M * 0 0 * * +.ft P +.fi +.SS 5.19 overlap +.sp +\fBoverlap\fP computes the amount of overlap (in the case of positive values) or distance (in the case of +negative values) between feature coordinates occurring on the same input line and reports the result at +the end of the same line. In this way, it is a useful method for computing custom overlap scores from +the output of other BEDTools. +.SS 5.19.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +overlap [OPTIONS] \-i <input> \-cols s1,e1,s2,e2 +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-i\fP +T} T{ +Input file. Use "stdin" for pipes. +T} +_ +T{ +\fB\-cols\fP +T} T{ +Specify the columns (1\-based) for the starts and ends of the features for which you\(aqd like to compute the overlap/distance. The columns must be listed in the following order: \fIstart1,end1,start2,end2\fP +T} +_ +.TE +.SS 5.19.2 Default behavior +.sp +The default behavior is to compute the amount of overlap between the features you specify based on the +start and end coordinates. For example: +.sp +.nf +.ft C +windowBed \-a A.bed \-b B.bed \-w 10 +chr1 10 20 A chr1 15 25 B +chr1 10 20 C chr1 25 35 D +.ft P +.fi +.sp +# Now let\(aqs say we want to compute the number of base pairs of overlap +# between the overlapping features from the output of windowBed. +.sp +.nf +.ft C +windowBed \-a A.bed \-b B.bed \-w 10 | overlap \-i stdin \-cols 2,3,6,7 +chr1 10 20 A chr1 15 25 B 5 +chr1 10 20 C chr1 25 35 D \-5 +.ft P +.fi +.SS 5.20 bedToIgv +.sp +\fBbedToIgv\fP creates an IGV (\fI\%http://www.broadinstitute.org/igv/\fP) batch script (see: \fI\%http://\fP +www.broadinstitute.org/igv/batch for details) such that a ??snapshot?? will be taken at each features in a +feature file. This is useful as an efficient means for quickly collecting images of primary data at several +loci for subsequent screening, etc. +.sp +\fBNOTE: One must use IGV version 1.5 or higher.\fP +.SS 5.20.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +bedToIgv [OPTIONS] \-i <BED/GFF/VCF> > <igv.batch> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-path\fP +T} T{ +The full path to which the IGV snapshots should be written. \fIDefault: ./\fP +T} +_ +T{ +\fB\-sess\fP +T} T{ +The full path to an existing IGV session file to be loaded prior to taking snapshots. \fIDefault is for no session to be loaded and the assumption is that you already have IGV open and loaded with your relevant data prior to running the batch script\fP. +T} +_ +T{ +\fB\-sort\fP +T} T{ +The type of BAM sorting you would like to apply to each image. \fBValid sorting options\fP: \fIbase, position, strand, quality, sample, and readGroup Default is to apply no sorting at all\fP. +T} +_ +T{ +\fB\-clps\fP +T} T{ +Collapse the aligned reads prior to taking a snapshot. \fIDefault is to not collapse\fP. +T} +_ +T{ +\fB\-name\fP +T} T{ +Use the "name" field (column 4) for each image\(aqs filename. \fIDefault is to use the "chr:start\-pos.ext"\fP. +T} +_ +T{ +\fB\-slop\fP +T} T{ +Number of flanking base pairs on the left & right of the image. +T} +_ +T{ +\fB\-img\fP +T} T{ +The type of image to be created. \fBValid options\fP: \fIpng, eps, svg Default is png\fP. +T} +_ +.TE +.SS 5.20.2 Default behavior +.sp +Figure: +.sp +.nf +.ft C +bedToIgv \-i data/rmsk.hg18.chr21.bed | head \-9 +snapshotDirectory ./ +goto chr21:9719768\-9721892 +snapshot chr21:9719768\-9721892.png +goto chr21:9721905\-9725582 +snapshot chr21:9721905\-9725582.png +goto chr21:9725582\-9725977 +snapshot chr21:9725582\-9725977.png +goto chr21:9726021\-9729309 +snapshot chr21:9726021\-9729309.png +.ft P +.fi +.SS 5.20.3 Using a bedToIgv batch script within IGV. +.sp +Once an IGV batch script has been created with \fBbedToIgv\fP, it is simply a matter of running it from +within IGV. +.sp +For example, first create the batch script: +.sp +.nf +.ft C +bedToIgv \-i data/rmsk.hg18.chr21.bed > rmsk.igv.batch +.ft P +.fi +.sp +Then, open and launch the batch script from within IGV. This will immediately cause IGV to begin +taking snapshots of your requested regions. +.SS 5.21 bed12ToBed6 +.sp +\fBbed12ToBed6\fP is a convenience tool that converts BED features in BED12 (a.k.a. "blocked" BED +features such as genes) to discrete BED6 features. For example, in the case of a gene with six exons, +bed12ToBed6 would create six separate BED6 features (i.e., one for each exon). +.SS 5.21.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +bed12ToBed6 [OPTIONS] \-i <BED12> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-i\fP +T} T{ +The BED12 file that should be split into discrete BED6 features. \fIUse "stdin" when using piped input\fP. +T} +_ +.TE +.SS 5.21.2 Default behavior +.sp +Figure: +.sp +.nf +.ft C +head data/knownGene.hg18.chr21.bed | tail \-n 3 +chr21 10079666 10120808 uc002yiv.1 0 \- 10081686 1 0 1 2 0 6 0 8 + 0 4 528,91,101,215, 0,1930,39750,40927, +chr21 10080031 10081687 uc002yiw.1 0 \- 10080031 1 0 0 8 0 0 3 1 + 0 2 200,91, 0,1565, +chr21 10081660 10120796 uc002yix.2 0 \- 10081660 1 0 0 8 1 6 6 0 + 0 3 27,101,223,0,37756,38913, + +head data/knownGene.hg18.chr21.bed | tail \-n 3 | bed12ToBed6 \-i stdin +chr21 10079666 10080194 uc002yiv.1 0 \- +chr21 10081596 10081687 uc002yiv.1 0 \- +chr21 10119416 10119517 uc002yiv.1 0 \- +chr21 10120593 10120808 uc002yiv.1 0 \- +chr21 10080031 10080231 uc002yiw.1 0 \- +chr21 10081596 10081687 uc002yiw.1 0 \- +chr21 10081660 10081687 uc002yix.2 0 \- +chr21 10119416 10119517 uc002yix.2 0 \- +chr21 10120573 10120796 uc002yix.2 0 \- +.ft P +.fi +.SS 5.22 groupBy +.sp +\fBgroupBy\fP is a useful tool that mimics the "groupBy" clause in database systems. Given a file or stream +that is sorted by the appropriate "grouping columns", groupBy will compute summary statistics on +another column in the file or stream. This will work with output from all BEDTools as well as any other +tab\-delimited file or stream. +.sp +\fBNOTE: When using groupBy, the input data must be ordered by the same +columns as specified with the \-grp argument. For example, if \-grp is 1,2,3, the the +data should be pre\-grouped accordingly. When groupBy detects changes in the +group columns it then summarizes all lines with that group\fP. +.SS 5.22.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +groupBy [OPTIONS] \-i <input> \-opCol <input column> +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-i\fP +T} T{ +.INDENT 0.0 +.INDENT 3.5 +The input file that should be grouped and summarized. \fIUse "stdin" when using piped input\fP. +.UNINDENT +.UNINDENT +.sp +\fBNote: if \-i is omitted, input is assumed to come from standard input (stdin)\fP +T} +_ +T{ +\fB\-g OR \-grp\fP +T} T{ +Specifies which column(s) (1\-based) should be used to group the input. The columns must be comma\-separated and each column must be explicitly listed. No ranges (e.g. 1\-4) yet allowed. \fIDefault: 1,2,3\fP +T} +_ +T{ +\fB\-c OR \-opCol\fP +T} T{ +Specify the column (1\-based) that should be summarized. \fIRequired\fP. +T} +_ +T{ +\fB\-o OR \-op\fP +T} T{ +Specify the operation that should be applied to \fBopCol\fP. +.nf +Valid operations: +.fi +.sp +.INDENT 0.0 +.INDENT 3.5 +.nf +\fBsum\fP \- \fInumeric only\fP +\fBcount\fP \- \fInumeric or text\fP +\fBmin\fP \- \fInumeric only\fP +\fBmax\fP \- \fInumeric only\fP +\fBmean\fP \- \fInumeric only\fP +\fBstdev\fP \- \fInumeric only\fP +\fBmedian\fP \- \fInumeric only\fP +\fBmode\fP \- \fInumeric or text\fP +\fBantimode\fP \- \fInumeric or text\fP +\fBcollapse\fP (i.e., print a comma separated list) \- \fInumeric or text\fP +\fBfreqasc\fP \- \fIprint a comma separated list of values observed and the number of times they were observed. Reported in ascending order of frequency\fP +.fi +.sp +.UNINDENT +.UNINDENT +.nf +\fBfreqdesc\fP \- \fIprint a comma separated list of values observed and the number of times they were observed. Reported in descending order of frequency\fP +.fi +.sp +.INDENT 0.0 +.INDENT 3.5 +.nf +\fIDefault: sum\fP +.fi +.sp +.UNINDENT +.UNINDENT +T} +_ +.TE +.SS 5.22.2 Default behavior. +.sp +Let\(aqs imagine we have three incredibly interesting genetic variants that we are studying and we are +interested in what annotated repeats these variants overlap. +.sp +.nf +.ft C +cat variants.bed +chr21 9719758 9729320 variant1 +chr21 9729310 9757478 variant2 +chr21 9795588 9796685 variant3 + +intersectBed \-a variants.bed \-b repeats.bed \-wa \-wb > variantsToRepeats.bed +cat variantsToRepeats.bed +chr21 9719758 9729320 variant1 chr21 9719768 9721892 ALR/Alpha 1004 + +chr21 9719758 9729320 variant1 chr21 9721905 9725582 ALR/Alpha 1010 + +chr21 9719758 9729320 variant1 chr21 9725582 9725977 L1PA3 3288 + +chr21 9719758 9729320 variant1 chr21 9726021 9729309 ALR/Alpha 1051 + +chr21 9729310 9757478 variant2 chr21 9729320 9729809 L1PA3 3897 \- +chr21 9729310 9757478 variant2 chr21 9729809 9730866 L1P1 8367 + +chr21 9729310 9757478 variant2 chr21 9730866 9734026 ALR/Alpha 1036 \- +chr21 9729310 9757478 variant2 chr21 9734037 9757471 ALR/Alpha 1182 \- +chr21 9795588 9796685 variant3 chr21 9795589 9795713 (GAATG)n 308 + +chr21 9795588 9796685 variant3 chr21 9795736 9795894 (GAATG)n 683 + +chr21 9795588 9796685 variant3 chr21 9795911 9796007 (GAATG)n 345 + +chr21 9795588 9796685 variant3 chr21 9796028 9796187 (GAATG)n 756 + +chr21 9795588 9796685 variant3 chr21 9796202 9796615 (GAATG)n 891 + +chr21 9795588 9796685 variant3 chr21 9796637 9796824 (GAATG)n 621 + +.ft P +.fi +.sp +We can see that variant1 overlaps with 3 repeats, variant2 with 4 and variant3 with 6. We can use +groupBy to summarize the hits for each variant in several useful ways. The default behavior is to +compute the \fIsum\fP of the opCol. +.sp +.nf +.ft C +groupBy \-i variantsToRepeats.bed \-grp 1,2,3 \-opCol 9 +chr21 9719758 9729320 6353 +chr21 9729310 9757478 14482 +chr21 9795588 9796685 3604 +.ft P +.fi +.SS 5.22.3 Computing the min and max. +.sp +Now let\(aqs find the \fImin\fP and \fImax\fP repeat score for each variant. We do this by "grouping" on the variant +coordinate columns (i.e. cols. 1,2 and 3) and ask for the min and max of the repeat score column (i.e. +col. 9). +.sp +.nf +.ft C +groupBy \-i variantsToRepeats.bed \-g 1,2,3 \-c 9 \-o min +chr21 9719758 9729320 1004 +chr21 9729310 9757478 1036 +chr21 9795588 9796685 308 +.ft P +.fi +.sp +We can also group on just the \fIname\fP column with similar effect. +.sp +.nf +.ft C +groupBy \-i variantsToRepeats.bed \-grp 4 \-opCol 9 \-op min +variant1 1004 +variant2 1036 +variant3 308 +.ft P +.fi +.sp +What about the \fImax\fP score? Let\(aqs keep the coordinates and the name of the variants so that we +stay in BED format. +.sp +.nf +.ft C +groupBy \-i variantsToRepeats.bed \-grp 1,2,3,4 \-opCol 9 \-op max +chr21 9719758 9729320 variant1 3288 +chr21 9729310 9757478 variant2 8367 +chr21 9795588 9796685 variant3 891 +.ft P +.fi +.SS 5.22.4 Computing the mean and median. +.sp +Now let\(aqs find the \fImean\fP and \fImedian\fP repeat score for each variant. +.sp +.nf +.ft C +cat variantsToRepeats.bed | groupBy \-g 1,2,3,4 \-c 9 \-o mean +chr21 9719758 9729320 variant1 1588.25 +chr21 9729310 9757478 variant2 3620.5 +chr21 9795588 9796685 variant3 600.6667 + +groupBy \-i variantsToRepeats.bed \-grp 1,2,3,4 \-opCol 9 \-op median +chr21 9719758 9729320 variant1 1030.5 +chr21 9729310 9757478 variant2 2539.5 +chr21 9795588 9796685 variant3 652 +.ft P +.fi +.SS 5.22.5 Computing the mode and "antimode". +.sp +Now let\(aqs find the \fImode\fP and \fIantimode\fP (i.e., the least frequent) repeat score for each variant (in this case +they are identical). +.sp +.nf +.ft C +groupBy \-i variantsToRepeats.bed \-grp 1,2,3,4 \-opCol 9 \-op mode +chr21 9719758 9729320 variant1 1004 +chr21 9729310 9757478 variant2 1036 +chr21 9795588 9796685 variant3 308 + +groupBy \-i variantsToRepeats.bed \-grp 1,2,3,4 \-opCol 9 \-op antimode +chr21 9719758 9729320 variant1 1004 +chr21 9729310 9757478 variant2 1036 +chr21 9795588 9796685 variant3 308 +.ft P +.fi +.SS 5.22.6 Computing the count of lines for a given group. +.sp +Figure: +.sp +.nf +.ft C +groupBy \-i variantsToRepeats.bed \-g 1,2,3,4 \-c 9 \-c count +chr21 9719758 9729320 variant1 4 +chr21 9729310 9757478 variant2 4 +chr21 9795588 9796685 variant3 6 +.ft P +.fi +.SS 5.22.7 Collapsing: listing all of the values in the opCol for a given group. +.sp +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This "denormalizes" things. Now you have a list of all the +repeats on a single line. +.sp +.nf +.ft C +groupBy \-i variantsToRepeats.bed \-grp 1,2,3,4 \-opCol 9 \-op collapse +chr21 9719758 9729320 variant1 ALR/Alpha,ALR/Alpha,L1PA3,ALR/Alpha, +chr21 9729310 9757478 variant2 L1PA3,L1P1,ALR/Alpha,ALR/Alpha, +chr21 9795588 9796685 variant3 (GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n, +.ft P +.fi +.SS 5.22.8 Computing frequencies: freqasc and freqdesc. +.sp +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This "denormalizes" things. Now you have a list of all the +repeats on a single line. +.sp +.nf +.ft C +cat variantsToRepeats.bed | groupBy \-g 1 \-c 8 \-o freqdesc +chr21 (GAATG)n:6,ALR/Alpha:5,L1PA3:2,L1P1:1, + +cat variantsToRepeats.bed | groupBy \-g 1 \-c 8 \-o freqasc +chr21 L1P1:1,L1PA3:2,ALR/Alpha:5,(GAATG)n:6, +.ft P +.fi +.SS 5.23 unionBedGraphs +.sp +\fBunionBedGraphs\fP combines multiple BEDGRAPH files into a single file such that one can directly +compare coverage (and other text\-values such as genotypes) across multiple sample +.SS 5.23.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +unionBedGraphs [OPTIONS] \-i FILE1 FILE2 FILE3 ... FILEn +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-header\fP +T} T{ +Print a header line, consisting of chrom, start, end followed by the names of each input BEDGRAPH file. +T} +_ +T{ +\fB\-names\fP +T} T{ +A list of names (one per file) to describe each file in \-i. These names will be printed in the header line. +T} +_ +T{ +\fB\-empty\fP +T} T{ +Report empty regions (i.e., start/end intervals w/o values in all files). \fIRequires the \(aq\-g FILE\(aq parameter (see below)\fP. +T} +_ +T{ +\fB\-g\fP +T} T{ +The genome file to be used to calculate empty regions. +T} +_ +T{ +\fB\-filler TEXT\fP +T} T{ +Use TEXT when representing intervals having no value. Default is \(aq0\(aq, but you can use \(aqN/A\(aq or any other text. +T} +_ +T{ +\fB\-examples\fP +T} T{ +Show detailed usage examples. +T} +_ +.TE +.SS 5.23.2 Default behavior +.sp +Figure: +.sp +.nf +.ft C +cat 1.bg +chr1 1000 1500 10 +chr1 2000 2100 20 + +cat 2.bg +chr1 900 1600 60 +chr1 1700 2050 50 + +cat 3.bg +chr1 1980 2070 80 +chr1 2090 2100 20 + +cat sizes.txt +chr1 5000 + +unionBedGraphs \-i 1.bg 2.bg 3.bg +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +.ft P +.fi +.SS 5.23.3 Add a header line to the output +.sp +Figure: +.sp +.nf +.ft C +unionBedGraphs \-i 1.bg 2.bg 3.bg \-header +chrom start end 1 2 3 +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +.ft P +.fi +.SS 5.23.4 Add a header line with custom file names to the output +.sp +Figure: +.sp +.nf +.ft C +unionBedGraphs \-i 1.bg 2.bg 3.bg \-header \-names WT\-1 WT\-2 KO\-1 +chrom start end WT\-1 WT\-2 KO\-1 +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +.ft P +.fi +.SS 5.23.5 Include regions that have zero coverage in all BEDGRAPH files. +.sp +Figure: +.sp +.nf +.ft C +unionBedGraphs \-i 1.bg 2.bg 3.bg \-empty \-g sizes.txt \-header +chrom start end WT\-1 WT\-2 KO\-1 +chrom start end 1 2 3 +chr1 0 900 0 0 0 +chr1 900 1000 0 60 0 +chr1 1000 1500 10 60 0 +chr1 1500 1600 0 60 0 +chr1 1600 1700 0 0 0 +chr1 1700 1980 0 50 0 +chr1 1980 2000 0 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 0 80 +chr1 2070 2090 20 0 0 +chr1 2090 2100 20 0 20 +chr1 2100 5000 0 0 0 +.ft P +.fi +.SS 5.23.6 Use a custom value for missing values. +.sp +Figure: +.sp +.nf +.ft C +unionBedGraphs \-i 1.bg 2.bg 3.bg \-empty \-g sizes.txt \-header \-filler N/A +chrom start end WT\-1 WT\-2 KO\-1 +chrom start end 1 2 3 +chr1 0 900 N/A N/A N/A +chr1 900 1000 N/A 60 N/A +chr1 1000 1500 10 60 N/A +chr1 1500 1600 N/A 60 N/A +chr1 1600 1700 N/A N/A N/A +chr1 1700 1980 N/A 50 N/A +chr1 1980 2000 N/A 50 80 +chr1 2000 2050 20 50 80 +chr1 2050 2070 20 N/A 80 +chr1 2070 2090 20 N/A N/A +chr1 2090 2100 20 N/A 20 +chr1 2100 5000 N/A N/A N/A +.ft P +.fi +.SS 5.23.7 Use BEDGRAPH files with non\-numeric values. +.sp +Figure: +.sp +.nf +.ft C +cat 1.snp.bg +chr1 0 1 A/G +chr1 5 6 C/T + +cat 2.snp.bg +chr1 0 1 C/C +chr1 7 8 T/T + +cat 3.snp.bg +chr1 0 1 A/G +chr1 5 6 C/T + +unionBedGraphs \-i 1.snp.bg 2.snp.bg 3.snp.bg \-filler \-/\- +chr1 0 1 A/G C/C A/G +chr1 5 6 C/T \-/\- C/T +chr1 7 8 \-/\- T/T \-/\- +.ft P +.fi +.SS 5.24 annotateBed +.sp +\fBannotateBed\fP annotates one BED/VCF/GFF file with the coverage and number of overlaps observed +from multiple other BED/VCF/GFF files. In this way, it allows one to ask to what degree one feature +coincides with multiple other feature types with a single command. +.SS 5.24.1 Usage and option summary +.sp +Usage: +.sp +.nf +.ft C +annotateBed [OPTIONS] \-i <BED/GFF/VCF> \-files FILE1 FILE2 FILE3 ... FILEn +.ft P +.fi +.TS +center; +|l|l|. +_ +T{ +Option +T} T{ +Description +T} +_ +T{ +\fB\-namesr\fP +T} T{ +A list of names (one per file) to describe each file in \-i. These names will be printed as a header line. +T} +_ +T{ +\fB\-counts\fP +T} T{ +Report the count of features in each file that overlap \-i. Default behavior is to report the fraction of \-i covered by each file. +T} +_ +T{ +\fB\-both\fP +T} T{ +Report the count of features followed by the % coverage for each annotation file. Default is to report solely the fraction of \-i covered by each file. +T} +_ +T{ +\fB\-s\fP +T} T{ +Force strandedness. That is, only include hits in A that overlap B on the same strand. By default, hits are included without respect to strand. +T} +_ +.TE +.SS 5.24.2 Default behavior \- annotate one file with coverage from others. +.sp +By default, the fraction of each feature covered by each annotation file is reported after the complete +feature in the file to be annotated. +.sp +.nf +.ft C +cat variants.bed +chr1 100 200 nasty 1 \- +chr2 500 1000 ugly 2 + +chr3 1000 5000 big 3 \- + +cat genes.bed +chr1 150 200 geneA 1 + +chr1 175 250 geneB 2 + +chr3 0 10000 geneC 3 \- + +cat conserve.bed +chr1 0 10000 cons1 1 + +chr2 700 10000 cons2 2 \- +chr3 4000 10000 cons3 3 + + +cat known_var.bed +chr1 0 120 known1 \- +chr1 150 160 known2 \- +chr2 0 10000 known3 + + +annotateBed \-i variants.bed \-files genes.bed conserv.bed known_var.bed +chr1 100 200 nasty 1 \- 0.500000 1.000000 0.300000 +chr2 500 1000 ugly 2 + 0.000000 0.600000 1.000000 +chr3 1000 5000 big 3 \- 1.000000 0.250000 0.000000 +.ft P +.fi +.SS 5.24.3 Report the count of hits from the annotation files +.sp +Figure: +.sp +.nf +.ft C +annotateBed \-counts \-i variants.bed \-files genes.bed conserv.bed known_var.bed +chr1 100 200 nasty 1 \- 2 1 2 +chr2 500 1000 ugly 2 + 0 1 1 +chr3 1000 5000 big 3 \- 1 1 0 +.ft P +.fi +.SS 5.24.4 Report both the count of hits and the fraction covered from the annotation files +.sp +Figure: +.sp +.nf +.ft C +annotateBed \-both \-i variants.bed \-files genes.bed conserv.bed known_var.bed +#chr start end name score +/\- cnt1 pct1 cnt2 pct2 cnt3 pct3 +chr1 100 200 nasty 1 \- 2 0.500000 1 1.000000 2 0.300000 +chr2 500 1000 ugly 2 + 0 0.000000 1 0.600000 1 1.000000 +chr3 1000 5000 big 3 \- 1 1.000000 1 0.250000 0 0.000000 +.ft P +.fi +.SS 5.24.5 Restrict the reporting to overlaps on the same strand. +.sp +Note: Compare with the result from 5.24.3 +.sp +.nf +.ft C +annotateBed \-s \-i variants.bed \-files genes.bed conserv.bed known_var.bed +chr1 100 200 nasty var1 \- 0.000000 0.000000 0.000000 +chr2 500 1000 ugly var2 + 0.000000 0.000000 0.000000 +chr3 1000 5000 big var3 \- 1.000000 0.000000 0.000000 +.ft P +.fi +.SH EXAMPLE USAGE +.sp +Below are several examples of basic BEDTools usage. Example BED files are provided in the +/data directory of the BEDTools distribution. +.SS 6.1 intersectBed +.sp +6.1.1 Report the base\-pair overlap between sequence alignments and genes. +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed +.ft P +.fi +.sp +6.1.2 Report whether each alignment overlaps one or more genes. If not, the alignment is not reported. +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed \-u +.ft P +.fi +.sp +6.1.3 Report those alignments that overlap NO genes. Like "grep \-v" +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed \-v +.ft P +.fi +.sp +6.1.4 Report the number of genes that each alignment overlaps. +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed \-c +.ft P +.fi +.sp +6.1.5 Report the entire, original alignment entry for each overlap with a gene. +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed \-wa +.ft P +.fi +.sp +6.1.6 Report the entire, original gene entry for each overlap with a gene. +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed \-wb +.ft P +.fi +.sp +6.1.7 Report the entire, original alignment and gene entries for each overlap. +.sp +.nf +.ft C +intersectBed \-a reads.bed \-b genes.bed \-wa \-wb +.ft P +.fi +.sp +6.1.8 Only report an overlap with a repeat if it spans at least 50% of the exon. +.sp +.nf +.ft C +intersectBed \-a exons.bed \-b repeatMasker.bed \-f 0.50 +.ft P +.fi +.sp +6.1.9 Only report an overlap if comprises 50% of the structural variant and 50% of the segmental duplication. Thus, it is reciprocally at least a 50% overlap. +.sp +.nf +.ft C +intersectBed \-a SV.bed \-b segmentalDups.bed \-f 0.50 \-r +.ft P +.fi +.sp +6.1.10 Read BED A from stdin. For example, find genes that overlap LINEs but not SINEs. +.sp +.nf +.ft C +intersectBed \-a genes.bed \-b LINES.bed | intersectBed \-a stdin \-b SINEs.bed \-v +.ft P +.fi +.sp +6.1.11 Retain only single\-end BAM alignments that overlap exons. +.sp +.nf +.ft C +intersectBed \-abam reads.bam \-b exons.bed > reads.touchingExons.bam +.ft P +.fi +.sp +6.1.12 Retain only single\-end BAM alignments that do not overlap simple sequence +repeats. +.sp +.nf +.ft C +intersectBed \-abam reads.bam \-b SSRs.bed \-v > reads.noSSRs.bam +.ft P +.fi +.SS 6.2 pairToBed +.sp +6.2.1 Return all structural variants (in BEDPE format) that overlap with genes on either +end. +.sp +.nf +.ft C +pairToBed \-a sv.bedpe \-b genes > sv.genes +.ft P +.fi +.sp +6.2.2 Return all structural variants (in BEDPE format) that overlap with genes on both +end. +.sp +.nf +.ft C +pairToBed \-a sv.bedpe \-b genes \-type both > sv.genes +.ft P +.fi +.sp +6.2.3 Retain only paired\-end BAM alignments where neither end overlaps simple +sequence repeats. +.sp +.nf +.ft C +pairToBed \-abam reads.bam \-b SSRs.bed \-type neither > reads.noSSRs.bam +.ft P +.fi +.sp +6.2.4 Retain only paired\-end BAM alignments where both ends overlap segmental +duplications. +.sp +.nf +.ft C +pairToBed \-abam reads.bam \-b segdups.bed \-type both > reads.SSRs.bam +.ft P +.fi +.sp +6.2.5 Retain only paired\-end BAM alignments where neither or one and only one end +overlaps segmental duplications. +.sp +.nf +.ft C +pairToBed \-abam reads.bam \-b segdups.bed \-type notboth > reads.notbothSSRs.bam +.ft P +.fi +.SS 6.3 pairToPair +.sp +6.3.1 Find all SVs (in BEDPE format) in sample 1 that are also in sample 2. +.sp +.nf +.ft C +pairToPair \-a 1.sv.bedpe \-b 2.sv.bedpe | cut \-f 1\-10 > 1.sv.in2.bedpe +.ft P +.fi +.sp +6.3.2 Find all SVs (in BEDPE format) in sample 1 that are not in sample 2. +.sp +.nf +.ft C +pairToPair \-a 1.sv.bedpe \-b 2.sv.bedpe \-type neither | cut \-f 1\-10 > +.ft P +.fi +.sp +1.sv.notin2.bedpe +.SS 6.4 bamToBed +.sp +6.4.1 Convert BAM alignments to BED format. +.sp +.nf +.ft C +bamToBed \-i reads.bam > reads.bed +.ft P +.fi +.sp +6.4.2 Convert BAM alignments to BED format using the BAM edit distance (NM) as the +BED "score". +.sp +.nf +.ft C +bamToBed \-i reads.bam \-ed > reads.bed +.ft P +.fi +.sp +6.4.3 Convert BAM alignments to BEDPE format. +.sp +.nf +.ft C +bamToBed \-i reads.bam \-bedpe > reads.bedpe +.ft P +.fi +.SS 6.5 windowBed +.sp +6.5.1 Report all genes that are within 10000 bp upstream or downstream of CNVs. +.sp +.nf +.ft C +windowBed \-a CNVs.bed \-b genes.bed \-w 10000 +.ft P +.fi +.sp +6.5.2 Report all genes that are within 10000 bp upstream or 5000 bp downstream of +CNVs. +.sp +.nf +.ft C +windowBed \-a CNVs.bed \-b genes.bed \-l 10000 \-r 5000 +.ft P +.fi +.sp +6.5.3 Report all SNPs that are within 5000 bp upstream or 1000 bp downstream of genes. +Define upstream and downstream based on strand. +.sp +.nf +.ft C +windowBed \-a genes.bed \-b snps.bed \-l 5000 \-r 1000 \-sw +.ft P +.fi +.SS 6.6 closestBed +.sp +Note: By default, if there is a tie for closest, all ties will be reported. \fBclosestBed\fP allows overlapping +features to be the closest. +.sp +6.6.1 Find the closest ALU to each gene. +.sp +.nf +.ft C +closestBed \-a genes.bed \-b ALUs.bed +.ft P +.fi +.sp +6.6.2 Find the closest ALU to each gene, choosing the first ALU in the file if there is a +tie. +.sp +.nf +.ft C +closestBed \-a genes.bed \-b ALUs.bed \-t first +.ft P +.fi +.sp +6.6.3 Find the closest ALU to each gene, choosing the last ALU in the file if there is a +tie. +.sp +.nf +.ft C +closestBed \-a genes.bed \-b ALUs.bed \-t last +.ft P +.fi +.SS 6.7 subtractBed +.sp +Note: If a feature in A is entirely "spanned" by any feature in B, it will not be reported. +.sp +6.7.1 Remove introns from gene features. Exons will (should) be reported. +.sp +.nf +.ft C +subtractBed \-a genes.bed \-b introns.bed +.ft P +.fi +.SS 6.8 mergeBed +.sp +6.8.1 Merge overlapping repetitive elements into a single entry. +.sp +.nf +.ft C +mergeBed \-i repeatMasker.bed +.ft P +.fi +.sp +6.8.2 Merge overlapping repetitive elements into a single entry, returning the number of +entries merged. +.sp +.nf +.ft C +mergeBed \-i repeatMasker.bed \-n +.ft P +.fi +.sp +6.8.3 Merge nearby (within 1000 bp) repetitive elements into a single entry. +.sp +.nf +.ft C +mergeBed \-i repeatMasker.bed \-d 1000 +.ft P +.fi +.SS 6.9 coverageBed +.sp +6.9.1 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome. +.sp +.nf +.ft C +coverageBed \-a reads.bed \-b windows10kb.bed | head +chr1 0 10000 0 10000 0.00 +chr1 10001 20000 33 10000 0.21 +chr1 20001 30000 42 10000 0.29 +chr1 30001 40000 71 10000 0.36 +.ft P +.fi +.sp +6.9.2 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome and created a BEDGRAPH of the number of aligned reads in each window for +display on the UCSC browser. +.sp +.nf +.ft C +coverageBed \-a reads.bed \-b windows10kb.bed | cut \-f 1\-4 > windows10kb.cov.bedg +.ft P +.fi +.sp +6.9.3 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome and created a BEDGRAPH of the fraction of each window covered by at least +one aligned read for display on the UCSC browser. +.sp +.nf +.ft C +coverageBed \-a reads.bed \-b windows10kb.bed | awk ??{OFS="\et"; print $1,$2,$3,$6}?? +> windows10kb.pctcov.bedg +.ft P +.fi +.SS 6.10 complementBed +.sp +6.10.1 Report all intervals in the human genome that are not covered by repetitive +elements. +.sp +.nf +.ft C +complementBed \-i repeatMasker.bed \-g hg18.genome +.ft P +.fi +.SS 6.11 shuffleBed +.sp +6.11.1 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps. +.sp +.nf +.ft C +shuffleBed \-i variants.bed \-g hg18.genome \-excl genome_gaps.bed +.ft P +.fi +.sp +6.11.2 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps and require that the variants be randomly +placed on the same chromosome. +.sp +.nf +.ft C +shuffleBed \-i variants.bed \-g hg18.genome \-excl genome_gaps.bed \-chrom +.ft P +.fi +.SH ADVANCED USAGE +.SS 7.1 Mask all regions in a genome except for targeted capture regions. +.sp +# Add 500 bp up and downstream of each probe +.sp +.nf +.ft C +slopBed \-i probes.bed \-b 500 > probes.500bp.bed +.ft P +.fi +.sp +# Get a BED file of all regions not covered by the probes (+500 bp up/down) +.sp +.nf +.ft C +complementBed \-i probes.500bp.bed \-g hg18.genome > probes.500bp.complement.bed +.ft P +.fi +.sp +# Create a masked genome where all bases are masked except for the probes +500bp +.sp +.nf +.ft C +maskFastaFromBed \-in hg18.fa \-bed probes.500bp.complement.bed \-fo hg18.probecomplement. +masked.fa +.ft P +.fi +.SS 7.2 Screening for novel SNPs. +.sp +# Find all SNPs that are not in dbSnp and not in the latest 1000 genomes calls +.sp +.nf +.ft C +intersectBed \-a snp.calls.bed \-b dbSnp.bed \-v | intersectBed \-a stdin \-b 1KG.bed +\-v > snp.calls.novel.bed +.ft P +.fi +.sp +you can first use intersectBed with the "\-f 1.0" option. +.sp +.nf +.ft C +intersectBed \-a features.bed \-b windows.bed \-f 1.0 | coverageBed \-a stdin \-b +windows.bed > windows.bed.coverage +.ft P +.fi +.SS 7.4 Computing the coverage of BAM alignments on exons. +.sp +# One can combine SAMtools with BEDtools to compute coverage directly from the BAM +data by using bamToBed. +.sp +.nf +.ft C +bamToBed \-i reads.bam | coverageBed \-a stdin \-b exons.bed > exons.bed.coverage +.ft P +.fi +.sp +# Take it a step further and require that coverage be from properly\-paired reads. +.sp +.nf +.ft C +samtools view \-bf 0x2 reads.bam | bamToBed \-i stdin | coverageBed \-a stdin \-b +exons.bed > exons.bed.proper.coverage +.ft P +.fi +.SS 7.5 Computing coverage separately for each strand. +.sp +# Use grep to only look at forward strand features (i.e. those that end in "+"). +.sp +.nf +.ft C +bamToBed \-i reads.bam | grep \e+$ | coverageBed \-a stdin \-b genes.bed > +genes.bed.forward.coverage +.ft P +.fi +.sp +# Use grep to only look at reverse strand features (i.e. those that end in "\-"). +.sp +.nf +.ft C +bamToBed \-i reads.bam | grep \e\-$ | coverageBed \-a stdin \-b genes.bed > +genes.bed.forward.coverage +.ft P +.fi +.SS 7.6 Find structural variant calls that are private to one sample. +.sp +# : +.sp +.nf +.ft C +pairToPair \-a sample1.sv.bedpe \-b othersamples.sv.bedpe \-type neither > +sample1.sv.private.bedpe +.ft P +.fi +.SS 7.7 Exclude SV deletions that appear to be ALU insertions in the reference genome. +.sp +# We\(aqll require that 90% of the inner span of the deletion be overlapped by a +recent ALU. +.sp +.nf +.ft C +pairToBed \-a deletions.sv.bedpe \-b ALUs.recent.bed \-type notispan \-f 0.80 > +deletions.notALUsinRef.bedpe +.ft P +.fi +.sp +Refer to the mailing list. +.SH AUTHOR +UVa +.SH COPYRIGHT +2012 +.\" Generated by docutils manpage writer. +.\" +. diff --git a/docs/bedtools.ai b/docs/bedtools.ai new file mode 100644 index 0000000000000000000000000000000000000000..c962cbd10f3bd8ca75846991fe27beffec4468de --- /dev/null +++ b/docs/bedtools.ai @@ -0,0 +1,1426 @@ +%PDF-1.5 %âãÏÓ +1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[7 0 R 32 0 R]/Order 33 0 R/RBGroups[]>>/OCGs[7 0 R 32 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 53545/Subtype/XML/Type/Metadata>>stream +<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/pdf</dc:format> + <dc:title> + <rdf:Alt> + <rdf:li xml:lang="x-default">gemini</rdf:li> + </rdf:Alt> + </dc:title> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmp="http://ns.adobe.com/xap/1.0/" + xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/"> + <xmp:CreatorTool>Adobe Illustrator CS6 (Macintosh)</xmp:CreatorTool> + <xmp:CreateDate>2012-07-21T10:47:59-04:00</xmp:CreateDate> + <xmp:ModifyDate>2012-07-21T10:55:26-04:00</xmp:ModifyDate> + <xmp:MetadataDate>2012-07-21T10:55:26-04:00</xmp:MetadataDate> + <xmp:Thumbnails> + <rdf:Alt> + <rdf:li rdf:parseType="Resource"> + <xmpGImg:width>256</xmpGImg:width> + <xmpGImg:height>240</xmpGImg:height> + <xmpGImg:format>JPEG</xmpGImg:format> + <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgA8AEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F
XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXm3nvz/AHMN
zNp+mzfV4beq3N2uzFh9pVb9kL0J61/FV5lP5wRpSXmuJm7yVJr/AMEwOW+EWrxQp/4uh8bj8P8A
mrHwSvjB3+LofG4/D/mrHwSvjB3+LofG4/D/AJqx8Er4wd/i6HxuPw/5qx8Er4wd/i6HxuPw/wCa
sfBK+MHf4uh8bj8P+asfBK+MHf4uh8bj8P8AmrHwSvjB3+LofG4/D/mrHwSvjB3+LofG4/D/AJqx
8Er4wd/i6HxuPw/5qx8Er4wd/i6HxuPw/wCasfBK+MHf4uh8bj8P+asfBK+MHf4uh8bj8P8AmrHw
SvjB3+LofG4/D/mrHwSvjB3+LofG4/D/AJqx8Er4wd/i6HxuPw/5qx8Er4wd/i6HxuPw/wCasfBK
+MHf4uh8bj8P+asfBK+MHf4uh8bj8P8AmrHwSvjB3+LofG4/D/mrHwSvjB3+LofG4/D/AJqx8Er4
wT3y7571G3mDWN5J8O7WsxLIw91JI+kb5CUCGcZgva/L2uW+taXHfQjgTVJoq1KSL1Wv01HtkWSZ
Yq7FXYq7FXYq7FXYq+Y/NE8rWwZmJaWWsh8TQn9eW4ubVmOzGMyHHdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdiqJ012TULcqaEyKPoY0P4HIz5FlDmHvn5SuxtNRSvwiSMge5
DV/VmI5bPsVdirsVdirsVdirsVfL/mb/AHki/wCMn8DluHm05uTHMyGh2KuxV2KvUPI3lfyRf+W7
e61WOJr12kEhe4kjNFchfhWRR09spnKQOzdCMSN2Rw/l5+Xc/wDc2cctenC5mbp8pch4kmfhxVv+
VYeRv+rb/wAl7j/qpg8SSfDi7/lWHkb/AKtv/Je4/wCqmPiSXw4tN+WXkVVLNp1FG5JnuAB/yUx8
SS+HFCnyP+WKkq0MAYGhBu5ag/8AI3DxyRwRd/gj8sP99W//AEmS/wDVXHjkvBF3+CPyw/31b/8A
SZL/ANVceOS8EVWH8vPy7uKi3tI5f+MdzM1PukOPiSXw4oS+/J7yxMp+rSXFo/bi4dfpDgn/AIbC
MpQcQYdrv5SeYbBWlsHTUoV/ZQcJqf6hJB+hicmMoLXLEQwmRZIpGilRo5UNHjcFWBHYg7jLWtqu
KuxV2KuxV2KuxVXsP977b/jKn/EhglyKY8w99/KT/efUv9eL9TZhuYz/ABV2KuxV2KuxV2KuxV8v
+Zv95Iv+Mn8DluHm05uTHMyGh2KuxV2KqcoNMVQMiyBqrUEdCMil7D+SHmDVLyPUdMvp3njthHJa
mQlmUMWV1BNfh2Wg7ZTkDfjL1PKm14Z/zkBrF2uu6dpayMLZLUXJiBopeSR0qR3IEffpl2NpyPMo
jIwy1qVgkmKt+nJiraeujB0JVl3VhUEH5jFWa+U/zX8yaLMkV/I+p6dsHilPKVB4xyHfbwbb5ZCU
AWcchD3fSdWsNW06HULCUTWs68kcbHwII7EHYjKCKbwbSjzd5H0jzHbN6yCC/UUgvUA5gjoH/nX2
P0UwxmQxlAF4PrGk6jompSadqMfpzx7g9VdT0dD3U5kiVuNKNIcEHJIbxV2KuxV2Kq9h/vfbf8ZU
/wCJDBLkUx5h77+Un+8+pf68X6mzDcxn+KuxV2KuxV2KuxV2Kvl/zN/vJF/xk/gctw82nNyY5mQ0
OxV2KuxVoiuKrDEDir0f8kYwuramR3gT/ieU5eTdh5vX8ob3z9/zkAK+d7L/ALZsX/J+fLsfJpyc
2F2UQKjLQ0lHCFckhv0RirXojFVrW6kYqz78nPMEun60+izOfqeoVaFT0WdVrt/rqKfOmU5Y7W24
pb09ryhyGGfmn5UTW/Lst1Cn+5HTVae3YDdkUVkj9+QFR75OEqLCcbDwW2uAwzJcUosGuFXYq7FX
Yqr2H+99t/xlT/iQwS5FMeYe+/lJ/vPqX+vF+psw3MZ/irsVdirsVdirsVdir5f8zf7yRf8AGT+B
y3Dzac3JjmZDQ7FXYq7FXYq7FXo35K/8dXUv+MCf8TynNybcPN65lDkPn78//wDlN7L/ALZsX/J+
fLsfJpyc2H2P2B9GXBpKPGFDsVdirsVRGl3LWeq2V2ho1vPHKD/qOD/DARskGi+msw3Mdir5R1aC
Ow8xapYRbRWl3PBGP8mOVlH4DMqJ2cWQ3RETVXJsFTFXYq7FVew/3vtv+Mqf8SGCXIpjzD338pP9
59S/14v1NmG5jP8AFXYq7FXYq7FXYq7FXy/5m/3ki/4yfwOW4ebTm5MczIaHYq7FXYq7FXYq9G/J
X/jq6l/xgT/ieU5uTbh5vXMoch8/fn//AMpvZf8AbNi/5Pz5dj5NOTmw+x+wPoy4NJR4wodirsVd
iqM0eze91eytEFWnnjj/AOCYAnATskCy+lsw3MaZlVSzEBQKknYADFXyPquoJqHmHU7+P+7vLued
O20sjOP15kxcaSYWx+EZNrKvhV2KuxVXsP8Ae+2/4yp/xIYJcimPMPffyk/3n1L/AF4v1NmG5jP8
VdirsVdirsVdirsVfL/mb/eSL/jJ/A5bh5tObkxzMhodirsVdirsVdir0b8lf+OrqX/GBP8AieU5
uTbh5vXMoch8/fn/AP8AKb2X/bNi/wCT8+XY+TTk5sPsfsD6MuDSUeMKHYq7FXYq9F/KLyzJcag2
uzpS3teUdrX9qVhRmHsqn7z7ZTll0bcUer13KHIec/nP55i0TQX0i0kH6W1NDHRTvFbts7mnQsPh
X6T2ycI2wnKngFjEa5eGgp9AtFybBVxV2KuxVXsP977b/jKn/EhglyKY8w99/KT/AHn1L/Xi/U2Y
bmM/xV2KuxV2KuxV2KuxV8v+Zv8AeSL/AIyfwOW4ebTm5MczIaHYq7FXYq7FXYq9G/JX/jq6l/xg
T/ieU5uTbh5vXMoch8/fn/8A8pvZf9s2L/k/Pl2Pk05ObD7H7A+jLg0lHjCh2KuG5oNzirNfKX5Z
atq0iXGpI9jpwNTzHGaQeCKeg/yj9FcrlkAbIYyeb2ays7WxtIrS1jEVtAoSOMdABmOTbkAUwHz3
+cWjaFHJZ6Syajqu6/CawRHxdh9oj+VfpIyUYWxlOngN5d3+q6hNf38zXF3cNzllfqSf1AdAB0y4
BpJR9pb8RkwwJTFRQYUN4q7FXYqr2H+99t/xlT/iQwS5FMeYe+/lJ/vPqX+vF+psw3MZ/irsVdir
sVdirsVdir5f8zf7yRf8ZP4HLcPNpzcmOZkNDsVdirsVdirsVejfkr/x1dS/4wJ/xPKc3Jtw83rm
UOQ86/MSb8qE12Aebonk1P6shhZTdU9D1H4/3LKv2+Xvk430YSrqkUN5+QgH7uCQD5338WyfrYeh
W+u/kZ/vqT773/mrH1o9C5NQ/I5DUQsT/lC8YfcWOPrX0JxpXnX8pLBwbMw2kg+zL9Vl57/5fBm/
HAYyLISiGW2XmDStZt3/AEJqVtNPSo/3YV92iDRv+IysiubYDfJgHnnyX+aOqROsOsR31qf+PKL/
AEPkPArurf7OTLIyiGuUZF43qPl/VtMuvq+p2ktpN1CyqVqPFT0Ye4y0G2o7KttaADJAMSUciADC
hfirsVdirsVV7D/e+2/4yp/xIYJcimPMPffyk/3n1L/Xi/U2YbmM/wAVdirsVdirsVdirsVfL/mb
/eSL/jJ/A5bh5tObkxzMhodirsVdirsVdir0b8lf+OrqX/GBP+J5Tm5NuHm9cyhyHz7/AM5Aj/nd
rL/tmxf8n58ux8mnJzYLaxErlrUUUIGwob9E4q0YGxV0QuredLi3keGeM8o5YyVZSO4YbjBSQXs3
5Z/mbLqciaLrjD9IEUtLs7Cag+w9Ng/gf2vn1pnCtw3Qnexeg6npOm6paNaajbJc27dUkFaHxU9V
PuMrBpsIt4x58/La48vhtR04tcaRX4wd5IK/zU6p4N9/ib4ZLaJ46YYjg5a1L8VdirsVdiqvYf73
23/GVP8AiQwS5FMeYe+/lJ/vPqX+vF+psw3MZ/irsVdirsVdirsVdir5f8zf7yRf8ZP4HLcPNpzc
mOZkNDsVdirsVdirsVejfkr/AMdXUv8AjAn/ABPKc3Jtw83rmUOQ+fvz/wD+U3sv+2bF/wAn58ux
8mnJzYdYqOA+jLg0lHBBhQ3wGKtcBirigxVZxeORJYmKSxsHjdTQqymoIPiDgpQX0b5N1/8ATvl2
01Bqeuy8LlRtSVPhfb3+0PY5iyFFy4ysJxJHHLG0cih43BV0YVBBFCCDkWT54/MLyufLPmBoYQf0
ddgzWTHsK/FHXxQ/hTMmErDjTjRSNHDDLGtfirsVdiqvYf7323/GVP8AiQwS5FMeYe+/lJ/vPqX+
vF+psw3MZ/irsVdirsVdirsVdir5f8zf7yRf8ZP4HLcPNpzcmOZkNDsVdirsVdirsVejfkr/AMdX
Uv8AjAn/ABPKc3Jtw83rmUOQ+fvz/wD+U3sv+2bF/wAn58ux8mnJzYfY/YH0ZcGko8YUOxV2KuxV
xGKvVPyRvGNrqtiT8EckU6D3kDK3/JtcozBvwl6dlLc88/PDTEuPJwv6fvdOnjcN34Sn0mX6WZT9
GWYzu15Bs8UtJeSjMgOMUYMKuxV2Kq9h/vfbf8ZU/wCJDBLkUx5h77+Un+8+pf68X6mzDcxn+Kux
V2KuxV2KuxV2Kvl/zN/vJF/xk/gctw82nNyY5mQ0OxV2KuxV2KuxV6N+Sv8Ax1dS/wCMCf8AE8pz
cm3DzeuZQ5D5+/P/AP5Tey/7ZsX/ACfny7HyacnNh9j9gfRlwaSjxhQ7FXYq7FXYq9N/JKBvrGrT
78AsKexJLn8KZTmbsPV6rlDewj855kj/AC61NWNGla3RB4n6xG36lOThzYT5Pn/T2JAzIDjFNF6Z
JDeKuxVXsP8Ae+2/4yp/xIYJcimPMPffyk/3n1L/AF4v1NmG5jP8VdirsVdirsVdirsVfL/mb/eS
L/jJ/A5bh5tObkxzMhodirsVdirsVdir0b8lf+OrqX/GBP8AieU5uTbh5vXMoch8/fn/AP8AKb2X
/bNi/wCT8+XY+TTk5sPsfsD6MuDSUeMKHYq7FXYq7FXuv5Y6E+leWInmXjcXzfWZAeoVgBGp/wBi
K/TmNklZcnHGgy3K2x4x/wA5BeZIyth5chesnL65dgdhQpEp+dWNPlluMdWrIejy+wQ0GXBoKaL0
ySG8VdiqvYf7323/ABlT/iQwS5FMeYe+/lJ/vPqX+vF+psw3MZ/irsVdirsVdirsVdir5f8AM3+8
kX/GT+By3Dzac3JjmZDQ7FXYq7FXYq7FXpH5KIx1LU3/AGRDGD8yxp+rKc3Juw83rWUN75//AD/V
v8a2LUPE6dGAe1RPNX9eXY+TTk5sOsfsD6MuDSUeMKHYq7FXYqzv8vfy/uNUuItU1KIppcZDxxuN
5yOgof2PE9+mVZJ1sGzHjvcvZ8x3JY/5186aX5U0hr28YPO4K2doD8csgHQeCj9pu3zoMMRaJGnz
DqGpX+tatc6pfv6l1dOZJD2HgoHYKNh7ZkAOOSmNpFxUZMNZRYwq7FXYqr2H+99t/wAZU/4kMEuR
THmHvv5Sf7z6l/rxfqbMNzGf4q7FXYq7FXYq7FXYq+X/ADN/vJF/xk/gctw82nNyY5mQ0OxV2Kux
Vmflr8s77XdIi1KG9ihSUuojdWJHBivb5ZXLJRpsjjsWnMP5J3RI9bVkQd+EJb9brkfG8mXg+bOf
KflDTfLdpJDas0s05DXFxJTk3GvEADoBU0GVSlbbGACe5Fkwn8w/yytfN8lrdLeGyvbVTGsnD1Ed
CeXFlqpFD0IPfJxlTCUbYjB+RWrRbfpSBgOh4OMsGUNZxIj/AJUpqv8A1coP+AfHxgjwS7/lSuq/
9XKD/gHx8YL4JVYPyTvC37/VY0X/AIriZjT6WXHxk+D5sn0P8rfLOmOs0yNqFwu4a4oUB9oxRf8A
gq5CWQlnHEAyyae3toWlmkSGCMVZ3IRFA8SaAZW2POvN/wCd3l/Ske30amq34qA61Fsh8Wf9v5J1
8RkxjLAzDw7Wtb1nzFqT6hqtw1xcNstdlReyIo2VR4DLgKaSbVLS1pkgGBKZItBkkLsVdirsVV7D
/e+2/wCMqf8AEhglyKY8w99/KT/efUv9eL9TZhuYz/FXYq7FXYq7FXYq7FXy/wCZv95Iv+Mn8Dlu
Hm05uTHMyGh2KuxV2Kp7pfn7zPo1gljp9wsdtGWKKY0Y1YljuwJ6nIGALITIXSfm958B2vI/+REX
/NOR8MM/EKk35w/mB2vI/wDkRF/zTj4YXxCpN+cP5i9r2P8A6R4f+acHhhPiFofnD+Y3e+T/AKR4
f+acfDC+IVRfzh/MHvex/wDIiL/mnD4YR4hX/wDK4PP3/LZH/wAiIv8AmnHwwviFv/lcHn7/AJbI
/wDkRF/zTj4YXxC0fzg8/kEC9Qe4gi/iuPhhfEKEuPzS/MGZODaq4HikUMZ+9EU48ARxljmpalrW
qPz1C8nu2BqDPI8lPlyJpkgEEoaOxJO4OGkWjYLML2w0i0YiAYUL8VdirsVdiqvYf7323/GVP+JD
BLkUx5h77+Un+8+pf68X6mzDcxn+KuxV2KuxV2KuxV2Kvl/zN/vJF/xk/gctw82nNyY5mQ0OxV2K
uxVplriqk0AOKrfqy+GNLbX1ZfDBS276svhjS239WXww0tu+rL4Y0tu+rL4Y0tu+rL4Y0tu+rL4Y
KW2xbqO2FbVBEoxVcABireKuxV2KuxV2Kq9h/vfbf8ZU/wCJDBLkUx5h77+Un+8+pf68X6mzDcxn
+KuxV2KuxV2KuxV2Kvl/zN/vJF/xk/gctw82nNyY5mQ0OxV2KuxV2Kpl5ckCa7YBo45Uknjjkjmj
SVGV3CsCrhh0OCXJMeb1K50jTovNF/FPpunvoMFqrvbw28D3SsQByRIFNwN+52yi9vNvIF+TH/y8
ttPvo9fiFhBcx26GXTxPbxTTKW58RyZWZvsrscnk2phj3tKIZtUg1LSbbVtJt4Jp7lGX1LO3iLwO
3pMjwiJe4NCwr3GS2o0x3sWGW3VrozfmEfLkul2Z027t/gVLeKORHEZkLLKiq4rx8crs8NthA4qS
jy1a2kHnWLyxNZ21xa20l0ssk0EMrzAK7xkuyF14gDYNkpH02xiPVS2x06y17zpc6FPaQRWlleXM
nO3iigYwRMUWEmJEJFabk1xJqNqBcqROiWGk+Ytd13QprG3t7e3D/o+WCJI5YvRkEQJdQGflUE8y
cBJABTEAkhL7PRLTR/Idxr0tvFcanPOYLYzosscSrIY2IjcFGb4W6jwyRNypiBUbVdc0myTQ9A80
WlrBDPcukN7biNGgdmDfF6LAoPsHanhgB3ITIbAqH5sQWdnrlvZWVpb2lutuspWCGOMl2dwSWRQx
2UbVw4uSMvNNrny8/wDh/Sr/AMrWNnqFoIg2oRvDFNcSyUHMcpVZh0I4oQR2yPFvuy4dhTze9kjl
vJ5I4fq8byOyW4NfTUsSErQfZ6ZcGkqOKuxV2KuxVXsP977b/jKn/EhglyKY8w99/KT/AHn1L/Xi
/U2YbmM/xV2KuxV2KuxV2KuxV8v+Zv8AeSL/AIyfwOW4ebTm5MczIaHYq7FXYq7FUw0BrVNaspbq
4W2t4ZklkldXYARsGIAjV2JNNtsEuSY82fy+ZPKo89/4kGrK1qkHAW6Q3Hqu/ApSjRqlN6/ayrhP
DVNvEOK7QfljzL5diuvMd5d3aWK6wXW2tjHM7IGLnkxjRkH2+xwyidkRkN0g06DRra4sJbjXIpXt
rqJkCJdGOOBS0kmzwKeTPx4hfE18ckb7mArvZVc+ZvKa+dX8zjURPFBb8Le0jinEzSlTGf7xEjA4
sf2shwnhpsMhxWkHlPzBYjztJ5g1a5S0QvNKycZHJMysoVPTRvs8u9MlKPpoMIy9Vlba+ZrTR/Pt
zrVtKL2xuJ5ncxq6kxTsWpSRUPJaj298JjcaXiqVpnpvmTy7oOq6zrdnd/XZr8N9RtFjlRkMreow
lZ1VBxbb4S1ciYkgBkJAElL9P8y2F75OuPLmpz/VZll9eyu2V3jqX5ssgjV3G5bcKevthMaNhiJW
KKrrPmPSrnTtE8u2lyBY6eySXWoSJIEaRQfsoFaTj8Tfs98RE2SkyFAInzxf+VNe1r9Ix6svoRWb
RiER3CytOgkaMDlCU4lmWtWHfBAECqTMgm7QnlvUtL0LVob2z14rpxCtdWLRzmZzx+JCoj9E7/Zb
n0wyBI5IiQDzY3r2oxalrV7fxR+jHcytIkZpUBj3p38cnEUGEjZQGFDsVdirsVV7D/e+2/4yp/xI
YJcimPMPffyk/wB59S/14v1NmG5jP8VdirsVdirsVdirsVfL/mb/AHki/wCMn8DluHm05uTHMyGh
XFo6wQXM3JLWaR4xIo5H92EL0BKg0Eg742tK+u6YNL1i704SesLWQxiWnHlTvSpp9+CJsJkKKBwo
dirsVdirsVdirsVdiqtaWwubhYTLHByDH1JSQg4qWp8IY1NKDbriVCvFpU/+gyXAMNtfSFIpQORI
VgrMFJWtC3jgtNLdWsRYapeWIf1BaTyQCSlOXpuVrSppWmINhBFFCYVbAJIAFSdgBiqKbTZY7i8t
55I4JrIP6iyEjk8bhCiUB+Kp70wWtITCrsVXxxl5FUkIGIBdqhRy7mldsVV5tNuIoriYFZbe2nFs
06ElGdg5XhUAkERk9MFrSFwqr2H+99t/xlT/AIkMEuRTHmHvv5Sf7z6l/rxfqbMNzGf4q7FXYq7F
XYq7FXYq+X/M3+8kX/GT+By3Dzac3JjmZDQyKz1S2k8rrpU9+9sUuZZGj/ecXSSJFjHwK44rIpZg
e3SpyJG9sgdqT278x+X5dR1G6u7tdQtG1G1urO0KTE+lHz9XiJEVFqHFQSOVMgImmZkLY15i1Nbx
IE9aG5aJ5WE0Sz8uMnGis1wS3VSQoFF8d8nEMJFPrG8nttGt4LWVYtQisjNLaCSWJ/TSVrv1kCx+
n6hgUfF6teO3HIkbsgdlSLzRph162uPrcMGnpepcx8Y7n1YYVVgYj9pFBUhCsYKn2AwcJpeIWhYd
Y0pdKt47jUEm1JEvIo7oLOTA0xjMMgYxg8QI3Hw7ryqB1w0bWxTrbXdPjtLqL9I8bttNNvJd0n/0
i5+serGwohb93F8HN6Hw2x4VEkVPr2hPdX7XF8l5ZPFYtDaFJ6SSQPE1wKNGFDSem45Hry3PXBwl
eIJB5n1WG+aMRyxTqkszxvGs4YRyFeKO0x7cdlUcV3od8nEUxkbTTR9Y0NNJgsLq74QvaXMNwrJI
xSaUuY2WONeDhSVYM7FvDjTIkG0gilUeZkHmPRpn1j1NOthaNdOBPtJBCI5SQYw7F/iG1a98eHY7
J4txugpNWsptM0i1l1Jq2BMckf74oWF0XWUjgaoIWoP2q7UphrcovYJwfMWitrNrfPqqt6OsXF0J
AlxySylVSqbxjY8CCo8fnkeE18GXEL+KF0/WtMFnYwXurRycBfpeqyXLB0mh4W4/ut1V6sB+zXxw
kHuQCO9L73XrM6NDb2TxQ8LaGIwcZ/VW4icM8yEEQryILc/tb8aYRHdBlsj9W17TbybXpxqjOuoQ
MLa2kE5UfvopI4wOHFWUJIDvx3FD1wCPJJkN0s8w6vDdJcLZ3o/R05ie30v025QcFpwqyhEC1NTG
x5bV9jEMZFVstZ02Hy+lo8wWb6tcL+6M6SCVzJwVkoYJFaq1Y0YDofhGJBtIIpF6prun31neump+
nc3MmmzQRsJ+SSW8HozOWVGHLlvVTuB47YBGkmVtarr+m3MevW0eoOsN1em8tjGJVEqNFKPToVFP
3jpyDAClfbEROymQ3QXmfW7C+t2js/SW1eSKS2tgs3qwKkZUoS59JRvuIweVAdqYYikSNpDYf732
3/GVP+JDJS5FjHmHvv5Sf7z6l/rxfqbMNzGf4q7FXYq7FXYq7FXYq+aPNdhcRxSwsp9S0lKyr3HG
qn7jlmI7tWUWGJ5kuO7FXYq7FUR+kL/6v9W+sy/VqcfR5twpWtONadcaW0PirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdiqL0qCSa/hCCvBw7HwCmuRmaDKAsvfPymglWwv5yKRySoiHxKKS3/
ABIZiOWzzFXYq7FXYq7FXYq7FWGecvIP6VmbUNOZY71h++ifZJKbA1/Zan34q8/k/LDXObctHBNd
yrR0/BslxljwDuW/8qv1r/qz/wDDJ/zVh4yjgHc7/lV+tf8AVn/4ZP8AmrHjK8A7nf8AKr9a/wCr
P/wyf81Y8ZXgHc7/AJVfrX/Vn/4ZP+aseMrwDud/yq/Wv+rP/wAMn/NWPGV4B3O/5VfrX/Vn/wCG
T/mrHjK8A7nf8qv1r/qz/wDDJ/zVjxleAdzv+VX61/1Z/wDhk/5qx4yvAO53/Kr9a/6s/wDwyf8A
NWPGV4B3O/5VfrX/AFZ/+GT/AJqx4yvAO53/ACq/Wv8Aqz/8Mn/NWPGV4B3O/wCVX61/1Z/+GT/m
rHjK8A7nf8qv1r/qz/8ADJ/zVjxleAdzv+VX61/1Z/8Ahk/5qx4yvAO53/Kr9a/6s/8Awyf81Y8Z
XgHc7/lV+tf9Wf8A4ZP+aseMrwDud/yq/Wv+rP8A8Mn/ADVjxleAdzv+VX61/wBWf/hk/wCaseMr
wDud/wAqv1r/AKs//DJ/zVjxleAdzv8AlV+tf9Wf/hk/5qx4yvAO53/Kr9a/6s//AAyf81Y8ZXgH
cm2h/lbrDyBZoU062r+8YlWcj2VSd/mRkSSWQAD1XTNNtdNsYbK1XjDCKCvUnqWPuTucCUVirsVd
irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir
sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs
VdirsVdirsVdirsVdirsVdir/9k=</xmpGImg:image> + </rdf:li> + </rdf:Alt> + </xmp:Thumbnails> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" + xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" + xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"> + <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass> + <xmpMM:OriginalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</xmpMM:OriginalDocumentID> + <xmpMM:DocumentID>xmp.did:01801174072068118083B0FA56B130C2</xmpMM:DocumentID> + <xmpMM:InstanceID>uuid:d6a115c1-a2d7-f041-896e-4676d6256103</xmpMM:InstanceID> + <xmpMM:History> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:D47F11740720681191099C3B601C4548</stEvt:instanceID> + <stEvt:when>2008-04-17T14:19:21+05:30</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/pdf to <unknown></stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FD7F11740720681197C1BF14D1759E83</stEvt:instanceID> + <stEvt:when>2008-05-16T17:01:20-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F117407206811BC18AC99CBA78E83</stEvt:instanceID> + <stEvt:when>2008-05-19T18:10:15-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:FB7F117407206811B628E3BF27C8C41B</stEvt:instanceID> + <stEvt:when>2008-05-22T14:26:44-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:08C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID> + <stEvt:when>2008-05-28T16:51:46-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F77F11740720681192B0DFFC927805D7</stEvt:instanceID> + <stEvt:when>2008-05-30T21:26:38-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F87F11740720681192B0DFFC927805D7</stEvt:instanceID> + <stEvt:when>2008-05-30T21:27-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>converted</stEvt:action> + <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:F97F1174072068119098B097FDA39BEF</stEvt:instanceID> + <stEvt:when>2008-06-02T13:26:10-07:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed> + <rdf:Bag> + <rdf:li>/</rdf:li> + </rdf:Bag> + </stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:018011740720681197A5BF7539C7D275</stEvt:instanceID> + <stEvt:when>2012-03-21T09:11:02-04:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stEvt:action>saved</stEvt:action> + <stEvt:instanceID>xmp.iid:01801174072068118083B0FA56B130C2</stEvt:instanceID> + <stEvt:when>2012-07-21T10:47:59-04:00</stEvt:when> + <stEvt:softwareAgent>Adobe Illustrator CS6 (Macintosh)</stEvt:softwareAgent> + <stEvt:changed>/</stEvt:changed> + </rdf:li> + </rdf:Seq> + </xmpMM:History> + <xmpMM:DerivedFrom rdf:parseType="Resource"> + <stRef:instanceID>uuid:f8451fc5-a0f5-ad4e-87c0-17949d94c638</stRef:instanceID> + <stRef:documentID>xmp.did:0180117407206811AFFDDCE015F798CD</stRef:documentID> + <stRef:originalDocumentID>uuid:65E6390686CF11DBA6E2D887CEACB407</stRef:originalDocumentID> + <stRef:renditionClass>proof:pdf</stRef:renditionClass> + </xmpMM:DerivedFrom> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/"> + <illustrator:StartupProfile>Web</illustrator:StartupProfile> + <illustrator:Type>Document</illustrator:Type> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/" + xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" + xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font#" + xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/"> + <xmpTPg:NPages>1</xmpTPg:NPages> + <xmpTPg:HasVisibleTransparency>True</xmpTPg:HasVisibleTransparency> + <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint> + <xmpTPg:MaxPageSize rdf:parseType="Resource"> + <stDim:w>260.000000</stDim:w> + <stDim:h>260.000000</stDim:h> + <stDim:unit>Pixels</stDim:unit> + </xmpTPg:MaxPageSize> + <xmpTPg:Fonts> + <rdf:Bag> + <rdf:li rdf:parseType="Resource"> + <stFnt:fontName>CapitalsRegular</stFnt:fontName> + <stFnt:fontFamily>Capitals</stFnt:fontFamily> + <stFnt:fontFace>Regular</stFnt:fontFace> + <stFnt:fontType>TrueType</stFnt:fontType> + <stFnt:versionString>6.0d3e1</stFnt:versionString> + <stFnt:composite>False</stFnt:composite> + <stFnt:fontFileName>Capitals.dfont</stFnt:fontFileName> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <stFnt:fontName>CMUSerif-Roman</stFnt:fontName> + <stFnt:fontFamily>CMU Serif</stFnt:fontFamily> + <stFnt:fontFace>Roman</stFnt:fontFace> + <stFnt:fontType>Open Type</stFnt:fontType> + <stFnt:versionString>Version 0.6.3 </stFnt:versionString> + <stFnt:composite>False</stFnt:composite> + <stFnt:fontFileName>cmunrm.otf</stFnt:fontFileName> + </rdf:li> + </rdf:Bag> + </xmpTPg:Fonts> + <xmpTPg:PlateNames> + <rdf:Seq> + <rdf:li>Cyan</rdf:li> + <rdf:li>Magenta</rdf:li> + <rdf:li>Yellow</rdf:li> + <rdf:li>Black</rdf:li> + </rdf:Seq> + </xmpTPg:PlateNames> + <xmpTPg:SwatchGroups> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Default Swatch Group</xmpG:groupName> + <xmpG:groupType>0</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>White</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>Black</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Red</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Yellow</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Green</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Cyan</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>255</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Blue</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>RGB Magenta</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>255</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=193 G=39 B=45</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>193</xmpG:red> + <xmpG:green>39</xmpG:green> + <xmpG:blue>45</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=237 G=28 B=36</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>237</xmpG:red> + <xmpG:green>28</xmpG:green> + <xmpG:blue>36</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=241 G=90 B=36</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>241</xmpG:red> + <xmpG:green>90</xmpG:green> + <xmpG:blue>36</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=247 G=147 B=30</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>247</xmpG:red> + <xmpG:green>147</xmpG:green> + <xmpG:blue>30</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=251 G=176 B=59</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>251</xmpG:red> + <xmpG:green>176</xmpG:green> + <xmpG:blue>59</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=252 G=238 B=33</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>252</xmpG:red> + <xmpG:green>238</xmpG:green> + <xmpG:blue>33</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=217 G=224 B=33</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>217</xmpG:red> + <xmpG:green>224</xmpG:green> + <xmpG:blue>33</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=140 G=198 B=63</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>140</xmpG:red> + <xmpG:green>198</xmpG:green> + <xmpG:blue>63</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=57 G=181 B=74</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>57</xmpG:red> + <xmpG:green>181</xmpG:green> + <xmpG:blue>74</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=146 B=69</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>146</xmpG:green> + <xmpG:blue>69</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=104 B=55</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>104</xmpG:green> + <xmpG:blue>55</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=34 G=181 B=115</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>34</xmpG:red> + <xmpG:green>181</xmpG:green> + <xmpG:blue>115</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=169 B=157</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>169</xmpG:green> + <xmpG:blue>157</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=41 G=171 B=226</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>41</xmpG:red> + <xmpG:green>171</xmpG:green> + <xmpG:blue>226</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=113 B=188</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>113</xmpG:green> + <xmpG:blue>188</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=46 G=49 B=146</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>46</xmpG:red> + <xmpG:green>49</xmpG:green> + <xmpG:blue>146</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=27 G=20 B=100</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>27</xmpG:red> + <xmpG:green>20</xmpG:green> + <xmpG:blue>100</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=102 G=45 B=145</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>102</xmpG:red> + <xmpG:green>45</xmpG:green> + <xmpG:blue>145</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=147 G=39 B=143</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>147</xmpG:red> + <xmpG:green>39</xmpG:green> + <xmpG:blue>143</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=158 G=0 B=93</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>158</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>93</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=212 G=20 B=90</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>212</xmpG:red> + <xmpG:green>20</xmpG:green> + <xmpG:blue>90</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=237 G=30 B=121</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>237</xmpG:red> + <xmpG:green>30</xmpG:green> + <xmpG:blue>121</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=199 G=178 B=153</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>199</xmpG:red> + <xmpG:green>178</xmpG:green> + <xmpG:blue>153</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=153 G=134 B=117</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>153</xmpG:red> + <xmpG:green>134</xmpG:green> + <xmpG:blue>117</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=115 G=99 B=87</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>115</xmpG:red> + <xmpG:green>99</xmpG:green> + <xmpG:blue>87</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=83 G=71 B=65</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>83</xmpG:red> + <xmpG:green>71</xmpG:green> + <xmpG:blue>65</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=198 G=156 B=109</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>198</xmpG:red> + <xmpG:green>156</xmpG:green> + <xmpG:blue>109</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=166 G=124 B=82</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>166</xmpG:red> + <xmpG:green>124</xmpG:green> + <xmpG:blue>82</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=140 G=98 B=57</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>140</xmpG:red> + <xmpG:green>98</xmpG:green> + <xmpG:blue>57</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=117 G=76 B=36</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>117</xmpG:red> + <xmpG:green>76</xmpG:green> + <xmpG:blue>36</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=96 G=56 B=19</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>96</xmpG:red> + <xmpG:green>56</xmpG:green> + <xmpG:blue>19</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=66 G=33 B=11</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>66</xmpG:red> + <xmpG:green>33</xmpG:green> + <xmpG:blue>11</xmpG:blue> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Grays</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=0 G=0 B=0</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>0</xmpG:red> + <xmpG:green>0</xmpG:green> + <xmpG:blue>0</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=26 G=26 B=26</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>26</xmpG:red> + <xmpG:green>26</xmpG:green> + <xmpG:blue>26</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=51 G=51 B=51</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>51</xmpG:red> + <xmpG:green>51</xmpG:green> + <xmpG:blue>51</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=77 G=77 B=77</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>77</xmpG:red> + <xmpG:green>77</xmpG:green> + <xmpG:blue>77</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=102 G=102 B=102</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>102</xmpG:red> + <xmpG:green>102</xmpG:green> + <xmpG:blue>102</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=128 G=128 B=128</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>128</xmpG:red> + <xmpG:green>128</xmpG:green> + <xmpG:blue>128</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=153 G=153 B=153</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>153</xmpG:red> + <xmpG:green>153</xmpG:green> + <xmpG:blue>153</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=179 G=179 B=179</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>179</xmpG:red> + <xmpG:green>179</xmpG:green> + <xmpG:blue>179</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=204 G=204 B=204</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>204</xmpG:red> + <xmpG:green>204</xmpG:green> + <xmpG:blue>204</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=230 G=230 B=230</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>230</xmpG:red> + <xmpG:green>230</xmpG:green> + <xmpG:blue>230</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=242 G=242 B=242</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>242</xmpG:red> + <xmpG:green>242</xmpG:green> + <xmpG:blue>242</xmpG:blue> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:groupName>Web Color Group</xmpG:groupName> + <xmpG:groupType>1</xmpG:groupType> + <xmpG:Colorants> + <rdf:Seq> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=63 G=169 B=245</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>63</xmpG:red> + <xmpG:green>169</xmpG:green> + <xmpG:blue>245</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=122 G=201 B=67</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>122</xmpG:red> + <xmpG:green>201</xmpG:green> + <xmpG:blue>67</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=255 G=147 B=30</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>147</xmpG:green> + <xmpG:blue>30</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=255 G=29 B=37</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>29</xmpG:green> + <xmpG:blue>37</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=255 G=123 B=172</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>255</xmpG:red> + <xmpG:green>123</xmpG:green> + <xmpG:blue>172</xmpG:blue> + </rdf:li> + <rdf:li rdf:parseType="Resource"> + <xmpG:swatchName>R=189 G=204 B=212</xmpG:swatchName> + <xmpG:mode>RGB</xmpG:mode> + <xmpG:type>PROCESS</xmpG:type> + <xmpG:red>189</xmpG:red> + <xmpG:green>204</xmpG:green> + <xmpG:blue>212</xmpG:blue> + </rdf:li> + </rdf:Seq> + </xmpG:Colorants> + </rdf:li> + </rdf:Seq> + </xmpTPg:SwatchGroups> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> + <pdf:Producer>Adobe PDF library 9.00</pdf:Producer> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[9 0 R]/Type/Pages>> endobj 9 0 obj <</ArtBox[8.6001 0.0 256.767 260.0]/BleedBox[0.0 0.0 260.0 260.0]/Contents 34 0 R/Group 35 0 R/LastModified(D:20120721105525-04'00')/MediaBox[0.0 0.0 260.0 260.0]/Parent 3 0 R/PieceInfo<</Illustrator 36 0 R>>/Resources<</ColorSpace<</CS0 37 0 R>>/ExtGState<</GS0 38 0 R/GS1 39 0 R>>/Font<</T1_0 30 0 R/TT0 31 0 R>>/ProcSet[/PDF/Text]/Properties<</MC0 32 0 R>>/XObject<</Fm0 40 0 R>>>>/Thumb 41 0 R/TrimBox[0.0 0.0 260.0 260.0]/Type/Page>> endobj 34 0 obj <</Filter/FlateDecode/Length 352>>stream +H‰äSÉnƒ0½ÏW̱=`ìÁK¸†¤9¥URUK¥ +A TýýŽ1ÐúšA³½1çô©Àt[H\® +„H$- îêáϥĺC)2¥ÙkíØ…ØÕ\ÝpußÁJ~’É„³Ö¢Ê…&³ÀºP >±Â’ÃĈÌe˜(š†„2)”uCx +¡.×±ƒ4ÅÚ0År")NÃsÊ #Îh”ÑÐ3o›ŒÃ‹¦ˆ!⧄œ¡ä¼§†ìà92T”ÌŠ Ëâ,~£Æ-þSvÂw˜£’9 +êÚ³m‚bTPLúÐH\µ\[V E. o}TW¥^kÕˆh 0¼Æ'¸[ÞWŸ°®"ȯRÿ¥šVÕ„©#¤FgDµ`ßýG߶§. ßœA¹øfJ(ã˜-LžÛa¨?xÜûsÛx|»ûCãûcÝ×±÷ã)×[¾g?�µ endstream endobj 35 0 obj <</CS 42 0 R/I false/K false/S/Transparency>> endobj 41 0 obj <</BitsPerComponent 8/ColorSpace 43 0 R/Filter[/ASCII85Decode/FlateDecode]/Height 32/Length 298/Width 32>>stream +8;W"`gC_CI#Xf&X?PKhqV&9*'+54907e?+hZf@!s_KlWZQ/-(RO<lPMZ#V$u3IG+Q +8F9H;:s9GiM[/1X[)UBA58FFE<"aQ\]EY^Yr9b?rXchfbli&FcI:ha(n%/'M;fr&Z +l<1W%:"(if7o@R,4QOcenFu$3^AQNh$4-f!?-/_SK?j:hnXhmlr8A0<*IepUq34*6 +rgLUY!%.]E]CZ#nr6P@>3SI%cIl)t>*>BFeH#nBBrO:.umk&[S!&jJ!"LW)e"q:Dc +1#K.h;6U!a)noY0Y7H#rg\:Xc!+\p+C]~> endstream endobj 43 0 obj [/Indexed/DeviceRGB 255 44 0 R] endobj 44 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1 +VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH< +PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 40 0 obj <</BBox[46.0 276.0 234.0 -27.0]/Group 45 0 R/Length 42/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ColorSpace<</CS0 46 0 R>>/ExtGState<</GS0 47 0 R>>/ProcSet[/PDF/ImageC/ImageI]/XObject<</Im0 48 0 R>>>>/Subtype/Form>>stream +q +/GS0 gs +188 0 0 303 46 -27 cm +/Im0 Do +Q + endstream endobj 45 0 obj <</I false/K false/S/Transparency/Type/Group>> endobj 48 0 obj <</BitsPerComponent 8/ColorSpace 46 0 R/Decode[0.0 255.0]/Filter/FlateDecode/Height 303/Intent/RelativeColorimetric/Length 5921/Name/X/SMask 49 0 R/Subtype/Image/Type/XObject/Width 188>>stream +H‰ìWwê<,ÐÃBËÖÞmi!Àÿÿ—;#Ù!¼Úï°{¢Ò ÎXFoocŒ1ÆcŒ1ÆcŒ1ÆcŒ1ÆcŒ1ÆcŒ1ÆcŒ1ÆÿKìŸÿ�î·7}xô²ò4䄽Ûí&“‡"ŸL°æ.oâ)ø÷{âVÝN§þȶ ¶Íð§Óí›ð<?s¾›èVÛ™nÞñ€5b>4¸Ñ¾sŶÐmàíqð-銄ot®].ùÄU54Vžõå—.:_ë»ÎZn`’á?;òœ¼ÏK<¯Ö¦ñ§þË¢¹våoèεj|UºDZÖHO«ÿ!Éa}½ÀSš&„ •Øs-{r1ìÒïÈq§jà·Pã€ÿ½ƒ?=ÃCœkUó9x2£'Á_ƒ—ß•òm¸¬’7ÑáOÞ´Ð< +І¨ÆüÃiä73¾³ËGw¢·û¸<¡ùüä73$ßÐÁ®“é\ü@rø”T“¦„Sƒï$üÑñ7ùå««\‰;äpàƒ<sÈѨÚ}î¤ufˆPðSä+Äd¯H€–;\Äîøò;bú!ø‰$ŸA:¸‰à\$ýAPC?€~ÿ¶Cí Jƒ4A-ŸöHû~%þŒž^\¾—ßóý×ÃîãF|ä""�þ +è¡û“»‰ƒJÝÎæK¤üv +ŒøÙNžà¼%GÂy¶Ÿk°=ù¶w¿;Zú½~©=‹õUËÔ߉]©Â: Br¨†ÚŸl/èíâòo†u|f=ï¿×Áèk'ì¼a©nHA͸e™dIÆ™c^då´êO|÷ïü‡¢m€¹ojÊh¿i·÷ñØuóÍb% Å-ážÝˉMåGº^v‘š•9ÇìðáÛ¤Žºêëì>Þ\Î{A'éPmž´t@ï©¿šxí>ØíÖñ܃Dè™ûuæÍÍØOø.Ζ¬Rj®j"» ƃ+d?@/oR?×¹ýãW…ŒZ±5Nnª3!תôâ2zŸÐE2þ{Iiœt¾kY²ò¾s•'Ë:.óvðô=y/ç}Tª.:’a˜Ø\Ån÷Z[È°³ø¹Šëjvb{gÅÞþ¤¯æÆZ„ÁqÜœ¬1·¨¯ôV©TŠZs럞رá›iuð7gþÔÏ8I®H&G\¶|·5éÜÒ¤T|äZñeŽD+ëz,}ZEÚìn“ÊiÉ· H:<+·Ú ñ¼%ë®Ìü%§I÷ø´¿9û±«ùØSþÐø[°Ÿùwºsn@ â%1é§b·ž›xOBþëЙËH>SñöG{¬¹ÇÞÄš£¹‰Ù¯|T�vWô"}Êxùª¸³?V¢â•?BtE"íƒJ…Û˜KP#Ó)6¯*&?c^™v%Rœ+LPGasUpßÂ1Œ,uÂÒ\©‘Ê5÷µžmo£<XÚ Cmtw°„9?!˜ÝuÇN–;îgêBž1…VWBõSkß@¤ÖÜŠkDÉB ìxY{3åßt7ÁÓÎtóNî~ŸŠ¼è‡PÞ–_ `^èrUS”C?ªÞ ¤w”~ž8Å€zÝÜJyO=Jv;Eú±÷M7öÄ(G"Ó±¯Jmø™] ¶Ëù÷We"ЯéÜ°ËO3HD`Þ¶·%žàM+w»ÝdÂ-´]ÑãH´)§MR@GY"¹Ó‹¥j±EͬpéR)…K½]˜} vwh£g‘ø,0ÙÂ'|v[ÿÜ KBšêmÈî*vdà_KSÀØù±åJ.EÜ¥RkîD<°ãoð¯I’ŽRTjŒÕEʸ¨]‰7KÅŽèár“Ýâ3úYp±‡1‹5Ž’'ußè[€¹4y‹yé?vx(²}¦»ëãZID®£bñûÎç¡…µú¾/ñð:›ãaM<xÀ{òŽM«€ý79Þï´ÀDÏæñxŠñ Œ’^ôµ÷'þ-c‡ÐH×ÍI²°ÿž‰7ï]¿¸ŒÔ[3Ÿ‡0kÒÓ[¥æìýÄì0‰=ÛŽ™.?±ßÈñæÄfˆñ2yÞÁxý«UÃî–p(v-]5Áž++ò•õž>_?*…3P{|vwÚïH— yénýHÙ£Z7: ZŽÝfËÙ.OƒM$çØÅØ~FšÇcç|f‰/t*½.¾pXVMz_»%~EV$÷óræNé¹Ñ6êÅí¦æ©Ø¹&¬Yâ%ÆØÒæ'9A½ üs°£YÃ$i1xÒiŒÿÁa +Þ¡òY楰CjÚùêÍ:cÏ‹Šd/.67®ûO`7Ò(“øâƒûÔ1ìØ‚Ùç»mÁ“°OHøÿ(()f¸>¹Û®µþÖû»Ós°¿í¦ÈB±[á² SøÅbßÒMŠµ¡tlÇbî¶(VNO›WÄþ]»ÂK?óÒ[›;«u3ý_Áž~uì‹<qF¿Èý|EÎX*jUÎj5¥2)¼dbp¥) <Z?*éú’òàŠ¼¿ FBßéo3ètÜ›Lî!Étæõz“¶köÌ@¤,¹‚¾ '°Re4EbR¯PíoßthݾvŒ¬,U )+MßË0æÕ§—òÀ{R†V,†¼D?í–t¦](ÿÈûKaW§Œ”)öC +uÔã~™yvºwÕ¯bvýDÜ]1‘÷µD÷Çcc&H{Êpl’^v™OŽÿ?:hä{8ö=ûRË´KãMèX!ÝD’8PH£ÌË`7èºY€Ý'^ðîÆw±¡iÉšÞ¿öý>W`ÙI½•Õ2n™ØÀˆAePæ±Ø úTçKZ¥y<#{¶6)ÔöõLïW™Çb7ÂLuýÅÌG+Ô>è̘¼ø°ÅfH¥>;xK®ëZkð!¤NdŽ¸n¯%Óþdì±óLן³'rºGÕ >RW¨év|AÎ…gC¶?;eeØwo—´·�ðÝD§í;´£q™;h±É–b•ê#Ýo;ˆí?cÏ3Bl¼yO4= +¬‹;°eÚêz±B™Ö¨SŠ`²±#v+…é Gªù mÿ»pH0û-u¥“^ˆÝßNu¶Ñïåg£�-ŒL>lúi‚Ô ýÂ7¼{êø»©³™ØþÄ&œK±îÕ0_,,My1.Ñ%^|xð9MmŒ–ö±{qáášj¡mÛÜm;jfpñ¶¸ûÊ sÀ^V£+¼ïk=#cž‚Ý0øÔ@EÓPWú=_¯O°¯×sœþâK«ºÖ°¤œ=É?^*5{�Ûž+ô¥95fc~Ï»›¢éêcV•~BÐ? Ø•p̓QÇöCgE;UB÷…~»t¸ÙÖ™@ŠÚ‡6'Ñ4ú +T¼ˆ_’,éÒ’J©rr¥gWBˆ’ýg쮓ä+¸ü‚<U¾°pÐí2kH1a9÷¾ +4&¢'uПƒý�žG'ÿMÇ¡x3ZÎm(E²:ÉÁ?Jr™Ç¤À¹÷ è?ò½tp²˜W/Ð{ŠÖŠº©¢ìÜ°xI"'t–éƒ ÿŒ=•¾ÎG'ãE/x‹²4ñ-ü-«ô}…i¦CG7ýÔÇAÿMgJ¥áÙ*šNB =¿#KÉða,Ð%è2ýì’_y„0ñ;"{> »žUzÖ˜ñ›þQÍëƒÕñ:ö|{tq³ç“§m(vž%ßØ©yö¡,Ör¨Wß:›>,í×û*eÃ^’Iã>NkÊ5jç '\·ªéêôÁîÐó‰çƳ!(gYrÓï<zîsS¶¢ìnÍ'8ÓÂK?—ï“w{Ó¯Ù}ùR·¿Cr5€6p›}øa|wÂ{bÅ'v;t¾ûÖÙ”¤ +M½Ô÷vût}ÿUg\iŠÇïE>°ÄT4'XlC¦’çü´f¾Û»I}™ RÔF¶:Õ¸ÇçT×øáàôUÿð˜e‘2žúøÖlɉ“öV¨<À·ïCý§<ì(fƒÓÿ_ö«E;u Ãx-ÉêssC�ãüÿ_nWwË0a{Žúfò�F*—JÕÕ°³šÑõ#Gäcë†6¿þ±ia²eBˆ¡)û*óh#”ú¥LׄŠcð^ù øÇò»…x~—$Þòx±DŸXoÍŸtøC†w:Anº‡™lnÒÙ‰§'rîã?“(¯Ê™èϬ–Ç>[C6Zå£óªU±õƒèGÀ‹Á(Ÿ<@L'ÐÒüïc—D ÖÆ_^Oy_—‘ʲ„qow ÔZhW›LmM¨‡w!6côC=¢šã]º ‹´®xTëº+´wëõæQî?k‘¿kÜÓUcEI•<†Iþ'ìjïŒ9údH§ëšÁ»ü¶<ÛîƒçÜníÁ(·Ó@ðèó°>="ù°‡!2I «þ'ì}¿’ÇÛðs:˜O’Í༚N1Û2ó®ÁÃ> ù°kþŠA¬›HüøzñZx�9œ +ÂqÆË,]¶)!M6žïëñÉÿ„ÝæžÖW—kêß~:^}� /º ,©&exˆ¢É|Ôà©Õ<{ÛJ‚ì7(“á£Ù³njFæ¼´ÒRÒ7ÏÕW@þc^svî%†ý–õ˜{¾›=ƒGðô¸™šfMä£/¼æE°óŠ +¡…‰·Áq\–-*pÛØ›ÿûØ™zêOkÚ6‡³èÏÂæKà‡d`‹‰v0¿* ‡z§¸åqù�â+þØ^":·(u˜¶ë¨r÷ŽUâ—ZÍS°¿‰jÊ£V"ü€¸B1nçöäÿ‘‡|%ì_F<9´Ò`³ã¹êy«i‡¥‰æ9Ø…xq@±óa±‚ñàEÏÏ7{*–‰æIر.¸†å„òx^“ ÷×1ïÅ°3ñû¼1ì,f¨] ‹%ì¼pwØQH¤Œ2â%ë ¼‹Ó,ü³°ÏEãSE´„ù;Ôq™àŸˆ½/ˆƒA£@Žv€Ï÷x*N5[ä·—ÂþÖÓZbbº¦±€Oè¼Û-º¬OÃþ&‚'ÒÏý]l3¶¤ƒÍMûŠ}%rP{õ>Þ\LSüÇÂËúLì}±!\Ö¨sjŒSð&q 誗ÃþÖ<Ž²°•uÈ8,#ð„òAÇ×Ã~bFÅ$iœga¼ÒF¨½I¾ö=kF£d˜wÖD=R Ƕÿìæ‘ê<Q°n豚i“fìñ¥±OÌ\<‘"¦¾WÔÌEœñ.Oô’wuÖ›lµdïQ±sÔ‘“y9ÔLÀØÄðò0ŠDLO|—›WëMrUebE^<›úT>QBø%ë3ðª8Âf(cy¨0f1Zv¨ÏÆN;çs[gÖ™Ì#)x$I¾v“–tÓ0íÔ°½¿ÔìÚ7DïœÃ`.ØAi‹ÄU}!ìlî§u¹£?œÏ/.OC:¾ºšG%6ó$ì_oJ;ôÄNtµ0®ð*F¿Kåþì_ xYiLqî0*ždò ã>.“ûS°:u`“Õ.ä†aµ0`èW|›ë…ßS°t:îÙd~TàI-c(`ïË 6,“Ì°‰³kµHÀt6§q´{v™b‘ËŒØé·°+ëTn‘ ErOãœvÍ2œÂ•]f‚Ý4¿cgònÆþţЩªyÍÐZûo¿¬Ù}áM•ìNMkÚ�5§Ê†ý߶�rZ:P‹¯‘v¬}6 jT.lLjfkUfq&™6¦‡AàГ½ºÇ—#ï©è6b18Go&sVöD-«]àßI¹°—ÐTоñ’ö¾m¡ãAhk€)V”þ·ïÅKòGú#§CUcŽ“ŽÏcÝ·™¼ÿ—9¹‹vÛLŒ _`Äï{è,9Ú°íÜ€ùYõtµú¾G +ÇbÛÆq?%‡ÓkÛ3ü Þ;D™»hW¶±×Šg²SÑiç¼ìf»(aè!ün³-™ùëÐét*øæ°‡]{¤˜ #,wvSE›~«f‹(sOÏ#¡¨�’Žû17¤½(Ùc¤=šf䈦ÜÐúz¡³Ë„×8–º»ÜÊ0/Ë!vi<Z*+ñFÚÅÂV8Û5ù¸JÚîø²ó`6Î2Ó»jÂ#m+*¯c®¤A: ÚÒ9FSŸìc@ÓPÅÜèíB:ŽþHå„ï¨ùp</¶ÂÓ÷»:X>qÓP}ˆ>øÄ"kÁdD.)½"Ô\ èäÿÙ_ê¾›²Úîøt™%çßÙcºò>le)$€õ¦æÆKÎ]’ºÃË|'x!PÎÀ%fÅyÐ#Œü¦0N?x×mÐßú¡Uòf5öÁl€Ø!,÷¿`-Ë‹ŠÃå{Zã?$cCQãEH¦b“؇ˆüxŸb¤]SÝ€§€«Ä ›÷´Œ=&QÞJ[¡s(â¼T&ò›,”ä-Í)hH¢zˆ-†Y¯6Ýí#ÞH¸W^Û¶ØÚ¥c²–¤¨ùUìŸþ¼´oÅ?´™¶c¤“P`‚ 1èBŒáÛ±>Ýì1¬öU±f?ø‹-HI•îl`/HFœ9‹&á¼tÏã!ãD+ã:Bà¡ßš•v–º^NJ¸Ý˜,߃ TMÞë©_(|ڳȃÉ+Zಥe8U[oeT"…~³Ø]14lî£Bä ’8˜ï4‹ñ[a=-õ”`Î’<õì#ò è…ÕŠ0 ÐoÏ1y$ЬÁf`v¥¦¡l¼iCGÑt©t^Å.j&ñ6ýj>›r öÔ£¯î„ìÜ•j~h´=µÄVÙjSIIÛäènÔ†3ÏÅìµùÛmLÎtAMy¼ÇÛìöýì«â¨Aɼ7Ù3\1ÅöñMò–t¹(I\r¸²8QÝly1Y®MÇ×ô®ÐÎØé¸ÇeEÏV.‚Yîpö$‘¾Å+7Õ°Ï/ŠQIáó/¥™²I‹ÃÜ3o\æ]›’&÷oN +ôê&Wi·´íRlõ¨hgÑ!©í%ìßî0 û™Þí®êÑú“ºð¤Bú3\Ý&L‹œCB>ίJŽÀ…‘œöIÇî„nzç€zî3æèÁž Ø|šn«2ˆ7BêP×îªê.LL:Bù4¤r+w’~¯^ûw·›h<í…Ú;Õ« vT뾎}85iý“Ë€yu8vÅýzQì³¾‰«L<aøj-ݨCzùŠÃíû¡ìj /)gr3bäåf ÒïÖ‹‚?Ë3žYáC/p’W4¥A\þ£ôÂ¥JnC1E4™YéÇ Ý +ò“¾úyŽlèFäoš/†DûqéíéÇô¤¡Rg'òïä>>„û‡_Êï<HþÆè㮈ٹ4-]·™¤üÖ6¸ƒF“Ïú…rˆç&Ç|ñÄ£ƒê²l½±øó˜þH§ÃݶðŽ)WäË¡_˜WÑÿH¹K%ïÜŒ]Vlø_MŸŸðq�þörQ ˆ;Ô‘×h»Åv»úwj·ôÛOªö¼üæÈ/ørÏÀ¿Q¿b*º51ê¸Êß),ðšÖÜH÷�üq䊞©çOE¡§Üuëß©®3Ý'$ÜUŸpÿp/^Ù÷ýju»Žo®cÔôö»¸ôXó ÀI1Û¿{†ÿ‰õ$عråÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\¹råÊ•+W®\³ú¯��±¬Ü+ endstream endobj 46 0 obj [/Indexed 37 0 R 31 50 0 R] endobj 49 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 188>>/Filter/FlateDecode/Height 303/Intent/RelativeColorimetric/Length 11592/Name/X/Subtype/Image/Type/XObject/Width 188>>stream +H‰ì—÷W“YÇÇ• ÐBIè"½Žô„"EU„Б�¡!„ª€@i"Å‚Š¢²(;Èè8ŠëXÆÎü{×e€3÷‡=ïçNHÎ{>Ïs¿÷¾Ïýî;ˆÿö|3þ'ÞÛu¾yŸµ÷ràÙM¸OÜûUß@ãÍÃÃËËËÇ…7X}x(/·ˆ/ìªùŽ9/0„Á`B»xLPP@@€ŸSÂì¢>·éÀ\@&A �уä‚@ˆÃA‚`%@èïŽ;Pç˜ #DQâh II©¯^©¿Š¤¤„Z\%Š%À¹ðêïJó9êBÂHZR#§€Åâ¿ ´.Š ‡Å*ÈËÉb¤¥$Ðb($øÿ—þÎÕy€ºˆ(ZJVAQEMCS[[GG÷3zë£ûÍÐÖÖÒÒÔPWUQÂaåee¤$ÄQH®þ®Øw®:J£ ¬®g€76153377·�X¬ÖÂù'øÎ|³M05511ÆîÓÓÑÒPUÆ)ÈÊH¢Å€>LÛ|ŽýNÜAbøaÂ(IYœšŽ±¹•íG'ggWWHtsssÿð™H$\]Á/œ98m‚££ƒý;kK3¼¡¾Ž¦š2Nè£Â ù\û´~µíp$ƒS×Ã[Ø:ººyzùøòóó'‘ƒ‚‚CBBCÂ�œ¿¡!!ÁAA$’¿ŸŸß¡Mðøx{ôtw#8;°µ236Ô×VWÆÊIK€æsí÷îÀ~Ïž½<ü01i5ÝýVö„ƒ‡‚CÃÂ#È‘QÑ1±qñ G)”¤ä”ê*))ÉÉI”Ä„ø¸Ø˜è¨H29"""|SŽ„jƒü}½<ˆÎv–¦x}m5%Œ¤¸(°ççÛAp¸‘B 1JZFöDŸ€ÃÑq ‰”¤jjzFVNî±ZaƒÁd˜LFQ!½ ?/'+#=•šê P7‚Bá~{TE>Dòõ$:}oej¨«¡ŒöHþÕàl×]�.*)¯ªgbëêx$:!‰šžÉ•¦1KXÕÇëꛚ؀¦¦Æõµ5•å¥ÅEô‚c¹9ÙY™›õ™ÌŒô4jrb|9,ÈÏ‹èhg±__SØ‹!á0¾í¦žã.GI)¨ï3·wóJHNÏâ6›QRVQ]×Ànmëèî9ÓÛ×èë=sº«ýdsSýñJV øççÛüü‚N§Òé4°X™iÉ ÑáÁ~ž®,½‚ŒŠÞíå¸ó +£¤°êþaщÔÌNË‹KË«kšÛ:ÏœþatìÊøø•±Ñ†Ïõîhmª¯©(+fÒi´AÚ˜Å%¥e,Vy9‹‹–—I=àM°·2Ö×P’—Ám37ë÷=ŸVÈ,¨©g·uõ½:953{ûÎÛ³·¦&'F/;ÓÑÒX[YV¼YãA×9òÌ’RVEUMm]}}}Ýñªò’Âc™ÉqáÞ„x]5†ÓúϹنûÚ¼§f€ÔÐ¥•uì¶Óg/]Ÿ¹3¿ðュ¥‹ówf® tµ6Ô°ŠA6L|VVvNwAöjO4²›[Z[šÙ µ•¥ôœÔøˆ@oW;3Me9)1Äöäÿ|ÎcâÁvÍÊ£—TÖ·tž˜º»°ôè—§ËËOŸü¼´07=1<ÐÙ\[Î(ÈÉHå5ë1IàhMMÏÌΣ•”W×56Ÿlïìêîê8–¬œ‘—Nòt²Ú¯«ª -Ž„nC~ó=$,<øS31+Nõ MÌÌ/þ¼üüå«W/}öxéÞ«—úÚNTå¦'%ÄFG’×;áÁ±O&GFÇÄM¢fä0ʪëÙ';N÷öô÷v·7×W2r©±¡¾;S}uœÈsvìÖä×¼Wí]Ýú"†‰J æU±»ÎMÍ/=yþêÍ»wo{±üðþñ‹Ý쪢ìä8òáà�ÒïV΋9 ($,":>)-‡VÌ `wß¹‹CCCÏõvµ‚â³(ä�MEZÈo¹ókçk;{Gg0øB£(YŒš–ޑɹO^¼yÿñㇷ¯ž=º7=:ÐVË̦D†ø{{]]Öi8cŽ‹èîé Ö1<&1-·UË>ÕsvpdtlltäbWK]Y~jlˆ·“•‘–’¬„è6b³fŽÔ7Ä›˜™[Ú|ïHð +?š]\ßqaâöâ“o?¬¬|zÿú_ço÷4±ò@ϼvÖ–ëÌ’æÜ1ÔÒÚÆÎÞ‰àáMÉÈ/©a·÷^¹rõúäµñ˃ý`ñ2Â|]ñÚ_ÉoÍ}Íü®¥£«o¸ßÌÚÁÍ/œ’Wþ÷ÞËÓ}óqå÷•÷¯Ÿýt÷Ú…öãtj$ÉÃÁÚo ¯·ÞÏüõ÷âͬì‰^¤°Ø”\fuSGÿÐص›33Ó7¯^¾xæd]I.%Â`³ÈƒÌƒÓfËÿϽIFÜ›•TÔ4u Íìˆþdja]çÐäü£çŸÝ—ܾ2ÐÌʉö´77ÒÕTSQÞ।¤¬¢¦®©£odjmOð$'fíÓyvdâæìݹ»³S#¬üd²?ÑÈcÐH!î×?ÝW¥ÀÍ«¤¡gbçŸ[ÑzvâîÒ³ß>¬üþéý«§?Î\îi`¤Fø:MÆYŒÌº×Wp©•‘ÁÈÊcUÔµ÷[Ù» +‹O§W²»ÏNÎÎÝ»ï³7F/t³+ÀmðZŠ2â¡6{8ò<{˜°ˆ)ŠCKb°jzfŽ>iÅM½£³‹Ë¯ßZùôîå/SÃ]µ‰!î¶x-%9)pÝ�JtB +#¯¨ªµÏÄÆÙ;$&^ÕÜ38>=·°ÞssÓãC=ÍU4j¤?ÁÚH'-&ãßräAl8öüü‚‚0˜¬€¸4VÃÐÆ=„B«ë™þç“—ï8î/ß¿1Ø^•Gr1×S‘“ ¸ÐÀápa„¨˜„´,NUÇÈÒÁ3(&°¦µoäúíû>úiñÞk—þM}™ÇC¹öa<ûÆ`¬c'köF"{¢T'²§"$TZt¦HJ{Hê¤Ç¥QÈÖ&[$£Æ0„œ±3Œ%¼¾÷óÌ´“:5¼Ÿyï?çg¾Ïõ\¿ë¾~y�>Èk£•±–’<¯?žò=/???x¤°¨„œšþ§mûN^Ë.k隘š™¢’je]9ìá`ºBYjþ”@Um#s{çí¡Ç.$Ý.|^Ol§ôôP;[ 5å�þt8dAC )–å„’à~æ+‚Ž£¬cêàu%«¸–Ô=4>5=5>Hm®.ºu9"Èm-NKA*"|¼H RdXÐÌÞyǾ㱿ç”TÈ]½4Z/…ÜTû8/=1æ¿«ƒ™žšœ„ò‡…gÒ3_�zp]‰H*hâÖºE^¾UTÓL„ØéƒbuaFܱÀ¶ÆrÉ<ܦü€‘QÔÐ7³wñ;žÿ¤®¹£§o ŸFm{S[~?-!:Ì×ÙÎDG¸æÇ…ÿœAFNÃØvëîcñ…ÕDÊ }rz’>@!V¤Ç p±1ZŽgþÑ77+ÀÝUUs·€ð3×oUÚºû‡@?jkª)ý3%62Ôg“•‘ø”`\v]ÆJ|„°8VÝÈÆ%ðh\za<“ý-`Å8[v!¯k…à…ZèÙšF–N^Á—Rr×5wц@»ëïn#Tß½q¿ÛÝÑLO+ŽúIá?Áó +‰É.7´vÀǦ|Éž‹÷ìj²bBß׈õ¡Ê$£¬³ùegØÉÄÌ„öžÁѱ±á~*ùuEAæÕ˜ƒ¾Î¶8-E)6…_ÆbWìþøØ´‚ª·ŸØ+Ò.áý·|bÿ¾Ì¾'‚Áªê®^ç¶á÷?×·PûGÆÇéP»«’—â½a¾Ú#.{å?Ùþ-;Ë„H´¤¼º¡åFŸýщYEUo:h#ã}˜Öù¶¦änÒÙð].v@xàxþõÔï±[mñÇ_b›ýÉI+鬲w Ä_L¹ÿ´ÜŠõ$ƒ>ÔÛÖXñ0#!*Ô{ƒ¹žª¬˜0hlL+‹Ý`‘Ø™MŠ®å›¶‡úíN TðÆ&§§cR]Ù½gû9ÛkÈK€äeÃ4‹ÎÎÜ-…D!á׹Oø¢©£Y’F@9}Êi$t[ë(I±gšÅg‡ö3Xxu#ë-~áç’sŸ4´ý5˜~?n<*éeéÝë1vl²ÐWƒLÃûó¦Y +vXx1]ó ÛöC%éeK÷ÐÄôûÙЬ۟åýqñ×�p]ËcØŠø%`_;^DRQÛÄÞ}T4Àe=0>=;7;Eè"Ve&€Š·n•¶¢¤;†_v5iŒm\ð—R¼hêì§OÍÎÍÍ0ÀZPWL³ßÇÉ\WYZ”Ã/ ;롪ú–›}ŸK¾ÿ¬ñmljv~îýä(ýõÓûÉçûn¶üÑçþ/ØaÓ E¥•uÍ|ÂN'å<Ã::9;??;Mïï|óâAê%<ÔñÔá«õ§kÁ±ó@†WÒYíè½ïäowËêɽ#“ïçÿ373ukx/pµ[ÉVÎbçÍZDBAkÕ:ÏÐWï”Öµö3�ûü{ÆP7©¶8ëJT°‡½‰–‚G²#Pòš&öÁQ‰·K^¶|dîi©+½sõD¨§Ã*m AŽdÇÈkâì݃ƒM<‹}r¤·µ®4ûZô^/S8$ÿoØg!öú2Žg‡=ãþwÏŒ€€ž‰†=áìf5äo³:ÜÝò²ävbTˆÇ:ÎœUfF*j›:zí…æóŒ¢6×<ÊLˆÜ㶧ɉ Ø‘h)åf|Âb>»›æ¦ÇºÀsÓãŽnµ5V—ãÄ» jð2ªú›v:›œû”Õ æg§ÆúÞ5>ÏK¹pd×+Cìð¨ +‹c—Z;ûÿzñüŠ¦Ž]¬—üªü^ÒéÛ7®ÑS‘å8vnæ¨jâÖºEÄgV½eu`` +°{Vâ‰P/ÇÕÌʼn£:0\#¡*¶b5Õè« "IvQ°ôU<H=èjF,¬œµ{ÀõXFÍÀró΃gnä<~Ev¾ñÁî–º²{IgîÜle¸®‘œ´óqÁ -© …³ÛVü +Â;Ú(czfzb„ÖÑTYp+!*XfX=رûâ³s1e›‡žùzï½'³U»úÇSSŒ±*©®<çæù#þ.¶+5¡&ƆÝBn²kÛlñ;|öfNy}k÷ 1É õ¶7Vܺrbï6§5új²°e8†FçD‰ÙÍÖ{GƧ?¬ ´÷Ñ'&èôNbmé½çŽøoµ3ÑV)=•CØ:0;BXTZIgëìwèÌõì’Zb'm˜>>6ÜG!Õ?ÉK?ê ÉŽÅ°•2‹Ì£ó!„Ð’òê¼C"ãÓòŸ5´Rû‡GG‡û¨¯+ +²®Åôs¶Åi)JA“úó)³¸ì°a t ¬ª®©½k@øÙ¤ìâê7ïzú‡†û¨dBeqöóø G3=Xvv&u1Ù¹˜^G‰`dUtp¶¿ìØ"!=ÿé+Rgoÿ@ÿ_2¡º4'%62Ôg“•±¦‚’}‰Ù?v¦…ÿ‡"g¢£1²ÊÚÆV½ƒ]L¾WRM Szi´ž®VBuYnêåè0_g»U:*2¬Y:öX¼¿óv`ͯüó�pàAa´„¬²–±ÅzÀð3×2>«'¶Sº»)-�=íÊ©Cþ®fújr"HöÜþmö*ˆ=�°³.on®¯n#„Pb’X-#G·]O&¤æ–U7’Ú;»:Úˆ •¥�=&<Ðc½…¡†T¶²ýûìé±G\lŒÔå ¹âåááþÊááçãD¢Ðiy5cGW¿°¨Øäì¢çuM$r™ÔTWQœ“ +Ðw{:Yk)ɈCdË1ßd'V2÷›•òh$‚Ÿ÷k‡â@ …Phq)¬’º.Îr½«ï¾ÈIYùåU¯ššIÍoªŸÞMI8¾Ûk£5NGE;†=Ùf¤«3â#‚ÜÖšh+I‹¡‚þ/�8„ )ŒB‹a¤°ŠjÚ¦6Nî~û"Î_KÏ-~V󪱉ÐP[Qšûf\ô¡@O]+2†ÍAý&;, ™ ǃ=VëªÊIŠ‰ „„„_ð‹°0 +…ÃHÊÈ)ªiéáÖØoþ/óåýÕTš‡ñÙ3+½:J—Þ«"„¡K'B!¡· ½I‘"„Ž !„f$´ª²"Å^YE]Á,¨Xpþ€}o]WÇÏ~ËáœËç>÷yŸ÷ùú‡ÅeÕ¨ƒã—g¯]¿6;5Áè&וf%`üVFšàaÂüìfÌ.ì i//Ì wVçÆ!Nè•—‘üv`0Q1qIéC‡”ÕuY;ŸDb³Š«›/ô _¼<=såò³·³©ª0=6ÔÇÙ’…~P€‡m³ïÆþl £”ú‚DǦڪ +r2ÒR’ߎ”´´Œ¬ÜEe5M=£cpGÿÐ(|NI ±“ν89yiœÙGm©?{ìåha¨ÁB‡>›fß…ýÝ«•‡7&zΧ`ýœ-uÔU”äå|5òò + +ŠÊ*GÕµt M-lœÜýBp éùeu¤NÚÀðØøØèP_W[c噌„ð@w»cúj +2ÿAßö››ï×WÝšì%•gÅ{9Xšèjij¨=šZÚ:zÆfp;„§_06.%§¸²L¡ 3úº;ˆµ¥§“£Q¾.ÖfºÀ{bCßýÓæû×`=›b´×à±AžŽÖæ¦ÆFߎ±‰©™ùqKk;'·“!ØX|Vay±½«wph˜94@£*Îd&â^Ž–ÆÚ*‡¥DÁ1åúNìŸ>¼Y{:?;Bm,ÍŒôrq´³†[YYY~1à§ÜÚÆÖÞáæé„ÂÆü’‘_ZÝH¾@ëg0‡™ŒþžNR]y~Z&ÐÃÞÂPSYNJTˆsè;²|í–ô–ª‚Ô˜0¤¯—»+áüÕ ..®îž'}N…b£Ór‹[¢3GF‡‡Xèeùi±aîvÇ 4”ä$E8‰¾3ûÆ‹gnNtœ+ÍÁGcB‚ü}}¼½O~9Þ`||ýü‘!hlT|rf^IE}sGwcxtltxN!Ÿ#fćy8Xi)³Ã)¯ïľññÏ?7ß½\Y¼=Ť6Ud$FcÑ!§Aßy*8$4›˜’™WL¨kj£Ò™£cc#CýÝíÄšÒÜä(”ÂÚLOMÜo‚|Ü~û«•Gw§GºIÕÅÙ)ñQX:…B…|1à'*44Ž‹ŠMÀ§ç”VÖ;”0#ÌA:µµ±ª(û—ˆ`og¸)1?}õñÝ™‘ž–š’ÜÔ„èˆð04:ôëA£:6":6Ÿ–_L¨mléè¢÷2ƒ}=È •ÅÙø(6æúÝ!Ï@=fý¾GÝ·„ôØHx¾¼¦¡¹íBÞKï¡v´4V—æ¥Å…#½œ¬LuÕe¡³ÊËÅ1xöü¾exÙ&¿„PÓ@$·wR(”ζ–óu„¢œ”XL—ÜLO]R^€—c¶a#gþ›4A§@Ô°ìé3g+kšHäÖVr±¡†Pœ›öq±=n¨©rDZì ç<ÏV¾C pquu÷ðòö @¢01‰)YyE�ÿÜy"‰ÔLl¬«:[…ôt´2Ña#Á¹Œgã^ݺYàÐÝjçà.WŸ€Sh\LR*tl«ë}‰x¾¾²4?#)åëj{Ü€u·rª°ÙgXf«Ôœ°²±wvóòC¢#â’3óK*j›Émímd⹪Ҽô,tdMtT!ßp¦Ž±×#·ËäV›42=fiãè +J..%ûLym¹ƒB¥RXs:%íïjk®÷¹ïßηÇþþ¹ÄC-^IYUMC[ÏÈ섳g�*2)³�B½¯¿·‡Òz¾ª8; ‡ôt°0€Ö€g[yv÷¦ÏÛXŸAë“Šš–ž‰… ,~ …] Ý€ßKmm ä§Æ XkŸ’¬Œ¶aw_ýŸµUB +¬*º&'ìÝ0ñ™E`kíeŽ_bm~RM18÷~.VÆZ_ÀsžýÃÛË÷g™í•Y‘þfZÐWäçççûËà†‰ŠKÉÊ«hê›Û¸úc²Jë[iC§ffg¦&˜´ö†²Ü$l€+ÜÀσ´aKøÙ—~a´2p>¶ÆêG$AâåáææúëáÃÃÃËÇ/(“’U8ªc +wñOÊ%4Q&®\½qóÆÜÔø�…X‘ǺYøCâùyØ;¯;²?_úušA.O?im¨*+&ÌÇÃuàï»Íàxø„`âÒ‡U´Mஸä‚j2mdêÚí{ówoÎM2A;*H‰rƒk*ʈ ó³6»°ÏO’ËÒ0^p}•C¢‚;A‰Úy~þùgð\<¼Â"’rÊZ&ÖnȨô’sƒ“WïÜð`áÞõ©¹¦0%"ÐÕÊHCAZTˆ›ËïÎÞR–Šñ´ÒS–Øú¾»ô=Ÿ LBVYËÔÖ3$.‡@¢ÍÜ^xôäñâý[3c½�€°4P;"Å:¯ß/ünìW ö0À®$ ã +ým·ÿ²è¹y xs¾°®ƒqùæýÇKËKOþygvÀàÃýœ,ôTå$n¹fØϦ†yl³ïA Ïô\¼œªž"0*£ŒH¿:ÿhyeõ·§ïÎMô’«ó’¼í͵•‰ ñ±!üØ-u·Ù÷ò<@Á¤Ž¨Y{ òk;†¦n?\Z][[]^¼77N'UäƇxÚkÈ×ð|¿ðœf‡è·àEeµÌüpig‰ô‹×ž®>ùâg‹wgG»‰e™ÑA.'ôUåÄ…ùöôA;þ�7Ÿ°¸¬ª¾¥[pB^m'sæÞã•ëë¯Öž-Þ™¦4¥`}¡;OZ„ á÷}žG�&%¯ijï‹K/#õMÞzøìùë7oÖ×–Þº<Ø^“—â7< + ÿÝŽßv¸FHLV’XPO½º°´özãÝÛõ?–®_¤7—eDú;šk³%ü¾°ÿÄr ?LR^ÓÌÑ?2«¢uðʽ'¿¯o¼¿ñê÷'ó3Ôú¤P¸ªœ˜+ãÿØ·…W5€{¢“‹›h—n.®¼ÚøðñÃÛ—¿-ÞúG!o¦ ¢foñûÃØÚv¼¢öq2.¯ŽL³ü<xóý›µ¥ûs£T°„¸Yê)ƒºñ½¦Ù'vè¹\ j«ÛùFdV´2¦çÿµöæçO›ïþM}™ÇC½wqü¥²ÅXÆnì{vÆ’íB¸"RhÑóD¢‹´‰K\7OY®¤R·%E¹*äf‰.Y“}ŸìË`Æ63¨?Ÿóû[wÉód^ϼ^ó|ÿüýqÎûu~Ÿó9çÌŒõ5WÜIŠð´3Þ&·ÖlŅLjàT nÿ<séö/¯šûÇÉ‹ôe:Bw¼y‘s5ÎsEÉ Çf9;#°¤"ˆæ`h\zniCÏèÌ"}e…¾8;ÚÛTñä狧ÿáF€ufÏ*öÏ¢1uð +Š¾’ý¢¶shz¶²ºL¥L[{ž‰Ü5vƈÓ0'x²£¢‘QÃÛî9‘œù¼ºíýÔ<°¯Ð¦‡;ëJrÒb¾óq§Á³;Çæ-ÜüXi}TðU-“sÔ•«ËK³c½Måo^óu±ÔU’bRð,cgDBïr(,þæ“Š·}ã`ÿ°B¥L´Td$œ=²vØ0çð¬dß‚WÐ2s:w=·¬±wŒ¼ì«ôye…Y?EÝc‹WÉ0Ù¬,eçä@šu§÷w±W¾£™]ZþðñÃò"¾öEvjTà^´Y1lÇΰ‹Êj˜Ø{¿’SRß=2»ˆ²/ÍŽt×ÿ +ÍzÜÛÁ¦b4lÇ΃•Q‡Éš]R×52ƒ²¯,‘ÇzK]û!ŒF“mÙEdÔvì ŒJƒïFÙ?®PÉ`4e¹éq!ûÌ´äÅÿ¿ØÇûšÊóÒãB 삼\ìÈþI3>if½ŒÍÙ?÷jZίH¯.}ÒLcYîuÐè5óE\A{uv´§áå£k±Á>;MÙ²Wÿ4›ÒóÊš³ ñ÷™‘.d¡9äeo²¶Œ±;º(éZºøžŒÿùI,ð°|ü¸J_ u¼)¾ùûcž;ŒÔeDØm6¡úû.v6Ùň“s´UØ hsSï[{v7霿»!cg«}•;b3F;<"‚£¯}4O_Ev1òxó«ü[p|¸2ùSYÍŽÜâòZÛ¡UcÒÀ";‡§€}•rïn(› =èl®(!ÄäÁʺ›•¹‡]¸‘WÖˆ®b«VhóSƒí5Å÷S£ƒ¼LaAìء숻«ãm=üÂ3 +*ßõOP¨Ë«pz€dÞUÜI÷÷°Á«1Z•ØµC\IEm3GïãÑ©÷‹jÚ!0ròÑàäëª/ÍMGÎ&+$6œÌØ‹Ø9ÖÊŽS5 ¸> ’)mè™^ ¬,/Q&ˆÕ…÷.ƒdv¹ʴÜYÃΔ‡OXBAËÔ~ï±Èä»O«Þõ“éËË´ùé‘žÆò'·.9âŽH&srg ;‚¾…{«€¨ŒªÁ7»ˆ»–SRÛÄ¥/ÓÉĶšâì´ØκJ æ&KØQt.^VJQ{»ÃÞ€s‰¿T4õŽÎÌSéô¥9Òpwcyþí„ð£žvÆÛäÄ™•ØÄÎÃ/$.§·võ=wõAqMq‚¼H¥QfÇû[«‹ ì¡]¬ôUpL»Ìgvýÿ;£ê<|‚b2ªzNÞ‘IHÙ{†Is‹Têyr°³¾ôñ-¤ìö&šÐ©|LºÌØ »„'Ý}^ýwv‚þ׳s|B•VÒ6µó8rêÂõ‡/jÚÆgæ—(SÃ=o+Ÿe¥Æ#eWÅ1ß©¨™ýÎîž”ù'öêçw“ÂìþÌþßR äà0tEMc×C!ç/g>}eŸ"Ï/,PH£}-Õ/¦ÇŸöó°c”YÉ fÆl{Öî~ç’½ýì™Iá~À®"eüÙusp0oáäæåômx·>A‘‰·ò^ֶǦ)óó”é±öÚÒÇ·“"ƒ|œ,ô@íPö¯(Ê—r¡eâÁˆàT m<ü#’³ +aü‘ÖØÛ=ùœŸ»µ°ó£åùOoÄBÈyø0Âb8%Mü7Î^gÿu=§èusïðä…B&;êË2ScB}ÝlŒ4äµo¨ìŸs!Ù8#–…MuO@dʽ¢šŽ!Ò<ØI°/f%GÀÎa¨n�õÙ¼yÓºo3poáäâæÙÊ/("!«¬eôÓ>ÿSqi÷žV4tÇH³³3ScÄÎÆWÏî_½pÚÏÓ~»¶’4öëËþ©DŒlÈ–×4±ß•š]\Û94 ìÔy8mjŠî¥DÀi£!+&ÈÇÃŹeýÇɉ€óòa±âÒòj:&ç}~'¸|7¿´¶µox‚4==9 +è•…Ò/†óv²ÔW•Ü +RÜÈÌÛÄ€æäâB²ADqÊ:æN>°eç”ÔuÁ–°OuÖg§Fîs0ÕRÄ +ðñòp¯ÿx ¿€VLJNy›¾™‹·ÿÉØ”Œ¼’êæî÷£S“ãÃý€žs#!òø]<(FxM‰_[tT”\Œ—w+dà +‹J)h\}Ã~LÏ-mèY ѩȲWW’“¼ßÙBOUV+ˆáç[ïñóóc…°¢ÒrJê:Æ–önûNŦÜÎ-®jìèìmk¨,|x3ñûàCn¶&ZŠRRÌšp!5Â@2a¬ˆ˜NAMÏÌÁÓ?üÒüŠ·½c³‹4:mqÛ¤ÿvØÍÆXKYVRL+¼ÞÃbEDÅÄ%¥eT4tðæ¶Îž¾AgãRn?*zUßÚCèn©«xžs31*ä°»Ývœ¨àFuÍ}U +c!™„¤NV^YCÏÔÖõ`pôå¬g¯[&ÈèÊ4;ÖÛTÛ^øÑ}Ž–†š* +²8i))É/<)))iiœŒ¬¼¢Šº–ž‘¹µãn¿ˆøÔŒG…µï:ûˆƒƒÄÞŽ·5¥O³o$�º‡½9üIq¡)†180 J iH¦ ¤¬ª®©ƒGÔyôL<À7íï')ÀN_DŽ›ªg™)çC|Ýí-Œt5ÕUU”•¾ü”•UTÕ54uôñ¦–¶Žn^‡OE_ºz'·°¼æm[w_ogK}UI~Öµ‹‘Á‡=ÌõÕä@ìS:®„Å$eä•TÕ·iéèêãMÌ ö»¼üÂbRîä—7t MÍQQv¸jŠs®ÇŸ=¶·ÁÌØP_OWWWço>êééàMÍlì¿u÷ò 8—œž™WXVÝÐÒÞÕÝÕÑÚXS^˜{çJü¹ã¾î€®./‰ÅðnÀcÐcбâ8y m}¼ñvs+ë;]<öû‡F%¤ç¾nîAFY³ßwÔ•>ÉH‰=p`‹ƒ-ÁÊÒÂÂÂü¯¾YXZZ¬míÿÍ~™>5uFq¸¶*EVAQY”Š7T¡Šˆ`� !‘„$YX²@ Ñ‚#È.E¬Q±Š.Õ©8uj£§Ó?¡çÞ( G¿½Ï&áÎ{Ÿ{îÉûþNоR•Îˆ•§š;ìÿùÖÐýû÷îôuµé*åù¬Ô¸}~¸ºÕ‚ѧwŒ~†$˜ZÚ.urùnÖí>»üüˆ!a‘p¿ÌÜ¢c5=÷ž<ý7ä½ÿþ}óòvèÔRƒJŽ‰ØLØ;ø. KN¦aóD%*íé–΋}×nÞ¾=xãZ_wÇ™“*)/“âëé> õYúX½p‰Ó*w¯]þÄÐý‘Q¤8ò¡ÔO¬¬:ÓÙ{ãÁðóWoþyû¢ÇŸ¿=ºÝ¡©ú˜˜—•ž’x0–eèèRl<9‰BË`åeJÍÉú–º/]¾:p}àZÿOÝMuò£鉈ßoq[i¯WŸÒŠbV‹\Ü6{ûí‡2%%Sgd²ró%ŠJ]kWÿàƒ'Ï^¼úÎï×/úËí«=íºJ…Xͤ§Ñ¨)JòD(J +5•––‘™ÅÉÍÉÊÊ«jZ:Î÷\êíëë½Ôs¾½±Ö€··ßß{“«3œzõOÏ1xËÀH°²†—_pdlb +x3ÙÙ\¸¡RSÓØÑÓsèÑð³çp’¼ø6äûƒW.vœ©Q—I +ù9V“ÁÈœƒÁ`2³ØGs¸‚‚"Yéñ +m]}S[ǹ]Ý]:Ï6××h+-1*ØwÛ†5Ë—ÚXšNQw7†ìb¿Ò}ëNbDÜ!Éæ%%JµV×ÔÑÝ708ôðñ¯ÃÃO‡Ÿ<~8tk�µ±î„ªTVTÇçqs'Ëã ò +Db™\©Òhkt M-mííím-õµUå¥b;ý)l¯Ïf7G»…ïÕ§æn2ßr‘êõÛýB¢RéYÙP*a‘´¤ì¸¦úTcÛ¹žÞ+×oÞºswhèî[7¯_éíélm¨R+å2±¨° + + +…EbiI©R¥®Ôž¬Ó®¯¯?«®,WÈ +¹¬ôäØpâ®mÖ:Û/²6Ÿo‚ýL§ÚÁ}®‰©å"/^{öÅ$Ñ2Ù¹üüB¨VIÙ1õ‰“º3-gÏu]„.½|¹ÿ2têÅ®Îöæ†:F¥Ë$E"aád…¢"±DVRª8¦RkNTiµÚªÊ +•R.ò2'ùn/7§%6é â£À§«OR÷|¨˜¤X®8®>Q]«khlnmk?´·µ67ÖŸªÑjÊ•¥ÅÒ–]_xØËKËJ¥RQ&/–ó¸F…è»c³ûêö‹ÍM Æsgúæ8Æ}|¿³³s¹|V|i1¼/Z5€UN£V)ËJ°vÉ|¤Û±†çòø|A^>¼‘^PA/‡Ã¤Ó’ɤˆ½»¶{¸¯qv°³±4Ãúeêêö +-žÉ`²Øœìü°ÚI¤R •JÄEPì<>7'›ÃÆ7C»ÌèN“Åb³9p1ƒž–šœ°ÛÛs£Ûjg‡%¶V£EŸ¢º¡ýý`BR2¾9NKÏ çÈb‹•¾™ôŒô´Ã´Tj +lî†v÷w;<%%%…JM¨TJrRB<)*<”èïë½Íc«Ë +½ù¼éý« çêNˆá‘ðS‘LNHH’�ìo™|0>>.–DŠ‰žìL=[a¸.ê@dxXhPÀ_¯›Ö¹®‚ô¼ØFoŽ}:êóŒ÷ÎÝ{ü!‰AAÁÁ!!!¡cÏÁÁAAD"\Å–‰af4Ò`©Ï;þ{ü|wúìضeÓz·µ.ÎNËìlaæÂÌçL«_Æ~$GºoðزՂ^ÀÀ{<Ø—ð¿íz&dȱYòÝžž[7{l\ïî +y¹ˆ/´2_0Ÿ`üYæ†òûWW<ã¸Æm„‰Ñ}l†w…ëÚ5«Wüv…“ÃR»E6Ö– >ÏÄŸn»ŒÊÌMØ´çèè4vø1Ä$“Ò$899::Ø/[j·Ø¼-ÌL1q£ó高WmÇÍ14 ~[[›…ÖV–æ˜7áñÏ1ÇmƒÙæÍ7]`ffXÌØjæffLqmÜ[/þ™%/mƒÙ›˜„y3¬ˆIÍżGÄ?ß\oÿ5f?{Îœ9sqŒfý‚ Ö ýÞ{fÄõò˜>øƒ=ÂŒƒ¯‹YëµgÎ{Ô^ÿ�_„Y#Ì°÷8ÿ/ÆÒF @ @ @ @ @ @ @ ø€ÿ�|⨠endstream endobj 37 0 obj [/ICCBased 51 0 R] endobj 50 0 obj <</Length 96>>stream +ÿÿÿªªª™™™’’’ŽŽŽŒŒŒ‹‹‹ŠŠŠ‰‰‰ˆˆˆ‡‡‡†††………„„„ƒƒƒ‚‚‚€€€}}}|||{{{zzzyyyxxxwwwvvvtttqqqmmmfffUUU��� endstream endobj 51 0 obj <</Filter/FlateDecode/Length 2574/N 3>>stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®cÖ}êÒõ0êè8´×Ž8GNg¦Óïï÷9÷wïïÝß½÷ó� '¥ªµÕ0�Ö ÏJŒÅb¤ � + �2y.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é �@8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚ó�ÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAüom?çW= +€x¯Íú·¶Ò-�Œ¯Àòæ[›Ëû�0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçLUáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.ò�ò·�åÒ�R´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£Vš‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð�=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "AˆYA+äùCb(Š‡R¡,¨�*T2B-Ð +¨ê‡†¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r9‹\A&‘GÈ”ˆrQ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½ÄÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…åÆ’°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â*6X[ݱF=3ë·YŸ±~dó ·‘ÛtÛ´¹iÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=G</zÁ^Á^j¯^—¼ Þ¡ÞZïQïBº0FX'Ü+œòáû¤útøŒû<öuñ-ôÝà{Ö÷µ__•ß˜ß-G”,ê}çïé/÷ñ¿ÀHh8ðm W 2p[àŸƒ¸AiA«‚Ný#8$X¼?øAˆKHIÈ{!7Ä<q†¸Wüy(!46´-ôãÐaÁa†°ƒa†W†ï ¿¿@°@¹`lÁݧYÄŽˆÉH,²$òýÈÉ(Ç(YÔhÔ7ÑÎÑŠèÑ÷b<b*böÅ<Žõ‹ÕÇ~ûL&Y&9‡Ä%ÆuÇMÄsâsã‡ã¿NpJP%ìM˜IJlN<žDHJIÚtCj'•KwKg’C’—%ŸN¡§d§§|“ꙪO=–§%§mL»½Ðu¡váx:H—¦oL¿“!ȨÉøC&13#s$ó/Y¢¬–¬³ÙÜìâì=ÙOsbsúrnåºçsOæ1óŠòvç=ËËïÏŸ\ä»hÙ¢óÖê‚#…¤Â¼Â…³‹ãoZ<]TÔUt}‰`IÃ’sK—V-ý¤˜Y,+>TB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßYÕ.©=bàá?SŒîÆ•Æ©ºÈº‘ºçõyõ‡Ø Ú†žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝèþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_p߶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO�¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬ÐD¸®-®¡¯¯‹°�°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäüå„æ æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ�÷„óû endstream endobj 47 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask 52 0 R/Type/ExtGState/ca 1.0/op false>> endobj 52 0 obj <</BC 53 0 R/G 54 0 R/S/Luminosity/Type/Mask>> endobj 53 0 obj [0.0 0.0 0.0] endobj 54 0 obj <</BBox[46.0 276.0 234.0 -27.0]/Group 55 0 R/Length 42/Matrix[1.0 0.0 0.0 1.0 0.0 0.0]/Resources<</ExtGState<</GS0 56 0 R>>/ProcSet[/PDF/ImageB]/XObject<</Im0 57 0 R>>>>/Subtype/Form>>stream +q +/GS0 gs +188 0 0 303 46 -27 cm +/Im0 Do +Q + endstream endobj 55 0 obj <</CS 37 0 R/I false/K false/S/Transparency/Type/Group>> endobj 57 0 obj <</BitsPerComponent 8/ColorSpace/DeviceGray/DecodeParms<</BitsPerComponent 4/Colors 1/Columns 188>>/Filter/FlateDecode/Height 303/Intent/RelativeColorimetric/Length 11592/Name/X/Subtype/Image/Type/XObject/Width 188>>stream +H‰ì—÷W“YÇÇ• ÐBIè"½Žô„"EU„Б�¡!„ª€@i"Å‚Š¢²(;Èè8ŠëXÆÎü{×e€3÷‡=ïçNHÎ{>Ïs¿÷¾Ïýî;ˆÿö|3þ'ÞÛu¾yŸµ÷ràÙM¸OÜûUß@ãÍÃÃËËËÇ…7X}x(/·ˆ/ìªùŽ9/0„Á`B»xLPP@@€ŸSÂì¢>·éÀ\@&A �уä‚@ˆÃA‚`%@èïŽ;Pç˜ #DQâh II©¯^©¿Š¤¤„Z\%Š%À¹ðêïJó9êBÂHZR#§€Åâ¿ ´.Š ‡Å*ÈËÉb¤¥$Ðb($øÿ—þÎÕy€ºˆ(ZJVAQEMCS[[GG÷3zë£ûÍÐÖÖÒÒÔPWUQÂaåee¤$ÄQH®þ®Øw®:J£ ¬®g€76153377·�X¬ÖÂù'øÎ|³M05511ÆîÓÓÑÒPUÆ)ÈÊH¢Å€>LÛ|ŽýNÜAbøaÂ(IYœšŽ±¹•íG'ggWWHtsssÿð™H$\]Á/œ98m‚££ƒý;kK3¼¡¾Ž¦š2Nè£Â ù\û´~µíp$ƒS×Ã[Ø:ººyzùøòóó'‘ƒ‚‚CBBCÂ�œ¿¡!!ÁAA$’¿ŸŸß¡Mðøx{ôtw#8;°µ236Ô×VWÆÊIK€æsí÷îÀ~Ïž½<ü01i5ÝýVö„ƒ‡‚CÃÂ#È‘QÑ1±qñ G)”¤ä”ê*))ÉÉI”Ä„ø¸Ø˜è¨H29"""|SŽ„jƒü}½<ˆÎv–¦x}m5%Œ¤¸(°ççÛAp¸‘B 1JZFöDŸ€ÃÑq ‰”¤jjzFVNî±ZaƒÁd˜LFQ!½ ?/'+#=•šê P7‚Bá~{TE>Dòõ$:}oej¨«¡ŒöHþÕàl×]�.*)¯ªgbëêx$:!‰šžÉ•¦1KXÕÇëꛚ؀¦¦Æõµ5•å¥ÅEô‚c¹9ÙY™›õ™ÌŒô4jrb|9,ÈÏ‹èhg±__SØ‹!á0¾í¦žã.GI)¨ï3·wóJHNÏâ6›QRVQ]×Ànmëèî9ÓÛ×èë=sº«ýdsSýñJV øççÛüü‚N§Òé4°X™iÉ ÑáÁ~ž®,½‚ŒŠÞíå¸ó +£¤°êþaщÔÌNË‹KË«kšÛ:ÏœþatìÊøø•±Ñ†Ïõîhmª¯©(+fÒi´AÚ˜Å%¥e,Vy9‹‹–—I=àM°·2Ö×P’—Ám37ë÷=ŸVÈ,¨©g·uõ½:953{ûÎÛ³·¦&'F/;ÓÑÒX[YV¼YãA×9òÌ’RVEUMm]}}}Ýñªò’Âc™ÉqáÞ„x]5†ÓúϹنûÚ¼§f€ÔÐ¥•uì¶Óg/]Ÿ¹3¿ðュ¥‹ówf® tµ6Ô°ŠA6L|VVvNwAöjO4²›[Z[šÙ µ•¥ôœÔøˆ@oW;3Me9)1Äöäÿ|ÎcâÁvÍÊ£—TÖ·tž˜º»°ôè—§ËËOŸü¼´07=1<ÐÙ\[Î(ÈÉHå5ë1IàhMMÏÌΣ•”W×56Ÿlïìêîê8–¬œ‘—Nòt²Ú¯«ª -Ž„nC~ó=$,<øS31+Nõ MÌÌ/þ¼üüå«W/}öxéÞ«—úÚNTå¦'%ÄFG’×;áÁ±O&GFÇÄM¢fä0ʪëÙ';N÷öô÷v·7×W2r©±¡¾;S}uœÈsvìÖä×¼Wí]Ýú"†‰J æU±»ÎMÍ/=yþêÍ»wo{±üðþñ‹Ý쪢ìä8òáà�ÒïV΋9 ($,":>)-‡VÌ `wß¹‹CCCÏõvµ‚â³(ä�MEZÈo¹ókçk;{Gg0øB£(YŒš–ޑɹO^¼yÿñㇷ¯ž=º7=:ÐVË̦D†ø{{]]Öi8cŽ‹èîé Ö1<&1-·UË>ÕsvpdtlltäbWK]Y~jlˆ·“•‘–’¬„è6b³fŽÔ7Ä›˜™[Ú|ïHð +?š]\ßqaâöâ“o?¬¬|zÿú_ço÷4±ò@ϼvÖ–ëÌ’æÜ1ÔÒÚÆÎÞ‰àáMÉÈ/©a·÷^¹rõúäµñ˃ý`ñ2Â|]ñÚ_ÉoÍ}Íü®¥£«o¸ßÌÚÁÍ/œ’Wþ÷ÞËÓ}óqå÷•÷¯Ÿýt÷Ú…öãtj$ÉÃÁÚo ¯·ÞÏüõ÷âͬì‰^¤°Ø”\fuSGÿÐص›33Ó7¯^¾xæd]I.%Â`³ÈƒÌƒÓfËÿϽIFÜ›•TÔ4u Íìˆþdja]çÐäü£çŸÝ—ܾ2ÐÌʉö´77ÒÕTSQÞ।¤¬¢¦®©£odjmOð$'fíÓyvdâæìݹ»³S#¬üd²?ÑÈcÐH!î×?ÝW¥ÀÍ«¤¡gbçŸ[ÑzvâîÒ³ß>¬üþéý«§?Î\îi`¤Fø:MÆYŒÌº×Wp©•‘ÁÈÊcUÔµ÷[Ù» +‹O§W²»ÏNÎÎÝ»ï³7F/t³+ÀmðZŠ2â¡6{8ò<{˜°ˆ)ŠCKb°jzfŽ>iÅM½£³‹Ë¯ßZùôîå/SÃ]µ‰!î¶x-%9)pÝ�JtB +#¯¨ªµÏÄÆÙ;$&^ÕÜ38>=·°ÞssÓãC=ÍU4j¤?ÁÚH'-&ãßräAl8öüü‚‚0˜¬€¸4VÃÐÆ=„B«ë™þç“—ï8î/ß¿1Ø^•Gr1×S‘“ ¸ÐÀápa„¨˜„´,NUÇÈÒÁ3(&°¦µoäúíû>úiñÞk—þM}™ÇC¹öa<ûÆ`¬c'köF"{¢T'²§"$TZt¦HJ{Hê¤Ç¥QÈÖ&[$£Æ0„œ±3Œ%¼¾÷óÌ´“:5¼Ÿyï?çg¾Ïõ\¿ë¾~y�>Èk£•±–’<¯?žò=/???x¤°¨„œšþ§mûN^Ë.k隘š™¢’je]9ìá`ºBYjþ”@Um#s{çí¡Ç.$Ý.|^Ol§ôôP;[ 5å�þt8dAC )–å„’à~æ+‚Ž£¬cêàu%«¸–Ô=4>5=5>Hm®.ºu9"Èm-NKA*"|¼H RdXÐÌÞyǾ㱿ç”TÈ]½4Z/…ÜTû8/=1æ¿«ƒ™žšœ„ò‡…gÒ3_�zp]‰H*hâÖºE^¾UTÓL„ØéƒbuaFܱÀ¶ÆrÉ<ܦü€‘QÔÐ7³wñ;žÿ¤®¹£§o ŸFm{S[~?-!:Ì×ÙÎDG¸æÇ…ÿœAFNÃØvëîcñ…ÕDÊ }rz’>@!V¤Ç p±1ZŽgþÑ77+ÀÝUUs·€ð3×oUÚºû‡@?jkª)ý3%62Ôg“•‘ø”`\v]ÆJ|„°8VÝÈÆ%ðh\za<“ý-`Å8[v!¯k…à…ZèÙšF–N^Á—Rr×5wц@»ëïn#Tß½q¿ÛÝÑLO+ŽúIá?Áó +‰É.7´vÀǦ|Éž‹÷ìj²bBß׈õ¡Ê$£¬³ùegØÉÄÌ„öžÁѱ±á~*ùuEAæÕ˜ƒ¾Î¶8-E)6…_ÆbWìþøØ´‚ª·ŸØ+Ò.áý·|bÿ¾Ì¾'‚Áªê®^ç¶á÷?×·PûGÆÇéP»«’—â½a¾Ú#.{å?Ùþ-;Ë„H´¤¼º¡åFŸýщYEUo:h#ã}˜Öù¶¦änÒÙð].v@xàxþõÔï±[mñÇ_b›ýÉI+鬲w Ä_L¹ÿ´ÜŠõ$ƒ>ÔÛÖXñ0#!*Ô{ƒ¹žª¬˜0hlL+‹Ý`‘Ø™MŠ®å›¶‡úíN TðÆ&§§cR]Ù½gû9ÛkÈK€äeÃ4‹ÎÎÜ-…D!á׹Oø¢©£Y’F@9}Êi$t[ë(I±gšÅg‡ö3Xxu#ë-~áç’sŸ4´ý5˜~?n<*éeéÝë1vl²ÐWƒLÃûó¦Y +vXx1]ó ÛöC%éeK÷ÐÄôûÙЬ۟åýqñ×�p]ËcØŠø%`_;^DRQÛÄÞ}T4Àe=0>=;7;Eè"Ve&€Š·n•¶¢¤;†_v5iŒm\ð—R¼hêì§OÍÎÍÍ0ÀZPWL³ßÇÉ\WYZ”Ã/ ;롪ú–›}ŸK¾ÿ¬ñmljv~îýä(ýõÓûÉçûn¶üÑçþ/ØaÓ E¥•uÍ|ÂN'å<Ã::9;??;Mïï|óâAê%<ÔñÔá«õ§kÁ±ó@†WÒYíè½ïäowËêɽ#“ïçÿ373ukx/pµ[ÉVÎbçÍZDBAkÕ:ÏÐWï”Öµö3�ûü{ÆP7©¶8ëJT°‡½‰–‚G²#Pòš&öÁQ‰·K^¶|dîi©+½sõD¨§Ã*m AŽdÇÈkâì݃ƒM<‹}r¤·µ®4ûZô^/S8$ÿoØg!öú2Žg‡=ãþwÏŒ€€ž‰†=áìf5äo³:ÜÝò²ävbTˆÇ:ÎœUfF*j›:zí…æóŒ¢6×<ÊLˆÜ㶧ɉ Ø‘h)åf|Âb>»›æ¦ÇºÀsÓãŽnµ5V—ãÄ» jð2ªú›v:›œû”Õ æg§ÆúÞ5>ÏK¹pd×+Cìð¨ +‹c—Z;ûÿzñüŠ¦Ž]¬—üªü^ÒéÛ7®ÑS‘å8vnæ¨jâÖºEÄgV½eu`` +°{Vâ‰P/ÇÕÌʼn£:0\#¡*¶b5Õè« "IvQ°ôU<H=èjF,¬œµ{ÀõXFÍÀró΃gnä<~Ev¾ñÁî–º²{IgîÜle¸®‘œ´óqÁ -© …³ÛVü +Â;Ú(czfzb„ÖÑTYp+!*XfX=رûâ³s1e›‡žùzï½'³U»úÇSSŒ±*©®<çæù#þ.¶+5¡&ƆÝBn²kÛlñ;|öfNy}k÷ 1É õ¶7Vܺrbï6§5új²°e8†FçD‰ÙÍÖ{GƧ?¬ ´÷Ñ'&èôNbmé½çŽøoµ3ÑV)=•CØ:0;BXTZIgëìwèÌõì’Zb'm˜>>6ÜG!Õ?ÉK?ê ÉŽÅ°•2‹Ì£ó!„Ð’òê¼C"ãÓòŸ5´Rû‡GG‡û¨¯+ +²®Åôs¶Åi)JA“úó)³¸ì°a t ¬ª®©½k@øÙ¤ìâê7ïzú‡†û¨dBeqöóø G3=Xvv&u1Ù¹˜^G‰`dUtp¶¿ìØ"!=ÿé+Rgoÿ@ÿ_2¡º4'%62Ôg“•±¦‚’}‰Ù?v¦…ÿ‡"g¢£1²ÊÚÆV½ƒ]L¾WRM Szi´ž®VBuYnêåè0_g»U:*2¬Y:öX¼¿óv`ͯüó�pàAa´„¬²–±ÅzÀð3×2>«'¶Sº»)-�=íÊ©Cþ®fújr"HöÜþmö*ˆ=�°³.on®¯n#„Pb’X-#G·]O&¤æ–U7’Ú;»:Úˆ •¥�=&<Ðc½…¡†T¶²ýûìé±G\lŒÔå ¹âåááþÊááçãD¢Ðiy5cGW¿°¨Øäì¢çuM$r™ÔTWQœ“ +Ðw{:Yk)ɈCdË1ßd'V2÷›•òh$‚Ÿ÷k‡â@ …Phq)¬’º.Îr½«ï¾ÈIYùåU¯ššIÍoªŸÞMI8¾Ûk£5NGE;†=Ùf¤«3â#‚ÜÖšh+I‹¡‚þ/�8„ )ŒB‹a¤°ŠjÚ¦6Nî~û"Î_KÏ-~V󪱉ÐP[Qšûf\ô¡@O]+2†ÍAý&;, ™ ǃ=VëªÊIŠ‰ „„„_ð‹°0 +…ÃHÊÈ)ªiéáÖØoþ/óåýÕTš‡ñÙ3+½:J—Þ«"„¡K'B!¡· ½I‘"„Ž !„f$´ª²"Å^YE]Á,¨Xpþ€}o]WÇÏ~ËáœËç>÷yŸ÷ùú‡ÅeÕ¨ƒã—g¯]¿6;5Áè&וf%`üVFšàaÂüìfÌ.ì i//Ì wVçÆ!Nè•—‘üv`0Q1qIéC‡”ÕuY;ŸDb³Š«›/ô _¼<=såò³·³©ª0=6ÔÇÙ’…~P€‡m³ïÆþl £”ú‚DǦڪ +r2ÒR’ߎ”´´Œ¬ÜEe5M=£cpGÿÐ(|NI ±“ν89yiœÙGm©?{ìåha¨ÁB‡>›fß…ýÝ«•‡7&zΧ`ýœ-uÔU”äå|5òò + +ŠÊ*GÕµt M-lœÜýBp éùeu¤NÚÀðØøØèP_W[c噌„ð@w»cúj +2ÿAßö››ï×WÝšì%•gÅ{9Xšèjij¨=šZÚ:zÆfp;„§_06.%§¸²L¡ 3úº;ˆµ¥§“£Q¾.ÖfºÀ{bCßýÓæû×`=›b´×à±AžŽÖæ¦ÆFߎ±‰©™ùqKk;'·“!ØX|Vay±½«wph˜94@£*Îd&â^Ž–ÆÚ*‡¥DÁ1åúNìŸ>¼Y{:?;Bm,ÍŒôrq´³†[YYY~1à§ÜÚÆÖÞáæé„ÂÆü’‘_ZÝH¾@ëg0‡™ŒþžNR]y~Z&ÐÃÞÂPSYNJTˆsè;²|í–ô–ª‚Ô˜0¤¯—»+áüÕ ..®îž'}N…b£Ór‹[¢3GF‡‡Xèeùi±aîvÇ 4”ä$E8‰¾3ûÆ‹gnNtœ+ÍÁGcB‚ü}}¼½O~9Þ`||ýü‘!hlT|rf^IE}sGwcxtltxN!Ÿ#fćy8Xi)³Ã)¯ïľññÏ?7ß½\Y¼=Ť6Ud$FcÑ!§Aßy*8$4›˜’™WL¨kj£Ò™£cc#CýÝíÄšÒÜä(”ÂÚLOMÜo‚|Ü~û«•Gw§GºIÕÅÙ)ñQX:…B…|1à'*44Ž‹ŠMÀ§ç”VÖ;”0#ÌA:µµ±ª(û—ˆ`og¸)1?}õñÝ™‘ž–š’ÜÔ„èˆð04:ôëA£:6":6Ÿ–_L¨mléè¢÷2ƒ}=È •ÅÙø(6æúÝ!Ï@=fý¾GÝ·„ôØHx¾¼¦¡¹íBÞKï¡v´4V—æ¥Å…#½œ¬LuÕe¡³ÊËÅ1xöü¾exÙ&¿„PÓ@$·wR(”ζ–óu„¢œ”XL—ÜLO]R^€—c¶a#gþ›4A§@Ô°ìé3g+kšHäÖVr±¡†Pœ›öq±=n¨©rDZì ç<ÏV¾C pquu÷ðòö @¢01‰)YyE�ÿÜy"‰ÔLl¬«:[…ôt´2Ña#Á¹Œgã^ݺYàÐÝjçà.WŸ€Sh\LR*tl«ë}‰x¾¾²4?#)åëj{Ü€u·rª°ÙgXf«Ôœ°²±wvóòC¢#â’3óK*j›Émímd⹪Ҽô,tdMtT!ßp¦Ž±×#·ËäV›42=fiãè +J..%ûLym¹ƒB¥RXs:%íïjk®÷¹ïßηÇþþ¹ÄC-^IYUMC[ÏÈ섳g�*2)³�B½¯¿·‡Òz¾ª8; ‡ôt°0€Ö€g[yv÷¦ÏÛXŸAë“Šš–ž‰… ,~ …] Ý€ßKmm ä§Æ XkŸ’¬Œ¶aw_ýŸµUB +¬*º&'ìÝ0ñ™E`kíeŽ_bm~RM18÷~.VÆZ_ÀsžýÃÛË÷g™í•Y‘þfZÐWäçççûËà†‰ŠKÉÊ«hê›Û¸úc²Jë[iC§ffg¦&˜´ö†²Ü$l€+ÜÀσ´aKøÙ—~a´2p>¶ÆêG$AâåáææúëáÃÃÃËÇ/(“’U8ªc +wñOÊ%4Q&®\½qóÆÜÔø�…X‘ǺYøCâùyØ;¯;²?_úušA.O?im¨*+&ÌÇÃuàï»Íàxø„`âÒ‡U´Mஸä‚j2mdêÚí{ówoÎM2A;*H‰rƒk*ʈ ó³6»°ÏO’ËÒ0^p}•C¢‚;A‰Úy~þùgð\<¼Â"’rÊZ&ÖnȨô’sƒ“WïÜð`áÞõ©¹¦0%"ÐÕÊHCAZTˆ›ËïÎÞR–Šñ´ÒS–Øú¾»ô=Ÿ LBVYËÔÖ3$.‡@¢ÍÜ^xôäñâý[3c½�€°4P;"Å:¯ß/ünìW ö0À®$ ã +ým·ÿ²è¹y xs¾°®ƒqùæýÇKËKOþygvÀàÃýœ,ôTå$n¹fØϦ†yl³ïA Ïô\¼œªž"0*£ŒH¿:ÿhyeõ·§ïÎMô’«ó’¼í͵•‰ ñ±!üØ-u·Ù÷ò<@Á¤Ž¨Y{ òk;†¦n?\Z][[]^¼77N'UäƇxÚkÈ×ð|¿ðœf‡è·àEeµÌüpig‰ô‹×ž®>ùâg‹wgG»‰e™ÑA.'ôUåÄ…ùöôA;þ�7Ÿ°¸¬ª¾¥[pB^m'sæÞã•ëë¯Öž-Þ™¦4¥`}¡;OZ„ á÷}žG�&%¯ijï‹K/#õMÞzøìùë7oÖ×–Þº<Ø^“—â7< + ÿÝŽßv¸FHLV’XPO½º°´özãÝÛõ?–®_¤7—eDú;šk³%ü¾°ÿÄr ?LR^ÓÌÑ?2«¢uðʽ'¿¯o¼¿ñê÷'ó3Ôú¤P¸ªœ˜+ãÿØ·…W5€{¢“‹›h—n.®¼ÚøðñÃÛ—¿-ÞúG!o¦ ¢foñûÃØÚv¼¢öq2.¯ŽL³ü<xóý›µ¥ûs£T°„¸Yê)ƒºñ½¦Ù'vè¹\ j«ÛùFdV´2¦çÿµöæçO›ïþM}™ÇC½wqü¥²ÅXÆnì{vÆ’íB¸"RhÑóD¢‹´‰K\7OY®¤R·%E¹*äf‰.Y“}ŸìË`Æ63¨?Ÿóû[wÉód^ϼ^ó|ÿüýqÎûu~Ÿó9çÌŒõ5WÜIŠð´3Þ&·ÖlŅLjàT nÿ<séö/¯šûÇÉ‹ôe:Bw¼y‘s5ÎsEÉ Çf9;#°¤"ˆæ`h\zniCÏèÌ"}e…¾8;ÚÛTñä狧ÿáF€ufÏ*öÏ¢1uð +Š¾’ý¢¶shz¶²ºL¥L[{ž‰Ü5vƈÓ0'x²£¢‘QÃÛî9‘œù¼ºíýÔ<°¯Ð¦‡;ëJrÒb¾óq§Á³;Çæ-ÜüXi}TðU-“sÔ•«ËK³c½Måo^óu±ÔU’bRð,cgDBïr(,þæ“Š·}ã`ÿ°B¥L´Td$œ=²vØ0çð¬dß‚WÐ2s:w=·¬±wŒ¼ì«ôye…Y?EÝc‹WÉ0Ù¬,eçä@šu§÷w±W¾£™]ZþðñÃò"¾öEvjTà^´Y1lÇΰ‹Êj˜Ø{¿’SRß=2»ˆ²/ÍŽt×ÿ +ÍzÜÛÁ¦b4lÇ΃•Q‡Éš]R×52ƒ²¯,‘ÇzK]û!ŒF“mÙEdÔvì ŒJƒïFÙ?®PÉ`4e¹éq!ûÌ´äÅÿ¿ØÇûšÊóÒãB 삼\ìÈþI3>if½ŒÍÙ?÷jZίH¯.}ÒLcYîuÐè5óE\A{uv´§áå£k±Á>;MÙ²Wÿ4›ÒóÊš³ ñ÷™‘.d¡9äeo²¶Œ±;º(éZºøžŒÿùI,ð°|ü¸J_ u¼)¾ùûcž;ŒÔeDØm6¡úû.v6Ùň“s´UØ hsSï[{v7霿»!cg«}•;b3F;<"‚£¯}4O_Ev1òxó«ü[p|¸2ùSYÍŽÜâòZÛ¡UcÒÀ";‡§€}•rïn(› =èl®(!ÄäÁʺ›•¹‡]¸‘WÖˆ®b«VhóSƒí5Å÷S£ƒ¼LaAìء숻«ãm=üÂ3 +*ßõOP¨Ë«pz€dÞUÜI÷÷°Á«1Z•ØµC\IEm3GïãÑ©÷‹jÚ!0ròÑàäëª/ÍMGÎ&+$6œÌØ‹Ø9ÖÊŽS5 ¸> ’)mè™^ ¬,/Q&ˆÕ…÷.ƒdv¹ʴÜYÃΔ‡OXBAËÔ~ï±Èä»O«Þõ“éËË´ùé‘žÆò'·.9âŽH&srg ;‚¾…{«€¨ŒªÁ7»ˆ»–SRÛÄ¥/ÓÉĶšâì´ØκJ æ&KØQt.^VJQ{»ÃÞ€s‰¿T4õŽÎÌSéô¥9Òpwcyþí„ð£žvÆÛäÄ™•ØÄÎÃ/$.§·võ=wõAqMq‚¼H¥QfÇû[«‹ ì¡]¬ôUpL»Ìgvýÿ;£ê<|‚b2ªzNÞ‘IHÙ{†Is‹Têyr°³¾ôñ-¤ìö&šÐ©|LºÌØ »„'Ý}^ýwv‚þ׳s|B•VÒ6µó8rêÂõ‡/jÚÆgæ—(SÃ=o+Ÿe¥Æ#eWÅ1ß©¨™ýÎîž”ù'öêçw“ÂìþÌþßR äà0tEMc×C!ç/g>}eŸ"Ï/,PH£}-Õ/¦ÇŸöó°c”YÉ fÆl{Öî~ç’½ýì™Iá~À®"eüÙusp0oáäæåômx·>A‘‰·ò^ֶǦ)óó”é±öÚÒÇ·“"ƒ|œ,ô@íPö¯(Ê—r¡eâÁˆàT m<ü#’³ +aü‘ÖØÛ=ùœŸ»µ°ó£åùOoÄBÈyø0Âb8%Mü7Î^gÿu=§èusïðä…B&;êË2ScB}ÝlŒ4äµo¨ìŸs!Ù8#–…MuO@dʽ¢šŽ!Ò<ØI°/f%GÀÎa¨n�õÙ¼yÓºo3poáäâæÙÊ/("!«¬eôÓ>ÿSqi÷žV4tÇH³³3ScÄÎÆWÏî_½pÚÏÓ~»¶’4öëËþ©DŒlÈ–×4±ß•š]\Û94 ìÔy8mjŠî¥DÀi£!+&ÈÇÃŹeýÇɉ€óòa±âÒòj:&ç}~'¸|7¿´¶µox‚4==9 +è•…Ò/†óv²ÔW•Ü +RÜÈÌÛÄ€æäâB²ADqÊ:æN>°eç”ÔuÁ–°OuÖg§Fîs0ÕRÄ +ðñòp¯ÿx ¿€VLJNy›¾™‹·ÿÉØ”Œ¼’êæî÷£S“ãÃý€žs#!òø]<(FxM‰_[tT”\Œ—w+dà +‹J)h\}Ã~LÏ-mèY ѩȲWW’“¼ßÙBOUV+ˆáç[ïñóóc…°¢ÒrJê:Æ–önûNŦÜÎ-®jìèìmk¨,|x3ñûàCn¶&ZŠRRÌšp!5Â@2a¬ˆ˜NAMÏÌÁÓ?üÒüŠ·½c³‹4:mqÛ¤ÿvØÍÆXKYVRL+¼ÞÃbEDÅÄ%¥eT4tðæ¶Îž¾AgãRn?*zUßÚCèn©«xžs31*ä°»Ývœ¨àFuÍ}U +c!™„¤NV^YCÏÔÖõ`pôå¬g¯[&ÈèÊ4;ÖÛTÛ^øÑ}Ž–†š* +²8i))É/<)))iiœŒ¬¼¢Šº–ž‘¹µãn¿ˆøÔŒG…µï:ûˆƒƒÄÞŽ·5¥O³o$�º‡½9üIq¡)†180 J iH¦ ¤¬ª®©ƒGÔyôL<À7íï')ÀN_DŽ›ªg™)çC|Ýí-Œt5ÕUU”•¾ü”•UTÕ54uôñ¦–¶Žn^‡OE_ºz'·°¼æm[w_ogK}UI~Öµ‹‘Á‡=ÌõÕä@ìS:®„Å$eä•TÕ·iéèêãMÌ ö»¼üÂbRîä—7t MÍQQv¸jŠs®ÇŸ=¶·ÁÌØP_OWWWço>êééàMÍlì¿u÷ò 8—œž™WXVÝÐÒÞÕÝÕÑÚXS^˜{çJü¹ã¾î€®./‰ÅðnÀcÐcбâ8y m}¼ñvs+ë;]<öû‡F%¤ç¾nîAFY³ßwÔ•>ÉH‰=p`‹ƒ-ÁÊÒÂÂÂü¯¾YXZZ¬míÿÍ~™>5uFq¸¶*EVAQY”Š7T¡Šˆ`� !‘„$YX²@ Ñ‚#È.E¬Q±Š.Õ©8uj£§Ó?¡çÞ( G¿½Ï&áÎ{Ÿ{îÉûþNоR•Îˆ•§š;ìÿùÖÐýû÷îôuµé*åù¬Ô¸}~¸ºÕ‚ѧwŒ~†$˜ZÚ.urùnÖí>»üüˆ!a‘p¿ÌÜ¢c5=÷ž<ý7ä½ÿþ}óòvèÔRƒJŽ‰ØLØ;ø. KN¦aóD%*íé–΋}×nÞ¾=xãZ_wÇ™“*)/“âëé> õYúX½p‰Ó*w¯]þÄÐý‘Q¤8ò¡ÔO¬¬:ÓÙ{ãÁðóWoþyû¢ÇŸ¿=ºÝ¡©ú˜˜—•ž’x0–eèèRl<9‰BË`åeJÍÉú–º/]¾:p}àZÿOÝMuò£鉈ßoq[i¯WŸÒŠbV‹\Ü6{ûí‡2%%Sgd²ró%ŠJ]kWÿàƒ'Ï^¼úÎï×/úËí«=íºJ…Xͤ§Ñ¨)JòD(J +5•––‘™ÅÉÍÉÊÊ«jZ:Î÷\êíëë½Ôs¾½±Ö€··ßß{“«3œzõOÏ1xËÀH°²†—_pdlb +x3ÙÙ\¸¡RSÓØÑÓsèÑð³çp’¼ø6äûƒW.vœ©Q—I +ù9V“ÁÈœƒÁ`2³ØGs¸‚‚"Yéñ +m]}S[ǹ]Ý]:Ï6××h+-1*ØwÛ†5Ë—ÚXšNQw7†ìb¿Ò}ëNbDÜ!Éæ%%JµV×ÔÑÝ708ôðñ¯ÃÃO‡Ÿ<~8tk�µ±î„ªTVTÇçqs'Ëã ò +Db™\©Òhkt M-mííím-õµUå¥b;ý)l¯Ïf7G»…ïÕ§æn2ßr‘êõÛýB¢RéYÙP*a‘´¤ì¸¦úTcÛ¹žÞ+×oÞºswhèî[7¯_éíélm¨R+å2±¨° + + +…EbiI©R¥®Ôž¬Ó®¯¯?«®,WÈ +¹¬ôäØpâ®mÖ:Û/²6Ÿo‚ýL§ÚÁ}®‰©å"/^{öÅ$Ñ2Ù¹üüB¨VIÙ1õ‰“º3-gÏu]„.½|¹ÿ2têÅ®Îöæ†:F¥Ë$E"aád…¢"±DVRª8¦RkNTiµÚªÊ +•R.ò2'ùn/7§%6é â£À§«OR÷|¨˜¤X®8®>Q]«khlnmk?´·µ67ÖŸªÑjÊ•¥ÅÒ–]_xØËKËJ¥RQ&/–ó¸F…è»c³ûêö‹ÍM Æsgúæ8Æ}|¿³³s¹|V|i1¼/Z5€UN£V)ËJ°vÉ|¤Û±†çòø|A^>¼‘^PA/‡Ã¤Ó’ɤˆ½»¶{¸¯qv°³±4Ãúeêêö +-žÉ`²Øœìü°ÚI¤R •JÄEPì<>7'›ÃÆ7C»ÌèN“Åb³9p1ƒž–šœ°ÛÛs£Ûjg‡%¶V£EŸ¢º¡ýý`BR2¾9NKÏ çÈb‹•¾™ôŒô´Ã´Tj +lî†v÷w;<%%%…JM¨TJrRB<)*<”èïë½Íc«Ë +½ù¼éý« çêNˆá‘ðS‘LNHH’�ìo™|0>>.–DŠ‰žìL=[a¸.ê@dxXhPÀ_¯›Ö¹®‚ô¼ØFoŽ}:êóŒ÷ÎÝ{ü!‰AAÁÁ!!!¡cÏÁÁAAD"\Å–‰af4Ò`©Ï;þ{ü|wúìضeÓz·µ.ÎNËìlaæÂÌçL«_Æ~$GºoðزՂ^ÀÀ{<Ø—ð¿íz&dȱYòÝžž[7{l\ïî +y¹ˆ/´2_0Ÿ`üYæ†òûWW<ã¸Æm„‰Ñ}l†w…ëÚ5«Wüv…“ÃR»E6Ö– >ÏÄŸn»ŒÊÌMØ´çèè4vø1Ä$“Ò$899::Ø/[j·Ø¼-ÌL1q£ó高WmÇÍ14 ~[[›…ÖV–æ˜7áñÏ1ÇmƒÙæÍ7]`ffXÌØjæffLqmÜ[/þ™%/mƒÙ›˜„y3¬ˆIÍżGÄ?ß\oÿ5f?{Îœ9sqŒfý‚ Ö ýÞ{fÄõò˜>øƒ=ÂŒƒ¯‹YëµgÎ{Ô^ÿ�_„Y#Ì°÷8ÿ/ÆÒF @ @ @ @ @ @ @ ø€ÿ�|⨠endstream endobj 56 0 obj <</AIS true/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 32 0 obj <</Intent 58 0 R/Name(Layer 1)/Type/OCG/Usage 59 0 R>> endobj 58 0 obj [/View/Design] endobj 59 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 16.0)/Subtype/Artwork>>>> endobj 30 0 obj <</BaseFont/BHXMXD+CMUSerif-Roman/Encoding/WinAnsiEncoding/FirstChar 32/FontDescriptor 60 0 R/LastChar 117/Subtype/Type1/Type/Font/Widths[333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 708 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 444 0 444 0 500 555 277 0 0 0 833 555 500 0 0 391 394 388 555]>> endobj 31 0 obj <</BaseFont/BHXMXD+CapitalsRegular/Encoding/WinAnsiEncoding/FirstChar 98/FontDescriptor 61 0 R/LastChar 116/Subtype/TrueType/Type/Font/Widths[685 0 685 587 0 0 0 0 0 0 524 0 0 667 0 0 0 560 543]>> endobj 61 0 obj <</Ascent 1083/CapHeight 834/Descent -402/Flags 131106/FontBBox[-500 -402 1324 1083]/FontFamily(Capitals Regular)/FontFile2 62 0 R/FontName/BHXMXD+CapitalsRegular/FontStretch/Normal/FontWeight 400/ItalicAngle 0/StemV 168/Type/FontDescriptor/XHeight 667>> endobj 62 0 obj <</Filter/FlateDecode/Length 7072/Length1 15766>>stream +H‰ì— xTÕÇÿÿ™,d_,ÞÌ$aI!¬a3h•]HÈB1A@JU– ZD% „ ˆÅ¥ŠE• +Hš™a/BUeyž™IB ||د_ۜɻ¼ûî{çþçÜIþä'ÒáŽYÐ".57%¯`ñæ�ì¿œ:5_ ,ê]4I¸9#o|î§ák&ž€cÈøœÂŒ·Ö¥Í#‡ï3ÓSÒí(ÊôŠ¬Ñ9S¼vK¸ôC3sóÏ{Ñ]úÓ�§M9SS¶·~+hhGæ¦äi=/�‘3e¾2!%7Ýý‹uK¥¿Rž·<oâ”ü-1Ç1±€Ëóy“ÓóN½Ðè¾GÞï€Üã"E+e�(ßpL°×΃ìµËH{í6Î^{äØk¯©öÚg–ÔÍ¿ùpp¸"WdgœP`[Ùrm&Ö`¶â#|†/påøßà*AG:Óô¦/ýÙ„ÁlÎÔÑÀÖŒ`;Æ°#;³»±ã؇ Ldäƒ|˜C8Œ#8Š£9–)Lgg.§ðIr:gr1/k‚5kÊ5•ÚpíFíNÅ_ T‚”æJˆ¢W•h¥›’ ¬QÖ*tz]¸î%ÝÝR]‰n«n»Î¢;¡;¥;£ûZ¯Ñ;é½ô¾ú }ˆ>BßOŸ¬O7h †–†ÃCQ¨!4,ìð=aûZú]Q¯jTÕº'hT幂ÕX‹Í؆Ýøp8‡‹¸FÒ‰èNOúÐÙ”ÍB…z†² Û2šØI<ewödoÆ‹ç}9€ƒøs(‡s$ã&s3˜ÍN`>83lžhöhŽh*ª<÷SÄófâ¹bó<V</Ï×Û<_XËs“î˜îd-Ï}ô5ž§Ù<½çÏ©þ¤^Q/«'Õ¨±ª©6ú#&¨ß©?W]ýÉj9Æ`F«çÔ³U³²ÕÓHUO«ÅêI?©GÕ¢ŽQM(%Z]¡>£A+õÂÕ/e—¡~¦f©þj‘:¸!4ßxúÚ×*,«,+-%–¥–õ€åYË)––¡–õæls!`ÞeÞc~Ïü¾Ù(íEæ©æs¦i‰i©Èú¦|Ó$ÓXS;S´i´©‡ô;W^ª<ZUÙ§âÍŠ åËG4*qüÀ5v—¨¡+%º…Ú8Q,›yœ{sŸã\ÎG=bgqvýÑ»‡Öj°—z3ânsWLvÛz×B^o$èŽß$l?ƒgY‚%øžÃ( +lÄë˜/1þ{¼„oñžÇ+˜‹]0áŸX‰\Æ÷øA2ÂøKlŒC*" Ÿ"{±O2Ä~œE†ä‰ø+¶`<.a¾’Øù2%z.`²‘…Ç‘‹L›ˆIÈÃdLÁÈÇT<)ù¥@ˆ*ÄS˜éØb<-Yh~'ú|ƒwD!JÞq—hyŠø‡È ÎeVã]&áŽÁ‚£0c6þ‚9m£%׌•¬“ÅIxU"øK¬“L•è'«m§ì£ø¨|‘ÈL•¾Ff¤3ÛŒ|‰Ül‰Ô¶^ +'q²d¬4YÃN‘p”ìé,Äš=Ýäœñ€'¼à øÂþhŒ&hŠ�"Áh&Y&-$tÐÀP„!-Ñ +шDÚ¢¢Ñ1耎è„Îè‚®ˆE7tGôD/<€8ôFÄ#‰HB_ôCü¿•Sa áA<„‡1C0Ã0#0àQŒÂc-Ñ;ÉH‘÷·j™&:fˆj™¢Q¶¨”#:MòD%«Fù¢’U£Ñgš(4]4š)úXÕ™-ÔQÂÒafžpT„BÐxQY„ÅÂÔËøƒðö +–ŠË°¯ s+±J8(ªÖ +}ëðG¬Ç!±¥BéBÙQ&gÐ6¼‰íx*ÞÆ;xïÉ{¿°ŠÖ»ä”Ú=Bæ^ásŸP¹_NÏ…J¡Qt;hãð+FŽ +åø;*…m³ðrÌF‚ö>I@ ÿ#$xßm ÷@¹ÿ gå¹ §Åù_ßþKsÂüdý}€«¸v9w$Á¯„ 'kH8]‹„ 5$œª!áL=® j]èZ—Ñ¡¨ætX(ÜlE |"rÖ%·ä„åB‹•„½B¢„ $4œ6Âï“„†ÿîr:ÐKÿ tä«÷ó‹‘˸üWùÅx§ÿ"ÿÏH †Z¤ÓÉN%?çˆk×%×æ1‰}Ùùt¡ÝéBzV“@úÚI W}èm#a›2€$° WÛH8Á•\ECÙ‚ +×Èž¶´’ÀVŒ¸I#-l϶õI`;Æ°;ÛHèµ|]N#+ §Ø•±r:ô`O!á4ΰ—„‡CìÍ>Œg%‡g1ûá8ûó5!ÁfN¥¢ÍmÌq˜}\=Sw\¼Ýìú¦Þb¢Jµ]—Œ¸MS +ÁÆ^îj§PèЖÃ5¥AS[zëê÷fBr{¡¸TÊ\´lí:F‰Õ|Ñuz±HúÔt–H^Ï•¸«¶yÕžÛf«9;!‘xXH¼Ù/•Ï:ÛxµåÊgd�™%tY÷¸v¨”챋˄´è¸Ø®]:wêØ!¦}t»¶Q‘mZ·jjÐë”!Í›4mÒØßÏ×ÇÛËÓÃÝÍÕ¥‘³“£ƒVCDÒ?²,Ð9"X§Ó=UÕªÛ7jü¿Õá[gRp½›šÕë7¯×©é2ÂߘdˆO°.\†¤ÓFøéo„õ)ô(Oªº)1-Û˜eŒOKN–;ÞŠ1éR»ªW±]ææoˆOwŠD™«›4ݤ%sóʘԋ¶†&)±[™<¢"¾FMX¢µd㊒¥aH•äŠßÍ+;Ôj_‚ÜVÝò³·htŠ7:Ûž«dãRŒ(RÊ"wÎ_ðûUÛÔuÅï}ïÙÏqœø='Ží˜g?uœ@Òb!>ÊG6[„ Ê"9i ¢Z)¦´2ÑULÚ0ý‡¹Ú\DG´n£][MB«*R'¡}°‰©3S¥À´.yÙ¹÷Ý÷â¤ÐýÛ?êëóιßçãwï;oZB3!Ç°:<ôMðÜèøâ›£Ä B™Q¥(Àâôá‡%1ªäTâŽÄhžjf=¶š+úR§×ýEðDQ7ÈÍÇïùù\Âû-…Ts¹ÓJñ'»Rå½òL§Ó^P8—PaAX,1¶ Lñ†×¬ÖmbÎŒ‘=džˆž‰1%wv„êú2ÕMŒB`†þߨ\.1¬&†‡†7é«÷c”¡ý)j ¸.žfMl�ô´'OtgoÝê#Š©Cq¿v³%ÃZ !at*Dƒ-°@Q9¤Ñî” +C;Éc¤åuRðÒfí\˜U´4Iª’{ˆŠ8£–þ¹¸eˆµX›¤‡ˆˆýj&—ëW•þ\&74=?uPU$5÷ÖÖ¹#‰ìº3³¦çyÖ_ì9]”2£x=øž wª×ÓFu§QE�)�V%5¼�ÿ-Œ—Ñ@* €£’©´ü”"ò�È:'@àvBŒ™ÛˆF:M÷ô11 è<;C¡RœÚ•Òë +:è¿‚báÄ#Cz®=î$é™2zÌév¹J/IwÑÖlþR]Mbt}×}I÷ˆÞ_¬éKñ~.KœŸ'’='½»è üT(AøH-J¡¢%uÝßV$n�½=êÖ]ûSJ"g¢@oa–ú~ç]¯…sdd%"òÇ*-œ•ƒ7z…Û¤»7á‘›á›m-Xˆ9Àgçš¹OÎk»ñϬÒùÿ.#ùLÞ{nxóÕ@¦¢¢d¬Íé¬Í;pCC…çk\A[¾ÂÙïØ,s½Nì¬U&ŽúIyº©¡ö¤`Ã…·WHfº¥¹nI+EÂsr×à ê놿«+<Xòu…ÛZ#íQyåZµ# ȵVQ¥�/×ÖEÚAXQ:ÖÔè‹åwß|å︨ñŸ¶gþ¡]¨[[´–e3/q…3²Ú{“Çâ;µ÷µË\A{þT'¤)‘ì_@8jG3Ø!Á;¼5æwC²á’‰î몰g²jÚïbúÖS}K ®¡è"Û‘,!•j§€vºZ·>ÇAí㇟´lÇ.í]SkÐ~«=/ÜŸíœ\Çä|� ÐC˜�=Bè¹k¾X…#êóy½±N½ÞƼӅ]® +´j•ª++eªe½'ïõÚ•–s«V9òöé5.…©»ZšYpoI§Îu½åHXÊÔÏ‘p¨=Zd‰¬®ìX«äH´½Gd*avmÀÑöu¤…Ú&³øÚÇ—ööŒ÷ì½8¿ãä†Ú ÓÄÛþíû´~G³Vmá±öÓW¾!ôŒµ÷‘n+ÿ9Íšzbª×ë:G-"æxò^ìõ +•ÌŽV?®—©-÷@ëÁu~i®}1>ÜA·H|*F;˜ŠÜù–èáôú|ÆÐ+{àÌ\òûÝT•rþŽYN@F^ƒšbnéU«äxÕTOVL»]“<æ¯ÕJKÒ,ì\ê-µµZê�}6Õ ,qyí3íŽa7”Úo´Ïþô·{-ø%¼ ïÄ/h“Ú ÌrG¸Á¹s?ì¿#4Á¾ËÑwb ]O×{jëë={½(4T˲T›¯®A~HÈ7HöÎz®^ôØ…J?—ǸîDå´b=áwååMà#ÿµFÐr¦DJî霖"à2ú$ §«Ÿ®ž|¯»Õf5è®mÄ‚\+¨Á•r¤6�ç)ŒW�xÛùÆ÷ÜƇµ[s×d!ŸF·i?Â÷‹–s7¯]ûŽ6óë¿Fpðþ'¾½öÐò»4•ƒo$ì€Ø6 XL]FOSUUx®ÚÙÚˆå¼$5\ôœ´:òUUè¢ÕÚ¸œÀð(á…'=ZíaótEŸÁ²´ŠnU(6‡=u÷Ÿ¥îÏÙÎ +ñ¬ïðYOOsŸÅÒ{”ÿU|Ü“ZÁ?ŸíµXöéi+BËÜ—8»bŸžKJÙ)Âoˆ·¦fÑì‡ö×löÕ†IÎÁ°Jô"ûk¬}!Ç-ˆÜ¦�¤‚Nd³ä¬ðP�ž!Ky>“|#ígÈNcð$xí0Ð# £@g€â@粬o„gÌA(uÂ#Àßõ9vË)ž$\xè"«ÿEùz–¿ß2ÍÐþo¡ÍºŸõo+›7ö +¥“9dMñRéÚ„d瓺΄[¨î`;åvËÌ'ö~hCÙþìO÷hÓ÷g{$-Ï,Ù? k=yÿ,ß ¼î›¬Ùó‰Í¦MlþãˆèHõ+#Я‘æïݹÅÔm)z3âõ8ÐxZtߘ2±0@pw¡çè8¤÷‰‡tÅ¢¸)ë#ídï7È8˜û¶HÖÍÑq&ÆÄËú|2ÎÀžMŸOýbeû"í£å¾‚ý“⬇LÌš˜4ði]ÐÇΡù#–ä öG¶=ºýås*nëX ±08!Àßz>2ÿ/à}Àÿcø“ùj‘_ V¦L¿PuŽÊx’`™à‰âˆ`DÇ ¦x"X4íÞ¦ÓB¬ðS†ÝIôÐáÂ/Lß&ɹ1×ÖõMš|âÉ3÷6Îâ•'óò½ÀöãQë‡èYëëìì’z3òÁz>Óæ'pzôóMΑݨ?Ó§tɺŒ¢æ9dw9_Šÿ/ó¿IlŸJ²ÛÎéþ¯ØN}øÂIð7ñ}`ÜÆ0L©ÀÚX]dã8¼r@¶—Í7Ö²ê熎£k2"w•U_ûc/:†q†÷E1^£/½"óWáþ8Kî9zוù{©?—Î%÷\ù]÷…ñÆ:FŒ›õ8Ñز˜!4û¦áG‘è¢gž¼Ù‚_™ò"”ßCÂT^^¤å†^¸§¹ã_—¯ËW¿¬P‰(/#¾%èږåP#9cwÅÌã0ÎÈ/mh+“9hÝÃd²çýL`Ì1&[`b²9ÑI&‹¨}ɨ]e²yÑ-]Æ2ô|Êdh8ÃdªÃ“½ÈŽë™ìC¼‚åͲáV]&ëàN&»P ÞHeŠè2³ŸÉ.äÁ‡¨ÌÓuŽë2Œ±áSLv!'ÎQ™xÏŽ_×eºÎ%&»Œß¤²…ø +ÿñjŽ¢:Ãß¿$»›ÝHA²ø! ,TTB!!`H@J&³7»CfgÖÙ(òˆ¢" ¾‘‡ØVUihEB‹`ié©ÒjÕ>¬žZû8}ŸJïÌÝ<íiçœìÿýóÿãÞ¹÷þ7Gv8Ç]lsÞp°ß©ç}·.¶9Ÿ:8àäú\`›ãº¸C}ÅÚq|Wìpƺ˜Ï¡o¢ƒNÀ§ÁÅ<—OÌI‘=v˜sB¾¤‹í\ö÷%þ(¯Ç·U`{~|»\lçÚí|‡!N®vâ|ÓÅ%œÿ*Çp1×ó|'æœ<ß)—ðÚNs<£Î9λ..á1?ˆ–•Ç*Ùø)¥˜’šŽ˜+S¬C’Y$ÆÒJ\‹È“L‹´¯Œ4J:2SW“,‘´X¤&!*ÇÓ”8Sõ®²LŒf·TÉȨS"nŽ)‘ŠòòIãÊ+Ç•G3Æÿâól„§’"¦!ÅXR2:#zG¤:•RY¤^“ËþG!ü)k[¯LÖ“J\2-ƒ¥kôdR×"Y½Z5™¡ñaFl‹©–e¦™ÏÐd ‹)ª*póý¼P…Yç,ˆÈºeHšÉÒMœ'©ƒVÇÚ-–œP9Á²Y5>d™52ñ"#yœ¤¥)ÜÌÔ¤d*ñ¬‡ˆË"ê…/ÌÁ˜/i¶-K0r•Äxmé,9ì‘'-ÆÔ\#÷Šýqjì8i‘÷e|Ñ]RÁ°Ål‘–Kªª¤™é²ì—Ý[»gwoèÞ¼nq÷–î†î¶îîMŸì<µ£~ýëý•7ûN¾öñÁô3ÆÑÏz{z_|©íÀi[ë?sø½“oõ¿cˈ î?üѱçϽ}ø¹Ã/÷·ßÎs~2bø=ç€øєϕ�? +⛵oêüŒbðƒa(†ñÍw ßF—bFòC|?Œ#|³]Ž+p%®âÇô5¸×a®ÇXŒCoå +Tb&"Ê/o“yë¸Sp#nÂ͘Š*TcjxÛ¨ÅÔa&ê1‹·FÌFæ`.nA3o-hÅ|,À¼-Âb,Ám¸KÑ íùø:G +–¡*’Ð #…;` –óV³+± +wâ.¬ÆݼŬÅ:¬G7îÁ~eÛˆMØŒ-¸[qo:`ÄvìÀN<„]xàQ<†ÇñžÄn<…=Ø‹}اq�Ïà+ø*¾†gùeôy|/àx/áeäM«½èÃ!Æ·ðm¼ÂgþUE?Žá;ø.Žã5œÀI¼Žïá¾à œÆ¼‰³äãmîGxoã~ŒŸà¼‹Ÿâ=¼ð3ü¿À/ñ!~…ðküãÞ +‹Oñ;|†ßãø#þÄâŸñüÃßñü“ß›ÿ…ÏqžŸÀD(òÉO +R…(L…TDi ¦b*¡!t ¥at1]BÃéRA#é2E¥¡Ñt9]AWÒUt5]C×Òu4†®§±4ŽÊèKTNã©‚*iM¤(M¢Éôeº¦ÐtÝLSù¥¸š¦Q M§ZšAu4“êi5P#ͦ&šCséj¦yÔB4ŸÐ´ÑbZB·Ñí´”ÚH¢v’)FŒ:(N ¾œZæ¬íNR)I锢;È 4™dÑrꢴ’VÑt¦»i ¥u´žºéÚÀ/èim¦-t/m¥ûè~z€¶Ñƒ´vÐNzˆvÑÃô=JÑãô=I»é)ÚC{ií§§é�OüC ·«’Ü)+†¬²@uR’ ]HBú«Û ¶œù%Gªõ¸®±Î€$¤º,Ù¤˜Ó¹‡djÝLÈPmL7%çÀ±,Ôº¡˜ªVÄ`ŽÖÉâDÆ]¨w£*®T]EH_ý,Ÿ²Ì_¯é<EžÂ‚ ™.ð7J²e2¿êˆ`cÆ®fí¢Õ¡Æ\Ýjú›DMÄhÊÄÐ21šDÍaMJéiÓÐS ˜ãV®Y4'aiqÉ°’ªd™EºWó7‹,†ÈÒœÉbd²4‹,†ó;-Ø-¶™a·šéˆ@«[‡%d~«¡hñ|Ëþ-j½ &Ë«ZÝ·Ü/¶Hd]åˆÐ¢ÜlÊ ¬«º&[FP6¬UL1ô@Šñ–"¥ý†•b,íç*Ÿ[S¤D>_‰Z§?%Å™• +ÊR*êrg¡dz—•êJ(&+HñÉdªªù|¹JFcTY‡r¡Äf>OÍŒ°ëgESj·•¢ŒâóLM\î@GÆô.ͱdÕ€¬kü;ª!Þx™Éì0a¢_O™Š½|Ó¼j6O´¡ðQŒwWäBÕö ðûCÅ„Š‰A{¬vü~ó;í›”cªœ4½ÐÙ–1Eâ7¡XdßøÈ5Ç<~Z…DLJ'œZ²Zv;¥åˆvžáÎ,Ú.)]ÑLþÍM^šWY¸Æ>¬d‡ÊV„åÕ侬œÛµâ``Ž×y|ãߺœo<çw–Lx¦Ç)‘Ãy3Û%#/Áüõ¦¢Æ˜_qDx–‡¿,‡‹=›ŒßµøÚôÏÅ颸y¿´'O‹Ç´ó´Š<–ÂÛÞ<Þ]¼ÐƒWæpá<Ù¾–Š‘¦½J‹W1½JW‰{•F¯¢z•¯ÒéUš¼J³W1<J؃óSzß0ög+Ì$Ó¬ªÊ5‡Îò•÷ÍíkëPÕ +GõQpjïÒ^zÚzR=Ûzú{ò«×$¢U'ªNúª–Сóý—uä b[ö.),Š¦…C‡9¦…%C„4XHNá²jÈ‚PôØ‘1¥‘³åg}ý{©íWµeO0š?jttí|:z$V:µ›6–n\+ݾï²Òü¯j߈‘Ñõkƒ¥ëÖÄJï^S\ºz͌ұãù·´ù44ùÕÔùTTù•”ùùåäù¤edy%$¥xEÅÄy…„Exùyxxùx8¹¸yØØ9x˜YXy™x¤9äù8ä™-9ä,8äŒ7y3x‡8mfÒÁNŒµ½wp0m0ÒöÞÀ±‘‘±/(º©c#CÈ–ŽL@JÈ9*:b£$HºUÈ)ÜÁØÐÚÛ+ gEFjËnHñŽØP ¹ÁĘ É läY™ä)BíââbO[»¤È+Ž’��,ùž endstream endobj 60 0 obj <</Ascent 1094/CapHeight 683/CharSet(/space/B/a/c/e/g/h/i/m/n/o/r/s/t/u)/Descent -387/Flags 34/FontBBox[-1135 -387 1495 1094]/FontFamily(CMU Serif)/FontFile3 63 0 R/FontName/BHXMXD+CMUSerif-Roman/FontStretch/Normal/FontWeight 500/ItalicAngle 0/StemV 68/Type/FontDescriptor/XHeight 431>> endobj 63 0 obj <</Filter/FlateDecode/Length 1799/Subtype/Type1C>>stream +H‰¬“}TSçÇo’K-Fázéš‹÷ItNÛ‚vm;«« 7¤bDàòfB ÷ˆb^nòâ„` @` ïVhÕátl”2ª;_Ž[ÛF=UÎûгtžngm;÷ž{ÎsŸßóù}¿ßçü8˜ãp8¾!á±»cw¼º;ZÂ(ÓSÞØ«K3—w]Çõ’‡ËÏ‹ôC§—^òãöÍùë±÷d¢ÕߌÇ^Œ*ÂÄ5°ÐûC?ÏM>—ÃIÏ Udæ2Ê&Yœ˜/Þž™¬dòÅûÄ{¤™Š\qŠR!ïcbÅ)ŠÌœ£b‰BΈSeùYiGÅR%#NRd¥»O®”…ÈTŒXr$ÿiXÉÈéÑgØÝ’€À0ɾü,F¼EœÌ¤`Çý`0,Ãv`X†…s±H.&áakÝ.±,›ääôq Æ+âM{Tð×òü[•`§áLíÄ“5÷›àÕÖ’OŽ=Ñ|{L0ñí+¤k‡íÈÆGåhš„6Øm¨¿4òd é åEW"¹ü›¿4ŠÅBhfípÒ{í>ÌÁ«ó!_»}]~øòŸ|y?xñêáš7MÝøƒè~àmäK/qeç7êT°tOÕ©·ÑG0²„pN<^èßì·à®ºÀQ¨Ç;Õ#4\+p³œïìÿE\âá„ÚR`w½jñé¿yðs45c%úÿJþx^y}r¸oÄD™I•mÒÊ|íìŸÀe¥R–«34CU4<„÷³½©=toòs©à°C»äͶ¦æÖúS€³íbƒºx%ùM‚Çjwj#äžï¥+câEÄÀMùqÿ>MoÄ_M?—èüVª®7¬œ®9ó9¯ÊH´náЊЫ¶ö8«-ÓiÊut@æÏKS¨ý?€oà Ûýãg®ëS Q[./e7åÙZ›;~ÿÓÞmÈ;ahí +ÊÍ0ıÍÁ²Iž f‘Hôx3Ä¡pòLµ'Œ§Êtå't´ÚVö8u ©£'ÈGÙÉnt,¬y!zy#Ï@ä î8H¸éôkõu-¢’Ý)¢Ä¸÷êȶ¨->¶±¼Ù=0~Ö9•˜·ý„]Ø…pÕ£K·œÅ—bm´mI)XÃI@|i>R™kwˆ*Ù–ÆfZÑ{Ak¢¾˜šºÙSØ£l]ÝÝUM”±ŠÕW�µæ”ºTTÐPz®ÖTÝÒXêH΋/O”ÒÄ×êN©´BE„…m‹·0Ö\7U]R”Ÿ‘&’50ö<úý‚# I"âÁø˜ïð¯z+è_îAöíè6}?ìÒ8p#>v"ÛŽ_Zéúš[uŸÝ˜“¥?R¤¥'rIÔ[ìW-@ÈÚ]/[`Š¹S™â9| ÎKÆ6ªuL§ïv<\Í?š¾|ãz]ô^ã‡Õl8-Ãÿµ0FÉvè”à÷X»¬›n,ÎhŽ¢‚âßO-zøP€üÕ|þIÍÉ8°Ôø” DAîî|;üÞ¢ÏìâÎIâá¬k‰Ì²dÛmV³Ã¡4+dª¬lš¸&]Z" ŽŒç)§ói³]šª^àâáH¼Lýí™ò8€,Ϩ®õ+T÷ÍAîõˆeSî—pþ×Æþç˜p¿x{ÝaŠ9”°[ãÄ,zåy„™ŸiÿwåDçÿ÷>ˆÏÌ|WAçsî¡Ý²2YsîÉÊ ùè5ø\ýðo€ë6.¢ÕÈ{3â oz®†ìe?:?H·˜û¨ÁUB+hM`£Q*Š§«â3P ñæá, d¯u‹„qÿt¸x-rrñÑió5ôŽmTß«íö\|»®®À�|¡ÿÁgÕFVo¤µú¼Òl‘Â\di²Ö;²öÚí#5<¡@î²ðŸŒ| ¶¸Þ1q:Gaá(¯³,`OÖU&m4²Æ&“§tpHo¦ >ü»OÇå¥õ Ñ\#ñ”Ô…7\9[/܃ܪ2#]f8é¶Êâlµú”Ž--¡µšãe§Id‹($dÂ%içm*àȶ•ZìiÑÜ.Ŧ%½”zåî1ºA«¯<N•°'ó0Ʋ¯Ee÷y4¥´B‘•˜1¹üÉ»¨]€Ö|QÚ=m›¾A_Qî÷˙”pö/n¿Ð7Øq·¿ 0B) fôÁrñ&§PmQ/'êót|wMnÔ-Vû&@›ñwÙ-ðõ˃¶ß´Ó[qâô¯ãÛñ'ª/7âhãrrÄÐJv(ëàÏB‚4#c4¼»²'TY\!M0“ë Äzœ6¿ú£gÿîõB³×*ûªO^´TVyyY‡N×TõZí[çŠ ÿ!À�ïÿÞ endstream endobj 38 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 39 0 obj <</AIS true/BM/Multiply/CA 0.75/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 0.75/op false>> endobj 36 0 obj <</LastModified(D:20120721105525-04'00')/Private 64 0 R>> endobj 64 0 obj <</AIMetaData 65 0 R/AIPrivateData1 66 0 R/AIPrivateData2 67 0 R/AIPrivateData3 68 0 R/ContainerVersion 11/CreatorVersion 16/NumBlock 3/RoundtripStreamType 1/RoundtripVersion 16>> endobj 65 0 obj <</Length 936>>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 16.0 %%AI8_CreatorVersion: 16.0.0 %%For: (Aaron Quinlan) () %%Title: (bedtools.ai) %%CreationDate: 7/21/12 10:55 AM %%Canvassize: 16383 %%BoundingBox: 8 -27 333 276 %%HiResBoundingBox: 8.6001 -27 333 276 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 12.0 %AI12_BuildNumber: 682 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 260 260 %AI3_TemplateBox: 130.5 129.5 130.5 129.5 %AI3_TileBox: -248 -158 486 418 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -58.6665 284.667 3 1575 970 18 0 0 442 460 0 1 0 1 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:0 0 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 66 0 obj <</Length 22035>>stream +%%BoundingBox: 8 -27 333 276 %%HiResBoundingBox: 8.6001 -27 333 276 %AI7_Thumbnail: 128 120 8 %%BeginData: 21902 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDFCFFFDFCFFFDFCFFFD13FFA8A87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD24FF7D7D52FD5A7DA8FD %21FFFD047D537D597D537D597D537D597D537D597D537D597D537D597D53 %7D597D537D597D537D597D537D597D537D597D537D597D537D597D537D59 %7D537D597D537D597D537D597D537D597D537D597D537D597D537D597D53 %7D59FD047DA8FD1FFFA87D7D7D2E532E532E532E532E532E532E532E532E %532E532E532E532E532E532E532E532E532E532E532E532E532E532E532E %532E532E532E532E532E532E532E532E532E532E532E532E532E532E532E %532E532E532E532E532E532E53527D52A8FD1EFFA87D7D52595259525952 %595259525952595259525952595259525952595259525952595259525952 %595259525952595259525952595259525952595259525952595259525952 %595259525952595259525952595259525952595259525952597D7D7DFD1E %FF7D7D525352532E5352532E5352532E5352532E5352532E5352532E5352 %532E5352532E5352532E5352532E5352532E5352532E5352532E5352532E %5352532E5352532E5352532E5352532E5352532E5352532E5352532E5352 %532E5352532E7D7D7DFD1EFF7D7D7D2E5952535259525352595253525952 %535259525352595253525952535259525352595253525952535259525352 %595253525952535259525352595253525952535259525352595253525952 %5352595253525952535259525352595253537D7DFD1EFF7D7D52532E532E %532E532E532E532E532E532E532E532E532E532E532E532E532E532E532E %532E532E532E532E532E532E532E532E532E532E532E532E532E532E532E %532E532E532E532E532E532E532E532E532E532E532E532E532E532E597C %7DFD1EFF7D7D7D5259525952595259525952595259525952595359525953 %595259535952595359525953595259535952595359525953595259535952 %5952532E5952595259525952595259525952595259525952595259525952 %595259525952595253537D7DFD1EFF7D7D52532E5352532E5352532E5352 %532E5352532EFD04A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FF %A8A8A8FFA8A8A8FFFD04A87D7D52532E532E5352532E5352532E5352532E %5352532E5352532E5352532E5352532E532E597DA8FD1EFF7D7D7D525352 %595253525952535259525352595259A8FFFFFFA8FFFFFFA8FFCAFFA8FFCA %FFA8FFFFFFCFFFFFFFCFFFFFFFCFFFFFFFCAFFFFFFA8FFFFFF7E7D52532E %595253525952535259525352595253525952535259525352595253525959 %7D7DFD1EFF7D7D52532E532E532E532E532E532E532E532E532E847EA87E %A8A8FFA8FFA8FFA8FFA8FFA8FFA8A884A87DA87DA87DA87DA87DA87DA8A8 %FFA8FFA8FFA8FFA8A853522E532E532E532E532E532E532E532E532E532E %532E532E532E532E532E7D7D7DFD1EFF7D7D7D5259525952595259525952 %59525952595259525952532E53527DA8FFA8FFA8FFA8FFA87D2E522E522E %522E532E522E532E522E53527DA8FFFFFFA8FFFFFF7E592E595259525952 %595259525952595259525952595259525952595259597D7DFD1EFF7D7D52 %5352532E5352532E5352532E5352532E5352532E532E5228522752A8FFA8 %FFA8FFA884272E282E2852282E2852282E2852282E2852282E59FFA8FFA8 %FFA8FFA8592E522E5352532E5352532E5352532E5352532E5352532E5352 %532E7D7D7DFD1EFF7D7D7D2E595253525952535259525352595253525952 %532E532E522E522EA8A8FFA8FFA8FF7D2E28522E522E522E522E522E522E %522E522E522E2E52FFFFFFA8FFA8FFA87D2E532E59525352595253525952 %53525952535259525352595253537D7DFD1EFF7D7D52532E532E532E532E %532E532E532E532E532E532E522E522E5228527EFFA8FFA8FFA87D052E27 %52285228522E5228522E5228522E522852282E2EFFA8FFA8FFA8FFA85928 %522E532E532E532E532E532E532E532E532E532E532E532E597C7DFD1EFF %7D7D7D5259525952595259525952595259525952595259525952532E532E %A8CFFFA8FFA8FF7D2E28522E532E5952532E5952532E5952532E5952532E %527DFFA8FFA8FFA8FFA8532E595259525952595259525952595259525952 %5952595253537D7DFD1EFF7D7D52532E5352532E5352532E5352532E5352 %532E532E532E532E532E5384FFA8FFA8FFA87D272E28522E522E532E532E %532E532E532E532E532E522E5284FFA8FFA8FFA8FF7D2E2E532E532E5352 %532E5352532E5352532E5352532E532E597DA8FD1EFF7D7D7D5253525952 %5352595253525952535259525352595253525952532EA8FFFFA8FFA8FF7D %2E2E522E535253525952535259525352595253525952532E7DFFFFA8FFA8 %FFA8FF53522E535253525952535259525352595253525952535259597D7D %FD1EFF7D7D52532E532E532E532E532E532E532E532E532E532E532E532E %532E527DFFA8FFA8FFA87D052E28522E532E532E532E532E532E532E532E %532E532E522EA8A8FFA8FFA8FFA8A827522E532E532E532E532E532E532E %532E532E532E532E7D7D7DFD1EFF7D7D7D52595259525952595259525952 %5952595259525952595259525952A8FFFFA8FFA8FF7D2E2E522E59525952 %59525952595259525952595259525952537DFFA8FFA8FFA8FFA8532E5352 %53525952595259525952595259525952595259597D7DFD1EFF7D7D525352 %532E5352532E5352532E5352532E5352532E5352532E532E537EFFA8FFA8 %FFFF7D055228522E532E532E5352532E5352532E5352532E5352532E7DA8 %FFA8FFA8FFA8FF522E28522E532E5352532E5352532E5352532E5352532E %7D7D7DFD1EFF7D7D7D2E5952535259525352595253525952535259525352 %595253525952A8A8FFA8FFA8FF7D2828522E532E59525352595253525952 %53525952535259525353FFA8FFA8FFA8FFFF7D28522E5352535259525352 %5952535259525352595253537D7DFD1EFF7D7D52532E532E532E532E532E %532E532E532E532E532E532E532E532E537EFFA8FFA8FFA87D272E28522E %522E532E532E532E532E532E532E532E532E532E53A8FFA8FFA8FFA8FF59 %2828522E532E532E532E532E532E532E532E532E532E597C7DFD1EFF7D7D %7D525952595259525952595259525952595259525952595259525952A8CF %FFA8FFA8FF7D2E2852525352595259525952595259525952595259525952 %5353FFFFFFA8FFA8FFFF7E27522E53525952595259525952595259525952 %595253537D7DFD1EFF7D7D52532E5352532E5352532E5352532E5352532E %5352532E5352532E5384FFA8FFA8FFA87D272E28522E532E5352532E5352 %532E5352532E5352532E532E59A8FFA8FFA8FFA8FF532828522E532E532E %5352532E5352532E5352532E532E597DA8FD1EFF7D7D7D52535259525352 %595253525952535259525352595253525952532EA8FFFFA8FFA8FF7D2E2E %522E5352535259525352595253525952535259525352537DFFA8FFA8FFA8 %FFFF5927522E532E5952535259525352595253525952535259597D7DFD1E %FF7D7D52532E532E532E532E532E532E532E532E532E532E532E532E532E %527DFFA8FFA8FFA87D052E28522E532E532E532E532E532E532E532E532E %532E532EA8A8FFA8FFA8FFA8A8272827522E522E532E532E532E532E532E %532E532E532E7D7D7DFD1EFF7D7D7D525952595259525952595259525952 %595259525952595259525952A8FFFFA8FFA8FF7D2E2E522E595259525952 %595259525952595259525952595259A8FFA8FFA8FFA8FF7D2E28522E5352 %5952595259525952595259525952595259597D7DFD1EFF7D7D525352532E %5352532E5352532E5352532E5352532E5352532E532E537EFFA8FFA8FFFF %7D055228522E532E532E5352532E5352532E5352532E53525259FFA8FFA8 %FFA8FFA852272E28522E522E5352532E5352532E5352532E5352532E7D7D %7DFD1EFF7D7D7D2E59525352595253525952535259525352595253525952 %53525952A8A8FFA8FFA8FF7D2828522E532E595253525952535259525352 %595253525952A9A8FFA8FFA8FFFF7D275228522E53525352595253525952 %535259525352595253537D7DFD1EFF7D7D52532E532E532E532E532E532E %532E532E532E532E532E532E532E537EFFA8FFA8FFA87D272E28522E522E %532E532E532E532E532E532E532E532EA8A8FFA8FFA8FFA8842728272E28 %522E532E532E532E532E532E532E532E532E532E597C7DFD1EFF7D7D7D52 %5952595259525952595259525952595259525952595259525952A8CFFFA8 %FFA8FF7D2E28525253525952595259525952595259525952592E84FFFFA8 %FFA8FFFFA8282E28522E532E595259525952595259525952595259525952 %53537D7DFD1EFF7D7D52532E5352532E5352532E5352532E5352532E5352 %532E5352532E5384FFA8FFA8FFA87D272E28522E532E5352532E5352532E %5352532E532E7DA8FFA8FFA8FFA87D272E272E28522E522E5352532E5352 %532E5352532E5352532E532E597DA8FD1EFF7D7D7D525352595253525952 %53525952535259525352595253525952532EA8FFFFA8FFA8FF7D2E2E522E %53525352595253525952535259525352A8FFFFA8FFCAFFA87D272E28522E %522E535253525952535259525352595253525952535259597D7DFD1EFF7D %7D52532E532E532E532E532E532E532E532E532E532E532E532E532E527D %FFA8FFA8FFCA7D052E28522E532E522E532E532E532E522E537DA8A8FFA8 %FFA8FF7D52052E272E27522E522E532E532E532E532E532E532E532E532E %532E532E7D7D7DFD1EFF7D7D7D5259525952595259525952595259525952 %59525952595259525952A8FFFFA8FFA8FF7D522E52525952595259535952 %59597D7DA8A8FFA8FFFFFFA8A8522E28522E522E53525352595259525952 %595259525952595259525952595259597D7DFD1EFF7D7D525352532E5352 %532E5352532E5352532E5352532E5352532E532E537EFFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8532E052E282E275228 %522E532E532E5352532E5352532E5352532E5352532E5352532E7D7D7DFD %1EFF7D7D7D2E595253525952535259525352595253525952535259525352 %5952A8A8FFA8FFA8FFA8A8A8AFA8A8A8FFA8A8A8FFA8A8A8AFA8FFA8FFFF %FFA8A8847D525228522E5352532E59525352595253525952535259525352 %59525352595253537D7DFD1EFF7D7D52532E532E532E532E532E532E532E %532E532E532E532E532E532E537EFFA8FFA8FFA87D272E27522E5228522E %522E522E522E522E52527DA8FFA8FFA8FF7D7D282E28532E532E532E532E %532E532E532E532E532E532E532E532E532E597C7DFD1EFF7D7D7D525952 %595259525952595259525952595259525952595259525952A8CFFFA8FFA8 %FF7D2828522E522E532E522E532E522E532E522E52285259FFFFFFA8FFFF %A85353525952595259525952595259525952595259525952595259525353 %7D7DFD1EFF7D7D52532E5352532E5352532E5352532E5352532E5352532E %5352532E5384FFA8FFA8FFA87D272E27522E522E522E522E522E522E522E %522852282E28A8CAFFA8FFA8FF7D532E532E5352532E5352532E5352532E %5352532E5352532E532E597DA8FD1EFF7D7D7D5253525952535259525352 %5952535259525352595253525952532EA8FFFFA8FFA8FF7D2E28522E532E %532E5352532E5352532E5352532E532E522EA8FFFFA8FFA8FFA8592E532E %595253525952535259525352595253525952535259597D7DFD1EFF7D7D52 %532E532E532E532E532E532E532E532E532E532E532E532E532E527DFFA8 %FFA8FFA87D052E285228522E522E532E522E532E522E532E522E522E2E28 %A8A8FFA8FFA8FFA8532E522E532E532E532E532E532E532E532E532E532E %532E7D7D7DFD1EFF7D7D7D52595259525952595259525952595259525952 %5952595259525952A8FFFFA8FFA8FF7D2E2E522E59525352595259525952 %595259525952595253525353FFA8FFA8FFA8FFA8532E5952595259525952 %59525952595259525952595259597D7DFD1EFF7D7D525352532E5352532E %5352532E5352532E5352532E5352532E532E537EFFA8FFA8FFFF7D055228 %522E532E532E532E532E532E532E532E532E532E532E527DFFA8FFA8FFA8 %FF7D2E2E532E532E5352532E5352532E5352532E5352532E7D7D7DFD1EFF %7D7D7D2E5952535259525352595253525952535259525352595253525952 %A8A8FFA8FFA8FF7D2828522E532E59525352595253525952535259525352 %5952532E7DA8FFA8FFA8FFA8FF53522E5952535259525352595253525952 %5352595253537D7DFD1EFF7D7D52532E532E532E532E532E532E532E532E %532E532E532E532E532E537EFFA8FFA8FFA87D272E28522E522E532E532E %532E532E532E532E532E532E532E5228A8A8FFA8FFA8FFA8A828522E532E %532E532E532E532E532E532E532E532E597C7DFD1EFF7D7D7D5259525952 %59525952595259525952595259525952595259525952A8CFFFA8FFA8FF7D %2E28525253525952595259525952595259525952595259525952537DFFA8 %FFA8FFA8FFFF592853525952595259525952595259525952595253537D7D %FD1EFF7D7D52532E5352532E5352532E5352532E5352532E5352532E5352 %532E5384FFA8FFA8FFA87D272E28522E532E5352532E5352532E5352532E %5352532E5352532E7DA8FFA8FFA8FFA8FF7D2E28532E532E5352532E5352 %532E5352532E532E597DA8FD1EFF7D7D7D52535259525352595253525952 %535259525352595253525952532EA8FFFFA8FFA8FF7D2E2E522E53525352 %5952535259525352595253525952535259525352FFCAFFA8FFA8FFA8A82E %522E5352535259525352595253525952535259597D7DFD1EFF7D7D52532E %532E532E532E532E532E532E532E532E532E532E532E532E527DFFA8FFA8 %FFA87D052E28522E532E532E532E532E532E532E532E532E532E532E532E %53A8FFA8FFA8FFA8FFA85228522E532E532E532E532E532E532E532E532E %7D7D7DFD1EFF7D7D7D525952595259525952595259525952595259525952 %595259525952A8FFFFA8FFA8FF7D2E2E522E595259525952595259525952 %595259525952595259525952A9FFFFA8FFA8FFA8FF2E522E535259525952 %5952595259525952595259597D7DFD1EFF7D7D525352532E5352532E5352 %532E5352532E5352532E5352532E532E537EFFA8FFA8FFFF7D055228522E %532E532E5352532E5352532E5352532E5352532E532E5384FFA8FFA8FFA8 %FFA85228522E532E532E5352532E5352532E5352532E7D7D7DFD1EFF7D7D %7D2E5952535259525352595253525952535259525352595253525952A8A8 %FFA8FFA8FF7D2828522E532E595253525952535259525352595253525952 %53525952AFA8FFA8FFA8FFFFFF28522E532E595253525952535259525352 %595253537D7DFD1EFF7D7D52532E532E532E532E532E532E532E532E532E %532E532E532E532E537EFFA8FFA8FFA87D272E28522E522E532E532E532E %532E532E532E532E532E532E532E59A8FFA8FFA8FFA8FF7E2E27522E522E %532E532E532E532E532E532E532E597C7DFD1EFF7D7D7D52595259525952 %5952595259525952595259525952595259525952A8CFFFA8FFA8FF7D2E28 %525253525952595259525952595259525952595259525952537DFFA8FFA8 %FFA8FFFF8427522E5352595259525952595259525952595253537D7DFD1E %FF7D7D52532E5352532E5352532E5352532E5352532E5352532E5352532E %5384FFA8FFA8FFA87D272E28522E532E5352532E5352532E5352532E5352 %532E5352532EA8A8FFA8FFA8FFA8FF522827522E522E5352532E5352532E %5352532E532E597DA8FD1EFF7D7D7D525352595253525952535259525352 %59525352595253525952532EA8FFFFA8FFA8FF7D2E2E522E535253525952 %5352595253525952535259525352595259A8FFA8FFA8FFA8FFA85228522E %5352535259525352595253525952535259597D7DFD1EFF7D7D52532E532E %532E532E532E532E532E532E532E532E532E532E532E527DFFA8FFA8FFA8 %7D052E28522E532E532E532E532E532E532E532E532E532E532E527DFFA8 %FFA8FFA8FFA859052E28522E532E532E532E532E532E532E532E532E7D7D %7DFD1EFF7D7D7D5259525952595259525952595259525952595259525952 %59525952A8FFFFA8FFA8FF7D2E2E522E5952595259525952595259525952 %5952595259525359FFA8FFA8FFA8FFFFA827522E522E5952595259525952 %595259525952595259597D7DFD1EFF7D7D525352532E5352532E5352532E %5352532E5352532E5352532E532E537EFFA8FFA8FFFF7D055228522E532E %532E5352532E5352532E5352532E5352522EA8A8FFA8FFA8FFA8FF2E2827 %522E522E532E532E5352532E5352532E5352532E7D7D7DFD1EFF7D7D7D2E %5952535259525352595253525952535259525352595253525952A8A8FFA8 %FFA8FF7D2828522E532E595253525952535259525352595253525352A8CA %FFA8FFA8FFFFFF522E28522E535253525952535259525352595253525952 %53537D7DFD1EFF7D7D52532E532E532E532E532E532E532E532E532E532E %532E532E532E53A8FFA8FFA8FFA87D272E28522E522E532E532E532E532E %532E532E532E5252A8A8FFA8FFA8FFA8FF5227272E28522E532E532E532E %532E532E532E532E532E532E597C7DFD1EFF7D7D7D525952595259525952 %595259525952595259525952595259525353FFA8FFA8FFA8FF7D2E28522E %5352595259525952595259525952592E597DFFFFFFA8FFA8FFFFFF522E28 %522E522E59525952595259525952595259525952595253537D7DFD1EFF7D %7D52532E5352532E5352532E5352532E5352532E532E532E53525353A8A8 %FFA8FFA8FFA8FF522E28522E522E532E532E532E532E53525353A8A8FFA8 %FFA8FFA8FFCAA82828272E28522E522E532E532E5352532E5352532E5352 %532E532E597DA8FD1EFF7D7D7D5253525952535259525352595253525952 %597DFD04A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A87EA8A8A884A8A8A884FD %04A8AFA8FFCAFFA8FFA8FFFFFFA87D282E28522E522E5352535259525352 %59525352595253525952535259597D7DFD1EFF7D7D52532E532E532E532E %532E532E532E532E532EA8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8522E272E272E27 %522E522E532E532E532E532E532E532E532E532E532E532E7D7D7DFD1EFF %7D7D7D525952595259525952595259525952595259A8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %845953282E28522E522E5352535259525952595259525952595259525952 %5952595259597D7DFD1EFF7D7D525352532E5352532E5352532E5352532E %5352595259525352595253525352522E522E522EFD045253525352595253 %5259525352532E522852272E2752282E28522E522E532E532E5352532E53 %52532E5352532E5352532E5352532E7D7D7DFD1EFF7D7D7D2E5952535259 %52535259525352595253525952532E532E5228522E522852282E2752282E %2852285228522E5228522E5228522E5228522E5228522E5228522E522E53 %52532E5952535259525352595253525952535259525352595253537D7DFD %1EFF7D7D52532E532E532E532E532E532E532E532E532E532E522E522E52 %2852282E2852282E2852282E285228522852285228522852285228522852 %28522852285228522E522E532E532E532E532E532E532E532E532E532E53 %2E532E532E532E597C7DFD1EFF7D7D7D5259525952595259525952595259 %525952595259525952532E5352532E5352532E5352532E5352532E535253 %2E5352532E5352532E5352532E5352532E59525352595259525952595259 %525952595259525952595259525952595253537D7DFD1EFF7D7D52532E53 %52532E5352532E5352532E5352532E532E532E532E522E532E522E532E52 %2E532E522E532E522E532E522E532E522E532E522E532E522E532E532E53 %2E532E5352532E5352532E5352532E5352532E5352532E5352532E532E59 %7DA8FD1EFF7D7D7D52535259525352595253525952535259525352595253 %525952532E5952532E5952532E5952532E5952532E5952532E5952532E59 %52532E595253525952535259525352595253525952535259525352595253 %52595253525952535259597D7DFD1EFF7D7D52532E532E532E532E532E53 %2E532E532E532E532E532E532E522E5228532E5228522E522E522E522853 %2E522E522E522E532E522E532E532E522E522E532E522E532E522E532E53 %2E532E532E532E532E532E532E532E532E532E532E7D7D7DFD1EFF7D7D7D %5259525952595259525952595259525952595259525952597DA87DA87D53 %59A87D847D7D7DA87DA859537DA87D847D7D527E7D7E52592E7D7E845259 %7DA87D7D52597DA87D7D5259525952595259525952595259525952595259 %5259597D7DFD1EFF7D7D525352532E5352532E5352532E5352532E535253 %2E5352532EA8FF7D7DFF5953A8A8527D5384FF7D7DFF537D53FF7D7D53A8 %A859A8842E7DA87D7EA82E7DFFA82E537DA852847D522E5352532E535253 %2E5352532E5352532E5352532E7D7D7DFD1EFF7D7D7D2E59525352595253 %525952535259525352595253525952537DFF7D7EA87D52FF845352537DFF %5959CAA82E59A8A82E7DFF842EA8A859A8A82E7DFF7E52FF7D532EA8CA7D %2E5952535259525352595253525952535259525352595253537D7DFD1EFF %7D7D52532E532E532E532E532E532E532E532E532E532E532E532E7DA884 %A87E2E53A8A87D842E7DA87D2EFF7E5352FF7D2E59FF592E7DFF53FF7E52 %52FF7D53A87E2E5252FFCFA82E532E532E532E532E532E532E532E532E53 %2E532E532E597C7DFD1EFF7D7D7D52595259525952595259525952595259 %52595259525952537DFF5359FFA852FFA87D59537DFF5959A8A82E59CFA8 %2E7EFF842EA8FF7DA8A82E7DFF8453FF7D532E5353A8FFA8525952595259 %52595259525952595259525952595253537D7DFD1EFF7D7D52532E535253 %2E5352532E5352532E5352532E5352532E532E7DA85952FF7D53A8A82853 %527DA85953FF595352FF7D5252FF7D52A8A82EA8A85259FF5353A87E2E7D %53532EA8A8532E532E5352532E5352532E5352532E5352532E532E597DA8 %FD1EFF7D7D7D525352595253525952535259525352595253525952532E59 %A8FF7DA8A85959FFA87E7D847EFF7DA87E532E84A8A8525359A87DA85953 %52A884A87D537DFF84A87E847D84A87D2E59525352595253525952535259 %5253525952535259597D7DFD1EFF7D7D52532E532E532E532E532E532E53 %2E532E532E532E532E532E59525952532E53525952592E59525952532E53 %525352532E5352592E532E532E5952522E59525352532E5952532E532E53 %2E532E532E532E532E532E532E532E532E532E7D7D7DFD1EFF7D7D7D5259 %525952595259525952595259525952595259525952595259525952595259 %525952595259525952595259525952595259525952595259525952595259 %525952595259525952595259525952595259525952595259525952595259 %597D7DFD1EFF7D7D525352532E5352532E5952532E5352532E5352532E53 %52532E5352532E5352532E5352532E5352532E5352532E5352532E535253 %2E5952532E5352532E5352532E532E532E5352532E5352532E5352532E53 %2E532E5352532E5352532E7D7D7DFD1EFF7D7D7D2E5952535259535359A8 %52535259525352595253525952532E595253525952535259525352595253 %5259525352595259595953537DA82E532E595253525952535259527D5359 %52535259525352595253537D52592E59525352595253537D7DFD1EFF7D7D %52532E532E532E7E53537D592E5252532E532E5352532E592E5352532E53 %525352532E5952522E532E532E5352535259527D52A8527D7D532E535253 %52532E532E597D5359592E592E532E53525352595259537D7D522E592E53 %2E532E597C7DFD1EFF7D7D7D525952595259A8A853A87D7E59A87E59527D %7DA87DA87E7E7D847D7D7D8459A87DA87DA859A87E5952597DA859A8847D %7D84A85959A87D7D7E847E847D7D7E847DAF59A853847D8452597D7E59A8 %7D8459A87DA852847E7E2E595253537D7DFD1EFF7D7D52532E5352532E84 %59597D597DA8597D52525284597D7D7D597E5284847D2EA87D7D7D597DA8 %7D7D525352847D7E597D2E7E53A8527D597E597E52A8537E7D84597D7D53 %7D7D7D5352535284FD057D537D7D7D59847D59532E532E597DA8FD1EFF7D %7D7D5253525952537DA87DA859A87D7E595952597E84597E597DA87D8484 %7D7E59A87DA859A87D7E5959527D7D7EA8A87D59847D7D7E7DA87D84847D %7E84847D7D7D53A87DA87D7E7D7D52597D7E7D7D7DA87DA853A87D7E7D7D %52535259597D7DFD1EFF7D7D52532E532E532E5352535253525352532E53 %597D597E2E592E5952532E53525352595253525352532E532E5352535253 %2E5952532E5352532E59525352592E535253525352532E592E532E535253 %2E532E5952532E532E592E532E532E7D7D7DFD1EFF7D7D7D525952595259 %525952595259525952595259597E53535259525952595259525952595259 %525952595259525952595259525952595259525952595259525952595259 %5259525952595259525952595259525952595259525952595259597D7DFD %1EFF7D7D525352532E5352532E5352532E5352532E532E522E5352532E53 %52532E5352532E5352532E5352532E5352532E5352532E5352532E535253 %2E5352532E5352532E5352532E5352532E5352532E5352532E5352532E53 %52532E5352532E7D7D7DFD1EFFA87D7D2E59525352595253525952535259 %525352595253525952535259525352595253525952535259525352595253 %525952535259525352595253525952535259525352595253525952535259 %525352595253525952535259525352595253597D7DFD1EFF7D7D7D532E53 %2E532E532E532E532E532E532E532E532E532E532E532E532E532E532E53 %2E532E532E532E532E532E532E532E532E532E532E532E532E532E532E53 %2E532E532E532E532E532E532E532E532E532E532E532E532E532E53527D %52A8FD1FFFFD047D5359537D5359537D5359537D5359537D5359537D5359 %537D5359537D5359537D5359537D5359537D5359537D5359537D5359537D %5359537D5359537D5359537D5359537D5359537D5359537D5359537D5359 %537D5359537D597D7DA8FD21FFFD5E7DA8FD22FFA8FD5A7DA8FD25FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FDFCFF %FDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFD3AFFFF %%EndData endstream endobj 67 0 obj <</Length 65536>>stream +%AI12_CompressedDataxœì½is%Éq øò?`?ÈŒ´2ãÌàŽÙð álñX6)iV6ÖV¡»K* Juêùõëwxä{¨ (ÐIV¡‘ž~…Çßü¿ýö›Ý‹×¼ù&žÎ'ÓßüÍÅÛ›ë÷¯ßþâ„ '¿|õêû÷oô³ßýüd)§34ÚýrýNþÝÍÛw/_ßý‚~E¿¼Â·¶»~ûúîäÿýðòîÕõÝÏO~ösøÍï_¾u¿ûãÍ‹÷¯_¿zwzýòçúIÀqyý~[ÏÂr¶„“eþEÎ'»_aƒë»?]¿{÷òÝàgâvþúÃÝ‹—w?œ¿þ×_œ¬'ß„zc< µÀ/ÿÛËßݼ[œ–y^6Í._?ÿp{s÷þ·o_?¿y÷îâõ«×oßýâäâ§ë»“_]ÿ�¿¹>ù7¯^½þóÉù«ëçÿì^¹z}÷›^¿yùþúÕ»ßÝüðáÕõ[hðž\üêßÞ¼}ùý7¿{}{}G ÿv}÷âÏo_¾‡Þ|syýϯß_øÛŸnÿøúýøû·×ÿt}ùÆ£ú{x‡ðÎAµ¿¾¹yqóâ¯ÖÝ/ówW/_ÝÀlß^¿?YÎýî—KøîüÃËW/~ýáö7Àe Žßqÿð¨ +½ÅŸ\¿ûå-@¾½y]‚q ÿüîoÏý„�žŸý#|û%ñ"ðÊÿü¹ }ûúÍíõÛ~ÇÍB¡ÿóï~sûæð1ÀçÓÝløgÿYZÂ@¨Õ7!/-y=Ik9IËÊ¿ïŒró§—7þÅɯ_ßÝ0 voßËŒ™Ò<óŸü›ß}xuóöw/q~ +‚áW¯_ܼ‚ööþÕ«ëÞé0—þ'7øýõÛnÞ?¿~õá=´U¿�D~výÓ òìÂøÍ››»ß¿þ;êã7˜¾”|Ö?�ãŸ,¹æ“VÿJŸI)œ¤¢\üŸüćØô3æç·0c¿yûò‡—w¿NÖïþöíË}k€IÐ8NW÷ÿ¦ÿçÃØß¿¿¹“�÷\üÊqÃ|ú«oá‹û»¯oqÞáÊ6@}õúþýL¿×?¼™þqŠíì_>¼~óp½º9iå쇷׺i_Ïv/^Þ¼…ß¼;Û½…_Ÿ]<¿yñòÕ«ë³ýõóïoÎ~ýXøæì7Úl:ûƒ½qÍM® ÛÙõó—o7¾uó¯g×½ ¿MÈŸ+òzs:»áWoÜ«7öêKFÿ’Û¼tm^Z›;B?½æ¶¯¹ík×öµµ}Í]ùÀM?pÓ½étöÁÚ¾¸þᇛ·g/ ƒ77gÏÞgïÞß¼}…£xwó¹ïì^½ºyöæú-RàÍgðˆ—|TzK+°½8{þúÍOÀ$?¾?ƒûâ×è÷Á>wz÷úý‹›ïÏvû³ß¼{uýîÇÉ@o`×¹}y÷¡7Ò¿º¹;»ý°Oíôï×o_|¨^ÞÝàÏ·×ïžx…ÿÐ×�—¯ÿˇ›w8ȯÿ|wvó¯Ï_]ßÒÀ]/Ÿ_¿‚ìïa!¿¼;ìÆ ü^Ýܾ†îû÷ý_L ØJ^¾Á‘¿{sýüælÇ“±f“¿ög¯‘Gî^@—Înné/bd 1!Õ0NúW‡3ðÅË?½D1¢Íÿ‡ýôýÛkžÑý‡·¯©§´R¬ßô/B7}ÿ,ì_>{ßyý„溯³?^¿»±Ò? éû_x,2í‹îÝÏ;挽unϤù%ÃéÙõ—Öè—Üè7Üè7ŸŽû7ÜâÜâÍøW/p¦@µ8soóDÜ^?‹ü"Ÿš]?§ÁKšWôtöㇻ®ß~¸}uýá=¬CØþùì9j>Óï÷$Aóÿî÷ï`ïè[FüŽÄÔþîùkÜRqòÝfó>ØÌÿñlÛälû +ï¿ÿÿø =lèn~ÿÓ››ÏïÍ 6lµìË�9Û´çÍäXOH¡ü¢®ª+Ç4èÒ!ôìÈ»H$Ö˜Tq‚ðOgÄ/(dGT4øþðìðÅÇœšðˆŽÝ:�ž¾øÄúÇ¥,²-,5žÁò¾ù—ׯàåìåÝ÷ Þßÿä6 \ÒÔ�ö|°-@^à?¦e]pëýËëW/^~ÿýŒó–ʳ7o_¿øðv¶—€ñ=îÑ€~mg¿¹½ùáúdZZ>ƒ÷“¥Õ³ë7ð¿J/Úzvyó +X,,I„/lÿëæ“flü +ıpÉwÇØ$3‰¿’ÿdòíôë7™Z¿}õ~õ·o_xóË»ï_O?cÛìï`K†]èݼ8ùÍÿ þféÓÈ"ÏüÛÚ€õæçEªØÛ›þ%¼IÿÔ¿?ýöåÍ÷` ô׺¿ûÓÍ«×oZƒÀú<ùûë·o>ú·`AŸÜ0?{ ºÜo¯Rw‡}RÐgß Nó'íÜæià~õº~ÿ#˜°¡¿3Üüϱãû4¾oŸ£Æüöäüí‡w?žüìhC;þÊ°˜ ØþßÇ7~K/ÜýæŽ tø%i°ýLÿî¾ïÿüòß3ö‹kÐJI•ùüØŽü޾ĿûÆ"Á÷òÝmç'ù- +æç¯n¾ý ŒˆÛÏžÜÐAÈݳŒ?ÚæÛ?_¿þã³—|¶ÚÍGWN�l4/€÷¿ýðòýM'ÐëÛ7èj:ùöÇë774Œ÷?^QËo aÆÍ÷o¾ùˆÔñäüÎýþoqçíó'?;õáæäwðOØwüóé8v{@ôŒáÿ:ÍøßO˜ãœàÉð”¹ÎëÜàÙÍçóÅ|9ïç«ù +š-KXâ’–;o…}³-»åž‹årÙ/WažÂBˆ!…J¨a -ìÂy¸—ðìÃUœã¡AŒ1ÅK¬q-îây¼ˆ—ðìãôcI!Å”RžR§¦5µ´Kçé"]¦}ºJWÐÑ%‡sÊ9—éÿÖÁþ·?-ö'[ÿäÿ#øOx&¢ Ó…ÿd +éŸYžb¢]êUú©ÒO+Qþœè/&,þÉ«žÃs ÄÞÏ—0˜žÿ:]]]í¯.¯.®Î¯vW žõª^•«ÃWáj¹š÷Wûýþr±?ßïöm¿îë¾ìó>íã>ìÀ¯_î////.Ï/wÓe»\/ëe¹Ì— ˆ.øäÕÅþâòâââübwÑ.Ö‹zQ.òEºˆáb¹˜Ï¯Î÷ç—çççç»óv¾ž×óržÏÓy<Lþ¼»Úíw—»‹Ýùn·k»uWwe—wiwa·ÀH¯hv®®h88 K¶³Ááð* ‰ÃL4T,Œ"Ùï'9Žý‚Æ@4¢RiÔÈD¤ Ré‚ÏlÔAúÀ É„‚§V¢Ri†TK}0‡ÿí?ó¹Ü>Ó!Hhô9Ïùá3îL:ù›ïÎߘr§Ò³ÂÓàiÌçô�Gàø”0/…½,Öx‰ô$xÿ«e-žÝT€Q +0oS +ëa¡'ÔXaMÓ·Ju…§Á³«çØL€«f]V!k\öh‚? +¶]×µÀhëùz3„Ó}Õh]µ¥…è>v¶Öví¼o㜃\ÁªÑÅRãR`,y˜Í®DHð³ü Ž~ +ô€0ƒ?ýèÉHG”…dd…?Wø:ïèïsøûBäæÉÎËe¯J¤üèa‚@‚ÐÌ$UQ®Vøs%éÚH¢Œ='‹RvBì +»R–emY›AÖb˜d5ù‚«ŽQ)+¨µš!åpV +2Ф4|0ãJš_õ/`vØæ¤N0=&)ÁG°{H¿+\‡0£0· �ã +3^`æ‘"eYy…+øä8fó¶#•’'àªÜ€˜3pÞ8ð¸q]Z‰SHÿc@ô¤ÅVèì;`¾PR†m$ýâ,‰pÓíÒ]Ò\(CÈò sAâá‚ÿ;§gGO›pDŒâ_äùZ2 F‰R¦*>3‰Õ+(\/IÀ¢ˆÅÿvIÚFÒå-JÜBRån"ÙqÂω‹pë Õ¼'A|IÂÅ1 +dÉeÖ‘õäiŸûLÃ?×/zê±g: +.ŸùäçK·œf‹¤ààÿå$ϧµÅ +Phôíô7ß}¼Ñù»i> º†*æb,ó§%�"t…EW#F2Ö֋⨧±-ñ$æÓ–³}íQQ¯JÄØÍiXh^‚&¤:gDS@b¤Œh@'Y“¢YNAÔ¤P‡z‡ˆúr~iŠjœÇUÖ«ë7'ï_Ÿüý¨6O›cÔŽ•T ÎâÒè‡9¤DÂ:ÑÂ’ëøöËM¹¼y¢oÊ€ø…ñ|Ó&|¤ÉCÐä|1‚Ô|ò>Š/™’¿}{ssçí‡ €°Šå B¨‹!/‚¼øaµBÖY3DÝ´CÙ`ï™hãi´éÚt’l8¼Ý\’ƒMh¥m,ƒùayÀFÞ%ˆÖs@Ø`ש°Iâf »'hŒ{Úiw´'Ú¬gØÚQÑF¸¦rœ•0ü÷1mï«ÿ;†•BVóAäÑW©§{Þ‰ÄPhdOTR¿²X"‰Œ• ÏbÏáPî±Æ±šk}{ÓúÒùXßëŸê|»Aá•o2Ou¾2ê|ôUÓÛPk«Ng»4m-�Ï$èV>Z§vÀ_ÀmW°ý-Àƒ82C*l™ wÐsØP/a{½‚ív7ÂFœ¡w¶iÞÉÊ#ÝÔ$V”Ð0MdœfVm#õ'2U™«;2YÏÉl½ÓõrB#’Á"Ö"+…¤¾!N¯nÓPx0«h'ƒº =|Š·Ð"ãï±ýAº$êdu&ws[íÁІ—ÔyÕú fí¦ÁügÀÎ�äX˜CH=c É@ëh1æqÌ%qϹhk ¯ÑË5IrÀ¤�ÏRg`%9PI’YæÿÃÙä™…±y²o\;£Ó«»&”fÞ=±7÷NjÝ’Õì¢`'Å^\\YŒ«õpi ÆTš€žºªVYU¸¢dMáÜЂÒ%…X«-¨QlFíÙŒšÈŽbKŠì(ÒÒÙŒZIuGCŠM)1¦ÄœBeŸéÍ•˜T“XU,ÖT/̾"mpG¼ƒ6Ü@«w|’=y¢m!̉óÕÿ}ÂEþýA[¯“0‰ÄÅ?óÆ#”6þ þg‘eUD‚¯âjìj²ÚøOöáÊ»°¿/Ä(ÙË–0تb›Šu:Á?Ø0UÓTS2Pí)öT÷¬òð¿ÈnÄkùŸœsÀúÌöâ•3\FgÏ°¹08ïÊÕÀÑ°?�K#;'bcdás°Áf$®ÄÌ¥çÄW´U TÈdÞ#2ëñ6'à5Þ'X¬ž«8J²MºKÐ&q)›ÄB›D"«7‰$1ì!Ø{hÿ]ÙÑFŒd;òdnƒaxy¹G— M +à¸üá©d]÷üG“¦«@ŽB¦Jy´3ñí‡éµõóŸáòñGö[v>œ›sQÝŠI‹¸öâf`‡¬ºd‹x¢xØ1»ŸÌu°AøhI=ŸÅMÛ•s¯˜Ù‡i'žx3F¿èæ—GüBeã=C{ÚJ.h[ÙMæ ZaÏaúˆiTì'ZP’½ÏÞ¢KÚÀÎÅg´#Mq%ÏQe"2›)’)+i©,fÙ)°·Ò%¹–ø_JÙÙÓ&vY²®ofç_>üËê]îþeõ.wÿò¬þå‰ÌìbVÿr÷07ó0wsv¾©Á'Åþ¨É¹£Ž8£Žx¢}Qƒ7jâíÅ9¤¼Kʹ¥èiÎ3¥Þ)õO1×åÉÜTj#2ç²·?ƒj?<D©IþÂùùÂ@……*î‹TLÛ`…h¡[=t´G÷âþdç§r6y>'bêÅØùÒ¹)çFu~ŠûóÒÜŸê�¬_ONÁ>T¯wâ]ÉZHÓD‡h$Ís!+ñJ£—ÄçùGÙCº’òZÈOŠžÒÄJ4,¨.°‰& 38ó%3‘NîŽó!˜pè +e[÷¬exÿð¹t&S'Ò2Éš>¤S·Dj_±÷+‰y&¢ÎrH#MˆÂabì…çf€12‰-’Í +!#Wd]\Š—âœÔáF¾Š•ù…<‰Üò €Ð•¯A(z‰š1¨‡ò„7’Õ¶åñÑå'^´>tuhÖ…¬ +^¸Œ.\¸�ˆý'ï<·<«4Ÿ2—8“<‡Èæ"”iâØ·ÏŒ-S…5ÉL‰Œ¬,ÌÓs¹ñé£Þ‰S²è„åÌô!ýÑE¢FŽ„Æ�»!Ø‘'òET³u4†¤¤Yl¶e¼9ßS~/^Šy2K>‰³¢ô\I¢îHÊ^ˆBÊ~ö\Zo]5eå´]ì&ÖPaÊq7P%u¦ ƒUUTVqK)¦°®´í°ÚzÎ"ǵ“ç\ò—†˜“žª³Ež`ŸâÏ¥I¾©ßÕoW ¨®²õq/v²%ž_Ê×8+Ûæž÷PÕ¬ñ±H™<,™’<YÙûe£®´iãC³7‰ZÎìy:ʽ}zßÿ³Ð-ljnf¤'ŒÉ d5±ú/ÅâgGDì@£€©ZúWbåGq™U±î•½¯Œµ±v1¶Ö˜(04»Õîs¬sÎ5ñB™ƒ-NÎǦöÓ…YP³ØP‘ôŒÎªÍëÂo`]$ŒšÄ&e«sG1RŽ‹^‘— +KØÏå=8MBŸárb§—D>ƒ¸òÔ‘Ó]9;qÚQ¶‰yéÈ?G²>kÊÉd.çÔ‘ÜuíDšduðlãæïé$^vžz÷éj.TïDunTqûtÇyS'q¦VçPí> ¦_ê Ðâž Â1 +¥‰¤¤úˆXZª§H½EM¤çNd¨>Ã#+}¢?X>ë”Êdò4²Ž\pÎ]‰³µ÷ê%¹8ˆ×š¬´Éò€x¡é2»pË,ˆ¯ m^ô;8§ƒº.&Ù7tÏàe¥{í²G°?¬1p=ѦàÖ’¬¤IöÝ]H&üû*âu4 +ýQàïÐÁ²yo’%0{$TÜnD¼ S•¡*;IjN&2IÌeqnòÐI@JÃY®¢==ÞJ +ÚDð„›¥¶Ó*JÅl&±–,OéÒRpÔF®–z'ÉYRkh?˜ÊÝX®bò¨¹Ü f ¸‹U3™Ñ<šÍ`?®oë.²E±É·3úx’…O³è&u¯+,‰íjrªmÖõ…ZØô4gdW1´‹,æd涘'ju/«x"-Þ®\piÏ…=çÃÖùn¢?Ètö‘ý1(ß3¹4›K3º$§KŒn5¼‰q&—ßua»´îÚÍåzu‹¼ÚÆŸ]æ—Øç“™èÁ%‚-ªY¸Ô«½³Ú/Ívïö»Øð“h0ÍžÕžNÁbOvO:’†Ü³¸gîÏ&ýk?<—ã3]þw~ðìîyÚáCÚ"M÷‘\CË4¼'Ñ𣩆“)Ÿ6â·füI2;~2ß•.5 )¥!—©{«vbÎWKdJfªÂ™>b«f1êƒ3꽹ʶO7ìÉ`ŽÄÎØnõÑ3µ‹4ãIXoæ‹¡?‰5»Þb‹öܬÚ&F?›ýjú³›ÍÚMÝ0aKLª€OÏ•ó '¥‰œ¦º¦¸À +Ìd9 œ-Âé!œ¢Þ2&V<%WÔè92 QÔLÇ”OgPøB€bÊsÄ–t˜ ±0VKÒhñ4À<÷N=>Îʆ˜×Ó·®ŒkŽ5'è²Ô‚ã+:â€ãìiG'%œF˜x—ó8ø¨o•^%ÁX'˜l ˆ::ÍïÇvŠ[ÒIL˜–ä:õPDÔ›¯a…TNó²`r +ã«-2NÜ%]øõeŽ¹ò(YøC 9Ñ©õG«ã«§€³¦–æxŒêKyž½¼»¡³Q–ɳ…ôü*é!€ãG�îOÿ¿èéÿ ׃6Y&Âîc¹S#ŠNÁS:LÎ’f;º‡Ù†®C¨Ü‡ÉГ³ mèÁŠ&Ç7£ÕVSš¼B“º…6Ž!u ©mî¡f.¢ó!ãc¯YyÆÕS|ˆ8²ØEô±Ulr}vöœ³ª«»½*0ªQIvø=\†Ä=Ùp4)Ä1ÆÁÉÉñÆü‘³!ýdȘ|áS/ˆM&=r”S±ÇG§ËèvÙ8^&³º·™êžwªK®ðþÅeð/’Å<Mª¸rÆ‘“ªqSϧrÕ'ã©Åñ•&P(oQÇ× ‡íŸÉ3(z—ãóù¬pÞ x 1ÈˆÉ ÏÝ‹sŒŽåàÈ¡é#l}o‡Þ·ÿMá¬,צ¸\›în¾Ø!éŸgÓb›c£L]–w<+S\NÆûM–M8ÊÙ±GgÇ(“ã–‘c„gþ£çø8¼Ow‹Ãy·ƒ”·éˆpÛîz£'å3ñž<Î\Ùè05Pv9Κ᜙+ñ]Ê–Aö¼ÆŒ´¡5òUarL$/UÃŒ.à1tKÕµMÀIèŠä‡jÀè +ä{järBw:š*0¦¹ìÁ¾Ât(5rÈ¢O>¤ˆ^ûLúæZ\2KÑTX$ík¤ Fâô˜ÇÑÐ<œ>}ícy†fZlwê¡]w¤E´øã,þ0ËÁQ–~Že:rå±Hòœ¢ëä2¢Ã=9Ñ¥gEãù"Ä—’Ý(׫�{s~ô²ÀrâÄcN;nrœ1÷Lé'Vxb…'Vxb…Vpn¢šas$wŒ6Ò˜¨N6îRäË=Gn¾â]4ØžÞúÔé®/<#óíëïßsÝÇ“¿{ùÃÝÍ{:¼tÚÏÙË€&Фšd@|¤I©÷…Í¿„Øx€§¬§ h¦“OA‹ _NõcHØ÷¹NK^BÊèâXN×2Ç“u=1´¯èÌý¸¾°O-?€Ç׿„¡þpww}{óâäÀZŽ: +&¶¯^¸¼Çh:j=‹ñ|4ka:¬ª`î–%.¬f3uÇÙKÓGS;×ísr\ò‚;Ì-.—éžäM_ÈCþ͹Ͽa3†+?ôLÿ0Ûÿû’Ù•xÐtþ2¹*\á¡—u8w‰ûê+¹”„ý½.çåj6‡I!"‰]MѯfK¯vˆ|g…7úññ+ó²pªö‰ŽŒóañJ2Gçƒô¸øíWÄ>³çóOE)Ö«el©ãwŠ.v,ÍŽ§MöËà~àÝ.‹n:,Ù#?OGéáŒ4ü.ÚA¹þA_íCþž†Æ‡?GÖxÎŽ·?z?†ºâµ•é1Ô¯L¡®xmeúzu…‰>Íz›d½M±v ÖCùW»c«]éŽ!¥z¶ˆdÏ¥> 4• L.›Àåý�ÿî ©`›V@uSí"·€ôYßz;…x|>o¢ñ=§MHÞ…åóšy4:/ñùÉè{ˆþ0HßÃôC Þ%ÓË|Oc¨Þë÷Ÿ +Öj)l_+ŒÆ#ÕiáZˆŽùZf*GZZhSÇ Q:¦K>GWötâ~n-ê¹î�«xÁ˜YÑ$œv\[~’‡i*a=ª©�Øk*œ`"Ç–ÕÙæÿÇ™û¹~¸9mįÉè7oÜ�¢Ûi°-wǹ 5ö…½Ó¨×žNÖÚ‹ÙóGGn7^?Î_#¯ßD»g‘ôµÃÔ5;+'z–ײìœçäbºúç®,wÌòêɼ;KŸ½T§9î4C–¼&J…åXÍí¼.Ìç +|bY2¸*:–åa1£§Óöš¡~xvýJV8š¾¤°Ñ}ÕŒX.~¥¿áˆ»vïéáÛ·_‘ Q·ÄswüBOØ9nÑÏ4+{ }œØ¦7«^ízµìÕ¶Wë^í{µðÉÆ%ãÃÒ8n^WÔ$¸�<6(Ä0ûaå †_ñ®”ƈX;~¿Î¹P°&9N.EO\Ý‘™@÷–éx(ª‡ÉÂxTƱÜ^vOùäSï}$mOEëzß#+VrVû‰Y_Z¡gûƒ—’°‡Â +’®ÊÁä^Zá 盾‹•Ž•å9ÐC¾à™FÅåð¡Õ6*¼_ ï~snÈkÚ»§íîßýv:úJÊòi.-PÆmY\Ü + œœut»ûòwy»ûÒm2.�Zë6ZÅð¿Ûv›Žï·)Ž¦ÇVÞ=¥¶=¥¶=¥¶=¥¶}šžRÛžRÛ¾ü¿§Ô¶§Ô¶§$–ÿØI,O¬ðÄ +O¬ðÄ +÷¥¶O#[ÐîmŸÈ5“F_”™¤'óéŒgľ6INß ÙÝŽ›Ým4»{jÄ=ň7šÌÇt›^@ï²-ôx‹äÓ|X´Ïü§$œtiZP2-hç +UŒµ1» ç«Tì¦MaÌ(…1YC×ò/Ѫb²qÖ-ûäjSÚ=IaLԳو߱‹Ÿ‹b’Ò,¥]TïÕùÑ?—£O`Ÿû3æMÅÉÒhŽÿˆ¾¶½WÇÝ3 ×êT1̪$Z5«™ +ÿW?íÇn:9¼¿à“—L÷\>ð9qŒÃÀDຟþY˹àR‘ŸrÚ~á¾1Ýã¶ýê]cº/Åèp×àDŸÕ –Ô³—¤aÊ +\ZÏa8”ͼ²Œž¯³*…Š¥ê|´tæÆ™<‡Œ"÷Vy’¬¹U9…̹óéZñt/¥…,¹´ã®å‡bGo ’? +lvxP}Žµà-þHv¢óá榽ÏÑûPTÛqòqG/€¡ñÉÑûäè}rô>9zŸ½OŽÞ'Gï“£÷ÉÑûäÒyòî=±Â+<±Âýÿu2’Zju»Áß ·#ø»†{üÃmî"¨Ÿ NMýXP¯|è*Žúj£ýâŽ~—A¿]Oø¢_ÕQ‡ú‡ŸÅÇøc¼Àyƒ9ÃóÅÈž'FŽ*û÷ßý×yÁs½¼À÷�N 7^&×–ÏÖúŒ§€ö9[Eg-ãÌ%Qxµbìvï¯;ÌåÄ“é¦Óî_q3ª«ÝÕ´<z=/]²2.|ÚñŠ +¿üÇS`²zþÇ'û¨�õTLÇEÀ ¶So“ìrÅIX ˆZ}Õ(`VØNñÎÙ½0¶7SºñÒ ›ûI&ß +”¾<`�-|xÞÏ0\ÃÓ™@Kûûw:^U¢<O¾°é½¬PÝþˆèáv§ÍŽð¹Ì°Þ·L"<3Ü'¼$PY ÛÂù糂S�ŽåX÷k9ü¾»~‚¦ å&¶ÒMËîj¢k8]Áèú‹Öèêsº‡¹Äû6ð¶™îÙhtÇF„Ñ\ÑÙ¼[#ã½@zºPc¢;OØÝ£qAdF"³pEò²`E²Q‰¤,Qõ.UÞY‰ŠÓ}Ât á}W•nÏ*‘½¿¸ý—BØãiþPÅêüÎûzž»KÉy§ºïq,nüŠÃ•Ó×ÝI1x£âô‘)î¹âã·¼N¹æu¼‡Â]ôú±{^'¹{Bœr¶$È(娧`é¾:@¢—÷ÑἌÏðé‘Š0:7‚'Föý¾'Vxb…'Vxbc…¯¯‹Õ°`t{@Ú¼}¬2Ÿ¦ØÊ'2—´Õפ.}}e¯‡Ëñeý’RJ÷Änî]W—Ó&†ã×–FpúÏÇÖÖ…]ö¼h)¥mø\nöé+ìX9¥Ã0…h&nm(«äb¿ãµfí ¬Ò•ÜP+p²è®FvǨ®Är×aòYEÇj3ù[Êã&m(j _H#"=.¢‡¦{¦fjÕ&œì&1.¤„[‰ZÄéÊn]žéÀ,—pÒ¸a”+—ÑÖ,t&y"…y•âMçr»Õ¹•nÚ£BÆk m[Ê7Qõ¦D7V +ά Ù¡í«ìºî¼ +”–ÆÑgÊÇŠ8Æ“¶äK8e’"qêZ¼oÜùÉÐÄ.µü)xJõÒËð«¼ižìocf�ÿ“T…òßî¥täyó{_M*1&Wó)Mm\Äxª�õÕÎ^oÜOŸçì=^>ê+néuõƒ.¦^Iʒ϶wôÞÐ;”²’RÓænÞ~3¯/+5–Ú”–‹Kí¦ƒúRc…©hŽåù ÈÔXfJ +MM®ÒTœÊÃUVÇjO}ªþÔ}5¨²¯è0¤I~¬•«Fu¼pÂt¤(U¿6êx]ª^™êHmªi(OåT»LÊÕ¨:z¥<Ó‘RUþf)á½Ï…«j\¼êå4,)#¾Ú„³A«’¸æÔæpOjáC<L/\ËQ½À_x1ÊþS&ÜýyHŠ®ç4¦¥-=-í>D>䈹A‚¹—µøT¼ó“ÑÎÏ œ~2tz¢OÅ`PmÖÐÄáëWâyØÿØÌ8]éúMJ¦6ã+‚ŽóêÃQý[U(>`ëp4ƒ6Ä×Í +O–¼µ½÷øòK’CõêËmn(ÛË=É >Ô'ƒÒ¦'Y îâ:/3ißg¹\Ç`ÎuGt‡ÄÅ=iŽ)³Ó±G¦ïƒ÷&;æ£ÉŽmr™k=ŒxüV¾m’£Ø„c.ŸOí<~v·5¿S†>IFß8zfŠf Ã}ð.™ï`à4øiÈé;–Õ7äóiú'¼ùرª¡AŽæ¸Ö:—ŠC’Ò*ÙÜœ”ðÆ=>fsAwÀâ °•î~½$j% Ï +¿¤Ó4‰Êeá9š+:Cƒ'hLÀ”ª�,[€|»‰Øð +Ô¶Hþ%ï\B×;–ÜJ<s_¤dZÇž>ªd·ûãg÷iØÓ§ò)Ž§SÐàwhxóýC;bA|zxÓ§ÓEŽ gî ¤O púRéSÛ>'æpx®Ê8³·nÅBx¼ËÑË~̪1‚™C£Æk·õÔ %ßX@1¤Û[ÈTr(¡ ßYR‚Y:!·%×?Mˆ'¬’tT9~,„Û°z-·UUÕñ±/¬Eúƒ þÄ‹0äé“4ºp[ðPŽ+lR®µŸ^÷õ=ö™ø‡Ê«+ž¤(ºjÚ\ +½ëÛ~HA<hê=kâçåÛâ7êôr R÷sª¬¡_ŠWpÏgŠz/µ‡IU.Zç¨\û"Þ¾h=u÷Ú¾žþ%y‰uz̬D¯·û>ú^ú~úžú¾úÞ^ùƒþè£ëõÐoßsßwê}ï¡Rqì㦗›~ž9®HIžV<·ÌÕEvRqsayï3ôú3Ζ–0ŸÆXƒ*KJ2«„V +Ù(Ïê¡TdLcý8ªÒv\N?Õƒ$`Ç$ @¿Ð<¿tz7ѹß/ÜQŠ°‘€GNüíî·èï?Y4ZóÞY òx²‹‚¾¾GŸóíÃ=ÀGš·ŽŠ;à¶9ä–½4 +ç!Ž¤I}¦<úkæhη¿øëÓ1¹vøýQ#a‘—en‘. †Å8ó²¬z)uÕÛ„?ºÄ×G‚Êx»sŸ +*K«‡ÉŠ£î8‚üœ”`Nþ¬|àÏJ+Ý9›è㉄Ÿ™šøyè(õ9ù\÷sòXþ=£óî>o´WÍs©üC&-¾;‘ð—7µÓu®\<”GÖÊ|¸*ïoñ 5’Žú»ÓQw÷¨µ¤·²†a}Msl^§¡Xy3Ú«Òþž¤½8¾÷rO’Þ’Ä'žÞp‘vÞË4Òη%egTS¾W3ôÆ$½5ér² Í•]ŸÄ +Ábó[—ÃIžlZ;ÿY&þKLþ³?«ý½Z8¿ ÏnxÀ®ŸÄbéÏüò\ºgßÓô‘=ýíu‡û²ÒöN_êºRÏGÛzÞMCM¯+µ^A,EÍ•ivЙëâW§MZ\rÏ0;†scv䶻¤Íœs¦ 1R‡\xÑUÆ9×Ê8ó¦2ι¿çÄ2N+ãäM)ó e.“É&É&Ã3¨êíûœD²{…ÝäÊ“£¼‹NÞ©ÄÛIiòK–{÷ýwhÕ©–ê£N^WÎÁOv™ZÜ粉Ž:ëâtV¯µ +toÂän©“?ž¶è‹$ôœE`œiL[¼§¬',vÖáL*ô—_ ópa¥ŠGã„{È®¬ÓÈë½wp¶97—p?«¼Ãëè¬2z…ñBªo¯•ù”ò9L9žMÎÀ 8`³Êd¢¢ô8ÛGgú?úqö¿0ÂÃR^Û L¶±i³“ùÜ ñê†õ`ÛÍÛëýà™l÷ê{Wß®Â'¶+^[âÑR‹£_6à.Ø”¹3/ÆŒŸi§!ÇbȬØdTø»½ÆŠ!qb2&Æ{¼Æ‰!1bHˆò ¦1‚£KäQSpØjÒDMʼn².=!g’œœ+I ¹t™9Gìé9ì’“t8MGRu¦![G3vå„áÀèx\t<, +’äéÔñÿþ§Ž-Aâ¸ç`œå¯žçÉe>|¦a®§Ï+ +÷‘¹ÞÌöôUaµÌ÷ôÙµOÎøÆ]×ÌÖšŠaÎäÊ,é!†¸îÍ4ùZµ“ãEA±&è}ÖåCÿs'íí=ùðZÚ{Ÿé�äïZúäëÃ÷ üØ+Çž{zø9Í?®�«ú©’¨úÒGlŒmA¢2¤Ûï$§þÒ+J¬&M 'ES²^´’ù9^vì.:¶ŒùÅ,s¾í˜LëÉìi½êXLd2‡{¶¼^x,órØ£QÆʹÙ$—(1ö(:H}‹dÍòEÚfÐÝFŒ4SèÛ·d®Ìä(ˆr„L6ZV2\eÃ\Xm¯=*mRæ ͘HÛ]‘_Í®Ü>÷gEÊÕÔïÞ&mœ"u¾¸ðÛ…Ù“F$>ô +Ä#qÖq¯è¼CO%¬2Açt”Á….&‹ì4qçHõÄ‹%#M£Qs8£ÆÕÜæN§ñù™c'Ó´‚n“Ô(L‹ +kœÔÒ³ºWfêõkò/ÉÃ¥ñ‚¼…SØ&;}¶#ëÏž-G|ÇŽu_9E§£ÀŸ:C?A÷ŠvÁÅ}W–}Þåe÷^i6}â^³£÷œ}ì9¼ícwŸ}ÆhÓ‘š¿ŸSøÞgº·Lð§žzü™îûÅ=e†éí@%Ž^û§(ÔÖS#o±ˆ¶w– ÿ…WmßÙ6ZhÓç\¶ýù×m_äéÈuÛpáöW^¹½-ÐdŸ>Yž¥×ç° +OßÿN߶t,5uØ®"…U0aåc¤ŠÕÓ¬z<–MNõàpýÕlr4ÒÐ#×ò}ZËÿÌÿºóHÕD¾ÜZ¹O]UwÍF¿’#»™Ž›ÓÕ@ÅF‘t{G/©tò=zÕƒ#‡ÇÞëªøÔ‰÷é NÁ‘Š®€P°Â³ªŠèª´pa‹‰#|7o 1H ° +ÖÒ9ýJüîóp$©R‰.쉧0΄‰ò\8”³´WrÌ3¡®œ{žTÎݦ݃Nµ8…;MD,$×9íR—t!ìL{_HËWÑîä +Ú+Ú$#ÉèB›éŽœ{ åd¾H`ýÏí·ç½ïS7)|ü^èÃËžœüø GNúgºW ¾ï¿Ë{q8ËaDý—ÑýœmòËRì?c“œ/ÿ\ÎçJÕ(’zRXŽSWPL¶ûûKŠñ€|9ÖDó9™ÎiPÇÈ£äq»‰˜‡+wO8fµ?XÀcKÑùûˆ™ +7O|~“߉™å%ðîÞŸzt›:^è@Iæ|ÃÃÑmû«QÈÝëJ *-Äõ‡VÓÌiö3ØöQÍïí¥Ë(øž‡ûÔ•ÇAø ½£S;ê—ç‹>ÝñtGÄÓOwD<ÝñtGÄ#©¾ÿ{žîˆxº#â?½—îéb€'Vxb…'VøK]ü¥-·§á¿ôÝ¿šc¿=’Ù6G2WWöÛ×^,îéI¶Ûâ{i›Ò2 y-þWÇê‰kfË&ÏåPÍïGúÁ‡+R€8a¥¤†‹Å‡Ëâ3‘⮉zùo?oùꢧd/ nN=ƒU¾³r!‹yæÙÕ\È?ÏgÖXÎEk½Åà“¸\Ù˜0ÐðQ*M(”f®¡ñs9` GîK$øD¢À§rãþŸÿß„ñY¥È="qIÞN¯Ó(%kD„m“U©(Sa¦âìbp6“iq|—‰‰*Þ¶—w`+¹áâ:çB®»ÚB–;f霧]å + t¬ò¨Ø)ÃÒø’ÛºânDòOÑa!:DUBÊ1i÷5ï>L-ÏÑÆò’…æÓGOt‹'àÞÞzf:⺺§v÷§+wK¶X)vý4I’²‹Æÿ#ŽèmÀʇ¯æ”DŸÐÞò¸Øó˜%šª©\\ql/é\å£D> +P$°Êœ÷pœ0Šð®+<—Ü®=¥Ó,”`“(å†%5àÇXÑ^«VÕS`væUÄòƒÄݱîGÞgˆ»ûÕËéÓú¥Þ~¾9W2ÖlÝVm=–‘´ß +·®›c#iÈNÚæ'mê·NîˆH»8ZÁ•£[z}RÛŶ‘.VYAî±.V“]´kÒp—DñXeî+±â¼x‹y±"-¦VJ¯ìÛëÔ÷Úìå…où©W:Ô@NÓ"i ¶ŽËå¯ÅÀ¥æ\W'ŬPÚYÒ¼pô¶_ž `´ë¾Mêp}lÇ�Àw¿~}÷Û·/ïÞ¿¼ûá›oÜFâ1ýú þ&òo~{ýþýÍÛ;Øa¾ý—×ooÞìî~xuó6— àdYNSª«üOJ9møoþ;’ο£?ÿáÏð×úQê©žüÃOôÏÿ?þ�ÿ|’N~uòÿs>yÁoüþÚ~àÖÁä#'Ï�¶ùð�ÓwŸÁ‡°;úÜohBZ.¥ò±‘Khå@uf@ˆT]kf¾Àê°R,r¢Ó?\ãà«mÍ'ùÌÔÄÿMߤ߶#yíÙ!&}ÿ+žù‡}F®•¾ °ØN—¶†áõc0}÷Ù|úzH•a +é; ++Ëil5ïƒé»ÏŽàÓïhŸô}O±NS«‹¨Ís;ò_ÞbÓ¯Ðk¥øiQ›~ëÄÍÁ“~€†U“¾{ë@ž²J…c0Ï #6ýõ¸DçôÖÁø•6¼~æùa‹o ÖfNæ'@ß?ó3°Å§ßÁÂK¤9V:A¤•ø`jCåò/’A åìPlÓ´àæ“ßññ¤ +2®Ø0,YŠ6“¦OŽÔµ3)ÿ¸~OþaÇžŽ“?{ÞìÜql¢Ž-Ÿ#«tƒ AdqŸÓ\%)"gîãiâ’¼h#PÇ`šØ*¡ÑmyèöžÙVÜæ»{Œ'¹s%Ré,j)(õdÃq†H<è/÷mà<‘Ç8Béqæ¥Á_ïX&+•85Ç–ùZ�î Os72›SÈ +´aòØËc’Ðä�[‚Gù‰‹·’Õ³`…¹JB“ŒG`~u“ÔšgìpÁ×gy“Gd˜‚ä½g˜e~7RÜv?™Ç¤ß!{dOà‚Zb*s âFþQ®J@Émâ®á¹oÞ:óz:”˜˜ïïŸön»û{ÀããÈc<¦KàWþ�ÿ?Û½}ùòùû—¯ï®ßþtò�ý_ðø_;ùÙÏOþáï§=+’ yŠùUšèÊ¿9ûáÝŠÇ<aþù„j%)•àTÊã +%©“ߤe]Oó X+ÖH]€Rß�?¦Sô;ð³ MBeÑa8³×ï&T(‘U*W+«+ðí#V03qíKùÄÝ/°(w;Ôé )ìpZ€Òš‚ëéà.§`I7"|`¹ÖvœÞµçø~*§3Î+¼Üšoø4œa”tÞÞpŽÛ†BZµ0†ä>Ž†{nñ½ˆ*#º˜Æ¶x<‡) *÷ؙ盞b\Ü8*iûÓføÖÖ“JÚþi©j}ðô×ÞLÔÅôýô‡IWŘ©a,ý)N'è €OÂÀòŸÍð+˜é§ëãÉY7Äóèû@QÒøÙF‚ÖŒp@r¸#y,Î'ìö*üèŠûªeH’Ÿp³´.‰6Ô“±ÃÐr]+²ƒ#QÎYÚ¢ÍÀ™èèÇqBB7ò*0Óø}Ýn§aNË 3%·ÅÒŒ§ks[`-\‚„šÂ*àm“|,Ïá„.i•ñ–:ÎïgØ'ç•;°£â5¼§ËR·]‰`èB-%+mÒ*°‹I:J)Ì�†ÞVOt&Á‚^…¼¹†(À¸,ÚYL¢e¼ŽJ0ÜÜÂ,XÓ\AXuzI‰5¹Úç mkÓÀJW`[VíÁšøýñ³6Ec@€hò3”4íÀ<CƒRt®Ê”Y‘oJŠÏ-Šå4…Y8ô+¢ø +R"êÀ*ò>ã0g²EEÐRV`JYM;ÖÀ–QÎfã1$ÐìŠðˆZF +Ì”9@`Éû8»H_[b"0j§*2¾¼/Ì*«½sÎʲ‹¾_¿L²�žu]AÁ/êZ‰ç˜ÏL|Š«�×TªÐz Å�Gê,M¤Ø +ûMò¹EEm4êh…Ú˜'Koã¼*ÞŠû‚¬æy;Þ²ÎÒª§È@Ì‚—Ê@X+yQ ïŠÅÚel,^Á‹Ò,ICn« H8'Œ"Ç*À£®ò m¿Æh±ï99¢10š$™-ÀPé�K;Ãf Ý—µHÚ¬¼dáø1õ™L2Þ†‡u"@6PÛ†{fnÊŒ<ÚAŠGB.2�Æ0‘ôí(Ö<+ÅQ¸pºÆŠCТ +ا¨i‚Ñ®Òïe`Ê*;ZÓµàe–µOAáâ´¸ÌÙPyé¬,þ©;‹òû–Yætj3‚Œ³¨&›“.Ý Mk)=¨ ‘AŒ¶á�3°äZ•°$ç)÷ÀH€^¶`‡'€@M%×¢Z“nºë¢\Ô +³:cmÌE�ìr’D"K[•Ø¸)‚ýÒ¶ÌÜ Öx²Ý&°œ‚–` ¡k,̸ ~å½Pú©ÄÛ%‚rPf©ë²Û6%�ÇVt%G1�l}½ˆìk°¸ãÚ\ŸÁŠ^c]œËµmÐõ‚–“ÿ!m+ìùºÓ^�Évd]o(iø[°Y‚tT´ö~Fb»Oó;h-K5mŽºæañ Š4£ùL‘A•‡€±VùTŒ‰õ®™®Tk*_ð[�•©…„Ì¢Yˆ(d`²–¦=IeçéšK`š‡ýK”°Êhsj¢ÁâçZdËÇÐF k1¼Õ4–…ã]”ey¿`0-ZÕ#.À?ª-¢’¸Où+6m[çdòAHaJ•å‚,ojÛâªLWJ’¶¡¨2·Î¬)#‚ šFóHÎd»Z"‹ŸÁ ·\²¢P]…‰l¶Ïô‡(^PVe1Æ<3AÍ-Êöi ‹�tJɾ”¶�^kvc`MJš,2v^uûóÌÞ‡E¬”Ám‘}k_RÐ^ÕhhŸ›ŒRP× ÿD€°·+‚Ya,Ùtw+ƒéÆSǶ†%:"2°ò„›µ¢%÷85жªj�Óœ˜`ûQejY AYTNdÒ-Øâ"À’€6%Ý©0oC€L_æ¤Ö"m—°íÖÜ8¯ªò¯RjBVs ¸FU窡ž†¤ô^Qßd�ÎDƒ€×ðȺaÝTÔç(b%xÐOE[7e¥€A@óV·W°JMÀœT¦•0ë,À‚¯ºÙäµÚV̸&Ú ] x›—! E…‡‹o¢ ÌXF±¬=�kZÌʤ°™R m`-%¥ì¬DÄ‘ëÂ#Ò0ê +)y5¬MWHI¬€~4�.³Öd·0°«<°CˆðA°(ЃJô^ôG/<µK4`¬AA(€PÛ0%ØÂàUrÐ6ÆÀšÔi,VôýmP“1ÌÒyØ´Tj,öàݹ)ÕYw�/«*ÄÌIïçÂìŽÀ ˸šÜÄ>™ŒµÎC–¢^p�Y5éXíý²ªÔXÅM‚²Ž>‘r#ŒÙD5"pYtR”sQñ€-mO"íV¬ArEµû™‚#-úˈÛZõT`àÌ+†Z*iŠ²¦¯#f°h„1ÈÆ Eši*‹!H¦à&ñz˜¶yWáâÈ“:NCtRzE¡¡x‰Î²ê…6¸k“‹5Ùhu«B0Úê4¸S>u末�eÅ)'1‚d627‹‚¶ŸÔTF&aEØlÅÕª*Ú’ ÙæUà…¡ú±Ê/l²tÉ +Ý@ à(½-æ(êk`‹râBìï7ÝR +Ê[xë,l_8¤%“ ÁEë"k,‚½ìf yØd£²…‡‚¦»".m.Ig1 +Ï0jK°X’!ˆÅ¶UÞ×&.GœÙ’y+§á.Áï¯ vô}UhAͺ£Ð1°á¾/_Zì}<Ë(ZÙ LAk‘^¡•^t[Ï)ÌúrR晀ÁÕ݃·ZR2¢rldW*~Öœ?ô +£E î(Mö)š¤20³±‹�½–àÊ^S:@ü¦ ÌM>ª¹î7J7n«Š šSÈX$ f»)é6PTGíú6kQi‚™ªÖÕO×%d׃Ř>i›çªÚF`… ‹öÏ¡‚:+ϲӃ€x5è(wpUµÖ\Tã +°¬ª\Å$½ ëcáY—&@ñdÊa† ÌÑ–]VÀRÚƒÈë€d)D¥ˆï&»*ËŠgN¬w’”b%€aU—XO=M¦Sñ&34²l®!òD‹†Êš\ˆt[ã9F€¾wÓ§ƒ†7BÔíÊ<hÛ={YŒ +�†¨jPÿXÛg +6n&21,¢ªkV¼yÖ¨BFÛNñvÍS7ìCQ£‚ö\ù”9iKV!*qÅ븶_51ͨ¶ SÑŽšk@+LõlU}Ø]J« !ƒTU‡B]YQG`L¶µÉœpªødÝm¬{@»€)'m+¡ €¾ïT˜öƲúu*X›ºƒ›(4퀨!Xæ¶áÐÌ1s‘ËͺTXW3Üœ›ú´u¾²*ä¸D;J�XgÓýЪÑ÷‹m"®Úb»0íò¥¨ +¹©Þ¡»ëÚ©Ä{jjÉ÷=×:»šžïHØÝĆú1êâ(@aǶ}˜L;Šgô9m”DJ¨ÝÀîhÈ‘\Û\”¹U'EpéìÝš¬û'‚q‰t«$,…&zæÔ±D`Ý^‰eÙ�ÌZC¨^G»€â¤ »F;‹ +¬Q{~Ö„#7Á¬ SF¨Uî°ÿ @ê®ë¦mXÕQåY_oæ 0º6uч™è¤Ì&„`ÖOXÚ\©º¾ôÆ0ΪÓÓ&¿ˆF ີ;ãÂJ;9m (Q02T£°î@ê›Ä–E!UˆÀjÞ´vùuØãl[k¾,jÃ& +x0,êÉ°Å…Póàé\÷¦4(V‡#Úšf¿TUFœÂ*üÄæ±FU§G`7—»Î`²…°%kÛx^F‘/žW‰qSÛ+›Œ�Ìu±£)ÒÚÌc":FÖîí[Ïê8ƒ3Ø[pîºAcz#PæÄ«�`¡VÅZtu#xÕ¦*8g“¦ïÕL‹ßeA.MñÊž“Š’0Kè€Ù–ÃŒ�Ã,fÜ&1-š8œëBÌ”8¦”æÈê³Ø¢ÝÇ FE,Êä!a<�Õç+ú#ÀL6U¯Ôð«ÆàÂÌÎhºÑâJaÖÌA;¢Œ=š:½‹ø™¢Éoe‰diQ¼µ(ƒ¡»ZË(Χˆ¦BRTƒ—XTCTo@'£¨¬ÐFTö’2xÎú~EË«@ˆšJD`÷nl FjA€¤Õ‰àQ›Á¬i;*¦YãuضUÒìÕÿ—fvV½›¾N³<�lª¨GLô•KÖ3kxÒ-ÒÆa61VÅ;/êúïžû$KˆÁœM,Ÿ+žS™†*€(šÌ¯µ¬èø¿¸÷uìkT5,q¨…ÎfܦÞ+Šçˆ)ŸõõlòLŒÈ4s:,õj¥E÷TZ Ú´k*»á‡‚é–qÕï7s*áDšº‡„m�ƨ=í›"u šqËâÛÎQW—XUiq² ™ +“Ð8Uý6Ά@YP#EØnYtiFÝî{mɧBÕïKü ùµÏ�˜›A…´*ݘÇ3¨}e`X´[ä:eAƒžÄñY{ ~2çÀCŽ„KG°Ô¦»¢DË�Xêl‚DßeE;Ðy ¨pæ9xƒÀ¾ºÅ`ŽªtÛ×\Íí±ˆ?)E áDz‚Ve¶`–f"g§JŒYB€jŸt ¥«½ÆÎ�“°Jɱ hÒ5áê,!A%,KQžpèèŸêZ#éÇ&oJ¼IõYÓ·¦zG‘øû°:»’׺Ofx=FýD™ õ¨`Ÿ‚rs 8©¤GqðL ]K×èGÂÔŒ,£RCö”Að¢9UüZLJ=Iƒò$Ók³÷‘Kí– ”†¤s§2Û®º×$qÚBKàP¢Í¤x[)º/4Õ› 5%e»Èœh0è=ˆ×v»Å\õ�a«KrfRÂ�¥·XÇ(½RF¦ + +€+§òáÈЮb`Yú†—&þ|ߢˆÖ€œÜÀºe¢>yúVÜhy MËbÀ¦ý*NMÓœ�ÆU']B[Ô0ÊDÿ~(:®*.y�¦¨[‹ZVˆÔ\¼I-€v¦Óà"mª$Rä„Ù„‚cp@`,£þI�võ™SJ‘”‹Ýµô8›½h`³±‹·%)‡ú;UÝ3&Žñž§ýœ¡%žDÛ^ mUOy§�£eè‘ôb`Š–qÐY¼¢‡Re~ Š�¯)–ÙU‰ –ô’×>üþª>!?c«SqÈÛÊ@ñ«,c®r\LAH˜\§¡ä9 P‚aØ f;¶µ)#Ÿ¤|,ë*oºéaZÝMBLRIêIõ·êôÚ—”—nX(©î;‹ ·t/ï¬[ÉÑŶ%mÜØvQ?³úÏñSæÕ' #hΙª -©¹ôèÊv'Âu‹µÎ˜?mÚ[\”Þ-s§°å$/R6°jï§ÅÞo¼L>“QÃc‰ÒTo°hEjšþCÖBÔ¶1é&&i'S1ÛcyˆvÑ–œòÏœ‹Jj:I `I%‰’¬gCf/lž5¶$Ñž¾”gMË¥mI0⩦Y7µ«cS;TT´ŠTó’³I¯+MtÇχæ´ùöªÛù,KAµAMÑDZã‹z4Û˜š:këc +æLP±M«æ¤áø{ž9|É+@òÍ ,äk‘ñYv¬a ÐÖJOMÉ|Ø•ó¢îyÝíXªµ˜÷ÁKßy82•Ñwd4\éZtþ‚iÉyáó)ƒŒÏ‹ž$ñháXyY VÍ–£¶êò.âúÉX€;›µ-ÀÐ"H™<[€aÍF.ÿˆš°µIÃ.…°_«%K~öjUŸ¦š*�”]z‘s:Q—žú…z +ƒ¸ÿ˜4…¡K¡¼0å$"3ë|õ<1ÍV‰é%%0˜¯lÑû•Eµ¬Õ|ÈhA™]h)RÐ6-M;¶²ÆÀfÑAcdÐë³Öv3€ömš, :Ÿ}å½$G·ët(€%‰àÆÊtFSö¸uQÝ%–Í%†VåC Ia[ÎÑ +Ý^E`3WŠ$EУ¹Y’V°·kÛˆr—yÁIh[²ú®–¢ï‹·qé)\4ÌO¡^~?q{pzähi£=[ÚB–‘у˜yãËf9,–‚˜³æçh¬ßG§ž2A”G.¼V¥ +€©h¦D÷C¸Ç£µaŽº +–þvMšï2ëVšÑõgùÈâpÀ÷‹.CµÁ±¥-—hºyö$ (ÞaªÓ©â"®"ïZ>²,ï +kÒbÑê¹Ã¦µjš¶ÛàÆ– 4¯Šµ§.k€EÇE~EÛ§f•Ñ•ƒ~Ü-QÉ°eÒìﵩî“1[s|‹(2FXôì %¥3PCÎ’>ÎV;ë$½}&àžyF'ŸØ8m‘Û²M™‘ÉL…îÒ°a„\¿†þ¤gî|HŽ[Jò**wF©åÐK6SF½+ëÐ’1-Šw%Y´¤ºŒ¿z2)‹g37Ë×^OU¢’'ÏÎg¤µ£µÜ)MÇÍ«sªiŠmÆì{=MBÙËŠ@$5¥v׸!£žÅà®JV‚œVQš#P‰¸ZTÕd!:.õYÅ:¿šp¹ª«; ÐÊÎe–ŶÖß·Ó$¼îÈU:0WwG`ߘ¡‹U³ÛIef\4…œ¼Ê¡zN1wíhÅ@J>øX?3ÆÇQx1Ì:Ý®xJ?¦y�ŒAχÑq ‘)2Kèo/sIŽµ3(}*’Ü2bѳ=cÛÚA²iXtÝR§)Ž«QË%v™¢N·îÀhûÚ1€ÔeÖsƒÁ<f$SpSûLÀA’y×.=и;³ï”]gʺ #ÁTÒ%ËÍ€´E2°«<Ó¥H¦ö3Ýåøc5ó“6V=»¡~T�.&8(4§ŠŒ£C +¦º²ú¿ˆ€e`nJ[ÊbTm07=.¥ >h},† u[»–Uûª(´4³Ê¿P¢ä$©ª«Ñð +·ðô¨ƒ¤gp¯œëxûÊÓØZZueBÏ‚ì•O¨ÃBi¬†C7ˆ¤•ÁÀDÃÂ#ç¢sTÖÛÌÅ#™@˜°6sÅÐádK º¾*„ª èÒ“Ô@¡¡zÔ‚}LCÐ'8ëñ4 +Ï|ÃNŬr²[ ×hT¼’g‹ÛC>Ò¬btØ.EÇe‰Oèò¯Oí®«hçÐpS¯ê/¦\ +ÁªAKŒ ˆâQÙÎD |)%b³€Ÿ1¬œØjÁA9øPYSç åj'•C¨ßp„”Ó†�˜5× c$S†Õ?MgÑ\*;74Ê+¦(ŽBr,1 ¼¦¨DŠ„®¢5ßÆ”³Ò‘B¯ßPô¹3jz§žu‰$Œ�X3—ð\oÄ”£�UC‘•/EèÕÅ:%ÇÆ2¦,ÚØ“ ¡Œ•r4_AÏÕTŽ[>0 ]Æ+1|®‚WíÄÛ´=æ„9¢Ô‰×ðJÚèë¦hP|±Cjµ8�ª2˜Z’qV7.¦‹7>`†\6ˆ@p]eÆ4ÎÐ,Ö,â }åœë Á2+ Q¡„½$Ah5à r#XÍ6A«äºõÄŸÁœŒ»TÎQŽ‘r=îÅŠ²Eg‘²ÞA±CéŤ=�ûÆ¢ÜAYqºî‚¥šEÝVÓB`HhÈ ]èOÐu`ZCè‡D*çf<p’“×Å�(MådÑhÔ«‹ 0µšÜ*¥ô�âÒKT²¤F³Áßï)ó«mΕ‹70$„ +Œ`|CéÚÀ¤ÆC*gIÜèâX$Ü…Ý–´>9±.ÀZ«®Z;=ÓóÐ+§F}CÙíêÁí¼‰I÷rX¥²!Ê +È]3ùc è'Ô0m +³¥¿!Þ¬xë"§7²aªœçÉÀu÷ˆ²•üüÌ@ØX:- ÓìUî,ÉœÖ~V%òq&—$Ø๚Þ+Û«–Ù-ûdÇ‚ô 2ì ¢QãQ¥¢L”«æÒÒ &ÙX‚Ž@ô\wª:'Å‚¾Û¦m5A¶#‚ÀPÊF³›ƒ~¶Ï[IÊfí§“fËüý¸¦¨à¥H7!˜›euU oâÉ®¬;°f{ÏÍŠ”ÔÓRú!°™# ª.ð)Ç4¨uû†NÝ©TMן«%Ò»U'5«®JCÿ†ÏüJÝÂÊŸ–àRì$<—sP�¦H�àÂ¥Xé’Ö2>äq!õšÔ¨r¤’³Ò0à& õäpoåÖŠ Ì&â¤@G³3WUY¥aQ -š3£e§1ö«f-Ñ”µØ$` í-vð‚ëXTÞì‹Äf©h†d‡Ð`¹vÀšõƒUèȦá9`À@qúªÅV¦³õ c9(í˜%Nl0Ž(8Ì:V£#ƒˆÑþÖuÑ>Hô@+]HIJq#0«1Tf I÷e)8¥qä”D±c�.[ÄTåÚ:ê˜*⊥:<£Ú&¡X æ"¨’¹AÕ@âT©äj-‰Œ¸L1UýXÕ¡¿ÃrDT§(8çAR$IRò¸ý\Ô)Ñ’ž@'ù#-£‚è‰2.‹šùÅ*%…5ˆ¨+ú°ÜµŒ© –BôVÁÙNŒH†:ù-9Yº†À¬‰1³YAOÄV·´ùoCOäB`ÑdÂÙR4²W§ÐiQtkê“lMäÍthAÍêÕ%pÕpŒu"¸üˆ æšsg•¤‡xŸÉgG +òLÞ +¸Z:oÍ’©YS‡è[Eºs زSõÅt4|¥yn‡¸°ž‰Q¦y)Ú3Ñb‚eA¢ÀÒyc÷êÌ•a9®egñ80¥a bâ·VMÊÛ|_:†I«&ôÒÜ*xÑŽÕYsBÒˆ©÷RÕ,FŽ˜ªÅß#™fØV>ê!¹=IS6Ÿ×~ùt•,B—PÕ ðl› (J3&Ñäž‘¬:z,Y%k†RæC’ųjfN³ÓVeµ°ÿØ+a;ò'ª‡™dÜ€s³£¨pè1Á^Z<ÏŽ#ìs±Â^u¨[«hïç8±å iÉ„¢nËàÂ"Ú¢åYTÊÙZÕpÞa¤È[kî\)æ· +nV;Ï*<Sðªž;úéÙq$Ϩ&àÃ*"ø¤|}5@‘þD 1‘•3~6€ÁÆd·Ê3}ÿâ^½£þ`@¼ñ„/]N±Ì‘j¾ÂŒ*òºÔHÔØVTЧP¾+�’^WR4fɯ¾½®-$ÌfÔó¤…7¨Þ„ÔCÂ4\ÿ¨¡¢=þ\”Œ5±ÝšdŽ�Š«• ¢"hì tð¢õŒ° +뢺ù0µP^¬Ml¼«p™º¤þ"®ÃÂJ +‹¼%³üÕ~Í3{ý’d~“b&m¹K/…áuŽX-O”<—šDx‚îàÊ=”ø»—ÄÁ ÈgžU\RÖî í`ÎAåæRyØZ£ˆ3åÁ¯Œ—ª]¯ç²ÒñP-I*šDÏè!#óUÁÏ6àÊFŒôy¡YÃâ%%iݲ5“ŒVàsÌ7“¶äÚ‚¾#1ºÃê€ÒUâ@C^ÇŽ àÂÓx6%1>†âhÛ/„éüÀΙ\Ë2Šò¹D.á·Â*T'ÿ-ˆë‘¡šfd·Sй@ºÿ¼°þ+Ù8Å‹ã l}.+ +ÔSbS9R óÎ5+HC6~Ê«¶$µf>‡ª^ÉP«‰À$&s‘³'\¤‹gYZ‹taEˆ66“Ù¡Ë'IUK,q˜ÑÛŠÃå0-•H¬”a†¤!—Þs)É‹Š˜·¯ëˆÛò9³' {£Õ+[›Ù\‹Ú.ìðe3f^¤X¨2¬²~TË?œ2\¦åd÷FænŽU8ÌÁÛ¼ÖT¬Œ"Ž ~S®(Åeø\JïR ·mx0››ŽµµŒ ƒ3;;¬X ª¤M¨òLzëÛöáv¬‡4@6ý³ÿçç'gß¾ûòŸ}ûãõ››óW7TkúÇßÿôææç'ÿßÛè——Ü„ªVÏ8˜E6cJ"j¸¥P}qP•ÑâÄD:º:Ì*÷d‹Zqã!‡%z6Û_¼Hâ +ÙÝ"(€ïÙ©D´Eå;uö4o¤·mx¦0–i‡é÷uòœYßb®^QR: ÀçÓÐY߶¶c=¤�Njå˜ó¬QFD¬ +c"<˸×ã¯`Õ* œ¸ŒºÑVòèf‰8ÝnÀRÀ„û«û÷ÂçðxlËÂITâΉýe½mä=ò69¬(=`œ%›ÔcådÂÐ*u¥·¾mWÇzH¡.,ªÄs¦F7tbX/—À‹aæûrP”©H|ÉQT^ÁLJÀíÜP¡Q—‘VŠ¥‰Õº§…c{.«’Ùig-\’·áP: |^I«àÂÅפ@.r"ßW ’VºêÛöA9¬Ò‚!@U©ÁV tM*c+ݘ#]!ˆ†Ü倷$ ù³W\É;U…or’šÛº²ÙÄýëVµ–SE*5Tâ†2DZ-j²lVät©ÂP H`-q¥ +TâJg}Û>,‡uK¦mAm˜ä'ž~…#©Üîß”VŒYß”@ŸéZ²:iÁ¨Ä«ÞnÀ«Äp¹”p¡°ì,•Pxh…É*ð¹ÔÐ…ŽÔM[4áBÜ`í@éNŽ‚Ÿ¯±f>Š8ö@€J\íkÛÇå°Ð@¨›ÐyNÌyå{2*™U3H‹Êû–»W¬°Ø5‚*HfÇÝnÀR›»*uF‘ç(ÀN6U¨„M5.›¶M«÷y¬(=0®paÿãˆ#H&’´TÂjo]Û>.‡õ€LXДf6XaâˆÄ êÊ×´%fOwHµ»Sd'-äæ¥ê„³îb¬J(ºæÓ*†e¼ó¨bQc„€JW1Ü}[L‰Q#Ç°z õ@(¸ð Òl!×*Yµ³®mVGz@¡*nötÓð=yfØë¢P5Èê¯è"X芽-G$QÖï4+ÃïÀU²ä XÙ½@®VÖÅ«M€jp>CäÛ¢A?¯¬(=°i10grX•‡0L‰ª}í-ýX å¨k´©´Øgò¾…hÁj³¿~¨_ÅÞ£lIŠ/'¼Ý@±nò¬“ë p¹ÌÊâs˜ÙqbLø–rqƒGÙüu}½C91àì¬Ö¿Î0%ªöÓ3e¦¡ÜŽývÈîóì?ˆoQüõb*rwȇGs© ŽBÜÖ¨~$²oG0†¦%FK%5YÁ–æÚk/*ðù4†ú]ÛjÙ«µÏ§\8ÇrÀŠåz%¬÷@ŒÀzëÚºáv¬‡4 áôPË+&î™äÞnÀ…ú©J#Ûɉ#‘<®4ÇÕu\’¼ïÛ’÷»y”"ß~> `Ê$XµŒ©žÀã1ŒŸW N¬tÕ·µy¬£«PRVfEo7à‚.* 8dç¢SÕ<¶Pcs@%mYó²i;ëyxµ¥J]÷¢j+Vµ•C±½ +|> ½õmû¸Ö<ŽUÈ©7Ù\1ht`Ì. +JÝÄ©NTÐ:*ç,)z RøeÛ#c-o°v ô@©«`WœÓ°.³Utê=P RWzëÛöq9¬4x$Ã:Ѹp9K”w;´ðIv¿r Y©+µS¨ÔmQy×Ú.zÁcí@¯Ð^|¼#¥u-> +Tâªo˵íÃrX·xÃPÁU}±üàí\Ä ¾rm_µÀZ•EôÎ(òÐV‰Z6mñ8h\6X;Pz ÄUðjuV©<ö@€Œ ÷ÖµíãrXhð`Ã?_W™±5ÙÁ'Þ20. +¤üT»æ ¨„]Dຶòï²ÁÚÒ%¬‚ñš…Y+R+Öf\\¨„ÕÞº¶}\ë j²œâô4ô?anþí\8O…Тò[’à X|;(kPé +«ð°íœër€UÒãxc’ñª“¨Xñ„EØö@€Š@{ëÚöq9¬4x¨iH_—ì´Ö°rÈíXïÉ@`ªjnôQª¨£JQ'Ƶí±J‡µ©61Ö”J‡uµºs®TÚÛ¡m—ú¡Á£X‡¼)ð‘ÒYòùoÀ®büb~´‰…EMé:¯}`" }ËB8@Ùôy}¿ƒõ¤„C:°¼~_€&‹Ìbmý ëžsVÇ¿A´êc6"[,31,ðfbc²ò,5>ƒÕ^,s‹·è#_ÏåTA’´]×vµ;WVf¢—^ÁÛ°b$y‘"ÀÖ2ëoÛ‡[|]ð D'|€…èJ!MÀ}äv£½ÖŠÖÙÖc ‹¯Ý ˜Š£«”òm+‡ëG¬Ô<ŸFpѹŽÓ3¢•|î´& ’U:ëÛöÑv¤x,+Ë¥sI$•¨íßnÀ<ÜÛ&|;ÆÅ°9ƒC<2ôtÖ´i[4Ø!í0ù¾N‚5—Ù#Eÿ´$ïõ(PI+õmû¨Ö +<–ˆ•ä¹òþLG …´ŠgÆÊ Éh«gͨ´Õø\[¼'HikX;pÕôšê)Ò9÷òÎÖ>Ÿ†Îú¶}Xë–f † 9$ˆT N\7;)":å%½qõÌŸ�•¸z¶×µÍzJÅcí@é"Ppñ×+z«å|sÒ[߶Ëa= ÁcÙˆx[„ã+gêÞnÀXy€½<xÙ@Tã@+ÈÐMÇ–Ð<ˆ›¶”D·n°v ôÀxVâ´¦ßR¤…ƒQcŠÅȆκ¶}XéÁBD¡ÄEÀg9�t»¯þ^¹ëyN’’ñ¦…T²Ê?ß‹&*Y kJA[òŽÃ)œ‡çz @¥«öÖµõÃ5¬4x¸…ˆK¦£æY7±^åºXÊ…j³\þùœ»T?0•,rë‡oNQºÖ”(‚^’ÍbŬÒ6= ÒU{;´íÃ5¬4x¸…H†YÙØÕCíDm”ÔJêSÌ*xåòTê ªdRm¥bÓˆµóÚ‰Ò¡rÄßáÄÊÔïPß×¾mû¨Ö#°l¬ú»û™›œÅ”ÖÃ/Ø}>[4ÎsN³Ÿ|c”0§ƒ¶rëÛˆµÇl`-¶4`-t�aúzïkoÙåPnÀv᧬¶¿„ÁFç땺ÁÖÁ‹«ØTÛbE¾"]Öˆñ\|m›¶t#xÞ`5à`°9pW¦:VJψmìõÖ·íÃuXhðpƒ p®U}5XþçvuwM$Ü$–cw]à¹æ5: ’„gÛ´EÏ6X;; TUhÑKÖ:ÎYs‘ý÷Èï[_}Û>ªŽt;þDzÖð®ŠE'+b1¬Û ¸_ŠE-r.Öb?tÍBZGVìÞa׶ږä°V·SRtjúöE•·¬uÒ[߶Ëa= ÁcÙkxÁŸ§d«fÄU(feF¡mHIÏ,ìÍŒT˜(: ÒV«/¸¶XJãiŠ´Ãøó&KZxOljÙnR¼¡_JYé«oÛå°nÇÿhÖ^‡ÒtΨBëíܸŠ÷7F±é‹06ªÁÒJÛ…Ë�û¶…ËŽX;Pz \ûu*k±úÿ®Têjo]Û>.‡õ€ea©š˜ÕUíw€¢Èâ¦EcïR¡–îiɱÃx`Y²º–ŲEJ4Í×Añ�¹Õ +RœÅï`úùâw°ÞS׶ÉaÝÿ,5õ:ƒt–ñv©ÒfÏ·QÍq©¨T¥ã$Û¶ã{¬(=P¬y8¬Å +z»P骽umýp ë n©árYt+Þ÷u»¯¦¨bO¹Ê�µ0lÄ|ê58 ’z³lÚfÓTÖ<¨¯¹õ‰1°_ó‚µpe±4ºJo‡¶}¸†õ€·Ôðë\^†rôCçWž«Þö$µÑª‰Fì5¨¿ƒ€:ªV5Tom3^Ÿ7X °XkQX×~aUïÁj!«¡·®m—ú¡ÁÃÍ5,-Öt®òºv~í`*9*Àb1·>ÙUtÎ:n ¶•K¢G¬H=0–BñÒµ–ƒï#Lßî]u-mLãfø=c-8Z×ä•Û ¸q)Äo¸²-¹kZÈMÏïqÍÂÜê¦msG¢ kzcÍ¥œÙ€u–!‡(Xo}Û>.‡õ€7ÖðÖšu'I²ò#Ü,Š— „žGÖô®-Ä5»(AªVÅɵÅ"²sÚ`í@éNŒ‚¥(GŠÎq¥Šu@JVé¬oÛ‡Õ‘Pà±ìµÔã~+Ÿ »Ý€›«[[3!iq¬¡:¯¨¤Õ÷®íjG–;Ò[í`ß�®ýžCª5$†(ÐHÛÚöQ9¬x,k ‹o–¦ÖJ6Ê*°ñ5¿ÜÛT,¤k—Ù¤4·SÂj-úÞ‹Ú†-ʤ+Yص¨Ž’’©¥¸ˆ}]JVé¨oÛ‡ä°nÿh–^µd‡h¨(Þíܸ)wWj3Îýö¼ä'/‹*e¥Œ”oKUÛkJ‚F§CZpÌë¦TÚjg]Û>¬Žô€e§áT–/Féö�,añ”em÷�ös0Æ5R¯-«^;í0z˜’\äºÃYøFÈñó4º¶6m³K˜3¬ÃCJûZžî:÷BAýÜ\–‹5ð²-¾––ØmVª.uI¨d-\¨Î·ÅcYKÜ`í@鶃µ²˜ÃÚ멺«È0ôÖµõÃ5¬4x¸¡–º›®òm§·0:ßš~_×b·oÍë²t˜Ò4YºcoY—ºEØòq}¿ƒéJÓi¯¡é¾/@%©šÎÖÒÓpþáN'—”Dœó¼A¸Zí):RÇš»¾©&¯çè˜{,3ÔÚ®™<b€³æ`õýXKná 4ªZo]Û>.Ãz@ƒ‡[hX¼+êùxŠÑÞ€íºìĽ›ì& ŽªEÍ_ômK«X;°°VÝ°šXìßo]ªöžZ»>"‡o3úÏ1Ж¿\dF?Š³On`³â{¨W®â@çMË]VB ¢Cî—¤i;*¤Õ1ñ?½=ÆxòÝ|*«vk‚|L`ü5ë•k©}w7c|¤ƒp€¶Xº]ž|»7K÷žriF´�RÓëŠ\G,@Ý 7måjÞkJtÜCó+êªÑæPz @£+÷Ö·Íî±a= Ác™bWŠN[´c/ŒÉU%˜Ïµ~D²Û7Êb¥j’:dñ¦‘Y_kÛôž'µ¥J]×~Ó”a¥ótyì€À”¶ÒWײʡ< ÀcYbxQ‡•Ym1Ê*/Ä™õ¢uQõ»Èñ +“ä@J×4kÇZ¢Ó¼† Î\ÝZîÐ:\ö2«ÝE×-ûÏÈȺZ®¶ìCr8·£4[,c*±ª›Tèâö�ÜôšÁ¢wqÓz.z§(*Í•´TJbl»Ú.î°z VàÀ•oϱ–^¯¶÷@€J]íkÛÇå°Ð౬1¼sÆÎ/QÊöíØúÐáv®,eÅ~T*oNIe© ìÑy}ؾ©û$‹1œ5'OKÃö¯ +Ðè)=tmûHƒQ?‚†w²-*35°۹ä–ëYn“a-j®i¥GÞ¥›F€¬-Þå“·X=z 4Up××Ö~¡ƒë�•°Ú[׶Ëa= ÁÃ0Ü7kÔ$ÔÕ4‚^û5iXw¼Iö€fkà…O1%Tºæv¤íÊ7wz¬(=Pìo¢¬˜³Â¦4º–ƒ¶~¸†õ€·ÅHü¨˜Òn7àµoå˜ÕS,Q¹…ÊJu ’¶òvÐ67-÷ã” V—Ï0€ÅBvH+§#Ž ’U;ëÚúÑ*Ò +<Ò¹·ab1òö�ÚôšÒb'œñZª¨F÷P ³´µ´íÅR«®±¶C©íˆtàâî: QÖüdŽ7û°ë–>÷ö™ÕQ>fóýáߪX +èèñ[7§à<ØÊš�0kÓ + �LÙ¶éÅR�¼à]¶ëØ67WSC±v ³°–5ñX�Šï+–â{ëÛöá:¬4xS‘wUâ¥XÊ�¦Ê&4®Uò’´� +Kcé½X ++‡M˪µ› a‡ôR)lEM:B+~â?í +¥ønú¶6ó`äU>³à4jõj¡”¬%M�ð²xÉåâ'4¶uÖúZ(…¨ Waû¶E¯…ôX;°JÀZÒÄcµâ'¾®PŠïoÛÇå°Ðà±ÊgÂç`GÀ¤PÊ�Ö’&Ô_@B1.~Bc“›O]¡¢C¨›–>òc8;°—IÀZФã´Â'þë®HŠï©oÛÇäpŒÿѪg,³ /R$e€j96¾æÏ +Ÿ�¯ý(Í•²šþèÚ)n>`í@+’2@µœ‰Gj…O|\‘ßY߶ËaÝR౪gâ:¯ªEˆ·h�«,"W÷XášÖõìERˆsØ´Ì®æáôÎ1-‘2€µ˜‰ÃÙì¢'÷õ^ eè©kÛÇäpŒÿ*gâçg5ðµ@Ê�ÖR&¬mä¢'4,Í…îR¬Öˆkr2k-;ÃÚ½@Ê�ÖR&Öf÷¹t«èkÛÇå°Ðàá•3QúwkL +¤`ÕÀœ‘”Û’\Ñ@=üÛ¤¸ÖMËìÊÎìKÏZ)Öµ‰Ã©O†¯÷â(CO]ÛèŒTÃy0þ‡×ÍÄNYéX-Ž²sæ|®ÍWLÑQË-wmËÚÚÖÔâ(0—1°jÁ“¡½8ÊÐÛ¡m—ú¡Á#•ÎDÎXµà‰GÙ€¹’ u‚/ 3«x«‹$ªÖiÅ…m»^åÔ!ì@-²s‡rX@úí^eèæ¸0Ö~•FÉÀÿ…QÀòÊnÕv“°ƒ„ �“ÕùîýsPNªÿãåYsÊcÛÔìêᎵ“Ћ]±Ñ±Z±ßWÅ÷Ö·ÍNðÖ<4u“pòí-“Â(l%L¨§ý…TŒ®€©8º¶¤U-µmBV xÅÚs/Œ2€¥†‰GjÅN|\aßY߶¶#= ÀcY…xÍ|P'‚FÀRÄz»ð1c+vB#“ÄkWÀÑÞ¶…nõ›i‡õÂ(¸_òØ‘Z±ßWÅwÖ·í£rX(ðX6aÎþ“²iª%L¨»`ù(<4½}¹F!2H•5ßïŸÓ8aíÀµß;ä z>Ö#µb'¾®0Šï¬oÛ‡å°n)ðhF!ô¡Zæ›FÀZ€`ܦ2F¡±µ¬gµ0 +ÑÔ¤´i»èuìköÂ(XK˜x¬VìÄ÷ÀFñ½õmû¸Ö<–]˜“\¦Ñ£`-aBý]å<f³+Å�8×eS…†¬fk»àeÖaƒµ{a”,5L¤Zìdè@q—¸Îº¶}XéÁ2D¡TâŸFÀZ„zZ£†Y¹Ø —uõP”¬Ð¯eÓoȲ°¤bíÀ^ežåd‡U‹=è…Q†Þº¶~¸†õ€·qVÒªFÀý +>�㙃ÕØdYp@%K“:ó®-‰ÓDPÃÚ½0Ê +¶m®Ð}È›P骽ÚöáÖ<Ü:įÏfX»zhËA¥@ÑJPk—ÀfJ¦CŠ‹F»{Ë•ÿÊÌƪ–¬\©8¥:Áðu†éëÚO߲ȡÇþÐNîe°{#Š)t;x2b(~Ã8 1IÖL׶f;AÛ±và¸z \Ä€°R©“M¤(ʦ¯½e”C¹!À_ëœèîIn¬µ¶ò%�„ͤ©QÁ…N�¸à=¶HĈMϺ¶ëc¨Ê¦X;p0Ö¸+R«:ñ=pEQ|o}Û>ÜŽõ7Öð”™\5gEQ¨–/áŽÎ·Ñ[Rm©ÈƒBÕP£mÚH¥÷jv¬hEQ¨ûŽsî4öﻢ(¾¯¾mUGºÿcYj oºIQ”¬åK�ˆe!gÑb9-FV¢ÝÐ&EQˆ +=bmßt;êX°EÀZ¾ÄcµB'¾®(ŠïoÛÇå°Ðà±l5À\ƒ–w¢(Tê—Po%ÁÔ +ÐÈjÔXŽE!*ˆ +åÚÆæªR³¢(TË—xœVèÄßEñ}õmû ÖíøÍRÌiUÍ@‹¢`-_BýIõÛ&÷³ÂØô&µ^…èТε…õÔô<“aíÀ^e�kù’«:zЋ¢½umû¸Ö<–¥˜µìEÙ@¹‚ u—¤ùj¥Nhd-©•‘Um(†–³e…8”hZ¯ƒjù’gñ;˜~¾ø¬÷ÔµícrX·Ã+D½æòiQ”¼Ú QÐÓ\Õ3 —&,«U|´( +ï,A}ÖoU¶+kö¢(ÿ?{ïºÉq«‹>ß¡ÿ(Â^±Š®¼TfÖÖ/‘Zöñ9´å°ì½qâÄÅáHÜæe6‡c[ëé> oUÕ$«{xé¦Ê{ب¼!‰�r–ÙA«)ÑÉ`%)Ê`´UÙÝÜêd¾\KÃvqÉëÏǤ(#0¡"%ã½xú2PÅ$p!{ËîTéZ3—U•¤š[UñµëËÂdpÔ]«F}¶Vð•±ì lA+5:™/×Ñ°¦:ñ›”e�Æ“ñ>±×ôŠLFG ñt[RªÍ>ñ©¬B¾½0jµ�KJ”˜1†úr •øáá•F;([ÐZÍÁ—+kTH¹)%Ê,ÉK˜Rúrèœ±Û Ó÷Ó²%TÕj¦”(#°·¹¯ÜhÈ‹]ú)QFC-%N¥Åú¯§ª€ÌÚÑñjNÉKˆ}›rRJš¶Õe[yÒ\‡,%—²SàÜ°Õ +X«j8%/©[ÍiNêT)QêÑÖe^¥Õé|¹ªftN4_R¢À}¾»7HßfO01'V¶ëk LŒnTVãéë”,µZKJ”8f/©ÍiNêT)QêÁÖeZ¹Ñé<•¶fÊ_I‰2�Çì%<ZWÎ06‘lg{SÓÔZ•Þ|Oe5BjÒe]l´‚…êó +œ’—Ôæ4'õ�ª”(õ`벫ÒêtžJW£–JOÝ&=¸¦ü%2Z¹FL‰N1gRÂЬMÐÄ×oKIךÓ}ej²¦”(`‘¡J“9ÍIÝ{•¥h]¶ TZ#ÿdzšmz "¥D€Sòn×¥{ý“Lý$_J‰ÂÓP^Oe5üÇZ?lµ–”(pÌ^2h4¥9 ¤D¶*[ÐÊNgà©´4j¹-(Ä”(#p¼§Ñ½ØäÓ#ä‡Éò3¶‡§ ƒ’ ¹è)š[À +“¬À)yÉ Í”ædÐ}I‰2iU¶ Tµ:Aÿ Ô4œñYˆ’e�NÉKd¨*ådNoZ}êÜ'iZKDn*zù¸Øj,)QF`I^2h5¥9Œ ¤DŒ¶*[£›[ÌÁ—«i¦éJJ”ØGoeš.=Ôå|—¶aߧë�c…óYßMʧ¨՘ò¢ÀÐõ}jÀe÷ɤ$T#•BQ¶*[ðªZÌÁ—+jXU›”Ç”e�Æc뉽&áfN“Z’â10ÍJèó1›Êâ˜ÍzZl´ÀJ^”¸S.ïø>¿Ú¼ Ó¬M¡*[ÍNfàËÕ4ônSÞè”eîâÕ3€ªÜ~Éu.Ë}tÊ‹"`›âãê²mR³ªV0åE%°Ôjï&ý÷…µ–‘ær£ª½ö¯š…ð(¦”ZU«À1£ Á°êœ't\õ):9çF! ŽŒ:‡ +|ö-ÍÍU°ZE«À)³IÝdJ€R÷]R¥Ôƒ,%um.JMN¢P8çbur=ŒéRà>;iì¥äÓ$)P1‰¥¯Ò¥ðÄùº,çÑ0ÃV+`I—2�§Ä&u«9J=‚*]J=Úªl…Wiu:O¥¦iUÙM€©À)±‰Œ7»‘I„3ãf]JF“Ò¥ð<üÒÊÒ¹Òš¥V+`I—2�§Ü&u«) J=€’.¥k)Y!UšœNÀSiiZò•\ )µ 6™¯úÌÛ±Â3RžçS\_.ë'IXÀPvtMÉM¦4(ƒ””)ƒÁ–²Z¥ÕÉ<™®¦Á°SœxJ™2÷ñâF3¿ÎœB®ûTþKÊž‡àS^Ñ\6TÒHju�L)Sà”ÜdÐjJƒ2AI™2m)[áUZÎÁSikºÍ9ŸJÊ”8¡\“§€(`Ö'b,ÁS.‡V.‹µIz˳U@)oÊ�œÒœÚôùê£êßW×$ÕXKÙ +§Òêÿ'PרQ×¥÷ÄRò”¸:ÇtÉS”ˬ$Oa°öÃä)BqØ6ƒVÀ”<e�.B]ÕjJˆ2AIž2m)[áUZÎÁ—«kPÚdÈHÉSàõpŒT%ßÇäÕ¡ÀFÓc.;•á\ɾUÙôšziµ–ä)#pÊYPµš¢FP’§F[ÊÐMNçàËÕ5fDÙË1&O€C>Ø ¨â}uJˆÂXõÙû1%O‘ÝÒ›MUYR^ŸZ´)«Oñ{€Kgej4%D $O¶”`ÎÀÅÅ 6&OA%͉¶Ø®¬IGGQïSò!£,§VeIÒwÃVÀ|ã9€Jš“A£*®,ªRJ˜vE›Ôêdv2yJ*·õrD‡„’šÆÔw5÷b `ÀÞô)D× }räK@žûžNBÕšº,5Ó!…†®[�ãŽ\NŸÁUæ•ž–W‡xq(ïrŒÆ@XÐ$¦¥²ýÉË4µZ€ÕÀÖÍØ †ÆÚ }Ð}'€Wi&Xe¥o$³=apˆ‘�-Z+5{0¡ :{Ø!C·™ ñó7–Á=À÷éäËìD¨H–¢cª(¾2›2ç&ˆ€¿}r>4bÿó؈«±pöNqÚŽ¢ÈvÂåè:yéÍgʇœ%î¹ãØ@zO�ÇogÆã,Y8—…^˜rÉŠ-€�ºì—d%›¥`ÖçÇ U6ÍÒtÑä÷˜.0”ÌMæ¨ZLm ¯ì}¼2Æ2$ZßÇ›"’û ͹ ¦k~b`Ü4Ë&X^¹Š¸É= À‘|—tmEߊ¶D“ÞFmRJšôPîTiVV˜–¥Ïn…q%]Žeì+±•¦!†(Ža´qÿtbITP:…)Ó4uÚÇ•¤Ã9’?MCT\4~†>‘së8 n#!’p„f’m7tð +Ρv®lÉ^Û”Óµ—é%ñŽ9´âœEtä´(.mK“Z«eiSt¾9d¦cÄ£w1\ËÅDp¼~±N˜ÿ÷™õÍûÿº~tûùÓÏÄÅïÎo¯ì�|÷ç›ë¿«¿#nß4>:ÿéâºþpðçø¢ZùôýÿüÃï/.©™ƒßå?éxùÝ:ùóÍûsü98wîýðõê7ÿ¾º¼¦O ëöâÇÏwçŸpÂÐÑu{:*qöóÅåûÛók|׫ßýñú®|ÃÿÝÅì7ªm¿¢ìï×gNY]ôŸ§—Ÿ¥ì¿.ÞßýüpáëÓ+.KC‰¥ÿs—1úùü⧟ïf£”Š¿8Nó1ú÷ldþ½Óxü2_^oþøî›Ë?Ÿ¾Ssñ¹x_ɉ÷`‚2/ŽÊÍÿûüìîèæóõ{ÛÑÍ#T0úÀ¬ŒŠÞ}š½Vƒ:ÿ9£]a“wŸoüL‚ýÙùÜ鑪3ç%õó +XÍÅçöüÓçËù¬2ysØvsqúñôÓùïoÏÿÏgZØùgTëÅ1ÔsÑ»þ|õÝÙÝé?Ïçoкʋ#v}óýÝÅÝÙ#"FÁï—þÛÅåêÌá@÷ ¢@d=£¯8çùßjvòðˆX…æ×Pi}ì¡ì‹Û÷7ŸoÏÎÿp{úñ狳ùhm€Õ+ õØø +&7ÏoOïnngãS*¼Ú®9¾¹úxóéânΦyŽ°ðòhß¿ûöüÃêëEÛÛ=ŒmoWñØmÏ.ÚÞ¯BÛûp{JBðåŸo.>-úÞÎë{³m0û©îÍf:‹º·¨{‹º·¨{‹º·¨{Q9²oNÝÛ�£}Q÷ýV¾M0Ùy•ïèüŸç—ßÿ|úþæ_ÏqÍ·?Ú¬¿•ƒs¶Lýéîý·çÿ¼8Å€6:ëJ/ŽÜ—Ÿ9çŸ@Ë{%™à§Ÿ?}º8½>÷E–žMoïç3ø÷¯Ááç#2Ÿ¿¿ ¿É&Ùunvóáçó»£7¼í¿c÷hëvö óñüìóåéíýûãÍõùõüE™V|yi|S$o®?Ýnd©øâHÎö&ùôùöÃéÙù÷g§—ó-ÁÃJ/ŽÜ%tx³žÝ\ÞÜþý,êöLÙè—M•Ò£ÿ\°¾ûüÈîy.¿+|–4NúÏÜ ùïÙsñ߯¡=w ²ã†�µÉ²lh +x%ä/7×w'ѤôöÈóïãax™öÉC[ÙvýNaCv¼ë§ËÝ&ìö"í›f´É%É®0ƒÙjÃ?æs€¼˜ˆ™ˆyDfÕÿxÄ�T#bw‘GÖ®FDí>ÛÚýÃòM^ÀŸÞ^Üý|u~7£}:://îþrzñ˜µæW~v¹™xãí÷Jù§óÛŸÎ1“{$mº¹ÞâZ<ß�—¡mEZµ¸íËP7¥7n°8;ï1t|ssyt{~þß³¯P–8ŒnoãDÔáìXìÛÓ÷ŸçOI*þJjÚ›rözqy:ÿVsŸ´ÙK´/Á<óiîý|š›énù<ÂèÍíÇŸo.o~úeT“7ÈÖf¶óÌìÍE&ΞZ˜ÙsjoÆeõð°gß›íÍVß,@döúÞyܾ՘ý Hk×·ý|©rO¶};_PÞÏܳ}Ÿ—ÜSG¹vv·íË‘´—Y¾™mÝ>þùôúúüòûóËó³MT¶iŧµ¿Î¾ŒØÉiÅGò®ŠWl�òJ‘ð‡÷-zC2Òl*Ûi>Fûr}{ñéãåéÙùÕùõÝŸN?îÑatuJM;ÊÛí¨]¥ÿ®&ªÁŸs±æ¿æy©ø.ï«]çy³-t{Ãó6K¹<ïá¡Jìc_øÝë°ã{d~¤õ>&,™mfØ0£g`�»²û>lä +õáâòr¡ËWXÖù›«à•»ÿ3&‚£Z¯àú}~:ÛOœTس?ݼŸ^©ð +–¿ëÙ4yzvöùêóãîõÂUU^·ÛsVLf£÷þýÅÝÅ?7@.WØÝðÃíÍÕ|>Â…_^kyD¿¨® ð„Üüë)½»×w7óÊ›W@äôò_§¿Ì^/îNo7G¤üË/ÐlœÞ?T{A|~½ô°§×W§¯–v_óÐ5aq†Ù1ÍîìÍ9ÃÌÇh_¬‹3ÌŽ˜{7 ]ßöoÐæ?¼8?©ãâ³ÎÈøšî0ó÷Û¾J‹;ÌÚ5YÜa^ÉÙšÄ~¸ÃlÀvÞæ IIoÎf>Fûr-î0kVdWÜaÔ¯Åfƒ}µë<ï͹ÃÌÇh_xÞ~ºÃl°;¾GÞ´;ÌÙ›s‡™Ñ¾0€§ºÿÙož ÖpSæñJk¸Y7p,[VáùÜ~Í‹ð|x¥Î÷?iã7|÷-ç…y·™uá9œÎ7íIÖ¢7™3û3½7Ý$OÎÂÑæhî×ÌÑf#¿p´…£-mÇ9ÚÝ`ц¶ë턺𳅟Íág‹€¶ð³…Ÿ-ülÿùY}©ón³;ë7ÆÖf#ÿ$÷«ûq‡·l›9ÛÆÿš·Ílä—mó+ß6]»êfûà ¾ÝÀ ¯ªñâÂq„¿\üûüò/—§¿¼Û,p;xat–—æež¸ºy,‘Ä~åz¹¸~þáâúb¾a÷öüãùéÝ·ÐW5^¿™LeßÙ|úˆT6sq\Ù,‰l–Ü/áóVS¦¨ùµEΔ—Ff¥¾ÖíJuôÿíŠþ÷5ýMÿ~MVÏ +ò*ŠÊü1»"C½Á§_V!~i_Ü ^RßOýMpúµùêïÇMÌ®'oDa;ÎÞß]*½t¤ÇÍÕÇ›O¤ø~÷ùŽõüí•xÂqÂqÂl[Ú?æ󀼘È#îB5"æ5t¹Ùˆ<r¡V#bw‘GÖ®FD½"[Éл~dnÃwýè<½½¸ûùêün¾h³¯GèóçwÜç3t®8¶ZÓ%�p“,×ÉËuòµÁuòfIü–ëäå:y¹N^®“—wQ–ëäå:y¹N^®“ŸRÜÄ…²n¿ÞHô\®wÐüµÛ†¢å +y¹B^®Ÿù¢åýŇŸ?ß\Óùx=ŸÈ&õ^œÚ~9¿¼¼ù×\<//~úùŽ¾7gHà9ÍqµÝ½1“]ÿýF)×u^^–˜Íß?ß~ !~3܆•v›îøA÷ú[;®6Dë ¿×»ÝöÍè¶Éq¶XÞËÛËã¶XÞËÛk[ÞžõñÛWQw¾þéöüüúk’.Ï¿¦3î⧛¯ÿyqsy~÷õíùû¯onO¯š½å“Ü󮘛m=¿¤Y¯ª/¿ÂlÄNÿûâêóÝ#ÖL=•5{Ï·lÏ8|õZ1ߊbre¼="y5_§ÿx~F¢Éíýû# Až¦_áFgS,76¯M+¾‚�÷ˆÂûŒk‹ jOLPi?ìF`Ê®°ÛÅn³Øm»Íb·Yì6‹ÝfÎy¸Øm^åDƒ•Fì6шÃæ›Åns³›Jìb·ù»ÍkToÍéhŒPßGkPo2x xוú·™Dc·LÏÂö1‡ÆüD;žCc>"KóÑÜõ›zÄíü¡ù&ß4yÛ 4./îþrzñØUÙrvî&ƒÛñ³sÉ?µkgç›É?µ•~¶ëçç¦Ìx9:wáè\òN}ÙÜïʱ»ñz.9§6À+u¾ÿ9§¾ùã»ï>}ó¯å‘Ÿ¿ÿ:²2½Á쳊-ÙvKØÓˆüÙk¾„Õ ÿ~ÚšÈ/óùeÇ7É®s³›>ßaKÜž¿ßˆOïÛöÿŽ1ýu(�Û¯ê[ÔveU^æRadQÍvN5S¶ýj.Iþëâý.^±ôË›ìÍ|Œ~>ܬB)qœÕÍÆi¾4øÂà&˜Ì_C,F%ÕôbÔØS5À-FýÔjöÔ¨ÞŠQc>"‹QcÔß}Ûþ‹QãתCïʪ,FŨ±«F ¨fw§8í,ŠÙ^+fnOÏîN/ÿ|s1ß]*Ïœ™ÔÓãuö|Ž</Élɾ$ngçúñôÓùïoÏÿÏçóë³ùÚÀ¨ÖËÛQg{Ú^¾úŽöß?7ˆ1¯«¼8f×7ßß]Ü=bÊ®m(ý·‹Ë ÔÙáí¶$©^’íL²£ å’ëèAô–\GÏÄRÞn®£ùò̇ۛ«ù¬’¿:³_ƒº»™¯Ü¼*o5kÓ³&mzÃÑüÔEÏb4úÛçÛ?_ÒÙ¹vÄ7–{eù{Ç÷J¹òJvÞMâÃSëz+Á›óÛ�£}ñ›Ñn{ÍÇcç}ÇÊaýî‘ÔË5ÅÍÛ¸¦¸«å³7sI¬Þžq¿}ãÖýÙþK‹qŠàȸÿJÂë¢î튺· \¾Eá[¾uä±(|‹Â÷ëPøfË–‹Â·× +ß[õK{›*ßì<û©ñÍFoÑøoÑøoŠÉ¢ñm>€7 ñuoNãÛ�£}ÑøõVt¾M0ÙyïÝܼÿéöt>]T¾½VùÞä³U‡%KÄn(³õïÉw{šñbIãù"KÆ‹/<”_>ãÅ«`øÖ˜Ù—çïxiSö% ²òýÿøñòôì_¯tóñôìâî—ÿ±ýôÓÝ/—ómܱôËûp×·¶›6Bj_6ÓïAˆ{´—¾$¡Í®F7#°?]ßæ{³o_føÄy9ß"¯{Ó¯ÆçDo®ù9óùjĸދSÜ¿~Þ (ÿ2¾ÞÌ`––ãj/o6ߌO|vº˜7¨óò±¨³e×Ï·NÏÎ7ÃmXiQx¿�— _Þ—kÓ‡”ßnÖ7;íÐù%ýØÈÒ\Õxyæifó˜Óÿ¾¸ú¼Á5j.ÿâHñ‘ôš¹†žEÆúö‚ň“xñû^4f'ñÌß'ioöN/àþ׿?Þ\Ÿo ïM+î®,”ƺ±P;¸Hµ‹è÷+ý¶x0ûÓzï +»]ä¥}“—qééÇð}ä {(/½Iÿè-xõ®?oó2`·ÕÅdž¢‘æ.Æ?æs‚¼#˜È#YpjDÌN#òˆDˆÝeÍõ”¬Q¯€È¦6Ó?4ߤïðéíÅÝÏWç<ƱOÇçåÅÝ_N/³ê,gçn2¸?;ç#²œ»†ÈŽŸ[ég»~~nÊŒ—£s9:wüèÜ;ôòJã.ÊBÏÎ÷`-žo�{Do5Ñ|“ýo§ Þ/·7ŸUwy3oI²ô*ìýꔚš‘a»Zµñ¿ëþʹ(ó_óI1ßæ¿ëÇÙ¨ê§Ç}¦öYÑ»¼¹ýSÚ€ûÂ1Þ àô¦Ó”¼h¼Þ+í¤=MñѼ™Ílù|ד|¼ˆ!ê…qúîåw_‰ì]zŒí—f÷¯U6àv}½MO>Ü7€�ÿöɹ÷ùNeÖe×wšÿXô>ÊÚõ’ÍŽnÜ·½´§Âö›;@l?|8¿ýýÅí.˜HveïNœ¿Æû`ÐÔ«Ù—ŒûÿÜÌb9¨óz©¸>_Ÿýu¸É›£²C¿jW¿:ûÃBg¯Hgê×ÂÎŽ^ËÅ„•¤7øÛíéõ§3^‘Øzß2”a×M!ÛÈj».¾]kˆáŽÈÕ‹=$®{Î}sy¹k²+S²±.¾š›à•:ßèù§¯¾ù£jßý×õûü@ ïþ|sýj‚Så4>:ÿéâºþpðç܆•OßÿrõãÍåÁoŽNßÿt¾R«fõ—‹ëüö ]}Cÿûá_Ÿé¿í껃âYóÃ/ôãÿ¦?þ7þµ²«?þßÿ¯]½Gù¿´‡mÛöa¥»Cß®uØZåºh4}ï”[i{ØuÆÐ×ÓwshzçWg9Êê•Ö‡¦E{謦&Õ¡öªt‡Î(ú@€VY‹*ÝaÐÁR™ö°wŠÊ8ê¶ë<L‡ßڻЧßTŪÐõ:—‡ÚËkܪéQ¥U�xxdªE!¡)¥©Ecêh°}o @ÚÞg�*>øAg2L§¼w‚±Q\ÉÐtµ–;§éÄï>¿i-”²‡Âaè#YÕ«•ò‡Â$À™Î”;TÚ¢£C¡Jø·ï¹¾ºR £¶f€UÃE]¿â©2UâQèn%£¢J2L€ú £¢õŠQ“É#ï;µÚ+.£;B›fÕé^1Þ¯xâ{F kNkâû¾sh¶¥"„‘;tžiƒiÀØhB;›êxVL6&ÅÛèÊ´¨Zaå[Õ˜i ˆ>±Ø èÕÒ ßVåß-–¿›ò1ÖnJõØES÷Çєġ6e¬&r"÷8ÛŒtSciiʼĩk깋ÓÛäùÐÔ+À«ÔÔË—²)kW»ÉËH¢©h"ÑMS'’VSh‹é¯ô!R3VÅâ65€yâ&1Ü æ‰;–eæÁh•†â€ƒOÔØ•%ˆ·#ᆭÞ~¼A›É.nêmÌ[½«KEnÐdvÀ³¯â~ˆ<ƒùJg&ŒE8Oà‘˜SS¸Sâ_¹LâpMfqÌ]ÚÂAGÊF¢uaR£©‹3€UAÚ¼‚ +‘æ€y ¨"e¡ûn•ØzüyvÀ¤ß÷ €,f<5Àl·Fî…Ù:7‡‚ÁÓ•Ñ#ãÚ´SLA㹌Læ® ç¹ÃôS¦—€Ø¡N`™¿„D'& ,e§òR“Âjû´Ú`™„b*K�ªDxžíRÆuª¤e½p¿>$úCæë®Ð(“±-›,ñõ¸Ç¸æëvÀšqªì0l§Ðæ}º“ÝdÒæ3«ÑþìääèT½‰eq£Ë‘KƒÔ‰(9¡°é3‡dÈU:.£» "ß‘sš7o.p%00—8XËçšç¥'g;Ö½0v¦lJf–„šÐQ$r£ŒÈ‰Æ;Å•˜#cîÝjȺýªbë5Ç7Q@‰”MœYº•3Ã[AÜ€)qïT1É'<<b׃£‰~óôzãâéeIbãŽ7ëå°§åcí¬’>ˆƒ‘a%småu~5=eÇñø¤žæãó~,$ž]XöX¬ËSÑd,½Œ¤aÓ¾’Æ"ÒX†šŠYcIL˜³‹¢š“9í#-bLÌ—}å=È*¸,0‚,â*ÌwTþÎ|Ië,p2ëêj™4q·ÄÜûKÜ/qÈ M<4ñØ!–_Ç#Iûäàèǃäò~ô3i$¿ùû5´‡÷«ŸnOß_œ“z¢lÿ[j†ÖFüÛ*n7 €Êƒ^Ž~:°ÝaëˆÐ¤Mh;ªŒ ÖLKLäutuðº?:"uá?>cl¡‡4O³£ú–H¾=T֓趨JÚbªsé˜÷4‚N#Z^$0hÔ„&z4 ¯NÚºÒrÒhú‹¦Æº¶ëåØW’`<S:êŒq!Èâ½ÆTÒ¯D”ðŠYNäqÁ:9eLù}L§Œ6 ¯ +‡FõFÎ^ +Aq†“ž‰Ø{ªDDi4„†§Å'ª5-$slt0œ2¦ü>æCÆ8[—è\'gŒêÁ×i@ø�´ÁqsØi9ðHpÂœà§[Çû¯g‘[¢Ö16µb!ˆv1]ÂZf´Í[Ÿ�Ýñ!£±MÒ§F +Û•T–3EaKsN¤IÚ(â,«c‹‡Ùð¸[Þõm`ñ¸¡#‚ðÁªXRé¹ñs9cœæ6ºŒ³Þi#ýôPvnàlÑŽRôx+{F˜$V•‰„X1ÄEZVB‰‚:œ1DS–Ï¢2V\½m¥£H‰ hÓ9Þ’=ƒtUð]´(ÿÌŸ¸²ZåºhS$kÆ]9*™GÀ„¬VyˆLÇ« + J‹PáÙ£À<åËTY»ªfŠg“y¦#™rg›'Ûöy9x5L/Ó”«£=¼ªèŠW4‘UYôŠª„.˜r¬PLS8; +mñ—~•É T‰—i˜û²=“9ƪUÜy°¾¶«jŸ`/¦7Õ;ÞJÆÈï´mVe/b·¶€Ý¬Ÿ Ì>Ò„–ýžÀV‡ÈÀ4tÏ#$¢’S†Ž™Ua+Ìyä¤dXø*q&¬2¸La^`n‰·%Æù^¢¡Â÷L$›™+óÖÌ{ù×ñÁ€€;¡ï\›…Xê@Óú +Ñ¢ƒf07’lr"o¶h‰‰4@ÒÊÙËHBûѦ/ó5$WMTÃsiu)3žla^WëÑŒ—¬-i3YófD͘hš)]5#ÊkÆ”ÙL‰·Ów3Þ�ÂwµªöH3ÞFÍxŸ5ÓØŒwk3ÞÎÍ`Çk©4ä \œ˜y†U锶â˜q±Ö{·J¸aÎd +gj&¼KŽi_¸[S³?Ë=WRpS3ÑND‡ÄdI À…+î¿ÆêM®»hê>â8š28Ô¦ŒUÐij|"ÊM3ÏJS¦%N]SÏ]œß¦Lp}¦%(ǤéãôUg©êÊ™ŸÛLÕ™œé¦)„I«)´é¯© ¦ŽOY.MBŠöj$Å.š\;6d0V ‡×U2KÞVM½¯âÞkêÍgL„6pSíà¸ÇKpo£†…O¬¢’Õ2?É]f9Í„/U‚af^¥TâoY¾dñÑF‘¸ ¨(´•¤*”–¥X£é¡Á~.«U‡…¬ŠâòHœ>>ø=©ßÖR¶ƒ•^C<ÇP5wë•Iö‘Ð1=»>™h5ÔGfÚ¤=™kÅäNjD€G³!̶qèªV£ëO?^BŸ™°Ð`UÆk-ìÁ…Hð²adŸ$ž´‘άÃĤõ^ÌÜXÿh^ØÒÆ8wÉC:*6ÐIAG‰½S!uwÑ°˜\1'bÐóLݦÉdòíl/sêµ›–DËÌ[6`t"»b]‚-€ÄÀðwù«—Ú±º‹82Ž8Ô<ÒˆNMÄ9£œ¦%ÏJš»zêðMŒq~Q»ãÃ0.É2|^§¸š¼˜Z6?¯÷˜$*ŠˆT“J$ºš_E{L¡Þ”2‰† ':¯È“ÚnWö¦4ç•v•¼Äbwù0®„v¡ñ–v©ç ¢u e«¦ïÊàÅú «±‹¥_ „˜êýÉüŒ&p0Á*®ò` ÆË4^ÇéR©aL.SŠÑÓdÈ$9¥Zž>B:öˆð«=1Þ/©fÞQܸõ¶‹Ýç9ܼ~5ÜàZÆ3d>Á³ã]ÍLÒDÊî1z•f:3%nß8¯W<ôeÁ°žÆd(æh_ñHP„Ó¥(ÆwóÍ6ŒLTLu|²DP¢ÊÄÓÝV|?‘v>Ù7õ†hxG~ž|8ø¿üT?¼?p«ßüvõÃÿš¾z§Vß|¤Z:¨¾z—Wùªü/ó`•+:C••hpD¤\cDÈcBoÔ™l—ñvm8®ƒ!Qp<B6}cÀ~Â3PcÌWîáE(Zó©)3:®1@3ß„qs¥){Ÿ�k¦kz”L›u+3=µ&ÇÚ +Xs@ŽOÐDcR|røNÏçñ).§§ýD K i€#éb*Lä”4ýcyf*óŒ%#©)«ÛäåMËߤõŸH}\o*ÖÂã`ËófªØÄwLøj`Y›¢q` *ŽÓ¹)·ŒÛoÄS'\wÌ™¹Úx–'1>¥ñA1>HÆgMd*£i|dÕ4x þ7×m#ŽâˆðÃaÖ<ÒS¼¥ýJTfƒÁvAnî{8ÀáÁÜi�`@±y¯ÏIÃ=‰;ô¤Õ.CUŒì,ÕÚŽÔù¾µ&º!(ÝÂÌÕÛΈê¦p§Öü؊ª© EÑQ $ª‡|["–1ÒqH¶PK<4V¶ˆÚ´B0r“ÓÍ»k±À¸yÂ%Õ6®‡•¹?´Š÷ +7‚tø‚¡cšÅ®R("æùŽud®c´°>å;v¬HSÐ`:Øÿh +0‘MšžÇŠyœÜ`±*G8vZLT@‰‰¡Ã Ë#t,u‚Hµºíxpr½À×ZV .‹½žï‚Hî…¡õi1J‰×Ýвm´)Û:¹3cK«çs€ªF1zÞh®Ü!o7ëô4&Ò…QFõZ.¤Á쓤aZQg‰¾ÅÚÙè¿@J¬a×B4,uö$Gt^iûÎóu[dÔ‘ý{Z]L �*CÙ$�|ûß‹ !‚hïêTFÃ…û%!qmØÏÀ±+ïl,Â5]÷mÐÖQ‘êx•O¤ÝE•“úô,,Ü;¸æT¬Íö^Ô”SŽ¹U*‡¶l´\1é5u‡¦ÕâfC£²½ˆg¬®cØ<giÜ TR†t[3™�è0½reŠš5óØàf¶K)ZÍV¬ïÍžwCÜ×mt)kq¯)KY qÈ.®}k"÷&²kp$Ñçäl¡Z&yØHïlÝB÷Jl†äêB$v#"„îã’‡ð‡•!‚ÚƒŠ¥£#Qµw¬M½H·àT¨FCéãÐ\/X[¢B/»¸éZ:î“-0ZTÜ£2ŽlG»`dÌ5´±±;ÜNeö:à=‰ÿ2nj&y“9yâõMföé@hÒ‰ ®_ì&Å´˜hزqÈ$æ &ÒF»¯>ÇЀ‹ÞRƒsçÎën™ýoÑcи7vþPÃf§Ø‰ÅLo™áNàød´PYà çˆlz!|«ß9Û@R�ñ¥@›äPÑæûá +¨a«¥7`é×Õt<Õìiú‰é¬ŽÎ¶íôhn§†/KM“ Ö;ê3ÞÿÎ÷ß}s{7ð‡¶#>Äpð]ÁkÿóõûÕ§ŸO?ž¯®Ø5ú?©Ô×ô¿=tÆiOkD17 %n*&ˆ¼© ’ìÆ¢ëPTkqªm!0°º±Èkm(4Ð7¨Ò6‚WÛXtàÛ\xøêÝVâÃWï¶ go.Bj[ +DüÛŠ¬ço#HPÅíD ¶l%L`o%N â…TÛB¤@Å„ +TÜJ¬ˆ¶ƒ-érsÑBêm#\ȳ‰x!v›Í¨Á_zTF5zE³å¢¹qm“\¸Ogh²‘ð˜{fhJWßÝž^ÿtþ!3t2åvnÐÄf9j$vV<¢NøÓºŽ]¬h {Ì*»Ûð¿'|sÅ_Sé mÀ¦Omžˆ�gnK;:‹à±W¾s\‚-5ÓŠÛ{j'õÖTÝ¥Á4õ¨âç¦|l&ï$Í„P:ð„¦(íä 'ðä`ØL‹!{CÃ2”4$�¦_ƒßši¨§)}®¾Æ6Jq¥›8þ§ë«ÑÊj”ÊĤy)Ó" 8f™ !Ír +ÕN¡mO††K¦gwúv…í¨a¶Ë릇ó®�šô^¡8¤W(k|B•iá~OÜÌ)8Û+ô«dèžEîZ¸ñ… yHRø„2 àv™öq+9°ù,hA_â_ ÇŸ`˜1’Ä–É\÷ä€xf€Ó5…=`yêßÂC¦g'ZXô˜“»tT ȳ|‚�fN^C¢ä°á?NØ^ãØ= +Ž-²±Q¦’+Dòãž™dx4MÓ•œ‰“ÆKóÙ.˜r!ƾIóÁ´ÉsÔVŸË×ÔÆ î'w“ÆR†"ÓÊx+VRq^*ÌyZVüOèª9L³T&:MRY™£jÁxTÜwhYSö_±,‡ÇuOøâhWi^NšÁç‘éà&l'Û(w‚ ƒ¡0é4“á6S”š)Þ™d +é4ék™À&µQf¹I´S–B(™ˆ´¬W3YÓfºîÍ”8ššvš5´Õ¬!ÁfJ¨ÍrnÖP}³fs4köP³f«5Ç7ظyö«ííë…l +Q5SVÑ$ºªJ³†ïT|é$9ÖÈã·ðê¤x×÷.yQk&eÎ +2HÇ8{¹¸©–9LÈÆË)/SÝ[–5c³²"ÜYî°r¨ó·úSGÕBê¨ô“FQF>ÖcŽ-¤A”€TËsH[QNñü!ÎL][æeÒÃ`‰ðM÷e¤©ï‚Íeîñ<™Î餯YšÁê¾Â¦)“±†„RÊ¿[ÞŽût3>A•`“ á+¯á¬±5d4µ¬¦çŸ@“EúêÝt)10Ƈ¤þ)ˆ8¢¹Œw·†îäÞxHžP.&T,úÔd>ÒV¨>7ÃïS¨úlêN×PBÁ£"2ÝöÕä4ùkâäý¼†²òRUX–t0ºux¬Åxíää¹»®”ª.L/(Í!ì2-«1}Œ@@oŸP†}Tµ:òxöíØ +Sr·K_”VY³Q|ØÉ¥ª^kŒ‹9îN›bÔ esžªlN´lŠÉ6åPÉA²1‘/pÛè¹X¿Íþ˜ˆ$Åì Äãk0@ØÑDÒÇøš2@…)èë°s:Vãpû,±ùZŒ[,?ɽ;þ@€ÆÉAúÈ—Õòb¦Ò:ÂŽB@rlÔËSsr†#è1.Ì*]Ó4CHê¬î%Ö‡ƒ¸¬óцÍK&Œ k)ê +°ª€ÍÕô«ÛiÒ"VÝ5kF•g©|ž¦ +ÇfÍT䉪f,– +&ÁÆó/ÝAð¨èh°šnH”Mš¿Šv›šxûäg]h<o“‡/It0ƾ$Q$„PÅ>ÏjªtÁSYÁ,h`D‡ñØÂÏšC[!Ê€)Ð(áCMóh'‹+ûW8Øh°Žkx1¯©ê‰øa³ ¶%µÊ£³{=šÛ«Qâ6!‚Eë{’Çî9 +§‰f°!¯Ö=â6r§1â7r?2â8R}Äs�œpnÃw˜MoÊyØ“dÌ{˜·¹§ôÏÀ1â{ƒ1bÿxëñ4æC_½[É`²Ÿìzä'Üæö ?‚ãЄ#Éù˜y¿'\‰]”&|‰íÝÎÄ·f”븓äcþ$Fæé4ãQbWs)N×i§ªè´âUIWܪ¢þfHþSŽUo¦Éß?½Ý”ètõ‡Ûóóë§É4Rª!’Vl† æ?p =tÏBk,g à8PÉ4Ô#aäm¼tT¶cq‚ø÷9ÜÂÀCÖH%„<·ZâûR +ع˜éªTCüS2 9¤[‰ßq§lű“Ä1Þ²Ú(Å»XƒI‰†”D³k¹ÀP($ÜÚ 1à,IŒÊ¸^s¨³¾Íˆ1è–È:¦Q qðÁ;É¡Ø˽ÄÿúǪ‰7@_ðyj¸•LCÙ1 ÙÖá–ÿ“2 ñ–kK¾€Î„˜ò‹ó¬1:9™®e>űG2N¿’qóµ‘6g@<{ô~èyÀ¸~ŒÉ7:·OJ‰“hè8TMxeJÖƒE#Fìz+·47F!±ÑgQ!´™)"g'¸™h¢s§ER�•×r™g‘u�”§Mˆ‰†<GAœ:ÆåÏ÷ mLþ /÷,ñc¬Ý”걋¦î#Ž£)‘‘6e¨&ð®Õq®å¦Æ™g¥)Ó§®©ç.ÎoS&8®@S-¯RS/S\É&/e\ë&/v"ˆ¦¢ˆD5M!›HXM¡¬H}òGБf}§bZ¢>;ãC$DH§¶tœh]µ19@ŒÄxͪB€·•ŽhÆ}Å{OräÍGÛSô‡{¸©71oôA)æñ†Œcݘaè´i†”52*b+vÙN¼Ösu–¡Ä˜ãJ%gk2ku˜ÞGzé´äòʤ|:¡*s1RÏ"ËÓ¢²*R§ëcŽ¡@ÇM¤áNr°ôœ¦)2ì:ÉPˆY†hêƒÊ´! ‚b舃eKGÌÓSŒãe&ÇËߧ=À<³XÄ<fŒ¸c¹Ë¥™)I†âÔan%Ó0ù®Ï“¯™³Ø”èïÍy}^E¶ìš˜¶ÁaßÖ †œld úèe\Ÿ|Ÿ;k„륩ʓÝÔWœlV5+5²9™È•dt!~,Ùw\&1ml¤~°£d¥]ƒ²1%¸Ù[[ï^C:eTˆÇN—6•äoÉœÂ0ŸrI“ÇÔÉüf•6l¾ˆÇJ{t¾$Ø<°4ƬÍ{9Ï]<ßûT'€,˜G*9$9ß…pÑ~•hLX-‹ðB‡6òcñê®8vXUܼbôŠØˆ°ò 4}K‚toÛ²Û<õï|Jx€FbÁà½.8(™Þàh1––g—“+ò4tqª,'Ã1-³7™K9[žÚ,†gZ2ŽN×Ñù;>Ÿ§Gøø”‹CIA5„‰±´1HÆ2ËX¨™Ê=‰='sâºSñj,E4¡>ÉQK†!e%3¾ +¶I0̆"Ka–Ó†ø›9’È̘iÅä‡[‹\-±½Äõg,Œ11ÏÄ;sqßøóx,`ϹLîƒØ5¬öì Òѹ 9²BLSidÇŠ—Éé̤²@ͤ‚›%ñÞÉu²ó>„ÈÜFãìä:™6!G¡ñZ-EÏÌ4:')†XuX›ÍN0uH®&»jR†±cÎfgú”Z08Éf×ålv&f³‹g„â€;Éfs� òÞU™z3L4Ä¿%]Jüg8ÑRsæªóÙ嬃F‚%†³_™˜Î.e¯æÂïã˜ÌÎÔ%ê\v.æ²³«ì}v“Ù ÊžàÅ<_1›¤Ëù"c˜iËÎÇ\vzÓ?ŽSÙõ’eHqºKI<æW©nLe×Ǭf«˜5†\´*åMÕ)Ó˜YÅLv9sZL)Ip8·ZvËÒœÇ.3Ú§Üa!¦y41BU[çªðcÎcgb»>æ±S1]P±'”DqAÆÒ«˜ÇΆQ;ž7¡D¶Õa";]ÙÙµ:§ÚÍ5ëì§Ò8g²s«ÜLY–È™ìôªÂ3Ù…UÁ2'²‹AØ’5']“Ðß:‘ïG™ìì(“]Ì1Ä+ÆD¶ÊÅfeÅÝ*/xENV…˜Ä®ê²a”Ä®BZŠd—(©Êa§r»ãa»6¬éó(}SØ%<¼l(g%B›ù‚¤°ëWÕŒÛqØÅüuÝ*íà4•e§Ä¢‰ p».%4îJyf%Uº!†œpV;Î !Ì Ú”G¹Ï<¬°°Äæ—K|0±ÁÄ*§LÜ41Óuií$ç—d�ø>Lmü0a´Oyó\'1úÕ¼«vV¤äJ•�ሇ$T•œ<Œª¤\µ*ÏEt(N §neìR™ñ"Ä—¡Z§f¼”£¬ÑI¬h¡K3&¦È¶úŠÞš1I6cšmÆDÝŒ©¾íŠfºošñÖjF[¯oÍf¼w›áÖn¦{¿°/§R•3'‹_‘ã”,Z1r):®‘K5S>&‡µ/¬®óÂA²hÜm§dÑ…£6#ŽÛT̸3ꦢäT½NúH´\2HÝ…‚OS#qn*¤yVš2-qêšzîâü6e‚ç¡7ešz¡êsµ+“;’C9››Ññ½Ê$Õš&Šî#±:c£Nª»X}¾9O´}Ti¢eWDs@52oC%µ4‰y7õnŠ;®©·œŒi¼m›jßÆ]ÊĽŸ%±Ì *imœ#:¬2£i&ܨ 3Ë*¥WËff}•*i¢]Ucšè”œ{á4щþƒ Ç‘›"Ç4ÑvÕŒ˜y“¸ù’nhI7´¤ZÒ -é†ô’nhI74&Ò%ÝÐ’nhI7´¤Ú•tCˆ“L.½§Þ,ðòHqpU`ˆú+G}²>‚»‰³ ÕŠÍ:›\û‰²‚Ã6g½…tˆWíòòWß•A„òèáܺŅyf9Ç<Î~ã&àª?ûh8ŽÈç\NRis?§¨ny�1º&?ƒ¤9g>îŽZcAÚ¸6ŠUdĤh%–ÖÛÅ=o/ãýÖ?ƦÑJ$/…qnKî›òÙwqL(Îç'ZRýN¼ÄÂ!{Ɖ÷NÌ-ÐS[Ñè£"‰sˆ0«]œ^%qNPñv»mŒº6ñ˜"‘Ü "^I}³äJ©þ°÷ +é‚!ö¾ÁÊ¡×ѪW&òOËp’#,«VdcãžV<…Uš›˜GWv=²3ĆU'iªpØÆÔ–C2Ø6ñ2¾cš+®¸Ì“uã0m¹âñüÜD+ññâ°ÊW0-?ãTÀE´k&ÇÒlnÑ¥!šr©3ÃWwIŽ²¸áµ®Œ™C)ƒ®s1v;#ï’ƒdšX|T|µ"N¡gk») �Þ'žñåø͘!¡Ô2ã,l´ =aÝ[u¦�øBÕ§7ÍR™˜• c)†¦¡kdH Íw%�)ZŒŠNFœË€´Aa©;¼Ö!uبÈ�ô°Š©˜[òF[Z•5º‹yþct»d·¨RF¹ë[Q*Ñòã+ñ©Tÿ]Ê.ÉñÕÔìÔ"™þUô#cvå¢ý>øÆ7º€DòDsg°xdzHÙþ�¦ ÚéÚtû×â`1Ìß"v1é?3¥””ÿŒ³þ‹ÇR•ö_‰äš$ÑgÍ szÌüo}ÕÂ(µ¤ÂPLºvtA£ûèzÃ%¾fŒš ÚœB[Å;Oaö˜¾Á\1[Ñ:±)p‘Öù²Hìí»8]LçÂÆ8†¬¦ØãM_ +Ô]TÿCH¿…acêÂÝ™¢|~ ¦ºüš “*»³å1æ¶àœ.£Ôè1éûÉ‹a½~ @\×b’õ˜=ÿ!þ•9{õ€Kiõ@|Ü…³ƒÁ`bNvXË€ëV9ÓüÙA%Z¦·Xô4e}̦ÎùÕ½JÝÑÊ(Iï"»²^Ù…”UHd"ÑÓɾäIT–FÉŸÓöŸÅ§xò‡o4ü4‘8u¥×Ú–ÙÃÙA™t¾!!HoâìyÂáP$"±”µ–ƒØû$Èd¹)À†nWSIê¡DZmt”˜ÆàÓ:âÚZbðá¡8ž"8w )Ž¶íWÎK¢•QAÕβ“JÍlòèÞ&I܃÷§©šÌkb7¦eÝL¤Œ*×æB¥èPÛˆ•Òå6‚¥ÔÜF´ŒjìÆÂeTÛ¶/Qs+S¢"¶1%Èb!“ +[‰™²¹ C875ã–Â&rLm.n"˜tó«w[‰œÐ¨·:9²hs±“£”6<©Ò¢§ÔÚTøän(~²n3áV[ˆ Xã-„PPÔæb(¨wCA”S£m!Š²áha”™ÁVâ(3 Ò"¾™H*,vS¡T8ú6b©œ"Û¦·h*çó©ä(ÛF<•.·PcŽÍÍETÉ;°¹*òÒæbªÔÛFP +ûûÿîª$]eBýJ®Ó$ +ÉIš×òpbàs]a¢YŽ£¡2«m Y!8c!®ËâŠ,~¸-¿Êè�I‰„~âï(2”NoéE¶PÍ9¨ÃŠ+¿iñˆ/ö»;ì?±ª:ÞFN·œàJDeOd× œk‘WV{4ô¹ÃqYW;:›ÝâÑý-¸„/ª›½_T_³²Ñ¼¼ÉÚr¦‰-V—ïà6__ª¶Í +?@à,j«J°¾âÄ ª¤obj"„GùÉ ÕPˆ×9ñ¥Ax–<\bDpÏ®˜:½²i§×â<¯–Ë�$A)ÉxNž)e E8¾„i”wà80½zz)óÛnÀoË‹mƒW:+¾Í\½°wú‹Fa9�àPt(X}ovÑ›Ðy~‡’ʪèåÍ3+&&Þ„@Í›Ì÷Vz²G´DTUÝ!gD¡Ö;¹€þIçå!—tA‹òæK¥ŽÎæ¶wt_{T€}3Þ¿÷ÖÄêoJv’OxcÂãm´)é1wØœø$?ÍÆäÇ“´9rµÍIð‘ÍÈ1ûÄUI¹8Š\DJ67øÈ”’Q‚#ºd³p¤è`è’0©�°|=$` ‰¤âo)šPâ”ü˜S•:f%½L™:bµ 5,ø5M‘ú˜Jû¬<K9|•2¸Õ@Ì +Ýjh)la`7Ki–ó:éèƒgFT´) (¾`œ’y“ÞjE%äì“ÉÞŠ;P']ïzÙ£°O°"MÓŽï–l-D£à|öÐ͸°â™¨Ë"»üì†îm¸ JrZ~Ȥ6¡¿*ÏÕ(µ6¦A©¶)¦Î6¤Cð7¥ÄXk3Z”™Ý”b̧d¦7ŠbÁá=Û›qÉ}q).Yñ`²ôÐ ÅõQ3ûwt¨S'^K²&–W†]º”`ûÈ€õIL//ØZÀ¯%ò0Äø +Ø=‚„6ŠòB�‰¯€ÚÔj‚Ò–ÛÑÁ¿÷Í$;ˇÖwŒx0‡·;§4âtýݤhßI‰R–÷â¬VîmÕ™A«ìÃéò +pÓ{ã%Nm¸ÈRmãe^KçÈÜD[ÿÞÜMO–KæÓ?Îï)dþãsÌÂùÝò©CœÁE$ø£…W*Ì*Šfäž™©[;„Òy$‹åžø¦§e4°F}[;Ä(\§ˆù©uÞf�‹ó,Ž$çžÔ8D„[% .µJ¿97zì÷g§vïØMSrz¯ ‡{ÂTû-GûÃp–|Ãñ¯ ¢Å¦ ª—´Õëð.ÿæà~Ò8—ð£ü°‰ÐÓ×Å3vR °¦iîEž÷R"õš~‹®qåvÔ‚öq<Ás`XÔþGO•”u_’å{Æß!Dk3ÄZp£>àý*‚†Äѧ6v©×‚W‚˜QfÔÇñWàߌwUâøâ}B°™ÎAƒát™4ãylÆÝK°Þhš1¹á„g3Š<À\f<ÍxƧ˜ót0f#AL™¾š&ÍÁ\i†ªˆµa½ÈH5 ’0Hfc¿Õ4¤¡•"~Ô†ôr<Á7zJ#(ˆïO`8±¤O]qâÆÖŠÉ&åJ„Iž§`%Q2‡r +dZF+w^tðº8]Œd¿ž_,Ï-áaÃ|ˆÏZ4·}�Ç&}t&HúaÓr² U` úñˆ®Òñ‡‹_@OQµOø—Ž©ûr;&~F?éo&\¹4UíÃÐlCRFa1¶0Q±§o¯ÓñpJÁ}ªÁ_Á7IÁ=áÓ²°©<×rü:bò8'#ö|9¨zN×j¢bÝrHz5ºãƒjô'‚›Ë +ïjB¨R5Y'õ<¦òHkD€X<{qoÞs25¢/–Š¯0Qš}‘½BÇà e÷‚kÙ u¶TG@ËÁ©¶ËµŽ%Is¼@Ò†7 "Í4߈BúÃa™™#üªTò’^/c°w@¼gáÔÎ=®Úˆ$©ˆ3´ËõtxÉí’êW¸Â$Ëw ³œ³ÐŽc‡ˆ/a&stÏf<n%€Ö#yíhÏKŒƒðöƒ‡=ÒÌT ‹|½/®„zù7s[*Æ¥„¹,§.¥,I‚xã©´”!U‡–Ç•[Jcãw–â4î{éåèææ’Ÿz19½»;¿½þ¯ëÓ/Ïÿðùâýù'yéE—÷`r¡¼¹½ûÛ/ãc0DO´¶–²V„lkÄ2þ»¿žŸ^þéôîöâßTnÐHÿýåÅÙù÷g§—×?ýáöâýÿsþ‹4×M{ü+‰¦ŸînO1üÒïÆ2íçËËó»U³::=ûÇ¿Noß2$nø´Œâ@ü.æbÖ7åßìÞ¾J ø˦˜BV1m·Ê›añFÙø¤¬ø'o£ªÐ°…\Ob³VÜË`$ƒ’iðÇù/š¬àØÐ"wM±O¼5ͪK‡&< XãK?`ö…Õ¥Å;QúÓ½c"Ó´bãp̘TW’¾“3LåéI“³JßRù¤Mž–œX>6UF +ó²–E-ý5õ@â‚æå\¥7 Ä+…iHþŠiùoþ_ù{³«ØëŠ],DÁ|%J@üJJUpú8àÜ~î$Žâø gËP/nê*þ•»°Î—Þøó2%N]E”ëÁÄ+\ïeþ» ¾5±Íø'Šæï¹J,{–Çw9Ò±ÍñÿC4²Ê»ú‰•ˆ3‰,‡‘àW|LCqp‹¸‰ÈË^�ÆÛp¤d +ü— ²ùGªŸþ(U¸›øó8 "þ–aT)0j®tÅ1i'ã!¦f‘^žéìDnËÏ|Tó3ŽøiYø“NoRCÊÓ)«<Ô1d¾ïsÝü;YØ9~F¥—OäW*[*©Uê¡áþ”�YÝïr烮#î2ݘÎH …žS†÷-s ÎtkÞTÏCµÑ{Œ³ðYN�±Š_Ø´e<¯ÃJú¸ÊU!Ðw1/æCU—'/ζîõhó^[xžõµ)n=x8…8m ð„oÅ·«ì›ä2™vŽdXž»w’Å8îžêçÜý“‡“w?>:sñ\ÙEÕÏÇö‘¼¸×^ÓʼnŠSe†ùàKÓ7™8®ÎÚfÉý¦Ïcßd«EÖªRFô‡·[Âçä~´‰¦ÔÊÎ�¶0ØõÌU¯†€ÈD ØÀîÂò>aLJÃèäã9¯ +4PÅ·5mþWÏÃo\Ù÷¹rÝ6lŒ‰‡V#©Gþ W®@ø-80¸<"‹á½¼Fó“Èœâ•5Ôz×Â)\IžÄŠÅp˜æ!ç—]WÃÁ‘´ïkÎ2³£Ù}Çé¥ +ùÒ'ÿžÅýÏC9½QñyMu(c¸¢5ÅÒìâÜùà°ÑH±ßtzÛjPïÞB^4Z¤>ŒG)µ0æ?tD@ðèbbvC,ŸBÛ)qË F÷âÄ>ZA<ÑõUîŒ<›:<&6ìùh›ž[L.mœê¨€''Z[,oÇ:þÃ{øOp:I¯p‰ÎY$I¾wæ9–WÖNÙ®S¼œ‚ Ðú.>iÂ/D+^ÚQ$`{*#‰X‘à÷Ãømè\Q¾Ã–¨ØX1©±ôfý~Òµõ½ûíêwß“ö{ýÓê7GGßœ}¾úëÍ«±UOŽN9ÖŒ\b½óØK™2ú5õ^3ÒßÕ¿W¿ûóÍÝ_ÏÏnnßåÿ'D®;ÛE/bôDµ?þæˆ{åonn¯äSÄ’6÷û›Ïß}óÇþ âû»_.Ïß•®¥Ô†³Vá¡›¯'3s<¿]âÛ›}É« ¿N‹„á´¸ÄgºžÍwºk-?ü£à©„[ƒ‰ã(gçÔ«”—à2ºGœ\F‹/ÅbžXÌ;džð.JÉ1uÄ@{r¹Y³,W‹Æ[üÒ_C±¹Â(6sݧ—š! ç¢$7[cï!¹jf[ú:¡Öä2‰]Ø÷UñZ@†’ó¬^Žæ÷B:8_<ì¼Fbvâ‰3.óURLc™`'5Láj3> ,!ë@¹&w£K#(GXàaîÖ¥§}‡ãxL÷Au!!¸âLŠHàìMgØó¤ÿ¡ 둬±e7@„•v#ùÞð8¬ªƒç¹Ï¶îóhã>q@‘àþär·IÉŽ7ÜWˆ–Z–§µdóÓcÍJÞ—É zù‰ÌÓóõ¤Q™º®zãkb†N€uSXDádŠU:ÝʨùÕãNÞÖ¹¾—Âõxr?ðW‚jì<Þ¡ç·&µÒƒRÕLMA¹Ë5 ‡ŽH&í—(“¡] €y$;™¥4ã&¡tz\3WÌ9ž5ƒú2m¦P]oƒÇÒè E:÷, +ÍF«Róþ(4¿¿¹]îY—{ÖE‘Y™åžu¹g]îY—{Öåžu¹g]îY÷öžur«zu0½BmÖ\´®¹Ž}É›Vða<ÙqïM+¤^ýX]‹ ĶÛä¢uÚñÑ?Ó=k³æ¢µ¾UmÖܺÞ{ÓÚ¬»j^PÖ˜Ó*ëaÏÙºnðœ*ªºl]ƒÌºŠOc è^´TËë³(NÎ?Ü-7®Ëëb¨XËërãú¼7®xø‡3]´ò< d#$•DñR‚¥;×–Æb´ï”®\«Šk@¥ùªÿ§¾bUÂCXlKÉÁ•%¢ÕØU"$ oXù³{¸ª\2 ïX7éôhãNq"YK‚ó‹Ü-?ø«ß|ÍÄ`éí¤‚¥MÀº z³”î=«Š5¨½”îÜ*P¬G䶃Q–éYÂ4V¾Ök{æ“ZöX[)}¯@e�H\ëÍ:È`®º5ó7î=ìAÕâ)4‹éàX³˜bQ€ÙªúZ`ÁC.ZóìÖýÖ…ÖMÕ¶êJ“˜rž9¢ú€[¨gPS¶ÔRÞÌ5ê_/~úyQS5eQS5eQS5å™Õy\4é1^FwµÆ‘A•^’*®-„=?(!és£;AEÅ +B÷)*üÙ<\U'iMf+*“NǾ wú\Š +;ZƵ‹z +ßôXÖŽ?׊@Š š EÅ`/¾KÞÙu J§I‡ ö>Pn'häëŠÔbŸDP]]¦œ,Ø�Ón‚;CŠð͵ŒM³7ì|-èÙu“ Â)ÄlŒrõ)ÚVk5êU¯Cíe2÷÷ê%¿z…àïm`Ñm`Ñm`ÑžUH’8üΦ(1!¥±.A\ðÊ+ ñ°ò¶¶muXÅ0UKºÂHìðd:†çŒã~b6!&:2¯¯ ×D|˜Òþ�±ÇºœÆ‡=Ò%&=Èiÿ4AŽÚ‘´Y'ð8D ˜¸Iú:H7†p`\vÑÖr½ +”o’8ZR4Zšb“UƒÁ§–“ª¾KGSPlÊó1…äjÜvÝÌt÷�ÔˆãZEÏéc$¯À*~kŠh˨Å8¯d-f1tl8åkÆó%þVä·ÐÎK®Wåè¾ë¨Ùg¸ÇØh9Þ’ÚrwGˆ‹Z}w{zýÓù—Ńy¢<�·éx"‘HÞ!g~5¡;ÚêìZ<ž•�-R©¦Mþœhr©—9>`¯@'\OȤåºßñ båT75_:œ zïÁ§‚±Ö3—Åž¶ë<ùÝÓ€§Im°Á¦ó$`N¼‘Šè@¡¡«¶ @H©/ >\NÐH> +¯Ø°ï£ú& IõÚŽÏB1œëÙ9Ãn·ÊdÕ…È�dqzèeòâÎENM”‰À$ˆÖQó›, Dm"X~ 7ZZÔôwú–j§Ê™âïšL‰¸VW@͸٦Œ(7]Q|îy‚lΪTm…$Ö;¦f৬ .Ž$±rz€‘ÆøʯQ¥rÕž²ô;®4nµîr2 ɘ'ÈOñ¿OÃ,þÅ£aó):An‚~=RªP~žÔ?ËdN'|²,Çõp*¾z·+Ž[œt:ãpˆc„Æ×î¸F=ŠÉüݬ5áάWóÓ™ã¿/…\ò-²˜Ó^ær=¿¦'“â÷²ã^G%4˜Þ®rƒ¥¦×ºq®w¯:~ºFá±$_‰õ¾xÁ´ç÷'»Ã¾¨¡´.Äë´„F=X·ïåob„wx´M‡ÊËÓ‘#λµmAz˜}“æÓb™Ãbt’¾¦'“â‰u9'ðî³æ_%@üMÌ£«Z^xþЄɀi‡TCÌò&U~ ]¿ÓŸê9$aõS‰°$Q…Wx’ôÚ‘0ù“ø% Ä&5\A@×ø£ÉŸSÝ•S³øAgTõK$ÕTpÒLÝÉxÕèªaxT.%6ÈO’G¹ÔxâŸGááù<ê¬<‰,N‡¡x§q¥ê$"Ïrc~-‚îø)®‡+÷àP“ؼÍz>Úªç¶ËÖÁ§‘JóZw|±éÎÓ’ê¸ÞòöoDùGËzË·T•kæ5îäÊeð;Š¡¹p3nª©ûi&£h†£l†HÊ¢g!k¹Ã¢Ð)¯n8•ýö‡Jñëæ "Ê?ð•_6MÕ¥v¡òÁ˜b_ƒ²ã–ên&ƒrˆÃñÁ§Ç„ËzTY²,HÔ#ãeë¡AŽÌ?OêŸeÆFS:n5„4b:¤¦A+“^†ƒŽiŒÁ�¿Ñ•®sÏÍÈ@pìªG%ÓÕ¢âÿrØdFÍÚÞs~Z€8OQq„ÃÞô(tò¬/b(ÙBœ¼PÄ¡³¶»1¾¬çX´Í[w&ÍÛˆ9‹åÇã[«&>.¯Ø—ÑÉïãƒÁn¨ÚÍ ÔLÚmÖõÞLÆØLÐh¦¨6<xâ3MGƒ³m5¯Ó™F¢Œu/C®Y’HÃE!àËŠÌ#õ6\š6iqdOo³<¢'n±@¨¸Ý6“‹¢X?V¿úCyƒJ¶Åm‚ÃcVAeHç%ï°ƒ‰šN¿!¨¤¿þHó‘*7RÛ¯Rûpvài·[UH–íñ wn%XŠ§îSí4¼1Ç”æ'{•eÑ·õ$i-B¯×HJx[Ï9JÒ§øƒ¤Ç +ó •‡Ç‹kÂ*_y*c¾“+L%_OeÍ–Si<üz€Àøwú–j§ÊyââïcÐ^¸ËÒ?ŒÐ‚´~£õôwî:UnÆí7¥ƒ¨VD1sxµSÖE‘Zj^ž†K�îÛ§qÉ·T;U®H"vL¸øó%HÐin¤…ô›çMçI•©r3n¿)L@÷K‡ÒñUõkܳ4ªGˆÉóôCäõj<9eâPz2¯“™Ÿ`‚j“)˜LRAdüŒnçóÉÝ#HY–GIÊlq00iÛ€3=ÉÅPJ÷5$W|š”¸•¢êm|\Ø´vhaÁ[ÜüÐ9^ãƒJ0²ÑéÀfª+ÛV‘º¡|´mØãÑ=ˆñ°=?ñµ4ßÝÉ2àYqÆ:y�:†øsúz2P™†|üÐ×i1y©-ÐFi{\a-èELD¥SßFá'´&âR”‡×Ú,WÿŒr +‹þi-E¿?ýçÍíÅÝØ@ôQ•xú‡³ñ¶9Þmn¼¨:Ü,ÐFsüœhAÇqà¢�àÖÏÔö0r]/ΗÁÁ¤¤{yã’*+N›}0ü¦¶d±Òòûø Azä®7ø±Ã›’¶ž¥ºô_æk8!F<·šÆ&î¥"p.d¢7|j…ß™MÈ;³y'òHâ÷ÀãHF†!~˜ÝV³êøÕÑ8- ÏœéÊÌ5<½8Zªñúôo.Eý’ÌwJ~^·«ðDfs�ŒŽï{¦Rh)cÊBó8{XÆ„YZe$걺€®MBÇ=ò7Ü/¼èî3£W2!4m(`tHØM4†¶õ!µ!o¬ðÛ¤f<! r,Þ€¡íëRŽžÀïÃ@ž66Ôk/IélWJüŽÛàØçñ4 @0}<Ÿrô» yñ“¯]'Σ‡ +W¿4Ûtr'º‘§I]á@ëTMp“y¸\ÄÆ"xÜJr#nâ3µ²–žämÜHú.°Á“‡ªòPÙß3´xÙ8aÃ[U£Ì³bˬ`Þ¼¯æm²ÌÇÓ•¿ß™õ™Ÿyí0üÐ+ýkVoó{¯ÚjQEvë½×ÿëürè'ÏLøÛçbÄØçÚË“IŽý¤´‘гg £m&¬á„t†ß®Í¸F3nwBDŠÕ¹~•�ùwªSª¤fS«©O£‚Œ +OZu7ÎtÄàÂÝb÷§¯$»*2þåÓ6%‘Œ$=µbB’AW f\¼·HåÙŸ„ÊœuÌD" É.ͯTKM7¹íÔqÃix4€i^¿šÔHUÍNúnŠ�ïj„:8#üÒãâËW-Om<8)Ù”X?g`«Ÿ"„Ÿ‹Žù¯½dF;t¨2'íÙï‘ JÎÉtèÃÖqù ÕLór߯°G”|ò +‡cwÇü½aöÃIÕâ)Ê8<x~ŽsÇÁŸn<)›’Vvo4rXk¹›–…P¹K{ØG.³Å'•* Ò{IU +GZËa¬¡œj‚®§¢ñaIƒ¦å8>.x41gD+Ó9‡Ðµˆ'qH¶í)ˆRš= `y0Ü·}—ìI!"Žƒ“§fàÃ[j‡§Cµªã÷Ùñ”7m?~1œôFÎÔy«¿Cn¬å~à7兩ÒÂÙ’'‘t›•pÒð)6gÑ©hW~Ñ^ï€ËñA +ÁzñÉ¥¹ñC@`-þPŒ†´xbiñù>šÆå4¢ûB$C/›c¹àN�ÉIq^Sv…Ãcí aÕû¢‰Z¯[ˆH‹dê¡s�š@¸cú`ÑhÔ´Œ¥óðr`uL¢˜PS�!N:Wzp°†‘ÌÓIBVÓÓ¹?ٌؤËM©ÓJ\â!(è‚l廞SÜ|�¦ ²DD³�rÊо´"º¤ž"„ø +‘%Ü¿Ä"šL[ÚÈ?s/’H# sÆöy2žo•wPp¸¹:êùcã �„ +(:;•1’U¹§Áñ0dZ¹ú:ß‚´Û:ÜÆYÿ§Iâ3w*„ªÛÀÂ4®V\¢@wØéÀ;‘0î} ã–8L€~ @j@íâ®»´<Aø$e?o¥®vÜ؇r'àË0ÄQ¸–MA¹ZÃ-‡°rÎg$/¸ÈDA˜÷|ï’†TòaÏÓm:l‰ÿÐ8F,v¼äPî•ëwp}wûãªY]~n&•¯jîþ`…ŠRfÓW‚�ÌN2ˆóÃ>ìúÌ|º©@ ïJñH-âM ¢M‘bAG +áD鯳ƒñ·<ÂXy<â³·@Æü¶Ü3“BªƒüD¤*Ë0çpgVt¬“H…•ÍÅÜ—6 +ÑÕ’þÎïpÎqR:tO<ßÂV±ìÍÓÓ›ø¢áSA×N£~l§¦uB~èÊ´8 CâW½6C~HèC6¸"í Útª•$�Ér=K´ ¥#¨$†–›¦æ;Výø&$Õ²½‡\Ó•šåwn=ÒRiˆeüÇ.³®!a•Hkù®˜¤i#oÏðí×D#Wô¡½ôƒßž!¯_Ý#Ɖ«Ç!Ò$Qï‡àGˆy/a{Ð…Àˆ¾Àäè´¥ýåz9NùY(È‹LüM3Òž$jV¨ˆ³v|@,u~•Z€VæÓ¬ñ_ÇüžFï|È †kw¥vT=T°8ŒÜŽ3 ?YôðÛE"ÓüÌDͪ@*@I+ª¯ƒýHÞˆmÏŒOúëX˜UW¾%æ”*§ßõtePEj£‘àãĘÈvÄíB«'½^UÀ4´ñÐZy=Âz:/“ÉãzÓI®×@ðâ0ì +ëÉ”Lß4úòÖßeíNóí·áÛM8žÉá0ܲ÷.¶d£4ü¡†$€sÄð«2>Ѻj%RWgMÔÛhfÇXM}e+,2 R*º45ÁmÎá§ìClúYd2ò'b]‘A;ñ3—Ç[2‹Át‡jºÔMŽî"u·µé ð³¢}ArVÚD7 C?L·šCKÂU!Ojjèªv2 vvvPÁò ¹¡>Ù8Ro ¦©8¤\(:74Æí˧›NâûLxú!¹QiÅ$e“(ÚÊÕqÆ%¾>$ðtI‘A=B±¼\-§”AbKƒÙÉ„.d¦‚í]U¦— øÒJ¤žÎ2¡ÑuWZAÂÛÖT=%€L.¦”‰ã-Œpúò™…}! ’R$þÀ̾ÀùjIË0ƒ÷Úzxµò^D\g6&±Â3CŠcÓ›Áô�㘉^fDû´J¬¢± +;c³U†Y6‡¬rS¤ÿt½ ¥»€¹4) +±•1^_>¹©™ÊƇðҚ܎ÖOóƒKVsW5£¨$?ÚÑ^"âĉêª@úCB<‡-° ϘX 2�3É0¤ aCÕNd@ìˆW'C`A\åF;_LJ%�LAq0 T#ÀŒ1zN7@›xqü9&éÚ>¿‡eLk4DpVƒÕáŒqKŸaáà…•»oÙ~¬Dzì f +„¨±'®Ë¦±\JÁ~Y0·”!©?lö#‘ÎèÀ‹[‚-˜9Mî/AÎʨr©<òÜÒ¿§àÀ8C]âÀòru/Nsü˜Œ…ØwÉœb‹j{Vg†}-ל®ëÙhÉ'n'¦›~c‹Q?AÄÓÓ–&2 wsvP`ÄbaNˆÉEܸ£8;HcÉ <þØÈŸ' f:T<æâßxtÇÒjpÌïRx|³Ì1«‹#¦fvņ�Ë7[tb†Þ±¡™Më—}ÆI£C?1ÐŽñˆ'»kæûví“«<ÄMøÄ"8Šü"qà†ØsÆ5É’ÓÇ› 3Öˆ*Ê> ¥pUç±âA‡«<?Äïá¸a9ã‡ò ¥åô+ü‹‡F¬úN\»ø>Ñs¶$óáoz¹=LÛšCÑpe2œ·³{#ˆ:ñk{¯ø:NNìÑö¸£Y3FB-]ú@öÙÄíüDFþcŒ8‹¹x|ˆl8hÙþZP[èdŸ™¾“�#K\Ž¾àºüγH>®ëÑo÷5Ò˜©¼ë%$&"9gضïçu?;¬Uèäš‚ts½¶fg0VÞû œaÞˆ‰Xqs&uŽsöÑ|B9m´,Ïóð²÷´v¦S]²-3(=H€[˜ø^«ð +b'÷h4:ÚþØšìÄÓÛ 7ÿÊÌfóŽmõ-6—ƒS +;ˆéâT?¦†œ„*„SÀ%¯ƒ«Hüîå^¿áPs¶¤Ä³‰4(\´ò³Ü"+óUn¸x]‚,NN2@G‹ÈD|c¦Ct¸Âh™}'ˆcJÞ©±ã]O€"³ "ŒCm�Øáø€¹¤B}f’@‹U™ÎÜvü‘ˆ®g’ì{Çÿ²ž�ßS0Pïð6OŠ¬µBd¸`cÌ1‡æEÇN`ÈÍ¡{EÍ^±¨ÙYäöÐÌ7H×î ÈñLðÔ§‚V?©gI¸pÁ A/÷uG"½x¹¿¡iÆ}ɼ¾Á:¤Nâ;N~KΊü8|Y—îæ1wØQwbíc—Ó/c[Òó¸–‚‚½~}.âkkm'¯ãmu/vêN2.á`6^Ô.>ÎÙ1R±$Q_óv¦;½b/ξĥ$ë£á, òî$?u×–Ù,¡aÍà«B/ª¤râáÍ�›}Õ‡ØO^îÚ‰8Ùñ”ó1@HϸYç·_±½HîI:÷D¢`H↼úҊèÂÎøÑC´-ãæ‘N[É/È6-5!núN< +3·5épñ²4ž6¥ŒxÒÖ!ÄaÔÆ.õÔÙ!«¢ ÚÃh[ý'û/´&É·¡Ø€x«À6äwÃ:Q½Ööe› 5ðqí×Ô&}‘Î~ÌhÅ2êyv¶Çµ—qIkmûy±ÿZ'{*ßYy¬d\¯ÓŠPèA\mÞxIÜq¸eå\†#Ú¾˜ol¼0ÏòZ éJj_›ksºËÝ8›ÊàÚ‰û\èE õ´ìÐSíAVÁØ”‹ý¤{±ž±-Y¶˜êÄcL|¬ÓÁ w¢å�`Tê¡r³n§Ù> |†¨x:vã;m'EØ‹PlÑè$åaÃ"EV¬!Ô{A+äG±Î˜±SA©¶c&E~o—¥žÜäØ‹.ìUvE³I¾^ñò´çt·Õ[‚a‘X ÿF(Ñ©å8MÈj½dDétJ1Z%3£V–ýíiÚ•˜i \:hµ¨1Rá±!„˜ã<4WŠ¨¼36ªÝ©Ž˜8\úˆ·ÂÊ+Ï +³0j<jiBh]ÕuÉÙ¤óâ¾¥Œ^[Õ¹œqÆ#¾ŠkÎ2ñ.ÒšzNÈLôdqù¥ê˦«ó<‡qp/|]6·1qQÔâÅþI8òiÆ%B¡r¾ó®‡<Ô¹~döB§1?žˆstü[n·‚Ø[ ÃÓ‰ølÙeØ©Ø&"†ûzÙ©F¾À‘Ó¶ì3 +áDÅ,‰6pŸleËF‹³?Œ€€E&è…†�é;%¥Œ„´ˆBaw`áMÇì%+&.:[[GXÐo…À�p×Y6Æ'nkaò䡄¬â^†˜Ò‚kG§¶Òh¨_cC1rôH³Õñcâì¨B +b‡]Cz1+ý–„6ÛˆÒvü_F[œÓPÅlCv'•niñ`+¥#•¶œ·.Ù8zp%]ïVÌéõH®Št§XÝÓRë*ºž•^1˱íhîpi±ióˆÈW�m߆/—46[•ç`ponIæ{]þÎyU=7\]Ö».Z-;C»:qÞ%í±g + §)v"ïÄ[0ýÉn´b4üš¹´q}49ô8¯±9¹!®„Ù¹W[=s„ð³MšŠFlŽÆ ’=Nd˜V±ƒ`w:l˜«ixÌ÷Ñ9´løÑ‚aô|ñ +œY¼’5›ipÁxŒk‹–¥ölãe/\ÀÁɘëŒ'qk¹‚³¶âæ‰z6Ò÷àD6ÀÐÇF¼TáoñVGû"ºke3ÇÄëVR7I´¼IÙ +Iý¾×¢›ÀNAo©Ÿ»§¶æ+"ø+zRß9"ëˆ/îŶÁÒû¼¾ðl¦ñ¾ ѸaÍ}Uг§�•¾‹Ž2sܨNìŽAäØ/–.6\£g`œm‚$«×ÖQ–>ÊðÐ?°ÅaÀÆéJû„Šû˜¨’^ˆï°Ü$k³„òFTˆ‡T\¢ƒq‘6r§J‚�Â(𮈘XÀ‡ÙñíVbcøôDüÛÃêe8º‰~¾}1äϹÖáþå8¤“çžÃ[ùbCñýø‰RÄ�8ˆi%ëx{ÈMvÕÓœßKh8¼–Í»ÄÍÀ´ø20˜c‰ßçkk £ïZŽ~ì8ó%õé%æFA\Ó$Î\‚>èh”{n[Ž=°¤Eð¨¶âøf˜ý³lN³ÐKÊ3ãœ0 4¤Iòˆ<Б?Ì/´ˆ–E»6ÈÂñ<Z\ƒàªÌÒñ;¯[ìy‹œBQ>°UyZ±ƒî›²À¼t4w¸¬ÿ̉(ìÿè¿\ÊØ|ežÅ ÑÃ4=7‹ü31‹ì8^?fÒ³kNŒv`Ç®³ç»ì>ŽÑÁÆÉ7ÒŸbX®msíò;u :C„ùdˆÍ _mù“ã™$ö-Bʘcõ ÷îc/—Ù1‡¢–à“â„vDsJ‡ZTÁH ֈԓ䊬`ᎉ¤a;ãÕ#¦'I-X9iyÄ9½ˆâËGmàÈb¨í‰7u½–€ûavÅ »>Ú´k®‹{+w'qûý}h›º¦N ©Î %x£nALòfÐ&äįDoLP[§ó˜E_Ïäó_%ë0Ï“¬C"TÖdtmŸ)FY4F1*ú‚H�÷ŨTß–•½QYÂSR–¼OÙ:QÞ¥²D©ìS”ŠÓF©ÀÛg¤Ð#1*êcTÔœöl„¨Ôˆ=Q„Jß +M?r”Šš¥¢«À‘«VG©¨I”J·G©èö‰¢T¤¡A”J·šD©¨I”Š44Æ퉢Ttœòô#G©|i˜Š‡©øI˜ +_ÂTH‡†©h? S!Ð LÃTü4LÅ¿B˜ŠŽžÑéGSéž2NE£a*O¤2Qážö?BE4Ë:B…!u„ +§ˆÙ•L¡’È*5FO¡³Š4éGŽPé^$B…qF¨ô“•~M„J?ŽP‘ÙÛÕ•^%î+?R„ŠSO¡‚Ì컡ÂYâßD„ +“ÌÃ*~F„Šž¡¥†¡¢F*pŽx’$’úÒä ßÑ /aü„ǃA*]ùÐkê¦ ÿpJ˜×íCA*ƒš©<<â%H嵃T¼jû¤Bu6QñæÑÈ*KŒÊ£²Ä¨l£BS3ŒQ•³ŽQi{7Qi·ŒQƒÕ FEm£ÒbTúIŒJŽQi'1*zÇcT|ŽQ 1lƒ_ +…³¾l&Žñó£TÕSœJX§’ªêÔ̾S ŠJ*òDë´&Ǫ„ù±*£êâS°Ê¸.Á*÷«`o<I°ŠÏæ`•hÑ+Á*f›`–FÁ*º«øI°ŠY¬ÒO‚U¬`õx°Ê`_!XEGs‡’¾ëcFtH1#¡Vá:1òãþXÜãI¬Š®cUº«Òú™ý–XcUôúøĪàå”5±*Œ8†ªx½„ª¼\¨J«†Á*êÑ`; +V±£`•n¬¢GÁ*îñ`~XåybUüã¡*IÞÚ•P%‘*6EªØÏêS̈ê‘*9òcZ5Æ©t!Å©DÁq*Äþ%NeMÅu}–8ãT캊§‚ø9‰Sñ~§òÀ`ÇQ*8¨–(•§ŒRñý3F©Àx9ŒRaGÅG£TÔ$J¥›¥Ò‡WŠRLâ.D©¨¯aÔì(ë××Þ0JåѾïR™T¥r߸—(•Rq¥W“a”Šz<J¥E©týæQ*x€ä¹£TìÆQ*v¥RÏ×+D©^èc”JéRäFx4H…Ö5†}´jZ9©h—‚TœÊA*mƒTì¼^sŒŠŠ1*ëªq„JX òðPS€Š_Tv-@E¼xîP©¾~I€Š(@¥ú¸¨ìs€Ê}¤”T6$¦ûTî#§ ²!A-*kTþúý÷ëãRžá"yQáplg÷²"M Š±–Ãb{^c› ã3àŒåÄ»¥ˆ¶‘Çn䶆Aüô gÑ6Ðý ›ˆob(¹LkndŒ6ÛzûáO'ÿã·D_¿9»¸=£åÖï~»úšŸÄiAô±Zö“°.¥ärþ2’9€A'� ,÷üãå±Ð¦¬¸±ôNž…ìá½=&l£=‡–(JœôÙä¨øHr.ÈY5äAö¡Qì=Í~1?;ˆ÷Xq‰j~Q8ž y^g*DÙºíëRða…ì?‰ÐŠbiùÙi| ^¬S‚7ô‚ƒX"““Þîõx]{õªc¿í^HŽ†s<àÉK<]†Å1+«ðä¯âÙgàNÜÛvë¦ïÏOoÏ~½G-EÏÃG`€GŒ4t䃺bP€qœ ²lÁõ+ܳT¼-ÎjfçŽÍ�“ýÙáI3:²/yNÄÎϽmÅOƒ½‚HÑê\'�8màT€8$@ytÎei‰.¡±Yc;æ'Þ)Ö¤lïZ¶²pŸü4Ʉü\JË› ¬"ѹvÉQ +¬á6(mx¸¿9Ý"înÀ/ûCÞ†gÓÙ¹dšÄ¥ô÷G¨|ŽÿÃú᜽‚*™¬�7^“õp‹¢jÓ5"à6«DÕ¦ëàÆ+µf¶Ðοóìó²|õ®,ÌVCœf{pÀå7/<a'0p8h¾„’°Êµ|¡`uð„‡%äV(á>Ä‚£&ï~àp§4ú¿×oׄ¨Ò<ß»õ=ÔqŤåp]Æ—¼â’Ÿ@ˆ2`‡i˜)@°«ô|FÀ8âñl©‡š…Y܈̿:«øøgm¾Ã¦ËöÃNɱÁ½p@ÁÜ‹'rqw¿!ø†bhl›1ÉWîgsb‘ðTóZhƒ#~iŠÝ&½Sd´K/Ýò»Š“hªÞ •²ìÉÂ’{Ž™ƒñÎö…з&#=BlË4)È‘9ž·©—à,fQ¹«„ú±7ˆ„:kc–}ÒÎxy±oã1Ô Ábv8?)‰éÐãø±Qy-RòâJZrØc®¤ž‘‡[áã;g‹¨Rë°Ñå•`¸õÀÕƒ4,ƒÉñœ{$2ÄÀ—â [©}ô\O‘~óêüW‚à"¦{Ãn犣›[yIW³óÎñ;Iö¿70—Á|ŸÌQbßÖ&ù6w‡k¹’f§>¶ÂI«ø*¸e‘·–ŸÏ”§Ü™UòCíñ]€¼‘×8[Dž5|IDh.K2^µãÉ:>ü¼$¼HiI”îg?^úÉxß“äf=N'ã{|ðÒî +Kw§·«fEÚá/#‰)¿?“¿µ ÚߢGÁŠÏS~‘úä nþ n£-ƒp-©;~+˜…. +ò-{˜xb¾Ý²Þìz‡k¾¯ifÚÙd@e¸s‚±‹Mû[9ä0°Z8àÁê㺳±¥Lãqc9%šø7l™¸s¸ñlá…>(‹Ø´Ùˆ¼Y¹Fƒ«¥ZîµmfKßîH8ð`™¤;’Þñ¡CÁH~u€P€^"H ›ÁOä;v+,\û(—�ÔÊüi~d‹oú\«{žRƒ7§ˆcp$Ó ÛÑÀÌðÆuàwhá(¨82ž@V‚èá6øÉYëØ<ŽÆÆ+ÀTßÉÛ½“ïͤ‘fÚQ3M3r³±f þÍšijÖÌf5Û'%€Îf¸BÛVqg§îOÒ÷Ò)ê¸Y4G>ŸðÆIÉC5¿fܲ¿µö:þ8¨;lwMÏÕÐF?f‹K”ø�ǯÞ銸å`4Äë¡ÒÏ1*hµ`*Òö¸D3j¤w²n¾Ã=9Fƒ[å>pºöJ¼F¸í>¦œ m»®c˜DiiÓG±áê•„ðàñy\ mÙÙÑH” ßù/1q7vÌ–qaó‡6¼jŠ=R¤¯Èï8*Þf?ÿ“xþ5ì˜ßÊ‚±ïKO �: c.Ç›Òâó$J´tÆÆO¾Õ˜8à Q +´ ¼t2©“,ä@™D.~Ñ°ñ¾bâ§OÄ ãì!›[ˆl-î‡x߉iÙ‘±Ã]üh ü€�\]8g2œžä²®jgÅîBÇH+7GGg[÷z4·W\Ey¶…ƒQÁS»¶…ß'•¤3¿]Ý\}¼ù|ý~õéçÓç««›÷õÿ°-} ]‹u|DÙÑ6«¥ÛP·˜ëGô f1¡pR)'4N"Ï”Êy+:g5zBéÒ:³† µGcÿˆÞeF¿fOî7âo°t•M]½ˆŒúÜ¢äšìRŸ¿Tìï—$ÍC’${¯‘$»(IŽ¾ÿÿì½×z"I(¸/ wÀïÊœð�yƒ +(Œ°ÂôLÏŹ8ß¹ÝÛ}–ýöönŸâ¼Å¦©‚ªÂu÷L÷LóÏ?ª*2"322LšÈ=IzíIŠßìJ’xÁU„±!òîx +Þ ³ú€Aµ#«šƒbÔÄʃrŠ^$áÁD†ë§q&¿;§Î‰¤ÐÖ½I¡I:'’R¦Ï;‘4rÛàƽN$ó#œHæ('R[›Ï8‘†öûv°É·ƒ›Ç9‘¢øI'’>äDÒŸp"õ”?ëDòõ˜óé}Fú[|FcUøŒaôá@ú&Ÿž€ù»|FN$ûŒx_äù£|G=ºÏùŽÔ–ï¨åØöá_ìʼnŸõá¸D^s”ëHn\Ço š8’èO÷õÒýiÏñó2þYÏQ/š{<ÇÒ~Ѓ4¢ý¼Iíð õ’ÿOzŸ÷çí¡]ºšÜù.®·ñx:\¸†Y?ñŸò_õµúL(‡fýqJýÕ>3~3Ö V~Âê|ÏÁslp +MâSô@B€Û=›Gp‚àY©Ì D24J€"0xþΚ„ò#¹iùQ~!I"}G‰<‰‚eì’"T[ +ƒâ¥^O>ÀÃßpÃT6‡S§lM3r4t:!^Að@¹¡Pá‚(GD|º +Í/ªÙáZ)N÷Èœ ¾À}ê[üHàí²˜Û(¿�L¦AÀÅQ|²åS Q./‘DË$ÚDA¢Žç· »IÚg”#`‘?ñ¨$ðq†H m¥^†jháF_WߌOŹI +I)â«æžÄÿj_`Ô(=<‡Î©Ñ7.(’Fû’á†A®íÑpcº]ß5 +Ÿi”ʾáqâô†Dù)üLâgž^?"V£¤²J65âÉ@ñF{•i”· +êVj¬mú/:H™p›“JÛ¿eŠ¦sq˜ixáù�ÛÚhù3Œƒ‰q?É:[s›y{ßd)¬îa¦n¥¤5åI[¥-ááKìE 3ÖM`ÍÚ’äŽ%FÀÙe‘²Tà¾ttfŽÆ®Çc×Ì—aèxÂÕÐ,…ËÝ2x˜žò@ÀƒóúD²ð×I_žôåI_þ ú’×àpH - +žd”ÝwhOÄæZ,èÜÃXA˜ÅÏÏ°X}Ñ2‰O+o`2A,À8ð ʱƒ1~”3F~8Mší¸Dè주kÚèŸg¢‘ºB/à_´KEû¾Põ9üM*ÏÁEdà¡¡D,NUGÃ=²4Ìû„<qaœ±‰VÎW*Œ€HT¢ãÕ¡ƒ P§Ò€×Ð)ô±¼˜ž’‚›Ývx¢4B<4'ÓŽÃÓ,T $Ž‹ajBtjOÀ÷d +´@àM* ôæà¹|÷Ü0Ãî,JÒøT/PÃÐEÆã|#ÍÄ‘4 ¸µŠE'–@.êR |t~a‡Xn^~J0a<ûiÑ´5?+œXñ+ž¸-ŸPeÿÞ'EÔ0øI³¤ëÕÔâ•Ø(òx«#•!Ü §Y!OÐ>Gšv‚C†C ÚÑöH4QEßÃë^¡ fUâ9”¾H„9R�jNyr¢´’xN SøY§Aýë<§(CÊÊ‚N:8¿#Jå‚vYÁWh&»_)‡¶!&kE¼mýÃîJvÍ¡ÙdR}VÜ8t )¿ðp5r+D¸E ]™NPoóè¨52‰Ó9£f¥3´%V€®‡Àà¥x™´E°„\¸½¹"<vEpÒ\øš ø†B‡Áa}(Ê!G -zFïDýµwváЖ€LDÙáÁ8'E´SS$vi((a2©pÓÊ—BÃstèæ-x¤EÎ0Ç#‡Ž%ƒÁ2FÞ¡¢<ÅáA)À%ÀEÑU›Ìu‚2¦ˆhvð[©&Ž¥ +Sè"s‚ÂYo´JŠÔ§ Ýá|¨coeþä¨j`kÜÀQ¾5ràËÏà˜|Ëè±5wŒôÒ8‚ÀËãÇöe>3ŠP Ã8ïŒ# ù_ú±_GzgOðÝ‘#jÓÛÆ žÚ§SJYŒvtrÊý +è™…›\ñÝè®— +ÈÅC)fJaÎÔs,Ld§~Q÷ÿ]Ž¼áÍA5†#Cåуû]aþÍ]SnH0˜ó�T˜GæSBGá´-]òÓ0ž¤ž™ÁyjaÒxÝòeÇXŒÐŠ (ÆÃs„ÊØø-ÔÇPãà‚%‹ò½p8ÏgÔƶXàwŸt“ÇgEão Utc‚þܘÐã‚™CX<1‚R”0piÞÑÉ£mòÌï‘pšBÎRpz�N}p8c1ÔŸZƒÙš)6%(E[ð” , :x- ï¥iC§ëi´›J D¤NytÎdWQ†V™ÑPÂÜrÐTÂ(u%Pn¢²å›ª¢dQRC˜^1•GP…VVÀ)U±v×ÉüÑBn”šÏ÷õbÀ2?rñ§!µ€,ì¹+îøµÆM…²|p~ƒS²dÀ}$Ìo[Ò¼bqÊ*˜ƒÝÂ¥”‚ù²1�~Þºñ\¤6”òmáõm‡YŽõ5,«¼wX‰xX‘" ÷ñ˜D8ó(â3¥ÛFc}Þžæñî!xKJ¡|GWIJÄõC¾¨1»9éËÂfxàäpY +2Ä~úsþŸ¤›ø<]šþç +&,F«¢ð¡äÀ<ÎœŽöê–´ïœëØÇAÈãËT`âe“¦Ë•7ɳW ÷Œåj£ Þ¼Pè'ÏP%ÊÀ¯/¶FNïwxDœ´å¬ ÐÁCò +@3Š JeVˆý£’º‘1 +ëgˆ&>M”fàÞ8Rø”˳-Éðݶ,ëÞ~JšmÍòlk~“DƒbF™¯Œ2^m˵öåÑ’ 7RlÉ6dÅ7I7桱®Û®7€,©¹ÙMcž`è +“KÃxc8Ö×ä”±Ílø‰rßs$ÎÏòOéšËod~=þ¥|[x}zÚÊf ]éLÿtprÞñ'ã`òx™(LF°w ã\›’Ä|úÁÁƒ1ˆÇ!0;Mi3>mŠ2.ËøÍhþʉo O¢êïÈÐô§ŒXãd.p×(oà‹ˆïD£I|ozšz†ÃÆâ m9¼aÏП±[ÌIþXaC6…{œ„Ùƒ¬¡Ä±õai–Åw=ê¥í“¤ßDN%òñV¼oñ»©äw“F¿›¶N0¨ydi4jž¶Í+ÕÑ”òmáõmWÒès‘ÇùÝ>8•(hS<N¾E£‡Ô.,ÊÇ€œšÓw-̪C£+éøÍ-!šÒp‘¡>,-rx²TŸdë³´ßD8ïðú7½¾é1NÕ€<~Âβrï¥IõP!˜†yÚ‹J¢‰Öä™ÎÑ€!oéLçŒÀPU箨BÄëg ݇²ê¨¯|[x}[Ä“JÜ £êk‚³n¦Ž(=¦”e×"byñ€ˆá)d§³†s#[ÚƒÖè†òµÇÀƒô‡¥Y˜ç/F~íÄ7ѦЉôgBõ¨8¹kÄþíg„ù±F1Ô¾<Zu•SEú™ß$Œªã¯GÕm=V ;Ãø}“+¹X;ka+¶B•šÀZûJ ¬9cÂiPo^èëƒJþ×·KFNÿµN¥+‘*'Xï+yD`ýÑýõÞ’ßX“;k½,ëÞ~Jš£—g%°þ¬D+5¹X“Ûµ^®µ/–lŽ2ÖŸ–n5°&wÖäGõ7z¸,|l^N'Õù`²Lz>~ü^퇳Ëü"à/ÕÑ +ü´Þäöò§¨4%æ«EßT–&ROž¹#Ï]‡¿™ðǤ4 ÀHõm²1ŽÀמ-ý¦Ê üÞn�@¡…gÂï�E(2#iù!<àk𠇡ØQ€ßW`7„d·K€LªÒ²¯CìKóötÓH�…Pì�mÈ.M©Á—`øa¤ „BšÉs 6ëËùt(ƒŠùqŸ!Ñõø–œ=Œ¢e +|„\‚ÿ'ü/zRv#ªí7߈"MÁ8º&“%ÿ²´¡É4øGm°æŸN³ŽD–5±ªÅÿn¢kC¢$"t¡‰ÆL&ÿº¼É¼‰ÿ,“äØ5&A½Ô‘Ž„1`R½ÀMTÀ¤þ90!v‘~Ê´qHáÜøõ÷õ䞊6tŠÃP]ŠØ]Km׿~|Õ4*paž·©%ܨCòÜzS¢üMp?'øcÔâÛÚðiÁñ5ÿóâ,PœLÿ˜ `æ‘+à2.A£LÞ³@¸�_dõk ©PÌF ˆÕ`bÂ�ø-vŽ +ˆø›ÁbÐ!„ÛêK©=ü.ŸCBZÚ›â¸Ë±¸™*ÝîB6Ü_^)V(™Ætî—f3À4Ü9 ¬°Ï©Cj*VšÒÝ.è;�Ý,: +ÑUæ +0¨à¡ÔचƒcÔùÉb€ÏŠ:ÕŸë¤y©Áb6’¾âGÀ%•Ní¬¡›wDÝéMŠý~’á émÄâ‚ðÄ €2“‘4Ø]|÷L%�Øž«$qDHÉ]SÈt¦¶�ÕÖ+dB 7…Î�+¥ùrGW%Fò¤ó‰ž>ÄÈ�B¶áž W`BtØTS~Oí4$9tVƒå1Ðbùá²%ïñs¸æz!§¿È“J§ƒ¤ ’ØpùÀÔ¶‘Ó›-4gÄvÞm"rxšÏBIûà&?^•Kq{®·Øt了ÿu)üµé,þSn¯`ÐTv—1ÃÒ±6hõÁx6Z4œ˜]qMp$M";ͱp³³�‹èÚCãO¤V$ÔØ⪋¯…:T]Š¥á.jx‘'Ñn’äà-I°º<C’èÖ]�¯ôå鿦4ÜS{r~'WáhÕ}2õ'Sÿ-¦~—}Ç«t$\BÁpO;‡®¯Â ¹OöýgÚwê'ÛwœÜõd†~'3TûÞÚ{âÖÑ)j=™²¿%jýtªù“Uû×·éSVM8YµßϪq<·Á(Ø2¤à}·øÊMZ]G`qâ!žõ÷ ¥N±'“öO™4QÀ™ ŠG¹?YxN6(pŠídÓ~s›&žlÚïeÓN†'“ô3&õû(Nçwµ8pOëÉâœ,ÎÉâœ,ÎßhqŽ9r²<ÿ`›¶N£üÛCÿÚ¶çd9¶çß(Š¡ÑíÔ$Lçˆ.{æhx m®á)–Q*p‚Qf-A�ýü¯'}£ºþÏ([RÀIá xKÊ ŠÕ.Ëî¸Uí“Z÷?¤€?¥ª˜“ªú·©ªo¼ö浪þAU¥$± h†y/‘¦‚Ya9fWb•“®:JW±']õoÓU'·ê××Uª[4KnÜ*š'˜ï_¹û]uÕ/¾Cþ¤«~Öäá¿XÛlÖVŸ‚Ù£~NJã#¥ñ‹ïg>)S0ö«;8ìT"ñî[‚†éÑV%^d|+!ˆ?àÐè請N»VOÚï;µß){Ài½öŸ7"#phã5ÏÃ,Ž(ÿ±H±;2žrÿõmú”I;mZýÍLÚiÑÉ$ý¤Sî¼]ÅSù"mBW2§¬¿û)wŽøµÍÐɈœf…~u½ûQ(@ãH€äáUoðJŠÄsBÅp§ÍEߪ¹N{ð3Ýwr OôOr iJ„wã�šç€e…[ü<°Â;®x>9п—MÌÐïe†NK'3öK›±c–&ÐÝ<$Ã0( ïõA )ðß‘ügäð?Ô¦OÙ´_üˆÙɦB«“MúWÙ¤ 5” á”pʹûÛS¿øÁ“áùõƒ©S¶Ý“Ùúgwy™d‚$p“DŸòtüö!Ô/~œôdÉN!ÔÉý«lѾÊOqI&5�˱4{Š¥~ûXê?ïw²@'t²@ÿ÷Gɱ¦õd+Š§#.¿½úÅOmžìÇö\œ@“"·©r´ÀÀk~ŽYýày’ñÍ!ÐÁ$üäæ†'þù‹›§MÆ;/{Â;‹9À{Óp0ŠaˆïŸ€úéáOé¬Ó±¼ßPëq4ºã›fó„ˆný†›càíôPëqêuõºîït;ÒÉéþ%– Hñˆ,øÅ,Ëà&@ ¹ÓåßݦýâA†žPÁÑå?iANÉÙ>«µ¾•Aßáab#5ŸÎLõ¾Ô™þqØ%€Î/ vû":\kïã°¯Á™y a•Ú`×Å”þs&M‘»Ó¹lº‘çPÞ¥uMV¹Z/%F«ùnàgI‚c`üÄP,Ž±Ö?€/O2<Úí +³ãÇw¥Æ[´G¨R„Ò²öbކϼ)P“%P÷þtþ—®13i0×A|‘çKAê«Ž4*…ÖÖh‚äˆUZ +/?¿~7Iíÿ¨½ù”nþÅÏ_Ÿâ¿eÇà +8ý_hŽDCŸáxAiŠš„?H8»BmæYNÇ)âø"NIèL‹œˆ²2IˆŠ_`HòtÉøopœŽæÿfFí´ô|²I?i陡v?±”Ÿ ÑDú)R¤Nó^¿ûú3:š2C'3t2Có-\…'‚Ñý6œà'ATc{âd…~²"[ùÓqú“:Ù¡“ú'ìAr< ;âý/è +[â´àd‡hþ?]²"§ ?GuÒR,%èÃÁìXèÎPžæ´›ö5Îéôo¦³Ð†Çûi’"y¸›…àŠ±0úY(C{È㵧¬ˆ'—ùç¯j“Ü)+â¯ì@ÿÆì¿uùdÌNÉ©þ£îdÑþ©{Gà>-aEa F=BÒ?àæ‘ÿŒþ‡Úô)‹öï:r²G§Ú¿®6>p@›HÎ+áóÙ ª N·>}«Êú[sJìT85ˆÓ”œÎ'ò|ñ£Žéq'’(õð”¯Õbß <Éû¯+¨Ÿp$↓T´:¥>ÏFk‚ì‘"Íq(A�K,~°4ÍÃJÃU=åßo9šW +jùaÅ*H@ŸCçIšD!*Çò‡*(ªóÆW}iæ#† aa}E‘dPR‘§)µ€ D}ZŸ~RO@’IòÜÁj3ßQk–øǹüÕÏ¥¯¦Üt>øk:Y{ðää)ÓlùäúW¹ó'«r²*Øaj̥ɢ;”w¥AxœgµfÐR-Y•– “…á¬ó¢-ä›fUž·ƒ¯œzÖ}ÊHmP5唵â®M—ÒRn¦äÞ\–wbÌíǘ;€±ü@ ×qÝ‚¹ÜÀõ~×Ë;ø’QŽiÏ“êt€I®§_`ó–œÒ¤3þB=ÌSZàÜ0ªui0Á-j“Õ89 ä½^ëïàodAÿO´š;«DŠ‡-ϑ桘Æ1,‡²2î 94:ù ˆTLÙÑôlÍÉÒœ,Í¿ÐÒl¤ø»3ŠhQ™PDQ…½å×ÙžY'BœðŸïÊôÑS2}P§œÇ«çê`24%ä/òè7ždbÿ©I¦¿‰“Ê>ðßú?Š:”GOÕ¡q÷6YÎtùs¦ÝÅRñÂ'j49è~ÊD8áç8’§QZDšâyP?£.2p<Ã~§¶úuÿžS«{ròLüùM—òß#&i®uÜýE¡ÑF³pZŒ†ÛyöÇçUÇŠ0³ú믯¦²´þ(µ™‘„?Ò=Z¡µƒ–ç_î‰ü²~2€¿î`†Q8ƒÆ1µ7ÿ¦@ç?44ŽrÒ×IOó'+ÿs=㬛ÁþÉéQ·â§Xn?¢ŽF›ci´FŸ†ßÁ5i)iHZê£ü0Eë‰Kµ@jîR–ø(u)›oœ)ùUó#x+FË禳·N 1— HNŠœ€ãJàÿRx!•cÔ6}fcõî‰m[</6Ó“N|¾DÕZÀ7,|Ó¼œNªs�=˜ô|>ü:!ƒ¡R•Fòr)£ªW[GWÖùX¥‘søöìB¾ûëÌøþ¬ÚÞæŠó¶?XÊø۱̑ `S¥bô‹"- +x³¹©e¦šÜQP)ÂëšcI¼AA«°÷òÎrbpŽâ98Ê5.Œ +‡V0–äEeƒI±´(®§B'¿J*° м=ÊÏs"É©½Kh€£•Ê +ŠE¶\� 'èu-6Àe©|.I'9‘C»"E^y”–…â)†EË÷<ƒ~ð,‡uÖfÃ$h%¯ Œ"mÊFhÑ”ˆ0¬Ê¶ïÜÂ�ÐR€AÙ%�´4·î2ž @=Ë <Ò§<‹ŠÞ00 4<›´®¦x•ˆ„Šá?K‡ª)°«ìYàà]ð#n-À‡Ú½ÆëóQ„Ä!…²ÓÒŒÀ³À“4Áb„jêZNÄÙpüMÒ€é +BVV8aE!Ã’´RšFÁ§—Ð;ø¿M6\YG#ÞÑjO‚Èáë;ZäŠFâÎ ¼b–ôèHÔ 5èXt²`jìj‚°PKGàóÁ +ç(|D†€ aõ8ÏÀ$¸u"Ä€¢ÑPìRˆO• +sãcQG RˆðŒ:h8Z@gOHž…‰ƒQMiÐ`WW1Ϧ(ˆPµÈNå?h4Íð,’2G‚BqÇâ~eÈ6øŽ„#E‹Œ€<cÕQÁÃÍȸ@vy3ŸTûpÝ:,È Í¬G’kDÃàó4„€jÅ°<‹¶^Aäqµ8|Üm¬+ÉòªÖy4ÌòX¹�½@à|ËfTCÄŒ±0XTa(JMÏÒˆ7,Å1ìZQùŠ9l ØÎj+BÒ°"‚ r[ƒn–Aä šo î.3¡TR4’ +Rüæ7©ÔŒxÔ>W©kÐ_`|¡1Ç°ÂH®O%©ROcŒŠÔ#¡‡ê‚$ˆµ²ªP¤2˜D,ª%@9a6ÚŠBD‘zJÐ!°fjG2"Ë¢:€–ƒ¶CL€Un0`¢Ný¨zÅ£Ž&^U¿$£Ž& ~ :Ô(ž"„@"¤#”û{”ï+�L°ÅâZi@Ò0‘BVx +ÉŒû û”DÜŠÒ Tþ‰ÄÆâòP]Ã^ u(lì�V¯€”:g¾64êŠT%À±F/C!ý L(ƒ4¯Š‡Ïšk;%"¡ì¯9´2:ÑÊ�œø(PŸ¢rÝ�t8‡ß"…Áà‹ŽTŽAÓÂÂÑɯU#;pnÀm<€‘Þ^›*U‘ÓZS³DS»TX#åYäˆ�d‰î0ÀB¶ÖiJ‡PXc¤¬*±»f#Çcí&Ð"ƒMp؃‚‡øHç`ý9JÓ;P‰°&ªÒ¤IVD‹ŒH +XqÓÀz!ñ‘ÀFa0X¬¯’Rðrp“È䔊–£h,ÿ<C ´C€ßÈBp$êlÕòЪUl‡Öò óV~4pªPwqP×È.Ò@æy$Ð,b£^nE©2E껊(²ÛkÏôÊܘµ@ô±_˜Â²øµj• †Ò†µ"ä�f¬ÊW†ç±2ä5âð äI4,90¶)µ®ëüøV¿+â+´.L['åêÓîÒ„üdÓÍ 7ž½Kã}ïš™ÛYFA0f¤ŽlZNMØeÿ—zƒeç¤á<Fø ¦]{€ 2€ïdôÀMh¿ÙèxÄ;AôÎúûJšËS|ÒPD‡ÿó¨ÁùlšmÁ†Ô]úŠÌ«½OÅIØ<C¥»6}‹Ç?ÇqHƒƒhHDÛ|yjØ *{{?ME‚½ö8‘Á: gÄà€ +@Z‚U¯}Øü«¸zÐï`¡cU[À±4ìbdƒÙå‘>UE£Õú`¤<¾Ðç×Úèkä°$ÔðÁó,42€Ìú_‡¡.T•—! è#‘Õþ xVñÔj(ˆ)¤dQ(þªÊ€âh¤€.°‡Å6ø'¼b¸8 ÄöŠ¥õ&DzHS Tã°ú‡ü:‰á‡‚‘ÇF¹¼ª¨Ž?�å‚`§�u=ø«>ߺùŠ üR›Ø8V8b¤Xl×Õ°¼b7ôÿU#=äÊ0°cÁ_ulÝÊ-Sr:šB3]ÍÖ£Lf ÔŠU\`J= +¿vÊEÇÑk¯œZû†ÀH¼:ó€ÆrÛΫž¥\¸¨ˆ +öº™ç×nh&LàG+óûâZ–ÝŠkqpOŠ°G)pàydHmÌ‚QP°9ô¦Çn”ØÔBrÊ«C‰#EREñ$ºu’$9žSü>l‘ÑÒÆÕ¤ nä‹ÄȪ‰õ´–:{µ™ÏÒNt]Îð”ú¢NŠ•‹¥vBïÐÞÕõšŒnÕö–у'¶¦åP >œ™ÛÑ’ÀŸê_Çé¢ù?Îœ¹é˜ZgNÍÀÒb(£ŠÚî» Mþjͱ³V¯CÕpÍä3Õ½þRû"5ýc¢}.É]Ý÷ë™ö)\†?¤yGû.3+¯*óx®Ì¥I’®/=×<'VËåt¤hû¥}×Zz øB ái4ÐüNOF`_è +àW4x¥LëÊ ÚCÖMª•…Ø¥ðô”–ëû{O‘¶Ô´½JIKéÌ֨Ϧ zÒÌyƒgxºÙ$�“Œ'áÑÞuðÚä¬ÊóÅLF«€Ùù Ó„r#M‹> ·Þânk¢²(Ú;Au$MäÄðzlDÁ‹Ÿ@јÎ4å ea/8šòŒË¯u¸Ãÿp©Ìh:¾Xm5’ç•ù�t@~Ò‘ÿÌæ‹êg,R—ÛS¼RúEZ è#îhž$åÑ(ýçR^siGõ,‹ßÕµÃwöíÇq»ßÙMÈÜÿ #áåꉒåå‘Øìâ¢Ú�0–IÓz,Öååjf*½°’€J¨Ng«Ù/‡%F²ÜÁÃj²ä|:‹Ïe /ÓãolvrxC&ôÇÐê (yÊÊRžét™×“A{Ú‘ÕÜ +p5 +\®©Ækø Å¡…·55À¦Æ´†)a>NXEô•R‰ÃbÇ"×´ñâd~¬\k +l€b`7õ)*b•Â¶»ré´j'ã@‘?Ç£ øì“– ÙնѳûoFñðk ÚýÁ¨3—•W·©_áŸå×™Â8§}²h~‘æ‹&§†ôËF6ÑûŸ‰¦/T@ï¿ž;Á¤šJÁÀD0æ±H~Ì!-ôÒomãd:ÙWemûFSàÇtŽi› +ùƒºÿ;[OlýQý:Z#ùÁÿ°'ÿM=øåè¡A²ÃæµWàœü\Mö÷Éap!ÁM!ÐëªãXqüÛÇEæ“úeªò_¥‹î¿°5þÉÃ`1´ÿíº˜¦¸2)ªNõ¾¶þ1è ãö°øsU0MÐ5¨/£i¡#Z¤BþÜ&C} j¡pÆpjŒõqÓ¶ËüÜF +~®½Ðu¥i~v[|ÿQC¾Ó¯¿„ÉGº®>]ÍÛrnüþ!jï_;¾j9¶”æ=y ü�8iºÈ§Žéëí2?Ù•^f)&3¥}ªRÛäî`$Ö5Vý¯Ï?TÏ(/ÍLèÚG {=üÏâ£Æ &Ky>’ÚÇåZèŸ,ßÖúß²=†é„ÐZê1MÔBÿâ}×EçŽë¹ ì/ިɴü©þÒÃÿööcÅû…´z£ô³k3-ãÁ_èàůR'%ÿì*Œå¥Ô‘–Ò÷ÖCüÎzX;ʪÓ1£N¬Õñ endstream endobj 68 0 obj <</Length 46787>>stream +¼hšI3ynZÆ«êk=› „¤¬¯˜Ú›QKi¾k-¨©7t�¶¿â,ÅPÂ^\&ÊÔZ7éCÐZ^?v;9–¥Ùý¤¦‚j*ð!ìº$GôR]+LJ“/Ò¢¾æ¹é’4UçòBž‘M ùÏ¥)Ý,%¼ªèEƒ ×çöfR§cèã1ÊS {µ˜M’ ŠÒåÕ®íÌ~üJ̓ڶQÚñ¼)¾ZNM5iLÕº!„®!ªÜ™†“i{8]-§šEÑ] ƒÅH¢:FF1ŠÀ?–åÎ`56Õdð}¥[‹þ®…ØÌš¸³ñsiÒ¬mn6ÂÞ+Ë‹þº!hhȨ3º•ÕrZs¸Œ¶œ©»®Ž4YL€ãÒB?˜ŒËе> 6õ5){„ršÉz/0\×{. ÂϘì†Cäêh`îE“3©½–b8„lò¨©ˆD<�˜X`Šƒ®öCf5 +äƒ&i+JS<ÇÚX²®ê‡›º2¬Àï«+ÕVV8ÈUýþ†È‘Co4˜È¦%P(Ê€"?á'4chÏgV£‘:Šn�)hû—sƒŠpUiÆý< F×b-ôª0ë nûƒv¿:ŸÂP´(ÕÛdzÜ’;FÈðÓðLr<ïÈ[«ÙzæÖ”k”KhST9(»×Úzi¸´†¼^ȦüîÛˆ/4ÅŒæp/f“f£ŠV/í*€éà$!kuºpãxíbîf¨%`{’õú¾à¦éõU«;uä¹o·—±=`bý Šè¬3iiºL:Ó?;{DWÆÈ·j…¹žþ4°Róy 5ž,ÉéìëVwj“Ÿ´G+~Ý•«»Ä!µšmh²`¢�L8!÷¥/ƒuTjàŠ¨+_€·›Â(éÃÁ…Iç!UƆ‰P#ñ©R¤Ñ¹;¦²Ï‡<¶Q¸Ob”ú1Ÿ*Å~S)î›JñJ©Ï±P0Èî‰Ø-PÆZÂIäýäž‚ÝÉþ}Å´rH|†ÒnÑø°vª +Ÿ,Gíî³ËÑßXŽ1öÛ^�ˆÒËzÏl[šµJ¯¯˜H`˜—@ߌŽ.°ÙF¾« EP¢ít1yÈÊ(ª4t¼iæA»”ÂK£TÅ<Ú)U;[‘Ï–_¡cºØk“×E©[¸<ªuŠQ@ö¬,Í4÷Ð¥i[1‡v¾i#Íw£M f¦ÆÔ¤nlÜÉÕôŸ³é| ÁöšyýüY]å¤%¨¬÷ÊçB»cr7lN!çSZHíçÜ‚©â´ÍïÖltÝíAVS™Ãfz§#»@˜¶¨F}pd]$ˆÐT‰jQt»ñuhç(ó}‘aySKI“öŽÐ\[¤ {©=…ûsþá~0^íÎM¬¨k)p˜@ ”#qQƒ’£õ„w’˜©ó�Ó/ò|Ï,>4ÐægMôpp³ubçìÇNÐM@¶7ApºØ‰Ùb"ØÙè”âGÐ0Î1ïŠnò@�RƒÅrÓGï|‡Ž¼ºYíŸÁ\þ‡œT5JÞ_uÄmD·fIv4rY“g«ÑB;Å qéL¿¯\óM9°þ‚_×™‘ÊØ8éó;ÞUí\KÕcëuÖäԢÍz@àmÚò£ Fê\›2vlb7–TKà#;ºöAÛÓÑhë\ˆhÊ|!Ã*ÏßVc4t?jÜa¨Åp0kÝ4ÔØ4_ +› +ÓV~Òš6úøÈ>5Ri –c êãl'-ø¬7ú[P¾¦Ý®osY»–{ÀÇÒ|¸0‚ïj±ùj!¹C²¬ö¼zêÎt+·7ƒŽ< ”§ÀŠÈχev²Œ8£;î°UÅräï`¨Öqñaô°˜¿™†?¦Ì¬3ŸG“£+5ëo”]—ØÕ÷³Ù\;Ð'�F¡®ô3Iíìi�§Ù¢Æ‹{¡´Û¾Haš‰ðà £ —SE±"sr¾!Óú„ÕJ¬ðD:¦ÖWSjô÷üp'@,›žÝ9šÚ®íêë=Û}¨¦š©ÙÈ`[Ž Ð2Ïa½Ø‘ƒÞDãS‡´]KÙßt#D“GÀI¬¹Ž¶ºîØnõhî‡ãñ0D{:ÙášÊ¶@ȵ×B™ç0ƒøÐóŽÄl07›Nÿîì?TMêˆÜ…P3å”Õ!Y@T{þƒÂ§À|ÙòtPèr#ׇp_·qÑžÚ_÷k%ÓžOga– ÂPW”ö·ïÜ53û˜ +ܺ#&O`”tHïB¨…šUòCÉEàXOoÆ1e€È/aÂR¥&~ŠÝk£Š‡a–^0ÐÀ´çÓÙ ÐO�÷å°¹&äGDá´|Kš/ô£ÞÅؘ—#€—SãáÎý°s„_´©ÆÀëj«©Æ®QÔ,ýÑa•‡afóîtrHßA°wÕÉ]}´� ]æ;}pE¡óz £þ‰Ü“6f÷�µËT{္™Æ5"Ûh¾BiÚnÕà} Äò.A y ãý ¨Ûš;±é¡ø]zþÏ™_7sª¶jnôíÑzø.ÈÞŽ(`œb7Ë‹»ús‡goCŽ³ƒ�p-¢k5ú.Àé¬}@« €ÅG�•rì܆p@ó‚â‡Ý–.>¶ª»š´H †QfDžǨŒ4™¨;Bv²ê£Ð =Ö¸KÎkÝoÂyq@<Ý1=9ë·•ê“Ëô…ú 8oNãòíò!¯44;aÔù³öøëp?k5€S| ÇvlWÁMºÙÎõ¬»™©þ”GUyÞ•ÛÛ3è¢i2ÝÌæ™4ƒ}3ù €iö¹P¦xþÐÞý®¸Mn7‰ëFŠvÂáCSÎIe2³¦›Ì4‚V”غv–ØÕXkíÔ+Á›g7xÎ5a˜sÕVóŸÇìJWëdz À'Œñ8FaØ9¥ÛÍ*s¯|fé6;a~ª‰LÒ¤£ì~:´ß ‚Yôàš*„v¦é)áÚ|–.u-Íœ¿a>r&MT·‚&F+K›QŠUŒfa3¨eñz2ŸØ”uüh6›Ó+±ZH4Í÷Ñ( +Trb(#Ùæ‘D½[¶–èÐ¥Ù<¿%Ìv&W‹+±¥8È”Ÿþ*÷«~Æž-Íþúë/³Ùõš2›Ý‹Ùì,XÎl[JWþÚüP1S±ùUž?Îçð±çŸ{#ðÃvþX„l"&gQ}ì}øÝ<¿»À‡=¦_Ûù|¡Ç-„.àc7ÚAøØFqኞNÄŽÕ·.øåŠÀÇÆ™-ëðǽà·YjYÛð’¿¼—°t:9X4ðU”Mùk¾øá#Ñ×LRž¿ÃÇkøèK¿Fßð‡þˆl‚ê·æèµE5ãØñæ{&Ù}ŽüÅ=p³~ºÕ ,™pj÷Ó¥7øªñÆû–I'Üàµó9Ý:>¦ºŽœ-U\Ñ/ˆeˆ™ô™ 1ß·šûT*O—©Ôùcx½!kýeŸÏcWô¸†ïþJ›}‰@õ¨ýqfƒQÃλî*ç>à—š¯çsÀ«òÙÓD/Aiðº�šé(¾€×à +k ÂÞ©4Á—|mS[IKâª~!ÐO—~2›¸¨Åk{"°2°>NïýÅ“Š#iûôÎM<q¯‰a°ã½ßQÚ`�9ƒx5Íï؇ïññ´·Ê„3ù +ÇÛ7ÉA$ô¤Ë%2ö~Ñæ=éRæ’£ÏWí¿þ +E³'ºœó +‡&…`¼îM’ƒ^gyfãÇOQJ^\ðé‡n&^¾ Å®‡áÇ䵡6åP~‘«¤[„w/Þ[» 'ß< Ÿxõ˜ÊwòŽ3[bщkkñ|`Ñ¥ãóvžôÅg8<,W@¹4×Wæ¾'‘¦ºÙ89÷ybIG+.øü–T×÷D§årÔØ¥¸/ÿB2ü—Ùê"}f+°üfK'÷f6§n ³ó¤Ù|QXÂzZ”¾r¹Ÿ-f×åÝ»ÙÝHÆQ¿eÄ:Ÿá“5㜠+Ä_Üoä‰-\=~òAÙ6ÛÍûsÐlõ¦.Í甧e¶ñ`èÚ#Ⱦ#HdÍ΋ѣٕ®OÍîbÈoö\YfïÍËÙ÷”~3û[>—9ÐDÌĸze&¼l¦Ës3½ºæ̬=\0s^ë‹™'›s³+Óf1ÃäÌÁkó‹9Ônƒ2Gì·¼9-TÌ7‘ž96!=æDÐ2'MsÚ>?7gªï1sÎ6{2ç+3«¹è[ÅÍ%ÉÖ4_^x\æªË›¯Zñ¹ž/3ækâîÚ|³z³˜ï¦Þ´ù¡é*Ow×¼ùåjôd~m°^së¦V7wîfçæn'Z2÷hÚ‰œy¼7O+þ¬ù½}ûn^z©œÅœ—Vë,Q¶ØV»ÅÙ¿»¶x’„Å·°½Zˆ²²Ðdy|f³°oÁ‚E¸t8-¡àäÉuHaKl~ÿnIökuKæ¥ÈXòÏù‘¥ô”«X*2c©®&–ëåMÃrO�<Oñ‘ÅÒ¬››–ÖPî†ò”ep Œ³gˬ*䕥㚳Zêós«¹è[]ƒÖÕWçrV’¾¬¬öX…±´°†_C]k¬öö`M]*Ö\ÈXK·ÃˆµútÅXoŸõÞêrXŸÅ™Å*U¥¹UîÕÇÖ7ªøvf³Njɾua÷Î-•‹î¹Ã›ì{^²ýs"T|;gÍ×ãsñ©ù~-ÎÌçÉé8ÏÑqßyÙsËž×¼‹Èù?˜= +ÜTÏ¥ õñ¼[.öχ¯‹Õùl™õÛÌ¡UäÌf³ß]–lž•ãÉF^J·Œ{láK{Ô– ºu[¶Õ·•‹—Îûc¶{ËòÎö2¾Û:oÎöÖ|ÚfÝöØnîHŒÝ1ì\ÙýöñÌÎð–=X%í±AÜyf³g¹›¢½|7œØvoÄþp•mÙ%bÀØ{2ûhŸ¤nýö•Ïuë°/n}Ÿ¸s07Ï~Gè*ôäH§Œ#_©wÕ§è…ãvàœ9^Vý²£ËÝ{ãR¾éXc@ÿ9¢³Óßȑ7aéLgBwÎ2ЊÎƤnw>=Img§0+9G ‚s.E‹Ë‘Û®@ÒSuñ¥RÔuñ²ð»²ï©…«êv\w…äëuj.ºÑ âz ¬Û–z÷¸ýöG«›{N½»/rÌУÏe÷•}*¹ï§ò‹»5’žÜÃÁó£{9m>z\®Þ³‡¦MO(giyR¯D×séM<·å»¹G²,lž·²à÷,-5þÌæu6 /•É_zþé£7½È¼•öÂê½®ÒÞö+öŽ[Ã[ŸeÒú|¶¨ÇÇ}q_üòýÖWu§¾ö‰ö½>Ý–}Cï[õ¿'ñXösöÖÈëÏ�ñÆyë¿)…ÏýRñ:ç&£€¥@‡¾Z:V6\å^•à’<\^@ÙÀ{õ¥E8ñ0A_[‡Ä+eˆÂ²j%nz©[¢uE³ÄÐ%mygéÌF’—®�©»úd^"Êäõ”§È™œ’“\õ†²½âqx¨è4=¢ŠÉ—{êÎíÏR ä©÷’ÕA»Rõ Í1®W:ɾ^ÓU>Q ŸÅóýVê Œå¶BœÙ˜À2éa"aÞÎî=æÎ}¾däûó³ Ϭgè^²â-oa³É¤½T\lÛ×#Øw¯›çÜîÄ'¯9.“Ô¹FÞäZ#çˆ{ïí¼û‰áxÑÕÉ�{–})Þñ7QjÈwæS7¿è@ÛR®Ü +á\n&“ Fxˆ†.…A1ö&Z+1J¤äbULØofâUº_ås0Þ…°7èÜ_ƒ‹è¬‹lð^îÏ‚ƒF$ufGÓ“ÌfB©”cj¤žK¡ÎmÁZJÄm˜pZÙp,ù6Wûí|Xž\á÷îÃkÄwqŸŒDÝWäRê·#Í›óbdV`é¨7[œG#©Ösô²èÎG›eÐûÑÙ`f¿ðù’Ëèåüù¢2+U/¤Œ7u1ŸIb,PÉbqžvÄêN›9ÖgqóËó0NKƒxºsß‹ßön»ñ7‡ÔO8Â÷„xµ'Š3bžxId‰Ù¼í9³%ý—n:§JÑd}¹,$»ìMêünÕIñ•ËEªPñûSÏ·ýxjöZ®§öè Ü®ôõ“9ž¸Ç÷ÇíÛ" +ôÅÌ¥<¼Î´*ËEÖtE²¬OxÉæ]—€JöÙÖ.gß=®yŽ‹É\ª:æîúéhnìõòÞF1š»\oùëÇv2ÿ&fç׊º,De«§PoôŸý9ZtVÅÈÃËM„"ЗƒeÉ)ÌïK‘&•8³•êŽ¸»Ô¿y|+»HóM9:H$ËëU~K„Ì—¾×¿ŒséÇË[Özy9?¥*þr&TI½TåѲòVÞÓCG•êKÖjþâiUm._–WæçîêJÈL-WÑi;³]u=œ«æT‰ÚýÆ×n„ÀEm|y]¨dûu=¨µê/׬a¶<yBã"ܨ•FoÙm]»Û7ÖëÄc1xýP]]Ï¡á û!oÊýhù¦kO¿ÝºuæÌvïu¯o›åvÞ¦ï¸ÜóÛ]ÅãÝõ†åö½çõœ¿O=_·îŸ)áÁ, ºÁ~éâ¡á NÆiWé‘ì.ÜEº÷òØyiEŸ\‘¶ù)i<<=µfÑgó³ß~f{][Ï×WõÒó´1â_‰³¾TÌÝ—ï¾nú¯¯Óͼ“ä›í»¾çÕÅäW¯É 9|}y\¶¥ó|ëIºˆÝÜJ±j]Zå«WPZmÝtnª¹»Uk—Ë›3[»¾ ÛÓb^êpÞÞ[çªMÌ;ã›G—ÌV®Fò(ªuéÜ{»[¹½[u‡ÝÝ£):ß«ÔíÍÞp15÷é«I¨_ Œoú£á|>`ž\¡ÁÕuðq0¹,ïó«¶óoõ'ÏømÖËG†¢}ÔÞ¤âüpñ6“Fáô•0º_‘òØr7ŽŽcáúxüBe +‡StLÒòiÒ‘©—÷/§…};í·¢áET¬³j½ù:›zÌ…3Û»ðeßoó’en¦ýò<æ¾™7Ý|vá²uÅÿ]Ï>íˆWSèìáGñ*sQ±?z·GHºóh{Å—ˆÍ³ã~°712f¯Ó‘HþÅ9wKsÖ`ì:-3ÁÒ“£›¯Ú|&M•ž±H½¥z^â<zñ»caïl[©À™-*™ç*Pa™èå®J±0#×A4m§ü~Go‹T©sèñ©Œ-È?d—©·çóàó‚p¤´ˆçë˾'ÊYW™s~›x9nÏl©.QhíDv΋]þæêñ)ÞHúoöÕŸcáaæ9\øÇž”׶Ê8³î™ 1+óÚ¬¬RÝç[†!wÁn¢¿LöùRÇŽW{ªM–Þcaà©`< Ê‹äKïe +~Ùßa$cNø„·óxÝgà:ÜIÕ™M|szÚé6{åLö™f(·ÑvOâÒû +C˜k3¯ÜÑ›‚µüvi <én©)“D@âçƒó×àà¥ÐIŒlßÜó´Š—êöwXW,T胘—Ý<Ç⓶c쉔C Eºh*H®1¶S…Å `ïù[šèÉ€ú—,Gœ>¯œñÕ1nÁ}ÉKæÃÖÛ´WdA”Ê?rÖ(Ÿœ¾xÂ7Ç Õ²>#´Ñ‰ 4(ʹ°K¹[îjùM]œOÍ›N‰ ŸåT@ +Û3fÏÃRáà‡„œÙˆ–%Ï ßžh&¬ü +ߦ‹<éM¿bdÔ=•¢{Gx¢Ñ´—J]ô" +žÛH8Ôy»|A=¹®0ÀWI° +�”(¬+ð¼©�éŒÔ Ì w¬9‘j"VÀ—ḷv¼‘zó¤ºâ{Z’ç ®u}Î¥šÑx£ß^Æ«çír¼AÑ ÷A|oe:é»×‹ÕšEXjubú2Ü FþyNí°ûiª[Ow?ZÉå‰ZC·¸‡ æ3[ºIznÌ]!›Ïû×L°|{zH`stžÛëILÅ#+õ ×ò]åîXˆ +ø/žÈÊ™IÈQ`ƒàO–`<Q®5…KK¼QX®¶YièI ßÕŽ¿››á»ÐcïþAÜȧUM”3NûÌ•ìsµ‡t‹»Sò|î%€+‚Ù±fF)oH$maßkŽÔ¢?•ã%<öq‡ +õ÷q1^yI”3ÉnA Èb«“IvÆ÷HyîèƒlbÄEn7¸¹e X¢\Ã1ÔáÌj!WRÙ¡M¤®Âh¢ƒèo§Ûµ5µÁ/ï2;³´DÑb. åÓnr°pP[ú«”ËšÏmZ’ƒö1É5¯²'Rx(¨D{O@Ñà«äÎ.›q¼þZHg#è:r\¼Qžöb7¼”IWwg¶°‡H?Ù1K{§—TÆÎï@Ÿ¯Ät{ønW 2’°b¶?:J@=FñÚhæÖÂ]I9 þ_ë»ýñâ}}üÊ +W¿7c Þ^I–Þ¤Îd¸í©nÜñ¢³µL¦é2÷Q3€ÎÈ`H±-ÃW¥÷á÷¡ÎÒhJ»ÍNÓÞF;¸xuöݹ'áhôU™\u`Ó̤‘*s¾L8ͺÐWØ–ž{‚Áå˜-1*~ØW›ñÉ7»‘ ž}˜\Eç8 þtD‘ìÄñ¯Â}D¿î¢àÓ¾#{À{Õ”Q %¥`ÑÙKªßÀ/—XEeÔÒ*ôÿqÎ2�î¢~½¥0†TÈYZ[=¤Åƒ¨ŒSFšÊ¯K†”R\%X9€QAUAÍDá#ðlñ;j¢KY¤Ty›h)Œx© ŒÎÇMé²@×àÏc\ËJüS¹¾Ò°�óóÁq©by‰¯Û¢ë¨]û‰Ž0tj˺#(sVe¨¨þUù¤c†Û<byA’)ëê€Ú²îK}[ŽéÔüKm•òUû¨ìŒÄâÁ\Ò¶j#*Û2©ìeæ7â„ÊM›!ðN¦"Ùдy–Q%yG3q…Þ…¾6Ú²¨¹QQˆEý²f¦¢ïUÌ;ˆ×pb×PQø‹Á RÜÔƒèû'X}œ¼ –ßE‘$ƒÆ)eÖ¿)ƒ‡a/ùMbˆdJ DÛÅUÔ_¨A°¸¥`L§³+ ÀßhÅî‰ñI¼Öí[YœF¼qSœdb$9<³emÙ&pKX'§ñMVW¶p¦¹l¸c!¢jö¤oîrª)ókÜ W`Œ’´pg6`÷˜`&4#E°œ¸~®Ç½Ñz(eâôð¼€â�}ƒ<(@8³ ÓÁ§}Þ.“*^¼3Z*‰¦¯Mê×ñú2?N{J§þë(m35¨¨¹6Á&l¼Ç+ÉDú0Šw5Ö1D ÐÓ·Tãlð¡öu-Î?j©ÂÜýºAœÍ=çãÅÛ+à'+5»¶ ³‹Š<W\¿—�fûÉ¿Žü‡c‡Ã‘ô.ÔØ"ãùëg¹˜ê^-êAõˆdú=‰ýmš²<†ö†Bg6m0´‘PØ4aßÅ+™ÔÛm39xã¡îØÖþ›<‰¾ò|3…•ómü#Åž7¨€$+ÈþK‘ç^ÏDS=Ÿë¸¢£¯ÀQ«8’}Ï}20ˆF‚J_éù¤‹E†@ìý™M 4Œ¶ª9Ä~@”¶ÂɃ–yE85ÙTØ£XÎ7 šÈbãÿë½MEÅ¡\L‚u<™×fTLeïù.ÇÓAe™²í•ÙõdR°Œ¥U²¯W©îµ'KÈLŠruÒx¢H•ô:“"V\/aûp߸â3/Ïnk&=Y½R6q,(½öž¾]*$®ª1Жûñ¥à¯îmñ«ËúM&åê¨6Â>µüpÕª¥bk¶‰‘sÔÃôK²ÿdz¢ÙfS•¬g?èA11,{€k_ínÆlδ¼$†Tļù°ž ‚ñˆ�BJ^Bn?lf;@Ä·ƒö¦˜B[º3ÿ•çâFzW 4øX¨xoác߬Ç]‰×³7Ð/‘9»6‹¨PDœ+J†"×E€»è/V¨“Å+ T• h,ÒÍÙŠ…®~Í$ÅŽ,¡îªúo\K÷€@pDdžb4¨MηÖÎÆ Œ3›8ÊL»û$†\C6ÔÑ«Evä襵3Š‡Ç/Aqq{ªÅÈõG¯¦"pôö€$g\ÕQ(“b(OôþÙ½ñˆ(_ƒ¶¤½‰R³ø ú%ÊV)ãC/Ö&ªÁY2“¤25„Ï7{ŸR»PLå§Côå—WÈÏ…R¹l*¢hÐÛÍ<•W¢ÀŠéK&QYÑ€ÕµEÚã溋µ‘;(Jܹõ]ˆoß¡n®Õ‹ï2ZTXcãØ]lÙÅ{ï¹Â±Ý +$áqú² úï!”’g•r'8k‰±ÂwTªØ([6äù›Q©ÝÅyºILžSÝFª{fK{§åUœÅÓíêÈep—”™ÉžmªháË›x£ƒÃPômW>ìŒÍ}â*^žƒƒ¡züÖ úEãÞ`s �‰)¹ƒòti†ú#Q*ú>Ü3Ã-8òæì«U\hÍz~2wãUÞ.þXãüÝ—qNE—áÙ*å© Šµ}…U¾ô%Fc¢äeøÀEƒ•ûXh&’ÛMSà`¿�H^¸šº÷!`§Ózßyð¥ñÁ‘IÊÜ0ÞHIdb$X‚ò¾bÁÊÕu˜FÃlIZŸˆ´ïÁ I•ãµFì}[6¬‹ä R^Ä‚›Ä]pwÙäeòæbírŠ}áÃöc*ß®UÌ-µÜêø«â*ã,\”ÄÜSf©8ÁJ'ú ¹Pñ<ÞMõ¬Ïœù“À¸7¨×‘uå)ºÇ°ëÜÖ„ÒN·3½çk&4ìçõLÓj¯ƒöyžÒ/oË6šƒÜægv™n%ÜÎ3[°ì¡ã†Ý¬–‹ümI™¥RÄ¢„•°úø´G@rÖL2þ\ÄXþè±”·Á®çqmÅa<݈ób'2¯‰1hd‚Ø C%—oâm¬Ý³ ¢¤‹a,ÝÂ}_¾…œ:–…so¹ÎEžÇQ-UÜ<§ÿ Ræ/Aø‘žjÇ›BkX@[Áø¥ Dx7(‚¤`¾Ì¸î«ËxñžìhˆFŠ—Tg,zµk fN å+ÃÞFÿb%<}í³š‘º^½À +×s9}KuÅÂ(ÕrlbéuÎÄGš5Èè}¸”¼LžRÅb8€]5êªîˤɮ3Œ×,j‡Þ:æo¸H&Mp¶›ÊK#Û–þU]€7Ï5¨Ký©bÞ’ÚR?€ÂÞUõ>#–MÐç“VÆìö’ „½†eD +ŒúÃAƒ–v;]8¸äü‹ºv³éWß&„2Îü8.öŸ.™Tµ\ÏØfP.·r/F'˜ÍXTÜ ðkã`¡5¼8_·&ãàß\,ìó»vR@ö,œ,~@iz{ŒY‡qÆ™¸N;g¨HH#³ˆ…÷õ�¸¾û½Tê¥åê6v¢ …™‹ñi¿âÖFN‡F*{5â;(øëÉ÷G´ +�ûŠJIõìSÖ–}€¼Wàe)óz?vŽ\´F ýd.VNù+ý°Fj£œwšq»¼pƒ%b#´Ø’Åö²Ç®µ-ÕNA\P™×² à·dLk¶gnÆYÌŠÚNF²zõd…FñzkÖÅÑ"ÅYz‰±ExÓxJ±Üì]•û‚¨ÜÒa‰]UªñúêšÚ6(ì<•Àl%Æ †#.óZ¶‰û=€J0\+wJÖÝÝú‚8 ´ÓiÎ÷\Ã~ûœ–^ó–ÄØc×hUÆ4ÞÇÅåèéfÝÞ€L3î¶Z + J· :1ç~.wþRµÈH}¾Íwûj&'˜UD: ÒÖÄädì€õ§G‰··j,•ï\-S§3—AóxÝ(>’ÆÈ5J/íy³J¹°Þø¶óZÚåÁ*nìÜÚrç_¹›ÀB¶Ç¤VVK"ÿ˜ ƃÒà ´ÁË—Ö*óúB¡ŒÑëÅô(Eä„FýÃqŽù`#†À8Ü9S]ûÌÊ-‹ËH¦9òtT/Þè…›¾xêp=ÈcìÚ5¡CÀHqÆᘊäm1²‹%Ü6�º¼t[¸î,©báù=%‡_,›C>ÿ+LtwÔÇS€¶*öcKò"®r¹LsùìËÄrC¿Ç¡‚5ŒTiŽùú çÍf„ÆSºÕˆß¦z¬}`Ð^kťꬵ•ÆzJé’4ê‹3Z‚LöÃï™x56–«©~jãÞI±–j'¥aÊ=´ù0–ÓÝ|z==‰@ê`Ä×3Ð6Iê^ðÇ,R[ˆcÕ¾ñšdR«8Z–¼‡Ã—ÊLâe`?®Ä0ö)Šc(¸úªÑÙlÜÀÚPAzeI°®L�è±N0ÕÓhKå{êpYáÝu¼6-½rÑw×P2C'áRÚûœ�ñ>G7“³ˆYÀö> �Ç¢ïîBªu'×Àh‹æ²÷ÍÙ+Ò‘ë᳇óëÎQæ #@û2Vn~•»�®ÏPÑÅ÷ª’:;J]9—PžÂÜuµ�#õÚ›±‘N7_Õ¼©‚¹Kh[€g$wóÞ#“±•ø ÷xOg<ô&©îôÙƒ¦ŽvÎ_+ª>!ÀÙáFv埽ċ.aÓûp€#Ý^Y^„JŽnˆ´·Ê4½7AC[Öxé©Álëñ¼&{ýŒ®zº*¯Ì¸l|ú¾ÀÝ•ÔóàÞª]Þ(€`Aº)oÚ¯£¯€ÿ[Î8²¶Ln¼‹@€t{îO<VVKy´<O·[ÞÜEpK](oÇ;ìø&ô׺™îg>zñâ$ßQgDØŸŸÆå̦r팇b¡çë?É7ÈÔsï™ñ~}¨È€¾¨vÀø„Aƒu®h®ÙlGò›íâÍÖ‰šIG:{·sP×ÌE• “󣌻ýž"Î}dÞYsÒM‚˜`lîþu+gNm$ÛW˜¶L•<¶Ðl…ӦƓ¾ÈåÕh9˜ä¸!QT¼3mɦj*£œ„ ¦™ñˆ¥–ÎæÌ Ï‹„ö4™JsìpÖ%çc~4Z¡Ó¹IÉ`ô- ‹vžÙ†'è@›('qjúÇß ¹ïôÜ®¢åédÚîϧcyS¾8Psãî9ï~tRôC”³sé«&¡´’¿ï@–µ &ßàÇTT +@<ö +V«ROÎLK¡BÖä¼Y{ñqð%àƒÉðØ–Õ¶ÓXî‚Í�ÆßÊ-˜ýîXÌ 5{„³ÑCÂ$ÍeÓ²/›”O¦…šôò¾<1-pÆRibÒŠ0Ú—*-àëÍSÓùûQvé%B®Göuº2ÍF ¹3€_iŒ®' &ðx´†×ˆ‹N@íMË)DÑ–Mt–Z2¤¯ð–i†S2C\¬Ú}X½ü$…ÒmÐ`jÀ ¨Ý´»!?X˜V“ሿÿðÀ„j�2 nϳãÄ|}@÷ã.EÃ8q8‡‰^¬´)Lv¡EÕṁäÎÁª2¨]JƵkÚ˜ÆË?¢^_JÀ&Ì“Ç£O9—¯‘‚4•¤4ÃwbÔƒÕ»³]RjFÕ´3©Æ§…îm2V0›êd©l冚¼:bz ½É‡Yü)–ûHz€ÖvúæÝÜF9ë`/n2á~?B3�@·HçÔÓêú]öåHz˜¡É餣Mkµ'¥‘QFoåÉpöÑM%1Ý`Ä6…ɇ†}Z™8È@(ÒRnôWãÖDŒ$šQÉ�]Œ:¹¡Ïƒµß¢`ÑklÝ‘wXî ôbGœ›Ä¸(/îþœAZnH¼ÿ¡{WŽµN9õu#×;S-µ;J¦—ª8LçÃJÖäG0úNG\AsH~¤&Qr…A†>Ÿ²ÆÐûà;ö—7`úžP×nF J—oM¿V +Ç¥VþPÛíyߦSò ¬Ýšæ°Ã×gƾûœÄhü=ŠÚc”v)¨#Y½“[:gû0U}S?CTµçñö|Ú’–%é«<ÿÜ`ÜcH±<ÊØ)"Ÿë µÛ|hL*ÕC)òƒòˆA°3Óù窩ˆ@ `ð@N®ÃÉ£"Ö]b¢—Ñbéoo.‰rþ¿ÿÏÿþŸÿ÷ÿ÷ýïÿõâ«u§R8ÍÝù»>áR~24•€ÂÕdZZ§ÖÙʺ=‘Œ—‰mô§äjZªÐvëBg6 €›éIG=l'àK’l&€ò™Àü3ê·3Ämí›ð<Qö•÷\Ü´DÀSöy.úKþ¢˜ðU^¸ZÿBBôEc™HuÅì0gE¤T—¸®¿RžH뛾יÙû>«žÙ̾8]2{Ëw7f×k×oö¬‚uø˜2ûˆ2E"÷.D™5']WÌ‚Z”A½RCæ¢ò¥-pÜø‡A›>7_‰\SNÎçÑdçÌ&¾Ö“ÐC)Hß&äZ¼]I6Cä²vVéT2÷ôLºãüD¡BŸC«@[\ó9Üç4„“ŸÃŒÙuù š½ýA_ÓœŸo:¹i\m,‰LÜ;ëÖPÓ2â¹¥‘ºð„J\œˆ€¯Ždê!3|ˆ1áp428=¢‘g¶ýç¼ÙÛì”Ìžg +ÿò ÞÑçûïÌv\.–ÙÑÍãs¬ç’R¯ðxl3P#Ðf©íf¸è\Äì8j°¯ÂßÝWhàp3"-ÐM—…XQ\D…\øÖŸ™>07éùÓz辑‰Ä#m£&}î WâP#Ïl;†nŸ.‰çÛ£²´˜ÏC‹ âͦŽ›±©×BÈ,o¨—éÐNtì$¢\2¶F;&a€[Xy¢Y³}Ót`!dá=ô³#Pú>¥'ú4.?]í&šå_Îll0ÿâßÕ}9¿,í%Ê ŠYÛn¢a³s¾ mó QíxYUò‰±PA÷.¢‡·ìÛC”í;%Ç}z7QÆõ—ͨÞî¶Z2/Œõz6*í"JdÅØ¢œõ|2wE6Dá°†ìý‘é^ÖwÍšÃv²Ðlì$šÍQ½ì=³QÑÆ+"¤±•Ö÷êíüi-A¢®í^uÞÓ#Òˆ2ScŸ>—ˆ„B´êp€~Ñ“eÙqs¶hsþÜŸ4öIŸ9'w=³Í_.^k²z¢¹sÚzÚM4l~^Xûrm7Ñ«¤+ú~>.!¢@’õd=¡Q0º‡(Ûw_<Ä*»‰2÷÷DF$.w=³Qêñçµ1UÙÕV"óüœÙC”³Ú†“rrQ‰Èz_oQ´ÉÀ JDÜ!;ùû½º´z/¢÷>§½—LDaoúi˜Ùý2gÂD‰÷‘¬{‹hNžr5ÉG¢üÌØÒÒヴ‡(gå‡Ì"zf3…DSDÙý,î&šÆÞæ—µDë!½‹è™ ‘-ÊušØÕV@ôÑGÔ›.Ën¢Åœ|ùøàrî$zã˜ôQèm·µÞ¿zmí#š%nŠ³ðn¢%Úv‰…#¢€ +&;+Xö2ø¦™µ,÷·ÅÔn¢åhºùrõü¬Ø®¶>W†ù½DßîÙNfÑ'x^Œ|¢€ +&{ù6WDÞI´™÷MöÛêó¢÷×Dz0.@‹¼£Â¥ÏbŽ=ûÒ€hðÝ8hVM¾©mÑ.à q=”$7"J9¢ÎÜÆî㶖ˆWw0‰z DÚ·wUéGæF¢‹©=¢]^x-5?I®3lU©Ä=™×«Bï|q5C¢þmó–÷©-M.·aÎÂa¢dчˆ"*Š*ôΘKlièó`²¨'z>ŸK $J[:ËSU~f£!gß‚ 0*1Ùà•ßÀ`ËT~m`«*KMN¯s×ö—ipï×û+r|³ùj°blŸÈ½ÚVûJ÷êMÙ÷|}`÷$¿F~“ù- à dS÷b(Js“¾ånïW¾š>íý*PîÚë™mÿ÷¾ôâØû5NÙÚ{¿–<“jóÕÀ1ð½Ué†ö–®XÚÜž¯BΞ_/ð×®ã]Üâصg º§]Ò4à¾nꓽ_oRžá|ï×[[+`V9¶ëûS*ÙûõÕöŸïýú¶¬Îr›¯[ÞP‰«½¥ÇÃLôeßWPá«»ë+æ˜@1Ñ»½¥Û“V½´ï«ÝlÏ?¹÷~MÇË-y?ÇìêÂBîû7Sç®àž¯lŽHGÜj›ƒÎqTæ<«Å…ò=é¾6^³î¸ö+ãé#°$Ñq<&ýójÁ¯3ÅS"™&‹•Obº¸Ä¿4zŒZžÃ3iöÄ{a¾5à?ž!ð¦jIøçV½a±¶bR-¡ê¾¹…rDª>E£ƒHG£û¢VÒ çhFD ,L Ž½[Õj±zÝðšžõÌDZ. Ÿ,éùêÕïÓ)\-Qçì!ÊYaœó¸›(sÿ€t²–ì†(0#oä^¢(ÎÙKš¼¶V’õd;Z¢Lý\CT¸LÔ5D;v»uCyÿk¢´½g6èÿ¯Ûšéˆºî÷ìP{‰"ïCŽ][¡÷ÿ²‡èýóþ–Z2f/Q cÐÿßÓVÎ +½ÿþn¢a³ÿÑ’CçéÉ"Ÿb/QèS4t¢$‹*yôKéWò¡36ôþÈ—Õxò!FÎúþ’¾«†CÚ’í+’§è‹hõSÜ£™÷ÙÜWçr§¦™ ‰fVsE¹Øë±ÍˆGÅkÐG%øú9; %\GS^€Ñ™+<[ct"Q1wþ†ê³) ¸¤4¤Lë$MÛÐ(cÞòT!€œ`•À¦> i‘1Ì=¥—ôå”mý§¦õ˜•9³õœ�OA*Ymƒ_j•¯«àÑ]÷•[åöÚ s} U»žšÙQPe¢ÀÚlèÉÛ]•ÒVi(æT©¹r�Á-{)Ç‘Ç>ÿÎ AÄtêy•(f:þ£TžÙ5—yû¥ê0Z¸«}èχýW·ìê?@E׃VÔÂML³«}Ðy½þÿÙ{ëøFŽó<ý–B34fK¶,43JffÆóù|fû(—D’}á¤)$i›|’2¦Ü¦Í§)33ã'…4mÚ4)ýþóofgwôìÌìjWÒåì»}òêUÌÎ<óž‡æyfL͉ˆfpÙ�BUÌÒÃ2ò÷³kø£5f쥹š|OÊ0‰¬ÀÈjô•ÃòrLÍydÞ%då,{k†Šeï5f©E=cõ‘‰%kßëlÔ4®AÒ«˜™$1jÇê)ƒ}âÞ8êä™wÑnP'‰Ã¤h +nñª”âq¡ ¦Š†Æ®ÊLý¡ù*ûzZu†&ýhΔw”Ž@i‰ºR—cdT³ÎLyö9°×£§ô-3’ßð€°;7�ú@—!Äù„=un Nj�ÛüÈ+žÉô¬óŒQ³Åa‹ì¿�=½9§\ÁE²Ô7æÑVù´)µFV5¦^wÙüº›ô«ªöªKŠ¦2&S6u×]šÇÑëqà†sÀΈ +ÉH2ÚꛣN(þMh$úÍc‘t^¤ÏÛ;i§@ÏÐX6ÀúÑìOk ²Ê=»ÑëŠØ`”c:S’ÃOÉL šŽS‰ÉNd¥k*¦HG5-F¨Å=3¼¡«˜ŒÌ/þr�s¤A¤–Çö“žõ4PËi³Z—#j—:µQÙ¤¡+Û»äÞì6è´t%¼èÊ[™éú]4›?òuÔù¥ŒçOµcE˜èXLÝKRS‘ýÊxS+¾)dõolP߉1DZ(v™AŽ¯%cj‰fšc+h…kœãºQ¡-„"–B’ë¸ÁŒ+(TÐHŽÕìO1j`‹WåFejÂVeÍÀjº9G™ìÇ +0Ö€7MZâᎷf05“éÐÓåNÅ:UËQ]Å0äÇBÅBìÓT±Î8x`½hw…ïH)ÀvD`[⮨lK#<á;2’Û£ïæh¨¨¹º6�•$êH“mIuš‘Ü¢wt}Ê ÂÙèU#F|½Q×S²aÄa l j�áAˆšØêÓ0<4üaí.¥Eó÷ €Ñ}µ,�B¦ÑŒ�Ð_Vd^âcztK!#‰A–- oêõÇ8>ÕÚ¯´ÕmxêG×Æã>9Âþ~ãñÅìñ5²[ãÑ™ep‰Á€8Üó¥/¸ÔK¼‰]âB'-jt Ï‹§95ÞXB’U÷FÊî0êT,6©C²N1’å%?ZVüC«,élUíñEpðiÚT«å(á :ÜV½ ˜+E§ÒU©¥Ó‹û,6áÍÝAqŸ¤}ÆD‹õ1¢@#^“”¹S`€;@¨" jSºj“5¥R"ÙØ4LéfÖ”æ׋P•tF龄E_eoaVô¸Ðf‡¦Vƒ±—’N»)œ5r3§þbÀùJsDï)‹i@)j•§-�Æ„.š¦Œüx@³¤è’2¢3&º-‹¸Ã(: $M¤cËâͪ,˜¿G…Þ‹†$£ë®õÆÉƼ""·èÖ×w&´jJmÕ\/â¸1µ ‹LÆ‹&ÆM +fÖ’2L)=ÍvÔŽ$ÛJ’ñv®@Q+rni'Þ +©‘ÞSjFÌh>ÒÞ!4ªD‰/¦G+0ÓaSÛ›µRšª© ɸW”~šuC¼$¯ÓäŸ&+Ìf‹X)˜`€êJ´õ;'ÑÖ„Ûw +ÆLXµˆ1U«¦$šh·z 7qW’hªÝ·Ø%Z¯¾D3f)á¸t<®}4o h¨‘D`,z;¦%šºf„¶¿DCD$š·„[/56ºã®õ„éyÐòÆ¡[)r¢—’…ˆ|.6Žß‹¾k(ç +o‚BZ–Ù{Eë¼]_2Ý\ÀMõ¥0M ãÉFĬföƒHÌ�kœYÎ}Œ7ƒ)-ÍNj2 a¢·£i ZI2ÔŽéA¦ŠÔŽ1—:Zo4诮IÎ6f.U²ªÊc´!_« Ñ{¹æ½j¡ÇW‹<ú.̓ß@Djy|Ƶa¿lŠ$£Ú°ß¨}/Õ/‘Õøí{<k"]hV‹ávôí{cZLj'û´Bu¡n.\Ôvtr#TºPc—.ÑUÚP_ªöøp�€×†è=ƒéHšºP±”rk®iUV$ CsôãkŒy¢ÞI„ÌÔ?\CF-]ç×\ÝqçJ¨Â€¡ÕmDl¯1\wïU×#B3é4dóÊYjâ˜S-âhŸË"¢Gz¥N阬ÑMMV-Õ:sµ„ŸRëÔî²)'Í[30#LÏ#V›»mJjÚ»�¢Å%ùÈš`™ZO\¶-n,¶ÝQ¿|é¥Í-‰ˆ ŽššIäYhd!â¹7bé“Æ4äÆ äâhÇ`UˆoW0]ÒFÞẼÈÂ賊üÖ%¡g!ÏT-·>—’»Ô9žâè«'§áʹúxjèô+èÔZ,ö:ý +:)ß25tútÌé 1×ÐéWÐÁjÁxjèô+èÔÕ‚±×ÐéWбՂ±ÖÐéWÐ%e$¦†N¿‚Ž«Œ±†N¿‚fÄSC§_Awó4–ºhû• ¨¡S%$‹ô5ÑÈu8åÄÍí…vv–(ÕEÅ¢vJî’~þ6Õƹ8‹�Í›?JÒ©ÁSéÊ'-ßv¸NíÙ©K2Î'&ÄOU6ÙÕ¥Ù*Àr©E¸76CExfûÔqþØñ-K_ÔšÝÊ9£ã“bJ¸ØM¹2Ãtu—\¢.ÁÃL¹Ò_/¦Šæ4Ìf1\ÙlÛzýdCQ¿AÇ#Z¹êZ£9‘¢°±fÐX^ûZaãúxâUÊÐrÓeÝD-v‹– +’d¨Ø-zÄ8z¤»ÅªÂõiÚÞ)¬{ʘqÍ}Ý(nˆ�ÉF+´Œ¤`yÈŽ:v1å]–ôdD<Lú§W!1Z'4å3”@I2U¢™N¦¶©:ÔœQë1K'1À@àŒÙD[(Z‰„Id™Œ~Ý«Ÿ6k¢†7º@µ ¹:°hÆfêø6£©Iu|Súõ/iª •višv¬1Vš¶?M«KU¢M½:¾(9ð&J¥¦nÍ»á:¾¢5ýš˜$“™©4%¨LAE;ÁD¿$Ä'Šcú3&9µLÔÇÔÍä ™Ú™šÁ\âñER¢Uϳe™˜¯°b(²Ø5*¢U˱ pûb¨‰áY" ‰ ï˜ÿ3¡+"[Ô¶ŒÕÙ›kÐwödÿE/„ŠšPmqè¸úšeX\öLk—…E)”K{|Z“<î6ꆉW.p‹¾ö£²Ã §½ËÃVÉEUoZ{h@¸V4Ê:W¹W:vdÉ:—Êo«ÛˆVc¥¶#µ+}¢Ú$G)?2Þá HÅ]ßÐÔç¦ì±FvsSm™Zñ ¬xÕþ‹&ŸÌ…wt*Ç\Œ_3ô#2If:å±K0Ò+W ™ŠÈèt)/Z…a>ŒÈˆ½$uDÆÉGd›LEdè‰ÓÆšâÈ ;8‘0&Ës"_ö¥—83Ä.$ò5%"ƒ5aKDš8"cê<%4ç±EdÔ©ž¦Í¸#2¸þ,a‹øŒ»¨ŒÑŽÈ‹s4ó-q‘ž^yŽ©âœ¤|Y‡[m,7G«C5f,û*{sÒâ®I\i6šÉ‘ü^R2†JGuÏ “52\‰-î24Í”=Zÿ¡•½ÚÑ%}|‚ÌáfÑÉaæ$JšYQëêLç®s^fL<¥£êâ:9ÉÅulÚz¿Šß‹z^Ÿ¡½2Ãõpúçõ%ªNÚKâ*â]gc±Õà ê,&Ç퉮‡‹=CÕL=œŽ÷šÀz8oW%¸~=œZZ:¹/†z8ùT £¥1ÖÉsà]ÇzâÑSúb©‡‹¶Çgl[×±Å_YÕ[<9‘ê½$ÜX¢r"û–#ntk}ÁgÔÐÉéå$bð¤VñïðÖòéZuâÑÛIH%—ËsÆ3)®S‡Ã´sàe<gfs…8Y«Žhþ‹ÁeØgʃÖ:q:0¸’˜Ôd©)$ǵWD©É&qÌoÖ_ŒÁ¯MÈiÀR+ìò‰Á{•Ú1·|4*¹tóÌôÆ-cд¯åœ=h∻ƒaá⳨µÁŠTOj\TäXBŽVšg‹Hc¯HLJ3ê„jW¤ö'¢"ud51©¸DT¤âz±DT¤âvâ¯HÅðÇ@G<¾èõkLu¦Î¡©Â$#¶šƒY†¹‚e8`>®%ζMt)‹¡Â§¸JáÌŸK)œöªLd)Ž[ðÞã,…ø•'¡NP÷zJá°®dLè¥p ÃÁˆa(ª6w"|-— Áç +NÖ©‹âiîØæ¥Öi褮èOঠ+eÃp‡kí%E?ûK*b3r¾šð˜àH5úÔºžÒ3§™“¾UfrP#«ßç=Ožé¶ßµµŠöýƒ}“ãÒ%õþâôª1OEG½t§»¿§²pPº6¼n¨~ªº¡ §©¶Æ9][[ãjÆ—t¯(Ê(ã ºÃrÄ — +IÖ…\Ü£SwV–2¬]wVÔYÒ᥾.®tº½U³Â.vFYʲVÝÙ€^±ÛŒ‹y(¬°sû{j´+ì2Úç['µ:¡óÐ@n±jU²ÕX%9ëô¡l±[ÞÀþ–R°T›N…ÝÚæ„Ç©ùÐœ²ÒE +»‚´´Õ‚Íëâ†u*ìƒõ*ì–{z4šÙ2»F»ÂnVï>¾Îí‡Ö· 4Ù›”‘¾ä+×k'7«h¹Ê—^É8/Ñÿ^ûò7K µ˜7Òbì{öò½ZåœÞ–)ª,]ÿæAVêÅŽ…)·ìYjj6g‰Û#êÈ\6_Ú#¾ÇÊÐ=] j¢}Õª¹œ+’º(ǹ³9W ¹INdýFö’u“œè¹£pÃu†S$õóaêÜ8¢20uï}Kà%ršÐLÊPo|Ñ.OŸŒ;œÆºýž£L7Jip½f£\C$ÊhŽl§«/‘Õtê’Zºxã0|5È=‹VÓ‰^ >– j:Ñи“'㮦%€09Š ¨¦ÕÒiu{5á¨u\Õt|SSëq"¬¦ƒ¼Qjétscª¦íÓ(5#‰«¦ùͪ +î„TÓ‰jé{¯qVÓ‰jéÄ5#ñTÓQ¯ÔÒ8çÊd5hv©¿Ÿ°j:Q-»›5¨–NŠ'´šN4änŽDVÓé[J‰ª¦5¥µÃ{5¨©èw +›¦KÇ¢Ú„f8c5˜c‰®¦ÕÒ¬±2QM'’‹RL)¡Õt|©IQ®q4_M§U3’Øj:QíWÄ{MT5h@`/)AÕt¢RªŸWMg̯Ôd‡áò÷DVÓ‰V¹ÞDFiƒyP¶“Õ•‚×æŽnÒô’£]Si¸ði•-œÕ·.b¹¯NdðèY±ÝW'˜ÉF#Ö…1>mädiv‰î%áSÝFTÃBö’F7ÑíRDδŠKU—¢]AËœ¬Ó)S×.‹ºD$L£ûgòIýÔ0šQ¥§iñˆ|éÅ+Q²€Þ× ƒÅ{ÍáX”‹îâ¾æNÿž-ö›½æN»`/º‹©è^ss~²©kî´ó“›¸¨neJò5wqF ^s§ÎëÓHSˆûš;u®‚ÆEwq'{HVßJsüU••½í«ÊÌÕY4ÇXY$Ú[iÖL61´r»v®‚‰êÔ–w,¹ÖR!écøùeäÊT‰zA݈‘;ô«Òp…¡FÚ¡©$2¼^wLÝ°¥ž¨a"-‹©'’<>›~PÝØ~O cQsÕ™ÈNG ŠRNa" +5f(¼n +5e,£[?3\’| ©|ŒÿŽÉnÉ滦VêŽÊ§DoÇÐ +Œ~O¢ÙZv½.A[U[Z,¬íæ“&Ð{‰;7f°Þ$ªÍ/õÖˆ0ƒº‹e%˜—݃Ŏ¤^uvÄŸOéMÌÙ�x“0!•)ì¹ÇQtn0DµÆn0DuØ$Ö_³½úö»ñÊGSæ„fV'n'îÍ]é¸øO í˜-ddwHíh\®e:WµW°Ãµ”Awæða5\‰ÇFàc\†Ño¸3V_ï wLí[|骦à w1Zã&o¸Ó©|ŒgÂVÐ"LÄMyÑë‰Þ”g=½)O{&à†;„1xƒµ™îÌŸjŽ«ŸÌM%’c#« +¬EMa3¬—8 +kGVõ½jcw=#~ÇuKz¤ò±•-ˆŽÁì@妹œ+©ê9ÙظԎvAš™Þ€Ôî\8sõíÒuyÚÑJj éÕ]†%6·KlQ˜´A>Œæ2Ð[††Š˜ C£Ó4&Í^Vbó2óóÁs¸1#êIÆʘJlFV¥æ.$ñ%í¨ ¿r€qà£ù•‚k|ÍTyŠn§´ýoÆaäœ^»à¸D©X*þ¹)/ayvÈ&Õ3RÏÂdë ©2/š5®ƒ‰9šŠœs5˜°×©uQ…k¬7å¹4k\E®âÓø4ŒØ?Á]2\õ¬§äžˆ–BÑóà½<¸â¡¼§nÁS[ãjê¯K›mꮫÌéî)_žÈ)@¯¤¶o`Ä?ãͪH#ŠG +킸ºü +”¦%e¬µUvÁaªÊðÖÓú;`¨J}[Iíð F=œá‘ÙW_tWâÑ|¨ÛïÎnÕxhAZza—}TôP\ù˜78¢Wû·âÓ~h m¨Wó¡YSιH䊽‡Í®SšÖ‘¯]·žU˜¹F +JÓ’2¤*G»rø ÖEwº7ÎMjWþ¹ýÍe@‹±exymuZõpã: ¤ˆŠ8FÜ™6$«%Ui%ûÐ.½Ê¿æ>•~akÿê{ýêYMÇŸ:è+¹s3»Üeà{c›¾Z·oº'²Kª |/§dy£>¢&јóøìº]#Pµ:îUt:7¨UÄÖ|»z?¨.žK˜[ÌÊõK›¸‰võÊæÜbfø–¯ZÃymRV»´i=1¹äR¶E?ÁÔh$©N3±J …OÝÑîn0\•f.µJ§�LÎÐÔ®J3§¨YZÆr{¤ª»èÇðkŽxuFó´ŒTÝ©³´D{IF™n<K+ÊzYÖ©R•{ÃåÆ2ª~¤"›½3¥>1®j»q-îìX½©à–îÝOƒ¹QRaŒî[KÕµƒìéW懦–¡øXÜÆ‘Ù¯OÄ–õX½fd™JKƒU€±B«Ò•ô´¸¸½æ¬8.cøJneÙ¼2égjfc•0þúÈ“þÄœ²ˆ9†Kîtì,S�Ä,ÁQøàv9A;õv[Þ*—@°P´&²GÔq~ÃÕmÚ§œ9#BU +-%Þp!ë‰ÇQ~TÌžs Š)ñ›"ÚÒ‹°ÆUÒNÖ•êÍßBz´ú}Ã¥œQï¼É"–’‘Ô,Ô1�¦‚7¦ºÙ8dE¨Z÷‹™iŒÑ*ñq,j-ŽEÙ¹45HE¢%„c-y#ý’Ë…!Ç4íCÍ*@£Î¬tCnÌU€Fk�œª¡]h´PÖû1VšŠ'Ç\¨</Z `’‘&¢—(5€Òþ~ÌU€Fk�“âª4ÊO¼3{ Ñ@½]Qõ€â¸QúÈúU€U¤7ü¨Œ\Ê—¨Ùô§.‰ëɸ”z'ïR>Aî$\Êåž÷]ʇOh_ßïJ4/åÓŠÂ%öR>QÍHâ/åKÀý•.åS×%étª@Çv–zýl¨øïõÓ¿Õ/îJ.ù^?ýªCgC¸×ÏðÙPqÝëG‡&¼ÕÏ\ž’ö½~¦Î†Šù^?Õ€¸[ýb9Jt¯Ÿ~¸L£¾2Qµò~Ñ‘l,eQÿV?Ñ)ͱÜëO•ñ{ýôc¤’+þ{ý”¡‰oõ3u¥Î½~Æã–ñÜ맚s.œ+¼!†{ýô.‡‰í^?~†à~â\8ó÷úé¯^=×½~úŠN±Çâ½×/zUZ‚ÊÝunõcâü1ßëgc±ÝëÇf'©oõ‹ó>>ƒ¸Qïã‹·èZ¾/1÷úéËnx¢N”D0Ý{ýôÓÜ„§ÐÄp¯Ÿ¾§ÆåZ»c»×O¸¢é~Që^ Þë§ÏJU¥°„ëY{ý¢U%æ^?ãUi «{ànõÓ²-Ô=À{ýâXû&îõÓ¿Õ/A÷ñE©ž0|_”BtÃ÷ñÅu¯mE ½¤¸ïõÓOl•Ö~îõÓdkßËcî^? °Ë·úéV™¸×O¿Y$Çb¹×ϸ5Ͻ~�h‚$Xïã3·|´ïãKÀò¡ç,ÇwzŸ©ÁÅ¿€~‰ÿ^?S'êÄ|¯Ÿ¾CÄaâ½×O©ßßê¼×¸îõÓ7s¤|ËÜë§%§È~ ¹/j®±ûøâfÑûøâ¼×OÿV?39W‚{ýËbã±Ü맫Ÿ<ûqßë§U̦w +ù{ýôë[èÎ{œ÷úé»íÂy‰á^?í~a·=ö¸¥šc3!ã¼×OÿV?¦&1æ{ýD]Š "Êió†ïõÓ¿ÕO«VÔì½~üÄBQ€$BîõÓ/ˆUÛc±ßëÇÍ‹êV?ˆ¢©{ý¢U×&æ^?ýÍpnO\÷úEjE*Oœoiþ^?ý‚X%:ª§\å0¤§Ú{™Œ*-ÙÐî~îDEé=íЮ^â=Ž[2…‹*<žDbXå+`'M6ÙäGÙT,p.GØ‚}±öÙÊÑ6•/Ú²¾¶æ]ߟ‚ÔJSJÎp[ºÛ5°PH¾‚ë©RÒ[+nÛRŠkzx%Ï·¶¿É_qp´¸³7Û–»hϪYq7̵U'e¤nÖ¤ŒLÎøЫ‰ªŒü¢Ò†ÌÖöÕ®üÕ…ÁáÂ|gÞtQ«ÀÙì\KÉo äMÔt-ôVÎt·ôïï™mË_í³ÍîKﯶçÕHíéj^(9X6°<[i[Z/\ÍX«Z*hKÊHéo«ÌJ÷Ùû†í›ûÓ†ó–GfK¤©•*;+z{ºûRœ9cU)Þ¹Õ¾œ2_V•Û_Ó\ãöï›nr +2»ÖÖ&ŠmkëEýëicSëùSô畻rû¾–âT¥ìí€km}d_6Wœ&–!ªêÒÒ¡–ñâêéÎWzäøl-¾E0#»ºª¥ EÀ,‰hÀ™kk¾ôÝ‘î·MfÍv¤õ õT¤/¹ü™Þ¼¹Í´ƒ3)3¸’´I®HEOLÙt¬äµáSë[—¤šÄ”jOO†;}v½×±¬6ØW˜åƒ†ÖQJæ"ÑV:4Ùq¢¢ £v³nÈ?; ]ŸY;è(h«Irm”5U¹ÖgJýÅiõýU¾1Ķ¥ŠÀÁ¾‘ꆂ”)ÔJߪÒhášœîÉY(ÄÅŒƒcU¥-)kÒ¨ª—[Ö«›ûûÇsêûð+4ÜŽƒN\´ë n}Eþàšä9¹]6œ‹0¾A$±+ß™¥¼òØ$«ÏaC<)\BofKu¿Hà4® ?ËÒŸH‹ ¯¡?kÊý.½·µ5ÛàΩsdlúm GÖþÅúé…Õb·«¢ÐN»9Š½¤ZOiíü¤Ëƒ>*ω|„ŒƒÚråƒÚÜÈÞš¡ÞJåƒFWä_zé\µòA»‡~0&ù/øÞÑ@yvä]øä@|�ž@«ñ!t$Ùî]?€Ä_ Ë#ýé«ìMAvTe'eDØ/…`л~‰OÙÈÿž‘À€¥`–rEˆ•íˆwí.\é@XER§£Wj6Û—^¼¸þö¹Z»|è·=99ieiÒXÒrÐœ‹n×`K„1ÊS&û†rë\“e™%sKY½þ²ú¼\µg` š¶Š}ÉUh)F}\ªML‹R{J¹Ôžý¢Î⢀¿*k¶§®q¦<EZThTE=ÞŠ¼öƒãi2Š'óèÀ'ÑS6Šå ›jÏ•À.w +ß,Ã}jÀí™ji´£WðScÞŠâF/š«©IŸòj&OjBžÚ….©Å\ÉüD¸äß.»•Wc0ûSH˵TÈýY˜ñÆR|ãþqûp³w¢u5CËÂb´º}5E¾¢ÒÙ1û¾ÚýþöšƒEiEÀGÄ×lÊ÷V“Eþ!¦Xä>ß'}è´•1·'ੲ¡W“åÕŒ7ò=dhw¡ñmÈ“mKØŸü>¶½¢´°/7µÕ?ÑšQŒgµÆ—9¾^èn +ä䣹-¥Î€;-ŠUô¾·¥î‰«bIñfú7Sû¤8úÆêSý)ö¶![J®+©êÍ’¬´RöÊžûüÁŠ”ܥΑ”œig1ÖRé`Ï"“ÄxÈ”•Ú°…—ŽMµMZr²„„¹ü•ÉÕ\EZæÙ"Ò’ +¸,œrºŠwšr${¬ÁŽëq�ŸS×€þ\vA™U•2*M<¶‰Rɶwt³¬Ñ5?°á$ÑžyÒiØÖAr¬¾IdhK÷¼·53³?ê•4#\å%ÀHUI€#ŠûeCÂlj¡æ`ê’ßã+œ•4‰4–fwNEa_CíÄBõzèJ"Kì’¡†Uä!\ôڊЬ͵£ß¶!MS¾¼à ÌåaŽµ9ÉŸ éU®º¦²e7j¥ÝMä˜Êì@¯Wš7¾ïUm$ÖBljòˆ]‡ç¥Dê#ù0^{!Ò•í¯}¦²Ð—™]PïšÏïjt7{r°“Ö´(HÃÁéHÃÞ‰¶ú_õ|[nÏç«Îv7zr3*K%æËø ‘ðN“{v¡½5[áñUOTÖH£B34R-ò@ŠGfYg;æq.ö+kJe?¾|0ð›q•ÀjòÚó$#¹¸^‰L’áVx²kfê"ž6ïj-DO™¨vk a÷RÊH÷<ŽÕÜ:UçJò$ÇMÍ”³¡ÜÍ%ÃåH£õ䰸Ⱦƒ 즑\Mì÷*´â‹6‰ÜÈÌ_ö«v«¥wSk«SÑ»6ð×ûT‡z&ì° Ç|=Ó@Nmze}ÄÆöÚŠ}0¯Oz75µ¢2àžÉXª[[+_Ά B¦ïzªßŸiÂ=›šïb訦 Ì+‘+ÅØD"/]²¨êGJs}™¥Ã´°ëžÀ˜“L¤÷MÑç$ï®c#bd]‘^ã*™œ–%ŸD‘SæëT"[ÿÒÝé؇JŪDÉŠXãÙUýÙ“Êy,å^ÅÚ&ÇŽ`ù“¬qÕ-âò ÏÒ¼l¦à‡¦9È[ÎÄ÷Ó§(‡¿ ¿ƒôæ`oôIK2ÇjìÍ9‘ÓNF©zŸrüè¡Î\ÉÒçA©[@=äÈ—˜×wSŒ@l·S£h€~ÉL^óMCi"L¨š“˜@zY€¸°ÍO˜˜PY»º×¾n0A~¨r½4%ÑY€ôKzñ‚‹<ÖWؾ 3Á»é1ˆWØ)Ë®z‚µšÁá’2lSé]# +È'-“~g”¥Lˆ ¤Û@Ž¼ÿb‚&Fû€3ˆÄMäÆ;g¤¤ŒØ†á60‘>ˆV¥#^L;LÒ¾˜)N8œ†á«ê´Ùä&+Û™ýJ‡GcFYéð* ¤Eæ")c=5Ð\«ú¦+;òÍô%_i‡rvÒ¢W=9¶ø1fc.ÆbjÂ?Æìñb,[c†›È5Ø€ÇÉbÌçl8Ü¢$ŽmÂed¹ŠˆT׺Ë>>h±²Ä#yfÃedÅköAò,\ñΆËÏJå,5½a˜[‚>x“2â\._ô>4 Ù/oÍ!M¬Uä«Î³›ðÆ«¼ ‘µ{¡ÛmP1}ˆHK¶Î8áÆMR†QM¤nB¸Ä5û�¥¥�@wÕº~¡ôµÊœ´š‰¶´6m'žq~•Äu&Ò�>á°¬¹?Dèù 6 ÛDrdä½W½ð ð«òêæ±;°£ŠeçÁÝ\¾íüÈã±qî`¢Kê²6%·‡lå9º°ÚMzᶧ¹½©ƒ‘>(œB‘^‰~#?(SíACØ{ÅÁÒ‹…\¾Å¾"?ꇟXHGžpd7Wãt»{v*¯Ô[W9‡Ý Ý&?ؼ»¶ÑN%À*¥6¬aw=¯Êݨ͕wOÀÓ^ïÍNi.Æ(¤ì(Å…O]Rc*OiQŠ!K‘Õ¤[ s©ú¡ßÌCÈyI8¨!…¯³*]óƒsMÞ û@ ®·µûªû{šÐ$<ÞñÅ?Z»§ðÚæºj<Úv)6B&ûZTú2移qÂTúÔ_íip¦ÔHóâoLiöNÔ÷”àyitíßWX…³mÛGp2Sƒn€Œ 5æÊÇ›‘λ]y¶HP’nE®€ õ|ö *‚+…µ—…¼}Ù’/ïŸÉÍÖxksêåˆSä–Á^Ò*‰QJ;:‘³“`”†kçxåÉŸò.{²k‡‡p4rH©QïÌ+µ-*ܦEº;AT Á#ÀQÿæA¦Y7ˆ¦l£á§ºÅNñââWæXAÍoIŽ«µ{Õ絬7IµhÝ :¼öÊõrX¦²ÉŸ*-9£v¥MŽþvt:<–žóÖù@(|tq¼ ç)Ñ£pg2±ñZ¾¼‰øËs©úaᬆ +ÃͪÌÆg‘ +— Û w_ÆLz“מ{À…àînFp·U»›mùî}Yõžéáz¼ÑÙáõL—úª'š›ÈZÄñb¼Û±à’ ñºg7&«ÝMScµønô_uYV )fX…ÚYôÈ:ÇÖ5HB×è×Y°óù Ù óùͶˆô…;ï¢U«U4vñ‘±nsºKŽ×¸#·É+1áÉÕ"˜0Ø\ +Uš?ºøÔg541;’E€…ÒÏ +V2¥}°øøµo£:¼Wîö‚ÎÙô +¹ +h’2lÚ&+ËåÐX´P²¤0‹¥ýµ5]}mü’ê^‘¼$vµáÐYƒ´Ó˜áš¯h¬”šŽÜwÍ#µ‹õI²"YEd™5¦7)Û(ùÙ‡m¸ZÎXGŠN‰U7¿Ù€+ŽìhÉ›“d[™?¨!=]¹eúűñÈchÿȺ$zÐC»JºÅHò·Tû2S²ÜhYäúIè ¡F©’Ââ¶9‡ðRð`µ”íËô5´ åã÷ýâFÈ_„8—(ñ#6º›K&«ÈNÅìYe¯;?Ï®êmÞ îÈ•ûºŽÆ§ÞÌP²Ó£h"ÁˆnÓÄ]ì#k\¥§l”óMô›_WXÂЕ%\Í&ÖGÅà„]rÁ?ÏØZSªŸ”®ØM6ÕZs.3kÍÓPU\/5„±@Zc±6ݵ–%evI†}1¬ÐcëKÉÑôKÔöB_)+2oðIæž²÷ªkð!EP^!?^2DË:;"*JÎö" +ÊU*í¬£¥âkrÍwx¤m+RóŽà^;Yáµ/ÖtÚyy Óãšø«ðfd!û3œ•B÷^íŽH2Y6é$ž˜7ét º)i]ÿÅÈÊ‚ë*Pë I#xo]6 †× ¡&åº)†\/¼¾‹b’M£¤·TšnU>ˆ½‰äZTwÖ'eÔ57¦t£N•7 _»|J:ö¿®Ò63äÉ\ÏöH.,ðý”"Ri+/ ™î&¼µ”çnêèBBÖ1ätïÏ-„ƒh½(³ÕÜÞ@g¦œA{Þ²ùÅ®^êJ%WL‹?EX÷y$ÅêöÚÓJ"KÛ–‰Zì¹ÞºÜõ:¤Ã»\ÒŠG^PY3ÎﬥùüÊ +ôeö#}6»P[E–a¥7ßë«®/n3§G’Ñ®¨Ã"íš”M¿öäÕ"׫RJŸF¾onw"»¬‰{<ѳ*Q o:#$OôOw¸ö/—û}Õk)’’E>ÝJ3ÖÃØã[¬ó8<-*°¿´Ð[7´Ž}¿å>,(J|Ó+O`lҤE1ò+§ª¥sIÞëìA¶aô;5àé\}AÁVÖC›XHɲµã$•ÞGë@_JjõJkŠÃ^U—’^WÔsQšð§øUn'É1uxý=ø+-øÓü'š}üõñ”ܦâÞ”Üj_‡)}Îjs†±RâŠ(wà½âØ”"Ȉ¡YU£ù^U5:ùð%°1ž2šU''!Q;? +·(åȤ#®ª”.)$-ó7:Òg£CSäl©…4,³'Sã3ˆÁãÓC)™åíž”,{S“KɤBxêÄ ÍceœýŠüÚ¤tuî”/’9‚õµ[äÎD¤œÙ•éu‹†™ÀA"ÏBk˜fiG†om³f Í~ôP®àÉ–u‚O•x›&gU'OÍ·R[Ñ¥RŠKDX—ÌURΫÄ_cV)¹\ÛBm%»…hqa Gøx Ñ*RÅ ƒ›¸°:KËB,-ÛÚ +‰>¨Îö5zëºróTö_%ÎWÛ(óeÚÛ%”8‘¥ÔåWJM˜É`1ŒOTmJ oI$½MVaÖ–ÖŽƒd-äœÌ:ÀpuãÈâh,Fþ>…9ÐãÁÛ—Z‰A\¤êc÷ +>3r2§Òž±éŸözG7lEX¤ ]‘RIÏ>&Ú i°ûŸÓÍø\ù<o]ç"Ò$me-’’Ao˜)óÕd¬@J¡¹Mõ(œÝXBˆXl@`÷Õã§àXnòó<3>œÕŒ~ÑR-µÝè¯}Ø×ȸp’m‰¸Q[bŒßO’¢ëGF<޺Ś&éÆ¡Baâ»^ÙH»zìrxªÇVè Ô×KgÉJµo³Èæ˜ic󫈹ﰕ—FVˆ$íó´”»›6êe”lÌ#¶M÷‹ÂWIR�+PÁëÅ-ö¿¡UT鞪-öeÖ×4øÒ‹—rõaªkUÝëèw#~¼uJ]ó]¾ÌµìY‹ãöïøP•KÈPU>> +Ä^”I>¨Øt¤á̦bi—gªˆüf¢u[syèOGª·Þ;W€¦Û‹¾Ù·X&϶±{i%r>Z*½õ >8¢VRãßì*vï[¯Âà à|ËÞ$JªBG{"15ôç|72nòj$$#ã&«ÚÝ\».aÕç«qõ·x³SjÚ°ùâCò·Awb¢\Q“ÎP¥|’bjtµbj"jÄ"V4·C‘–³UE’GÉwyú“é‹#$?9«|0Ÿ(£šqɉÉUêFÖñŸ.%_‡{åW’„ÁZ+[Vàû<©â•’?kx3®ÁIèŠXp0ÛùqŠÑltG{Š7&•º‡æXiÐ’3M?È…(ùøü`¥vŽ~àQ=%P³Š‡Ñ– ¾èµM)_G¶ø`.o†~à$Á†ô*¢Ò= ¹~¼Ûæ‘“a+»ðŸØ‰415—ƒÓ)›XÓé…rj+. "Jm:·oyvºˆ}?]Ùˆ¹Ó)7;ÝÙ+5ë“jH¥�v$ˆC†EnÖr=¹0«]5sÙÕÓûZ$QËÌPÿÓêÅj¼öYbZ”Ûël)Y}EsÕÝ›éóõC3nµå2áÝ«’Q48æ£åy`àu•…*ý¹ÄQ¬ë¬ÅÛ¼ý®¤îØ{ÅI*ý°ý’d\Ư|ôUi¢¾t±�ý9$·ˆÄž’!º^†Üô•Î>>N{^éÏ~P·®Ô +ÈWÆ2T�•ÌÁîŒzG±}¬ªÔÝ—®ŠØIÅP—< È?ò!ÔôuF*Ùø=7þ`ÃÔC_yá÷Zçòð{yêH¯ÜŸNÿDß`m]N‘Ýï¯oí+Rr¶ó‘V))ÀuúÒËÊ&¤í(Rþ§›¯/Ý2“€ŒýÝ|}¬‘‘±¯Ÿ¯ç%û9ºùú$·'þŒ}ý|}¥Vtù护"w'¹Èçõ$»º6ήµ¯ÍÏÍ/%;’J“\ÕOïÒ̲mv¶göÈFÝòôæâìÒFrI²«º»¶±±(¿nvzyf6™¨¬‰rÕƉOòFÄDݾâÀBCZWùdÝ>÷`ë·Ûr'FR²³R7Û\ð6ì‚ûS2f=Ͳ«^±à'I¸Dý +«$[;;nvf³>§µ¥Ÿ‘pÒ6VñDO <)£¾¿f¶«Êµ>Wæj¨j®ò÷uW¹6ÜËJ|ÄÆ ?N\÷àZí¾ÀHJuûXºúŠ)'qSJñیۙ’Û]Ù—’[”ëÆêIÉÌ“–Ü*¦›ÏÚ»l$Ť0«$sÙ›‡±Ú—”ú]—Sœ7媩÷6T¡w[›ªöõö´U7L´åç—Wú‹Ó»fjG›Ò*VÓ["aM"õ+ý6’ÆÑ~õc%e2´Úg d‘7°‹M}‡´¼‰]ß/‚Sd¤¥’e«ž¥eI; ’í.ý‰dFÕ²dzËå8’˜_•KÊP²d½¢Âû±ªˆa�;êp/MÐ mà¨Í ¶A³Cm°ôz¨uÐì„¿™+ßVqäƒÜôÆýÔž°Ë´%•š=mÐì Œ9§Ñ¼(AÃ'°R‚yU@mnb;4´à´£6eñLeж;sÈW¦V<X¢væÒ–.m€Ûð‘ñNÙ)¨Åítº¥tÏtC»ô§ÜìôаG.ÀôçÐjF"q¼ö‚Ê–gñh^tUThÜAt‘X†K_EFÒ ·è†«Ò•¶^–Ó[ºVPÑ›×V]8:c“ –¡î¥PqØJ'"ðòÚ7g¨ùá€vIC9–ÂýNÙ$j$"Û[7Ý.Ûäu{½ò«Íá1ù˜o½}rœx~ÈÂyýù² 2T…[rJéÞñƒ-r ù;rÛöŠ¶!Xt9Q:s€~GC;ýýS`,È}¯5mñeÒX‹9^›T¹ºÈ:ÏôöæI½Å>`¾üªn’M£>ù{}‹ÕloÚk{FýuS§«»zF²ê§r«úÉ&X™t"¿l@l¬cA-#Õ§dmÊ©‚¢Úï’Ñöe›$7kì×ðEË 5õng_ûM³ò¤æ¼î,¢¿³«‹¤„5;=&¿cYÆÀBŽâ»#£1ÕéšOíÈ$EÅn›s]ÙŸvfI¹\IKi“6"-‘ p ‚xnxÚ’±‹†#‡nâÀá³)ðñáXþÚ3±"þœø\¬·`ö»d7™f’hȱfâ?²r•¼×ëqWŽ>ªÊð·;ª¹’qê°KW ™=Çg§Ø|öH1^dßN6¾p¸´‡˜u€_ÈŸó.Ò6uê"'X€í)þEûúÒKÊbí+…!³Hž‚{_ Sÿ'—Ø%1ÎS¦—››«È©,u8c*±“*²`‰Nå‹ì]b‡Óø"»D—Ø%eˆŠì]b‡ßø"»øKì`t•O•V¯SÄBKìò‡"õe‘‹»™J:ÄÅW½À;)#½kÑ;f¬`ô['{\Pü&]·n‹tObVkܤ +7ùòpu¿ÇàDìm‹^ãÆN3 Ú…; ªqS +wt{w›fáNBkܘÂÃÃÐ*Ó(W—[9´9Æ�‘«XÓj‘v¾ -½°ËÞ¦z͹™’š“T}&Õž1EHѪÏb¬" ¬^ÁÚZEÕtÔœM.‡…”£# JŽ3”b+rzRÄõ–ö÷¤d1Ó•LÝ=&¯Û.í\ëƒF5³fLåÌÈÇç˜ÏšásfÒr‘ƒëoÈÃ’”¡w>Û’üÃÄR¦¸ã°Å‚¡Å†ƒuû2Ö{ªÊ*ò"»·‘C¹|%ÍÄr½´re³LV.¥oGO,Çû곤”g¼'˜ÎAÑJ&—0f(&“Äl…Ùòåô•ÞE¯:I$÷à#gpzîO$½G3§lÉ¡.gÍ(WoµõeÕáŒVén@Ÿw¼a®Î3‘âcS÷HH�ÖjÓá«^ + ¦r;qbx!ÎlmÀ[ÓÙÍ%LâMŽ²Çª°ß^Zî xj«}™kxC¶¬Ëµ¹ªÇ‹ý>S‰pêä=8.“o¬¨ÂlÐï„m‚eíÕM°H4Ø=c³•HHÁã’l(ñ³ŠªÈyV£ð8¢ +¿|�6I¿NÒ¢ÇO ”HA4{äÙ轪p`xrÀ9‘j1°ÙuÅ¿´ã çüùx+%‚,œFpê¨Í‘ŽÄ’£á¹Š’ÙÌ–eG‹“œšEò0:ºÜ8.îAÿÌà?H³hÅ/)‰CéN;=j°ÑA$Á `ƒíN£‡0#˜ØäpqÔb—+1-*íõºáf~AoyImuoféDíþÂæ•êžê¥~rÈVÍpö˜bš Á‘_DÇAxMµ8ÀIZ䬨©.rbœ´ÙR';Ù&}äh-Äôîlò +K%)YÚ‘^ÉS;5—/YÙ.ô:±¿à¡a‹\º“+]ÃBO\[˜ô‚³€G¿0—G·¾òAJK92ª1’\M9B,n»¤@3êwu6yU?Ò”C^^oÌù¤÷" ¼QUkEþ(®Óê´É¬ùŒLšïZ91Žø²ŒhZT®•p¡& ÉÔ&»œQO¾Ô·Šm'–T6 ©¨p‘½-$„I´'»º|EuÄ_wž¼Õ†Uݪ+ªÊŇ×Ùñ-ÊCÈ|é[S¶´ +ËHÖ̾ޒaáµ ûƪFØÍGéø#GÖ~9nÊ#âÅØ^c·õ±‚nΕƒ?såÊΔJ¢aïî ШÃçàˆ¦Ew"u3œ#ɱÈî˜÷B",’´M¤—I‘sic¬ %Òv$|žK“+«o®H*EVs£Ç3^¿47º’22Ð;ݳ›+øùã5³sóK-“Gg×’<Éä?7úÿ[Xœìñ%{óóÑùøÝ–©$›ôÝd=¹e))cÜU½¶Q7?½1¿¼4¹v4¹½åIvÕ,/L¶U7vûû“ë¬,¯m$“ŸõͯÏOœMîYN®íî¶ã]¶q×@kKoc]rI2i{µ]Šíq£ÖÑGä{zíÂöÐÈÇ“ÜÉÕè‡Ñ ªWЫö$·³Ð[äÎÏKv;ó +¼>48·ÓWäÉ÷¢îâbŸ¯�¿ãñzñ‹¼¼Bw>þN¾»¸È—<0‰ZéBäy|Eø«y…E…ùøE¾Ïƒyät£¯æãæ +èÿp7KQwŽ¢?šÐ‹Éɇ“ó’[“‡GÝÉ3¸§]IÞ|Ÿ³° ÙSŒ’_”¼Þò:‹‹Ð\ä9}Ũ§…ø+…ø ù†òFm’×ç,p»=ô–$O³¸Ð[HßñxÈ7”Véßòƒk“”w¼yn§·¸Xj„¾…Zóz“•V½ù^òåÁô Ô¥{ô½–$:†È•aÒ¶Á;nÚËŸ–¤)²£‹Ž çNvá}]¼¿‹€ ý5¹8Û¸43{„üݽ±¼vTùۛ쿫^Ú˜Ÿ<8?¹>¿4'í#ÄN’fk&© ÙfOè7ñѧÄüïI‚/Æ'lâU·‚X€–Z¾,Eä=îäV"küógK€Øéš\ß@rý}1䪛=4?=Û¨IhK¦’(Á ° y4Ùƒ°êsûðS÷‹>—þ”¿£ü?úµBéÛyè?ô%$¥ç×MnL– ÏÜEÅùIçîXd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYd‘E'βЩžÝKBFÏHÒ猅¢À“�’^…Þ+Ñ)œÁ“È`{1_`8vf⇜0riß¾}o”ˆgì¢D¯ÝûD"û>‰(œxíœaø²…È‚ +ÄRôbuuõÞ{ï¥,Ú�t×Þ'8ˆ„{%¢V é@hG-±O?bÄaùáý‹XŠþ½ãŽ;п·K¹zäÈ‘Ûö>¡QðôðáÃdìdø]KBD:Qüðà9Õ“œ`¢€Aã¥kññ1 +ñòóÖ[oEÿžˆçðˆ˜Öø'ž<‚c$£&ÿ"t%,•ED DÁžÓKìP•ƒø@BxE¸aÝÖÖÃgfånÅMLƒ'!èÓÉŸd¼ô_$‚¢ !Š"´Às ‡j%(N‰&BsDyB8F™I¥MX"Èp(%‰ Ø ?¿ y„ð¡´q2p!œt‚‡(úÓ9ŒOMC¡BÐB'ˆ"½OøI^PöRY§`Û< .œß7øômiìthÌs!¶.!þ•²©-b9±Ã çTCÀ4!ƒ–�Zd\DÆ;vŒ.+È1ÄœP(D†L^„$¢_F¯ßèkDtm†Œó}þ5}(ÿ“mŽ¢b‰Ê¢ãÇüðµ…V"u¾ rvöš…ÌBHõ &PÎÀ ¢¯ÑGä_ø‚ðýɼ ¯é3k–6K‘ _ðO¡%–`¯HW +ȧt±@8Aü@ÚVŒªâäPmµ³wC:IºMÃYÄâ%Œ"/—˜i…Œeþ%x ÿ’ßÒwäÐf)x`#ôÿúe¦?‰%æ¹Z<–诨Î"£à!î'Aóиúž€ µ~æÑÐX ¥B&¬Ø'ÌJ„SÌOnXt®CœˆŸØ”BÞ^ì0˜ç{@ˆ¼öó6ð¹¶BF2²s¨…ΩƅQÌÐò•è¸ÂŠj ‚‚g#8žÛŒTÑBóœˆæËÂIL…4$ø\æ84ÚOFUðäPmiOè)h�“]t¥0óÈÌ#1B@ ÑÉBNŸ„º,,AÎŽ“˜'†E˜…ÃPÈ•-àdQ#‡báìr=E1”üÁC‡ÑÐ…�å?o¨‚2'ÄÉj# Ñ¡§Å˜×'0äß ð Ãœ„w’ùåCHñ¹(x(K!lç‘y°ûõTürFkf3òN³<CÚRˆù>l$Q¢†Y««:Hæ‡âdUgÛJ\‹þIÙ÷Fw-lb°gÙËÏ5å3*~ +x&o‰\!¦)Ò7¨´fŠ ‰ÂÀ)Ìa Š_0Ì×ø– T¨UC`ƒ^>|T‰üßÙe°1ë7Ñh œGÈ-ü÷£N1á|Á/oÅá=1}æ•é–:ŠÈXŨà¯ÂjûÌHèR•óÝ ›˜ã3ü‚ +«—?ƒÂ7…3ȼ`0Ã4x20Ãô"„‘'BIÿdŒÚ8|yMmcä€S3ÁZÅ;»6¦âÀAQ(˜ç³)…JGH¼V/Xúî@…â#*ZÃjd’Ôì ©5”…ÔÊy …z˜Ovð lv¡´1»ßæÔ=¸šÖEC`‡Cj¡·¥öàL3æM^®ò£©Áu8!õB£ƒ"øßRü) +hïÜÔ¾6#v ðhñ–Öw˜Fà:…“K>…Ò&¶ýk:(ú}V¸ÒPò0ï0C`†y ðÏ ˆkÁæTC&Æü2@š$C!D¾ùƒl¡Ñ¸¥v@„Æ”NÃ/á§0B"½Ì#a‹³^˜?)‹(2)l„±âÝ¡¡æéAÉC–�\ƒ3Œ à¦Ab¸J¡�}ú–$(}¢Y…¤µãÇÓAG�€!Âk1Ê +-ÙÂp‰Â†Ø6Ae #ãaW61ä“©ò¢œ„°ÑZ€BlðLæÁCôôéZY|‰ÉdÔ1LJ¤"4È),3´çt *Œú«ESP±->Œ–0²6ÑÔìÃÆHÝÝY éÓEhúŽ=J]r +ªSB¢ø*ák[Jpƒfä&ªô€äJ1z™é�Í‚`0V«*±ÀUÀ(/ŠÊO¸¡IܨÝfØì®o" ‚ª/Âêx>ÏI}Àè£k8§4s;Q%N´* Lu$ƒŠ†Ã+[K°ç¼ÀÔç�”·T¢n+ûtýÚÙjÇL%Á<Y’WÃœ*×â!Ãj†áô¬> io‰-¨$“–‰€Eë‚>—‘¨Pþ裂_5üº€&1]TÐTC uªñ"L‰§<Ök !ðä % ÷ª¶Ôqåy(\¤¤)Â:b" @Å‚°"8‚5¶B„ / ÞP‡ý×2ç› þ„nß„.fhg׈Bg©‰¼Éô™@±—î; K€–FÞþ0o¤-%5=¨`é¸)ÃWßÇCtu?)~‘-9øœñ¨V>Á%Ý +BTÖQjWaÒY"ÚQ DS)§úÍoÄgŒ,4†otÑAË)‹cÜÏ„5„DÍX€B5"ú²EÈÆ™‚°!n>a,°A ývv™¨Ñ'jùmq8•L\ú›Q9É›Í0ЛFŠ‰ð =}'¡ÉZKƒº“t‡…æðF—Ð-Ò;,4iè¯è؉}¾ûE(lòÑ<R6’h†––ŠæË0òƒZFO¡˜ žä`ªTÓ˜gPñ§xßö_gìZA§ž5ÔØÙS¢f!f¨ëÅ,„„‘åÆ°N3/Â0ÏRGËaêœÐÆŽ \Z$”WôWA.ÜDÍns Œ)Ì5Z˜¡Û¾§3t°;�6¤hÕ“ é[X‰®˜°aõ&ý-/g¨UCé´Á¿q¼×1³£† õñIºÃB¹j$H%ŒçF‚Š±}ìØ1âÐÝ„=¥ž´0V5Ÿ6˜Ùá²GËOòëfÂêÐ +ôt ¢Å +h�3Š =”„Åöœ%|bfGKTvlƒêj(0‹™-'Ž�yÊÞUOg&fèÀɇ¢FË„3psaº›@™T5{K=ɘÙQ‹²QK5D‹N”F'ªI_oÜxÊqöwáö“>±˜c*šÄï>~ü8…GlZ‰a”]t˜<‹<wo™4fhüСCt»-¨ÎWëšÁ:p‚1aêqð9fföfvjqq‘¨'’fC5<f„ÇU–àak»‡féLÆÌŽZ="˜¡‡ÃÀFƒ +$ø"èvöˆla&¼'bfÜxã0<Z ¸0¦ò‚žWLn÷VdÏÂÌŽä=Áƒ5¶•z3Q½lž„ ++¨Di ë´cafOa†hºÓ 5ENTð#É!u%y°jafïb†d¹( ¿ó¨ž@4’g!Ì î3gf„¬°0szc†×M̼‡uu“PÎ0;Ý´ý R‡eé¦=ŠÆ†~ ¼˜²á—!OBJþ•eï]Ì•Ta¸}�k&^§åkóþ ¦ºÉòµ÷(fhUÍOƒšNp† æP›b†J³ ÓÛƒ˜ J{Ì„ÛJ^5`L%Bð{ ¤•ÝÆSt&c†1€!Ѳ‹°†´ÄKæ;<Þ¨_†€J³Ù-Ìì ̹ӕ·¹2RÆ21²ÇURHAŸU¡•±'0s–DT1‘dƒ2,ºBŽ’¾I1C^Að‡¤ï¹Š•33AíRfÅD‘PaE´·œ¦330s†ÐáÇiéAP]PuÈÌðy¯œÊ™m¥6$\íEcfçŒÄÕJð9Ô%ª˜‚ IoKg?ŒÑñCs-öbbçΙ‡ +xx;2¤{|8θ—ÍogCUT¼lF1Y˜Ùµ˜a�”özHôþ„úne^>˜%¨Ú rÈs™2Ò±‡ ñÓ™ƒè(1„ºsó‚àT½¨‘^!Nxw),¥B·&©Ç´çÓ΃0¤Rû.åš öÉ“:Ñá�üò–r.,í'G¿÷Z5¡33ŒJ"€A³†Ì(mèü†4ŽÑ,CÌo™Ø/)…Û£•Ú„NoÌP;!¨>ÛŸl-‘ãÙ·”C0 —Ä»KFˆùU\óD_ Q…Œ…Ì„_Äs®ÎRhœHƒM%z0©îg¦;j˜y‡éw8·¸ÓŠ¨±0¿ÅrX1ÌÄžÞYí€3ôÈÔ#mI<„ÐáÝVŸËV›¾ÂQC³~ŸZ¼Ûàª>&óžF¾³×,B'3Lp:A51רÅFt,´Yx˜6AKP¹4„KŽº„^„ÁõpG + á*àWÿ&E&Ì®=SÚ%3[êc)ÑÙVΦ[ÉñŸOÌ*ge“A‘§:tˆœF&‘ܺB^3j(Äm-ñ8„è"¯‰„!ºîG >ìγëÍRÂ1C¿�…<=ðú,|úŠY"œÐË‚Òº&×ÊÐon+%üApßp˜p :¢šÍ0\L±µ»ïȈNf(1?¬ÈbÒ�,Yz‹™Â ù ¼à�®bÔ8¹ûËÉ˨Jè¼ëcFk¤aA±TbÚwñÄL Á3Œ³I_P)½ .úD=wC"S˜!?¡—& vN‚Ê¥ôòk$g¶´¯Sá$/|Š3Ê·°tâú¶úf‡ÝvçWÌt²åÿšñ:ƒÊMR±ú-Á½³ õÿرc4*r›t3ÐÜâÇ«ÿTHÉõ…€á;¼³Ç³7f&‡9'ºNô£ p?éy/ÇL’t/Ü Ò õ͉t‚ÂJ%Ѷr8#^[Ÿ«†ŠB4§ÆÜëf¥„c†ù~ÄáCàŒ\2_È¡bgÛ$‘_Á(‚à´L‚¡Ò¡ýçµÿ'ã+1ka[¹cK}{)3ú°Ÿr;¨¶+nºé&8ÝƉt›ü<¬¾½‹¾†h¡‘^jÀÙ×Õ\Œ¨ÜçÁ•½*F –€Ù99ö¿¨é;AÅ€-c%ˆ=ÚDíoî +q‹P¨^á× Z `˜ëÌN?Àìœ4ÌÀÅ»ÅY8Ð ªõHT‚¢-0mnûIû–1±ôÇÂ@hXD°çA%ÒKìðÓ0;'Ùoþò<¨n„Lù-…mŠ‘tºá;B5Ä +~™OXÙ +Ù÷NÁ…b§+`v:Ì:×ðçP2„À-Õú$”TLû!uüŸý¦…´åd»¿›¨¤Ã‡#26ÌÎÞ÷¬yŠ3úàagŠy?}:Ódó…Ôby´Ös¡``3‰BeKÙ>;rä9᱑laœ®Bf'¡q`Ja5f(«ùy䥄A¨Ð߆¹”oæéðû°':íÄ<4¬¶{-̘˜°v-a˜³Œ£…Ÿ\ØøtæO“úöE£ì ðÈ7¡1ƒ¬_ª›iŽÇi ›='g˜Ÿóm2Ï ‹ó[}¤…Ô!_9ª¤èIÔÔ¤9a³wíÚ…/ +h7„˜>š·gxÀoðÝ–´¥E¤ ,¸÷Þ{‰´9-•Ôžó›¨Ô‚Ñð-`áð]¢ß„‹$RH¹è¯ ÇMÒ<Ûfçtñ¡öh|†i!¤8ÆÀ >.¤>O&Ä ½gÆ/§À6á—Ãêyè†ó±šÓ6{.Ì÷ŠÎWH½1D!ÄX)a‘âÉ ˆ¾ %Õ¶²]–B|a¦ +›Ó#yfgï7Q¢‘Â-¡ðÙNc˜SOZï.QŽÑþÀ„yRïpÚÀfïîk3DFAžK–<œ5:¡¼ä sFKˆKÊÚâi(ÍèŸTà¤rÇ%… ôÁwö2lönþCB[êäŠ"2((gè;BÁ±YAE …Ì6Èb%°9 ¤ÍÞÍÓãsöhæižö@AEQD¿ÆÈŠ:ü¢C[j÷ŠY ”uô‰6äÏ=í€ïõ|`!Ý&QPIN ÿ""¢‚(¬¨ÈˆÚ1ƒ +!!O蟨Z°9Õ0M{·î@H¤y‡„Jn¿ýv„L¦t…”6¼‘Ãà®hü@+ˆ>(>!íìA µwë›´ˆ=Ѻ'²´Ñè>‘ÿK°JgsK*[«ã6Z#Õá�}¢(¤¾ä‹Àf¯—®œu”ZDê+)–àGDìм©0°Ìá@x#gKí2úSa iIûd™ìõ¹Ó£^[‹`w€“H‚[rý ì³Örª'BáÓ«7á˜a\ ¸ÖNÒ¹ZDÇ!T‹5]¨ªN(×j30€â®øN˜3˜!~¨NðIºGKþOføoRÌl„ógt†Æ@"žHC72•¼”€�ÐY¼üa¼EþhFC%–'‰N*f(m¿¸ç\i”y(UX6-d6‰¶ÚRx¡‰•)cÞð¿¢Am¸çDÍ‹†ãÚ gJï¨OØC°A.…ÍØjß·8m‰ötˆWUж¡@ ªJ{ÑX3i˜¡£Þá`·‡¨¨³Ï›4ZP¡ž#cKÓ×A%HÅ.½³DÍ™‰™õ°È¢ !Ç8¬Ønƒ¢]ù@_@MGt +ö¨9c1³¤ ¹öêô/œ}#c²(¤‰‡AØõ'DÍ™Œ™îRºT}ÛÊÑUtº….’>„ÂÀ˜!N7y“5{Å:Ã1C9@5êr½é•Au"*øwx—Š2–÷Ðë»ï¾›«…™ÝÊf^þ_ãÄè¸måµ ‚ÙÙÝêÉÂÌŽZÔ@«&J&C yŒÁ€AWþœ0„°‚X5¤sOÜMia†á!r¸=µj˜˜0©)Øð»Qa%>LÎavO´ÈÂä5hÕ=z†hàkÿHˆ +f6¡(lˆz‚š]Kf((+ÐÄmllM(~¿‰ÁƒqQÃìaÁzãXp/\ƒka†’Aõ´ ®kbC`aµŽÛù¥4Ê·'®Û¶0C‰ª'ߣ[ ä* f#€ Ð ‘ð†h ÃÊ îíò€°…J¤dÓ¾Q +k½Bn‰ä„Eéô{âÆm3“†¼æV_T¶Ð×äÏ ¨º¢ô"§ˆÄ@f ¥ÜÕÎ(f®µ�£ƒ¢-u9m š4´¦f—›Áf A“†„¡LÅŒ´0 ++ªð2*²…‰ëD¶Ô-Ìì-ÌìH& ÂMÖ¥N °P¯™¸C´@µ¥ÜTj÷Ðs-ÌìEÌÈYõAµ»ÍÌ~H¡¨<a~Eþ…–‘iÔÝÞ±0³1sèÐ!ª›‚Ü7Ö'¡À;P„H'Z˜91#ôµyo +(‚™Ã‡;ÊÂÌÅŒ¾n‚ó®o´@xn3§f¢ÚÀÌŒÓ!Q[!pÖè–’ái馽‹™8}mBQåƒ:ËÞë˜1ÓŽT+8õy“‘f–¯½1TïÐ9eœkÆñaˆÁÄeÑ8¥–È+¦··0ÃÀH¥À6(ÈeÆ«Ïæ;PæPÌ0)4Á]œla†ULÄ�†NSP¹~.,’:$4†3f—³…'3”˜œ+bÌl+ù-ÂqEÅú“ ¸–…°…n»„-<Y˜¡|Øád‹3•¡¡ ¸0—¤‘gÍʹÚ+˜¡P¡%NÈÆ ûÎпYŸƒ9nÏ$Ïbà]Â!Y˜ÙaXJ”.|ªïbŽ¤AÍ}AxT®v³Ó´caF»d{[}–ãìð#ÕÑV4&[„+zeØî7fvÎxÌüÉ ¨l¢LªCy¼ËÌ“0ü+üˆ¶ &»»Ü˜Ù9³1䃥–#÷™) øþ8…&¬X2T1w}4Ћ0d™“¢i +ªYà�µ4‘þöAXñ¹‚Àc +‚MŠS.xЙ‰ + ++Þ \8(ƒ¾6´ŽÂŠÙVNKî‘ÿmÌ•ëHN?Ìð&(™1ä`´ (Nš…±{…Lˆj‡ÀÅ+T1•C_ƒ»Þc"¤ƒ™°HwG5µ0Ö=ëõE,õ’xÀÁÓaõ1̈Œ‡y‚Šœ=Ê#E4ƒxmD˜SÇú˜a¼Q†Q§ä|`ˆ2;4ÞKT¶–Â@ ÀúB†7¦–%*d‚{!”·£qp%£ÍCà¤#Š‰A3¸¥rRÏ!?‹£íCÈ)1™TÛÊqŒÈ5EBÔ…ÁY¯AîT´]‚ž‡Ì¢#Uí$ezª3£ÂÀüÛ‡!ÀË‚Ü}4‰":pú zSAKPªŒ&šæU†ÕQýúbÊ°%9&ŒÉ¥môDÇÛUÇ×ÙTá$ê0MM– nš=ú¨Ð"³@Oû'ž¼ 6á÷ªô*Dþ$š“X¼ðìhÒ7¼ª5…(j¶ÁU•‚§TÈð’òð½QN’uG"ä¼J²è ÷„ iBŽñKƲhËäP\z•=›7Dnn"-¨ ÙA²ÉR!] ++Û@´·Ln•q9óˆþKÓÈ)%¤TAwAl“âÂÎá$Í®'C€;¹!pÚ?³jøÕÄ3b¾€ê Á†,´×&šHûdtL–&/AîbJØUQkaŠbFCŽ¿ðøñ3P¶PõMe2a#â!†d™“ëöÈ6î pi¬BÌð‹KÈ^8TD# ’pÖ]‰#Š z%}á´?ÔÖeºª%WùáoiŸ¶ŠÃS¼VÚ91F¼À'kí.é6F(RNPÿÉ{4•rÕ,1sš¸U¢ rSmBˆŒ‚¹ñ6ûáƒÀ]b”‘ÖÎ?XF‰‡Á¾RH}˜Õ¶t‚4â?·à‹˜šƒ‘„dirë+•ÌtÅë¡…úJBÀðrF‡aN+…Ð&†^zKâÃAå:ì`tB!ˆÒþ–rE;éùhK!:³p¤FÖ/HCàÔˆm%á<¨XJ´ÁS}‡)UI0Ä—¤8ÌDD¦Œ0rŠ‚`“%¬^q¦,À°Ú�ƒ%Iu}úwJX„$SAuÒé¿9£E¨ª„ ‚"‹"'Öémê+¶O!`ÎížÒôfq‘1ÂSýƒàÈ8F’õ‹AÌÐUíCú"h‚±¦Ã1?gÚᇦeœÀî…¸x&ÓyJP Ñwω£D%1cNùÕ¥ŒOMC¡ÂˆDÈdúš™YÈŠ0gþñ梇aµ mºp±o›'ô迹0/ì-ˆFø0ÇЂoSÀPËŠ˜1§ÐWÚQWå爨$f¤Œ‚KZh3BĬ˜àÏá:¥®Ä–hCgË<ñca„²Â•2Ƈɳ>Ž~G0;§hÿš2„à�é?y_'BÉÀ¯ JÂUÉó3¬Vñð£-%E¶'Ážl+W¼…Õ8Jø¦CàB�óptôO8`ÈëSú\&5†Äi\7¤^Ú!mu9© !1-Ãv˜ßžhÓ Q„‡¹™Õê d–HÃê<ˆyJè#j Àm0§ÊŒ¡˜ ª‹,È6 +¿‡Bˆß /(¢ÂœL€ìâ!¿ üˆi6¤6œŽ8^€„4Ðúì˜N÷)ÇØ„ˆ°{�1¯S¤ðƒ 'ä’{¯„_ƒ…¦Å[FëÑI„ÕIMñ …!¨òhãÂy‡"‚‡ £qø¥Äð“ºHTÔ9r„QyÀìÌвtÚ1ºõ榞5%†:ó|¡/+øïÓ×ÐЊ“‚Š[MG*´^à@è×Õ‡Ãð®Ämå~I^È·š½»03A6O¡N^ÀáC´l©†±«ÆÕ½Z„2øI,fBÑÄÓ +!ØúÑ6HXÝR‡yi¸ƒñ’N9`v!g(£˜/óö†Qˆp‹Ä}'BŽ…v›™î0TæuX-l™¯Ñ¡z ‚ÝO¸lƒJàng7¥…Ç`Ï„8-dQˆ3f˜éàYÊãS¸BCœÄK,…8ãmKí-2¯…¡-Õûôpm"—¢•KôQDzw`vÌûM! [ xèHa6!µä®bØóø)ÓTÌÄ@$ÞBæ[#2¢…Bˆ„ É~+/^v›>‚s|†aó/cö0 g‡_Ì,ÀßÂÃ@Ä +v–õ%$|(ó°Z¢h–!ƒäMollñB¤ý.ÔGLÅ9ÃHøb[¹¥ˆyÁ …™�¢/ø§§)Q$Ä’B(ŠBŠ"$¦£h!y†4-pWùG:dv¿‰L"ZäÕpB¹ˆ""MŸ˜ï󯃜ݻ•v†Ž”‡R¤LA1õñãÇi†iŠäB´@ëegWê#†Lík‡¥ô(L‚`#˜þÉïǹÝ,|3žÆ<” +”ºÛ܆xäólK©h*G%bdÎE¡Øòghä¡€t¦À8Áƒ%äøGÕþNXÊåÞR¼!Ê“mQðŸ2Zh®±[`‰Í^A%ƒyzÄ&T²ÚÎ0¹µñëa²î)!ÚŸ Èü$1x>räMn§P!.a/–½B1äWýˆ˜ÖŒ“GMïAJ+%(XhDPɽׂʎºŽl/ÕPAíºƒ (ß`ÉAˆJ`æÿî¡#1ÈAc'ñ7Ä W!ÌAKŒðŠØ*ˆ<T‚{Ên‰Jt AcõMAIðRJ`…Ñî!8@ +‚Ú¢8ÑÊéHŒÀÑ©£¤´(QÂ+w‘¡ñC¦ð€Y +$Z89ý Ž‘_X¯}~/ ø)ÃÀÓ'<¥&òæ©š©ÝF:Œ:Óp¢E<[,‚tªçÇ"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²È"‹,²h/ÑYYd‘EYd‘EYd‘EYd‘EYd‘EYd‘EYdÑiC/9iô¢ôûÿ%œNúän¿ÓËIR‹/ƒ8 ]Çý~ÙË^þò—¿B¢W&‚HS¯@¾\@B{þÜ󗣟}Î9çž{îy‰"ÔÖ¹çœsöÙg¿A@»/1õüìsÎ=ïü¤.¼ð"DÇOItá…$%†qÎÙh&Ð�”î'¦ï¨ë¸çç%]xñ%—]~Å•W^èj]e”®¼òŠ+.¿ìÒK.¾ á|i�¯ ÝOó1`P×ÏKºè’˯¼úÚëoHNNI¥”&¤Tc”’’’œ|뮿îÚ«¯ºâòK/¹èBÔU÷ãïúËP×/¸øò«®»!5#Ëžípäæ:er‰ÉI)WŽœœl»-3#-%ùU×]sÕ—]rÑR÷Ò{Ôw©ë—\qí é6‡Ë›_XT\RRZZZ†¨QKøMôY)¡*..**ÌÏóy\¹9öÌô”®»æÊË/EÝ?÷‰ù¸÷ñô!æ•ç&]råu)Y¹ÞÂÒŠê: ¡±±©©©¹¹¥¥µµú»µµ¥¥¹}£SƒþúºšªÊò’¢|Ÿ;7;+=åzÔýK.LBÌ—zë ÛÏ¿èòkSl®ü²ê@s[gwo_ÿÀÀàÐÐðÈèèØøøÄÄ$¢)Døÿ'ÆÇÇFGG†‡†úu¨QoOwWg{[Kc ®º¢¤ÐçvØÒ“¯¿ú +Ä|©÷/£÷/yÉK_öÊs/¸ô겜õ-]ýÃcS3³ûæöÏX8¸¸´¼ºº¶¾±±Ihcc}}mueiñàÂùýsûöÍÎÎÎèÒôíèð`_wGk£¿¦¼8ßíÈJ»áÚ+/»õþ•¯ˆ8dλðòkÓròÊê[{‡'gç.¬®ml:rôÆ›n†·NÜzÛm·ß~¢Ûo¿íÖÛáÐ-7ÝxôÈ¡Í 4ŽÕÕ-Z]•>]F#=°ßôÄèP_gkCmE±ÏiOOF½¿!ç•8±öýìó/¾òU™®¢êæž‘éù¥µÍ#ǤNoßzû÷¼úµ¯àÁ7¾é¡‡FôÐCozÃ÷¿î¾{ïºãÖípð曎ßxL‡n”éØÑ#‡7×Wì›èn Ô”¸³3Pï/½èüsÏ~E¬¨Ç}?çüK®ºÁæ)o˜Ø¿´~äF‰Ù·Ýy÷«_ûÀ~ó[ßñî÷¾ï±÷�Ñû{ß{Þõö·<òЃ¯¿ïž;oGý…‚š +…Ã[[ÛÛÛ'Nloo¡É:vx}i~fl ³¹®¼õþ†k®¸çå±áõýç$]rU²Í[æ_Ù<vfùwÝûÚûßøÈ[ßù¾~äãŸüß'?ý™Ï~ö3Ÿ~ò?ùñ¿ÿ=ïxóC¾îÕwßqÛ‰í°¡n#´Ý~ÇwÝ}Ï=÷Þ{Ï=h²¶n9¶¹<?5ÜÓR_Q趧½ê*œscĘßõê×=øð[ßõþ|òÉÏé«_ÿæ·¾ýío}ó_ýÒçžüćß÷ŽGßtÿ}wß¡ÇxÄuÜùÛï¼ëžW¿æu÷?ðàƒ>ðú×Ü{ç‰à±õƒ3#=-ueùά”k1ëeÜÄÐw"ÔlÝv×}<üÖ÷|èŸþâ׿ýýýäg?ÿùÏ~ú£ïûë_üôã|×›ßøº{î8p ‰øo<~Ó-Ò"ìÝÿ†7=üÈ£o~ô‘‡ßxÿ}wmßthqv¤§¹¦Ä›~ýU—^[çy9³ïÀâ +Z®7Þ²}ç}>ú®}òs_ýÎ~þ«ßþßSOýßï~ýó}÷kŸûäßùÈý÷Þ¾éè!IÔĖŽ;~ËÖwÞûÚÞôÈ[ÞþÎw½û]ïxš²{o»åÐâÌPgCE3ó†«/»èüsbè¼@¾OÍÌ¡þoÞ~ßßöþÇ?÷õïÿô×OýñÏÏ<óç?ýþ7?ÿÁ7>ÿ‰÷¿õ ¯¾õæ#kKósûD‰ý}ûææ\^Û<zSø¶»_ûàÃoyÇ{ûÀ?øÇÞýöG¼ï¶›7&úZjŠÝ¶”k.GÇ+Ö\ç½ZhnïêíŸÞ¿´yÓ¯yø]ùôW¿ÿóßýñ™gÿþ÷¿ýõé§~ùÃo|öcï~ø5·_?¸orlxHC·bÅ<<:>5;¿¸vø¦;0�ßýþìñÇÿ؇{×›Ñào\Ý7Üá/óf§^{ùŨó¦9ÏÚ3•5õFdôMì_½ñ¶×=úØ_úîÏ~÷ô³Ï=ÿü?þöÌïõƒ¯=ùÁ·ÞûñÕ¹ñÁžŽÖæ&IƒÍœ¦¦–ÖöÎ43Vß|âžû~Û{?ôñ'žüô§Ÿ|âcx×£Ü:´0ÞÓP‘—“vÝÇ�ÆŽtûò‹JJË«j-ÝÃ3ËÇïxðýÜ·~ú»§ÿöþó…çþò‡_~ÿËŸ|ïC÷Ü‚xÖÝ⯩,/Ø’¥’Z^YUSßÐÒÑ7<5¿z4tçë~ûc}â3Ÿÿâ—¾ðÙO}üïD“wliª¯¹2ß:o®ïŒýž“ëtû +J*ým3«·Üû?}êk?úÍŸž}þŸÿúçsùý/¾ó…¾ýõÛ›sCþÊâ|¯Û%2â%Ëßíñå–TÔZ»‡¦6n¾ýµ½ãú_ùú׿ö•Ïêcï{ËwÞ¼:;ÐRU€:0¤iÆGü¦k®C~SjZFV¶ÓWRÓ:¸oóÄï|üKßÿÕå¾?õ³o}æƒÜsÓâXg}iž3;+#]ËJKKÏȲeçºóŠ+ë[zFö܈–Ï;?ôÄç¾òÍï|÷;ßüêçžøà;ÞtOh}ß`k5êüµ—_tÞÙf×+ç¯^…<¿ä4»«¨¦}tñæW¿ùCŸûÎÏÿ×üó_/<÷ÌÿýäëŸzïo;4Û×€2g¯½Fè¾"§öšk®½îUÉ©6‡§°¢¾jñÈö}¿û#O~é›ßýÁð½o~ùɾûáûÂh +[«òsR¯¹ìÂóÌ +'Hºà‚/ºø’K/¿òÚä,WI wöð=öä7úÔ_ž{áŸ/üýÏ¿ýÑW?ù®ûÃ+ãíÕù9i×_…¼P8Á%—\Š8qÕµ¯JÍÌñU5öŒ8¼ýšGÞûñÏ~í»?ú)ÒsßýÚgï#¯ÙÚœl©ÌËN¹úÒÎ}¥iÈ«ã3çfಫ“í¾ªöñÕÞýÄ×~ü»?ÿ÷ýéßüðËûkn>8ÔTêʸþÊK°÷¬AçŸ#&_zÅÕ×¥dææ•û;G>ñº7¿ÿ‰/~ë‡?ûå¯~ñÓ|ãŸxìQÔù}Í^Û WIëÕ¼”q14‚sÏ¿è²kÓœ¥MCoyí;ÿÊûôߟÿçó{ú×?øÒGßúê÷÷ùs’¯ÂVàÙÚ±³¥©D|¸êúT»§¤®cäÀ‘ÛîÛ‡?ýÕïýôW¿ýí¯ñ£o}ñ“¨óáuAwæõWÈ7Ów&ùò—¿òdã$gúûç¿úûÒ~óôßžáù¿ýé×ßÿÂGÞ|ÏÑ}=µy¶ë/džÈ˵ƒ‘˜¯<ûÜó‘»A°¸®côàw¾ñÝÿü·~üËß=õÔï~õãoé‰Ç¹/´:Õí/ÎM»ö²Î5Íxuø¥X]]pùõYyµ=ûŽÝóæ|ñû¿þîû³úÕ÷¾ðáGï:2ÓUíͼöÒ$,’_ª&Œxêý…—^õªLgq]çÄòÍ÷>òþÿýÊ÷þÛßÿñOýú'ßùÒ'ß÷?÷Þ¼4ÞQ“ŸŒPcžñ°ÿ’à9'éÒk3½Õ]³Gî~ôÃ_øÞ¯þôì?^ødzüÕ÷>ÿ¡Gî:<ÝYåI¿æò ú²@º›ª%þžéõ׿í#ŸûÖO~óû?=죟|û‹¿çMw;0ÜRáÉDS‰–k‘—Ãø’k2<U3‡ïzäßÿð¤ïßE}¿óÐtG¥õý<$´Ý5ʈ—a«ÙÙYžò¦ýGïxÓ{ŸøÊ÷ùÔÓȺûÃo~òÏìÜzh¶7Pœ›zÍ%I12>Òù—½ò¼‹¯NwWvLºó‘©ûþ?wšB}O»úâó¢óHžFl2]•lÏ«j[ºå¾·|ø³ßúéoÿô—¿þõÏøõ¿ñ™½å5¡•ñŽê<Û«®ˆ“ñgÉ}OC}Ÿ:tçÿ|èóßôýsúŸ;MµGúÄÞ»àÒkREõ=³‡n{ã{žøêý‡gþö·g±u÷Õÿ}ìỎÍ6–:Ó &¬ïŸãû^á2Úw„¯<÷Â˯Ëp—7/Þ|ß[?òùïüü©gþöÜsÏþù©_|÷‹çýÛë“5ˆññ¯0Ôj´¾W´Oº#î¾++èâ+oÈ.¨ëž9tû›Þ÷©¯ÿø·È°þÇsÏ>ý»Ÿ|ó3|ôÞãKrS¯¾ø|dıZå¾»ÔwbicÑ•î*kY +¾îíÇÞ_ÿñÂóÏýõ¿úÁW>ñ®¶×&:ª¼™×]†$o Ix߉oyÞE˜ñõ½sGï~䃟ýöÏOŒ¤gqúYdœÃÚ:û†+âMâû.‚.½6ÃSÙ>±~â ïý߯ÿäÿžyî…ýi¼_ÿàË¿óõ¡åÑ–2gÍËbÍÉè»Äø‹¯Jq”4-b#éË?üÍÓá_ÿþ'²¬úÍ'{èöÍéN¤®¯»4.ú~–„ø.•=¿®wHYÿño/üû?ÿ~þÙ?þò{_øÈ[îE&^}ýU—_àONß‘¨Á ñVuNºãá|öÛ¿øóÏÿû?ÿùçsÈ-øÊ'h‡›JÉW^àOJßåFSåãk'Þð¾'¿ù³§þúü¿ÿûŸýã/OýôŸzßN¬·–›m÷Å軚s/º2ÙQÒ4¼¾ÿÝO Åú—üû¿ÿý÷Ïþáßùì¾ã¶ñ2$Õ³Yp’úþRø²‹ƒoyÝ;?ñÕÿî™üë¿ÿßþùwl[K~AwO^¬»«ï/A–õ—]o+¨ï?pÓkÞþøW~ôÛ??‡úþß=÷ôo~ð¥½õÕÇ÷÷ÕåÛ®¿lWöýì¤Ë®ËʯëÛü¾·}üË?¤}ÿóoø•Çßþš›ôûì×_vÁ9»²ï—^—•W×»ÿFäI"/÷ýÏüîG_yü¯½yaÀ_( É=Ó÷ã¾õ»¾ïfzYÌ<ƒ<ÂÌÍfviß•µ:ϬÕ?ã¸ÏÛî;>ßW¿;×*‘‘¯²AeäÓ¿þþ?ú–{ÍõÔæeíF‰ú~î…W$ç7/…€núÏûã/Q»ÜuÇN2®Ýº [ðW¥:ËZÆV·ßðÞOÉ6Áÿýü_ÿ³o~ú±7ݶ1Ù^aØ~û.-Õó/¹¦6oèýŸùöÏ©-ö» ‡h—GšKsS®ºh×õýÿ‘¥*ÛŽÞýè‡qðA²d~…àþÖûn:0("ŽÓ®²%3›b9Eh©Þü$" øҎľóðLw ZªÈaÝ]¾‡kKs•·ŽDãÿ{×ÕT¶¶g¾uÇ3Ö±Q¤÷J—*HoB$…€:R‘&E:(]zoR‘¢‚ˆ"ˆ(¢¨\Ë|÷çwö9 £N +¹Ëoó¸\8$;;ûìý¾ïó>Йoáõ³Ða;5ÜÃöØQr¨ð:óÁ‚߶ü¹ŸWRÕ=*; œµ^¯¹äMèèÁÈtgJŒÐ°r +ÉkYž:“˜_ß=üdfþ݈q<ém)M‹$ÙªH;±)Æ'A`lÿ!qe;ψ´Ò–><DbKcw:k.'œ9e¥£ |•Á Þ:sGò ›0Û¡a—Ó2wˆÍîIÛ·‹‹ ¦7ÜÓTréÉÞHUŠá`êúr‘`8ñÏÂÆ+©rÜîtxJQcÏðÄ‹Ù·ó³äXjlàIK0ì{v0´Ê¬3w˜ú†_¡TEmK—€ØœÊö‡Ogfçæf_>}x»³&?)ÌÉaoý‘ÈÒúr‡' ¾s§ Œº±ƒWDjQC÷ÐøÔÌ›Ù×/ŸŽÞ½ÞPt)ÒÇÑLSNvF>©ëÉýçåœÿV~I}·3ñ¹•×úG&žÏ¼š™ž½ÛÝTJÎÙˆÚ¿kËï´¦XiçNMÞƒ’²¨oÙÁÊÎ'~D×ÒÙ/:½¤±ûîèäó/¦ž<¼ÛÝ\–çʤù9vSRXLã¾:góõ|ÓJÒ $›6mÞ²“TÓi™á½Â“®T·ƒë³g“ܨç$„Â9Ja8GÉØlÿ>w8ßDΕ}/Ï÷?ätóÆ_Çlûs¯˜¢¦ Î#$>»¬¹ûÎÈØēdž®7AÔüðä†iâžç(¹¿—_…“Ì6ü²qÓo˜-;XöäWÔ4¶#ŤÕuôŽŒ>ìíl(͆¨Ìuƒœüví9y¸ß¨EÎ7<ûvnùí[ymÝ߸ñW’ß¾k· äa-c¬k@Tj~eËþÁû#÷‡ºÛj‹3ãC½ºôÖBÐÀÉkÇ‚œ¼Ë6"ãø”R‚ß@MÅŽ]{ä‘QÖ1µsõLÊ-kh¿Ùgðî@OgSeAÚ…àÓxs@®š¸#gâ@g󣲂 DíYN³ +p ³eë¶îÞ{à ¯¤‚ú1s{7ÿs ø§¥ófo_ïÍ®ÖÚÒÜäè@w3%IèɶÐ^ûC=wP1ÒÓPjP‹bß³kçv²žælÛjgXX÷ààâ–WÑ6²&xF&fV6´uÞè¾ÞÙZ_Q‘îçjg¢}¦NGÍMÜß@§„¦¢”³Ðr,#Äñën–¿c7++¨Þâäâ•”WÖ40·sñ:u1³ ¼¶©½ýZK}eqNÊù/gCME ~˜:͵n4q_‡âÖ«é‘Þ3í#RÂ|@„Âζììœ\܇øE$dUµôÍlÝý@^AYuCsKsS]eÉå´øw¼¥¾º¼¹º“®¢`ê¸/}�õbc·Û+²/ºÚ="#."(ÀÏ·üü‚B¢âR²ŠÊê:ÇÍlnÞg"ã/å•U×546ÔV–æg&E‡NbMuUdE ¹GgU-õÜA}$t<몽*¬Žkª(ÊÉHIþRÒ2²r@õ¢uÌÈ–àê~!9óJIEM]C}]uYQˆ�GkCÍ#RBÜè®f¦ûÇ÷ó3O@ò?-:€hoi¨«©®¢¬¤¤´Z@=TRVQUÓÐÔ9vÜÔ +K8å阖[XVU[ßP_[uµ ;ùB˜¯›ƒ¥†¢„�(Ħ·ŠœîKoÁÙ²µ<'á¬Ï){kSC}=²Ph`q‘þq#S‹v¸œ6ôúƦ†:˜zL˜¯«½…¾º‚8ÿÁý,tÀÓÆ}áõ³‡p=𯓶Væ¦&ÆÆF«aÁÄÔÌÜÒÚGp!’B£âR²2æ榆šò¢ÜÔØp"ÞÊਢ¤ <aÖk®‹ûÂÒ§OAÑEW}qFÜY“œ-Ð9…µõ [;{‚³+(DŒMθ\\^SßÔÜÜXWUz%óbt0Ék¢£"+ÊËÝßèMÐÈ}öùØàÆÒìÄÈ o¢ÁHµ°¶«�=ÄÚÙÙ;à]\ݽüÎœŽOɼT# õ5åÅyi ç‚<lŒµ•eÀó_ä>=>ØÝx5çbT°ûI'¼=g·8DàtÒÕÃË7(,26)-'¿¤¼ª¦¶¶¦òjaî¥øÈ /hyT•ÓÌz¥6´qÿ§qGbOpÈ_¸x)ëraIYyEùÕâüœ´ÄèP_7¼µ¡–’Œ/ç>ðYÝô˺‘gl¾#‹s€f<˜6aQ±Þ£ ¨¨¨àrNzrì¹3Þ®V†Zʲ¢|œ`ä73¢/ûgîT®3++…Õ h©?°!çãÎ+7//7'óÒÅØÈ`_¢£‰®š‚„�7«¬ßœgh}Gô£zzú†Æ¦ÖX§SÞ¡ç ú@*”•™–œpþl ×I{ËãšJÒ"¼Œˆœ¨æNÅ}¹³*)ƒ{«úQ-èæjbqçxê´øØ&¦@ìs²3ÓSâ£ÃüO;cMõÔÄ9QËÚý¼§A65‡•T5´šYãœÜHaQqIiY¹—¯\ÎÍLMˆõs'€,#"'*¹S»¤l&‘ݤ$,ùЃ6eŽnÞA’2ró‹Š‹‹à'ÄûÎ\O‘uÜ©Þ¿“7ñ`‹–|ÈVÓ>nu>íJÊ+«*®å¥'D1*r¢–;µç&òé :>íÇ'n^AQiEUèàçî—–Wín }|E1Eä¤M¿È‰jîTžW¿8¶É7¿ˆôa }bÀ9èÔZQßr >ù1,r¢’;•q‚•pÁïdÉÇŸ»÷±sˆÉ©ê™;¸F§ä•Õµuußìîj/cXäD5wjâ3kã4ˆäcÇ!ae]süéàØŒ¢êÖë·úú{ºZ9QÉê¸ØW$¬¸…¤•õ,IgRH´z9QÍÊxäZÉǦÍ[¶³ìç”V9fíÄ65í·îÞøpd¨¯«‘Q‘ Ü©‹¯•|ü†Ù¶k— ŒÚq[·3±ä`ðãñG÷WDN:t‹œ¨äNUü}ù‰VI>6mä…å`½Jr~mçÀýñɧ“PDN+ìÌÍÉS«÷ø‰"ùø×/€ü~QEKÿ˜Ì²–[÷Æž>ŸžzB9‚ý"'¸Ó˜&gX·ífã“T1Àº‡%å×uÝœž™™FDN qcË È‰ÜWÒð^娙£ïùÌò¶¾‘'Ó¯("'8af¥{˜Q‘sjPÈz±#ÇlÜC“ +껇Ɵ¿^9]:çM0÷<†ÒòLªÃ†Ë!v³Èh˜:úÅdW¶ß}öjn~þß‘S¨»²Ä¡ýd ]ä™TcWïïÜÇ ¼ÇÙ”â¦[#“3s‹d‘SyVŒ¿³9P—12ðLáNîã° .]2wŒË‚dXä´0ûâñ½î†¢”ðÓvÊâ<p +54LâNxqåã8RdFÙµGÏgÞ/½ûfêÑ펪œØ�hàe ¥†ºå÷¿ÆÒüc7§‚Žµ[hr4ižæ‡wó3“÷{šŠ¡“\wµ—~½ +“¸ÿD.¼¢èU@ÞÄÌ<è|°8;=v§£2;ÆÏÑD]Šeó¸“õ*bJ8RTfÐ|̽ûDN ΰ¡0):ÖÈq즻¾“iÜ‘'ÞÍMšÄ°Ô’–¾Ñç³ï>~"§ç }@z¤—’RWKWa³¸¯LX ž”àOß,~øüק¥ù™‰¡ë5¹à\ë&þ ³|‰‰Ü‘ú} Uc‚ß…Üš÷ž Å©ß<ûœ²Ô‚Vº‹S™Ç(ã¢`0á—‹‚È ôœh»šîa«§(ÌIwQ0Ó¸SŠ±¡ ¯gã‘VvíöØJ1öãÁÎʬho{òÁ†¾ž™ÜWÁ§”´öSŠà?.¼†eÐAÞ�DN{wÐùae*÷ _¬ˆœM91‘û¢ÄÂÆÞ‡Sÿ¦…(‚F+Ìå¾"¶IÈ_Û|~?7=ÚßRœê +-4ü?,w rRCDN=d‘Ó>/ÍAMkIj˜›•¶œ�Û®ÿ_Ü_Œ ´•¦†aî[6ýò#r_ž3+-2÷ÖœûZ¼Î s¦¿µ$š3Z@õñãÍ™¯®‘ŸÉ¢¾Ñ¾æâäWKM™ò³ú Y +64g\Ì5¤yé‚2}O°V õX<¼.Â8fîÅ(-"К˜yûá/ Œ{ûêÉÐõêœ_¼!#Â8¦î7efY 5<ùzáã_`/6÷büN{ytøЧóMe6wpöØÅö¥@âŽ4)èk–â yAº›0ïÌO艡éNhAKä_ÿㆻë¯$¹˜ÃÚá-tê˜'€5}ªF>ç³*;œ_úôÜ_aünGeöy$Dwƒ‰ñ¤Ÿˆœ–ÅÉ „+pOŽ·°´Œëm…qzpoz›¡07.Búp³»–¾‡Sà¨ýùÓûù—C7j0ÎÆýPñ$Ç#e@ÿœ9Uˆ¦ïã§OÞLö·•eDÁÂ8ž}ôã˜Ãme‘8°{¹oÑ[¸¹ãÜˉ{ÝõùCܬu„AÓ%zµ”LÊ º8AÙ£¦Ž ·#Ju9o_?{ØßVžíC€Czô-bJÎÑÅí:À+¡¬oëò÷&^ν[ú°Z. ݨƒ†xBï0C¡ÔeîëÕ£k¹++¬‹SжpöÃ> +¤”KK‹s3“#½-W3À°kHó#V:¥BëÚ×m•¸Œ¬‹3²÷O)jè¾÷øÅì»÷‹ó¯žÞî¨ÎKvÃν— ëÏ«¸#ýôÖ浩ï§GI¯n@¨sðK‘uqUí Û´°¸8ÿ]6¥Fx9©#ÃNwô¾‡€Ýž˜²¡ƒï…µ½�©íc¸J]§µ·BÔù$”t-]üÏg”6÷OL¿™_X˜3ýx¸§åjfŒ?h©'Íö?èi=ºÒ?ië¤b„÷»À@ÿH²ºŒ,.ÛËÉ/qDÇÜÑû\Ja]×GÏffççç^OOÜïm«ÌM&Ú¨Hò²±Ðš”_y-JßN¸•€±£?h§…ôí|OcßNJÇF¸s'Ëþƒ’G´Íðža/W]뙘ÉÕWÓ Mõ•¤p/ YANXJð/Ñê~© œDÔƒ(9ýRuÜyˆËx„¤•tÌN‡Æç”·ôÎofžCÔ;jR#}œ,´E¹÷ÁYmê‡ý+}j·ìÜ{PH^ÛÚe6Â-Ø�wÚúÔ"UK›ÿغýOÖùDåTõ@›ê¸¬ÒÆw>y:¦>¿Q/¼íÒú˜’4c¶Ñ"ýùýyÅ•ôm=Î’3+‹>.ÑÔ˜Ü xëö,{p’RÔ0°rô‰Ë,©ïì¿?þttª}t¯¯£¶(í|€«ª´�+M3æ[}™yD䎚à}¢2ʯ݆ÛöÑØ—™Ò˜yÏ~v.^! yU[ï°¸ÌâºöޡщgSSO?¼u¦0í| ÖP]Vˆk/¥æŠÊ óµ~ØlyEdTõO¸Åç!íië‡Miˆ½Ÿƒë€ˆ¤¼²ÖqK7¿ˆ„¬âÚk=wGÆ&&''@ÑRKUþ¥hˆº‘†<ôNîÚJÛŒùjr! 0; ¤èx´pxOcò•Fä°¸ÌÀëì•”]RÛÖ}4ĬåyÉ‘þ®X££ò¢<Xh*¸úvÿwcæÁqÙåm}ž¾¢ÿûêð‡U4t ÍaYÜ…ÔÜÒÚÖ}ƒÃ>¸?ÔßÝV[’á{ÒÖ¢~ßÒ°Æ|»ï¾‘žZXÛugt +Üš@öKªúî¯i¼obeçDô ŽLH¿rµ¶µëÖÀà½{Cwûov4Vä§Ç†’œO×€©ƒ= +¿ãwàäpîbnyóÍ¡±©×ó´ø †ºË†.î ;9« ¬¶¥£»·ÿöíþÞêâœäè ‚¥¾šœÔþ¦Ï„)(21³¸¶½wx|ŠfŸ‰¿M¤å–Õ4µ¿ƒ›Ý]ךªK/_Š=ëëŠ3ÓU–æ9€P§é†ú- KHÏ/oìꛜ~õ†ØàÃÉÙå”›‡—,÷HÉÌ+*«®on>mÍõ•°Môî0Ò<")Ȥq0ušg}ÓWªÜ’ê殾Áã4úªU¼}ýƒÃÎK*¡Ò + Ðjjl¨ºZ˜›–L:…3?¦&/ÎϹo×vÔ)%-_÷³IÍÊ/nê¸ÙûÙŒÓægül“Ó²r•REeeeEYIa^fJ\d0¢R’^Q—ѤqúŽP<ðq)©¨kn¿¾ì#4@½l$t.2úB\brjzVÎåü‚‚ü¼ìô ³!¹â�pBÚL»¶ì{þMS3rò‹ËªÈþMtù7G,`ë¬ÌôKɉ±Ñág|OŸ´‡˜aƒ´Vû¬ðÍJÍÈÎË/*¹J¯oVxÄ>&6.>!111!>6&*<$Ðçô)ÖÂPGí°´ßÁ°2‹}Ð?û•]¤Û¯88 …Þ‚ˆè + ò÷ñ$ºà±V&úZª +R"ü\Àö‹^E5>qtùÄ!+ÉÛÛ�ºø4ñ”3Þî„…±¾¶:bÇìÖ0ôÚý³?Ÿþ|ØÃÉÑÉÉ‚“oogcenl «©vDžbÒ·ƒ›;fú"‚{+ô<–Ðuæf¦Æ†zÚGÕ”e%WÌ1Ù2ÍrY—.Ñ<ª¡¦¢tX^FRLX�1¥Ü ›RndÄ”’y> + +ËWÈÉÉJKIˆ‰Bû}N¶ý3Ð_bþµýûºù¯®\!Hqae[mºl!KóŸÖœ›Ö×÷vÙþq¿ÝÃÊthëi~ËL¿á¿¹¯³é0³|žWÛ=“Ýžaõúš=¯Ï¬Ÿ¿6ŠËöÆe—íõ4ÙfŽ¯ùZwó6_ây&ùÉ#Xq•ÿy}y¯°§Ä™€•¨ö:ó^ßi`m(P @ +(P @ +(P @ +(P @ +(P @ +(P @ +(P @ +(P @Š/ÀÍAÄ«ãH8Œ…†[E[ +=6Ây‘ž}Œ7FDE[LÌ„àGb—Lj±‹õ$L‰xwvAŒ(x„s#hñ?ä±1ÉÝÓŸòXœ]üž +‘ä‚suÁy¹ ï*`0rì¼|ìæÓU_‰²‹±‹Â,ü1ð?xŒ4ù§ÜØÕ$¸±¢_Ð ?^E„+¹† +7öëd¸± +Ð_ø<Iê.$w"ÎÓ~è[ž8äK^mvo’;;2..>ðžËOÂΫ‚w·'`U´å°ö^O«KðÇ"yñ¼–t-ÑÈ..!ÿçVÿ×D¿;¾RÔŽïšáÓS]~_õpþO!!7÷qœÁÄçâ +½ÍN^8;ŽHt'áHè'ìNž/èµì^Îî¾à;ЯP.‡fŒÁQÌÿ‘ÐÏ endstream endobj 42 0 obj [/ICCBased 51 0 R] endobj 7 0 obj <</Intent 17 0 R/Name(Layer 1)/Type/OCG/Usage 18 0 R>> endobj 17 0 obj [/View/Design] endobj 18 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 16.0)/Subtype/Artwork>>>> endobj 33 0 obj [32 0 R] endobj 69 0 obj <</CreationDate(D:20120721104759-04'00')/Creator(Adobe Illustrator CS6 \(Macintosh\))/ModDate(D:20120721105526-04'00')/Producer(Adobe PDF library 9.00)/Title(gemini)>> endobj xref 0 70 0000000004 65535 f +0000000016 00000 n +0000000159 00000 n +0000053781 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000235886 00000 n +0000000000 00000 f +0000053832 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000235956 00000 n +0000235987 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000089666 00000 n +0000090025 00000 n +0000089479 00000 n +0000236072 00000 n +0000054286 00000 n +0000054707 00000 n +0000100081 00000 n +0000074155 00000 n +0000099852 00000 n +0000099965 00000 n +0000055769 00000 n +0000054769 00000 n +0000235851 00000 n +0000055208 00000 n +0000055256 00000 n +0000056063 00000 n +0000062268 00000 n +0000076983 00000 n +0000056126 00000 n +0000062312 00000 n +0000074190 00000 n +0000074335 00000 n +0000077097 00000 n +0000077160 00000 n +0000077190 00000 n +0000077451 00000 n +0000089367 00000 n +0000077524 00000 n +0000089550 00000 n +0000089581 00000 n +0000097665 00000 n +0000090238 00000 n +0000090509 00000 n +0000097968 00000 n +0000100155 00000 n +0000100351 00000 n +0000101337 00000 n +0000123424 00000 n +0000189012 00000 n +0000236097 00000 n +trailer <</Size 70/Root 1 0 R/Info 69 0 R/ID[<47C7CB38F0FA4BA7B39CDC2575345E54><635F474D90264B5E96E989DE074BF7F8>]>> startxref 236281 %%EOF \ No newline at end of file diff --git a/docs/bedtools.png b/docs/bedtools.png new file mode 100644 index 0000000000000000000000000000000000000000..2d44356e6b4858b57e94c811db8e827d4ce72a72 Binary files /dev/null and b/docs/bedtools.png differ diff --git a/docs/build.sh b/docs/build.sh new file mode 100755 index 0000000000000000000000000000000000000000..d99d6645360f93990783154288ed3959035acc2d --- /dev/null +++ b/docs/build.sh @@ -0,0 +1,2 @@ +make clean html +open _build/html/index.html -a Safari diff --git a/docs/conf.py b/docs/conf.py new file mode 100755 index 0000000000000000000000000000000000000000..219899f79f2ec841f4e8495c26593afc34474327 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,220 @@ +# -*- coding: utf-8 -*- +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('../')) + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', + 'sphinx.ext.intersphinx', 'sphinx.ext.todo', + 'sphinx.ext.coverage', 'sphinx.ext.pngmath', + 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'bedtools' +copyright = u'2012' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '2.16.2' +# The full version, including alpha/beta/rc tags. +release = '2.16.2' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'rtd' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +html_theme_path = ["themes"] + +# The name for this set of Sphinx documents. If None, it defaults to +# "<project> v<release> documentation". +html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +html_short_title = project + " v" + release + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +html_logo = 'bedtools.png' + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +html_favicon = 'bedtools.png' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +#html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +html_show_sphinx = False + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a <link> tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'bedtools-docs' + +# Google analytics +#googleanalytics_id = "UA-24167610-15" + +# -- Options for LaTeX output -------------------------------------------------- + +# The paper size ('letter' or 'a4'). +#latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'bedtools.tex', u'Bedtools Documentation', + u'Quinlan lab @ UVa', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'bedtools', u'Bedtools Documentation', [u'UVa'], 1) +] + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/docs/content/advanced-usage.rst b/docs/content/advanced-usage.rst new file mode 100755 index 0000000000000000000000000000000000000000..8f706807e2f198a7430162543d316de6a568a018 --- /dev/null +++ b/docs/content/advanced-usage.rst @@ -0,0 +1,92 @@ +############### +Advanced usage +############### + + +========================================================================== +7.1 Mask all regions in a genome except for targeted capture regions. +========================================================================== +# Add 500 bp up and downstream of each probe +:: + slopBed -i probes.bed -b 500 > probes.500bp.bed + +# Get a BED file of all regions not covered by the probes (+500 bp up/down) +:: + complementBed -i probes.500bp.bed -g hg18.genome > probes.500bp.complement.bed + +# Create a masked genome where all bases are masked except for the probes +500bp +:: + maskFastaFromBed -in hg18.fa -bed probes.500bp.complement.bed -fo hg18.probecomplement. + masked.fa + + +========================================================================== +7.2 Screening for novel SNPs. +========================================================================== +# Find all SNPs that are not in dbSnp and not in the latest 1000 genomes calls +:: + intersectBed -a snp.calls.bed -b dbSnp.bed -v | intersectBed -a stdin -b 1KG.bed + -v > snp.calls.novel.bed + + + +========================================================================== +7.3 Computing the coverage of features that align entirely within an +interval. +========================================================================== +# By default, coverageBed counts any feature in A that overlaps B by >= 1 bp. If +you want to require that a feature align entirely within B for it to be counted, +you can first use intersectBed with the "-f 1.0" option. +:: + intersectBed -a features.bed -b windows.bed -f 1.0 | coverageBed -a stdin -b + windows.bed > windows.bed.coverage + + +========================================================================== +7.4 Computing the coverage of BAM alignments on exons. +========================================================================== +# One can combine SAMtools with BEDtools to compute coverage directly from the BAM +data by using bamToBed. +:: + bamToBed -i reads.bam | coverageBed -a stdin -b exons.bed > exons.bed.coverage + +# Take it a step further and require that coverage be from properly-paired reads. +:: + samtools view -bf 0x2 reads.bam | bamToBed -i stdin | coverageBed -a stdin -b + exons.bed > exons.bed.proper.coverage + + + +========================================================================== +7.5 Computing coverage separately for each strand. +========================================================================== +# Use grep to only look at forward strand features (i.e. those that end in "+"). +:: + bamToBed -i reads.bam | grep \+$ | coverageBed -a stdin -b genes.bed > + genes.bed.forward.coverage + +# Use grep to only look at reverse strand features (i.e. those that end in "-"). +:: + bamToBed -i reads.bam | grep \-$ | coverageBed -a stdin -b genes.bed > + genes.bed.forward.coverage + + + +========================================================================== +7.6 Find structural variant calls that are private to one sample. +========================================================================== +# : +:: + pairToPair -a sample1.sv.bedpe -b othersamples.sv.bedpe -type neither > + sample1.sv.private.bedpe + + + +================================================================================== +7.7 Exclude SV deletions that appear to be ALU insertions in the reference genome. +================================================================================== +# We'll require that 90% of the inner span of the deletion be overlapped by a +recent ALU. +:: + pairToBed -a deletions.sv.bedpe -b ALUs.recent.bed -type notispan -f 0.80 > + deletions.notALUsinRef.bedpe \ No newline at end of file diff --git a/docs/content/annotateBed.rst b/docs/content/annotateBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..9a55b3b84f79678bb4303e05a8aa42161e7bcbbd --- /dev/null +++ b/docs/content/annotateBed.rst @@ -0,0 +1,99 @@ +############### +5.24 annotateBed +############### +**annotateBed** annotates one BED/VCF/GFF file with the coverage and number of overlaps observed +from multiple other BED/VCF/GFF files. In this way, it allows one to ask to what degree one feature +coincides with multiple other feature types with a single command. + +========================================================================== +5.24.1 Usage and option summary +========================================================================== +Usage: +:: + annotateBed [OPTIONS] -i <BED/GFF/VCF> -files FILE1 FILE2 FILE3 ... FILEn + + +=========================== =============================================================================================================================================================================================================== + Option Description + +=========================== =============================================================================================================================================================================================================== +**-namesr** A list of names (one per file) to describe each file in -i. These names will be printed as a header line. +**-counts** Report the count of features in each file that overlap -i. Default behavior is to report the fraction of -i covered by each file. +**-both** Report the count of features followed by the % coverage for each annotation file. Default is to report solely the fraction of -i covered by each file. +**-s** Force strandedness. That is, only include hits in A that overlap B on the same strand. By default, hits are included without respect to strand. +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.24.2 Default behavior - annotate one file with coverage from others. +========================================================================== +By default, the fraction of each feature covered by each annotation file is reported after the complete +feature in the file to be annotated. +:: + cat variants.bed + chr1 100 200 nasty 1 - + chr2 500 1000 ugly 2 + + chr3 1000 5000 big 3 - + + cat genes.bed + chr1 150 200 geneA 1 + + chr1 175 250 geneB 2 + + chr3 0 10000 geneC 3 - + + cat conserve.bed + chr1 0 10000 cons1 1 + + chr2 700 10000 cons2 2 - + chr3 4000 10000 cons3 3 + + + cat known_var.bed + chr1 0 120 known1 - + chr1 150 160 known2 - + chr2 0 10000 known3 + + + annotateBed -i variants.bed -files genes.bed conserv.bed known_var.bed + chr1 100 200 nasty 1 - 0.500000 1.000000 0.300000 + chr2 500 1000 ugly 2 + 0.000000 0.600000 1.000000 + chr3 1000 5000 big 3 - 1.000000 0.250000 0.000000 + + +========================================================================== +5.24.3 Report the count of hits from the annotation files +========================================================================== +Figure: +:: + annotateBed -counts -i variants.bed -files genes.bed conserv.bed known_var.bed + chr1 100 200 nasty 1 - 2 1 2 + chr2 500 1000 ugly 2 + 0 1 1 + chr3 1000 5000 big 3 - 1 1 0 + + + +========================================================================== +5.24.4 Report both the count of hits and the fraction covered from the annotation files +========================================================================== +Figure: +:: + annotateBed -both -i variants.bed -files genes.bed conserv.bed known_var.bed + #chr start end name score +/- cnt1 pct1 cnt2 pct2 cnt3 pct3 + chr1 100 200 nasty 1 - 2 0.500000 1 1.000000 2 0.300000 + chr2 500 1000 ugly 2 + 0 0.000000 1 0.600000 1 1.000000 + chr3 1000 5000 big 3 - 1 1.000000 1 0.250000 0 0.000000 + + + + +========================================================================== +5.24.5 Restrict the reporting to overlaps on the same strand. +========================================================================== +Note: Compare with the result from 5.24.3 +:: + annotateBed -s -i variants.bed -files genes.bed conserv.bed known_var.bed + chr1 100 200 nasty var1 - 0.000000 0.000000 0.000000 + chr2 500 1000 ugly var2 + 0.000000 0.000000 0.000000 + chr3 1000 5000 big var3 - 1.000000 0.000000 0.000000 + + + diff --git a/docs/content/bamToBed.rst b/docs/content/bamToBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..8647e9204d996f725e5d43b8dd5ec3d1251dfbcc --- /dev/null +++ b/docs/content/bamToBed.rst @@ -0,0 +1,88 @@ +############### +5.4 bamToBed +############### + +**bamToBed** is a general purpose tool that will convert sequence alignments in BAM format to either +BED6, BED12 or BEDPE format. This enables one to convert BAM files for use with all of the other +BEDTools. The CIGAR string is used to compute the alignment end coordinate in an "ungapped" +fashion. That is, match ("M"), deletion ("D"), and splice ("N") operations are observed when computing +alignment ends. + +============================================ +5.4.1 Usage and option summary +============================================ +**Usage:** +:: + bamToBed [OPTIONS] -i <BAM> + + +====================== ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= +Option Description +====================== ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= +**-bedpe** Write BAM alignments in BEDPE format. Only one alignment from paired-end reads will be reported. Specifically, it each mate is aligned to the same chromosome, the BAM alignment reported will be the one where the BAM insert size is greater than zero. When the mate alignments are interchromosomal, the lexicographically lower chromosome will be reported first. Lastly, when an end is unmapped, the chromosome and strand will be set to "." and the start and end coordinates will be set to -1. *By default, this is disabled and the output will be reported in BED format*. + **NOTE: When using this option, it is required that the BAM file is sorted/grouped by the read name. This allows bamToBed to extract correct alignment coordinates for each end based on their respective CIGAR strings. It also assumes that the alignments for a given pair come in groups of twos. There is not yet a standard method for reporting multiple alignments using BAM. bamToBed will fail if an aligner does not report alignments in pairs**. + BAM files may be piped to bamToBed by specifying "-i stdin". See example below. +**-bed12** Write "blocked" BED (a.k.a. BED12) format. This will convert "spliced" BAM alignments (denoted by the "N" CIGAR operation) to BED12. +**-ed** Use the "edit distance" tag (NM) for the BED score field. Default for BED is to use mapping quality. Default for BEDPE is to use the *minimum* of the two mapping qualities for the pair. When -ed is used with -bedpe, the total edit distance from the two mates is reported. +**-tag** Use other *numeric* BAM alignment tag for BED score. Default for BED is to use mapping quality. Disallowed with BEDPE output. +**-color** An R,G,B string for the color used with BED12 format. Default is (255,0,0). +**-split** Report each portion of a "split" BAM (i.e., having an "N" CIGAR operation) alignment as a distinct BED intervals. +====================== ========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================= + +By default, each alignment in the BAM file is converted to a 6 column BED. The BED "name" field is +comprised of the RNAME field in the BAM alignment. If mate information is available, the mate (e.g., +"/1" or "/2") field will be appended to the name. The "score" field is the mapping quality score from the +BAM alignment, unless the **-ed** option is used. + +Examples: +:: + bamToBed -i reads.bam | head -5 + chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 37 - + chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 37 + + chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 37 - + + bamToBed -i reads.bam -tag NM | head -5 + chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 1 - + chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 3 + + chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 1 - + + bamToBed -i reads.bam -bedpe | head -3 + chr7 118965072 118965122 chr7 118970079 118970129 + TUPAC_0001:3:1:0:1452#0 37 + - + chr11 46765606 46765656 chr11 46769934 46769984 + TUPAC_0001:3:1:0:1472#0 37 + - + chr20 54704674 54704724 chr20 54708987 54709037 + TUPAC_0001:3:1:1:1833#0 37 + + + +One can easily use samtools and bamToBed together as part of a UNIX pipe. In this example, we will +only convert properly-paired (BAM flag == 0x2) reads to BED format. +:: + samtools view -bf 0x2 reads.bam | bamToBed -i stdin | head + chr7 118970079 118970129 TUPAC_0001:3:1:0:1452#0/1 37 - + chr7 118965072 118965122 TUPAC_0001:3:1:0:1452#0/2 37 + + chr11 46769934 46769984 TUPAC_0001:3:1:0:1472#0/1 37 - + chr11 46765606 46765656 TUPAC_0001:3:1:0:1472#0/2 37 + + chr20 54704674 54704724 TUPAC_0001:3:1:1:1833#0/1 37 + + chr20 54708987 54709037 TUPAC_0001:3:1:1:1833#0/2 37 - + chrX 9380413 9380463 TUPAC_0001:3:1:1:285#0/1 0 - + chrX 9375861 9375911 TUPAC_0001:3:1:1:285#0/2 0 + + chrX 131756978 131757028 TUPAC_0001:3:1:2:523#0/1 37 + + chrX 131761790 131761840 TUPAC_0001:3:1:2:523#0/2 37 - + + +================================================================== +5.4.2 (-split)Creating BED12 features from "spliced" BAM entries. +================================================================== +bamToBed will, by default, create a BED6 feature that represents the entire span of a spliced/split +BAM alignment. However, when using the **-split** command, a BED12 feature is reported where BED +blocks will be created for each aligned portion of the sequencing read. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Exons *************** ********** + + BED/BAM A ^^^^^^^^^^^^....................................^^^^ + + Result =============== ==== + diff --git a/docs/content/bed12ToBed6.rst b/docs/content/bed12ToBed6.rst new file mode 100755 index 0000000000000000000000000000000000000000..d9159e3bdcb455bc88b51616040bef22853fa915 --- /dev/null +++ b/docs/content/bed12ToBed6.rst @@ -0,0 +1,49 @@ +############### +5.21 bed12ToBed6 +############### +**bed12ToBed6** is a convenience tool that converts BED features in BED12 (a.k.a. "blocked" BED +features such as genes) to discrete BED6 features. For example, in the case of a gene with six exons, +bed12ToBed6 would create six separate BED6 features (i.e., one for each exon). + + +========================================================================== +5.21.1 Usage and option summary +========================================================================== +Usage: +:: + bed12ToBed6 [OPTIONS] -i <BED12> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-i** The BED12 file that should be split into discrete BED6 features. *Use "stdin" when using piped input*. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.21.2 Default behavior +========================================================================== +Figure: +:: + head data/knownGene.hg18.chr21.bed | tail -n 3 + chr21 10079666 10120808 uc002yiv.1 0 - 10081686 1 0 1 2 0 6 0 8 + 0 4 528,91,101,215, 0,1930,39750,40927, + chr21 10080031 10081687 uc002yiw.1 0 - 10080031 1 0 0 8 0 0 3 1 + 0 2 200,91, 0,1565, + chr21 10081660 10120796 uc002yix.2 0 - 10081660 1 0 0 8 1 6 6 0 + 0 3 27,101,223,0,37756,38913, + + head data/knownGene.hg18.chr21.bed | tail -n 3 | bed12ToBed6 -i stdin + chr21 10079666 10080194 uc002yiv.1 0 - + chr21 10081596 10081687 uc002yiv.1 0 - + chr21 10119416 10119517 uc002yiv.1 0 - + chr21 10120593 10120808 uc002yiv.1 0 - + chr21 10080031 10080231 uc002yiw.1 0 - + chr21 10081596 10081687 uc002yiw.1 0 - + chr21 10081660 10081687 uc002yix.2 0 - + chr21 10119416 10119517 uc002yix.2 0 - + chr21 10120573 10120796 uc002yix.2 0 - + + diff --git a/docs/content/bedToBam.rst b/docs/content/bedToBam.rst new file mode 100755 index 0000000000000000000000000000000000000000..c0f1d6acd078cd08585d9ff6e62a302fe29a70ec --- /dev/null +++ b/docs/content/bedToBam.rst @@ -0,0 +1,71 @@ +############### +5.18 bedToBam +############### +**bedToBam** converts features in a feature file to BAM format. This is useful as an efficient means of +storing large genome annotations in a compact, indexed format for visualization purposes. + +========================================================================== +5.18.1 Usage and option summary +========================================================================== +Usage: +:: + bedToBam [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> > <BAM> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-mapq** Set a mapping quality (SAM MAPQ field) value for all BED entries. *Default: 255* +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bed12** Indicate that the input BED file is in BED12 (a.k.a "blocked" BED) format. In this case, bedToBam will convert blocked BED features (e.g., gene annotaions) into "spliced" BAM alignments by creating an appropriate CIGAR string. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.18.2 Default behavior +========================================================================== +The default behavior is to assume that the input file is in unblocked format. For example: +:: + head -5 rmsk.hg18.chr21.bed + chr21 9719768 9721892 ALR/Alpha 1004 + + chr21 9721905 9725582 ALR/Alpha 1010 + + chr21 9725582 9725977 L1PA3 3288 + + chr21 9726021 9729309 ALR/Alpha 1051 + + chr21 9729320 9729809 L1PA3 3897 - + + bedToBam -i rmsk.hg18.chr21.bed -g human.hg18.genome > rmsk.hg18.chr21.bam + + samtools view rmsk.hg18.chr21.bam | head -5 + ALR/Alpha 0 chr21 9719769 255 2124M * 0 0 * * + ALR/Alpha 0 chr21 9721906 255 3677M * 0 0 * * + L1PA3 0 chr21 9725583 255 395M * 0 0 * * + ALR/Alpha 0 chr21 9726022 255 3288M * 0 0 * * + L1PA3 16 chr21 9729321 255 489M * 0 0 * * + + +========================================================================== +5.18.3 Creating "spliced" BAM entries from "blocked" BED features +========================================================================== +Optionally, **bedToBam** will create spliced BAM entries from "blocked" BED features by using the +-bed12 option. This will create CIGAR strings in the BAM output that will be displayed as "spliced" +alignments. The image illustrates this behavior, as the top track is a BAM representation (using +bedToBam) of a BED file of UCSC genes. + +For example: +:: + bedToBam -i knownGene.hg18.chr21.bed -g human.hg18.genome -bed12 > knownGene.bam + + samtools view knownGene.bam | head -2 + uc002yip.1 16 chr21 9928614 2 5 5 + + 298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M + 738N64M146N100M1647N120M6478N162M1485N51M6777N60M9274N54M880N54M1229N54M2377N54M112 + 68N58M2666N109M2885N158M * 0 0 * * + uc002yiq.1 16 chr21 9928614 2 5 5 + + 298M1784N71M1411N93M3963N80M1927N106M3608N81M1769N62M11856N89M98N82M816N61M6910N65M + 738N64M146N100M1647N120M6478N162M1485N51M6777N60M10208N54M1229N54M2377N54M11268N58M + 2666N109M2885N158M * 0 0 * * + + diff --git a/docs/content/bedToIgv.rst b/docs/content/bedToIgv.rst new file mode 100755 index 0000000000000000000000000000000000000000..64d7578e5060327265890cdda0de4310004e6c41 --- /dev/null +++ b/docs/content/bedToIgv.rst @@ -0,0 +1,68 @@ +############### +5.20 bedToIgv +############### +**bedToIgv** creates an IGV (http://www.broadinstitute.org/igv/) batch script (see: http:// +www.broadinstitute.org/igv/batch for details) such that a ¡°snapshot¡± will be taken at each features in a +feature file. This is useful as an efficient means for quickly collecting images of primary data at several +loci for subsequent screening, etc. + +**NOTE: One must use IGV version 1.5 or higher.** + + + +========================================================================== +5.20.1 Usage and option summary +========================================================================== +Usage: +:: + bedToIgv [OPTIONS] -i <BED/GFF/VCF> > <igv.batch> + + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-path** The full path to which the IGV snapshots should be written. *Default: ./* +**-sess** The full path to an existing IGV session file to be loaded prior to taking snapshots. *Default is for no session to be loaded and the assumption is that you already have IGV open and loaded with your relevant data prior to running the batch script*. +**-sort** The type of BAM sorting you would like to apply to each image. **Valid sorting options**: *base, position, strand, quality, sample, and readGroup Default is to apply no sorting at all*. +**-clps** Collapse the aligned reads prior to taking a snapshot. *Default is to not collapse*. +**-name** Use the "name" field (column 4) for each image's filename. *Default is to use the "chr:start-pos.ext"*. +**-slop** Number of flanking base pairs on the left & right of the image. +**-img** The type of image to be created. **Valid options**: *png, eps, svg Default is png*. +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.20.2 Default behavior +========================================================================== +Figure: +:: + bedToIgv -i data/rmsk.hg18.chr21.bed | head -9 + snapshotDirectory ./ + goto chr21:9719768-9721892 + snapshot chr21:9719768-9721892.png + goto chr21:9721905-9725582 + snapshot chr21:9721905-9725582.png + goto chr21:9725582-9725977 + snapshot chr21:9725582-9725977.png + goto chr21:9726021-9729309 + snapshot chr21:9726021-9729309.png + + + + +========================================================================== +5.20.3 Using a bedToIgv batch script within IGV. +========================================================================== +Once an IGV batch script has been created with **bedToIgv**, it is simply a matter of running it from +within IGV. + +For example, first create the batch script: +:: + bedToIgv -i data/rmsk.hg18.chr21.bed > rmsk.igv.batch + +Then, open and launch the batch script from within IGV. This will immediately cause IGV to begin +taking snapshots of your requested regions. + diff --git a/docs/content/bedtools-suite.rst b/docs/content/bedtools-suite.rst new file mode 100755 index 0000000000000000000000000000000000000000..bbe1802d1a8d7d81c103672c5d0f693bd4683f3e --- /dev/null +++ b/docs/content/bedtools-suite.rst @@ -0,0 +1,45 @@ +############### +The BEDTools suite +############### + +This section covers the functionality and default / optional usage for each of the available BEDTools. +Example "figures" are provided in some cases in an effort to convey the purpose of the tool. The +behavior of each available parameter is discussed for each tool in abstract terms. More concrete usage +examples are provided in **Section 6**. + + +================= +Table of contents +================= +.. toctree:: + :maxdepth: 1 + + intersectBed + pairToBed + pairToPair + bamToBed + windowBed + closestBed + subtractBed + mergeBed + coverageBed + genomecoverageBed + fastafromBed + maskfastafromBed + shuffleBed + slopBed + sortBed + linksBed + complementBed + bedToBam + overlap + bedToIgv + bed12ToBed6 + groupBy + unionBedGraphs + annotateBed + + + + + \ No newline at end of file diff --git a/docs/content/closestBed.rst b/docs/content/closestBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..3276718c9418842d894f0df28ad341e825870a58 --- /dev/null +++ b/docs/content/closestBed.rst @@ -0,0 +1,130 @@ +############### +5.6 closestBed +############### +Similar to **intersectBed, closestBed** searches for overlapping features in A and B. In the event that +no feature in B overlaps the current feature in A, **closestBed** will report the *closest* (that is, least +genomic distance from the start or end of A) feature in B. For example, one might want to find which +is the closest gene to a significant GWAS polymorphism. Note that **closestBed** will report an +overlapping feature as the closest---that is, it does not restrict to closest *non-overlapping* feature. + +========================================================================== +5.6.1 Usage and option summary +========================================================================== +**Usage:** +:: + closestBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-s** Force strandedness. That is, find the closest feature in B overlaps A on the same strand. *By default, this is disabled*. +**-d** In addition to the closest feature in B, report its distance to A as an extra column. The reported distance for overlapping features will be 0. +**-t** How ties for closest feature should be handled. This occurs when two features in B have exactly the same overlap with a feature in A. *By default, all such features in B are reported*. + + Here are the other choices controlling how ties are handled: + + *all-* Report all ties (default). + + *first-* Report the first tie that occurred in the B file. + + *last-* Report the last tie that occurred in the B file. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.6.2 Default behavior +========================================================================== +**closestBed** first searches for features in B that overlap a feature in A. If overlaps are found, the feature +in B that overlaps the highest fraction of A is reported. If no overlaps are found, **closestBed** looks for +the feature in B that is *closest* (that is, least genomic distance to the start or end of A) to A. For +example, in the figure below, feature B1 would be reported as the closest feature to A1. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE A ************* + + BED File B ^^^^^^^^ ^^^^^^ + + Result ====== + + +For example: +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + closestBed -a A.bed -b B.bed + chr1 100 200 chr1 500 1000 + + + +========================================================================== +5.6.3 (-s)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for the closest +(overlapping or not) feature in B. See the discussion in the intersectBed section for details. + + + +========================================================================== +5.6.4 (-t)Controlling how ties for "closest" are broken +========================================================================== +When there are two or more features in B that overlap the *same fraction* of A, **closestBed** will, by +default, report both features in B. Imagine feature A is a SNP and file B contains genes. It can often +occur that two gene annotations (e.g. opposite strands) in B will overlap the SNP. As mentioned, the +default behavior is to report both such genes in B. However, the -t option allows one to optionally +choose the just first or last feature (in terms of where it occurred in the input file, not chromosome +position) that occurred in B. + +For example (note the difference between -l 200 and -l 300): +:: + cat A.bed + chr1 100 101 rs1234 + + cat B.bed + chr1 0 1000 geneA 100 + + chr1 0 1000 geneB 100 - + + closestBed -a A.bed -b B.bed + chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + + closestBed -a A.bed -b B.bed -t all + chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + + closestBed -a A.bed -b B.bed -t first + chr1 100 101 rs1234 chr1 0 1000 geneA 100 + + + closestBed -a A.bed -b B.bed -t last + chr1 100 101 rs1234 chr1 0 1000 geneB 100 - + + + + + + +========================================================================== +5.6.5 (-d)Reporting the distance to the closest feature in base pairs +========================================================================== +ClosestBed will optionally report the distance to the closest feature in the B file using the **-d** option. +When a feature in B overlaps a feature in A, a distance of 0 is reported. +:: + cat A.bed + chr1 100 200 + chr1 500 600 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + closestBed -a A.bed -b B.bed -d + chr1 100 200 chr1 500 1000 300 + chr1 500 600 chr1 500 1000 0 diff --git a/docs/content/complementBed.rst b/docs/content/complementBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..1951d0d43c4747312cae81db89343f4addee7c19 --- /dev/null +++ b/docs/content/complementBed.rst @@ -0,0 +1,48 @@ +############### +5.17 complementBed +############### +**complementBed** returns the intervals in a genome that are not by the features in a feature file. An +example usage of this tool would be to return the intervals of the genome that are not annotated as a +repeat. + + +========================================================================== +5.17.1 Usage and option summary +========================================================================== +Usage: +:: + complementBed [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> + +**No additional options.** + + + + +========================================================================== +5.17.2 Default behavior +========================================================================== +Figure: +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE A ************* *************** ****************** + + Result === === ===== ======= + + +For example: +:: + cat A.bed + chr1 100 200 + chr1 400 500 + chr1 500 800 + + cat my.genome + chr1 1000 + + complementBed -i A.bed -g my.genome + chr1 0 100 + chr1 200 400 + chr1 800 1000 + + diff --git a/docs/content/coverageBed.rst b/docs/content/coverageBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..ccd5acd2407e16a4d44399df9cc16e738d3d8f37 --- /dev/null +++ b/docs/content/coverageBed.rst @@ -0,0 +1,184 @@ +############### +5.9 coverageBed +############### +**coverageBed** computes both the *depth* and *breadth* of coverage of features in file A across the features +in file B. For example, **coverageBed** can compute the coverage of sequence alignments (file A) across 1 +kilobase (arbitrary) windows (file B) tiling a genome of interest. One advantage that **coverageBed** +offers is that it not only *counts* the number of features that overlap an interval in file B, it also +computes the fraction of bases in B interval that were overlapped by one or more features. Thus, +**coverageBed** also computes the *breadth* of coverage for each interval in B. + +========================================================================== +5.9.1 Usage and option summary +========================================================================== +Usage: +:: + coverageBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-abam** BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: + + | samtools view -b <BAM> | intersectBed -abam stdin -b genes.bed + +**-s** Force strandedness. That is, only features in A are only counted towards coverage in B if they are the same strand. *By default, this is disabled and coverage is counted without respect to strand*. +**-hist** Report a histogram of coverage for each feature in B as well as a summary histogram for _all_ features in B. + + | Output (tab delimited) after each feature in B: + + | 1) depth + | 2) # bases at depth + | 3) size of B + | 4) % of B at depth +**-d** Report the depth at each position in each B feature. Positions reported are one based. Each position and depth follow the complete B feature. +**-split** Treat "split" BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR "N" and "D" operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +=========================== =============================================================================================================================================================================================================== + + + + + + +========================================================================== +5.9.2 Default behavior +========================================================================== +After each interval in B, **coverageBed** will report: + +1) The number of features in A that overlapped (by at least one base pair) the B interval. +2) The number of bases in B that had non-zero coverage from features in A. +3) The length of the entry in B. +4) The fraction of bases in B that had non-zero coverage from features in A. + +Below are the number of features in A (N=...) overlapping B and fraction of bases in B with coverage. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE B *************** *************** ****** ************** + + BED File A ^^^^ ^^^^ ^^ ^^^^^^^^^ ^^^ ^^ ^^^^ + ^^^^^^^^ ^^^^^ ^^^^^ ^^ + + Result [ N=3, 10/15 ] [ N=1, 2/16 ] [N=1,6/6] [N=5, 11/12 ] + + +For example: +:: + cat A.bed + chr1 10 20 + chr1 20 30 + chr1 30 40 + chr1 100 200 + + cat B.bed + chr1 0 100 + chr1 100 200 + chr2 0 100 + + coverageBed -a A.bed -b B.bed + chr1 0 100 3 30 100 0.3000000 + chr1 100 200 1 100 100 1.0000000 + chr2 0 100 0 0 100 0.0000000 + + + +========================================================================== +5.9.4 (-s)Calculating coverage by strand +========================================================================== +Use the "**-s**" option if one wants to only count coverage if features in A are on the same strand as the +feature / window in B. This is especially useful for RNA-seq experiments. + +For example (note the difference in coverage with and without **-s**: +:: + cat A.bed + chr1 10 20 a1 1 - + chr1 20 30 a2 1 - + chr1 30 40 a3 1 - + chr1 100 200 a4 1 + + + cat B.bed + chr1 0 100 b1 1 + + chr1 100 200 b2 1 - + chr2 0 100 b3 1 + + + coverageBed -a A.bed -b B.bed + chr1 0 100 b1 1 + 3 30 100 0.3000000 + chr1 100 200 b2 1 - 1 100 100 1.0000000 + chr2 0 100 b3 1 + 0 0 100 0.0000000 + + coverageBed -a A.bed -b B.bed -s + chr1 0 100 b1 1 + 0 0 100 0.0000000 + chr1 100 200 b2 1 - 0 0 100 0.0000000 + chr2 0 100 b3 1 + 0 0 100 0.0000000 + +========================================================================== +5.9.5 (-hist)Creating a histogram of coverage for each feature in the B file +========================================================================== +One should use the "**-hist**" option to create, for each interval in B, a histogram of coverage of the +features in A across B. + +In this case, each entire feature in B will be reported, followed by the depth of coverage, the number of +bases at that depth, the size of the feature, and the fraction covered. After all of the features in B have +been reported, a histogram summarizing the coverage among all features in B will be reported. +:: + cat A.bed + chr1 10 20 a1 1 - + chr1 20 30 a2 1 - + chr1 30 40 a3 1 - + chr1 100 200 a4 1 + + + cat B.bed + chr1 0 100 b1 1 + + chr1 100 200 b2 1 - + chr2 0 100 b3 1 + + + coverageBed -a A.bed -b B.bed -hist + chr1 0 100 b1 1 + 0 70 100 0.7000000 + chr1 0 100 b1 1 + 1 30 100 0.3000000 + chr1 100 200 b2 1 - 1 100 100 1.0000000 + chr2 0 100 b3 1 + 0 100 100 1.0000000 + all 0 170 300 0.5666667 + all 1 130 300 0.4333333 + + + +========================================================================== +5.9.6 (-hist)Reporting the per-base of coverage for each feature in the B file +========================================================================== +One should use the "**-d**" option to create, for each interval in B, a detailed list of coverage at each of the +positions across each B interval. + +The output will consist of a line for each one-based position in each B feature, followed by the coverage +detected at that position. +:: + cat A.bed + chr1 0 5 + chr1 3 8 + chr1 4 8 + chr1 5 9 + + cat B.bed + chr1 0 10 + + coverageBed -a A.bed -b B.bed -d + chr1 0 10 B 1 1 + chr1 0 10 B 2 1 + chr1 0 10 B 3 1 + chr1 0 10 B 4 2 + chr1 0 10 B 5 3 + chr1 0 10 B 6 3 + chr1 0 10 B 7 3 + chr1 0 10 B 8 3 + chr1 0 10 B 9 1 + chr1 0 10 B 10 0 + + + +========================================================================== +5.9.7 (-split)Reporting coverage with spliced alignments or blocked BED features +========================================================================== +As described in section 1.3.19, coverageBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq reads, for +example, one typically wants to only tabulate coverage for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The **-split** command allows for such coverage to be +performed. diff --git a/docs/content/example-usage.rst b/docs/content/example-usage.rst new file mode 100755 index 0000000000000000000000000000000000000000..3fe5edf30f95582bae97e213d550a3f883adf8f5 --- /dev/null +++ b/docs/content/example-usage.rst @@ -0,0 +1,331 @@ +############### +Example usage +############### +Below are several examples of basic BEDTools usage. Example BED files are provided in the +/data directory of the BEDTools distribution. + + + +========================================================================== +6.1 intersectBed +========================================================================== + + +6.1.1 Report the base-pair overlap between sequence alignments and genes. +:: + intersectBed -a reads.bed -b genes.bed + + + +6.1.2 Report whether each alignment overlaps one or more genes. If not, the alignment is not reported. +:: + intersectBed -a reads.bed -b genes.bed -u + + + +6.1.3 Report those alignments that overlap NO genes. Like "grep -v" +:: + intersectBed -a reads.bed -b genes.bed -v + + +6.1.4 Report the number of genes that each alignment overlaps. +:: + intersectBed -a reads.bed -b genes.bed -c + + + +6.1.5 Report the entire, original alignment entry for each overlap with a gene. +:: + intersectBed -a reads.bed -b genes.bed -wa + + + +6.1.6 Report the entire, original gene entry for each overlap with a gene. +:: + intersectBed -a reads.bed -b genes.bed -wb + + + +6.1.7 Report the entire, original alignment and gene entries for each overlap. +:: + intersectBed -a reads.bed -b genes.bed -wa -wb + + + +6.1.8 Only report an overlap with a repeat if it spans at least 50% of the exon. +:: + intersectBed -a exons.bed -b repeatMasker.bed -f 0.50 + + + +6.1.9 Only report an overlap if comprises 50% of the structural variant and 50% of the segmental duplication. Thus, it is reciprocally at least a 50% overlap. +:: + intersectBed -a SV.bed -b segmentalDups.bed -f 0.50 -r + + + + +6.1.10 Read BED A from stdin. For example, find genes that overlap LINEs but not SINEs. +:: + intersectBed -a genes.bed -b LINES.bed | intersectBed -a stdin -b SINEs.bed -v + + + + +6.1.11 Retain only single-end BAM alignments that overlap exons. +:: + intersectBed -abam reads.bam -b exons.bed > reads.touchingExons.bam + + + + + +6.1.12 Retain only single-end BAM alignments that do not overlap simple sequence +repeats. +:: + intersectBed -abam reads.bam -b SSRs.bed -v > reads.noSSRs.bam + + + +========================================================================== +6.2 pairToBed +========================================================================== + + + +6.2.1 Return all structural variants (in BEDPE format) that overlap with genes on either +end. +:: + pairToBed -a sv.bedpe -b genes > sv.genes + + + +6.2.2 Return all structural variants (in BEDPE format) that overlap with genes on both +end. +:: + pairToBed -a sv.bedpe -b genes -type both > sv.genes + + + + +6.2.3 Retain only paired-end BAM alignments where neither end overlaps simple +sequence repeats. +:: + pairToBed -abam reads.bam -b SSRs.bed -type neither > reads.noSSRs.bam + + + +6.2.4 Retain only paired-end BAM alignments where both ends overlap segmental +duplications. +:: + pairToBed -abam reads.bam -b segdups.bed -type both > reads.SSRs.bam + + + + +6.2.5 Retain only paired-end BAM alignments where neither or one and only one end +overlaps segmental duplications. +:: + pairToBed -abam reads.bam -b segdups.bed -type notboth > reads.notbothSSRs.bam + + + + + + +========================================================================== +6.3 pairToPair +========================================================================== + + +6.3.1 Find all SVs (in BEDPE format) in sample 1 that are also in sample 2. +:: + pairToPair -a 1.sv.bedpe -b 2.sv.bedpe | cut -f 1-10 > 1.sv.in2.bedpe + + + +6.3.2 Find all SVs (in BEDPE format) in sample 1 that are not in sample 2. +:: + pairToPair -a 1.sv.bedpe -b 2.sv.bedpe -type neither | cut -f 1-10 > +1.sv.notin2.bedpe + + + + + +========================================================================== +6.4 bamToBed +========================================================================== + + +6.4.1 Convert BAM alignments to BED format. +:: + bamToBed -i reads.bam > reads.bed + + +6.4.2 Convert BAM alignments to BED format using the BAM edit distance (NM) as the +BED "score". +:: + bamToBed -i reads.bam -ed > reads.bed + + +6.4.3 Convert BAM alignments to BEDPE format. +:: + bamToBed -i reads.bam -bedpe > reads.bedpe + + + + + +========================================================================== +6.5 windowBed +========================================================================== + + + +6.5.1 Report all genes that are within 10000 bp upstream or downstream of CNVs. +:: + windowBed -a CNVs.bed -b genes.bed -w 10000 + + + +6.5.2 Report all genes that are within 10000 bp upstream or 5000 bp downstream of +CNVs. +:: + windowBed -a CNVs.bed -b genes.bed -l 10000 -r 5000 + + +6.5.3 Report all SNPs that are within 5000 bp upstream or 1000 bp downstream of genes. +Define upstream and downstream based on strand. +:: + windowBed -a genes.bed -b snps.bed -l 5000 -r 1000 -sw + + + + + +========================================================================== +6.6 closestBed +========================================================================== +Note: By default, if there is a tie for closest, all ties will be reported. **closestBed** allows overlapping +features to be the closest. + + + +6.6.1 Find the closest ALU to each gene. +:: + closestBed -a genes.bed -b ALUs.bed + + +6.6.2 Find the closest ALU to each gene, choosing the first ALU in the file if there is a +tie. +:: + closestBed -a genes.bed -b ALUs.bed -t first + + + +6.6.3 Find the closest ALU to each gene, choosing the last ALU in the file if there is a +tie. +:: + closestBed -a genes.bed -b ALUs.bed -t last + + + + + +========================================================================== +6.7 subtractBed +========================================================================== +Note: If a feature in A is entirely "spanned" by any feature in B, it will not be reported. + + + +6.7.1 Remove introns from gene features. Exons will (should) be reported. +:: + subtractBed -a genes.bed -b introns.bed + + +========================================================================== +6.8 mergeBed +========================================================================== + + +6.8.1 Merge overlapping repetitive elements into a single entry. +:: + mergeBed -i repeatMasker.bed + + + +6.8.2 Merge overlapping repetitive elements into a single entry, returning the number of +entries merged. +:: + mergeBed -i repeatMasker.bed -n + + +6.8.3 Merge nearby (within 1000 bp) repetitive elements into a single entry. +:: + mergeBed -i repeatMasker.bed -d 1000 + + +========================================================================== +6.9 coverageBed +========================================================================== + + +6.9.1 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome. +:: + coverageBed -a reads.bed -b windows10kb.bed | head + chr1 0 10000 0 10000 0.00 + chr1 10001 20000 33 10000 0.21 + chr1 20001 30000 42 10000 0.29 + chr1 30001 40000 71 10000 0.36 + + + +6.9.2 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome and created a BEDGRAPH of the number of aligned reads in each window for +display on the UCSC browser. +:: + coverageBed -a reads.bed -b windows10kb.bed | cut -f 1-4 > windows10kb.cov.bedg + + + +6.9.3 Compute the coverage of aligned sequences on 10 kilobase "windows" spanning the +genome and created a BEDGRAPH of the fraction of each window covered by at least +one aligned read for display on the UCSC browser. +:: + coverageBed -a reads.bed -b windows10kb.bed | awk ¡®{OFS="\t"; print $1,$2,$3,$6}¡¯ + > windows10kb.pctcov.bedg + + + + +========================================================================== +6.10 complementBed +========================================================================== + + +6.10.1 Report all intervals in the human genome that are not covered by repetitive +elements. +:: + complementBed -i repeatMasker.bed -g hg18.genome + + + +========================================================================== +6.11 shuffleBed +========================================================================== + + +6.11.1 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps. +:: + shuffleBed -i variants.bed -g hg18.genome -excl genome_gaps.bed + + +6.11.2 Randomly place all discovered variants in the genome. However, prevent them +from being placed in know genome gaps and require that the variants be randomly +placed on the same chromosome. +:: + shuffleBed -i variants.bed -g hg18.genome -excl genome_gaps.bed -chrom diff --git a/docs/content/fastafromBed.rst b/docs/content/fastafromBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..6e2b4ca0d6416bd298eb7242ff048c43cdc468e8 --- /dev/null +++ b/docs/content/fastafromBed.rst @@ -0,0 +1,126 @@ +############### +5.11 fastaFromBed +############### +**fastaFromBed** extracts sequences from a FASTA file for each of the intervals defined in a BED file. +The headers in the input FASTA file must exactly match the chromosome column in the BED file. + +========================================================================== +5.11.1 Usage and option summary +========================================================================== +Usage: +:: + fastaFromBed [OPTIONS] -fi <input FASTA> -bed <BED/GFF/VCF> -fo <output FASTA> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-name** Use the "name" column in the BED file for the FASTA headers in the output FASTA file. +**-tab** Report extract sequences in a tab-delimited format instead of in FASTA format. +**-s** Force strandedness. If the feature occupies the antisense strand, the sequence will be reverse complemented. *Default: strand information is ignored*. +=========================== =============================================================================================================================================================================================================== + + + + + + + +========================================================================== +5.11.2 Default behavior +========================================================================== +**fastaFromBed** will extract the sequence defined by the coordinates in a BED interval and create a +new FASTA entry in the output file for each extracted sequence. By default, the FASTA header for each +extracted sequence will be formatted as follows: "<chrom>:<start>-<end>". + +For example: +:: + $ cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 + + fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out + + cat test.fa.out + >chr1:5-10 + AAACC + + + + +========================================================================== +5.11.3 Using the BED "name" column as a FASTA header. +========================================================================== +Using the **-name** option, one can set the FASTA header for each extracted sequence to be the "name" +columns from the BED feature. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 myseq + + fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out -name + + cat test.fa.out + >myseq + AAACC + + + + + + + + + + +========================================================================== +5.11.4 Creating a tab-delimited output file in lieu of FASTA output. +========================================================================== +Using the **-tab** option, the **-fo** output file will be tab-delimited instead of in FASTA format. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 myseq + + fastaFromBed -fi test.fa -bed test.bed -fo test.fa.out.tab -name -tab + + cat test.fa.out + myseq AAACC + + + +========================================================================== +5.11.5 (-s)Forcing the extracted sequence to reflect the requested strand +========================================================================== +**fastaFromBed** will extract the sequence in the orientation defined in the strand column when the "-s" +option is used. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 20 25 forward 1 + + chr1 20 25 reverse 1 - + + fastaFromBed -fi test.fa -bed test.bed -s -name -fo test.fa.out + + cat test.fa.out + >forward + CGCTA + >reverse + TAGCG diff --git a/docs/content/general-usage.rst b/docs/content/general-usage.rst new file mode 100755 index 0000000000000000000000000000000000000000..7047cc550059da9fe4fe0ed01a33f1f288b17b87 --- /dev/null +++ b/docs/content/general-usage.rst @@ -0,0 +1,213 @@ +############### +General usage +############### + +======================= +4.1 Supported file formats +======================= + +---------------------- +4.1.1 BED format +---------------------- +As described on the UCSC Genome Browser website (see link below), the BED format is a concise and +flexible way to represent genomic features and annotations. The BED format description supports up to +12 columns, but only the first 3 are required for the UCSC browser, the Galaxy browser and for +BEDTools. BEDTools allows one to use the "BED12" format (that is, all 12 fields listed below). +However, only intersectBed, coverageBed, genomeCoverageBed, and bamToBed will obey the BED12 +"blocks" when computing overlaps, etc., via the **"-split"** option. For all other tools, the last six columns +are not used for any comparisons by the BEDTools. Instead, they will use the entire span (start to end) +of the BED12 entry to perform any relevant feature comparisons. The last six columns will be reported +in the output of all comparisons. + +The file description below is modified from: http://genome.ucsc.edu/FAQ/FAQformat#format1. + +1. **chrom** - The name of the chromosome on which the genome feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. +2. **start** - The zero-based starting position of the feature in the chromosome. + - *The first base in a chromosome is numbered 0*. + - *The start position in each BED feature is therefore interpreted to be 1 greater than the start position listed in the feature. For example, start=9, end=20 is interpreted to span bases 10 through 20,inclusive*. + - *This column is required*. +3. **end** - The one-based ending position of the feature in the chromosome. + - *The end position in each BED feature is one-based. See example above*. + - *This column is required*. +4. **name** - Defines the name of the BED feature. + - *Any string can be used*. For example, "LINE", "Exon3", "HWIEAS_0001:3:1:0:266#0/1", or "my_Feature". + - *This column is optional*. +5. **score** - The UCSC definition requires that a BED score range from 0 to 1000, inclusive. However, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. For example, strings allow scientific notation for p-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. + - *Any string can be used*. For example, 7.31E-05 (p-value), 0.33456 (mean enrichment value), "up", "down", etc. + - *This column is optional*. +6. **strand** - Defines the strand - either '+' or '-'. + - *This column is optional*. +7. **thickStart** - The starting position at which the feature is drawn thickly. + - *Allowed yet ignored by BEDTools*. +8. **thickEnd** - The ending position at which the feature is drawn thickly. + - *Allowed yet ignored by BEDTools*. +9. **itemRgb** - An RGB value of the form R,G,B (e.g. 255,0,0). + - *Allowed yet ignored by BEDTools*. +10. **blockCount** - The number of blocks (exons) in the BED line. + - *Allowed yet ignored by BEDTools*. +11. **blockSizes** - A comma-separated list of the block sizes. + - *Allowed yet ignored by BEDTools*. +12. **blockStarts** - A comma-separated list of block starts. + - *Allowed yet ignored by BEDTools*. + + +BEDTools requires that all BED input files (and input received from stdin) are **tab-delimited**. The following types of BED files are supported by BEDTools: + + +1. | **BED3**: A BED file where each feature is described by **chrom**, **start**, and **end**. + | For example: chr1 11873 14409 +2. | **BED4**: A BED file where each feature is described by **chrom**, **start**, **end**, and **name**. + | For example: chr1 11873 14409 uc001aaa.3 +3. | **BED5**: A BED file where each feature is described by **chrom**, **start**, **end**, **name**, and **score**. + | For example: chr1 11873 14409 uc001aaa.3 0 +4. | **BED6**: A BED file where each feature is described by **chrom**, **start**, **end**, **name**, **score**, and **strand**. + | For example: chr1 11873 14409 uc001aaa.3 0 + +5. | **BED12**: A BED file where each feature is described by all twelve columns listed above. + | For example: chr1 11873 14409 uc001aaa.3 0 + 11873 + | 11873 0 3 354,109,1189, 0,739,1347, + +---------------------- +4.1.2 BEDPE format +---------------------- +We have defined a new file format (BEDPE) in order to concisely describe disjoint genome features, +such as structural variations or paired-end sequence alignments. We chose to define a new format +because the existing "blocked" BED format (a.k.a. BED12) does not allow inter-chromosomal feature +definitions. In addition, BED12 only has one strand field, which is insufficient for paired-end sequence +alignments, especially when studying structural variation. + +The BEDPE format is described below. The description is modified from: http://genome.ucsc.edu/FAQ/FAQformat#format1. + +1. **chrom1** - The name of the chromosome on which the **first** end of the feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. + - *Use "." for unknown*. +2. **start1** - The zero-based starting position of the **first** end of the feature on **chrom1**. + - *The first base in a chromosome is numbered 0*. + - *As with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required*. + - *Use -1 for unknown*. +3. **end1** - The one-based ending position of the first end of the feature on **chrom1**. + - *The end position in each BEDPE feature is one-based*. + - *This column is required*. + - *Use -1 for unknown*. +4. **chrom2** - The name of the chromosome on which the **second** end of the feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. + - *Use "." for unknown*. +5. **start2** - The zero-based starting position of the **second** end of the feature on **chrom2**. + - *The first base in a chromosome is numbered 0*. + - *As with BED format, the start position in each BEDPE feature is therefore interpreted to be 1 greater than the start position listed in the feature. This column is required*. + - *Use -1 for unknown*. +6. **end2** - The one-based ending position of the **second** end of the feature on **chrom2**. + - *The end position in each BEDPE feature is one-based*. + - *This column is required*. + - *Use -1 for unknown*. +7. **name** - Defines the name of the BEDPE feature. + - *Any string can be used*. For example, "LINE", "Exon3", "HWIEAS_0001:3:1:0:266#0/1", or "my_Feature". + - *This column is optional*. +8. **score** - The UCSC definition requires that a BED score range from 0 to 1000, inclusive. *However, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features*. For example, strings allow scientific notation for p-values, mean enrichment values, etc. It should be noted that this flexibility could prevent such annotations from being correctly displayed on the UCSC browser. + - *Any string can be used*. For example, 7.31E-05 (p-value), 0.33456 (mean enrichment value), "up", "down", etc. + - *This column is optional*. +9. **strand1** - Defines the strand for the first end of the feature. Either '+' or '-'. + - *This column is optional*. + - *Use "." for unknown*. +10. **strand2** - Defines the strand for the second end of the feature. Either '+' or '-'. + - *This column is optional*. + - *Use "." for unknown*. +11. **Any number of additional, user-defined fields** - BEDTools allows one to add as many additional fields to the normal, 10-column BEDPE format as necessary. These columns are merely "passed through" **pairToBed** and **pairToPair** and are not part of any analysis. One would use these additional columns to add extra information (e.g., edit distance for each end of an alignment, or "deletion", "inversion", etc.) to each BEDPE feature. + - *These additional columns are optional*. + + +Entries from an typical BEDPE file: +:: + chr1 100 200 chr5 5000 5100 bedpe_example1 30 + - + chr9 1000 5000 chr9 3000 3800 bedpe_example2 100 + - + + +Entries from a BEDPE file with two custom fields added to each record: +:: + chr1 10 20 chr5 50 60 a1 30 + - 0 1 + chr9 30 40 chr9 80 90 a2 100 + - 2 1 + + + +---------------------- +4.1.3 GFF format +---------------------- +The GFF format is described on the Sanger Institute's website (http://www.sanger.ac.uk/resources/software/gff/spec.html). The GFF description below is modified from the definition at this URL. All nine columns in the GFF format description are required by BEDTools. + +1. **seqname** - The name of the sequence (e.g. chromosome) on which the feature exists. + - *Any string can be used*. For example, "chr1", "III", "myChrom", "contig1112.23". + - *This column is required*. +2. **source** - The source of this feature. This field will normally be used to indicate the program making the prediction, or if it comes from public database annotation, or is experimentally verified, etc. + - *This column is required*. +3. **feature** - The feature type name. Equivalent to BED's **name** field. + - *Any string can be used*. For example, "exon", etc. + - *This column is required*. +4. **start** - The one-based starting position of feature on **seqname**. + - *This column is required*. + - *BEDTools accounts for the fact the GFF uses a one-based position and BED uses a zero-based start position*. +5. **end** - The one-based ending position of feature on **seqname**. + - *This column is required*. +6. **score** - A score assigned to the GFF feature. Like BED format, BEDTools allows any string to be stored in this field in order to allow greater flexibility in annotation features. We note that this differs from the GFF definition in the interest of flexibility. + - *This column is required*. +7. **strand** - Defines the strand. Use '+', '-' or '.' + - *This column is required*. +8. **frame** - The frame of the coding sequence. Use '0', '1', '2', or '.'. + - *This column is required*. +9. **attribute** - Taken from http://www.sanger.ac.uk/resources/software/gff/spec.html: From version 2 onwards, the attribute field must have an tag value structure following the syntax used within objects in a .ace file, flattened onto one line by semicolon separators. Tags must be standard identifiers ([A-Za-z][AZa-z0-9_]*). Free text values must be quoted with double quotes. *Note: all non-printing characters in such free text value strings (e.g. newlines, tabs, control characters, etc) must be explicitly represented by their C (UNIX) style backslash-escaped representation (e.g. newlines as '\n', tabs as '\t')*. As in ACEDB, multiple values can follow a specific tag. The aim is to establish consistent use of particular tags, corresponding to an underlying implied ACEDB model if you want to think that way (but acedb is not required). + - *This column is required*. + +An entry from an example GFF file : +:: + seq1 BLASTX similarity 101 235 87.1 + 0 Target "HBA_HUMAN" 11 55 ; + E_value 0.0003 dJ102G20 GD_mRNA coding_exon 7105 7201 . - 2 Sequence + "dJ102G20.C1.1" + + + +---------------------- +4.1.3 GFF format +---------------------- +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which which species/genome build you are +working. The way you do this for BEDTools is to create a "genome" file, which simply lists the names of +the chromosomes (or scaffolds, etc.) and their size (in basepairs). + + +Genome files must be **tab-delimited** and are structured as follows (this is an example for *C. elegans*): +:: + chrI 15072421 + chrII 15279323 + ... + chrX 17718854 + chrM 13794 + +BEDTools includes pre-defined genome files for human and mouse in the **/genomes** directory included +in the BEDTools distribution. + + +---------------------- +4.1.5 SAM/BAM format +---------------------- +The SAM / BAM format is a powerful and widely-used format for storing sequence alignment data (see +http://samtools.sourceforge.net/ for more details). It has quickly become the standard format to which +most DNA sequence alignment programs write their output. Currently, the following BEDTools +support inout in BAM format: *intersectBed, windowBed, coverageBed, genomeCoverageBed, +pairToBed, bamToBed*. Support for the BAM format in BEDTools allows one to (to name a few): +compare sequence alignments to annotations, refine alignment datasets, screen for potential mutations +and compute aligned sequence coverage. + +The details of how these tools work with BAM files are addressed in **Section 5** of this manual. + + +---------------------- +4.1.6 VCF format +---------------------- +The Variant Call Format (VCF) was conceived as part of the 1000 Genomes Project as a standardized +means to report genetic variation calls from SNP, INDEL and structural variant detection programs +(see http://www.1000genomes.org/wiki/doku.php?id=1000_genomes:analysis:vcf4.0 for details). +BEDTools now supports the latest version of this format (i.e, Version 4.0). As a result, BEDTools can +be used to compare genetic variation calls with other genomic features. diff --git a/docs/content/genomecoverageBed.rst b/docs/content/genomecoverageBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..3c5d691971abaf9d13330eccd8e9df34a9efbbba --- /dev/null +++ b/docs/content/genomecoverageBed.rst @@ -0,0 +1,122 @@ +############### +5.10 genomeCoverageBed +############### +**genomeCoverageBed** computes a histogram of feature coverage (e.g., aligned sequences) for a given +genome. Optionally, by using the **-d** option, it will report the depth of coverage at *each base* on each +chromosome in the genome file (**-g**). + +========================================================================== +5.10.1 Usage and option summary +========================================================================== +Usage: +:: + genomeCoverageBed [OPTIONS] -i <BED> -g <GENOME> + +NOTE: genomeCoverageBed requires that the input BED file be sorted by +chromosome. A simple sort -k1,1 will suffice. + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-ibam** BAM file as input for coverage. Each BAM alignment in A added to the total coverage for the genome. Use "stdin" if passing it with a UNIX pipe: For example: + | samtools view -b <BAM> | genomeCoverageBed -ibam stdin -g hg18.genome +**-d** Report the depth at each genome position. *Default behavior is to report a histogram*. +**-max** Combine all positions with a depth >= max into a single bin in the histogram. +**-bg** Report depth in BedGraph format. For details, see: http://genome.ucsc.edu/goldenPath/help/bedgraph.html +**-bga** Report depth in BedGraph format, as above (i.e., -bg). However with this option, regions with zero coverage are also reported. This allows one to quickly extract all regions of a genome with 0 coverage by applying: "grep -w 0$" to the output. +**-split** Treat "split" BAM or BED12 entries as distinct BED intervals when computing coverage. For BAM files, this uses the CIGAR "N" and "D" operations to infer the blocks for computing coverage. For BED12 files, this uses the BlockCount, BlockStarts, and BlockEnds fields (i.e., columns 10,11,12). +**-strand** Calculate coverage of intervals from a specific strand. With BED files, requires at least 6 columns (strand is column 6). +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.10.2 Default behavior +========================================================================== +By default, **genomeCoverageBed** will compute a histogram of coverage for the genome file provided. +The default output format is as follows: +1. chromosome (or entire genome) +2. depth of coverage from features in input file +3. number of bases on chromosome (or genome) with depth equal to column 2. +4. size of chromosome (or entire genome) in base pairs +5. fraction of bases on chromosome (or entire genome) with depth equal to column 2. + +For example: +:: + cat A.bed + chr1 10 20 + chr1 20 30 + chr2 0 500 + + cat my.genome + chr1 1000 + chr2 500 + + genomeCoverageBed -i A.bed -g my.genome + chr1 0 980 1000 0.98 + chr1 1 20 1000 0.02 + chr2 1 500 500 1 + genome 0 980 1500 0.653333 + genome 1 520 1500 0.346667 + + + + +========================================================================== +5.10.3 (-max)Controlling the histogram's maximum depth +========================================================================== +Using the **-max** option, **genomeCoverageBed** will "lump" all positions in the genome having feature +coverage greather than or equal to **max** into the **max** histogram bin. For example, if one sets **-max** +equal to 50, the max depth reported in the output will be 50 and all positions with a depth >= 50 will +be represented in bin 50. + +========================================================================== +5.10.4 (-d)Reporting "per-base" genome coverage +========================================================================== +Using the **-d** option, **genomeCoverageBed** will compute the depth of feature coverage for each base +on each chromosome in genome file provided. + +The "per-base" output format is as follows: +1. chromosome +2. chromosome position +3. depth (number) of features overlapping this chromosome position. + +For example: +:: + cat A.bed + chr1 10 20 + chr1 20 30 + chr2 0 500 + + cat my.genome + chr1 1000 + chr2 500 + + genomeCoverageBed -i A.bed -g my.genome -d | head -15 | tail -n 10 + chr1 6 0 + chr1 7 0 + chr1 8 0 + chr1 9 0 + chr1 10 0 + chr1 11 1 + chr1 12 1 + chr1 13 1 + chr1 14 1 + chr1 15 1 + + + +========================================================================== +5.1.13 (-split)Reporting coverage with spliced alignments or blocked BED features +========================================================================== +As described in section 1.3.19, genomeCoverageBed will, by default, screen for overlaps against the +entire span of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq +reads, for example, one typically wants to only screen for overlaps for the portions of the reads that +come from exons (and ignore the interstitial intron sequence). The **-split** command allows for such +overlaps to be performed. + +For additional details, please visit the Usage From The Wild site and have a look at example 5, +contributed by Assaf Gordon. + + diff --git a/docs/content/groupBy.rst b/docs/content/groupBy.rst new file mode 100755 index 0000000000000000000000000000000000000000..178f828271446a34197d3824291c5259873d90e0 --- /dev/null +++ b/docs/content/groupBy.rst @@ -0,0 +1,194 @@ +############### +5.22 groupBy +############### +**groupBy** is a useful tool that mimics the "groupBy" clause in database systems. Given a file or stream +that is sorted by the appropriate "grouping columns", groupBy will compute summary statistics on +another column in the file or stream. This will work with output from all BEDTools as well as any other +tab-delimited file or stream. + +**NOTE: When using groupBy, the input data must be ordered by the same +columns as specified with the -grp argument. For example, if -grp is 1,2,3, the the +data should be pre-grouped accordingly. When groupBy detects changes in the +group columns it then summarizes all lines with that group**. + + +========================================================================== +5.22.1 Usage and option summary +========================================================================== +Usage: +:: + groupBy [OPTIONS] -i <input> -opCol <input column> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-i** The input file that should be grouped and summarized. *Use "stdin" when using piped input*. + **Note: if -i is omitted, input is assumed to come from standard input (stdin)** +**-g OR -grp** Specifies which column(s) (1-based) should be used to group the input. The columns must be comma-separated and each column must be explicitly listed. No ranges (e.g. 1-4) yet allowed. *Default: 1,2,3* +**-c OR -opCol** Specify the column (1-based) that should be summarized. *Required*. +**-o OR -op** Specify the operation that should be applied to **opCol**. + + | Valid operations: + + | **sum** - *numeric only* + | **count** - *numeric or text* + | **min** - *numeric only* + | **max** - *numeric only* + | **mean** - *numeric only* + | **stdev** - *numeric only* + | **median** - *numeric only* + | **mode** - *numeric or text* + | **antimode** - *numeric or text* + | **collapse** (i.e., print a comma separated list) - *numeric or text* + | **freqasc** - *print a comma separated list of values observed and the number of times they were observed. Reported in ascending order of frequency* + | **freqdesc** - *print a comma separated list of values observed and the number of times they were observed. Reported in descending order of frequency* + + | *Default: sum* +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.22.2 Default behavior. +========================================================================== +Let's imagine we have three incredibly interesting genetic variants that we are studying and we are +interested in what annotated repeats these variants overlap. +:: + cat variants.bed + chr21 9719758 9729320 variant1 + chr21 9729310 9757478 variant2 + chr21 9795588 9796685 variant3 + + intersectBed -a variants.bed -b repeats.bed -wa -wb > variantsToRepeats.bed + cat variantsToRepeats.bed + chr21 9719758 9729320 variant1 chr21 9719768 9721892 ALR/Alpha 1004 + + chr21 9719758 9729320 variant1 chr21 9721905 9725582 ALR/Alpha 1010 + + chr21 9719758 9729320 variant1 chr21 9725582 9725977 L1PA3 3288 + + chr21 9719758 9729320 variant1 chr21 9726021 9729309 ALR/Alpha 1051 + + chr21 9729310 9757478 variant2 chr21 9729320 9729809 L1PA3 3897 - + chr21 9729310 9757478 variant2 chr21 9729809 9730866 L1P1 8367 + + chr21 9729310 9757478 variant2 chr21 9730866 9734026 ALR/Alpha 1036 - + chr21 9729310 9757478 variant2 chr21 9734037 9757471 ALR/Alpha 1182 - + chr21 9795588 9796685 variant3 chr21 9795589 9795713 (GAATG)n 308 + + chr21 9795588 9796685 variant3 chr21 9795736 9795894 (GAATG)n 683 + + chr21 9795588 9796685 variant3 chr21 9795911 9796007 (GAATG)n 345 + + chr21 9795588 9796685 variant3 chr21 9796028 9796187 (GAATG)n 756 + + chr21 9795588 9796685 variant3 chr21 9796202 9796615 (GAATG)n 891 + + chr21 9795588 9796685 variant3 chr21 9796637 9796824 (GAATG)n 621 + + + +We can see that variant1 overlaps with 3 repeats, variant2 with 4 and variant3 with 6. We can use +groupBy to summarize the hits for each variant in several useful ways. The default behavior is to +compute the *sum* of the opCol. +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3 -opCol 9 + chr21 9719758 9729320 6353 + chr21 9729310 9757478 14482 + chr21 9795588 9796685 3604 + + + +========================================================================== +5.22.3 Computing the min and max. +========================================================================== +Now let's find the *min* and *max* repeat score for each variant. We do this by "grouping" on the variant +coordinate columns (i.e. cols. 1,2 and 3) and ask for the min and max of the repeat score column (i.e. +col. 9). +:: + groupBy -i variantsToRepeats.bed -g 1,2,3 -c 9 -o min + chr21 9719758 9729320 1004 + chr21 9729310 9757478 1036 + chr21 9795588 9796685 308 + +We can also group on just the *name* column with similar effect. +:: + groupBy -i variantsToRepeats.bed -grp 4 -opCol 9 -op min + variant1 1004 + variant2 1036 + variant3 308 + +What about the *max* score? Let's keep the coordinates and the name of the variants so that we +stay in BED format. +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op max + chr21 9719758 9729320 variant1 3288 + chr21 9729310 9757478 variant2 8367 + chr21 9795588 9796685 variant3 891 + + + +========================================================================== +5.22.4 Computing the mean and median. +========================================================================== +Now let's find the *mean* and *median* repeat score for each variant. +:: + cat variantsToRepeats.bed | groupBy -g 1,2,3,4 -c 9 -o mean + chr21 9719758 9729320 variant1 1588.25 + chr21 9729310 9757478 variant2 3620.5 + chr21 9795588 9796685 variant3 600.6667 + + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op median + chr21 9719758 9729320 variant1 1030.5 + chr21 9729310 9757478 variant2 2539.5 + chr21 9795588 9796685 variant3 652 + + +========================================================================== +5.22.5 Computing the mode and "antimode". +========================================================================== +Now let's find the *mode* and *antimode* (i.e., the least frequent) repeat score for each variant (in this case +they are identical). +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op mode + chr21 9719758 9729320 variant1 1004 + chr21 9729310 9757478 variant2 1036 + chr21 9795588 9796685 variant3 308 + + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op antimode + chr21 9719758 9729320 variant1 1004 + chr21 9729310 9757478 variant2 1036 + chr21 9795588 9796685 variant3 308 + + + +========================================================================== +5.22.6 Computing the count of lines for a given group. +========================================================================== +Figure: +:: + groupBy -i variantsToRepeats.bed -g 1,2,3,4 -c 9 -c count + chr21 9719758 9729320 variant1 4 + chr21 9729310 9757478 variant2 4 + chr21 9795588 9796685 variant3 6 + + + + +========================================================================== +5.22.7 Collapsing: listing all of the values in the opCol for a given group. +========================================================================== +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This "denormalizes" things. Now you have a list of all the +repeats on a single line. +:: + groupBy -i variantsToRepeats.bed -grp 1,2,3,4 -opCol 9 -op collapse + chr21 9719758 9729320 variant1 ALR/Alpha,ALR/Alpha,L1PA3,ALR/Alpha, + chr21 9729310 9757478 variant2 L1PA3,L1P1,ALR/Alpha,ALR/Alpha, + chr21 9795588 9796685 variant3 (GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n,(GAATG)n, + + + +========================================================================== +5.22.8 Computing frequencies: freqasc and freqdesc. +========================================================================== +Now for something different. What if we wanted all of the names of the repeats listed on the same line +as the variants? Use the collapse option. This "denormalizes" things. Now you have a list of all the +repeats on a single line. +:: + cat variantsToRepeats.bed | groupBy -g 1 -c 8 -o freqdesc + chr21 (GAATG)n:6,ALR/Alpha:5,L1PA3:2,L1P1:1, + + cat variantsToRepeats.bed | groupBy -g 1 -c 8 -o freqasc + chr21 L1P1:1,L1PA3:2,ALR/Alpha:5,(GAATG)n:6, \ No newline at end of file diff --git a/docs/content/installation.rst b/docs/content/installation.rst new file mode 100755 index 0000000000000000000000000000000000000000..675cb33d4dacb53d91ff5e518b2ccdb49383997d --- /dev/null +++ b/docs/content/installation.rst @@ -0,0 +1,25 @@ +############ +Installation +############ + +BEDTools is intended to run in a "command line" environment on UNIX, LINUX and Apple OS X +operating systems. Installing BEDTools involves downloading the latest source code archive followed by +compiling the source code into binaries on your local system. The following commands will install +BEDTools in a local directory on a NIX or OS X machine. Note that the **"<version>"** refers to the +latest posted version number on http://bedtools.googlecode.com/. + +Note: *The BEDTools "makefiles" use the GCC compiler. One should edit the Makefiles accordingly if +one wants to use a different compiler.*:: + + curl http://bedtools.googlecode.com/files/BEDTools.<version>.tar.gz > BEDTools.tar.gz + tar -zxvf BEDTools.tar.gz + cd BEDTools-<version> + make clean + make all + ls bin + +At this point, one should copy the binaries in BEDTools/bin/ to either usr/local/bin/ or some +other repository for commonly used UNIX tools in your environment. You will typically require +administrator (e.g. "root" or "sudo") privileges to copy to usr/local/bin/. If in doubt, contact you +system administrator for help. + diff --git a/docs/content/intersectBed.rst b/docs/content/intersectBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..8c048566a3e6a19f34f22c85a373636561d7b272 --- /dev/null +++ b/docs/content/intersectBed.rst @@ -0,0 +1,371 @@ +################ +5.1 intersectBed +################ + +By far, the most common question asked of two sets of genomic features is whether or not any of the +features in the two sets "overlap" with one another. This is known as feature intersection. **intersectBed** +allows one to screen for overlaps between two sets of genomic features. Moreover, it allows one to have +fine control as to how the intersections are reported. **intersectBed** works with both BED/GFF/VCF +and BAM files as input. + +=============================== +5.1.1 Usage and option summary +=============================== +**Usage**: +:: + + intersectBed [OPTIONS] [-a <BED/GFF/VCF> || -abam <BAM>] -b <BED/GFF/VCF> + + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-a** BED/GFF/VCF file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. +**-b** BED/GFF/VCF file B. Use "stdin" if passing B with a UNIX pipe. +**-abam** BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view -b <BAM> | intersectBed -abam stdin -b genes.bed +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bed** When using BAM input (-abam), write output as BED. The default is to write output in BAM when using -abam. For example: intersectBed -abam reads.bam -b genes.bed -bed +**-wa** Write the original entry in A for each overlap. +**-wb** Write the original entry in B for each overlap. Useful for knowing what A overlaps. Restricted by -f and -r. +**-wo** Write the original A and B entries plus the number of base pairs of overlap between the two features. Only A features with overlap are reported. Restricted by -f and -r. +**-wao** Write the original A and B entries plus the number of base pairs of overlap between the two features. However, A features w/o overlap are also reported with a NULL B feature and overlap = 0. Restricted by -f and -r. +**-u** Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. Restricted by -f and -r. +**-c** For each entry in A, report the number of hits in B while restricting to -f. Reports 0 for A entries that have no overlap with B. Restricted by -f and -r. +**-v** Only report those entries in A that have no overlap in B. Restricted by -f and -r. +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-r** Require that the fraction of overlap be reciprocal for A and B. In other words, if -f is 0.90 and -r is used, this requires that B overlap at least 90% of A and that A also overlaps at least 90% of B. +**-s** Force "strandedness". That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +**-split** Treat "split" BAM (i.e., having an "N" CIGAR operation) or BED12 entries as distinct BED intervals. +=========================== ========================================================================================================================================================= + + +=============================== +5.1.2 Default behavior +=============================== +By default, if an overlap is found, **intersectBed** reports the shared interval between the two +overlapping features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED/BAM A ******************* ************* + + BED File B ^^^^^^^^ + + Result ======== + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed + chr1 150 200 + + +============================================= +5.1.3 (-wa)Reporting the original A feature +============================================= +Instead, one can force **intersectBed** to report the *original* **"A"** feature when an overlap is found. As +shown below, the entire "A" feature is reported, not just the portion that overlaps with the "B" feature. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED/BAM A ******************* ************* + + BED File B ^^^^^^^^ + + Result =================== + +For example (compare with example from default behavior): +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed -wa + chr1 100 200 + +============================================= +5.1.4 (-wb)Reporting the original B feature +============================================= +Similarly, one can force **intersectBed** to report the *original* **"B"** feature when an overlap is found. If +just -wb is used, the overlapping portion of A will be reported followed by the *original* **"B"**. If both -wa +and -wb are used, the *originals* of both **"A"** and **"B"** will be reported. + +For example (-wb alone): +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed -wb + chr1 150 200 chr1 150 250 + +Now -wa and -wb: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 150 250 + + intersectBed -a A.bed -b B.bed -wa -wb + chr1 100 200 chr1 150 250 + +======================================================================= +5.1.5 (-u)Reporting the presence of *at least one* overlapping feature +======================================================================= +Frequently a feature in "A" will overlap with multiple features in "B". By default, **intersectBed** will +report each overlap as a separate output line. However, one may want to simply know that there is at +least one overlap (or none). When one uses the -u option, "A" features that overlap with one or more +"B" features are reported once. Those that overlap with no "B" features are not reported at all. + + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -u + chr1 100 200 + +======================================================================= +5.1.6 (-c)Reporting the number of overlapping features +======================================================================= +The -c option reports a column after each "A" feature indicating the *number* (0 or more) of overlapping +features found in "B". Therefore, *each feature in A is reported once*. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -c + chr1 100 200 2 + chr1 1000 2000 0 + + +======================================================================= +5.1.6 (-c)Reporting the number of overlapping features +======================================================================= +The -c option reports a column after each "A" feature indicating the *number* (0 or more) of overlapping +features found in "B". Therefore, *each feature in A is reported once*. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -c + chr1 100 200 2 + chr1 1000 2000 0 + + +======================================================================= +5.1.7 (-v)Reporting the absence of any overlapping features +======================================================================= +There will likely be cases where you'd like to know which "A" features do not overlap with any of the +"B" features. Perhaps you'd like to know which SNPs don't overlap with any gene annotations. The -v +(an homage to "grep -v") option will only report those "A" features that have no overlaps in "B". + +For example: +:: + cat A.bed + chr1 100 200 + chr1 1000 2000 + + cat B.bed + chr1 101 201 + chr1 120 220 + + intersectBed -a A.bed -b B.bed -v + chr1 1000 2000 + + +======================================================================= +5.1.8 (-f)Requiring a minimal overlap fraction +======================================================================= +By default, **intersectBed** will report an overlap between A and B so long as there is at least one base +pair is overlapping. Yet sometimes you may want to restrict reported overlaps between A and B to cases +where the feature in B overlaps at least X% (e.g. 50%) of the A feature. The -f option does exactly +this. + +For example (note that the second B entry is not reported): +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 130 201 + chr1 180 220 + + intersectBed -a A.bed -b B.bed -f 0.50 -wa -wb + chr1 100 200 chr1 130 201 + +========================================================================== +5.1.9 (-r, combined with -f)Requiring reciprocal minimal overlap fraction +========================================================================== +Similarly, you may want to require that a minimal fraction of both the A and the B features is +overlapped. For example, if feature A is 1kb and feature B is 1Mb, you might not want to report the +overlap as feature A can overlap at most 1% of feature B. If one set -f to say, 0.02, and one also +enable the -r (reciprocal overlap fraction required), this overlap would not be reported. + +For example (note that the second B entry is not reported): +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 130 201 + chr1 130 200000 + + intersectBed -a A.bed -b B.bed -f 0.50 -r -wa -wb + chr1 100 200 chr1 130 201 + +========================================================================== +5.1.10 (-s)Enforcing "strandedness" +========================================================================== +By default, **intersectBed** will report overlaps between features even if the features are on opposite +strands. However, if strand information is present in both BED files and the "-s" option is used, overlaps +will only be reported when features are on the same strand. + +For example (note that the second B entry is not reported): +:: + cat A.bed + chr1 100 200 a1 100 + + + cat B.bed + chr1 130 201 b1 100 - + chr1 130 201 b2 100 + + + intersectBed -a A.bed -b B.bed -wa -wb -s + chr1 100 200 a1 100 + chr1 130 201 b2 100 + + + +========================================================================== +5.1.11 (-abam)Default behavior when using BAM input +========================================================================== +When comparing alignments in BAM format (**-abam**) to features in BED format (**-b**), **intersectBed** +will, **by default**, write the output in BAM format. That is, each alignment in the BAM file that meets +the user's criteria will be written (to standard output) in BAM format. This serves as a mechanism to +create subsets of BAM alignments are of biological interest, etc. Note that only the mate in the BAM +alignment is compared to the BED file. Thus, if only one end of a paired-end sequence overlaps with a +feature in B, then that end will be written to the BAM output. By contrast, the other mate for the +pair will not be written. One should use **pairToBed(Section 5.2)** if one wants each BAM alignment +for a pair to be written to BAM output. + +For example: +:: + intersectBed -abam reads.unsorted.bam -b simreps.bed | samtools view - | head -3 + + BERTHA_0001:3:1:15:1362#0 99 chr4 9236904 0 50M = 9242033 5 1 7 9 + AGACGTTAACTTTACACACCTCTGCCAAGGTCCTCATCCTTGTATTGAAG W c T U ] b \ g c e g X g f c b f c c b d d g g V Y P W W _ + \c`dcdabdfW^a^gggfgd XT:A:R NM:i:0 SM:i:0 AM:i:0 X0:i:19 X1:i:2 XM:i:0 XO:i:0 XG:i:0 MD:Z:50 + BERTHA _0001:3:1:16:994#0 83 chr6 114221672 37 25S6M1I11M7S = + 114216196 -5493 G A A A G G C C A G A G T A T A G A A T A A A C A C A A C A A T G T C C A A G G T A C A C T G T T A + gffeaaddddggggggedgcgeggdegggggffcgggggggegdfggfgf XT:A:M NM:i:3 SM:i:37 AM:i:37 XM:i:2 X O : i : + 1 XG:i:1 MD:Z:6A6T3 + BERTHA _0001:3:1:16:594#0 147 chr8 43835330 0 50M = + 43830893 -4487 CTTTGGGAGGGCTTTGTAGCCTATCTGGAAAAAGGAAATATCTTCCCATG U + \e^bgeTdg_Kgcg`ggeggg_gggggggggddgdggVg\gWdfgfgff XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:10 X1:i:7 X M : i : + 2 XO:i:0 XG:i:0 MD:Z:1A2T45 + + +========================================================================== +5.1.12 (-bed)Output BED format when using BAM input +========================================================================== +When comparing alignments in BAM format (**-abam**) to features in BED format (**-b**), **intersectBed** +will **optionally** write the output in BED format. That is, each alignment in the BAM file is converted +to a 6 column BED feature and if overlaps are found (or not) based on the user's criteria, the BAM +alignment will be reported in BED format. The BED "name" field is comprised of the RNAME field in +the BAM alignment. If mate information is available, the mate (e.g., "/1" or "/2") field will be +appended to the name. The "score" field is the mapping quality score from the BAM alignment. + +For example: +:: + intersectBed -abam reads.unsorted.bam -b simreps.bed -bed | head -20 + + chr4 9236903 9236953 BERTHA_0001:3:1:15:1362#0/1 0 + + chr6 114221671 114221721 BERTHA_0001:3:1:16:994#0/1 37 - + chr8 43835329 43835379 BERTHA_0001:3:1:16:594#0/2 0 - + chr4 49110668 49110718 BERTHA_0001:3:1:31:487#0/1 23 + + chr19 27732052 27732102 BERTHA_0001:3:1:32:890#0/2 46 + + chr19 27732012 27732062 BERTHA_0001:3:1:45:1135#0/1 37 + + chr10 117494252 117494302 BERTHA_0001:3:1:68:627#0/1 37 - + chr19 27731966 27732016 BERTHA_0001:3:1:83:931#0/2 9 + + chr8 48660075 48660125 BERTHA_0001:3:1:86:608#0/2 37 - + chr9 34986400 34986450 BERTHA_0001:3:1:113:183#0/2 37 - + chr10 42372771 42372821 BERTHA_0001:3:1:128:1932#0/1 3 - + chr19 27731954 27732004 BERTHA_0001:3:1:130:1402#0/2 0 + + chr10 42357337 42357387 BERTHA_0001:3:1:137:868#0/2 9 + + chr1 159720631 159720681 BERTHA_0001:3:1:147:380#0/2 37 - + chrX 58230155 58230205 BERTHA_0001:3:1:151:656#0/2 37 - + chr5 142612746 142612796 BERTHA_0001:3:1:152:1893#0/1 37 - + chr9 71795659 71795709 BERTHA_0001:3:1:177:387#0/1 37 + + chr1 106240854 106240904 BERTHA_0001:3:1:194:928#0/1 37 - + chr4 74128456 74128506 BERTHA_0001:3:1:221:724#0/1 37 - + chr8 42606164 42606214 BERTHA_0001:3:1:244:962#0/1 37 + + +================================================================================== +5.1.13 (-split)Reporting overlaps with spliced alignments or blocked BED features +================================================================================== +As described in section 1.3.19, intersectBed will, by default, screen for overlaps against the entire span +of a spliced/split BAM alignment or blocked BED12 feature. When dealing with RNA-seq reads, for +example, one typically wants to only screen for overlaps for the portions of the reads that come from +exons (and ignore the interstitial intron sequence). The **-split** command allows for such overlaps to be +performed. + +For example, the diagram below illustrates the *default* behavior. The blue dots represent the "split/ +spliced" portion of the alignment (i.e., CIGAR "N" operation). In this case, the two exon annotations +are reported as overlapping with the "split" BAM alignment, but in addition, a third feature that +overlaps the "split" portion of the alignment is also reported. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Exons --------------- ---------- + + BED/BAM A ************.......................................**** + + BED File B ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + + Result =============== ======== ========== + + +In contrast, when using the **-split** option, only the exon overlaps are reported. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Exons --------------- ---------- + + BED/BAM A ************.......................................**** + + BED File B ^^^^^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + + Result =============== ========== \ No newline at end of file diff --git a/docs/content/linksBed.rst b/docs/content/linksBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..ca32e8b2816123f0e5c8384c02409db67c1c4086 --- /dev/null +++ b/docs/content/linksBed.rst @@ -0,0 +1,74 @@ +############### +5.16 linksBed +############### +Creates an HTML file with links to an instance of the UCSC Genome Browser for all features / +intervals in a file. This is useful for cases when one wants to manually inspect through a large set of +annotations or features. + +========================================================================== +5.16.1 Usage and option summary +========================================================================== +Usage: +:: + linksBed [OPTIONS] -i <BED/GFF/VCF> > <HTML file> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-base** The "basename" for the UCSC browser. *Default: http://genome.ucsc.edu* +**-org** The organism (e.g. mouse, human). *Default: human* +**-db** The genome build. *Default: hg18* +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.16.2 Default behavior +========================================================================== +By default, **linksBed** creates links to the public UCSC Genome Browser. + +For example: +:: + head genes.bed + chr21 9928613 10012791 uc002yip.1 0 - + chr21 9928613 10012791 uc002yiq.1 0 - + chr21 9928613 10012791 uc002yir.1 0 - + chr21 9928613 10012791 uc010gkv.1 0 - + chr21 9928613 10061300 uc002yis.1 0 - + chr21 10042683 10120796 uc002yit.1 0 - + chr21 10042683 10120808 uc002yiu.1 0 - + chr21 10079666 10120808 uc002yiv.1 0 - + chr21 10080031 10081687 uc002yiw.1 0 - + chr21 10081660 10120796 uc002yix.2 0 - + + linksBed -i genes.bed > genes.html + +When genes.html is opened in a web browser, one should see something like the following, where each +link on the page is built from the features in genes.bed: + + + + + +========================================================================== +5.16.3 Creating HTML links to a local UCSC Browser installation +========================================================================== +Optionally, **linksBed** will create links to a local copy of the UCSC Genome Browser. + +For example: +:: + head -3 genes.bed + chr21 9928613 10012791 uc002yip.1 0 - + chr21 9928613 10012791 uc002yiq.1 0 - + + linksBed -i genes.bed -base http://mirror.uni.edu > genes.html + +One can point the links to the appropriate organism and genome build as well: +:: + head -3 genes.bed + chr21 9928613 10012791 uc002yip.1 0 - + chr21 9928613 10012791 uc002yiq.1 0 - + + linksBed -i genes.bed -base http://mirror.uni.edu -org mouse -db mm9 > genes.html + diff --git a/docs/content/maskfastafromBed.rst b/docs/content/maskfastafromBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..1a8530e00723f944499740dc355b84f0359f7aee --- /dev/null +++ b/docs/content/maskfastafromBed.rst @@ -0,0 +1,70 @@ +############### +5.12 maskFastaFromBed +############### +**maskFastaFromBed** masks sequences in a FASTA file based on intervals defined in a feature file. The +headers in the input FASTA file must exactly match the chromosome column in the feature file. This +may be useful fro creating your own masked genome file based on custom annotations or for masking all +but your target regions when aligning sequence data from a targeted capture experiment. + + +========================================================================== +5.12.1 Usage and option summary +========================================================================== +Usage: +:: + maskFastaFromBed [OPTIONS] -fi <input FASTA> -bed <BED/GFF/VCF> -fo <output FASTA> + +NOTE: The input and output FASTA files must be different. + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-soft** Soft-mask (that is, convert to lower-case bases) the FASTA sequence. *By default, hard-masking (that is, conversion to Ns) is performed*. +=========================== =============================================================================================================================================================================================================== + + + + + + +========================================================================== +5.12.2 Default behavior +========================================================================== +**maskFastaFromBed** will mask a FASTA file based on the intervals in a BED file. The newly masked +FASTA file is written to the output FASTA file. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 + + maskFastaFromBed -fi test.fa -bed test.bed -fo test.fa.out + + cat test.fa.out + >chr1 + AAAAANNNNNCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + +========================================================================== +5.12.3 Soft-masking the FASTA file. +========================================================================== +Using the **-soft** option, one can optionally "soft-mask" the FASTA file. + +For example: +:: + cat test.fa + >chr1 + AAAAAAAACCCCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG + + cat test.bed + chr1 5 10 + + maskFastaFromBed -fi test.fa -bed test.bed -fo test.fa.out -soft + + cat test.fa.out + >chr1 + AAAAAaaaccCCCCCCCCCCGCTACTGGGGGGGGGGGGGGGGGG diff --git a/docs/content/mergeBed.rst b/docs/content/mergeBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..16f73cc00aaaff5f2b62e3d178309cd203c9269e --- /dev/null +++ b/docs/content/mergeBed.rst @@ -0,0 +1,120 @@ +############### +5.8 mergeBed +############### +**mergeBed** combines overlapping or "book-ended" (that is, one base pair away) features in a feature file +into a single feature which spans all of the combined features. + +========================================================================== +5.8.1 Usage and option summary +========================================================================== +Usage: +:: + mergeBed [OPTIONS] -i <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-s** Force strandedness. That is, only merge features that are the same strand. *By default, this is disabled*. +**-n** Report the number of BED entries that were merged. *1 is reported if no merging occurred*. +**-d** Maximum distance between features allowed for features to be merged. *Default is 0. That is, overlapping and/or book-ended features are merged*. +**-nms** Report the names of the merged features separated by semicolons. +=========================== =============================================================================================================================================================================================================== + + + + + +========================================================================== +5.8.2 Default behavior +========================================================================== +Figure: +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE ************* *************** ********************** + ******** + + Result =============================== ====================== + + + +For example: +:: + cat A.bed + chr1 100 200 + chr1 180 250 + chr1 250 500 + chr1 501 1000 + + mergeBed -i A.bed + chr1 100 500 + chr1 501 1000 + + + + + + +========================================================================== +5.8.3 (-s)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for features that should +be merged. Only features on the same strand will be merged. See the discussion in the intersectBed +section for details. + +========================================================================== +5.8.4 (-n)Reporting the number of features that were merged +========================================================================== +The -n option will report the number of features that were combined from the original file in order to +make the newly merged feature. If a feature in the original file was not merged with any other features, +a "1" is reported. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 180 250 + chr1 250 500 + chr1 501 1000 + + mergeBed -i A.bed -n + chr1 100 500 3 + chr1 501 1000 1 + + +========================================================================== +5.8.5 (-d)Controlling how close two features must be in order to merge +========================================================================== +By default, only overlapping or book-ended features are combined into a new feature. However, one can +force mergeBed to combine more distant features with the -d option. For example, were one to set -d to +1000, any features that overlap or are within 1000 base pairs of one another will be combined. + +For example: +:: + cat A.bed + chr1 100 200 + chr1 501 1000 + + mergeBed -i A.bed + chr1 100 200 + chr1 501 1000 + + mergeBed -i A.bed -d 1000 + chr1 100 200 1000 + +========================================================================== +5.8.6 (-nms)Reporting the names of the features that were merged +========================================================================== +Occasionally, one might like to know that names of the features that were merged into a new feature. +The -nms option will add an extra column to the mergeBed output which lists (separated by +semicolons) the names of the merged features. + +For example: +:: + cat A.bed + chr1 100 200 A1 + chr1 150 300 A2 + chr1 250 500 A3 + + mergeBed -i A.bed -nms + chr1 100 500 A1;A2;A3 diff --git a/docs/content/overlap.rst b/docs/content/overlap.rst new file mode 100755 index 0000000000000000000000000000000000000000..418c4c8a11a1ccce0a659880f20aa28436205d9b --- /dev/null +++ b/docs/content/overlap.rst @@ -0,0 +1,41 @@ +############### +5.19 overlap +############### +**overlap** computes the amount of overlap (in the case of positive values) or distance (in the case of +negative values) between feature coordinates occurring on the same input line and reports the result at +the end of the same line. In this way, it is a useful method for computing custom overlap scores from +the output of other BEDTools. + +========================================================================== +5.19.1 Usage and option summary +========================================================================== +Usage: +:: + overlap [OPTIONS] -i <input> -cols s1,e1,s2,e2 + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-i** Input file. Use "stdin" for pipes. +**-cols** Specify the columns (1-based) for the starts and ends of the features for which you'd like to compute the overlap/distance. The columns must be listed in the following order: *start1,end1,start2,end2* +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.19.2 Default behavior +========================================================================== +The default behavior is to compute the amount of overlap between the features you specify based on the +start and end coordinates. For example: +:: + windowBed -a A.bed -b B.bed -w 10 + chr1 10 20 A chr1 15 25 B + chr1 10 20 C chr1 25 35 D + +# Now let's say we want to compute the number of base pairs of overlap +# between the overlapping features from the output of windowBed. +:: + windowBed -a A.bed -b B.bed -w 10 | overlap -i stdin -cols 2,3,6,7 + chr1 10 20 A chr1 15 25 B 5 + chr1 10 20 C chr1 25 35 D -5 + diff --git a/docs/content/overview.rst b/docs/content/overview.rst new file mode 100755 index 0000000000000000000000000000000000000000..a836365eed7efe9af3f73c1d5f705d9a7cc7ef8b --- /dev/null +++ b/docs/content/overview.rst @@ -0,0 +1,348 @@ +.. role:: red + +############ +Overview +############ + +========== +1.1 Background +========== + +The development of BEDTools was motivated by a need for fast, flexible tools with which to compare large sets of genomic +features. Answering fundamental research questions with existing tools was either too slow or required modifications to the +way they reported or computed their results. We were aware of the utilities on the UCSC Genome Browser and Galaxy websites, as +well as the elegant tools available as part of Jim Kent’s monolithic suite of tools (“Kent sourceâ€). However, we found that +the web-based tools were too cumbersome when working with large datasets generated by current sequencing technologies. +Similarly, we found that the Kent source command line tools often required a local installation of the UCSC Genome Browser. +These limitations, combined with the fact that we often wanted an extra option here or there that wasn’t available with +existing tools, led us to develop our own from scratch. The initial version of BEDTools was publicly released in the spring of +2009. The current version has evolved from our research experiences and those of the scientists using the suite over the last +year. The BEDTools suite enables one to answer common questions of genomic data in a fast and reliable manner. The fact that +almost all the utilities accept input from “stdin†allows one to “stream / pipe†several commands together to facilitate more +complicated analyses. Also, the tools allow fine control over how output is reported. The initial version of BEDTools +supported solely 6-column `BED <http://genome.ucsc.edu/FAQ/FAQformat#format1>`_ files. *However, we have subsequently added support for sequence alignments in* `BAM <http://samtools.sourceforge.net/>`_ +*format, as well as for features in* `GFF <http://genome.ucsc.edu/FAQ/FAQformat#format3>`_ , *“blocked†BED format, and* +`VCF <http://www.1000genomes.org/wiki/Analysis/Variant%20Call%20Format/vcf-variant-call-format-version-41>`_ *format*. +The tools are quite fast and typically finish in a matter of a few seconds, even for large datasets. This manual seeks to describe the behavior and +available functionality for each BEDTool. Usage examples are scattered throughout the text, and formal examples are +provided in the last two sections, we hope that this document will give you a sense of the flexibility of +the toolkit and the types of analyses that are possible with BEDTools. If you have further questions, please join the BEDTools +discussion group, visit the Usage Examples on the Google Code site (usage, advanced usage), or take a look at the nascent +“Usage From the Wild†page. + +=========================== +1.2 Summary of available tools. +=========================== + +BEDTools support a wide range of operations for interrogating and manipulating genomic features. The table below summarizes +the tools available in the suite. + +=========================== ========================================================================================================================================================= +Utility Description +=========================== ========================================================================================================================================================= +**intersectBed** Returns overlaps between two BED/GFF/VCF files. +**pairToBed** Returns overlaps between a paired-end BED file and a regular BED/VCF/GFF file. +**bamToBed** Converts BAM alignments to BED6, BED12, or BEDPE format. +**bedToBam** Converts BED/GFF/VCF features to BAM format. +**bed12ToBed6** Converts "blocked" BED12 features to discrete BED6 features. +**bedToIgv** Creates IGV batch scripts for taking multiple snapshots from BED/GFF/VCF features. +**coverageBed** Summarizes the depth and breadth of coverage of features in one BED versus features (e.g, windows, exons, etc.) defined in another BED/GFF/VCF file. +**multiBamCov** Counts sequence coverage for multiple position-sorted bams at specific loci defined in a BED/GFF/VCF file +**tagBam** Annotates a BAM file with custom tag fields based on overlaps with BED/GFF/VCF files +**nuclBed** Profiles the nucleotide content of intervals in a fasta file +**genomeCoverageBed** Creates either a histogram, BEDGRAPH, or a "per base" report of genome coverage. +**unionBedGraphs** Combines multiple BedGraph? files into a single file, allowing coverage/other comparisons between them. +**annotateBed** Annotates one BED/VCF/GFF file with overlaps from many others. +**groupBy** Deprecated. Now in the filo package. +**overlap** Returns the number of bases pairs of overlap b/w two features on the same line. +**pairToPair** Returns overlaps between two paired-end BED files. +**closestBed** Returns the closest feature to each entry in a BED/GFF/VCF file. +**subtractBed** Removes the portion of an interval that is overlapped by another feature. +**windowBed** Returns overlaps between two BED/VCF/GFF files based on a user-defined window. +**mergeBed** Merges overlapping features into a single feature. +**complementBed** Returns all intervals not spanned by the features in a BED/GFF/VCF file. +**fastaFromBed** Creates FASTA sequences based on intervals in a BED/GFF/VCF file. +**maskFastaFromBed** Masks a FASTA file based on BED coordinates. +**shuffleBed** Randomly permutes the locations of a BED file among a genome. +**slopBed** Adjusts each BED entry by a requested number of base pairs. +**flankBed** Creates flanking intervals for each feature in a BED/GFF/VCF file. +**sortBed** Sorts a BED file by chrom, then start position. Other ways as well. +**linksBed** Creates an HTML file of links to the UCSC or a custom browser. +=========================== ========================================================================================================================================================= + + + + + + +=========================== +1.3 Fundamental concepts. +=========================== +------------------------------------------------------ +1.3.1 What are genome features and how are they represented? +------------------------------------------------------ +Throughout this manual, we will discuss how to use BEDTools to manipulate, compare and ask questions of genome “featuresâ€. Genome features can be functional elements (e.g., genes), genetic polymorphisms (e.g. +SNPs, INDELs, or structural variants), or other annotations that have been discovered or curated by genome sequencing groups or genome browser groups. In addition, genome features can be custom annotations that +an individual lab or researcher defines (e.g., my novel gene or variant). + +The basic characteristics of a genome feature are the chromosome or scaffold on which the feature “residesâ€, the base pair on which the +feature starts (i.e. the “startâ€), the base pair on which feature ends (i.e. the “endâ€), the strand on which the feature exists (i.e. “+†or “-“), and the name of the feature if one is applicable. + +The two most widely used formats for representing genome features are the BED (Browser Extensible Data) and GFF (General Feature Format) formats. BEDTools was originally written to work exclusively with genome features +described using the BED format, but it has been recently extended to seamlessly work with BED, GFF and VCF files. + +Existing annotations for the genomes of many species can be easily downloaded in BED and GFF +format from the UCSC Genome Browser’s “Table Browser†(http://genome.ucsc.edu/cgi-bin/hgTables?command=start) or from the “Bulk Downloads†page (http://hgdownload.cse.ucsc.edu/downloads.html). In addition, the +Ensemble Genome Browser contains annotations in GFF/GTF format for many species (http://www.ensembl.org/info/data/ftp/index.html) + +------------------------------------- +1.3.2 Overlapping / intersecting features. +------------------------------------- +Two genome features (henceforth referred to as “featuresâ€) are said to overlap or intersect if they share at least one base in common. +In the figure below, Feature A intersects/overlaps Feature B, but it does not intersect/overlap Feature C. + +**TODO: place figure here** + +-------------------------------------------- +1.3.3 Comparing features in file “A†and file “Bâ€. +-------------------------------------------- +The previous section briefly introduced a fundamental naming convention used in BEDTools. Specifically, all BEDTools that compare features contained in two distinct files refer to one file as feature set “A†and the other file as feature set “Bâ€. This is mainly in the interest of brevity, but it also has its roots in set theory. +As an example, if one wanted to look for SNPs (file A) that overlap with exons (file B), one would use intersectBed in the following manner:: + + intersectBed –a snps.bed –b exons.bed + +There are two exceptions to this rule: 1) When the “A†file is in BAM format, the “-abam†option must bed used. For example:: + + intersectBed –abam alignedReads.bam –b exons.bed + +And 2) For tools where only one input feature file is needed, the “-i†option is used. For example:: + + mergeBed –i repeats.bed + +----------------------------------------------------- +1.3.4 BED starts are zero-based and BED ends are one-based. +----------------------------------------------------- +BEDTools users are sometimes confused by the way the start and end of BED features are represented. Specifically, BEDTools uses the UCSC Genome Browser’s internal database convention of making the start position 0-based and the end position 1-based: (http://genome.ucsc.edu/FAQ/FAQtracks#tracks1) +In other words, BEDTools interprets the “start†column as being 1 basepair higher than what is represented in the file. For example, the following BED feature represents a single base on chromosome 1; namely, the 1st base:: + + chr1 0 1 first_base + +Why, you might ask? The advantage of storing features this way is that when computing the length of a feature, one must simply subtract the start from the end. Were the start position 1-based, +the calculation would be (slightly) more complex (i.e. (end-start)+1). Thus, storing BED features this way reduces the computational burden. + +----------------------------------------------------- +1.3.5 GFF starts and ends are one-based. +----------------------------------------------------- +In contrast, the GFF format uses 1-based coordinates for both the start and the end positions. BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your GFF features for them to work correctly with BEDTools. + +----------------------------------------------------- +1.3.6 VCF coordinates are one-based. +----------------------------------------------------- +The VCF format uses 1-based coordinates. As in GFF, BEDTools is aware of this and adjusts the positions accordingly. +In other words, you don’t need to subtract 1 from the start positions of your VCF features for them to work correctly with BEDTools. + +----------------------------------------------------- +1.3.7 File B is loaded into memory (most of the time). +----------------------------------------------------- +Whenever a BEDTool compares two files of features, the “B†file is loaded into memory. By contrast, the “A†file is processed line by line and compared with the features from B. +Therefore to minimize memory usage, one should set the smaller of the two files as the B file. One salient example is the comparison of aligned sequence reads from a +current DNA sequencer to gene annotations. In this case, the aligned sequence file (in BED format) may have tens of millions of features (the sequence alignments), +while the gene annotation file will have tens of thousands of features. In this case, it is wise to sets the reads as file A and the genes as file B. + +----------------------------------------------------- +1.3.8 Feature files *must* be tab-delimited. +----------------------------------------------------- +This is rather self-explanatory. While it is possible to allow BED files to be space-delimited, we have decided to require tab delimiters for three reasons: + +1. By requiring one delimiter type, the processing time is minimized. +2. Tab-delimited files are more amenable to other UNIX utilities. +3. GFF files can contain spaces within attribute columns. This complicates the use of space-delimited files as spaces must therefore be treated specially depending on the context. + +------------------------------------------------------------- +1.3.9 All BEDTools allow features to be “piped†via standard input. +------------------------------------------------------------- + +In an effort to allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, all BEDTools allow features +to be passed to them via standard input. Only one feature file may be passed to a BEDTool via standard input. +The convention used by all BEDTools is to set either file A or file B to “stdin†or "-". For example:: + + cat snps.bed | intersectBed –a stdin –b exons.bed + cat snps.bed | intersectBed –a - –b exons.bed + +In addition, all BEDTools that simply require one main input file (the -i file) will assume that input is +coming from standard input if the -i parameter is ignored. For example, the following are equivalent:: + + cat snps.bed | sortBed –i stdin + cat snps.bed | sortBed + +------------------------------------------------------ +1.3.10 Most BEDTools write their results to standard output. +------------------------------------------------------ +To allow one to combine multiple BEDTools and other UNIX utilities into more complicated “pipelinesâ€, +most BEDTools report their output to standard output, rather than to a named file. If one wants to write the output to a named file, one can use the UNIX “file redirection†symbol “>†to do so. +Writing to standard output (the default):: + + intersectBed –a snps.bed –b exons.bed + chr1 100100 100101 rs233454 + chr1 200100 200101 rs446788 + chr1 300100 300101 rs645678 + +Writing to a file:: + + intersectBed –a snps.bed –b exons.bed > snps.in.exons.bed + + cat snps.in.exons.bed + chr1 100100 100101 rs233454 + chr1 200100 200101 rs446788 + chr1 300100 300101 rs645678 + +------------------------ +1.3.11 What is a “genome†file? +------------------------ +Some of the BEDTools (e.g., genomeCoverageBed, complementBed, slopBed) need to know the size of +the chromosomes for the organism for which your BED files are based. When using the UCSC Genome +Browser, Ensemble, or Galaxy, you typically indicate which species / genome build you are working. +The way you do this for BEDTools is to create a “genome†file, which simply lists the names of the +chromosomes (or scaffolds, etc.) and their size (in basepairs). +Genome files must be tab-delimited and are structured as follows (this is an example for C. elegans):: + + chrI 15072421 + chrII 15279323 + ... + chrX 17718854 + chrM 13794 + +BEDTools includes predefined genome files for human and mouse in the /genomes directory included +in the BEDTools distribution. Additionally, the “chromInfo†files/tables available from the UCSC +Genome Browser website are acceptable. For example, one can download the hg19 chromInfo file here: +http://hgdownload.cse.ucsc.edu/goldenPath/hg19/database/chromInfo.txt.gz + +------------------------------------ +1.3.12 Paired-end BED files (BEDPE files). +------------------------------------ +We have defined a new file format (BEDPE) to concisely describe disjoint genome features, such as +structural variations or paired-end sequence alignments. We chose to define a new format because the +existing BED block format (i.e. BED12) does not allow inter-chromosomal feature definitions. Moreover, +the BED12 format feels rather bloated when one want to describe events with only two blocks. + +------------------------------------------ +1.3.13 Use “-h†for help with any BEDTool. +------------------------------------------ +Rather straightforward. If you use the “-h†option with any BEDTool, a full menu of example usage +and available options (when applicable) will be reported. + +-------------------------------------------------- +1.3.14 BED features must not contain negative positions. +-------------------------------------------------- +BEDTools will typically reject BED features that contain negative positions. In special cases, however, +BEDPE positions may be set to -1 to indicate that one or more ends of a BEDPE feature is unaligned. + +--------------------------------------------------- +1.3.15 The start position must be <= to the end position. +--------------------------------------------------- +BEDTools will reject BED features where the start position is greater than the end position. + +----------------------------------------- +1.3.16 Headers are allowed in GFF and BED files +----------------------------------------- +BEDTools will ignore headers at the beginning of BED and GFF files. Valid header lines begin with a +“#†symbol, the work “trackâ€, or the word “browserâ€. For example, the following examples are valid +headers for BED or GFF files:: + + track name=aligned_read description="Illumina aligned reads†+ chr5 100000 500000 read1 50 + + chr5 2380000 2386000 read2 60 - + + #This is a fascinating dataset + chr5 100000 500000 read1 50 + + chr5 2380000 2386000 read2 60 - + + browser position chr22:1-20000 + chr5 100000 500000 read1 50 + + chr5 2380000 2386000 read2 60 - + +------------------------------------------------------------- +1.3.17 GZIP support: BED, GFF, VCF, and BEDPE file can be “gzipped†+------------------------------------------------------------- +BEDTools will process gzipped BED, GFF, VCF and BEDPE files in the same manner as +uncompressed files. Gzipped files are auto-detected thanks to a helpful contribution from Gordon +Assaf. + +---------------------------------------------------------------------------- +1.3.18 Support for “split†or “spliced†BAM alignments and “blocked†BED features +---------------------------------------------------------------------------- +As of Version 2.8.0, five BEDTools (``intersectBed``, ``coverageBed``, ``genomeCoverageBed``, +``bamToBed``, and ``bed12ToBed6``) can properly handle “splitâ€/â€spliced†BAM alignments (i.e., having an +“N†CIGAR operation) and/or “blocked†BED (aka BED12) features. + +``intersectBed``, ``coverageBed``, and ``genomeCoverageBed`` will optionally handle “split†BAM and/or +“blocked†BED by using the ``-split`` option. This will cause intersects or coverage to be computed only +for the alignment or feature blocks. In contrast, without this option, the intersects/coverage would be +computed for the entire “span†of the alignment or feature, regardless of the size of the gaps between +each alignment or feature block. For example, imagine you have a RNA-seq read that originates from +the junction of two exons that were spliced together in a mRNA. In the genome, these two exons +happen to be 30Kb apart. Thus, when the read is aligned to the reference genome, one portion of the +read will align to the first exon, while another portion of the read will align ca. 30Kb downstream to the +other exon. The corresponding CIGAR string would be something like (assuming a 76bp read): +30M*3000N*46M. In the genome, this alignment “spans†3076 bp, yet the nucleotides in the sequencing +read only align “cover†76bp. Without the ``-split`` option, coverage or overlaps would be reported for the +entire 3076bp span of the alignment. However, with the ``-split`` option, coverage or overlaps will only +be reported for the portions of the read that overlap the exons (i.e. 30bp on one exon, and +46bp on the other). + + +Using the -split option with bamToBed causes “spliced/split†alignments to be reported in BED12 +format. Using the -split option with bed12ToBed6 causes “blocked†BED12 features to be reported in +BED6 format. + +-------------------------------- +1.3.19 Writing uncompressed BAM output. +-------------------------------- +When working with a large BAM file using a complex set of tools in a pipe/stream, it is advantageous +to pass uncompressed BAM output to each downstream program. This minimizes the amount of time +spent compressing and decompressing output from one program to the next. All BEDTools that create +BAM output (e.g. ``intersectBed``, ``windowBed``) will now optionally create uncompressed BAM output +using the ``-ubam`` option. + + + +===================================== +1.4 Implementation and algorithmic notes. +===================================== +BEDTools was implemented in C++ and makes extensive use of data structures and fundamental +algorithms from the Standard Template Library (STL). Many of the core algorithms are based upon the +genome binning algorithm described in the original UCSC Genome Browser paper (Kent et al, 2002). +The tools have been designed to inherit core data structures from central source files, thus allowing +rapid tool development and deployment of improvements and corrections. Support for BAM files is +made possible through Derek Barnett’s elegant C++ API called BamTools. + + + +===================================== +1.5 License and availability. +===================================== +BEDTools is freely available under a GNU Public License (Version 2) at: +http://bedtools.googlecode.com + + + +===================================== +1.6 Mailing list. +===================================== +A discussion group for reporting bugs, asking questions of the developer and of the user community, as +well as for requesting new features is available at: +http://groups.google.com/group/bedtools-discuss + + + +===================================== +1.7 Contributors. +===================================== +As open-source software, BEDTools greatly benefits from contributions made by other developers and +users of the tools. We encourage and welcome suggestions, contributions and complaints. This is how +software matures, improves and stays on top of the needs of its user community. The Google Code +(GC) site maintains a list of individuals who have contributed either source code or useful ideas for +improving the tools. In the near future, we hope to maintain a source repository on the GC site in +order to facilitate further contributions. We are currently unable to do so because we use Git for +version control, which is not yet supported by GC. \ No newline at end of file diff --git a/docs/content/pairToBed.rst b/docs/content/pairToBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..75db129a8e589956b227f6b4efef7f7a077445dc --- /dev/null +++ b/docs/content/pairToBed.rst @@ -0,0 +1,378 @@ +############### +5.2 pairToBed +############### +**pairToBed** compares each end of a BEDPE feature or a paired-end BAM alignment to a feature file in +search of overlaps. + +**NOTE: pairToBed requires that the BAM file is sorted/grouped by the read name. This +allows pairToBed to extract correct alignment coordinates for each end based on their +respective CIGAR strings. It also assumes that the alignments for a given pair come in +groups of twos. There is not yet a standard method for reporting multiple alignments +using BAM. pairToBed will fail if an aligner does not report alignments in pairs.** + +========================================================================== +5.2.1 Usage and option summary +========================================================================== +**Usage:** +:: + pairToBed [OPTIONS] [-a <BEDPE> || -abam <BAM>] -b <BED/GFF/VCF> + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-a** BEDPE file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. Output will be in BEDPE format. +**-b** BED file B. Use "stdin" if passing B with a UNIX pipe. +**-abam** BAM file A. Each end of each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view ¨Cb <BAM> | pairToBed ¨Cabam stdin ¨Cb genes.bed | samtools view - +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bedpe** When using BAM input (-abam), write output as BEDPE. The default is to write output in BAM when using -abam. For example: pairToBed ¨Cabam reads.bam ¨Cb genes.bed ¨Cbedpe +**-ed** Use BAM total edit distance (NM tag) for BEDPE score. Default for BEDPE is to use the *minimum* of the two mapping qualities for the pair. When -ed is used the *total* edit distance from the two mates is reported as the score. +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-s** Force "strandedness". That is, only report hits in B that overlap A on the **same** strand. By default, overlaps are reported without respect to strand. +**-type** + Approach to reporting overlaps between BEDPE and BED. + + + **either-** Report overlaps if either end of A overlaps B. + + - *Default* + + **neither-** Report A if neither end of A overlaps B. + + **xor-** Report overlaps if one and only one end of A overlaps B. + + **both-** Report overlaps if both ends of A overlap B. + + **notboth-** Report overlaps if neither end or one and only one end of A overlap B. + + **ispan-** Report overlaps between [end1, start2] of A and B. + + - Note: If chrom1 <> chrom2, entry is ignored. + + **ospan-** Report overlaps between [start1, end2] of A and B. + + - Note: If chrom1 <> chrom2, entry is ignored. + + **notispan-** Report A if ispan of A doesn't overlap B. + - Note: If chrom1 <> chrom2, entry is ignored. + + **notospan-** Report A if ospan of A doesn't overlap B. + - Note: If chrom1 <> chrom2, entry is ignored. +=========================== ========================================================================================================================================================= + + + +========================================================================== +5.2.2 Default behavior +========================================================================== +By default, a BEDPE / BAM feature will be reported if *either* end overlaps a feature in the BED file. +In the example below, the left end of the pair overlaps B yet the right end does not. Thus, BEDPE/ +BAM A is reported since the default is to report A if either end overlaps B. + +Default: Report A if *either* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + +========================================================================== +5.2.3 (-type)Optional overlap requirements +========================================================================== +Using then **-type** option, **pairToBed** provides several other overlap requirements for controlling how +overlaps between BEDPE/BAM A and BED B are reported. The examples below illustrate how each +option behaves. + +**-type both**: Report A only if *both* ends overlap B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + +**-type neither**: Report A only if *neither* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result =====.................................===== + + +**-type xor**: Report A only if *one and only one* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result + + +**-type notboth**: Report A only if *neither end* **or** *one and only one* end overlaps B. Thus "notboth" +includes what would be reported by "neither" and by "xor". +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^ ^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result + + +**-type ispan**: Report A if it's "*inner span*" overlaps B. Applicable only to intra-chromosomal features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Inner span |-------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A =====.................................===== + + BED File B ==== + + Result + + +**-type ospan**: Report A if it's "*outer span*" overlaps B. Applicable only to intra-chromosomal features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Outer span |-----------------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^^^^^ + + Result =====.................................===== + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ + + Result + + +**-type notispan**: Report A only if it's "*inner span*" does not overlap B. Applicable only to intrachromosomal +features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Inner span |-------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ + + Result =====.................................===== + + +**-type notospan**: Report A if it's "*outer span*" overlaps B. Applicable only to intra-chromosomal +features. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Outer span |-----------------------------------------| + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ + + Result =====.................................===== + + + +========================================================================== +5.2.4 (-f)Requiring a minimum overlap fraction +========================================================================== +By default, **pairToBed** will report an overlap between A and B so long as there is at least one base +pair is overlapping on either end. Yet sometimes you may want to restrict reported overlaps between A +and B to cases where the feature in B overlaps at least X% (e.g. 50%) of A. The **¨Cf** option does exactly +this. The **-f** option may also be combined with the -type option for additional control. For example, +combining **-f 0.50** with **-type both** requires that both ends of A have at least 50% overlap with a +feature in B. + +For example, report A only at least 50% of one of the two ends is overlapped by B. +:: + pairToBed -a A.bedpe -b B.bed -f 0.5 + + + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^ ^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^ ^^^^^^ + + Result =====.................................===== + + + +========================================================================== +5.2.5 (-s)Enforcing "strandedness" +========================================================================== +By default, **pairToBed** will report overlaps between features even if the features are on opposing +strands. However, if strand information is present in both files and the **"-s"** option is used, overlaps will +only be reported when features are on the same strand. + +For example, report A only at least 50% of one of the two ends is overlapped by B. +:: + pairToBed -a A.bedpe -b B.bed -s + + + + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A >>>>>.................................<<<<< + + BED File B << >>>>> + + Result + + + + BEDPE/BAM A >>>>>.................................<<<<< + + BED File B >> >>>>> + + Result >>>>>.................................<<<<< + + +========================================================================== +5.2.6 (-abam)Default is to write BAM output when using BAM input +========================================================================== +When comparing *paired* alignments in BAM format (**-abam**) to features in BED format (**-b**), +**pairToBed** will , by default, write the output in BAM format. That is, each alignment in the BAM +file that meets the user's criteria will be written (to standard output) in BAM format. This serves as a +mechanism to create subsets of BAM alignments are of biological interest, etc. Note that both +alignments for each aligned pair will be written to the BAM output. + +For example: +:: + pairToBed ¨Cabam pairedReads.bam ¨Cb simreps.bed | samtools view - | head -4 + + JOBU_0001:3:1:4:1060#0 99 chr10 42387928 29 50M = 42393091 5 2 1 3 + AA A A A C G G A A T T A T C G A A T G G A A T C G A A G A G A A T C T T C G A A C G G A C C C G A + dcgggggfbgfgdgggggggfdfgggcggggfcggcggggggagfgbggc XT:A:R NM:i:5 SM:i:0 AM:i:0 X0:i:3 X 1 : i : + 3 XM:i:5 XO:i:0 XG:i:0 MD:Z:0T0C33A5T4T3 + JOBU_0001:3:1:4:1060#0 147 chr10 42393091 0 50M = 42387928 - 5 2 1 3 + AAATGGAATCGAATGGAATCAACATCAAATGGAATCAAATGGAATCATTG K g d c g g d e c d g + \d`ggfcgcggffcgggc^cgfgccgggfc^gcdgg\bg XT:A:R NM:i:2 SM:i:0 AM:i:0 X0:i:3 X1:i:13 XM:i:2 X O : i : + 0 XG:i:0 MD:Z:21T14G13 + JOBU_0001:3:1:8:446#0 99 chr10 42388091 9 50M = 42392738 4 6 9 7 + GAATCGACTGGAATCATCATCGGATGGAAATGAATGGAATAATCATCGAA f _ O f f ` ] I e Y f f ` f f e d d c f e f c P ` c _ W \ \ R _ ] + _BBBBBBBBBBBBBBBB XT:A:U NM:i:4 SM:i:0 AM:i:0 X0:i:1 X1:i:3 XM:i:4 XO:i:0 XG:i:0 M D : Z : + 7A22C9C2T6 + JOBU_0001:3:1:8:446#0 147 chr10 42392738 9 50M = 42388091 - 4 6 9 7 + TTATCGAATGCAATCGAATGGAATTATCGAATGCAATCGAATAGAATCAT df^ffec_JW[`MWceRec``fee`dcecfeeZae`c] + f^cNeecfccf^ XT:A:R NM:i:1 SM:i:0 AM:i:0 X0:i:2 X1:i:2 XM:i:1 XO:i:0 XG:i:0 MD:Z:38A11 + + + +========================================================================== +5.2.7 (-bedpe)Output BEDPE format when using BAM input +========================================================================== +When comparing *paired* alignments in BAM format (**-abam**) to features in BED format (**-b**), +**pairToBed** will optionally write the output in BEDPE format. That is, each alignment in the BAM +file is converted to a 10 column BEDPE feature and if overlaps are found (or not) based on the user's +criteria, the BAM alignment will be reported in BEDPE format. The BEDPE "name" field is comprised +of the RNAME field in the BAM alignment. The "score" field is the mapping quality score from the +BAM alignment. + +For example: +:: + pairToBed ¨Cabam pairedReads.bam ¨Cb simreps.bed -bedpe | head -5 + chr10 42387927 42387977 chr10 42393090 42393140 + JOBU_0001:3:1:4:1060#0 29 + - + chr10 42388090 42388140 chr10 42392737 42392787 + JOBU_0001:3:1:8:446#0 9 + - + chr10 42390552 42390602 chr10 42396045 42396095 + JOBU_0001:3:1:10:1865#0 9 + - + chrX 139153741 139153791 chrX 139159018 139159068 + JOBU_0001:3:1:14:225#0 37 + - + chr4 9236903 9236953 chr4 9242032 9242082 + JOBU_0001:3:1:15:1362#0 0 + - diff --git a/docs/content/pairToPair.rst b/docs/content/pairToPair.rst new file mode 100755 index 0000000000000000000000000000000000000000..7be68197e1e93a4dbe9686c93ff0681bcfcea5d7 --- /dev/null +++ b/docs/content/pairToPair.rst @@ -0,0 +1,103 @@ +############### +5.3 pairToPair +############### +**pairToPair** compares two BEDPE files in search of overlaps where each end of a BEDPE feature in A +overlaps with the ends of a feature in B. For example, using pairToPair, one could screen for the exact +same discordant paired-end alignment in two files. This could suggest (among other things) that the +discordant pair suggests the same structural variation in each file/sample. + + +================================ +5.3.1 Usage and option summary +================================ +**Usage:** +:: + pairToPair [OPTIONS] -a <BEDPE> -b <BEDPE> + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-a** BEDPE file A. Each feature in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe. +**-b** BEDPE file B. Use "stdin" if passing B with a UNIX pipe. +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-is** Force "strandedness". That is, only report hits in B that overlap A on the same strand. By default, overlaps are reported without respect to strand. +**-type** Approach to reporting overlaps between BEDPE and BED. + | **either** Report overlaps if either ends of A overlap B. + + + | **neither** Report A if neither end of A overlaps B. + + + | **both** Report overlaps if both ends of A overlap B. -*Default behavior.* +=========================== ========================================================================================================================================================= + + + + + +================================ +5.3.2 Default behavior +================================ +By default, a BEDPE feature from A will be reported if *both* ends overlap a feature in the BEDPE B +file. If strand information is present for the two BEDPE files, it will be further required that the +overlaps on each end be on the same strand. This way, an otherwise overlapping (in terms of genomic +locations) F/R alignment will not be matched with a R/R alignment. + +Default: Report A if *both* ends overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^ ^^^^^^ + + Result =====.................................===== + + +Default when strand information is present in both BEDPE files: Report A if *both* ends overlaps B *on +the same strands*. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE A >>>>>.................................>>>>> + + BEDPE B <<<<<.............................>>>>> + + Result + + + + BEDPE A >>>>>.................................>>>>> + + BEDPE B >>>>>.............................>>>>> + + Result >>>>>.................................>>>>> + + + +================================================== +5.3.3 (-type neither)Optional overlap requirements +================================================== +Using then **-type neither, pairToPair** will only report A if *neither* end overlaps with a BEDPE +feature in B. + +**-type neither**: Report A only if *neither* end overlaps B. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^^^^^......................................^^^^^^ + + Result + + + + BEDPE/BAM A *****.................................***** + + BED File B ^^^^................................................^^^^^^ + + Result =====.................................===== + + \ No newline at end of file diff --git a/docs/content/quick-start.rst b/docs/content/quick-start.rst new file mode 100755 index 0000000000000000000000000000000000000000..64f2df32c3f342cf9c53adeb7949653276afec59 --- /dev/null +++ b/docs/content/quick-start.rst @@ -0,0 +1,60 @@ +########### +Quick start +########### + +================ +Install BEDTools +================ +:: + + curl http://bedtools.googlecode.com/files/BEDTools.<version>.tar.gz > BEDTools.tar.gz + tar -zxvf BEDTools.tar.gz + cd BEDTools + make clean + make all + sudo cp bin/* /usr/local/bin/ + +=============== +Use BEDTools +=============== +Below are examples of typical BEDTools usage. **Additional usage examples are described in +section 6 of this manual.** Using the "-h" option with any BEDTools will report a list of all command +line options. + +A. Report the base-pair overlap between the features in two BED files. +:: + + intersectBed -a reads.bed -b genes.bed + +B. Report those entries in A that overlap NO entries in B. Like "grep -v" +:: + + intersectBed -a reads.bed -b genes.bed ¨Cv + +C. Read BED A from stdin. Useful for stringing together commands. For example, find genes that overlap LINEs +but not SINEs. +:: + + intersectBed -a genes.bed -b LINES.bed | intersectBed -a stdin -b SINEs.bed ¨Cv + +D. Find the closest ALU to each gene. +:: + + closestBed -a genes.bed -b ALUs.bed + +E. Merge overlapping repetitive elements into a single entry, returning the number of entries merged. +:: + + mergeBed -i repeatMasker.bed -n + +F. Merge nearby repetitive elements into a single entry, so long as they are within 1000 bp of one another. +:: + + mergeBed -i repeatMasker.bed -d 1000 + + + + + + + \ No newline at end of file diff --git a/docs/content/shuffleBed.rst b/docs/content/shuffleBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..d840277e900e1356d23444187b23912b036b72f7 --- /dev/null +++ b/docs/content/shuffleBed.rst @@ -0,0 +1,155 @@ +############### +5.13 shuffleBed +############### +**shuffleBed** will randomly permute the genomic locations of a fearure file among a genome defined in a +genome file. One can also provide an "exclusions" BED/GFF/VCF file that lists regions where you do +not want the permuted features to be placed. For example, one might want to prevent features from +being placed in known genome gaps. **shuffleBed** is useful as a *null* basis against which to test the +significance of associations of one feature with another. + + + +========================================================================== +5.13.1 Usage and option summary +========================================================================== +Usage: +:: + shuffleBed [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-excl** A BED file of coordinates in which features from -i should *not* be placed (e.g., genome gaps). +**-chrom** Keep features in -i on the same chromosome. Solely permute their location on the chromosome. *By default, both the chromosome and position are randomly chosen*. +**-seed** Supply an integer seed for the shuffling. This will allow feature shuffling experiments to be recreated exactly as the seed for the pseudo-random number generation will be constant. *By default, the seed is chosen automatically*. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.13.2 Default behavior +========================================================================== +By default, **shuffleBed** will reposition each feature in the input BED file on a random chromosome at a +random position. The size and strand of each feature are preserved. + +For example: +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + chr2 8000 + chr3 5000 + chr4 2000 + + shuffleBed -i A.bed -g my.genome + chr4 1498 1598 a1 1 + + chr3 2156 3156 a2 2 - + + + + + +========================================================================== +5.13.3 (-chrom)Requiring that features be shuffled on the same chromosome +========================================================================== +The "**-chrom**" option behaves the same as the default behavior except that features are randomly +placed on the same chromosome as defined in the BED file. + +For example: +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + chr2 8000 + chr3 5000 + chr4 2000 + + shuffleBed -i A.bed -g my.genome -chrom + chr1 9560 9660 a1 1 + + chr1 7258 8258 a2 2 - + + + + +========================================================================== +5.13.4 Excluding certain genome regions from shuffleBed +========================================================================== +One may want to prevent BED features from being placed in certain regions of the genome. For +example, one may want to exclude genome gaps from permutation experiment. The "**-excl**" option +defines a BED file of regions that should be excluded. **shuffleBed** will attempt to permute the +locations of all features while adhering to the exclusion rules. However it will stop looking for an +appropriate location if it cannot find a valid spot for a feature after 1,000,000 tries. + +For example (*note that the exclude file excludes all but 100 base pairs of the chromosome*): +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + + cat exclude.bed + chr1 100 10000 + + shuffleBed -i A.bed -g my.genome -excl exclude.bed + chr1 0 100 a1 1 + + Error, line 2: tried 1000000 potential loci for entry, but could not avoid excluded + regions. Ignoring entry and moving on. + + +For example (*now the exclusion file only excludes the first 100 bases of the chromosome*): +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + + cat exclude.bed + chr1 0 100 + + shuffleBed -i A.bed -g my.genome -excl exclude.bed + chr1 147 247 a1 1 + + chr1 2441 3441 a2 2 - + + +========================================================================== +5.13.5 Defining a "seed" for the random replacement. +========================================================================== +**shuffleBed** uses a pseudo-random number generator to permute the locations of BED features. +Therefore, each run should produce a different result. This can be problematic if one wants to exactly +recreate an experiment. By using the "**-seed**" option, one can supply a custom integer seed for +**shuffleBed**. In turn, each execution of **shuffleBed** with the same seed and input files should produce +identical results. + +For example (*note that the exclude file below excludes all but 100 base pairs of the chromosome*): +:: + cat A.bed + chr1 0 100 a1 1 + + chr1 0 1000 a2 2 - + + cat my.genome + chr1 10000 + + shuffleBed -i A.bed -g my.genome -seed 927442958 + chr1 6177 6277 a1 1 + + chr1 8119 9119 a2 2 - + + shuffleBed -i A.bed -g my.genome -seed 927442958 + chr1 6177 6277 a1 1 + + chr1 8119 9119 a2 2 - + + . . . + + shuffleBed -i A.bed -g my.genome -seed 927442958 + chr1 6177 6277 a1 1 + + chr1 8119 9119 a2 2 - diff --git a/docs/content/slopBed.rst b/docs/content/slopBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..0646afcaafc9476f605a6cc0ed2f6968c888c3ef --- /dev/null +++ b/docs/content/slopBed.rst @@ -0,0 +1,84 @@ +############### +5.14 slopBed +############### +**slopBed** will increase the size of each feature in a feature file be a user-defined number of bases. While +something like this could be done with an "**awk '{OFS="\t" print $1,$2-<slop>,$3+<slop>}'**", +**slopBed** will restrict the resizing to the size of the chromosome (i.e. no start < 0 and no end > +chromosome size). + + +========================================================================== +5.14.1 Usage and option summary +========================================================================== +Usage: +:: + slopBed [OPTIONS] -i <BED/GFF/VCF> -g <GENOME> [-b or (-l and -r)] + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-b** Increase the BED/GFF/VCF entry by the same number base pairs in each direction. *Integer*. +**-l** The number of base pairs to subtract from the start coordinate. *Integer*. +**-r** The number of base pairs to add to the end coordinate. *Integer*. +**-s** Define -l and -r based on strand. For example. if used, -l 500 for a negative-stranded feature, it will add 500 bp to the *end* coordinate. +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.14.2 Default behavior +========================================================================== +By default, **slopBed** will either add a fixed number of bases in each direction (**-b**) or an asymmetric +number of bases in each direction (**-l** and **-r**). + +For example: +:: + cat A.bed + chr1 5 100 + chr1 800 980 + + cat my.genome + chr1 1000 + + slopBed -i A.bed -g my.genome -b 5 + chr1 0 105 + chr1 795 985 + + slopBed -i A.bed -g my.genome -l 2 -r 3 + chr1 3 103 + chr1 798 983 + + +However, if the requested number of bases exceeds the boundaries of the chromosome, **slopBed** will +"clip" the feature accordingly. +:: + cat A.bed + chr1 5 100 + chr1 800 980 + + cat my.genome + chr1 1000 + + slopBed -i A.bed -g my.genome -b 5000 + chr1 0 1000 + chr1 0 1000 + + + +========================================================================== +5.14.3 Resizing features according to strand +========================================================================== +**slopBed** will optionally increase the size of a feature based on strand. + +For example: +:: + cat A.bed + chr1 100 200 a1 1 + + chr1 100 200 a2 2 - + + cat my.genome + chr1 1000 + + slopBed -i A.bed -g my.genome -l 50 -r 80 -s + chr1 50 280 a1 1 + + chr1 20 250 a2 2 - diff --git a/docs/content/sortBed.rst b/docs/content/sortBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..7ea166676c1e815f9e0f4d8101697bdbea6244af --- /dev/null +++ b/docs/content/sortBed.rst @@ -0,0 +1,77 @@ +############### +5.15 sortBed +############### +**sortBed** sorts a feature file by chromosome and other criteria. + +========================================================================== +5.15.1 Usage and option summary +========================================================================== +Usage: +:: + sortBed [OPTIONS] -i <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== + Option Description +=========================== =============================================================================================================================================================================================================== +**-sizeA** Sort by feature size in ascending order. +**-sizeD** Sort by feature size in descending order. +**-chrThenSizeA** Sort by chromosome, then by feature size (asc). +**-chrThenSizeD** Sort by chromosome, then by feature size (desc). +**-chrThenScoreA** Sort by chromosome, then by score (asc). +**-chrThenScoreD** Sort by chromosome, then by score (desc). +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.15.2 Default behavior +========================================================================== +By default, **sortBed** sorts a BED file by chromosome and then by start position in ascending order. + +For example: +:: + cat A.bed + chr1 800 1000 + chr1 80 180 + chr1 1 10 + chr1 750 10000 + + sortBed -i A.bed + chr1 1 10 + chr1 80 180 + chr1 750 10000 + chr1 800 1000 + + + + +========================================================================== +5.15.3 Optional sorting behavior +========================================================================== +**sortBed** will also sorts a BED file by chromosome and then by other criteria. + +For example, to sort by chromosome and then by feature size (in descending order): +:: + cat A.bed + chr1 800 1000 + chr1 80 180 + chr1 1 10 + chr1 750 10000 + + sortBed -i A.bed -sizeD + chr1 750 10000 + chr1 800 1000 + chr1 80 180 + chr1 1 10 + + +**Disclaimer:** it should be noted that **sortBed** is merely a convenience utility, as the UNIX sort utility +will sort BED files more quickly while using less memory. For example, UNIX sort will sort a BED file +by chromosome then by start position in the following manner: +:: + sort -k 1,1 -k2,2 -n a.bed + chr1 1 10 + chr1 80 180 + chr1 750 10000 + chr1 800 1000 + diff --git a/docs/content/subtractBed.rst b/docs/content/subtractBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..81dfb0e7e1fd6fff7e191ecc9510f2016bbcdeb1 --- /dev/null +++ b/docs/content/subtractBed.rst @@ -0,0 +1,88 @@ +############### +5.7 subtractBed +############### +**subtractBed** searches for features in B that overlap A. If an overlapping feature is found in B, the +overlapping portion is removed from A and the remaining portion of A is reported. If a feature in B +overlaps all of a feature in A, the A feature will not be reported. + + +========================================================================== +5.7.1 Usage and option summary +========================================================================== +Usage: +:: + subtractBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + +=========================== =============================================================================================================================================================================================================== +Option Description +=========================== =============================================================================================================================================================================================================== +**-f** Minimum overlap required as a fraction of A. Default is 1E-9 (i.e. 1bp). +**-s** Force strandedness. That is, find the closest feature in B overlaps A on the same strand. *By default, this is disabled*. +=========================== =============================================================================================================================================================================================================== + + + +========================================================================== +5.7.2 Default behavior +========================================================================== +Figure: +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + BED FILE A ************* ****** + + BED File B ^^^^^^^^ ^^^^^^^^^^^ + + Result ========= + +For example: +:: + cat A.bed + chr1 100 200 + chr1 10 20 + + cat B.bed + chr1 0 30 + chr1 180 300 + + subtractBed -a A.bed -b B.bed + chr1 100 180 + + + + + + +========================================================================== +5.7.3 (-f)Requiring a minimal overlap fraction before subtracting +========================================================================== +This option behaves the same as the -f option for intersectBed. In this case, subtractBed will only +subtract an overlap with B if it covers at least the fraction of A defined by -f. If an overlap is found, +but it does not meet the overlap fraction, the original A feature is reported without subtraction. + +For example: +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 180 300 + + subtractBed -a A.bed -b B.bed -f 0.10 + chr1 100 180 + + subtractBed -a A.bed -b B.bed -f 0.80 + chr1 100 200 + + + + +========================================================================== +5.7.4 (-s)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for features in B that +should be subtracted from A. See the discussion in the intersectBed section for details. + + + + diff --git a/docs/content/unionBedGraphs.rst b/docs/content/unionBedGraphs.rst new file mode 100755 index 0000000000000000000000000000000000000000..b1e34a18edb9aac6eacd446c9ae1d39a3f387fa9 --- /dev/null +++ b/docs/content/unionBedGraphs.rst @@ -0,0 +1,163 @@ +############### +5.23 unionBedGraphs +############### +**unionBedGraphs** combines multiple BEDGRAPH files into a single file such that one can directly +compare coverage (and other text-values such as genotypes) across multiple sample + + +========================================================================== +5.23.1 Usage and option summary +========================================================================== +Usage: +:: + unionBedGraphs [OPTIONS] -i FILE1 FILE2 FILE3 ... FILEn + +=========================== =============================================================================================================================================================================================================== + Option Description + +=========================== =============================================================================================================================================================================================================== +**-header** Print a header line, consisting of chrom, start, end followed by the names of each input BEDGRAPH file. +**-names** A list of names (one per file) to describe each file in -i. These names will be printed in the header line. +**-empty** Report empty regions (i.e., start/end intervals w/o values in all files). *Requires the '-g FILE' parameter (see below)*. +**-g** The genome file to be used to calculate empty regions. +**-filler TEXT** Use TEXT when representing intervals having no value. Default is '0', but you can use 'N/A' or any other text. +**-examples** Show detailed usage examples. +=========================== =============================================================================================================================================================================================================== + + + + +========================================================================== +5.23.2 Default behavior +========================================================================== +Figure: +:: + cat 1.bg + chr1 1000 1500 10 + chr1 2000 2100 20 + + cat 2.bg + chr1 900 1600 60 + chr1 1700 2050 50 + + cat 3.bg + chr1 1980 2070 80 + chr1 2090 2100 20 + + cat sizes.txt + chr1 5000 + + unionBedGraphs -i 1.bg 2.bg 3.bg + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + +========================================================================== +5.23.3 Add a header line to the output +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -header + chrom start end 1 2 3 + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + + +========================================================================== +5.23.4 Add a header line with custom file names to the output +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -header -names WT-1 WT-2 KO-1 + chrom start end WT-1 WT-2 KO-1 + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + + + + +========================================================================== +5.23.5 Include regions that have zero coverage in all BEDGRAPH files. +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -empty -g sizes.txt -header + chrom start end WT-1 WT-2 KO-1 + chrom start end 1 2 3 + chr1 0 900 0 0 0 + chr1 900 1000 0 60 0 + chr1 1000 1500 10 60 0 + chr1 1500 1600 0 60 0 + chr1 1600 1700 0 0 0 + chr1 1700 1980 0 50 0 + chr1 1980 2000 0 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 0 80 + chr1 2070 2090 20 0 0 + chr1 2090 2100 20 0 20 + chr1 2100 5000 0 0 0 + + +========================================================================== +5.23.6 Use a custom value for missing values. +========================================================================== +Figure: +:: + unionBedGraphs -i 1.bg 2.bg 3.bg -empty -g sizes.txt -header -filler N/A + chrom start end WT-1 WT-2 KO-1 + chrom start end 1 2 3 + chr1 0 900 N/A N/A N/A + chr1 900 1000 N/A 60 N/A + chr1 1000 1500 10 60 N/A + chr1 1500 1600 N/A 60 N/A + chr1 1600 1700 N/A N/A N/A + chr1 1700 1980 N/A 50 N/A + chr1 1980 2000 N/A 50 80 + chr1 2000 2050 20 50 80 + chr1 2050 2070 20 N/A 80 + chr1 2070 2090 20 N/A N/A + chr1 2090 2100 20 N/A 20 + chr1 2100 5000 N/A N/A N/A + + +========================================================================== +5.23.7 Use BEDGRAPH files with non-numeric values. +========================================================================== +Figure: +:: + cat 1.snp.bg + chr1 0 1 A/G + chr1 5 6 C/T + + cat 2.snp.bg + chr1 0 1 C/C + chr1 7 8 T/T + + cat 3.snp.bg + chr1 0 1 A/G + chr1 5 6 C/T + + unionBedGraphs -i 1.snp.bg 2.snp.bg 3.snp.bg -filler -/- + chr1 0 1 A/G C/C A/G + chr1 5 6 C/T -/- C/T + chr1 7 8 -/- T/T -/- \ No newline at end of file diff --git a/docs/content/windowBed.rst b/docs/content/windowBed.rst new file mode 100755 index 0000000000000000000000000000000000000000..30d231ea975e4a070a330e9dd4e32716e9d4deaa --- /dev/null +++ b/docs/content/windowBed.rst @@ -0,0 +1,157 @@ +############### +5.5 windowBed +############### + +Similar to **intersectBed**, **windowBed** searches for overlapping features in A and B. However, +**windowBed** adds a specified number (1000, by default) of base pairs upstream and downstream of +each feature in A. In effect, this allows features in B that are "near" features in A to be detected. + +========================================================================== +5.5.1 Usage and option summary +========================================================================== +**Usage:** +:: + windowBed [OPTIONS] -a <BED/GFF/VCF> -b <BED/GFF/VCF> + + +=========================== ========================================================================================================================================================= +Option Description +=========================== ========================================================================================================================================================= +**-abam** BAM file A. Each BAM alignment in A is compared to B in search of overlaps. Use "stdin" if passing A with a UNIX pipe: For example: samtools view -b <BAM> | windowBed -abam stdin -b genes.bed +**-ubam** Write uncompressed BAM output. The default is write compressed BAM output. +**-bed** When using BAM input (-abam), write output as BED. The default is to write output in BAM when using -abam. For example: windowBed -abam reads.bam -b genes.bed -bed +**-w** Base pairs added upstream and downstream of each entry in A when searching for overlaps in B. *Default is 1000 bp*. +**-l** Base pairs added upstream (left of) of each entry in A when searching for overlaps in B. *Allows one to create assymetrical "windows". Default is 1000bp*. +**-r** Base pairs added downstream (right of) of each entry in A when searching for overlaps in B. *Allows one to create assymetrical "windows". Default is 1000bp*. +**-sw** Define -l and -r based on strand. For example if used, -l 500 for a negative-stranded feature will add 500 bp downstream. *By default, this is disabled*. +**-sm** Only report hits in B that overlap A on the same strand. *By default, overlaps are reported without respect to strand*. +**-u** Write original A entry once if any overlaps found in B. In other words, just report the fact at least one overlap was found in B. +**-c** For each entry in A, report the number of hits in B while restricting to -f. Reports 0 for A entries that have no overlap with B. +=========================== ========================================================================================================================================================= + +========================================================================== +5.5.2 Default behavior +========================================================================== +By default, **windowBed** adds 1000 bp upstream and downstream of each A feature and searches for +features in B that overlap this "window". If an overlap is found in B, both the *original* A feature and the +*original* B feature are reported. For example, in the figure below, feature B1 would be found, but B2 +would not. +:: + Chromosome ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + "window" = 10 + BED File A <----------*************----------> + + BED File B ^^^^^^^^ ^^^^^^ + + Result ======== + +For example: +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + windowBed -a A.bed -b B.bed + chr1 100 200 chr1 500 1000 + + +========================================================================== +5.5.3 (-w)Defining a custom window size +========================================================================== +Instead of using the default window size of 1000bp, one can define a custom, *symmetric* window around +each feature in A using the **-w** option. One should specify the window size in base pairs. For example, +a window of 5kb should be defined as **-w 5000**. + +For example (note that in contrast to the default behavior, the second B entry is reported): +:: + cat A.bed + chr1 100 200 + + cat B.bed + chr1 500 1000 + chr1 1300 2000 + + windowBed -a A.bed -b B.bed -w 5000 + chr1 100 200 chr1 500 1000 + chr1 100 200 chr1 1300 2000 + +========================================================================== +5.5.4 (-l and -r)Defining assymteric windows +========================================================================== +One can also define asymmetric windows where a differing number of bases are added upstream and +downstream of each feature using the **-l (upstream)** and **-r (downstream)** options. + +For example (note the difference between -l 200 and -l 300): +:: + cat A.bed + chr1 1000 2000 + + cat B.bed + chr1 500 800 + chr1 10000 20000 + + windowBed -a A.bed -b B.bed -l 200 -r 20000 + chr1 100 200 chr1 10000 20000 + + windowBed -a A.bed -b B.bed -l 300 -r 20000 + chr1 100 200 chr1 500 800 + chr1 100 200 chr1 10000 20000 + +========================================================================== +5.5.5 (-sw)Defining assymteric windows based on strand +========================================================================== +Especially when dealing with gene annotations or RNA-seq experiments, you may want to define +asymmetric windows based on "strand". For example, you may want to screen for overlaps that occur +within 5000 bp upstream of a gene (e.g. a promoter region) while screening only 1000 bp downstream of +the gene. By enabling the **-sw** ("stranded" windows) option, the windows are added upstream or +downstream according to strand. For example, imagine one specifies **-l 5000 -r 1000** as well as the **- +sw** option. In this case, forward stranded ("+") features will screen 5000 bp to the *left* (that is, *lower* +genomic coordinates) and 1000 bp to the *right* (that is, *higher* genomic coordinates). By contrast, +reverse stranded ("-") features will screen 5000 bp to the *right* (that is, *higher* genomic coordinates) and +1000 bp to the *left* (that is, *lower* genomic coordinates). + +For example (note the difference between -l 200 and -l 300): +:: + cat A.bed + chr1 10000 20000 A.forward 1 + + chr1 10000 20000 A.reverse 1 - + + cat B.bed + chr1 1000 8000 B1 + chr1 24000 32000 B2 + + windowBed -a A.bed -b B.bed -l 5000 -r 1000 -sw + chr1 10000 20000 A.forward 1 + chr1 1000 8000 B1 + chr1 10000 20000 A.reverse 1 - chr1 24000 32000 B2 + + + +========================================================================== +5.5.6 (-sm)Enforcing "strandedness" +========================================================================== +This option behaves the same as the -s option for intersectBed while scanning for overlaps within the +"window" surrounding A. See the discussion in the intersectBed section for details. + +========================================================================== +5.5.7 (-u)Reporting the presence of at least one overlapping feature +========================================================================== +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. + + +========================================================================== +5.5.8 (-c)Reporting the number of overlapping features +========================================================================== +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. + + +========================================================================== +5.5.9 (-v)Reporting the absence of any overlapping features +========================================================================== +This option behaves the same as for intersectBed while scanning for overlaps within the "window" +surrounding A. See the discussion in the intersectBed section for details. + diff --git a/docs/index.rst b/docs/index.rst new file mode 100755 index 0000000000000000000000000000000000000000..0ed81653ef695d3f0c8ca7f8641c9d70f44d7f7a --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,31 @@ +================================================================ +**bedtools**: *a powerful toolset for genome arithmetic* +================================================================ + +================= +Overview +================= + +Brief paragraph of the software. + + +================= +Table of contents +================= +.. toctree:: + :maxdepth: 1 + + content/overview + content/installation + content/quick-start + content/general-usage + content/bedtools-suite + content/example-usage + content/advanced-usage + + +================= +Mailing list +================= +Refer to the mailing list. + diff --git a/docs/make.bat b/docs/make.bat new file mode 100755 index 0000000000000000000000000000000000000000..2e533194e2953e89f4c89b3ab3b5aeff56d06a90 --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,188 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +set SPHINXBUILD=C:\Users\William\Desktop\GenomeLabproject\bootstrap\Sphinx-1.1.3\sphinx-build.py +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . +if NOT "%PAPER%" == "" ( + set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% + set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% +) + +if "%1" == "" goto help + +if "%1" == "help" ( + :help + echo.Please use `make ^<target^>` where ^<target^> is one of + echo. html to make standalone HTML files + echo. dirhtml to make HTML files named index.html in directories + echo. singlehtml to make a single large HTML file + echo. pickle to make pickle files + echo. json to make JSON files + echo. htmlhelp to make HTML files and a HTML help project + echo. qthelp to make HTML files and a qthelp project + echo. devhelp to make HTML files and a Devhelp project + echo. epub to make an epub + echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter + echo. text to make text files + echo. man to make manual pages + echo. texinfo to make Texinfo files + echo. gettext to make PO message catalogs + echo. changes to make an overview over all changed/added/deprecated items + echo. linkcheck to check all external links for integrity + echo. doctest to run all doctests embedded in the documentation if enabled + goto end +) + +if "%1" == "clean" ( + for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i + del /q /s %BUILDDIR%\* + goto end +) + +if "%1" == "html" ( + %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/html. + goto end +) + +if "%1" == "dirhtml" ( + %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. + goto end +) + +if "%1" == "singlehtml" ( + %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. + goto end +) + +if "%1" == "pickle" ( + %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the pickle files. + goto end +) + +if "%1" == "json" ( + %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can process the JSON files. + goto end +) + +if "%1" == "htmlhelp" ( + %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run HTML Help Workshop with the ^ +.hhp project file in %BUILDDIR%/htmlhelp. + goto end +) + +if "%1" == "qthelp" ( + %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; now you can run "qcollectiongenerator" with the ^ +.qhcp project file in %BUILDDIR%/qthelp, like this: + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\will_test.qhcp + echo.To view the help file: + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\will_test.ghc + goto end +) + +if "%1" == "devhelp" ( + %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. + goto end +) + +if "%1" == "epub" ( + %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The epub file is in %BUILDDIR%/epub. + goto end +) + +if "%1" == "latex" ( + %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex + if errorlevel 1 exit /b 1 + echo. + echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. + goto end +) + +if "%1" == "text" ( + %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The text files are in %BUILDDIR%/text. + goto end +) + +if "%1" == "man" ( + %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The manual pages are in %BUILDDIR%/man. + goto end +) + +if "%1" == "texinfo" ( + %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. + goto end +) + +if "%1" == "gettext" ( + %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale + if errorlevel 1 exit /b 1 + echo. + echo.Build finished. The message catalogs are in %BUILDDIR%/locale. + goto end +) + +if "%1" == "changes" ( + %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes + if errorlevel 1 exit /b 1 + echo. + echo.The overview file is in %BUILDDIR%/changes. + goto end +) + +if "%1" == "linkcheck" ( + %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck + if errorlevel 1 exit /b 1 + echo. + echo.Link check complete; look for any errors in the above output ^ +or in %BUILDDIR%/linkcheck/output.txt. + goto end +) + +if "%1" == "doctest" ( + %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest + if errorlevel 1 exit /b 1 + echo. + echo.Testing of doctests in the sources finished, look at the ^ +results in %BUILDDIR%/doctest/output.txt. + goto end +) + +:end diff --git a/docs/themes/rtd/static/rtd.css_t b/docs/themes/rtd/static/rtd.css_t new file mode 100755 index 0000000000000000000000000000000000000000..66736c00c58c8df78930cce4948ecf2deb6dc0d2 --- /dev/null +++ b/docs/themes/rtd/static/rtd.css_t @@ -0,0 +1,1438 @@ +/* + * rtd.css + * ~~~~~~~~~~~~~~~ + * + * Sphinx stylesheet -- sphinxdoc theme. Originally created by + * Armin Ronacher for Werkzeug. + * + * Customized for ReadTheDocs by Eric Pierce & Eric Holscher + * + * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* RTD colors + * light blue: #e8ecef + * medium blue: #8ca1af + * dark blue: #465158 + * dark grey: #444444 + * + * white hover: #d1d9df; + * medium blue hover: #697983; + * green highlight: #8ecc4c + * light blue (project bar): #e8ecef + */ + +@import url("basic.css"); + +/* PAGE LAYOUT -------------------------------------------------------------- */ + +body { + font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; + text-align: center; + color: black; + background-color: #465158; + padding: 0; + margin: 0; +} + +div.document { + text-align: left; + background-color: #e8ecef; +} + +div.bodywrapper { + background-color: #ffffff; + border-left: 1px solid #ccc; + border-bottom: 1px solid #ccc; + margin: 0 0 0 16em; +} + +div.body { + margin: 0; + padding: 0.5em 1.3em; + max-width: 55em; + min-width: 20em; +} + +div.related { + font-size: 1em; + background-color: #465158; +} + +div.documentwrapper { + float: left; + width: 100%; + background-color: #e8ecef; +} + + +/* HEADINGS --------------------------------------------------------------- */ + +h1 { + margin: 0; + padding: 0.7em 0 0.3em 0; + font-size: 1.5em; + line-height: 1.15; + color: #111; + clear: both; +} + +h2 { + margin: 2em 0 0.2em 0; + font-size: 1.35em; + padding: 0; + color: #465158; +} + +h3 { + margin: 1em 0 -0.3em 0; + font-size: 1.2em; + color: #6c818f; +} + +div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { + color: black; +} + +h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { + display: none; + margin: 0 0 0 0.3em; + padding: 0 0.2em 0 0.2em; + color: #aaa !important; +} + +h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, +h5:hover a.anchor, h6:hover a.anchor { + display: inline; +} + +h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, +h5 a.anchor:hover, h6 a.anchor:hover { + color: #777; + background-color: #eee; +} + + +/* LINKS ------------------------------------------------------------------ */ + +/* Normal links get a pseudo-underline */ +a { + color: #444; + text-decoration: none; + border-bottom: 1px solid #ccc; +} + +/* Links in sidebar, TOC, index trees and tables have no underline */ +.sphinxsidebar a, +.toctree-wrapper a, +.indextable a, +#indices-and-tables a { + color: #444; + text-decoration: none; + border-bottom: none; +} + +/* Most links get an underline-effect when hovered */ +a:hover, +div.toctree-wrapper a:hover, +.indextable a:hover, +#indices-and-tables a:hover { + color: #111; + text-decoration: none; + border-bottom: 1px solid #111; +} + +/* Footer links */ +div.footer a { + color: #86989B; + text-decoration: none; + border: none; +} +div.footer a:hover { + color: #a6b8bb; + text-decoration: underline; + border: none; +} + +/* Permalink anchor (subtle grey with a red hover) */ +div.body a.headerlink { + color: #ccc; + font-size: 1em; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none; + border: none; +} +div.body a.headerlink:hover { + color: #c60f0f; + border: none; +} + + +/* NAVIGATION BAR --------------------------------------------------------- */ + +div.related ul { + height: 2.5em; +} + +div.related ul li { + margin: 0; + padding: 0.65em 0; + float: left; + display: block; + color: white; /* For the >> separators */ + font-size: 0.8em; +} + +div.related ul li.right { + float: right; + margin-right: 5px; + color: transparent; /* Hide the | separators */ +} + +/* "Breadcrumb" links in nav bar */ +div.related ul li a { + order: none; + background-color: inherit; + font-weight: bold; + margin: 6px 0 6px 4px; + line-height: 1.75em; + color: #ffffff; + padding: 0.4em 0.8em; + border: none; + border-radius: 3px; +} +/* previous / next / modules / index links look more like buttons */ +div.related ul li.right a { + margin: 0.375em 0; + background-color: #697983; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* All navbar links light up as buttons when hovered */ +div.related ul li a:hover { + background-color: #8ca1af; + color: #ffffff; + text-decoration: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* Take extra precautions for tt within links */ +a tt, +div.related ul li a tt { + background: inherit !important; + color: inherit !important; +} + + +/* SIDEBAR ---------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + margin-left: -100%; + float: left; + top: 3em; + left: 0; + padding: 0 1em; + width: 14em; + font-size: 1em; + text-align: left; + background-color: #e8ecef; +} + +div.sphinxsidebar img { + max-width: 12em; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin: 1.2em 0 0.3em 0; + font-size: 1em; + padding: 0; + color: #222222; + font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; +} + +div.sphinxsidebar h3 a { + color: #444444; +} + +div.sphinxsidebar ul, +div.sphinxsidebar p { + margin-top: 0; + padding-left: 0; + line-height: 130%; + background-color: #e8ecef; +} + +/* No bullets for nested lists, but a little extra indentation */ +div.sphinxsidebar ul ul { + list-style-type: none; + margin-left: 1.5em; + padding: 0; +} + +/* A little top/bottom padding to prevent adjacent links' borders + * from overlapping each other */ +div.sphinxsidebar ul li { + padding: 1px 0; +} + +/* A little left-padding to make these align with the ULs */ +div.sphinxsidebar p.topless { + padding-left: 0 0 0 1em; +} + +/* Make these into hidden one-liners */ +div.sphinxsidebar ul li, +div.sphinxsidebar p.topless { + white-space: nowrap; + overflow: hidden; +} +/* ...which become visible when hovered */ +div.sphinxsidebar ul li:hover, +div.sphinxsidebar p.topless:hover { + overflow: visible; +} + +/* Search text box and "Go" button */ +#searchbox { + margin-top: 2em; + margin-bottom: 1em; + background: #ddd; + padding: 0.5em; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} +#searchbox h3 { + margin-top: 0; +} + +/* Make search box and button abut and have a border */ +input, +div.sphinxsidebar input { + border: 1px solid #999; + float: left; +} + +/* Search textbox */ +input[type="text"] { + margin: 0; + padding: 0 3px; + height: 20px; + width: 144px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; +} +/* Search button */ +input[type="submit"] { + margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ + height: 22px; + color: #444; + background-color: #e8ecef; + padding: 1px 4px; + font-weight: bold; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; +} +input[type="submit"]:hover { + color: #ffffff; + background-color: #8ecc4c; +} + +div.sphinxsidebar p.searchtip { + clear: both; + padding: 0.5em 0 0 0; + background: #ddd; + color: #666; + font-size: 0.9em; +} + +/* Sidebar links are unusual */ +div.sphinxsidebar li a, +div.sphinxsidebar p a { + background: #e8ecef; /* In case links overlap main content */ + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border: 1px solid transparent; /* To prevent things jumping around on hover */ + padding: 0 5px 0 5px; +} +div.sphinxsidebar li a:hover, +div.sphinxsidebar p a:hover { + color: #111; + text-decoration: none; + border: 1px solid #888; +} + +/* Tweak any link appearing in a heading */ +div.sphinxsidebar h3 a { +} + + + + +/* OTHER STUFF ------------------------------------------------------------ */ + +cite, code, tt { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.01em; +} + +tt { + background-color: #f2f2f2; + color: #444; +} + +tt.descname, tt.descclassname, tt.xref { + border: 0; +} + +hr { + border: 1px solid #abc; + margin: 2em; +} + +pre, #_fontwidthtest { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + margin: 1em 2em; + font-size: 0.95em; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid #ccc; + background-color: #eee; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: #f8f8f8; + max-width: 250px; + float: right; + padding: 2px 7px; + border: 1px solid #ccc; +} + +div.topic { + background-color: #f8f8f8; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + + +/* ADMONITIONS AND WARNINGS ------------------------------------------------- */ + +/* Shared by admonitions, warnings and sidebars */ +div.admonition, +div.warning, +div.sidebar { + font-size: 0.9em; + margin: 2em; + padding: 0; + /* + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + */ +} +div.admonition p, +div.warning p, +div.sidebar p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} +div.admonition pre, +div.warning pre, +div.sidebar pre { + margin: 0.4em 1em 0.4em 1em; +} +div.admonition p.admonition-title, +div.warning p.admonition-title, +div.sidebar p.sidebar-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + font-weight: bold; + font-size: 1.1em; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); +} +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol, +div.sidebar ul, div.sidebar ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + + +/* Admonitions and sidebars only */ +div.admonition, div.sidebar { + border: 1px solid #609060; + background-color: #e9ffe9; +} +div.admonition p.admonition-title, +div.sidebar p.sidebar-title { + background-color: #70A070; + border-bottom: 1px solid #609060; +} + + +/* Warnings only */ +div.warning { + border: 1px solid #900000; + background-color: #ffe9e9; +} +div.warning p.admonition-title { + background-color: #b04040; + border-bottom: 1px solid #900000; +} + + +/* Sidebars only */ +div.sidebar { + max-width: 200px; +} + + + +div.versioninfo { + margin: 1em 0 0 0; + border: 1px solid #ccc; + background-color: #DDEAF0; + padding: 8px; + line-height: 1.3em; + font-size: 0.9em; +} + +.viewcode-back { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +dl { + margin: 1em 0 2.5em 0; +} + +/* Highlight target when you click an internal link */ +dt:target { + background: #ffe080; +} +/* Don't highlight whole divs */ +div.highlight { + background: transparent; +} +/* But do highlight spans (so search results can be highlighted) */ +span.highlight { + background: #ffe080; +} + +div.footer { + background-color: #465158; + color: #eeeeee; + padding: 0 2em 2em 2em; + clear: both; + font-size: 0.8em; + text-align: center; +} + +p { + margin: 0.8em 0 0.5em 0; +} + +.section p img { + margin: 1em 2em; +} + + +/* MOBILE LAYOUT -------------------------------------------------------------- */ + +@media screen and (max-width: 600px) { + + h1, h2, h3, h4, h5 { + position: relative; + } + + ul { + padding-left: 1.25em; + } + + div.bodywrapper a.headerlink, #indices-and-tables h1 a { + color: #e6e6e6; + font-size: 80%; + float: right; + line-height: 1.8; + position: absolute; + right: -0.7em; + visibility: inherit; + } + + div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { + line-height: 1.5; + } + + pre { + font-size: 0.7em; + overflow: auto; + word-wrap: break-word; + white-space: pre-wrap; + } + + div.related ul { + height: 2.5em; + padding: 0; + text-align: left; + } + + div.related ul li { + clear: both; + color: #465158; + padding: 0.2em 0; + } + + div.related ul li:last-child { + border-bottom: 1px dotted #8ca1af; + padding-bottom: 0.4em; + margin-bottom: 1em; + width: 100%; + } + + div.related ul li a { + color: #465158; + padding-right: 0; + } + + div.related ul li a:hover { + background: inherit; + color: inherit; + } + + div.related ul li.right { + clear: none; + padding: 0.65em 0; + margin-bottom: 0.5em; + } + + div.related ul li.right a { + color: #fff; + padding-right: 0.8em; + } + + div.related ul li.right a:hover { + background-color: #8ca1af; + } + + div.body { + clear: both; + min-width: 0; + word-wrap: break-word; + } + + div.bodywrapper { + margin: 0 0 0 0; + } + + div.sphinxsidebar { + float: none; + margin: 0; + width: auto; + } + + div.sphinxsidebar input[type="text"] { + height: 2em; + line-height: 2em; + width: 70%; + } + + div.sphinxsidebar input[type="submit"] { + height: 2em; + margin-left: 0.5em; + width: 20%; + } + + div.sphinxsidebar p.searchtip { + background: inherit; + margin-bottom: 1em; + } + + div.sphinxsidebar ul li, div.sphinxsidebar p.topless { + white-space: normal; + } + + .bodywrapper img { + display: block; + margin-left: auto; + margin-right: auto; + max-width: 100%; + } + + div.documentwrapper { + float: none; + } + + div.admonition, div.warning, pre, blockquote { + margin-left: 0em; + margin-right: 0em; + } + + .body p img { + margin: 0; + } + + #searchbox { + background: transparent; + } + + .related:not(:first-child) li { + display: none; + } + + .related:not(:first-child) li.right { + display: block; + } + + div.footer { + padding: 1em; + } + + .rtd_doc_footer .badge { + float: none; + margin: 1em auto; + position: static; + } + + .rtd_doc_footer .badge.revsys-inline { + margin-right: auto; + margin-bottom: 2em; + } + + table.indextable { + display: block; + width: auto; + } + + .indextable tr { + display: block; + } + + .indextable td { + display: block; + padding: 0; + width: auto !important; + } + + .indextable td dt { + margin: 1em 0; + } + + ul.search { + margin-left: 0.25em; + } + + ul.search li div.context { + font-size: 90%; + line-height: 1.1; + margin-bottom: 1; + margin-left: 0; + } + +} + +/* Links in sidebar, TOC, index trees and tables have no underline */ +.sphinxsidebar a, +.toctree-wrapper a, +.indextable a, +#indices-and-tables a { + color: {{ theme_dark_gray }}; + text-decoration: none; + border-bottom: none; +} + +/* Most links get an underline-effect when hovered */ +a:hover, +div.toctree-wrapper a:hover, +.indextable a:hover, +#indices-and-tables a:hover { + color: {{ theme_black }}; + text-decoration: none; + border-bottom: 1px solid {{ theme_black }}; +} + +/* Footer links */ +div.footer a { + color: {{ theme_background_text_link }}; + text-decoration: none; + border: none; +} +div.footer a:hover { + color: {{ theme_medium_color_link_hover }}; + text-decoration: underline; + border: none; +} + +/* Permalink anchor (subtle grey with a red hover) */ +div.body a.headerlink { + color: {{ theme_lighter_gray }}; + font-size: 1em; + margin-left: 6px; + padding: 0 4px 0 4px; + text-decoration: none; + border: none; +} +div.body a.headerlink:hover { + color: {{ theme_negative_text }}; + border: none; +} + + +/* NAVIGATION BAR --------------------------------------------------------- */ + +div.related ul { + height: 2.5em; +} + +div.related ul li { + margin: 0; + padding: 0.65em 0; + float: left; + display: block; + color: {{ theme_background_link_half }}; /* For the >> separators */ + font-size: 0.8em; +} + +div.related ul li.right { + float: right; + margin-right: 5px; + color: transparent; /* Hide the | separators */ +} + +/* "Breadcrumb" links in nav bar */ +div.related ul li a { + order: none; + background-color: inherit; + font-weight: bold; + margin: 6px 0 6px 4px; + line-height: 1.75em; + color: {{ theme_background_link }}; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); + padding: 0.4em 0.8em; + border: none; + border-radius: 3px; +} +/* previous / next / modules / index links look more like buttons */ +div.related ul li.right a { + margin: 0.375em 0; + background-color: {{ theme_medium_color_hover }}; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* All navbar links light up as buttons when hovered */ +div.related ul li a:hover { + background-color: {{ theme_medium_color }}; + color: {{ theme_white }}; + text-decoration: none; + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} +/* Take extra precautions for tt within links */ +a tt, +div.related ul li a tt { + background: inherit !important; + color: inherit !important; +} + + +/* SIDEBAR ---------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 0; +} + +div.sphinxsidebar { + margin: 0; + margin-left: -100%; + float: left; + top: 3em; + left: 0; + padding: 0 1em; + width: 14em; + font-size: 1em; + text-align: left; + background-color: {{ theme_light_color }}; +} + +div.sphinxsidebar img { + max-width: 12em; +} + +div.sphinxsidebar h3, div.sphinxsidebar h4 { + margin: 1.2em 0 0.3em 0; + font-size: 1em; + padding: 0; + color: {{ theme_gray_2 }}; + font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; +} + +div.sphinxsidebar h3 a { + color: {{ theme_grey_color }}; +} + +div.sphinxsidebar ul, +div.sphinxsidebar p { + margin-top: 0; + padding-left: 0; + line-height: 130%; + background-color: {{ theme_light_color }}; +} + +/* No bullets for nested lists, but a little extra indentation */ +div.sphinxsidebar ul ul { + list-style-type: none; + margin-left: 1.5em; + padding: 0; +} + +/* A little top/bottom padding to prevent adjacent links' borders + * from overlapping each other */ +div.sphinxsidebar ul li { + padding: 1px 0; +} + +/* A little left-padding to make these align with the ULs */ +div.sphinxsidebar p.topless { + padding-left: 0 0 0 1em; +} + +/* Make these into hidden one-liners */ +div.sphinxsidebar ul li, +div.sphinxsidebar p.topless { + white-space: nowrap; + overflow: hidden; +} +/* ...which become visible when hovered */ +div.sphinxsidebar ul li:hover, +div.sphinxsidebar p.topless:hover { + overflow: visible; +} + +/* Search text box and "Go" button */ +#searchbox { + margin-top: 2em; + margin-bottom: 1em; + background: {{ theme_dirtier_white }}; + padding: 0.5em; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} +#searchbox h3 { + margin-top: 0; +} + +/* Make search box and button abut and have a border */ +input, +div.sphinxsidebar input { + border: 1px solid {{ theme_gray_9 }}; + float: left; +} + +/* Search textbox */ +input[type="text"] { + margin: 0; + padding: 0 3px; + height: 20px; + width: 144px; + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + -moz-border-radius-topleft: 3px; + -moz-border-radius-bottomleft: 3px; + -webkit-border-top-left-radius: 3px; + -webkit-border-bottom-left-radius: 3px; +} +/* Search button */ +input[type="submit"] { + margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ + height: 22px; + color: {{ theme_dark_gray }}; + background-color: {{ theme_light_color }}; + padding: 1px 4px; + font-weight: bold; + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; + -webkit-border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; +} +input[type="submit"]:hover { + color: {{ theme_white }}; + background-color: {{ theme_green_highlight }}; +} + +div.sphinxsidebar p.searchtip { + clear: both; + padding: 0.5em 0 0 0; + background: {{ theme_dirtier_white }}; + color: {{ theme_gray }}; + font-size: 0.9em; +} + +/* Sidebar links are unusual */ +div.sphinxsidebar li a, +div.sphinxsidebar p a { + background: {{ theme_light_color }}; /* In case links overlap main content */ + border-radius: 3px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border: 1px solid transparent; /* To prevent things jumping around on hover */ + padding: 0 5px 0 5px; +} +div.sphinxsidebar li a:hover, +div.sphinxsidebar p a:hover { + color: {{ theme_black }}; + text-decoration: none; + border: 1px solid {{ theme_light_gray }}; +} + +/* Tweak any link appearing in a heading */ +div.sphinxsidebar h3 a { +} + + + + +/* OTHER STUFF ------------------------------------------------------------ */ + +cite, code, tt { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + font-size: 0.95em; + letter-spacing: 0.01em; +} + +tt { + background-color: {{ theme_code_background }}; + color: {{ theme_dark_gray }}; +} + +tt.descname, tt.descclassname, tt.xref { + border: 0; +} + +hr { + border: 1px solid {{ theme_ruler }}; + margin: 2em; +} + +pre, #_fontwidthtest { + font-family: 'Consolas', 'Deja Vu Sans Mono', + 'Bitstream Vera Sans Mono', monospace; + margin: 1em 2em; + font-size: 0.95em; + letter-spacing: 0.015em; + line-height: 120%; + padding: 0.5em; + border: 1px solid {{ theme_lighter_gray }}; + background-color: {{ theme_code_background }}; + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; +} + +pre a { + color: inherit; + text-decoration: underline; +} + +td.linenos pre { + padding: 0.5em 0; +} + +div.quotebar { + background-color: {{ theme_almost_white }}; + max-width: 250px; + float: right; + padding: 2px 7px; + border: 1px solid {{ theme_lighter_gray }}; +} + +div.topic { + background-color: {{ theme_almost_white }}; +} + +table { + border-collapse: collapse; + margin: 0 -0.5em 0 -0.5em; +} + +table td, table th { + padding: 0.2em 0.5em 0.2em 0.5em; +} + + +/* ADMONITIONS AND WARNINGS ------------------------------------------------- */ + +/* Shared by admonitions, warnings and sidebars */ +div.admonition, +div.warning, +div.sidebar { + font-size: 0.9em; + margin: 2em; + padding: 0; + /* + border-radius: 6px; + -moz-border-radius: 6px; + -webkit-border-radius: 6px; + */ +} +div.admonition p, +div.warning p, +div.sidebar p { + margin: 0.5em 1em 0.5em 1em; + padding: 0; +} +div.admonition pre, +div.warning pre, +div.sidebar pre { + margin: 0.4em 1em 0.4em 1em; +} +div.admonition p.admonition-title, +div.warning p.admonition-title, +div.sidebar p.sidebar-title { + margin: 0; + padding: 0.1em 0 0.1em 0.5em; + color: white; + font-weight: bold; + font-size: 1.1em; + text-shadow: 0 1px rgba(0, 0, 0, 0.5); +} +div.admonition ul, div.admonition ol, +div.warning ul, div.warning ol, +div.sidebar ul, div.sidebar ol { + margin: 0.1em 0.5em 0.5em 3em; + padding: 0; +} + + +/* Admonitions and sidebars only */ +div.admonition, div.sidebar { + border: 1px solid {{ theme_positive_dark }}; + background-color: {{ theme_positive_light }}; +} +div.admonition p.admonition-title, +div.sidebar p.sidebar-title { + background-color: {{ theme_positive_medium }}; + border-bottom: 1px solid {{ theme_positive_dark }}; +} + + +/* Warnings only */ +div.warning { + border: 1px solid {{ theme_negative_dark }}; + background-color: {{ theme_negative_light }}; +} +div.warning p.admonition-title { + background-color: {{ theme_negative_medium }}; + border-bottom: 1px solid {{ theme_negative_dark }}; +} + + +/* Sidebars only */ +div.sidebar { + max-width: 200px; +} + + + +div.versioninfo { + margin: 1em 0 0 0; + border: 1px solid {{ theme_lighter_gray }}; + background-color: {{ theme_light_medium_color }}; + padding: 8px; + line-height: 1.3em; + font-size: 0.9em; +} + +.viewcode-back { + font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', + 'Verdana', sans-serif; +} + +div.viewcode-block:target { + background-color: {{ theme_viewcode_bg }}; + border-top: 1px solid {{ theme_viewcode_border }}; + border-bottom: 1px solid {{ theme_viewcode_border }}; +} + +dl { + margin: 1em 0 2.5em 0; +} + +/* Highlight target when you click an internal link */ +dt:target { + background: {{ theme_highlight }}; +} +/* Don't highlight whole divs */ +div.highlight { + background: transparent; +} +/* But do highlight spans (so search results can be highlighted) */ +span.highlight { + background: {{ theme_highlight }}; +} + +div.footer { + background-color: {{ theme_background }}; + color: {{ theme_background_text }}; + padding: 0 2em 2em 2em; + clear: both; + font-size: 0.8em; + text-align: center; +} + +p { + margin: 0.8em 0 0.5em 0; +} + +.section p img { + margin: 1em 2em; +} + + +/* MOBILE LAYOUT -------------------------------------------------------------- */ + +@media screen and (max-width: 600px) { + + h1, h2, h3, h4, h5 { + position: relative; + } + + ul { + padding-left: 1.75em; + } + + div.bodywrapper a.headerlink, #indices-and-tables h1 a { + color: {{ theme_almost_dirty_white }}; + font-size: 80%; + float: right; + line-height: 1.8; + position: absolute; + right: -0.7em; + visibility: inherit; + } + + div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { + line-height: 1.5; + } + + pre { + font-size: 0.7em; + overflow: auto; + word-wrap: break-word; + white-space: pre-wrap; + } + + div.related ul { + height: 2.5em; + padding: 0; + text-align: left; + } + + div.related ul li { + clear: both; + color: {{ theme_dark_color }}; + padding: 0.2em 0; + } + + div.related ul li:last-child { + border-bottom: 1px dotted {{ theme_medium_color }}; + padding-bottom: 0.4em; + margin-bottom: 1em; + width: 100%; + } + + div.related ul li a { + color: {{ theme_dark_color }}; + padding-right: 0; + } + + div.related ul li a:hover { + background: inherit; + color: inherit; + } + + div.related ul li.right { + clear: none; + padding: 0.65em 0; + margin-bottom: 0.5em; + } + + div.related ul li.right a { + color: {{ theme_white }}; + padding-right: 0.8em; + } + + div.related ul li.right a:hover { + background-color: {{ theme_medium_color }}; + } + + div.body { + clear: both; + min-width: 0; + word-wrap: break-word; + } + + div.bodywrapper { + margin: 0 0 0 0; + } + + div.sphinxsidebar { + float: none; + margin: 0; + width: auto; + } + + div.sphinxsidebar input[type="text"] { + height: 2em; + line-height: 2em; + width: 70%; + } + + div.sphinxsidebar input[type="submit"] { + height: 2em; + margin-left: 0.5em; + width: 20%; + } + + div.sphinxsidebar p.searchtip { + background: inherit; + margin-bottom: 1em; + } + + div.sphinxsidebar ul li, div.sphinxsidebar p.topless { + white-space: normal; + } + + .bodywrapper img { + display: block; + margin-left: auto; + margin-right: auto; + max-width: 100%; + } + + div.documentwrapper { + float: none; + } + + div.admonition, div.warning, pre, blockquote { + margin-left: 0em; + margin-right: 0em; + } + + .body p img { + margin: 0; + } + + #searchbox { + background: transparent; + } + + .related:not(:first-child) li { + display: none; + } + + .related:not(:first-child) li.right { + display: block; + } + + div.footer { + padding: 1em; + } + + .rtd_doc_footer .badge { + float: none; + margin: 1em auto; + position: static; + } + + .rtd_doc_footer .badge.revsys-inline { + margin-right: auto; + margin-bottom: 2em; + } + + table.indextable { + display: block; + width: auto; + } + + .indextable tr { + display: block; + } + + .indextable td { + display: block; + padding: 0; + width: auto !important; + } + + .indextable td dt { + margin: 1em 0; + } + + ul.search { + margin-left: 0.25em; + } + + ul.search li div.context { + font-size: 90%; + line-height: 1.1; + margin-bottom: 1; + margin-left: 0; + } + +} diff --git a/docs/themes/rtd/theme.conf b/docs/themes/rtd/theme.conf new file mode 100755 index 0000000000000000000000000000000000000000..39fb32e7dd4a8b1ad2b5992e452771337c403345 --- /dev/null +++ b/docs/themes/rtd/theme.conf @@ -0,0 +1,64 @@ +[theme] +inherit = default +stylesheet = rtd.css +pygment_style = default +show_sphinx = False + +[options] +show_rtd = True + +white = #ffffff +almost_white = #f8f8f8 +barely_white = #f2f2f2 +dirty_white = #eeeeee +almost_dirty_white = #e6e6e6 +dirtier_white = #dddddd +lighter_gray = #cccccc +gray_a = #aaaaaa +gray_9 = #999999 +light_gray = #888888 +gray_7 = #777777 +gray = #666666 +dark_gray = #444444 +gray_2 = #222222 +black = #111111 +light_color = #e8ecef +light_medium_color = #DDEAF0 +medium_color = #8ca1af +medium_color_link = #86989b +medium_color_link_hover = #a6b8bb +dark_color = #465158 + +h1 = #000000 +h2 = #465158 +h3 = #6c818f + +link_color = #444444 +link_color_decoration = #CCCCCC + +medium_color_hover = #697983 +green_highlight = #8ecc4c + + +positive_dark = #609060 +positive_medium = #70a070 +positive_light = #e9ffe9 + +negative_dark = #900000 +negative_medium = #b04040 +negative_light = #ffe9e9 +negative_text = #c60f0f + +ruler = #abc + +viewcode_bg = #f4debf +viewcode_border = #ac9 + +highlight = #ffe080 + + +background = #465158 +background_link = #ffffff +background_link_half = #ffffff +background_text = #eeeeee +background_text_link = #86989b