From f9d549b6b97555f06d42e3589a1e4aaf75716aa9 Mon Sep 17 00:00:00 2001 From: martinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d> Date: Fri, 27 Jun 2008 05:29:57 +0000 Subject: [PATCH] new wiki usage test git-svn-id: http://biopieces.googlecode.com/svn/trunk@54 74ccb610-7750-0410-82ae-013aeee3265d --- bp_doc/00README | 2 + bp_doc/biopieces_cookbook.lyx~ | 7258 +++++++++++++++++++++++++++++++ bp_doc/biotools_cookbook.lyx~ | 7337 ++++++++++++++++++++++++++++++++ bp_doc/chrdist.png | Bin 0 -> 16785 bytes bp_doc/dotplot.png | Bin 0 -> 56457 bytes bp_doc/karyogram.png | Bin 90569 -> 64528 bytes bp_doc/lendist.png | Bin 0 -> 13513 bytes bp_doc/seqlogo.png | Bin 40470 -> 36968 bytes bp_usage/read_fasta.wiki | 82 + code_perl/Maasha/Biopieces.pm | 6 +- 10 files changed, 14682 insertions(+), 3 deletions(-) create mode 100644 bp_doc/00README create mode 100644 bp_doc/biopieces_cookbook.lyx~ create mode 100644 bp_doc/biotools_cookbook.lyx~ create mode 100644 bp_doc/chrdist.png create mode 100644 bp_doc/dotplot.png create mode 100644 bp_doc/lendist.png create mode 100644 bp_usage/read_fasta.wiki diff --git a/bp_doc/00README b/bp_doc/00README new file mode 100644 index 0000000..cdbed61 --- /dev/null +++ b/bp_doc/00README @@ -0,0 +1,2 @@ +# Adding stuff to the wiki, like images and documents +svn co https://biopieces.googlecode.com/svn/wiki wiki --username martinahansen diff --git a/bp_doc/biopieces_cookbook.lyx~ b/bp_doc/biopieces_cookbook.lyx~ new file mode 100644 index 0000000..1090825 --- /dev/null +++ b/bp_doc/biopieces_cookbook.lyx~ @@ -0,0 +1,7258 @@ +#LyX 1.5.1 created this file. For more info see http://www.lyx.org/ +\lyxformat 276 +\begin_document +\begin_header +\textclass scrartcl +\begin_preamble +\usepackage[colorlinks=true, urlcolor=blue, linkcolor=black]{hyperref} +\end_preamble +\language english +\inputencoding auto +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 +\graphics default +\paperfontsize default +\spacing single +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation skip +\defskip medskip +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\author "" +\author "" +\end_header + +\begin_body + +\begin_layout Title +Biopieces Cookbook +\end_layout + +\begin_layout Author +Martin Asser Hansen +\end_layout + +\begin_layout Publishers +John Mattick Group +\newline +Institute for Molecular Bioscience +\newline +University of Queensland +\newline +Aust +ralia +\newline +E-mail: mail@maasha.dk +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +thispagestyle{empty} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard + +\newpage + +\end_layout + +\begin_layout Standard +\begin_inset LatexCommand tableofcontents + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset FloatList figure + +\end_inset + + +\end_layout + +\begin_layout Standard + +\newpage + +\end_layout + +\begin_layout Section +Introduction +\end_layout + +\begin_layout Standard +Biopieces is a collection of simple tools that can be linked together (piped + as we shall call it) in a very flexible manner to perform both simple and + complex tasks. + The fundamental idea is that biopieces work on a data stream that will + only terminate at the end of an analysis and that this data stream can + be passed through several different biopieces, each performing one specific + task. + The advantage of this approach is that a user can perform simple and complex + tasks without having to write advanced code. + Moreover, since the data format used to pass data between biopieces is + text based, biopieces can be written by different developers in their favorite + programming language --- and still the biopieces will be able to work together. +\end_layout + +\begin_layout Standard +In the most simple form bioools can be piped together on the command line + like this (using the pipe character '|'): +\end_layout + +\begin_layout LyX-Code +read_data | calculate_something | write_result +\end_layout + +\begin_layout Standard +However, a more comprehensive analysis could be composed: +\end_layout + +\begin_layout LyX-Code +read_data | select_entries | convert_entries | search_database +\end_layout + +\begin_layout LyX-Code +evaluate_results | plot_diagram | plot_another_diagram | +\end_layout + +\begin_layout LyX-Code +load_to_database +\end_layout + +\begin_layout Standard +The data stream that is piped through the biopieces consists of records + of key/value pairs in the same way a hash does in order to keep as simple + a structure as possible. + An example record can be seen below: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +REC_TYPE: PATSCAN +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +MATCH: AGATCAAGTG +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +S_BEG: 7 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +S_END: 16 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +ALIGN_LEN: 9 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +S_ID: piR-t6 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +STRAND: + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +PATTERN: AGATCAAGTG +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +--- +\end_layout + +\begin_layout Standard +The ' +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\backslash +/- +\end_layout + +\end_inset + +' denotes the delimiter of the records, and each key is a word followed + by a ':' and a white-space and then the value. + By convention the biopieces only uses upper case keys (a list of used keys + can be seen in Appendix\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sec:Keys" + +\end_inset + +). + Since the records basically are hash structures this mean that the order + of the keys in the stream is unordered, and in the above example it is + pure coincidence that HIT_BEG is displayed before HIT_END, however, when + the order of the keys is importent, the biopieces will automagically see + to that. +\end_layout + +\begin_layout Standard +All of the biopieces are able to read and write a data stream to and from + file as long as the records are in the biopieces format. + This means that if you are undertaking a lengthy analysis where one of + the steps is time consuming, you may save the stream after this step, and + subsequently start one or more analysis from that last step +\begin_inset Foot +status collapsed + +\begin_layout Standard +It is a goal that the biopieces at some point will be able to dump the data + stream to file in case one of the tools fail critically. +\end_layout + +\end_inset + +. + If you are running a lengthy analysis it is highly recommended that you + create a small test sample of the data and run that through the pipeline + --- and once you are satisfied with the result proceed with the full data + set (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-select-a-few-records" + +\end_inset + +). +\end_layout + +\begin_layout Standard +All of the biopieces can be supplied with long arguments prefixed with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + + switches or single character arguments prefixed with - switches that can + be grouped together (e.g. + -xok). + In this cookbook only the long switches are used to emphasize what these + switches do. +\end_layout + +\begin_layout Section +Setup +\end_layout + +\begin_layout Standard +In order to get the biopieces to work, you need to add environment settings + to include the code binaries, scripts, and modules that constitute the + biopieces package. + Assuming that you are using bash, add the following to your '~/.bashrc' + file using your favorite editor. + After the changes has been saved you need to either run 'source ~/.bashrc' + or relogin. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +if [ -f "/home/m.hansen/maasha/conf/bashrc" ]; then +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + source "/home/m.hansen/maasha/conf/bashrc" +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +fi +\end_layout + +\begin_layout Section +Getting Started +\end_layout + +\begin_layout Standard +The biopiece +\series bold +list_biopieces +\series default + lists all the biopieces along with a description: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +list_biopieces +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +align_seq Align sequences in stream using Muscle. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +analyze_seq Analysis the residue composition of each sequence + in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +analyze_vals Determine type, count, min, max, sum and mean for + values in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +blast_seq BLAST sequences in stream against a specified database. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +blat_seq BLAT sequences in stream against a specified genome. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +complement_seq Complement sequences in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_records Count the number of records in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_seq Count sequences in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_vals Count the number of times values of given keys exists + in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +create_blast_db Create a BLAST database from sequences in stream for + use with BLAST. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +... +\end_layout + +\begin_layout Standard +To list the biopieces for writing different formats, you can use unix's + grep like this: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +list_biopieces | grep write +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_align Write aligned sequences in pretty alignment format. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_bed Write records from stream as BED lines. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_blast Write BLAST records from stream in BLAST tabular format + (-m8 and 9). +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_fasta Write sequences in FASTA format. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_psl Write records from stream in PSL format. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_tab Write records from stream as tab separated table. +\end_layout + +\begin_layout Standard +In order to find out how a specific biopiece works, you just type the program + name without any arguments and press return and the usage of the biopiece + will be displayed. + E.g. + +\series bold +read_fasta +\series default + <return>: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +status open + +\begin_layout LyX-Code + +\size scriptsize +Program name: read_fasta +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Author: Martin Asser Hansen - Copyright (C) - All rights reserved +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Contact: mail@maasha.dk +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Date: August 2007 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +License: GNU General Public License version 2 (http://www.gnu.org/copyleft/ +gpl.html) +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Description: Read FASTA entries. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Usage: read_fasta [options] -i <FASTA file(s)> +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Options: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-i <file(s)> | --data_in=<file(s)>] - Comma separated list of files + to read. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-n <int> | --num=<int>] - Limit number of records to read. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-I <file> | --stream_in=<file>] - Read input stream from file + - Default=STDIN +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-O <file> | --stream_out=<file>] - Write output stream to file + - Default=STDOUT +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Examples: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i test.fna - Read FASTA entries from file. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i test1.fna,test2,fna - Read FASTA entries from files. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i '*.fna' - Read FASTA entries from files. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i test.fna -n 10 - Read first 10 FASTA entries from + file. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +The Data Stream +\end_layout + +\begin_layout Subsection +How to read the data stream from file? +\begin_inset LatexCommand label +name "sub:How-to-read-stream" + +\end_inset + + +\end_layout + +\begin_layout Standard +You want to read a data stream that you previously have saved to file in + biopieces format. + This can be done implicetly or explicitly. + The implicit way uses the 'stdout' stream of the Unix terminal: +\end_layout + +\begin_layout LyX-Code +cat | <biopiece> +\end_layout + +\begin_layout Standard +cat is the Unix command that reads a file and output the result to 'stdout' + --- which in this case is piped to any biopiece represented by the <biopiece>. + It is also possible to read the data stream using '<' to direct the 'stdout' + stream into the biopiece like this: +\end_layout + +\begin_layout LyX-Code +<biopiece> < <file> +\end_layout + +\begin_layout Standard +However, that will not work if you pipe more biopieces together. + Then it is much safer to read the stream from a file explicitly like this: +\end_layout + +\begin_layout LyX-Code +<biopiece> --stream_in=<file> +\end_layout + +\begin_layout Standard +Here the filename <file> is explicetly given to the biopiece <biopiece> + with the switch +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_in. + This switch works with all biopieces. + It is also possible to read in data from multiple sources by repeating + the explicit read step: +\end_layout + +\begin_layout LyX-Code +<biopiece> --stream_in=<file1> | <biopiece> --stream_in=<file2> +\end_layout + +\begin_layout Subsection +How to write the data stream to file? +\begin_inset LatexCommand label +name "sub:How-to-write-stream" + +\end_inset + + +\end_layout + +\begin_layout Standard +In order to save the output stream from a biopiece to file, so you can read + in the stream again at a later time, you can do one of two things: +\end_layout + +\begin_layout LyX-Code +<biopiece> > <file> +\end_layout + +\begin_layout Standard +All, the biopieces write the data stream to 'stdout' by default which can + be written to a file by redirecting 'stdout' to file using '>' , however, + if one of the biopieces for writing other formats is used then the both + the biopieces records as well as the result output will go to 'stdout' + in a mixture causing havock! To avoid this you must use the switch +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_out that explictly tells the biopiece to write the output stream + to file: +\end_layout + +\begin_layout LyX-Code +<biopiece> --stream_out=<file> +\end_layout + +\begin_layout Standard +The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_out switch works with all biopieces. +\end_layout + +\begin_layout Subsection +How to terminate the data stream? +\end_layout + +\begin_layout Standard +The data stream is never stops unless the user want to save the stream or + by supplying the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch that will terminate the stream: +\end_layout + +\begin_layout LyX-Code +<biopiece> --no_stream +\end_layout + +\begin_layout Standard +The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch only works with those biopieces where it makes sense that + the user might want to terminale the data stream, +\emph on +i.e +\emph default +. + after an analysis step where the user wants to output the result, but not + the data stream. +\end_layout + +\begin_layout Subsection +How to write my results to file? +\begin_inset LatexCommand label +name "sub:How-to-write-result" + +\end_inset + + +\end_layout + +\begin_layout Standard +Saving the result of an analysis to file can be done implicitly or explicitly. + The implicit way: +\end_layout + +\begin_layout LyX-Code +<biopiece> --no_stream > <file> +\end_layout + +\begin_layout Standard +If you use '>' to redirect 'stdout' to file then it is important to use + the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch to avoid writing a mix of biopieces records and result + to the same file causing havock. + The safe way is to use the +\begin_inset ERT +status open + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out switch which explicetly tells the biopiece to write the result + to a given file: +\end_layout + +\begin_layout LyX-Code +<biopiece> --result_out=<file> +\end_layout + +\begin_layout Standard +Using the above method will not terminate the stream, so it is possible + to pipe that into another biopiece generating different results: +\end_layout + +\begin_layout LyX-Code +<biopiece1> --result_out=<file1> | <biopiece2> --result_out=<file2> +\end_layout + +\begin_layout Standard +And still the data stream will continue unless terminated with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream: +\end_layout + +\begin_layout LyX-Code +<biopiece> --result_out=<file> --no_stream +\end_layout + +\begin_layout Standard +Or written to file using implicitly or explicity +\begin_inset LatexCommand eqref +reference "sub:How-to-write-result" + +\end_inset + +. + The explicit way: +\end_layout + +\begin_layout LyX-Code +<biopiece> --result_out=<file1> --stream_out=<file2> +\end_layout + +\begin_layout Subsection +How to read data from multiple sources? +\end_layout + +\begin_layout Standard +To read multiple data sources, with the same type or different type of data + do: +\end_layout + +\begin_layout LyX-Code +<biopiece1> --data_in=<file1> | <biopiece2> --data_in=<file2> +\end_layout + +\begin_layout Standard +where type is the data type a specific biopiece reads. +\end_layout + +\begin_layout Section +Reading input +\end_layout + +\begin_layout Subsection +How to read biopieces input? +\end_layout + +\begin_layout Standard +See +\begin_inset LatexCommand eqref +reference "sub:How-to-read-stream" + +\end_inset + +. +\end_layout + +\begin_layout Subsection +How to read in data? +\end_layout + +\begin_layout Standard +Data in different formats can be read with the appropriate biopiece for + that format. + The biopieces are typicalled named 'read_<data type>' such as +\series bold +read_fasta +\series default +, +\series bold +read_bed +\series default +, +\series bold +read_tab +\series default +, etc., and all behave in a similar manner. + Data can be read by supplying the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +data_in switch and a file name to the file containing the data: +\end_layout + +\begin_layout LyX-Code +<biopiece> --data_in=<file> +\end_layout + +\begin_layout Standard +It is also possible to read in a saved biopieces stream (see +\begin_inset LatexCommand ref +reference "sub:How-to-read-stream" + +\end_inset + +) as well as reading data in one go: +\end_layout + +\begin_layout LyX-Code +<biopiece> --stream_in=<file1> --data_in=<file2> +\end_layout + +\begin_layout Standard +If you want to read data from several files you can do this: +\end_layout + +\begin_layout LyX-Code +<biopiece> --data_in=<file1> | <biopiece> --data_in=<file2> +\end_layout + +\begin_layout Standard +If you have several data files you can read in all explicitly with a comma + separated list: +\end_layout + +\begin_layout LyX-Code +<biopiece> --data_in=file1,file2,file3 +\end_layout + +\begin_layout Standard +And it is also possible to use file globbing +\begin_inset Foot +status open + +\begin_layout Standard +using the short option will only work if you quote the argument -i '*.fna' +\end_layout + +\end_inset + +: +\end_layout + +\begin_layout LyX-Code +<biopiece> --data_in=*.fna +\end_layout + +\begin_layout Standard +Or in a combination: +\end_layout + +\begin_layout LyX-Code +<biopiece> --data_in=file1,/dir/*.fna +\end_layout + +\begin_layout Standard +Finally, it is possible to read in data in different formats using the appropria +te biopiece for each format: +\end_layout + +\begin_layout LyX-Code +<biopiece1> --data_in=<file1> | <biopiece2> --data_in=<file2> ... +\end_layout + +\begin_layout Subsection +How to read FASTA input? +\end_layout + +\begin_layout Standard +Sequences in FASTA format can be read explicitly using +\series bold +read_fasta +\series default +: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> +\end_layout + +\begin_layout Subsection +How to read alignment input? +\end_layout + +\begin_layout Standard +If your alignment if FASTA formatted then you can +\series bold +read_align +\series default +. + It is also possible to use +\series bold +read_fasta +\series default + since the data is FASTA formatted, however, with +\series bold +read_fasta +\series default + the key ALIGN will be omitted. + The ALIGN key is used to determine which sequences belong to what alignment + which is required for +\series bold +write_align +\series default +. +\end_layout + +\begin_layout LyX-Code +read_align --data_in=<file> +\end_layout + +\begin_layout Subsection +How to read tabular input? +\begin_inset LatexCommand label +name "sub:How-to-read-table" + +\end_inset + + +\end_layout + +\begin_layout Standard +Tabular input can be read with +\series bold +read_tab +\series default + which will read in all rows and chosen columns (separated by a given delimter) + from a table in text format. +\end_layout + +\begin_layout Standard +The table below: +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular +<lyxtabular version="3" rows="4" columns="3"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="left" valignment="top" width="0"> +<column alignment="left" valignment="top" width="0"> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Human +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +ATACGTCAG +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +23524 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Dog +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +AGCATGAC +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +2442 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Mouse +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +GACTG +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +234 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Cat +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +AAATGCA +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +2342 +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\end_layout + +\begin_layout Standard +Can be read using the command: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> +\end_layout + +\begin_layout Standard +Which will result in four records, one for each row, where the keys V0, + V1, V2 are the default keys for the organism, sequence, and count, respectively. + It is possible to select a subset of colums to read by using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +cols switch which takes a comma separated list of columns numbers (first + column is designated 0) as argument. + So to read in only the sequence and the count so that the count comes before + the sequence do: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> --cols=2,1 +\end_layout + +\begin_layout Standard +It is also possible to name the columns with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys switch: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> --cols=2,1 --keys=COUNT,SEQ +\end_layout + +\begin_layout Subsection +How to read BED input? +\end_layout + +\begin_layout Standard +The BED (Browser Extensible Data +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://genome.ucsc.edu/FAQ/FAQformat" + +\end_inset + + +\end_layout + +\end_inset + +) format is a tabular format for data pertaining to one of the Eukaryotic + genomes in the UCSC genome brower +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://genome.ucsc.edu/" + +\end_inset + + +\end_layout + +\end_inset + +. + The BED format consists of up to 12 columns, where the first three are + mandatory CHR, CHR_BEG, and CHR_END. + The mandatory columns and any of the optional columns can all be read in + easily with the +\series bold +read_bed +\series default + biopiece. +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<file> +\end_layout + +\begin_layout Standard +It is also possible to read the BED file with +\series bold +read_tab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-read-table" + +\end_inset + +), however, that will be more cumbersome because you need to specify the + keys: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> --keys=CHR,CHR_BEG,CHR_END ... +\end_layout + +\begin_layout Subsection +How to read PSL input? +\end_layout + +\begin_layout Standard +The PSL format is the output from BLAT and contains 21 mandatory fields + that can be read with +\series bold +read_psl +\series default +: +\end_layout + +\begin_layout LyX-Code +read_psl --data_in=<file> +\end_layout + +\begin_layout Section +Writing output +\end_layout + +\begin_layout Standard +All result output can be written explicitly to file using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out switch which all result generating biopieces have. + It is also possible to write the result to file implicetly by directing + 'stdout' to file using '>', however, that requires the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream swich to prevent a mixture of data stream and results in the file. + The explicit (and safe) way: +\end_layout + +\begin_layout LyX-Code +... + | <biopiece> --result_out=<file> +\end_layout + +\begin_layout Standard +The implicit way: +\end_layout + +\begin_layout LyX-Code +... + | <biopiece> --no_stream > <file> +\end_layout + +\begin_layout Subsection +How to write biopieces output? +\end_layout + +\begin_layout Standard +See +\begin_inset LatexCommand eqref +reference "sub:How-to-write-stream" + +\end_inset + +. +\end_layout + +\begin_layout Subsection +How to write FASTA output? +\begin_inset LatexCommand label +name "sub:How-to-write-fasta" + +\end_inset + + +\end_layout + +\begin_layout Standard +FASTA output can be written with +\series bold +write_fasta +\series default +. +\end_layout + +\begin_layout LyX-Code +... + | write_fasta --result_out=<file> +\end_layout + +\begin_layout Standard +It is also possible to wrap the sequences to a given width using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +wrap switch allthough wrapping of sequence is generally an evil thing: +\end_layout + +\begin_layout LyX-Code +... + | write_fasta --no_stream --wrap=80 +\end_layout + +\begin_layout Subsection +How to write alignment output? +\begin_inset LatexCommand label +name "sub:How-to-write-alignment" + +\end_inset + + +\end_layout + +\begin_layout Standard +Pretty alignments with ruler +\begin_inset Foot +status collapsed + +\begin_layout Standard +'.' for every 10 residues, ':' for every 50, and '|' for every 100 +\end_layout + +\end_inset + + and consensus sequence +\begin_inset Note Note +status collapsed + +\begin_layout Standard +which reminds me to make that an option. +\end_layout + +\end_inset + + can be created with +\series bold +write_align +\series default +, what also have the optional +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +wrap switch to break the alignment into blocks of a given width: +\end_layout + +\begin_layout LyX-Code +... + | write_align --result_out=<file> --wrap=80 +\end_layout + +\begin_layout Standard +If the number of sequnces in the alignment is 2 then a pairwise alignment + will be output otherwise a multiple alignment. + And if the sequence type, determined automagically, is protein, then residues + and symbols (+,\InsetSpace ~ +:,\InsetSpace ~ +.) will be used to show consensus according to the Blosum62 + matrix. +\end_layout + +\begin_layout Subsection +How to write tabular output? +\begin_inset LatexCommand label +name "sub:How-to-write-tab" + +\end_inset + + +\end_layout + +\begin_layout Standard +Outputting the data stream as a table can be done with +\series bold +write_tab +\series default +, which will write generate one row per record with the values as columns. + If you supply the optional +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +comment switch, when the first row in the table will be a 'comment' line + prefixed with a '#': +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --comment +\end_layout + +\begin_layout Standard +You can also change the delimiter from the default (tab) to +\emph on +e.g. + +\emph default + ',': +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --delimit=',' +\end_layout + +\begin_layout Standard +If you want the values output in a specific order you have to supply a comma + separated list using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys switch that will print only those keys in that order: +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --keys=SEQ_NAME,COUNT +\end_layout + +\begin_layout Standard +Alternatively, if you have some keys that you don't want in the tabular + output, use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_keys switch. + So to print all keys except SEQ and SEQ_TYPE do: +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --no_keys=SEQ,SEQ_TYPE +\end_layout + +\begin_layout Standard +Finally, if you have a stream containing a mix of different records types, + +\emph on +e.g. + +\emph default + records with sequences and records with matches, then you can use +\series bold +write_tab +\series default + to output all the records in tabluar format, however, the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +comment, +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys, and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_keys switches will only respond to records of the first type encountered. + The reason is that outputting mixed records is probably not what you want + anyway, and you should remove all the unwanted records from the stream + before outputting the table: +\series bold +grab +\series default + is your friend (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-grab" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to write a BED output? +\begin_inset LatexCommand label +name "sub:How-to-write-BED" + +\end_inset + + +\end_layout + +\begin_layout Standard +Data in BED format can be output if the records contain the mandatory keys + CHR, CHR_BEG, and CHR_END using +\series bold +write_bed +\series default +. + If the optional keys are also present, they will be output as well: +\end_layout + +\begin_layout LyX-Code +write_bed --result_out=<file> +\end_layout + +\begin_layout Subsection +How to write PSL output? +\begin_inset LatexCommand label +name "sub:How-to-write-PSL" + +\end_inset + + +\end_layout + +\begin_layout Standard +Data in PSL format can be output using +\series bold +write_psl: +\end_layout + +\begin_layout LyX-Code +write_psl --result_out=<file> +\end_layout + +\begin_layout Section +Manipulating Records +\end_layout + +\begin_layout Subsection +How to select a few records? +\begin_inset LatexCommand label +name "sub:How-to-select-a-few-records" + +\end_inset + + +\end_layout + +\begin_layout Standard +To quickly get an overview of your data you can limit the data stream to + show a few records. + This also very useful to test the pipeline with a few records if you are + setting up a complex analysis using several biopieces. + That way you can inspect that all goes well before analyzing and waiting + for the full data set. + All of the read_<type> biopieces have the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num switch which will take a number as argument and only that number of + records will be read. + So to read in the first 10 FASTA entries from a file: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna --num=10 +\end_layout + +\begin_layout Standard +Another way of doing this is to use +\series bold +head_records +\series default + will limit the stream to show the first 10 records (default): +\end_layout + +\begin_layout LyX-Code +... + | head_records +\end_layout + +\begin_layout Standard +Using +\series bold +head_records +\series default + directly after one of the read_<type> biopieces will be a lot slower than + using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num switch with the read_<type> biopieces, however, +\series bold +head_records +\series default + can also be used to limit the output from all the other biopieces. + It is also possible to give +\series bold +head_records +\series default + a number of records to show using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num switch. + So to display the first 100 records do: +\end_layout + +\begin_layout LyX-Code +... + | head_records --num=100 +\end_layout + +\begin_layout Subsection +How to select random records? +\begin_inset LatexCommand label +name "sub:How-to-select-random-records" + +\end_inset + + +\end_layout + +\begin_layout Standard +If you want to inspect a number of random records from the stream this can + be done with the +\series bold +random_records +\series default + biopiece. + So if you have 1 mio records in the stream and you want to select 1000 + random records do: +\end_layout + +\begin_layout LyX-Code +... + | random_records --num=1000 +\end_layout + +\begin_layout Subsection +How to count all records in the data stream? +\end_layout + +\begin_layout Standard +To count all the records in the data stream use +\series bold +count_records +\series default +, which adds one record (which is not included in the count) to the data + stream. + So to count the number of sequences in a FASTA file you can do this: +\end_layout + +\begin_layout LyX-Code +cat test.fna | read_fasta | count_records --no_stream +\end_layout + +\begin_layout Standard +Which will write the last record containing the count to 'stdout': +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_records: 630 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +--- +\end_layout + +\begin_layout Standard +It is also possible to write the count to file using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out switch. +\end_layout + +\begin_layout Subsection +How to get the length of record values? +\begin_inset LatexCommand label +name "sub:How-to-get-value_length" + +\end_inset + + +\end_layout + +\begin_layout Standard +Use the +\series bold +length_vals +\series default + biopiece to get the length of each value for a comma separated list of + keys: +\end_layout + +\begin_layout LyX-Code +... + | length_vals --keys=HIT,PATTERN +\end_layout + +\begin_layout Subsection +How to grab specific records? +\begin_inset LatexCommand label +name "sub:How-to-grab" + +\end_inset + + +\end_layout + +\begin_layout Standard +The biopiece +\series bold +grab +\series default + is related to the Unix grep and locates records based on matching keys + and/or values using either a pattern, a Perl regex, or a numerical evaluation. + To easily +\series bold +grab +\series default + all records in the stream that has any mentioning of the pattern 'human' + just pipe the data stream through +\series bold +grab +\series default + like this: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human +\end_layout + +\begin_layout Standard +This will search for the pattern 'human' in all keys and all values. + The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern switch takes a comma separated list of patterns, so in order to + match multiple patterns do: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human,mouse +\end_layout + +\begin_layout Standard +It is also possible to use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in switch instead of +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern. + +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in is used to read a file with one pattern per line: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern_in=patterns.txt +\end_layout + +\begin_layout Standard +If you want the opposite result --- to find all records that does not match + the patterns, add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +invert switch, which not only works with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern switch, but also with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +regex and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +eval: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human --invert +\end_layout + +\begin_layout Standard +If you want to search the record keys only, +\emph on +e.g. + +\emph default + to find all records containing the key SEQ you can add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys_only switch. + This will prevent matching of SEQ in any record value, and in fact SEQ + is a not uncommon peptide sequence you could get an unwanted record. + Also, this will give an increase in speed since only the keys are searched: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=SEQ --keys_only +\end_layout + +\begin_layout Standard +However, if you are interested in finding the peptide sequence SEQ and not + the SEQ key, just add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +vals_only switch instead: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=SEQ --vals_only +\end_layout + +\begin_layout Standard +Also, if you want to grab for certain key/value pairs you can supply a comma + separated list of keys whos values will then be searched using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys switch. + This is handy if your records contain large genomic sequences and you dont + want to search the entire sequence for +\emph on +e.g. + +\emph default + the organism name --- it is much faster to tell +\series bold +grab +\series default + which keys to search the value for: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human --keys=SEQ_NAME +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout Standard +It is also possible to invoke flexible matching using regex (regular expressions +) instead of simple pattern matching. + In +\series bold +grab +\series default + the regex engine is Perl based and allows use of different type of wild + cards, alternatives, +\emph on +etc +\emph default + +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://perldoc.perl.org/perlreref.html" + +\end_inset + + +\end_layout + +\end_inset + +. + If you want to +\series bold +grab +\series default + records withs the sequence ATCG or GCTA you can do this: +\end_layout + +\begin_layout LyX-Code +... + | grab --regex='ATCG|GCTA' +\end_layout + +\begin_layout Standard +Or if you want to find sequences beginning with ATCG: +\end_layout + +\begin_layout LyX-Code +... + | grab --regex='^ATCG' +\end_layout + +\begin_layout Standard +You can also use +\series bold +grab +\series default + to locate records that fulfill a numerical property using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +eval switch witch takes an expression in three parts. + The first part is the key that holds the value we want to evaluate, the + second part holds one the six operators: +\end_layout + +\begin_layout Enumerate +Greater than: > +\end_layout + +\begin_layout Enumerate +Greater than or equal to: >= +\end_layout + +\begin_layout Enumerate +Less than: < +\end_layout + +\begin_layout Enumerate +Less than or equal to: <= +\end_layout + +\begin_layout Enumerate +Equal to: = +\end_layout + +\begin_layout Enumerate +Not equal to: != +\end_layout + +\begin_layout Enumerate +String wise equal to: eq +\end_layout + +\begin_layout Enumerate +String wise not equal to: ne +\end_layout + +\begin_layout Standard +And finally comes the number used in the evaluation. + So to +\series bold +grab +\series default + all records with a sequence length greater than 30: +\end_layout + +\begin_layout LyX-Code +... + length_seq | grab --eval='SEQ_LEN > 30' +\end_layout + +\begin_layout Standard +If you want to locate all records containing the pattern 'human' and where + the sequence length is greater that 30, you do this by running the stream + through +\series bold +grab +\series default + twice: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern='human' | length_seq | grab --eval='SEQ_LEN > 30' +\end_layout + +\begin_layout Standard +Finally, it is possible to do fast matching of expressions from a file using + the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +exact switch. + Each of these expressions has to be matched exactly over the entrie length, + which if useful if you have a file with accession numbers, that you want + to locate in the stream: +\end_layout + +\begin_layout LyX-Code +... + | grab --exact acc_no.txt | ... +\end_layout + +\begin_layout Standard +Using +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +exact is much faster than using +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in, because with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +exact the expression has to be complete matches, where +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in looks for subpatterns. +\end_layout + +\begin_layout Standard +NB! To get the best speed performance, use the most restrictive +\series bold +grab +\series default + first. +\end_layout + +\begin_layout Subsection +How to remove keys from records? +\end_layout + +\begin_layout Standard +To remove one or more specific keys from all records in the data stream + use +\series bold +remove_keys +\series default + like this: +\end_layout + +\begin_layout LyX-Code +... + | remove_keys --keys=SEQ,SEQ_NAME +\end_layout + +\begin_layout Standard +In the above example SEQ and SEQ_NAME will be removed from all records if + they exists in these. + If all keys are removed from a record, then the record will be removed. +\end_layout + +\begin_layout Subsection +How to rename keys in records? +\end_layout + +\begin_layout Standard +Sometimes you want to rename a record key, +\emph on +e.g. + +\emph default + if you have read in a two column table with sequence name and sequence + in each column (see +\begin_inset LatexCommand ref +reference "sub:How-to-read-table" + +\end_inset + +) without specifying the key names, then the sequence name will be called + V0 and the sequence V1 as default in the +\series bold +read_tab +\series default + biopiece. + To rename the V0 and V1 keys we need to run the stream through +\series bold +rename_keys +\series default + twice (one for each key to rename): +\end_layout + +\begin_layout LyX-Code +... + | rename_keys --keys=V0,SEQ_NAME | rename_keys --keys=V1,SEQ +\end_layout + +\begin_layout Standard +The first instance of +\series bold +rename_keys +\series default + replaces all the V0 keys with SEQ_NAME, and the second instance of +\series bold +rename_keys +\series default + replaces all the V1 keys with SEQ. + +\emph on +Et viola +\emph default + the data can now be used in the biopieces that requires these keys. +\end_layout + +\begin_layout Section +Manipulating Sequences +\end_layout + +\begin_layout Subsection +How to get sequence lengths? +\end_layout + +\begin_layout Standard +The length for sequences in records can be determined with +\series bold +length_seq +\series default +, which adds the key SEQ_LEN to each record with the sequence length as + the value. + It also generates an extra record that is emitted last with the key TOTAL_SEQ_L +EN showing the total length of all the sequences. +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_seq +\end_layout + +\begin_layout Standard +It is also possible to determine the sequence length using the generic tool + +\series bold +length_vals +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-get-value_length" + +\end_inset + +, which determines the length of the values for a given list of keys: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_vals --keys=SEQ +\end_layout + +\begin_layout Standard +To obtain the total length of all sequences use +\series bold +sum_vals +\series default + like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_vals --keys=SEQ +\end_layout + +\begin_layout LyX-Code +| sum_vals --keys=SEQ_LEN +\end_layout + +\begin_layout Standard +The biopiece +\series bold +analyze_seq +\series default + will also determine the length of each sequence (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-analyze" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to analyze sequence composition? +\begin_inset LatexCommand label +name "sub:How-to-analyze" + +\end_inset + + +\end_layout + +\begin_layout Standard +If you want to find out the sequence type, composition, length, as well + as GC content, indel content and proportions of soft and hard masked sequence, + then use +\series bold +analyze_seq +\series default +. + This handy biopiece will determine all these things per sequence from which + it is easy to get an overview using the +\series bold +write_tab +\series default + biopiece to output a table (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-tab" + +\end_inset + +). + So in order to determine the sequence composition of a FASTA file with + just one entry containing the sequence 'ATCG' we just read the data with + +\series bold +read_fasta +\series default + and run the output through +\series bold +analyze_seq +\series default + which will add the analysis to the record like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq ... +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:D: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +MIX_INDEX: 0.55 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:W: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:G: 16 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SOFT_MASK%: 63.75 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:B: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:V: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +HARD_MASK%: 0.00 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:H: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:S: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:N: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:.: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +GC%: 35.00 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:A: 8 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:Y: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:M: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:T: 44 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SEQ_TYPE: DNA +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:K: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:~: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SEQ: TTTCAGTTTGGGACGGAGTAAGGCCTTCCtttttttttttttttttttttttttttttgagaccgagtcttgctc +tgtcg +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SEQ_LEN: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +80 RES:R: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:C: 12 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:-: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:U: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +--- +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout Standard +Now to make a table of how may As, Ts, Cs, and Gs you can add the following: +\end_layout + +\begin_layout LyX-Code +... + | analyze_seq | write_tab --keys=RES:A,RES:T,RES:C,RES:G +\end_layout + +\begin_layout Standard +Or if you want to see the proportions of hard and soft masked sequence: +\end_layout + +\begin_layout LyX-Code +... + | analyse_seq | write_tab --keys=HARD_MASK%,SOFT_MASK% +\end_layout + +\begin_layout Standard +If you have a stack of sequences in one file and you want to determine the + mean GC content you can do it using the +\series bold +mean_vals +\series default + biopiece: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq | mean_vals --keys=GC% +\end_layout + +\begin_layout Standard +Or if you want the total count of Ns you can use +\series bold +sum_vals +\series default + like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq | sum_vals --keys=RES:N +\end_layout + +\begin_layout Standard +The MIX_INDEX key is calculated as the count of the most common residue + over the sequence length, and can be used as a cut-off for removing sequence + tags consisting of mostly one nucleotide: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq | grab --eval='MIX_INDEX<0.85' +\end_layout + +\begin_layout Subsection +How to extract subsequences? +\begin_inset LatexCommand label +name "sub:How-to-extract" + +\end_inset + + +\end_layout + +\begin_layout Standard +In order to extract a subsequence from a longer sequence use the biopiece + extract_seq, which will replace the sequence in the record with the subsequence + (this behaviour should probably be modified to be dependant of a +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +replace or a +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_replace switch +\begin_inset Note Note +status collapsed + +\begin_layout Standard +also in split_seq +\end_layout + +\end_inset + +). + So to extract the first 20 residues from all sequences do (first residue + is designated 1): +\end_layout + +\begin_layout LyX-Code +... + | extract_seq --beg=1 --len=20 +\end_layout + +\begin_layout Standard +You can also specify a begin and end coordinate set: +\end_layout + +\begin_layout LyX-Code +... + | extract_seq --beg=20 --end=40 +\end_layout + +\begin_layout Standard +If you want the subsequences from position 20 to the sequence end do: +\end_layout + +\begin_layout LyX-Code +... + | extract_seq --beg=20 +\end_layout + +\begin_layout Standard +If you want to extract subsequences a given distance from the sequence end + you can do this by reversing the sequence with the biopiece +\series bold +reverse_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-reverse-seq" + +\end_inset + +, followed by +\series bold +extract_seq +\series default + to get the subsequence, and then +\series bold +reverse_seq +\series default + again to get the subsequence back in the original orientation: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | reverse_seq +\end_layout + +\begin_layout LyX-Code +| extract_seq --beg=10 --len=10 | reverse_seq +\end_layout + +\begin_layout Subsection +How to get genomic sequence? +\begin_inset LatexCommand label +name "sub:How-to-get-genomic-sequence" + +\end_inset + + +\end_layout + +\begin_layout Standard +The biopiece +\series bold +get_genomic_seq +\series default + can extract subsequences for a given genome specified with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +genome switch explicitly using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +beg and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +end/ +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +len switches: +\end_layout + +\begin_layout LyX-Code +get_genome_seq --genome=<genome> --beg=1 --len=100 +\end_layout + +\begin_layout Standard +Alternatively, +\series bold +get_genome_seq +\series default + can be used to append the corresponding sequence to BED, PSL, and BLAST + records: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<BED file> | get_genome_seq --genome=<genome> +\end_layout + +\begin_layout Standard +It is also possible to include flaking sequence using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +flank switch. + So to include 50 nucleotides upstream and 50 nucleotides downstream for + each BED entry do: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<BED file> | get_genome_seq --genome=<genome> --flank=50 +\end_layout + +\begin_layout Subsection +How to upper-case sequences? +\end_layout + +\begin_layout Standard +Sequences can be shifted from lower case to upper case using +\series bold +uppercase_seq +\series default +: +\end_layout + +\begin_layout LyX-Code +... + | uppercase_seq +\end_layout + +\begin_layout Subsection +How to reverse sequences? +\begin_inset LatexCommand label +name "sub:How-to-reverse-seq" + +\end_inset + + +\end_layout + +\begin_layout Standard +The order of residues in a sequence can be reversed using reverse_seq: +\end_layout + +\begin_layout LyX-Code +... + | reverse_seq +\end_layout + +\begin_layout Standard +Note that in order to reverse/complement a sequence you also need the +\series bold +complement_seq +\series default + biopiece (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-complement" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to complement sequences? +\begin_inset LatexCommand label +name "sub:How-to-complement" + +\end_inset + + +\end_layout + +\begin_layout Standard +DNA and RNA sequences can be complemented with +\series bold +complement_seq +\series default +, which automagically determines the sequence type: +\end_layout + +\begin_layout LyX-Code +... + | complement_seq +\end_layout + +\begin_layout Standard +Note that in order to reverse/complement a sequence you also need the +\series bold +reverse_seq +\series default + biopiece (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-reverse-seq" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to remove indels from sequnces? +\end_layout + +\begin_layout Standard +Indels can be removed from sequences with the +\series bold +remove_indels +\series default + biopiece. + This is useful if you have aligned some sequences (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-align" + +\end_inset + +) and extracted (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-extract" + +\end_inset + +) a block of subsequences from the alignment and you want to use these sequence + in a search where you need to remove the indels first. + '-', '~', and '.' are considered indels: +\end_layout + +\begin_layout LyX-Code +... + | remove_indels +\end_layout + +\begin_layout Subsection +How to shuffle sequences? +\end_layout + +\begin_layout Standard +All residues in sequences in the stream can be shuffled to random positions + using the +\series bold +shuffle_seq +\series default + biopiece: +\end_layout + +\begin_layout LyX-Code +... + | shuffle_seq +\end_layout + +\begin_layout Subsection +How to split sequences into overlapping subsequences? +\end_layout + +\begin_layout Standard +Sequences can be slit into overlapping subsequences with the +\series bold +split_seq +\series default + biopiece. +\end_layout + +\begin_layout LyX-Code +... + | split_seq --word_size=20 --uniq +\end_layout + +\begin_layout Subsection +How to determine the oligo frequency? +\end_layout + +\begin_layout Standard +In order to determine if any oligo usage is over represented in one or more + sequences you can determine the frequency of oligos of a given size with + +\series bold +oligo_freq +\series default +: +\end_layout + +\begin_layout LyX-Code +... + | oligo_freq --word_size=4 +\end_layout + +\begin_layout Standard +And if you have more than one sequence and want to accumulate the frequences + you need the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +all switch: +\end_layout + +\begin_layout LyX-Code +... + | oligo_freq --word_size=4 --all +\end_layout + +\begin_layout Standard +To get a meaningful result you need to write the resulting frequencies as + a table with +\series bold +write_tab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-tab" + +\end_inset + +), but first it is important to +\series bold +grab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-grab" + +\end_inset + +) the records with the frequencies to avoid full length sequences in the + table: +\end_layout + +\begin_layout LyX-Code +... + | oligo_freq --word_size=4 --all | grab --pattern=OLIGO --keys_only +\end_layout + +\begin_layout LyX-Code +| write_tab --no_stream +\end_layout + +\begin_layout Standard +And the resulting frequency table can be sorted with Unix sort (man sort). +\end_layout + +\begin_layout Subsection +How to search for sequences in genomes? +\end_layout + +\begin_layout Standard +See the following biopiece: +\end_layout + +\begin_layout Itemize + +\series bold +patscan_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-patscan" + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +blat_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAT" + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +blast_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAST" + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +vmatch_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-Vmatch" + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to search sequences for a pattern? +\begin_inset LatexCommand label +name "sub:How-to-use-patscan" + +\end_inset + + +\end_layout + +\begin_layout Standard +It is possible to search sequences in the data stream for patterns using + the +\series bold +patscan_seq +\series default + biopiece which utilizes the powerful scan_for_matches engine. + Consult the documentation for scan_for_matches in order to learn how to + define patterns (the documentation is included in Appendix\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sec:scan_for_matches-README" + +\end_inset + +). +\end_layout + +\begin_layout Standard +To search all sequences for a simple pattern consisting of the sequence + ATCGATCG allowing for 3 mismatches, 2 insertions and 1 deletion: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | patscan_seq --pattern='ATCGATCG[3,2,1]' +\end_layout + +\begin_layout Standard +The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern switch takes a comma seperated list of patterns, so if you want + to search for more that one pattern do: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern='ATCGATCG[3,2,1],GCTAGCTA[3,2,1]' +\end_layout + +\begin_layout Standard +It is also possible to have a list of different patterns to search for in + a file with one pattern per line. + In order to get +\series bold +patscan_seq +\series default + to read these patterns use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in switch: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern_in=<file> +\end_layout + +\begin_layout Standard +To also scan the complementary strand in nucleotide sequences ( +\series bold +patscan_seq +\series default + automagically determines the sequence type) you need to add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +comp switch: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern=<pattern> --comp +\end_layout + +\begin_layout Standard +It is also possible to use +\series bold +patscan_seq +\series default + to output those records that does not contain a certain pattern by using + the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +invert switch: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern=<pattern> --invert +\end_layout + +\begin_layout Standard +Finally, +\series bold +patscan_seq +\series default + can also scan for patterns in a given genome sequence, instead of sequences + in the stream, using the +\begin_inset ERT +status open + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +genome switch: +\end_layout + +\begin_layout LyX-Code +patscan --pattern=<pattern> --genome=<genome> +\end_layout + +\begin_layout Subsection +How to use BLAT for sequence search? +\begin_inset LatexCommand label +name "sub:How-to-use-BLAT" + +\end_inset + + +\end_layout + +\begin_layout Standard +Sequences in the data stream can be matched against supported genomes using + +\series bold +blat_seq +\series default + which is a biopiece using BLAT as the name might suggest. + Currently only Mouse and Human genomes are available and it is not possible + to use OOC files since there is still a need for a local repository for + genome files. + Otherwise it is just: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | blat_seq --genome=<genome> +\end_layout + +\begin_layout Standard +The search results can then be written to file with +\series bold +write_psl +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-PSL" + +\end_inset + +) or +\series bold +write_bed +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-BED" + +\end_inset + +) allthough with +\series bold +write_bed +\series default + some information will be lost). + It is also possible to plot chromosome distribution of the search results + using +\series bold +plot_chrdist +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-plot-chrdist" + +\end_inset + +) or the distribution of the match lengths using +\series bold +plot_lendist +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-plot-lendist" + +\end_inset + +) or a karyogram with the hits using +\series bold +plot_karyogram +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-plot-karyogram" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to use BLAST for sequence search? +\begin_inset LatexCommand label +name "sub:How-to-use-BLAST" + +\end_inset + + +\end_layout + +\begin_layout Standard +Two biopieces exist for blasting sequences: +\series bold +create_blast_db +\series default + is used to create the BLAST database required for BLAST which is queried + using the biopiece +\series bold +blast_seq +\series default +. + So in order to create a BLAST database from sequences in the data stream + you simple run: +\end_layout + +\begin_layout LyX-Code +... + | create_blast_db --database=my_database --no_stream +\end_layout + +\begin_layout Standard +The type of sequence to use for the database is automagically determined + by +\series bold +create_blast_db +\series default +, but don't have a mixture of peptide and nucleic acids sequences in the + stream. + The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +database switch takes a path as argument, but will default to 'blastdb_<time_sta +mp> if not set. +\end_layout + +\begin_layout Standard +The resulting database can now be queried with sequences in another data + stream using +\series bold +blast_seq +\series default +: +\end_layout + +\begin_layout LyX-Code +... + | blast_seq --database=my_database +\end_layout + +\begin_layout Standard +Again, the sequence type is determined automagically and the appropriate + BLAST program is guessed (see below table), however, the program name can + be overruled with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +program switch. +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular +<lyxtabular version="3" rows="5" columns="3"> +<features> +<column alignment="center" valignment="top" width="0"> +<column alignment="center" valignment="top" width="0"> +<column alignment="center" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Subject sequence +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Query sequence +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Program guess +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +blastn +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +blastp +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +blastx +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +tblastn +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\end_layout + +\begin_layout Standard +Finally, it is also possible to use +\series bold +blast_seq +\series default + for blasting sequences agains a preformatted genome using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +genome switch instead of the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +database switch: +\end_layout + +\begin_layout LyX-Code +... + | blast_seq --genome=<genome> +\end_layout + +\begin_layout Subsection +How to use Vmatch for sequence search? +\begin_inset LatexCommand label +name "sub:How-to-use-Vmatch" + +\end_inset + + +\end_layout + +\begin_layout Standard +The powerful suffix array software package Vmatch +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.vmatch.de/" + +\end_inset + + +\end_layout + +\end_inset + + can be used for exact mapping of sequences against indexed genomes using + the biopiece +\series bold +vmatch_seq +\series default +, which will e.g. + map 700000 ESTs to the human genome locating all 160 mio hits in less than + an hour. + Only nucleotide sequences and sequences longer than 11 nucleotides will + be mapped. + It is recommended that sequences consisting of mostly one nucleotide type + are removed. + This can be done with the +\series bold +analyze_seq +\series default + biopiece +\begin_inset LatexCommand eqref +reference "sub:How-to-analyze" + +\end_inset + +. +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> +\end_layout + +\begin_layout Standard +It is also possible to allow for mismatches using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +hamming_dist switch. + So to allow for 2 mismatches: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=2 +\end_layout + +\begin_layout Standard +Or to allow for 10% mismathing nucleotides: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=10p +\end_layout + +\begin_layout Standard +To allow both indels and mismatches use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +edit_dist switch. + So to allow for one mismatch or one indel: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=1 +\end_layout + +\begin_layout Standard +Or to allow for 5% indels or mismatches: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=5p +\end_layout + +\begin_layout Standard +Note that using +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +hamming_dist or +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +edit_dist greatly slows down vmatch considerably --- use with care. +\end_layout + +\begin_layout Standard +The resulting SCORE key can be replaced to hold the number of genome matches + of a given sequence (multi-mappers) is the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +count switch is given. +\end_layout + +\begin_layout Subsection +How to find all matches between sequences? +\begin_inset LatexCommand label +name "sub:How-to-find-matches" + +\end_inset + + +\end_layout + +\begin_layout Standard +All matches between two sequences can be determined with the biopiece +\series bold +match_seq +\series default +. + The match finding engine underneath the hood of +\series bold +match_seq +\series default + is the super fast suffix tree program MUMmer +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://mummer.sourceforge.net/" + +\end_inset + + +\end_layout + +\end_inset + +, which will locate all forward and reverse matches between huge sequences + in a matter of minutes (if the repeat count is not too high and if the + word size used is appropriate). + Matching two +\emph on +Helicobacter pylori +\emph default + genomes (1.7Mbp) takes around 10 seconds: +\end_layout + +\begin_layout LyX-Code +... + | match_seq --word_size=20 --direction=both +\end_layout + +\begin_layout Standard +The output from +\series bold +match_seq +\series default + can be used to generate a dot plot with +\series bold +plot_matches +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-generate-dotplot" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to align sequences? +\begin_inset LatexCommand label +name "sub:How-to-align" + +\end_inset + + +\end_layout + +\begin_layout Standard +Sequences in the stream can be aligned with the +\series bold +align_seq +\series default + biopiece that uses Muscle +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.drive5.com/muscle/muscle.html" + +\end_inset + + +\end_layout + +\end_inset + + as aligment engine. + Currently you cannot change any of the Muscle alignment parameters and + +\series bold +align_seq +\series default + will create an alignment based on the defaults (which are really good!): +\end_layout + +\begin_layout LyX-Code +... + | align_seq +\end_layout + +\begin_layout Standard +The aligned output can be written to file in FASTA format using +\series bold +write_fasta +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-fasta" + +\end_inset + +) or in pretty text using +\series bold +write_align +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-alignment" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to create a weight matrix? +\end_layout + +\begin_layout Standard +If you want a weight matrix to show the sequence composition of a stack + of sequences you can use the biopiece create_weight_matrix: +\end_layout + +\begin_layout LyX-Code +... + | create_weight_matrix +\end_layout + +\begin_layout Standard +The result can be output in percent using the +\begin_inset ERT +status open + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +percent switch: +\end_layout + +\begin_layout LyX-Code +... + | create_weight_matrix --percent +\end_layout + +\begin_layout Standard +The weight matrix can be written as tabular output with +\series bold +write_tab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-tab" + +\end_inset + +) after removeing the records containing SEQ with +\series bold +grab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-grab" + +\end_inset + +): +\end_layout + +\begin_layout LyX-Code +... + | create_weight_matrix | grab --invert --keys=SEQ --keys_only +\end_layout + +\begin_layout LyX-Code +| write_tab --no_stream +\end_layout + +\begin_layout Standard +The V0 column will hold the residue, while the rest of the columns will + hold the frequencies for each sequence position. +\end_layout + +\begin_layout Section +Plotting +\end_layout + +\begin_layout Standard +There exists several biopieces for plotting. + Some of these are based on GNUplot +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.gnuplot.info/" + +\end_inset + + +\end_layout + +\end_inset + +, which is an extremely powerful platform to generate all sorts of plots + and even though GNUplot has quite a steep learning curve, the biopieces + utilizing GNUplot are simple to use. + GNUplot is able to output a lot of different formats (called terminals + in GNUplot), but the biopieces focusses on three formats only: +\end_layout + +\begin_layout Enumerate +The 'dumb' terminal is default to the GNUplot based biopieces and will output + a plot in crude ASCII text (Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Dumb-terminal" + +\end_inset + +). + This is quite nice for a quick and dirty plot to get an overview of your + data . +\end_layout + +\begin_layout Enumerate +The 'post' or 'postscript' terminal output postscript code which is publication + grade graphics that can be viewed with applications such as Ghostview, + Photoshop, and Preview. +\end_layout + +\begin_layout Enumerate +The 'svg' terminal output's scalable vector graphics (SVG) which is a vector + based format. + SVG is great because you can edit the resulting plot using Photoshop or + Inkscape +\begin_inset Foot +status collapsed + +\begin_layout Standard +Inkscape is a really handy drawing program that is free and open source. + Availble at +\begin_inset LatexCommand htmlurl +target "http://www.inkscape.org" + +\end_inset + + +\end_layout + +\end_inset + + if you want to add additional labels, captions, arrows, and so on and then + save the result in different formats, such as postscript without loosing + resolution. +\end_layout + +\begin_layout Standard +The biopieces for plotting that are not based on GNUplot only output SVG + (that may change in the future). +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename lendist_ascii.png + lyxscale 70 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Dumb-terminal" + +\end_inset + +Dumb terminal +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +The output of a length distribution plot in the default 'dumb terminal' + to the terminal window. + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a histogram? +\begin_inset LatexCommand label +name "How-to-plot-histogram" + +\end_inset + + +\end_layout + +\begin_layout Standard +A generic histogram for a given value can be plotted with the biopiece +\series bold +plot_histogram +\series default + (Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Histogram" + +\end_inset + +): +\end_layout + +\begin_layout LyX-Code +... + | plot_histogram --key=TISSUE --no_stream +\end_layout + +\begin_layout Standard +(Figure missing) +\end_layout + +\begin_layout Standard +\noindent +\align left +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename histogram.png + lyxscale 70 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Histogram" + +\end_inset + +Histogram +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a length distribution? +\begin_inset LatexCommand label +name "sub:How-to-plot-lendist" + +\end_inset + + +\end_layout + +\begin_layout Standard +Plotting of length distributions, weather sequence lengths, patterns lengths, + hit lengths, +\emph on +etc. + +\emph default + is a really handy thing and can be done with the the biopiece +\series bold +plot_lendist +\series default +. + If you have a file with FASTA entries and want to plot the length distribution + you do it like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_seq +\end_layout + +\begin_layout LyX-Code +| plot_lendist --key=SEQ_LEN --no_stream +\end_layout + +\begin_layout Standard +The result will be written to the default dumb terminal and will look like + Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Dumb-terminal" + +\end_inset + +. +\end_layout + +\begin_layout Standard +If you instead want the result in postscript format you can do: +\end_layout + +\begin_layout LyX-Code +... + | plot_lendist --key=SEQ_LEN --terminal=post --result_out=file.ps +\end_layout + +\begin_layout Standard +That will generate the plot and save it to file, but not interrupt the data + stream which can then be used in further analysis. + You can also save the plot implicetly using '>', however, it is then important + to terminate the stream with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch: +\end_layout + +\begin_layout LyX-Code +... + | plot_lendist --key=SEQ_LEN --terminal=post --no_stream > file.ps +\end_layout + +\begin_layout Standard +The resulting plot can be seen in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Length-distribution" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename lendist.ps + lyxscale 50 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Length-distribution" + +\end_inset + +Length distribution +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +Length distribution of 630 piRNA like RNAs. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a chromosome distribution? +\begin_inset LatexCommand label +name "sub:How-to-plot-chrdist" + +\end_inset + + +\end_layout + +\begin_layout Standard +If you have the result of a sequence search against a multi chromosome genome, + it is very practical to be able to plot the distribution of search hits + on the different chromosomes. + This can be done with +\series bold +plot_chrdist +\series default +: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | blat_genome | plot_chrdist --no_stream +\end_layout + +\begin_layout Standard +The above example will result in a crude plot using the 'dumb' terminal, + and if you want to mess around with the results from the BLAT search you + probably want to save the result to file first (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-PSL" + +\end_inset + +). + To plot the chromosome distribution from the saved search result you can + do: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=file.bed | plot_chrdist --terminal=post --result_out=plot.ps +\end_layout + +\begin_layout Standard +That will result in the output show in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Chromosome-distribution" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename chrdist.ps + lyxscale 50 + width 12cm + rotateAngle 90 + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Chromosome-distribution" + +\end_inset + +Chromosome distribution +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to generate a dotplot? +\begin_inset LatexCommand label +name "sub:How-to-generate-dotplot" + +\end_inset + + +\end_layout + +\begin_layout Standard +A dotplot is a powerful way to get an overview of the size and location + of sequence insertions, deletions, and duplications between two sequences. + Generating a dotplot with biopieces is a two step process where you initially + find all matches between two sequences using the tool +\series bold +match_seq +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-find-matches" + +\end_inset + +) and plot the resulting matches with +\series bold +plot_matches +\series default +. + Matching and plotting two +\emph on +Helicobacter pylori +\emph default + genomes (1.7Mbp) takes around 10 seconds: +\end_layout + +\begin_layout LyX-Code +... + | match_seq | plot_matches --terminal=post --result_out=plot.ps +\end_layout + +\begin_layout Standard +The resulting dotplot is in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Dotplot" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename dotplot.ps + lyxscale 50 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Dotplot" + +\end_inset + +Dotplot +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +Forward matches are displayed in green while reverse matches are displayed + in red. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a sequence logo? +\end_layout + +\begin_layout Standard +Sequence logos can be generate with +\series bold +plot_seqlogo +\series default +. + The sequnce type is determined automagically and an entropy scale of 2 + bits and 4 bits is used for nucleotide and peptide sequences, respectively +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand htmlurl +target "http://www.ccrnp.ncifcrf.gov/~toms/paper/hawaii/latex/node5.html" + +\end_inset + + +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout LyX-Code +... + | plot_seqlogo --no_stream --result_out=seqlogo.svg +\end_layout + +\begin_layout Standard +An example of a sequence logo can be seen in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Sequence-logo" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename seqlogo.png + lyxscale 50 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Sequence-logo" + +\end_inset + +Sequence logo +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a karyogram? +\begin_inset LatexCommand label +name "sub:How-to-plot-karyogram" + +\end_inset + + +\end_layout + +\begin_layout Standard +To plot search hits on genomes use +\series bold +plot_karyogram +\series default +, which will output a nice karyogram in SVG graphics: +\end_layout + +\begin_layout LyX-Code +... + | plot_karyogram --result_out=karyogram.svg +\end_layout + +\begin_layout Standard +The banding data is taken from the UCSC genome browser database and currently + only Human and Mouse is supported. + Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Karyogram" + +\end_inset + + shows the distribution of piRNA like RNAs matched to the Human genome. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename karyogram.png + lyxscale 35 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Karyogram" + +\end_inset + +Karyogram +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +Hits from a search of piRNA like RNAs in the Human genome is displayed as + short horizontal bars. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Uploading Results +\end_layout + +\begin_layout Subsection +How do I display my results in the UCSC Genome Browser? +\end_layout + +\begin_layout Standard +Results from the list of biopieces below can be uploaded directly to a local + mirror of the UCSC Genome Browser using the biopiece +\series bold +upload_to_ucsc +\series default +: +\end_layout + +\begin_layout Itemize +patscan_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-patscan" + +\end_inset + + +\end_layout + +\begin_layout Itemize +blat_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAT" + +\end_inset + + +\end_layout + +\begin_layout Itemize +blast_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAST" + +\end_inset + + +\end_layout + +\begin_layout Itemize +vmatch_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-Vmatch" + +\end_inset + + +\end_layout + +\begin_layout Standard +The syntax for uploading data the most simple way requires two mandatory + switches: +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +database, which is the UCSC database name (such as hg18, mm9, etc.) and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +table which should be the users initials followed by an underscore and a + short description of the data: +\end_layout + +\begin_layout LyX-Code +... + | upload_to_ucsc --database=hg18 --table=mah_snoRNAs +\end_layout + +\begin_layout Standard +The +\series bold +upload_to_ucsc +\series default + biopiece modifies the users ~/ucsc/my_tracks.ra file automagically (a backup + is created with the name ~/ucsc/my_tracks.ra~) with default values that + can be overridden using the following switches: +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +short_label - Short label for track - Default=database->table +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +long_label - Long label for track - Default=database->table +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +group - Track group name - Default=<user name as defined in env> +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +priority - Track display priority - Default=1 +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +color - Track color - Default=147,73,42 +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +chunk_size - Chunks for loading - Default=10000000 +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +visibility - Track visibility - Default=pack +\end_layout + +\begin_layout Standard +Also, data in BED or PSL format can be uploaded with +\series bold +upload_to_ucsc +\series default + as long as these reference to genomes and chromosomes existing in the UCSC + Genome Browser: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<bed file> | upload_to_ucsc ... +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code +read_psl --data_in=<psl file> | upload_to_ucsc ... +\end_layout + +\begin_layout Section +Power Scripting +\end_layout + +\begin_layout Standard +It is possible to do commandline scripting of biopiece records using Perl. + Because a biopiece record essentially is a hash structure, you can pass + records to +\series bold +bioscript +\series default + command, which is a wrapper around the Perl executable that allows direct + manipulations of the records using the power of Perl. +\end_layout + +\begin_layout Standard +In the below example we replace in all records the value to the CHR key + with a forthrunning number: +\end_layout + +\begin_layout LyX-Code +... + | bioscript 'while($r=get_record( +\backslash +*STDIN)){$r->{CHR}=$i++; put_record($r)}' +\end_layout + +\begin_layout Standard +Something more useful would probably be to create custom FASTA headers. + E.g. + if we read in a BED file, lookup the genomic sequence, create a custom + FASTA header with +\series bold +bioscript +\series default + and output FASTA entries: +\end_layout + +\begin_layout LyX-Code +... + | bioscript 'while($r=get_record( +\backslash +*STDIN)){$r->{SEQ_NAME}= // +\end_layout + +\begin_layout LyX-Code +join("_",$r->{CHR},$r->{CHR_BEG},$r->{CHR_END}); put_record($r)}' +\end_layout + +\begin_layout Standard +And the output: +\end_layout + +\begin_layout LyX-Code +>chr2L_21567527_21567550 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_693380_693403 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_13859534_13859557 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_9005090_9005113 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_2106825_2106848 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_14649031_14649054 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout Section +Trouble shooting +\end_layout + +\begin_layout Standard +Shoot the messenger! +\end_layout + +\begin_layout Section +\start_of_appendix +Keys +\begin_inset LatexCommand label +name "sec:Keys" + +\end_inset + + +\end_layout + +\begin_layout Standard +HIT +\end_layout + +\begin_layout Standard +HIT_BEG +\end_layout + +\begin_layout Standard +HIT_END +\end_layout + +\begin_layout Standard +HIT_LEN +\end_layout + +\begin_layout Standard +HIT_NAME +\end_layout + +\begin_layout Standard +PATTERN +\end_layout + +\begin_layout Section +Switches +\begin_inset LatexCommand label +name "sec:Switches" + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_in +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_out +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +data_in +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num +\end_layout + +\begin_layout Section +scan_for_matches README +\begin_inset LatexCommand label +name "sec:scan_for_matches-README" + +\end_inset + + +\end_layout + +\begin_layout LyX-Code + scan_for_matches: +\end_layout + +\begin_layout LyX-Code + A Program to Scan Nucleotide or Protein Sequences for Matching Patterns +\end_layout + +\begin_layout LyX-Code + Ross Overbeek +\end_layout + +\begin_layout LyX-Code + MCS +\end_layout + +\begin_layout LyX-Code + Argonne National Laboratory +\end_layout + +\begin_layout LyX-Code + Argonne, IL 60439 +\end_layout + +\begin_layout LyX-Code + USA +\end_layout + +\begin_layout LyX-Code +Scan_for_matches is a utility that we have written to search for +\end_layout + +\begin_layout LyX-Code +patterns in DNA and protein sequences. + I wrote most of the code, +\end_layout + +\begin_layout LyX-Code +although David Joerg and Morgan Price wrote sections of an +\end_layout + +\begin_layout LyX-Code +earlier version. + The whole notion of pattern matching has a rich +\end_layout + +\begin_layout LyX-Code +history, and we borrowed liberally from many sources. + However, it is +\end_layout + +\begin_layout LyX-Code +worth noting that we were strongly influenced by the elegant tools +\end_layout + +\begin_layout LyX-Code +developed and distributed by David Searls. + My intent is to make the +\end_layout + +\begin_layout LyX-Code +existing tool available to anyone in the research community that might +\end_layout + +\begin_layout LyX-Code +find it useful. + I will continue to try to fix bugs and make suggested +\end_layout + +\begin_layout LyX-Code +enhancements, at least until I feel that a superior tool exists. +\end_layout + +\begin_layout LyX-Code +Hence, I would appreciate it if all bug reports and suggestions are +\end_layout + +\begin_layout LyX-Code +directed to me at Overbeek@mcs.anl.gov. + +\end_layout + +\begin_layout LyX-Code +I will try to log all bug fixes and report them to users that send me +\end_layout + +\begin_layout LyX-Code +their email addresses. + I do not require that you give me your name +\end_layout + +\begin_layout LyX-Code +and address. + However, if you do give it to me, I will try to notify +\end_layout + +\begin_layout LyX-Code +you of serious problems as they are discovered. +\end_layout + +\begin_layout LyX-Code +Getting Started: +\end_layout + +\begin_layout LyX-Code + The distribution should contain at least the following programs: +\end_layout + +\begin_layout LyX-Code + README - This document +\end_layout + +\begin_layout LyX-Code + ggpunit.c - One of the two source files +\end_layout + +\begin_layout LyX-Code + scan_for_matches.c - The second source file +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + run_tests - A perl script to test things +\end_layout + +\begin_layout LyX-Code + show_hits - A handy perl script +\end_layout + +\begin_layout LyX-Code + test_dna_input - Test sequences for DNA +\end_layout + +\begin_layout LyX-Code + test_dna_patterns - Test patterns for DNA scan +\end_layout + +\begin_layout LyX-Code + test_output - Desired output from test +\end_layout + +\begin_layout LyX-Code + test_prot_input - Test protein sequences +\end_layout + +\begin_layout LyX-Code + test_prot_patterns - Test patterns for proteins +\end_layout + +\begin_layout LyX-Code + testit - a perl script used for test +\end_layout + +\begin_layout LyX-Code + Only the first three files are required. + The others are useful, +\end_layout + +\begin_layout LyX-Code + but only if you have Perl installed on your system. + If you do +\end_layout + +\begin_layout LyX-Code + have Perl, I suggest that you type +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + which perl +\end_layout + +\begin_layout LyX-Code + to find out where it installed. + On my system, I get the following +\end_layout + +\begin_layout LyX-Code + response: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + clone% which perl +\end_layout + +\begin_layout LyX-Code + /usr/local/bin/perl +\end_layout + +\begin_layout LyX-Code + indicating that Perl is installed in /usr/local/bin. + Anyway, once +\end_layout + +\begin_layout LyX-Code + you know where it is installed, edit the first line of files +\end_layout + +\begin_layout LyX-Code + testit +\end_layout + +\begin_layout LyX-Code + show_hits +\end_layout + +\begin_layout LyX-Code + replacing /usr/local/bin/perl with the appropriate location. + I +\end_layout + +\begin_layout LyX-Code + will assume that you can do this, although it is not critical (it +\end_layout + +\begin_layout LyX-Code + is needed only to test the installation and to use the "show_hits" +\end_layout + +\begin_layout LyX-Code + utility). + Perl is not required to actually install and run +\end_layout + +\begin_layout LyX-Code + scan_for_matches. + +\end_layout + +\begin_layout LyX-Code + If you do not have Perl, I suggest you get it and install it (it +\end_layout + +\begin_layout LyX-Code + is a wonderful utility). + Information about Perl and how to get it +\end_layout + +\begin_layout LyX-Code + can be found in the book "Programming Perl" by Larry Wall and +\end_layout + +\begin_layout LyX-Code + Randall L. + Schwartz, published by O'Reilly & Associates, Inc. +\end_layout + +\begin_layout LyX-Code + To get started, you will need to compile the program. + I do this +\end_layout + +\begin_layout LyX-Code + using +\end_layout + +\begin_layout LyX-Code + gcc -O -o scan_for_matches ggpunit.c scan_for_matches.c +\end_layout + +\begin_layout LyX-Code + If you do not use GNU C, use +\end_layout + +\begin_layout LyX-Code + cc -O -DCC -o scan_for_matches ggpunit.c scan_for_matches.c +\end_layout + +\begin_layout LyX-Code + which works on my Sun. + +\end_layout + +\begin_layout LyX-Code + Once you have compiled scan_for_matches, you can verify that it +\end_layout + +\begin_layout LyX-Code + works with +\end_layout + +\begin_layout LyX-Code + clone% run_tests tmp +\end_layout + +\begin_layout LyX-Code + clone% diff tmp test_output +\end_layout + +\begin_layout LyX-Code + You may get a few strange lines of the sort +\end_layout + +\begin_layout LyX-Code + clone% run_tests tmp +\end_layout + +\begin_layout LyX-Code + rm: tmp: No such file or directory +\end_layout + +\begin_layout LyX-Code + clone% diff tmp test_output +\end_layout + +\begin_layout LyX-Code + These should cause no concern. + However, if the "diff" shows that +\end_layout + +\begin_layout LyX-Code + tmp and test_output are different, contact me (you have a +\end_layout + +\begin_layout LyX-Code + problem). + +\end_layout + +\begin_layout LyX-Code + You should now be able to use scan_for_matches by following the +\end_layout + +\begin_layout LyX-Code + instructions given below (which is all the normal user should have +\end_layout + +\begin_layout LyX-Code + to understand, once things are installed properly). +\end_layout + +\begin_layout LyX-Code + ============================================================== +\end_layout + +\begin_layout LyX-Code +How to run scan_for_matches: +\end_layout + +\begin_layout LyX-Code + To run the program, you type need to create two files +\end_layout + +\begin_layout LyX-Code + 1. + the first file contains the pattern you wish to scan for; I'll +\end_layout + +\begin_layout LyX-Code + call this file pat_file in what follows (but any name is ok) +\end_layout + +\begin_layout LyX-Code + 2. + the second file contains a set of sequences to scan. + These +\end_layout + +\begin_layout LyX-Code + should be in "fasta format". + Just look at the contents of +\end_layout + +\begin_layout LyX-Code + test_dna_input to see examples of this format. + Basically, +\end_layout + +\begin_layout LyX-Code + each sequence begins with a line of the form +\end_layout + +\begin_layout LyX-Code + >sequence_id +\end_layout + +\begin_layout LyX-Code + and is followed by one or more lines containing the sequence. +\end_layout + +\begin_layout LyX-Code + Once these files have been created, you just use +\end_layout + +\begin_layout LyX-Code + scan_for_matches pat_file < input_file +\end_layout + +\begin_layout LyX-Code + to scan all of the input sequences for the given pattern. + As an +\end_layout + +\begin_layout LyX-Code + example, suppose that pat_file contains a single line of the form +\end_layout + +\begin_layout LyX-Code + p1=4...7 3...8 ~p1 +\end_layout + +\begin_layout LyX-Code + Then, +\end_layout + +\begin_layout LyX-Code + scan_for_matches pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + should produce two "hits". + When I run this on my machine, I get +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + >tst1:[6,27] +\end_layout + +\begin_layout LyX-Code + cguaacc ggttaacc gguuacg +\end_layout + +\begin_layout LyX-Code + >tst2:[6,27] +\end_layout + +\begin_layout LyX-Code + CGUAACC GGTTAACC GGUUACG +\end_layout + +\begin_layout LyX-Code + clone% +\end_layout + +\begin_layout LyX-Code +Simple Patterns Built by Matching Ranges and Reverse Complements +\end_layout + +\begin_layout LyX-Code + Let me first explain this simple pattern: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + p1=4...7 3...8 ~p1 +\end_layout + +\begin_layout LyX-Code + The pattern consists of three "pattern units" separated by spaces. +\end_layout + +\begin_layout LyX-Code + The first pattern unit is +\end_layout + +\begin_layout LyX-Code + p1=4...7 +\end_layout + +\begin_layout LyX-Code + which means "match 4 to 7 characters and call them p1". + The +\end_layout + +\begin_layout LyX-Code + second pattern unit is +\end_layout + +\begin_layout LyX-Code + 3...8 +\end_layout + +\begin_layout LyX-Code + which means "then match 3 to 8 characters". + The last pattern unit +\end_layout + +\begin_layout LyX-Code + is +\end_layout + +\begin_layout LyX-Code + ~p1 +\end_layout + +\begin_layout LyX-Code + which means "match the reverse complement of p1". + The first +\end_layout + +\begin_layout LyX-Code + reported hit is shown as +\end_layout + +\begin_layout LyX-Code + >tst1:[6,27] +\end_layout + +\begin_layout LyX-Code + cguaacc ggttaacc gguuacg +\end_layout + +\begin_layout LyX-Code + which states that characters 6 through 27 of sequence tst1 were +\end_layout + +\begin_layout LyX-Code + matched. + "cguaac" matched the first pattern unit, "ggttaacc" the +\end_layout + +\begin_layout LyX-Code + second, and "gguuacg" the third. + This is an example of a common +\end_layout + +\begin_layout LyX-Code + type of pattern used to search for sections of DNA or RNA that +\end_layout + +\begin_layout LyX-Code + would fold into a hairpin loop. +\end_layout + +\begin_layout LyX-Code +Searching Both Strands +\end_layout + +\begin_layout LyX-Code + Now for a short aside: scan_for_matches only searched the +\end_layout + +\begin_layout LyX-Code + sequences in the input file; it did not search the opposite +\end_layout + +\begin_layout LyX-Code + strand. + With a pattern of the sort we just used, there is not +\end_layout + +\begin_layout LyX-Code + need o search the opposite strand. + However, it is normally the +\end_layout + +\begin_layout LyX-Code + case that you will wish to search both the sequence and the +\end_layout + +\begin_layout LyX-Code + opposite strand (i.e., the reverse complement of the sequence). +\end_layout + +\begin_layout LyX-Code + To do that, you would just use the "-c" command line. + For example, +\end_layout + +\begin_layout LyX-Code + scan_for_matches -c pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + Hits on the opposite strand will show a beginning location greater +\end_layout + +\begin_layout LyX-Code + than te end location of the match. +\end_layout + +\begin_layout LyX-Code +Defining Pairing Rules and Allowing Mismatches, Insertions, and Deletions +\end_layout + +\begin_layout LyX-Code + Let us stop now and ask "What additional features would one need to +\end_layout + +\begin_layout LyX-Code + really find the kinds of loop structures that characterize tRNAs, +\end_layout + +\begin_layout LyX-Code + rRNAs, and so forth?" I can immediately think of two: +\end_layout + +\begin_layout LyX-Code + a) you will need to be able to allow non-standard pairings +\end_layout + +\begin_layout LyX-Code + (those other than G-C and A-U), and +\end_layout + +\begin_layout LyX-Code + b) you will need to be able to tolerate some number of +\end_layout + +\begin_layout LyX-Code + mismatches and bulges. +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + Let me first show you how to handle non-standard "rules for +\end_layout + +\begin_layout LyX-Code + pairing in reverse complements". + Consider the following pattern, +\end_layout + +\begin_layout LyX-Code + which I show as two line (you may use as many lines as you like in +\end_layout + +\begin_layout LyX-Code + forming a pattern, although you can only break a pattern at points +\end_layout + +\begin_layout LyX-Code + where space would be legal): +\end_layout + +\begin_layout LyX-Code + r1={au,ua,gc,cg,gu,ug,ga,ag} +\end_layout + +\begin_layout LyX-Code + p1=2...3 0...4 p2=2...5 1...5 r1~p2 0...4 ~p1 +\end_layout + +\begin_layout LyX-Code + The first "pattern unit" does not actually match anything; rather, +\end_layout + +\begin_layout LyX-Code + it defines a "pairing rule" in which standard pairings are +\end_layout + +\begin_layout LyX-Code + allowed, as well as G-A and A-G (in case you wondered, Us and Ts +\end_layout + +\begin_layout LyX-Code + and upper and lower case can be used interchangably; for example +\end_layout + +\begin_layout LyX-Code + r1={AT,UA,gc,cg} could be used to define the "standard rule" for +\end_layout + +\begin_layout LyX-Code + pairings). + The second line consists of six pattern units which +\end_layout + +\begin_layout LyX-Code + may be interpreted as follows: +\end_layout + +\begin_layout LyX-Code + p1=2...3 match 2 or 3 characters (call it p1) +\end_layout + +\begin_layout LyX-Code + 0...4 match 0 to 4 characters +\end_layout + +\begin_layout LyX-Code + p2=2...5 match 2 to 5 characters (call it p2) +\end_layout + +\begin_layout LyX-Code + 1...5 match 1 to 5 characters +\end_layout + +\begin_layout LyX-Code + r1~p2 match the reverse complement of p2, +\end_layout + +\begin_layout LyX-Code + allowing G-A and A-G pairs +\end_layout + +\begin_layout LyX-Code + 0...4 match 0 to 4 characters +\end_layout + +\begin_layout LyX-Code + ~p1 match the reverse complement of p1 +\end_layout + +\begin_layout LyX-Code + allowing only G-C, C-G, A-T, and T-A pairs +\end_layout + +\begin_layout LyX-Code + Thus, r1~p2 means "match the reverse complement of p2 using rule r1". +\end_layout + +\begin_layout LyX-Code + Now let us consider the issue of tolerating mismatches and bulges. +\end_layout + +\begin_layout LyX-Code + You may add a "qualifier" to the pattern unit that gives the +\end_layout + +\begin_layout LyX-Code + tolerable number of "mismatches, deletions, and insertions". +\end_layout + +\begin_layout LyX-Code + Thus, +\end_layout + +\begin_layout LyX-Code + p1=10...10 3...8 ~p1[1,2,1] +\end_layout + +\begin_layout LyX-Code + means that the third pattern unit must match 10 characters, +\end_layout + +\begin_layout LyX-Code + allowing one "mismatch" (a pairing other than G-C, C-G, A-T, or +\end_layout + +\begin_layout LyX-Code + T-A), two deletions (a deletion is a character that occurs in p1, +\end_layout + +\begin_layout LyX-Code + but has been "deleted" from the string matched by ~p1), and one +\end_layout + +\begin_layout LyX-Code + insertion (an "insertion" is a character that occurs in the string +\end_layout + +\begin_layout LyX-Code + matched by ~p1, but not for which no corresponding character +\end_layout + +\begin_layout LyX-Code + occurs in p1). + In this case, the pattern would match +\end_layout + +\begin_layout LyX-Code + ACGTACGTAC GGGGGGGG GCGTTACCT +\end_layout + +\begin_layout LyX-Code + which is, you must admit, a fairly weak loop. + It is common to +\end_layout + +\begin_layout LyX-Code + allow mismatches, but you will find yourself using insertions and +\end_layout + +\begin_layout LyX-Code + deletions much more rarely. + In any event, you should note that +\end_layout + +\begin_layout LyX-Code + allowing mismatches, insertions, and deletions does force the +\end_layout + +\begin_layout LyX-Code + program to try many additional possible pairings, so it does slow +\end_layout + +\begin_layout LyX-Code + things down a bit. +\end_layout + +\begin_layout LyX-Code +How Patterns Are Matched +\end_layout + +\begin_layout LyX-Code + Now is as good a time as any to discuss the basic flow of control +\end_layout + +\begin_layout LyX-Code + when matching patterns. + Recall that a "pattern" is a sequence of +\end_layout + +\begin_layout LyX-Code + "pattern units". + Suppose that the pattern units were +\end_layout + +\begin_layout LyX-Code + u1 u2 u3 u4 ... + un +\end_layout + +\begin_layout LyX-Code + The scan of a sequence S begins by setting the current position +\end_layout + +\begin_layout LyX-Code + to 1. + Then, an attempt is made to match u1 starting at the +\end_layout + +\begin_layout LyX-Code + current position. + Each attempt to match a pattern unit can +\end_layout + +\begin_layout LyX-Code + succeed or fail. + If it succeeds, then an attempt is made to match +\end_layout + +\begin_layout LyX-Code + the next unit. + If it fails, then an attempt is made to find an +\end_layout + +\begin_layout LyX-Code + alternative match for the immediately preceding pattern unit. + If +\end_layout + +\begin_layout LyX-Code + this succeeds, then we proceed forward again to the next unit. + If +\end_layout + +\begin_layout LyX-Code + it fails we go back to the preceding unit. + This process is called +\end_layout + +\begin_layout LyX-Code + "backtracking". + If there are no previous units, then the current +\end_layout + +\begin_layout LyX-Code + position is incremented by one, and everything starts again. + This +\end_layout + +\begin_layout LyX-Code + proceeds until either the current position goes past the end of +\end_layout + +\begin_layout LyX-Code + the sequence or all of the pattern units succeed. + On success, +\end_layout + +\begin_layout LyX-Code + scan_for_matches reports the "hit", the current position is set +\end_layout + +\begin_layout LyX-Code + just past the hit, and an attempt is made to find another hit. +\end_layout + +\begin_layout LyX-Code + If you wish to limit the scan to simply finding a maximum of, say, +\end_layout + +\begin_layout LyX-Code + 10 hits, you can use the -n option (-n 10 would set the limit to +\end_layout + +\begin_layout LyX-Code + 10 reported hits). + For example, +\end_layout + +\begin_layout LyX-Code + scan_for_matches -c -n 1 pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + would search for just the first hit (and would stop searching the +\end_layout + +\begin_layout LyX-Code + current sequences or any that follow in the input file). +\end_layout + +\begin_layout LyX-Code +Searching for repeats: +\end_layout + +\begin_layout LyX-Code + In the last section, I discussed almost all of the details +\end_layout + +\begin_layout LyX-Code + required to allow you to look for repeats. + Consider the following +\end_layout + +\begin_layout LyX-Code + set of patterns: +\end_layout + +\begin_layout LyX-Code + p1=6...6 3...8 p1 (find exact 6 character repeat separated +\end_layout + +\begin_layout LyX-Code + by to 8 characters) +\end_layout + +\begin_layout LyX-Code + p1=6...6 3..8 p1[1,0,0] (allow one mismatch) +\end_layout + +\begin_layout LyX-Code + p1=3...3 p1[1,0,0] p1[1,0,0] p1[1,0,0] +\end_layout + +\begin_layout LyX-Code + (match 12 characters that are the remains +\end_layout + +\begin_layout LyX-Code + of a 3-character sequence occurring 4 times) +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + p1=4...8 0...3 p2=6...8 p1 0...3 p2 +\end_layout + +\begin_layout LyX-Code + (This would match things like +\end_layout + +\begin_layout LyX-Code + ATCT G TCTTT ATCT TG TCTTT +\end_layout + +\begin_layout LyX-Code + ) +\end_layout + +\begin_layout LyX-Code +Searching for particular sequences: +\end_layout + +\begin_layout LyX-Code + Occasionally, one wishes to match a specific, known sequence. +\end_layout + +\begin_layout LyX-Code + In such a case, you can just give the sequence (along with an +\end_layout + +\begin_layout LyX-Code + optional statement of the allowable mismatches, insertions, and +\end_layout + +\begin_layout LyX-Code + deletions). + Thus, +\end_layout + +\begin_layout LyX-Code + p1=6...8 GAGA ~p1 (match a hairpin with GAGA as the loop) +\end_layout + +\begin_layout LyX-Code + RRRRYYYY (match 4 purines followed by 4 pyrimidines) +\end_layout + +\begin_layout LyX-Code + TATAA[1,0,0] (match TATAA, allowing 1 mismatch) +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code +Matches against a "weight matrix": +\end_layout + +\begin_layout LyX-Code + I will conclude my examples of the types of pattern units +\end_layout + +\begin_layout LyX-Code + available for matching against nucleotide sequences by discussing a +\end_layout + +\begin_layout LyX-Code + crude implemetation of matching using a "weight matrix". + While I +\end_layout + +\begin_layout LyX-Code + am less than overwhelmed with the syntax that I chose, I think that +\end_layout + +\begin_layout LyX-Code + the reader should be aware that I was thinking of generating +\end_layout + +\begin_layout LyX-Code + patterns containing such pattern units automatically from +\end_layout + +\begin_layout LyX-Code + alignments (and did not really plan on typing such things in by +\end_layout + +\begin_layout LyX-Code + hand very often). + Anyway, suppose that you wanted to match a +\end_layout + +\begin_layout LyX-Code + sequence of eight characters. + The "consensus" of these eight +\end_layout + +\begin_layout LyX-Code + characters is GRCACCGS, but the actual "frequencies of occurrence" +\end_layout + +\begin_layout LyX-Code + are given in the matrix below. + Thus, the first character is an A +\end_layout + +\begin_layout LyX-Code + 16% the time and a G 84% of the time. + The second is an A 57% of +\end_layout + +\begin_layout LyX-Code + the time, a C 10% of the time, a G 29% of the time, and a T 4% of +\end_layout + +\begin_layout LyX-Code + the time. + +\end_layout + +\begin_layout LyX-Code + C1 C2 C3 C4 C5 C6 C7 C8 +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + A 16 57 0 95 0 18 0 0 +\end_layout + +\begin_layout LyX-Code + C 0 10 80 0 100 60 0 50 +\end_layout + +\begin_layout LyX-Code + G 84 29 0 0 0 20 100 50 +\end_layout + +\begin_layout LyX-Code + T 0 4 20 5 0 2 0 0 +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + One could use the following pattern unit to search for inexact +\end_layout + +\begin_layout LyX-Code + matches related to such a "weight matrix": +\end_layout + +\begin_layout LyX-Code + {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), +\end_layout + +\begin_layout LyX-Code + (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 +\end_layout + +\begin_layout LyX-Code + This pattern unit will attempt to match exactly eight characters. +\end_layout + +\begin_layout LyX-Code + For each character in the sequence, the entry in the corresponding +\end_layout + +\begin_layout LyX-Code + tuple is added to an accumulated sum. + If the sum is greater than +\end_layout + +\begin_layout LyX-Code + 450, the match succeeds; else it fails. +\end_layout + +\begin_layout LyX-Code + Recently, this feature was upgraded to allow ranges. + Thus, +\end_layout + +\begin_layout LyX-Code + 600 > {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), +\end_layout + +\begin_layout LyX-Code + (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 +\end_layout + +\begin_layout LyX-Code + will work, as well. +\end_layout + +\begin_layout LyX-Code +Allowing Alternatives: +\end_layout + +\begin_layout LyX-Code + Very occasionally, you may wish to allow alternative pattern units +\end_layout + +\begin_layout LyX-Code + (i.e., "match either A or B"). + You can do this using something +\end_layout + +\begin_layout LyX-Code + like +\end_layout + +\begin_layout LyX-Code + ( GAGA | GCGCA) +\end_layout + +\begin_layout LyX-Code + which says "match either GAGA or GCGCA". + You may take +\end_layout + +\begin_layout LyX-Code + alternatives of a list of pattern units, for example +\end_layout + +\begin_layout LyX-Code + (p1=3...3 3...8 ~p1 | p1=5...5 4...4 ~p1 GGG) +\end_layout + +\begin_layout LyX-Code + would match one of two sequences of pattern units. + There is one +\end_layout + +\begin_layout LyX-Code + clumsy aspect of the syntax: to match a list of alternatives, you +\end_layout + +\begin_layout LyX-Code + need to fully the request. + Thus, +\end_layout + +\begin_layout LyX-Code + (GAGA | (GCGCA | TTCGA)) +\end_layout + +\begin_layout LyX-Code + would be needed to try the three alternatives. +\end_layout + +\begin_layout LyX-Code +One Minor Extension +\end_layout + +\begin_layout LyX-Code + Sometimes a pattern will contain a sequence of distinct ranges, +\end_layout + +\begin_layout LyX-Code + and you might wish to limit the sum of the lengths of the matched +\end_layout + +\begin_layout LyX-Code + subsequences. + For example, suppose that you basically wanted to +\end_layout + +\begin_layout LyX-Code + match something like +\end_layout + +\begin_layout LyX-Code + ARRYYTT p1=0...5 GCA[1,0,0] p2=1...6 ~p1 4...8 ~p2 p3=4...10 CCT +\end_layout + +\begin_layout LyX-Code + but that the sum of the lengths of p1, p2, and p3 must not exceed +\end_layout + +\begin_layout LyX-Code + eight characters. + To do this, you could add +\end_layout + +\begin_layout LyX-Code + length(p1+p2+p3) < 9 +\end_layout + +\begin_layout LyX-Code + as the last pattern unit. + It will just succeed or fail (but does +\end_layout + +\begin_layout LyX-Code + not actually match any characters in the sequence). +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code +Matching Protein Sequences +\end_layout + +\begin_layout LyX-Code + Suppose that the input file contains protein sequences. + In this +\end_layout + +\begin_layout LyX-Code + case, you must invoke scan_for_matches with the "-p" option. + You +\end_layout + +\begin_layout LyX-Code + cannot use aspects of the language that relate directly to +\end_layout + +\begin_layout LyX-Code + nucleotide sequences (e.g., the -c command line option or pattern +\end_layout + +\begin_layout LyX-Code + constructs referring to the reverse complement of a previously +\end_layout + +\begin_layout LyX-Code + matched unit). + +\end_layout + +\begin_layout LyX-Code + You also have two additional constructs that allow you to match +\end_layout + +\begin_layout LyX-Code + either "one of a set of amino acids" or "any amino acid other than +\end_layout + +\begin_layout LyX-Code + those a given set". + For example, +\end_layout + +\begin_layout LyX-Code + p1=0...4 any(HQD) 1...3 notany(HK) p1 +\end_layout + +\begin_layout LyX-Code + would successfully match a string like +\end_layout + +\begin_layout LyX-Code + YWV D AA C YWV +\end_layout + +\begin_layout LyX-Code +Using the show_hits Utility +\end_layout + +\begin_layout LyX-Code + When viewing a large set of complex matches, you might find it +\end_layout + +\begin_layout LyX-Code + convenient to post-process the scan_for_matches output to get a +\end_layout + +\begin_layout LyX-Code + more readable version. + We provide a simple post-processor called +\end_layout + +\begin_layout LyX-Code + "show_hits". + To see its effect, just pipe the output of a +\end_layout + +\begin_layout LyX-Code + scan_for_matches into show_hits: +\end_layout + +\begin_layout LyX-Code + Normal Output: +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches -c pat_file < tmp +\end_layout + +\begin_layout LyX-Code + >tst1:[1,28] +\end_layout + +\begin_layout LyX-Code + gtacguaacc ggttaac cgguuacgtac +\end_layout + +\begin_layout LyX-Code + >tst1:[28,1] +\end_layout + +\begin_layout LyX-Code + gtacgtaacc ggttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + >tst2:[2,31] +\end_layout + +\begin_layout LyX-Code + CGTACGUAAC C GGTTAACC GGUUACGTACG +\end_layout + +\begin_layout LyX-Code + >tst2:[31,2] +\end_layout + +\begin_layout LyX-Code + CGTACGTAAC C GGTTAACC GGTTACGTACG +\end_layout + +\begin_layout LyX-Code + >tst3:[3,32] +\end_layout + +\begin_layout LyX-Code + gtacguaacc g gttaactt cgguuacgtac +\end_layout + +\begin_layout LyX-Code + >tst3:[32,3] +\end_layout + +\begin_layout LyX-Code + gtacgtaacc g aagttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + Piped Through show_hits: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches -c pat_file < tmp | show_hits +\end_layout + +\begin_layout LyX-Code + tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac +\end_layout + +\begin_layout LyX-Code + tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG +\end_layout + +\begin_layout LyX-Code + tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG +\end_layout + +\begin_layout LyX-Code + tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac +\end_layout + +\begin_layout LyX-Code + tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + clone% +\end_layout + +\begin_layout LyX-Code + Optionally, you can specify which of the "fields" in the matches +\end_layout + +\begin_layout LyX-Code + you wish to sort on, and show_hits will sort them. + The field +\end_layout + +\begin_layout LyX-Code + numbers start with 0. + So, you might get something like +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches -c pat_file < tmp | show_hits 2 1 +\end_layout + +\begin_layout LyX-Code + tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG +\end_layout + +\begin_layout LyX-Code + tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG +\end_layout + +\begin_layout LyX-Code + tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac +\end_layout + +\begin_layout LyX-Code + tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac +\end_layout + +\begin_layout LyX-Code + clone% +\end_layout + +\begin_layout LyX-Code + In this case, the hits have been sorted on fields 2 and 1 (that is, +\end_layout + +\begin_layout LyX-Code + the third and second matched subfields). +\end_layout + +\begin_layout LyX-Code + show_hits is just one possible little post-processor, and you +\end_layout + +\begin_layout LyX-Code + might well wish to write a customized one for yourself. +\end_layout + +\begin_layout LyX-Code +Reducing the Cost of a Search +\end_layout + +\begin_layout LyX-Code + The scan_for_matches utility uses a fairly simple search, and may +\end_layout + +\begin_layout LyX-Code + consume large amounts of CPU time for complex patterns. + Someday, +\end_layout + +\begin_layout LyX-Code + I may decide to optimize the code. + However, until then, let me +\end_layout + +\begin_layout LyX-Code + mention one useful technique. + +\end_layout + +\begin_layout LyX-Code + When you have a complex pattern that includes a number of varying +\end_layout + +\begin_layout LyX-Code + ranges, imprecise matches, and so forth, it is useful to +\end_layout + +\begin_layout LyX-Code + "pipeline" matches. + That is, form a simpler pattern that can be +\end_layout + +\begin_layout LyX-Code + used to scan through a large database extracting sections that +\end_layout + +\begin_layout LyX-Code + might be matched by the more complex pattern. + Let me illustrate +\end_layout + +\begin_layout LyX-Code + with a short example. + Suppose that you really wished to match the +\end_layout + +\begin_layout LyX-Code + pattern +\end_layout + +\begin_layout LyX-Code + p1=3...5 0...8 ~p1[1,1,0] p2=6...7 3...6 AGC 3...5 RYGC ~p2[1,0,0] +\end_layout + +\begin_layout LyX-Code + In this case, the pattern units AGC 3...5 RYGC can be used to rapidly +\end_layout + +\begin_layout LyX-Code + constrain the overall search. + You can preprocess the overall +\end_layout + +\begin_layout LyX-Code + database using the pattern: +\end_layout + +\begin_layout LyX-Code + 31...31 AGC 3...5 RYGC 7...7 +\end_layout + +\begin_layout LyX-Code + Put the complex pattern in pat_file1 and the simpler pattern in +\end_layout + +\begin_layout LyX-Code + pat_file2. + Then use, +\end_layout + +\begin_layout LyX-Code + scan_for_matches -c pat_file2 < nucleotide_database | +\end_layout + +\begin_layout LyX-Code + scan_for_matches pat_file1 +\end_layout + +\begin_layout LyX-Code + The output will show things like +\end_layout + +\begin_layout LyX-Code + >seqid:[232,280][2,47] +\end_layout + +\begin_layout LyX-Code + matches pieces +\end_layout + +\begin_layout LyX-Code + Then, the actual section of the sequence that was matched can be +\end_layout + +\begin_layout LyX-Code + easily computed as [233,278] (remember, the positions start from +\end_layout + +\begin_layout LyX-Code + 1, not 0). +\end_layout + +\begin_layout LyX-Code + Let me finally add, you should do a few short experiments to see +\end_layout + +\begin_layout LyX-Code + whether or not such pipelining actually improves performance -- it +\end_layout + +\begin_layout LyX-Code + is not always obvious where the time is going, and I have +\end_layout + +\begin_layout LyX-Code + sometimes found that the added complexity of pipelining actually +\end_layout + +\begin_layout LyX-Code + slowed things up. + It gets its best improvements when there are +\end_layout + +\begin_layout LyX-Code + exact matches of more than just a few characters that can be +\end_layout + +\begin_layout LyX-Code + rapidly used to eliminate large sections of the database. +\end_layout + +\begin_layout LyX-Code +============= +\end_layout + +\begin_layout LyX-Code +Additions: +\end_layout + +\begin_layout LyX-Code +Feb 9, 1995: the pattern units ^ and $ now work as in normal regular +\end_layout + +\begin_layout LyX-Code + expressions. + That is +\end_layout + +\begin_layout LyX-Code + TTF $ +\end_layout + +\begin_layout LyX-Code + matches only TTF at the end of the string and +\end_layout + +\begin_layout LyX-Code + ^ TTF +\end_layout + +\begin_layout LyX-Code + matches only an initial TTF +\end_layout + +\begin_layout LyX-Code + The pattern unit +\end_layout + +\begin_layout LyX-Code + <p1 +\end_layout + +\begin_layout LyX-Code + matches the reverse of the string named p1. + That is, +\end_layout + +\begin_layout LyX-Code + if p1 matched GCAT, then <p1 would match TACG. + Thus, +\end_layout + +\begin_layout LyX-Code + p1=6...6 <p1 +\end_layout + +\begin_layout LyX-Code + matches a real palindrome (not the biologically common +\end_layout + +\begin_layout LyX-Code + meaning of "reverse complement") +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\end_body +\end_document diff --git a/bp_doc/biotools_cookbook.lyx~ b/bp_doc/biotools_cookbook.lyx~ new file mode 100644 index 0000000..2f10d7e --- /dev/null +++ b/bp_doc/biotools_cookbook.lyx~ @@ -0,0 +1,7337 @@ +#LyX 1.5.1 created this file. For more info see http://www.lyx.org/ +\lyxformat 276 +\begin_document +\begin_header +\textclass scrartcl +\begin_preamble +\usepackage[colorlinks=true, urlcolor=blue, linkcolor=black]{hyperref} +\end_preamble +\language english +\inputencoding auto +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 +\graphics default +\paperfontsize default +\spacing single +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation skip +\defskip medskip +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\author "" +\author "" +\end_header + +\begin_body + +\begin_layout Title +Biotools Cookbook +\end_layout + +\begin_layout Author +Martin Asser Hansen +\end_layout + +\begin_layout Publishers +John Mattick Group +\newline +Institute for Molecular Bioscience +\newline +University of Queensland +\newline +Aust +ralia +\newline +E-mail: mail@maasha.dk +\end_layout + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Standard + + +\backslash +thispagestyle{empty} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard + +\newpage + +\end_layout + +\begin_layout Standard +\begin_inset LatexCommand tableofcontents + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset FloatList figure + +\end_inset + + +\end_layout + +\begin_layout Standard + +\newpage + +\end_layout + +\begin_layout Section +Introduction +\end_layout + +\begin_layout Standard +Biotools is a selection of simple tools that can be linked together (piped + as we shall call it) in a very flexible manner to perform both simple and + complex tasks. + The fundamental idea is that biotools work on a data stream that will only + terminate at the end of an analysis and that this data stream can be passed + through several different biotools, each performing one specific task. + The advantage of this approach is that a user can perform simple and complex + tasks without having to write advanced code. + Moreover, since the data format used to pass data between biotools is text + based, biotools can be written by different developers in their favorite + programming language --- and still the biotools will be able to work together. +\end_layout + +\begin_layout Standard +In the most simple form bioools can be piped together on the command line + like this (using the pipe character '|'): +\end_layout + +\begin_layout LyX-Code +read_data | calculate_something | write_result +\end_layout + +\begin_layout Standard +However, a more comprehensive analysis could be composed: +\end_layout + +\begin_layout LyX-Code +read_data | select_entries | convert_entries | search_database +\end_layout + +\begin_layout LyX-Code +evaluate_results | plot_diagram | plot_another_diagram | +\end_layout + +\begin_layout LyX-Code +load_to_database +\end_layout + +\begin_layout Standard +The data stream that is piped through the biotools consists of records of + key/value pairs in the same way a hash does in order to keep as simple + a structure as possible. + An example record can be seen below: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +REC_TYPE: PATSCAN +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +MATCH: AGATCAAGTG +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +S_BEG: 7 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +S_END: 16 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +ALIGN_LEN: 9 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +S_ID: piR-t6 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +STRAND: + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +PATTERN: AGATCAAGTG +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +--- +\end_layout + +\begin_layout Standard +The ' +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\backslash +/- +\end_layout + +\end_inset + +' denotes the delimiter of the records, and each key is a word followed + by a ':' and a white-space and then the value. + By convention the biotools only uses upper case keys (a list of used keys + can be seen in Appendix\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sec:Keys" + +\end_inset + +). + Since the records basically are hash structures this mean that the order + of the keys in the stream is unordered, and in the above example it is + pure coincidence that HIT_BEG is displayed before HIT_END, however, when + the order of the keys is importent, the biotools will automagically see + to that. +\end_layout + +\begin_layout Standard +All of the biotools are able to read and write a data stream to and from + file as long as the records are in the biotools format. + This means that if you are undertaking a lengthy analysis where one of + the steps is time consuming, you may save the stream after this step, and + subsequently start one or more analysis from that last step +\begin_inset Foot +status collapsed + +\begin_layout Standard +It is a goal that the biotools at some point will be able to dump the data + stream to file in case one of the tools fail critically. +\end_layout + +\end_inset + +. + If you are running a lengthy analysis it is highly recommended that you + create a small test sample of the data and run that through the pipeline + --- and once you are satisfied with the result proceed with the full data + set (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-select-a-few-records" + +\end_inset + +). +\end_layout + +\begin_layout Standard +All of the biotools can be supplied with long arguments prefixed with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + + switches or single character arguments prefixed with - switches that can + be grouped together (e.g. + -xok). + In this cookbook only the long switches are used to emphasize what these + switches do. +\end_layout + +\begin_layout Section +Setup +\end_layout + +\begin_layout Standard +In order to get the biotools to work, you need to add environment settings + to include the code binaries, scripts, and modules that constitute the + biotools package. + Assuming that you are using bash, add the following to your '~/.bashrc' + file using your favorite editor. + After the changes has been saved you need to either run 'source ~/.bashrc' + or relogin. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +# >>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<< +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +# Stuff that enables biotools. +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +export TOOLS_DIR="/home/m.hansen/tools" # Contains binaries for BLAST + and Vmatch. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +export INST_DIR="/home/m.hansen/maasha" # Contains scripts and modules. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +export DATA_DIR="/home/m.hansen/DATA" # Contains genomic data etc. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +export TMP_DIR="/home/m.hansen/maasha/tmp" # Required temporary directory. +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +export PATH="$PATH:$TOOLS_DIR/blast-2.2.17/bin:$TOOLS_DIR/vmatch.distribution" +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +export PATH="$INST_DIR/bin/:$INST_DIR/perl_scripts/:$INST_DIR/perl_scripts/b +iotools:$PATH" +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +export PERL5LIB="$PERL5LIB:$INST_DIR" +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +# Alias allowing power scripting with biotools +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +alias bioscript="perl -I $INST_DIR/Maasha -MBiotools=read_stream,get_recor +d,put_record -e" +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +# >>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<< +\end_layout + +\begin_layout Section +Getting Started +\end_layout + +\begin_layout Standard +The biotool +\series bold +list_biotools +\series default + lists all the biotools along with a description: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +list_biotools +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +align_seq Align sequences in stream using Muscle. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +analyze_seq Analysis the residue composition of each sequence + in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +analyze_vals Determine type, count, min, max, sum and mean for + values in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +blast_seq BLAST sequences in stream against a specified database. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +blat_seq BLAT sequences in stream against a specified genome. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +complement_seq Complement sequences in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_records Count the number of records in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_seq Count sequences in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_vals Count the number of times values of given keys exists + in stream. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +create_blast_db Create a BLAST database from sequences in stream for + use with BLAST. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +... +\end_layout + +\begin_layout Standard +To list the biotools for writing different formats, you can use unix's grep + like this: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +list_biotools | grep write +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_align Write aligned sequences in pretty alignment format. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_bed Write records from stream as BED lines. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_blast Write BLAST records from stream in BLAST tabular format + (-m8 and 9). +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_fasta Write sequences in FASTA format. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_psl Write records from stream in PSL format. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +write_tab Write records from stream as tab separated table. +\end_layout + +\begin_layout Standard +In order to find out how a specific biotool works, you just type the program + name without any arguments and press return and the usage of the biotool + will be displayed. + E.g. + +\series bold +read_fasta +\series default + <return>: +\end_layout + +\begin_layout Standard +\begin_inset Box Frameless +position "t" +hor_pos "c" +has_inner_box 1 +inner_pos "t" +use_parbox 0 +width "100col%" +special "none" +height "1in" +height_special "totalheight" +status open + +\begin_layout LyX-Code + +\size scriptsize +Program name: read_fasta +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Author: Martin Asser Hansen - Copyright (C) - All rights reserved +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Contact: mail@maasha.dk +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Date: August 2007 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +License: GNU General Public License version 2 (http://www.gnu.org/copyleft/ +gpl.html) +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Description: Read FASTA entries. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Usage: read_fasta [options] -i <FASTA file(s)> +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Options: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-i <file(s)> | --data_in=<file(s)>] - Comma separated list of files + to read. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-n <int> | --num=<int>] - Limit number of records to read. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-I <file> | --stream_in=<file>] - Read input stream from file + - Default=STDIN +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + [-O <file> | --stream_out=<file>] - Write output stream to file + - Default=STDOUT +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +Examples: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i test.fna - Read FASTA entries from file. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i test1.fna,test2,fna - Read FASTA entries from files. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i '*.fna' - Read FASTA entries from files. +\end_layout + +\begin_layout LyX-Code + +\size scriptsize + read_fasta -i test.fna -n 10 - Read first 10 FASTA entries from + file. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +The Data Stream +\end_layout + +\begin_layout Subsection +How to read the data stream from file? +\begin_inset LatexCommand label +name "sub:How-to-read-stream" + +\end_inset + + +\end_layout + +\begin_layout Standard +You want to read a data stream that you previously have saved to file in + biotools format. + This can be done implicetly or explicitly. + The implicit way uses the 'stdout' stream of the Unix terminal: +\end_layout + +\begin_layout LyX-Code +cat | <biotool> +\end_layout + +\begin_layout Standard +cat is the Unix command that reads a file and output the result to 'stdout' + --- which in this case is piped to any biotool represented by the <biotool>. + It is also possible to read the data stream using '<' to direct the 'stdout' + stream into the biotool like this: +\end_layout + +\begin_layout LyX-Code +<biotool> < <file> +\end_layout + +\begin_layout Standard +However, that will not work if you pipe more biotools together. + Then it is much safer to read the stream from a file explicitly like this: +\end_layout + +\begin_layout LyX-Code +<biotool> --stream_in=<file> +\end_layout + +\begin_layout Standard +Here the filename <file> is explicetly given to the biotool <biotool> with + the switch +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_in. + This switch works with all biotools. + It is also possible to read in data from multiple sources by repeating + the explicit read step: +\end_layout + +\begin_layout LyX-Code +<biotool> --stream_in=<file1> | <biotool> --stream_in=<file2> +\end_layout + +\begin_layout Subsection +How to write the data stream to file? +\begin_inset LatexCommand label +name "sub:How-to-write-stream" + +\end_inset + + +\end_layout + +\begin_layout Standard +In order to save the output stream from a biotool to file, so you can read + in the stream again at a later time, you can do one of two things: +\end_layout + +\begin_layout LyX-Code +<biotool> > <file> +\end_layout + +\begin_layout Standard +All, the biotools write the data stream to 'stdout' by default which can + be written to a file by redirecting 'stdout' to file using '>' , however, + if one of the biotools for writing other formats is used then the both + the biotools records as well as the result output will go to 'stdout' in + a mixture causing havock! To avoid this you must use the switch +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_out that explictly tells the biotool to write the output stream to + file: +\end_layout + +\begin_layout LyX-Code +<biotool> --stream_out=<file> +\end_layout + +\begin_layout Standard +The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_out switch works with all biotools. +\end_layout + +\begin_layout Subsection +How to terminate the data stream? +\end_layout + +\begin_layout Standard +The data stream is never stops unless the user want to save the stream or + by supplying the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch that will terminate the stream: +\end_layout + +\begin_layout LyX-Code +<biotool> --no_stream +\end_layout + +\begin_layout Standard +The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch only works with those biotools where it makes sense that + the user might want to terminale the data stream, +\emph on +i.e +\emph default +. + after an analysis step where the user wants to output the result, but not + the data stream. +\end_layout + +\begin_layout Subsection +How to write my results to file? +\begin_inset LatexCommand label +name "sub:How-to-write-result" + +\end_inset + + +\end_layout + +\begin_layout Standard +Saving the result of an analysis to file can be done implicitly or explicitly. + The implicit way: +\end_layout + +\begin_layout LyX-Code +<biotool> --no_stream > <file> +\end_layout + +\begin_layout Standard +If you use '>' to redirect 'stdout' to file then it is important to use + the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch to avoid writing a mix of biotools records and result to + the same file causing havock. + The safe way is to use the +\begin_inset ERT +status open + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out switch which explicetly tells the biotool to write the result + to a given file: +\end_layout + +\begin_layout LyX-Code +<biotool> --result_out=<file> +\end_layout + +\begin_layout Standard +Using the above method will not terminate the stream, so it is possible + to pipe that into another biotool generating different results: +\end_layout + +\begin_layout LyX-Code +<biotool1> --result_out=<file1> | <biotool2> --result_out=<file2> +\end_layout + +\begin_layout Standard +And still the data stream will continue unless terminated with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream: +\end_layout + +\begin_layout LyX-Code +<biotool> --result_out=<file> --no_stream +\end_layout + +\begin_layout Standard +Or written to file using implicitly or explicity +\begin_inset LatexCommand eqref +reference "sub:How-to-write-result" + +\end_inset + +. + The explicit way: +\end_layout + +\begin_layout LyX-Code +<biotool> --result_out=<file1> --stream_out=<file2> +\end_layout + +\begin_layout Subsection +How to read data from multiple sources? +\end_layout + +\begin_layout Standard +To read multiple data sources, with the same type or different type of data + do: +\end_layout + +\begin_layout LyX-Code +<biotool1> --data_in=<file1> | <biotool2> --data_in=<file2> +\end_layout + +\begin_layout Standard +where type is the data type a specific biotool reads. +\end_layout + +\begin_layout Section +Reading input +\end_layout + +\begin_layout Subsection +How to read biotools input? +\end_layout + +\begin_layout Standard +See +\begin_inset LatexCommand eqref +reference "sub:How-to-read-stream" + +\end_inset + +. +\end_layout + +\begin_layout Subsection +How to read in data? +\end_layout + +\begin_layout Standard +Data in different formats can be read with the appropriate biotool for that + format. + The biotools are typicalled named 'read_<data type>' such as +\series bold +read_fasta +\series default +, +\series bold +read_bed +\series default +, +\series bold +read_tab +\series default +, etc., and all behave in a similar manner. + Data can be read by supplying the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +data_in switch and a file name to the file containing the data: +\end_layout + +\begin_layout LyX-Code +<biotool> --data_in=<file> +\end_layout + +\begin_layout Standard +It is also possible to read in a saved biotools stream (see +\begin_inset LatexCommand ref +reference "sub:How-to-read-stream" + +\end_inset + +) as well as reading data in one go: +\end_layout + +\begin_layout LyX-Code +<biotool> --stream_in=<file1> --data_in=<file2> +\end_layout + +\begin_layout Standard +If you want to read data from several files you can do this: +\end_layout + +\begin_layout LyX-Code +<biotool> --data_in=<file1> | <biotool> --data_in=<file2> +\end_layout + +\begin_layout Standard +If you have several data files you can read in all explicitly with a comma + separated list: +\end_layout + +\begin_layout LyX-Code +<biotool> --data_in=file1,file2,file3 +\end_layout + +\begin_layout Standard +And it is also possible to use file globbing +\begin_inset Foot +status open + +\begin_layout Standard +using the short option will only work if you quote the argument -i '*.fna' +\end_layout + +\end_inset + +: +\end_layout + +\begin_layout LyX-Code +<biotool> --data_in=*.fna +\end_layout + +\begin_layout Standard +Or in a combination: +\end_layout + +\begin_layout LyX-Code +<biotool> --data_in=file1,/dir/*.fna +\end_layout + +\begin_layout Standard +Finally, it is possible to read in data in different formats using the appropria +te biotool for each format: +\end_layout + +\begin_layout LyX-Code +<biotool1> --data_in=<file1> | <biotool2> --data_in=<file2> ... +\end_layout + +\begin_layout Subsection +How to read FASTA input? +\end_layout + +\begin_layout Standard +Sequences in FASTA format can be read explicitly using +\series bold +read_fasta +\series default +: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> +\end_layout + +\begin_layout Subsection +How to read alignment input? +\end_layout + +\begin_layout Standard +If your alignment if FASTA formatted then you can +\series bold +read_align +\series default +. + It is also possible to use +\series bold +read_fasta +\series default + since the data is FASTA formatted, however, with +\series bold +read_fasta +\series default + the key ALIGN will be omitted. + The ALIGN key is used to determine which sequences belong to what alignment + which is required for +\series bold +write_align +\series default +. +\end_layout + +\begin_layout LyX-Code +read_align --data_in=<file> +\end_layout + +\begin_layout Subsection +How to read tabular input? +\begin_inset LatexCommand label +name "sub:How-to-read-table" + +\end_inset + + +\end_layout + +\begin_layout Standard +Tabular input can be read with +\series bold +read_tab +\series default + which will read in all rows and chosen columns (separated by a given delimter) + from a table in text format. +\end_layout + +\begin_layout Standard +The table below: +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular +<lyxtabular version="3" rows="4" columns="3"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="left" valignment="top" width="0"> +<column alignment="left" valignment="top" width="0"> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Human +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +ATACGTCAG +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +23524 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Dog +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +AGCATGAC +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +2442 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Mouse +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +GACTG +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +234 +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Cat +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +AAATGCA +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +2342 +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\end_layout + +\begin_layout Standard +Can be read using the command: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> +\end_layout + +\begin_layout Standard +Which will result in four records, one for each row, where the keys V0, + V1, V2 are the default keys for the organism, sequence, and count, respectively. + It is possible to select a subset of colums to read by using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +cols switch which takes a comma separated list of columns numbers (first + column is designated 0) as argument. + So to read in only the sequence and the count so that the count comes before + the sequence do: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> --cols=2,1 +\end_layout + +\begin_layout Standard +It is also possible to name the columns with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys switch: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> --cols=2,1 --keys=COUNT,SEQ +\end_layout + +\begin_layout Subsection +How to read BED input? +\end_layout + +\begin_layout Standard +The BED (Browser Extensible Data +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://genome.ucsc.edu/FAQ/FAQformat" + +\end_inset + + +\end_layout + +\end_inset + +) format is a tabular format for data pertaining to one of the Eukaryotic + genomes in the UCSC genome brower +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://genome.ucsc.edu/" + +\end_inset + + +\end_layout + +\end_inset + +. + The BED format consists of up to 12 columns, where the first three are + mandatory CHR, CHR_BEG, and CHR_END. + The mandatory columns and any of the optional columns can all be read in + easily with the +\series bold +read_bed +\series default + biotool. +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<file> +\end_layout + +\begin_layout Standard +It is also possible to read the BED file with +\series bold +read_tab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-read-table" + +\end_inset + +), however, that will be more cumbersome because you need to specify the + keys: +\end_layout + +\begin_layout LyX-Code +read_tab --data_in=<file> --keys=CHR,CHR_BEG,CHR_END ... +\end_layout + +\begin_layout Subsection +How to read PSL input? +\end_layout + +\begin_layout Standard +The PSL format is the output from BLAT and contains 21 mandatory fields + that can be read with +\series bold +read_psl +\series default +: +\end_layout + +\begin_layout LyX-Code +read_psl --data_in=<file> +\end_layout + +\begin_layout Section +Writing output +\end_layout + +\begin_layout Standard +All result output can be written explicitly to file using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out switch which all result generating biotools have. + It is also possible to write the result to file implicetly by directing + 'stdout' to file using '>', however, that requires the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream swich to prevent a mixture of data stream and results in the file. + The explicit (and safe) way: +\end_layout + +\begin_layout LyX-Code +... + | <biotool> --result_out=<file> +\end_layout + +\begin_layout Standard +The implicit way: +\end_layout + +\begin_layout LyX-Code +... + | <biotool> --no_stream > <file> +\end_layout + +\begin_layout Subsection +How to write biotools output? +\end_layout + +\begin_layout Standard +See +\begin_inset LatexCommand eqref +reference "sub:How-to-write-stream" + +\end_inset + +. +\end_layout + +\begin_layout Subsection +How to write FASTA output? +\begin_inset LatexCommand label +name "sub:How-to-write-fasta" + +\end_inset + + +\end_layout + +\begin_layout Standard +FASTA output can be written with +\series bold +write_fasta +\series default +. +\end_layout + +\begin_layout LyX-Code +... + | write_fasta --result_out=<file> +\end_layout + +\begin_layout Standard +It is also possible to wrap the sequences to a given width using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +wrap switch allthough wrapping of sequence is generally an evil thing: +\end_layout + +\begin_layout LyX-Code +... + | write_fasta --no_stream --wrap=80 +\end_layout + +\begin_layout Subsection +How to write alignment output? +\begin_inset LatexCommand label +name "sub:How-to-write-alignment" + +\end_inset + + +\end_layout + +\begin_layout Standard +Pretty alignments with ruler +\begin_inset Foot +status collapsed + +\begin_layout Standard +'.' for every 10 residues, ':' for every 50, and '|' for every 100 +\end_layout + +\end_inset + + and consensus sequence +\begin_inset Note Note +status collapsed + +\begin_layout Standard +which reminds me to make that an option. +\end_layout + +\end_inset + + can be created with +\series bold +write_align +\series default +, what also have the optional +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +wrap switch to break the alignment into blocks of a given width: +\end_layout + +\begin_layout LyX-Code +... + | write_align --result_out=<file> --wrap=80 +\end_layout + +\begin_layout Standard +If the number of sequnces in the alignment is 2 then a pairwise alignment + will be output otherwise a multiple alignment. + And if the sequence type, determined automagically, is protein, then residues + and symbols (+,\InsetSpace ~ +:,\InsetSpace ~ +.) will be used to show consensus according to the Blosum62 + matrix. +\end_layout + +\begin_layout Subsection +How to write tabular output? +\begin_inset LatexCommand label +name "sub:How-to-write-tab" + +\end_inset + + +\end_layout + +\begin_layout Standard +Outputting the data stream as a table can be done with +\series bold +write_tab +\series default +, which will write generate one row per record with the values as columns. + If you supply the optional +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +comment switch, when the first row in the table will be a 'comment' line + prefixed with a '#': +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --comment +\end_layout + +\begin_layout Standard +You can also change the delimiter from the default (tab) to +\emph on +e.g. + +\emph default + ',': +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --delimit=',' +\end_layout + +\begin_layout Standard +If you want the values output in a specific order you have to supply a comma + separated list using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys switch that will print only those keys in that order: +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --keys=SEQ_NAME,COUNT +\end_layout + +\begin_layout Standard +Alternatively, if you have some keys that you don't want in the tabular + output, use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_keys switch. + So to print all keys except SEQ and SEQ_TYPE do: +\end_layout + +\begin_layout LyX-Code +... + | write_tab --result_out=<file> --no_keys=SEQ,SEQ_TYPE +\end_layout + +\begin_layout Standard +Finally, if you have a stream containing a mix of different records types, + +\emph on +e.g. + +\emph default + records with sequences and records with matches, then you can use +\series bold +write_tab +\series default + to output all the records in tabluar format, however, the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +comment, +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys, and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_keys switches will only respond to records of the first type encountered. + The reason is that outputting mixed records is probably not what you want + anyway, and you should remove all the unwanted records from the stream + before outputting the table: +\series bold +grab +\series default + is your friend (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-grab" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to write a BED output? +\begin_inset LatexCommand label +name "sub:How-to-write-BED" + +\end_inset + + +\end_layout + +\begin_layout Standard +Data in BED format can be output if the records contain the mandatory keys + CHR, CHR_BEG, and CHR_END using +\series bold +write_bed +\series default +. + If the optional keys are also present, they will be output as well: +\end_layout + +\begin_layout LyX-Code +write_bed --result_out=<file> +\end_layout + +\begin_layout Subsection +How to write PSL output? +\begin_inset LatexCommand label +name "sub:How-to-write-PSL" + +\end_inset + + +\end_layout + +\begin_layout Standard +Data in PSL format can be output using +\series bold +write_psl: +\end_layout + +\begin_layout LyX-Code +write_psl --result_out=<file> +\end_layout + +\begin_layout Section +Manipulating Records +\end_layout + +\begin_layout Subsection +How to select a few records? +\begin_inset LatexCommand label +name "sub:How-to-select-a-few-records" + +\end_inset + + +\end_layout + +\begin_layout Standard +To quickly get an overview of your data you can limit the data stream to + show a few records. + This also very useful to test the pipeline with a few records if you are + setting up a complex analysis using several biotools. + That way you can inspect that all goes well before analyzing and waiting + for the full data set. + All of the read_<type> biotools have the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num switch which will take a number as argument and only that number of + records will be read. + So to read in the first 10 FASTA entries from a file: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna --num=10 +\end_layout + +\begin_layout Standard +Another way of doing this is to use +\series bold +head_records +\series default + will limit the stream to show the first 10 records (default): +\end_layout + +\begin_layout LyX-Code +... + | head_records +\end_layout + +\begin_layout Standard +Using +\series bold +head_records +\series default + directly after one of the read_<type> biotools will be a lot slower than + using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num switch with the read_<type> biotools, however, +\series bold +head_records +\series default + can also be used to limit the output from all the other biotools. + It is also possible to give +\series bold +head_records +\series default + a number of records to show using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num switch. + So to display the first 100 records do: +\end_layout + +\begin_layout LyX-Code +... + | head_records --num=100 +\end_layout + +\begin_layout Subsection +How to select random records? +\begin_inset LatexCommand label +name "sub:How-to-select-random-records" + +\end_inset + + +\end_layout + +\begin_layout Standard +If you want to inspect a number of random records from the stream this can + be done with the +\series bold +random_records +\series default + biotool. + So if you have 1 mio records in the stream and you want to select 1000 + random records do: +\end_layout + +\begin_layout LyX-Code +... + | random_records --num=1000 +\end_layout + +\begin_layout Subsection +How to count all records in the data stream? +\end_layout + +\begin_layout Standard +To count all the records in the data stream use +\series bold +count_records +\series default +, which adds one record (which is not included in the count) to the data + stream. + So to count the number of sequences in a FASTA file you can do this: +\end_layout + +\begin_layout LyX-Code +cat test.fna | read_fasta | count_records --no_stream +\end_layout + +\begin_layout Standard +Which will write the last record containing the count to 'stdout': +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +count_records: 630 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +--- +\end_layout + +\begin_layout Standard +It is also possible to write the count to file using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out switch. +\end_layout + +\begin_layout Subsection +How to get the length of record values? +\begin_inset LatexCommand label +name "sub:How-to-get-value_length" + +\end_inset + + +\end_layout + +\begin_layout Standard +Use the +\series bold +length_vals +\series default + biotool to get the length of each value for a comma separated list of keys: +\end_layout + +\begin_layout LyX-Code +... + | length_vals --keys=HIT,PATTERN +\end_layout + +\begin_layout Subsection +How to grab specific records? +\begin_inset LatexCommand label +name "sub:How-to-grab" + +\end_inset + + +\end_layout + +\begin_layout Standard +The biotool +\series bold +grab +\series default + is related to the Unix grep and locates records based on matching keys + and/or values using either a pattern, a Perl regex, or a numerical evaluation. + To easily +\series bold +grab +\series default + all records in the stream that has any mentioning of the pattern 'human' + just pipe the data stream through +\series bold +grab +\series default + like this: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human +\end_layout + +\begin_layout Standard +This will search for the pattern 'human' in all keys and all values. + The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern switch takes a comma separated list of patterns, so in order to + match multiple patterns do: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human,mouse +\end_layout + +\begin_layout Standard +It is also possible to use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in switch instead of +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern. + +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in is used to read a file with one pattern per line: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern_in=patterns.txt +\end_layout + +\begin_layout Standard +If you want the opposite result --- to find all records that does not match + the patterns, add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +invert switch, which not only works with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern switch, but also with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +regex and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +eval: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human --invert +\end_layout + +\begin_layout Standard +If you want to search the record keys only, +\emph on +e.g. + +\emph default + to find all records containing the key SEQ you can add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys_only switch. + This will prevent matching of SEQ in any record value, and in fact SEQ + is a not uncommon peptide sequence you could get an unwanted record. + Also, this will give an increase in speed since only the keys are searched: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=SEQ --keys_only +\end_layout + +\begin_layout Standard +However, if you are interested in finding the peptide sequence SEQ and not + the SEQ key, just add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +vals_only switch instead: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=SEQ --vals_only +\end_layout + +\begin_layout Standard +Also, if you want to grab for certain key/value pairs you can supply a comma + separated list of keys whos values will then be searched using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +keys switch. + This is handy if your records contain large genomic sequences and you dont + want to search the entire sequence for +\emph on +e.g. + +\emph default + the organism name --- it is much faster to tell +\series bold +grab +\series default + which keys to search the value for: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern=human --keys=SEQ_NAME +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout Standard +It is also possible to invoke flexible matching using regex (regular expressions +) instead of simple pattern matching. + In +\series bold +grab +\series default + the regex engine is Perl based and allows use of different type of wild + cards, alternatives, +\emph on +etc +\emph default + +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://perldoc.perl.org/perlreref.html" + +\end_inset + + +\end_layout + +\end_inset + +. + If you want to +\series bold +grab +\series default + records withs the sequence ATCG or GCTA you can do this: +\end_layout + +\begin_layout LyX-Code +... + | grab --regex='ATCG|GCTA' +\end_layout + +\begin_layout Standard +Or if you want to find sequences beginning with ATCG: +\end_layout + +\begin_layout LyX-Code +... + | grab --regex='^ATCG' +\end_layout + +\begin_layout Standard +You can also use +\series bold +grab +\series default + to locate records that fulfill a numerical property using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +eval switch witch takes an expression in three parts. + The first part is the key that holds the value we want to evaluate, the + second part holds one the six operators: +\end_layout + +\begin_layout Enumerate +Greater than: > +\end_layout + +\begin_layout Enumerate +Greater than or equal to: >= +\end_layout + +\begin_layout Enumerate +Less than: < +\end_layout + +\begin_layout Enumerate +Less than or equal to: <= +\end_layout + +\begin_layout Enumerate +Equal to: = +\end_layout + +\begin_layout Enumerate +Not equal to: != +\end_layout + +\begin_layout Enumerate +String wise equal to: eq +\end_layout + +\begin_layout Enumerate +String wise not equal to: ne +\end_layout + +\begin_layout Standard +And finally comes the number used in the evaluation. + So to +\series bold +grab +\series default + all records with a sequence length greater than 30: +\end_layout + +\begin_layout LyX-Code +... + length_seq | grab --eval='SEQ_LEN > 30' +\end_layout + +\begin_layout Standard +If you want to locate all records containing the pattern 'human' and where + the sequence length is greater that 30, you do this by running the stream + through +\series bold +grab +\series default + twice: +\end_layout + +\begin_layout LyX-Code +... + | grab --pattern='human' | length_seq | grab --eval='SEQ_LEN > 30' +\end_layout + +\begin_layout Standard +Finally, it is possible to do fast matching of expressions from a file using + the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +exact switch. + Each of these expressions has to be matched exactly over the entrie length, + which if useful if you have a file with accession numbers, that you want + to locate in the stream: +\end_layout + +\begin_layout LyX-Code +... + | grab --exact acc_no.txt | ... +\end_layout + +\begin_layout Standard +Using +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +exact is much faster than using +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in, because with +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +exact the expression has to be complete matches, where +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in looks for subpatterns. +\end_layout + +\begin_layout Standard +NB! To get the best speed performance, use the most restrictive +\series bold +grab +\series default + first. +\end_layout + +\begin_layout Subsection +How to remove keys from records? +\end_layout + +\begin_layout Standard +To remove one or more specific keys from all records in the data stream + use +\series bold +remove_keys +\series default + like this: +\end_layout + +\begin_layout LyX-Code +... + | remove_keys --keys=SEQ,SEQ_NAME +\end_layout + +\begin_layout Standard +In the above example SEQ and SEQ_NAME will be removed from all records if + they exists in these. + If all keys are removed from a record, then the record will be removed. +\end_layout + +\begin_layout Subsection +How to rename keys in records? +\end_layout + +\begin_layout Standard +Sometimes you want to rename a record key, +\emph on +e.g. + +\emph default + if you have read in a two column table with sequence name and sequence + in each column (see +\begin_inset LatexCommand ref +reference "sub:How-to-read-table" + +\end_inset + +) without specifying the key names, then the sequence name will be called + V0 and the sequence V1 as default in the +\series bold +read_tab +\series default + biotool. + To rename the V0 and V1 keys we need to run the stream through +\series bold +rename_keys +\series default + twice (one for each key to rename): +\end_layout + +\begin_layout LyX-Code +... + | rename_keys --keys=V0,SEQ_NAME | rename_keys --keys=V1,SEQ +\end_layout + +\begin_layout Standard +The first instance of +\series bold +rename_keys +\series default + replaces all the V0 keys with SEQ_NAME, and the second instance of +\series bold +rename_keys +\series default + replaces all the V1 keys with SEQ. + +\emph on +Et viola +\emph default + the data can now be used in the biotools that requires these keys. +\end_layout + +\begin_layout Section +Manipulating Sequences +\end_layout + +\begin_layout Subsection +How to get sequence lengths? +\end_layout + +\begin_layout Standard +The length for sequences in records can be determined with +\series bold +length_seq +\series default +, which adds the key SEQ_LEN to each record with the sequence length as + the value. + It also generates an extra record that is emitted last with the key TOTAL_SEQ_L +EN showing the total length of all the sequences. +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_seq +\end_layout + +\begin_layout Standard +It is also possible to determine the sequence length using the generic tool + +\series bold +length_vals +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-get-value_length" + +\end_inset + +, which determines the length of the values for a given list of keys: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_vals --keys=SEQ +\end_layout + +\begin_layout Standard +To obtain the total length of all sequences use +\series bold +sum_vals +\series default + like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_vals --keys=SEQ +\end_layout + +\begin_layout LyX-Code +| sum_vals --keys=SEQ_LEN +\end_layout + +\begin_layout Standard +The biotool +\series bold +analyze_seq +\series default + will also determine the length of each sequence (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-analyze" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to analyze sequence composition? +\begin_inset LatexCommand label +name "sub:How-to-analyze" + +\end_inset + + +\end_layout + +\begin_layout Standard +If you want to find out the sequence type, composition, length, as well + as GC content, indel content and proportions of soft and hard masked sequence, + then use +\series bold +analyze_seq +\series default +. + This handy biotool will determine all these things per sequence from which + it is easy to get an overview using the +\series bold +write_tab +\series default + biotool to output a table (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-tab" + +\end_inset + +). + So in order to determine the sequence composition of a FASTA file with + just one entry containing the sequence 'ATCG' we just read the data with + +\series bold +read_fasta +\series default + and run the output through +\series bold +analyze_seq +\series default + which will add the analysis to the record like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq ... +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:D: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +MIX_INDEX: 0.55 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:W: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:G: 16 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SOFT_MASK%: 63.75 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:B: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:V: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +HARD_MASK%: 0.00 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:H: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:S: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:N: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:.: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +GC%: 35.00 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:A: 8 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:Y: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:M: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:T: 44 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SEQ_TYPE: DNA +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:K: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:~: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SEQ: TTTCAGTTTGGGACGGAGTAAGGCCTTCCtttttttttttttttttttttttttttttgagaccgagtcttgctc +tgtcg +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +SEQ_LEN: +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +80 RES:R: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:C: 12 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:-: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +RES:U: 0 +\end_layout + +\begin_layout LyX-Code + +\size scriptsize +--- +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout Standard +Now to make a table of how may As, Ts, Cs, and Gs you can add the following: +\end_layout + +\begin_layout LyX-Code +... + | analyze_seq | write_tab --keys=RES:A,RES:T,RES:C,RES:G +\end_layout + +\begin_layout Standard +Or if you want to see the proportions of hard and soft masked sequence: +\end_layout + +\begin_layout LyX-Code +... + | analyse_seq | write_tab --keys=HARD_MASK%,SOFT_MASK% +\end_layout + +\begin_layout Standard +If you have a stack of sequences in one file and you want to determine the + mean GC content you can do it using the +\series bold +mean_vals +\series default + biotool: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq | mean_vals --keys=GC% +\end_layout + +\begin_layout Standard +Or if you want the total count of Ns you can use +\series bold +sum_vals +\series default + like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq | sum_vals --keys=RES:N +\end_layout + +\begin_layout Standard +The MIX_INDEX key is calculated as the count of the most common residue + over the sequence length, and can be used as a cut-off for removing sequence + tags consisting of mostly one nucleotide: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | analyze_seq | grab --eval='MIX_INDEX<0.85' +\end_layout + +\begin_layout Subsection +How to extract subsequences? +\begin_inset LatexCommand label +name "sub:How-to-extract" + +\end_inset + + +\end_layout + +\begin_layout Standard +In order to extract a subsequence from a longer sequence use the biotool + extract_seq, which will replace the sequence in the record with the subsequence + (this behaviour should probably be modified to be dependant of a +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +replace or a +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_replace switch +\begin_inset Note Note +status collapsed + +\begin_layout Standard +also in split_seq +\end_layout + +\end_inset + +). + So to extract the first 20 residues from all sequences do (first residue + is designated 1): +\end_layout + +\begin_layout LyX-Code +... + | extract_seq --beg=1 --len=20 +\end_layout + +\begin_layout Standard +You can also specify a begin and end coordinate set: +\end_layout + +\begin_layout LyX-Code +... + | extract_seq --beg=20 --end=40 +\end_layout + +\begin_layout Standard +If you want the subsequences from position 20 to the sequence end do: +\end_layout + +\begin_layout LyX-Code +... + | extract_seq --beg=20 +\end_layout + +\begin_layout Standard +If you want to extract subsequences a given distance from the sequence end + you can do this by reversing the sequence with the biotool +\series bold +reverse_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-reverse-seq" + +\end_inset + +, followed by +\series bold +extract_seq +\series default + to get the subsequence, and then +\series bold +reverse_seq +\series default + again to get the subsequence back in the original orientation: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=test.fna | reverse_seq +\end_layout + +\begin_layout LyX-Code +| extract_seq --beg=10 --len=10 | reverse_seq +\end_layout + +\begin_layout Subsection +How to get genomic sequence? +\begin_inset LatexCommand label +name "sub:How-to-get-genomic-sequence" + +\end_inset + + +\end_layout + +\begin_layout Standard +The biotool +\series bold +get_genomic_seq +\series default + can extract subsequences for a given genome specified with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +genome switch explicitly using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +beg and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +end/ +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +len switches: +\end_layout + +\begin_layout LyX-Code +get_genome_seq --genome=<genome> --beg=1 --len=100 +\end_layout + +\begin_layout Standard +Alternatively, +\series bold +get_genome_seq +\series default + can be used to append the corresponding sequence to BED, PSL, and BLAST + records: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<BED file> | get_genome_seq --genome=<genome> +\end_layout + +\begin_layout Standard +It is also possible to include flaking sequence using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +flank switch. + So to include 50 nucleotides upstream and 50 nucleotides downstream for + each BED entry do: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<BED file> | get_genome_seq --genome=<genome> --flank=50 +\end_layout + +\begin_layout Subsection +How to upper-case sequences? +\end_layout + +\begin_layout Standard +Sequences can be shifted from lower case to upper case using +\series bold +uppercase_seq +\series default +: +\end_layout + +\begin_layout LyX-Code +... + | uppercase_seq +\end_layout + +\begin_layout Subsection +How to reverse sequences? +\begin_inset LatexCommand label +name "sub:How-to-reverse-seq" + +\end_inset + + +\end_layout + +\begin_layout Standard +The order of residues in a sequence can be reversed using reverse_seq: +\end_layout + +\begin_layout LyX-Code +... + | reverse_seq +\end_layout + +\begin_layout Standard +Note that in order to reverse/complement a sequence you also need the +\series bold +complement_seq +\series default + biotool (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-complement" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to complement sequences? +\begin_inset LatexCommand label +name "sub:How-to-complement" + +\end_inset + + +\end_layout + +\begin_layout Standard +DNA and RNA sequences can be complemented with +\series bold +complement_seq +\series default +, which automagically determines the sequence type: +\end_layout + +\begin_layout LyX-Code +... + | complement_seq +\end_layout + +\begin_layout Standard +Note that in order to reverse/complement a sequence you also need the +\series bold +reverse_seq +\series default + biotool (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-reverse-seq" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to remove indels from sequnces? +\end_layout + +\begin_layout Standard +Indels can be removed from sequences with the +\series bold +remove_indels +\series default + biotool. + This is useful if you have aligned some sequences (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-align" + +\end_inset + +) and extracted (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-extract" + +\end_inset + +) a block of subsequences from the alignment and you want to use these sequence + in a search where you need to remove the indels first. + '-', '~', and '.' are considered indels: +\end_layout + +\begin_layout LyX-Code +... + | remove_indels +\end_layout + +\begin_layout Subsection +How to shuffle sequences? +\end_layout + +\begin_layout Standard +All residues in sequences in the stream can be shuffled to random positions + using the +\series bold +shuffle_seq +\series default + biotool: +\end_layout + +\begin_layout LyX-Code +... + | shuffle_seq +\end_layout + +\begin_layout Subsection +How to split sequences into overlapping subsequences? +\end_layout + +\begin_layout Standard +Sequences can be slit into overlapping subsequences with the +\series bold +split_seq +\series default + biotool. +\end_layout + +\begin_layout LyX-Code +... + | split_seq --word_size=20 --uniq +\end_layout + +\begin_layout Subsection +How to determine the oligo frequency? +\end_layout + +\begin_layout Standard +In order to determine if any oligo usage is over represented in one or more + sequences you can determine the frequency of oligos of a given size with + +\series bold +oligo_freq +\series default +: +\end_layout + +\begin_layout LyX-Code +... + | oligo_freq --word_size=4 +\end_layout + +\begin_layout Standard +And if you have more than one sequence and want to accumulate the frequences + you need the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +all switch: +\end_layout + +\begin_layout LyX-Code +... + | oligo_freq --word_size=4 --all +\end_layout + +\begin_layout Standard +To get a meaningful result you need to write the resulting frequencies as + a table with +\series bold +write_tab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-tab" + +\end_inset + +), but first it is important to +\series bold +grab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-grab" + +\end_inset + +) the records with the frequencies to avoid full length sequences in the + table: +\end_layout + +\begin_layout LyX-Code +... + | oligo_freq --word_size=4 --all | grab --pattern=OLIGO --keys_only +\end_layout + +\begin_layout LyX-Code +| write_tab --no_stream +\end_layout + +\begin_layout Standard +And the resulting frequency table can be sorted with Unix sort (man sort). +\end_layout + +\begin_layout Subsection +How to search for sequences in genomes? +\end_layout + +\begin_layout Standard +See the following biotool: +\end_layout + +\begin_layout Itemize + +\series bold +patscan_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-patscan" + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +blat_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAT" + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +blast_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAST" + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +vmatch_seq +\series default + +\begin_inset LatexCommand eqref +reference "sub:How-to-use-Vmatch" + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to search sequences for a pattern? +\begin_inset LatexCommand label +name "sub:How-to-use-patscan" + +\end_inset + + +\end_layout + +\begin_layout Standard +It is possible to search sequences in the data stream for patterns using + the +\series bold +patscan_seq +\series default + biotool which utilizes the powerful scan_for_matches engine. + Consult the documentation for scan_for_matches in order to learn how to + define patterns (the documentation is included in Appendix\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sec:scan_for_matches-README" + +\end_inset + +). +\end_layout + +\begin_layout Standard +To search all sequences for a simple pattern consisting of the sequence + ATCGATCG allowing for 3 mismatches, 2 insertions and 1 deletion: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | patscan_seq --pattern='ATCGATCG[3,2,1]' +\end_layout + +\begin_layout Standard +The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern switch takes a comma seperated list of patterns, so if you want + to search for more that one pattern do: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern='ATCGATCG[3,2,1],GCTAGCTA[3,2,1]' +\end_layout + +\begin_layout Standard +It is also possible to have a list of different patterns to search for in + a file with one pattern per line. + In order to get +\series bold +patscan_seq +\series default + to read these patterns use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +pattern_in switch: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern_in=<file> +\end_layout + +\begin_layout Standard +To also scan the complementary strand in nucleotide sequences ( +\series bold +patscan_seq +\series default + automagically determines the sequence type) you need to add the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +comp switch: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern=<pattern> --comp +\end_layout + +\begin_layout Standard +It is also possible to use +\series bold +patscan_seq +\series default + to output those records that does not contain a certain pattern by using + the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +invert switch: +\end_layout + +\begin_layout LyX-Code +... + | patscan_seq --pattern=<pattern> --invert +\end_layout + +\begin_layout Standard +Finally, +\series bold +patscan_seq +\series default + can also scan for patterns in a given genome sequence, instead of sequences + in the stream, using the +\begin_inset ERT +status open + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +genome switch: +\end_layout + +\begin_layout LyX-Code +patscan --pattern=<pattern> --genome=<genome> +\end_layout + +\begin_layout Subsection +How to use BLAT for sequence search? +\begin_inset LatexCommand label +name "sub:How-to-use-BLAT" + +\end_inset + + +\end_layout + +\begin_layout Standard +Sequences in the data stream can be matched against supported genomes using + +\series bold +blat_seq +\series default + which is a biotool using BLAT as the name might suggest. + Currently only Mouse and Human genomes are available and it is not possible + to use OOC files since there is still a need for a local repository for + genome files. + Otherwise it is just: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | blat_seq --genome=<genome> +\end_layout + +\begin_layout Standard +The search results can then be written to file with +\series bold +write_psl +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-PSL" + +\end_inset + +) or +\series bold +write_bed +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-BED" + +\end_inset + +) allthough with +\series bold +write_bed +\series default + some information will be lost). + It is also possible to plot chromosome distribution of the search results + using +\series bold +plot_chrdist +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-plot-chrdist" + +\end_inset + +) or the distribution of the match lengths using +\series bold +plot_lendist +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-plot-lendist" + +\end_inset + +) or a karyogram with the hits using +\series bold +plot_karyogram +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-plot-karyogram" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to use BLAST for sequence search? +\begin_inset LatexCommand label +name "sub:How-to-use-BLAST" + +\end_inset + + +\end_layout + +\begin_layout Standard +Two biotools exist for blasting sequences: +\series bold +create_blast_db +\series default + is used to create the BLAST database required for BLAST which is queried + using the biotool +\series bold +blast_seq +\series default +. + So in order to create a BLAST database from sequences in the data stream + you simple run: +\end_layout + +\begin_layout LyX-Code +... + | create_blast_db --database=my_database --no_stream +\end_layout + +\begin_layout Standard +The type of sequence to use for the database is automagically determined + by +\series bold +create_blast_db +\series default +, but don't have a mixture of peptide and nucleic acids sequences in the + stream. + The +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +database switch takes a path as argument, but will default to 'blastdb_<time_sta +mp> if not set. +\end_layout + +\begin_layout Standard +The resulting database can now be queried with sequences in another data + stream using +\series bold +blast_seq +\series default +: +\end_layout + +\begin_layout LyX-Code +... + | blast_seq --database=my_database +\end_layout + +\begin_layout Standard +Again, the sequence type is determined automagically and the appropriate + BLAST program is guessed (see below table), however, the program name can + be overruled with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +program switch. +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Tabular +<lyxtabular version="3" rows="5" columns="3"> +<features> +<column alignment="center" valignment="top" width="0"> +<column alignment="center" valignment="top" width="0"> +<column alignment="center" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Subject sequence +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Query sequence +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Program guess +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +blastn +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +blastp +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +blastx +\end_layout + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Nucleotide +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +Protein +\end_layout + +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\begin_layout Standard +tblastn +\end_layout + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\end_layout + +\begin_layout Standard +Finally, it is also possible to use +\series bold +blast_seq +\series default + for blasting sequences agains a preformatted genome using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +genome switch instead of the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +database switch: +\end_layout + +\begin_layout LyX-Code +... + | blast_seq --genome=<genome> +\end_layout + +\begin_layout Subsection +How to use Vmatch for sequence search? +\begin_inset LatexCommand label +name "sub:How-to-use-Vmatch" + +\end_inset + + +\end_layout + +\begin_layout Standard +The powerful suffix array software package Vmatch +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.vmatch.de/" + +\end_inset + + +\end_layout + +\end_inset + + can be used for exact mapping of sequences against indexed genomes using + the biotool +\series bold +vmatch_seq +\series default +, which will e.g. + map 700000 ESTs to the human genome locating all 160 mio hits in less than + an hour. + Only nucleotide sequences and sequences longer than 11 nucleotides will + be mapped. + It is recommended that sequences consisting of mostly one nucleotide type + are removed. + This can be done with the +\series bold +analyze_seq +\series default + biotool +\begin_inset LatexCommand eqref +reference "sub:How-to-analyze" + +\end_inset + +. +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> +\end_layout + +\begin_layout Standard +It is also possible to allow for mismatches using the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +hamming_dist switch. + So to allow for 2 mismatches: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=2 +\end_layout + +\begin_layout Standard +Or to allow for 10% mismathing nucleotides: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=10p +\end_layout + +\begin_layout Standard +To allow both indels and mismatches use the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +edit_dist switch. + So to allow for one mismatch or one indel: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=1 +\end_layout + +\begin_layout Standard +Or to allow for 5% indels or mismatches: +\end_layout + +\begin_layout LyX-Code +... + | vmatch_seq --genome=<genome> --hamming_dist=5p +\end_layout + +\begin_layout Standard +Note that using +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +hamming_dist or +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +edit_dist greatly slows down vmatch considerably --- use with care. +\end_layout + +\begin_layout Standard +The resulting SCORE key can be replaced to hold the number of genome matches + of a given sequence (multi-mappers) is the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +count switch is given. +\end_layout + +\begin_layout Subsection +How to find all matches between sequences? +\begin_inset LatexCommand label +name "sub:How-to-find-matches" + +\end_inset + + +\end_layout + +\begin_layout Standard +All matches between two sequences can be determined with the biotool +\series bold +match_seq +\series default +. + The match finding engine underneath the hood of +\series bold +match_seq +\series default + is the super fast suffix tree program MUMmer +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://mummer.sourceforge.net/" + +\end_inset + + +\end_layout + +\end_inset + +, which will locate all forward and reverse matches between huge sequences + in a matter of minutes (if the repeat count is not too high and if the + word size used is appropriate). + Matching two +\emph on +Helicobacter pylori +\emph default + genomes (1.7Mbp) takes around 10 seconds: +\end_layout + +\begin_layout LyX-Code +... + | match_seq --word_size=20 --direction=both +\end_layout + +\begin_layout Standard +The output from +\series bold +match_seq +\series default + can be used to generate a dot plot with +\series bold +plot_matches +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-generate-dotplot" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to align sequences? +\begin_inset LatexCommand label +name "sub:How-to-align" + +\end_inset + + +\end_layout + +\begin_layout Standard +Sequences in the stream can be aligned with the +\series bold +align_seq +\series default + biotool that uses Muscle +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.drive5.com/muscle/muscle.html" + +\end_inset + + +\end_layout + +\end_inset + + as aligment engine. + Currently you cannot change any of the Muscle alignment parameters and + +\series bold +align_seq +\series default + will create an alignment based on the defaults (which are really good!): +\end_layout + +\begin_layout LyX-Code +... + | align_seq +\end_layout + +\begin_layout Standard +The aligned output can be written to file in FASTA format using +\series bold +write_fasta +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-fasta" + +\end_inset + +) or in pretty text using +\series bold +write_align +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-alignment" + +\end_inset + +). +\end_layout + +\begin_layout Subsection +How to create a weight matrix? +\end_layout + +\begin_layout Standard +If you want a weight matrix to show the sequence composition of a stack + of sequences you can use the biotool create_weight_matrix: +\end_layout + +\begin_layout LyX-Code +... + | create_weight_matrix +\end_layout + +\begin_layout Standard +The result can be output in percent using the +\begin_inset ERT +status open + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +percent switch: +\end_layout + +\begin_layout LyX-Code +... + | create_weight_matrix --percent +\end_layout + +\begin_layout Standard +The weight matrix can be written as tabular output with +\series bold +write_tab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-tab" + +\end_inset + +) after removeing the records containing SEQ with +\series bold +grab +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-grab" + +\end_inset + +): +\end_layout + +\begin_layout LyX-Code +... + | create_weight_matrix | grab --invert --keys=SEQ --keys_only +\end_layout + +\begin_layout LyX-Code +| write_tab --no_stream +\end_layout + +\begin_layout Standard +The V0 column will hold the residue, while the rest of the columns will + hold the frequencies for each sequence position. +\end_layout + +\begin_layout Section +Plotting +\end_layout + +\begin_layout Standard +There exists several biotools for plotting. + Some of these are based on GNUplot +\begin_inset Foot +status open + +\begin_layout Standard +\begin_inset LatexCommand url +target "http://www.gnuplot.info/" + +\end_inset + + +\end_layout + +\end_inset + +, which is an extremely powerful platform to generate all sorts of plots + and even though GNUplot has quite a steep learning curve, the biotools + utilizing GNUplot are simple to use. + GNUplot is able to output a lot of different formats (called terminals + in GNUplot), but the biotools focusses on three formats only: +\end_layout + +\begin_layout Enumerate +The 'dumb' terminal is default to the GNUplot based biotools and will output + a plot in crude ASCII text (Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Dumb-terminal" + +\end_inset + +). + This is quite nice for a quick and dirty plot to get an overview of your + data . +\end_layout + +\begin_layout Enumerate +The 'post' or 'postscript' terminal output postscript code which is publication + grade graphics that can be viewed with applications such as Ghostview, + Photoshop, and Preview. +\end_layout + +\begin_layout Enumerate +The 'svg' terminal output's scalable vector graphics (SVG) which is a vector + based format. + SVG is great because you can edit the resulting plot using Photoshop or + Inkscape +\begin_inset Foot +status collapsed + +\begin_layout Standard +Inkscape is a really handy drawing program that is free and open source. + Availble at +\begin_inset LatexCommand htmlurl +target "http://www.inkscape.org" + +\end_inset + + +\end_layout + +\end_inset + + if you want to add additional labels, captions, arrows, and so on and then + save the result in different formats, such as postscript without loosing + resolution. +\end_layout + +\begin_layout Standard +The biotools for plotting that are not based on GNUplot only output SVG + (that may change in the future). +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename lendist_ascii.png + lyxscale 70 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Dumb-terminal" + +\end_inset + +Dumb terminal +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +The output of a length distribution plot in the default 'dumb terminal' + to the terminal window. + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a histogram? +\begin_inset LatexCommand label +name "How-to-plot-histogram" + +\end_inset + + +\end_layout + +\begin_layout Standard +A generic histogram for a given value can be plotted with the biotool +\series bold +plot_histogram +\series default + (Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Histogram" + +\end_inset + +): +\end_layout + +\begin_layout LyX-Code +... + | plot_histogram --key=TISSUE --no_stream +\end_layout + +\begin_layout Standard +(Figure missing) +\end_layout + +\begin_layout Standard +\noindent +\align left +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename histogram.png + lyxscale 70 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Histogram" + +\end_inset + +Histogram +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a length distribution? +\begin_inset LatexCommand label +name "sub:How-to-plot-lendist" + +\end_inset + + +\end_layout + +\begin_layout Standard +Plotting of length distributions, weather sequence lengths, patterns lengths, + hit lengths, +\emph on +etc. + +\emph default + is a really handy thing and can be done with the the biotool +\series bold +plot_lendist +\series default +. + If you have a file with FASTA entries and want to plot the length distribution + you do it like this: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | length_seq +\end_layout + +\begin_layout LyX-Code +| plot_lendist --key=SEQ_LEN --no_stream +\end_layout + +\begin_layout Standard +The result will be written to the default dumb terminal and will look like + Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Dumb-terminal" + +\end_inset + +. +\end_layout + +\begin_layout Standard +If you instead want the result in postscript format you can do: +\end_layout + +\begin_layout LyX-Code +... + | plot_lendist --key=SEQ_LEN --terminal=post --result_out=file.ps +\end_layout + +\begin_layout Standard +That will generate the plot and save it to file, but not interrupt the data + stream which can then be used in further analysis. + You can also save the plot implicetly using '>', however, it is then important + to terminate the stream with the +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream switch: +\end_layout + +\begin_layout LyX-Code +... + | plot_lendist --key=SEQ_LEN --terminal=post --no_stream > file.ps +\end_layout + +\begin_layout Standard +The resulting plot can be seen in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Length-distribution" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename lendist.ps + lyxscale 50 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Length-distribution" + +\end_inset + +Length distribution +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +Length distribution of 630 piRNA like RNAs. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a chromosome distribution? +\begin_inset LatexCommand label +name "sub:How-to-plot-chrdist" + +\end_inset + + +\end_layout + +\begin_layout Standard +If you have the result of a sequence search against a multi chromosome genome, + it is very practical to be able to plot the distribution of search hits + on the different chromosomes. + This can be done with +\series bold +plot_chrdist +\series default +: +\end_layout + +\begin_layout LyX-Code +read_fasta --data_in=<file> | blat_genome | plot_chrdist --no_stream +\end_layout + +\begin_layout Standard +The above example will result in a crude plot using the 'dumb' terminal, + and if you want to mess around with the results from the BLAT search you + probably want to save the result to file first (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-write-PSL" + +\end_inset + +). + To plot the chromosome distribution from the saved search result you can + do: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=file.bed | plot_chrdist --terminal=post --result_out=plot.ps +\end_layout + +\begin_layout Standard +That will result in the output show in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Chromosome-distribution" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard + +\end_layout + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename chrdist.ps + lyxscale 50 + width 12cm + rotateAngle 90 + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Chromosome-distribution" + +\end_inset + +Chromosome distribution +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to generate a dotplot? +\begin_inset LatexCommand label +name "sub:How-to-generate-dotplot" + +\end_inset + + +\end_layout + +\begin_layout Standard +A dotplot is a powerful way to get an overview of the size and location + of sequence insertions, deletions, and duplications between two sequences. + Generating a dotplot with biotools is a two step process where you initially + find all matches between two sequences using the tool +\series bold +match_seq +\series default + (see\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "sub:How-to-find-matches" + +\end_inset + +) and plot the resulting matches with +\series bold +plot_matches +\series default +. + Matching and plotting two +\emph on +Helicobacter pylori +\emph default + genomes (1.7Mbp) takes around 10 seconds: +\end_layout + +\begin_layout LyX-Code +... + | match_seq | plot_matches --terminal=post --result_out=plot.ps +\end_layout + +\begin_layout Standard +The resulting dotplot is in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Dotplot" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename dotplot.ps + lyxscale 50 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Dotplot" + +\end_inset + +Dotplot +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +Forward matches are displayed in green while reverse matches are displayed + in red. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a sequence logo? +\end_layout + +\begin_layout Standard +Sequence logos can be generate with +\series bold +plot_seqlogo +\series default +. + The sequnce type is determined automagically and an entropy scale of 2 + bits and 4 bits is used for nucleotide and peptide sequences, respectively +\begin_inset Foot +status collapsed + +\begin_layout Standard +\begin_inset LatexCommand htmlurl +target "http://www.ccrnp.ncifcrf.gov/~toms/paper/hawaii/latex/node5.html" + +\end_inset + + +\end_layout + +\end_inset + +. +\end_layout + +\begin_layout LyX-Code +... + | plot_seqlogo --no_stream --result_out=seqlogo.svg +\end_layout + +\begin_layout Standard +An example of a sequence logo can be seen in Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Sequence-logo" + +\end_inset + +. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename seqlogo.png + lyxscale 50 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Sequence-logo" + +\end_inset + +Sequence logo +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Subsection +How to plot a karyogram? +\begin_inset LatexCommand label +name "sub:How-to-plot-karyogram" + +\end_inset + + +\end_layout + +\begin_layout Standard +To plot search hits on genomes use +\series bold +plot_karyogram +\series default +, which will output a nice karyogram in SVG graphics: +\end_layout + +\begin_layout LyX-Code +... + | plot_karyogram --result_out=karyogram.svg +\end_layout + +\begin_layout Standard +The banding data is taken from the UCSC genome browser database and currently + only Human and Mouse is supported. + Fig.\InsetSpace ~ + +\begin_inset LatexCommand ref +reference "fig:Karyogram" + +\end_inset + + shows the distribution of piRNA like RNAs matched to the Human genome. +\end_layout + +\begin_layout Standard +\begin_inset Float figure +wide false +sideways false +status open + +\begin_layout Standard +\noindent +\align center +\begin_inset Graphics + filename karyogram.png + lyxscale 35 + width 12cm + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Caption + +\begin_layout Standard +\begin_inset LatexCommand label +name "fig:Karyogram" + +\end_inset + +Karyogram +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Quote +Hits from a search of piRNA like RNAs in the Human genome is displayed as + short horizontal bars. +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Uploading Results +\end_layout + +\begin_layout Subsection +How do I display my results in the UCSC Genome Browser? +\end_layout + +\begin_layout Standard +Results from the list of biotools below can be uploaded directly to a local + mirror of the UCSC Genome Browser using the biotool +\series bold +upload_to_ucsc +\series default +: +\end_layout + +\begin_layout Itemize +patscan_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-patscan" + +\end_inset + + +\end_layout + +\begin_layout Itemize +blat_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAT" + +\end_inset + + +\end_layout + +\begin_layout Itemize +blast_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-BLAST" + +\end_inset + + +\end_layout + +\begin_layout Itemize +vmatch_seq +\begin_inset LatexCommand eqref +reference "sub:How-to-use-Vmatch" + +\end_inset + + +\end_layout + +\begin_layout Standard +The syntax for uploading data the most simple way requires two mandatory + switches: +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +database, which is the UCSC database name (such as hg18, mm9, etc.) and +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +table which should be the users initials followed by an underscore and a + short description of the data: +\end_layout + +\begin_layout LyX-Code +... + | upload_to_ucsc --database=hg18 --table=mah_snoRNAs +\end_layout + +\begin_layout Standard +The +\series bold +upload_to_ucsc +\series default + biotool modifies the users ~/ucsc/my_tracks.ra file automagically (a backup + is created with the name ~/ucsc/my_tracks.ra~) with default values that + can be overridden using the following switches: +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +short_label - Short label for track - Default=database->table +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +long_label - Long label for track - Default=database->table +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +group - Track group name - Default=<user name as defined in env> +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +priority - Track display priority - Default=1 +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +color - Track color - Default=147,73,42 +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +chunk_size - Chunks for loading - Default=10000000 +\end_layout + +\begin_layout Itemize +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +visibility - Track visibility - Default=pack +\end_layout + +\begin_layout Standard +Also, data in BED or PSL format can be uploaded with +\series bold +upload_to_ucsc +\series default + as long as these reference to genomes and chromosomes existing in the UCSC + Genome Browser: +\end_layout + +\begin_layout LyX-Code +read_bed --data_in=<bed file> | upload_to_ucsc ... +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code +read_psl --data_in=<psl file> | upload_to_ucsc ... +\end_layout + +\begin_layout Section +Power Scripting +\end_layout + +\begin_layout Standard +It is possible to do commandline scripting of biotool records using Perl. + Because a biotool record essentially is a hash structure, you can pass + records to +\series bold +bioscript +\series default + command, which is a wrapper around the Perl executable that allows direct + manipulations of the records using the power of Perl. +\end_layout + +\begin_layout Standard +In the below example we replace in all records the value to the CHR key + with a forthrunning number: +\end_layout + +\begin_layout LyX-Code +... + | bioscript 'while($r=get_record( +\backslash +*STDIN)){$r->{CHR}=$i++; put_record($r)}' +\end_layout + +\begin_layout Standard +Something more useful would probably be to create custom FASTA headers. + E.g. + if we read in a BED file, lookup the genomic sequence, create a custom + FASTA header with +\series bold +bioscript +\series default + and output FASTA entries: +\end_layout + +\begin_layout LyX-Code +... + | bioscript 'while($r=get_record( +\backslash +*STDIN)){$r->{SEQ_NAME}= // +\end_layout + +\begin_layout LyX-Code +join("_",$r->{CHR},$r->{CHR_BEG},$r->{CHR_END}); put_record($r)}' +\end_layout + +\begin_layout Standard +And the output: +\end_layout + +\begin_layout LyX-Code +>chr2L_21567527_21567550 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_693380_693403 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_13859534_13859557 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_9005090_9005113 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_2106825_2106848 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout LyX-Code +>chr2L_14649031_14649054 +\end_layout + +\begin_layout LyX-Code +taccaaacggatgcctcagacatc +\end_layout + +\begin_layout Section +Trouble shooting +\end_layout + +\begin_layout Standard +Shoot the messenger! +\end_layout + +\begin_layout Section +\start_of_appendix +Keys +\begin_inset LatexCommand label +name "sec:Keys" + +\end_inset + + +\end_layout + +\begin_layout Standard +HIT +\end_layout + +\begin_layout Standard +HIT_BEG +\end_layout + +\begin_layout Standard +HIT_END +\end_layout + +\begin_layout Standard +HIT_LEN +\end_layout + +\begin_layout Standard +HIT_NAME +\end_layout + +\begin_layout Standard +PATTERN +\end_layout + +\begin_layout Section +Switches +\begin_inset LatexCommand label +name "sec:Switches" + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_in +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +stream_out +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +no_stream +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +data_in +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +result_out +\end_layout + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Standard + +- +\backslash +/- +\end_layout + +\end_inset + +num +\end_layout + +\begin_layout Section +scan_for_matches README +\begin_inset LatexCommand label +name "sec:scan_for_matches-README" + +\end_inset + + +\end_layout + +\begin_layout LyX-Code + scan_for_matches: +\end_layout + +\begin_layout LyX-Code + A Program to Scan Nucleotide or Protein Sequences for Matching Patterns +\end_layout + +\begin_layout LyX-Code + Ross Overbeek +\end_layout + +\begin_layout LyX-Code + MCS +\end_layout + +\begin_layout LyX-Code + Argonne National Laboratory +\end_layout + +\begin_layout LyX-Code + Argonne, IL 60439 +\end_layout + +\begin_layout LyX-Code + USA +\end_layout + +\begin_layout LyX-Code +Scan_for_matches is a utility that we have written to search for +\end_layout + +\begin_layout LyX-Code +patterns in DNA and protein sequences. + I wrote most of the code, +\end_layout + +\begin_layout LyX-Code +although David Joerg and Morgan Price wrote sections of an +\end_layout + +\begin_layout LyX-Code +earlier version. + The whole notion of pattern matching has a rich +\end_layout + +\begin_layout LyX-Code +history, and we borrowed liberally from many sources. + However, it is +\end_layout + +\begin_layout LyX-Code +worth noting that we were strongly influenced by the elegant tools +\end_layout + +\begin_layout LyX-Code +developed and distributed by David Searls. + My intent is to make the +\end_layout + +\begin_layout LyX-Code +existing tool available to anyone in the research community that might +\end_layout + +\begin_layout LyX-Code +find it useful. + I will continue to try to fix bugs and make suggested +\end_layout + +\begin_layout LyX-Code +enhancements, at least until I feel that a superior tool exists. +\end_layout + +\begin_layout LyX-Code +Hence, I would appreciate it if all bug reports and suggestions are +\end_layout + +\begin_layout LyX-Code +directed to me at Overbeek@mcs.anl.gov. + +\end_layout + +\begin_layout LyX-Code +I will try to log all bug fixes and report them to users that send me +\end_layout + +\begin_layout LyX-Code +their email addresses. + I do not require that you give me your name +\end_layout + +\begin_layout LyX-Code +and address. + However, if you do give it to me, I will try to notify +\end_layout + +\begin_layout LyX-Code +you of serious problems as they are discovered. +\end_layout + +\begin_layout LyX-Code +Getting Started: +\end_layout + +\begin_layout LyX-Code + The distribution should contain at least the following programs: +\end_layout + +\begin_layout LyX-Code + README - This document +\end_layout + +\begin_layout LyX-Code + ggpunit.c - One of the two source files +\end_layout + +\begin_layout LyX-Code + scan_for_matches.c - The second source file +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + run_tests - A perl script to test things +\end_layout + +\begin_layout LyX-Code + show_hits - A handy perl script +\end_layout + +\begin_layout LyX-Code + test_dna_input - Test sequences for DNA +\end_layout + +\begin_layout LyX-Code + test_dna_patterns - Test patterns for DNA scan +\end_layout + +\begin_layout LyX-Code + test_output - Desired output from test +\end_layout + +\begin_layout LyX-Code + test_prot_input - Test protein sequences +\end_layout + +\begin_layout LyX-Code + test_prot_patterns - Test patterns for proteins +\end_layout + +\begin_layout LyX-Code + testit - a perl script used for test +\end_layout + +\begin_layout LyX-Code + Only the first three files are required. + The others are useful, +\end_layout + +\begin_layout LyX-Code + but only if you have Perl installed on your system. + If you do +\end_layout + +\begin_layout LyX-Code + have Perl, I suggest that you type +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + which perl +\end_layout + +\begin_layout LyX-Code + to find out where it installed. + On my system, I get the following +\end_layout + +\begin_layout LyX-Code + response: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + clone% which perl +\end_layout + +\begin_layout LyX-Code + /usr/local/bin/perl +\end_layout + +\begin_layout LyX-Code + indicating that Perl is installed in /usr/local/bin. + Anyway, once +\end_layout + +\begin_layout LyX-Code + you know where it is installed, edit the first line of files +\end_layout + +\begin_layout LyX-Code + testit +\end_layout + +\begin_layout LyX-Code + show_hits +\end_layout + +\begin_layout LyX-Code + replacing /usr/local/bin/perl with the appropriate location. + I +\end_layout + +\begin_layout LyX-Code + will assume that you can do this, although it is not critical (it +\end_layout + +\begin_layout LyX-Code + is needed only to test the installation and to use the "show_hits" +\end_layout + +\begin_layout LyX-Code + utility). + Perl is not required to actually install and run +\end_layout + +\begin_layout LyX-Code + scan_for_matches. + +\end_layout + +\begin_layout LyX-Code + If you do not have Perl, I suggest you get it and install it (it +\end_layout + +\begin_layout LyX-Code + is a wonderful utility). + Information about Perl and how to get it +\end_layout + +\begin_layout LyX-Code + can be found in the book "Programming Perl" by Larry Wall and +\end_layout + +\begin_layout LyX-Code + Randall L. + Schwartz, published by O'Reilly & Associates, Inc. +\end_layout + +\begin_layout LyX-Code + To get started, you will need to compile the program. + I do this +\end_layout + +\begin_layout LyX-Code + using +\end_layout + +\begin_layout LyX-Code + gcc -O -o scan_for_matches ggpunit.c scan_for_matches.c +\end_layout + +\begin_layout LyX-Code + If you do not use GNU C, use +\end_layout + +\begin_layout LyX-Code + cc -O -DCC -o scan_for_matches ggpunit.c scan_for_matches.c +\end_layout + +\begin_layout LyX-Code + which works on my Sun. + +\end_layout + +\begin_layout LyX-Code + Once you have compiled scan_for_matches, you can verify that it +\end_layout + +\begin_layout LyX-Code + works with +\end_layout + +\begin_layout LyX-Code + clone% run_tests tmp +\end_layout + +\begin_layout LyX-Code + clone% diff tmp test_output +\end_layout + +\begin_layout LyX-Code + You may get a few strange lines of the sort +\end_layout + +\begin_layout LyX-Code + clone% run_tests tmp +\end_layout + +\begin_layout LyX-Code + rm: tmp: No such file or directory +\end_layout + +\begin_layout LyX-Code + clone% diff tmp test_output +\end_layout + +\begin_layout LyX-Code + These should cause no concern. + However, if the "diff" shows that +\end_layout + +\begin_layout LyX-Code + tmp and test_output are different, contact me (you have a +\end_layout + +\begin_layout LyX-Code + problem). + +\end_layout + +\begin_layout LyX-Code + You should now be able to use scan_for_matches by following the +\end_layout + +\begin_layout LyX-Code + instructions given below (which is all the normal user should have +\end_layout + +\begin_layout LyX-Code + to understand, once things are installed properly). +\end_layout + +\begin_layout LyX-Code + ============================================================== +\end_layout + +\begin_layout LyX-Code +How to run scan_for_matches: +\end_layout + +\begin_layout LyX-Code + To run the program, you type need to create two files +\end_layout + +\begin_layout LyX-Code + 1. + the first file contains the pattern you wish to scan for; I'll +\end_layout + +\begin_layout LyX-Code + call this file pat_file in what follows (but any name is ok) +\end_layout + +\begin_layout LyX-Code + 2. + the second file contains a set of sequences to scan. + These +\end_layout + +\begin_layout LyX-Code + should be in "fasta format". + Just look at the contents of +\end_layout + +\begin_layout LyX-Code + test_dna_input to see examples of this format. + Basically, +\end_layout + +\begin_layout LyX-Code + each sequence begins with a line of the form +\end_layout + +\begin_layout LyX-Code + >sequence_id +\end_layout + +\begin_layout LyX-Code + and is followed by one or more lines containing the sequence. +\end_layout + +\begin_layout LyX-Code + Once these files have been created, you just use +\end_layout + +\begin_layout LyX-Code + scan_for_matches pat_file < input_file +\end_layout + +\begin_layout LyX-Code + to scan all of the input sequences for the given pattern. + As an +\end_layout + +\begin_layout LyX-Code + example, suppose that pat_file contains a single line of the form +\end_layout + +\begin_layout LyX-Code + p1=4...7 3...8 ~p1 +\end_layout + +\begin_layout LyX-Code + Then, +\end_layout + +\begin_layout LyX-Code + scan_for_matches pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + should produce two "hits". + When I run this on my machine, I get +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + >tst1:[6,27] +\end_layout + +\begin_layout LyX-Code + cguaacc ggttaacc gguuacg +\end_layout + +\begin_layout LyX-Code + >tst2:[6,27] +\end_layout + +\begin_layout LyX-Code + CGUAACC GGTTAACC GGUUACG +\end_layout + +\begin_layout LyX-Code + clone% +\end_layout + +\begin_layout LyX-Code +Simple Patterns Built by Matching Ranges and Reverse Complements +\end_layout + +\begin_layout LyX-Code + Let me first explain this simple pattern: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + p1=4...7 3...8 ~p1 +\end_layout + +\begin_layout LyX-Code + The pattern consists of three "pattern units" separated by spaces. +\end_layout + +\begin_layout LyX-Code + The first pattern unit is +\end_layout + +\begin_layout LyX-Code + p1=4...7 +\end_layout + +\begin_layout LyX-Code + which means "match 4 to 7 characters and call them p1". + The +\end_layout + +\begin_layout LyX-Code + second pattern unit is +\end_layout + +\begin_layout LyX-Code + 3...8 +\end_layout + +\begin_layout LyX-Code + which means "then match 3 to 8 characters". + The last pattern unit +\end_layout + +\begin_layout LyX-Code + is +\end_layout + +\begin_layout LyX-Code + ~p1 +\end_layout + +\begin_layout LyX-Code + which means "match the reverse complement of p1". + The first +\end_layout + +\begin_layout LyX-Code + reported hit is shown as +\end_layout + +\begin_layout LyX-Code + >tst1:[6,27] +\end_layout + +\begin_layout LyX-Code + cguaacc ggttaacc gguuacg +\end_layout + +\begin_layout LyX-Code + which states that characters 6 through 27 of sequence tst1 were +\end_layout + +\begin_layout LyX-Code + matched. + "cguaac" matched the first pattern unit, "ggttaacc" the +\end_layout + +\begin_layout LyX-Code + second, and "gguuacg" the third. + This is an example of a common +\end_layout + +\begin_layout LyX-Code + type of pattern used to search for sections of DNA or RNA that +\end_layout + +\begin_layout LyX-Code + would fold into a hairpin loop. +\end_layout + +\begin_layout LyX-Code +Searching Both Strands +\end_layout + +\begin_layout LyX-Code + Now for a short aside: scan_for_matches only searched the +\end_layout + +\begin_layout LyX-Code + sequences in the input file; it did not search the opposite +\end_layout + +\begin_layout LyX-Code + strand. + With a pattern of the sort we just used, there is not +\end_layout + +\begin_layout LyX-Code + need o search the opposite strand. + However, it is normally the +\end_layout + +\begin_layout LyX-Code + case that you will wish to search both the sequence and the +\end_layout + +\begin_layout LyX-Code + opposite strand (i.e., the reverse complement of the sequence). +\end_layout + +\begin_layout LyX-Code + To do that, you would just use the "-c" command line. + For example, +\end_layout + +\begin_layout LyX-Code + scan_for_matches -c pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + Hits on the opposite strand will show a beginning location greater +\end_layout + +\begin_layout LyX-Code + than te end location of the match. +\end_layout + +\begin_layout LyX-Code +Defining Pairing Rules and Allowing Mismatches, Insertions, and Deletions +\end_layout + +\begin_layout LyX-Code + Let us stop now and ask "What additional features would one need to +\end_layout + +\begin_layout LyX-Code + really find the kinds of loop structures that characterize tRNAs, +\end_layout + +\begin_layout LyX-Code + rRNAs, and so forth?" I can immediately think of two: +\end_layout + +\begin_layout LyX-Code + a) you will need to be able to allow non-standard pairings +\end_layout + +\begin_layout LyX-Code + (those other than G-C and A-U), and +\end_layout + +\begin_layout LyX-Code + b) you will need to be able to tolerate some number of +\end_layout + +\begin_layout LyX-Code + mismatches and bulges. +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + Let me first show you how to handle non-standard "rules for +\end_layout + +\begin_layout LyX-Code + pairing in reverse complements". + Consider the following pattern, +\end_layout + +\begin_layout LyX-Code + which I show as two line (you may use as many lines as you like in +\end_layout + +\begin_layout LyX-Code + forming a pattern, although you can only break a pattern at points +\end_layout + +\begin_layout LyX-Code + where space would be legal): +\end_layout + +\begin_layout LyX-Code + r1={au,ua,gc,cg,gu,ug,ga,ag} +\end_layout + +\begin_layout LyX-Code + p1=2...3 0...4 p2=2...5 1...5 r1~p2 0...4 ~p1 +\end_layout + +\begin_layout LyX-Code + The first "pattern unit" does not actually match anything; rather, +\end_layout + +\begin_layout LyX-Code + it defines a "pairing rule" in which standard pairings are +\end_layout + +\begin_layout LyX-Code + allowed, as well as G-A and A-G (in case you wondered, Us and Ts +\end_layout + +\begin_layout LyX-Code + and upper and lower case can be used interchangably; for example +\end_layout + +\begin_layout LyX-Code + r1={AT,UA,gc,cg} could be used to define the "standard rule" for +\end_layout + +\begin_layout LyX-Code + pairings). + The second line consists of six pattern units which +\end_layout + +\begin_layout LyX-Code + may be interpreted as follows: +\end_layout + +\begin_layout LyX-Code + p1=2...3 match 2 or 3 characters (call it p1) +\end_layout + +\begin_layout LyX-Code + 0...4 match 0 to 4 characters +\end_layout + +\begin_layout LyX-Code + p2=2...5 match 2 to 5 characters (call it p2) +\end_layout + +\begin_layout LyX-Code + 1...5 match 1 to 5 characters +\end_layout + +\begin_layout LyX-Code + r1~p2 match the reverse complement of p2, +\end_layout + +\begin_layout LyX-Code + allowing G-A and A-G pairs +\end_layout + +\begin_layout LyX-Code + 0...4 match 0 to 4 characters +\end_layout + +\begin_layout LyX-Code + ~p1 match the reverse complement of p1 +\end_layout + +\begin_layout LyX-Code + allowing only G-C, C-G, A-T, and T-A pairs +\end_layout + +\begin_layout LyX-Code + Thus, r1~p2 means "match the reverse complement of p2 using rule r1". +\end_layout + +\begin_layout LyX-Code + Now let us consider the issue of tolerating mismatches and bulges. +\end_layout + +\begin_layout LyX-Code + You may add a "qualifier" to the pattern unit that gives the +\end_layout + +\begin_layout LyX-Code + tolerable number of "mismatches, deletions, and insertions". +\end_layout + +\begin_layout LyX-Code + Thus, +\end_layout + +\begin_layout LyX-Code + p1=10...10 3...8 ~p1[1,2,1] +\end_layout + +\begin_layout LyX-Code + means that the third pattern unit must match 10 characters, +\end_layout + +\begin_layout LyX-Code + allowing one "mismatch" (a pairing other than G-C, C-G, A-T, or +\end_layout + +\begin_layout LyX-Code + T-A), two deletions (a deletion is a character that occurs in p1, +\end_layout + +\begin_layout LyX-Code + but has been "deleted" from the string matched by ~p1), and one +\end_layout + +\begin_layout LyX-Code + insertion (an "insertion" is a character that occurs in the string +\end_layout + +\begin_layout LyX-Code + matched by ~p1, but not for which no corresponding character +\end_layout + +\begin_layout LyX-Code + occurs in p1). + In this case, the pattern would match +\end_layout + +\begin_layout LyX-Code + ACGTACGTAC GGGGGGGG GCGTTACCT +\end_layout + +\begin_layout LyX-Code + which is, you must admit, a fairly weak loop. + It is common to +\end_layout + +\begin_layout LyX-Code + allow mismatches, but you will find yourself using insertions and +\end_layout + +\begin_layout LyX-Code + deletions much more rarely. + In any event, you should note that +\end_layout + +\begin_layout LyX-Code + allowing mismatches, insertions, and deletions does force the +\end_layout + +\begin_layout LyX-Code + program to try many additional possible pairings, so it does slow +\end_layout + +\begin_layout LyX-Code + things down a bit. +\end_layout + +\begin_layout LyX-Code +How Patterns Are Matched +\end_layout + +\begin_layout LyX-Code + Now is as good a time as any to discuss the basic flow of control +\end_layout + +\begin_layout LyX-Code + when matching patterns. + Recall that a "pattern" is a sequence of +\end_layout + +\begin_layout LyX-Code + "pattern units". + Suppose that the pattern units were +\end_layout + +\begin_layout LyX-Code + u1 u2 u3 u4 ... + un +\end_layout + +\begin_layout LyX-Code + The scan of a sequence S begins by setting the current position +\end_layout + +\begin_layout LyX-Code + to 1. + Then, an attempt is made to match u1 starting at the +\end_layout + +\begin_layout LyX-Code + current position. + Each attempt to match a pattern unit can +\end_layout + +\begin_layout LyX-Code + succeed or fail. + If it succeeds, then an attempt is made to match +\end_layout + +\begin_layout LyX-Code + the next unit. + If it fails, then an attempt is made to find an +\end_layout + +\begin_layout LyX-Code + alternative match for the immediately preceding pattern unit. + If +\end_layout + +\begin_layout LyX-Code + this succeeds, then we proceed forward again to the next unit. + If +\end_layout + +\begin_layout LyX-Code + it fails we go back to the preceding unit. + This process is called +\end_layout + +\begin_layout LyX-Code + "backtracking". + If there are no previous units, then the current +\end_layout + +\begin_layout LyX-Code + position is incremented by one, and everything starts again. + This +\end_layout + +\begin_layout LyX-Code + proceeds until either the current position goes past the end of +\end_layout + +\begin_layout LyX-Code + the sequence or all of the pattern units succeed. + On success, +\end_layout + +\begin_layout LyX-Code + scan_for_matches reports the "hit", the current position is set +\end_layout + +\begin_layout LyX-Code + just past the hit, and an attempt is made to find another hit. +\end_layout + +\begin_layout LyX-Code + If you wish to limit the scan to simply finding a maximum of, say, +\end_layout + +\begin_layout LyX-Code + 10 hits, you can use the -n option (-n 10 would set the limit to +\end_layout + +\begin_layout LyX-Code + 10 reported hits). + For example, +\end_layout + +\begin_layout LyX-Code + scan_for_matches -c -n 1 pat_file < test_dna_input +\end_layout + +\begin_layout LyX-Code + would search for just the first hit (and would stop searching the +\end_layout + +\begin_layout LyX-Code + current sequences or any that follow in the input file). +\end_layout + +\begin_layout LyX-Code +Searching for repeats: +\end_layout + +\begin_layout LyX-Code + In the last section, I discussed almost all of the details +\end_layout + +\begin_layout LyX-Code + required to allow you to look for repeats. + Consider the following +\end_layout + +\begin_layout LyX-Code + set of patterns: +\end_layout + +\begin_layout LyX-Code + p1=6...6 3...8 p1 (find exact 6 character repeat separated +\end_layout + +\begin_layout LyX-Code + by to 8 characters) +\end_layout + +\begin_layout LyX-Code + p1=6...6 3..8 p1[1,0,0] (allow one mismatch) +\end_layout + +\begin_layout LyX-Code + p1=3...3 p1[1,0,0] p1[1,0,0] p1[1,0,0] +\end_layout + +\begin_layout LyX-Code + (match 12 characters that are the remains +\end_layout + +\begin_layout LyX-Code + of a 3-character sequence occurring 4 times) +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + p1=4...8 0...3 p2=6...8 p1 0...3 p2 +\end_layout + +\begin_layout LyX-Code + (This would match things like +\end_layout + +\begin_layout LyX-Code + ATCT G TCTTT ATCT TG TCTTT +\end_layout + +\begin_layout LyX-Code + ) +\end_layout + +\begin_layout LyX-Code +Searching for particular sequences: +\end_layout + +\begin_layout LyX-Code + Occasionally, one wishes to match a specific, known sequence. +\end_layout + +\begin_layout LyX-Code + In such a case, you can just give the sequence (along with an +\end_layout + +\begin_layout LyX-Code + optional statement of the allowable mismatches, insertions, and +\end_layout + +\begin_layout LyX-Code + deletions). + Thus, +\end_layout + +\begin_layout LyX-Code + p1=6...8 GAGA ~p1 (match a hairpin with GAGA as the loop) +\end_layout + +\begin_layout LyX-Code + RRRRYYYY (match 4 purines followed by 4 pyrimidines) +\end_layout + +\begin_layout LyX-Code + TATAA[1,0,0] (match TATAA, allowing 1 mismatch) +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code +Matches against a "weight matrix": +\end_layout + +\begin_layout LyX-Code + I will conclude my examples of the types of pattern units +\end_layout + +\begin_layout LyX-Code + available for matching against nucleotide sequences by discussing a +\end_layout + +\begin_layout LyX-Code + crude implemetation of matching using a "weight matrix". + While I +\end_layout + +\begin_layout LyX-Code + am less than overwhelmed with the syntax that I chose, I think that +\end_layout + +\begin_layout LyX-Code + the reader should be aware that I was thinking of generating +\end_layout + +\begin_layout LyX-Code + patterns containing such pattern units automatically from +\end_layout + +\begin_layout LyX-Code + alignments (and did not really plan on typing such things in by +\end_layout + +\begin_layout LyX-Code + hand very often). + Anyway, suppose that you wanted to match a +\end_layout + +\begin_layout LyX-Code + sequence of eight characters. + The "consensus" of these eight +\end_layout + +\begin_layout LyX-Code + characters is GRCACCGS, but the actual "frequencies of occurrence" +\end_layout + +\begin_layout LyX-Code + are given in the matrix below. + Thus, the first character is an A +\end_layout + +\begin_layout LyX-Code + 16% the time and a G 84% of the time. + The second is an A 57% of +\end_layout + +\begin_layout LyX-Code + the time, a C 10% of the time, a G 29% of the time, and a T 4% of +\end_layout + +\begin_layout LyX-Code + the time. + +\end_layout + +\begin_layout LyX-Code + C1 C2 C3 C4 C5 C6 C7 C8 +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + A 16 57 0 95 0 18 0 0 +\end_layout + +\begin_layout LyX-Code + C 0 10 80 0 100 60 0 50 +\end_layout + +\begin_layout LyX-Code + G 84 29 0 0 0 20 100 50 +\end_layout + +\begin_layout LyX-Code + T 0 4 20 5 0 2 0 0 +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + One could use the following pattern unit to search for inexact +\end_layout + +\begin_layout LyX-Code + matches related to such a "weight matrix": +\end_layout + +\begin_layout LyX-Code + {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), +\end_layout + +\begin_layout LyX-Code + (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 +\end_layout + +\begin_layout LyX-Code + This pattern unit will attempt to match exactly eight characters. +\end_layout + +\begin_layout LyX-Code + For each character in the sequence, the entry in the corresponding +\end_layout + +\begin_layout LyX-Code + tuple is added to an accumulated sum. + If the sum is greater than +\end_layout + +\begin_layout LyX-Code + 450, the match succeeds; else it fails. +\end_layout + +\begin_layout LyX-Code + Recently, this feature was upgraded to allow ranges. + Thus, +\end_layout + +\begin_layout LyX-Code + 600 > {(16,0,84,0),(57,10,29,4),(0,80,0,20),(95,0,0,5), +\end_layout + +\begin_layout LyX-Code + (0,100,0,0),(18,60,20,2),(0,0,100,0),(0,50,50,0)} > 450 +\end_layout + +\begin_layout LyX-Code + will work, as well. +\end_layout + +\begin_layout LyX-Code +Allowing Alternatives: +\end_layout + +\begin_layout LyX-Code + Very occasionally, you may wish to allow alternative pattern units +\end_layout + +\begin_layout LyX-Code + (i.e., "match either A or B"). + You can do this using something +\end_layout + +\begin_layout LyX-Code + like +\end_layout + +\begin_layout LyX-Code + ( GAGA | GCGCA) +\end_layout + +\begin_layout LyX-Code + which says "match either GAGA or GCGCA". + You may take +\end_layout + +\begin_layout LyX-Code + alternatives of a list of pattern units, for example +\end_layout + +\begin_layout LyX-Code + (p1=3...3 3...8 ~p1 | p1=5...5 4...4 ~p1 GGG) +\end_layout + +\begin_layout LyX-Code + would match one of two sequences of pattern units. + There is one +\end_layout + +\begin_layout LyX-Code + clumsy aspect of the syntax: to match a list of alternatives, you +\end_layout + +\begin_layout LyX-Code + need to fully the request. + Thus, +\end_layout + +\begin_layout LyX-Code + (GAGA | (GCGCA | TTCGA)) +\end_layout + +\begin_layout LyX-Code + would be needed to try the three alternatives. +\end_layout + +\begin_layout LyX-Code +One Minor Extension +\end_layout + +\begin_layout LyX-Code + Sometimes a pattern will contain a sequence of distinct ranges, +\end_layout + +\begin_layout LyX-Code + and you might wish to limit the sum of the lengths of the matched +\end_layout + +\begin_layout LyX-Code + subsequences. + For example, suppose that you basically wanted to +\end_layout + +\begin_layout LyX-Code + match something like +\end_layout + +\begin_layout LyX-Code + ARRYYTT p1=0...5 GCA[1,0,0] p2=1...6 ~p1 4...8 ~p2 p3=4...10 CCT +\end_layout + +\begin_layout LyX-Code + but that the sum of the lengths of p1, p2, and p3 must not exceed +\end_layout + +\begin_layout LyX-Code + eight characters. + To do this, you could add +\end_layout + +\begin_layout LyX-Code + length(p1+p2+p3) < 9 +\end_layout + +\begin_layout LyX-Code + as the last pattern unit. + It will just succeed or fail (but does +\end_layout + +\begin_layout LyX-Code + not actually match any characters in the sequence). +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code +Matching Protein Sequences +\end_layout + +\begin_layout LyX-Code + Suppose that the input file contains protein sequences. + In this +\end_layout + +\begin_layout LyX-Code + case, you must invoke scan_for_matches with the "-p" option. + You +\end_layout + +\begin_layout LyX-Code + cannot use aspects of the language that relate directly to +\end_layout + +\begin_layout LyX-Code + nucleotide sequences (e.g., the -c command line option or pattern +\end_layout + +\begin_layout LyX-Code + constructs referring to the reverse complement of a previously +\end_layout + +\begin_layout LyX-Code + matched unit). + +\end_layout + +\begin_layout LyX-Code + You also have two additional constructs that allow you to match +\end_layout + +\begin_layout LyX-Code + either "one of a set of amino acids" or "any amino acid other than +\end_layout + +\begin_layout LyX-Code + those a given set". + For example, +\end_layout + +\begin_layout LyX-Code + p1=0...4 any(HQD) 1...3 notany(HK) p1 +\end_layout + +\begin_layout LyX-Code + would successfully match a string like +\end_layout + +\begin_layout LyX-Code + YWV D AA C YWV +\end_layout + +\begin_layout LyX-Code +Using the show_hits Utility +\end_layout + +\begin_layout LyX-Code + When viewing a large set of complex matches, you might find it +\end_layout + +\begin_layout LyX-Code + convenient to post-process the scan_for_matches output to get a +\end_layout + +\begin_layout LyX-Code + more readable version. + We provide a simple post-processor called +\end_layout + +\begin_layout LyX-Code + "show_hits". + To see its effect, just pipe the output of a +\end_layout + +\begin_layout LyX-Code + scan_for_matches into show_hits: +\end_layout + +\begin_layout LyX-Code + Normal Output: +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches -c pat_file < tmp +\end_layout + +\begin_layout LyX-Code + >tst1:[1,28] +\end_layout + +\begin_layout LyX-Code + gtacguaacc ggttaac cgguuacgtac +\end_layout + +\begin_layout LyX-Code + >tst1:[28,1] +\end_layout + +\begin_layout LyX-Code + gtacgtaacc ggttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + >tst2:[2,31] +\end_layout + +\begin_layout LyX-Code + CGTACGUAAC C GGTTAACC GGUUACGTACG +\end_layout + +\begin_layout LyX-Code + >tst2:[31,2] +\end_layout + +\begin_layout LyX-Code + CGTACGTAAC C GGTTAACC GGTTACGTACG +\end_layout + +\begin_layout LyX-Code + >tst3:[3,32] +\end_layout + +\begin_layout LyX-Code + gtacguaacc g gttaactt cgguuacgtac +\end_layout + +\begin_layout LyX-Code + >tst3:[32,3] +\end_layout + +\begin_layout LyX-Code + gtacgtaacc g aagttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + Piped Through show_hits: +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches -c pat_file < tmp | show_hits +\end_layout + +\begin_layout LyX-Code + tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac +\end_layout + +\begin_layout LyX-Code + tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG +\end_layout + +\begin_layout LyX-Code + tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG +\end_layout + +\begin_layout LyX-Code + tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac +\end_layout + +\begin_layout LyX-Code + tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + clone% +\end_layout + +\begin_layout LyX-Code + Optionally, you can specify which of the "fields" in the matches +\end_layout + +\begin_layout LyX-Code + you wish to sort on, and show_hits will sort them. + The field +\end_layout + +\begin_layout LyX-Code + numbers start with 0. + So, you might get something like +\end_layout + +\begin_layout LyX-Code + clone% scan_for_matches -c pat_file < tmp | show_hits 2 1 +\end_layout + +\begin_layout LyX-Code + tst2:[2,31]: CGTACGUAAC C GGTTAACC GGUUACGTACG +\end_layout + +\begin_layout LyX-Code + tst2:[31,2]: CGTACGTAAC C GGTTAACC GGTTACGTACG +\end_layout + +\begin_layout LyX-Code + tst3:[32,3]: gtacgtaacc g aagttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + tst1:[1,28]: gtacguaacc ggttaac cgguuacgtac +\end_layout + +\begin_layout LyX-Code + tst1:[28,1]: gtacgtaacc ggttaac cggttacgtac +\end_layout + +\begin_layout LyX-Code + tst3:[3,32]: gtacguaacc g gttaactt cgguuacgtac +\end_layout + +\begin_layout LyX-Code + clone% +\end_layout + +\begin_layout LyX-Code + In this case, the hits have been sorted on fields 2 and 1 (that is, +\end_layout + +\begin_layout LyX-Code + the third and second matched subfields). +\end_layout + +\begin_layout LyX-Code + show_hits is just one possible little post-processor, and you +\end_layout + +\begin_layout LyX-Code + might well wish to write a customized one for yourself. +\end_layout + +\begin_layout LyX-Code +Reducing the Cost of a Search +\end_layout + +\begin_layout LyX-Code + The scan_for_matches utility uses a fairly simple search, and may +\end_layout + +\begin_layout LyX-Code + consume large amounts of CPU time for complex patterns. + Someday, +\end_layout + +\begin_layout LyX-Code + I may decide to optimize the code. + However, until then, let me +\end_layout + +\begin_layout LyX-Code + mention one useful technique. + +\end_layout + +\begin_layout LyX-Code + When you have a complex pattern that includes a number of varying +\end_layout + +\begin_layout LyX-Code + ranges, imprecise matches, and so forth, it is useful to +\end_layout + +\begin_layout LyX-Code + "pipeline" matches. + That is, form a simpler pattern that can be +\end_layout + +\begin_layout LyX-Code + used to scan through a large database extracting sections that +\end_layout + +\begin_layout LyX-Code + might be matched by the more complex pattern. + Let me illustrate +\end_layout + +\begin_layout LyX-Code + with a short example. + Suppose that you really wished to match the +\end_layout + +\begin_layout LyX-Code + pattern +\end_layout + +\begin_layout LyX-Code + p1=3...5 0...8 ~p1[1,1,0] p2=6...7 3...6 AGC 3...5 RYGC ~p2[1,0,0] +\end_layout + +\begin_layout LyX-Code + In this case, the pattern units AGC 3...5 RYGC can be used to rapidly +\end_layout + +\begin_layout LyX-Code + constrain the overall search. + You can preprocess the overall +\end_layout + +\begin_layout LyX-Code + database using the pattern: +\end_layout + +\begin_layout LyX-Code + 31...31 AGC 3...5 RYGC 7...7 +\end_layout + +\begin_layout LyX-Code + Put the complex pattern in pat_file1 and the simpler pattern in +\end_layout + +\begin_layout LyX-Code + pat_file2. + Then use, +\end_layout + +\begin_layout LyX-Code + scan_for_matches -c pat_file2 < nucleotide_database | +\end_layout + +\begin_layout LyX-Code + scan_for_matches pat_file1 +\end_layout + +\begin_layout LyX-Code + The output will show things like +\end_layout + +\begin_layout LyX-Code + >seqid:[232,280][2,47] +\end_layout + +\begin_layout LyX-Code + matches pieces +\end_layout + +\begin_layout LyX-Code + Then, the actual section of the sequence that was matched can be +\end_layout + +\begin_layout LyX-Code + easily computed as [233,278] (remember, the positions start from +\end_layout + +\begin_layout LyX-Code + 1, not 0). +\end_layout + +\begin_layout LyX-Code + Let me finally add, you should do a few short experiments to see +\end_layout + +\begin_layout LyX-Code + whether or not such pipelining actually improves performance -- it +\end_layout + +\begin_layout LyX-Code + is not always obvious where the time is going, and I have +\end_layout + +\begin_layout LyX-Code + sometimes found that the added complexity of pipelining actually +\end_layout + +\begin_layout LyX-Code + slowed things up. + It gets its best improvements when there are +\end_layout + +\begin_layout LyX-Code + exact matches of more than just a few characters that can be +\end_layout + +\begin_layout LyX-Code + rapidly used to eliminate large sections of the database. +\end_layout + +\begin_layout LyX-Code +============= +\end_layout + +\begin_layout LyX-Code +Additions: +\end_layout + +\begin_layout LyX-Code +Feb 9, 1995: the pattern units ^ and $ now work as in normal regular +\end_layout + +\begin_layout LyX-Code + expressions. + That is +\end_layout + +\begin_layout LyX-Code + TTF $ +\end_layout + +\begin_layout LyX-Code + matches only TTF at the end of the string and +\end_layout + +\begin_layout LyX-Code + ^ TTF +\end_layout + +\begin_layout LyX-Code + matches only an initial TTF +\end_layout + +\begin_layout LyX-Code + The pattern unit +\end_layout + +\begin_layout LyX-Code + <p1 +\end_layout + +\begin_layout LyX-Code + matches the reverse of the string named p1. + That is, +\end_layout + +\begin_layout LyX-Code + if p1 matched GCAT, then <p1 would match TACG. + Thus, +\end_layout + +\begin_layout LyX-Code + p1=6...6 <p1 +\end_layout + +\begin_layout LyX-Code + matches a real palindrome (not the biologically common +\end_layout + +\begin_layout LyX-Code + meaning of "reverse complement") +\end_layout + +\begin_layout LyX-Code + +\end_layout + +\end_body +\end_document diff --git a/bp_doc/chrdist.png b/bp_doc/chrdist.png new file mode 100644 index 0000000000000000000000000000000000000000..76b8c113cb2470fcc0613cc481210ff722d344c1 GIT binary patch literal 16785 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 V_|jPc|1$vOshITR9Fdpr{|C9nwhRCO literal 0 HcmV?d00001 diff --git a/bp_doc/dotplot.png b/bp_doc/dotplot.png new file mode 100644 index 0000000000000000000000000000000000000000..c4fc4d1f61ac988ecdafc64c5d3c622cf65c2b94 GIT binary patch literal 56457 zcmZ^~by!th6eoNL=?3XiknWZgK}4im8l<}$=@Kac>FzE8>5}g5k`|Ee`Zn*(Gc#YE zKYXrwx!iO1+H3u4hsw*oM@Jz>fglL|gQU131i{)u5KI>mEcloEG^KI~!uV(=CMN$u zOpH?A-p1I>(g=cFQ{vRzxbXfFe+f>kjP%<7=C#t3=CnWOf<r^q%^&X7_nrCU2ULca z_aP`|*ivr;rRcJl0ww!!K51}WVqPw<yuM8F_*XxoJ962yEwIvfcl-qtYUGZ7i<}SV z6Vgjq6c$G`Jg|V+!-heJ1<!&7XJ(+s)iv4Ihw;Ezy9~iXt2G?p&EAKfyc?CBd2O=| zYEI0|TK2qK5g~}MD83F8dW#IX`d$7)hK@+**R7#8Tne#Jm^T3sB&UZI4euif1HCFr zMumYC5TS%sp=A^(LCm8G6JoRTZD)r<>>w^R>QGYTwxj2el{m^*4EQ!W7$_8vj1b1> z^)m<t8(V=I8YG5#pD7lwL;H77#{TAk|H8+_pXeEp@NZggHBp}<n*KtiWO}HhxyABH zN3vB~v$5)Yh6VYwVMtI+PlBflUrYp<CrK<s!RYa!S7=IS-xuYLIhRADa<GCZnBQ`{ z@2ho@enV}K{D)I_a-&qx4z#1ZOBVH_AbaN&jhCn~u{$wdeR?i|-E;pBX@AO%R^Fns zpmkH4x=72LFICVxHVrxnK2>T_u1`#4@vqWeMKdO{Iw{_y48EIVsOP_?2~_RU$yL}S zieu(Bc0xv%k#X^?QjNRdOeGU?^U7-P@=}s8=r)Y;FfIx3->PG-FDaPrtS!2goAq+2 zaIkbVc0qRW+G5$j{&zh}vcB$}F?`ub(JmsQw~FPFLAC2Rs>kLKLjRiQC%Yw$pTM{v zLz?}1Z=<Q<H;oc+E&V(HfG+A`!)(0%vHr>BpM7U@->yIFa?VsuSJ&A)M^c@tpT0(Q zMSUmRn>xwF!Dpml={0}-t>;s^!<SdSxf@j#r}_lF1bv&C&tJrc#0jgE#b2r=YbiW_ zY>}u{y(tnWE7RFXYI9m9NkJzKFOez86XA79;<aX8No(b_bNRK|)tok6Tf22Za=AyL z^^eZYwTkmmK~+t{MG^DdZX>2Qf35kq@LQ2u?~A$8Z8KI/}Ron@jyVtXQd5}hyS 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 G5Bh&!1_mGi literal 0 HcmV?d00001 diff --git a/bp_doc/karyogram.png b/bp_doc/karyogram.png index ec722928116fef5d5797797db72346c7b93455f4..40c72f193d6244d9d3b7318deb0b10871a54cc5b 100644 GIT binary patch literal 64528 zcmXtfbyyVd`}O(}2}MFsx^x8;q@_bjTqFdMZV5r8yG5i!7inAsrKAL;Qz?-J1f--J zB&D18UcT?|y8OdsXLg=>=8kjDeJ1pgio)fKv=<Qw#AVb2Iduf$JOu)A&V=wk_)DO& z@eBe%^3Y0F_7O@}midvRorRT+IRfFH607AQK)Fim8=P1a?Xw)=Gv11ESsrq`!g`}c zG}5OHedi(S((UWVAs4O46=hy4vZr&te$aMBM^|8%ba!lAWH-fYwX(~oYqw@zY`psD zpD!t*`tDm9qO9}&AwQ@;hsV-%wht4u@{q8T;c=0jw=y*rX#U;SMsmVYHiq~QF;U6~ z2m7t*_*HAT3fX@&E#0uPs$24_CqN*mKgXAoB4mgV?g6_MM2L0zKhw5|1_~zG&~x_! z5eQXd!nb(-56&TOeonr04xvVXNSKfqyNF1T^{OF7@Ho8u#)}AXKnQ3dL+Obc)~_O7 z$XyI0!E0bYhX|!)pg!j>ashFUoLmiwz|taqTu{&EMJyj7J}l3!yc&L(`1SIKXuNy% zhkBQ;5<IK8#LRh8&U#4ZpGs)|c+&1g;{`H=e*?*VrvBfsyLh=Y2<xQ#!*9+R3t#@C zr}Xjob7r?|A>x<nf8rNOBQjc!ON<Dc5DllIYkfzmziuEF5DOZM3~yMnKQ3$%3(-_3 zwj{=D_YWoTdM{7W|4cd1&m3_Tx2?fwOV!=;Ek?-m=(67z)<jAR=x{Q`-^AQ}%aO?K zqJEHql^?oYDZ0=4TC>?OLv5BO_Rd`k7oy9`%5L7pnz1|l?-?XKeA2%)`#ipH+F};t zWsw*7YOefFWnOlFW7+3J)j=PpFHSbj7H&jtK66|%<g5F?=%%OrK6LI@GkueiGM*sw z`fy{>`Ij+|Q^+k5!LPhFtN~&@;<qu5(?6=8nMLU4`RSV+y$WnbcA9;p{Mr5U_t@9A zt)Ynhr$+n(#r-Aaj;_%+HnlfJF1cTlSNZY&Hz%L4xvq`RpZ$ndom3~^n=dnFioa}{ zQ2n54n@zjQ5+4#P`J^CzS1Vax?et;Y{W8si&vFa}hBHYGE@N~lm+2$(l(RFXgxr#Z zZ10R?>iHeqDrTE&G5uv_b31gqOHBH!>>lpL{HJP~TKC=5Nw*zlVt!;z);3AXNR|2R z4CT*TaoZ5=;a@WxqruWT(p;l6^xa-?`4@7Uy|K_G)YYok8fq6ie&W9Coc^rmsiN86 zY3D|-zXU6!QWk$KW9GN!%OuONS)2*J>8HQzwfBZ5FSW)GJj^hvjoXiJ)%vMf+rKw( zzy4~Wn9Y|LTYg=C1V%r-kQh<<)BQ*1uzQ_<IsT~d^>|<PIlrcpnvV==-H3%ZTlx<; z!w5Rs8#;e{Z~F1I{pgi>?DmaeJuJeDN`c?<?tsp!4aR+pXIWZO!8gDk^P%hw`pf5# zu<Wt~@=lo%Z5b_f9YvHb>b|t5vI@#jSz7Py2eaJe3>i&jjrPZdzn*o|Hx)i}`a9ub zu#Mg-q>Z5AqqU-8;<e&2K(Z$V>j>zqYU>SB4n_^<3}*=wixG(sRDZ2t8Cj7~@lx?@ zKYT<ovN5{TyDdfg3pH|CfVug?s8|hox(vzX+G{&EWmtQJK1XZ>{bX3V_L%;V6T|zB z>z`Rq%uMCGjE}iF$yQQ5eilb<a^^)APV<B_Vf67oAGZ&1^Kg6>nRM^T{jsZYk9W~| zAu+q;ozri0cFzyKpZg(~g1PbEc|8#}D9-*}pk9}!pYJSx!o5#hshgOq?t<P{A3zp{ zkCNGv*-$>4s&5;{x`ZDK9x`AJ%C41prQ{C^p17VI%8=SK6q7y?EoEGENpun0+7p*t zZ~A*{b<xw#&&b2CiNAN=yDQ#EoJRPR&-4uslJDzX@%7IKE=M7a*-Z;`$tOh{|FX+7 z*M!HFl}8ek5{of&DHwO7V;1N8<`yr?TvmU#zVVp8Q1^OPHJYl+FY3s&2>E4ecInkD z1qXrF6HUMTZC|n4)pC~lqLbqji_W-S!PA`?m2J`u)zVb4dd4G_@zT9l`}_~W2a}~n z1&?Vr#H_E@V!vQ3umT<8-}t^Cq~xFP{bAUq)<DxGKUFrZHf=sX+CZ{tFyD1${i+6q z3{fP}KuA-VZb(tM@}zas4dm9%ZnWK}zZs9sN6ceqsAnbHc5nZ_g?SXFCi%fM^K&|D zUgxK}eBMHl2)|D*kE><aRE1Qcv+XRu*fDjIy{NDdu=XC9iLgqcNu02<wMu(_>uIxH zWbs(>zRjVlU#da4Prhv8Q_SN4r!V2bx$l!-R-=Ox*!sgek~<HpyXMcA)UA<3?Oop6 z#S=%m(p!_($X8u?=axXb%w(#pdHE{wQ^H~5Q)*uNeV)&6)qOq%dWws(up;}pJ6Xoq zrSGbVhqBQm*1X-ATxkCtY&Fo^W$}qYEM+m_byv$AvtyZ4e00}rZ9CKLg*!G<-Oj}Y z*+&}E4u7nE()8%;I>p`GQ_tZW+sxh^=f)b*b2DYTyD#21m+wn#AL_fMm40%)-@RYd zs5FN^JH7&cfVEJnLaqPa3uhbk%FxQn9&!8J6W4F=v#Sg4=<a^mEz@Hg7X8DqnkC8X zO2(+@mM%Kaxb58MYPn6uL?=n^UA*lKp;7pu{zzwFbBO9|e84MDS;@v*g+GmUBRT8I z8J+04-49Izy!ebiuSo0$e@$F-qS;J%og1!VBpg4+DO3>W%`uieXftNG7kbFB&K7(B z{NS(;0`csHf3Y^AkOmP?>z{6b5Ya@~F!)o@`6n|nSA`=SB<RR2<WK)FA?^`GG!UhK zAa0q!pL}y(Yl0VhBY~Wj(5T5lj$?}dJ>h$?QB;-XR>W5S)`hLc2hvEQp@>gu^lDm< zq<*O^JSTpDf4%X>eTNpM7I{{$ObZL?InKF4P7LR09&O%L8)BOxn-XdTC4%bfUNi*f z6$Dy|vnVVH;;(Db2!)Bod0|>(v%<9^%P+RS?r1rgxHNy*u+|~PZhUk7fqklR_?xmv z)nDG)mxq-8c#|E!P(%GBB8Y>M>T3NRlN-D@5;>c1^l`2rYq=iZevTAl(_$}VtN&oH z(yi|xo1;0T`r63+!Clo38HV3t0zCp9>sx!a`8F@a7}N|zN3YiM9^1YeKC~w8qBW;$ zO%6=LPhvn;B<blT=+NpVY9|jS4C=196>k=iI(`tg5RDZTs@|&Zthga=Cb3dGRh#S6 z;ypzA_wd3&>g5GiTfCp>qX0!x(!dXGnrR*;=gH~cGO9g!_vEvcvo!Wl*xTFiyBXTi z(e|h5XAfQZgTkkbi7$psMRF?FHX=6Ht{q?~xoGc5`px|kX+v|HM^dS`uW&nPb?Vzz zs_V;ESsN5OzMpR?Y>7=ywe_jtA1xlN@<=U}E$&U@_{_F~dSd5wx^*ci-dfhMP$hCJ zGHv_{>%~k~sUO%(Z~Eg;>-!5mBVjAL$N23QTRW|(arI2Uo_R?T8RHwi`R~P-SIj^B z+kc%;CD$jsA%~ZKg;%llzNK=!?Cv{E=-Au3cfR;JAxbhk>3eD{*{%Zk%J+Bqe(=xm za`KAuj+tCB|7m{EvfMb*n%=D5@v}Lpt*ZGNc86p-WYKiMw7!L<&EaLtEB^RRQZ4!c zQK3Yypm{_Wogu-PrS?M`s#F#uj(U<)iF3*??@POUV`Xtk(=@p;$@up8`p5K>bPm&7 z!mRp<6#;uUh}=R8(IV>U>Mwd2d-V7+it&pn92Yl=H(p&N3KMRY%y?$*FiRfG`9!%d z+B)NJ|KDobJ4tWdZyi<i-+JN2kk=Wvnm6WjeC<{4As6)=%}tu%<h^9iBoT_dj>~tP zIsa+8KYu}YN3ZcX&Q)bck|dac;{C<<&kaNkT1Uzx<itB_uGh4C8}6l(eBSpsn8zPs z>BQf7llMxUREU84%}v=*li11Lx8K!H-X-1O=%(cjEsCDzC1MPnMQz^tqu``&lo4(o z$n?D3w4HTMVD1E4(pCTDnUiUGcER9UM8go(%|vt2c_HpH4LQx9Pwr@rA92+6e~PL; z>D?x{JfAd`L^?X=r*(+&O#bQP9c+@NMU~UK73x`NEVWcJN+rgv6(m`IAi3ccF`GYu z=lgThXG3XwWa+}p^^=E#17aM*<HSOIf<`MpPCuP6?(ZJy_>-F5Bc*4-EB=7*X+rZ- zo{X$JM7K$Rf$6=N!L3n&T4EpK<Hw(P_!vdPdgPy^C3d$hm<N#s>9inPtTJCI^<sk) z=5>B>KF|A?Cr~C%eC=^Z!OyX_Ni1)d$2%zKZ-+5niCGC+!ERUdew0VAahw|c7mSyI zr|??kqFy+&9Aju^SmNZH3d4VouMi+-kwO`spB|chHzRV?uC&|WrYyK^!M=Z+F6TjZ zPi|-KcCOH~ch(jYq|Zg3t@Wx6^mX(97UKOfG;j4l;39t%f17}WrE9GHaLuskZ^t%T zt46!r((w+iKPO)s8Cr=fzg`;a8_)kyJ5Dia{`dV{?^3(huTJj1`n$%nZ@ig9HR!%l zb5dMUu_cuas+QM}I#L<(`xK`b{x9l9IMss?Rqxmc)f^@Htk<7N85%7$EuK0~IkIi! zZB$>BP_d!9O7$Fr5lz;-u68ivJt&{HQSk8P6VCYIg24Xu-#dL7M!j_>rD>U=zd8M$ z&#K5iG+jDz?LJ&$;1*kRx#`L+>FU1mK`Vdl4}bT(CH^mN3Id^^TBBO}ZiamNR}O3C zLTqnhRv*V_W=TEh*z3e3RG&I{`)*QnrB7MLaFaabGGd5d(X!Es91y6R>`xrf5(=sp zvb|>ew!Fht*frB{WG`{6eNJe6EoU@LN<x6P0b>Ld&O%1Ro${)s0?#Sa-0G>kocnV9 z*arec|Az-|T8N4N5Z>w`$!rK?L<8TgzzGB*4>5s{7ZP9}^55-=1`<N!RaMFRkrgh& z1)R6l#&0yGdM}T^m9Qf~_|GBONfC&J5tPblm$+%b6;lL)Q0<-EZ4qH4zNKPXAi*S| z8u`1y1m@3II$8N1$rELzWoBMLtdoifA*S?A)bAn?%m|d6w1#`i@~E4!#*==;`aqUh zkJn9>SXMlln5gSlDCvHF&YPP0<NAWoRi2WP^47tv=X$ZFh1cb!i4|jLncoDy8Dp(g z{<$TzR=XBWB`erALgUERh?w8)TD4fM+vFqiuw0ec)!&HKGGqa|g+TaIJV2qjb|lU| z=+kD0`<y@fZ#;44ZhRDzRGr(JVXa}I#_iT<Ccl-^fvVH8v+u<pb@f%99?eU|#>QT{ z#u*Y8W^HZ#r`SB4JuF)4L>PspTDo=)ccggJshLW(>&nmecCWuVSyj=4H6A4$7Kg** zCv!VqXBS)NoL@?zrK9sZ*`Kd;n%C6Sj62OqPd7c-TCA+B^ziVY`p5OZ-}<&Mnzb@q zPRb;if^6&W?=L77L7}zd-V0du;I8Vt@GIOo=4^e8X-=JOrbRO|GoLathHM1G(tk*) zQQjn!QB+iX{P^*U7x|aYKSXQj>gqmvWGt9$;I4x^&HrVu$o#wb`1z%!-0o-Ym^FzI z^P%kQ?7Y0Z^>zDrISHSGt=)0IwWXzY2mKc>R^HuuJlFYt3C(eKAH*r0*qrQa_B(g( zu&{hHE!tviDqe;|R50R;=r_S641bEAw%&*qzd}JFOD3nF(3+{7oRplrRyofYug`?L zzOlb^LH}JrK~^M^hj_Y=Dry>z)zj5opYHqp+h(+C`!$u}n_kuc=9=2tRNsTe&!0a_ zo$Q@IJ;0reIG^Rzne*|ZEc#Pa6p1w10X-X`jDkWidl=>GKG&mUySmEhC^0zG%lkMj zn9=iarMxwguGN9QbNg&}@l`D6%y_6_Me=HL^iM5IhB&W<D`xz4`?9g&h?#GVVi-Qm z@b~vmlMQARwnym3;cmL&sf&e*U~;4hH406ZNFlGLnR}JZNz{Aqi(-bT*N)Aa^=*%| z_4UcdHzK%;oE=Wz+T7f1B|z(yNP$8d8XAVw{G>@tOblTD5u;aYbXC6S)2C0hwWF=A z1Z+4B2GM|6#HKt;+WGfSEw?W_O^K=XyjYhRUtfPeD=RA+iRyJu9Vj2Nfk<o&CT%6c z!=1x(uaiwSVG~6H8~1}k%hm3+iEvbIPR>g#5$<bD4!={e5b1A&fw!E;z5V@yuFHdm ztJQ^F7Rh+h_VneJU5xQtlDH!g)P(O7DY`bdx3@z?*}~E}uU%5vFyl)M2naYjJ|=&9 z{l<;(u&@ILoHm3oz6ZMz85x=Cy+M?YuaEvzT+A1|sZN;AE*j&$ts_o?J7|JPl%GwF zvcrO3xp#*T{>PGawl!B*y<bD(gov<Uue0F}^l!gsIfq1{J1k0uY<A{S@T931I^1yI zAQ%hyoi;W%AF8S<{1$nO++QglH{}`>NvZfQP6<Wm|F2|hY>a|UMT4C(B#nlKCLuBA zn=wzKQf;*1TL=1q{(gLZJ=~$|+NUMD!JR2QPPAd^8yg$0Yhy1;h7Rhk2DP=dg@%MQ zgr40SkNp=Cjmk%8B+Jf1XgVQ<%GtSQkF?JAdm?W$*Cl|N*}{iCEP#jw_nrPE+-G>R zx~^`Ru+M8G>eV;@p*|F)yfhh}^cSk{V-Il$Autn1DKSGf7S#B>MS+z?Drk84pR9T_ zS$6u1ICFa!?bFW=Bc`|X3Ym^U-s0imK_c;ZS+8GDFD-SMSUn3}MC(2lb<o>z!Abb} zg<Kch8S7^7*yPnDB_$U`*@C`Vo7_X2`TCwP`5k@R^iDmm9oO;mC*17!|GPQS7?#&E z<aBhonz`h%eb#q7BPdbm7cX9vmX?O7By@CiEO?zQq$1?Rvefp&D>X{_-mkUy1e6;q z|Nr&g<eVKKyyQJ6@PTgW>;u>N`9qO^;@pJa{ddTMRT6N2toS4{ESthih-I8YBb!@V zq8P;btxI=A{LOXLC?oGbt(QGJl{ov-0!x$#3lgR7?(S}5!)dA{D=RB4eNKfE_r3p1 zr@GV_-TeEz3=PZka>Ct2kI|oYc6Q3j$_g;5XypFEfg^n|4ei-)jqm%a5D^hAaJ_?c zJ3m_KKV2a-?(NhVblIRi;9B@>jH+bf-RJ%OEf;Wy+qayi=n4J$Mj!NnT`{+BXU`OB zmH#L??z@Hy3)mDnHMs$iO0(%?!$Kiy;%ng<U0Nbh&uwh<%WQ^HM4YM)BEr)Xl9Iw` zsLoEg*}0a_!NtY+tJVdH`s*y3uNf{}UQkeA+Z001Z-HHK`@b9VEmfhESEF1pS1I^x zk46%a%b<~7S%1zRvA*;CZa)-_rW7a|30_M`)J0<Ai12XPEvL@~1*-=0{|iGFxE7tb z`xn?4V)<Q8`ykzX&D*hx89ieNJ3BjJJbc`W7?+L&dhWT=GoLJHSQYl9WLjx|#uYPv zw#FB>i{g+4o1439<I&k<Qa%S?%gf7$ZO^L4L_h_%({)0b!T}*c!9U5`rquVddSOj& zV^?rL>%TdY1j&ek&`|TK3v)j^r-34+OXGt89qs@`zEdZPEU>>{Gr1#ZL9t;|+`{$d zG10%<|5t%EpaPfba&T~TOEf97Qdsc3mPvznbWsTjI(sq*s?pPwJ+Tj$T+`V}X!vHT zmI_J+h+?LNV-=qm8cN#lo?XSiG5_k+?bxtPt5`*IJOB9jc(FAQfuZu8tshmKmX=ml zc8z!bQ=fI(@3U1hwhvMG5iPS$3n(+e?$y>Zbj#L!{p!3i(<ZET_M^D&(Bv@kLHZTh z)hSB($y7bIT_>49|4u^O*Js(L+<S6z5^@n4z$_fqNX#0R&P)hZYvx?SSvf%9M;-o6 zL83PP{ew`H&g)-v7A+q=D^?A!|6)^Y1ofPp_)SZrkf`wHfRZFu!tYy)y;OH}0~hAE zTABPPsi=0v&K`1uKOFvNc$lA$ucoGk>~b9)EiF%1>_@94X2PH%vF_LZ+xdxfCnGi` z%Zjp_(h3R+_wV0Fp-{%g6A?80Q&Us=?hd$h>%Zh07Qu{+j0_lhDN{B#G&C$PFW=EC z8}Zp4bsO`TZ?5A$JM24G7dEG+<_P+4NO*Y6rJh@1#oC<7LUx+$l;vZdOU-p+XUBc+ z9Jqsu(r>D+d1P0&Z=tQNeea%svuV+gjb?6adUp3m1;33pwyRgKQXQ`1PO#7Uo8pwt zu9%|%K`QrJ*uq2jpXF=ezqa~nEOmC{b%1d~DcE)fn_794)YW^mjC{67oVq3za4FGn zHJktOzkmM{MVwfxg56bAqGZw*+>rYtRaI4@;mtks2(9;e<$k9pv+eP%EiF4gQf3Zz zVX?WHnNU6d<3H=I1^4FXQvee{#WQ{O_;GL8RSs`&?<zE1az|WJlBnCNzU6fX`f~66 z4cMWMF$5a9?Rnf1N%y{PUsB`AlOoRKloTa0xl|8BYwN!`kF%JaaLwYLREiOUlkm{T zK5M_Df31v0`d^G+#^Boh%E}5!ut}%L)oa%r>9w9bF)!8is{hGD-0A>0PxvfQ?3=6n ztFHU`ohI^Ix~|1pmFlu7CGhYF^{YaM9~v5BjcFUB;l_WJR$AKE;fBi#|MtcUW-721 zbb>bPJ3EXO)!($VwAczo{w)2?QP26Ro8M+8!(>Mcha!IIS<cC!Kk*;_SyrBLCwcYl zp4vNR!Vu*EJn4ILxbX7#UBJc><I8GlUYi;bMI-g}^#0LN5DQ@D8^3@5@BDf4#K-35 z8MVhg$6wsm#;{nW+&;jr$rubH8QH|=GbGs1>ujMS`hGQ-$@iX_N;<oyme#bHN&qu9 zMTDQ1w|lJVs&X&f3yGIx+W!9j@phqKWJH9VoX2K|kO!tU^m>VI{?b69R*r_ys56xK z&bBs>=}4h#cXS1826>Lc&v4gyKpG@oucym(raXNAO*OlXx=@)aSy;>sm00qgZ(C%z ze%`6?TgzI_ri!BCPi3J|<Z0K!!U9BK{dT{es^q?zhQ_;xGPo^i_z278Y{w@cxFKp1 zmahHy@vB5B5zY)#oon+4e8Hh_AM$0@dhOnh{aNr8b?w?U*R|SR0H0ahwOdzw&(hyL zsZ)bhKw#^w0;BXUnNg|rRh8GmjXV&oPi$?uOd0Y&eKKo_pg9Iq8ps|7U6nQxpB&P{ zm{m2MeRZtXYx4VRfKBP_u096nPYDUs$sMj!O`%`E3Z#(XR=9o-ihmL3Lp1VwMgvxm zI%ufu#W4K))tIT27(mf%Q39a3M_^PUZ80jHJ*F*izcxkGCCpqW$i({jbFUh};Q&E* zmxs<L!Xyu2zYl=Y9b;!>Bc~DanDVvMlWBYarLC>O!NE6L_6`pIwCAQc|NWiAA{+Ee zVASha4gCq2glsU$;<jhx{Z|xc#Tb*h`OV14==9`p?c;8L?7Mfyw%$(XEomQ5?rLV| z<an%qBRK!xe+SqG;i&NNa9jhtYfWjvjJqHAcbljn_ONvJ>wIi(qgSrw_5l&G=1U~Y zb%D(hj<MXByt81HpOBF7`Sa}`DR72=JN80Kog<2!n>&@q<Ui9ytVIc62g!qlkH;k4 zBO}X8OW}+Z^z{0=x_{RGw`WT6dUHtCyRhUY>fF9Citjdp9F!Ngs58_<Y0hqd@kg)f zV;aH)m(^?G%_g_5wmNWGJwAh|(NlFI08FQ+r;m@1S1vQ7iYqIJHltf^jP%*yHV}bn z@kxy7vo@&n-Zwfu&}vG!p%4Xpv|=Uhpu@ydh%A{b^8QEloEjt_4&_Zax>WXwRGvej zMc)_H)s2mL(zh4)_4RR$L?*<>mOgDIL80?BpF@EQxNzy6Vn#04*(&DWcctJTG#O1@ zSMIBzSMCJ{A}b*I!Kw;S_05~jHz$3ewmi;K8Fd@?;pOGEDA|uU^7Yv6(*kN_B_$>G z|4CKn5;lcBOg%@#x|FuNi-<p;1*M+b2XTBo)B572OWd(7YO4-2Ki=|NcGevH&2^l7 zcmHFel%MajXA5GGJ{#@aM$6T>oGTE1pZM6`etoJroSf|hjjVK-zMn$jXO+~6#X^k< zDRF=J@FANjW@L>lo+hU4tIJZqd3)S;woodcxuUf6x6b!sy}iBM{k6F2t(6I6F)z;s zQa40|O=Q$W=NcPuC`x&jsFqiEtVYev%p&MT_}JOAcORCI`yLM4)k{3@=ftL-B^=iS z%emh@J;lINwtkV{xbJ?_!e#llXq^i0f;3>CkXYq-0Vh$9jhW-!aqckFH62kSqwz0a zz5tPRm~NRQz!ho#n9cza5qeM5J3A+ODq7kw;i^H{!~Ok9${N6LDJdx!j4coW`UV~> z&~hk=^|EAmX?@n0@n3a6TP{&P-(Cz2KT9<==!{g^XSL^ZNbBp50Lx8JPbcfscs@{Y zH@V}OgeA;WM&^4{C<XabZyz5(R^w~H0p7*MLCGoM9G<_$1#pH|;MsiV`~Tkp(zwd8 zp-9wg8R=dD(;#BMj_yfMCY4*Yc~w=O*aY5J1f;7@7U9UYZ?6c}Mk*f{4%~<m!a+O# z=aqMz90&O>);|aMPNH@7A3vK=N?rQEQt)NE`($`i5#mftsQ|#vk_u7o@O)0LSD=w+ zr}*NQ+}ju>)?R40-y0iOIu0IDJ~1+iP83g6f`$|LOsTKC`(@&Vqz;SZ4vQk~<tLB3 z1(ek&JBx3?Wf5HO4*A%m$qMQY{$99rZA+&DcB<7uA&TDW`SZq5(^B1sii&_($S+yr z^4m#9K$(h?a`{i`B{jt-`ucf~*bf*2m_q=*uhku{PJDZ{Q%8<Qc0s$a8xv1q$6cX< zd9@wT(?!5eq@)TFp;1w`c6QJ!3j4bSUT_OtNA=t^_=xX01f>etf2nTdj})v0zjFib zNsqMU=ek&w=upbzU_mZ@tI6t2J@!YWEO}v-;ERLlXekmVNgDy$j~_omfOd;;!8!Kk zjz+LITTq<0Jta)v=6?BN|2tbP;pH!vg%3g~w4lu(GpYyr%FNoD-_G(->GOdx-@_FO zR;7x;a@?bEzgFHUvcI<%2sM@VfuNAkbk|27;zk}~)3=wT0_g;as(J~SyvfMPi;Tbh zx9=Ae7zoI0ZhOFpl#uX&qGDCW?%A(UmTQKnV#N1%hV2w0XvE#^Ra8h+C`)xET>k$4 z@#8@gwjW}Xhtyb&of6knWb!qq^~c}y@$<uu$KBD>1WXgVUc~9ucv;AMt6Kq38S6WB zTml-5#EYm=y1>#wHMk+TnJVgXk$;{Ug*MlTnkF+KBFiEXlO+p$_wL<NVf~olfxMcA zyZhe1>DEJr@9)cOM@65uL<9u|F|KJpdh|v&f2`bY9BzQ?f7y+zj})yAxtjU9&<s5X zLFutiUvRF1zKdjLMijks-C5R=^Fmqv=;aC7coAo=nj)O0o>NuKp+*T!V-B0xSezH5 zhD2SFCoftKsb_Ux9T9mg!|S=VFt*64+*@MV)%oLx|5@HGI99%|yN*J4Kf^J7Y@1<P z?4=^k!wz70dy~PV_0&vEQZ9crpdeZn+(UoT&F_CE5P}Vz7RDZm!zRwO#Q?B5@V<Nf zI%pXm3ko{NV0RD`icXd0DoqHRfi(g(%BQBL)Ip0$@lzg>w{ErVS8{Q47s9@?va#K` z_*dw~pTNWmnopi6r%E#LGPAN~W@i)f;UtWEt~3@Z82|ZwKtg)}4i<Tz&K%`%BT)wj z2kE(W?-b2X?cOryX@b}m0SG7}G(0@FprGZ9lk2NM4M3rh(quM*!~SK&_U?5U?`-;) zZdG3zFZ(BqKk)LZ{$?!fvGJ*P=?iCWpS75%=>Nom_?S*?+nCDN)saVxfvRbbh#AF& z+1Ux-J`uQkcXEcFzSRf73rLd1ZscL<w6wH6y}gH!euQWw1I9a8XWq6*8-z807Z!F7 zG3nV!NlAl)+GknVF#Bn<n~sU8-uKv(o142yqXXgrAe%l5?K4ms09<n%%#h`4E-7U` zBb8T!ULcUDv|uuz@1%^YohCfgbteZ)3k%QWyk0{o27tRG7T9e17D>eGcVCUNy?95Z z9T%Gg_n^~2|DjM7f64gg&!4audwmt{IF|$w6V06RuU~79cZL^uSy))QBoA%sW%YF< zJ8`F}{z?=HO@GEijiW`fqoC?k_F|BzVEG4BKJ)K$C;V;z;_%I*lqU*65M6^4e$9HP zMFh`KfGYCu?G1%0*77{fCG^dQ_oEqCW==<K1n1}Gf*^mdRe~z$aIu`5E}b2oIk)x~ zghPaqj*gC@Atw0@SFdZ&b2LGrF!8&ffbnezMG}7R(=uY9qvNonxp4*`OpBb&ZICEe zXJ>j5M`*V<Mo*(R=Q^Auor-ny0sI603&BT&cFKrmHPlBVb2L8t`y=G$e*gLN*PaB& z6Du46r$YU#KiardB~w#SKr+wrbMpukRYzcJyA?JAerzbne5dBHtG905GVmbn+62s2 z`vFv%UR;sf2$W1L2=K7wMWLY@X7#f0W$o;^V%bMazkanDudDs~_1$y@JkhSCyX{Z3 zaOG!Y`pEjdx7?qGQt9ic;$8j<g)2`>hE6u(>pAr+$k=|(zRbiS4Nz^?UQo%Czg-kX zjY(K?$C^>MyrxjG?81!Jcx>Y88aDAM4>cbj-<bP!BwMO?Povv&TxA}u+-@=gaK_l{ z^RHn1laz_!{M1EKQYr5}dqu^IQ(LhBZK$%${n^8OeSLx8gpj4PV<f!F##yQ~w6snS z$4?EboUODPL!gwd&!_qsLS#C1Nd)`B1RT*I(P^o&5O`jSTrEd~glY5sN3{&~Nx8RO z-=09B5M?{suorT+{4!*tn;$nV>{Ub^)V=7O5Sl5T8<?Q2emj;+XXI#aIyy_`y>-b@ zSa^7KoiIE&EEa3zcf1YKLnA3J=qjXvP^kfG1B4ZVC32c%6&BXc>P>4E03Dl^bxIB{ z4!qSxPA;$(8=9V-l0u*IhXFGWBw~z)--7w)EBI;N#|=;tfVz}$hF3(cudjm@E^D0S z0s5;pCu<B5@B9o}G^;mDHCZVW3No<bRikokPN1YK{rP&9ohhM1qzteY`{>Tr*uuiK z<)IStCwD33%`Gjbv891QLD058c83Tzm(|tz{vQ!RqM)&x@v-o+VOul;m?Id(Tu+Yn zLwM!o<?D}k=u{~83BGNLn-W{7$f{}R=nNGYR4*F@XM*T{J6J-B;Q*jjZ%<E1oyxyU zmoN7{6M$@|m+}?2z^PeU0ni%G6Oh0jK>nyE3wDf;k9P<`ezs+OVzCe=tZ95c3%!pV z;MR^V@z=7lB&AHK3n}cxjdF5wA5@LLap&D<6Tp*B=$Lz${!0;!^su~_TDYV0+b=ER z{zsK8y&8Ak_F|aoMNJpf?)-thk;T#1hBTkUonyePF|5i-!VacZR*Qf8a_y>D$^iFO zZZbkdkWkz>@{Ire`}cHf^l*EMN{TSA`}#zCra9sbkQiv!hd_Ync;Hb>c<oed#=-6A zhmkOdZUF?X-RgO`@s{o5{m3NVr!7f$pTAR_eWGPBTQ&@`;Fjkx&`a`M7d+{&U%wiw zh-GACtc+BaR91@c@O;_L#Yq9MY0*x{9FdpA?p&tN*QBGN38kJ`S?S=3s2#@%68_AD z?^Vj-9_BG#1&1gH0GKe@*#pIaf`Wp#J^cMZqDW%L+|-n*Gn-PaVRU`W(x2yrqhCxK zfjWSMq{aDKrU-aB3~gW%ld@!_0)vC?ZF$hDEUOsPD=QP3LtvcYC2{Ln(ws+KM#hD+ zMzwRa)vF3x<of33(!XtpKe)Ri*v0Y@$8fLJnImfk04|Npd~ES~AC=#WZVwhc#UV9p zB0mcKu6+5uh*M@xjuq&sdjoEy!NbJeSD$tgUb-aayzt1;vAEXLHO`#(P^41f`SYcx z(Go#pNNRfek&l()aL2!z&G<kN>PVHUcRNIer59ArB}LK+jXC!!uZq0exo&g8sLFY< zdabV7Yj<^K#w^YpkPQ@g%|gTcN9-eh{KxmyG}P3(VJt(IyuZ1*$)Nf6<69`7w`ZOE z$Ec5vu$Lq5-<ZtK95dq+Sw_PqPlUOwj#NU61EFhcU%-Sq6X1G9g)nsX%R)}%d~9eW zlh<+)PQV(ia>0K!xmvyEyE9}t8pBqFC$IMU_3QeR0}fOEdd*x0K^tld=3ov7OudGJ z{&gV`6B}Y6>*$Ds0HW*+F@%~VfFce5uM%^jU2s~eBG9e(^#L+;w7)qk?y%UC!CkW+ zko!{~-_s3KL;5z;%4>-6;D-rp3_|}6)C8bl{Gy_N4Cg@m_yVc7J3`!h^)9q?1D1kE z?D}Z&e4Ucas;UEsg4m@LQ&ZDUjKty5W|!Sa1^MZ^mNc2Jo*sx>=@glL*3GEr!ck6p zepGmqXyG54l=1-O*J`2Fc(F*q_3YKCBU?nA=9oWw!tY2Pt;_C?C|S<UOi%MW%_%h* z-a#XynWUoXFQ32+5Xuj3{ON&N3%hID6au;K4O>Jiu|+nwZIuKN3-Cb5N3{c+wgvH6 z#hdfqJNR#qZJXY^FJg|Td88Us`mf0Iii>+6?fnbcz0J<P066S_QY*b6EUP4qba6_! z^Tl@Y{F<zx7wxaRteE-T)zNCRHuP9+PfSdVR-U$+jt&h4#VZ>5vAv+dlc0SG;8X2v zbwig}Q0Q;Q_jY;R9-OfOD1F(oLdhM%<Kalu%a<=592`P;1(fG!X12rvWAw)oKIi1L z8S~)b;kg5-+W854F@m)&O()HQ31ZqKW5)bB@$wzAE-W@8EUehA2@6Bboz+n<DB)9q zzyc<t__5Z`v5Hq27~a2o2Rgv-`5UPw2?qzB&W8%Yc+%Mg1)!6L5P|9}h-C_EtQ3-4 zOpaj>+t}H`VNo&x<!Wo?FO`-1y{b}osfn#itMc>jh=_QAD)h(++HgGA{s$iDlES(J z)}>SQ`Cig6S*le2Fa0!ATx$nf)HI$LOlE;#uGETJU=xlHcb^JI@lg{W?yNv<mQQKc zG%$!v6u-<QDK07L3!=799RP>P#^7!z5sW_)71Q=<V2Qj}H$Oi=fkFnJ90d4tUEQSG z7Cb<UfTFpqlz<JM0tp%S-t2&Oc2}BAGk3fG^mq;Cs{2^}t_dT0h<$k$CaKdxzvD~1 zD`rL7fGtOyqyWk}Ic);@@0L}Fpq~749vOf{!B`0($__q=O`cv}TAG@`f3wHci18aw zj#;fJhyKqCa0mhndB*CKCr=U*AA`gS&41Zk1&|kjKilW$$L$1^EzQkej8t@wA;QxC z{{71notDXdn}>&NG~puejahLuN+H`3cVIs-2QMuzr@)g&&oH=+{QC!zIs|O^wL9N& zZM@-l=3-({5We%=%&I7xB_C1B*HGpV5RySH>SPOe^{Q0&j>_DO62J4&n3|S>OCMC_ z>^^H?j9&FgZ{IqAbon&Mo>YyJT;levu<u5Kg0ztwnt9+0kiq^pH$PvfUGyLSFW3Z- zQ-}ZjDYF|NJD!r3mKJkeP5}Mdmk8Rof4EG+EgA8;TValRCP9ayCW3eGilo#Ml8_V> z7P@sE8!M`+o<eG;dj8E}Bv=O{K=icmkzhhos!tkOVbx4Io&&Jvf3gWmncVe9S0sYW zho0nWPRfzvnG6&d<mBX7lvFD8V0n~4qX5_dHIDax^5P`$1t^X-4l}c}8NG`<=i4&O z&X4vuEe{q!Q`avxYs=FqVGl!-PJoKn2}TAOo&PIT?RB=Xu~ApQl1>OyNwN|`lyBj$ z^Y#U*!sSJX(~0*ZBl?*6^XJcd)f)&V-{Ix`*YNT@=qu=F#h|`5#DIR=DbCExlzuH- z9%ETjF5XnkDX*5$S_?J>=vHPb^sSSD3md;=NpS(FS8mI|XBMKEar@4lSfthL&)B-U zx;?73Bzu{61R^Cju0&1?GchrF6{=I3^H6hzMp{9Pn3$LZz8_bQRg~}D0=B09`0=Rk zb4YG3j`ynOFzvi@C16jEtK78-g?W}F>AwD<!$Q`kq^qk-;oTdt#_{n}DEv|I1m!%I z^2_!6wkKZ_FhW<;E3r_1_^|y>`AD(%zGG#tsBhV~;=Cc7`_V<Z`NAN@CIgCJfdErb zdJdiK7+UKw$t3b9F&_r5z}bUL4!q}e;w}>tbKbe*VloHQbWmxnlHgL`InM!zu_pq3 z_I?EQzi$Lg%$}gomRfYsf^@NV=P7Q0SoQa>wVX=t;9y81jN95AQW{11QpiSqKyVEv zWy0`VlC(O2x~M9#{X3kyj$PH)7%J&Af%Mh{B~}ndDCD`~WSkou=dx)8_76g${-(2= zGA`dB3;;b7#uT+fa&hLbUcFL%FWR?8Cb2wHxe0;{gsNb2K1`eeA_DPu=xc_gaWCHV zTKa8$x9TF^>8n!jM_f|}Ty0h(uAP4%xki5dT3`4W{WFr@Dv67oUAx4hgQKt}px&4Y zR9cYOsf~-Y!A#J}+lEBZMz(+^CC4>9G7>S~Wd+hUAS{`@9^d`hc;RXk2yQZI08L~g zh%R4t5e}aJglj#@%F10*r!^xVYRbxXPEXcOMMXt3RZ~~dOCVM*TsFvD?!2MdHSnu~ z<?|L>Q|@^m(gH^i)uE@x8+zs(Qh_=}LrDpm2-6*dD$30R=nAI?1NCxh%l!FohXZo@ ztW%uhkSG9Im<xHixsA&|71cB}G$;=^lYp3|Fx57jI%pr{Yuq*{mh)Qpm4-&6aSQ~F zjA@f2lY8{&7fhA+Tj=bXT3dIAGH`5%)x(#dHfiSjg_{DqEBO?7CL<LN<)f~2rmK@6 ztZ*&fT)_ug{&(|30x)An5l199w;lYj@PMj{imjEEi0iU;YOE4eJWI=QAV$J0Go~I} zi$6g3skdl1S$!>%Z(cG)Z}En>aUwOUb@K@HAKS{=xSpP#)p5#J2hgVWroy=~UaKNl zoJ8&k)CY89++MEuw6LOjYy_*#o>ub%Mm}HrS`qyT<|ToFcufg$ad9;@;@Eq(!v5TB zY^}q?!-kg4IwcmzApIxcbe^ZJQ5~I~Di0nky!ZHVEDm0&XbPBJ!*pOvfT(Mei<7kK zH-oT!!}z!q68TBN*G@1Q^hnpOg>Kliy}i9~7cdvtSHi%>C!ks}L&iqlEx(f|ojpm3 zwdq?frMyYOpEpPy_&EcE7lrAsr-fmJE_M6}qUhP<8T9)dplGxbo?mOV;F(sw7#0M< z(gV>B3Q!F|;laVdv3v%Qrort)1u5_3W1j||1F*bkhoyTC{C1)j0^<}2_-FGkuGY;O z!$O5FkxJ`<8d>OFva*e!UXgh%$*DoQHgjGPN>l<89?~ZYh7Kp60A>JK^?Os7<VGWq zD4;W-%$S>-dwN#YYRz6Fy?OH{&Xg0%2NYwmH*0==9w1a5$LKr$`lzU=`jhQKVJZSD z#go4Gcb{KFp=<rB0Tyg*98A0-)u%4{@@0L%$nS-%EeR>9s;X*qSeWA^B;JJjHy$N< z`R0S|rSAED@BvjV`p%q!HVyszQ2M$=NcyvqA^S{g7&h<hkdTnvH&X%n3?2@UqABps z{fnF!NL$+W#LPpQgM;V#b-=<r{A>ZtC;y`T#GzinaPFf*bX=DV5MlxndUq(m-FF96 z(Bl`Ij_7?~kWDsiu%8^{G-^=S*UA82w736Kb8TckLq=BiCJJhq6N=+EPHE)kUV{XP z2nk{5;P5&<-n9hn8btgfj@?Jv+6nL9E2D8jNO$-mJpG~vXqf$z`~A(=%pDd?d~Zbg zZmEYr;7e*MljtNN5s{UZ)whT#bZ<WyzzQ;-a&wsCLv`IN0t)ssmIJzch1aevs8Z5o z5%;IhlZsEEFRxR|FFIGD(O2YNyL)(u%pGO*Ss%~F8!0|~xPqgyz#4C8N-@9yI=2t7 zB^B@6VMvzl?rxku4-8Rw`5ZYJ87|IJMOFrjJ{A{mfT|OFYH4OR0~AOLC`k7+R+W?x zkAGZXN`p}tM8<SWWDIf<U=a~9F;0OrZ~-yGo<((8ae{~|v;YtIyg}A|vcSSZ?m1pQ z0~j|mdd$4N%ApB*I0q6rlaqyUG#O`Bqr7wN(sifrT~qRE*sd-i+Q^;E!UyO)&<9bj zB2mL2IOCpw<25e*LELh`mX?Z$gOsERPd0@ePa3Av3=*DO;B;I(k$)}o4`5=UVXf!j z7ZVZ+H?~?(&|r$-3*~S2RK#m%xv=iQ8u**4_`kr11)w%@u@K5=YY)D68w+(;2NDk7 z|CHEuIvEkg%zI!I^7<>yCg=E!K^O@O1KnH5i-@3+=fZ^x1-GAw`5xg2>tl8GI4%R2 z>H*mC1ur8o+Ri6zzRZ~m`ggrrd5A&n8{=~J(_pJ)nJ?4LClM=y@!U}vt<=$aBSeLZ zs6q6@Td_YYDk@UJ8QCee)<i5#)}$(RJTpHp<actkYE-jSP(21th0$uaE{p`7lw3S4 z#-Q5uu7CjEg$o_<r?7={2r9XP9U9<io`Zi%pQn1vB^D5b!4w0?{oMim>5W6^wO{~X zgQqB&NTSy7D{rE+10w;~L7}PA0mH`VCmI@GZAYt~7uE_gGdEb2SP3KnNm_=B9v^J) zbqJ2$FAy(@_b|GRs$>siU|{g9Wh@f;ZOmhAE8Vx~?Be1Aqv`mOo&3XxNE84-x86); z!Q{(Mn=q6I!)W{OoX36;C98Il%DvX52S9X_d7lR5lC+#GW~D~K2+VDD1SZ1ynuoa0 zAf?6W**dgA70@EI?1=^|M`8U*RVx(%j}sVzYCvASOMBULp)H1OwEshIW92-G8`X2T zRu4{|E%0z+=4aVxP-q~eV|6}<pn0x8G<<-TOAUS{MF&%2mjMGI(B7IVzwb$KkKCh_ zuYAlgMfYvZKPfi$E|7VzS^snA&H=81Q57ApDW1wZ2%@smQrM#{!^ajnWk6znrOASl z&_Kj8T<x|7mI%!}ZI&!gH8nNRTa0QwOLg;ISH50DOl-_y8=w99APs%jz~HGn2Ijio z?~P#hotAJ3{_wVABO4Z9zEi-nrLu0A*m>a55Ud#b1*7Le8e_CjQYL_%lOfAg6AQ2y z92_39-Mq>2H{}5u+tJY+dVTzkXR-;{0dDfXzqLywtAv^Kqk>`#WnPZ>fszs@J9`5* zWoK=iiIH*4^6BlQOc(;d$LLfM5JQ*8Y7d*KjFwN<lG3wpK8(xLujIRX_bM&=93ti0 z*)$O2v!f$-%|tNy$?d+mj^t4XsSUq3$V!vOAkbYTnbMJ{vhs3VCW?TX0KLb_$!R54 zg`YSkIoS&(E<HL8^LR)3hik3F;3$Hjpp&B`PwIyaQc8)Hz*JUI&i#!eBDQiXTiYm@ z3lIa15OrT?Rw4Y@tqrs+Az{$+B0HhXqeqWSOkg0{tp8;g_69^C;F=)+ow#JE-*O8- z26;5f$p?%w0VW9`aoE)#Uz4zbvA%5;)4mk`Wm;#DW#7DcBgy0_pe!UL^mNBF%}SJm zqkW9LY{MUR`qtyj3Awj=@aj?^%b#$scfi$>I|SX=jlIqTmM$qS=Hbt3Z!wRtANc(n zs6%XA+|K@Oc{Q+#N?dt+2{_wLEyW?PUhTM8uYWiPj#yZ;sR+a&46F@6P`p8gLW8Dj z<o)mUH{<n<jlXV$h=$n4#6D5C)IIRk*a#+*-+HZ*MaO4GXu*R<lHd8L@A#`IK7IiB zH?$gZuL&=WX3tCz!?r>l!K?`Z;W~UgVZTQged=VXqdE4?($2rl%(07>g9J1M!DKK> zE!VPaEZcc`iK)B;x(9r%)LcM0JRLwnNQ}tr+?=%lEg0o6^Ir9v)}?;{u&}XN`hNzv zWIO@tJILuza{C07cRdi{;;J!8Nq={StBt`_7{jJYa`B=}1W5ZK^Oh=b?+d+xGBPs6 z_~$MDCDK)ST?(*=krx`dl0O8#&OYnzW{GE-xh`Wh9ysSpI*lg`>Q0Ui4;f@w?XJji zN}6(s>2h8}BWZ%9w?ZGWQ(BbJu!VI$liN*x6CKZ+s3fcgCOyz!L8&>g>1}WT<AW}k zBh6G0{tv;b_UREjt11TTFaom5tkn3%z)h5?PFZ&L58wgq+~R>q6iKS#9*3B%Hl4Md zovM<O95I+3KXxxTi>6?K$dM&CuOE6`40xoj4nWQ{=wn?SBbz*hJTFdp3LNY2cLm|b zH<+0)0NDoC5YRn`y;Q+roSofpG-}^i7zg@`QfJ%DG`~YSjGaKxQ_0sHejaew?8h4@ zK2w1pZ;7Pr>;EkidAsRlXj`{G2VQ|&loz9>tG>4{JqHTlgxY0ZR1MMMmHn|z6L{>F zm}v!wOC&a3JqL-B$>VKfT5^!l&ewb`^OEu7BX)aMeBr3WgQY^KrUXrY9)Z*d!&I2G z^Ce}HZ?X$0PZ#!!91*-)*!YV?BPp(2`PJtOMF}JI{#IBzzf&aOHU$NOs##BCW9B)S zYENAJws{0uO2wrgGNu=wn!1KL6iF2U^>5U%{f-o%q>)OeYL!=(Iy)eTF@f^kX{t!| zKf|I(q<T&hu?b&d6r%(!J$*#B)93vBW)BTL&bW++@nbNd0K=7t2=2#lo*=xgO%i^# zIP(=3b7y>cH9$2a?U7l^$^AGZMQ~f-e3o+YOG8(fDS;?uDf{GhEHj~F^HmE@M8m8y zSs(yt7^z&5SO#R{+I4)SdiqJvuC_ES%>;H4w3^cUA9<5IaG*RY%C(K<gJAND{yZHR z8Ku@v-x7`z1L9k2AddmxJh<C`{d#l;_#vsvN7d^^O7y<n%m9ab$5`Xw&1#0xM_=U0 z0#ma799{rP3;G!U8zd?u{Ku^6-lc%h(9jTbg*bDVgLRV18wx07ooonvYBv40e1!l} zab;aRdLfaGin`+OFaBUpSB&>UTJZfy+U+&J)9Mc&U~W1Ge7nUcZ}Ga87V`<F>Tg5v z%enQm|1O7B{SuG>j1EQ*=G#pm|MHZagA@{=C0CesadtMIvqU4UO8<QSF5^WMERzN$ zFgiTEk!W&dC2~PP8vUvJSraGe6?un0U#)<J%0z#|ru<r2G{@8rlY<)_cEDk(3A~mo zrR{P2Y+hO175ZJtJk-QMCdlzvxVWOyvjGifW@e_(Yo*MuFS-vo&pHt8cfTIwc16_~ z2q?3$vZlAc0^5W`9o7C|%w;-3=1glCTdwDhHcM^qf3DdH^zZ@SMQ%aWMcx+c(i2bw zgw;mQgg0Q6Abd=*g&UC&!X7=M>>C_(-<Uyd@wmBte@7G9Vwvir`LSCcMot%B2h8su z9UVcUfauFAE>15sXzp|n*7%e7XnKtET02PKpL25|*k@;F<K-el+RVU2Ty*ntmhMB= zFw<R$G>IR%G6|$sXk=q!<I|^4S4Q(?(g-hJ{GK`_LrR8sj{j*U`(Fs=fu-$`zAEVK z>1-Ll9-x0OZR4y**y~Ux$Hsh7NB^BiaEV%;XjW8HWG(|j?0zNyy}evFe*-fE9gvrJ zvtQ3H-=O;1CWbxiHpuFoon^ZdCOU#*V#AwKuh3^yPE#{z5No8a9#Cn_7H0bJVfg)z z(q<}qOhcnQ&%qT*N-xY@F1O}{Q0~QH4KY_v3ud|K>&}PQ=fQCds@!0!u^mC3!rLxs z7}bRsO~6#6>ogwRK~&BA*hP4pFjEy8bAP%k$z@R@!ordUc3zOdoaQ^5L*>+d1NJ9B zj?;HM2%`h1i-Cd9R1;B?kh;Ep#3@;9^5+}61=Cr|VEG#!rsM6i6rlZA;x0n2P-DP# zYf0AfrQ_`7&g~1*?f{=*E6Ilib8~aY{Z4&S*jHJ0L%;0aZsggE$#m>hk(*{e!daH| zDd$f;SAjD?%LVu(fw8BQ&&bNcDXLC$*l*q;Rg+s+*$f272}#16H`W_TPp6qq?_nh< zuU-WwlrjGGQ?s=v*d>rJabxljGS2p?uKzHiE<Y2+zJ*RPE(F|Z!oN0OxCUkv&^nnn z_@P}gfv68JoSYbdHU0OZGbjyusjt3&{|@9gE<Qfkws)BYPkO;Hci7AJKG&D^?d_F= zTxFa=V&|(RX2gM@NH<tV{f1vXiC2v0NfS(_z(9->_|uc>ii#ZC<L=nj@pi%c8L6p8 z_Vzs2pTY|&-;_W})6CIWFk(DPyaUMN`$tzfQ2O9KCZKD?je{IAwBTWJbuEJ?$=Qw* zeV3Yyq{+ZRS}nz*9hd+4bCQ6Sx>jizd)V067}T$aC{(4e&?r@$d12Mx&wG3BP1m(> zF9B@8SYi{<AI$!qFZ5MeVmva(Sw>{hNKm*W^WJ1y1uI19JD>4C+$%!79u@+$P?uCF z)hOpXlH)O$sBAJ)2>ry%U>%v?pPRF28WZ)1n4g~o9|3dfV$_1QnPBqhj!E9;TOBpE zmxB^83y_m*y6N!aoq7(vn5zw#n+LQ!>8rmvjNo)AFng_@7J~Pv+~t=eMtt^Fg2K0& zy89nl2)|DfQG=$Q@N%T#vR==~y)mqjj!tN2%5v$HGbTmux;hHW`PeX&PT(1A?U;3G z6z$!gCLg^Kh%eflfGbWQMpiDrITXPOe5;kI;G2We4m@s0(mX7knwlE0%L2yBF@LPf z9~2uPYPb3LikA+}sqwR3PTrgFkYr=aDlNSVkJBR}B0gTr-MykQP*_s3Zkz>VUfGoN zY;a5ivSGR11vZDs`!`hHwTIG)=Kd466QJ#06Y&+g2)OK?p>{}UsB{E)x%UVvMBoJ? zzC<P5+e@BQppD0my1TdE#LP#-%N!CMe_tZoz{~~nYyv#IEirhQqmR#38rLj6@hBiX z1)u9h-rWVX=oS>L)u9ps-g`M3EiElmfgjj!b8*@Jc*7F%ISCSVQv5RtEkI2Sazu#N zGvNPgfg-;^)Y#ZiR8c7tx`%Q4+1BPTZ?GNB-){d!g8*TVR=C6IEIA4if=t>yxtl1o z2{pXN#r@Bn(?cww*;E>9j{`Vg@1s9WOiZli`0Mv{Z?EzaPcJQ1gNF6<=g)#6N{{Bv z)YGG^O%!h<&&H6UPu*WM)(ZG5cp*tl@2RV+o0?u%Aq+AJB4vtN4ae0D?6~`u4$}ht zZ+N>0z|ZBPqN0$WB}YfzDI4IY(vI8S+$<4-Y9BTI;S0Qw!j;~M_dSuK9ffWhk+CTm z%G2bS`u0kSV*)&^DiQEWxmS2Ul|2k}2nqF<s}#418-en2>lA-dxcdY=STI9gGs7V~ zF#n=cQX&#Q-vVJue?E!FL<SUjDC}#&Mc$@3(SDuou}BT-h{A8wKXVa$@L3rdEG^#9 z`i1KoDdkJc${595i4ErAwYLL?^d-@R^Wu+OU3Wlzgm<k(ofj$`rnz=jV8wc?dY%CO zZr+?tdR|bp`^<!zm6;jg#CTIwwCdBRz%TqIY-<K!CT)!9Ih>Mkyo*L=DJ5Q^p&8n~ zDovLD@#Fi#;0!B3(@gJ6vo&sGbCO`h+#F7&nj`>A&sXRsYIT78sr}bN=TN|1P07^g z<ER}!jfunTvCOD)hjj4-FdKK;h{Rm3{*3e8;@(ck{rnlgLv!&mDF_CeT~bopzaPgp z&EX^b`ROGU$Q}xC&G%!iKwkpBEgJzX3TlwB8a^o_WGdLVxRX2j50%Yun3%ABMki>{ z_C=BQTvzI8!+FxJ!zuBu__#QA%GU`_))056^0-$AB?0q+`=VeBgGSz>3<K*sKu?UR z1N!I=bKTpArk$b8gb;0@;^n{CBUne_fCpKv)Qkul)}Vm6kyEeC1{8yk7s<eYL240J zgIauzQ`=v-ywjotY?jhw>m2{Vd`<cP(R3Z)SnmDbURj~YCfOO09wHP<NhK9R_6k{L zW+kCeRQ5<A8D&Legp$Zel9d&bok%7ApZmPm|6J#K&wF(`d7k_Jjqmrfz9<zS7&F?4 z0gB=c02n$Cm!2nQB4DC1mHcY;DJx63iLA75_PL9O>+WAy)*^X>%4KlP_V#)=gwf;N ztPx<unwgx$Nx~pTb-Wu~$ne!)e1Cp!!xv8#7mats>5XeBqV#}=rza;q1N(Ks2pG>! zJ=CdLY}nFk=FQja9w%~&<ILH!S8!!P*|lYPj7oD+HE40<6~9?|RXpcDv$!lK@s#(^ z9lEmW>ouBAXytZa1rJ8(U9-@I63AY~65b4KE1Ikv+Gws+)+0g{WTm3UfDwSd4dGvX zC-oF1d|R92%%{RE@%AKzT&aiUea<-c;E&0;y1Ju1my;~`#_jyW5H@YS$A~tlv^R|~ z8eP7eJG*=)IcI5#-{}7FqeoSs4TSE+e{&kTc4xe_*(r&PH6UBY{@%yB%l^mJ>vN2C z%>9X&D$8HpDsA*kgX1+|9F%Xk===LkYRosk=RbuKbL0X9SpOqM)xFngv|X`{&!XZi z|7J-l4OTo3^PsR_TC1l%h#pWo{2bcoeQN=(M@%?svI2yX<2gLN@&`PutZ8MZUFqe` zU#{gQPpjvvSPraZ;<WvnrA#)$w(Allc&><ZX6;aur@F!6vr~ohoT1@}*oo=sX*>}g zfZ7Imvw?fF4Zwt4&`;V!9dwLa`&7hU(c~Pn^1qImvHmk2Q)%Ae*RR(=yN#<moW~VZ zOLV|S_^~XKYQ=nsL|B7JMcaQm!3(F(or$Q{MC;9YAs~c5{{H=N<x#K25lt{>nyfhc z38#QFDpDPtH(A;@-3~&*$TFYq8OL&OX8Fwewa+%V#Nnt67`@I3(O@;Rt+lZd@B*u1 zQ#7$_s3t~y`Q0s^&|VQa{1;F1%3MEOb<$YQB_%+*?yLQsEiL-a{CzRlX1#5?q^0KT zssIF=X=iSeQhzT7Z<3FrK!W1sYT%f#?jAwG5ma%6c`B2(!cPA~1~^WUPJsGgk4j;G zfKnOM@v>@0S{k-4l&05%+;!uCa{$6+Z9Rb-ckKlA&w+`91Z550*!AU-j<4`;Ny#Vh zR{#Dnfdl9Dg=f~rSFmSL-#_2i`_?`6Z2oKAWaIny686qzbAU`$T^K!XI>cDB&^DT+ znqKd$1gJwqOl%;97bpj~`n`MiLd7&+r$$JxEr*Na2meSfEid1^b*rpm6Xt1LGgw#& zO@3eR99{)u>$_|Rgmz|TKSW#5cs1{`uVn~z>p64oeab!-`AIBb;O+I1=($@<JoGIt zk!_Uh)MSNU7z-Ix&iSg|B&HpE!UQ9Zrzq{dP|K?xrrPVUz;lPEZmjL$+t-R7lATkR zzaG$Ci_RO=h!fEgGkuZEJt;t!-}9%DMg383Zp!<~1GM7z-a(N1>Pvq5!>THi15_Nv zy0^zGK`TNQUiq=5Lrbd%t$l)JTD*uZm;;<B5%RBIy#kh5#L)Zsvp8KS(SySj@uH?i zO-`<J7iYqz!OjhHwAgt)-?7Z4BqY#y%sq@f(6A6u3Og&9c>uF3m9PfF>WsR499A6n zq7$b+LWKZMeD3N_Xu`K|hoY_gA2X!D@E1eDWkVUGU-180fCVa{`?e@Bhy&?A=)p3v zC;wb-PL43c3Z#W@-0W|gdEsJtIFkx0@DGrb3r*&(A_B@c9Bk)>yj1wAMDJ#a-?vq( z%j72uMn?qUvS~>76q)ZOGgPGh^Ud%L0wcuNil9A#UpXc^D5C2J>yekr5cE1VFJJnk zcYywePd`ESLd@oLyhsb`797V~`lr#)Bz2$U*v88{yRZ<;b&cfIsf*PC>w?SW%jGrX z7Xp9pvYUKlkoQ&T$g1lZnX9Ms4AK0@Jwo}6^BGuC#--|m55SZ_vN7jPr~D4;D)e19 zxw;{MEu974XK45lH{Xp!2Sx5^AWZnL*Zb~iWE%)=?3$dIuyoapk5_Ms?XlTosh`Xp zt>b$`B5UmAgOiodGi%Yk!uBR8Xo2Hf=A|?lS#*x$PwUVe$Ap4L(l{KuooDtkT(`n4 zBXzDwD?mpv<$a2hOGE4mN}(Hq5roh~wWD?Tl&Ptyv-4~ftQ`f$*Di#F$y{z$&&iQu z@FUw`nZb!4LC7X<-C~5~rnG$<H@6>J*`@&$V(;x5m4hKZd;9h+7+BmhE5Fm<{#9|$ zDYs#siZ{LdSZ-{%?$~pecgJd0vqpMnkHslEeS8cL;tgBlrc2Yf4;_k){#<<tj2+7n z=g?}P3~%%AzkjQps>Ahj|AK0kl#+s41nlHq?)UJh2nA7$Fnmmc$bDjb{2{L5ph@^L z3pm_QOlX0j12znjsPmo@<Pqg2fDQv83d7<W#A%Tz)R}glRo0AkAFmA9ivvG{aa99e zNd58vkdfp)Nwkw41qX{Xe*F5?Y|3-=`0*jgrLlSc2AufmcNIQm505?ibS$Iol5Ycd z>KYWD6%!MCc-{wBNb0a<w!!rHIQ#bPcCwZbqQaF^DppvKojn1nM)%mU>gk*mhvfSr zc`zKjPu@!qGNv4KWLzh4^(`r1FfVLWef`QeEh+xs11@w7e@>vb87y;*ADleA5hX|m z81!_G-j2nAm#om1a4Fc`f-7=K^oOdt^&7?)O52z9XrNsO+|uNfR#z8v=n$noik6qq z)`4Wu+It4lG}Mi5S-^82&>BhKhu0{zO+rcO?1Pi0mwV2viXKCpLlO|^g_+j4_;@IP zK|}(>_N%J`*9!I1dd+3#SpP$_3!ZVQcUc^+lQdaF1wT70`PbFUBq@Rsfwk{&09UDz zG>((@jIW<lVq;?i0=HN#hnPS8g(lQHLI$OFdl)@C${+h;qpw<ocqC^3{O2;q?k8vR zJ10`e$n?+#s18@Voc~2`wy88ULXo};pa-tZnWfit>l3p4_XwFJ-Wfz%6~Fe2M_E}| zWa>P`(}CtzukO&1IP{MI0YiOWUJnl!*8l8I)3J;*IWIr|kgDiKCnvY`?jL%$8ZDvW z{Li)rf{KprZA(jWLLe3i<5Y8(Ew%uvsv+ELRqBT&qP~CoMkH`R!xim&RW}Z+aciNe zatx4x8HLN9Y}%)E9u{Y2)_);;(N14FQ6-`a?)^|WW3e~i^@FF(&0~@>z;-1ka|Z<l z`OoCSD4Hl>0dAJHW|}?}-0s7Nlyzn9n;ZYm=Hpl?_iwq|ViR@imfn#gYoOs5suvCr zq(0S)tgWZs2&yy49!!frgq?z$ZQlHzbGZq$SMr336lluw($by$2LC!qU4wvtbs!<` z{5>4nfF0+C>ja983o<jw)PHL)RK8g_YN5!TrYulgSjZ&Cpvj6-dZ5()L<XVg@-#C` zgE3M!UKBK=7bsZ#%Xm(w3EfOWO;6|^3LeHOn`XamQ~E04opIw#>(?EQZ7mRtqJ`?T zXGO(i6)1b>&K-Q9Ep&9>mglm>-&x3w*d$SDuKoTE`8$qQf}PlJiL)$y>S0!vTNW!- zF|@G&JOP98pE?r9$jrQfb_mSI75EZi>$8Y8WpXU-V-5O;KB}E}mHI`n`YU*baM`c? z`n9l>6i7DzWb^B8!`1nt9IqoHA_#CmEG)pm6Fb4GCnr1m^>Q_B(tA65$&SU2lY~?s zoE;1}eftmn0k{mM!S^Tp_hMl@Y?ZB(UZ90>8Layc`fwRX-V<>!l^UWww0c4#&pyp~ z{h*L8+t{!=Q9N$57szU}<O3j<xLHQa!f$%=B<r?qJyVC#Nq(Q1!BTWP$Vw#-ktZ5o zZ7r>zMVBnNa-KbtlaXQew99|_(lodGdRW-c-_hb64A}<0pmD&hjcJjS3EmdTJ1MRw zdis~&1Aa>Uv#uh=^zjxStCp*eO?|`%G#=;Y6Dq(q1}YjF#1EuTxmQ`KsOmR$v%NbI znT4VUii>rP6~CHeN8>hEE9weOUzFtKNeByvPWk@!dIM=EghT7QFPV{I&e!;@03h5% zF{%W4`>tJtbfz@_pf|8d5#1(r{g`pNVHpr8HRcNw6FpN4a*cAJL}erfcQ`-?0cq8R zmp<+p^t7!d*sG1|+x+o8pcI${3+lglbEobPh#1#q9B>7r?ub}^3v{itv{cBG!a{?Z zmKG${-`~GiUi3qejunXe+uwDv;lRwe>NaSf{rvub0%P6Pfs-Jyn}z0@5QMW(lE#kr z%&dGntDCMNGp=3m$#Q-K24fWB&{!OZNK{3w;$FGgz5{m(@mk?_;%8%nUc=(%YaDRw ze0=|)xf{RmvKlIh*;!|FP|&l|HNfQ;&dm4y35zhZRMXOyeDH@Koh~C@CnJcDD_lZW zw%J*4f*+8$Xgu(m2OX3F5Q;$hx9FXX*NYl*0d(|-N4i5(6v{EJEiFq>Y0Dl}c?hKq zXyz|<TIo}`%?Pmjp%+d;m;`ojKW1v0I<=WZQLl!B0lpkS5MQQfRAR>Q|3L%|dMa#o zcSJtR;2FIXj6@iS8>_(cZ?$euRgS-R@A{5i_|HfrF888m2z6+&`LU?3%h)I)BBG_O zEyVU7d|0aK**K_<WPko;<>2`GMB)v4LcH%FI7)c-x&B;PF@qQo^2yOSDQ|qmprzM@ zj7m9ZBOodZ))~-17yPEPp*pmb>0_l5iW-B?u#4{`3!h4vLzi%>IFJ!sy?|QEe{Ide zHwCFG7B--lN^&PE9ZuQ#e;<IQrQW|k8JE{b=xbZVGB~u0^OvbxOCT9N9LtX?a`(mx z!~xJvWMmtbAhH0C3QbniAF>l*Yp^!e5b4vrci%p^uX~`9+P7g#UilHy*8rTI`1z|x z#bDt_13KiXkQS7dl9ED*UA0a)>Bg0r?4Hb^xe@ETeqAU|1lrE7sgGb8&h2gHA%U8o zOu3|!(1{(?rptWeQspu3(=E`eq837V=u$C+l$tB^gDoYq5C)DtnK@thiGZKs8N5cr z6el&T8<z@#8-`7M#D8MxJ{0O&SFhH@#<Ezo>*jV_2EI9R{P;frzjHP3mS3LDH>-3L z(x(d*<ZYj=dh}x!b`yU*><Z_;4>c*AjdD1w5e0x+t%(Jma+5;yVk^8ODXasmS=~5k zDJh5vWNX*5j)_kBq{l`^(nAK+w(+FL2^`u1tv=-8?0}}SX1RSo7A{>Va&b`N1@%6? zu=zFqgq8V@;A2C0Ms=GT{x#;qQ?9W3(ZsiK2nZ~sr%bQ^b=Z@{z`($o1Q9c~H|Yd* zat>q)eIGuAuDwmq$cR<0meGxCu_@_uj%ely>=zMeje2Xc$PR3qkl+zu>%OcWC)vnQ z$xuO`^dL01Jx(j&(<YumYJxTi4-Y=lN|7d%Rcvf*MRgl~&_Dj;+$$tx3DXp0R!|Qo z3c+>rlJ4_VKFGZe=j%6aNZoq}7c+drCBO1<#`2;*nw+GJ6Tw*lA?nt`isc_a7JFYf zBnP4$ONWOab?7b;k+*-NTHn0`zyM><<pkck-CMS7Ar{{k{11+Vw|1rI&Mx78Tf6*o z&u<%QtzL1oh6(NTp&<L$AoN_Q+YJ0&FB~c;9%WMLHVVpS6=eVc1t#{=j>Nr@(}Q$5 zHzP1PJ^hPy3gnr9f|3*+<NmtpY{X_}X5zbM`bQAa7$gN=>DE9r7|^^Z`*BT9O96>W zNC0~c+?!yn8=!5ksPMM25fP@I{r0V1b$5Po@luj~y5?*#2bB=?L!i_4>vL4}!FiP^ zZ|z#M@~LPjfI}NC@ZZ9UFWgXVY;fea*Z}PG!;1RbCaHA_PhQLpE~bwcVC_OZuygg3 z%a@ls)MYdFUHXDO)VrTBsbR^)s;zQOt{C6H3M)(3fHzJg9UU4w!B9b9d{9IEgG$Gt z+$7wRO4Gu474)n3@57CFof&HWO1pPQ3(`Tw0`i|w&da>m)9n83O;eWm57pR=$5-)D zU=xh4sMy!BY!;NMb?PNz8q^_o#>Y7{PU&_%Wxw}4`bkN;gElrcy^2b$C1}-fCIHFu z97qE<kFs1@d577N8I(@H#nhik?}xesCYYwC;2M``{WvMf&gsI8jNuSUTDXnZJo%W0 zmOGbwd2OMY%I~TD@lL8K!$rAD+NA6o+8x=z$-8N3e4L#2m-g5}s0b?JBD~Cf_e5n8 z*Ky6LC2rsF%Kk8CfYsRFU>3X0yoVsatol=T74H!!2_p+j^UGSs(zKjqLTdr}+tc$E zGO*_X(K~iu+TFMRCtmXcKyr9+f5-;+I1Qn;vbG-okbP`Pwy4ViO)MO#f7j)7;%q=o zx0WPE+u(jdVTmfF|8D^O^@F1TuHk`Sw|<CNCFGRA9dXXw*A~}`+0}l$VW4}%KI2U5 zbv5lX0W@#ByS_b0&p^kcdFpOsGf$%&X?V+jDNoSSMm(GZE@5UQ6jm7@QX6{gEM*X6 z-e}!deiMjyv-{dHM^M(#-NUI^6NDWAw*Jzk1(Ykt6XhNZ3vq?Jf8L0i@?EFiA1a8j zjxxYMx#@mRP?3WsfG`dWbjE?Jf3PkWW#{dP;~DE<AIu{t$&oTd=)Q0TT(Rt)!_x!9 zqE~b%VYBOwh%dI{2IOn-J+@*^#rpmOdJJj4e~a4jZYCxs4`a3%l({riREo&p*r0~~ zUsaW$?vc56J2jQ?G1Xx&14NN-#k-CZIag%5gO6{neZcKF?ZFP@VY#^M9vj)6oI`LQ z?VA6&-Jr$TDuhdS=u=$&@Ynn4ctS9xhg-5Tsi%q1ZFYR|rqwaFovX9`;y7KyDM%m2 z{2)B|=NLt3#L=bmO=kZh`OLIzd$#QtXApioGbJo2h>*=)ULvf1M~*Di==J~naer8V z)4KMyvO;^>%l(nd>$IMp9Ru?<gi3DN4NIFvbuqY{29z82)$5<Bc$sZ>%RuH;Rw8$? z>Ec9#pfP6Zk)fnZTqtz1_VSsvFsET<{FyE7kd%}h8y`<Qrnifm&`<+=qYrfh8rM|R z;y!qN3n!x6h>l@>gIbg5SzwXdFRp69u@@>;Y<F*HI})SnP-zcUToTauf<(gb6Vpj| z?sQdqU%L2*4PtPd1)s$E2i?X`TyJV>s{1#034oHNtLyx2p+j(H5ysaadn2ZlVZ?sB zGxip6Xg3mg8@Zc)$Wbsc;XX-+5{}Tu=@!fzbSkFZxkGN~0l4}6`J1}K5S`%DQ$BL| zxiGxhaD59&^gmq_`b64~Za`tk(p>ym+1TPzQnpk;7V5rz+j(2t2}s_qq9_OmI1;A{ zZLhO)!D&SstwZphKpuLEHM_Cp$1&NOyQmg8IKmvqeoVAtEk`tEH)cW~i`LIk>Zltd zirvBIF6Xh;bEy@jTkqeyw;N{P<}mZ8mmD2YqLnLM)D>aNGc-AMYIHSq&<&*wAO1#} zmaOXQ0Syl!>4h2f<kyJVg#s${hh_;SY=WX~05G^5Jm>n$K^xpS{`s1#`=mIxPdaVM z1&OGG6mBF@Y-`Jwp4+!sZ@#uF{Pd9@=V+21&D(gy8x$Mi?eoqE2;sG&VxsFpYkU9x z_S~;R53>FsqXh<A8tRh@3JSdi#>>!90ALyWCCiLVzdLDZL(?Z9Gr{rI*m0;T@ZTRm ztcCwnpq2&lZSAMe*hs`|?B4ByLkJD(Zqwa#p@x$0-@c_oycojo<WC_<=*|&`WSVb3 zZ-<tg=HMT4d-!(@mH-$^a1|fg!w<w3R22|}l^;Kn_t-``B)B(w?%|HckCl@O0ivq> z73N`}-X$d;`VHR8>0wb<EIQwo&M)8gG5wKzFZrVWsTX_gHep%-r&xIQ{4re}T}SL} zW`F%7<%C~JBeOUs#}0O;n3Y&o&`QuqeCrefuv}edkesuHfdO#gVq?<wo3>~xQ1)1% z)*GN{C48{*_qvUHtLda$!M;;E5Zx6nV(zJvDO11EY-==77xz4Li)lPd7n+F64m$y* zK!1Mk1IZzj5)l5e<$8t+qB8uE8qD&!vGLHuE(>mt#%R}QK$^swhn=?Rk_oeF$1#yO zBDe2_K^I-of{#A%QsTC(KdKS;6+nhNFNG#61qH>(lL{ym0<IbxDKQW8phhN<DuXsR z$fU?MS@DfYXZ;vaPGX;fMJTB8juS!q<9@WJ|65APub8Lehgq9&uwnP3?Cu-w*%GSJ z?WL>R0uOkoBN8;Q98u4}@SnI=ck3>WQ5?2*P=*1Hs=ZgFbM`Fi@d{@puDwoo8$}`1 z-o`-vj%}`tyipFaPSli%>G3yiG-GR^5JYIgM;IOMK7*l#I7Dz!jVCaCU-^Tk9P5Z& zTMW>Z=wY|UX#Q9*9Wdvee{ix)Kti?SFH$eU!U*ql`<QTX<o@LnLrErj`Va}-uO7;i z{nxfDjl5+Es+%7jm3RE`C?bN6l){j^7(MkH<&@?%8gdu7ar{>c8b$rspr7klhGM$2 z5dkr!N4`uZ?7VYiaoirtZFSE{#;gHH_3f<wq~qPV0NyCRDse^=2-C~w>8E(nL**9} zPOFNM;`#188y|s8(@jFSwFDxN#-&vB+`j3uGBVF6-Hv1%#J7CCtJa3@F&+9~n5Xtg zOSkp*_FBk+lj%rOm;%DmyuiCFoKjv4YBHYfwY&EXe#_}}P^@qr!p8qGG@fSLhl3El zU(lNS?^toxFYGr-$?LO<+eKnb&OxTdh!b}JXJ^j%MEZEYARWbT9u=414S}g>D1JIS z-Igbh3tII<gt)*IcKv!Z_ulVViBOVX6d=oV`~x(T5MI<e=w7*U1!DVhJvYNZAi&q- zjjWYY>X6)tE0pYRI%?jgpSE+lMs083*2_QWo<3QeUj9w?c=w(pM)h0Ka_|NM@(9{k z&H$Y--TQQy=h91gkFQ5^e@Z8`hK$jK3Lc3=V#Am;y=&!YGN4)r5BDU^&M(C%8g(sc z=YHR!-<%d{p5J3$=|(=u3Zl*HUz}o^K5BnujdWy1z@XY&x7A-Ya=sy~uP0Od2}C!; zwO4~ZKOx0{L-P|TXm}-V0`JB_`<2A(8wT`eraQL-_0!^C7%amYlW^@Io3cSq7lO*r z)}M$RllSICORqFwF*(b_2>4PKPLO(PMmjo(v`A<Baj}&{U<k+g0o02`{3t5>Lo8~F z_U*ju>1wK~&iAcA`&WKwVA|)W<l*4~J71wo!>LX!=MEfVjtgIE+`>t<jh4$DOT9|? zHo&a$6Dp6eF6-PrPs2+$)|~p)!`Hw7N*4jQoqjduRJHG2$)mD@mq~FVX~LGrSi|&0 z&%?R{@wPvd0+89e^P+0+%{?KI+j)ka>J%=9{ButMXz34G<r#jTp2ic1w1&6z^IaPF zG!q%=AU3t*(Yr4EpDDv~`_U%rNNZ{#7=U0wCd8%8%yz~~Xy4)A!~))v<cyz_m_|!W zi|*4xdP`_09`Im;%6(g~lzO6#U#mSDncPnr8p4KIuxkK|?867(Zo=)a2aWY1cZY#C zBr#r)4tH0hajtHhVIFZC2e&(1zPxu*KS4w{+%nk9;-abN>b0EdV+k@_Gp7up)ynJU z=in&A)`Hxa;;fQO|5ttPZ32L5aP0bnlt+nn3|<2OCi{2E^FFApO&5$nPpaR{eY{&l z*GhCA;FS$^aG&#=M;_&3AFTHzby^lRo^{?RJng|~bRTIE5JG!sXpnt~pCqB82XNtu zj|g$f>qo{&PP}t88<Z=4URtep`V@T4_0>y<?<6M!nX40)ABX%!`{wo++Dn6O?jL)5 zX{o7=Thq0U1p%rgae6j;{#aRo0AD5`CJ_5guLBS};jf`S`T_i;oIR~3tI>UJrwgCB zE#5fZHaLT-@OC@$^A?q7P9{D&#{S)sg4(`ID$}0%Qr=Qw1WmNgG7Nf%I5@ES*%~RL zz_8%4=}=u}+z^f~vp&U`*`07K?$M1Kv~~^mfwfy&3JvB!h@&w15us5qBvSZurB7Y@ z^0K8wTK^Aozp_z^p6#Bb(_eqzUUP?6qs`9q?@0F3r<dT@L<|vZpAvfPP|L$*0UX<V z;rf56UR0W-R!?xhPjPLOb{ybgWreX07(L;bSci!0o4IPf>v|rPy3oITa7t6ssLIN^ zSGHMn-d-tXRDyBS;;mhd+(!S-dq;tIj7mpC<-PuP`$&0x8Qp5*r1sd<3*;3K0kjC- z0`a+1Jc);<QI6mkNN$39W1VIm-_Z~LTj{N-se!*I<VPxMw-Xr$YAhRR0?Y*-b{*+f z9Ff|&s@>L<hQsI08=cDIz*?EJ#X6RO{wkf2BRUk`j!2Ofln5YMF5WqpqzA(?Qv&0_ zH5{lx_!g+t_-YNHDnWURvzQR8v$deA{Eke9<NErw{@-sO&Bj@LP<q=M3E|7;PhlCE z>Qdhkj&#TzG<~pefpcWaO+-(g+h`%DrK5A;*Py4yj@w{Qo>^Wa^>%lA&7gRMora5_ zpILPn%XYp*-+S*#L;A(YB>|4(-RSeU@tr#-QBMx-n*E8;;W!axAhxUdE09^o0xX8w z;9|p@E1{cApSUv%sV9$V@@pJAbZzfaJWj^s9QmEB5xckR%Qn8;ieiA05>lNI#wFBz z{(FkZ1fwi8PLv_^5@krLq9a?(J#?yj7(G|M_aF$5Irh43A2M@b`x*Ng+lc}Q$!XPU zj{v#Z+u5mT3-&SXtD<n|reiNPmfmhZQQEI{VmUQp*osST@AHU+@hTj~nVBQ-;A&9j zeyblSAa7!^7v8Z$Fm?K_CcND+)cnRJ;zj4NsH%>80;h1afI7dz;9EJykrKge%<DWz zC;AI58hkzTF`tfPe?at{C4<~f!Ao498%I)bRYY9-VnUg1&<DQKS{RJifdl*wolh^+ z0erXg)2GrTT5GibX$toG{?Fy|4DpDQQ&VR-)S6JY;HR03#t;4L2A;nOtBZb`%9*nA zW~O}`tj_aAuL}~sJ6;R3#h-1GSp@|dP^sOiVksBpHq1H|nNsha<ajN2YeroveG2Rw z%sg~-{RpYGv$eJ4R&gKGI&vgJPjp7(^_%4YpvJGQULesE=m_t8#+2_1Q|8=Ku4o+` z%+Kh<Kxh=2*QlU_oKHZ?Ipk18Vnw%lR4VA{1~K=woyGYl$^iZ3<?T2SK<X3}79Imy z^QP<|YZIO>?z6wpydd&~Y2sq3v_Bpzim2SXf^NLfkk>i&JkbvV6T!mFjMO|{*pmJ$ zCHmHeJjZ<b@0ob@7g0KvShEUsAdmo-b?kLxPxUTGK06DIFjX<b8wK6d1=P-5;f_z$ zzjKXvTy45|tGkW_|5qMV8#)vs=6jN)Wo22qJ3);jGGzbNouPs#Ou+n)`{=LMOEf1# z_d~c~#>D0t^$qeAah~qlMO{~mBp=}RIQA3S1AQ7Ne?@MRUsUA2*qls<O4hID%VgIh zHNpsJyQdEYQkJ2lZrn$wa!@NBYQK2xD(Ha8p@!688bSvMyVL}_qi;E^p7BBUk5NfM zzT8WefeQzG8mXJLV;M@Q6qU=8^+z*LiX%FoS1CkrohFl9f0MU4nqSSYuf#UkgeX>V z9k>;I{PambQ7&%Z5TY6WHzR;N(`3~5OKa;zJYVLN5t1wPkf2JbZdaQb8GZY+XAjf_ zoSewU>rQU`&LP@{Qa?@KK3ekDcqPDt)&$w{M8R3Ebq;N1+fXB<IO3IEK$z3*+rbAN z7#nTu?Pt8I&^23Lk)fk#l*1!i+)i;?4+$1%VsVpN90mUPim~fKgWAp46k)}>aav`m zq;OUU$e@`d0A-XBfGrOE{u<w|asamZnCNI~?xxqT@%@!w-{)~9@jcez`5Z~UcLgPt zyrWWzl%%AEs2<Q+Wm|t=-&gTBGcqzxJIqvZgbIT1LN*1N3p4_9JCWaoNZ6Eyt)xp- z*PTXEtD(JGUrTyFCb3>m7Vzxb-9;VbvuX)zdI)%LM)8Zbmf&J%KJ6=XCmLt3pw*M! znZlN`e?riJAR%oTkRZ}8Pzz=V(gEH<YAX~rvx+Ql$OUapbG>?y6LTPFLzOk*-VqV} zdw4hA6no&dhZdiV+Hd<!C;<I%LXpn0;{Ji{0L=ow&j@*>mciMx&w)t;j>^WFww4B6 zlY?S1bmHEB{@oVA7e>#V%BJes$TSt2GmUNsX)I)?qgrg(QaU6cRDd()*`IgN%q(5B z9HG%~SsWuVKjz%2%Qn3G@*TsyxvBIGOpBMo#w!713#Aw8^BfV0LuX~b4caxdW?wyC z?CpqLd#`@c!NKjbXWY?jB8{rVb_=VhJa;tSUd+lc`RM2<fZYvf2b5d~K?$Rc`hk4m z7l9_{{RJgVFV;1*j9+O$Mv}@dvc&`M0s{bh;?%>u1-5=Q1;*1RCVv3o5x7)hTNRZi zj4ntJf;!{kH51k_pxlLLw=Cogx*ZA-?5IUt*JryFJ<;4*$+=f)j@pQ%;#1-Ha`DgF zT4msLrIv6cWD`tG)CXsPmK6o<RHNaJo`e?^>h@3EbfMTLgjUd++Sg8l2(QySd^*49 zoz0%$y=2DCLgx?4i=~uX=!?Xl+V)4zJMJTD&9~@eQDy*7OzZJIcg?mBEu5@L*;{TY za!I{Ln_bVE?|DU4`$7_e9_&%z=gCE2WV_8@uA!O=M2@KZUpN84>{)WvdkPnHM^%l! z3EC>%s-vx~1}UUmMmK<N(e{<~_Apd1v&y6XJW2^N>w-~GCMei3njQ%nZJ@3gOmWc2 zVAAuCmfgv<bt_^2wK$2iTGYtfn(?+lBOKi8m8N9D^#%hE;>%3RE+-2{z~!m9e?L)6 ze<SrcD?#If`grr#=0?WpKb%4V6VuZY_l}0JrX?hB=1hq&15@(z^UIy@irBgnc}|w6 z8Tv($EwHZB`P7xqeV-}2#|z#fQ*@AZ^Plx2ywi`z*}%0N7<k~>BGOt&6Fw2o0^1Pc zHQ?fOP3`yFBDWoKKItr5wt(~E?L^5|4o18g;tBv?STdguSRhRGxOW@1JD>?HAjlSP zjFY?$17uI$I|JH;l7^9sh{D2Qh8Tg$=giALGelb8s0$6H5Ipqq*)!IRL#9-wRbCRv z(=g%whRP8J)|=DHLjM?Wo;0Oawf4@u$zT=#!qO&&sJ1eeHSdnRe8(C1e+vq<j-E-o z5T#`R2APj9+FComhaW!-ydKE_oZQ0p*Q-h)zYVy;mEq*{^HXtq3rh)5zLUICV<WEK zFaABzJ9W3uxz=OiUH;SB{wt+u*#G`jUut59T;K|hReswp<LdDFl10cr(Ab|ylq08~ zf3C(JCjtbw?tdvvsqzO;L4bfXj_Wrm<!<U9iGw-5#&=ot*$ydbX|I1ADxrcPRLEuC zqoMx?BtYlk*2Ce(G6}!t2KFf`awPJgPhqbc-2!{n3lBsgBX?^UaBw2UUf1;`p?gPV z&8ncarP7mtc}Y}MCw1n<xH7b5==&+l5wL~o-dYEAOK7+95+AoFD<jP{^QW|SwCiqV zbPtlDx&yie%c05nT*u^%(HjD82IdaQh>V0c=tc@wxw7*?UcinC3BTa;EUUq!5rUmP zV0TyjC$0kTBSJrZ{xmIfxbrXlbnL6&%Tp5`zPU@K=r3^EfSR*}W-#$=Cx2JJh5OMW zp?9nmpYEN`;n)fv9$LL%a>|0ew_6CcB!FB{z|7~D0F5D-BjC&E-N)*huy3G6&4nL0 zU2UMTaU2&NA$bA4!7%uc$CV7V8jQ3AV4=`un7^<lj~N5CwdQ$-6ao66lh1z~^4gn$ z=?)Nrz~!Q`NZk0#A_rv>AXM0qGt%1D)>LM7V&cwBotI%g)Mb4e2K&PdpiDwM9_X}w zZZ}?}a4@n`u3DhR(ALp$QcSL{6EL*C14-z(@`I{punLnVze@kPHqVUd0o~Ie5(<5H z8{`>2?80R{=A&<A1@I5`JAq65v4=4NuvBm1`Cn-L8aaNuR$4NxHtp0pUpOzF$`;ww z+shfFtSs#)BkGWhwjL?2<iOKZWc`DU-l74b*SdxafQ;>!f9BbIb=;Xak1}aCP-m}& zgz#UhR{k~+gurKC;L^By*#A|TG9&-|<;wsN9ceUSC#(M9WZS*{X5%4qRw{o|lVkFg zb1&Gax^PpQo7aLM5%jqqACI*oz$>Nma0$dawsC#anRDlE2*|2?&+|6BySTC+JaXhM z#5_bqW%Ww9{DUqBV6uP@<P_8f-5LW2mk6IYbnO(2L~!cL_cLvDH|S1E-UCc?Ga`aa zH5X-t^%pvoD`k^kJ}5>9>2wYb;=&MUbb(ss3v}Ijht$Y;o3#%g?ts{H%@5XLK=E3& za=lax?c~j$#Mz9^%;wxakZGSnQ3i)0`^oPO%K_HbJ138XD0HM6Fk8i5y5acRLQarE z?BYK+-oxEx`niq8SzQjuujS?9qO*xW(KF6j1+8D!k2dCT8fM<a<YYgHT|sn?COTX~ zC2j`j9`y`jP_2qlkUy>tn;87|sd5}qGB{I5OL^Si6)c9#Q&gJtss{?sRv+n-lr!TE z6{Mo2MJ6jg7?KuP=i+$7)n*j!QgaY#1??qL-A%0as<;-x=BQio)%S~oB83cf{ViKD zDop}Nj)|dhn!(d_*JGu^qnCFZ(GWZdTpKxVZu74l6oK8q3q-eQ>zMq;{}Z&V+4 z2|yB5l_33V{$lqc1c}g{q)sRoUZ^`jBCUa-J+$GC=r?SX1Q|1i6V$GiA+a&#m(3VR zl=S-gCG0qU4JGpo8JbcTZEXhK_I@_4Xu7ND!3CTcydCnH$UZ4udv*KHoe*p7hh2=k zBscuBMhcu8ZFIDj#~OKp7#TuuCnnO#HkuS}Ki!Grn&2QQ)<nglh=>k1r@f>Yp1n>V zK~jV$fv5p+<?$J6cYc0;B-p?ZajpES+)y6?6p-O?1nN_UC?4N=N1)9HSQ`*`cDT>e zE6dR?!^QuH;0V~+$EDAD16|~(Q?SfRb{cs}={fqJ4N(SVI_o=a%|Ko$>DEslKa#m$ zipug*NgMDy=(g4VV3^ZkXu>zMk!8)p^Y^oL?5p?YptE_UkVlYhNBMv|R8USr&7To@ zfQyU4@qJ5s&9yA(F&qT3Fu@mRicDXGPAfwdNkc=!c2>qn_zswOC|mWOMBsCy>^lJQ zHoB2HF_@3Hb8=RoWdm2moEx-nFxcI`zPG2xrN4~+Eh{J016V5TLp2^;Ho7XIsydkS zGmJ++3_7XSiTaB;^%I%l(exRM6oX=g?80`7-zBsny13p^qStGoS!UNhR>iEOun6dP zL+BiMw^OI?l+%V<(L`vJ)a)jOe>@$+B?CU9R%YF^3{jY1Lh2LF<QcB{pZgfp>mCoa z7^2uXIcaC>?|4b&OnLqMcB=4fHHy&cDJD%;R|K8<ELl~`p<#A&vv2uIDuU?Cs@Ul7 z7?Nx+_&B$(txcyY9*1*@%=k8kcFTkZXJokrh35{1Bt0w{AF#V2vr&*1q7oc6LhdqD z7|thX-S$B#8Z)k}oBe^H1z_;d*v<7J!~1jCOua<yu^Ua_nP1r%uB@WIB$Nd%<8Pgn z2>lFtv9fL|HZKa{T^eBn*_j4;FcNIhn1v|~)k3NnN_nV4@w44t$cT!8gq}f7On%=Y zRImihfX6C4?EqX7cAvL<Pt_;~U9u}t@L~;y3gT=xmSVHv3Kwa?3VffWK-(OJ+hy%) z*=Y`HftJfR=W?`!5vP4)=XnkK2Wf)3Y(8hd>5lz8!K#IrcSz<@*;DJ~{Qb4i>~1d+ zh5frfaJ{meN3;5n9`(s|ObMIWxpQaXZym-)3mWcItFiC(7dxoBB%YO@c@<ei#=6bz zXt5C#ap+qHny+0s?!tts9C#M^AN=)K-Py^hWH`!Hh9LF=j5S$hF4WHcX~(^mo}OO+ zNQjQ2{*5CGDFzlmW0Xp)o>hq3($>D-C`uP<Vf_5b6O_N?8LW1qxcX77%?wrV>(nVc z3x!#iC5)0B+qXaI`3_ZUQ}FQUIYZgF^z`}FR6j1Q$LYlaW7D4^X;O}DnQWXO$;ivQ z18CG}_yiPLZpGGik1_a?Hg0barm2_jS`vAB1f1knihB1G@kgUD!UM(aOD<!9nh?J` zW}ADM2k1xeP{9*S-4cfxDA8j)YtSIfcB1`^Tj!h<7TT{O?!XvI9cbSNR3&4^XM2y2 z`+gZ1*bm`C;3Oy=_p3F@(1Rch#_06jLq0%M-P>QlcJuRR*o#@n!IoyIwpt$T&7OlG zBt<RLP>fd!4JDN(@ZD*JDc>(Bp}SkX8he7D*hAjpC@5*E$o<sxg)oZrbfK6g!H|fu znGW|Xa(NQjk}piO%CyDOH*M;IAC{q8(UV%$nq1<8NXJSkg}kF>#TUXL#2cn3vd5Hg zy=yLMNtd&I$8qDh;AgJ|Oq~Nx1=wD$(91D1nE>xpI1W#jg&0Z}BBI8o*2U5BHwrI6 zYQZ<o;*jonw7W<k^$_c*3JA8_gV*<-XKc*8C3QD{UWbLOwFF|=pno$LM(x(Bx9oSf zpF1ac52)|;ogZ-H3|al`Pi?^c7u{Dcij-AE^;r70qY`$#Q+=(($-+rMk9~E`e2xA& zq7#dYyOL$4?j60XGK7r+^y$k1Lx}ilkg~qNurj8BOy7l1`xID$8_ay6Cy1;Oxg<H` z`+Je<B!7!JU*gXq`Z7ZlgR7s=128cWuFJWfmmvk%=lq$hVuzds8S@KxaPZs#I8tyu z$AJ=E_v%^Fk<Q%)d%)2{5=`59;S@)?=ahc5&N!AF&fKDc0#&yWvii?firg;mo~dl{ zR?UUmo=AZIB7;<@>Og12gySV-8_;W!7OB^q^?$7$MT9So+*j$Rb#)_W{+4i{Y0*aU zO8%;}pg=m6XVmw=e>@du1cl1=gW;B3NqV22uX-8fZY_L+J8}Pd4`|xCU#U$Y?-vAu zsFBgjDQix(P9HOl(6)^wK%ZLa?7DH>(K%Rig(uLnpFFt;R1<kV6?2<Ua4RiObyS?* zdm`+b1&8XjY&is($e(chx4sUNxfarzi>DcmccV#aIzcN^ucfx$?wc+^a<d2sQ0>Gx z6b=Q=Zl(mV$u*!0F`9yYUo~!wrWfg(jZ;+nF8|ZUydum;J9FlBiS)_yxm^x!G;&7^ zYA?@hmwS&4Rcn2XquCx1Sp$lsX3Iwi93BB%qz#ZBw<ta6j@o-|l~Oj5MNP1@Cr2F| z96r}xt!@-${X87J;fP6o$;th-yTUE;PlV}peHq3u2AQ`Gn0AE3^+N4?HhYXcJxfoo z&X{pGf@A~hIX6t#u{_s&Q%hJvN{UCt%K=iO0UqSkp@v`kbEKVGvX|Cr@1kttlrQFc zoXrn0%T|j#N(Pg=jLZSg$y<BbADeP25KuP4578s;*1GZb-H_i0HO4WK(*8*PM4=dl z;evlhPjO5(W{XQIC}4C|rO5jYFO!RBRn^pV<ER?Wt(~UyI~h!m8Bm+Mzpwb+w=F#G zX^_W};dM&*jvOQ9V8p=(^#ptjh~L=U{EOuohrd`~GSbq3u@50MJLW+Vjcy#MWU%RE z8K*H*N|Y}Kj%8@!3eHb)#AL1BQGX=dvnnO&d%oPMhwyn7{3H^X=P{1K!dZw;c;7zG zZtd=AFF2eujG!*tsvxE(lTd*iTlMTYG7*lDq~XbM9x~Hb&+prFXQ?zh6?ezC1ox3| zmbF{R5kbP(%k?z!2u^|4k2wX>LL$QW!sefI^;+)k@^<B5B3`(SBEf~yViy=LsH>P$ z(DES04@4)~2`y{uhvrYcKWp)*6m)A<$3AaVH{0>?(z8{mNwY;&0T58QzkPPR=@<&R zM0MY>l>J-B=#aK|*H0}G^Wdqlpl24I<58Oh`12tQD7cy}qKo+Jo3F?8Jv<)H2&PYI zb$cP6%~Xb#`33ea-?nYL`ggt9V<_2!d_sx}AeyhX?qH>Q)zKlVqQdQZ1ym7^JSl`_ zqo_@17o}DhV?A8{E-f_cG4^XfmVE;=ze_;-mK2vo<))oLgU81UcZI&4_yO_ux^`K9 z$1mgiX`srWHm3XdDNWUvZMg=P!&+$MgI)P_<B0qlXmNl3Y?2qDNF6)6(YuwMJswme z56{4Kigv*RB-XCQk%*ScyA~O|E`j!I=PO{=vPg&&=9Rm4CoR0ngk?}WxNcA6&bt?v zqetpEwESJ>&gIT}X_Iv<quz!^tsYALXt||WwcD)|BD%s?w_RkCJ05Wj*fjFnGc^$< z1m-V>9<`l-0E@ssGRE;BNf6^H)=3zY;8}(gE{s58qp~c_Kv75v8YCCo7Cpa5X7HQS zU{WR%%^{4Xs6QI~{p_NGw%f)aKj;BaR)@8;$aah&sZ-55c}CYfljpxYZ=_B^@txw9 zLU0*I55%EqDW|;T<1fd!4B!bjF?%zE5QBOIT__>~KK1qjodE9+N0ItI3M%dT6Ef5< zOk?Oeg7dMT6Q>+JUZ?`B$L>WRHdFR$Wu_O!P`GuLn)LQoEWE_{_-g^RP-a-Z8>t-S zGL=813TgruuG{1HcFSnh30~;NZg?#C`43pslLePjWvIl8=o&TL7o^J!e+>en`q^*W zv5PMeL3sA;<mf1QY6=2t$4<X^Vkk)(W!YT+Xm^Jy@U|dWDcIg3I-t&hB_AP^^v!_6 zFp!I8Qip|wrFU53H}VU7e2}#M$%HaVFQ>}^x1$^r#ztI)J}1pjAFfY;f7m{Wq6D0Z z*shG*w-+JEg+CR4K}pHEZQEt)4xCcBz}O<Gm>+H^BW4Erl3##rjV=Z&$?>fnu4499 zWyCEGdYp!`lcSU@YP=GG-b7@-gC`=VaX9_gLwx#VvU5_54lXc+Tq@AI^Ach_1k_NR zUq#A2-t&#)Kjk7yGiX%Y??*Bpe37P9UqR6*vF~8F;<M`8M??~Dr2J<hPsf^mj6BN+ zd3p4?aW`|OL0Eh6(vo=5ZSs)ZGKqps4#`o}f5E)V=iUV$f%ie)Z~$Kx_yu!{U?6)G zeuG)FE+O8;f`$4^Kpd-Q#7KxP3w;%S3AoeTvrNnofpS1~xlJMQUxg(kxu~*`Hm0$8 zD>insw{D{xqC;F}^z5RfRv1>MIx^G)*Gbx^R6G3r{AA2ueop%_zz@x_zdy$C2)LF8 zZ3em*P5n|8OF5nvck4rsC@JPpQ&YVoA7DkggNOoBU4uJu|KscpM_BbR9}9@%NUIeM z4Qc~=`Xr2^YMTnn>(plj!*s;UOVMp7!V2cyL@`c7x|M>TD{%3aWg@(qL~rE!9L{rq zaBb0V?@;p|=Z*28dSOb;O+n_4MIugME0q&~jL`D#)VcNSQzmSxXc0-GtoLOvY#>pk zW#WgD?J!zp1kAK0@7<zqynPfnFM3UY7Zkd208M|Qpty|?`x8Ysp8@ZN85Y49G!jSb zY-|G1w*>ti7{)~1v=2cnWU%DDe~)&7h8xru5**rBB22Dk_Rb8@1ucN!MW|@dXh?U+ zl2j4>-xx!=<D`i_rsRx`j1baeZY6FOM@NZv_Cuk0024HL;Dmp%dXi%=lpuKaWH(F` zxdYz*A{;Xzd!QhXU7*M!MVIpw-{9=!uYa*w6tw!Wab#iwzuz=52eWlpJ?9Y&vIx?u z&{rR&l|kM|i2!ok_CQn#|1NxAcaQF3Gb4)5$EO}H?#Hs7`VEB^5m)KGi6J~0fD19P z4+Db&4nY)%b%mDNZ(x%Vb0RUe@H4Uu5aAadRMMvqoKp*)+32da;+W5pDu&vEWI~`> z$aOJj=tM-c%8q$38sz;1I!ciRTMM>%+ch^tZG@9Yog~G~$Xw@tJVxVYx;S&gC0%Cp zwA_}^+bA{6$qOk(*mMCzgS!WxWp@L?lb<~sRQI7J#u`SR4oytTk~NF#y3n^3ziY3^ z79{15qm_w&$un%tFK^X^gApd|{l`BkW6d&qo~Okr3i&f?*bR6=VQ3~~!}kY}E^B9( zQ&(44zT)uit_0!J{Domh%Q);R0qQbu3hdaSj0Hy|^us^Vq}XL0%<!1JgMO`Ny0X-& zPvO`Yi{yP<gshiezX84OtyAHaP?q4Y;GNqt!#ep-a$phL#-A<T9X`v2<_)FB4)oLC zxYidoH)Id|eNOkyDa0n+QpT*R%&AB6Vj~UTAq#_|Eks%vg#Z;S(h;m(O-QvOxDt?j zoivrl_lHoNbJI7fpi7RD+m|(0qVteEz&K4`tbM#;JviII(Zk~hG$k7wzv{f#Fc++# ztnBBdpuar&n{)0!{oozSee`G$A_VDH5JStbN)m(4paosr4@{Hr{S^G;#sI?6(NmDA zl%5u*8^a?*+4k*r5oL~knjg%a=umoNMc3(}PK0qTU^+V?n2xq%83lEsiL>zHpOb`9 zl=AckWMQ`{zfI?&pRDOr<lC`>K0{-L%a2;GQ}HU4M$r26yFNz+5^x9yu-iL%_Izqh zpn%A=BYzWN{<K-WwPKoS<YpF5dI<5jiVCYeCZc8zKZoYl{(UmFa|J1eGQxZ=M34@A zX_`!i3mt^ws@dSzl&tl)-=tQ5;Dl`tOWP_8UI=j;T+N`lW(nLA<WxjyVh^O7?)Wyi z=PKqRz|^~gCBfGB!cJNHhi9*cDMSun20(;HOe+snx?AJOPutLnv%!ElsMFFsM8Abw zYZOOTdk=Z52BVBmxiEmMW`SeJT#?SX!z8V1?_YdgImg#!5i2|M$0iYwrIwZ|Chd`3 zz71goXic{QImS|udr&R}zbu3@6Q7PbMI)X4neE|k+o|H<66=5ItDyH~4Hk;grq(+r z=h0dRCw9X}v2>_ZY3Bs0DG6mVP{)Hr(gjXf%*uwV4GK>feDF=S6h)T^K(jeqM|h9; z?w5g<-^Rf~Xu0`5RBeg_4Mx)sx~v~cj_n*ABSsjrf|;+jefldbB5aY!p8)eUn9feY zU`<(lR739*c`B4YyLU4&LD~e5%)q(R8-XUd-P0pS$#X@bt438YSg)XfkyR<zvFhbZ z-pMCx%fVTX357ap1#!M#i;MMM_NTsXd;2c#h{#&1Jz6m(V+BYNrCS^Lch?%c2LO&c ziYcHTI!cmg#BkK_QKdE68dN_x-t0by?(9@TA{kS+ROZ{H(*|)^yPq&p1zIWuOoAB& zq52Zh8*4UH7?3uJjCNB*y$q@EHmzI)<Oq@Bo*19UKq09xMc`9^3YH7aHFAYN=Z%f? zdS@`Utgy!WzAZ-QD#tXQ=$@U|u+`8g7E<}~<|D%)<OqSKvg4XWKdy7FC?{tU00b1C zK^REi>3!MW{Gs?e(Vc-6KE4t3?5^XV6r6ylR7g0_$2gY@iHg#Q8Y6dm?tAmZA5HEq zsEf=o*Rqmh9Ig?Z6N%wkK9d~U<cu|Iw6CZ%VI_MNn^jfS57OWGLEq1xKM6y*wl*em zbWg)7Mnt9uNO*+-D_8&Vc4yiKqHQ?&`2(@DP@<3q>$)7i`qsX9vBPI4WS^erjL)3O zJ}Dk--yp}R8wVy%-%F)hf;A)IfY<W>YXR7K-%OI`VLo4b4k9JjAP>FoIf&hijE=A( z`~<QcglCQ*EcZ_OET6!^Yy%>t1h*!cnWdv+-pu|JAX-7%LFQ2Jdl+Ej%y0yWRr7Ny z+2zTtRjo7M<Y`~2(J1{h^nUabDpq<FX&TqyU9&%RDFdDqXg>mRl$^Yx&{{(H({LQY zZ*WUJ`(sZJ=1k36g7(9f4H;L4F6V0@#SC4eT;jA8U=6o=it8Cmt&;vU&h16|r;KYb zq6WfW44=9R&%|ntkW~XNI1EkoM9T}j0N4`tImf&^LQ~uO<-Pb|NW_d@zRKfJFuL2= zG-1G`(#2Pc*X)I#`FrvvBqiw@CG^8Z3ZewKHeQqlV%GF?DfMTdXWlr)J*d(4?mX{F z4%_9wO}`Rd4lv|aZaDm=a+0jR-pspW2RM4HE7-&4YdMp1WWfuAC?Dg&xak8Jjsxjv z*ZmEop;EG_J_8sGVV%j%ZGEw*IrKZG`&lur7)+YA$yRceH0Cp@WISYEbh{?c{A(e` z(?D7Q*6B;lbe5xEeK0w;{of(a68pecsgpkGCypFRB)JPeTSWg6a9=&;+x9K7uPk7X zi;j#W_aGtnQtWv0*Jt$UQ|Pv^mC47h;fDf{Q+7t#RoWMT&>wK=7tj8e1zUq_(5>Ke z>F-9>!{fdiKtv#8(Ae`1rG~qQMVGYkg$pcST@lrqvdv)gGP2;#ovT2EIJ);abD#95 zPo6X+odN9%8+U$w>6`bUCXqbEJ1_9+zp*u7vajTEt4PlxJ@K@D2xOIYXl)Rj>h<|e z=H0{TQ}R-;S#g{z1Z}KWm)a#r8~^AC+9<86;$HQ4#;2yJZAS|hl?6aXnqv6^ZL>S@ zL}Df09h;txJn?BfJWX6u61v6f`Olyb0ZXR!ehoeZNQh{;5ps+}udAr}9s)BueI<$T zM&9el5yDmDlAd`1Cn<qeLKuO=<>yRqNB^uwcNxT&edS;YI63z@bP5J*7(DF46b=<< zidPnLFdft<ynfURxdck*&0lq!Oorh+(K@NtbX~XO<Cl?s{mKPkN(lQK=;y$TT2d1; zDEAW&UXvA*BD)-@RK?m9H1QeM*YW*=d5~fIX86Z(2of<A0FQAC3(F;**vA97;|ZVW zD!^t~LJ7k~R-K40k&OwK`NDJO9WjxhvC!rc2#AFE_?Hzmu}G~wklPW`lhHPS<K8)W zY4rkvIB%6Wo1h(!iefmWCbrdUrYYp6sn}!$4r=^ahj+N8QMA-p<{Xe?RPg;_Lt;A( z-mi2OATEll;rERL{BUp+T{xhllO~Df+c++KrhT1?OuA9KA^}ffEqZJAx?N`}cQNbB z;{=~Wksy63(UDQLqq(`ck-1n)xCMIUV%WEjcb|ab2lOKJo%1s@1ESKP-;zQ5OGMvt zn|QZPFxndl=(sE!rMKrleHw&wXjBQk&E{IOI<JyuME2>JbV@lRQ=7uyPocZT{)RW2 z#^)?JU*xYgN9pHYYZ0Umg@Osv^D$q25nZ^j(IHbZPy+2K%8<9%lVlF9K5ltRhB?q@ zX$D@OS^U!}C-u(>-!XmZvxIZ*KNx#^Gec_$s(+*`X=qhFeoO>0lg>J;+|k$Nw=o7a zXyiZpt)99&jP$1@NYcV!|2vx!NH$)TeH;o+WOx9_0?}>YxW$ZIIP(>`-=iKO0+~Ve z@6X=EQANw|Q{Vp-9Uj!WxGQmRGN(Mt&3f;wWX<oPn{5EGnbA!O^_%*sS~cn9$vH4p z*H4A5o+61NBjtFz0`jdUCU&L&VbF~O1`1gn<=IZ4o|WGRwh7XKs-@$Nl!tO!YY$>e zfFR+g)aM+|?-{$1=KTECi4kJvj^w?1UZl8x?D;~r(V!Fe6<;1>2WWiSKps~YWU5i} zQBcC$A+Yt^L!?Jx{P*dB^W!8LMMbYyq10E3biulVWa#K%iBR6b81DMDJ%(qW3@AWA zS-l8Rw6Z1=;D^#@d1$3u!JuPGVkVQyZ2eN|EcxV&#@<CG&Yf-Cd`LIs=I#$l<qPHz zsqV_{xjaGwS~vUP20umrqG|?`7_E1aNF;T20oT(PE(maPdQZIu`Gj--^n;T|7vGmi zZ`|khz5Yp5I`?D!z_{*+!h?q_H8VfV=t4oQV%qFsQ&Zl~Noap(WN7!*pUtf1xcNYu z$;hA#Q;p1MWVvwy=;^_HOu_B?t)R51sHhMiJ>Yp?1V<4-%xci*|LKwY^Q<w`22#Cq zcsccAAY7Z*!(H^R>fcg(Z1@CAJ1l1!`f7xdLS3Q2s1UgBv!2ew11ZM}R$QT)RJbLU zY?XF#qB$|WyIusHZLsoZ<NGzJfKl*g(c?`5rD-e{K41bVv6GWH4z#F}7IsH<XV;_1 zyPteRIDDan!9);~TNqJ@{4r4x5m4_y)ka?$Qk=Kc;KgZ0m{QRXX=t-d{s@P2JSr-< zqo$xhFYH>1>!{mL5xjKhvQ2oXp;*W^cooG|L>4n{_ddC&;?ji?N;DeJXR3q2Y2)+I z&^(8mug1S(Gq=x~ALuoK`KG_KDkjWlEZQq+!g=&41OdN*78YE+jUeE=dZXYSfoLn^ z^v7iriU@|j!9l`ngSmb$ruf_1fruSH{vLaT%Ha~60F47I=g1_js0nET9_zw)`44jx zpHTw<_dzM3?Hj@!ZHFz02Je;Oc}^yV>%tNe(~y%AoXCC`H|TaBJrcQo5UtBW1NvuE zA9wFr$K{6ta!Z0C(b*?H;EowbQT$&=ms^?W`b9edXEIuR+!X*tFQmD4nBG!mQ;zXR z&ddl`BW(7we+EPvVh&>}r@8OMwt(U(8EV})RCH*u!z7N#-Tb|k@KXS+0hw9;`ZcIN zh;=G))i*V18D0J?swc`WoJILW9Hbs0Ll9=x>dalRd|XfvfEEE&4?hMBeLePV<qw1x zPmN27*|s+nsLg1>Y7L{eHi3RgKwx+@7uUq>>@2`QHW%J8trN!KcgO^0m6dIE-B_Ne z3yHANOWzCb@ZFAzZR=KYBdGV*Ja516wkhqq<*ORD!Tb3l?2qg0;wjoLn00@iQ74gP zD13)>-CiBzT(h%np?=_-)c6l>BNDi*UNfX__@-C9h#83|MNqP^#9|~*@G&sJmDgYP z*DtRFUcnd{0t&<!5i53sJTG)x@CWw&4?$QRuGOg)ymKTSkDUnNGJ2NzPuUS;$D!6v zheZG92kom%;z8a0N?X@j0-<zVzIf%F)K59VsvO8s1aF+nHn61O){Vm`F>p$hF$6p6 zR%=<>r|R@kJaHs_oRqSwPbuVWXW{P?dy)#u%X^TTF$$w5*MWdFOmra=)e9BGi}A$p z#?uZTxE+$Qc=rXkrl+N;x%4YG|5@-|gG_>`B7bdSUL^9hHmB4#9i5#S>F8KD8%&vC zQ|DkXS~q&w<yD>i70(2%z`6V$XzVfB2P#CbvmH3w<8yQE@zHKnR%2UWkOVx@3!r-H zpLiBs!%YB<v>y&-{C#M^5Wd-j)^mj>J=^bY>+$@txJXAwN4A|Gv2txpS$)njl9C^0 zR_cYLj0<5y00HdmEPc|t2Sm()(>?N)%c-+4H>0&7?d+WPS_@Q;awBtRhMG0bitJ-a z@TCELbeqn7d*I0l?k|Q|75f6+=9UvEwMXoZX0wTXd@t8V#F9Wd-uRxF0rZR>n_E+3 z_Dg;Cm7Bp=QC*ms4I$S^C9M)p9?Z4CZDlsx#Sv2cnqO*YEW1K8pXjTLkvoE`4fPlJ z6N1Hu=cha@U7ZR=<=WyXB0rF`by;$@8<P!i1bTCJAngibGhn8Hpa~tgUxMHwE?_{A z&uMT$t9JaF>AeJ%Qa#NbORnI=E`Gp#f%u$m@<EUvPBP@4#P(5sc5d~@j|SOE9Gb*E zHr{Yfx742LO@^R_E&YDkhv&(bFK34G3BKCytB+EJgu>R4NF(gGQ{a`N(#)i?Y17}B zvEUMwmSz-J!FYGftYc<R$BZfJH*~d9w^LGPrl!R19o@f@>XW{J-B>}_1w9HZ&Xkw5 zSn=fsciU}qpVUDi2$&HDLPR4X?pKplJc=9eDSjU`KM^gT53_2yy2@xHtjIhqycp(x zMBqYnZf3@35PXHv%HskGIk>vdf!sf`z2MQKuiz3lFofXCo9$9gZPV@KLO!Xnm#AI( zLNu>mIv6$w7#pV($bO9v;yF_oKY=&&CWi0goYPhpsROcby2;&^$5sp0?bL@{8JaY~ zPI1`(>WV<Tl$*HBePr2nbHqM^GM7w0QaKW3G$av#J(<2LKUjFRqTQsXMii4Q$9|=% z2k}o)Zl@B$AWrOU4OM=+y#7c81wuT1aTrb%;I43mzmgYXhDQ?^a!*}Q5ZKK|Ibpfy zBMS`TQBWSTxb0+%6ahOHwD&h~2$(m}hkSfP`^ueH`xKn(Utk<|a+1ucHify%M>8b( zD1x0ZcyFADqJm1rg3=l}(h@i5LJ6u8$rj+7KAaU-!?+YUFA6Ty1tNY;{D;Vubap$+ z{e@n8FCO?|7u+!<vB0v`^m5uKY!c)}{l)`jCfVcWf?nWNaf4hNM6XDqVJJh)_8U_l zEGOy6Bc#aZMNghEJTAP5^4ps_c;7&D6btH*KwR#X@6ju##jOnvg?v1Rb2?Z_@%Zpd zU-sssSFc_*GUB>z_kC{8Wls_qh#{+*Rmu&mv>)UT1qEJmHt>cM1ISc@y@PWc_1=qr z)P>KMmXV9B?1je!!=!#5rfBZmIgUx!d5<4|lY9R`Q4Nd&fKP~Ww@yW3vc_ARJ%aDa z=FHrkFeVQLfQs)A5jo7Z(P{HhZNMXefL;LA(#91WJ!s?6i9H9A63N=<$wrQag3D*l ztz!-|`~aP})oM3Q85$YU&HB7+ZAIga@&vLRV1<;ayNITs@0%I95}#~tlcNfUq_+_b zt`gliA}dNyPj6tr-uOB8y2G<R`Ze>aV^^-L-C1_MV*$g~du{4vos(8OG`1nQ117M^ zeEe3t9Uy$gO74i0o0`HLA->gANK^FmOffU9yzhkY9VDh%N}k?&h0(sv{`&pjuu&y; z(06aS3tTVX6tztbrw@=iv}hMEAizbs)x7!&)8WIWqVdR*MGvT9a$F|C`b&f$9WcPf z)Wsw@`cQFbYJHZn4nC*^#yKPk{sImx^d$q`s$!Ui4(BFm-R=8FiMGoe@=C@j!JS*) zOkYrZCJp08NFN&1(V&}3;|xPq)Vt^o;^*8us<<B)(w_gL={vx3-v9TX_SBL}+FH^i zskDoRN;IUsBqZ%<?;#{9Q8Y=EQZ&$xq%BF(rd>)&i2nEIeE&b!xz6P{spok<@9}!w zuY25rQPH4Yg{368kdTA({yPJJ!9NhE6{2rZ<1)qT&HeZducONuaA)C{cQXm{e#3+b zZBbGCk1oo=blEYp0K?tNccfKSc}?tb;NVV^&c(<eo8FlVNw9PygwzfO)Ry(^^i=o% zk+Ct7guV_rl_KHC_wLDJGNWF&*`<sg6-^n)H$^fh6K9qXVkBTil>Pbsi!c%WJs9bs zyHLDqin$6r_gq}^_jS>U$PKD+l+v-j2?wqWSO_1*iL`SgIRdn72|76@naX}=aN7r{ zU|5J$`q7ygI!5D-U>8<kR;b@dCoEtWn{qV%aafGJQ40ziP$^#Qhu>QJSEFdow_Y}& zSzx}ylG`*=lR&yIj0y|BCWCjCz8@HTj0a^4TvI0O*J0rMpIS08NLi2<B&;x_`^uK4 z&ZeEjJ<5DMlUL<J_m7wmL(yJ<s+(~1v9_Lv<sa-yWiN7Km;^H<O1IzNRlv(lxHzx( z>DYZXF~=-n{q|i4DQCCm&dpr~G$_e|`Q4K>tN%ncSon$-7!{gHY;#nNK6LbkRdMVL zog;D{ajGB}>};>h_X5BZyb78uI&gHufn8j<|GF^zc;K?*sHx4_0O2j+^Rs)$ztYlD zU~ij?N_3GJ35&4NjVe|D<GUdckCGPHYr``?j7}bB*+z7JAKM}n`nFt02#$vu?fSS> zq*ZuYKoR6-q^`dy1&6CH?YJF^CkqmlPtO@hr21zMfwe=#$sM@Y{)9%}=w@o_xq&jO z$HhJ&jSS6GPrW7%rFYGs^lKdR5u$DE>N)~O^CwIA2c+}M>R+EeNO9M+GCnV!q{)JJ z>+qW6$|3Y*QK!Mp#K6R1Z|trsVkxcQjN-W$i=eh5u$uz$0UZ|?B7p>5KoPGNyxUR@ zVmQ28Fw5#u;&wb~k|Ml|mVELCh|g@iyaa@gNzsb{8%%hx_@Nv3|Le_?YJhTt2Pe;r z11DueQxkex0EK^RS1(-)KI0SG5a8CWe`~;<8sG+_@P7acf%UdC;X1|@rf3oWxXW!! zQ5yXK`~W;-*N0k;gt5yT<?#rdtsCz(-w&$TX`rM?ri#zrD?uCC;NZF5b@aNkx%oC5 z>p1=`v$IxP<X>S{Md?9JQ+*DpD$uY%>n1RXY~wM{O<KKMmrkCj_nDP$Jtd?eeG?l= zLuI(XzY>~0Sf-uhL(CqoWspwGd`^PPgb5hI|7Zx%*Qc9211D~H*gGyzUYbzEJJl3k zP7(sCKCkCOV4%P9egk3Hh-bnRGIK|=o-j0F;5~?EABr<Um1POzE==WzA03w|H2XB% zkK;@t^&#$dSPnJF3z8#nqUR8;r2(L_$B#K=x{z=VWCyn}Ig>6pI`_+>p}s_CG)n#h z6jH|Ci?D?XXxZ_JqCoMW{C^DmO7OEscNYR^YY$=}6Tc&}b7zwk#TTowAY+A7{u|=( zUJl=#5bF0g#b|tg97U)=Iunf%ikK|8_Q=K&EZ{`vS8Z*(L5~&f1THcpBrHSjUTYfb z2m_2K=v~$}2k_N^p+D+dCrzVSNO^WTGgo|r{0{yncB?18?9STA=g;m>EEm%h{%9i# z0haAxz<f|Ch29GahOu;w_DJ-kSQx#>qb3ifOAYZMR=pDm;6QVL(yo60uGK_#?!=Ky z#pQR0W&9X=?4Mb6tf+XpUQsE)&KjB8mrk8fe|J*+(%X&>Q0g_J^Qx-2OiOm~9>DEa zZxE1kb78jm%ok5wBV>P_y>ANE7cz_6Ts}=+&5lg66OY!5a!`KHqYPO(jYx=%oITGs zIovy)AngxJj~^Xt(1~0>0jF&Q-65fS+c1Oeb6>iaYXXFP546J%xe5RE!Wg0`0_vN* zA=J2gE2SV@+<P{&H$ia%z2l#D`H47*{ug1d>N)|HgrZSH9UOpcvHw)4=p-hrw}b7B zql^z8k1xWUPAKf%y8;D8vpg#wpPhvT!l6cuojI`e)6za=CDJ)So(Fse_%yl;@$E?J zL|B*~${es>o4?spx;^`Z(x?5-0Zx<q%Fyjv71vHE^~f(wP0>(x^*E|ep6roFHu^Kx z$i~=oQN;G4;-dVbS}M7NgClmA`z~@s4n2GbiBx?kx9OqS^^SX<^T!VeChNiHT?LYt zY>x-|`OQDN4k%t7toAABaD@t=W6a4@<0$bafP$AA!<)(<JS9a7#jCJPV{9Us(%<)a z?e!V8D3ZnmN1rZY#x9ikZd_X;^%y%<ey}5lB`YPICcu|rNoo-57nxr|Qd1j-G{2j- z9(kI@;&%IWYt$nBe`w<uP$6(_SN+w~BrCwlwfQS+v!QYi^dnHhfkiSbCHNCoVVFUV zwb2skZkQs0_qedyhb(T$*$UiB;R=a}5DZ6%3K3#>ILV(V`+`;{fTO|B!C@3H)Iqcz z&={d@kb}MT6;in=F1L+Ef{P6P>w4){Qx{M`FhY|$QAU{^tatculOeOy3FOK^td_l{ zR{3tn5i<LnAt<d13NS(>vCiOU_a89=Ne#b*gvi|}*wZ!(A#X7>YzNZBP|oHKgRquM zIzksg7CfiWlpLfzdkw`lO@(!&0EBR3Rg;kdZ~>{`?SU=<7b`&m>7M(6DjV=MRpfmT zSf*2-onMLDqkE9n`BC32aC+p#($XfuDBj5<jm4Is)Cg@O+Wz$xZ6OEnf-rf(M&?uY z6}PJB4*r9WfQbFOpIW(<{h%uB95LjwgZH_Ov~GC~Scl*ZLSM1;tcEU<3tqSc7wFcl z0km#Re>@A#0#S_NqNJgw9^WBEtM#bwv3*@F-~!01amk%J6$XJ0K$4fH24!5a5i|$J zbzePon$q~AUf^du!@BN+Zgl-D10$omn_K-8r!KP?{({!Fwiljb<kzy&0qSMF9_-^8 zZ$3Ze2Enz<`FIUeI@6{DF^YDS0&iI^B)f9G{;^w|E)tIE+4MUzk7gV9t^z?oNgVF? z8<h`uEs7QZ$(Z<5XqzWa-&TVg3z81HhmBy+0oBw7AwMuYz<F*)bLnt{oaS{Gn8JWv z$Fi%WsAyi=H-J(Tw8-yBFl_7U;#au<BTm3g5E;zjy1*RztK?R!v*N-+7@nMBiQC)a zh29s$3nD%wbR30*u)Z3=Ttb$Rub%=u_tW%r{;|{WAAy_*NdD#XF#@z#CkTnbkt1Cg zcw{$Rzjh57X9MttRuW;8X;jua`W~<#Dh%0sV4`o~Q(519|H0Af8C}Ny4^m~4sEJ@h z@91M}^TNMav3~-RyKf_Pn@}r8OozbJh9F~a$thu3=a4&c?mxN>`bx5QzX`_f9dB0j zg{b<`n9}xt7%OLsr%;@ZR38IUfR+LOG<3X1;1%SOk6^9i6iL9gOPgWwyLR|7HFMt? z|J^jBX&j*#Y@FMGoadAyY6JL7m}H=<^z~geJ)+uo`ja9Pff!=FK$(g}Kx@$y9ISru z<4AvXYynnS-%@uU4<(H7dU~K{)~3&ZvPPw=4!k~0LTNXDb%kM;Wnge7EKm(LH#qTl z)I)j1Vx_oo2eh`5t@fJqv;vZbR}heTOex7#Y!Y9wadSWS{%VlfR<>Q=C#05!vj4cn z6PoESitvGTYm#N0Y<=<{dot4C9{EN&#*mrpTI`+C%#>h<qgdiq5afn$gsJJ)d8Hqh zyGmNZPr@weBe2SW!NC_DQlpBGfm!>ng`e4nn>)fV76X>xDY_4<zVw0VQ#yo|q=&n^ z3m0xW=tZIYcwCA(>Vw`HjB~(ZM!8c|<ZJN3e+R5biSWe*2(RG$g9{V)haJp8VYzf? zTRk)gil734f^k5Y*PCZQZel`72p-9bc!%p5^wq{=+0>6sg_5(y{0n02O6r2T-jhM4 zIaLNFp|ms*S_RnyE+<d=C3=Y%pMbxQ=Wm73>nR-t3pbQ?YV1mS+(=z?DeFizfgq1; zKwZ4BcbC&Oq3lzcDr>^^Oqinq9>z9lR<g#F07gaeZG>^>&&7#}a^zJ2@^cV|N`0Hp z8&pzYKsvNt&2p7UX$6z+CiFhCj>?DC9$;<?DgurXf&+e(`Y&Nknw7PQ-hU!sI5uqa z&xp7Y?8dEGqJiaMkx1goh2N*~(_D*3bF;IUICJvzC&}v@iEcG9`Vj|`5H}Z>cuK2s z5zN$gI?ck|f*`7WR&SEMb?X-47F8;W@}x)6cM)3s;J4{>PYp%EKp>1LRqN9%9ufNG ztEqex)i$A^PM}*N&7$lP8G6+-|1Mf8))7|41P`#jgG0vdvU7|uF`J8vjwb2rVREi` zK6>g`cXv0s68<Xc8oN3eo5vZ&Q|l-(NHz_{XuRv{IzQGJQ|d8<)spb$HgAPfdHe9L zxC~$;p3<_e+gZk0;*?5Yx^jO>=-^R;*YG_7WaQ1~;2z;~!@zLl5Eoi=7yzt+q7SVZ zh6RpmNuD6^OioTBL*&sySS;gqKn~xDIM?Rp(Ue93$TU0#%Dy6on-|o2iL(&=pbc3- zWtG{emY$LE0-lC2d3_O=pd$noB`nO8uTDj;Ze!w6B<*jKi>UWX|K%6+e_Q~b?BNfu z^Q9h+%iL#d%%X>VKeY5dPvD4?$?I<1Vw~``(b~U&^5}d5h4b@&Yzbd5qvj`6zOFzr z6;sLL4GB54=eZ$3_ZTrp3gBiZfPUy6!pn)U;`A5Df93!wD6@_sQs8Er?a0OJZC~Na z;`xp)`^=QG#^-z;&Qqod*Iu7JB4&J%7vdSvRCwjxpa(sZrvZm!_?HkdBS<%(yje0x z@t@yND<WQsn>NvYcV?+?5;j7J*pM}1p+v$c_7TvPw-q<2Z{H^z%FQG;5m2OpxSMo> z?gK10e3UReL_z_O12MstyL3E0*EuQSejJFofkIwgZlEzZXTCq?!#hh+LpgdJYuDmR z(76tM?TQir|LT8@+P*cPcN{zl5O!4bAV|)dtVX@KPSt#;S+1GbL&_ieH!#j<N#)zZ zf-3AZKCT!W8TtLqE>sOP8XBLI+Pxbh9kNT5C(_^n*T~$_xWy(*k4m$oAN2%?10P-X zJPUIoaOX>?D~b3!w4g0dy<z?ggJI*u1<cJ+IRjYagQEHLR}ASPN&o>>UA^uvL+<I{ zP=XE&4B!Z9nW=-53bf8{8b@y+%L?#}<f(te+#Fo97;_pZG{dHRX5~sx(ff#f6cQMa z3ICT)Oj0Eb1F0_Mf)hUG^%av@sSkW!RTE^V8h7P?WIu>{n&h;Pc75!%M-JPB^7L#~ z5wy*_cSj9kkvfQ$TbP>@U!p_}Zst&AD#0Z|(+a3IfW}^mqYZ~RI1T4a?caz3L|#VA zA7Hg6n9_=d6BN1V8Kq^FO%%z1CuUJ4&OX%yvj@*O(K$CKhb%dk0{sT`YtoBKto}#7 zt9B4UzQK#tQ<&mMD2eai-*0s$=gu@o+e=kMbP6St?xvU;&o$E(Cz4hNNCPG7PVWE^ z;IpAQc4jrOru<?23w9yT_@Bah!fdw;U8VS<e68i2uLud3Ul)d(5tO_UyQu6FZ%+T7 zMpicNEOZBVhH1GAFm%EYQp^hDafmS_ISxa$GgK$!nDq3ieB2-1DjbBk&m*V_mP@(o z7UPFiFbphILZFk^`|ej{-hauSS-`o++#EEz-d>dgfZ&AB@#G+s2^5|8TU_=K*+L8) zlBBCyAl?^4l%Npd;IqG1YJ8ZdCH3Y_EPwJCS&3A7pZf&-UEqy4IP$A9U<U%2gr8%R zs4!bAMmSl)-}N0%V-WPX?qmU>8}LUHMv7bKZS^`OzSlQ^HWKdD@6oZ=?>g`12Gf4l zUyVGZBG#E39S8xd_L_*bDyDwNh{{&Bpap$4;W@{~1e!h0QXo!{n8AjYExG2;@v9TS zAqi#psS`@!xK8S&4;vdB!xILWD~|#;XO9N;Fs=Ue$1;3JSfYE}5VQ9|I`!m<yq=E~ zs$zsJodUiHG?|b(q9b8^s#&zAXn{`_ov}@OlGy{#qHG=}0nsn)1IM2_Q?K==r|jxl z0slMPO<eyvHe=R_PNyg79j^6W4Z$|zPugAozCkzQRTNK=b`s9j;B@wt#$VLG8j*|f zm(Thz>9?<=(00SEs??Hg7G`E7xx<%oQABzwI8#SqH&RfgVlF~Wjb}t~W#Tcd1*ncO z&DlBm>no3ni@~t*`uG;3xKV0YdjRTgfh|of+_BKBUTZ}5c<ip9HkAGr)tB~jD_w<y z2Z)rE4||c9urwhqMCpA_`r7(ofE$V!r(;CVvI|C44Hs=-Ve;n>CLzpv1~>*$XoB)h z3;hHf=J4~gw|G83!;DJ=?!%l_v<HhVV0zZ)xRq8&{OMphbwHx!&fHv*v^fi9yBL}X z;BCB4mW}WDFyZwWtmuH|O^+llE&bZ}?q?;(Fj|FsZ{@NIkS4iDH+<>~STu!Y4}09O z7e}k*AWB-<fi9zTU=njLMSM5B9{QNZPlw?www^jF9kV$ye3M4U{MlyKz^RYhxzZhP z9@La&Ip`(WL1jQzC?C)pyl>&SYob(IiG{^lN4xyKHUp`f?~i#g|J-tr>}2Xeg#p*t z?bNRJ$bd10xwb4#rq8XCwL4wvV>JbT+N*zNPO1EvP;AvN=?B4ckf5$#ZiUhWFFyyZ zJVvQ;aWsu)dA&1BKH1$AdR||e?lQ+;;|w;vq9G8Ul%#ukd3AOEiO!j%>1DsM%2PMn zzQ$V_l>VU)6>H#|+qs!y*_6k8$M`3a7IjCtFYPUpQC+&+4_yCXQEv$}1V!C-6CO>t zMOev5@b2#H`znhjQ2EYP+IHM*nCbTZ&F?!CB!9~3b>+;Dz!<Hb3E2c4r~Py!Qj8WI zEv-iX^7!(F&3vkP69&(uG_H+uqkG3}YlFA<Fe6An0iB=Qf}yAnb|gFopX?*88H+tK zw#sTG+t-Y+5JcfTdbE4ojD<c%v2p8_LywAzz+j+h<bL1N6QRxt2?gx^bTYTP3Tle+ z(IW}s&!4<r1=uG7^7DGI8hhN~`8$W7sQ}k?BptwJ^Es^q>xTxwKYRAD<wW$l$p@>} zwe%glcg&0HxJ=ubi451xlChF4BN?i{Ea%ahj#_D^pOHNR!fxQVVO1c7d<r4IeR(9Z zIgRcw)x}e&WCYfz9XPNf`GMiRV~L50azRNDHuTT2Uf(+IA)}dNLP<_$RRVN7M6x1* zBK)5ai3DZJ=HqPkL<L#r>z*Xq$fcE)xsf{c+`VwKwXWQ5X}rps9YrTs|LPT0mMUAw z=b7!iug_4s&daP1&PM3zHzhe-%+J43CtN^AK}~2hjtXB9h=+G4v<|xJJ3o;%h}RsI zgS*%}AXJkx=<&tHr!iSuJef#+{CGdI=s~X(e0L75h%QeYZ>qsLcXt48qC%a8@SIT> zY$V&VPAb!;I`Mam*R*RUi;R==CgwE09=6ujJ34nbKd~h6VBE>9G)X!_1297y66T?1 ziqkIWWxafF&?zBFAh1_9{Dz*X&UyZ6^A_Q;@D2}IE(~Bm;&qq1$bH2E=_O1LrdeyA zushUBM+y)mAi$%7zUe3-#@U$=`hpoyDCj0EhIYuZh2e(>8*@yZf<#;s;UcHyO->^I z@S^N0AHZk)N;{5@lgNUyGcY!jFc)B1x}dU}j-f4xG3os^4G!^%iA0GMs2!=5<LmGL zp|3Azx8wMuolF`@_sI3f`a^h2sRCOXWh-;+N=CpAM~9c77fskac?rA1?Q?1hEC-cU zz<b_26tXc|tn@KjIo*q5tJF;0zJ$9AAv<Sn%nO<7<ZZ8dJ-ne891+#(0*5*wB8q__ zlyw90O$>9Q>m%%K`pMQVL<%S)-ga=1b!$UWgv*{=cmw#wqE!u?8QQKKauSXjrzc#j z!o33n2`jI$PF7cW)Pk#u$xOT@Bqg6_G;5EQR3h9K-vmjePR~?1b~Pt4VYGMq#tj!W zXnC}u%GOT(I=yU?-0EVxLpX_Fz4qqyt?LKcd5#8ueWEu3(_LI1gny~B7GZ#`Xhs_e zPfi#oYSQum%2T{miPeoXoh$o?HD3BZv%-~r?u9-Hixy)RF668`8J<16JM`BhzTJ}Q z9Jeij_Q2CAW^w&R&`*zIi^N6EL{h4Ol%%8%*HMQEA<LGA;J1K9LAQampWQJ!M#c>o zBC$$6f|nZnnB{iJAWiQwLa-fo{Y35VH<vafjPM>&g3$`|ka#(G1g9U%Hn;~=I9^65 z)j)sObdv1z2{F1^-{;E{Ep?m!{>01Sm?A_DIpl$F{e{1ZqoKo}R4i(>wmQD@<K-4y zB<<o`6;gR4myQYxh1FnzFzC|&;+?lMm0$`Wb-H*oJkXel)NZV+OW&k(&`<*AsXR<H zUJ|%N#${>qdboIaRG>v!?ZRlbG=own$zLa`VRXKhoGin^v)Tqvd1Uz}wjLLwbt28} zGZpRwW%xwe=Fq9k)_g(KVj9%t$nWGbMON(2EhdHUq0>PJBuGvIhy7bPPVlIdV}(d2 z)ZyyFjm*axq!LKlRkIU1QbeV%AJJDbV3CX|x^~%aT&6Xl)nyI0<ydjvvBLF>+91## z@(c*#RBzq7A!UgBTgaEnaFG;P`Chh~LQ)`s4<x*DXp3GX<~Ljy27#1z5u+V+pz}es zB7!=5)CHQ>x+k{kCFsVISy$ZEzGT-o@$Q|Q{CcJ_$WcyJL&GqxN7+^2DPF|6G1@@k z`?%KPQON4O-Il^EV=gd(B99=I7lb5@X?C-oKQU@l(5q_3DNFfnAI0Vcz~uBX<PFC# zoSM|d4Faudvee;%-sQsjNSBJm>)Y-OWR%JpvenEqT&~-KArxvMmew55ZAyN<+}R-# zcBcdE!J#4Ep=#>AD`^Jz;JJNA$%i_p3|cn`=0;6m#DZpXntL2iY--z9N|@faO)RrK zBIczJ=L2hMG3fSg_n@hdWmL5DbhFYOe1IW7s<s7DG7=b(xMaBifC<Gq1F1-g@oFQR zPL2_L`KX36)qohj<7{F%jQh%Z`rTPK2tOTUF@5R|nPUmy=LIpJZ;pGk-~<qITu#lL zcri#Euzu>s%CwD!R4m$%)|dYB=)GgSik|g*YRh-0Vge2FF^_~vz(VicyYk#pK)&VV zSQ~c0Ex}7(<l_w6(K#lI=6XX-3@}qfjkNehKy;65)oww&FlA&GF5|e9rGIs~yh#iI zq(N_K;MJR<{n-EaBqZ(dry)G%&Q@!)mO`x%cS%nelTB|wzk@fNR#sOt;W32Q#pR9o zq`EqFD}h7oZvWJ&rgv%xXKAa&kNh&1zPWS!*o^OUH16zF*?T@raPhEVUE@U}PyFao zE)r5ocE*tTn+Jdm0_7o*YDpWk0pSMm`X7YX9`O>OZNz<xQp$15yBS{`X(^YGAY@sA zPBe5MJyRUgbQ70s@n0M1AyEw&!=2+5VW)>}&1f(?LK@iVS&Qq@2_mToGsBed>E--- zb%X3KZn<#df&-GW{XJgBOnSWEy!K7_&|tdhd)7@YD{0_vuge}(Exvu?!7EYD-FXi+ zF9pZ)X%zJG{|%t}a}GKeik@)hyW7{FcB_%M$7%ol26PwY%(6TZp;wN=HUN+U5_2QD z;KIHyI3llv?8j-QxTqz%@l)#CuN+FyX&m!p@n>(B(PGhob_b>oPK-${2mEGl3<(Q3 z)cjL3uf$b!_%Oq`Eue_t!%FVgP964+ys}45Kl_Ez=+E46PmN)(q;>nH4`jM0ZFYXw z%@*WLp>(HC$i^t~tG808jX3*TEH<>@tP(+x9#DKfvi|)U#iuulB$E;xjvPV;;1R4^ zzI>{i{x7!pMgAKeT0!PJ3<HNT>IM0T7|kE8VCt!Rus{3<Il^WV7S{)nxl&yp$oTo9 z<fn3qILk0c@_km`*xczapFDf^1D^ry@C8&l?OY}b8AR*u8}ZG~B3!45EU?zOh%RJ{ z<su$A>+%pW)c%wIO_x7R-<U1I1zUx7ghi8um~Of=#nQyY#qG?r0sA?f0mT&{dYH@$ zF;)|Fq&+k$1*~PP2;lmAXkK)T3x^*jmpaZe5~;s&m>7;+qaf`Kg!UuSK?4W(dPE@L z5=b01%tSPVCsdRLXoWDf02d=(4y=uQ_TSp>Pg_LFI^<4X3v?+?f5b_uci98>Vb8%O zc+7fTz?lh;F)*NLd6Cy8A|dhCgN;O@j*>%WlkYJigdneO>!v=ezE17A6~C7tb(P$! z-;DXJ{LIQ0L-(r>8<;~zy{ob2Y3)NzO;gMyUI~(=dh59G?>ZKo^lUdDrztFIn;;-! zA&=7&M#x{l5_35P^hFI00-})v*R~NUO16(%_xxz}P!tHu*DZvH(Ky3xpv-O=TWfpR zjVW0j60`R6v9Oc^%!T;ZS`u)1G}ZI{@bLo<kGnX2aW@P^)^jzIj<|Vv7#}&Zzl9gz zA5+{4=#f9l*5C(kBfVcjf<EUm9Cw1(KK3^hF;OUI-(}ycP(&N9_(P9XZtTfm!96k~ z(G-hE2X*5Q7~0&=C~W++N!v<iI*Nmj2x7ysa^DgzQVecFlJ={FIC6GHmH>S^=0J9v z(foR{qt{H{XeWjz{hNdHey~~?q+-*bp9ARp>>&G5>b=$<FC(KZjr1SizmLA<v6F>% z7=Z@9a;31?C)f3c@f1E=TpT%Nu>ZNjCD-V|RugS-?|IPA$9=DcE2H*tU%`5}D|H}q z5<+hc_lf3T$&{Kn8n9U2M2NjQJQp5Fh6&H`@Gxx;zhme07U&^Cwo~I@-eD<e0m%ny zQ3@`v<dhWWv!olDsH>bqlO}|k!I{w!n(^ZL=dDANXHps@{x2n5+T_r+o_|p3qw|I7 z0A&WaPsVzB^}_G-3MZeiC<cdw^dcJeU97=931ogPF$Y;{v`H6Tj7n#y-+J3o^f-K{ zg&f+@Pwvegc95lw(bC!C1x;BN`+PWCdp76alNVKnAy<1dwKC@7=$8O|V>l(eZmS$; zaAlsQBp#uzi$`N4O}aUqjje4|R1|B-(Ll-Mk)03B&fr^X6_JskJD%XNG>N+i<rNFR ztx&ScZ%KsK$#Sts*@$oM-q$=vcj*C#-lc(VGJFhZo*@yWy@$aePhEqfJ<3~>yVV{@ z<(gkSEG}Mn7^Nl&VYoqbJoTgH@u~Wq->>6bwRj{Va+u18#J!ZQwSO7kJE>NN%PNX+ zCtCY}TrB6#R~;Q!I$U=a87wX?re9AnE`S!{CJL}}8ujZ9WN3}R^OZe((3Y%;4CA^4 z>6WBeieX5?&U<(qN*eR7PS;Y3Ytjrj@%l1dlxO-N>#_ph-+K(21-(N<Lp^I3;+9|6 z35(g=k3hdDbSB<Z{03pj-oreLr-wZ^eW*IUnC<eR3D7v9w`J9&1Hy?OxH5xsdMLKx z@))3jmWiC5G0;o7I!bh#j&jzjos;JV&#cs?l`Yy_Lzs<M*_Sqso|KLAATO^e?ev{i z7fhzcSBvMi=<Qk`+!@wzN~5%u-O9U>S!=eZH*UbY#Su#)WauT_JfZL8NQ}9bDbKy- ze%9f<9&p}uuBO^Z2WZ4dZBT7ky458ybtkNl4qOL?%B%V_CdIiEnX*BFYkW8xd6>j7 zis?AXm*^cMnxc>U)cfIS`P*PX7fFe7B!U+jH_C*5J3aGihbuD(9X-oC(xT?(6!s+5 z7BT)?`<lnlGI3m5lr|S<Cv<LtN`&6@o=8e7VI;Hm!I2x5QiRlhz+FK|<pEe3FcpZS zPc=Y|7Q!uPoY(VjW910$G}^7Z#KpnvZ_dH>0;VHaL)}Na6ovn5K*5F4DrG-LKHH<J zy;Ob*D-azGJQ{MBG{H;H8(F-9sM%D59FurOT~tcT1J3ptPk1TlW3EF(4PIHZv9A{} zCtCnmyyXbMS`KNbX|{Jk4}uV?Pm|H#<~>Qi%C_gu6<ZY_DpiUudAc754&fYw1E+h- z0+jz}3CI8!D7@Y-Tu^jsN7clam^4mO1mv~;BGr6kp8~Xc_z;j<pmV&@{rvfsd>GKc z0g$yo3(zC_mj!5<D6_hVe6XHWS;AZ%6YGFz#i#~?K8b(2n*igS8d(ucH*|G#6aVBD zHJVuy(c{JgH8m0b;f&ApZxv-8bWPD;q6@2(iBV9`85G@6pco#lcaX*K5$C61ZXt$= zG+Vf%wePi58W|k?3TO&LqUP|?QHM-bt%BaRwl*TlH=4Yt?+jA>=0%r1>uCNJl$Wmn zcb^V47D}eoJ&Q^iGBhIpsfS8fuDr!@#QSLnow}xNLGKT@-o?3j-(z};)UWFt&xV(O zrw3lh$jAt4s@kW?rvcyW47EHtKRVqkJ<Q#?0&>=#TQ~+gl6$=S@}j~FnO;(ihQGVY z6z@U`d!!#?H54mAi_G|BJ(lZRUG3Q)TqfuqM;#AKq^_xjyyN)&{3zue<2qcb7%F!+ zfvm32Bf-2JG#Z8}yqkQy+S2-Ii_-mDpI>nUjE%W5(>CfTR^*{}T4>yGoe|;5+xvI# zM>!a&(NYrkWWx5b8^QVA6NTZwf+Gb!4-Gk^ig!j)1<krF-49DfUi-9|93{7jU(U-t zoBH7m;vu&KE=!w$m4_Pa{$Mip!VU$-WZy$9(KgaylB;sFBc*;f+4rtN@yKFxSo-D! z!)?`2QySlw0x<?M%lx&I;acBRIfleu{am$7kK|`n%>F}v#~AZetsR+gkov9c#y%os zlw*P>8v+6rr6nNp>!&lO$smheu?5{978U@mn{`lle4mc1!k@st6OS|cEXMp)D}LCc z3m=~#V3NYi`1tYT>c8od3`O@6ps*~9V^UqvPifa50#M2ECB+F~#EV~!Skd87Z(usv zoy>@AAKrhbzccG)Q`hL}@1)HwFW;JC5ES$R{DWv?e_vk}j)SQ|baDP0ex&zjeqfx< zLc?{VfmigF+S~A<;~4ZL(HfxLtp8T~u0Pghx(RtK+VZ>E6JMndm61qb0BYq3<g)W8 z8Uj+mECB9eEY25HhV#N?feb;7<AU)?yc{modATUwE$I|VZ)jl?mwv^Ymx3cP6;{?2 zEh`sPGCTB$dUhQ%?HGqTJZv29=y0cP?+ezFPb@C-fl0HJ$4co1q=QF-DZIz+^5x4q zQ@n_?u@C)46$cj$0R9;J>L_wxVj5F%U)^rKK;IY|D%6cfV|cm6<OVXG-!Iorz5)&z znb^P-l2n^ZGGZXK0gUkFPiLhV?TJ^}dD47!a`d9)(?mYg(@Rm@h!2x|6hW)zqj4uB zIK$$6sMtT9(XA}Kg7<!0vXoo{W|7&O{;PmQ!ePCrIy*KNQKuW|>)}+!ZkhgeaBzoQ zY^%%od0>cnCgLm=hc+HA)?D1i)ccbMF>v7r!s{L_ui3`u8W#jXWrsk%6V0_4Q#HBQ zpF(RqH@BUU+DXc3vOcQr&!g;bYQNvgQ$Bw`=q$&uzLQlh2JMR6_Mv>)?ApcW+V_s- zykhUsc?lEXz580pP{AS03`Jag{vsT;+mpbtgfZ61J=+`QcPHz~-izR?+qKJ9sM+ZW z$fS(|(e@ed$<DAryyNHhV`)jlkg_}ge8Y3+&&xphqZ>bQfWtvUHIjbvd8ANwNr_D3 zW6W6P?2pSFp{I}e-d~vDc9o25=(%Dih{5J3PTWGg;&fv&{{5hEWQU@Ikgu|;xVRgp zmeX=T&d^XD!8*q!UU8oyNX;RXwL9g6bxD7dqkoif!OsgHC*)-)NcEF$)Bhx}Q+iVm z74+hz=W-~ew3>;tE0!cSjS;{)5co8DGO7FNnsn|8FLeKQIml)ozLiJDV7f3|GYGyC z$KHKhj5zg<{;JWfs;)*};6*sXPCH_;Jj<XYg}-w8;g*{>`s~J}ry{CEU<An&_U7go zTOJuOA}3|{onhut9G#kqbF;NUl8w)rEZ1eeAs4t+_BN9J(D!xNCz|qYnTO29kTUHk zBBM0f&1=Ip)vjtrbhtuWj@&$&qtp2{HM}YN5i=RpKw4pTzmj7jo^A#K&l)7y0-{1U z+c1~Aq8-`c`jhKDI(MK#)03OfdI-5kEnOMSr1$XffHqP2PA3PQWht5M`+QwbMV<>1 z*(sD>>u?uZ?D<B3b=8H?iW(Paf3eV5q3G06<bg#VL@uQVBM;?0tE|j3`k+ewnworY zY!g@Fy<^o?RUeHSf%Yz1H@_e{v02)U5fn2{oXAM{?=txjh>Y;4;<#&#lQ>F|@Pxh4 zXyyYJ34C$JOvp%(*0)$V>?@LwKdlZ{4}QVkVA^r|n4xN8U*9vlYu0q;QxWA`$HsMi zt8$MO0wOw<L?WT?1m@ghwJ+7+mCLTB@=wZ|g8S<~C%_E*u0;iPy@oiCL`{!0Dj(65 zI9)oeQP@pl%(RlI(H|kT%)lp?ZaDnv)k!!^U@ll;$Bm1&{1kKNTyF0S>K>2<msu=R z-VyDVB|n#=5iD{_`ZsmG$G!1<8`G5k*XKSz<dXz!b9HU)YGR_co-uaI^y^)!k!@cA zvT`K$EfkWp6YzO-{`u-%tvVU2;ao<bg6IL<PG#Da^w0RZ(I{}EHpN5^)57fDnW0d2 zjzqu7_U-LU0;nsY+W;TlZ?_UFC0X8$Dx1ec!j_U8NiA?}3-SEw`F~u12gN?O8yxUn zpaKKnOd|0m9Y?+#AGAtdqU43B39M85M(KW=@LIlTY-uTY{CE){5N(zNjL9Z-KzPv+ zN|xFQkO=X?ihq0ldxhZGy0s>}avGawC5jt>=NP<xTf2ZW2s4#piwVV@RW{P{DFSOR zP!R^(;=D!lIkZDVi#qf%;DsDGa6s-Nx&^GfihI%JmPH`owBLL6)%&0j>$oj&2y{l; zptBy%F@YaWeOej{R=7IIsS4v;p#oyaeW1*!g<Q_NL&CTQFke4bsKb8NTp|@LdH)m= z31I;cS@`NmMm6BU<Hul+_6!?{vpZc1w~^*#72fjCm<B~WN?9O<)KP+P-?F}y+~5Er zhSPID(1@ZUBSCzMv0TRAyz{$fCvI3bd0>`Sl~=8m@7RI=g@6xja*sDxuQCCjv3AD) z@-&d8Ai>=UY)tpU99bbys3~+yFww$O#oBCe0yvIf4g!&*rKf+65v*}RxkwvsN$d&V zhsTpfSAGFOeBuY;Bzh&L1gNUO)kIPM$;k&}W(1I@5SOK+V-BK=i+!GB(|``CD2x|} zbm|zbC)>td_uN9vlPd-MHcBz@kI?8|uvKJjrxlLSVA;0qD?aGC3%DS`==gAcS_Fe# zMV`*RT`JCJH4vrf8ZMgDGU2I+vmmXQm3n?cMyk+E*{PY<ngXLIobO(ZQP`_Fg55ZL z@D*u6#3?6$yj95W+=kzbd3s{FraXk*3C5{~pt5KRDA&oEneHeWG#nfpPMtahsG&H3 z%11%&qBC4kAwt1<RLO&pG~sp_nv8)0ff!RG6b{!&KrV!G;Bk!?V5a7Hh7+A&ykY<e z_cM-Z{72Z6PDtK~zo3J(g~-QQJv;I4Z?+Xbco2W}>Y{)6p*)beVa}vzhWZEuC16NW zu3&Us(kCaeu&|hzo9_cd)|vuO57s}PdOA8f7)RjM_#I%Sjyh^)7X9lWiG-g7C`eoH z5mF>TS#1#n(f6^5xIDK}WttR5Klb)XyE4g$M~|Y6<=ab`?CjmUHIA^u3JMAWv90pS z0eS8P;855)>5t{ps}6w8>fy&Fn(_+-PG^aD8|nV8t`a=Y!4Lhi`DOwv4zs<0q(GN@ z^0g}B8U4igxTjwC%qrMYI8=y@e~(<-9=2ImProMoVbIlRdBceQm3=*Y_YuqT#M~X@ z)$#%N;Nf@=9fUMoI^9W0BF5gwkAq_H>3Tg}ma@YBUF2bdF&<Pb!ovB3FAPP?(T!!b z!s82MRE#q`0)(y{!ay<ofSjb{<+iVfbak;^A0J3IF37v(BSU6?97$}&WVo<~e%9zh zN(`sq7%j&(hZEM;bCZ*?6aJJWe5QEPjPUFF5DuaNvKmLP0eJ!gK$0V1E-dQK#0kj{ zVeZE8G~2*P4|&E?&c{!m1`2c7D|9PK0P=oy^^vqM_$JY7PHWV7y*NdRi#xCgIkvTj zFpw}4u7jmYWd{ABv$$pjo4beWM@B|^dsDP>VEIrocR$xe-08^$aNHGf$U=q>f!wnn znP|FLC?g7IFwvr>qMG^f8xDVuJ;)U@LjG-B^sNdxFAFNSYS0?g(7r)155SpXsGytI zgG5>=zVUDd{DdSq=5SH1Z`Ie+gFxwdaT8Dz2sJj!#JdIP6CJJYdX@%!hcH9#$}lM$ z>Ud~v!Q}E-5C>*oQNf`;C#9fJasU474?b|phT=ljrwE#QVlIwi*;_Hw;~WJl8X)sc zf@CDfUllc3U`W~zfJZ&O!2v{hNE{r$zlIA@vBhq-1oxS*xXiKSh&KvS3;u4!WjTC} zs%Yy^TCf}d;OCgQwXGAA-{{lDH_<$+c#Tuyp8xPzhMj(Sp-hrvHv-lW&|BfZ3JTkD z%y%&8h@f`(Yz+-BOivT8ch^yK!dX%RG=jd3FSs)B^qTPs2~TTqz1`Xhi+g9HwFF&* z&XY7S@qrdYLqp@ZDD#fySFc}_`<RoX)q)ZQ+<1?!yYR8V>)Lp(21L}d(&J9C<q))l zgymKW&KHdH;G;R&e#`beMpl@|8=hq$Il#>Y&rfpKt|zl34HnA8SCG-=7oYrX!X@XV zV{F_BQ_ttpH$Hr@C^Wkiwgj0I@RA4EQ`WW^fNnO+>uQ5`g`t(Gh=`vbv!A~|F6QVT zk8g%cOoGPwJhctH>I^gxI4OwCKtdy99eA{$7tyC1{jVmLaS(!{fvl7FKNdj%MGqxc z&PzrDLQO<2O8qJVugTtM+*1*M^XjEbvlh~IIPu|)#W+PtB4WFsD7lNg)XKXpc&|>b znIsZ05110+c7(yc)2<Ko9f%Q^Ni~oQK`9C00i1R^L148Wwlp=}>)1$X$VLh$sAM41 z5qj2RzovZyfmGJAQjy@-egT%>Pb@z#%qruo0clSTBTg8_AX^T^$j?90z>G@JSy#ph z+zvUQYnxE$@72@6kEuvpO5Whth`mT90{?I;gytRsjU}o<mj9Q9B2w<*v=Hj}5Kuf8 z$9@r!S8vTI%8A8G<h&ZP;Uw$t2Z5nvP%j+^Go~zXBspA=k4zg{N@kJgFn(Mk_=bC3 zFPj(f!7{IlkSvptHZR(v+yc}#QxX1=XsA_rS#WV<ufn5vHjo%ik-|OH7n+3j?fU_a zCuV1J#i%=u+?J=yLYsdCkWOoB#KC(V5V|2Lk)1w<J;E6~9xX18ZQJuelg@*Lng3q= zwxX9)C9ewz;hvCg!f<FTg$ru~*;p05e{e{Hh^N1+=FZ)_p=c-`_akW-VKNXXTsb17 ztbF@W9>y$rbH!keYwl)HO9ky4QAq*&&O@CGcGR_8TO5NIgMy~MeDSUE!wZ1CHkhA` zB%q4Gn3-N%!uD->eR(3^u(_p0OhRH77?16FAQ!D29b4?t6}Y&%;<jtZeU}rqQ&Q4U zfaP;d5a&qj7Luoz*LJ+-$^%cbvo-R1@Yg3y;l8K^#W6|(R1SZ)U_!@{h|KE!$7*Ts z81sYikN5Lp7@|dd9uP(~7JzvA4#8=7<BuzW8|}wBI%Ytj1_wd-I3djhqpVu!i{B3q z+u^`P=<)W~q~!GU2geGZ7at4-ml6xnIk1WdHX$C|<9;}WgR;2mB~%xeI$Z0(_rXv7 zcqW1X-Z5h5g6Ho299A5e6L{0Ms-HwtW)M!g4z2|rta2kc!0}-$ChcSvT1wyx@MEbs zW`Y|5YCUA}IX?XmCM<@CZFo3NV#icm-wwxVZh|4%v3H_+>Mn|{vP+^MU;W12VHdo7 z@R%M>aYK;QVT@_<p#sM@coV_4lvp<yUBCbhkR)z2xQRN!wWbI7?DM|pdD4|b8IUjm zPAh6208O2RGWq&-E&5bsMm!mqhjnk$cSuk_V)O{9NnlaW=fmybbpYW*VV}m?b?1N> zN1}f6NiyQhC691G+n>gXQ6-Tsg*1?f7g+*$ZLhFqR8i1=AII4atgYvqMqm<dS-fB{ zr!8$qU?oln*{XB+InYNE8EWu5l9b`#<g~B$J_!zN{xy6`kVSwBQ1-kQ%_eLpbVgrk zJK}T%f($UU^d<3ZaSGKS2|NE9Y;vG<`2((P(S-?UCs;7!hpWS}2P#PZgZu;=?#auK z@a;g8NX5W$O)Ik1r88syH#{rUD!6I^e4&2AZ;&o=30cTLeKichQZ2T~QuJ#4o@*%j z2k9PO@0uk+3v%tc`xo_$b)N#30Q^s|$r*Q<;m`p@jao%I)c~krw3Z`^B4kx#M?-@V zV;``?3AX^s`b0h9vX>X|d%{w9YF9I`aSRZkK@n?9#Gc7GU#oxQNXun6dFR&aBACg^ zb|ki;d$NhpFtM;Wlw<PTk8B_U<Ze{|2u-uH-2?@v#P$Vslc5yZk*T<QWeyFIr~yH# zRmj-V7K`VK&4AItit*D<UR4AIIXaFJ>5<&r5^M=q`Bb3*H%b#Hfy9b9l(TNHPd%}O z;vCLdGBvAgwfyhdz(lV0ok7T#1!|n2pg$mM>|%e5HKJD}Qf%=EDX$C|4DE{o#Sn)N zQm5i2sVTjX6b7pg92+{ix@}*-gR_gvhwz|rS-=t3;IIzEP+J=taHGG#$?@n>FF5<) zJRbD68jQnW9cNwvlqB5pdUyt^K^5?V0Nq{q@coF7Pfw>bH~_Lmb%n7SoQRA88ASj5 z6oGe*?dXLz5N?oxHUD5SjUy7iN}{fhpKZf-734@PFDnDUhBuFQ&dtfGd+B1+W$-t! zFcFT;Mm>P562=esPsY7v9rU0!!Qwu2ZQv9I1%<Vh6#zyy9v;IFboBUE5TtPN^Q(jZ z$bE&Nr2-Fz=qj2$DrGy65onV9@sYu}qS?vI-@oF;i$B*z4(kaE-fXM;J-hqkZ_H&z zFn5G-0+mh+<Gsp8!eq<gkeS&HL(v1c<>48;@T^~Nz7k0IhZ6g5Q&W)IO+r3uWfh1t zDr{;0xu}XAC<Ten;K&j9v1e=LD2DugY9<jfS6sO?G~kL(092|rmon65FJ8RB><;tX zTEcu#?tWSo-X5X)!68LtLctpkH6AV!L|@bgoU(QT`{B$p)cCy+pWeSeiQ5%pDk!sr zucP$-g$)6T+5t2cQ4O9bW5>tGk+6ElX1EGQhiPePc=SuZHc-6a-k_nOfvKnOvtCd- zCMKL|e&AEa>6nYYj)?LjWuw2Ttqq0$qwDZTqrNMkp+Z-R&<C*Ia5g26Unq;TD}g}; zB#+ggaWXOj@@+PJInRNb59<@{kGle*6>ixmkwA9EVjHRr*)bW2OXm9cWGT4dP58J_ zsHL=`5->C}61hW38pYTEEN{f)baj0rG_Fa8^Yl3;MEwl0welS`IA!5HzAvNPj&tcN zbPuJohak!ioj!CNcCA?5zy#@IAP!Htdv}<#CUoWdcVw#|FY$k76h{`9>F~7C?&Rny zqVL+dGs;GjV;uDa^b=rn;@*b~OGA6u3<o}X97W*gL%J_7FORlr@4-B4u-<XKq8w+6 z+Y85-V_N=2nDN12;i#1refiHZC0*rIn2zDyqFUof+=spG{S^c+0b|%q|6H`KvFn;z z5j%3%@Uae44{pQpW;#nHNgQ=jQpGaAB@u2l270?hs(}CtYX4QL^Xv&a(Dj`^a|R#~ zYDiF4gxZGBC!jmW^Lp5K1{c)(_hx17_tHRc14|#XZ8M2ym^`4S5vDJ5{S3Gq?%V)~ znwp%k4NYnVIVDnOQSD(LlERT~ibY}hp}PK@_;mDEW5qGzU&~=MNty?I#WFn`>4<+N z=u#TDw*L29;$OLyo(9JM|4Z@pH8G~%-v9eT{NHJ*=Sjm*qJwJyn>CqZ!va9o4=5`G zC@NmlUS~;sg`pF2i73h2hs{;Bgpx4;3<wB#w>J>ZW9Cwtz%(*l(`cVQdj@yEGRq?P zxF3@!y@e<ZltcaWu22@`pSp*cA9~#yJAM|H?f`}=#Au1Lue~DYNYDWv6~=H9V)vjS z&+Cbfi<{`T2Yd%JpE+t+U6e)_0p$%na|HCud9iaRIIV@*o>f#d?u*Ux#isr=I0&;b zM4~7a8epz>VM(Ld0)dcYKLOjKZY{Q$L*L^!vMcrN+M55ms8`wVXI8~#68HWiNi8Ws zoQ;X7H=}#{Nn%<7S9>>k4A?DZ7M1TjhV7uoc0&tfBLD}$s2H!KJu?-;lxLsLKx(t2 zb59y{52;WncRXBk4+*I;6vgswJQ5bQ<t1HY=_dy7>X$I06TRxV$cp;<-8+C&V00Co zX(7@9o<7Cx<50#4^95_`M`jWiRqXmdzs9S);O<z)ju@tLazH>*KWSZFfo@#1^P_`o zedF=8EQCd2m=97WApWi$V^?Dj^pve8=?O<J?A#o`6-|XH6RbdBMTwcydhkC6nU@-? zWbkO&heMVxsl~M%m=%(TkJ{TGkxsaJ^(s0Nh@Ps@*;Z9W$HWxdRKw!%+TmB1p`V7S zS60gep{UAN4~7CXSZ&0nI=yQOW80g)5`i^@52+_b5UhK76qlen5mu{1LO9rpz#?-v z09~PU*_n))2%L=#3=Dt*k9sP?!4Ggkb&s3yO|T!Vo;Xp>znPqx`uXW>2|PD8S~#|C zld^j12HR{Pyb~+G(!SNz)~ewMg~$$bG5jRd!E4DFP-CWv@V3iWu6$kjg+_ML8ixX5 zG75!>ww4x{b2ukX{nUYU4<!ja>!v}USIY`RyK{j^MM2rez`y{&7$k9I%YMY<dj5VH zPF@7p_`_ZdU=Es5K=F1XFtdX9J>)U~Vv}0%L!Smoqb9=XzGJVeA(&`cU7MhC7E?dy zn_XS?1?ma~GS=Up2S~|s`1JHNiamTLXz<`vvGf~1yjbBM>cjb+f@}$3i438)fW_zc zUmI{Mw;Wc5c?xK_XdIPzj3HXq<qvV;PX);tHg{V;C=x1s*a*G+_jY%Qr7>maD>Vs3 zoI`wvub3Z!)pgw_oXs6-i6leNwISH6+6^f%)1b$v2y~FQe`@*q`eHWn>jTD}h-v-; zuw`;`4YLL?iUxFZtE$%F0WSM327NE;!&~1TTUQcdW9iY8ZE1ylXZ}0@q4OkQTI}ur zfNqDL+=HHe2|Br0Dd%x$p%w{N+k|yR*|%SmnxEkggo+fEA>8z^yYN{61s0<P{vEQ~ zql^DE8KK>>MdT~30{0a(Myt!q(5}jTy8*|`<qI#tzUFy+623{cPEJBeEkVe}?cgL5 za)AJXR05c-Y4@gx5=tYhOS44hvdL@fxajB3!7OH&?(lPbngbiuM0Ry)Nw&Y>7fd>h zgy{An-l014=V6%|o!={{G|q{zpC7Ea;wym$S0T6xr2D6o5V2-7PoYN*=u=YUF@}MA zf*I<w>|=}L<4zws(X{BY>9bHGpoo6mW#uw#=dW&BKFS>n`}a%i<>THNQR7Uvf664% z{{59eEe_}bL2sM2z&o3?-u$-tSAE4#A>-W7WDS;RbLLF@u)o{vHYYRAOP(TA3J=*T zNZVL8>~3gy*+x39-~PfF6^VqtIv_~T*m!Y%{%KS*${tCvGI)eMBExP{dby2*LzFFH zJ|q6u1UZ2(=G@8@hzAeRdf}#6R`5GDHZ<sIUB95V>ZnAH;@Jv+4H30{`}))*%3VA5 zq#$<z4oH#xSwV|R-BcFutYyd&=hB}L(IG=FdsP3-moMd3=fbl9M_yUfTij3`!d#4p z5YqlK6uG5tL?TDD3=pah!J+Ex?HNNaIWb+y;Xb{{;Z#xhvEUj^c6_Fo%M-lNe_%<} zh75k+XGNdQoCr9mJ`QuFa;ilXn|M@{Bj+o$YCvW7-@1pwzlVzS5_#>>uS5wI)xRde zT2y}P?dY?j1dz36_3_g$^mcno9&GNBF)e(L{t%!Nmqp!tqC^ZS{Mxl^_@L}+gR5cM ziNgwc6{ot;B&FzK%2kKeTFPXN2V3Mga;|Pia4;6tWGr3C^6SyPn?FjzQc=Tja1bVD zZ3&*RGGspTZ2$0uJUDg$4?>e6SoyCEd+mRw^P%X&;F?j-bQ3F5tkQD>x**(;m6bnH zk^}8^h%16e5Su>K{*VFFke1MCfxP?o&&Vb<Y5sF{`5=cCa}3rrj0bAq+<mPlJ>&?+ z)zMof;Y|Mm_HT%Jgudk2riRQisHXqs>^CFJYQK6z2wIQ+PaS{@iFC)fWtZ5SiDek{ z+ry?1@(@z^KpfTXxy8Xs=Cs#qKYyZX8mj1>-GXLosw0EuQKOZz5i$uw5!r?E6ICO& z0LRAAjus|1^mT~4yMPMXLEC=!DI0V>I2x%pUoU?W78Qk^2g7&qwkZv70LeHY37bpA z#t}vPA3e-Cjc&`&5GICKYC5*|%>6(G^ubLYL2tXo#X;&*_5Kong7Tsz;5I_%R@xQ& zmCXtbJ4$Ux^KmX?@J>rYe=<~&_Kg*%%<kQ1;Z}spquz-OnW*(w?FeC;xp^Pt^^Bw{ z{{<`Dz`O){e-~@`<EbWZA+%Eaxfr1p$2HW}*}1m1221m2=gD3?e~vE18$KH#)C1rJ zYXijLiuy?FAehgAdS{X~Q0;Td*?FSrI<6U<W+gAb8=%$%&jyd3j-&`<T#$L7sH~i8 zU@9G$2UNX*?j7F_s6_0@NqlQF3BsHc<{jt+(QrrHDFle&@-@7I0yswONB~@%L5B~7 zUYSHfpT5L=tQ5%f$F1`qG@b)Uft{Lh`!;qmg0z<SU%Tx(bL(p%jQpt_9w@qLOvy!8 zM*u$T*Ao*?X$7zke<Zr<WA^FY*&A&bKC{1c>k)dVU(aWVE--7~*$+Tv@$K})mLVO+ z#PsuL5Tn%*dw@>A^vRRtQcLD9xo}>;{R~i#?qZ5#)=?mH@VSAjFySCff={5aPy$Rn zr#E7ES0J-cdK4IiquTbsZSYcZd|-pY!b_%@y&r?(1mdwvC`hoYJRf)K!-nPvT(?OY z-ri+>QdRszpFcwpA}1!qPM?$O>Mz{}oueJ|W~>+sX%y+&Wf@@6Zmy_rQjmZLT^pFB z4ATG?D<nkK{nn||3Kzud1JE2e7Jh}9<gN2Sct0*}`&0qC>q3Q+W_@TPN`}3Inb{{A zdwao_^TCQy9QIiW;D-xFX=!Z+=L+l@06x?})lOik$08PHFR0i7_Uo4`o&60|#Z!+Z z%;yy>3LC=+Y)#-UoUbuMgCi$3Nq~h`fWJJ6-hIAf%o8^nMF}&%8qdbLSpiz|Pn`1^ ziC^u&&J_f>T?)H@Owcae&`1i_)Fj)`K!bJBk`1-)yC@iLvsOKW8nB&nEYR}VnN(iW z@M)ass|}i|?r?;l)I__o;^%f}3o~<Nm(D3FOzX`>*S+z~2u8`K<zX~6+BYMseWC{Z znU?Jv@1M9k%P@F(`((BmzBIK0!l>1Q+t=~JnYrb~)ztW;Z$mJB<@3}I##m(Kp^}Bt z{Fd#te2UOS(BXk$ha#ySJF~p3W`g3(7g*2$l|t7Ew$}nWR=m{Txk(TQ;7_fJ6%bPS z?uaHm67yz&@S!ipc?eA?n&Rix)dUEj!-lPL?O6jyIq=3MWp{^2iU+?=oTMO;90D9+ z1fs{ecmsP8zv4t3|7C+3GiYsLRJK5oN&BTBtsk9Vhe9d{Ynppk2pW#|qd6TCiJ(?q zxdLT4%f>2htVprmCi2>p$6LuruvYnnrW=SLq&#K3M;7U8?9Tg9v0?u3rn7Sxi4Fz^ zZwc>=k)|=7r&h)0E#tAV)OtSwT|;w6r0&5*aqwB+s`gP$$sDW-ySh+bk}P<mJeYz% zN<f%={bDD7$m&tZ0dHh-;9NQx@aKW=P(t@6Lp9;W4G|D28}`9WY-vGbP}Cr%fQjS) z2pQ^*wSc%tfuxp|pFb;;z~kMkEBWTDchv<Pwe6h%qfh<dUI+)Opwu;iB)O=?n?xQA zslD|WFa%h1s*=EGOt@j8g&aIQAk<r)KM0S=SRsJ~%q?TnijkT^s)y-)5y!%&t9c~g z16~PnoVAOIJmQcO94l-;&ATS$MTtxu!kHDA4;)7{$0}uB`k_Qa%l-?{#Rx*34mJ4W zB-$dWucK)ueRJ^r`={VyZ)`hHmuf(@nT~Q6!v5B&6~I1#fKA!-(=m3<{!=7#d)pa# z?y8#@#+gaPaDup>AdEIW=P~iY;_$$A{b(uhxY}V3&?rdt?ROnI(YDP8eo&KE3|^O& z4@A)BDL^s#>LXAr^qpDZWKDcExy_g!NR+^F*c7Vz?l%=@f0yCorI-nQIgCrgaFNSC zIE#AsT2czt%2}+7A>?Pw+x?s=$oe$4V|EJ+6)@{dNN8Zc`GV>*KF}N!+Rf?P-Enl& zF9@d%=#f#K(WZ(-HH0@^Ny4B3PM%~W3~vzWeBVrh416*MK5-&b)$#5fUihpga!8@i zL$ou{u_xwi{3oh>XV`qrVF7c3emjs|bPZ^e;e%ye6S(ih7Z^Yfw7M}(32|agdIRtv z34kXTyX`OM^L^%;2OlQA^keCs0Wai*|2h6-Fxqi3)nL^y+A`A9pE-S6aBd8zo=MKw z$}hAaviVITBVow)OIy?nhRy%VNcW%7Z{O^#tq%*)t^C1|lTz~~3MLZiV`!$11PiVf z3KC|(NUnOv{|})yBodf#n9UL4(LpLn-22`-$X?UC_wwcEJu2Is@a6d`FP}br|JJ$^ z1)sy%i73|7xM-K02WYrf9cGH7fO3%6uYDkL#I<V%B(|*rY3aV8;PF|p?b$j0?4D0= ztzpfI4i6XY{&SxwneU>i`)CBPK;wh^+J}a}jjrV_m$y?Gh2tWJRWr&*e^X+C)Q1Jl zVcuZzC?*WP&)R<)Ft1q<1@~z5`M#jJcERwazc7m4`fqE?sett*$L>3oh@Yj}(+)40 zPk%l4W*>huUkr6aH2-fjsk?XWir~52;PCNIm<CHTj&S0;Kebu_W>}=~4;9M1s2A)X z(?w5qc0?;EEd|JGfSLAG=|uIVK;{}dbu0{zi#PCE=Ez#CX@I_(b1?vKal7>n+~1Zf zJ7`Y4B~*Ha>A*G|dDsZlxmDGtBV20%4e5*F+2Kjbb7G1S&Ta@NKY)UMA8B*~HcGG_ z(hCa(p~2cZLqmY;e~FKVmEbM!xrMW``(e+gPk~_Tth)d>!|UVuTTgF7B}egT$LP(S ziIgPL>$6aetq*ljrM<aFzKqcZIWeC5(^!YJ4-DZ@{=F|WC9K->Oh9MS-&iCerse@^ zQH(GaVGco9MZMIsDEBCzY24U0I$-l3DTtg@1q}@e<8S@~wM)fYJVY<qyTC?Kvn1}M z(G83VyKe6Ttp+f_BHrHQ>i!pGwtVoXJo63*c6IeYUmx%u1-NE_%0?bRvivCMDeB~3 zqA~aEP#%GGA3R7!0vI#$+>fE<;g*r>_ZGmPPOl@+=!nf?Y<bz>^kkHC{}EwGL*B(i zgOsu%#+3SaYXnhRfya^2aaZBo?IGs<6voZ&6QI(6nEQbN`n{WWm#$o~g+wB*2{mPR zjw}E3MJnzq6*$yjG4yY3@I1_zx8B$Wyna3?6vJI$!(Y9B;rv3yM=s(F`^xFANU|F^ zUOi_%9Zzd_kd;JK2hO&f-WizV#3-kKr7Zps6;g$f2|m_?LOn2O0Y*!m*GWb~mkksI zD8tXyRdltR;KP7^#AaRLt^{Y+s0K^4C`m0KAVn!Syd%>-3DH*ny2#w|H9R!PEb2$A zfHk74rK60*6?~#h-LS~6<~P`PlqBG5cZ@4tJGhH2@YHPBdW#VJPSj|C0^kb)XUz%R zEEEJW<F>kl8ju|@#F2vmA#U#sm<#Z+B52$gDP;dmV8=kN{jTbPef#_{{05%^Hu9u! z^bc%e<Rnaa5M^l&i)U2MD##`wh^r(-Ae}RpX6DC<W|ESz@2rLWo3FT1N#Q7{fl0ud zY#xc1L<#i9kAXn*L285z4{kWuQ7CIeiO7_sb8c?yID-Ka-*{Pv0}1sbnj;J$fGU;2 zEezE##<bnW*V59!!X`YxQ42aMYK4US1z=G>wE~>R3K<Ba^<?RZ(AA^#1?RC6>6Zs2 zK<{kiJ>X9p)7aT*OsWTu2t{^Aaxwz_TwympFrZ)13)BbqT)vsaRyH;itR5{oSMkyi zN%<fTkQ;#IJpuxwXcsY%!@%4g_QP>a@BxPZ5{bj{E^`b@68s35PQ!PPjD+#Vr_Y~N zF!Vs9_zmz5@{fF#|AN5|_+o1L!uglW)V>pHlCXLA1Pz3128vwu-_twQvg$BDf|(j( z+0e{kdW6wpJ^eiZ9sbuqHC5kO(niVP+jK`Y$fBTk3$L;~3Rvijf!oQ_PT~p&g-(T! z*;P+f(gV9|W8F&}hM{k<#((|!BV$w5?H));0yguJ6T;8_IpULsX(F0ok_O~l2!Dh9 zKMfPl8wXjOeklBj=@S_9uvm1Eolo>3;#ZNbYommqEG!H#<uG<Z!oi8!;9sbKA^d?I zpg3Cs_*Rl<<yQG1hRTw2rhY$-nNscFHS2rFwqs@k+#N3g!1=k)RXu%u+bqPxHG}+3 zh;IVc1S1KE&NliOR3Zvoj4<k7UReQLm+>_au67tL`RALX4OfR_zKPbA`1o~vy4&bq z0b|3nR3c*T*opmx+&M14=jdb%J!~v2s7-Hkz-v43#~F+?P{_IiS3~6>>;74@v`o|Q zhXy<|l5|S0*p<Y!WNdTzC0XWR9#2K8caZ&^8=k+tboL#B=UYQ0<z+1!p}n!0iPL!r zhqp8{kQep3ECgtszP?Q*k@)$uP#?bIM@k_8*#17Mv)<QeA7z7L=kVuPWfAG5!EOx- zu(UE*(cn}*dVJRAsDlGU*^$+@7Pu%Qd4(P3Uv9&+i8-XuB3<QTS;*E1Dt1X^p<q_$ zexj7#33(Z7)n_q}ett-%X6@72G-phcsY$d*OPZc8Jul>1eoq9l#~0K!k1d}xs<DAR zZM)M4psgkghQ4A&<n~19`JV@{IINx1!4lE`&uV-_>}qAQ04-7y`+o1ioF}*KF(pUe zT|N$+jEl<2cobSuks{C2)@MZ=8jH3$h!o?GthODh{PqQq|D2UP56Sb__mhZ4_EY_M zGm4QR%u-NEsTz>LoFABsc6J^#+xFtfVLys9L4X<VEf&Z1D2wRvIgF%6SPo`_X^LFl zjy3(L2E>EHEH1&|p6khz=4NJ=YNil%;PFU;iGs5PzqNnvt1r%ufdTF+?3Kpok7|w4 zbXy%xxOnsLU}ar~T^g!CTVXcrA5gS$osWy3t0)Dd4U=lXKiZG_UN<*O+Sg`E{!G~} zngVmJeDFK-^C@X)QvP@nM)QC}|KEU}154nVuml63rNDw-!s?di5nyW>c%*Y`s;Z*^ za5N5d?_o-c%D?2FHFhN_GkQHi`^Rsr0giZ@n0x__Bxh}{0<Lg+zvnaG7m*u{z~(vd zp3u|0azaADZ7#rU3!DtqnOg!p95yE8!@>hki-41n!1nE#G}pO);?mNqFTY&l0bFP} z0~mI|JGOvZx_)K?)dK5WF_(Y932<N<03NWqe}8>g*fn5H_161tL3ufF2wN}bXu`jP zVQou+eg*E2o+GCZJj;AzjV|yE31G^-eH(O|<9}e|0vK<={WuN^Gwf=2-L2CDPI3XW zC2&%FbNsPC&w!_YmH_hyu%`^1;{}!+=Vuxpw-Z(Xt&_V}q{QL~^hkvhcPnTEHgMO* z%T2(mEr2<<1~{<s)Ft8LMBvH;K4AaR+Isim#mv)+8n!Ne<KW`ba@7gAlHCS4lkj*i zu$coKRRkV{1YA)MJP5MPKOMLXCiXj1$bR=;sZwA~39L8{tat^yu?;whc*_xZkulIM zZ-MR5Y3D3<_yXru*M9x50kr(mY9ep|1-Og&%zXQJU?X8BaM>ns@#2v;eqljDkKVqW zJ9X+;;83@N9I!+KHabC74DbRO;8=uEZ4*NSuoMC|%RsZQvAlmo76DJ{l#>OTy|4RP zk;*?q;X)>M7RN7vD>>Bv^*@$BoG7!wy~izCerji#ji~yY!}c*qb72aC|5;QI!{^No e8RDHc`)B{$ure&CabX(+5O})!xvX<aXaWEn#YJ%d literal 90569 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 diff --git a/bp_doc/lendist.png b/bp_doc/lendist.png new file mode 100644 index 0000000000000000000000000000000000000000..d1752ccd981dcec0a0396c67385ba2f4dd3837fb GIT binary patch literal 13513 zcmdUVbzGG1o9>H2NE(13A%Y;%-Jl>~0n(DAbT>mYC@3u!(nBaUl+q1K$Iu}S(lOM~ zF|!Zf-Ot(m?eFaF=bYWo?m6?v`_W<Mo#%a?`@Zh$y6!vlnW{4RCHhMc1d%^__&@`K z&RIhcK@IUa@Xk*yI12<(Jh4_#c=kv^;pQ_JM+<8^a|rTGjMnuMzP3*99~}21%5N>g zZ>k09zBb}<g`KroGSaW@BhQmZq<3$fhFr3~{8;|Y<2z~GZyvT?(bE^+r`(^MlGso5 zS+D4Zb?;X%N=;RrZ240{RU#kcNixp|gtT5qg-6qMb&L_U@KfBOy1+|y-rD4aaMM6r z8wHN5bP_rTO_vCQ4<k185LH@mF{iI4CEM24wX29aA_%&UiYcRn<VhgU*Zbup&?dv^ ztOHbkm02N_;9d{}sl6cna3SC!0dyOcKuQ3q6G5@lGLx5}SOuSIN{HY2)lUH^#2FIS zWea5>so$iA>>peTqqtCihX4w_#(13|K;j}qaQU)28`Mb;wO-W75`flDpp><FOyJm) zxMK2@s0;V%jtxkuiLA;=Z*t?x*pI0Kl8K!(XB_PtE>b}O^%P3XLjz!UFXYfcHt|Yh z?+IRrlYcjO`t=l*(F-qtdeqKIU!sgiZ$2%85jR5hc*%{y6SW>zXbD=<T4sFDlJ#{7 zOD0BF71taW^L%I|R={`d4?}z6kzvL-T-u=;`CP8{o_`^v$gh7#NnD5RzOWuQW6W*j z?GIdWeC`@YiJgigcPk_h+280i8K<ky(?#=$Sh$mrtEhPR7V1Rr2_-Sgc=@IMZ1U4o zGHEvZ<YSQ=6u3~vQ<0lB)KH2#R{QPe`rXye&BBAk!*79i?(+I!&yCqxL`v6w74uIy zxfjz^J}IorZapvfT|+n}M2iLN*k4QaN#8}f%(hlpnMLU5A`D-i1O_#+b(wv=*52Db zFj?HTGZJxV3KJSG94abvfk&}opJOFRJxLW+TayO31;x$v?fga$BU<#5UHxyrN}ntI zj(thnO4~M{O3e}z5-qEpAG5EUV5p9NQma&|bA)=pm~T86U++G7BaxgTGFK%lLr%;i zUd(}K3Rx%Q>`^}7RD&EUEnV2VvA@b}xPHgWvrq`HuA{5up+ULpJol+JbEc+IR$i_Y zu{V;pXw7FwbU;XBJW1C{??Oj&!`Od!$$cvXpS8WzE!N%gxFysvdJ5;c@0MoOXZqM| zW!A01XN3quDQ7Wi`Dt-yu~fFSGm|^kKMg-n_xxaFhO{MS_(?jf=F4GBi*CD4&CtQH zQXO@Hl-+mx9Ypu2@WeNJnQ_(8-ch~d-c6ykn3IAxQ-f6mh(=uXSH{#{XzBfq;Y02) zB6LT6SL?6F*5ZznK=bHb)-i)l$cI*0$WmljZ`}^*Imy3vUsl=wbpSG@^!>;0sF1L% z(%8#g^5f6tbv5)JKhl4sbYDkB^^vj4eS;4vW;tu=@;WM79hwC_R=o_31y-&r)9yyQ zA9o7qBj^O_t?8Hrtoe=D?!*V{3G1ytH~4++_q(y|u}pC?DG~{ys^W5%ag2<rkE(aa z@iU6??TNkqT{-%mN8{weH=8a_NL61>lcylBq1n4F&)z47ir9YJ&WNGWWH{zV3jE~V zGVA*^SMfRhYfg58wOk*<;-u|?`40=%MdG<IhM0EEj$uB2u40K9&%T`2eXV-}%Wg|? zSw){+2R>%?wF<T$hL8sH5q|d37B?!)8pzkE%{9z(Q^fHd(pTum<!HEn+|?LnD+r&U za-g!iX7#78ZLHHh{8aRqvD2uOrqm}f@3$xpjysm8bYd)|)Rrt^T6T|fm)bdymfdVz z;ap$#c0|Cu5RF3pi@x14Fljn*yr9W@em22k5$R3Tk^4zVLssL`LIUo`_EuI|#)kNm zipqHG)3`$9LL$-=cFN+WWNu+!>b^eE^4@FqV(puGwJ6$d#JdxdA8g-u=2rvfuW}LT zYU?2KcKxMl*2`Gxe&9}V7F}QZMe%!cs=JiiY9+~1bxbF!QzZw1he8j-e<#RIh@R4K zOW9D@bbjwF?-WK${}lXnl$dwEzty-+y`HXH@lWZj`mFilL_G!8XtDdsCbia8d6Gzy z;gH5K{g5BwDl;~XtZX~Cdp|mUTS?b6A2*MlyFM@5wtshk6ZtGmT{gue1C_>}+x4wB zPoO{|0`bjVvr3*rO-wZ^%hB??BXbv(eYu6OjqmVWgmofa+_bfWb*e3=X_I4Q;bh^V z-7y@IY!vR7rx0g~)O_vwJv=xkDdAPs$KY6wp>T9U*Kt+%;`yT54T^UM<Oll~q}kvM zHk8$hl~+D{#L}-Zo2clJQ<IqzkCEZ83osn=qdsW(eGBrImSkaP8{+F?nY?pfL|r<R zgD$T6!}iQl$3U?4aDTVOH%6(%<=8jf%?meON?l{3y60;;nC~v}*va*}73OE1Xx(=n zwQi^D)7y9ba{E9dTW}Jag`MK-gfZ|jXL))qE14?}#&wJga_XkxZVh=3Ny199g|cGG z35VGW<jU2D?%BK9X;g$(RP;$Z<>25yld`JvdGz<c@0S{Ij7g4it!K*Kgi|p+_DGXl zWZHEbgj?=XG2f8A>|40&2127CrS3#;7&}5+9P>KRTS2ygv!ETeAIV*JnaP!b&-2*i zwU6Kn6h>x0xHxXZl@1&GCMR4KCLS}%EtdbqmuoWXx80=iLFh5#CP%c=`QKxH5M*T^ zQ1~1wpo3!Q1JaBj2_49eG2rTrfCQ$SmEn-H%nd3FMf@l;bdM;ao+K@Wta+Mn=KXoy zX@O4G*vs_9utw(xTz`a;h?Ary9#vZIMC=UhT-<4Rc%O}AB;s2tgSzfBxgOOeTe63Q zw;EWLoSUCEE3*4!SXkU&;9e-;MsiQ&(&tj!k=gyQE4r@yl&I>K4;|5YW#JaG%&V3} zF}HN-#KNS$_#j)NGsATw%Pw`iK{w;3Nf(dnH_&o-UfkY%=#=~-{C(-Os_!41%0fz7 z-)F@vRbSVRc*}K-mb#ATC942y9Cs7zAUB4shF9~hEt?dF?wtaTx)dkXUPEVvY@HFc zH!$;uB5G)P#sMkeK4J9c&VfUooxK#Jx{>4rb&bHOL*Ur44Out6`Hhx@pm@S~Mz->J z1A|ySdV{#<3BO~1>tj3$u|FtXQp7DJqb0?vcB;C{S*6WnFg1T_a{QWoM<`d0FCHb6 zFR?pZX#aTf`Y|PCP)eIls@Kc&ml-}VscV1MMp?Vv?>rXw^)>!w_R+<~q1^=KrLTBY zV9FF{KVl-0U9qtpf!&}vLSEyg=aEG$^hmUQ<TH<?)#$+RIqP;AI#g&FDpcAS6}TiV zHWxHUCnP)gRSQiN{;u>&E>S4#Pvt^!U><2Z`rvm+-^SP|7#FBU?nI_eU17hJ!7kU@ znc>TD`fc-Ysc$?Cqkl@+VX?E<lKiEPxyQ;!j^qWQ@%wZ3-ve*926XhCPrhtO%=+L$ z+7*GvElQRuF$(*ik)e|xYCroEW`{hL-%C4CXUT#K6RIff3$_Z)32+NY3QWGdV%~0k z)V$U(-jdd&fo^Y#Z>wyg>D;534OuoBHmPf7X>)${DNrZ|OR38+EGZV}^L7#HzF|x> zY5Dw#9c?lTjH`|UFGHa6O6k7)Pj(jfRGpWsGfW>&Z+%U}rE!^XinANWmA^h<CGiL? z_$Z-~reWX5)Mp@=UPxGY)n$3Ra69l4Ntk$(Y`T@X^Zey#Zf%vpD4X<^p_M9np7;-* zoG0Z&oc2D9xm{n@b0=L-X##VOd9N?f-KGmpI7sl0m$;gXCg*YE-qP{3wZFk*&~W+% zuDT~n5zKfs=~9xdk)%<}c&W?-X>|3i>JDGygER`%q1VwO;W$ed;r9F7Kn+SUBEI*x z6+&M|&-8!zrH=a?&&t(HFA(}8YF2=RDRll3mUC3uRRfkDZXU#J+hNkdz977S>n!T7 z)3$OoDa*?Ly%AAALVG*TTyjy2uT<-SPP;ab&eRE4?a;S(Rk;3LBJ#!fKk<|klL*~o zq<2EQpKtKXOkLXSmYq=Vf){eDMH94Ae7bLC>yBi%eIn-brZ4!nWBs<D?vAfsoV$g4 z@_Sf{Yix>4Oi&btX~loTF&*xo=mk)k-J@h+xlouw=>3xJl_C{YZ-{=QFe7u4lo98I za1EIs*{S9?enBRQus%iY)VSWZCG)pbZ}pm?X6uZ=r~RG5v5R`G+_t$}xx%H=WHg%S z{PxMVnNERjug?I`Ka3%L;xc1(gFUVow3bC}aN%L+f-j_BP=2F&$sqjZ1E$c7u(+A` z<;Gi@SBTi=*~HSlzdbSgWk%xiyuxvt?^^y{i#vyRZ)88r>dWcM+07BN`fOt{O=&A( zwb8FWJlHEVASUpAWYPMe@Fk&lLT$n_mhfn&vFb6C0hcy<>juZ1k|{LrD6Y7Hv4zC4 zm~?V*DzCL>>gtU7O436AYKKox7vEr=$cy>+zBfa)ZWLeVzIsK~fl}dZm7?Lh6V(yK zw=a*wx8B)@(>@GQ^No&B%YLeu`Q{rXV}qrRg{jLQ7mn@R?W#*Ms&=&0w6;j3WP;8u z^`kl8--@Z*`A=SHbH|M32Muiw><y;F`fG6|sTrXI+z8uwRfQ)et2lV?@hT&q)Q0<Q zIG-%sb2~*hZ(~%bchQothwmzp*xMRd4MQ(u9z&q>MwuAL`%mkdF&UY1577r*$k-~p zv#&q)YIoWn%TIh1Pk3RBF&JGt-N<3#+L@uaVO_Debz%-Q4j;<UaB+ABV*DU(r(;2E zY9o6hOio6az8(n!63#+i%kvtwr7}OBd0`!|_`q|mZZd@k8cKQSp$ko)gM2kY5;&k2 zP`w~$&@=?)Leqp7LS8$CoVz<+PeJ@*T}@UgvfN!fpZl)*6l-I$@7mM{8Al>0U;(;A z2|-Kak5uv9(k8F3m_QJ*`sW9CCB)eXEgz=_5zP>*U;g|%_9p5|7rWpyMUu?ajEsxW zCZ&`Z^vCd}h6n`RgdRP(ujQGDneci3$sJ$6wLwVc@ZcKN1HqDjx9L4IzuME@KH^YO z`SGlyT~$e~SrdoK$yqzl+Hw2tI@+6wT<pyi7U~RpEJe(8>wKQ|J*#(+1jWd`->1i> z!;V{38*lunMeFxh3npM2KP}&3(9Q7f6ch^Ru3+@i1_4;SsTBtVx%}P5X>O<hw&7Co zZh^~gyu5eW&4z}Hi%U26`45w(F!$A=!J(l_+PZ^3;rVr1rlzxBcnrY0${eTsTQ_`K z3kXw4i?52ikkazn+1g6I7Gje2bXpn6mJewPrxg<xw!-bUFe3~L%^qoL_E);Ec8SkM zFe6UXiMO!ba<*`vwI40Dr+Wt784WX8Sy|up^ET@6IGEp5K^;y~Ol){n_q@}=xl<Xa z2ce~{U9;WJC7OV#Jzl>dVDiAhAs>aJrl!VY<?yb5LOC3Mf1gS6n3Pydbp6%Pkb^>9 zA|;hOT4H5s45Q{Mb(oMu;7(k-BwDcPsuJ^`Z#Y(~6AM`PeH(@$PMc_9b`B0S@^ka^ zHT#o3vn^3)&l|%Bt971jE}QhW-CY@!g0Ho9b-~3M<U_W%w{r?=N9{!M7)JybH#dW{ z=VqKGvch|JrLnP5*VwDcrbIPC6n#3_-rjEPy_}wsl49UkGx&l(SFgxou`5a8Em_6v zJ1MZtQ*1Kv&PD0<3zg{IVVIolP;O3s<q9e%|BAfy@mkSU_NV2C3ki<ZTg~8B$6#}i zKI<dZURbdyUm?fIYVdQMni<3_Hnz6OUJG#s4i)J&HAZ-mZkc_<eQZvSPTtDWlIPq9 z<w?(3az*vM^$98P$Ztq#MMXtrw_91kTFng%#@>?O2%<75b3mifkzrxpGjC|&YroZv zjd_Fa+`U^kVmEB$F)`Qn32lKzY3Bq{VHdmWmNOD~E0@xIHfqZ9^VcgDkyUuyG3%{c zG<?Qu9eA;n?$o4v`&s$<xaG`b7gyIQ|6|M)0&k=}c$rlx;)dAzfTmi>7{<%XOKj59 zR9^nqc!ld5Dy6TzFZi#M5wbLb|9<`YHJFmwSXVa_Ur0bepsuct?7zyPTKt?lJw4sD zIYQt%nbKEvV&|V1X}_hXSE!M)@K&uAmY0{?7S!y4^V#-g+@CU!RQhUJ*4Nkf`}gyr zkwhfY*w}coxA()BFQRTsJ+5G%qU3N(Kk=L?8(+bKLn0!C6VQ&eXM0|IxY<B?gY0d6 zy&RtX3Ntf)%(0Hd5n)9}N_thkTne?{&Q<W7n`VDGBO?RbCAHDPS9cZ&;FniMIPToZ z!s_j<jj#sY;o`a>1<!3WbE%`r{`TzwHaeJsamAlSLs>aE?GAXbBqG9|iw<||)!SNI zo#a0H;0_l#)R5936poIL9(`iBhCg}o#Guk``7@`cjg3un6tkmXoW8!kEbd^o?x>L2 zZ>N{9?!-ixKA8MQsoS!~zKN&j0oa35?_HY&G#otQ^Sq%JCZ9DB<pYTxE$<k?E^1wy z-)dp@!1K5^g;5{xZ_vs|(2J~q;BuBrXP}`Gbr>(t&E?MQ_gc*>gU{kgdN%09X{381 z*WkxL1BqB!Sw&V6CtJ$a*2^Q7$)`uF1vw~hELzON&8^&!7p>6Tpl)O&W7bOL@jXe^ z^5Me}|75UBug()yGIyX*qoboMBY7nygJyzWObenSB5&Tj@j|v<bP~7Xm?q_oS$%uM zAuA_Gh(5C83(pO4r<6L5b53)A0hebQAp}VjU;Ud4qO_>6un;Tv8?%Q(-Q8av8q(<o zrrtYeC6=I$`O#wQPm8~AJGd@%>Xq8XQKhA%+?0@z02s%?(Za`i4(iFdaEayYiS0%T z-@T*gUI8a5{h}V)UsepK$up`F6%Y{M;ZeaWtx2tyf5lonco4MsI{|`r{K?75*Uvk8 zjeAV_9kC|5(cB684k9Alyfao{J^kaykBm}qGYg9^U%p&oxqJ8Sl`B_*s4R*q%FD$? zL<U_KRsqOOcuZk@$vS&_o~gMJKuf0#6v4-uhvSlxlKv-KE#O=W!;7q<EOSscaQL2S zl#I@^XD^CIR#sOVe*GE`-Vls?`t#?{B#+V&yBL`N;r4t-)y6FdnpPvF;l9Joz2?nq zFJ;85tEAMd3-j9rkUKmyv_4TKCM!E>QPkAbq?b4J?b|n|1R5xy_WoE`KtKS%7#Q&n zfMiBh@Y@_5mf&S!aX0KE66qiqcOt+BK{c((m;vAFsbcH?aSm>pC;tAm4Kqtel$j93 zz)G=-m7-Quzm}e<OaP^*O_$3<P-|+^|MZ1qXCH!kT7*SKb#!%YX^1EouHU$^8sjzX z143!8Gg%HXQRyDv^s?dY=?S*mKaQwYS&HD^yIw0hJG%ky?G$XRyc9u7rm&b80z`Sd zV&G4wUPW3uGQzruAcy;Bf8y3FG@JSL=4iKD_L!TMwP7EdQne{*04;HX1Hv&8$h?N1 zgKh@@XD^H0a2*{TZ`Co(UROe1UY@qLwrmn96foI-C&;P7FhSJ5@HzK-Isi5C+qdT@ zeKydYo!8{AUAx8x&eGg`es1o-`56Rxhu&jpY>vDU!(%Yi+dE^d4+`|lmoMGib~@vP z!o$L7c=U_mm{Cw(ii?Fa`{}M+`7`{A0NO0N#}d?J^5Z!-z+Y#+JiVf3E8#EE(U{4a z<GD|2`B_;HA3mg#k3}#1`SWLBK&v}WTbqZQJ5kILX=&c~?U9g0=O#uG#Aj<Btj-@G z4-)<Q_3NIVp8W1BSujERNB~yjN4u-K`G#~13;>5L_^$_1v47$e7ca*m2?JlwwSFkF z?B2^g11l?Dz-?qjy?2(nSaNc5#>yOF!<JipUE|}1+S=Id?eT=Itu4_69$wxqn-cch zx2@stA|sQ;o&WSkl0yMg5!VGw8bdB4(IU1(ZvG{?y2hi2Lk5oI%(BvQaxmf#2?+^F zNl9^W*>@g$dsnuZtxSf31a-yPSw4CcdfW(7Gi`)ZPHt+(>4B2ckpozaHy2-&)b6$a z_oDy5E&mRSlA@!dk^TP|n1~V*sQyRi-vlN&?zy?S+}zy6M21s#2x=++SAke;)jL{Z zd-dwo{=U9M)l3T^Hnwlr!`0PQ5S7viKYsjZcuS6*zX)Q;N=sLFW2~$In}I?ZCEtEV z{1U_^O-HPN>G%^s3rR>w<cW($3=Iu)N1m#v>?V%PyF`EfEWOjCfQ(-5&+JZ;Dm&)A z3_&uh0P_&Xm@=6JxzioZ2M-<$Tapa$ftm#Jn<c2t>=FgVkR5!o-%2<mJ)H+ud$OcV z1l99psDNx674BYmeUTJU%_`aOnBkG;mX<L)QI?=V8<oe8`|RMW^`K737&CcT{0)!_ zC)6@uh60S|yWw9xe=b*h&i&=cI%G96v^)CFkz`r^EECY8K82qv7(RVcueu7&y> zbdLga;lJwgZoj*hFu)WI2pu4gBH<vRC028bP6R2vg+@srd1B}N36G7*8iOLwNv}ow z-`{`oVN=9rB@7@cd16I%3fIdi|Kq6s&vCsq*;QIvy0T)^ZDDI`tF0YfpmYvO(Ip+= z%QGlje?w~=5*Buek`l3;9&_o^rTmJ8c)$}sfBp<a%CY|gkh;`-7~jPt52WvQn*i7f zMyb-TUrl?{6m5s|Rh~Y5`s9hLWD*MtOKtKMfVB-zq!!T$Vt}E6yA*ZHO5MDfl9qOh zh2=i+OVNbz@Ni8{O&K2)s?vU}^dc#Zr;ebYAmFBg%$?-Wy|RPt4nExiW6a3-_m>LK zo;~{uv=);Q{-At(RgOXeu$*w9BqbHPP9{(MsqGpA!?>4P;7@+QS4nxx>x%#tMQFtU z?3<zoDroUN$T-IB+p@-^6^>K2Tm{vFY;1F%HC2C%*!^q#W0Lhf7|7O)@^^!v6R_N$ zr#mPEe}8`!6_vjh0qBis`)AG;Mh`>4aYpRAz^k)U>)LG@nF%vNcWf)vV@iMHMp03b zh=(C>4B$_T#r>+-VXY;i>SEWfL<wC(XGK?6SMX)3UnW2178j)$-nF(qOpYRgl-JLM z)^s4HzJY<rYIb&Z@l|E8k8h~%-@m`^RLL2Zb|(xRT7bi>e?{{Q_qpJx*-Hff1qJgz zU2*^0ZqVW*H8wW3j~QDWv9q_&L!q_@9|G{OF&@=3HufL2&XhTr4g?jH>Tk=ruQUkX zq<g1*=P9K(n{PM*amCBWw^9G<d^o7$Rd9O~6BB*?`2J-w5|ZU=S0KaljjE&*K79B9 zROs?nHYjTBfX5CF4kFP<N8Z}nXFvvD2Ozxlr%5!y{!e3QjIp=1qN1X_{A;RTcA~Vj zw3!(h-g|BphH|(AQ#icT(tIda@9cPcjVU0=cOLLeSfN>{Wxq{Hb7P~M9}OP{AiggU zHXt!FRTB1qlKLBXU9ZmUwR)<i2CMb;@*tyx0+>4!B>-QKL!v?cT%)0ZgL@!0BBG+A z-n|pOP8LW+DeJlU!q>MNZE;l|$QwXn*ORV80kSO}vt7!}er`WsUj$DGh<j*g=*Y-O zTwGjO+PBQigs1FNQN+-_f<Ng=K;^@VEL2=wv0$&>P|<|n{$JJnuRUet!(5XGV$?%? z;;g1O>9P_4so-n~CIsesRKdj)(M1DIKT*vT0#3#0+xo5y)ui~3AOFOB=(z|W6j$cD z*u{bL`~@79A;2cAE%_Q<OQ9aFC1$rvET9nj%8^in{$~l{e_MER^h}+H0utvtV(Ng} zRhq>g57y=7*#pgS`SN94{H2y_qa-O&Bei}$#>Pks0e=1-i=tlD1H$f+b4#XVgbgow z&&dS+TTi>lH)dTn20WYbOalW0nM?vmy!q5zYOyn}$ZkZC<pBT*7Z(@6d{tH7Q4*bp zQew9K?Sg>h@v09XSnvP)NZ*?A1i2##az{g>(6r@UXJ=<$p9af=zYk+AZTI6n%>KA* zlqF!chQ3=(GIF92G%<VT002@eoiOFMKfyv-l4_rcLV;L{lG%HH|NbkqMNUBhfN56* z^*@2MB>-v9&FQ&0v+nlqFB{(N0qrxb(A(Raq@bgv1=z~)u3j+)qzxS%9Z+L~-Ew$C z1A{71We*NK6VNoYw3a3MpFVyRK8|9LZ~^AQgrE!r)y91OJW%0q@#000GDgXY|FKG| z^s|DXqc3$Q4AIv885RGMTrB5g10%48VpXX1|AwbZ<eIWV_teG!2S>{I2!{hM79JI~ z-ywaE)`}y*_$7b=VDi*hIPWa=N_njBoc+PGi{@Sd6%9=WjEtOo_mr)krS~j({>q^L z&n}*hnG+5Lxw$)bfNbb!YaiMGIqWUMhdDWzjndT6SO?}|XXn$u4cG1#5U#_3Q1a*% ze*6BNUsBQ=02_$IzYkgf&rhC&1DDP2Eja7o;Qa$IHski`JP`#DuHK>mLnyrfmKqjW zMD|*7b8(H;`0TfFBpa%$e|Z1?W)Ob@8c2FjT9GnFyu-kg5HoEi>uw*^g#jVsr$u`X zf|&Jdym!O-YL`a1`S_y3!&i^EjYqA8>65{9((dYTfnkN9xVShscjpU!VwR`unodsN zExIEjB0$!Av}{7q!Owrh<=GL#?=S8H#rW?kF8A4Tkc5i=fw0;>1XD^oyx>#7cd^ph z#$p*Ml+Db(sr^OauzjjB0DTpgm(@Y!UKP)$`rmoj{|E0;th#DJ^$Oa901r;RK~38T zCO84&{CyGddb2e%>B-)9g`-gZ2Q$IIecc?^3g80)>jDfnKz(*s;Z+m+4Uj+3{5vVY zj;*bz&?^!LZYi)14$YZT3_wWB%!683bF$q5RH?{nf2JB9(4G^)D?L1(Njw2e*REVi zgE8>G2-x5tsJt8n%!8=I{W^S&$A&Tb4+%%2(|ok<kvY<o3UeVqb^+L@ym#;RaU;D~ zvWxpIK{i20*A>-w!hx+&n>-h*C`AChSNOLs4aZUh#4L@NvZ-2NfTJ_NUbuJ>AdfBp zB>>q=Nx)NM3Hm;U0U$KQt)#5XEbbHlKSy7Db*USLLebOH3x|U;I!7h`*IOB2yu-AG z0-ZKuH(6?*09zn9A{r&xv1I?W3`%HxQ$PSzM|OVaMm1RE-<fp(?AcW-UtBT;_jV|s zAw(ZP)zVIq@!11z(uoMQcjg(U16YY~nx39UoUX$B<1(jGlI}5Us;h4St8oMaM;`&_ zQcWs#>+Gq3TOZ$)st|l+9*YZFw0l*n?Aizy`}!e4sQBFZ8tHr6N7(b6z+U(6IXT1v z2`L;NNJxIPR@4oIP5^LjUNIE|)_g|hX@KTD6(kE-|Mdwls@5524ls$v<h_(?-tonn z1|(G3l)sekfm2<?z*%+QtOIHJIVQ%IMnPVFhmUiEoFXR)=w3jjs&na}qa5HQ<_w}> zVhQLY$~-O}9(#NHL2f2snu6~Qa044^W2z2TBn}D&5D{M!hPx>yx&SG#&97kR<>kG7 z+Z@m@*;o>2+7#qv9f+pgRp4un0%KgN;B$0z63AG0clUT1V14eWRd&S+DBxWx)W0fu zVceKqmf*bl#a5Wn5<q{ft*rq?VPk6~G9`d~m#2RQf~6eo?(M-(AK$wd;BQ%woXrGc za!TmVouxbM7-}*U3SJXDVuzcLfq}wJE;jB2Os_M}hqK<EYcnXdBOxWl=91A1-w_n- zD*}ZZAk!PF^^HIN3J#!~(E5ROcPgu}P^0ep)vI6YWc~4{9;YT&R!b@O1BJsyL`06b zCar{5k`bVp0=Da@>8hIak8pJ(-k3%5We{#4vJoYgAgVa;-hEv390uEPlN13dxsp5r zwkriELB-P8ld7=0@s5v=Zx~-GWYv=b3{<oU*biW;AK-Pr46DoN+FD{T7|?vG_QwI9 zI?Jy-QRPv9^BX@;NJdOaIm|sYG~`_~0SKxUjlo~ZEkfJA?1psuMRJr4nl0B9d%2Yq z72}?=qtnn9{dHB+Y;0_|Zpjyw167xi0p4vhlLWmc;c&2>B_$<C*(Ro@B2yg>Wq8mx z;En0<s~E?FMQ_eDs7Wrfp-03VCw-^u3D9Y2cPx|KzgYYLq%|W$spvWt6~Du{I6A5a zcX|xOqX<xr@rjAjX07kL!YP7HSBLVB#$Etx4mcaa;h;-1h&S(8%>pTlJKdjpqY8Qg zi&d;FK@$#BmF_wI1D{kSAK|w@0e52AF>q#P#xl|Qt;JSmvVR{;4{R-<y~Et=BSo3T z#RFJB8Qr1mOyuZcexJ-rsr{I+M=J_-7NkdFBGfcArNzZoGztm|-O|{nXcK4WAGq~f z{QUgD3@>^PsJw<onx2-n2q)(wSH6M1zC!yk(fz@dif8g6v9Yn5suGG=>T2UWAe$|d z{You*ZAw7P44wA##dR@<L>vy~BO)pa_rG2P$iyc#SueoCj1uR2qNISeE$#6&Uep&r z@R=@Nj1CD2=@MhAnpm%$7#bWLu@l|TO9$<PRiO#vsIV&_$Y2{wOFj6}EA;fJx=$i; zPmjj(e!kco?IJi&_}A%HGPz?H(43r{>-aA~ke(*xZo(^G2L|qX6o#cO;r*vwDymC0 znXOqK*xBX!gC6J#VhwcXcEex2dbM6PTUaRgsm*QNxrGE2#ZL<~ypl$FN#M+vmE9{0 zjS<wl-X*1FWvlq}L}b@f@T6hGQ)Zy=Gz_oYc#47hfF=pp<GZ*co82QJDr)NaU5~kj zYJJcw+u3(!|MUov3K}BSve~n{Hj$yB&M-ZYVFC&0_2iSyO{dc=(5)H38@>q&TH><? zWf5mXPDVC>e+;V8DsHQ%2OmFg?1onz(tG|q7H8=R<Qhe=0`V4*Snh6ajV&$s!7PCG zM^g_Yl)mEdQ#D1n%fA2y?8?Of8cIaTG{8-9o&O%9#`Cmp+xtwfm3J&UiH8BV&3X3- zG4HNbplhq7^cH8MeN7QjwI^xw?Ad$Vq@bwi&}xU?*)zytfRJ>C<pBehS=P7w_>Y@k z37m$3A@`7{<y2%hnw*&Uy0qtaf7E*VoyUu?aj-M882y#hGl@4<>xV+A#`33@l<dAg z_Spq3DnlPki86e0at(m=S%9C)D2n;)^eV@2>;2i_tQ?_~JK=X<(L$*8p7Pf0^d<Wr zwM}Wd6#<R94C=!E{<VoUfYhL6h6VrJSjj2Cf$r4VO^!DZcpuQobg$`7W&W3b-1@FF zHE<$7E0p#BlW9S5>goZy8G#h5r%50_U<w4l$mE><NyNN^_MjKG>RIaj>W8iI&G`Ct zHbSUt^Qb+k_Q_wZO;108hsiYb^dN!Pz-r?<<{v+L)LR#yp{A)V0-Weoy%*xe5Jbpx zHVcrmb<7+1lj_<vx1;6EW1sg93oaE(QB0V?80^7E6bfwXqlXWdOp+Dql!4*t*1VVn zrU?F(;A`=~{F7TSQihFeZf*v#G&-t(`jY=R>&q9K?%pmf?OpGI9$96K+w%$V&c61L zl-#w=O-67g*kH!JsIeFnYJPqmIcv3-Fg83{<0AzNs;rbey_|Z?kl8<Sh)dnWFH!#d zy?6pP64?*zrla#!my&C`O6&aJkLXz@&C8yfD;YMH^4c~-M7b8PtgHa7*4N)(P_<t9 z_U+r^;^Ls7An-0<?Lpc`?a$$5x7w}d8wp~LaD-%^ir9pfrsh>Ds`v5n-oSD^_Nipm z0tyn;fiGW50W^Ta^Z{XVI=weIIVt<{SJ2XuRn-IzFs9RwPk5J^%L*!77uToi>cCly z+7=`MJ0G-l%fRdc`0Ze3e{mt9{;7V()U>oTuKe;p)z~gBK0Z9?@&L67775y+TtS{I z*_ld_^z$18QHC#Hg7&xZ5{@i1PRLS{0Tl5gz_G35tWqs0Ne>Xf$^(s&bkquHd9ON& z`(jmm^nHAeLE8kxm`8hC+anbfKTs~UwNG2*a6dplR$F_cay1`3{I996j1^~nxWW$J z1SyYvAJ?OuWn5CG!3j1QZ&=}yjzWP?{SoSx?w50b0T8Iz9Wnq76i&`KLG#D>a=((| zVnf8~E()~{P6<?EP~SL`+%$ZAswN!Do^#`n>#Z`o1Dfk<eqiZcLwN>bcE7)SZkZq` z2g&2(<1M-p<34^&L#>=i1D`#+zq%yrRU5Ksq^x&WX<FK^Q(4WTkzD*vnk*_U%>*=G zKe4OC%lcI=n!Y_M1|Yr%THbC5;0q>60q_r^0>b)qCYbp|X7oc9Xqhv6P7`#uuz{u` z7)mhooOuJ1GaEr9Mei}`1-gh9z-n0;%mK3Z1m}D#2{OmnbLOJ9Hqh5b;Z1$unZwem zLAHXah029^TcDCOjg6U@nVG4mfPU10!3y?9%7&-B7Lx$00bx-EO!h~Q4#C{SnL-Du z<^c4Kdk{1#%!N)fzrfM|_M6+w-#G6#(8Vj;n!7<SXx7S+3>;pL<Z+h{9yQs+Z*?up z7H1H@XnowT%^u{5DH#SDw#a3^9Sk-MPZcpp1peFvG)NUGeF$3o(x*H9$1RwS7yN4@ zMT>n;_#)rE1LG@W$Nd=FlY^}?aNB-0IZTCKsOo;0pBA7z+PX%d7ZDv3BL*TDgr+aZ zbcJ9FKm6(bsm$nQeQ@evGC(qkhld9U=Cvc)9%T%$xjYbA*?+YVw$Wl3YmlAma-7PF zio45W0lKrzk*;#DIeB^4#exf^oTlqRBO-_@H8s_5pRZg#Bog?4MwM=$pGgbz{jtPX zRsfFP3%kH$RJrp`YMq}x@^p4jTV36G%)X4AQBs(Tt7G0Jl3oN=S*Z`qzlnVO_ikA; z;Gg;IuLEPaX71w?z%ao4%xF)~&7*^85x`48c?TWF^6YHT0IOR)u5XZ}Iq6-EVK%c6 zO>lK_0rN3?8&exa4d;$KcR;H}ExFca@Gig-N8X75g7YAMM8NC{7zhAOAb=Qili>Kk zh{j)&EEe6!2@na%2%MLqViTBj38KnObZG|^v6s>T#;W|z&e}Roz!Yeemb|jbyFszS z)_q_w0<_nWetUWdHIF%v<Y9nCTMT5W@9ys654#b7%`J2%C&$MA9vuZ!K)&EpK_K<P z>kSoPS5=tOF+*Nm6%{n7NRJ;s-a-7?n%J@fDzxt8W)bj23zBuFD9a7=0fvDw5(H%* z8mJdSa{2)egw$Txn6BecPY*vh2%vxVEsTtetgNiS$O9r%@-Yep_zKYaUZM%{@!%VC zQ`wb9pbZP?Yorp!wU~jF2`D87UE+UFFX2h$WuJFwQ3~D#ra$yZQT0K-{EOHB00n9V A!T<mO literal 0 HcmV?d00001 diff --git a/bp_doc/seqlogo.png b/bp_doc/seqlogo.png index ed5c236d93c0e0ecf3e3b767826b36a0912b10e6..3d0f95229f2667662403d9e5632c0520fa63e3a1 100644 GIT binary patch literal 36968 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	r1ZRKhu98v-Sy{jTKIGFC~HaE586KP6uMS{fy z&?!t-K#?IEr;&BS<t2Dpa$VAbckHFd+o(|wjKQdzy}pfX+eue1$2Qyf86!-{+^My{ ztv%UK`gdthT_Jq#0-?BL)E@;xkRBMeC=(6wog3#3ZC)JQd`pA9a3%<4vGj!UPu03+ zCw5t|O#vx_quc4r8fHtxH3$$OpgcUPe8VZ!l<}1|T%v*!MbW+VjR=G;&|mxkU&r(_ z4GXccnZ<U~<Uvq<T*)<D^_L4f5Rq&~jwfR$PbK!eq1U322%1~YVxF@h$6<B%4)r(P zr1K<s{nO$D^9n+My6*qm;L$zdWBcR#_qndWi8B}you}Jwzc$u&D%st}n;eeSlkNfo zGLDk5*VUg4lA)d2uP)+my+~Kw2MX~P(4u7Q5hiu9#D2~F1B4J)a~~24t&ActMn-?i zq&Aj3PTUVOHNw|^JtvyP+D>-fe@|w#&-dob)<rALjZFY>`mgVHKmYTr&z(GawD!(> zGNU7>?!GBIKJ0z_Ra4CZ>(b=_(EF`#3_kV)DL5WK@LtuYK7*%{IBlrpb@kCB>bnQk z?LOA~Mg7ATY%89&u9kRz#lo+EGEV(ZQ~zsR#ckN}u|n0whD&y-FYi%bI-|9>)3>(j z{;`&u-0zH#uCIML(zZWza8IVQtL*A)IZ;e@cb&NH%Jf)&yyKY8R%Tzdrte=K^6q*q zcH&@s|NgR%U&ouxN;q`n+KZBXr{g^xNW;!emnyLsLVDx;g<>hPEndJ0l#x_suv4@% zQ_~{zqLs!eCWAOLFqMq_2g|mz<S{b#0|3U=+>dl+01!U7zx&%?&5rhYU;mwR{iV4u z+K$g}b-(nhOkh0S-ckLRpGkC{?)=-kG7}@-w_dR{F1EBR0)Xys+&BE>ze$lm^2p(e zPu|Ljlh!ySxQOQo8hab$Q9AJmjl9QK|24AADB)*A&bQU44`^>6Qg?Xh>Cfx`*@-6u zCK+Rj-z!!$=$t0ge21~V0<jE9g|cJ4=7tjE!j;w)EAvicCoX?ieQT%sn=bA2aq{XX zbzf=XXE>_?0EtyBv5$=Z3e<5Ld4qT!!KNmz@~;Xv2#<tTQq`gCZr65HK<VFze{WW0 zgaNP~0JLPBsbFkq6&;#wMH9zsj3lM8UQU!O%`KLtYYnxv01%)PFDO4P#pR{A(!#s4 zoRCHIY5AW^P}w}Lu`o6H{gGtxF6~r;MG;^lG7%tQ8tB)~L|Dj-Ecxnu$rKwMW3mkK z1O&qni-FhA4j-q@4d<P6g@jUUUd2+!XnZe7L&&n8pZ8FKy&r)ZVW|_?dg0_?%NlH5 z%TmXYp*h#Ldy<Uj```}(zu*7llTQW$fy*zy{Kgw^{8K!l2s{!_sPC$veoFs^T%L*% znfge_2<dI*m;ceP=RttPXjlbR4+aaia=@oqQes(!DJE>rtGqvYR9n6TEnk8;4va>S zBw!45!r5}?I4f8Gj~qZ@A>=%${{=>pT-8)*Dn^j88C%v&HKi*YkGZNZa8+M8YmEh@ zt7BMXsWxO<0>CB<u_+!J-NDt|_rZTY2mEn$uLkPv{1<aanh9BYv{QcOY2>GmA5Ih# z<KuxhUbU~=fb5QmS6;F$TT!y%;-b4@3_pH|@4Zv~*OwV!c>Q56AG!?yrI&q7i$nlp z>&n$RkFZ!$QhU>#YBb6?&Qjn20f0O8_kSyM>J)jS1TDBj|D|Fw#`m*S8!ovD>0H2B zfT>K40ZqfKtkavW;~wl}-+hh(z-Kq3&)spB^?#*!(+O=)7u|tD_=^5#XRThpPPlZP zdg~$b90Gio?qMr(%pOx)gC2W`yW;Oi*UPM>6n^w=zEG@Brr3|3AV2*+Z<*2<o15S& zfRBHS6_u+uAmi=22OgKdc!q6X$z6X|83+OTtoY4`r90cnn+<s5Wx8voKVz(H%N1o? zu1Kot*vN?I$Pu3Bc|p)$cVk0INvYMEUrfJ!iEtd;{h3LcESQhhuY=8(;Jg%VTfV}! ze1!zy9veG$ri;Uv=Xqh#(%OxemN}h8WV%Yc`LOoR8M>VZ{pa=H`_R3O>uS-@AL6e4 z8aX)3mRG{Rf4BIRsj3<X1b}+K_63$o@irUQ>kWhy7rDRT8t&bL^y6P87gUm-AY6L^ zx_9gJttxK5&2Z!p0NB<}mQgd+&#SrdGiofx1R*c|=kPi48~>91%qj9lEnan{?xw<z zO1E4^QYoNRUt6EkiuGmXRkz-m9Uf!=x%Qs`kY<UulxJ@h|DOx00e}NuK)TnIU)-wu zVjVZxJF}i^C_$Br`IS{%EdZF2c?o~Pezj&EZZ1fGVUSDOCK50i00A}t;(@7vCpA(h zE_2iVCES_?Tr&U&NY}_OKCK;9K+ak286okW&J@ZTH?9&|7FeCN01yw3iGq^q>xuPr zI#;gEv9>Z?@p19i6iX;f;Snc*Zi8+{6)6goh^epKNB8c<N80r16c!9hnM=9v0ajr$ z!Fkq!1%NyBfA>$B!>7pWrKs^*@wVcRa}AP#0m}ka0C9kgzyJ^`taM>&Xp9`#m-TpR zKK+^C&Ud`8zFc|3jJH;fD{QE2F~70`R|9|vS(fk@v}yb1b4_@P30siWj>=lNWjP7k zfQ&8t(r)d99haSNYl0k*<wCyYLICZor*N)rjQ55AT=2CA40ZLr-};8Gys~8dhN5A5 zWY{YH!w;m-bda}};;S##T{+`-U41R06a$!+EEg<R05H_lRNQd85(*+gaIBrdNp92s zbw_4b8~H;iYP>}}dzcwl_a!FvlE7{Nz$Pc(@CY&#w|eC&?*gflc;8|Sklw^M{5vvF z9>IpHs;ZCw1xOM$8ZAwe#bGM0`y_9+0Atn_s{lZ7II3>kO5!oh^Ev4s0GwN{(o!j) z)Y#Zu82Db#HGGV}=WXo~KZ6^Ezn^Ux0RW`06&n6U9k^ffJclrF6*qFV_Z6MRW@Noh zci)rp-=3!1R&dv@*G=0W5yzEXeJuvS0QOCn3PuwE=&PzKuKP4eB#<cDR;>kq(n~h0 zejkUidHG76)dm2Z*;0A)U1~4@99OdO5&*C*TW(t{FnJgmRs$6o)ewexU-&yv+CiuS zR9ATBbCsWCnbX9#0|2nm$~QiSOp|%KhPwKyt8PZBiu4BKR1%%*`kMuN31iH0;RXN@ zU9QR-?qG=o;(1H!<k?+*<uy!}8Ku@`D|ll;i6`>~{QQ5=hW|xNK8rZS)qEaT6t^0z z<Z5mZzVxE{-7p*Y82^PrsT~VK#dV)_ZFvLfDuG)FgfXTW>lZeD<2xW70>cblOF+7< z;sZaFK6jdKYr>aaDc%ILfdqcR_toBewTV{%0NY#mhQ|tP^04GlmL0CLZF<oBv;r9& z7yvYyISH%=8EwG8(%fqKx{0NaA=4(H0;3uhxSG%03tAsw6HEmi&Ep%LO4TB6Wv;}C z6<MsD#SY~QxR&#>8gszySKnO7Ey+coVZdf&*{8nY#FY))<Xa0z*pDA4_uRpWB49iz zHzI_1?n4G?BU3Bi@aVZ12rIvtM&1F>kC9*pp&Ss;)PPE2I&o$|AUogc41WxorhW69 z-@NRy%T}*m{n%rVty#0?$}6w@<6i>+fVba%`|7K&e(=Euzw@2%obPkn)DvgO(W`a0 z0)T*c9)!c{9v<|Ybj79I-XA?$#}4I%+x1@&ktl$U0O{7+&uE7}slUfKRVCo@UuY%) zK6VAi7zjGxIiLhM3VI9D&#DSNHa_n2`72!&wKY{mACb{-BkLOMxEcU}Bxqtk5SgiA zggIP#b5Rwla4a@FJYqFl8WzsSvsDe6Ve&Yr0YF^t2xL@3Lizh=_s>SVy8jGmyGHky z6ey2)0dxn{?KWgzEnEfwz?hm$#@kPa_w2B(Ty0#q005L=FmiCevA&`FW19uL1I_d! z#o}z+4q8{8t*Z$U0yQ-?c}Ei?1OeoWZOgLk^LmM@R@c^wvzj(}iKmZrEM}{ffR<IV zRaI4nsepRoei#{=aOn*Ixnf>9A7})CV*6!)if^_5F!cx6%B2B-w8K$qw-?v7P?>T_ z-Br&unnI3PGHSQmOG}Gu@-bkClwIYx$`NzL;xV(?>~hVjHx4j3%nl!;%NAa;qPzeA zAOJ~3K~%-9mZ%^Ys;VZ}Kq$=a{yXi}XFjM{+@+mLvt)y`I37wMjB09XW_#oYNsph5 zw`wbrfiwY9T~)1{vfU024z{(mS#5Tc(QLL@Y*s7gkSK}{hg~<Nm;BTBwG~Uyjn|&V zPS4n6&}=XmJap&~$MH71!(cEv>~@~#1cA5P?FK_Jon<B+P<J+QOT>^Vo{T#j4yW@& zHlI3uhIX7`%NNJYrkE%iD=R0<IB1%7?D+8spRcsE)L_s%>{d|_G3HDrlfzN0l_?7R z_9gPO=gEc@=%4QA3rng)ZZ#IvSjl9wey<lXR$Wsg%<AYiPDTew_cFRR;Y$%ls;a8Q z{1{4svHYsm2$}GBR7EK-FSpnx&666F|5JM80)Ar+Hy;D$5uawMZSwQC>hCs8Ws^%R z`;+Vgw~5m#0Ra3Y^WY}o+6#n9Erm%#EVdn4)*wSQU<)vfDKVDr0xgEir^V%GvOjL% zmRzKpZtwV#^a~8!P5Q|$LQJE-Qva=lm2DAkuy76lh-$%o^0pz=`z77CFh66JGQz^) zFwrzeNr_HhEYrUsKj)`ow}^Kcn3F18mQReM?q}tH|BmT5A5KsnBE17z*9P6?`64aT zGf5m^Qa`e;MPel&9Z;DmQ5HXfj0*}I;>1sPcz*L#)y<z0OG}9&k3aj2ecgtNPh4Mk ztA9%0eUJXZnu5T&UuA!|lwY$(n2rGaPWrEI7C+z0Pv_FSDE+(ymv7O{xYY-Qs>*$R zeT0za<|a{`m2t>e-#<SD0OeO*!wAWayMx=_X!ypr3U$#?C=`pvtY&MlY&=fGMaozX z(NHK94jW9S>YAGTa?iy9=F5L&G8wPeYtR`KS7sP`*9)8Vv;3KoBuz|AaGX%-vJ2V~ zV1O*^bCpc<P!wfiVuAsxaFy!WNgyd?z6fT%HBD8=-EP8|tD?e`uSq~DV=O-(O6j=U zttd*F%Vo7%XN<u(AHF{^F(G9ntJ6AQK5Yc^GNCwW0Ra4de=?c0JDjD~ILn+sh9#gY z4mb&hg7H|~Znb+$Mp86UDE;RV35CMpu-Rs-EJ*Ju;u!I0G#CgN%;w6<%KQOcG=@w( z3P{8y9|yz(P*A+UG@3kygbG~xiJaCdNs`y=MTo0#IYfFAXa<=#!pu_Cs-k$@ZU*40 ztTg2{B0^ZfYbAtu#>O;4%3LmMzSHnbGBU=-$H!$^E^(GRj9!*Gjm+zSFRskt^?Ebu zjLl&iwssqlc`-k$zYkN$$b;B<9q5}7=9n4-H4KQ+$TnPd8!}GPJQ9gSA`zR}7AW;( zSZbAU(QMaQJRT1QgGQsZqLfF{d%%|=<GLalmrOi{I0JHA4Tu9qL74!m()0<WtHRDt z<RaT?@Oh>Nu=5r`8~_8w2TW$^Gk`^0c1w=bGLs(7e(M(T^Ld940DL?B`M(hVrkP(l zdl|eBb}MhnOxmEkk}#D=0uTIa^3%)sb$MDPlI(l`s{O?cTxB()3`7wS10aAAnC*x= zf7VC=di(m*>CA$8^(BrOG7JOOtDQNd?)VtD#l}o}lFG2`7>=Ey?bjRcDYREkhX8$4 zIC}J`qA0iCdaJ=;m^W|Uv(G+z)m2yh@vi~Ee<1`27^%ocDwrifeT+#!vl5LsiMUv^ zAfe=g^j*&brR|ch0#rj*W+{nC5|+}!#F52K<z;#i0RROyf5k+f>rF0Nt0<TUKB;Dh z(w-fOJylk_T{kVYXGTZVaIpX6$&Lg2ORFkfRmBPb($})s9-t{C)&gfjhDKy;h4e{A zC2X5Es7pSt;`dGT_8i~6OVEq;jZJ59r6U0eP9)YLv1an0ejXCeuX3xZg158AuGI$B zh$KTsf^asiOI9mAORK9U<0-U6O!e$>tXpPX+-RtBiDh;}rPI8if~HPk%Y5EyE9B!n zJw1KBr>y2-o(n08rm9+LX=z?^MHn-T2L}gFo;*1?IOy~FG)>b8DRDZ5nW;;oqoe&N z2kD3qo`__Xtg5PZyFD**A^kj%2AS#w)dwU4*Z`oh<Uxc)WS+sQg2CX46DL%;&uVfj ziX_XL(P%W!OlgfoBJC&J)qWHoOC~c(P18hCoIZyD03eY_oN7Cj?InrPbRw0|G>zx^ zB8fAdPIq*4_`GKv)=^61ib4P&F992kNZ?@mZfY?@dD-OqJk>#Wzenq8QEsK>KnUsS z?(ud6l~EQ6M^sHEggBkfLIr?Q+TY*rX`j$WP$U>pG)2=ihr^L4V@XNLqD6}qE_BsZ zU;|EMlYXM9s+=^L^nz~k{HUu&?;fPFIIF9k%p6N3*=ujnOctuECg)=^nVOrMo0{tD zs(8CTn@xK)C9SHmC{Vp|hVwlf4!57^AOl>~9ZzS|s;cVs`XVxZ5Tw)T_V)HjxXW%G zWi%<vD#vjpC6lH1Fvc}b=R&iw+G=%hSWTvh-k@n3W6WZ)6m^T^IJjULzWXn^D>rkZ zSiFZ2#)PrH-rlyhwxOY+U?89oLIFyg&ceto#@Nu%&`{e59pQt%kV@1dQs*i)j*X3- zIB}xCzkhsuTqT4MVzFBDDr>;c;j!geCZ`oOlZ8|kBH47w=;czvn6LHDBVmHLyU5A; zTuZJX;~{1DAU%DBcvC*!3~@Rw16oQ<oat7AUdi1jSS;97hA@xBn!Mr7gsh$9ScnF* zEEA%>)7tS6o!F%NxE0%{emgQCQyMY`Y)Y_LmZdeMB~fZAzt+VU=Nd|KcGvE`UEO`v zH5EmB2LLR{5o1w3vSd(F;ZhW9AsVX1%?oE{Reo?daOpz6_3Q>YY|v7m#Buz@Q7sXX zJOg4`1=3l7v*dcMsEN4$tvAM>`Gxb+%gv2V*kIsvB5$+%U;lk(cvxRmmG45BWXTiS zzD90oPWEk64|S5mm+NjQtcA}2A5`C|$Bnr-lWy(Q5pCyX!gV%0%K^v~U=lC|00D4- zNKs`K#$b3v*}kK_^GwiSth3ql*(~sUz5zOn{_;t|VyXViJ2<_bw^)qx<{RfP@V)Y) zZRM(b<VGYC357$^STx?Bl82br=QWv3Mg2PC$z(VjP9ze&y}kYY{T`3UU@(|17F1wD z%49M=pD&(>hXx~Li1WI=yucT2RausOK3_7K7#bey8%3jD0U@1Zrs+ggRj=2ZOeRK0 z-F?IA$b?QKTuF(ea2slr`T~JuGU@hsdV6{X2M1+YE^#_>Ava^p9|$Cp$?@^=-rnB9 z!NF82RZ?2Y^L%0QuFvO-#bW_~AlpyU!*VnhvD@uM2S+d%jKyNXfWNmtI5=($MZspX zisB5dH4={GD4FcfD8tO>^O`MY!_59}@kAmViNvDOo}Qk8fr0Vyaihs(GMfwMlgea* zp-?Oy@9XR9@9!TQ8xwOJuV4%_EJs*GK!7O#6nGobIT3F`h9)!>zmX^P$f&z-gp5q+ z7~@MyW~?!d5U<~#N~hgpW4*n-LqkKVsyb$pkum1=`BJIWxW|(tV<wYvIGwY}m`EhN zUT@!Eba31hPa%iHUK9=P_xt1Vc)%aX4rs}tY$zPG+wHo7UWb4<YFL3;7JvcG0@fj& z0|_OFw<6P$yZ{!BM#JH7BpQkLrKBO^otQA1jYTUqnM?+Q!B{NPH{cm?iylAL>kY+x z#<&cCM@R#z01)79lh4vOA>KAc>J~s|1PU+}Km*>2bWRX#NIyT{h>1shj7HnFL-V<o z+{Qnq?sL<DONCG5bzqe#8YmiQ1PG6K3RGfQ0vZ7gq3IsR^<+MHBV&i&BI%?Y^hNxA zD_mF93DfCeSf@BP9v;q&vs4M90x%SolKW#v2eg4kN0orjLj$0Sk{KS7gMs$_?~R`6 ztZ!|#SY{ZD5g;?Nn32WF)nVR31t%|5a-6k_Ur<!u>ZA7n?A*CC8jap^%Pjy9kH>%b z!yn#v-+e{%I~R8E-hKJymwy-!0L{|S%gDG8_;RWeN>!dGz+@UfgiCKiVsX;s``};y zL%VntUc4Al0E8Kb5Kst5prQ)pZG15rc}4!!Wx8wiVBnbm7)_ATaXNH~?pjlU!GlUt z^u+N@+i~Z{OC!gRSXQsI&1x?XT7*f%Odf+=<8cOncw|~pIA=ykvZpJ$bGviH#i{;Y zzN)5l<0WTlW%*x5GR0p0gIZtBl{k=~1EU@QkR;PoT3fM9oZ<<DC0^8MImM;GxXD^W zJjbQ?^5vfet_%PeW81fHfBWsXFS_WWrluy0adma|Y>Vvv{rg{e<&~8yS1wz&3?Woe zQ8ByM#L1H<pMU=OrlzLVt5;);%gV~~*55od0;&{4Bnp@Zl0}SAB*x-NlhtLlPa14S zM@OG|<{6{Wc*!M~<OKS8^X3)Z$M5$)^UO1fqHNi+#b`8|Or`}378D7Qu~_WcXP*rO z0$a9hvD@u>y?()h1x4&KlgT{y+;fA2gPS*RE-x<^1Y!RC`TAKt4FKpLWM_KhNR;s$ z5DKm`Xqb=Z&l7W}7^U>hH{aa5cke|PUDVjvh!Co+t+m;TgIss--u>pAZ?0OkYRQr% z2%)N~s@aBimORF?BgnEG=_)5J4>U;=hmn2>GEN6~rPFY%O&uB4Fb2ke=b@z$&8z2~ zB~wltX_&<iAoFr0)&k}LGys()j{!Cz%cZ$7Ua$A*r=MnwZQi^&r(Z2tP#h=lL6A<T zpMCb(v9YnsFTcFBv{a|l&7VJCoMns$fUL(Ic;_v#yn+`5H5PS!;(C0xq?Gr^_U+r> zdFP$AYuC26wjzY8tE=;BMji(a9C+oGSC%bXwqnJK+=?wPFE1L?-roM~v(Gj(G^|^< z4r5$eT3R(r^FP^^?(dTqH(PiCj3&f$lu{IpWvo_KKYv=NQkl|2PLGgY9s~lK71<Z_ ztMZ|@z!*`rL~n2W#1Y<NwJ%w!rPIltE}_(ATXUh_Vl4E<MQK=KSqcOL20(=Yjd`S4 zf&mjihXE7N7_b>-^)xtgf>H`4c7~D67!`DeXbc@WL2tj6D{RD;WoZ>u0dyR26sQV{ z1r;ya|2h~Ynxw?q+EQH|=7o*Mx;n}4PYn;68d`13mhqy1IF71nu8ON*ckokZ5XofJ zWP+sAdRIlhFfIk!t+fx4ZVq?`)P$_9{0bK?esO(T=OF3MwI|afV>7obU(p-@fFu*~ zH?Y1|udBsi2A~uaNf|>*&}6$DkO=@J3I4E+RJhQhW@NJ>LLe4r1H)`!h<)-ClZ}4E z``?QnKdN(8SQam}En5x%N+=jPd?-6QqI0>*uehqPdpZCN4i2W%=}acGXU`r@)9$_Z z-kdj*F_vdvqobpVL_(6Jef#!BqtScrxu>qKu4s(M<B3Efnx-8-e0XeZ?9MyyY-uT0 z+k8G>Fc>6+oIH85ySw|g+iqLAa%It&P$=Z}dKqJ#ot-C6oVfn_>o;vGE~OBQ#XKGl zW30cw|KP!cn>TO1`s%BTm~ASR8XX;_l)BySy?ghrS+nNG8*eOPw%KfUWMo9sG{4`! zYuB#k=H^d*>QhC`R#nxZp&?n8<MH^89Xl#2D(<-Bj+{)A|M`^Cp`oE{Hk(SNcJ10_ zFc`LO-I{a!7LsUqcsQ9%DvGju_ij~H@4WNQ>gr<Y!tHiPqftW0zJ2?`;qdLZ-`?2R zIQ5ItBctQ0svv}bsd`aowpazxY_nSQV)20<3<kYkF95W+x1T<J`ugjyzv!ZiipE5v zQIE$10Nvf)M~@!8;)*M-xS}|DBbiK&jg3)CM@B~W?c2A0{rc;!yROKAoXKQHM@KbH z^Lo9zckf=ZWXY|!-a13X2T&Accz9S*lt?79bLY;Qnwr~hzdi59neh4pfd~L)jB<#Y z%qG3TWH8!o7LntM&HO_{L#b3slBC_ccLTuIty^aw>!YKi@pxR*wD;b7FBXe!-MV%D z{7E}~GL;@4@lc`xFh(_lK{T5!g3fHWTSVPdm!YgQI6S5*Dnbkx5p}%TViQD@&1x~| zr<M?dteQEawvEz$1c(8%a*j3njfGu(WTI_P?kE$T3;8A^HUOeBli!tgwBQx3hDHEj zgs71~^ynTENSGHk3l)`snBwzh+#^C&iFL&$oz0QcxQ?m&0@S^NU(W%@0nZRSuD<8O zRV#%}=sb(HsL@DZ=XOrYni`wq-DgU#x<+4F%&c<JkrBTyC1uLXEA*zb6gK_n6@YEq zwke8o{q@%aKsud%;)y3d{pn9v%&dzSi^X1k`Q=n9Rk-1GI$e8v`x8$*@%68N{d?d0 z-g!TmF(n+5VzE#n%7B(RN(_!N!R9#MDmZG!Gd_V-YQY?*7a2yXrU8@vuG$*WFnt`7 zL{f={{gF_bsih`|!%-rXI1yjaJUo>Q@86dh8Z23V5pTC^@p$;Xz2??MB^PesXQ@Mq zBBxR*gTY`h7>dFZnWjaL9*(!SSr#uf)YdUY4!yfaS5{uK;o{kSg#v*<M@NUzXk4>q zO_43+gMa}f<FUxd2+3ra&OjNDnJgIf=86iZb5dz0gq`V1>2xVk2fzq06=9A7pUH5o zE#(|HJ^6Gx-Pze03WYGn7K_DTFz`ITXwjm=iAj=l=FAzt-;WS7o6Sa}5o6ra(o$%E zQ52=8r^n;*AcPDCgT-RO7&kOD<h9CJEH*SWEJ-p#2q9p=Fy<;;71h;Me8C$bgbWW4 z4-O7$nwGOhV~lHRY6?SlD5Ya#V|{&nnx^S=y4;wGii(<=X}y^-HZd{L)6*kKQf^Gn z{9h#I`u+ay?(TFt&GWp?W)lR#VzD$$MZPk|!r^c@9F!!PF$91R0**r^C6219>cTaU zN~JnGJHz2H#@K4L>h*e26q}oy3(1(xX3v~C69@$IWE2FUv9WPFO3L$N#FwCwtC8RU zrZL$IKv?1^h%RiOj2y^hGJ$|EnM@MGa$Zz~z+}=_RaG0O0!C^0HI_buU0ab*0!YVI zU1wMm%Nh<vh!_P95&}dih87}1C=x`Gl1L!5K<FycL8L{bc*M}8MLI|oq)3%2U?@rr z9Ymz4phiTR3Wyw~h<7|c?tSjR-JRXpo!ObMyffeTI`b;tCEhBC^xH0VKwm|hFmqY& z9P50MR=^0@t=%hH-~Jm+;w%z@kF#<T4GkZ0m9NszIKFh~S@S(*yU&%=>`nvK#yEs; z72|o!b(`@=&Nk;l_kz&rwsnrZHuH_-a*M#gKt+Te)CL1@zf?25Dk>^^s4>Ay?ajo* z{8k9HSPcQgk%eB@Ioo_)TMKNRqu1r~^!UxT1#f=SP)sFgZ_%oc(57X%D%O!4BfPZa zV9I!v1;q#@P$--2=BY}WAPW@T65vKsj9dhb2zhte4SU<}Z<sSt71!FW-Et&82t-9n zO56t;eU!RT<yn#OhOTfge%>tx8YaFwKL5JW$~WFFX-;i`AwbN~r&S^al|%_P;(Vq@ zOa7poxq|TRuujC8knc+!9UUoBh8d^wlSl9<IgJ-*b3a#AUtX5YsnHGTdTH(c@@z=q z)bscDwUId<Jw_$uSiLT1?1<%qO;d_$mH~)b*klOm>*#CpF9yH$Y=R$Cu%MU_Zur}* zbWOsq3KL{=jOgZxmwc|(SLw0yLY%z+`8n}%-fsN^{9~<2iW1x{meYb_T<*1<bcUHy zp7zkgvNGUCe?Az$yT9mlL7ECf^~R-F-QCM7E9GH)Tibun&(A}WQulEQcC`+jd)u3b z*5HYK(Rc1ZCCV+(IU|yhfN@n+M1%)NLZ=V<jb7KtGcIK-0Bn>D2E+X-3<i^pOA#oN zD-jeFJbChDl%1|w+WvkhF$G05C?VtAJ^@I8$0#x~X@7s8Bz<DYUou%da>lC(00n|s zNjtl{0<n=56+mfDs5HE41M{%ZdW6Md>7#U@MATn#g$URkz_SV_j813wmmA#dY&!bJ z^+KEv%FD}vIpj;9Ufl|5XDHQUsK{yHx?jG0S)XYto0i%@b?!lo<(#eoYR#99B8EQ8 zCug@ZrdN+4kt$gvpcF?onb$SWs;ie(cuJ=dODED^0Q+xhYD$MZRG&Lv{mKh?GFT?a zY-VR`%QH~sVGHV3%Sm^^Ws%4RRA&q<*oD5ewN*lv!<(fHpd@;{)S8=`;K_at4&pNL zi%@SB5%8qFf|W#UA;4)w@KA|Jf029BtB-1GE;oB$3}qXZ22$aVSYX8+=8Euc&LL-$ zq@{>mh_QUF+pMmrDCc3<21a`RF4eK?jEai8TF$Aq^{zI_2eNU~t0igd5FJ@QDEI@= z@LHg>cXoC(V`rVdlF+&|MF+al5kEpi-7rOMnav4voU&uw_c?^<^HHxgSvO|TKw}8u zlR52>JzIyur}iaTM+XUr!$>Y^kOAzgh%fhyFBF(cbMKMSth>?tpDJ<{+9#!l<Ie9F zCAA5#ZmoGPr%~snpwukZgYW0_1A5VYE2<M4LKWF7%NgvU&F^Yr9Lopn8-2qZ0+0S^ z+3pvl0Z33jbzl~->4FVtCC6{?Z2-pEO82t?fq^xbpPdVB3K<7x{x*yE_7g9g4c4zv z2l`+=a$Nw=3^%T|<{!J71v7VsJjWU0B3POscAot2@sNus<Z$tXi;GlYCrsr~KSZAs zuu6DhDwu^aLYzehMemX_9(!eYWWV?Il~#sxsvbAI5#Z7{_m7|uVr9`Ofg=)ZDcwjg z--$CYcS=>?RDCk{75L(SkQbOsT}F6pmW7XrXTjLZ8Lw*>BLg%XNZ)oH`x5=QB1!_x z%<j51zxnkc{*<Mq<sY{Y&vRb-P@joe^s!+=&t`!Djm=#I5}rLc(0xZgMT7@S>C{L* zox>m9NXjTjL)N8?y%fbGWe+q*Ux6{~;lpf-;+$CFvPasBl2qBFJX{fs`9=HQhlS&1 z@7B0!RN)Xd@x`j*w5iF-ES}f41N9i<3;J}K2XM55rXK1+Qcw$yViy&r8SE1j%2tqO z7U|*R$KR{INq+o*IeXs%?b7__-GvrVfMcB)3qd%6ERliI3$MgVRQevqW3B{qvWNMq zW1w9?oQ~p|K-EAw)e|afYVxH|5V0PJB&f>anEYWr3WxaU&~7$}kkmXry?i~mn^#Bn zbhk&mZ8iST3$_u6cn9G;^fAIg_h}o2|0rHqOl-^<>*C_l@MS>^Nv}f+KeD`f?b^wY zuRRlBGOeva@x5T9ghL~n4k|S^Uqg<YBcs=lv?&C)?F1`fYqx*z#>U3lc{8MbOO8g( z#w`Sgg51=LFG{HLYBGv>lieKV@)=5&6pHE@cJzIHuDx@u-DYa?1E|FF;?Jk1ENyIp zEvqvf<k-|DQ_pwQ2yHDWSY;4HoR5ye?Qi~Ezmhue*mWeE`lZGK9q_(`En$AD=JMqy z&-~YStTCg|FcRE9;Cp~Z?Hf~~-v{2Zija@}fUcoFWNSr|8%iuy{yP4-zxHVh;kriH zd}f8gr5bo*mMwf)zVbPV_~TCiEwGKxZN!=kH%ThfI1QJy^XYv><L<FVJ+6Vy*358B z!;dilHfAZit*os0?=u_r_ds)%-A2>W(@$P(`EE~H`>^p7puK>d1F$y7lZr_b*0!$o z#bgSB#t&EO^J9OpoYeoI+ye0P#rF!Ahz}G9u{rVKot1QLJjPA9jV8cQ{wua;WwO$3 z^<?NXt)o1`ush%y_2js(`sW|Jz}ho18ewF(qtpFc=a79AE32{4Wt?*Za8H#WWo2dR z_qe2nzRk=aB#PVG{%-n#;igdfm`wj{me*~cBWW+j$H%?Y?8s!YQe_F@I1pv!7K5%0 z?Y#5H#KaPN9RcNcOUn)>mI{Hq-`oa^Gy~4)VH0^BFu*z4L)xE$Li?LC@c7{NOWJ&B zdHFFslO!#0mmuM`##U?ls3Bqrj5K5R8w~q~xlcHtW|U{{rKgXKnhb^UVX@dkSp$GL zGe%D_XO@=SrBeY$&~Pk07|dd4tVf+SSPdO*43tdPH@@jiKNxOGCS!9l|0PuhFfwow z3fogJsE7as7%mRjorMlKE|}>Naz@m0-q&NIbsp>?;(M`Yj^HOAJ7aC01VSZVc};n# znLHI@BF3%N@F1PIv@#4rIF_i?rNMuFr|?*%?CYOTxSj0H?S@$FI!Xi-@gSE!wqn$i zgWl+MXArBSZ)M9AhS8F;V`OgbzVz*X;t=N01YufaC_5F=v8#o6jZ%RtnBduguL_dH zgaDzq5*HdDW%B28!ti=QNqO(fnI2)7Em~^3%~mtvK<Dgp8ovE69@km#4r|OQp^Jjs zU-`t^+1G)08Pxvv%vzfONQXbu&8xLHw-(y$zE(1^+#Sukm|@5YV9s<!9kR0<JLMDb zEhi1`3N^Ykr4qRjz3OEGb)owqt=isG$Izb#?ziR|{uuaGlx7yEp1_}?C7Shcp&Fut zU%f*%fOaB;@-^sYM%|iYP;KPttS7qq-Z^Yez1(Xc=%2MvVD<Ky%=m1-&BZAsQBiU{ z_N5-=+N{?C{>rzZ0|NK=>mM%UpW90N!2NfOaXvNkF177x;yT;P_0}X_OR;}Gn>&hh zSh&GadnS!J1r>2PZ~r@tU+Rr#<s^b!A74Fk+n*<&ca*U)Muh=63JL!q+>JO93F%-I zBQsIQ4?yS}j50krck`&?;Qid;bUtjamfPFtI+Bh7>?U^Zm`3ZIg_ZnvTU$|2o9_en zmseQbC?4fOs1#zJdNA1cTrmOKt`)0dqzlbkC>1=yLHjW$C>BX)STPav!TYzz3iG;= z`#$0_ze3mZwl19B+TEC$?Nl-BkU#o`rj&iKgnK82LpQ|gfKNk3a!g&*CCup)w{Rb} zARQ`)`38x!)WDn;qOm0=O)Ea}na#9T$N`6-pr7TX_jgvTo_RLB0+{05)YLzKZG5Zf zRu6Jih^{2fV|4@UTwp6B>S<fJ=oe^-#*ovO1_y=NvyJ`OYZ_wvUv(^xdDmrjBR?rd zC-SA~T##{r4a%Ep<V_wOaBNr#db{Sf70~aRCqP|PjK=NRgpZdkLQ79g3SUdZI*4?| zc%X;AXWOsF59)-Xel7_@AVHt9+_<>7;0pFL09NYY;LRPHI34}l*c2TlaMmBbfgM}^ z4wc{{3B(c;A2FkTM;wm$w`Sq6I_t+Ky(zt>x~e*I^EeVtzql{&VTiWo&EbE)4!8G? ztHjFzQ`Jl}Qt5R%NQmuqrD(^?Oh!?Rzv|-a+qCvkJP^qB8#e%|aadHX&4f9L+&`mz zUQ|jKW{s=<sNF$RHEnk$UD#4>30{0N;D3Y)+I<cwse&jtF66(QoUE&PK*ViB+^>0E ze%t2a8PFxTVb&NMEHlwq&%HJyM}|fVJ5jJ*eh-UH^m)I}dF$qH3!aWYU56XK@^5Y6 z@OM;Z!|v#RPydwMCS;mJ{{Jqm6T@<lKkxtF<$V5qt&&8n=g+R2!5|3>goroRtJZM{ F{}1?=X!!sD literal 40470 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%0ALcQN&-5=qQfoV_tyufmqH5=41HMJDjAdJtt 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 HK}Gxz&ow=1 diff --git a/bp_usage/read_fasta.wiki b/bp_usage/read_fasta.wiki new file mode 100644 index 0000000..98a3742 --- /dev/null +++ b/bp_usage/read_fasta.wiki @@ -0,0 +1,82 @@ +=Biopiece: read_fasta= + +==Synopsis== + +Read FASTA entries from one or more files. + +==Description== + +*read_fasta* read in sequence entries from FASTA files. Each sequence entry consists of a sequence name prefixed by a '>' followed by the sequence name on a line of +its own, followed by one or my lines of sequence until the next entry or the end of the file. The resulting biopiece record consists of the following record type: + +{{{ +SEQ_NAME: test +SEQ_LEN: 10 +SEQ: ATCGATCGAC +--- +}}} + +For more about the FASTA format: + +http://en.wikipedia.org/wiki/Fasta_format + +==Usage== + +{{{ +read_fasta [options] -i <FASTA file(s)> +}}} + +==Options== + +{{{ +[-i <file(s)> | --data_in=<file(s)>] - Comma separated list of files or glob expression to read. +[-n <int> | --num=<int>] - Limit number of records to read. +[-I <file> | --stream_in=<file>] - Read input stream from file - Default=STDIN +[-O <file> | --stream_out=<file>] - Write output stream to file - Default=STDOUT +}}} + +==Examples= + +To read all FASTA entries from a file: + +{{{ +read_fasta -i test.fna +}}} + +To read in only 10 records from a FASTA file: + +{{{ +read_fasta -n 10 -i test.fna +}}} + +To read all FASTA entries from multiple files: + +{{{ +read_fasta -i test1.fna,test2.fna +}}} + +To read FASTS entries from multiple files using a glob expression: + +{{{ +read_fasta -i '*.fna' +}}} + + +==Author== + +Martin Asser Hansen - Copyright (C) - All rights reserved. +mail@maasha.dk +August 2007 + +==License== + +GNU General Public License version 2 + +http://www.gnu.org/copyleft/gpl.html + +==Help== + +*read_fasta* is part of the Biopieces framework. + +http://code.google.com/p/biopieces/ + diff --git a/code_perl/Maasha/Biopieces.pm b/code_perl/Maasha/Biopieces.pm index 3841595..e3b765c 100644 --- a/code_perl/Maasha/Biopieces.pm +++ b/code_perl/Maasha/Biopieces.pm @@ -23,7 +23,7 @@ package Maasha::Biopieces; # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DESCRIPTION <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -# Routines for manipulation, parsing and emitting of human/machine readable biotool records. +# Routines for manipulation, parsing and emitting of human/machine readable biopieces records. # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @@ -5656,12 +5656,12 @@ sub read_stream if ( not -t STDIN ) { $fh = &Maasha::Common::read_stdin(); } elsif ( not $path ) { -# &Maasha::Common::error( qq(no data stream) ); + &Maasha::Common::error( qq(no data stream) ); } else { $fh = &Maasha::Common::read_open( $path ); } -# $fh->autoflush(1) if $fh; +# $fh->autoflush(1) if $fh; # Disable file buffer for debugging. return $fh; } -- 2.39.5