pax_global_header00006660000000000000000000000064122623457370014525gustar00rootroot0000000000000052 comment=105a189a102d66d246bd618f07af2b861916272c fastx_toolkit-0.0.14/000077500000000000000000000000001226234573700145015ustar00rootroot00000000000000fastx_toolkit-0.0.14/.gitignore000066400000000000000000000017371226234573700165010ustar00rootroot00000000000000syntax: glob ## vim temporary files .*.swp ## GNU auto-tools generated files config.h config.h.in config.log config.status config/ltmain.sh config/compile INSTALL ## Distribution tarballs fastx*.tar.bz2 ## Intermediate files *.o *.a *.Po Makefile Makefile.in libtool *.m4 autom4te.cache/* configure stamp-h1 ## The compiled binaries src/fastx_collapser/fastx_collapser src/fastx_reverse_complement/fastx_reverse_complement src/fastx_trimmer/fastx_trimmer src/fastq_quality_filter/fastq_quality_filter src/fastq_to_fasta/fastq_to_fasta src/fasta_nucleotide_changer/fasta_nucleotide_changer src/fastx_quality_stats/fastx_quality_stats src/fasta_formatter/fasta_formatter src/fastx_uncollapser/fastx_uncollapser src/fastx_renamer/fastx_renamer src/fastq_quality_trimmer/fastq_quality_trimmer src/fastx_artifacts_filter/fastx_artifacts_filter src/fastx_clipper/fastx_clipper src/fastq_quality_converter/fastq_quality_converter src/seqalign_test/seqalign_test src/fastq_masker/fastq_masker fastx_toolkit-0.0.14/.hgignore000066400000000000000000000017071226234573700163110ustar00rootroot00000000000000syntax: glob ## vim temporary files .*.swp ## GNU auto-tools generated files config.h config.h.in config.log config.status config/ltmain.sh ## Distribution tarballs fastx*.tar.bz2 ## Intermediate files *.o *.a *.Po Makefile Makefile.in libtool *.m4 autom4te.cache/* configure stamp-h1 ## The compiled binaries src/fastx_collapser/fastx_collapser src/fastx_reverse_complement/fastx_reverse_complement src/fastx_trimmer/fastx_trimmer src/fastq_quality_filter/fastq_quality_filter src/fastq_to_fasta/fastq_to_fasta src/fasta_nucleotide_changer/fasta_nucleotide_changer src/fastx_quality_stats/fastx_quality_stats src/fasta_formatter/fasta_formatter src/fastx_uncollapser/fastx_uncollapser src/fastx_renamer/fastx_renamer src/fastq_quality_trimmer/fastq_quality_trimmer src/fastx_artifacts_filter/fastx_artifacts_filter src/fastx_clipper/fastx_clipper src/fastq_quality_converter/fastq_quality_converter src/seqalign_test/seqalign_test src/fastq_masker/fastq_masker fastx_toolkit-0.0.14/AUTHORS000066400000000000000000000001711226234573700155500ustar00rootroot00000000000000Authors of FASTX toolkit. See also the files THANKS and ChangeLog. Assaf Gordon designed and implemented FASTX toolkit. fastx_toolkit-0.0.14/COPYING000066400000000000000000001033301226234573700155340ustar00rootroot00000000000000 GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . fastx_toolkit-0.0.14/ChangeLog000066400000000000000000000000001226234573700162410ustar00rootroot00000000000000fastx_toolkit-0.0.14/GALAXY-LICENSE.txt000066400000000000000000000024771226234573700173210ustar00rootroot00000000000000=============== Galaxy License For more information: Galaxy main web: http://g2.bx.psu.edu/ Galaxy license: http://g2.trac.bx.psu.edu/wiki/LICENSE All files under the ./galaxy sub-directory are distributed under the Galaxy license. =============== Copyright (c) 2005 Pennsylvania State University Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. fastx_toolkit-0.0.14/LICENSE000066400000000000000000000005521226234573700155100ustar00rootroot00000000000000FASTX-Toolkit LICENSE ===================== FASTX-Toolkit is distributed under the Affero GPL (AGPL) version 3 or later. See the COPYING file, or . EXCEPT Files under the 'galaxy' sub-direcory are distributed under the same license as Galaxy itself (which is a more permissive, MIT style license). See the GALAXY-LICENSE file. fastx_toolkit-0.0.14/Makefile.am000066400000000000000000000012311226234573700165320ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EXTRA_DIST = reconf configure README install_galaxy_files.sh SUBDIRS = m4 src doc galaxy scripts build_scripts ACLOCAL_AMFLAGS = -I m4 AUTOMAKE_OPTIONS = dist-bzip2 no-dist-gzip fastx_toolkit-0.0.14/NEWS000066400000000000000000000015471226234573700152070ustar00rootroot00000000000000FASTX toolkit -- History of visible changes. Copyright (C) 2008-2013, Assaf Gordon See the end for copying conditions. Please send FASTX toolkit bug reports to assafgordon@gmail.com. Version 0.0.6 * First public release ------------------------------------------------------- Copying information: Copyright (C) 2008-2013, Assaf Gordon Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the copyright notice and this permission notice are preserved, thus giving the recipient permission to redistribute in turn. Permission is granted to distribute modified versions of this document, or of portions of it, under the above conditions, provided also that they carry prominent notices stating who last changed them. fastx_toolkit-0.0.14/README000066400000000000000000000216321226234573700153650ustar00rootroot00000000000000FASTX-Toolkit ============= Short Summary =============== The FASTX-Toolkit is a collection of command line tools for Short-Reads FASTA/FASTQ files preprocessing. More Details ============== Next-Generation sequencing machines usually produce FASTA or FASTQ files, containing multiple short-reads sequences (possibly with quality information). The main processing of such FASTA/FASTQ files is mapping (aka aligning) the sequences to reference genomes or other databases using specialized programs. Example of such mapping programs are: Blat (http://www.kentinformatics.com/index.asp), SHRiMP (http://compbio.cs.toronto.edu/shrimp), LastZ (http://www.bx.psu.edu/miller_lab), MAQ (http://maq.sourceforge.net/) And many many others. However, It is sometimes more productive to preprocess the FASTA/FASTQ files before mapping the sequences to the genome - manipulating the sequences to produce better mapping results. The FASTX-Toolkit tools perform some of these preprocessing tasks. Available Tools =============== FASTQ-to-FASTA - Converts a FASTQ file to a FASTA file.. FASTQ-Statistics - scans a FASTQ file, and produces some statistics about the quality and the sequences in the file. FASTQ-Quality-BoxPlot, and FASTQ-Nucleotides-Distribution - Generates charts based on the statistics generated by FASTQ-Statistics. These charts can be used to quickly see the quality of the sequenced library. FASTQ-Quality-Converter - Converts from ASCII to numeric quality scores. FASTQ-Quality-Filter - removes low-quality sequences from FASTQ files. FASTX-Artifacts-Filter - removes some sequencing artifacts from FASTA/Q files. FASTX-Barcode-Splitter - A common practice is to sequence multiple biological samples in the same library (marking each sample using a dedicated barcode). The resulting FASTA/Q file contains intermixed sequences from those samples. This tool separates FASTA/Q files into several individual files, based on the barcodes. FASTX-Clipper - Adapters (aka Linkers) are added to the library (before sequencing), and should be removed from the resulting FASTA/Q file. This tool removes (clips) adapters. FASTA-Clipping-Histogram - After clipping a FASTA file, this tool generates a chart showing the length of the clipped sequences. FASTX-Reverse-Complement - Produces a reverse-complement of FASTA/Q file. If a FASTQ file is given, the quality scores are also reversed. FASTX-Trimmer - Extract sub-seqeunces from FASTA/Q file. Two examples are: Removing barcodes from the 5'-end of all sequences in a FASTQ file; Cutting 7 nucleotides from the 3'-end of all sequences in a FASTA file. Galaxy ====== Galaxy (http://g2.bx.psu.edu) is web-based framework for computational biology. While the programs in the FASTX-Toolkit are command-line based, the package include the necessary files to integrate the tools into a Galaxy server, Allowing users to execute this tools from their web-browser. If you run your own local mirror of a Galaxy server, you can integrate the FASTX-Toolkit into your Galaxy server. Software Requirements ===================== 1. GCC is required to compile most tools. 2. FASTA-Clipping-Histogram tool requires Perl, the "PerlIO::gzip", "GD::Graph::bars" modules. Installing the perl modules can be accomplised by running: $ sudo cpan 'PerlIO::gzip' $ sudo cpan 'GD::Graph::bars' 3. FASTX-Barcode-Splitter requires the GNU Sed program. 4. FASTQ-Quality-Boxplot and FASTQ-Nucleotides-Distribution requires the 'gnuplot' program. Installation ============ To compile to tools, run: $ ./configure $ make To install the tools, run (as root): $ sudo make install This will install the tools into /usr/local/bin. To install the tools to a different location, change the 'configure' step to: $ ./configure --prefix=/DESTINATION/DIRECTORY Command Line Usage ================== Most tools support "-h" argument to show a short help screen. Better documentation is not available at this moment. Some more details and examples are available in the section of the XML tool files (in the 'galaxy' subdirectory). Galaxy Installation =================== Galaxy Installation should be done manually, and requires technical understading of the Galaxy framework. 1. build and install the command line tools (as described above). 2. Make backup of your galaxy installation (better safe than sorry). 3. Run the 'install_galaxy_files.sh' script, and specify the galaxy root directory. This script copies the files from the 'galaxy' sub-directory into your galaxy mirror directory. 4. Manually add the content of ./galaxy/fastx_toolkit_conf.xml file, into your Galaxy's tool_conf.xml 5. Edit [YOUR-GALAXY]/tool-data/fastx_clipper_sequences.txt file, And add your custom adapters/linkers. 6. Modify the "fastx_barcode_splitter_galaxy_wrapper.sh" as explained Below (see section "Special configuration for Barcode-Splitter"). 7. Restart Galaxy. Always make backup of your galaxy server files before trying to install the FASTX-Toolkit. Galaxy Testing ============== The following tools support Galaxy's functional testing: (Run from Galaxy's main directory) $ sh run_functional_tests.sh -id cshl_fastq_qual_conv $ sh run_functional_tests.sh -id cshl_fastq_to_fasta $ sh run_functional_tests.sh -id cshl_fastq_qual_stat $ sh run_functional_tests.sh -id cshl_fastx_trimmer $ sh run_functional_tests.sh -id cshl_fastx_reverse_complement $ sh run_functional_tests.sh -id cshl_fastx_artifacts_filter $ sh run_functional_tests.sh -id cshl_fasta_collapser $ sh run_functional_tests.sh -id cshl_fastx_clipper Special configuration for Barcode-Splitter ========================================== When running the barcode-splitter tool from the command line you specify a prefix direcotry - the output files will be written to that directory (similar to GNU's split program usage). Running the barcode-splittter inside galaxy requires a special hack beacuse (I don't know how to|Galaxy can't) create a variable number of output datasets. The number of required output files is determined by the tool only AFTER reading the barcodes description file. The Galaxy-version of Barcode-Splitter works like this: 1. A FASTA/FASTQ file, and a Barcode description file are fed to the tool. 2. The tool produces a single output dataset (inside galaxy). This output is an HTML file, containing links to the split FASTA files. 3. Users can use the links to get the split FASTA files. (Since Galaxy's 'upload data' tool accepts URLs, this is not a real problem). 4. As the galaxy administrator, you'll have to edit 'fastx_barcode_splitter_galaxy_wrapper.sh' script and change BASEPATH and PUBLICURL to point to a publicly accesibly path on your server. Example: fastx_barcode_splitter_galaxy_wrapper.sh contains: BASEPATH="/media/sdb1/galaxy/barcode_splits/" PUBLICURL="http://tango.cshl.edu/barcode_splits/" When a user runs the barcode splitter tool, the FASTA files will be generated in "/media/sdb1/galaxy/barcode_splits/". The URL "http://tango.cshl.edu/barcode_splits" is set (in an apache server) to serve files from "/media/sdb1/galaxy/barcode_splits/", with the following configuration: Alias /barcode_splits "/media/sdb1/galaxy/barcode_splits/" AllowOverride None Order allow,deny Allow from all Licenses ======== FASTX-Toolkit is distributed under the Affero GPL version 3 or later (AGPLv3), EXCEPT All files under the 'galaxy' sub-directory are distributed under the same license as Galaxy itself (which is an MIT-style license). While IANAL, these licenses basically mean that: 1. You're free to use FASTX-toolkit, 2. You're free to integrate FASTX-toolkit in your Galaxy mirror server (or any other server). 3. You're free to modify the files under 'galaxy', without making your modifications public. 4. If you modify the FASTX-toolkit tools, and make those modifications publicly available (either as downloadable tools, part of another product), or as a web-based server - you must make the modified source code freely available (free as in speech). See the COPYING file for the full Affero GPL. See the GALAXY-LICENSE file for galaxy's license. Please remember: THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. ============= Please send all comments, suggestions, bug reports (or better yet - bug fixes) to assafgordon@gmail.com . fastx_toolkit-0.0.14/THANKS000066400000000000000000000005641226234573700154210ustar00rootroot00000000000000FASTX toolkit THANKS file FASTX toolkit has originally been written by Assaf Gordon. Many people have further contributed to FASTX-Toolkit by reporting problems, suggesting various improvements, or submitting actual code. Here is a list of these people. Help me keep it complete and exempt of errors. Many Hannon-lab members at CSHL (who prefered to remain anonymous). fastx_toolkit-0.0.14/build_scripts/000077500000000000000000000000001226234573700173475ustar00rootroot00000000000000fastx_toolkit-0.0.14/build_scripts/Makefile.am000066400000000000000000000010411226234573700213770ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EXTRA_DIST = build_on_opensolaris_2009.6.sh \ build_on_linux.sh fastx_toolkit-0.0.14/build_scripts/build_on_linux.sh000077500000000000000000000014221226234573700227170ustar00rootroot00000000000000#!/bin/sh #Tell pkg-config to look for libraries in /usr/local/lib, too. export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH # Configure, with static binaries and target directroy ./configure --enable-static --enable-all-static --prefix="$PWD/build" || exit 1 # build the programs make || exit 1 # Install them to the target directory (doesn't require root) make install || exit 1 # Create a package of the static binaries VERSION=$(grep '#define VERSION' config.h | sed 's/.*"\(.*\)".*/\1/') TARBALL=fastx_toolkit_${VERSION}_binaries_$(uname -s)_$(uname -r)_$(uname -m).tar.bz2 cd build || exit 1 tar -cjvf "../$TARBALL" ./bin/* || exit 1 cd .. echo "Static Binaries are installed in:" echo " $PWD/build/bin" echo echo "Static binaries tarball:" echo " $TARBALL" fastx_toolkit-0.0.14/build_scripts/build_on_opensolaris_2009.6.sh000077500000000000000000000014751226234573700247440ustar00rootroot00000000000000#!/bin/sh export CC=gcc-4.3.2 export CXX=g++-4.3.2 #Tell pkg-config to look for libraries in /usr/local/lib, too. export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH # Configure, with static binaries and target directroy ./configure --enable-static --enable-all-static --prefix="$PWD/build" || exit 1 # build the programs make || exit 1 # Install them to the target directory (doesn't require root) make install || exit 1 # Create a package of the static binaries VERSION=$(grep '#define VERSION' config.h | sed 's/.*"\(.*\)".*/\1/') TARBALL=fastx_toolkit_${VERSION}_binaries_$(uname -s)_$(uname -r)_$(uname -m).tar.bz2 cd build || exit 1 tar -cjvf "../$TARBALL" ./bin/* || exit 1 cd .. echo "Static Binaries are installed in:" echo " $PWD/build/bin" echo echo "Static binaries tarball:" echo " $TARBALL" fastx_toolkit-0.0.14/configure.ac000066400000000000000000000067461226234573700170040ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. AC_INIT([FASTX Toolkit], [0.0.14], [Assaf Gordon assafgordon@gmail.com], [fastx_toolkit]) AC_CONFIG_AUX_DIR(config) AC_CONFIG_MACRO_DIR([m4]) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE([dist-bzip2]) AC_PROG_CC AC_PROG_CXX AC_PROG_LIBTOOL AX_C_LONG_LONG AX_CXX_HEADER_STDCXX_TR1 AX_CXX_COMPILE_STDCXX_11([noext],[optional]) dnl if test "$ax_cv_cxx_stdcxx_tr1" != yes; then dnl AC_MSG_ERROR([Your version of gcc does not support the 'std::tr1' standard. Recommended gcc version is 4.1.2 or later. Please use a newer gcc version, or try to download the pre-compiled binaries from the fastx-toolkit website.]) dnl fi PKG_CHECK_MODULES([GTEXTUTILS],[gtextutils]) dnl --enable-wall EXTRA_CHECKS="-Wall -Wextra -Wformat-nonliteral -Wformat-security -Wswitch-default -Wswitch-enum -Wunused-parameter -Wfloat-equal -Werror" AC_ARG_ENABLE(wall, [ --enable-wall Enable many common GCC warnings (-Wall,-Wextra, -Werror etc., default enabled)], [case "${enableval}" in yes) wall=true ;; no) wall=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-wall) ;; esac],[wall=true]) if test "$wall" = "true" then CFLAGS="${CFLAGS} ${EXTRA_CHECKS}" CXXFLAGS="${CXXFLAGS} ${EXTRA_CHECKS}" fi dnl --enable-debug AC_ARG_ENABLE(debug, [ --enable-debug Enable debug mode (default enabled)], [case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;; esac],[debug=true]) if test "$debug" = "true" then CFLAGS="${CFLAGS} -DDEBUG -g -O1" CXXFLAGS="${CXXFLAGS} -DDEBUG -g -O1" else CFLAGS="${CFLAGS} -O3" CXXFLAGS="${CXXFLAGS} -O3" fi dnl 'all-static' marco copied from subversion's configure.ac dnl Check for --enable-all-static option AC_ARG_ENABLE(all-static, AS_HELP_STRING([--enable-all-static], [Build completely static (standalone) binaries.]), [ if test "$enableval" = "yes" ; then LT_LDFLAGS="-all-static $LT_LDFLAGS" elif test "$enableval" != "no" ; then AC_MSG_ERROR([--enable-all-static doesn't accept argument]) fi ]) AC_SUBST(LT_LDFLAGS) AC_CONFIG_FILES([ Makefile doc/Makefile m4/Makefile src/Makefile src/libfastx/Makefile src/fastx_clipper/Makefile src/fastq_to_fasta/Makefile src/fastx_quality_stats/Makefile src/fastq_quality_converter/Makefile src/fastx_trimmer/Makefile src/fastq_quality_filter/Makefile src/fastq_quality_trimmer/Makefile src/fastx_artifacts_filter/Makefile src/fastx_reverse_complement/Makefile src/fastx_collapser/Makefile src/fastx_uncollapser/Makefile src/seqalign_test/Makefile src/fasta_formatter/Makefile src/fasta_nucleotide_changer/Makefile src/fastx_renamer/Makefile src/fastq_masker/Makefile galaxy/Makefile galaxy/tools/Makefile galaxy/tools/fastx_toolkit/Makefile galaxy/test-data/Makefile galaxy/static/Makefile galaxy/static/fastx_icons/Makefile galaxy/tool-data/Makefile scripts/Makefile build_scripts/Makefile ]) AC_OUTPUT fastx_toolkit-0.0.14/doc/000077500000000000000000000000001226234573700152465ustar00rootroot00000000000000fastx_toolkit-0.0.14/doc/Makefile.am000066400000000000000000000007431226234573700173060ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. fastx_toolkit-0.0.14/galaxy/000077500000000000000000000000001226234573700157665ustar00rootroot00000000000000fastx_toolkit-0.0.14/galaxy/Makefile.am000066400000000000000000000010721226234573700200220ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. SUBDIRS = tools test-data static tool-data EXTRA_DIST = README fastx_toolkit_conf.xml fastx_toolkit-0.0.14/galaxy/README000066400000000000000000000006071226234573700166510ustar00rootroot00000000000000FASTX-Toolkit - Galaxy Files ============================ These files allows easy integration of the FASTX-toolkit tools in the Galaxy framework. Installation ============ See the README file. LICENSE ======= All files under the 'galaxy' sub-directory are licensed under Galaxy's license. see GALAXY-LICENSE file. (The rest of the FASTX-Toolkit files are licensed under AGPLv3 or later). fastx_toolkit-0.0.14/galaxy/fastx_toolkit_conf.xml000066400000000000000000000030061226234573700224060ustar00rootroot00000000000000# # Add the following sections to your Galaxy server's tool_conf.xml file. #
fastx_toolkit-0.0.14/galaxy/static/000077500000000000000000000000001226234573700172555ustar00rootroot00000000000000fastx_toolkit-0.0.14/galaxy/static/Makefile.am000066400000000000000000000007731226234573700213200ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. SUBDIRS = fastx_icons fastx_toolkit-0.0.14/galaxy/static/fastx_icons/000077500000000000000000000000001226234573700215755ustar00rootroot00000000000000fastx_toolkit-0.0.14/galaxy/static/fastx_icons/Makefile.am000066400000000000000000000021171226234573700236320ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EXTRA_DIST = fastx_clipper_example.png \ fastx_clipper_illustration.png \ barcode_splitter_output_example.png \ fastq_nucleotides_distribution_1.png \ fastq_nucleotides_distribution_2.png \ fastq_nucleotides_distribution_3.png \ fastq_nucleotides_distribution_4.png \ fastq_nucleotides_distribution_line_graph.png \ fasta_clipping_histogram_1.png \ fasta_clipping_histogram_2.png \ fasta_clipping_histogram_3.png \ fasta_clipping_histogram_4.png \ fastq_quality_boxplot_1.png \ fastq_quality_boxplot_2.png \ fastq_quality_boxplot_3.png fastx_toolkit-0.0.14/galaxy/static/fastx_icons/barcode_splitter_output_example.png000066400000000000000000001135331226234573700307710ustar00rootroot00000000000000‰PNG  IHDR÷½7#R˜sRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEØ%3Ï`Ý IDATxÚìwtTÅÇ¿[RvÓ Z €t*Jh -H‘‚4iò¤ ¨ ˆŠ •¦¢ôž ]z—jB'@€ØÞwßýý‘ ÙÝìnÞ¦`>çì9ÉÛy3sË›wßÌ}³""0 ƒÁ`0Œ—!SƒÁ`0 ƒÁ‚{ƒÁ`0 ƒQˆÛþ“””Ä4Â`0 ƒÁ`BF]»vñî J•*Ls ƒÁ`0 ÆKKËa0 ƒÁ`0^Ä®¾ˆ‰‰aÚ)ÄÆÆ>_MymÂôÀ`0 ãurÜÈ6§‡‘ÿ8¾ñºÚ„éÁ`0 ‹²‡¥å0 ƒÁ`0¯,¸g0 ƒÁ`0XpÏ`0r…ö8FGÁq-SƒÁ`0Œ‚ îñˆ Èò‘"¢Åxl¼k|y¥.[4â/£MRföoŽÊ¡Þév L­è3a.6ŸK…±0é:$õlç›…Ô†nå&ÇØ8Ä`0 £À‚û NØ/CTpâä"gÒàñ•Íé¿ýûþ…dóK*ýsÙ^ÆÎ›‘7 -û­‡O÷¹ØwK“Qƒ'·`áЊH\0]ëõÂÅ+ì½v¾¹‚^²þK#1ÿÐ|DJÙ@Ä`0 #oçä$XŠâÕb0þ—XWo ®h‡¢l SfAbºñ+ú~iÆôýËšùŒQF/F“š@Õv7˜¢ ƒÁ`0^#r™sO€P ¡Àñ°I§¢[b ø”BÃ~sqì—YæyJEVX‰±­+!(KŠÙ 0¨Qø‚P±Ù@|·õ&´Ïs8ÈÏ,°¦å µ¦ •köŸQ€sè«êŸ]þTl5nꜤEpPœ]‚áÍ#ž×Y¶ÉüvZîPç‹Bã³Àüñ´ ufB‚[,Á#½íl6=¹JSrvÜÆ~kÏoƤ¶•`µQ•öS±ó‘ÙþüàÎ8 ?€ÎÁ™©]þÝ÷@U zãë+<üޝ»’ÛeJ˜'vâ¡{ƒÁ`0,¸Ï‹i‰»ñóÈéHn6uý¾WîÁð>¿ÀòÑv<К »·£DóÑep<Ò2"”Œ” ¯c˜üñ>Ôøz?4¸»eJû¦Ñ]üúîFïŽâ‰A‡'WWà}óZLî8ÿ*ÓËè/ÏF»ö‹à5t=®©Œ0*¯aý`~kß³/ëŸwÉ4ïµ×®(ô0(±vá—¾Â}÷õ—ç ]›Ùо¿—åz”×°iDþîÚ¿Ü(Yìú$Ä– ¦ID|Oá£'WiJÎŽgó9‡™ÃV£Øøm¸«3Bý`7ÆI– ÷àÍxìhk›Ô."‚zC+¤Úxú ¿óÈÇÉíB×Ù‰î ƒÁ`¼^ ‰‰‰ÏÿnÓ¦Mæò8ŠŽŸíéÇ£OÈLÙcIùƒ•êA{”d_¯wqvXåä„TZß¾µ[û˜,6‡ —§S%iÅɉˆK¥JSÓ…wÈdw²‰îüÖ„JwØH©qO(¾k85þõ¶C93¥¬lC¾"k}DD\mìFõL"C–²í©ú ý¤¤‚éM[©mhZÊñ«„¯ž2ll£rs\GQâ ê¹ýÙöÄpe&UëE{UÙœŸ[=xR/_ðñ;O}ÜUÿ¿óÔN|uÏ`0 ã¥Åe äþ3÷¶³œ:Y2Î-Æ™A ÐkÅ=d— ”6JÇ‚’ÊhYÍ/ë ÚˈKCÇwBí–¼«‰kkº‰æ 6Ÿ/‰ž1¥^£tÛ^(™‡+ZÚ+Ø|: ½Ú–q('BXóž¨ågßîæó¥Ñ¯[x;–êŠÐÿ¶âº¾<˜ñ-ÈWO9Á¯::Ö †mf–wX5¤Be)DO±¼}…‡ßyêãùe§—E÷ ƒÁ`0 Œœ¥åDð GöŸà•Ýpaú\$ؼÆûÛðU—Úó¶Ù:3¸3È:¶(ÃG,ÈÚ†E‰G_ów“xbQà¡Ö¥ƒ²¾,*?MJz eV E#EI'å„þEágÛ'³SÎbl¯,ÛŠJÆáëWðèEgæx…¡jn¤™ø•ç«§ù‚|ì'ò‚°°mðÈW|üÎSÏë>¾lºg0 ƒQȃ{|#¢„ì2¢žk˜×©âÂ?Ŷ›r,ÖÙ~O·œ"ÌO‡Tµ›)HQJJ5x È™š ‘–B €8¥ü4HqRŽÓ) çì¢(” oŽU©Üói»a;Ú½è$UЩ±;>¯˜œ¯ž2bFp0;¨ôJ{=½lðÕ¿Ë+Ï¥ ƒÁ`0ò<¸×ßþ)~PÔËz@w ÿÞ©†ISz£Ax¼­-Ù³'ŠÒêx¯æcüsâ‰ÝN&úóŸ£jÅÑ8©àW]ê¤`ÍŽûA®v®ÃúQCš^W—±6K9ÏNlÆ%ÛTiMtk†m§åóŸÕá¨PåSœái9ˆü|$„±Ó°#ÕYjÁãMï£\ýYH4z 'ù£˜ÏS$¥íd—ŸÙŠ«¹ü%U ‚œT¶ý)|%[¿óÐÇyËí‰ ƒÁ`0ò.¸ç`PÜG¶9ø°ç"H C팠CZmÊ_ÆÌ)Ëp"Y g„üöa,ÿ9Žx²ï¡°8:Ì€´Ï†à§w 2êñäâZL°~Cþ‡Ú‚bh7k ¸é]0úï“x 1ìy€SËÇ¢Ë4 F×E¡ˆùv¼gvÁÇËNàžÊ“æ!Îm˜ŠÞcBg›Ù EÛo‡#mü˜µXt©¸ôÏLôì±Õ¿…š¾/ÞpÞ•?ƪiÀ-{âëõ'qG¦‡Å¬ÃӛDZîëˆrŽDoôd}¸éZï|õN=ÔÂlãÆž9>í H”‹‹C.IÁ±KOa¶hqoÇ(T,=‡5¤0¾:àãwžø¸'r{b'ƒÁ`0 gdû6®«ràKaÕ[Ѱy‡(Õ~k2$o¡/:T§AzYI¹æ4*ö[z Àº;H–zí(b¦Ôƒ?Ðûu‹‘ HÊSëO·Ð}£Ý%$;õ iN¾Ö~…7B¿’ÙívBÄ‘òüïô¿æ$ð¡Ò†Ð’ƒS³,ís¤º´œÆ¶©LAÖþTlA#ÿ¼@J®0½!m!ùùôi—úTJbÕ£_85è6™Ö\VG9Ñ‘)e;Mn[‰ü¨Bë ´ñÜjîÒ~6ºsuœttua/ª`ý®H]´ü¦ÃŽDêÁ¥oºò+¾:ÈÞïxù¸;¹]ê‰G=Ö=ƒÁ`0Œ×e·QfÂ@RRªT©ˆ‰‰Á®]»ØÓÏ †Ù„éÁ`0 ‹ùÆ@B¦2ƒÁ`0 ãÕ€÷ ƒÁ`0  î ƒÁ`0  î ƒÁ`0 Fžãò'qbcc‘””Ä4Tˆ`6az`0 ƒÁÈQpŸñV.£ðÀlÂôÀ`0 ƒá––Ã`0 ƒÁ`¼"¸œ¹‰‰aÚ)ÄÆÆÚímÊôÀ|“Á`0 Æëå*¸À~(¨à˜[þ:ÿˆÓƒÁ`0Œ×=Ê––Ã`0 ƒÁ`¼"°àžÁ`0 ƒÁ`Á=ƒÁ`0^Z´fŒŽÒ⸖©‚Á`0^¯à^h‚,)"ZŒÇÆ»F'4Iq˜Ù¿9*‡z§Ÿ# @™Z-ÐgÂ\l>— »3IƒK¿vDQI Ä+˜axAj\];]ë—†Äj“²‘ýðÍ?7 ¥ŒB&<Ø5=ë•€·@ •b&`Ý È¡:ãým˜Ú±*‚A¨ÖñKl»ŸÕ¾|Ëñë_.P˜-A Pñó… Ñ!.ʺû.¸·DŸ²ZœÖ¹8V}((žËõÈC½,(^"¹Üô•8ØyäƒÏí¯%Ü?dÀç}T¨ZL@@Žò‘ÌÜÊAOŽc‹ S;*d-W­£ÛîÃÉÄ£œ‘îï4ˆŒ[Û•!0B…¾ß™pߘ½ шpéW5ŠJøëœK5¡wQBìD<í@ÀÃF̦F½²™2WP¡Ï né<¬//tô² ù1V<¯Óñ#GD 6Þu}ª&É„™ýU¨j=G(G™Z*ô™`Àæsä—yîŸy6–¼B÷ÃÂÜuÂ~y¢‚£''8“¯lÆHÿ•èß÷/$›O2#%nZö[Ÿîs±ï– &£OnÀ¡‘¸`ºÖë…Fãd86³-šM>GÌ*¼k%ŽOë„¡»KcÄÊóxfÒãYÒz nÄ”÷†â_%pxº{$šöÝ ŸïÀ]µå¬êÏaA—ÿØ’Yâ&¶Œ£õÂ)™Ù)Ì©ƒ[MÂa%y\Ž_ÿrIöËýüØ‹ãpdµA­½QMâæØ«€­\%^"½ª¾çª¯R1æ’"Ršö7™Ñ¯¹³N ññš@we=©'pÏŒÔÑ_FÝwr®ås ŠWU®‚ö™Ò×<ÉÎþr#EIäôåŬåû5þ†–ÎêÒÿ¿9OIáÝŒc G›»ËéXËó±…W9¥‘:Sм[YÛ5ÝÒSÝb*Ú¥t-CA´Ar#u¬§¡u Þ:OÝ¢¦RáÚyÓC;ñµƒµÜÔ YË™“õÔ TEÛÔ—[½*ãB~Œ.ê4'ë©AQ•“¸LOѵ4´ó‰óêd{5æcS_ü3OÇ’Wõ¾‘DZ +r™sO€P ¡Àö˜Çg-€ùã)hê¬z‚[,Á#ý~t ²òÆ’‹Ñ£œ{Úâ7 ƒców£êˆv(!²ÿÆ«Ê縪±êVw {’+ [d¨ÃÅšv„÷®í¸c`yˆ=« ñÿZ¢˜mAa1´Þ÷WíÁC‹åøö/Ñß6aR[¬K“UÚë°ó‘Ã_°äftÎ\Æôïn‚*»ï¬KªËðQ$KÐÑZüyÀgâI}Έ£$FïçÇÜõÁ:–´Q‡nuä dø(аŸÇž9_^{>}XQ]0bd´þÖöÂk±ô Í,#ËÏ0¬©Rkåši±ø ã!+èn1±ufŸœêÏC9W0blk…5u¾ϲÿ ÔHk{›iðÝVÎ.%Œ¯Löz’£b+6Ütn{ÅY†7Ϭ³l-~;µNw˜S͘3@…òV¹ühØM‡ßö[Srë—®ÒÜø`¶}rfÿ /ì×azͬ]¬%FÄ3 X8ìYÍ¡ñÿÄc‹-‡‹q•É:ñ,'ÀG \ˆ/ võeA´þb,9 Er~“öi&ŒnFÌb Z‡æ`¦—¬åfÔrÒ¾ž`"HìA}¹ÕQ>]3+пvzšPÑú,¹LP&ðÁ›éÇ‚kkðç5Ê’Ú”íØTˆr2ìã2ÂñYz˜?öE+¾ÜBŠGú›¸Ì3ÿÌ2¾8KZkÑÀ&¨ùÆtëNjQÊv OÎæ~Èȃ´§ƒŸi‰»ñóÈéHn6uýl£¬$Ä– ¦ID|ë ,@ĬÁ;’½‰Ý礨©[‡QQ $(Ó°7¾Û*"/˜îŸÆ==ýmM)Ƴæ†H*6F‰”c¸íQ¹Ü÷Ï#tÌfD±ñþ¸« ú?ÆKè=؈ǜëeL¢¨7x!€Ïw^fŒïkDÐ(ÜP†@/Ī~À¼¶jÌ¿–ýCðåõfhêz£Qˆ‹cîú`]VÞÇËGþx  îž?F‰ôè2Ø„4G}²êcœÄA I¼×V®¿®(B`P!~Œ+ûiqÄKŒ8yæ@¯¿¬G»öx õÃ5UŒÊ@¬ üÖ^Ù—)YÓmôU,ýpÕþ<‘ÓˌɛQãë<0ãî”öµ6wQ}M¨ñ]ž‚ñäªÞ7›0¹£æyJ_™²ê)k¿| ÇÃ¥yYvm оï‡Ëòô²›FwUã—<ýÙÄá·®ÄGøbÛ`ÁxxD‚¨Œh¡Á.¥½rä—nÓœø Ÿ>¹³¿31e4E…ó çp4E€ÆNÆ1J¤˜­c Ïrþ"Œ|ÓG‹¿Žrx¦,ÂícFL죇e ú»_    Æ7µ†#ìøD‹­¥ø± Ow°³ƒ³áõ‡³[õÒÀ2Ÿû¢Ôƒúr«#äÃ5ãcÁœo9t]½*66ct ~šdž è•Aø«©㆙ðÀâáØô"±ÒMøy¤ÉÍ|â2ñ‡ˆi"ô .óÀ?y¤ …@ý¯§µ˜×Fˆ6s±³[ú5&i(ÅñÞ(_Ù› SÙlW’žždôÖ§&J³¸×¾·áaúAÚ65•.­¦­iyŸ²`gtç´TÎF¦Vß›IÉå ¾¼ÐQ^^3Þrv$SÓm=Õ:»¥§zajúW™Ã1¸ Òrìtjý”PÑG9‡¸ÌHmC•´:µÓcÜœg‘™èÓú ê½ÚBF"z§¡ªÕ´òKË)ø´›j‰3C'Kƹ¥Ñ83¨z­¸sÖ„F¾=‘¡5ãÝ…«1­s-„IÅð (ƒ½@Ü’:ØöÅ߸eàUý¿nƒSCzàËM x¤µÀ¢}„ ›¿B¯aÛ ðòƒw¶+nð[”³)Ç·y…ŸëÙ÷Ó»¸¡*Kµ!¡[dÖ³ðw½Qü´Wl¶$àl^ 7Þ5aË}º·>ÿIhgÇ<^v“ à£å 4óÐG˜Emõ¡µ`óizµÍÚ~h#oÔ´ÓX°ù¼=c²–-ÝÖ%2åw)—Ÿ=›g5r¦?ÞrJDhY͉wj-ˆK¢ã;ööò®î‹këj_™Üè)¬¹jùÙ·»ù¼ýº‰à8 å…ÐÿL¸®ççkïV2cL-æï°à™õZñz×Ôö)møenýŸOŸøúµæœƒbÚx$¼Fð…2¹µTƒ^+˜òO ©C`Táâ?¾(µJ>K¸¯ Dv“öOM˜ø‘Ñ ¥x·hÞÞJÜÙÁ·Žw(FeÎÅùÂ7V…n‹ÝË䬾‚БG׌Dˆæ•3­("(ÀáXˆF.‡cpAa;³Í…@' ¹¥bœ¤D¯\¡Ë„ÁbÌÜâ ñWj|ôµ1c9|²Ã}ʱðîŦåDð GöŸà•Ýpaú\$dÜ´¼ÂPµˆ7ÒLL»ùf5)BŠÖB§·BnzBì† ÷öâº.ýÿbíáÈŸQHœƒ²~bˆýÊ£ÃOÑ}ñ×h\¾júÒ©8%ý4xèd„2+BãW bÊñî_!|³.) óøJ r…ˆƒðÓ*ñaÚÙ`èÎJð¦µO){Œ¸YÆ ïÚ \ÎŽ¹Ãxß„¯º(æm³íY°ä€P˜}˜ )J:y÷A(ÀWh¿ÜûP+@é gò á§É¼¹¹”KõÏ^žÊé#v¾<ýHów¿„ÍK&wzòÂOh¯Ó‡)Œ­u‹:Qi-_·àŸ­ÿ¼„øx{¾¯kÁo”õ–£|5†~o mý2·ðì¿V7 [¿—¢k‰Œ PÒðÐÉ.Zf%Aã'°ŽA<Ëé,Xðƒ½×ùá³"„ù^~BÔìà‹•ë¼qóG.dl?kg+â5Ðßíý8¿µØÝLŠŸÚåí˜æÔÎL DN¾X½Ö×çpIïA}|uT@þ™1nøyÛÿ/pvŒr1¿€o°uÚûâ•Þ¸0Ý`— QµáFZá cÄ¥¼1kªk¿4@öž/Þƒ…v/>¸·}ºhˆ²KxhÈx*®‚N5Øyð!ÌL¿ùƒO8ê—ñ‚Éâä9\à8Ç僲í¿Â†³`$‘ɇჀ+ÐÖiƒŠ¾|Ë#²Ô#»™u”ÕÝ<†Ç¥"QÞ“rõï%žjœÜì¿Á®¦)9‡ÖXÚÖ •}ÝsÙ[0¯“qá¾Øv3‹u¦&7Û«‰(åGHqdp‡+‘%¥„ gòsÐH…éÁŽ;¹8@©ÏFy%§H€0? Uí¾ /™ÜéIGÐs: cUjfލÝÇàv5ŒøVƒú¶¸Ë©_æ€lû”_!q¹ï4ÕÃës,ín³’ã+Dd)±›ädl1ãq)±u âYÎÈá¢Lˆ¦•²Ž7~•Å(#³ ňôÜ`;; SX´ÁwC•?,ã²Jâ"Ç 2ãeC÷wg7øW£ìS닲|ëã«£‚ðÏÜcp>â!B ™Å&.¢ScÂ΃\¡‰Ët—õ0øé˜šoÑbú b…)¸×ßþ)~PÔ+ãH"? aì4ìHu–aÁãMï£\ýYH42äï´kcÀ–Ãi;ppxzl#n•m…ʤÿ™_U|ã¨hËcì\˜ˆÖ£#¢hÕ»Ž,Ú'¶rO°ñQ”îÓ %E”ãÛ¿1¹!ˆ<ÿ Öâ²ìxro‡© ¼QÝÅKfôÌ‚ÕçhÑC©›cnû ãðï&MñFƒp¼­W-™ 朎†Rº4 ¬Ý‘u°O=dÂEÛ€ÑO„.ukœ”}°Óˆ‡u½QCê^.h-ØtœÜë/¯ä”Šð^Mÿœ°·—þ¼U+jqRÇ_&wzzvˆKZûv»5 l;õ&¥:¬E…*:œç“–£0!:@‰ù·­çÅDˆîë‹?·IQíŒ µ¹÷K¯}rgR[°ìCNå0lo âÇ‹h{÷ Ѫ·G™ÆÂþÅf”îãeƒx–󠂇#׳:Žæº÷ü„6÷,Ç(±ÚàKörNí^6äÿ°­&Dû)ñ]’“`ì–ü„(âåA}¡#O¯™E¢ù0ç#úÛ¤ØéV€ÈÏ} ŒÕaGªósoÒ \}}žÆe®î©æF ídDÍE~ÚÈ þö®¡:VxpOfäGpÏÁ ¸„msðaÏE †Ú6£¹wå±jðEËžøzýIÜ‘éa1ëðôæq¬ûº"‡ÜÀÀ…#QÅ› ‡S÷¨9r¼§õÀÄÕ§ñ@m‚I‚³ë&£ëÐshÿM?”ϸ¨µI˜9h:¶^“ÃdÑãéµýX8¢~©0 “Ÿo{à… Dç„Ðû›¸®0Á¤¸ŽßôÆð„Îø¡ykþ,ßrô¯  .!»D0[÷vhQ±´‡5Ù|bàÖt >]cAŠ0ª8œX¦E—™À„o½P$cbJoÁôrø5Ðã‚Pž1â¸PŒ÷ëfÎ\9;æ¶$D›òÌœbĉd‚‰ä·ÍX4^‡#ªœº1ßúÂ{¦/3ãž 0©9œ]§CßÄbû²ífù€›®Æè¿Íx Ì§–kÑe0ú;1Š ÜÈÂѱjLÙ`ÁC ýIóHN¡fz#í3-~:ÀAe$<¹hĤø ñAm ™œêIÃáÜz5C'°×SÛo}6^ƒñ<ÖáÒ?zôìaDõ/|PÓ—§  ¦×cG"AgôO,Ø:ß_š˜ IDAT€»Õ¼PÕöÁ˜¯_æÅ5’MŸ\Ù_uÁ€~õT˜iðÁÁ þÓК^âð ”JÐ9A‹Þߘp]˜v|£Áð/üÐ?3‡ŸW9©#‡°¤›ßo· U ˜µ„ËÛôø ›ƒ}P×̓OA´QÐðµ´|ÙC‹%9<Õ¥ûð•zôën@ðpÔ“zP_Aêˆï5“£É|ƒóƒ‚CÂ6=>ìi€d€C\ækËÔøz½wd‹™ðô¦ë¾V#rˆúx—¹ú^cÉÁfLi¯Cêx?ÌŠN÷™ ¦¾XÙÏ‚'Ûü¨Yv÷dF6OòÙ½ëj§øRXõV4lÞ!Juº-‚…äçWЧ]êS)‰õ¿pjÐm2­¹¬²ÛÉÃyl×÷oHs¤IZMãZU$?€«Ófl¿—¹S§¡ëñ3éƒFá$ð¦u:Ѥ•Iéd—Cò?ôE»JäàO•Ú}Aÿ$rXŽGÿr«»ÝvDpvœ8ººPMÕ¬ßQРåkÜ|g}kõi’“ĺÛCDs ý‘`¿+ éÌôU]ùÖÕR‚Ž£Cƒd$‰6Ð#Kf²˾†d#}ÑAA!‚ôï$å”4*VGoÙÊè±>ˆ”çõô¿ær’Ze*¥¡5' Ô¬ˆ2}'%Û99¥§!åäk-ÞXC¿ÊةŅ\ÏÛVÒßõ44RN>nô繜Yez¾ëÏA½_WF"<#HäÔúS#Ý7z"“+==£Ò4´ä š9i_uÉ@cÛ((ÈZ6 ¢’FþÉo§‘Œ]wnîÐѰ6 *æe•ÑON‘ýut05ënÙú¥3û{zdÛ'öWé=_';z¸°!ÙH_´““¿U–Jí´ôO²³±ŠG93G‡~VS“ò²çí”WÒÀŸL”jÎÞ ùÞ†ÓÝN²Ù$'çxbŽ£;{ô4¶³’ÊdîlSòMýÃL2KìšK;äÙ5Ã÷:pqmäx v3þæùN9QXu ›gr—ÉÏèÓ. *%ÉÔSƒnZZsÙá^Æ××lÆxû% t™QW5RgîNôf–6ÜݯY,˜¢ÌE¤¤$T©Rƒ]»v±§Ÿ ³I!Ѓ„è=ÆÞ ðìÇ·tŒ«¢Ä±©A86Ôš‡êìX!ÃxYz9,½$Å;Ò\ÈÊ(œ~™0û3 F¡‰ÄLeŒ—@V íÎa{Ããq¬ÑÈÏ7²2 §_æÌþ #! aJà îì"wGÆÏh[/Û_m}ˆkq|õƒÿœà à!F·Ñü8ZŒblúµðò*û%ƒÁ`0XpÏ`äÖmì^ITîâ‹Õ]|™_HPî|H樿Ê~Éx1>UhûŸ}óR=ܾnò2XpÏ`0ìa‘Áx|êu»&ØÀx‘Á}ll,’’’˜† Ì&L ƒÁ`09 î3ÞÊe˜M˜ ƒÁ`0Ü!d*`0 ƒÁ`0^ \ÎÜÇÄÄ0íbccíö6ez`¾É`0 ãõŒrÜ`?bUpÌ-ÄŠéÁ`0 ÆëeKËa0 ƒÁ`0^XpÏ`0 ƒÁ`°àžÁ`0/-ºüÙ}®é˜* ãõ îñˆ Èò‘"¢Åxl¼ktq"A“‡™ý›£r¨wú9”©Õ}&ÌÅæs©0éqÿÐR|Þ§9ª³–¡|dÌÜzzbFr ipé׎(*ixE”³KCÑöç¸ô›r.ËX?¢–Øb['©quídt­_«o•ì‡oþ¹­;û«n`zéÙèYz-N©x¥ºéÕ\”u÷]Þ OW®DŸ·öã¦Þű|ïC9f¦\©ÚèeAõÉ妯Ä(ϯûëÌxzâ"V\ƒ±µ~BÏҳѳt,F¾·÷(`r¸¾Íoaí€?0ÀZnÜ€£8ûÐ’¥^åL*$Ì߆)oÇZÛo¯ÂüùwðÔ”½ÑÈ„{mÆà ëx뜞ÜÀ¼š³Ñ³Œv"žv dg¯bã¤øô­yÖrs0°Ñ*Ìûù&ë=¬//tô² ù1V<¯Óñ3#{ìÇ÷-.O5ܼcÖ`L «ÝÊÌÃð–ë0oÆœ¼¤…ÙSûæä~‹8ÿµmHLL|þw›6m2¿ÇQTpÅÉÓÿåLz|e'ýб8I›,¦»&rÀD6 ·ßêC?ÄŸ¥{r=™Œzrû4ý3oÕõÖúäq*õ§{®Òcµ‘ŒêGt!~µ-Qœ:.»KYªpiË3::£ …•$oïLÛdo9»sS\ïRT¶ûz3Ðá_pŠË2fJ^Ò”Š5[JÉfë!NAǾlA- ¯¦’Ö¤§gI[ijcI¦¸Óƒò:M«º†N*yÈ宬'õ䋆Žtÿ™¿OzWÇò»Å«*WAûÌ‹èk^ÈdkåušVêGêÑx;í<ü”ä ™5º»ë}SçšµNAχå=ú£É/4möMJQ˜É¤xFgg¯¥!M÷Ò›þð*Çéè„…4 íÚwü)u2ë´ôðÄúýÝXúßÄ»¤æ\‹PmEG‰?¯¢U~¥ÞåxêÜ¢¡“#~£ÿ ý—&TñÀN|íQ®ÑVÚvà É5²ôôä|"­ê¶€† »Fr‹õåVG¯Ê¸c…CœÉHòk·)~À/Ô·s¥e œ,ôlÇ¿4¹ÝVŠßõ˜ž(Íd6I™üˆN/ÝI“"~¤¥¬õypÝæÛXòªÞ7ò:tAŽÒrb)ŠW‹Áø_f zâ\Ñ:LfÜø}¿4cúŽå˜ø^]” òØKŠÐˆúè0z1öm‚0›$oàËM‹1²eU÷ó‚—_j½7kWwÄù™óqQϲ>ÕƬ¸ÊXth."¥yP.sÎiÛÆaÄ‘¶Xü}+ɉ‡øTFß }QÙÇá¸1 Ëæ^GóI]PF”~H{ú[LJúD«ªÅ û ¤r{Lý}*ªJ_¡‡hÕCI¡zÇ¢ðqsìU••ñM9Úß7Ý—¶AL“"’ !’JQ¶M#Œûµ"îÌ=‡dCú¸“ºî NVkƒqã* d âÀÔ×ê^ÇŠõ XàA9Í#ìÜ%A¯Eш~'¾Bˆ|%(ñv- XØ;Ïâ†Æõ˜ÿmÐ<@ÜÎ"¶¹ªHø­ˆ(÷îÇÒ“åñÑåà/ðÐ0¼ì^®ÛmÑ®y(‚¤B½}Z» zÅ6AÑ£qKãA}¹ÕÃ¸Ì A•"ÐáÛÆ(sã&î;¤ÛYîœGìz®h‡÷ÚGh€"±ÂÃPp ¾\Q AÞ9ðF¡DœÛåwÅÚ 2jŸµæ÷¢U¨³ÈP€àKðèyÀÞ ûµœ– ¬ƒˆgKðÀÔõeƲÃ?K´G·¿æE¹ŒÛZÚvŒ~1¿ŸGëÐ#˜•“¾ùVÃà/ªe9¬>‹¥ÚžX]é.£Ä±ù»QuĔٗõªò9®j>çݤ)ù:V|{»È¡‡7J¶¨‡çD¢Nqaæ_Õ8\p¹êìÌçö=°xŽ ?dû]ŒÚP‰ßÃÁS*˜à…bj û×ÍUÍÙÝgõ—‘D¥ðQmçÇÜõoq9HÈ„”íÿaõÜœ¼¢yù¡â{ 1pF=T 8Èޱ»ëá–;}XÑ]½„USãÀq !´A tÿ¬ uߎ«ÇÄÄ^x+ ýZ×\¸€_ý‡Ã'•0BŒ¢oWG×iÍÑòM;ùÉ Æ;×°ü›Cø÷°zWúóPÎÑÿ¼‰?ÅþÃr¤ßË2úLМ;¿¿ü‡Ïªa†7ÂÞ®„#¡]Ë`ø<“É^O^kRL)r2&j/^ÄÊi'pðDz¡oUC—éQh]Û|ã1Ë“{ØþõaìÜ™‚45i *FUFô‡õÝ(^ê äÐ/mtøÜÆÙø wv}8±ÀøêæN» ©âò xfÊ‹5¸§FÕOË"ÐÖE…RÔì_|òo"<Ë „ð¹Ñ¶H —_[   †cø† ¢›ØÍçnûôþúô>êÌé7‹<@œ'c2_;¸)G#,þþŠÓ'äxÕ'Ì¥Ž<€ÿ5Ž7WCÂäƒ8tÕˆ€Z5Ðg^KDZ.cÉLJq$Ñiµ°¸5¢+Ø„H|Ʀ‚P]—L¸¶à¸A=Q+Äy_ýÇ`ÉíŒÿxÚ×'»ñÅa,iZ¥ŸÃ-ëÿÕÂôö¾0žß‹ÛŸƒ,c ?YÛº¹²0ÒrȬ¥Ô«»èÇŽ%¨x÷Í”j±©DwšÆW~“f^1äzÂx}6Õ«<šNjÙRŒË¥>i2|ËYÒhk¿ÒTfÀvzbqqŽ<Ž¢¤e©K··¨¸ˆ¨X­N4%þvfº‰‹º7½Fu¾O"ãs_9Kk6¦¹;§‘ÍË‘ À—J¿õ>}»ëAf¹ìÒr"æÑøv[(þÀ3Ré-¤”B»‡þJû&¦/!ç6-Gy¦•Mƒê¯¡åqè©ÊLF¥‚’Vï¦ uÖÒö›Ù-PéÚ§¿RŸÎ—è™ÅͱìúPn>ýð×C’é,dL{LÆ,¦!ƒ®‘ÂQF§úø%‹>Œ7Îд:Ñâ5)”¦4“I¥¢[[Ò´ ¨gYû~ÿ£/jÿEKקе…Ì*%]_÷/M¬½’âMîeU^§isitÓ5´lãCzâNžÈYvxw'í9£$ÑHi»wÑGåÓûm¸z‚¦Dn¢-Ǥ5šHyý­êøsæ²³2eÕ“’nlÚOÓš-¥~Žz:ISj,¥ùÝ£ÇÏËî£É ÖÒöÛf~½IFÛ;ýF_þx“î¥Él2’ìR"-ooßü’oª€+äÛ'§¾îóíS4©É^º¡#"Í=ZðÖrÚ‘œõ$sòYúì­ítEãA92Òõï–Ñ{éÀI©ôY :z|ê-ëð+Mø.…t®:Vmxš~`ÑҙѿÑð1·HiÉÛ”;;dMP"ƒLA·þ=M Z-¦YËeÙ¦ÉÚ×—G:ÊËk&bMê{ˆNÞÔ“Q-§ÓS–PŸ·7ÑL?¦’ÓÉÉKh@·‹ôÔœÃ1ø¤åÙDŠë·iË€_iÈÐëö}Ò?¢¿š,£×Ìùì/H‡„Y§`÷>õ Bú‰?ÊwlŠqâg5ÜfÍ•´8ûíYˆ&ôÁÀîÖ²x£G LÔ¯ÅÔoo#zY% ÜÈe!×ýºøYíéBžÈ)ðEíi-в^ºGù¶nƒ…·pZœø6ÒÏú¢C#«½Þ¨ˆ³ßƉvÉžÉgz @Å.Í1O0jŒÍ‹k¤ÃÙoOÁ4ª7†÷±.‹ b—(LÀf|=?Qs³ŸuÒ=ÅÙkˆZTeЦ{[p*è½@‰s­oåÌ/s ß>ñök Æ_)&á¾TÈ4^ Èz’(ÀÞZ5´–ôû¿r^xcROŒýafu^Š_2×Qqd|9©$\.[   WÈU`ñ‘²öoòt;;ØÎõ^>„±mN"-ýêB­/z`ÂÁÙ,÷;ÖW@:òäš!1*Ž~oUðàƒ:Ãê£ô²ãœßáù±zÕCØ{·ð@WEüs0Ê{øÑffP¼ú-) »¸Lƒû2o4/"Ê7ῲж ÛâY¯xüV¬'Fuòƒj×|;x]+4 c›8æÉâ ï’ÁQˆ“ˆÄ™¡“%ãÜÒhœÔ½VÜKÃÚ>a'Wƒ™æÜ þ½<¦¯Ã–` "´º ?Úƒè…sðnQ7nÔ {ž%bÙˆ(Tö†—4 µ:ÏÀúß߯ž/ÿÂM“󵫿ÏÃV“б¤ÍàBFhMÁxwájLë\ aR1¼Ê Aï·¤¶}ñ7nñÙMAе|íRÄE‹Àß …ŽË#IŠâí‡4!B£«"(áº}~#Gà¸Ì+À|ÿ6N? Æ;Mý!rsÌS_xé´ÐYxè£XØêC÷'üàоõ+!Üö¢Ó>ÅÉËþhÔܱ¯B‰ªŠ+™ò»”KZIúã+§ojUòrz£?uÅ êÙÛK\¹æÝ°¦ ð•Éž‚UAYÛ÷BtOpòršµ r€ެ„€s7ñÈÀÏŸë”OÅŸƒö`Ǿ§P[WQÄ[˜s=#M*~™+ÿç×'¾~m¸t¿­BaÅáÍÇ×ù^6“WmÃÏ›üÐí¯Xr}õ}x…¡jn¤™€b91?Au~z´‰Eø/gѵ3vDöøwâGØÝl!η+–ƒ? ÈÛ]Páþ*ÜÐM@–xKusÿ4£O|3Ø-þ¥)Z Þ Éœì† ÷ÖàºnÞðâᎳ"!„ÈÃ}TbH%Yo¬¢@øhoYgòøC]cÑÃ&¾†G%ß@Ýç—³cî1?¼…MSãß=iPØ=I‡£0ú° ÓŠQÏÉôª@âo[Q9#ä:/qR6]~µõææF.ü²×Ÿgr !v6‚qFȵ"ú¹ „xËäFO~øÚ6a1Bþø1–5ú ËœµéUr#í[Æâ`¼»¢ijŽ`çØ¿ðçS1нYov¨ƒNƒ*¢„$~™ë;Ÿ>ñókÝå3ø©÷ý¶?Þ.ní»È!Rd*¶×µE¥Aê©x–Ó§aç¯24^4ëf R„·z£‹h0aÔYÜí ¦ÌÜà ?›x¶qþ·‘èpºôS.|½ ï´Æ-¤ÈËÐÞ©œ ò÷GDÌ;SDOÆGræNs­ÖÇWG¾៙ã£mh"@àìQÎÇà@¯ÀD´l€ÿScâÿÎàn‡(Tðà%Eé`=µ¡¢|õ¾ˆÂ*ჱ =ú"ü÷Aãë½øàÞö!8¢!JÈ~ÇC_’*èÔXƒ/>ÄçÕËyÖi¸b ºØ Ó·bi÷R`æ.TGñò{H¡÷P|UÖ¯ D!N¾‚\ÙŽ³ŽCêα­ÄH­å0‚û„£~/˜,”unNPÈ^P"ÔZ‚cŽƒE©†ÁÏ~"×7ç+ñOÕ %}Üs‡I†ínÇ©·Zâ³ãP®„ÄB¤¿´ÔðLGVk¤ÌÀVg?c%ôF°Ä„gJrv”*$þˆ²‘‹ÌÐé³Ñ_^É)ôFÔ …†W/ºñ• nô¤3Àh«'‘7BJ…cÌö^hš;w†”BÌ÷=ó=`zú×\ÇÅ[ñ鑘³¼ŠŠsé—ùÑ'a6~M&<ظs&ßFØ„®ÞÞ?s"Á'•Ã4¸r׌¶áö“BÆ» +‹â>À³œVdEZ—Ï:3àS¡ Š( 3!=ÕâÁ8Dðçw|Ѥ ~ 2ÚŒ!›³~þ²¡ ÙÙÁݽ¾RY•%d}‘Ò]}&ž:ò-ÿÌM´“cp>â^ÁŠ‹eL&øAƒ·LXsBƒÎ•=‹«rè/ÙaL:‹?‹ÑKG$ŽÜ…õ>@ßúÞ€‘'ãun+Ðßþ)~™b€ÈÏGB; ;RMYðxÓû(Wm~ÿŠÔ—±ìÃh8õ†í½Œøñ øå"3rOÐ{ØËYS®l?ò8D=OÇÚNˆG´u|Í”%€rln—k…*ŽÛWšï`íìÓ¨;¡7²ŒïÞhׯ€-‡ÓÀ9Ô÷ôØFÜ*Û •ó:'K×9cî¾Ó>ÁñZ‡¯9<ÝŸEíJ(㢟$OÁÑK^¨Ù14s L'ÇÜöAÿ îÁ{cª¡b)ëM™-°ätqBІµµ8¶ßqé– 8q ɶÛÛJCѰ†G³”åðì@d5ÓÓxÜÊ¥{‚ÿÎèÝë/¯ä”„¢AU-ΜÕÙµgº|c#÷ᆞ¿Lîô¤>{÷lÓ^$Eñvm-Î&賘P÷ߌjzwø¤å¨n`zå¿°#9ýªð Enï`Äò–(sá’u¹÷K¯}rgÒ<ÁqË1ùG=Z­û“†•€Äv|ùáÍÎþH\~*ÎþáøòŠéRÁ"ʉ%“ªx;k^Ÿáö}<•#ÀU°Wmð% "¾¼oM»°ý$vFç)üûlí ºéoüÍ7³Þ»wSðL±õ„Ž<½frèäܘ’â™4Ïuë*×…à÷c8ÿÄY‡ Ší[1¢íx`òÀ¾9¼ßZ%aчQö‡wѪ~ žW  QåÁ=™‘Á=ƒâ>¶ÍÁ‡=A2`jÛuÞ•?ƪiÀ-{âëõ'qG¦‡Å¬ÃӛDZîëˆrŽDït§R]XŠ~õ"1Ó0/lÀ˜†ÁéSÄ#:$š÷¯ª2 ÍULé9¹‰g Ìšœ]7]‡_D§Yýá0Pë/-Á‚”w1éÝ0'Îæƒš#ÇÁ{ZL\}Ô&˜ÔÖú†žCûoú¡¼Wö]ä‹¢¾j$%ê`±˜ðtß^|\o®j³ùD<þiVÄ?†LÃÁ¬Váúº½øq®ï}‘¹ç´! ë߇~ïÇ] »pׄ¥Ñ¸fæ  ³cnûGEP»ìSlúá®?0ÂÂY I¾=Ó!1§{D $¨ýÙ[ÏÇëâ©Ú‹FÛÿÆüŸåÙNí¤¨7¹è§xü¹á!ži9X´jÜܰ³çÞý¼<näJÊCÒWÿ`ͶTÈ´.ô'É#9…RÔŸTÊowaëqt&3T‰‰X1&>½k£œ/™œêI«ÁímG0÷«tZç³ÚPN߆ »Ò Ð8½÷þ=ŽŸ?JB™1uÎwãmÖ~vçnè`´LÏžâÌ H«T¥mv¾~™×H6}reÝÕ‹X³ õ0mÏ{hWǺ%¨Ý/P Q¼Ws4¼²sco㡊ƒE%ùحXrå ôí‘ñ23Ïr’âˆéã½C¶!~ß(t,:-îíý±C.BÒ»ÊK\ß󿂇Ÿèžaݰ}Ø{\•ž§×âþþS˜?ìüúÕC‰õ¤Žø^39š ɇ18Ï!˜T*ÜÝ{¿O€wÚ(g#·¸B=ŒùXÝk 6n}ˆ4…œÙ ÕÝŸ»S&È5«.Jyyè/®~×ÅXråÑ}¬é·Š:¡Odú»aÒ·›`t·Tüñ]24Äc,bd‹'ÊL,KJJB•*U111صkWz€Ü²œê‹°êMÐé£/1sDSg}P$¬ÆwÓÆòg¢àŽmûaÂŒÏѳº¿ÕQv¡Sñ¶Øâò‡ª²IyÅqj“ŒŸ,vq¢+¾åÀãÙÔ=· ±¿,æOâ¶’a*7ïŽQ3¾ÁÿšsHÃRbï€êYf¾©í"Õ˜ ½¶SFNÁâ=7¡ÅêtÆÇßÎŧï–yþÒŽS=¨lsYï×m¿dmƃ;1ûëD å&6|~»ö>…†ï2áhñQ®O=Œ›2ÂS}º+±òË8x\Ä(ÖèM|0¥$v}pOôDƒ€L;i.`ÅW'pè” &ëþí]§G¡Um\É¥²Ù}c \ýî(V»ÜÝ챜YeÊè¯òÄiüùÕ)¿¤ç„7·ÀˆIQDÌW&›ÀÈNO"©_=&‡ãP7ÇßôIW°vúqì?(ƒ€¤\Y4Û}z…„O°M&<>€ø%—pòè(ͤ¨Ò®ú|YÕBmöûçã—Î쯑®RodeN¿Ì˜ý F>².§/§¿f°àžÁ.rw¨òaIµ°@&<Üyë~½ˆÓg•0ð /·7E¿¼Z.g0¿d0  îŒBCn¶±+ì¼PòÝFón#fç”;ƒg þ*û%ãÅøT¡ív¼d·¯›¼ Ü3 {Xd0^#ŸzÝ® 60^dp‹¤¤$¦¡B³ ÓƒÁ`0 FŽ‚ûŒ·r…f¦ƒÁ`0 w°Ë ƒÁ`0ŒW—3÷111L;…€ØØX»½M™˜o2 ƒÁx=c \÷ØXsË_ç±bz`0 ƒñºÇ@ÙÁÒr ƒÁ`0ŒWÜ3 ƒÁ`0,¸g0 ÆK‹ÖŒÑQZ×2U0 ÆëÜ+â-@å#ED‹ñØx×èâD‚&)3û7GåPïôs„(S«úL˜‹ÍçRa2àቕ˜9¬ê• °Ö-Bp…Hô™±·tĬÄÛ&Ö¨%¶(^=˜-A P!^Á³|ˆ‹²î¾Ë#î-QÁ§¬§u.Ž@ Šçr=òÐF¯ªïÒ¾P>\Ïí¯%Ü?dÀç}T¨ZL@@Žò‘ÌÜÊAï0¼ï›0µ£AÖrÕ:ê°í~Öúy•3rØõ‘rk»2F¨Ð÷;î³—¡ Ú.ýªFQ s©&ô.*ƒ@舧xxˆ™ÃÔ¨W6S¦à *ô™aÂ-‡õå…Ž^öq!?ÆŠçu:~äˆh¡ÃÆ»®OÕ$™0³¿ •C­çå(SK…> Ø|ެqO?Èéýp> î³!¨öËã…89ˆÀ™4x|e3Fú¯Dÿ¾!Ùìx’)q£Ð²ßzøtŸ‹}·T05xrë­ˆÄãе^/ìPPîDŸF}1uo,ýÔF˜õÏpqÝ8”ß?‘âÊ1CeÁÆ™3’—4E±&}P×ÿ5ÐAöËýüô•ãpdµA­½QMâæØ«€­\%^"½ª¾çª¯R1æ’"Ršö7™Ñ¯¹³N ññš@¯ª\í3/¤¯y “ýåFŠ’ÈéË‹YË)ök(ü -µŽc7ç))¼›‘RmoŽ6w—Ó;±2‘å”Fê\LAónem×tKOu‹©h—Òµ ÑÉÔ±ž†Ö%xë„ÁÔ ¾ø(𙂓]¿ÎÄGì <“[Ì F‰ç„Ïv·#É¿4Ù¤'‡5çC–øR\Ø`Ð7¥t3q€ÎX×üKª_nôâ±{ìH(Y‚Îeñé^‚’‰'×.?‘C²ù´hmðÏ€^Â!¯• ZÆ ÆhÇ]üØzY~IxÑî|øáÜËc\®‰þú2Û³øh#N2Ëȶ^Œé`‡Ù_f½Ž,æî H dî‰]JÛ$Ë_œr.ØÆc|»ëDp›­¿x1²F}:ºñæJ ,Å/S0O64êÌá›còº·ïôbl§Ò2ëÞÃbööð2£A(ðÎ'TóË•hÇ]yf¯÷oy(¯]FÚ>Åc¶INÿÉz¬g“ñj‹ð&Tk©CýË"ÎzˆÖ-”Ðþï:Ô 64 î«Ã™>œãÈÇ00êÑ2:ºH«¢HÔaÞ3ÖSæ­¥"&ŒÐmnº¤•a¦W‰üù¦¶”©ßC’4Åã±ÒòÊËQ%õ™ù[¼~Gñv“mݘw€àØãÅC·§¥ÜáÆ§PèLhlßt íÉŽË?¿åð¤ #ØNʽfœ÷$ùã2…vÍ¿Èù’.,²¶uZRÌ1÷+‹Ú>üTŒñPE%ÍÜ ,þ¾–Þî}3Ý4`iðì·&4¾¦ô–ñùD öÒIÚ±â]~GCêõáQòªOk±ŸÖÄ"úötj5ý0ñ76žrŒVjq§‹f¬èGä:ë£9l”ÒÃKçÅ ˜¹·ñ”£¿L5ê8hâBÎ8ˆ<6‘¶~ì¦;j9è½Ã1ç2éç±62Þã¥1JZ¬6¬Ôçc‰¸ }>ÂF7õ ™]ŒÀÇì¼p><‡<”SËNc?ñÑŸv"¯C¤‹XÊÉ´’FÜn?GíÒíôøç>:í$â"ýò™›Z¥;hú~)º¬þ65nâ §ÿë£ÓÑø‹GNýeª—妹?‹äôJôçr7e˜ŠÛÍîå(û'ýk½H¯Dçé…vVJåR*“O¿Íg)§©á:n+É릻34óˆBcçEšÙÞF^æéÀ‰x^¢s»¼4ñÿ·?.»T:›É•¶IÖÖ#ˆy„£6Ýô+KD. ¯k§÷OÈÌðžðPV]mtÅ‘$úe’ÒïvÓg[DºÄ ‰Žÿä¥ñwÛèŽI>rFjXUÔï ¥(ÑÊa6ª3‚§‹bÅÎjéAì%‘v¬àhø6êõ¡s<.¯‚8ªÈ>c´RëûYZzX"S¤åOÚÈTßIýúøÓ"å³Qr'/Êè›®ÆÌ½ Qáï<½ÝÛF7 i'ЄÆvšv°ìÕÅkefz¯«ºþG @“;ù_5hì¦oϪ3÷1s¯<¸/~ï*øwsOzû§‹$­É­¤îi÷ÐÂÂø7†p»ž¥zWʯN§o'‡¤*T‰B}'gSöM÷Ñg…‹O9:+ úN ÚŠäý£ÛÒ]ô£³‚‚{•X"Qh¼rüÿ”ÙŸ§‹R©ÒÖJæ¶íáJÓž­™ÚÌ*ÝZ ›§3 ¼Ô®¶‹Ö9(69jȇ$Ѳþ6jÿA@ý%Kÿß:)QÐI¢%½lÔaNxÞ“³”Ñ‹§B)†\Z+u/’‹¿xä4XiÌfI6úº§z, Ö—÷G·šýr)•) OódÒ†óÔöm!là+˜ï¤æ#}¤h‚§®©úølxÐt›%$PQj—å î•¶INÿpà5;5ŸèàmÒ5¨È+bévƒ»‡×ŸÖ΀/YºE,ÝÍ`P·ð¼Ý ¨µ§TþˆrY´ÔI­þË™ Å}ÍdÖôYù{4è}w°¾ ÍMøÃí_vV*SžÒ;éÑÒ\ïÒÝ †åiaÍ›£GÚ/>ñ(³µûoð~,Þ_-â²ßêo1a¿Ëßþ2Øeyí_I›”Úµ{—~¬Á” Z(y—\éÎÀ|Ç?rcð|/­¨†ó®Tð®dì[aBí. '•y\©Š:‚¶A\òaâcrç˜qŠuÑô`j•€“” Þ‘Œ]ù&˜f:‘77ºLråUGqõ™ :5.Õ¢.Eƒä¤´T ’x n©Œ>¸ªðB-I©à¬ÉØõ‘;F:0ø¿RÅeñÛA̱+E‡iËMнâÂc¯±è6^Â?W[0´žÍUàά²x7-L)™hÕóŸød~ö¾úì)´ôéhZÝŽ£Eewú¤ÚhÕçE,\4GÞùû=ª¢¢Â¹ ÿùTÀÐvD sÊÏI!ï@ËTìG4@²L¢Kf`qì%^ԤŔ)àv&àv› Öñ8VGû—\Z4ðg|x¥Ÿ醀cÏR\Ø`4š2ð! Ü j%ˈšÀÀ˜Y$œcd$ËɯÅ]:¸E”KÔHŒÍ_¼rå"H‘pÞ ÔŒvb”R™¢ñ”¨EÌé¹ã†Q§Í`±ùˆˆóJŽþÓkðäwI˜ÞZÄì¤lhåÂèé>eËh—å…Â6)±kçn/òºz‘9ÝŒþ7—4˜A- áœCf/µƒà¶0¨¦‹#'bÖ C[ð|/-Ò-€Þ¢A‹^&Ì_lÀ±·½ØËAæHA'–¹« ¥ÇûI„&²ø¾£ïö¨XŸ&«9Õ'iЪ päoÄñX¶<¥U‘}–ø ‹!øF.ÊჯÒ8hJÑ UO>™oÀÞW½q™M«Ž•ƒb…v ºÚ¼5YƒE/{a}À„oQC¹«Ü>ÕÕ¿ 7[÷㜷䩸 ú´wcÍÆs(︒Ø,u/í)~1GE$ïÂ5ocÕÍã0¶¥I¥£òhÆ%·Ì`o'¸¤Dš¦”$lúJDZw=›¢¤EìE¼×ÇüLVKWôÏÔ”çx5ƒÚBL!¹Cf¬´ j™ gíròKp›5ÅÁN4¹$Àá‰Á_EÉ©en ]Ñó(’)OÁ#…pš©Ã‚B»CÞDô¨¦P„4Ÿ“„ƒ…©ð&á“ñ:ð‹ÜhÛ7䈻²Úe³M±ìš‡¾dqwô“ñÑ€€•“Ùµ […Ï-rÇ\¨­CSùx û¬t¸5|¶ÃÒX‡:V<Š_ ÒSú¤WAÉJ#p3>“P°À…›´¡AeɈqžMQÇcê^ÃÇãhå)å¨*ì³<¨ \‰0Õ×âf«—iЧ=aÍF©â²v'¸Œ˜ ¼»Õ‚NËY¼º ~Õè î='~A¥!jèKR’=i43§`u¡Üž¾}õÚ¾…C<Š?Èdi†7‡÷pîø6œµÔGu½ª¨ˆNbÑ¿¶£õ3CÐ@å)öäÅ n_o’ÂN<9½šGa–Í#œN—E,ÜÅàÞZ˜£¤Em'ᇓZ<û’Y™ þ^KA(«74kÑ/‹°hu¸³/ÜäþÀ€Ñ¢E¿V„¯dòž]Ãã\kn3G— ¬ˆo¦èüU”œf-h!aŶ`}yvshڈůœr™¢ñtyýlp½yY„UÛÃ)çf ›pØ­d¶ËîCn’ïŸ(þ×XS‹Ü‡Møt•Ívø°-¿]ÆÝG´)šþÉ%⳿9q×d c~¬†e´¨8úh5èS¦H´|p%ÂsBDA· ²'¡™Éau¡ü=¾u£^[?.‹Ïâo…³±>»„Õ¯»1v3†—îáW”ϬŸQ æå¹1ý;…, °„«ÇEÍ’üתÛiä—%GzE¹ækáv/ϱQ‚ÿÔ€úÜôÉžàSiˆè•ÖV2µfi'Ѧ‘VJÈ <‚R.-vû¼§xz±—R™âk õôÄLŽî ”1n>ˆ»=ô÷N62ûeª—㦯~õRÇêZrJõ7jo#“?of{7Íþ­ä¤–r]©ÛA_lôÐèl£ð¿œá2]9õg#G¶¶’— 6êòOgøxdŠÄÓeÊhç¦y½ÔQ¦~ç~/ïj§dÞ¤F÷© üä/I¢c«9ÓÕN5õ~-6ÊÎÑÆÂðÓ$bÚ¥œþãí#1ÛAÿž0ÉœèAwÞS<½ØÃF‰~YníÁÒŠSá)Ê'H´éß.º§õJ}I ôÈ»>*Tp¨X¥×!{ÚIŒÓAÊrO8Šÿ­ð“r`¥ôæNóž/B\FdÛí¥çúÙ©vB)OYy,}u Àg(µƒ,›Œ/™ÅQvI[«»h“«ôt¢ÛÃ8Š6^«±`,0D¥‹‡F“&MݺuÃÚµkÕ§Ÿ« U'×vrë{0þd{e€ñt¶NNÆÖÑþ}¨ri×ø´é-á£ýfÜm.‡¬*®M»¬ ¨úW¡B…Šk&R¿ýªâ/ †±Vi}RÊXß;tc¤]chgñVŒ¬*®M»¬ ¨úW¡BE%‚(U%AÔà^…ÚÉ£¡ä3Úþî’o»fI+Ž@ü‘ïÅ+3¼X±M‚@b}òžJÀÛOéPS~½vq=Û¥ *T¨Pƒ{** þcì®K0 ÷3aa?õÕ«”Ë»dEúõl—*®ŽM]³íÆü¥no4yU¨Á½ *T¨‹*TÜ@6u£õ Õ¨¸šÁýÌ™3qøða•¡kªNTT¨P¡B… *ÊÜ—¼•«âÚª•*T¨P¡B…ŠhP¿{¤B… *T¨P¡BÅu‚ˆ3÷ݺuSÙ¹0sæÌ ³MUTÛT¡B… *Tܘ1P¹‚{êG¬®„î-¿‘?b¥ò B… *T¨¸Ñc XP·å¨P¡B… *T¨Pq@ îU¨P¡B… *T¨Pƒ{*T¨Pñ—+à©?³**T¨Pqc÷öeÈe0a?3êß;Kþä#ÜHpÎÇ´áÐ8ÍP|& uZÞ‹¡ÏüKw"ÒRa>†Ô`Àhr±Ì®*)"È…ß½€þm3à×IÝìax}ÅQ°/·>œ]; ƒÚÜ ÀaªáÖnÏ`ñQ¥ ËãÏ`í›#»~µ+6S­~6~s-Îð$¿Ý‡\Æ †q*³»¹©òF»VA8=Ï c]Û¹iUІªÂ¹ÎÇ©£¿ ì!¹¢´•$÷ï ²Á+úg g6y1i¨MkZÁ0V0Œ ²Ý˜¶R‚'Ĺðg|˜ÜÛd¾f½9¬:^¾¢|¼„µoº‘]ßæ¯×ŠjõxøMŸ"Tu€û?p¡F‚rÎ¥B†Ô°‚ÑÄ¡'R¨Îmã1mŒ mê–Ê”ÒЉ¡S}8ÎÅY^EpôW÷ •á+®”ú³¡þ½–üùV÷a¦ w¢qšÿ uZ:1ô/–î¢(qYœvW^_r‡×fpŸÜëmùÈIÉA¾@D|n\8¸ãçcøÃŸã”z“€‚ü'pß°¯aðüï¸>Þ‹Ç7`ÎèF84ëiôo3«í²„ãÇakîã¸=IUPdgíÀÏSú`ô÷x|þn\öypùð×xD³/=0?8âáVÂ¥ïÇ¡ÃÃߣá¤ÕøÓÅÃë8ˆÃ%Ìê÷–]#õvùòÈŠuã²1xI F}±E¬>ö"v~9 ©ßFû'~„•*€ƒd=ÖÛ‘“òЗ$aËBÉ] h–%íz@ \7ÿ…tt½Ú^¤¶šux“ÙæJÔ¿OÀ°N,ÞÚ®Á“_UÃW*xW5,^‹ŸF;0è %ÃÙL¼ÅOmð›5^kÞi+àÑÎ,6ø3Eùˆ°nœƒ—0õE5±©ð±)Øù¥©ßºÑþ !ªªŠ: ¶Ns¡ã "œ’Rn +ƳؚkŒo|t(ԃÇ¡íܘü#ƒ%á¼+‚'ûÑ`½Ù#|(”â(¯¼]~¡2|Å•2uÈ·¥‚(’/Z0.Ñ‹á{eâ2  ŸÅ}Ãx˜ñ¿ã©ðñ)¸x< sFkqh‹þm\â²2ÚŠ«#àСCWþîÚµké[>å¤äP¾‚ œšCY5zÑj{p:ä=Êm9†Ö\)YEéÆðòˆD*\>”jgޤ5Ǿ•­óFC$¸}Žî¼ˆÎ !Üzƒššãä–?Jÿn[‹ú--"1äžó‹óèžÉ{ÈCq”çXK}k¶¦÷ŽûÂîòZ×ìKkÃÙxÊIq(³“hyã)§ .óÔ;ÑJÖH‘Ó*¹ U…ëU®ª¶™«ÒÖ )Hÿ6žrlôò¾ð|öõnʼ…¥\ñÿÇÞsPfO…NH”héÝ=S¤o¢(Ÿƒ§¾5íôÞq’ñAj]ÓÕUEdã©w7-ÞãUÌyárÕÎtÓšcqêI©üù&ï Ï'œòPV𓾳ÇQ^y9º^üBeøŠe §<”UÃ)—y(·¥›Ö\”/Îú£›Òòm,“Ý•WæëuܨàX0ʹçž&0Í…ŸßšáÉ—Ð9M®x)÷ÎÃyÏzôIy8,úÆnB·¹3Ð%M} Ê4 ¶¾ÿ=š>Þ7kƒ¯è›LÂïî8¹åþÀºS ‘—²”£AͽaXûNúâ(ÑÁ¨cÀDh=£3BÇT,#ž><ÛÝŽ$ÿÒd“žÖœYâKqaƒM@ß”ÒeÌÄ>8c]ó/©~¹Ñ‹Çî±#¡d :—ŧ{ J&ž\»xüD: ÉbäÓ¢µÁ?vx ‡¼V6h+£w óbëeù%áE»cðá‡s/q¹v$úëËlÏâ£<:É,#Ûvx1¦ƒf™õ:²˜»ƒ )¸c<&v)±‚`- IDATm“,qʹ`ñ]ìþ­Ám¶þâÅÈvvýõ5êèÆ›+¥ -kJe æÉ†F9|sL^÷ö^ŒíTZfÝ{XÌÞ^f4…ÞáDƒj~¹í¸+Ãìõþ-åµËHÛ¢Ø`Ì6Éé?Yõl2^mÞ„j-u¨YÄY/Qº…Úÿ]‡šîDÃྱ:œYàÃ91Ž| £Q|ÙUE¨Ã¼ f ¬§ÌJE>L+ ÛÜtI+ÃL¯=øóMm)S¿‡ $i¬‹£¼òrTI}fþ/†ßQ¼M¨F[7æ 8öxñÐíÅi)w¸ñé¶µ)¦oº†ödÇe„Ÿßò@xÒ„Îl'å^3Î{’db‡2Ø]$_Ò…EVÀ6¢NKŠ9æ~eQ;ЇŸŠ1ª¨€m9²ÎCÑ¡ïñïq¯âTÇhm Œ²cÙæt»'Ú¸–r/bõ?ÇbC—¹x»kšú¦oÔHö¾ßeF n1žÈ©3ÀaPç®!xóûø*[F«‡ïÌvœöÄQ^â]˜ðˆˆ×‡>ƒÏ:†Ë¢×Š[¿ÀÄ¡oB|dîJ¬@>8ÓÆð¨9!r©pMÄ3!ò¸ E^Æ$J…ë=’”\Ó ˜ð0ä'qÔ‘ ­ ÞëîÂûÄ~>ðµwkÚ¥FH‹Öÿ²úØ¡^ˆ%â,› ît"žÐzÐïQŠBe4†óñtB¼‡½x »Òp ÚSáu$cÙ?ÌÆb‹^‡|[©£÷ð GO/ô£-øÃ™ ÞQ _? Ìîé¿P Y‹uôÊP/ÄG,ø=ñÈ©ð“n{- g½)øs¹&uû<èõ°·½™„‹Þ\üÝ‚^èí¾²eM©LáÒGŠv Øxêšê Ï†.«st›% ¾xìRéVH6¨´Mrú€¯Ù©ùDXù]ª;è›K2/y©cš“VØâÈç·ƒÿMr— W~Vºó9_tTuĹý h•‹22\´²¨â·,é!Ü.–êÈÔyº@© åUGÙg 6³¥Tß µÒ„¤÷P›týà(£®ªm9Aœú7;éퟤ¸Œ§îiZX_å²»(yE«žkk§! Eâ‰è\¾›š6rÑü“ê¶œªß–ðB-I8ë)ìú(;FfaðOCß°£üáðÒZL|lr缃ûk¨sö±ŸÈx°¾Ü?g!¦ôm‰t³ú¤:È2ùóZaÕ‹_à¸/nõ 1üµ®ømÔ@¼üíœgEˆìyì]ú Y»Þ®|8þÑP ž3^Z±ç]k$ÇŸb9´¸¯™Ìš>+"½ïÖ—¡¹ ¸ý«JeŠÂSz'=ZZ‚ë]º›Á°<-B'AÓsôHûŇ#e¶vÿ­þÑÅû«E\öwý-&ìw…,›Ça—åµ%mRj×î]<ú±S&h¡ä]r¥;7óÿÈÁó¼´¢λRÁ»’±o… µ¸0tžTfTu>L|L@î3î¯Q±CI4=˜Z%à$¥‚w$cW¾ ¦™NäÍ.“\yUÁQ\}&AƒNKµ¨KÑ 9)$-Uƒ$^‚[*£®*ÎlK©à¬ÉØõ‘;F:0ø¿R9ã²Ê³;MŠÓ–› {Å…Ç^cÑm¼„®¶`h=5¼»ºÛr-L)™hÕóŸød~ö¾úì)´ôéhZÝŽ£E>¥„&>†ï;ÎÁ»=jªÛq”EuH­Ñ}îL ô4¨‘‡†§Ä.n5¨ÙóClù4‡¦uC]‹:Kôz÷Ì} í4-^bUZ·³fÅÅóñ|¯H·è¡·¤£E¯ç1ñ{{örÈ$™Â—¼5ÜS’e¢]2‹›`/ñ¢&-¦ìL·3·ûÛT°ŽÇ±:zÜà¸äÒ¢?ãÃ+ýH7{–â єPàfP+YFÔ&Mðrï9–AF²œüXÜ¥ƒ[D¹4@ÄØüÅ+§Q'¿<}Þ ÔLŒ¾„­H¦h<%j`Ñsz®@Äø†áGÔi3Xl>"â¼’£ÿô<ù]¦·1{„id¹0zºGÙ2Úey¡°MJìÚ¹Û‹¼®^dN7£ÿÍ% fPËB8'sÊ—à ¸- ªéâÈlj˜5CÄÅ<ßK‹t  ·hТ— ópìmo± ;RЉeî*¨Céñ~ᇉ,¾ïhÆ»=*Ö§ÉêANõI´êcÂÂEyÇ‹ýž8ÊSÊQÙg‰ß°‚ÿgäÒ¨>øj€L)´êiÂ'ó Øûª7 .Ó iuÂÑ¢«owW|TmÞš¬Á¢—½°>`ƒ·¨¡ÝÕîŸîëß…›­ûqÎ[òTÜ}Ú»±fã9(Wœ?aÆg§Q°àܤ 8G?¥/6Ø6 o †QÏ»‚1mëèáežÃ¦ŒÜQ·ç+øfçyðD âpjó‡x(é ØV]ÑÈGyEØg­ƒ·ZÂ'Ùw@ë~üÕÎ7–€Kn™ÁÞNp'2H‰4M)IØô•ˆ´îz46EI‹Ù‹x¯ù™&¬:–¯èŸ©)Ïñj:µ-„™~%¹Cf¬´ j™ gíròKp›5ÅÁN4¹$Àá‰Á_EÉ©en ]Ñó(’)OÁ#…pš©Ã‚ÂÒ=¢A?o"zTS(BšÏIÂÁÂTx “ðÉxøEn´írÄ]Yí² ˆÙ¦XvM„C_²¸»ƒúI‰øh@ÀJŽIƒìÚ„­ÇÂ}wLÀ…Ú:40Å‘—°ÏªA‡[¤C«X샒õX¤§$ôI¯‚:’•Fàf|&¡` 7iCƒÊ’— ã< <𢠱™u/ù_”UZžRŽªÂ>˃ÊðÁ•S}-n¶Šq™}ÚÖl”Æe•`w¡}é€#¦ïnµ Ór¯n#\O§¢þåƒ{ω_P`iˆú’”$dOÍÌ)X](·'BÄ…oD½¶oá ùü(ù·ûþ‚ÎÖ_¯ÜÞ0ÔG®^,ß\r‡„K[—àxÝÎhœ·X†\KS¼~(ÄËŠ°fÎ!ty*ÕGy5j ¡å4¶ :ÜG6ãt½TñäÅ n_o’ÂN<9½šGa–Í#¼dF—E,ÜÅàÞZ˜£¤Em'ᇓZ<û’Y™ þ^KA(«74kÑ/‹°hu¸³/Üäþ@ÕY´è׊ð•LÞ³kxœkmÀmæèrñíÏ¿Š’Ó¬Å-$¬Ø¬/ÏnM±ø•S.S4ž.o㱟 ®7/‹°j{ø åÜÌ¢a»•l˱û›äÀû'üÏò5µÈ}Ø„OW™Ñl‡ûØòÛeÜ}DA›¢éŸ\">û›wM–0æÇjX6A‹j£VƒÎC4Øò¡€‹Rð âú¹2†êQKG>=ƒ† [ŽŒpÚ¢‰ìƒª¢¥HÖãGIæA1èeCå 1õ`÷!×âÀ›‡e‚±ã"ÎZ4¨®£¼ªà(Þ>S¦H´|p%ÂsBDA· ²'¡™Éau¡ü=¾u£^[?.«»‹4¦ gyŒîãŇŒngÀ¬/ôX;šÃf{c²ŠÊî%xíg°gÕ;øÛ ‘0b îðæ†ÆObÁàÅûᵯÅI«¢ÀáÒ±Ÿ±øµÈu̇&UeœºG‹qOÃ0e &.ÜŽ³.|®ì\üúÞ…ž¯Cƒx&{ÓF¾Š•Øà=¸ôÇzÌy| þ¯á[x!+ÎÁÜãF%a^ÞØþݲ¶V½…‡ò>BÒ££µù*Цc™@غŸ ˆ„Ó«Y4Êpc³;Æ5ÐÇ_u㹯D¸Þ)aÛg,úMžyCê%S¯fÙ`Éò`¯pìàñ³F‡[—Î\É¥Emiеˆi/ñØvŠà“Û Nà°¥¬ç‚1 º½a‚aš O~&à´ð¹$ì\Ìáá©tºà¼=Þ2BzÕ…§¾pÖ n ¿}É¢ßà©7u¨ÁD‘ ÂOã]xéçÜø3Wœ½¦Pô<‹w7Hpò„‹ûx<; Ë(#îHP.“,On »¾á0d¼Ž æ©ûFMpcê2X@äûWx0h æ/ѤP·ˆÉc=X}ˆÀ‰€ç¢ˆ•ï{ñg3=šnÃQj—ÑGb´)’þ{½ÖƉi^#6îMÄ?îò/ó‡|²á# 軇Å×}8b|v «_wcì=f /Ýï(ŸY‹q£ÌËscúw" Y@` VyðP¤GQ}PUÔQÕPª°"^ÈbÞF —¸b>¸Æƒa¼HkDsåU%GJûL™&C*ÁW¼v {Vyð·A^$Œ0†Äe&\æÂk_ 8i%ˆáÒ1‹_s!{”ˆGæãË"}7‚/ÙxVÀK=9N°à­Üb›Iî`Âüa"ž|!à£f±Æd1žäc½é¤˜(½ygóÞ&*ôÉŸ€cÛý_z®_[ªà¿Ç’IYy/ÐWœñ¥{ÙúnÜSs"¿!-‘ûðBzºs#ÿ‰4ZªÙ*¦~w:줎˜ÜZÝtdÙ4z¨]&%èæV}èÙùûÈõT‰(º iÓ¿ÿF÷4Hºr-©Á=ôÈ»›¨P¨ ‚N 9A.$ú}Ž‹š%ù¯U·ÓÈ/E?_Q®ùßÚ_¸ÝKãsl”à?í¡~'7}²'øTâz¥µ•L­YÚÃI´i¤•r½t^,mCxZìöyOñôb/;¥2Å×ê9艙Ý(cÜ|9v{èïldöËT/ÇM_ýꥎÕ'$ù?rò›‡Fµ·‘ÉŸ7³½›fÿVrRK¹®Ôí /6zht¶ŒQø‹_Îp™®œú³‘£[[I‹Ë„uyާ3|<2Eâé2e´sÓ¼^ê(S¿s¿—ÆwµS²?oR#ûTÙI#%§î[Íј®vª©÷Ëh±QöpŽ6†Ÿ&Ó.åôo‰Ù¦úwðô€IæDºóžâéÅ6JôËrk–Vœ §HQ>A¢MÿvÑ= ¬WêKjà GÞõ)òA•^‡ìi'1N)Ë=ñèA’èä:ïë zI¥'ÛÔºÝIã?È*–A¯åÔC…õ¥ý Bß(³Žâ+ü¤X)½¹“Ƽç‹—Ùv{é¹~vªPÊSVK_¢ÄeQì.ÀÇË&ãKfq”]rumr•žNt{GÑÆk5Œ†¨tÑãðáÃhÒ¤  [·nX»v­úôs•¡êäàÁîCn}ÆŸLŠo{'âé&lœŒ­£ýûPåÒ®1ðqæ¾[·n*;×fΜt¶©Êƒj›*T¨P¡B…Š3*Wp@ýˆÕ5€Ð½å7òG¬TT¨P¡B… 7z  ê¶*T¨P¡B… *®¨Á½ *T¨P¡B… jp¯B… *þ²`<•ÃâgV¥B… *Ôàþ¯û2䦿b™½Œ÷2 ¦Œ÷Wv]äÆþz£F½Šï‘ ó1¤F#S¹ðû¢пm cFÝìax}ÅQ°€¼8·m>¦é6u“À0 F‹”†Ù:u9ŽsTźõ!—±‚aœÊä·û›!o´k„Óóœ0Öe±‹Vm¨*\‘ë|œ:úËø•¿\QÚJ@•ЮèŸ%œÙäŤ¡N4­iÃXÁ064ÈvcÚJ ž—ÁŸñaro’ýùšõæ°êLxùŠòñÖ¾éFv}›¿^+ªÕwâá7}8ÃÇ–¡*êöàBg>܇!5¬`4qè‰ê€sÛxLãB›º¥2¥4tbèTŽsq–WýÕý‚ý:õå婬~¦*ù¬ÈUpÿ Ü—É}°Þ–œ”k°.ÉŠ­Óº£ã ;à”ÕR!VŒ‡­¹ãö¤PçïÀÏSú`ô÷x|þn\öypùð×xD³/=0?88Ö`h»‡1ùÇTŒøèœwñ<—±oñÓh°~$²Gä£PªJýè±Þ–X5ú)/$ [ŠHîb@³„(i×åºù/¤£ëÕö"µÕ¬Ãû›ÌÈ6W¢þ}†ubñÖv žüª.¸RÁ»ªaùóZü4ÚA_HJ\]ÀÄûXüÔ6¿YSáµ&á¶íÌb³#ÀU)ÉG„u㜼„Á¨/ª¡ˆM…MÁÎ/ HýÖöO°Fq›UQ$ÂÖi.t|A„S©ß”+Ƴؚk ÷áÑàP¨‡CÛ¹1ùG#>JÂyW*O ö-6¢Áz7²GøŠ}¼ÒòÊËÑõà’¯Sx#øÞ¿°îÔàþ¯ çf¼•ßnúÂÁYBѪ§ñø–î˜;½3ª‡hžÝþž=ü¾™;›ÖD‚ÎˆÔÆ=1ùãÉhX~B#LÎÿÿèÚé=´Æddf ÄÔ/^Gæÿ>—ªù`AÄÂ߀Nƒ´°DI»^eUqÛz‚/kÁ¸û´¸Éè-´|À„E Ø=Í‹}žâûN|ÎaiK3½¬GãÀ¢E—1§¥Ï~^ú (ŸKÀÿ-c0õk3FvÔ F K`pK#þ½8iùüÅWUEp x+_‹7%(~À*ZÅâñ-zÌ®óá1¡PHÐ`r¾ÿèªEºÐdf0õ‹dþÏ[êã•”W^ŽT¨PQIÁ}¤í"réWÒr°h÷R<ÛýV$1 &MzNÆšó‚Ìý9˜¿e.†ß‘†Ñ¢FÛ¿aÞ{fã¡ÛSÀ0 RîOÿð„Œ n^2y­jBË0`Œµq×°ÿ`ëe)¸Ž”¾Ø`Û€¾)Œ ƒÄëàô¼Ö_fad»:0úÛÙ¨ã#xså±âm(¥•Ás"†<þòì;çal§ú0—lk¹gfo·!xb†àÜû)Æå6D"ÀaѨó3øæÅ“‰¹˜·a.Ö3*›ð)úÆnB·¹3Ð%-Tíl}ÿ{4}¼nÖ_Ñ7™„ßÝëÑ'Å« ìQLm^§äq@HÊ@²îê²ç„Ïv·#É¿<ܤ'‡5çíÕ‡Ü6ØôM±^YNàƒ3Ö5ÿ²Ü—½xì;J– sY|º—é̵‹ÇO¤Ã,F>-Zü3`‡—pÈkeƒ–±‚1Úq×0/¶^‘ÑßÖE»cðQ_ìå1.׎D}™íY|´‘G'™¥HÛ/Æt°Ãì/³^Gsw$²wŒÇÄ.¥m’å/N9lã1¾‹Ý¿u"¸ÍÖ_¼ÙΣ¿¾FÝxs¥Ô·•ÊÌ“ :søæ˜¼îí;½Û©´Ìº÷°˜½=¼Ìh ¼3‰Õür%ÚqW‡Ùëý[Êk—‘¶D±Á˜m’Ó²ëÙd¼Ú"¼ ÕZêPÿ²ˆ³^¢„u %´ÿ»5Ý“†Á}cu8³À‡sbùFÀDŸÑ1ÐEºXu@¢ó6˜1°£Ð‡û0a¬€nsÐ%­ 3JôàÏ7µ¥Lý‚¤)öñJË+/G•ÔgæoñbøÅÛ„j´ucÞ‚cÝ^œ–r‡ŸþÒƒ”ø¦ªB¤í"1¶Åª‚£XcBß­hÜÓ'Çãçeu"'WYLéÿ–—ÆýÊ¢và¸u*6/ñͲàСCWþîÚµké[>å¤äP¾‚!—n˧c5jqç@š±ö0]âxrÝF³óÒ)¥Çb:/†æM¢Ö÷?OK[Éãϧ9ŽQþ¸[(¹Ó§tF¹×J}>ø•α>â.ì¢ÏG4¤›ú~K…"Ån;±{ß ì[zÓ¿ÖŸ$‡—£‹¿/§Ú™È/+Ï/4gÀÍaòpûgPvZcöÁ&:nó×qš~›?žîÎÌ¥™G¼Wòy½G9µZÑØO~¦?í%ù&PNÓÆ”h nkD(ï Ä"Z9,ƒêŒøŽ.Š2÷p;ib‹öôŸ5Ó¸Nõ( ÀDw>Ho¬=K|Ä‚b/¤+Þ¥áw4¤^%/U"Û&O9F+µ¸ÓE3Ö t‰#rõÑœ6Jéá ±7žrRò\ź¦¿L5ê8hâBÎ8ˆ<6‘¶~ì¦;j9è½Ã±Z/ÑÏcmd¼ÇKb”´Xm0X©Ï>:Çqú|„nêˇػ<³óÂùðòPN-;ýÄGÚ‰¼‘v,b)'ÓJ}p;¸ýµK·ÓãŸûè´“ˆwˆôËgnj•î éû¥è²úÛÔ¸‰ƒžþ¯NGã/9õ—©^–›æþ,’Ó+ÑŸËÝ”a*n7»—£ì[œô¯õ"9¼]ü§ÚY (•K©Lr<ý6Ÿ¥œ¦vJ4†ó”f§aøè¸­$¯›îÎtÐÌ# if{ux™§$ây‰ÎíòÒÄÿÜþ¸ìR攦ÅÓ&Y[ æŽÚ4vÓ¯,¹|4¼®Þ?žÏwÂCYu]´ÑG>’è—IvJ¿ÛMŸméG$x$:þ“—Æßm£;&ùÈ©aUQ‡RßsŇK´r˜êŒàý>\Á=JÍ-P2`/‰´cGÃï°Q¯Ř>>¸¼ â¨"ûŒÑJ­ïgiéa‰âü*˜ß“š\O""é"-ëŸIí?8A¾°|]ɤ­èà^¤¢UÃ)#c­,åﱯ¦^PµÌ®ôòÒ½tÞí#Þqš~[ðOÊN«O£V_¤ÐqšÛõ,Õ+~€êÔyúvrHTiˆÜë¬4è;)D?Ý–î ±·r÷:+=°D ãáøÿ9(³?OK*çšÒÖJæ¶íáJÓž­™ÚÌKu.—ç x©]mWˆ½Gàã GÍù$ZÖßFí?Cì¨ð['%êÚ!I´¤—:Ì Ï{r¶ƒ2zñT(ÅKk¥®óEbñœ+Ù,ÉB_÷´QERHßæèV³_.¥2Eá©`¾“LÚpžÚ¾-„@óÔ|¤ í®©úølxÐt›%d€Sj—å î•¶INÿpà5;5Ÿèìlž¥z2už.(òñaåUGÙg 6³E z`k¥ I;î¡6é.1Gßt-÷JÆ…«É‘Rßϸ¯Ô'ÇãçËØ—E«žkk§! Eâ‰è\¾›š6rÑü“Êî7¸¯œ=÷–æèÝ&%h)ÎÞ5¼…pŠ¡û¡SãÒ ‡º” $'…¤¥f"‰¿wŒum¹:Œl!‚‚6²¿'½ïN Ú›dhþ2þ(Ù†Mž›š"-Pö–îÎÀ°¼†0U¤EzN¤ý²G<؃Xº=ƒ»× ù<°é¡eoR–.­ÅÄÇÖ!wÎ;¸¿FuÖ—‚ûç,Ä”¾-‘nÖAŸTYCf ^+¬zñ ÷ßbj5'Iï8‹]ù`šÙ ysOÀw5öäX´è݆ Ñi^)ÜÞÊ ³yÙLØ>¶Ìû ¸i;ƒÇ ’H/9óú°üŒ:k®è\.-î=ufFV ·w9>Ò5¨È+bévƒ»‡×ŸÖ΀{€Ý"–îf0¨[xÞŒîÔÚS*D¹,Z ê¤VŠåLÐâ¾f2kú¬ˆü=ô¾› éÛ&üáN*îÛJeŠÂSz'}pe‹Ë–§ ñ@zŽi¿øŠ}€[»ÿVÿèÇâýÕ".û;•þö»’‚}SvY^ûWÒ&¥víÞåÁ£k0e‚JÞ%Wºs#0ßñÜ<ŸÁK+ªá¼+¼+ûV˜P{ CçIeöUUQG°÷aâcrç˜qŠuÑô`j•€“” Þ‘Œ]ù&˜f:‘77ºLråUGqõ™ :5fb ’“BÒR5Hâ%1Gßt-Bɸpµ9Râ»ã÷•úäxü|YÇë¦-7A÷Š ½Æ¢Ûx ÿ\mÁÐzWkÏ}™¼ŸI¦w¬ÕC#·s‰1ÀbÈËhÀÈ¥Qð½ü™Ux¥ßH7”î¥gRúbƒF‰T¢çÝ&ÔLÔ–Q]°<‚ç vb|C}i{ü?mÆ£Ø|ä ÎóÅù ÜfÔ’Ùœ®I¬KEjDº„&>†ï;ÎÁ»=jFV¶ÆŒÔ-ÑçÎÔATƒÙyhxúGáä‡9}Rm´êó".Œ#ï|€ýž«à´ É’¦e*Ö¸5@²L¢Kf`qì%ŽË¤Å”)àv&àv› Öñ8VGû:±\Z4ðg|x¥Ÿé†Ò½xLŠ l·w%|„7ƒZÉ2¢&00f çXÉròk`q—:îˆri€‰±ù‹WN£\)λš‰Ñú¿B™¢ñ”¨ î¯á\ˆñ Úîÿi3Xl>"û€XÐkðäwI˜ÞZÄì¤lhåÂèé>eËh—å…Â6)±kçn/òºz‘9ÝŒþ7—4˜A- áœCf/µƒà¶0¨¦‹#'bÖ C[ð|¯âCõ Zô2aþb޽íÅ^.pqÀÞWwÔ¡ô¨;‰ðÃDßw4ãÝëÓdõ §ú$ Zõ1aá"޼ãèãeËSÊQÙg‰ß°‚ÿgäÒ¨>øZD<ãäÕâH‰ïŽsœSä“ãñó倮¶oMÖ`ÑË^X0áÁ[*OÝåv!Ayº#é*)ÿÞë3 ù™ÏaÕ1¼"ˆ@ñ%©­†t ‡BWMíê’Q;³Jðow þy¿Cjþ|7 dF]‰³W,ŸÎŸ0ã³Ó(XðnÒ†>•¼dœ‹ežL´­£‡O”{øR6g–Ø,u/í)~‰êz„\rË öv‚;‘AJ¤iJI¦¯D¤u×£±)JZT{ñ^7ò3MXu,^1D© òÑ¥cPÛB( 2$wÈlŒ–A-3á¬]N~ n³¦8؉&—8<1ø«(9µ Ò-@¡+zE2E㉣àþªcP;S‡…þv‡þ¼‰Å>@‰i:<>'  Sá)LÂ'ãuà¹Ñ¶¯§„ °Ë2 f›bÙ5}Éâîè'%â£+9& ²k¶ ÷AÜ1jëÐÀG>^Â>«n ÷_–Æ:Ô±Š(àQübhž’Ð'½ êHVêÃÌøLBÁnÒ†L%/ÞÅy.v4=Dõñ:Ô½$†ûøhå)å¨*ì³\1G%øàЉ×eâ2ºJqYp¤ÄwÇ;Î)ñÉñøùr€;àÁˆ©À»[-贜ūÛ•u¬²à^›ˆšÆK8\Ø ¶+ñûÕøº!÷~8٠Ͼ4Y™É0ø¥ Á !B|J¡éææx Å¬Øv1èiÏîIhÚè)üïl‚¹ò²Š°j»-DYçæÇѰÉsØí)®·_Ö,Z}BHôsyÛRì¯H>“À’̃†-9)9È·ˆÖ£OÍúèÑՋ囋BÞ—pië¯ÛP|ú¥Þ<î¹ãÛpÖRÕõ×øä…œ-(¸·ˆ¯7Iaoן^Í£0Ë€æ޲£Ë"îbpï@-ÌQÒ¢¶“ðÃI-ž}É€¬L&ÀÞIÖÞ•Ù«ý²‹VK÷ 7ù°/0`´hѯá+™¼g×ð8×Ú€ÛÌÑå+âÛŸ):%§Y‹ZHX±M éÛš6b‹û¶B™¢ñtyÜ_ÍZäeVmwØÎÍ,6áŠ}@,Ø}ÈMràýÅÿkj‘û° Ÿ®2£Ùö±å·Ë¸ûˆ‚6EÓ?¹D|ö7'îš,aÌÕ°l‚ÕG­‡h°åC¥à™ëõsd Õ£–6Ž|z -¶ 7÷§-Ԉ䫪¢Å>\%™ Ä–ˆœòmñ=,Äԃ݇\‹o–v‹8kÑùø˜åUGñö™2Å•àƒËý4঑p¸08Ù¶Ãw•â²ø8’Ëøî8Ç9E>9?_ÆC8Ëct->´`t;f}¡ÇÚÑ6ÛãˆC*<¸7·@ÿ6g1ë•ÏñÛ9‚׆£ëÞÁØ)AÚ«`DæÆèÚঽô¶rÀ'ñ°ØŒ'L–Ð3ƒt©ÈL(ÀÖý— ˆ,N¯~2Áfî&ôš6EÏ»NÂÉ{pqß"<;âCXFýwÄûQ!& Ýß‹¢ aê²½¸ÀйBì_1 ƒ~æ/>¦â|ÝÞx†iýðägÛpÚÉÃç>‡]ßLÆñ?c®†—0¢Å¸§a˜2nÇY—>Wv.~ýGïBÏׇ¡A‰fáåOaÞÆ#¸Ä ¹"\ó/ 0)cŸB3®]èd&¶î'"áôj2ÜØìŽq tÀñWÝxî+.€wJØö‹~Ó€gÞУz‰Þ<"^ͲÁ’åÁ^àØÁãg¶.U¬\ZÔö‘]ˆ˜öm§> °ðá.ÜÞãð@ÝÞ0Á0Í…'?pÚ ø\v.æððT :]pÞo!½êÂS_8ë·„ß¾dÑo ðÔ›:Ô`¢È á§ñ.¼ôˆsîü™+HN ƒ^Ó (zžÅ»$8yÂÅ}<žá…e”±¸o+”I–'·„]ßp2^î¯ ƒîoQ4Á©ËD\`‘#ì_áÁ <š¿h,öJà1y¬«8ð\±ò}/þl¦GÓ@ߤÔ.+¢ÄhS$ý;÷z1¬Ó¼FlÜ›ˆÜå_:ùcÃGÐw‹!¯ûpÄøìV¿îÆØ=zÌ^ºVQ>³ãF1˜—çÆôïD²€À¬òà¡<IÑ:НªŠ:ªJõVÄËYÌÛ(áWlÃ×x0l€)cW|¼¢òª’#¥}¦L1G%ø`”¿MýÛH˜õŠ¿#^ÂÑuŒ"^¥¸,Ž"ùNïŽsœSä“ãñó%6.·Å.‚\Ï x©'‡Â ¼•[ÜO’;˜0˜ˆ'_ø[¬8$(}×Wð½ÐýVJ°PÃ.ÏÐ’]_Q' ôèH[>å\9A%äÄ™Ðôò¤‘÷Ôrz±WsJeН%ÔëDOÌ|ƒî ­›8ú}Î`j–ä/£zkùå1ÿ›ÓnœA¶®IZ€Ð€º<·œÎðQÚ-$rîÿ’ÆwmLÉþëIî¥qŸî 9e@"Çîéïê“ ÀHíFѼ_PÇ2£ž`t¥ rm!ù“u"Þ#‘ûðBzºs#²h©f«<šúÝéÒ·Ì%–N®›EãûÞIõ’ÿý&ªu{OÿɲŠTiåÁÆSΕÓBÞ¤—K'‰~Ÿã¢fIþkÕí4òË’£Ý¢\ó¿Á¾p»—ÆçØ(ÁÚCýNnúdOðÛúÄ ôJk+™Z³´‡“hÓH+%äÍ%—»}ÞS<½ØËN©Lñµ„zzb&GwÊ7DŽÝú{'™ý2ÕËqÓW¿z©cu- ±%ëoÕÞF&ÞÌönšý[É©äºR·ƒ¾Øè¡ÑÙ62Fá/~9ÃeºrêÏFŽlm%-.lÔå9¾´o+’)O—)£›æmôRG™úû½4þÿ·wïÁQ•wÇŸC.äžÀ!A•ˆ‹7°P š8±H"ŽL¡¶Äj#µSªrñ2XñÚº¶ƒ8hE§Å»‰˜ilKêH­‚¢$4…Æ\*(Ɇl’Ýlöí,°¹o.²KòýÌìLf÷Ýsξ¿³gŸ³y÷=évïm;¾ÎÜþg·ÿ³Iy<¦l[£Y’n7‰aÞ×]k¦-j4ïi?³B·ûeGõïé{¤Ûmê¤þu.s]„o­ÚÞZ÷³ÜeVdÖšïk9?³Ál.oßE~µs{ÌŽß×›¤ÔœZ_lJ¹ùÉfsÄÝ}¾õu´Û;ß—ûôœžÔÁã1‡ ›Ì²¬:3&öôÌ6I7ËžwŸ>Æ÷¤®}¬C¿½gü}tòÞèõ1¸‹ão_5W¹Ì½×ÔšXoÆý¨Á¼ñ±ÓÌèíç™è£n?‹»9v÷âsÎßc²ßÇyŸÏµÖõìàuý±ÑL;¹]ÃëÍŽúÓ³ ]Ün{;Ζcsú%%%JMM•$edd¨  @,jý`oVÚØ&-;܃±²’ÔØ¢_¥Ö©xU¼Šs¼ãP;º/ȸö7éÒ9mø,JWFõáµ"8÷Ëoå_òÔ‚%…Òe8[YVÍ]ßö„^®o‰]¡Kü¸/È|?ÚÙ?¯Á¹_~¨?ô+c†õø9„{ ª¾ÇN^RÚûvÉ« ‚oIû¯UšçÔ}:µù’bƆj^n¤Ë U"_¿¯¼_ú„ptÅ;Ý€dYš¡MÙÔ9 ¡¼ãC²_A} ï—Ì>´Ûß}Œ9«NnÛëá8YÑ>5ØÞÈpo³ÙTRRBjB?ô*ÜŸüU.‚5¡º2„.†N¿¹ÏÈÈ w‚€Ífk5·)ý€‡{I\Ä*´[>˜/b€®1, Ü ÜP¸·ç+mXšòí}XS_—aÏWšeɲú¸iRÅŽ ºgÁ ].˲dYñJ™¶@kÞ9¬&ÓQ¿µ½µïGWÅ­šsâ½Ë›8gµ¶T¸Ú­>PíÐá>ÄÏUQmžf&P4ÕhጭýçXýòå}úªÞ%W}©Þ¾{¢vçLÕ/–ËíÛ>a¦òjŒñ½µº|µ±ïÐof-ÖîËžÔž§œ5{ôÄe»´xörí¬3o€îÑZäw´úÍguû¬ tnt˜Â¢GhÒu+õʦ9údÍÓú´©' sëÐÆåzkÒ3zeu¦&$„+¬Sù¿évWÔôñ‘í–9~ºFVëPSÛ ŸÂ}WÌQm½Û¦ÐÞÒS‹¦è¼˜0…Åž§)?µ)ïþ!²Ý½UGý6?WEÎcÊ»í Œ UĹ“õ“‡Wjü‡›´ÏA‘üçÔÁ—ÿ¢¦¹‹t‘O^©¸«Õ?¾qÊå¨Ô{NÒî[®RÎæ£'þ»â¶«º>ZIqí¯i7RQŽ*Õ¹Øg Ü;>×[Ÿ$éÆŒQm.uªQ×ܤ¤½yú¼¡—5\CŽîü?Ó’ãã'´ø¹Ý×dEúœ8; ~1SãÂ5B“²ÔkÏMUáê*kîn¹–,¿Ö¨vèŸpßbWuC´FÅwðÍk|²¢ýüæÕU±E÷eO#Â}¦jLÈÒöZKCøÉ¯_Áþø'Oi^ºM£yZ× é68Ÿš­qEúw£¤Ðx%E;TÝA±ÜuÕrD'+.4€ípÂ}H¼’¢ª´wÎì•rDùÎ\¥zjîBåþ­¶”ÕÊÙâ“Ï´—~æz‡¼”£+¯zLa÷¼£ 7$+įçÉò–?"EÓ’ÿ§â²ÆvÍËŠõUò4¥D°ú7Ü[Ö‰<ØJô…Êž\¥—·U´™²Ð­Êw_Uõ%YúnT7Ëh,ÕßOÔò•óuùèx…{·È¸r3Íy×ù¼~¿^øÙ嚲ꘖ¼·_ùw]®8ߊÚó•s¡)m;öÆ£¯‹ßÔ¡1³•%)d¤fÏOÖ®õEúÚ÷Ìž¯UôìnZ0[I!l€~ ÷¡Ã4:²JÅŸ}#wKƒ¾Üv‡ÆºY;•¹öNyÈVÒá–ÛQ©=/-Söý-Ê}8SçXÝ,ÃLPzÊ~­Yù‚>(¯S³Ç¥ÚC;µþ®{´ë8ê$Öëø¾ Zxé4­qæêý}¯ëÎ) 'ŠÙöJÀŽ/´òÆ;õü®2s¶Èí¨Ò¿^½W×/ýTs×.ÔØPI Ó¸›SÖÞ[5ÿ¡m:hoV³ý ¶=4_K÷féÑE)ÞßTªü‹‰>8pêïôôtŸGÍÏÜd&ÆÊH2~‰ùùKeÆiŒ1¦ÅÔìYgn™>ÚDHFŠ0£§ßbÖí©1-¾ ïbÎò·ÍŠ_h†Y'‹3ÃÜaû¹B2ÒL“WkŒ©Í33å}îÉûkR÷®¹.âd_ttóö§Ñü÷ïë̯çM5)q։dž 3ÒrŒmçÓÜf]ÎòÍfEæù&F2RŒ9?s…Ù\îl·MhçÛƒQë|Þ1˘ÓeJJJ”šš*IÊÈÈPAAg?FMÚ÷À`äOd.`€ Ü„{„{ý®Ó™m6›JJJè¡ BMЫpÏÌ$Á‡š + ˈVßÜçææÒ#ÀYªÕE¬œ½–îîîîÂ=€à÷ip½ÔÒTIEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fasta_clipping_histogram_1.png000066400000000000000000000067461226234573700276000ustar00rootroot00000000000000‰PNG  IHDRè¼zýsRGB®ÎéaPLTEÿÿÿüþüfœf”jœT–¼´ÎÜÄÚ䌺Ì,‚¬$z¤„²Ì¤ÆÜL–´r¤äîôüúül¦Ä nœDŽ´4†¬Üêôìòô”ºÌÔâìœÂÔ,vœ bŒL†¤äê쌶Ìb”bŒ^Œäêôn”„¦¼ÌÞìt¦ÄZ„R|FlFdVt¼ÎÜôöüÜæì|ªÄtªÄ¬ÎÜNt¤¾Ì^„>\$Zt V|l’¬V„<Š´JlBd¬¾ÌìöôŒ¦¼|ž¬´ÂÌìîôTtš¬}¬Ž­ÑõÀFýúc°“Ï£þùzã~´ïçxƒR¿^óvb¼üôþEôSo®~,ÓÏ›€JzãúUèeæóè Òõ,\:ïW»eþÐbö½±!ôw¡O΢_'ÐÃY÷Ñ®vã¬{Œþ¾²‹ÞúûÉÝ­ÿÁc4Ïê—ëEõ~TŽ1!–éõ*WŒ?ŽÎºGóëôÝýŸÛú{Y¿Ì®oŸ‰â[`A=ÃCký ëHÐWÿžúƒAùë]:A t>IÚfßt tÐ¥dÐtÉD]]è’£K2Ñ%™è’–NôýtpítéØý÷W<»]:þ®;èRú]÷á'ùç KÚgÇ襘èRò‰Õ7ép2NÊvŒþêÊ$. tIï;F]tÉ®»$]è’@—ä]’‰.n¢K&:èè’@—ä]’‰. tI K ƒ.ºº$Ð%. tI K]t tÐ%ÐA—@—t è?oîýÑ¥Ôпÿþi\€.å™è K©¡wLtIûlUè6œÒ±ÑÃÉ8)ý®ûË+“º$Ð%. tI K ƒ.ºº$Ð%. tI K]t tÐ%ÐA—@—º$Ð%. t tÐ%ÐA—@]]è’@—º$Ð%.zk9ï.å†þm<†+Dýt)ÃD¿p]Ê ½iü ]Ò>[2Ñg¡ÛpJÇ>F'ã¤ô»îï_™$Ð%. t tÐ%ÐA—@—º$Ð%. tI K ƒ.º:èè’@—º$еN_3y„@=ôÿŸ:è ƒ.к@è]  t.к@è ƒ:è ƒº@è] kwÐcþtÐupè׋ï«Ô.@]&ú…3è +7ôˆ˜®#7Ý#tä–£›è&º£‡“q +ý®ûûW&к@è]  tÐAtÐA]  t.к@è]  t.ÐAô^èÞ`tºÙº@÷X‚.к@è]  t.ÐAtÐAtÐAtÐAè]  t.к@è] ƒ:è ƒ:è §‚þóöèÞtÐSCÿ6þû§qúNùvÿ~7ÐA¿IÝœ=9ôŸý÷gе¿æPn»¤öÒ’côRLtÝDO}ŒeØ,8:èiwÝß¿2.к@ètÐAtÐAtÐAèuк@è]  t.ÐAtÐAtÐAtÐAt.к@è]  tÐAè ƒ:è ƒ:è ƒº@è]  t.к@è ƒ:è ƒ:è ƒžzÌ_€:è‡ñ³l<¹tÐSLtÐAô﹯Ý5‡rÛ%µ—LtÝD7ѯÇèádè §ßuÿʺ@è]  tÐAtÐAtÐA] {ÔAè]  t.к@tÐAtÐAtÐAtк@è]  t.ÐA] ƒ:è ƒ:è ƒ:è]  t®пfòü€® ÐÍ~кçt.к@èzÍfxtÐAO=†? ÐA=ÏDtÐÏ>ѵ¿æ¨íeIm›]wÝD7ÑŒô“Aïʺ@è]  tÐAtÐAtÐA] ƒº@t.к@ètÐAtÐAtÐAtÐAè ƒ.к@è] ƒº@tÐAtÐAtÐ:è  tÏè]  t.Ð:è ƒ:è ƒ:è '†îýÑA=?ô.£~:è ç€ ƒzzèMãWèÚ_sÔö²¤¶mÑ6!LtÝDw2Îã :臇þÞ• t.к@è ƒ:è ƒ:è ƒº@t:è]  t.Ð:è ƒ:è ƒ:è ƒ:è ƒ.ÐA]  t.к@t:è ƒ:è ƒ:è  tÐAèžÐº@è]  tÐ÷ýk&Ï$ègäÛÍâ0ÐÍ~ÐuØ9 ú¡{tÐAÏ=âç Q¿tÐ3@¿ptÐsCˆèzWs,2/©WZºU0ÑMtÝÉ8úÑ¡¿uetÐA] ƒº@tÐAtÐAtÐ:è  tÐAè ƒ.Ð:è  tÐAtÐAtÐAtÐA] ƒº@t:è ƒ.ÐA] ƒ:è ƒ:è ƒ:ètÐ:è  tÐAt:ètÐAtÐAtÐCï:èé¡Çð§q:è 'ÙutÐóC2]ïjŽEæ%õJK7 &º‰n¢ç>F¿lœŒôäÇèï\™@tÐAè ƒ.ÐAtÐAtÐAt:èzÆw&к9 º@tÐAtÐAtÐAtÐ:è  _ÐAtÐAt:ètÐAtÐAôÏ,Ùý£?t³tÐAtÐAt:èçãë÷Æ€º9mIÐAÝ’ ƒº%AtÐOz¾gÐOµ$”;~ª×Ò&ÐãŒ|KýdÐcX9ZŽïŠýUè_Ïoökã%û§¯9m“ðüyÿìësÐ%í³5¡—î‰^º·ƒ«,)­vÞû̯Oÿ¯&I’$%,.§í: úN#l´Î¾%/ m°dl°d÷­÷=žËn}‹uzŽöê\$Zt V|l’¬V„<Š´JlBd¬¾ÌìöôŒ¦¼|ž¬´ÂÌìîôTtš¬<ï7ÙŸ×ý˜ß¿ßÏtпsŽþìÇØãÇ·‘xòñäýì°5yÜؘüìËÇ1ÿñ ô…ýXÞÏéeþq‹NL×Ý¿@ýËԗϾ^?^4,@_xü,ô¡ðq ô…Òý*\¼Ùîì„=ªöãõóô/ÎßcÒ^Gò™ß~iê>÷¸9è‹S÷aiê¾2ôxV8»ÿ ƒžåbÜìHýfÅëRñÊ þöêeJ^šWŒð=ž/õÏïÿ ÐNõAýÐcz®^q(Cœ>,\ù·p®3]†>¹î7·CùÔ¢x޾p ô½ÏÐ_®¢ßG §«î“©öÂU÷˜üþÌ}é÷_vg²ý'±xU¸ŸQÌîÇÌ9Æ3Äáõq3ÏWLßO®ºÇâç:è‡û;·õgY?ͪoŸ‰Á·À‚z†§,ÖþüAWOÐWÿžúΠüùƒ. Ðß^ ù+¤è=Cÿ¹âùf!Þ9ôŸ¿!] g†>~»bzH:f çèeèÑY¬y1té˜Ç±ZèU.. tI K]èè K ƒ.ºº$Ð%. tI K ƒ.º:èè’@—º$Ð%. t tÐ%ÐA—@÷Įڟbž#Þ?ô .ÐAè ƒ.ÐA] ƒº2BøY¸?:èÊ =.oñøþu:èê~ê~ÑA]‰ÏÑ«Ft­ZºçH•™ºÑ•Pw1tÞè  t.к@tº:ètÐ:è  tÐAè]  t:èt tÐ:è  tÐAè ƒ.к@è]  tÐAè K ƒ.ÐA] ƒº@÷¬‚.к@ètÐ:èè  t÷G] _ÇÈ8îL ƒ®î§îwΠƒ®Äçèq™¹GºV­ Ýs¤Êš¦îaD7¢«»áÜÅ8Ðzs ƒ.к@ètÐu › ƒ.к@ètÐ:èè  tÐAè ƒ.ÐA]  t.Ð:è  tÐ%ÐA—@] ƒº@t.к@è] ƒº@]t:ètкçt.Ðuhè…[£»?:èJ=noqýeÌ/@]ÝOÝïœA]‰ÏÑÿÇèZµ2tÏ‘*k˜ºÑèr1tÐÕýÔ}÷ t:èt tÐ:è  tÐAè]  t.Ð:è  tÐ%ÐAè ƒ.ÐA] ƒº@è]  tÐAè K ƒ.º@t:è]  t.к@tº:ètÐ:è +'ôëýÑÃýÑAWfèqy‹Ç÷¯ ÐAW÷S÷˜€te€ºN½}î:è2uè] ëSwÐAWþÝ9:è:Áˆn꺌蠃®$#züª¿èþè +ÛÔýWðõíÝtÐÕ9ôtЕøýi½2t­Zïgëê„5ŒèFt固?Æ_ººÒMÝÛ邺@è] ë»çè ƒ®¬Ð¿¼1®½FtSwÐu‚st#:èrŽ:è2¢ tºstÐu‚©»tÑA]ýCÜ‚ºú‚è Ëˆ:èrŽ.ÐÕôooL  tÐAè ƒ.ÐAè ƒ.ÐA]  t.к@è ƒ.ÐA] ƒ.ÐA] ƒº@t%€~ýgÜt¥†ñóoÎÄÒtЕgDt¥†^1¢kÕÊx?[W'lUèœFtõ}Ž.Æ®ôS÷ý7&Ð:è  tÐAè  tÐAè ƒ.к@è]  tÐAè ƒ.ÐAè ƒ.ÐA] ƒº@è]  tÐAè ƒ.ÐA] ƒ.ÐA] ƒº@è]  t.ÐA] ƒº@] ƒº@t%…~YÏýÑAWnèã1> æ ƒ® #ú3è +7ôEãwèZµ2ÞÏÖÕ kÑ‹Ð8èêû=\Œ]é§îûoL  tÐAè ƒ.ÐAè ƒ.ÐA]  t.к@è ƒ.ÐA] ƒ.ÐA] ƒº@t.к@è ƒ.ÐA] ƒº@] ƒº@t.к@è] ƒº@tº@t:èJ =Ê ÐAWçÐ#î‹ËCæ ƒ® #ú3è +7ôˆ(@ת•ñ~¶®NXë9º݈®ÄçèábèJ?ußc] ƒº@tº@t:è]  t.к@t:èt:ètÐ:è  t.к@t:ètÐ:ètÐ:è  t.к@ètÐ:è  tÐ:è  tÐAWRè×Û£»?:èJ ýbüçma:èJ1¢ƒºÎý:]«VÆûÙº:a-çèÃ`D7¢+õ9z ãaÁÅ8Еvê¾ÿƺ@t:èt:ètк@è]  t:ètÐ:ètÐ:è  ôtÐÿ] Ÿj4] ƒº@t:ètÐ:è  tÐ:è  tÐAè ƒ.ÐA] ƒº@t:èt:è:1ô(/@]C¸®o ƒ®#:è  ô˸Ÿ§2œcíÃöWΈnD—ý~Ž.Æ®ôS÷ý7:ètÐ:è  tÐ:è  tÐAè ƒ.ÐA] ƒº@t:èt:ètÐ:è  tÐAè ƒ.ÐA] ƒº@tº@t:ètÐ:è  tÐAè ƒ.ÐA] ƒ.ÐA] ƒºC÷G]é¡Çø¶°tåÑA]gÑU†s¬}8ÂþêÀ™ºÑeDw1t ú¾t:ètÐ:ètÐ:è  tÐAè ƒ.ÐA] ƒº@tº@t:ètÐ:è  tÐAè ƒ.ÐA] ƒº@] ƒº@t:ètÐ:è  tÐAè ƒ.ÐAè ƒ.ÐA]‰¡»?:èÊ=ÆeÌ/@]9 è +=ôEãwè‰*Ã9Ö>auàšŽ aD7¢ËÅ8ÐAW÷Ð÷Ýè  ô^¡ÿ)º@ïúFxAè ƒ:è  tÐAè ƒ.ÐA] ƒº@t:ètÐ:ètÐ:è  tÐAè ƒ.ÐA] ƒº@tº@t:ètÐ:è  tÐAè ƒ.ÐA] ƒ:è ƒ.ÐA]§‚îþè +?ôˆëb~:èÊýÆtЕzD 'ª gûínµ®NXëQÁˆnD—‹q ƒ®Þ¡ïº1ÐAè ƒ.ÐA] ƒ.ÐA] ƒº@t:ètÐ:è  tÐëÖ-è ÷Ýè:è ƒ:è  tÐAè ƒ.ÐA] ƒº@t:è ƒ:è 'Þò­Ÿ  ô^¡ètÐ:è  tÐAè ƒ:è ƒ:è  tÐAè ƒ®~ Gï÷GtÐkV½¾-,@]I¦î ƒ®üÐc(@?xåøgëaŽð¹éÀµŒèFtå>G¿\Œ]ÉÏÑ÷Üè  tÐAè ƒ.ÐAtÐAè ƒ.ÐA] g„¾Õ?# º@?Áh º@?Áh º@t/èݺ ƒºu:è  tÐAè ƒ.ÐA] ¯õ†ïݺ ÷ ý/¾n [tÐA] ƒº@t:è:3t?zz uÿâ¯tºQÚè/ÐÁ] C:è [tÐA·.è ï=@O=¾ðÚɼî÷¡WÜÝ_™oçÐcÜŒQÚß¹ïñc”©ðn4‚nÝî Më–^àG[÷€³«2tIÇlMèÒׯL7¬p„uûŠsI’$)eq»pW}ZP{)aÃíÖ®{[m£uc£uö¡öùm݇­¶›úë?g¾~a7Z·ö+0nwíuÖlX7jaMûж¿Mû°ÉºÃFŸ[æ¯Ûñ/ÝŽà›¼d†aýQz܇v8†>¹êíF˺±Ív›ž‡¶}h˜á ±É—bØf»Ç§ÞøÉGlõD Û¼6{ÁÄFÏo†¬_·MÐÛÌãðÒ¿X_Øm^0µÓü¡þŵáÁ¾þ´¤qZ¶mÏÙFŸÛFS÷!6y¥o0Íÿæ9z4\th]÷«û0Ž ëÖ¦×u£aÝ ÷w£u‡oîÃ'Øê¯ï|ùB£$I’$I’$I’$I’$)_ñöøþ2)1ô]J}ü¦úßïUÇß‘”úøS«÷S»èaT—ò@¿ý àðÝô]Ê5¢ÿþDûïÏç‚.%…þûRèRèÿÈÇÓˆ>DÑ¥Ôc<ÜÒ ù³?ÿ«`2F4€'IEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fasta_clipping_histogram_3.png000066400000000000000000000017361226234573700275740ustar00rootroot00000000000000‰PNG  IHDR'(N÷ÊsRGB®Îé PLTEÿÿÿÿîžî¢bKGDˆH pHYs  šœtIMEÙ$´ñdKIDATxÚíœM®Ô0 Çm䬨iæ>©4ì3RÂ.Ã%8.ÁUØp mÚ>†y¼21óúþ®ZÅÓ_í$m=•@îLäZ%·B¸P鯂«Ç0žò×ö8š,lZCÓrËZ^nÓ©ð…Sx¹až!ôd› ¦ø˜°´äú"Z¶•Ÿ…9Hà²dÓ¢Óy=Õ¦=EKkB:.Õ’GûzW,Š]jo[…Ť• KYJP²–‚dŠž›WÃãW-FË0iµÆðh' Bá¶P^kS)ªkƒÔÓ¡#S³£Vãda‹yK&Öp­@j¸¨†ë„®ö× ãù^HÜ.kìK¦0ðeH²«ö¿ARûĤ¥¡„h¨‡ª>%J¬ bÅ;šÂ:õI…·É˜GWZBM]&T-÷WÑ}Þ“´TSFÍ¡ZdHj™ú•Ë`ç`B¶¼Í-ÝÅù¿ºbð¶ËŠÐ4»˜n¡kz²ýš)¼*B +ŽÝéñiÐð„5 BÇø·â7B¼5»­O¼Ý!Ol  € € €¼Xˆh@»ñ¤&¦_f‰ñ}+Šï¦âçí‰éäÉן“ü zÝ”ôj*~ûOŽ@@@yLܘ3ö„°¥A¢äINL?4%%¦SñûæÄ”­:Þ0O[AXÒþbüì!Ǩ®ÝŒ®èv.>qžhô‰ÊèÒñ„U&£Û „ã~®]¸3>Ò=1%s9ã©û1AÎ]SVIL£BbÊ„;ã½y"VÁ«Qñd?£ @@äY¼1•ݼÌvüü¥|;Õb;™PÎGÏ^Ë7:Å¢^ÆÊ7Š5ôI cå½”Î[ÄâM(6±´ÔÆ@P@”w}ŒmçßɄқ<{å†j½P@”×”é7Oߤ<¯P@å¦8Ê{ž$î1 “[ÿÒõéÇjöú¼šÊÔ}·¾ú—ß»ÇÒ‹…P@P@P@åßçb”NZ¢l>{½©f¯B2ùŸ] ‹µæÕ|îw«ÁEå°@úÝbY¶¸p™3ûÝ(οù禎öËØ‚æïåÚçËãë-ýè×9vfDT¹ì g‡îéÆg]«ÏÂþ¼åÃïÇè̈¨rÙÎÿÜÓáYõ» žÃegxÕÓ]pë\'¢Êeg8;üsO÷ À¯À…"ª\v†³Ã?÷´@xVýnƒ†çpÙ^õ´_ <«~·AÃs¸ì ãž~‹ÀÝ Ïá²3Œ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡îéž/ö;¯Qå²3œþ¹§o¹zä߇ü裆ÀŒˆ*—áìðÏ=ížU¿Û á9\v†W=ížU¿Û á9\v†W=ížU¿Û á9\v†W=ížU¿Û á9\v†W=ýùW:t4<‡ËÎ0îéиRD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;üsOw|ðg? ÔQå²3œþ¹§õ\ÕõÏ[öw^*¢Êeg8;üsO÷ ÀOИQå²3œþ¹§³êw4<‡ËÎ𪧻 ¿äBU.;ÃÙáŸ{Ú×ϪßmÐð.;ëžîù•`€+ET¹ì g‡‡=ýý€—ЍrÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡îiˆð¬úÝ Ïá²3¼êéF¥Vûó–ý>€KET¹ì g‡îé¾ø :3"ª\v†³Ã?÷´@xVýnƒ†çpÙ^õ´@xVýnƒ†çpÙ^õ´@xVýnƒ†çpÙ^õ´? DxVýnƒ†çpÙÆ=ýý2à¥"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáŸ{Ú"<«~·AÃs¸ì ¯zºÑÂU+ÿ¼e¿àRU.;ÃÙáŸ{Ú <«~·AÃs¸ì ¯zÚ <«~·AÃs¸ì ¯zºgúkÁ¯Qå²3œþ¹§ý€ð¬úÝ Ïá²3¼êiˆð¬úÝ Ïá²3Œ{ú-:t4<‡ËÎ0î) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÃžÒ 6èmÐð$.;ø§4ˆ RϾ žÃeg÷”†ÀÒðçsÙÎ{JC`iøó¹ì g‡‡=¥¡°4üù\v†³ÃÞÒÐXþ|.;ÃÙáaOiè, >—áìð°§4t–†?ŸËÎpvxØS:KßÏeg8;<ì) €¥áÏç²3œö”†ÀÒðçsÙÎ{JC`iøó¹ì g‡‡=¥¡°4üù\v†³ÃÞÒÐXþ|.;ÃÙáaOiè, >—áìð°§4t–†?ŸËÎpvxØS:KßÏeg8;<ì) €¥áÏç²3œö”†ÀÒðçsÙÎ{JC`iøó¹ì g‡‡=¥¡°4üù\v†³ÃÞÒÐXþ|.;ÃÙáaOiè, >—áìð°§4t–†?ŸËÎpvxØS:Kê\èŸK5¬Éeg÷”†ÀÒ°*<UÃ×ríÞË« C.ØS:Kçp¸=÷ÀÅà}ÈrÄ×î§Kö.‚=¥¡°4| |†ñ¿‹¶ˆ0K»ßð'’~¿Ó0ä‚=¥¡°4| |†qøÝw4Uä@x&×þC9þÚY ì) <»ÏÔpxÂàZà ö”†€ÝgÚØ÷|uX†!ì) €¥áS>dÞž¼ € C.ØS:KçÜÌÛ“w¡p¡aÈ{JƒÍìç “àׂO¹ ˜·'ï‚îOþœð»ÒøÁì?!æmÀ|A‘é‹wríïÀÅ'Àðî‡tä`·úÕ¾.¿û!Ô˘á¡È“ßÏ{JCàG"»ÕOú=ïÂI°ûYarQo/¼X»?bê|âìçbú:EäÀ{íS|1E˜‹Õè8vàc¸®6Üè\}{^ÝK¹®6ܘ€k?×îq]m¸01§Ýî3½Ú×¥"ª\Wît®¾=¯îÀ¥\Wît®¾=¯îÀ¥\Wît®¾=¯îÀ¥\WÞý ¸§4tÞéqÉîtûqɆßQ{JC`èèDoOÙœÁeg÷”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØÓ7p»-É:3"ª\v†³ÃÞÆí7 qà³¹ì g‡‡==ŠßÝ_,@`FD•ËÎpvø{/×]>„ÛÓ;C"ª\v†³Ã¯ŠKG`FD•ËÎpvxØS:3"ª\v†³ÃÞ¾ƒ‡W;3"ª\v†³Ãß{¹Q䃸uNQå²3œþÞË&ÄíÅŸ:ŸÎeg8;<ìéèœ!¢Êeg8;<ìéè§gˆ¨rÙÎïåF“¢p†ˆ*—áìð÷^n4™‚ÀŒˆ*—áìð°§ï ? p‚ˆ*—áìð°§o Ÿœ!¢Êeg8;ü½—M>ˆÛ_`FD•ËÎpvøÇÖrÐ8CD•ËÎpvøÇÖrÐOÎQå²3œþÞË&E_è (—áìð‹ÖÒpû÷sDÜøl.;ÃÙáï½ÜhòQôEÀ3ŽN”ËÎpvxØS:CG'Êeg8;<ìé;Pþ… €a.;ÃÙáaO߀ôÏt†¹ì g‡¿÷r£É!ý³€a.;ÃÙá[ËAà”£å²3œþ±µôS€SŽN”ËÎpvø{/7š|}ðŒ£å²3œö”†ÀÐщrÙÎ{ú–t¦ŽN”ËÎpvxØÓ7 ýƒt†¹ì g‡‡=}·ºÀÐщrÙÎ{ú:§(—áìð°§oàñŸí (—áìð÷^nvù:§(—áìð÷^nv™€ÀÐщrÙÎ{JC`èèD¹ì g‡‡=¥¡0tt¢\v†³ÃÞÒÐ::Q.;ÃÙáaOiè (—áìð°§4t†ŽN”ËÎpvxØS:CG'Êeg8;<ì) €¡£å²3œöô(nßÔ;:Q.;ÃÙáï½Ü(ótoƒ†çpÙ^ôr£ÌÑß xÊщrÙÎÿØZ:§(—áìð­å Ÿœrt¢\v†³Ãß{¹Ñä£èo:ãèD¹ì g‡‡=¥¡0tt¢\v†³ÃÞ¾ƒ~ pÆÑ‰rÙÎïåF‘¢¯œrt¢\v†³Ãß{¹Ñ䃸ýCÖ˜>:Q.;ÃÙá­¥¡pÊщrÙοh- ·_ýà„£å²3œ~ÑZ&úeÀù£å²3œö”†ÀÐщrÙÎ{ún·þà óG'Êeg8;<ìéøç€¾0~t¢\v†³Ãß{¹ÑäƒèWN9:Q.;ÃÙá­¥¡pÊщrÙοh- ýNÀSŽN”ËÎpvø{/7š|ýiÀ3ŽN”ËÎpvxØS>x6`zDw :<ìé;¸Á?¼4i7Pý”£å²3œöô Ü:g(—áìð°§oàöâOÚщrÙÎ{ú:§(—áìð°§o æË€4»_ϼڰ&—áE/7š|€SŽŽÊµ;ÊÕ†5¹ì /z¹Ñd :CG×Ðã‚I©Æ=¥¡0tt=®S¾Ï¬Ð su(\€5:CG×Ðãê¬Ñ:º€W`ÀÐÑuô¸:kt†Ž® ÇÕX£0tt=®Àš«𣣻øG‹OÞ·ñ…¿DOü6ÈÀ¿Oè+â„8ðí L®ý·Á~ùý˜+s¤´øä÷û‚êÌÛ ‡'rÁž¾þ0Ù}çœòLÈ1 rʘðÅ<ùý§….P?”‚=}Ÿ6ÌÒî~È)‹uõ0¹˜áws™þÝ÷õC)ØÓ7ðÛ+"ö€Ý§Ý˜ ϻ%®6Œ.,z¹Ñäƒè8º\»O»0Í%k]Xôr£Ét~tt¸öPy†¯€¢ásàÃþmÀݧýI8Å0“«pùÜ>ìßÜ}ÚŸÔS 3¹:×À‡ýÓ`»Oû“:pŠa&W`‹ ~EaÑZ:ŽŽÉµûë–Ÿ4Ìð§ Óð~®EkièWÝÇpÙföéjÃû¹î½ÜhòQ,ûߘ::Q.;ÃÙáaOiè (—áìð°§ï`ù@`êèD¹ì g‡‡=}·~ pÆÑ‰rÙÎ{únt€¡£å²3œöô tN9:Q.;ÃÙáaOßÀ×WL¶‰;ŸÍeg8;ü½—›]>„À)G'Êeg8;ü½—›]& 0tt¢\v†³ÃÞÒ`3¼oûò» ¢;öô(nOÿõÞ³êw4<‡ËÎðº¸ïâ÷çþŽ? À{Výnƒ†çpÙ^ôrÝåcxxpƒ¸ðÙ\v†³ÃÞ¾‡ïî ‰¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØÓwÑŸQå²3œ~]X:Ã"ª\v†³Ã¯ û&þþ,="î|6—áìð÷^n”ù:Ž·AÃs¸ì /z¹Qæ#è/q¼ žÃegx]\:Ã"ª\v†³Ã¯ ËF`FD•ËÎpvxØÓwÐ×NQå²3œþÞË"D_›ËÎpvø‡Ö’p{àë̈¨rÙÎÿØZúÓ€†·AÃs¸ì /z¹ÑåCè?jx4<‡ËÎð¢—ë*ÅíÅŸ:ŸÎeg8;<ì) €U.;ÃÙáaOßA?8AD•ËÎpvxØÓ7ÐÏQå²3œþÞË&D¿ x†ˆ*—áìð­å p†ˆ*—áìð­å Ÿœ!¢Êeg8;ü½—M>оx‚ˆ*—áìð°§4tfDT¹ì g‡‡=}ý`ZD•ËÎpvxØÓ7ПšËÎpvxØÓ£¸u oƒ†çpÙÆ==ŠÛ3W`FD•ËÎpvxØÓ£¸õ§ oƒ†çpÙ^ôr£Ì‡Ð0¼ žÃegxÑË.E?8AD•ËÎpvxØS:3"ª\v†³ÃÞ¾ƒþBDT¹ì g‡‡=}} à U.;ÃÙáï½ÜhòAô—‚ž!¢Êeg8;ück9èœ!¢Êeg8;ück9è§gˆ¨rÙÎïåF“¢/ž ¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ìéQüþ ~'จ*—áìð÷^®ª|ÿvÿ&û³èmÐð$.;Ë^ntù þt?@"Ù·AÃs¸ì /z¹Ñä#¸ý[ÿÄ€Ïæ²3œöô(þýà_ø‡:Ã\v†³ÃÞÅíëU@DÜøl.;ÃÙáï½\U™„ÀÐщrÙÎ{JC`èèD¹ì g‡‡=¥¡0tt¢\v†³ÃÞÒÐ::Q.;ÃÙáaOiè (—áìð°§4t†ŽN”ËÎpvxØS:CG'Êeg8;<ì) €¡£å²3œö”†ÀÐщrÙÎ{JC`èèD¹ì g‡‡=¥¡0tt¢\v†³ÃÞÒÐ::Q.;ÃÙáaOiè (—áìð°§4t†ŽN”ËÎpvxØS:CG'Êeg8;<ì) €¡£å²3œö”†ÀÐщrÙÎ{JC`èèD¹ì g‡‡=¥¡0tt¢\v†³ÃÞÒÐ::Q.;ÃÙáaOiè (—áìð°§4t†ŽN”ËÎpvxØS:CG'Êeg8;<ì) €¡£å²3œö”†ÀÐщrÙÎ{JC`èèD¹ì g‡‡=¥¡0tt¢\v†³ÃÞÒÐ::Q.;ÃÙáaOi°€ ÄÜш{JƒÍ@yÑ£å²3œö”†ÀÐщrÙÎ{JC`èèD¹ì g‡‡=¥¡0tt¢\v†³ÃÞÒÐ::Q.;ÃÙáaOiè (—áìð°§4t†ŽN”ËÎpvxØS:CGGåê7AP¸ì ãžÒÐ::*Wtx—aÜS:CG×Ðã²3Œ{JC`èè:z\v†qOiè ]@ËÎ0î) <ð•3tAö6èp¸ì ãžÒðÁEDoƒ‡ËÎ0î) € Àî¯Ãu¹ì ãžÒÐøÑìV?ixß ÛÀVOièè ~mbw”ê@`«§4ttà@øýÏ Ó°—aÜS:K‘ý\ÌÛà@xxáâ-4¹ì ãžÒÐXŠÀÚìV¿z࿯ò^çè¬ò”ýÖ ™IDATÑx¯hÌÛ€éë@xâ}{Î ×>… ö”†ÀDv«wæÃ_kø.ØS:?Ù­Þ˜­áS¸`Oið€ýŸ·Ù}væÃ_kø.ØSü€Ùý\nƒÝ‹ÕØ÷Üwv ðžÈÕOñu@äÚ­áS¸`Oiè̈|Òìþ:\øð¾n‰{JC`FÄpö¿˜ÂìÓðûE˜†Ïøº%î) €ÃØÏ…ûÇ„ùÈ~\ÚS w:Wû:ék}]*Òèü{e÷»ŽO ¯ÉuµaxKt>p4¹ì G„ït~žKÖp Ððó\²†;€†Ÿç’5 _M…=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOi¸f6Ðhøi.;ø§4\3»E²oƒ†çpÙÆ=¥¡0#¢Êeg8;<ì) €U.;ÃÙáaOiè̈¨rÙÎ{JC`FD•ËÎpvxØS:3"ª\v†³ÃÞÒИQå²3œö”†ÀŒˆ*—áìð°§4tfDT¹ì g‡‡=¥Aæ;; ?Íeg÷”™øÏëg"ú6hx—aÜSV°û3üÆþ=ïm0Íeg8;<ì) [%-ŠB SPEQEQEQEQEQEQEQEQÅ~ëü®¤Wß®´yåÅw8¡ ø!X}ûÊï¿Û¸öç/6óÍC0ךíß?o†y͵õøxåÏßÀ á¿{æZ±ý¾°ä%ׯCà#Þ0¬þ¼¨¬3^m¶×{ñbv=bûÊ׳½uBÀñ7Á\k¶û#öúZ? >^ùó7ðÂFøï‚¹Vl‹GìY‡‡xðZøk°éñ÷•ÝÝ„«öê€ÖvÔ^ù“oãèþ\Øÿµ·¿žsþ¥Z¿¸‹l^X_ƒ¶^þî†Þ´›Ῠ6?”ÙlDzO?³õºO//lßF¯²aìÿ— }TªPþß8ÒA\gô¤¾ âŒ Tù*øˆ>dëÚß±ßêÍf~TÚÅ}³Í…n5”ÿ·§WYáå­¾ùô¿j4>–íÃ߀—êpî´qa; Zßo?7€ê·ÄW À6^8ÜÙs(óâ!ûjþû¼¡n¨›¯wóç=‡øö!{j~Ÿ†õ͆ÂãžÝÿY_ؼ£á­¾ýˆo²ÙMMéWûw¯¦=#÷ò{Y–S±³²/®m½âñ u¶´¿h¯ß m>è~^8ë݃l^Øu×Þÿˆ¬ÂÃGðñBå»nÂÀËEàÇe¾ð²ÊûzŽñúÊþG`Kä;.¸ û`Ote‘póž’—w3àú±ú÷\¯líáÚ,Úß¿ÙT¹½xmâ×Õ_\¹ø½öë+˜oß#ö¿<¸ë+ÅÆ»§Ûm{»á•ï¸Ö¶á#¾çÚ¸;ßà ÿõ7èÂFx|å®uxüˆWŠ¢(Š¢(Š¢(Š¢(Š¢(Š¢(Š¢(Š¢(Š¢(Š¢(ŠÏÄ·ß8 ¿E¿( {üpàÏÓEaŒ6ºÅ/ cÜXlñŸÛ·oòxíׯ‡o;?JQ{±þqñÕ?¾ÉÓ·?| ö³çEQ|ƒ¿­_¾ó~5OŸõwŠÂ¿[c³Á«¿\ÿo (,±Ùüçøûks6?¸ÿ©P^¸¿_¾¨÷ô"àêM¿ÇêáOSQÅ ].Š`tŠ¢(Š5þ«ð{O·"I*IEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastq_nucleotides_distribution_2.png000066400000000000000000000156531226234573700310510ustar00rootroot00000000000000‰PNG  IHDRdå?sRGB®ÎéPLTEÿÿÿ   ÿÀ€ÿÀÿîîÀ@îî ÀÿÀ €@ €ÿ€@ÿ€ÿÀ`ÀÀ`€À`€€@ÿ€0`€€`@@@@€€€`€``€`€Àÿ`ã°À@À€` À`À`À €€€` €``` @@ @€`€ `€``€€€€@ € €€€    ÐàÀ €€À`€ÀàÀ`ÀÀ€À€`ÿ@ÿ@@€Àÿÿ€`ÿ€€À ÀÀÀÀÿÀÿÿÿÿ€ ÀÀ ÿ``ÿÿ€ÿ €àà àà ÿ ÀÀÀ    ÿ€ € €@ €@€€`À€`ÿ€€ÀÀÿ€@ÿ @ÿ `ÿ pÿÀÀÿÿÿÿ€ÿÿÀ #)).32=6G:Q=ZAdDmGwJLˆO‘R™T¡W©Y±[¸^¿`ÆbÌdÒfØhÝjâlænëpîròsõuøwúyüzý|þ~ÿ€ÿÿƒþ„ý†ü‡ú‰øŠõŒòîëæ’ â“ Ý• Ø– Ò— Ì™ Æš ¿› ¸±ž©Ÿ¡¡™¢‘£ˆ¥¦w§m¨dªZ«Q¬G­=®3°)±²³ ´ µ!·"¸$¹%º&»(¼)½+¾,À.Á/Â1Ã3Ä4Å6Æ8Ç:È;É=Ê?ËAÌCÍEÎGÏIÐLÑNÒPÓRÔUÕWÖY×\Ø^ÙaÚdÛfÜiÝlÞnßqàtáwâzâ}ã€äƒå†æŠçèé”ê—ëšëžì¢í¥î©ï­ð±ñ´ò¸ò¼óÀôÄõÉöÍ÷ÑøÕøÚùÞúãûçüìýñýõþúÿÿŽ(+/bKGDˆH pHYs  šœtIMEÙ!3(±zÊ$IDATxÚíÝÛ–›¸P4:/ùüõÿÿÅ9TÅ7mla„ö\=:E¶ Më†Xé”RÊÚÆûÿ‰~ië/¬í'"=‹zµ¼ÕŠà÷Ï6p÷Û5Î "ÿ®oà¥/êÇm/RÁ9€ïŠ@ùªüÿ÷ë{ú{S¹4Êå§—ß¼ôkÛr¿ûíQþþpùó"ÎpÙAD>@¹ð·Að÷?78ÜUÞ+ûÝ6+®s¹È²å "ò™>€;®‹à5Añ¼|‡/u¾·Ýü"ãpSž£âùÐ~¿ ¦D`y½ m{± P%æµ3ˆÈç¸íÓ+õ¾‡më€wGY®Û åêW–»®Ár÷Z """""""""""""""""""""""""""2Tþ­¥ó†}v9ö$[vó²á-ŽúG9Ý Þ!E®o?ê4þòäÂù÷ÿþùò³ó†}v9ö$£«ý$^Ö@{7€iè÷ÙÜ ´/ž· rÖ‡W±û<€ „Ÿ*€^ŒÛ½FtÙoRv ãgÌ @óÕ Àçh~@.€yh> `f¹À~=yè @ûcpL@ûŒÀ¡Œ¼,85nÐyàìt\€é|4?b ˜ €ž‹âœ€ök Àg®Ûö¾ Ó°C=€ø¹¦ ¾ `^‚õd 88 €põoóÐ~y8ÃL@༄4ª¯ë×CÊ/à´„4` ¢êpN¢{ëP :9pNÚë´à Â51Ž ~Ê€~„Ÿê±lXÆ €pŽ€ùذ¼8ë0 €,l(Í}hÜ-€ih¿¢¤ ù‘‰æ gÙxã$ÁJi2œ€œDÏ €æ÷ ” 'åO$àOÙ¿@"î@' ˜€›^@Ù†¤@M`@‚a@š2ŽM:09šäZP' æÐÀ0 € ˜$îÐ è €R ž À²à 0ÀþT 1?Ü $ <€¨~ €~åúÒPÜ äíøÝ k'`Ѥ èò6ŠA€ ÈT° ¹À0 à^  @' À¦­ÈÜ ï(È9 øÝ †€™ŸÀ`~6Z€SPn§k‹‚°((Àæ©hú¤(FÈ€&xÀ0 `@Æa@@*y@´ ö\ô ñ±Ú¯¢ „úæ ýX`& f îO€»0=ñ±`ÀGÊ<€d}ÀÀ0 p7 wp3p.*€öOØÍ@À0 €s z6 ¹ àÙ€ø,áSðàÑ`˜€JºZƒ—àÙ€ ¦ s€¬£‹‰@€Í6À;À߭`pÚÿòÀàú8¦ ãú‚ýøÝöw/N= 06Õ¿ PЉ@8á›Àû3ä@' 0 î ¥O š€>†€óÐþÀüýà€³Ð~Ià/œrðßÁ¼Rh›—ø0Íg?š@V~×kŒi0 d@ HÛpÝ£@JÜ @¸ À0 €lh‰›:À@€N@Ÿ }qÀ8%íëuf ýXîÀ)hÿkÀÝ€Œp7 wp7 À¬Ì«0?áÈ;@Z €ÄÜ @¦€»·È9   ²`A ï‚ ú‹‚M:§YÐL@ íŠ@ÿ @Ö{Ô€´‹‚Þ.  Ó²àå¦ @²Àrý|†È @%²_0?ÑMЯ 7o+^àÀôlø›@*°á-4»°á’Ѐöcè @8±ýž³`š_ð–c€han Øåº9o-0?=/OàX¢‰µ°á#x€æ‡˜€æ³oX( @šOا—ÀÉèù ï@%²~Ä€žstÌ@ûµ_ÑQ[ @ú4à„„Ãmæ üT»\žáÔEóо& ý$á*>8|=€¶Í\:Zì @ûe ê¸p66 ”l¸¤ @Ç‚–€ž#ËN@ÏK ÀGˆ‡-L@ÏU|Øå~c°K¡Ð À†á³°Çr}Fî°ñ’ —D€žoÈ@¿»— =Ö€]À¼ü×:öÍà vùˆÀ1T ÍÝ´ÃÐÜi`öx]à³ô…ÐÒ 8ýNÿéUp4={Ò0fU{X>Æ+´@X 0?áŽ`‡·€Q/ƒyh~€yhnd €]Ö0ÿeY8t¹>Çú/Œq3pù÷±OàÀpo¹óãÀˆÄµ ÓÐ^7sÐo, Àéó pœì~Ó pJäO–COã!O.‘Ö„SÂYIkÓ•ª[Vf8Eâ]â³×·üùYeÛ×*û<Ù%>ÖãÑ~ÿ»úfÖUÛ%Ü#Üòõ“pÃR;Ôú.ñ±Žv=ñ±éX•]Â=ÞxÁ£½ù£Ê‰‹rPœc5J¸GãIV0‰ö¨oùþ´k¡à?Ù%>ÖãÑ.{´¾®åõ³‡[¾~nXêú¬íëáhW{4žäñ͇{¼ñ‚G{ó•ÿ¥€•"]J\h«~,mÅ<ÜR–¨p|mhߥry^®ÚúI*_K@Ãå$÷Wú’±l öæ·–ÍÊ›ÿ>Tµ*S-×åiy€¯ñ†ð &Ü%ª6Äõ²ÖJÇ™ó¿¥ ÆÅ¹ù[»tB&<ËwájÔq ªÐ¯µ ¢&À²¬Ôôƒ³¿ÞhX9Ë×kZÛgiºÔ«ÿZ‰Žÿ,%<Öu®”§ ¾͉¸ Uè×ÚáÙ—•fÎà´7õ›ë +»´óX“ï¿ÜÒ @{S?"c‰X^]O0©×–èÍÇå¬Do¾Do¾¬5Mêo~}— ]¼ùˆÒïÒ߬_Y»(Þ¯3ŒÔh¯æoêëÛ€eµÐ @sÕ î¸Û€zÍy‰*Î+'YÙŸ¤Òq·<©I½þºÂ=VÎò¬l¶}‹­wÍž€Õ¢üÙŽ»g/«éX[Gš¾èŸ6ÖJÇòæ±®ÞauCLÉêÕëå³??ÖÚËj9ÖzoÆZȽ–‡ tˆkî5XÚ»ÛŽu½ GmC0âTÝòìXµË Øãù±ªÃ]›•ðÍokÜ0 ÙÞk0Ú0 ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ|Bsõ÷wnßù¿ÿïß?§ï/ý}ëþÚíå·lLÿ¾öõúø³ËÏ/~}‡hVx<€òëö]°Ÿ nß7ùŧwП_{þ@¢ëòÔ±B'èûÞmÛî¿ü QÏÇŸá[Ïí‡ø_{z ”Aûøùÿ{õÜüê×Óí¡TïÊ‹zª×Þü ‹˜÷V@ G÷6ŸÓ»=½uÿÏWóZû[§žüާOûÝÿûº:@!„B!„B!„B!„B!„B!„B!„J¦ÿëiì…¬^SÉê5e‘¬^S±z¯B(¿NÀëÛÿitûÏØ Y½¬‹´ä¾}³[¾ÁéU.𵇗=µ [¤Ú•*øÚÃËžÚŽ-ÒQê+U¯—^öÔ&pVàœWª^.=ükOßÿlÁ»?Μ8番×KÿÚÓÎïlžüû;Ÿ~n¼8+pÎ+U¯—þµ§ÀàÎ^$«W¹ÀMOCxë/ÀYs^©z¸ôð¯=à , ¬þ~@¿0ãJÕëÀœáÇ€ÛkÆõ,WÚIÊ"ð·Ç½Òžq=Ë•t{ú«@½ÀêÏy`òºÞȘ¼@+?00y`é§luOmù§€þ˜em®Eâ§5#°î©M à´Ð׿X$~Z3ëžÚò&¯úˆü5àãÿï ä L^€6Nïç‘·Þkù_áOÀ¿÷õ†@þÀÀ”áã§¥½Œ¹^{ ^å€ó‡Ÿ–ö2æzí)0x• Î>~ZÚ˘뵧ÀàU.08øøii/c®×ž¾ÿ·às[; ¿x'þÉ6ØØ@x‡uOßø”ÀÖ8Ñ^ñ\ºOÆá ¯>°_çà=€ü€køE«€ì}*xçç»ír‘¯)Ý”^ñwµÀÏÛñÐ× §W¹ÀÎë™ús¾\ Èø˜‘k„2áÕ@–|L``Ê5e‡O@a¯úzüÖ×¶wò^ ù!µö’ËxùfüüûWñCAS,²ÚË €ÀSº†ÉÕðŽ@þÀ#^Î?i¯íæ”E@ö|L`†7y] o}äÌð&¯Iˆ¿ûsÒ{à33¼ÉkŒ^¯=íÁåU÷ß >%0Û¼¬‹¨?çO@@ìþ¶×·×îê ¯rÞä•6ðxS `†7y¥ ¸ ¾WÚÀòà ÙS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯r›ž¾ÿ×€|3Ðçfx“W¹ÀMOoÿúU|@ŠE²z• |íá_{À;ù3¼É«\ধÀàU.0Û¼Ênz ^å3¼É«\ধÀàU.0Û¼ÊnzÊ7¼Êfx“W¹Àº§¿‹¿ü˜À oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊnzÊ7¼Êfx“W¹ÀMOoÿýUµ¿ #®Û¼Ênzúñèü˜ós ÞãU.pÓS`ÈUï0¼Ç«\ধ¼÷Ip,p5¯r¯=ükOyÀ«Þ5`xW¹ÀMO?þ›@×K}n4màœ^åëžþ*ðA×@nKÚÀ9½ÊÖ=µéŠ˜ñw ¡W¹Àº§6]3 ½ÊÖ=µ €Ü½žÚ@î€^OmzáÏDgí&8?pN¯ruOmzáK˜µ›«0@R`ñ*X÷Ô&0 ,^åëžÚd€óoÕ@× X¼ÊÖ=µÉgŸ@× X¼ÊÖ=µ €Ü½žÚ@î€^Om w@¯§6» ×S›ÈÝÐë©Me`ü–x ü1^åëžÚTÆ€Xàñ*X÷Ô&rwôzj¹;z=µ €á{[íG+€V ßÛÅ™s7R{‹hÀLLù±2S†Ÿâ%{j300¼oFÐ  ,¸†÷ÍZ€cåÑ×ð¾@+p,°<:à>žké'øóм…0¯‰{ läÀð¾\ 8X]|¿ÀÙ¹@+p,°<ºzˆ¿åÀF ŸqÊ"S¼dOmÇË£«€ø"90||Æ)‹Lñ’=µ©@üC×k _Ð^Æ8Ë£¡G@×KöÔ¦ñ{;p ä Ú+~=1=º^²§6€í"¾;tq8ÿ $>ã”E¦xÉžÚÎYäâpŸqÊ"S¼dOmç,lÃÇgœ²È/ÙS›>áwC@p‘>>ã”E¦xÉžÚôÁ_D_ƒøFxÅwعÈÀF ŸqÊ"S¼dOmÇÑ× ¾‘^ñv.2°‘ÃÇg”‹¨w ÀãíøÑékà;:`ÊumèÀÎ4zÉžÚŽ-¢¯A|#¼â;ì\d`#†Ï^<ÞŽsW®TØ ¸ØÈáã3†W·ãGçÜÕ+ö®E6r`øøŒáÕÀãíøÑ9wuàJ…½€k‘>>cxuðx;~tÎ]¸Ra/àZd`#†Ï^<ÞŽsW®TØë“0囜§50|x8¶ˆ¾ñœáúã‹8K/ÙS›N€ógÌ„opvžÖÀðáQ@@§ |Ú×€þ:µ¸—3°ó´Â‹€nOmÇÑ× ¼ü”>€~àø"ÎÀÒKöÔ&pl} ÂË€~®ð( pl} ÂË€~®ð( pl} ÂË€~®ð(V„?‘ À¼œØyZáEFº9°Ãñ[48~(²§6€c‹èk^ôsù´ÇÑ× ¼<èçò0hµS~\Ÿ3püè€'0èöÔ¦5pzùîzÍ º=µ [D_ƒ)ÃO ÞaÛ{Üé Þá‘À?¯3¾ˆ_Dodxïpo¤3px‡WwsÊ"z#Ã{€{#Ã;¼º›SÑÞ{Üé ÞáÕÝœ²ˆÞÈðÞàÞHgàð¯îæ”EôF†÷÷F:‡wxu7§,¢72¼÷¸7Ò8¼Ã«»9e½‘á½À½‘ÎÀá^ÝÍ)‹è ï=îtïðênNYDodxïpo¤3px‡WwsÊ"z#Ã{€{#Ã;¼º›SÑÞ{Üé ÞáÕÝœ²ˆÞÈðÞàÞHgàð¯îæ”EôF†÷÷F:‡wxu7§,¢72¼÷¸7Ò8¼Ã«»9e½‘á½À½‘ÎÀá^ÝÍ)‹è ï=îtïðênNYDodxïpo¤3px‡WwsÊ"z#Ã{€{#?Âu`x߀VàØ"úLþsk/߀Và­Eþ¨)ÃÇw%k`íå;`Ð  œµOñ»–öä}ÿhŽÎÚ§ø]«wòÎEâ·Hodx+mà^ 88kŸâw­ÞÉ;‰ß"½‘á½`V®´gx€VàXà¬}Šßµz'ï\$~‹ôF†÷€Y¹ÒžáZ€c³ö)~×ê¼s‘ø-ÒÞ{fåJx†×$„¿j w®r_º8ÃkÂ0k#ËÝžÚŽ®Ö§r@·§6€c«õ©\à´Pdx#ËN €À¬ÞÈr@·§6€c«õ©\`Ðí©MàX`ݧŽl$è/îo;wuŠWVü«Ñí_ë7ô÷·»:Å ˜ûÉêZ€cÀÉ@·§6€cÀÉ@·§6€cÀÉ@·§6€cÀÉ@·§6€cÀÉ@·§6€cÀÉ@·§6€cÀÉ@·§6€c/ õÅŽYoh޾4ÔˆYohŽàíÀ¬ÞHÐ_Üßvîê/` ÷±À¬ÞHÐ_Üßvîê/` ÷±À¬ÞHÐ_Üßvîê/` ÷±À¬ÞHÐ_DþKJÎÀ¬ÞHpö" Ë®N L˜ñeÅi¯*WÀŒ÷&Ò^UÀ•k pÜ Ä¼X½‘ ÷Âê« ¸r Ž{€˜«7ô^X}UW®Àq¯ÒÊ3àË58î5PZ¹+_®Àq/ó`õF€Þ «¯jm,þéðrW凛‹„W±G@]Ì8º‘] 7½@Ì €Õ×ô^X}UW®Àq/ó`õõ½V_UÀ•k pÜ Ä¼X}=@ï…ÕWpå÷1/V_OÐ{aõU÷¾¯˜ǽ@Ì œáLã^ æÀêë z/€ÇÛñ¼ãÀêë z/€ÇÛñ¼ãÀêë z/€ÇÛñ¼ãÀêë z/€ÇÛñ§ üóM@è…I^€Ã^W€Ï ô^Xíôs€P®ð «½€~.#Ô'¢ÀB/PºOIà˜¼ä-’=µ ;:í"\ÒKöÔ&°Ùnóg{ÉžÚ6Û b^s`ü*(çðS¼dOm›í1¯9H:ü/ÙS›Àf»@Ìkà´ä$Ú+éðS¼dOm›í1¯Ó’“h/ùˆïcƒÕ)½dOm›í1¯Ó’“h¯ð# °Ùnó8­p›@·§6€Ív€˜×Ài…Û º=µ l¶ļN+ÜfÐí©M`³Ý æ5pZá6€nOm›í1¯Ó ·t{jØl7ˆy œV¸Í ÛS›Àf»@Ìkà´ÂmÝžÚ6Û b^§n3èöÔ&°Ùnó8­p›@·§6€Ív€˜×Ài…Û º=µ l¶ļN+ÜfÐí©M`³Ý æ5pZá6€nOm›í¶~™ózú¼€kø)^²§6€Ív'--ˆ=võ¿?ÕvŒ€ëJåô®á§xÉžëï;¶Ò¸®TN/à~Š—ì騾»¿!ØlwÒÒ€Ø#«`üLÒ£—m—‡t{ù/x::ç•Êé\Ãk/c®¦¸v€“Ž.©p ¯½Œ¹dOm']R/à^{sÉžÑÓgÀIG—Ô ¸†×^Æ\^vŠ<¨[ÈO“ x€ˆp ¯½Œ¹½ì4yP··_é"^À5¼ö2æ’== 0åè’z×ðÚ˘Köô€2|0p ¤ˆx×ðÚ˘ëÑËN“¦]R/à^{s=zÙi²EणKêum¨O>_ ¾`àH/ñº6l¤ñäeOˆ¦]R/ <°‘Æ“ô²ÓäAÝžüÀIG—Ô l¤ñäŸ[ë˜rtI½@0ðÀFOþ¹µñ!ÀÀÑ…¿ÃÄ]¯G/;MŸŒÓ+~ €çP@+ðÖÑ9½â×x´~à­£szůð hýÀ[GçôZúù <°‘¾Óêö þ÷Ñ?Ÿ8º¬^ñÓҋĽN+¼+ ÛÓQ€õ¥uzÅOK/÷8­ð®€nOˆ¯Ð_î»k öèz=·Ö¨K@/~Oké¡€V`»Hø<­¥‡Z;°]$üžÖÒCw«‚Ÿ”yB§¥Ézò¾?Võ ¡ÓÒ‹”;ùø® ØHßi½´Ö¡ûŸžÊ¸Þ5¡ÓÒ‹”;ùø® ØHßimzÙéò^úß üuj«¯ˆ\) <°‘¾ÓÚô²­ò¨~ù±àSvÕy @äJ€`àô–î©Mà­E»Î?ùø® ØHßiéž•þÀ”]u^¹R;‹”ûà/¾+6ÒwZšb‹„we’W¼´Î{«7Ræ ï èötT¿3Д]u^ƒK ì5 ñÀN/çU #€Ä^ ¿Hüª:7Rz=zÙ)ó ~ùB µ»ª½ä# âú‹Ä¯ªz× =žýÀ[‹„w%«è/2åªÆ¥-¬[à­E»’Õ ô™rUã‡"{zD·­xk‘ð®dõýE¦\Õø¡ÈžÐ÷ç•q½]/Ð_dÊUÊ£—&êÏ;s0åoƒ@Ä ô ?RÛN@üè¼@Ä ô ?R>PÆõ®ˆx€þ"áGê`â'ãG7à"^ ¿Hø‘ÂØ5®w @Ä ô ?RÛ¯ôi©è/~¤.&~/@üè¼@Ä ô ?RO~àXà>-õýE€,×D¼@‘ð#…À‡ÆÀ}Zêú‹„© > è <Ч¥^ ¿Hø‘ÂØ5®w @Ä ô ?RÛwÀÁÀ}Zêú‹Lù¶•ø¡ÈžÐŒg”¸†_8~(²§t{²ÇÏ(-p ¿8püPdO8Ï(-p ¿8püPdOèþ!N߸ޮ€ˆX8~(^v»<$à <ð³aå Àä•5pì×ÛÕµpz“WÖÀ€à  ÛS›ê #2Swչȯn†½ÀÂÀñC‘=µ Lž¸†_X~¹!Àçõ1uOmzᯖA/`òú˜Àº§6½€);1à"^ R`ÝÓQýüá­ŒÀéÓ×ðÕozÙ)óˆÀúÀáI€køj7½ì”yP£?pÊN x€ˆ¨ø¥µ€ÅÓ×ðÕ¿´Ö#>X8< p _-ð¦—&jð'MÙ‰/ñ•ozÙöØ#0=pxà¾Z`ÝÓ#âC€µÃ“×ðÕozÙ)ò øÀâÀáI€køj7½ì4yP·ÌÀºÀáI€køj·­µ ,ž¸†¯xÛZ›n_|°4pxôÊú}kò…©ø³CÒœ8< 0y¥ <;ÆõvD¼@ÆÀsp» ýà YwD¼@ÆÀSðÏ'øÀÂÀáI€É+mà¹àoÖOL^iÎ÷Jx.øJÀµÃ““WÚÀSÀw.ž˜¼Òž €]ãz» "^ c๸É7ÖïÄ€ˆx€Œ§àÖOL^iÏÀ®q½]/10_ú{X€É+mà¹à¯×žâÿw(À:/fu$ <ûÆõv„^ & Ÿ50`ÂðY& Ÿ50‰PîGì-]€Ä^Ö¯6št{j˜x©Èp¾WÚÀòk@eOˆoZx©—õëg¾¤—ìéñÝ€‹/õ*øÚÃËžß ´8ðR¯r¯=¼ìé€Å—z• |íáeOˆoZx©W¹À×þÑËN“^êU.ðµ‡ô²Ód‹ÀôÀK½Ê¾öð²§GÄ¿ ¸6ðR¯r¯=¼ìéño.¼Ô«\àkÿèe§ÉƒâŸ[x©W¹À×~ÓZ›ÀâÀK½Ê¾öð›ÖÚÄß,¼Ô«\àkÿèe§É£âß\x©W¹À×^öÔ&0=ðR¯r¯=¼ìémßó/õ*øÚÃËžÐÖ^êU.𵇗== Û“˜x©W¹À×^öô€ÀâÀK½Ê¾öð²§tÿ90}ã¬;<^å_{øG/»]Xx©W¹À×þÑËn— Ó/õ*øÚÃËžÚ¦^êU.𵇗=Õíå¿`~à¥^å_{ø¦¸Gõý±?ß °2ðR¯r¯=ü£—m—Çt»ñ…@‹/õ*øÚÃËžÐÓW€ù—z• |íáeOmª€ð¿]»:ðR¯r¯=¼ì©Mõs‘¬^å_{xÙS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOꃾ ç"Y½Ê¾öðmaM…3¼É«\àNaêç«e•qÖ¸ô5`xW¹À›^vÊ<"P00Û¼ÊÞô²Sæ}àɹHV¯r¯=|S\—@¡À oò*¸SX·@þÀ oò*X÷ôˆø@±À oò*xÓËN‘Å'«fx“W¹À›^vš<¨Û?f P`†7y• ¼m­M Z`†7y• ¼m­M·/>¨˜áM^åo[ëÔGýXðœ‹dõ*øÚÃËžÚòfx“W¹Àº§Å{•3¼É«\à^cëûßSÆYwâÒ×€á=^å?·Ö¤Û“ȘáM^å¿´Ö!¾°^`†7y• ¼ée§ËCú¼4ç"Y½Ê¾öð²§tÛy+ïN\ú0¼Ç«\`ÝS›@þÀ oò*X÷ôˆø X`†7y• ¼éeÛãQñIÀjÞäU.ð¦—&Š¿¬˜áM^å¿´Ö#P-0Û¼Ê~i­G|P-0Û¼ÊÞô²ÓäQñIÀbÞäU.ð¦—m=ù3¼É«\`ÝÓƒâ=€JÞäU.p¯±‡ÅwV Ìð&¯rŸ[k P-0Û¼Ê~i­C|7`½À oò*xÓËN—‡ÄwÖ Ìð&¯r7½l«<*¾°Z`†7y• ¬{jȘáM^åëžÚòfx“W¹Àº§6€üÞäU.°î©M `†7y• ¬{jȘáM^åëžÚòfx“W¹Àº§6€üÞäU.°î©M `†7y• ¬{:¬¦ð¯o'݉K_†÷x• ¬{:ª¨˜áM^å랎êöêòfx“W¹Àº§£ºñÝ€õ3¼É«\àM/;e¨˜áM^åozÙéò¨ø X`†7y• ¬{jȘáM^åëž?¤X`†7y• ¼éeÛãQñ9€jÞäU.ð¦—&Š Z-0Û¼Ê~i­G Z`†7y• üÒZø Z`†7y• ¼ée§É£â“€Å3¼É«\àM/Û{òfx“W¹Àº§6€üÞäU.°î©M `†7y• ¬{jȘáM^åëžÚòfx“W¹Àº§6€üÞäU.°î©M `†7y• ¬{jȘáM^å랎êûK€øJÀRÞäU.ð¦—M•õ§û·Õß Ð×€áÏö*xÓËN—õ?,à¿nÿ¶«õ®Ã{¼ÊÞô²ÓäÝþÔÇ|¶W¹À×^ötTÞù_ÿÍ@`•W¹À×^ötT·ûg•1øl¯r¯=ü£—M•Mç,’Õ«\àk/{j8g‘¬^å_{xÙS›À9‹dõ*øÚÃËžÚÎYÄëþº‰Õsz• ¬{j8g¯Wx¿VÎéU.°î©MàœE@B¯ruOmç,z• ¬{j8gЫ\`ÝS›À9‹€„^åëžÚÎY$ô*X÷Ô&pÎ" ¡W¹Àº§6€s ½sEÜ;OIDATÊÖ=µ œ³HèU.°î©MàœE@B¯ruOmç,z• ¬{j8gЫ\`ÝS›À9‹€„^åëžÚÎY$ô*X÷Ô&pÎ" ¡W¹Àº§6€s ½ÊÖ=µ œ³HèU.°î©MàœE@B¯ruOmç,z• ¬{j8gЫ\`ÝS›À9‹€„^åëžÚÎY$ô*X÷Ô&pÎ" ¡W¹Àº§6€s ½ÊÖ=µ œ³ÈÎ#á嘼ÊÖ=µ œ³ˆwx`ñ*X÷Ô&pÎ" ¡W¹Àº§6€s ½ÊÖ=µ œ³È·ú`•W¹Àº§6€sÙ™¬ò*X÷Ô&pÎ" ¡W¹Àº§6€s ½ÊÖ=µ œ³HèU.°î©MàœE@B¯ruOmç,zM þRO½²ŸÓkõÉǽdOmç,z­>ù¸—ì©Mà­EœßÀVy€Và¬À hÎ Òy€Và¬À hÎ Òy€Và¬À hÎ z üuŠ/—u5 û\åN>< H 4»@ïÊ%{jÓ ÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µ lÎX>âôòíÊ%NÞ¹ˆ¾E¾ÓÒ=µéƒ øŒ>:g`ùˆÓ+¾+ÎðšròÎÀáI@–kn 8ßkÊÉ;‡'Y®A¸à|¯)'ï žd¹á€ó½¦œ¼3pxå„Î÷šròÎÀáI@–kn 8ßkÊÉ;‡'Y®A¸à|¯)'ï žd¹á€ó½¦œ¼3pxå„Î÷šròÎÀáI@–kn 8ßkÊÉ;‡'Y®A¸@øŸíK{òÎÀáI@–knàÅ`¼·À´‘²§6€íÑ9‡—A/çðq/}‹Œ){jØ3pxyôr÷ҷȸ‘²§6€íÑ9‡—A/çðq/}‹Œ){jØ]ø;ˆ@ß+~(^Îáã^ú7RöÔ&ðÖÑ žâß•‹¬>ygàð$ Ë57˜Y}òÎÀáI@–kn 0-²úäÓ€,× Ü@`ZdõÉ;‡'Y®A¸À´Èê“wORòáá¯õ~RÝwBàìE€k#eOmj0åÞN¹áÕó~dà€é´tOmoÝâáÃÌ€ÞÈø¡è\¾@+ðÖÑ->ü÷ÒÃûNK÷Ô&ðÖÑ->ü÷ÒÃûNK÷Ô&ðÖÑ->ü÷ÒÃûNK÷Ô&ðÖÑ->ü÷ÒÃûNK÷Ô&ôç‚ã^3N¸Ñ?Ë7#heÀÀNL¹‹OñŠïŠs½‘ñCѹ|3€Và¬ÀS¼â»â\DodüPt.ߌ 8+ð¯ø®8Ñ?Ë7#hÎ <Å+¾+ÎEôFÆEçòÍZ€³OñŠïŠs½‘ñCѹ|3€Và¬ÀS¼â»â\DodüPt.ߌ U2 |{Iø„€k½‘ñCѹ|3€VÉ ½|'\‹èŒŠÎå›q5âßQ/{j8X_©)^ñ]q.¢72~(:—oÆÕˆ/{j8xΗA†Ñ/ èÀÚ~<ÞŽ§wî„öòФÀq/}=ÃÌùÐuÎðñÃ/€ÇÛñôÎÐ^¾ÁÀá?΀kxÙS›ÀYã^úz†™soç Ÿ1üÂꔹdOmgŽ{éë~„^X½‘2—ì©Meþ+”Õã^úz†¡Vo¤Ì%{jS„7/m`ù‚óôSî­ÓËÙÍð «7Ræ’=µ LìôZ{o^În†_p¾ƒ ²t k`§W¼Y‡×ÝŒÏ~Áy½@–d ìôŠw ëðº›ñÃ/€ÇÛñôÎð ŸÐêÀN¯x²¯»Ÿ1üx¼Oï܉¯ð ­ìô’ÃOùâ§—çi ?ý+{j˜Øéõ9Ã_ÒKöÔ&0=°Óës†=/ÙS›ÀôÀN¯Ïô¼dOmÓ;½>gx'©oÓÓÓ½>gx' ?²\©ÏéÀ€×ç ¯¿tzj˜Øéu…á@§§6€é^Wtzj˜Øéu…á@§§6€é^Wtzj˜Øéu…á@§§6€é^W~-Ö~S…ì©M`z`§×†_ €µÃËžÚ¦vz]ax9cøgЪ>â×`q`§×à;`Ъ>r.z€V ``ò­@þÀÀäZ€ü€É ´ù“hò&/Ð ä L^ È˜¼@+?ðÎ#—þ*¨ø  È˜áM^ È˜áM^ È˜áM^ È˜áM^;?z8g`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›@þÀ oò*X÷Ô&?0Û¼ÊÖ=µ äÌð&¯ruOmù3¼É«\`ÝS›n¡ü: !„B!„B!„B!„B¡–üÒ#ùUI{_®Ô}eç+œÔ ú½zÿ•ï_ë¼ö÷:ÏüòˆöjÝþ¼Ýfß«÷ˆ|B¾ò÷Wä á{D{5nß/ô'Ùõê<"Ÿ88Ûðk´S'YgM¾Û>/vz¢ÿÊ}·{'$ÿòˆöjÝODsµÉ'ä+E¾Ðþ·G´Wã¶y"¸H;¼|â@àlïQ7ã÷+ánJªí½°-PsùÊßù:G÷÷…ø#m¶Ÿ^çü±jÿx,Ò}¡}MÆÚ üÛ…î ?ÚÍÎðw«î»2Ývlûô^¬ý>í¾Ð¿F{t‚}‰á¬Ô{¥Êÿ­‘ê:«Mݱò@F®r/‡xZ>Ò{íö½ÞtçW¥ÝÜ›¾—zB]55ÿw¦½gí^õîöï5ZKÿð»Ø]]¢á Î ý}ýØ@®Þ¹÷Ir0@ÇØIì¹\fç‘XÍ¿_’ꦺ¹ÝÍ÷{.Ÿøõ‘HÍhh/›^÷ì¶ùOûB÷FË«Þâ×GºÝ”Ã+”ÞÛ¦ŸSr»l·,S¬ìÎk½Ïxüâf@ÿ¡xÑöÿê>ô¸ƒ Ð>ô¤ûBèÖ>~E,Ò /ŸÈ%ŸØYå·nJh2ÈEäûeu°[åXÏõû¯ÄŸ0 ·Èo^’ qD&Q¯l&ì¾ Q²{›…×Û«ÿîµ+âÕ-ÚϯtW¹í|nbÇëíÕw^Y"ý§öþ+Ú/öDüÓƒ1¯û?žn·>»å+¿yµ±å¿{unç¯ ÿõBgxýÊ/^íðú‰WB!„B!„B!„B!„B!„Ðgê×/•_¢*¯7 ¿Ÿ!TXo6šâ#TX·çoÛüçöëoy~íëëéÛÛæ‚Šªývñæ›ÇŸËË··?}ì{ÏB¿è§õÛ?¼÷ðòQ?@¨°ž¶F·ÁÍ/¶ÿ *©nó_ðócsº<ÞÕÒãOðí'õ^> Øü–Íϱzzë ¡]FèÂ!„Zý?| ?’)IEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastq_nucleotides_distribution_4.png000066400000000000000000000325141226234573700310460ustar00rootroot00000000000000‰PNG  IHDRdå?PLTEÿÿÿ   ÿÀ€ÿÀÿîîÀ@îî ÀÿÀ €@ €ÿ€@ÿ€ÿÀ`ÀÀ`€À`€€@ÿ€0`€€`@@@@€€€`€``€`€Àÿ`ã°À@À€` À`À`À €€€` €``` @@ @€`€ `€``€€€€@ € €€€    ÐàÀ €€À`€ÀàÀ`ÀÀ€À€`ÿ@ÿ@@€Àÿÿ€`ÿ€€À ÀÀÀÀÿÀÿÿÿÿ€ ÀÀ ÿ``ÿÿ€ÿ €àà àà ÿ ÀÀÀ    ÿ€ € €@ €@€€`À€`ÿ€€ÀÀÿ€@ÿ @ÿ `ÿ pÿÀÀÿÿÿÿ€ÿÿÀ #)).32=6G:Q=ZAdDmGwJLˆO‘R™T¡W©Y±[¸^¿`ÆbÌdÒfØhÝjâlænëpîròsõuøwúyüzý|þ~ÿ€ÿÿƒþ„ý†ü‡ú‰øŠõŒòîëæ’ â“ Ý• Ø– Ò— Ì™ Æš ¿› ¸±ž©Ÿ¡¡™¢‘£ˆ¥¦w§m¨dªZ«Q¬G­=®3°)±²³ ´ µ!·"¸$¹%º&»(¼)½+¾,À.Á/Â1Ã3Ä4Å6Æ8Ç:È;É=Ê?ËAÌCÍEÎGÏIÐLÑNÒPÓRÔUÕWÖY×\Ø^ÙaÚdÛfÜiÝlÞnßqàtáwâzâ}ã€äƒå†æŠçèé”ê—ëšëžì¢í¥î©ï­ð±ñ´ò¸ò¼óÀôÄõÉöÍ÷ÑøÕøÚùÞúãûçüìýñýõþúÿÿŽ(+/ IDATxœíÑv»rD­•¼äï[þÿ/’slz(±‹BõÔ€µ{eå\žêj4z[¢Dé×/‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ "Ï6¿þõ—ºáÙsAäâŸY+æ­ÁÛŸ5ðåoWxÈ@Ä¥ñÏ¿õ&žþ%½7 ÉàÄÜø€Û>ø¿ýÿ?ÿNß¶þ¬n{_þÊ蟽__ÿ¬ò÷ý6ñáx€ ˆ||ü°¿#xÿ±ù—?üôúç½ÏŸH”*™ÒË@ÄñûÞûi»ýñW8ˆñ<þ ¿×¼ÿÿÏÞ§ ˆâ9þþïgãy÷§¿>=ðø ˆ¥B|(/ÆSí ~ P"f,AÄ1{w¯é}|ZÝþóëaïñ¯ÜD?>}zðéñão|zÙïö߯ÙAAAAAAAAAAAAAAÄbñ¿Uô6VÕš’dU­)IVÕš’$ªu}|±~\€¯ëÿyˆÿém¬ªµaŠiu’ñ¿O7¢¾äœÆ¬o˜âCZÛÖs °¾aŠimgXÏi,Àú†)>¤µá‡9µ`ôÇ9€õ S|Hk;ÃsúQ~ÁàS¨ob˜âCZÛ~˜SÐÚÎ0Ň´¶3ü0§†¾xÖ7Lñ!­í ?Ì©€_àM S|Hk;Ãs ZÛ¦øÖv†支´¶3Lñ!­í ë9ý6Àû¦øÖv†õœÆ¬o˜âCZÛÖs °¾aŠimgXÏi,Àú†)>¤µa=§±ë¦øÖv†õœÆ¬o˜âCZÛ~˜SçË€|'໦øÖv†æ´ø›Oþ}d裰¾aŠimgøaN@@k;ÃÒÚÎðÜ€€Öv†)>¤µá‡9­í S|Hk;Ãs ZÛ¦øÖv†ætü«à} S|Hk;ÃzN¼‹aŠimgXÏi,Àú†)>¤µa=§±ë¦øÖv†õœÆ¬o˜âCZÛÖs °¾aŠimgXÏi,Àú†)>¤õ$I ~˜SãË€cï¦øÖ“$ÿýÿýzÃsZø|ðýçoò3߯0Ň´~F¬o˜âCZà1Àú†)>¤õÃÀyÃÒúaà5€71Lñ!­7€ñ#ÁÀ»¦øÖþ0‚Ÿ ø6†)>¤€úÎU0`}ÃÒŠ@=6¾ﯵaPÎi,Àú†)>¤cä¾Y{»{ BZà1¶€ß¡^Sk;Ãà~Nð›@Dk;Ãà~N?þëÛx×ï­í €û9õ0à*ÃkjmgÜÏ)ç´¶3 îç€sZÛ÷s ˜òMœ‹jmgÜÏé~3PSZ·¨Öv†@9§ß_”`#àœÓX< ÷w¯îÜø °ÛøjÃ3´Àc< 7h¯îÜø °ëÕ†gh€ÇX úõ9©qYÃ3´& øA´œÓX|Q]Ÿ*ˆÔ¸¬áZ“»ªzNc@ržfœ*XÑð ­ý0þeÀöW’'áwhÆ©€ ÏÐzüçÛ8û}É“ð;4ãTç|öÖÓ.jXO <¸¨u`=­Ÿ€±ÀE­ëiM@|0Ø¡³ V4y¾aÜÖŒd£óɃô ë$à¶`ô O¤oX'·5£Ùè|ò }Ã: ¸­=ÈFç“éÖIÀm ÀèA6:Ÿy¾aÜÖŒd£óɃô ë$à¶`ô O¤oX'·5£Ùè|ò }Ã: ¸­=ÈFç“éÖIÀm ÀèA6:Ÿêâ9_9-ðp¬|ÔÅr¾rZà1ÀÖßìÔ0l?ê☿xÄ~ÔÅ\ÃÉâ' nkuñ×p²øÆ €Û€ÁG@]<À5œ,¾qÂà¶žû«WÀ;{`ž0¸­§À¾· t Nnkuñ×p²øÆ €ÛTÅ@]<x?اLÃÉâ' nkuñ×p²øÆ €Û„ ¿×¡q=s ê$à¶!$¯gî @ÜÖŒÖÝò '‹oœ0¸­5¬»åNß8ap[0jXwË7œ,¾qÂà¶`Ô°î–o8Y|ã„Àm À¨aÝ-ßp²øÆ €Û€Qú[¾ádñ·5£†u·|ÃÉâ' nkF ënù†“Å7NÜÖŒÖÝò '‹oœ0¸­5¬»åNß8ap[0jXwË7œ,¾qÂà¶`Ô°î–oX½w ”s .€ÿKKµ–_|ã„Àm À¨áÝåœÆŽ5£†gt ”s 8ÖŒžÑ-PÎi,àX0jxF·@9§±€c À¨áÝåœÆŽ5£†gt ”s 8ÖŒžÑ-PÎi,àX0jxF·@9§±€c À¨áÝåœÆŽ5£†gt ”s 8ÖŒžÑ-PÎi,àX0jxF·@9§±€c À¨áÝåœÆð£ðñq/øAøó‹Ú¤0Ægt ”sÚß³GÀÀW=ÀÏÀCÀ±`ÔðŒn€rNÏħW? d Ïè(çôD|XEï¼À÷ññI¬€ùNø»à¼aßW£xÐ >—ö}5нàE@pµaßW£xÀÏŸ¼êÅ~`úñF_ ’O¼âsù³ ¿ÐúSðÿŸý¿Û‹€Ò°ýðÙ: ¸­|¤´dS޹,†¹ïö}ÀJÒ0Üèü”â@?6Üèü”â@ ¯Ö’M‘sz2Þ逕¤a¸Ñù)Å€VüþÕ@J€ÑG@JK6åÓÔ†‚€g¸Ñù)Å€FܾÿA ¿äwÏp£óSŠw:nBŸçÿ`oï‘'†ýoÏl/›ÒH’¼ö¾–lŠœÓñn?ÜZµ¼G:3,>™$yí}-Ù9§±Çðù˜òé„lŠœÓ³Ñx  qÀ©˜Å'“LÑÚÉÖ5´ä#þЪ à=L­pâÍ@ÉÖ5´ä#þЪ à=L-^} eX}¡cmܤ@±¼G~6·h |ÖC­³{ ®¿EÉ$¾Vã-) <-Pžr‹’I|­Æ-Z÷r`¨uvOÀõ·(™Ä×jÜ¢5ðûu@% <-Pžr‹’I|­Æ-ZÿüðZg÷\‹’I|­Æ-Z÷Ÿ€¡ÖÙ=×ߢd_«q‹À¿Ÿ(aài€Òð”[”Lâk5nÑàEÀFë잀ëoQ2‰¯Õ¸E‹à©0ð´@ixÊ-J&ñµ·h4 H²u -» ÜžáäÏ•Z¼ Ñ:»§àú[”L2å-€Oz`¨uvOÀõ·(™dÊ-àÕ LÃÉ[´øÀoÝSpý-J&™r‹Ö/6Zg÷\‹’I¦Ü¢EðTxZ 4<å%“L¹E‹àþ0Ö:»§àú[”L2å­€î/I¶®¡%™Ò:»§àú[”L2å-€Or`¨uvOÀõ·(™dÊ-àÕ LÃÉ[´>ýz@0Ô:»§àú[”L2åðꃦáä-ZÏ…€§JÃSnQ2É”[À«˜†“·€W$0 'o¯>H`NÞ"^}À4œ¼E¼ú €i8y‹xõAÓpòðꃦáä-ZŸ¿  ¶Îî)¸þ%“L¹E¼ú €i8y‹ÀM x­³{: ò‡VË$À3œ¼E¼|€g8y‹Ÿø­³{ ®¿EÉ$SnÑà‡‚6Zg÷\‹’I¦Ü¢EðTxZ 4<å%“L¹E‹€OüÖÙ=×ߢd’)·h ð@£uvOÀõ·(™dÊ-Zÿˆ¯uvOÀõ·(™dÊ-àå3<ÃÉ[´ øÀmÝSpý-J&™r‹ÖÀ?j|Ðl]˜·h<å#ÿyˆÿ<-\‹’I¦Ü¢EðñÁ/q[Àù[´þy€×ÌÖpþ-¾ à·€ó·€_·ðÀwÊG¦´. û„àÝ€ò‘)­àü-ZO…@ùçoÑ"ø‹ô©Ëpã ýnÏpò­€à·€ó·h<å#œ¿E»ó ˜ÓÁ—­àü-? òû}ìà; Øøf8™~Jëð}M™à¶7À­\`¨u n¼-^úÀ1û¸À‚ LÃö $0 Û,|À4lo°ðAÓ°½±>šo²,xÀ4lo,€î»íã $0 Ûëà©pôÞ~6^û†í pfh“ZÉÖ€^[|Ò°ÚXÍ75Z'1E+Ùº)Pÿ:|­dë¦@ûà¢C­`¸[ò‘EÐüÝ€ÖùC›ÔJ¶î'@¾>¼nÉGÖÀGów6ZçmR+ÙºŸ©¼nù9Í_ Öh?´I­dëî–¥Š9=| Ñ:†»åäTt7`£uþÐ&µ’­`¸[þAÎÀSaP>Àp·üƒœ €ûÀXëî–SðÁ§~ëî–sðI µ€ánù PZ ˜Óqû6ÏZ”0Ü-ÿ À÷Zò;Õ§´€ánù9Ï…—@®C% ÊGî–óðñå¿`¬u wË?ȉø÷sÿß ë?¿>½X€ò†»åäDüúüÀ`¬uIÀ4<å#IH-í €‹ µ€Á šZÚjxбC­¯@î€Çx ä á3:À…× ´NÎÀŒpáõ ©¥}€ª¿ø× €¦–öªRüâg\¯=ðâ÷0h”sz6€×:7ÖÀßÝ•ð ñ=÷R €Á ° ƒæk€P··È/>iXwË?ȉøª†ZÀàÆÚxÐC­`pcHaài€P··È/>iXwË?ȹà5¿u n,^l´n Ô—-@]Š_|Ò°ÚXÿˆ¯uS 6@]Š_|Ò°Ú ©¼[äŸ4¬6v@ëS€Æ[xe#4 Ê9=­ ÞZÙ €rNc†Z'µÔÏ«f··È/>iXmtRÞ"9§'ƒÌÖ% Çð€ô%çôDüþÝ`J¤Š÷µ€w‹üâ“†ÕÆè|ðýÆâè¿ðýÆ U¼¯¼[äŸ4¬6ÀW)0ÔºŸùÀÙXÏ…@ªx_란³±>øÀoƒË€­`pc}|ÒC­{1ÔwНø¤aµÑ@/€|)¼Á!Ãj£©õyj3ñͧöõ¦aà圞‰ç/K«a8†@9§±C­`pc ð€Ù:7–À7ï–VÃ0p €rNOÄ7_–VÃ0p €rNÛñí»€¥Õ0 àœÓv|ûn@`i5 Ç0(çôD|ón@`i5 Ç0(ç4`¨u nÐÔÞ-ò‹OV4µ€w‹üⓆÕM-àÝ"¿ø¤aµ@S x·È/>iXmÐÔÞ-ò‹OV4µ¦@þ*àV4µ¦@–aµ±8þëXZ ÃÀ1 Ê9íÆÂ0° «ÅðU µ€ÁÅÀ»€0 ,Ãjcmðv`  ˰ÚX_µÀPëÀ[@þüý9°½ƒžÓX€¡Ö€·@£óöFÔ—œÓ3Áñ[ÀàÆòà5€FëÜXŸôÀPëÜ ©¼[äßè¼½±>øÀoƒÞWx€æ-ò‹otÞÞˆjÉ9jƒ?ú»+d#4 Ê9Eú$d#4 Ê9jƒ4µ@©,¾Ñy{€¦(µ‚Å7:ooÐÔ¥V°øFçí šZ Ô ßè¼½±6~ Pö;õIÈF0h”sÚŽgÿ#ú^}² 圞ˆÿ'¸­`pcm|ü;þO„€§Õ0 àœÓnüûÁøÍ@ú$d#4 Ê9íÆÇíU@% <­†aàåœÆ µ€Á šZ Ô ßè¼½@S ”ZÁâ·7hj€R+X|£óöM-Pj‹otÞÞ ©J­`ñÎÛ4µ@©,¾Ñy{€¦Öª¿Ó2Ù-­,¾Ñy{€¦ÖªhhùÝÒZÁâ·7hj€R+X|£óöM-Pj‹otÞÞ ©J­`ñÎÛ4µ@©,¾Ñy{€¦(µ‚Å7:ooÐÔ¥V°øFçí šZ Ô ßè¼½@S ”ZÁâ·7hj€R+X|£óöM-Pj‹otÞÞ ©J­`ñÎÛ4µ@©,¾Ñy{€¦(µŠ±C­•–Í,rZà1ÀPëÀÕó”ìüÃS´äœÆ µ\=OÉÎO1¡ Û5¾ìË@Ópò eù„6l×.×’s pß:_«a8y2‰|B¶k—kÉ9¸o¯Õ0œ¡ Û5€ËµäœÆÜ·Î×jN¤L"ŸÐ†íÀåZrNcî[çk5 'R&‘OhÃvàr-9§±÷­óµ†“)“È'´a»Fp¹–œÓX€ûÖùZ ÃɃ”IäÚ°]#¸\KÎi,À}ë|­†áäAÊ$ò mØ®\®%ç4à¾u¾VÃpò eù„6l×.×’s pß:_«a8y2‰|B¶kœÿ»t†íË@Ópò eù„6l×8 v€à¾u¾VÃpò eùDcÐóäw«áË/^ö“LÑ’s pß:_«a8y2‰|¢1hyò»Õðå¯ ûI¦hÉ9¸o¯Õ0œÑ´Æ<ùÝjøò‹×†ý$S´äœÆÜ·Î×jN¤L"Ÿh Zcžün5|ùÅkÃ~’)ZrNcî[çk5 'R&‘O4­1O~·¾üâµa?É-9§±X Eàõ±ô©Ú‡÷³ H jÃ~’)ZrNc†’H­U 7@iØO2EKÎi,ÀP©BÝ•–œÓX€¡$R „º*-9§±CI¤u TZrNc†’H-ê¨´äœÆ %‘Z Ô-PiÉ9J"µ@¨[ Ò’s 0”Dj€P·@¥%ç4`(‰Ô¡n€JKÎi,ÀP©BÝ•–œÓX€¡$R „º*-9§±CI¤u TZrNc†’H-ê¨´äœÆ %‘Z Ô-PiÉ9J"µ@¨[ Ò’s 0”Dj€P·@¥%ç4`(‰Ô¡n€JKÎi,ÀP©BÝ•–œÓX€¡$R „º*-9§±CI¤uë'Àþ-‡zNc†’H-êÖO€#åœÆ %‘Z Ô-PiÉ9J"µ@¨[ Ò’s 0”Dj€P·@¥%ç4`(‰Ô¡n€JKÎi,ÀP©BÝ•–œÓX€¡$R „ºÕð%¿ªÆ %‘Z Ô­†¯¤a©å퀞Vã ýSù ¿Uö“LÑ’s 0”Dj€P·’°³€cí»WÀÔj¤* 4œK@S«qþ©€Òp. M­ÆAú§Jù$4µéŸ ( ç’ÐÔj¤* 4œK@S«qþ©€Òp. M­ÆAú§Jù$4µéŸ ( ç’ÐÔj¤* 4œK@S«qþ©€Òp. M­ÆAú§Jù$4µôAÚïnVvp¬}÷j˜Zú ýâå†b %ÿp5NÕ¿RÉ$Rk;èâíÀåZrNcq)d#§ê_©d©¼ƒ” Ò’s 0”Djï å¨´äœÆ %‘ZÀ;H¹*-9§±CI¤ðRn€JKÎi,ÀP©¼ƒ” Ò’s 0”Djï å¨´äœÆ %‘ZÀ;H¹*-9§±CI¤ðRn€JKÎi,ÀP©¼ƒ” Ò’s 0”Djï å¨´äœÆ %‘ZÀ;H¹*-9§±÷Iä/‚“Z Ôò}€JKÎi,À¹Ö€RË÷*-9§±çZJ-ߨ´äœÆœk(µ|_ Ò’s p®u« ùk퀓€¦¯ÆAN)„Ò×’s p®u?öO$)-9§±çZ÷`g)-9§±çZJ-ß0¨´äœÆœk(µ|àҒs p®uú§lû¾9¥x;;HiÉ9¸êø¾9¥x;;HiÉ9¸êø¾9¥x;;HiÉ9¸êø¾9¥x;û€úV+š¾9¥x;û€îVΰžÓX€s× a8ySŠ·³€a=§±ç®AÃpò §og¦–ütBÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ@JKÎi,À¹kÐ0œ<È)ÅÛÙ_ õcöÀc€s× a8ySŠ·³¿ÉâÝ jÉ98w †“)ÿ­Ko=HiÉ98w †§d²xûè@JKÎi,À¹kÐ0<å åFã·ZÛGßéV@Ïi,À¹kÐ0<å Iì£ÝJ6Å®ëäIø÷6y¥Iü↧d#‰]#0Ò×’s pî4 O9ÈF»F`¤¯%ç4àÜ5hžr$vÀȤáÆÐÚÌ@£ø×jÉ9¸æ®½ú “†Ck?J-9§±¸¯ýy5É$â“Z~Iáµ¥–œÓX\ _«q üá˜q×€÷(µäœÆ\s×^ý¡TÒ0x™–œÓX€Ófñ¯Õ’s‹ý0å…†)ÅÏÐfñ¯Õ’s‹Å0ã µû}5¼®ø×jÉ9Åb˜¡µáW^¦%ç4`}ï.¼LKÎi,Àú†_]¼|•\­%ç4`}Ãˮ֒s °¾áe‹WkÉ9Xßð²Å'0åë?Éâ§hÉ9Xßð²Å'°]ñS´äœÆ¬oxÙâÀÕZrNcÖ7¼lñàj-9§±ë^¶xpµ–œÓX€õ /[<¸ZKÎi,Àú†—-\­%ç4`}Ãˮ֒s °¾áe‹WkÉ9Xßð²Å€«µäœÆ¬oxÙâ5ì÷íWü-9§±ë^¶øÆ·ïKKÎi,Àú†ß©x`iÉ9Xßð;,-9§±ë~§â€¥%ç4`}ÃïT<°´äœÆ¬oøŠ·ˆû;ïkÉ9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcÖ7Lñ!­í ë9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcÖ7Lñ!­í ë9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcÖ7Lñ!­í ë9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcÖ7Lñ!­í ë9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcÖ7Lñ!­í ë9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcÖ7Lñ!­í ë9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcÖ7Lñ!­í ë9Xß0Ň´¶3¬ç4`}ÃÒÚΰžÓX€õ S|Hk;ÃzNcQýÂv‚ ‹«@AAAAAAAAćüÖ#ù]IϾ]©ÜyòNjC?¢³×;¿ÿ¬ØûóÅ3ß<¢µÕþ]—Å<ת‘OÈ?"7Šâ¿{Dk=¨ýÞ¨+yªU<"Ÿ8axµâ_OÆI޳¦F­öœOd=QïÜN»êpüÍ#ZëQíxÂõõø˜|Bîüù¹QÿÝ#ZëAíî 3Écñò‰†W+þ5Qzü½cϦ¤Ú³žX3Æ\îü©¯hÝŸ ÿ‘Go7¾ÖùWêñŸ#I¹ñ¸'m=1üÝ….ŠïÎfQüMªüP¦œŽûy³õ|žžnÔ×èÙ#…±_¢ø¿Rê£Ò†ÿwtfP³:Ô'RÈÈ,·áQËGª½¿°¯æ¦¬_ íݽ©µÔꪩú{zöÌC<½êåñ?›hÝ–ºù%žf—h8TlÔ*ú~û¹Ì^\‰[%k0@ÛxâМs™æÉ#Þ˜ÿÞ’êCÍæ3èÙŸsùÄ·8c~ áñ²©âõœ}Üýçq£¼Ñòª×O|ûH9›²x…ÒÛôÛôÓ`r ÷ô‚=–©aŽì“½êoÔ¢¨òíù?BåCÇ|!: )7¬[{ü‰HòP¼|¢áK>ñ$Ëw³) É “ÈËöÀÓQöæ\?ñ|Ç"€*ÉwZ’ >œJÔÎ]…å†FÉÓÛ,´†³¯õÌ–£UÚß?)³|AÛÇ äûi‚Ø8'šÁ'ˆããó›Åîþóñí_ù¼÷ë×§··Í/… 7ß.þðæñÏåËÛÛ?} °Ø{Ï ‚ø&þNýý?ÞÏðå³~@Ç短QNðÃ>þ@[F9ù_ð÷Çæ”Ÿ+@{Åñ/øý‹z_^|ø+w?ÇêÓê*‚xƒ`– â ‚ ãÿ [²ÆFÚ¹¬IEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastq_nucleotides_distribution_line_graph.png000066400000000000000000000517041226234573700330150ustar00rootroot00000000000000‰PNG  IHDR¹$#PLTEÿÿÿ   ÿÀ€ÿÀÿîîÀ@îî ÀÿÀ €@ €ÿ€@ÿ€ÿÀ`ÀÀ`€À`€€@ÿ€0`€€`@@@@€€€`€``€`€Àÿ`ã°À@À€` À`À`À €€€` €``` @@ @€`€ `€``€€€€@ € €€€    ÐàÀ €€À`€ÀàÀ`ÀÀ€À€`ÿ@ÿ@@€Àÿÿ€`ÿ€€À ÀÀÀÀÿÀÿÿÿÿ€ ÀÀ ÿ``ÿÿ€ÿ €àà àà ÿ ÀÀÀ    ÿ€ € €@ €@€€`À€`ÿ€€ÀÀÿ€@ÿ @ÿ `ÿ pÿÀÀÿÿÿÿ€ÿÿÀ #)).32=6G:Q=ZAdDmGwJLˆO‘R™T¡W©Y±[¸^¿`ÆbÌdÒfØhÝjâlænëpîròsõuøwúyüzý|þ~ÿ€ÿÿƒþ„ý†ü‡ú‰øŠõŒòîëæ’ â“ Ý• Ø– Ò— Ì™ Æš ¿› ¸±ž©Ÿ¡¡™¢‘£ˆ¥¦w§m¨dªZ«Q¬G­=®3°)±²³ ´ µ!·"¸$¹%º&»(¼)½+¾,À.Á/Â1Ã3Ä4Å6Æ8Ç:È;É=Ê?ËAÌCÍEÎGÏIÐLÑNÒPÓRÔUÕWÖY×\Ø^ÙaÚdÛfÜiÝlÞnßqàtáwâzâ}ã€äƒå†æŠçèé”ê—ëšëžì¢í¥î©ï­ð±ñ´ò¸ò¼óÀôÄõÉöÍ÷ÑøÕøÚùÞúãûçüìýñýõþúÿÿŽ(+/ IDATxœí[š«¸F©^˜aÞzþ³èpóE’ecƒÀÿ:}vUcA+Æ6d¸¿¿?iaø W¨´€¼»ðO ;¯®â:xßÓž8õ©lØ^+CPšC´²^v©¿ Øø’áAžk’bòGgš$±¿LQ¥"õÛ¤ jb€dÖ1Û'êöïú¹¾-ZÿÚ–ýEœJ×eC¸º_ËþâÚˆ¶p¬°W=$–•«…{ïVæ‚cuˆtÈÚÆÞ³Émã/z }™ÿILÖâ§möœp¹eÁâK‰c}o rWüˆèŒå³ÕM‡íåPLÚ·nNòûŸÖá2Ŷ Â}q¶ ú•þÓqy:AÃþ»”¶Î«ƒ·B¼Æ5b`\ÿJ9ÎÓXX€N`ÐLÚrËüD$kY‹¥ÄÀnÝ]M+†(»Ca0b@‹ôΑ“N_b0¸wôHËâ"[¥a-ÛêG ¯»qûnƒ³lð7ûýñûϯ,¬“ p]ϯ:蔼-ùÓ/wrÜG7à>ÀMÔ}¹€>qîÚ‡›þ¶§8ÕÜͽbøsä°-á×É_Rµ2€@cøK Ç Ðˆ €GÐ’í*f½–ñ.i €À?þ[ ×ó>åkbø €†„„ï&=…áC‚ €À—ÿ¬ë5ëlR) ‡} obDð^i8M´šÍb€0€Ÿ†“‚u=ˆ€÷r¢Å€µðVÐLj(•€x1Åiˆg>ð^쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè1 GçßhEÜDÀk‘Ópx/`¯%‘†#ãÜ+À›ñÓpT°®1ð^ÐbDœéchÄÀ픎J ó€sê&ªš7©½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ý‘Jû"F%x-¥bÀ<^ ĈðÓð£`]bཔ·ðøx^ .% ¢4 !^Œ½4´Ýqo®˜^?&ÄÀíÜš†ëõˆY1p; ˆœk‰¿¿vs$2&òo‰àom5¬¯ÝàËíiˆK ìaäRbÀ÷_J ®ÀöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dt‡½4´Ýa/ íE@wØKC{ÐöÒÐ^Dtǽiø÷ãÇúÚ}ánMïþýýa!"ÀˆaáRâç†?÷5ïÚpòϱZ †p)€) @„…> W` {ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆèŽ[ÓðïÇòóxñÆ€?nOÃJXܰ¿pg4€/w§á&ˆC܆«œk‰¿¿í p56òï·ý¿õrb}éÆp?lˆ—˜âÞ4\t1` bÀp%ư—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"ºÃ^Ú‹€î°—†ö" ;쥡½ˆè{ih/"º£uþýånbàvÚ¦áßBÞ:b¨iš†‹2Í1p;mÅP²ˆ€Û±—†ö" ;쥡½ˆèŽæi˜Ýû1p; WB <æb¸` @e @.% Â^Ú‹€î¸d¸2o…FÔàRqɨÄÀ³€¸”D ó4dÚþÃ^Ú‹”3ýþÇ%iˆK‰~™&xá‰@  !ÓÂÝa€l?ó½-<ˆ´} ó@C0*ñTÐÇÚ+ÜËèü›½4´8Äp3ãPà…KÒœ:] ·3xá’>t>v Äp?^@ç#h Äp;ãh®Åð—øVÛ¿ýÛ-"ë€îæëk} I/¬sÜË ˆáU@ 7óÏ £ÁQ ±þÕËn§äJâÞ4\›ËIïÅÜ{µU †»É¼¸2ÿ¸8V@‹á¥@ wSr!qóÌGô1¼ˆ!ŸÂÉŠ|mÖĺ‰ bx?Ce“«ÖuïÝ•®|=¸‡ª„¢ÉŠ\UöÄ°Õ Ný1QÍ VÅ¿ˆáMLÄP@ÑdEº¦ýŸ<쥡½ˆ@9C c½k ³bøÃÝ•=10þ&%Õ1ƒU1ø“—Tk´ ÜÄPD݃I1|ÿƒºb(¢1ä^K@ ob(¢1xÓUk´ ÜÄPDÕ“b@çcß@ E”Mc&ëñ~ê±—†ö"åLû?˜*Õf™Ä€o»îšºbpþ}7•Ä0F¿¨¹ Õ1uïŸ3 ÄPDbÈÞHb¨zÿœej‹aîB µÎˆáyT¼Î0“óïy †üjÂß´àRâ.zðÄPFéB Eô †ìmô#†Ì0y?ÎÓ“Ξ#ó»ˆá&ú˜È1”P~ëQKa]× Wæ\Mt$†÷›b(b ×hŒ% † †ÜJÈ¿ØKC{5¡»% †.ƒ8-Ä^Ú‹¨ C}Ì{—}Zt/ç_5}ô1\%†=˜ßK‰–Gú/zÓÝb¸êÓâÔ .á™b¸{T€·ž(†é3@ ƒóþOcn½’¨!†xEºª›Ä0<ï™Óï¬h^œ»õí)@ %\'îX^0*ñ41 Ã5×—ƒi1˜˜ÆpŸ< 6æÚi ño¢ò¨Db¨ð™A¬fM Ï{,ÄPA CÁ/ûˆáö4Œ¹;¢k¾†õäM±Ï`"~s€H:Ã/% †:ÈbÈ¿…bȯA¬ } TýR5ÅTöç3‘¿nd‹aö~4ÄÆ½•áïe5ˆ5Ý)†ï †ˆb`8ßý1´à1¼Ó C §Å@®cP O¼”h}bDoĦ1œï}z„¾›xÔpeí§Òh§¬>›”Jæ7A ™5H¯b¸ROíGÐ@ ÆÅpŸN‹YÅšþþžõ…3w‰áfh#†öf0$†‚ÓB/é@^0\™y-aD gÆèü›µJꥧóP1\ÓýÌÑ‹ž6*Q †ß1Ï{ÕJ¦®æèÒ~¸¸ †s”ˆaÈþæjˆá"1Hbø‚™‰ùý ¹oŸ~DéÁLì?®C¾´!†/¸»2 H ãX¡ÅЙ²ï¡.Cþa½U gg¾±å­‰!›ÛŸàDþ.2f,釚 ‘ûbÈ–¶-1Ô¸HåÜÛbh¾BUJÄðÏ ãùQ öU3äÞÜhB c¶„©¯Eϼϣ1d^G OÃ0T¹’^·ÁÅ0þÞœ¬ã*‰!{ûÙœ_Úš.X£&‰3†:WCV‡a+1d7rŠ‹“â!†j@ tùܸW 3ùkšÊbÈž–•I31‹0\©gþâ(¬ˆ¡d~“1dE/•…Îp³L›¡Á¨DF’A EkKË0\©§H ÙçÞ3Åû…Š¡ù¨ÄÉ›h²Ä îÄàž :3Tƒm3œCt(­ŠA¾½¶íXåY1ˆE!†@ "øÿ£bøqkn^7„)1èÌPS ¦Í%†Iüó©bh|Ó÷¹»ëÞ#†ýÇaˆÁ.Åû8¦™ù=EOb >J › †}Ñ(¸‘¼ùvbȉ¢®ZI”‹a9k^Òù¸á÷ß!†¿ü!ÎjÄgƒÂ ÙçžÜâËÖÌe4ƒºÂSbÈ9 â9ìŠaüS5½'·æŸGðø7[-†ëÅPp;àUÌCñü&ˆA§2øÔyc¬ÅÚÀ*³bP˜¡²¬¶úƒü<Ž[Ä 6Cæâ[Å 6IŽK #b Î…ËÅ€·mú‘1ø™ä¹bHž7áâ{Å /]®eÌ WZCþS_.£{1ä€Nˆ!Ý7õ 1ÔY£¤’f¨*†±`ã"2o{’'‹A åbPŒfÙãn¢*Cv÷ÖSûîÃ,ü%Ñ¥‚òŽ@ .´f¨.«fh"e…gÅ >¦Cº)1ä1˜ƒ>1ŠAD}145¥îZ"³ÄÍbxÔwWB ybHL"½F #ñ›ÈDþêmµ¡¸ Áç¹ýRâAß]É(@6ÃèýÐ18µ@ =‰áI_QÇ @Cv÷Vv/ÑÁG½dÞÝ`L Ê÷gb~w¶ 1ÔàbÍ1Ð@ ù”‹¡ âöK‰çŒJ@ Ä «°o1œ8eø2·w>>ç»+ùüÌp™> êÍÔæN1„e Ä {ƒ$1d€ÚŠ!(„áJ5¶Å0Øh1hC¾Qõ1ŒìCɨû[ ™+´‰Cƒ1°%îCæøâ3Å0± ˆð}bÈæƒI1ð‹²gÐ4Ãßµ 1@ UùËÞÄÀ–à:šwŠyÕ[ƒ2ˆQø‹Äª±+Ï=¯Xb7 †qº·ðR10Mˆ¡ªr@>]‰!û rOƒÞ -Ä0?W š !†Âõørƒš‹ÄP>͆t’’çUaU çîî( '1äcT ÜÒ^Ä;#©ªâªÂØ>òÃÆ Ä0mÿ¥D ÙS뚈á‚Q‰.Ä >îV1”÷?pïÃ_ð3k%=ÓïçIÔA.6!†ahþŠCîÝù”¶ (†íQ¯Y+åogšjxÁ¸IѬZsZ18¯A ýˆaÈîyJ.%rW#**X|¥>üÔGˆ":Š©CÿH1èÇɽ¢÷J䮑¿‘:-†¤&¢+ãb1°sŸ,†t…DMƒPôýµúRU|õ•éE ¹ã‹ÄÄ7Š!à ‰áû9^à Ɉ†ÉÈü.1äŠZ^$†Ô±7,v)Ä pÉ¥Õ•‘}—޲X¾®›Æð^1„1Ÿ˜ªYÄ RÒÇpÅhe²Å1¸¼A Ü«%1äxÁ-œÚˆÁ©%½¡ïQû©JA ©åïCâÄ€òW)CœaéÑÊxT¢•ÈR¼æÁšȃ¹¿Tpä£1@ N-éí„\)†ÏþODs1dŽ"dŠ!U!ÄÀ.ÏòB‡bÈ7C”ašÄ+‰KÄ@›áb1(¶EÍíÕKÄŸH‚²/¥òd®õÀå§‹¡©ì‰!Cv"IO€Z ßÈø+œ··h1¼\ ôÒ21H‡ÿbÈÌ”çŠá_èÙ^€ ˆA*«þòŸß4ŒÙ^€ ‚‡‰!}^äOñVxœŠî•²Í?p¹@ áûR>EASêF1dö ¯Cö¨L>]‰¡`#-†"1Dö`1ÌοMh-¹Â21äO!&bfnq¨{CÁFJúÞ(†¸ØÇûá1{?—È_ †\ ÄÑmL zŠF%®CP¨D Ú}ãÄ@™b ȃ4‰»\ ä„Ù¬¸ø'Ä܃K¾íÚbC˜`ºõ!å¦.‘~ìæ´y‹ Egb(è|¼§bà‰+NmŠ;šSA}ܲÀ aúÕC~‹[‡î¡ŠcÿÌÚÈýbøná 1äÎ}¬ †"ƒC MħŸ1¨ŸH 1¤Ö€Èrƒð:‘~FÄ m1œ;OÃ5—ybˆ¸ü143C{1H–µ„ãÌ,j$†z †¢ùtL ·‹á»‰ÌÇÇVB ÕbHmêr1D} VÄ0ÑÖ%”y¼2¹J A†ÕCÁu¢ºÜ'úegŽ~©Œ}1Ä£Ùb CfâÍ»”¨4(*ñ±– 1\ÓbÈ2C©ç^E1„?Äo+­Å@UkL Cô<à:bX^…ê³|G]Ö·ˆA»²SŽˆbX©(vI íh%·,G ™3œêÌo^'†Æ£CôK] }Pt ÄPæ+b(»»²dFô@}áÛáoƒ~ß ÄÐÈ Oƒxœ!#bÈ[‡ÝgæÑ鼜‰ª %WˆA›ÿì’†bÈï{ «­3(á{¶Jê¿B ñ—!²VySìádíZ1K[Š!}z务РÛzéø W–Š!:úóö]Ä ƒ®TÜ4ÍŠ bhE­K êÁÎ?&â·…¶b ¢l'†ùë™üµC0‹áíb(õ‚1Ôì|¤[ ÅbðêSiìoCx †!W ÄâFbÐξëO ÙaÅ@¶D1°£‘ôC¢ÒoXÆ;êÕ‰¡‰îƒræSC1ô½ÆÕ¦N°Ì ±ƒC¶¾ûOˆ!ƒ§ˆ!Ñÿãñp1{a[Õ€JžàDw20×ùëÄPkÄÀUx³þ½~F lÇx2±à ÄPÒùø1ÐïÍ ÅPðQn_ q<1h4ÄPF ìw=ˆ!~àrb`FCìŠÁ]vV ÂÄ‹*bHœayb8áSb¨Òb(ƒ0(q‡rÞRˆ!µ™cY8¿°¢ ®¤¨j!†¸~ñZâ»Ð»Ü€ˆ²ÞŽûGaþ¹E \oÞ;Å ›b8rÉ·ˆAÚÈW ‹œ5ˆg¿neb~ÿ!‹Á©M/†­èbðÿ*;_,â‰bPæ È“ÄpÆ Fļ»ò¯ª˜)N\eGm^x‰ÖZh=¸/L<'sÍ^4øñ$1ÈçØÅbPDïÝ•‹~ÿý9ëŒÑJü%1ÌC310oNM1¸…[‰aý-ðÃ-b(èä³.ñCKŠF,yÊ i1”<*¡±þµ©°µö5â]çŸx˜uÚ‰!Æ®p[1l/lzP‰AXr“sLü2lÈW8t¥ÒAÉè{OªÁF‹!µñ?úR"ÚsáÖÂ1Ä–éQ \ÿBÐ|èC |ĶÄðµÂø‚K ƒ¦ð…bØb˜‚íÖ½(_ ÒQÉ™ÝrÎ C4\(ážcñàw(½^ †}i ÕQn/†Iü“%Á9/,ë?A ²¢ó¹ 1;}¡„ê.¯T¶4ǹ‰Îv>B öÿÑQ8'†_aö͹D RæÞ"†`=1$ö¦½fnÑMb8;¿éUb¦ý‰ö~PU|ÈJd‰á#.•¹M Î2e‹Á?_ÅãÉŒÿÑÛz²¢ùÃ’7#úüD†7Š!øëÍb8Š›C`gß'iPâ1œí6Èâ=b.°!#bP^±†Ä jâ@ M(©ý”¼¿1Äc­ÄÝp´fo“(h1Œ7¶öí‰ÓÕ# ¦b(šWù[‡© _Pˆ!< MÅ õ›>P ÊùEþ|<ùpf‰A{%qtŒHóKÅ@¬Çm¦?1”là bÞÉ.Åðw„û 1¸!w&Í)Ò¸ÅPôÝ•Äà— 1ø×‰a]^&çòG³b8C1Ä'ðÝbøW\-†m-1H™{Âk‰R1Hî”?åb Ö‚Îl )ï%¡‡gŽ~‰VÿÐu$x¿ö¥¯ÃÞbúkŠÛP—bÈÆuþ:¯ÅGšCp ¢y”ïƒÒ ÃÑa*6 ;2Äp©¾›3!†’ÇÇ[ƒôNÖÃVþ61(§üU‹Aþ|–_ Nk,Æ#jˆ!ÆäÎHŸ•þ«bˆ'X_&†ì3à¬ø´²zƒS²è• ¿~ˆZ¦àt‹áªç* y¨sL"£•UÅ@¿ 1è×àSµ 1Hý¯©K î.ÝúbPOp‚è(®ÂˆÊ.%ø”ð_—‹ÝwDc1„Ó¹o·Í*b8–×C´½›Å0KKÅØ¸!†cEÄàîý]bøøÛ«'1s½k æI`*1(Ö8ë‹!}WƒÜ`€Œàˆ={«Š!× Ã(®aJ ì3…bX–—‰!5ZYS ß"n}-ÄP2‘­’Z1¨€ÂÊÅà ÉÑë³låÄ–ª‰!Ød¾ñ>–qFt±¤#p¿T}C¾Fy ç}þø[,8:ƒr´”¨®@ ©+ ˆÁ›4wùbà>{^"1wºƒ_›<Ç$bà¸à™E3#1Ì ûßÂԤ߫Üåj$†ü+‰Ä¹¼ÑÍÅÀ¼Å 1„‡“ª_+†m ƒXžYz¹ ˆaqÂ_ɽÑñš¿@ ƒB ÞTewíðpRõß$†ýÙÚªxn&†}óC~_f 1 r¶Õ†œÄÏýbø[¿ã>o¥ß¿B s(æÄeÙç…b8^gÄð‰']$‰'†Ô´€m©À¼nüø=A{1äNd€Ò•ÿew1hÅ t¶ƒxYºp7vF ßuš‰a>/†_!_ ÉÃÛÅ:¡‚å]Šaë}ÌZé÷om1øT‡†bø›,3€pZ ËÿXôb8ê¯%†r~Õ¯ÐY1$ûUbp&ZìڢÑáÊOtÀ¢nta q"Nªûİÿ4%†ô¨D31$;>ÚÑÒ¸”<ù,†{v*Ö´Ž# 1´mC IDATÃ}Àñý†=ˆAÌ´–2à 1DfÐyb(äÑ÷¼°,ñÝ¿N lêxb ¶»¯Ë'Äpüª–P ÊD%îèbÐl³{1” J”‰¡è(öĹò¥×’O—ÃRÓ¨l1@ eü­™D÷>º°ö”¶SŽ(›…âÝß"·,†Ù/ÈW‘À?Ë’—YI1ü äˆa Òó.1ìÏÊ‚QA ÿ½^ ÉÛ|Þ wÕôåˆÌ\_ ë=©÷ŠÁ­VQdü6’S\ˆêòΊdŸ±¦Ž÷‰!8Wø÷bp7Ù‘7¸Å°"Éào0øe2Å@l8—çŠaI…NjᨘޡœíœÃåªHq³‚wº”ã•CS2ÄÀæôD:ˆÁYuŽË2U¤h&eƒÁ˜¢’Tãÿ”âKêL+ztoÞÿÙÉÃڭ̓fLê1ȹ3»+‡uhÄ0+K—Š[%ÚŠ!× ÍÅ@u ežÃ`[ šñÊæbÎÙ]7×*(ƒ¢Á¯´ ÍEk±œRƒš="B ¡ÇÙ“W-¡’,1lÍHãb`Ž–îÀ„ÙqV ۆŽ;°$rëd*—‹¡×Q‰Ïçó÷{HÇÐD Ô4†–bX·kM ÑŠd—ŒîÀŒAbžÃzOª}1D›¦ö~^²™ÛhöI!Þù¦«à‰b¸ÃìýX€x$1Ä+–‹a ³ãr1¸¤;?£õ™ã[U _70õA jrÄÀž¼ôe3=ñ1Ë 1,…>G3’œ—‘¹Á˜Šb ÛOÃ44CÜ^×Íp¢Å°V6‡§î±Z5Ä ÙêƒÅð=¸ÌÉK£r1ì1e‰¾÷CÅG¯Ï÷ýãETñàï~Åu hÅÀœvëO§8Ä(†!8¸œÈ·ò1Ì&Ä@v×ÄŃ¿ïƒúJâ1bpÕ1äsDä†ÿL1lmÒ&bÏïR2-†ðÅûÅ Úüy1Ç—HHKðÓÝRspòO ˆÁ Ž~Y.}ú0ßœJœl¥bH÷>~–@æíw3b`RnÿÒ—1ê;-†­Ë¶T ~å©ñ=Z óÐH á€ô\*¡ÕA’)†íƒ§‰äÔ9/ÍÃw7*Äð)ÃW>;ÿÒëb˜£utb ‡8¶ØìT1èi)†è•ÅÀŽCÎáïíÄ = bˆZۨ¡T Q[&›NÄ@Ÿ½­ÄàDô\1h&4CÜù“#†É«”CØ_T_ªpR Ë•õ^‘]½3Ä %†ð”ý!Šé} i'†Ï¶½-Ç.Ã0g‹Áí?_¶$ƒ®ÁPU G­Œ„Ö7!²¬J ô7mÓÛþÍl(˜Þ 1 'Ä0ô[ð —#—‹AZ/C Þ¡¬(†Ñ_k¨']ç§F óÎ;ô+PLòPŒWŽde|…Ã4/ 1hÑŠa{¯ˆóçn1|ËU»b}1Wl¯ƒü¹å2—ÆôËÞ§Ô4q³"è¿Q]/†ßʃÏÅbp:¾¤QG Q ràÑT4kÍîÏ[ÄðÙOþl1ŒTÝs°å¨r½¡§ÅðÏ y-Á‹Aîþà·Ø½Žø-ˆá7µM?,aT ‰„óÒH)ïD•¿"î>1]T7½¡÷Râë… 1ü»–ø6Æ[Ä 8!ïHl$Ä@½—‘„þ˘Ñó‚Z ¿ ÄJ"1¸2{ª¨ñÊN§@ BÆ¥z§…,1ü³BÑ¥Ä)3ô#âbÄð‰i–ö¯ ¶O•Ke$%bФ›Ó½O ªÍç‹|ÿãŽ~S\uãV"G ¿Áʼó¢1,×?7ü¹¯­×¤Ëë‹A{ƒñ8¸GÔº‡1n¡¤[ ³63ˆ!¼'Ud«$8Ùºã ò_9ÄʵfbÈ£L îLŠÁÉ¿[Y­ µÈö óNÑbˆßËÏ@žÃĺLI÷ñç¿t,ó.¦’¼½¨^;zZ0Uަµ¼nŽiŸÈLµtÃö W„¨Ò¤VlˆA¾”H‰!<ƒ‰!8˜ò 'wdô&1Ľªt›ÕmyB ôP~\î>1¸føu~×KgZ©¤š§R1ä®ö81¤:éË¿R1|¢º„©áÁ› ƒ²hk1¤¶¿×Á‰ÎŸ}pâ7À8„m«Ä¶‚ºÖŸÇjFºYç%bø,ø5Cj¸’¾ü#Äð! Ü+†!Cù ³n2s+ˆ!QÖª‚–Ç:%I(Fn‹¨ÉébȃrÛqm¹-'Až! «bˆŽ¥(w;?1èoÈp¨+]ûÜw#÷nú±ü0%>}ÖShi1¨† SbØ—Ã7=¶Cy˜,ÁŰ ß}å-ŽŠl…ÜÚ.Ãw›w‹a¿’Ίãr1lïQ®–‘ä`¼RHŸyØû”#†b'C™Æé:1lžÇµO‚ˆ!¸ˆj$†øH¶ÇÛôÎò°KmÔ%»/˜/5Äp4Y2Z Þ,i1 ßg|ý¦$ÍÊ˼‹Å@ïz¡œ=‰a¸¤Å'†9üë1׉A8ç¨copÞ‡Er.%Üi©S´5"–Ã? Å za¸V Þ¨Ü ÄB ñ€LXDƒ&[LŠAü bHëKF“RÙó{îb-18KGb9Sã¿& ýibاeU}>ïƒÚ‹8—‰|³Å0ûufÀmÀf¸V þÌç¨ÅúT×ÿÝ&†ïýtðâ8®Ž4ÃDéÖóéL ÄލÌ'\ìvS$£¢$o†°£{¾I ÎÇÈ£Ä0d‹!îcH‹a𣶆jk^%?ÊÄða/%È]—İOˈªòjZ¡.¶ÅÀÌJ›ub û!.Ct©9æeä‚ †dš/N=>FŠÄêÄ¢IˆÁ{'ëŠÁ¿‘E'†£Tùxå²ï™ùúK‰L‰µï3ñ›_e8”/Mšs0/êÀÅbpvŸëú>%ò8>@ ÇÇÈڈɌâb1,çÊÛ;ƒK‰`Q²în1ŒË›C—p§Pµe´¢9>¿ÆÄ•¸@ søÀ¦21ìk”ŠáßÉ¿Œ4ÃÎ- 9ES›k*†Ã?gg8ŠáלcİÿC×–ÑÇ@Lþû@ D‰[Ä0f§äpN ãZjûÙÚ0ÕÄ@ËMÄ¢¨[4µ9)\Q нcýªb Gk¾+ñ-ç_ª:âR‚• Äð¯Ñ1Ä%ˆÎÉTºÐ‡Q/†_ .±˜ b˜öy¿/Ã,ª.éZÂ_¤ò¦$f®?S±¦Á°¯øN1 ÄwSÆy?øï˜$†T¾ä‰áÛÁs‘ØZ—Óî×Éð‹ó}bp+(7 Ùž»åhQE1pS÷Øk ¡¦`µÔ>[}Ü ¦c`wok›ƒæãM-†p|˜¤×¿C ãZ)YäCþZW ËlpÊÃr*1ć %†øZƒ´ w„¸ëθs眈Òb˜Ö8ˆ!¹þI1ŒgÄ@–ùпWn1#ÛÒ?k^Ú0Ùbàګ׉a&z}çä61ÌqŸqÚËMëÏQ*ŸŽ!¨ŸŒç¤â©Å m)¹þI1KrÄÀ4>änI­˜.†eûäìÊuñŸ5/”Ša;i1øgq´”à¼Æ’&Ã1LG¹íSiŠ+bð #š­?Å„\ÿÜD†pÉè.äЋüÌ«!væõã} ÜC4ˆã‹a{Ö¿»Ø)¢{ÚbV*ƒS>W ûT—[ÄÀ°1 b º äÕm‹úÌ«ÒbFµŒ·N‰Á›óÑ“ŽG5/}có^ Ä@®ž!†8Ó¢'ækİ•!ÅÀtµÈb g1ð3!V1p½£ñ>† 1GÏ%z™VÜ(†i0)†à=;)?±_.†å¯d´Ú4Ç´P 㿃íQ‰Sbðî+)|ÔbK†%Tbˆkýípk10ÙÃ,Ì=cÖOçÄð•Ð1(Ìqh ^üïéc`Z Ä¥„Ç‹ž%† ÿo> ·ÃÄ-=Š¤Û½ÂöoÃw ¢»î´ˆRÌh!æÆ;ÙuêÄðëcXÔ¼™Cxµö>Äù· CÜâtË=,5ÄŸÙ?1/¾U áR ìÔƒÔ*߀\=ÌSœb^{äØ !zŸ?bˆjz»ø¾\ß Ë_5ô!†)JÍkİީ˜%†ôÇ›@8Úx©ÖÈ~bÐ4ôbØŸ±ÂT^(rk£õáÊ™yÏtbpÊOïÃL—ÚÃÝ’óÑŒÈö4á©Ù=@³Wˆ!ê­û'†µùÐ\ Äåp^J îJR“¡18Ÿ¥Ã'ñœ‰Ï¿y¨%¯´,†µi4ÅûÑ”X}Èè}Œ?ƒ—ƒ×û#¢÷‘уîGì•Ð`x¶¾ûQI O ñ‡Ê£Å°v¦PÅgg_ß$†°ïð>1ÖL ßEŸã¯(ºÔIM‰ØÜwÑ›ÄõÜú‹œ£v¼Ç!l ¦ÉCøX¯½÷k}JÑ»Å0º•cщշ*R$Ű/KŠÁÝ\$îMš—…÷Ï :ˆ—ÄÍ—ÈgLtúÍG]‰á[.z¨Ó->ÏÃCÄÀuÆ“˜ÃúR 1[²Å°íüþ ³†bð/4÷ߊo1lÿ­f¨$†x°Ò•¨)æå›Ä3S6:‘Pxb Jbpº2Òb ‚¥bËý–¼J Ç÷iD ŽU§ÁIª„G⌠kÅg†1LÓ¥ÊZî1¬Û2 †™XžX}«")†i¦¬™œÅ‹á·µÅðSÃ4¯=ùt‰ƒÔ œ`Ε„»êvž”‹!$º”vÇŸas½¨äøZjKìËáÎ^ †!œ³¼F çˆ!º–ú‹éÞÇb >W ÓpF ßDZ¾Š…/±QQ ¹×‚æ {š‡bÈÙ>_Ͻb8v•®\ÞôÅbð·ˆ!Ñ``Ä0y?¸šTbX˜õžÃðû¹ÄÀm<ŠÄ­Ö©é¤(‹{›9 ò§ùñÝ STIa |=3ÑdqG¯¨Þúåøºé1^¸\ [‰¤ˆŠz}Ü•b˜æèû¼T½ït$ÁÖ ‰á ¦˜jL‰A6C¼P×É ƒßšØX¡üú§à']#¯èúºa1¬{ÑB ÚÃ#Ä :Ë͉aÚþã·#,`Ä0Ó%ÄÕÝJd’bð› ÍÄ@5 †/çÅ0ͪ>†1l]%†I—¹¿>õ3´j1„_©V*†Ñ©Þ’´}¡j‰ªÇ[…¹–èJ ‘¶oˆç‹0›¦"ñ7î_hº¿e™A+âl½I nXªÎGŵ·€ÃL—Öj‰õ¿ŠÆ|1„ÛšÈ*B¢BùbðC¢› Û«ï—zrÿ,SDu¶¸çÄ • /%Âéšûv‹ ;b  ÃUhÅ@ùbÈH€8·ÎkÅ@ ¡qS?*‰­$K [‹aıà"ƒ8hÄd®™ÉŠfbp¯#+‹!Þ ©ÁB1Äg­]1l{ÑB ÎW ³e²Å0õTƒLp%­ÌÜoêUé}¬$† ý'§ á_dÈbØ6dK ó¥«ä¶òÅð+%‹!ÙÅ@‹añ‰b˜üj1Ä'’11Hٌəƒ{‚§/%¸ †èƒ8jT7çÜ\ Ñzß¿+ˆî¿ÊÄM†)úíýbˆ£$úÀ‰!÷\aÅpœ»ƒj+ÉnÉxÞcÔÄ@-*3,‘áz*_f+WS Ñ ;ÄÀ•É=W¶Ú.Ô,êòm ×èd(C îV¦äµD,†a¹¿œ.ïÖ#‡˜ÃñÉ›#çÀÕYOZ ÇkfÅpìijÄ÷ï6÷ápN ©™G|•Ä0-j`Ü輮ǎÄð-1lG!:ö¿ˆC½´ŒmÉbÐ}¸æ‰AßÉ ÛÏt²Å˜yÄ7Ä™ -†µ2nÑ`E ‹^"†eîÅ •P¶ºÃ`î¸úRB¾Ä¿F âx%3ïÑ’øý¥6tV îèŽPOR ÎK}ŠZ½ºöÚˆ±–2Ws)‘¸H ’Ή^PI {¬ebP{á[TƒêŒÍ1P«û¥´Ýt9bÈèdHŠ!?s?:1 Ã$5„.†3b;y1ì³â&`u1„·±Nëjïƒû‚U1HýX²ˆƒÂn±É)ê­=!¢œÓîü³»²~ωcëÅ è<[ Â$¾X L8 *‹ûÒÕzbpÍàFaSu<] áÄ#„þß—‹Áû¸²-Ån-V`¯% ¯ž‰ÁŸ11Ð¥Ôþ“?ÆáVÒP %½ƒm'ÃúƒîܼN ü°‹e1¬Á²b _'.DéÞ–X1è®ÃP¼¿{ƒ4^™)†™Ú8!mïcB Á¹­këdŠ™'¡CX°@ ìD=Bqo3pÂH™Ï@|2W¢ÅÀÕ'Š?;D1x»1D{ÊiW©áVbp«Ò6d1„çvU1ÈC_‰è6b–ª ׉<®ÃP[ îjFÅàíC310CÐñ&̉ ýó 6K ëåD†Øk‰/pMˆ!x1ƒîÒ9 Åÿ¢²G‹!ØÕ[Ä0LkÿÂubˆNíšb Æê!†-~g¶¾21ЇbðHŠ!<0Z &oTâ’ƒXš¿’(Cxž]+zŸ®‹¡±¦c¥10[™ù±„ØDðrØ)Z*wžÅÀ52¼\Z9Z ªÔV 9pE”£ ¥;â´9®4þþÏU0ÑU9_ç”ØÁŠÄù+¿N ãð1ø»ð"1¤„ª%êŒÒM*oö'‚¢™^½‹®Ûʼoƒ_L¼üqbÙ#Ó ÂQbp"x‚ü=pÂi1x5ìår¼°Md 6ÕB Ñ·¦‡ÅO‰I¦íåq”G+¶ÉP*Ê ÆÅð-z©Ân!­¼`–ß­ˆáïÇõµ¡P Îþ¡1%Õµ7x7ý¾vS.ß@ ÇÔžTÃbPö=æŠ!Q[‚ŽîCÔ%:¼B _üûÿúÉH+¯ '9©µlŠa\žl”ƒ4(ñ©¤#ÿ³'B£ƒtP¢«oeƒÙ›KÄ0sõ±Û˜ùÁjû˔ԕÄb8b€â‚Y^èï;v*ª&†åA ÷ˆáw9ñÕBªéd(C4bzJ ¼äê>ÁêVÄpH{‡ÛŸŽ1þÕ†~ü-ÿbøû›½k‹KÅ ÷¼“L9bÐu2З ÅÀRëªÓ·ÑÂêJ “»J´oŸÚb`Þ\_ +l0—ð·´þüƒØ}ªƒwŒŸÑÁuÀ¸|0fCPÙRxÚþ£áÅPÜbØÏìt7»î4†ßøI¬\] áT sbˆ› 3Wáb ¾å˜©„ÃÄÝÛ¿İš!Ó EbÂ+zP¯YI62Ä 5ø¤ÙÍ~G8±v}1#óŠŽP¿`ê5M}uÄ lb.ÃÞôþ-T2¿™Ãjƒbp‹Š!ê:ÌôßÅ ‰!|°¢Gñ¯ð¿”f ‰!zè½6e†âA‰­ê÷WX}""ñ¥›ÅÀ&p„ „“bØöôf1üm×îp¥Ø{Ú\ Ù-^ k…_zéÞs,¨frOÃ;[ £uC1 þ7[ÆÕ'"_Ú‘êÛž÷c[#Ú»+Å]I¼@ $„ܸƒ½ž‰ß¾|ˆß|1ˆ=ï‰õ5bد%„$óΓŸ ô9’iM‹AHšýóòwýCÇ}B É·èab˜¹¦§U1¸qA ñšŸmD"Ç îÍŽz1ü¬80Iæd»°ŠÒ½‡ìÊniöñg1¸“vÔW¹bj4-†p îœÖ}…|1t1”ˆaÑÂvš…I¶Ÿ†þëmÅ å y¢ûa;¿o!VC4µHõ>Å»t©¢ ¥ïƒ×»Åpœlгn[u›È…ûÜ”ŒƒÿâÑp˜~ïôDõNVS$[ ã?újW ¢ôbCˆÄÀ0Q Ü(#Q¿¿È³ù ÜnµŒT\fÅÀïÀ—p§çè—Ûb GÒ–4û×–øLaca¯­T D¯~°ufÅcmºê%joôµ…ŽÚïCp!cX 7¾d-¤–: gÝ1ÌNHѦ²Äð{}:%ïCâÈ!_"Íûô$1ærêùc¹%b¢J>% †L1|fñMˆ9GN‹AN™”2ƒ c3ˆbмCûp}Fƒ¡•¢q‘`ïæicµCØ£FÖDUB‹áW‰11Ìóü~Ûì C´Î'ø)nv/[] q…ñÃ\}øù ãbŒt10×÷bPɺ±çŠAuÖ×WuÅð™~ÿ#—ñbا ±Õ:µäã i1ø3¼­Š!±—šƒ—%† F1äÏ1Ÿ‚ybˆÃz¢â}ž½Eb(i0b¨5…3`;øÃÚŒŠ!º¼ë{Õõ,1ðá]-†o5ƒ»º1ü«… ¹Žr‡÷—Õ³ŽÌDs¾ïqo24ƒò:,êb Ä@]K´Ãv6yg;İ®âüpø8ÿj6<ˆÁŸ” }ƒäAs1ÄM† bð‚n#÷ãZ÷FMâŸFÅ =O Á<¬d-TçøZÄàVSÔ`ÈÃô)NN Ÿ…AujbHzÁˆœ´| ä?|KRƒb-1ü«ÈšèQ‰gˆØÔ5b’-†³bHJ ì@?¿¦Xì˜H®|£&á/¦Öà2,%†ùXI/†p‰©ò½÷Ša`Ú0%bðUŠ«Ä0H“‘_õCO©!k Å ðBêãno²,4Ã~ëÙ}b& ”b3$ÅÀØT Ü>?_ ËS»%†o £¾´³iCbPu1 cnÂH5¸Û®%j‰aŸ.1D ?N Z1}`KmoÃw%}wú5bøMGÞi9€1±æ}bø|¼4ÃwXbŸ`y“¦ír&(­Cª‹á1°Ṁˆa?¬Y-†1kœa6.†ñ'1÷ub®%T^H˜_{áh4´ÃÞbо©Õ[ “3ų¦>C©Ž1.§Í¦Ãø×ÃÄÀî1Ý[Ÿõ øy̸ð8¶<ˆb ¼ ‰AÜþ¿½™…ý‘&!bðŽc 1|‚ŸÄ°M°,Cz?éjƒ+ êRÂÛA÷ªÿ&1°ŸŸ>#÷ÃUý}øaó{¨)†ô'[O±o’‰‡Ü×r…bø÷6JçH¡4^P‹ao4Ìë†Ü¿4¡‰÷ –ÄÀõÐU¸7‹1bpÛöYbàÌ {ÁYìªjjžoú‚ÃoŸ™CÖƒ]çsb f1ý¾)1¤6/ŠAèO êÍCêëýî7*‰Á‰GIfË(%M‹ÁƒS¨±ü!¥„ ^-†ïTεDm1 Á÷Æï¡³8„Q‰eí1è bX žª\I˜ƒ{³Xž’}·´ø°^"Æ i×ãMÌyb86ʉ!h«¥Äö‚ì9å•Ä·Ü~ •bcûD6ÃQR/ûÊbدe²”ük‰tƒáz1°ó›†w‹á{eœ1*‘C°T!†òB¡æ¡D´^c‹–íf0$†ÒAY.¾ç‹a”{³Æo«6G )3䋼’àÄH‘ßnн láÕbøwà!†1è' lLôbmÏÄðo§y1¨Ï¢qȃ³M¾ÁÙþû 1ˆo°V G'ƒÊ )1‹ †‹Ä@.ïG ëÍÃz:×Cx?€B ^[Í ýCÏÇJøo/çeP•ƒí#ŒÅ°†£n0ä‹Á¹Û³Ê ÄQ4£?ùz1¸ûê˜AÑ÷È]KHGoâ–G½[ ì ò jMeåyô+6Kçi0åÃÝæoB£\ÿy1,6jŠAß`ŒI¿<yñd1°ñUö R ©Ä0äŠaˆ&™¬ŸmâãÇ;MÜÁÊ)y⹋I1¤.$ÖnGaR4;x½x–.žO51le‹Ä±«Ô6E!†öTÃòNäŠA8~Ÿí¿!*ùÝÖ7èNqýßEÄ6*ÁîPŽ.sK‰aø Ý*†ÌaÙ 1%çè—¡D ¹ƒ zïƒîDJ‰áüô¯$¦)q†û‘bVvŽÛ6ωad*á*_Y{?ÕÅã…{ÅàtqA §ÉÕ[?2¿sleÒswqEúFû½Œ_[Žįو^VŠa:z’¢P ¿ô¿½<ƒªï±¥r½ðV1ŒÂ_|õkmŸèw¯Ü× âw2ðéÅÎLa^&j¢ÆKÒ. ¶¦ì×<˜—•?tWkz}®ì¥bÐu1§ƒ¿«ûµ„ªÁP(Õx%Äà”fþâ«_k‹ùÄùc“ðýQC·Z ÌDGz‡²Ä Ll«X Õ¼pF 9Ý)ñ&Ó%ïÃÄ—*êT C°çáû<—/ŸøO~ÆgIDATÃï?>Ó’b Ï?~þ3¹CìG;!Íå¿):D!±·N†ÄPOú¾ä{Ű_KèÄ@šbXá"Z;ÌbêŠáwAœJ[¢CíW†É´èU•¤Û"N‹¡V‹Aì3]W‡Nˆ!}%1pó£ùèmÈC|]B5Σ½"³-~-\ß97ֽ÷ˆKa"þqð¿mR±¡bÈëJ?Q º¾GˆA$[ dÑä+ÌbB ä¹Á‰Rö‡ÝÄÚþI¾‘Â>jÄ š”%ÖÊ¿¸qˆ/gL aíZ/œƒÿæC çÅ@¼ 9bæK1—ÿBöj ¢–Å ß\½ ÉèI®ÞŽj ÔÅCþ`'W:Ï Y÷„|©,†5bˆ¡§Å ]'W‰ÄÀxAÎ>O i1¸ë.WEŠ÷Q¸^J‹A_N9Õp‡‹+†‚+º¸m1P É<1deôÄ—¨‚ʉ…a‡7Œ˜Ê¾C dдŽMŸ5¼šZ;½•l1üöbCÁ¥YÞ¨¨.ðµ‚ÔCÄÊÅ0Ieüz yöb™7Éqë8*¹}Ñ"Ùéùç³ý½Õ¬{…¡—‹ÄJëyù´\n­ †qÈzVßG‰¸–€6,‰=/¢Ö1Uò7é˜t&eC*é¸ÑaûzáÜ(†_VþË®!Œ&ï›B¾œžV i•yÛ€x؈ÂoVãJå. N¡õ{,v—ÓEÙ9D«~ ÈmNï\ ¶N¶b—ߥÄñeÊk‘1Ú²³,ëû¾Lû?*¬‰AÓÅ C¶^'múóK–7JêI§ZdY~záwTtk‹Áœ=¥Éúkˆ!øbáÂŒtYHn3 â081|/¦D5„bÈÈhˆáGøíít¡ÓKv1ç}|ª3…ÙÃÑ.)÷Â#Äà=ó^YÅ–H£‹·DÏ¥b òï3&‚†”0MÛ¤uOÿúúFIóx‰ÑLæR‚›^XG ^èl·—|™õkæM…üzgçk©Ã!"žìa‰L1$.ž¨R œ’_‡1(á"šFÅÞzb"@ 5Ò—ìô£‹ñŒ¼Ø›‹A™Õ.¿ñˆymNk«Ù¦÷X2“anCFCž&±T7bÐÜõ£Æ$½¼g:0‰Y‹ùòá/EðbHmá1,ó8׺ˆA˸ŠÍ \xù‡K7óû@µ±¬ƒþJ"î},ƒWϋŠºO¸D tB}¤ƒé/ùké‘/AôŒÄoAÍåbõU‘;bXÕ —,n~T"z‚¿†»Å i.ÞFØd€vN´R';¹KCyf(ídÈwf‡-rÄ ‡ƒßÅæÞc³ÚBYý(üEÔJb(âäXºò˜^†R1Hm)uèücgƵÕPD–.»”МbPJô+ú­Ýä0æ „g‹!8ªµ¼PS Â}GÜVF¡™±—ˆ* ~¦™ù&vɬ°04úoÜÚPˆùâ¬4]ÖÅРÛíyë¼[ ¸csfsu,‰¡"¿ñÊßtÍ*b(TÄ ¥âg‚QÆt¯lÍÉšçih†[ŰÝàQG eÝ¢ÆÅÐÆ Ùs¢¾ÌëÿÞÌö0Fv*)Ä0<®ÅðF1´òBêÎBŠù7çõÝbØïàæ/%LÑ&œ1!Àöb˜3'[”C ÆôÍ…õFªmÃÙ|õ;¿NÓN òâ¦ÌËÝÓ”Ó`ÄPÔ;fZ Í ¿Æ‚ÎÇÄ >ÜÂ’¾4‰çv1üÈëbàÇ+—n1ˆAIþ“H;CÁMÜ7ÑF rËè"1 y-N ó G%z¡àí}ÿ¨ÄŠÔ1kM Moíb8š çÅ ×!Ò«ŠQüzroV½™fåÙW‰¡Â¥Ä‰®a1´õƒÎ} ÐB ÷ö1ÔÃ<—çPŸbxا"¨n†Oɳ­j²‹ÏbI,†ùLÙCÓðj‹!õPûö'G‹Ífºœˆ<œºføÖfC Ò>µ`&þ|¡à £ª~•™›I1¬Ãgï¼´T4ÃRÕÍbp¦Ì”Ša– ª€ÀÓ©'†µ&;bàò !†Y,¨Â¨à §–¶zž.†Y.¨bϧŽöZ ‰ÎòÅ}0cN•Ô`S ðÈ¡†œiЃ?81€ž9o¯.ùÇ¢'ydãݯGå‚ †`Ðò]b€@’TÒð _ÐuÅM6þÒD6Pó›è›ü Ð5BökÄ”ás?ÿvý¼G«(Ű=c,YR‡E1À á†H…Â"’´ÁæRœŒ¨G’–&“11L?1À ê ŸÄºá lÃxÍíú…b î¤z‰þíǼòÙ’ÿó uðfˆÒ_ç¹Zá¢a a2?‹á½b¦?xä"µ >[nÝø%âË<Çà ×ô>B .ÓôO h2€|Ò} ´¨×¢¯ò¼øÑásƒ„ ÅÀ¬b€AÈeq%nkƒ_ï1PÉ%þuÉäbï á *B· ¦o1Z ¼›-çc °­‚gõ1,©Z@Ï €n,‹¸>†‡J<î=AÀ@\»@ìÉ´×pÕ{‚ÀÝH#œ%›¹‹7½'O à¿…:KªV&,^õT]RØ.0!†¿,¿ý{ÛÿwV"ðº˜4¼”¯V3ðuôž p{CÃ% à¿'Rõ4ZòÔŒˆáÏàvLˆáÏi1ÜîJ€³äRüK «‡ p)ƒ¥É»ÞÃ\Ë÷’æîÐìø?t! jÐK–¹]y••®ÃE-\_!ÖJ­C,Ù_ —;”ØLÞ:‚½6z q’ëÄKŽWè%ÔÞ¤6“µNAÌ–ÀÙÏg9¯¦:Y$ùša–0 ¶O¾[LÔ©uˆ%Î9Á®’±^"rÁ:ž[Bä:ñ’ã•°:g•ÜÍG À[ŽÀ¡.K 2–µžôá/Eǯ“!†u©7x]¯”\'o_íë^YlŒc3tÄB64!æä)NüŒÝÄG`«Œpf"a¨#/†u©°„=£øu¨Ø¸#°WF&}îE (3ýùýã-Ã+Cˆ÷½Î–0lëŸã‰eûG·€Y…ŒŽSÆQ”[ ¦s¾ ¢¥—-áÓ9;/Ù„ab“ 6³µäã#¼” –¥¯eøØ%¶.%1H²çQn–KëH¯gif{¹$?ØŒ%?É„ô'7”\GÊd2ò lçµ.ùR×YÄZìÉϯ’^‡ I²; V+ä«Qp­m^€ìþ$’çØ`Ä(™£˜ÿñ_W ÌJÅÙÇ×F-}mÅé/„–µ;Üg/¹LÊV&Q›óWnBh¢²È˜ÊèìÛ_"À_^¡óJnÆÄÀÈ ÿÝü*Ò~#9›Ùö„¾"¤Ÿ\׿”Õ®¢Z¢Þ›yýØ^b—û™\½ý–€˜U¼‡ä¼YöþÀkQŠ¿ ð>”™!ðBþü{îœÉ"þ²aðî¼~WµˆïÒîÙ÷‹Ïð.%lÞòÈe·ûa/‰!èU€x!þOÈÌŽ^Œÿ…x¤B1ìO8"/%Ž¿ ÞÁñ‰ïv&QçAdÞ_žB/9ˆ€TàJ¾Àí#ÊIEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastq_quality_boxplot_1.png000066400000000000000000000242271226234573700271670ustar00rootroot00000000000000‰PNG  IHDRdå?,PLTEÿÿÿÿÿÀÿÿ€ÿÿÿÀÀÿ pÿ `ÿ @ÿ€@ÀÀ€€€`ÿ€`À€@€€@ € €   ÿ  ÀÀÀ ÿ  àà€ààÿ ÿ€ÿÿ``ÀÀ ÿ€ ÿÿÿÀÿÀÀÀÀÀ ÿ€€ÿ€`€Àÿÿ@@ÿ@À€`À€À`À€ÀàÀ`€€À  Ðà   €€€ € €€@`€€`€``€ @€ @@ ```` €€€€`À `À` À@À€ã°À`ÿÀ€`€€``€`€@€@@@€`0`€@ÿ€€À`€`€ÀÀÀ`ÿ€ÿ€@ €ÿ€@ÿÀ ÀîîÀ@îîÀÿ€ÿÀÿ   ÿÿÿ•¸åtRNS@æØf IDATxœí‹v«¸ó©üÿÿpïŒ_`z ©%äªZk8“m8IWx˜æïÓò÷ë €>,Ëòü÷Ç¡@×cY¬*ßÀÔ€½\p9þ­b£’7‘2˜ p9ž…üªç×ßõ×tyL?/¯—{β¼ÿY6_±“p9ÀåøÀ3±¾þæo¬ú®¸Æ@žîï嶣ܟƒPý\ŽåQ·ß´+°š.¸ÿ•í±Ö{ïWÌþÝkpÀõX¾Îô=t°þçó±€ý9€ï“€ÖkpÀ%É/S znÀÌð}zÀÄ €‰Aƒ&L ˜01`bÀÄ €‰Aƒ&L ˜01`bÀÄ €‰Aƒ&L ˜01•åel¿hPo?Ê^,ˆKæ×ãØ/îž —5¿g7ÒçI?F®Æ)Ÿ«ÇmŸ8ž=¿gÿ„Â÷#Œ\“?¿{C‡}Ú:ÈgÅɺRR†=Ñöˆe ·çõí5~~榦ç—ãìFúÌ_´=»e ·g|–^óËq¾GZÍ_2þîýªùÝ:ìNpŽŒ7“œÿõš•Úšú ?|™žïjÿóxæß‹۪̿Íø­q¾½ðßZïí/ü=Þ¿_ßïëþý¾ÆÙy0Y'û÷[*€çk2·~Wóï·èn¿á÷8Æoµõ†?Ëùû ñ·^.c…r˜üÕb”‰Z¯õ¦“?mã•×Oï{÷OÕšßØ([ ŸÙÔøfž¨ó÷Õü¥¾â÷[µÞ1ލû‡,Ìð‘Ï>·¾ŸöwúðÐ@­WäòPBŸ]ÿÕHý­WK¨W쬤¢õü:•BÒ° 4õg@hQ¡—ϯËV i÷ %Þ¯]oéc!kûÍß{ïüööX?äO¡Ø†I|ëì\©ÈlåóçŠ-ÁIçÔ$¶Ë.¸²?éÍ¿¸àŒ‘ Ú(Ääü°[â³ùVn•Ubµ‰ñ­}ývÛ“z¿M Nÿª¨ñmñ´ÚžÀH[‹B—ã$|T:¾«àÊÆ)+t9ŽOö8«weå…LŒS¶^9NÂG¦0̬zÆ^Nò¡tup"ú“O¢„³ðü|ÁþcÀª«ŠåšÄªrðü€‘ñ9#`“úXÞ×óôŒ· ¶#'7ÆØ¦ |ž6öYúõÁÃþÿÿÿ0aÂäk’|@ŸñŒA››za7ËsÍö'‚­~r,€ÔÙ0ù*›GQ.›Þ;äïÝóÝ_é|¼V›±-rðß&™· “}Ñmtð™éõY¥­ K˜«'`ì,ß…ÿ%€×îÁj”6ø^ÕpÏzßz -€Ï¢ïQ¢@ŽZµ4Àeyìrk¬‹>qÐè*€œÁêœÞîàþÉ>‡æúR]ÉZK@'Ñð>Ù«,]\01`b@L¾.öå-RÚD`yOÞ ˜…ýï×2A1®î/ïÛÖŸ H]ùGcòþ”Ïöó}«%oÒ{Ït¼ží—¥Û‰Nà]Ýk¬ïüÝßh’±žõ—¥Û‰N`ûéÿ­vúõ!'Fd@ò ˆVg3êV0ëF÷ÏNÿúôß×,mV›Þžýв»›žB‘P)K8»+0Oâd‚[ÛSŸÿåçÍW™0aò™˜'Ì~’Ýøý!†Ík‡K@?ÌŠL•pvW`óD%ˆ„€.áì«æ‰J‰ÔU³„ `\D@‘H À(a>pø$ ÀÄ €‰Aƒ&L ˜01`bÀÄ €‰Aƒ&L ]&†®ÀóË®Àê±òqäòÄ Uþ³7\ʯ¶çì÷µ^•Þ‚Ê®ÀŽ"ëÿeÝ‘Ô|;Ë?ÿØù]¼ðÿ¡Š¾_ÿ¨\lÐlëMüD^(€~#î7ƒ­¼Ã Õzÿ±Æ¹Ýk»oK8[Oo,VS1.É-3k¹‚y2Ïü¤º›%œÝ˜só€âåuÐ%\Ô̈—×à¿jÀeÀy@ñòð_,_Œ ˆ—× @`ˆ—#舗#舗#舗#舗#è†ú$j»ˆˆ@$š–}rØh-Gð@”À@Qr?DÉü%Gð@”À@Qò `Õ©zu0 J^%€D  àÝOˆ† ó¢ä5H•pÞ!˜%¯=¨ê ¼ßXµHÍhUÊd¬‰¿)mæä¶ÏnïÉ×¶¼'ÛnïÉö…Û{b¬ràõšÙ~¢ºW<`Úè/ë(ù÷K#ð¨°FÉ'NBkÖ(ùOr¨°FÉ«öªÏ”­ M Â%¯=P èO Â%GpÖ(9€ë¨°FÉ\‡@…5JŽà:4*”Å¢áø‘r× ˜˜@…5JŽà:*¬Qr×!Pa’#¸ k”ÀuTX£ä®C Â%GpÖ(ùÀíÀИ@…5J^%ºC(Ö(yšuÎ[À k”¼ö@•pö!À¶×(]™TLîÎ;pW`ãš‚Â/ô—u”¼Ñ]! k”üwà$ ´&Pa’ÿð$ —¡1 k”¼j€®ÀŠ@…5J^{ @П@…5JŽà:*¬Qr×!Pa’#¸ k”ÀuTX£ä®C Â%GpÖ(9€ë¨°FÉ\‡@…5JŽà:*¬Qr×!Pa’#¸ k”ÀuTX£ä®C Â%ÿ¡>wÓš¨°FÉ«(ác|úˆìÛ ð¨°FÉk*á¼CÕO€‡@…5J^{ J8ÿ`ÓXœ¶àL*&·ç¸-¸ùl€ì=š‚B3ýe%o°PÛœChD Â%o"×!ÀÊš¨°FÉÛœ¬i n-ÀC Â%¯Ú¨º X¾:€4 k”¼ö@ ? k”ÀuTX£ä®C Â%GpÖ(9€ëpr-Ö‹r@&&Pa’#¸ k”ÀuTX£ä®C Â%GpÖ(9€ë¨°FÉ\‡@…5JþC¼û ín%Dà"Pa’W QÂÇxv %4#Pa’× UÂy‡Z¨°FÉk*`µ¡+0“ŠÉÀÝyGî |¯Ù°*À¸ô—u”¼Á€YÂùØ/‹ÀG Â%o!«„‹Næ¯ A Â%otpGö9ž ÍTX£äU{‰Î;([@š@…5J^{ @П@…5JŽà:*¬Qr×!Pa’÷€q•°õêî¡ k”ü|˜!j½:€{¨ÂŠ˜›MMójÍ/€E}T¨éêîá .ZþxF@à!XÁs®C Â%GpÖ(y/pÎ'Pa’÷Àã,`ÉÒ<*¬Qò^à$ œO Â%?_EW¼«¸‡*¬Qòn0Ƥ+0´%Pa’W ³+°Z˜¦ Ð–@…5J^#ºC,Ö(yí!@–s€W;‘õç„é ̤b2pwÞ»oKøÉæÀšaý {Є@YGÉ›ì%üu`‘@3Ö(yC€Å<à$ ´&Pa’÷8 hî"pš¨°FÉ«örjŸ,^@š@…5J^{ ø;ž¥åêî¡ k”¼‹q°Ýêî¡ k”¼‡Ä9€–«¸‡*¬Qò.(> €ÀC Â%GpVË\öòEÜ ]V¸àµtaý#p¬pGÈ» Ö(y·C€¢¥xTX£äœ€ë¨°FÉ;°TX£ä®C Â%ç®C Â%ï&cLn†¶*¬Qò*äÞ,¦!´%Pa’× »+°¹€ 5 k”¼‡ô9€Ç¢«×è ̤b2pwÞ!»ß~²À{ò½ìrgÚè/ë(yÝI@]Âx,ƒ  k”¼ò$àkê8x&š¨°FÉkÏÜ3 N¾ž+Âe@hC Â%¯€.á?klxTX£äuç4;ðI@8@…5JŽà:*¬Qr×!Pa’#¸ k”ü|Èϵ\À=Ta’#¸ k”¼Û!@<*¬Qò(~0 k”ÀuTX£ä®C Â%GpÖ(9€ë¨°FÉ\‡@…5JÞArLºC[Ö(y•²º‹û…i Í TX£ä5Èk º$:©£Ö(y#ìØ 5ÂVtfR1¸;ïÀ]Ír@W`hK ¿¬£äu'sº/‹9]¡9 k”¼ò$àkz,±0€v*¬QòÚs÷œ®Àöt†Æ*¬Qò:t¦œN Â%¯; AП@…5J~¾è½TX£ä®C Â%ïp°”€ÀC Â%ïq@°Ùêî¡ k”¼‡ÊAàAþâ$çŸ'ï"€Òv\¨_|5C BDU«¸#GŽà: ƒL @01 ¦ŠAàŒ$€ÏçƒéM@}(ác|Úìo@àt@ª„ `Ü)„ÀøŒÎ;°ë+LW`&Õ%÷ýåížúòß ]ÍIª+°ÙÈÀÛš€: @—ðß÷¬Y«I®àÐù€f':Áé €À(€U…C ð€  €‰AaÀU8RÛJ–Fà„óAÀ³¡ ®Š–Fà€§œx@!P ¦.B@Hü×1Èj&¤ú‰!pú QÂ_ç–ý«fbô€& €®H•ðVÖ1€Ö €˜°º†¾G¸¯—¦+0“Š ]Òø~ upQ`\°Ðù$ .á¿ýÌû…×ÿä¬ è}pýφ¿¯ùò÷ôêÒ €îçÏ<)x.4t€.áŠ? „Àè|@ƒ ? ¦¸º€B  ´)8 ¦ŠAàćÐRœ€> À 5Îó.(]€‹R¨ ®Š@àý ÀÄ €€ð,Àƒêòû™A-˜üò…@}Wc$³ÐU>ŠJççæä®ÀA¹ëírP €*@îz;ÀºY°õêÖ €Üõ"¸  w½.È]ï/ðj'ÀíÀлÞ:èÎÀ«¥0 A 5 w½UH”ð±ž)€ö €ÜõÖ UÂÖßËï÷è ̤Åä&^¸‰%j»›ÉMt絺ÿ&¶@­W})×[ð-ÙNħy2Äç€Ø€“è¼ ¾,¿Õ8}ÏìèO"8 `Îÿ<–FÐ`Îÿ+¼$ðµ,]á$€9ë“€9]¹úƒÌù›ïhrN6\À`Îÿ8@P0çÿ‰8€î s~s€Ìùu xyU sþø÷f€²¥T1»ò»w9 Xz@“  `œ>WtäŽÓG¥ ¨äŽƒà‚ €Üq\;€ ‚rÇApA@î8¿]á$@î8uÈj &Ǥ!œÈ§Jy]åï¥3W ȧF©Î>ØÞ(DW`&-&7ñÂM,QÙX})>’[¼A¥ëUßkmj ¶“TW`ó^¿µ–÷Ä\šChM=€VyÐ=€¼ž€÷WÛ°‚¥TrÇApA@î8 è §rÇ©: ˜ÕØ€*@î8u{?äŽÓEÅ-TrÇé!€E< ¼áêÖ €ÜqºÀ|4XÓÕ¬A¹ã ¸  wœN‡<z‚rÇétgBO@î8\„ ‚rÇé&  wäŽsº^7#èÈÀA¹ãœ/Ϫ@¹ãp.Èç——߇4¶ €Üqê Køo;›ÝhùúŸ£ÕärÇ©@¢„ÿ¶³™]ž™Õl4k£ wœ¤Jøo;Ÿî |ßÜ+L[p&-&7ñÂM,qR[ðV»-øÝºÝ?[4…ö°;NƒsMAíÏ|ž*€ ) wœ&88¸‚؄ڂrÇér@,ûö€¶ €ÜqªN&Jx{°´¤TrÇ©ÛÐl/Šc€v«XƒrÇé"€âTrÇApA@î8}¸º‚rÇé!š‚Bg@î8]P €*@î8°X7 5^À;ÎùXq;pËÕ¬A¹ãtÀciý@¹ã ¸  wœ‡|:ƒrÇéq°x@ w.ÂA¹ãüR¯~BV¿@€ @î8uÐ%œ!€…–`p wœ*$JøX =á,@î85H•pþ!Àúè ̤Éä&^¸‰%è |0Iv¾× €sÐörÇiqÀ*á’“€Ù«ÈäŽÓæ$àþ•lØý‚³6 @€rÇi ³„ÿ¶³Y»ù”ç@{@î8U'%ü·Ÿ¯U €Üqêö4÷GPÈÀA¹ãt‡Ð;NÜKïFPȧ“ APȧË! A /µ0‹%õÆáÁ 0çÔáð8Ε‡…§Ôœ¹ÀH g®àF8s'a$€3WpF8sEíÓi =AÎ\Q{ÀnûAW`8àÌU]ÅÍ@t†³@Î\QÕØ]á4€3WTuV—_K¯^¤+0““›xá&–0Úÿ7ùjÇk~’v3ËI]»­WMR]·%üäë$ Ýùï±´q‚€=¨â¤=€Ãüg+þå9³„s.r'œ¹â¨)豇ƒœ¹â¼Ž)¸ ÍAÎ\‘ê œ¾ ¸ˆÓå«È8s…ÿƒ@úƒœ¹¢BžTœ¹¢þf ý@Î\ÁÝ€0À™+jï¤-8ô8s`$€3WT>¨tU g®@0À™+8€‘@Î\ÁI@ àÌ\„‘@Î\Q#€ånô h¼:€5À™+*ðèÂ9èpæŠ<––#p;048s…l ªJ5[4ö g®ýŒÚ}²>H> @{€3WTàÙ6H½Þ +0““›xá&–Èì üž¨&¼ò…_mPézÕÄîê‘up{Ðöœ¹¢fà`dÍAÎ\áÀQG íAÎ\Q!€÷³ÔÐ\„Ö g®¨¹ X~/€:€3WÔÞ xöêÖ g®àf  àÌF8s€‘@Î\`$€3W  àÌF8s€‘@Î\`$€3W  à̵mÁ @PpæŠêÓ:‚œ¹¢òÑ` ƒž g®8QÜ ÍAÎ\Qq;ðÁ³iíAÎ\Q×,ÕÀ|@À™+¤Ù—·{tfÒbr/ÜÄt>˜˜]S{öÛ=1Óc 5ì8sEÕ!@ò €ö g®¨@rdÍAÎ\qž¸ íAÎ\qÞeÀ‚Õd‚œ¹¢ö£Àz‚œ¹‚»a$€3WÔÞ ÈƒA 'À™+8€‘@Î\Qy3Péª@Î\`$€3Wp#œ¹‚“€0À™+¸ #œ¹¢r tU g®¨<ppG`ýêÖ g®à*Œpæ #œ¹âÜË€ô€¶ g®(ëéy/» ¸@À™+tS1À™+DEê?í+, OÜ\>_ИIýä&^¸‰%è |01»okwËßv& =aÀ™+*z>?”8ˆàƒœ¹B çà@rV p把«Ip:‚œ¹¢æ2àr´P°:€€3Wp7 Œpæ #œ¹ÀH g®@0À™+Œpæ #ñõû}3HÍïÎÃ4€)ýýF  àÌ ‚”   àÌ-P0€*€3WT”uGPpæ #œ¹¢þ@?€3WT 1´ñ*€*€3WØ™¨ììË€´ƒö g®¨h –@‚  àÌUXîÙè ̤ÅäV¸]&òR~®Ô9­aÀ™+ôsÄëy’²^APpæ uP.°€Ùz@À™+ä9Åî@ŽÌs 9À™+*ž à@À™+êo.@À™+Œpæ ¿^ÏEÐàÌF8sEÝÍ@Å# ¨8sç`$€3WÐF8s{0À™+Œp抚«å]ÁÔœ¹ÀH g®¨€gU g®àŒpæŠ/Òšƒœ¹¢®+pêMA¡=À™+êš‚"è pæŠÊ®À‰ç=nú|EW`&õ“[át>˜˜×ò¶µ»¥@ {Ðöœ¹BµËÝàz‚œ¹¢öÉ@é®ÀÚ‚œ¹¢úÑ`‰¡¹ ­AÎ\QuCg€3WÔuBÐàÌ|F8s€‘@Î\Á!ŒpæŠzœ»:€5À™+h #œ¹¢FÏ#€’!Tœ¹¢Bžž`ª@Î\Q#€Ç”“€Ðà̵(;@Pp抇§®` pæŠ'O]ÀàÌ\„‘@Î\AW` àÌu]“#Óšƒœ¹â¼† Úƒœ¹â¬Î Ò˜IÛÉ­p ºL¶×òÌÚÝR Î@kØpæŠï~àºvŸ”œ 01`bÀÄ €‰Aƒ&L ˜01`bÀÄ €‰ACW`€‰¡+0ÀÄÐ`bÎë |_ÿ]™0‰8Iu¾ßëÀ9€à¤º›%\rðhuð[Nî_)ê œ»:ø G]wdw^Z­~Bª+°YÂ|à:ðI@€‰Aƒ&L ˜01`bÀÄ €‰Aƒ&L ˜˜»¯ÿǽ:8‘dC»QÂÙ]×ÿs´:ø ©®Àw«„³»›]Å@$R]ÍÎo º,«ýº3ap’ì ¼)á'Ùà¹áIuv>ä½4‡ÁI7uöä*Àœp`å šTWàÇÿ~½Æ®Ÿ˜01`bÀÄ €‰é-ˆDgL–‡Û r_nƒNà P’‡Û r_nƒÀy¸ "÷åá6 ‘‡Û r_nƒÀy¸ "÷åá6 ‘‡Û r_nƒÀy¸ "÷åá6hPÀÐ €‰Aƒ&L ˜01`bÀÄT @¶ ±ýB¢•õ‚ì}ˆKæ×ãØ/Êç&$ç—ãìFRvIŽS:ÿ>*߽߃ùå8ß#=òýö§ÇÉŸß½¡Ã¾aMmG Qê²®TA§”aÏ_´=b™Âíy}{ŸŸ¹©éùå8»‘>ómÏn™Âíy*߽߃ùå8ß#­æ/÷~Õüî ö '8GÆ›IÎÿzÍJíMý…ξLÏwµÿy<óïEæßm•zŠó{œo/|Æ·Ö»{éhû ÷ï×÷ûº¿¯qvLÖÉþý– àùšÌ­ß•Äüû-ºÛoø=Žñ[m½áÏÀrþ~Hü­—ËX¡&¿@µä%D¢Ök½éäOÛxåõÓû^àýSµæ76ÊÃg65¾™'êÁü}5¿E©ï„øýVE­·GŒ#êÁþ! 3|ä³Ï­ï§ý><4Pë¹<”Pãg×}SPYYz õŠ•T´ž_§RHZv¦þ ˆ-*ôòùuÙJ!í~¡Äûµë-},dm¿ù{ïßÞë‡ü)Û0‰o #™­|þ\±%8é€Ú€ÄvÙWö'½™ãœ1ÒAA…˜œ¿‘vK|6ßÊ­²J¬61¾µ¯ßn{Rï·IÁé_5¾-žVÛX©bkQèrœ„JÇw\Ù8e….ÇâÉgõ®¬¼Pƒ‰qÊÖ+ÇIøÈ†9U@ïÀxÃˉ'ïŽÆ±Þp_Üå1tâäZ@®¢`þĹ1xÁ8¯­ßÿÁZKì¹g·½Góë¼hûKóaßoú…»Ìwoì —ã¿á£ùu¾}Ãrþ|`bÀÄ €‰Aƒ&L ˜01`bÀÄ €é8ü˜¨ùÁy¸&`:2 n±K¦#³¢)ü)@WeÙÞ¶úg9œeûÚýýÚî¶7pUö7‡ïnßÎòu×ûæÀs§9Œ¸*ïª_ÿñN àë¨L¸*ÛVfïÂý\pUÌÊÿÀ»“Žyðù \pU>Á×'õ¾NîfY5¸Ú|µQ\01Ô2 €‰A€&æĦA[OñdIEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastq_quality_boxplot_2.png000066400000000000000000000247401226234573700271700ustar00rootroot00000000000000‰PNG  IHDRdå?,PLTEÿÿÿÿÿÀÿÿ€ÿÿÿÀÀÿ pÿ `ÿ @ÿ€@ÀÀ€€€`ÿ€`À€@€€@ € €   ÿ  ÀÀÀ ÿ  àà€ààÿ ÿ€ÿÿ``ÀÀ ÿ€ ÿÿÿÀÿÀÀÀÀÀ ÿ€€ÿ€`€Àÿÿ@@ÿ@À€`À€À`À€ÀàÀ`€€À  Ðà   €€€ € €€@`€€`€``€ @€ @@ ```` €€€€`À `À` À@À€ã°À`ÿÀ€`€€``€`€@€@@@€`0`€@ÿ€€À`€`€ÀÀÀ`ÿ€ÿ€@ €ÿ€@ÿÀ ÀîîÀ@îîÀÿ€ÿÀÿ   ÿÿÿ•¸åtRNS@æØf IDATxœí‹º²HÏ£:øþï°;#*H:}@ª¾]þ1@w{4%×ð÷€´ü=8†išæO„Üi’²|%QòzpkÀíø7‹…L^…4C`€l €Û1'ò;Ÿß¿ëïéôš~g/×›™>ÿL«Wl$Üp;~0G¤]€Ÿßü•¬à> €Û!l” àùYoÝÊsn„ì¿!àvL¯¼ýýÑnÀb ¸àvü—¶ûXn|æˆý›ypÀý˜~Žô½t°üç{YÀöÀïA@iÜpKÊÓ”„Î È ?èéA‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰i€ZX^ Ë3Œõò£ì•Œ°gy½yææ zEË«ílZú>éGˆkíx—߯µÇ­Ÿ8^¼¼ÚÎö …ŸG q­òå«zÙ7¬Ó&õYqj^i m)C^Þ5eçxÞ^áó‡j/¯¶³i黼k<›uœã™”¾’^ŒåÕv~[Z,ïió~µå«zÙ7l0F›1—Ï“¢r‚Z¿ÐåÍû0¿«íç1ÇWÙY~3ªÕø¥v~½ðm_êw3koüÎïñöýÖ}_·ï÷ÝÎÆƒfžl߯Wó<5.}WŒå·#zÊoøÓŽð­–Þð·auùã`üÖ«ëHAµ™òÕŠȉ֯ô¦ÍO[˜óþô~Wø|ªÒò d1|ÓÚãF>ˆßWñOdý%”ï·–Ôúx”v”|?dÅ _ùlãÒßSþKïîhý*quWBk¿8ÿ›`ýÖkkhsä˜'£õåõ¨*$]r‚Z?J‚ºÝ¿¼ž¶ª6_(åýÊùfï Iã¿÷µËËã‘>äo¢È†1þtr\1’ËlþåKÅf0è€6c\rÂù~Ò» ÀhßpBK; -$¢¹|'lÖø_ŠKietk´/më÷õ~»$œþUÑÚ—ÅÓk<`%[DWÛ1|äm¿*á|íø]mGOq;‹w%Å4Úñõ«¶cøH†Ø”@Ÿ€ð†§ïöÚ‘Þð±xªûÐÆÁ;mµ ÇòƱ¥qG;ïÑo°¦IûN\kg3Þ½åõ¸küÞøe߯=ã©Æ7ol'®¶ÿû†÷–×ãë7¬.oÀ…@‰A‰A‰A‰A‰A‰A‰A‰i¼0Y<Ü€ˆ×Åà høÖ@žx¸¯‹‡¸D<Ü€ˆ×Åà \"n@Äëâá„.7 âuñpB—ˆ‡ñºx¸!€KÄà ˆx]<Ü€®*ˆÄÁhZú‚ƒƒƒƒƒ3Hê#¼ÝÀ@ô+Ÿ”.À|}Áö2P–W -ª=)]•`¾ÀH¸ÎÈX—åý<H_ðQÀºes0˜ ð}ÚØwí÷…‡ÿüÿ¿ÿa„ÉÏÄ|@ŸðŒA™‡6c³Èܳ|E°”Â3û°ž8È€ÈOÚ¼’rZýóÙ ÿlžo~¥Ëðî¶`,+JðßÄ[ €È6éV:ø.ôþGÌÒ^ÐS˜³¶¦ßÄÿÀ{ó`ÑJüvµ `Î÷µl|Wý´Ej«MkÜ–×&·.€eÒ»Îè €,ŽémvžßØw×\?UçéÕ»DÇ |Š»ô®€îH H ˆÉÏɾ²U¼u€@¦ÏäAYØ^x_qN `áìþô¹ýgym€uæ\“ÏU>ëëû—™7é}ÚïgýÒ;N0€Ov/=°¼ów{o ÜHA?Ë—Þq"€¬¯þ_ `óÓ¯ïpàŠlïÒ`îÀâhF[w9Xx~7ú—‡ÿ~éÓ­=žmGÅUEO!€Hh©¦pqU`ã`BµÖ‡2¾ þËéÅW™0aòˆÄž)® ü¹ˆa5owm81#­.® ,¨D‘P §pñYñ@%ˆ„u@La‡„“ ¶„æB €ûÀ•€‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰A‰¡*0@b¨ ª$f\UàWE‘eƒTfÂ$ØÄª ¼Ná™âªÀo…¬çí® ÇaUS¸¸*0»á±ªWÐaˆ"±W¸^œϘӀþîภ1 1 1 1 1 1 1 1 1 1 1 1 1#0ßDÈíÀÑ‘3ÒHaGI0 ‚Ç. FE €[3¢"´ý@U`&LN´ªÀ »¯ØˆÏ¸š€ <ÀA@€«0â §.€Ӏþîภ1 1 1 1 1 1 1 1 1 1 1 1 1TH U3¶*pYwp{%Á6ï¬kR˜ “€«*°0ƒ¢ w‚ªÀ‰¡*0@b¨ ª$†+ƒƒƒƒƒƒƒƒƒƒƒƒƒ3°,ø“‚ Á1ë<[*½š)êÎÁªô”R¸¸& XODª (¦°§$Øbû!VYð‡À¿3¤ø¿kˆq£±ýŽýÊñ>ý>”~J¿¥ß‡ÒïeþWï÷Q” VYpñÙ÷ª üèÞñsãáÔë:²,øvñ¢x¸#€ª]€…7@´ïñºx¸ €•Â÷: ˆˆÅà hì@Ói@wçˆÅà hø.€8¥âçÆÃ t/Їè ^7 Ð@¼(n@wÀ$¢Çå ã ¢}Ïî7 8®\)Ú'¾þEû#€Ê¸FÎ]á¯ô¨‰nÿ„øO,Ú÷TÆ5À2„@°ŽÀðÅà ´€€/n@ €|ñpB- à‹‡h _<Ü€" `q»¹»1 à‹‡ÐX)¼/€¹š@ä’`øâá4TV —í €.í+qÿ•ƒåí#€XŸ¶ Ð €ï†Ãåªo~|&몪ÀÛ…kúu ÀÙïÓª ¬½}í’âÅ_\ù[I#PÞ¹ùgÈÍwë7Ü€¼ýj“åïÄ)…gŠ·¤‡ DÙøð0_~BÞ-m±@›úæ€wËàþ[átÄ€˜Â娮‹œí#€(ñp:DR ï `q¡¼»“@â ¦ãS`¥pÁÀkBÚµ@¾ö@”x¸Ý0R¸lÀ×Ýy qÓñi»@]t¿ƒ@‰Ž\ñpB]@â ¦c0 Î@a:-á,aïîƒÄ LÇ ^BÔ»»Áä€ëÊÁIn\;®Q/€I»T¨kwcðTɵâîö…Eˆw€vɯwùþ؉k4 ¦… إןwõKíôŠw{Ê«þñp }¾ª@b(PŒm\04Žk4 àÚ5ÀÐ88<®Ñvð)ß0Ô±»“@Cãàð¸F³8ØÖ,h‰+¯úÇÃ%tȵD:ww`h×q!Ðâ,ssw'†ÆÀáq¦ªÀÚÊዂÆÀáqœUwÉ-í Á^ñ~e•Wýãázø.@‘&±÷§¿¼Nøýiv.ï;jâ­ÅZ8‘®hUJ¾ª‹WÀþ#Vá}Ê%a½Õˆÿ)‰«ÅøG™ñÿΕ~ Ê2 ï¼k^÷7bô€~Þ¾öhª ¼Ná™Õ.€´Àr[eìþÀˆ]{©úx¸_ôý·_ö]µ·„þ90©;ì”w€@S|”vv&q€ƒ€îhŠw@éA@qÓ€þhŠ÷Þ0Røoµ÷té €¦ø€]¿ýEzvw`htŽŸ%€I9د»“@Cã sü$(Çzvw`htŽŸ%÷A 6„@St #€Îñóv”+»uwG `¯è-PâGU ’èZü$ˆç ûvw  W<Ÿ”¸òª>$ѵøYpƒ*;@®¸òª>$ѵø™»®µ@eÀW^Õǃ$º?S8¢àŠ+¯êãA]‹Ÿ· ÀÀ1 W\yU’èZt #€Îqv:ƒ†Æ@çø™Úävàî W\yU’èZ¼·JoVV¦ H÷€+®¼ªIt-ÞYÅUÅ-0 àŠ+¯êãA]‹Ÿ$ýÀ»&ìϢѫ‹W–Õyë{TVéH¿QXìí¡”À}(%pÊ»ô–)~(oÿ¡Ôä}l{ëðw.üÌâØ^Áz"W~ )<³Àgò»îô¼öÀpŽÝp,Ï@Ÿ.½`¥p^ë 04®¼ªIt-Þ[F ïïÌ`†Æ•Wõñ ‰®Å; ÀJá¿õ‚JQ`mÌ €¡qåU}$ѵø)P¯!êÙÝ]Ažø$aµ£¼ªIt-Ž®Æ ï³º°´üÊ+#PãÚ€F @í÷"ñŸ·ó}¥µ£|ûPôbüpxãî_zmÍÑ»Wk/í ÷ƒÁÀ‡ í#€º#¡½q€@b$´7ŽèBŒ„öÆ@]ˆ‘ÐÞ8@  1ÚGào‘TNŒ„öÆ@UVî¾EQÐáÄHhoä@YQÐɨ¤í €™ íG€ÿ Á‹Äµ—Ç `ÃJV k9\£*ðè‰t%§UV¾òóŸ”+B‡¥}(åi¥ÞV¿ªkÐË#÷éW­FÜ­_íƒ/ï·CU`qF‰&ª×R¦íúvîµ@|Ì@YUài *p €xŸx“ŠªÏPVFU â}â­Çž%Uå&§÷¶§Ý â}âmÐSx#êôïoÚ0@CAÄûÄÇ €Š@@ÄûÄÀ%AÄûÄØ˜ü- €ñ>ñ`\ Ø­»l â}âGÀØï?DÞr`@¼O\@¼O\@¼O\@¼O\@¼O\@¼Oü¸A; â}â' à{}0õ¼ â}âM0Rx_ß2ÛÀ€xŸx‹¬v@¸Sì€zĵb¡Þ*ÂÞvzÅ»Œ§,×lÍì|[ø®ýÔé…yƒO´ê¼ÞÉC™ÑXX©V«Äõ~µòÈb;þ*¹b>ü£Åõê¼J^©Õˆ½ýÊílþìÏ÷[uõ;}U ¯ÑJƒ—`¢*p-±·ÂÅmrG‹7(ª ¬·ùÞ{ØŠì€\ñ@ -Þ$#…ËŽlÿÓê> W^ê}D=»ƒ:‚$èèx „‹?L®µÀAIÐÑñ@ -~Ø.€ pAttÏ8“ ::(á¢ÅÛ §ðJî+ÀAIÐÑñ@ -Þ´ `€.A”pÑ⇀ۣ$AGÇ%\´øðG‡$AGÇ%\´ø!pƒ"H‚ŽŽJ¸hñö؈H”p=ã=.M>BËúÓ߯:<&A¥~Æòî¸;á”ñ Ot­_9î@u]i*Ý“²Où^ñAýz±W;Õý–š³{ûàž {M0S/€Õ¦É°î `¯‰fÀ=Aöš`†Ó€÷Øk"€™Ö³Î&ÀA {M0Ó|€X´_wP°×D3­g&¡,è|`@:>€Øk"€™U–¡(h€½&˜i- *œ@@öš`¦I¯’`rYП§†¼]q~½Ü“‡suyZùÊÒMÚîýþÔÆf<Ì—ŸÃxXý¬Îû0_j€³ßúÀª ,áûÛ,¹ez©C¨ÆÀAôú%ö.Ï€Ýï5¶¬Þ@« Ê.À™ {M0cUÞß[X”Egì5ÀÌ^U`]ZÕÐO”Ó€'‚ì5ÀŒUØ> ¨ ÀÝôØk"€™öÛ@D€½&˜i¿DØk"€î¼'À^Ì4€zAöš`Ü`¯‰foö®Øk^U»Åü °×¼¨¼íìÃ.À=Aöš`Ü`¯‰f8 xO€½&˜i€t³`ïî `¯‰fÀ=Aöš`Ü`¯‰f†à]N€ÛOØk"€µ"ÐkjVÖð.)LAó@öš`F- þܯ¤`Ž"€3Aöš`FÞ„7RøOZáwýíöU˜HWŠZkˆÕ‹z{h#p޹µ*°|iìøªÀZ¿»@[Uàþ€r5Oá.€r[·'È€½à3~ö.@Ñ€~% ¸=À7 güx­2‚|rƯ"€·~Ö¥*ðíA¾9ãg,© ÌÍ@™A¾9ã§oè”ìØÄøäŒ_C €›€|rÆ/!vƒ|rÆÄøäŒ_B¯³ƒ»ƒ˜ ߀œñkà¿›w1A¾9ãÀÓ{Üà3~P$+À7 gü2ð‚nð ÈGà3Ž 6À7 g@l€o@Î8€Ø ߀œñ‹ €ªÀ·ø䌟.€¢’`j›¹=À7 gül”UV›ü¬]Ø\à3~²¬.ÞXß(DUà{MŠÒ6VÖú†Ñµ*pý¢°*°XuxÄ`Uïõ[ `úLĵÙ¸/løtz\£¡&àó]6̱6¸ À7 Óãj@¾×h€² @Uà ߀Nk4T®ÜàÐéq ®„€o@§Ç5Z ‚8@7øtz\£±$˜ü€ðŽÝAL€o@§Ç5Ú >¬kwàÐéq 5 ߀Nk´îð\€œÜM⥷@àç ÏÌÉÍPÝN¸D?VnÀM@¾†Nk´ €]€Œ _C§Ç5Ô€| רÀûFbàkèô¸€€¯¡Óã ¨iÜàkèô¸Ç àkèô¸ÆÀ²àËÿ¨îb‚| ×0Ë‚?…þ[/&š~þc¯;¸À×Ðéq «,øSJá¿õbbÕŸ9&u‚‚| ×°Ê‚‹)ü·^N¯ ü\Ý+LYð;L¤Kæ5U©¥vþ+Ž-µ_R&û§_afYðo=nóåóå,¸9‚ª~µ‰Uü)Ýî_,Š‚fÄû4¨_¶Ji, *_ð}ªH×°°³ ð± "€l € q¶³Êºo €l € q ³,øs÷4 7¥ÀÍAAã”}€~ÝÁµ@Aã5½- €›ƒ‚Æ5ôkPz‚‚Æ5( =AAã…žD€Ræ[[¾ºp‰~¤&éf¡ÎÝÁµ"€îñp @Ó¤Üܳ;¸ h\£E¯µ|AAãz‚‚Æ5šv¸~@AãMÝàî € q NBO@иÆÀªÀr½@¸5 h\ì ¥p&J‚¥kXUwK‚iM"€´ € q «*p¥ÄzBT¾óD©|ä”?ExµjÄŸE´"¼êŒGÑ€¼U{õ»?1«?ÛÀ18Š^?ˆÃ·¼œz @JaÏAÀâîÚ@•ýîÜÎ)€\/¸x`@e¿{ÏØð·^LÚÌEy.¨ìת ¼û\*A@e¿5½uÁ Tö‹à €Ê~[À.DTöÛz/%Á  ²_î„;€*ûåÑ`p@e¿<î¨ì·qÀyÀ@e¿î¨ì—]¸ ²_Â@•ýrî¨ì·õéÀ”‡ €Ê~[Èe?¨ Ç‚*ûmª ¬Ü DU`8PÙoSU`YT†ÃA•ý6UÖN¾×^̤*0“‘“‡2ãáljPUàúÉ™U×)<ósP®ü÷Z[8@À -€Ê~횀B —œdTö»Wt_Æ.€ƒ@•ýÀ{Ÿ‚Ó€p ²_«*°}pRø»hTö[!€8 €Ê~PÓ€! €Ê~ÛoBp> ²_î„;€*ûm½²àPÙ/à €Ê~Ÿ ämÀ@e¿î¨ì—]¸ ²_Â@•ýrî¨ì·EÓS¨й;€@e¿ xÕ áTöÛ"€×Új Ü ‡*ûU‹‚j©Z, ‚Àq €Ê~•zBîÎ,wÌGƒ!8PÙoƒæ²AzÓËͪ39y(3’T~Hõ!Wõ(ÚØ-8¶*iÙØiÀa €Jê°WÀq €Jðyv€Ö4§á(@%-§ý÷!¨¤õnÀÑÝ”€*áf ¸ wT‚à €JÜP €;DÊ¿ ¸IÐwT‚à €JÜPIkYpg†€*i¾˜¢ PIã£Á& @• ·Ãa €JnÞy6 Aà8@%m%Á¬zâC@•¨Ð(> ¸Þ: *0“‘“‡2ã¶U{MĪÀÖ–ýz @YèÕ»plTÒ´ `žDp ’6˜-#8 PÉ8pŽT2î4 £;€F@%­—#ˆ¨„»á €JZïäÁ P »p@%7y[@0P € £UÉõVÏõ¶Ó«_ïxúÃ.@b8N$¦q ÀÛˆDã1€;Û»€p 1 1cOR 4¾šžOßiÀí\ ½¨w‰vÚF±Q2Rÿi_`2<ñ|=8pú¾ *0&á&bUàuî®ù[/ăA.LCMÀù* c'‚]€Ø((ÙØÀ«¡’îà$μ$Ái@€ëÒrpÚÛpt'ÀÝ€‰A‰A‰A‰A‰A‰A‰A‰éPÄÓˆD8Ú@‘hÞðUG‘@‰iß@—¥YFÓÂ\ 9#Ì.> HI0€ð4”3PA‘hÀô,®DU`&LNÔSù¥0~Ô9ý¹Ê 뚀Öa@iˆ„vP]a#µeiˆ„z @c³  ¶Ìs¢Óð\€nÝÀI´ßìjD$¦^ïgƒ"€Ë‚Óv3» Ž$†¢ ‰a 1 1-güUÁ@(@bPÓˆÇ3ð4 U¢ÓVØ:@QPr¾oáVIDAT€ð´E—¦±*°ñ\ ×ÍBßWTfÂ$ÜD<—·ÎÝ5LlÄF+ VºÀ.À…i}2]„¦ùÑ`FÓœNÓi@.¸6mÀ¥áR`€Ä €Ä° ˜vŒíBQP€Ä´`Þð4"Ñ €šš` -xM9pYZàÛ@¡è° 0´;H‡ƒ€C»€p 1THL[U`³e ‚Dg\AžX¤*0&¡'ësybî®q€cÁù­®çîŒç à^wp.ÚA@u×1€ÂîàÔcç@$´ƒ=¨Swp\ ˜±àv`€Ð¨Ùãv`êÄFËÈõ(%#[ ‚¼Ë‰üÿÿTfÂ$ôD® ¼ÊÝ5Åà¹á«wz0»Á[„fèY›±(ïN€+ƒƒƒƒƒƒƒƒƒƒƒƒƒ3PRQ 9#õ‚@ž’`ŽR¬KMÀÒîà$Th8ª/7#( ΄IÀ‰Xܨ JYp€1²,8ÎØc 4ãÀi@€ðŒ; èèÎ+ƒƒƒƒƒƒƒƒƒƒƒƒCU`€ÄP 1TH̼«ŒR˜ “è±*pÛ.U®UÃ1€ÄP 1TH W$$$$$$$$$$$$$fˆ^·r;0@t”ŒÔS¸@¯µ(µÀSIႚ€Op äŠ@F ø”}OTfÂ$àD® ,¥ðŒC[±«[)\|]€ðX+ €«0@ÖÓE@$”²àz s!À}àJ@€Ä €Ä €Ä €Ä €Ä €Ä €Ä €Ä €Ä €Ä €Ä €Ä €ÄP 1TH U3®*ðsùTfÂ$âĪ ü|¶ €cÁ±ª‹)ì9¸×œËÎAÀíWUàÒîàöªo(® ¼ÜµØëNÁª ,¦0Ü®H H H H H H H H H H H H HÌÀªÀËÿ¨îby )\\xù{ÝÀ)XUŸR W«Š#€HXUÅ./ :M‹íª3apbV^¥ðL±x.@x¬ªÀ•ù¬Í.@p좠•59 p œXx„ƪ üúÏŸy\p¸ 1 1 1 1 1G "q°’Åà ˆx]<Ü€†¿a à‰‡ñºx¸!€KÄà ˆx]<Ü€À%âáD¼.n@àñp"^7 p‰x¸¯‹‡¸D<Ü€ˆ×Åà 袀KƒƒƒƒƒƒƒƒÓ(µ–g¥ ¤jí#ìY^oGž©>7Á\^mgÓ’ö`³ïòÛøÐâ›÷»³¼ÚÎoK¯øvüv;åËWô²oX§µ"’êj^i m)C^Þ5eçxÞ^áó‡j/¯¶³i黼k<›uœã™Z|ó~w–WÛùmi±¼§ýÍûÕ–¯èeß°ÁoÆ\þ=OŠÊ jýB—7ïÀü®¶ŸÇÿ]egùͨ´§8Úùõ·}©ßͬ½ñ;¿ÇÛ÷[÷}ݾßw;šy²}¿^ÌóÔ¸ô]1–ߎè)¿áO;·ZzÃ߆Õå€ñ[¯®#ÕfÊTƒ: C$Z¿Ò›6?maÎûÓû]áó©JË ƒ’Åð]Lk_Œù ~_Å?‘õ—P¾ßZRëãQÚQòAþ3|å³KOù/½»k õ«ÄÕ] ­ýâüo/ ªf–¾†6GŽy2Z_^ªBÒ '¨õ3 $¨+ÑýËëi« ió…RÞ¯œoö¾4~ñ{_»¼<éCþ&ŠlãO'Ç#¹Ìæ_¾TlƒŽh0Æ%'œï'½›ŒöÝ '´´“ÐB"šËwÀfï𥸔VF·FûÒ¶~¿ñXï·KÂé_­}Y<½ÆXV²õHtµÃGÞö«Î׎/ÑÕvñ·³xWRÜ©A£_¿j;†Daˆ I ô oxxðn¯é +€§ºm¼ÓVP»p,oKPw´óýökš$±ïĵv6ãÝ[^»Æï_öýÚ3žj|óÆvâjû¿oxoy=¾~Ãêò\ŽÝËDÅ çáž €t @»ÅnHGaF“ø)@weZß¶øgÚ]d=ïù™·¹í ®¸+Û›Ã7·Š¯ù¹ë}µ Ps§9\pW>Y¿üñ¶ð³×R€îʺԆ˜Á›àvŠn¸+bæÿ àSIGÜø¾BwÜ•ï/øò ÞÏAÀÍ"‹W«W+UÀ}@‰!—$HÌÿ¬D¤ 3JÁIEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastq_quality_boxplot_3.png000066400000000000000000000310331226234573700271620ustar00rootroot00000000000000‰PNG  IHDRdå?,PLTEÿÿÿÿÿÀÿÿ€ÿÿÿÀÀÿ pÿ `ÿ @ÿ€@ÀÀ€€€`ÿ€`À€@€€@ € €   ÿ  ÀÀÀ ÿ  àà€ààÿ ÿ€ÿÿ``ÀÀ ÿ€ ÿÿÿÀÿÀÀÀÀÀ ÿ€€ÿ€`€Àÿÿ@@ÿ@À€`À€À`À€ÀàÀ`€€À  Ðà   €€€ € €€@`€€`€``€ @€ @@ ```` €€€€`À `À` À@À€ã°À`ÿÀ€`€€``€`€@€@@@€`0`€@ÿ€€À`€`€ÀÀÀ`ÿ€ÿ€@ €ÿ€@ÿÀ ÀîîÀ@îîÀÿ€ÿÀÿ   ÿÿÿ•¸åtRNS@æØf IDATxœíš²8F½Ô½ÿ{ØT¤Þü‘`…:çÙu¾¼†»ÍiP,oËí×€s¸ßïË<p¸÷»µÊ705`o—\ŽW±±’7‘2ˆ¸ËB^×óúw}½½?oßwn·t¹¿þsß´8H¸àr| `I¬S€¯¿ù+¤þ×\ã L×vÛQË ¬þ ‚.Çý¹n¿ÿhÀG¸àrü·lóø<:xÝcôïîƒë€®Çý땾§>ÿó¾,`ÿÀ÷‹€Ö}pÀ%)_¦,èØ €Èð=< 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ËËØ¾#Q Þþ*{±A"®é¯Ç±ïÜ}ƒ^Q9În¤÷7ý¹§¶ÿ>W_´ýÆñâþrœý7¾¾ÒÈÈÕ8åý›':íÖ€ü®8¹®Ô‚N)Ãî_5±Må|Ö¯ñû3§šî/ÇÙôî_5ŸÝ6•ó¹‹/\K/‰þrœï‘>ú׌¿{¼ªóD§}À ÆÀx0Éþë}Vj/ÐÔ_èòáë°<ªýïcÉ¿7ÉôßÍjóeÜÖ8ß^xoíwwWnþ•Ïãýãm{¾îï:Î΃Éu²¼µXõ\IôßÏèa?à×8ƳÚzÀïeÿóø[/·±B9LùÕbJˆDí×zÐÉß¶qÏúÛûÞàõ[µú“²Åðî¦Æ7óÄz0Ÿ¯æ(õ“Ïoµ¨õ|Ä8b=Ø¿da†·|ö¹õó´ÒÙSµ_‘ËS 5~ñú?,€Ôßzµ…ºÇÎjV´î¯S)$-{¦þ ˆZµÐëûëe+…´{B‰Çk¯·ô¹5óyßÚßžõK~/Û0‰ #U™­¾©Ø z @M 1/{ÁÕýIï&€ÄøÕ Î)³ …˜ìßI»-ÞÓ·rkY%v›ß:Öï7ŸÔãí²àôSEo‹§×| µØz,t9NÂGµã7-¸ºqêºGˆ§xœGeå•LŒS·_9NÂG¦0̬ô Œ|øâ]nëŸ+€‡<‡N¼x§6»¨èŸx-A ^1Î:ûý¬ûÝ{&Wãìæ›ë¯óªù׿Ó>Þô™ïX&—ã?à\o°ìŸ€ ƒƒƒƒƒƒƒsðJÀ`¹» ‘·åî&4ü+@MînBäm¹» !€)rw"oËÝML‘»›y[înB`ŠÜÝ„ÈÛrwBSäî&DÞ–»›˜"w7!ò¶ÜÝ„fxâdÚú‚ƒƒƒƒƒ3Hò+jwÑW>‰%\$€åú‚ýe µ®Œ(÷$vU"€å#ã:#`“º,ïëûtÇ¿¶#''cÌ©@ïo{o½^xøÏÿÿý7Üpóu“ü‚>ã;mþÔ».Ëží+‚­%¼@ê90ùZ6ÏEyßüçu@þ:<ßý•.ÀºÛ‚¹l(ÀS2?j€Lö‹n£ƒw§õ?æ*í%½„y`ÆÀý{á `=<ø¥¾wõ À²Þ·H à½ék/£Úà²<¹µ>}â Ó»0‚×ôv§wö>5×oÕÕìµv0ˆŽøï²vp@`@`€O¾Þì+Û¤¶0ðÀýuóJ@öÞ7¼'P° pˆñîþýõñŸÏkRïü#€9y]å³½¾ïãR ä‡ô^òûÙ6kç‰ðZÝŸøüäïþ³ö ûùlÖÎ `{õÿV»?ýú€fdÿ) %€ä)€|¼šqlw1ø,ðxô¾ü÷Õ¥ÏnÓóÙ器*°é)à µ"å.® ŒÜ“x1¡YÛ—2ÞþËÏ‹¯rà 7ïó…s /W~]ݹ/»5œ‡¹"SK¸¸*°ùB%ð„€^ÂÅï˜/T"O¤Þ0—p…Œ7€'Ò0–0\®             UCU`€Àü²*pÁ×ÀHÆU~Vùð»*°-€ÿßñgñwü;”?Ìüß›ù?v>Ó~kKÂZãü¥~b(»bçb¿r õƒhyÐÜ|Þ¤ªo—ðBqUàU!Ûû6­?cë¿DnÝ‘ÌÕžjû7çݪÞq%½Æ÷Ö2¤ª›K¸¸*pÁk`X^ Jª*pókú+ ÀIy- (¹ªÀí(x ËkAAó6`áîÀ°¼”Ÿ^ ˆ†åµ €  €’þÍ9øqÈ€Jú7çàÇý!(éßœ#€÷‡  ¤sŽ~Ü2 €¢þö•®ÉÓwŒÉ³ó” €  €ýówx;2@AA#úçï@çô‡ `DÿüàœþŒèŸ¿œÓ2 €ýów €súC0¢þpNÈ€FôÏßÎéF`ùá…>ŒŽŽó«þÁ@b çðª't‚ àè8¿êÒ%Á¨ÔÖ?8§?dQÈ:~°ª?¬B°ÿ¥µêÂ>ì;þ^7Û;þ6Í¿RÍ×\T1\µ_±·‚;ŒÈ‰˜1‚ uÚoíã­Ý¯ºQ—›ÆUøÀ)Às€)zŸ¿ƒ#€súC†q5@êpNÈ0@¿ˆFó«þaÄ‹€ó¾ ˆFó«þaÀÛ€å»C§ç ®1~þpNÈ€FŒŸ¿œÓ2 €ãçï@çô‡ `Äøù;À9ý!1~þpNÈ€FŒŸ¿œÓ2 €ãçï@çô‡ `Äøù;À9ý!1~þpNÈ€FŒŸ¿œÓ2 €ãçï@çô‡ `Äøù;À9ý!1~þpNÈ@Uàãçï@çô‡ T1~þpNÈ0¶*pfwàô\‚’+ ¶£ø`[kt’ªÀ•û{+¸#FU`«Êò_j¿ª,söñrÓx“ª lÜAQТñówD;øÕã‚ T1~þo …ªÀ#ÆÏßám¡ € PxÄøù;¼-ª?‡·…‚‚•€#ÆÏßám¡ €  €ãçïð¶P@PÀˆñówx[( (`Äøù;¼-¸›ˆ @U®@A¹¶Ì+K[Æ©?ý™+@P<  ß)À¯rÙüy®@AA#rÙüy®@AA#rÙüy®@AA#rÙüy®@AA#rÙüy®@AA#rÙüy®@AA#rÙüy®@AA#rÙüy®@AXüñû‚  ”d=€Ç‘Š@Ïa’»C§ç ”TE ‡µ„ËNT=ðã\‚’ª h.áòS€Mañß”ÿÛ ÿ¬ÇÝ«,¸Ú¯ln§!¾uDZ²àfuî†ýše¾ùxŇ1~^l{ž›TYpó»Š<å zF–çÀß‚ˆ–C†´šN>¼¼-ˆh9dȼx¤,¸µ5 ?5‡ Þ,ß œC®‘Ë&ùÉ9d@#rÙ$?9‡ `D.›ä'çŒÈe“üä2 €¹l’ŸœC0"WÍùʈϞC0"WMŽÎÎ!‘«&8;‡ `D®šàì2 €¹j"€³sÈ€F䪉ÎÎ!‘«&8;‡ `D®šàì2 ¬ l@uýÉæ!ùq`k ç°T $ؾ‰ÎÎ!Cª ÈÑ’`ü:‡ #jZåD¨ œÚ¯jf‹ðVNÎ@þ*Ä#Ÿj¿Üdn’UGެ/à`lr¨$û½ßy¹öÛ"€ÁýÉ¡’¤¬%œÀÇ+™Ý!08‡ ¹w¿À÷ì›àì2¤Þlü^€òÝ!08‡ \ 8"WMpvÀˆ\5ÀÙ9d@#rÕDgçáŒw «v‡Àà2€y QÕîz àn‘èÂä¡]wu©Pùî.+Uý·—¨.\š_ ùÄÊ?#Ð2BS€ÑG ”日ׂ=äª‰Žæ—\)WMp4¿,nàáEÀésÕDGóËâBÏWÛw‡Ààü²¸/vÈUÍ/‹صDjv‡Ààü²ø€1føªÀÀK~YÆ  °*°Ú8|QPà%¿,Càµ*°¿+þ:åª‰Žæ—eø)@‘îæk9‘Ïë„»TðW¸v¿ªÙ«ñ×4ÄݺƒªÀNozý ìWò¬%¼°9°:|ÞÃ)@Y®šÍ/Ë9GÆÞàßÿið@i®šàh~Y\œÜÍs^DnòË2T¥/š‡¼ ˆüä—eì@áÛ€âEÀâÝ!08¿,ÃO·|—âÝ!08¿,>p¯î €Áùeq!ñ@ñîœ_¨~˜¹j"€£ùeAWÊUÍ/‹ðqà>¹j"€£ùeq!ó}ŠÝ!08¿,>P 0sÕDGóËâBÕgÀÎUÍ/‹ðÀñ\5ÀÑü²¸À£¶(0°sÕDGóË‚®”«&8š_à S®šàh~YüÀ“Wæª‰Žæ—e¬J?,6¦ He®šàh~Y†  ¸*°yà_îª «&8š_Я<7ý¸¯KU`뎿T•Ü¿Ýðÿ•§5 &téªÀ¹<Ä *ö›~ ôܯ“›ìϹú¦×® ü0–ðÂF¯›ïmïÏGîrÕ} ЕãøÍÝÑk¢CRK¸@Ïm@y®šàhîŽ9XÂùS€%Aå¹j"€£¹;¦@j ß¶EQ`uÌ\5ÀÑÜ“@/ᛵAãc ¤Ø €+çª‰Žæî@ 08wø €Á¹;À ÎÝq!ÈkˆŠw‡ÀàÜàóJÔPw6S1>Ø k?Ae^0b¯™uÿ§EAß>/½-\à=ïF¯_IÕ_ †D®šàhÞ °€äª‰ŽæÝ@ `@®šàhÞ °€äª‰ŽæÝ@ `@®šàhÞ °€äª‰ŽæÝ@ ·|—âªÀo€ÙDGónÄ@QU`ñyኢ o€ÙDGón„@YQÐ{¢":;@f®šàhÞ¨ر@j„­̪ÀÅp§Tç W¸éWÑR”vúªÀµR7êQ{Ó둪 lÞQ"€ÒªÀo80›Í»ê ¬*ðýnv¨¨ ü˜Mp4ïF,U^ 6F¹j"€£y7B  ¸*°=dqUà7Àl"€£y7‚  ¢*ðzo€ÙDGón„@ 0 WMp4ïXx àxE 7Àl"€£y7À«&8šw,¼°l‹Žçª‰ŽæÝ@ H\ X»;¸[$rà>ïX¸å»4ì˜MИŸWÍ7¶jË8§E=®œKÀ«&8;— €0 WMpv.A `@®šàì\‚À€\5ÀÙ¹, €¹j"€³s X¸å»4ì˜Mpv.A x_L=€²\5ÀÙ¹$–K8/€wý€™«&8;—„@j WÀø¤0sÕDgç’˜0–p^#¼·^/ -*®*°y…jÃ~óÅa£U®Ý¯¼‰XØ, ^"ªÿ(—M‘sPL¨#€²ªÀzÌõìS€“sÙ9(&–K8/€Í×ítÊeSä ˜PH-á¼¼ÎÍeSä ˜`ÐKøöÝõøî S.›"GÅ„@Š.Thú\6EŽŠA {Ô †æ²)rP X¸íà&—M‘#€bÀÂ^=v‡ºä²)rP X@ŽsÙ9(,| €wå²)rõƒ¶.MŽ! XøÀóã=v‡ºä²)r)€¦-¯KÀ·®ôÅ Óç²)rP Xx €ït—˦È@1`a'€.»C]rÙ9(,Ü>þ]½1›Ë¦È@1`á–ïÒ°;Ð%—M‘#€bÀÂFwÞt•˦È@1`áSÿU ²Š ©zb`l.›"GÅÄ@b oðïÿö‹ü]LŒzçæ²)rPL(¤–ðVÖ9€Ü-Æé5þèùè¦È@1`a#«jèk„ÇçÖuU;UÉ5\²:¯¨+ö«´ª lϧ~¿Ã«˲̢(­ºtXõú*Â[öxå#WO¸àU¨ïêK dîíÛ[.›"ïuP}Ä}îŽ B¤–ðmßy¿ñçJv‡úä²)rPš@b ß¾ú•;èÝ!€N¹lŠ”æ±Z·M?ë5€åœÂ<µ@CsÙ9(Í£ @/᪯BCsÙ9(Íc pœË¦È@iŽV6°ß@hØè’˦È@iŽV>P[ ÎeSä 4G+·|—†Ý!€.¹lŠ”æ`ewÀ)€Ÿ\6EŽJs°ò)^p–˦È@iŽV6¨ÝŒÍeSä 4G+Àq.›"G¥9Xy `óyÖ£»C]rÙ9(ÍÀ pœË¦È@iŽVnù. »C]rÙ9(ÍÀʧžþk†@CsÙ9(ÍÀÊæà.Ê‚VïtÉeSä 4G+›#€ççvŸù½¬ ,so Î[.›"G¥y0$–p^Ç‹‚ÊÜÛ‚ó–˦È@iKEA÷€*:|Ù9(ÍÀÊí«£UlÝúà ¯¸’"­ª«]|ö³*íCWçíUxt5b!]Ø,¶»øý«¿¼¿Ä~å¢öŸœAªoá.‡ñ«HÞ”UÎ>ÞSª›¯ðÝv=÷ÜŸê0ê…<¨Í¸;5˜æàçG ?;èö©ªÀæÞ @Uq P›{[ˆ@o€ºì·K8/€’¢ÀG®š 4%€Ô¾}t²ÏÖtÀÛ€µ¹·…ˆô Ë~; @/Ἢw÷@ƒsÕD¥y,¤¸}üû^=øI®š 4G+·ïøÏU”æ`e'€.»CCsÕD¥9Xy @^Bа;04WMPš#€ðû¼Û% 4G+·ÏFõÖ GŽŠfÐ3G+`Â\5@iŽVÞà`š\5@iŽVÀ„¹j"€Ò¬Üò]v‡†æª‰Js°ò!ë»CCsÕD¥9XA檉Js°‚&ÌU”æ`¥Dk9>ì$WMPšG€^¸/%…)â%WMPš@b ç°¤ÀO.šæ…w{P¹ÁàþCZÂ7kƒïí÷Ç볫S‘Ö¿²š¨û.ϪÀVõ\]ךÆ_²:¯Ú¯xäÃ÷k?^[âÇþofó'JÑþ‰ý¦Öø‰Dê7ý‹ªÀêñÖVî¶Z«žˆë€ÜÔö”'OzåýmÜŒ>b{ Pt ¯Dóæ`ì@WÀskp©ŒèZX%ðµíó¸ÀñÛ€µýå`ì@S µ„o_½¦ü0Pmÿ@9;ÐHñ@CUpà>Gcº’@Þs0v  €S€+æ`ì@ÀxÉÀØ.$€ç»}v‡¼ä`ì@WÀè³;à%Gcúš¶yiõˆý*Vž´@mÿ@9;ЯrÅÁwÀÕr0v ‹  à=GcB&ÀKŽÆ„L€—Œ˜ /9;0A^r0v p_¸¶ Œh•“cRdÞŒh”U–C¾¶.Üð“#€±M!€Ô.8X·ö[XíW¥µ‹áÎS¸|¿ÿe²*°øUû}VVuz»ý ìKióExUÎWçí5¡Úýª›TU`ó³~Ÿ¸¿nÌ­ç;è5þÄù\G§¸û‹>ô ¬&àc-V±5ðž#€>xË`Äøç ÏÞrňS€‰«÷âôÙÀ[®8P¸à=G}6ð–+¸pÄøç ÏÞrÅÑ‚ • ï9è³·\q°$˜ýáõ»C^rÐgo¹â˜Ì¯kÙð’#€>xË`ÄøçÿfwÝøÏGO®õ½½ÆŸ8G}6ð–+WæE@#š8oZÐÀ}®àmÀãOœ#€>xËÇÀ)À>š8G}6ð–+Àˆñ'Î@Ÿ ¼åŠv|¾8txwÀKŽúlà-W €ãOœ#€>xËÐ2ðž#€>x˼0bü‰sÐgo¹b`YðÏäv‡¼ä ÏÞrE²,øÃX·m7» Ðýë¹Ý!79è³·\‘* þ°–ðmÛͬú³dV±Q1ØPWÞ"€Ö\´Úsw z¨RKø¶í§«?6ŸþQYpƒžûUU©ÿöÛ>«a[óùG U [¢îÐK¸@÷ð%Áj7@ (?K‰%œÀš€µtzÞ÷¸À.µp«¯øë%€ê&Zí¹“gÖIH-á‚#«žÐú[ûQMÔŸÕb-›P§b¸æ:©,›ª ¬0¼*°Ú¯.,ÊA‹²Ìòo_a«ËA«_|v¿…ÏDùxkž“åUǰ–#;çàǹhµSø Nö¨§÷)@b — À¬,¶ð¶pÀÐÜÓFf,—p±ìzÁb o  Í==``Ær ߶ݬÃügjŸZˆix[¸`hîé##L,áÛ¾_ÀÌ­h–3·RlP]˜¹£õ€Íòq@Ýî¼-\04÷ô€@_à ™#€aEéùœ!€Gí§€;Z Ñ,'Œ*Af>øù]s%mÏ…®®ì2QžÏ  H.?ú{­(›ärÑB{¶à5€t~ð÷ÚkœÚçÍè|ø‚F§ ú%`çì{TŒƒœæàð„@Û|Χ¹žh›Ï9àEÀtŽO´Íç ÔƒÌ €}Šq~%€û²àÉžh›Ï¸ßïvÙª×m€À¾GÅ8ÝPVX|èNQÐÊ Ø÷¨§·K8/ªWo€À¾GÅ8PZX½ ¸nýqçz]'Ukª×NÈØ[º¯¨V+ª›ÿÀÖ„þ*«äVÿ Zö«šj¿µÏÄŠÇÛ¡*ðv /ܶÝìÊÏ­80ó_TŒsí#€îG¿ÿ:H,á›ÕÝÞšSP9¡ÙsÕœU%ß 8@ nB³çªJë9oo€.’«ædH-áÛ¶ŸHæ nB³çª9™R €šÔMhö\5/)€–€™#€‹äªyE4€Ì\$WÍ+   `æà"¹j^Uµ/ ;GmùÏŠˆ"€çƼ˜ÉK¯¢Êoõ8¢@‚ƒß T;šG€»\5@fwÞ.07@`#N29¨›Ðì¹j^T¼˜Ë@Ý„fÏUóª¨ ÍÈŽ¸åˆºÉ³‘IDATî£^@Ûî¼-\`n€À[Ïz!¼Ê@Ý„fÏUóšxn-GàãÀ§ï €ìˆ[dQPµT‹@AówŒ@vÄ-¢€±v>pO~58ÇdGÜr@KÙ =ôça„YX¥í_×yUà^2ö–,†«šæ/F<ü¿DQÚyª÷Ú¯õ„îô ¨|¼‡ªd¨:Pxû‹ä b|ŽŽäªÙaüŽ2##€ÓwŒ&ËUsä*!€ówŒ&ËUs ¼¾;@ ]ñ6 ÂÛ‚Ffp-¾ XÿY 06G“åªùk$¸}ü»vù#€Á9˜,WÍIPš#€ÉrÕD Þ40{ Pš#€ÉrÕD Þ40{x€*:}Q0Y~¶DuánU‡Å@2W#ʉªþuù4øs@rwúùIºÇÏâõrà!w7!%GrwBQrà!w7!%?Eÿ–¬Ú„ÊÀµpÿ¯.hÍÖ TŽ..€µ.`1 TŽ" €;œˆ’@aI°äç)âqB J~DÅ%ÁRõÌ{@¨|Ô^9X{Ea¯+«æS¶Ö¤7}×÷ ŸsX'•­R:¦:oªÀÞök^"œ¬k]Û§Jnª:¯½~þùG¬+•ËýšýÅ=U¸ZU÷É›í€èô„SºXîèÛ[~Æ)@ò(xœÐÅrG Î[~Š’##‡ºXîhÁyË.Þô8¡‹åŽœ·üˆº¼ X±;“çYsînBË-8où!$@5¹» ],w´à¼åg @Þ3w´à¼å§ öwÍ-8oùà —»›ÐÅrG Î[~ŠªG@ä=sG Î[Ž<äî&t±ÜÑ‚ó–Ÿ"N2¹» ],w´à¼åg€s¹» ],w´à¼å§ @Þ3w´à¼åçÔ€È{掜·ü ¤>3ÐgwNžg͹» ],w´à¼å§ z@Þ3w´à¼åÀCînBË-8où)Ƚ H=oºXîhÁyË àpQÐçÝ¥»8yž5çî&t±ÜÑ‚ó–€\Ù7;c ò‘¹£÷o¤jsÎ'ý§ýC÷„'þãã0âU õAUà8U‡ï×®\]¸¶:¯ªFl à„ýš?vùœÜܘU·kwËmÛI€š€'$wvd0Û@YMÀå* ÄI§î&$w´ç@É)@FÏJv—ÀÉó©9w7¡ ¹£…8£þ»£à {% ð6¡ ¹£…x]<»ðY€TînBArG qV(nù.wçäùÔœ»›PÜÑBDGvçäùÔœ»›PÜÑBDGvçäùÔœ»›PÜÑBDGvçäùÔœ»›PÜÑBDGvçäùÔœ»›PÜÑBLåêÒá—#¹» ÉÅ%Â:#"€ &w7!r3wvdÀ)ÀŠ“çGsînBäfîháÎ$óƒD]wçäùÑœ»›¹™;Z¸  b @î1w´pgÀ2@“çŽ.øÄÉó£9w7!r3w´pgÀrüÀä¹£…;›C÷"r¹£…ëB‰•}¹1õüMˆÜÌ-\(+ –@‚È=æŽîL¸?Š+}–HÍ—*¥(mv¿î&Ä~Íýš—ÿ; óÒawÕˆ»W~” ñG×üMˆ¼-/Üà"G©zÿ·Ï>ÉË€¬{ù”y0$Žëw#[÷ ò)óXH×ïNäÈ–ù”y4è?í7;.O™Ç@ŠªF@äSæ`Ôäî&DÞ–#€•—ÖïE‰ÜÝ„ÈÛr°‚jrw"oËÀÊç)@æB »óö<@As°rû@"w7!ò¶¼T£«WŒ–ª@äSæƒvP+€öý*8š»›y[ŽV@MînBäm9Xy àžû0PÝy{8yÞŸ#€P“»›y[ŽVÞhO™#€•Ûw€¹» ‘·å`e'=4üMˆ¼-&€ÒªÀ©×( êqBämy,E™ÜÝ„ÈÛr°²@ê‹Ážz·¨ ìaBì·m¿ƒ&T[øÀ3Qܘïåm×î– Ü9p7!ò¶ÜÝ„kwáKœ$sw"oËÝMÈÅ)À#U?xœy[înB^š·ýMˆ¼-w7¡¡(}Ks¹» ‘·åî&4V @MînBäm¹» ¹@ý€|ÊÜÝ„À¹» ‘·åî&äBœärw"oËÝMȆîÎÛ1Üó†Üé„\ @>eînB°œÔ ȧÌÝMÈZj‚!ò)swò €ç-/&rw"oËÝMÈ‹êÎùœ¹» yU³¹» ‘·åî&ä@ — ò9swò €ù”¹» M >ìpBäm¹» @iUàäÈq8!ò¶ÜÝ„†  KAàqBäm¹» 9ÀÇkƒTö6!öÛ¶_wª~&Š›í{yæÚÝR!^ð7!ò¶Ü݄ƤÖîBñ)€©@>eînBCOR×÷V½P¸;·c¸ç ¹Ó  @Q!ã½@>eînBƒ ß,?(Þ]o?ÆpÏr§{ Ôäî&DÞ–»›˜"w7!ò¶ÜÝ„À¹» ‘·åî&„¦ÈÝMˆ¼-w7!0EînBäm¹» !€)rw"oËÝML‘»›y[înB`ŠÜÝ„ÈÛrwBSäî&DÞ–»›˜"w7!ò¶ÜÝ„À¹» ‘·åî&„¦ÈÝMˆ¼-w7!0EînBäm¹» Í!>ìmBäm¹» @SÀÝ„ÈÛrw-€õ(âoBäm¹» À‘‚ k9‘ÿÿ¿±*ðŸEª&ªÙßE-VuÇìUr£í×Ý„ªŸ‰âÆ® ¼Y»[ŠÐå{µžãù¡Ü݄ƤÖîBñ)@—š€ @~jînBCOºÕDÞžäm¹» ~  Ï»ÀÝó€¼-w7¡9P¾»Jù©¹» €Ôäîžäm¹» !€.ýyÞåî&„ºôçyC^”»›èÒŸç yQînB Kž7äE¹» Å€¸ä·º?¹ÎÿNÈ]=à«æe*˜KИ°ŠŠ OØ+Rª) 6° ô@”ëR°twð#¤y¼*‹~FT•ç†nι1Ë‚'j‚:) =Y8gìkÀ5ãÀÛ€î÷6`Åîà7p% @`@`@`@`@`@`@`@`@`@`@`@`@`¨ ª†Š@ €µÊ(U¹áÆûYøØ)UfªÀá5€ÀP 0T Wfˆž%äãÀÞ+R/á<·¢ €{d=€‡XÂ5`ìŠ@‰%œÀ«¼èzóqAU`n¸qxcW¶–ðB…îøÆ¬ œZÂÅ/r àžÔ‹€¯ €Y €Ô·‹ Oˆ²àz s!ÀuàJ@€À €À €À €À €À €À €À €À €À €À €À €À €ÀP 0T U3®*ðãóTæ†7©ªÀÇ1ð€sRUÍ%\ó"`nwð[2/î頻 \º;ø ¹ªÀ;Š«žZäv?!UØ\Â\p¸ 0 0 0 0 0 0 0 0 0 0 0 0 0«þ£yw0dA‡±„‹«þ#·;ø ©ªÀk W6«Š#O¤ª›K¸¼(èýþqü@U`n¸qx“¬ ¼Y Åà{Ü“ª ÜøÅ ¯­9pNº(hcM@Þ˜ƒï|x¸&Uøùϯû¸à:p% @`@`@`@`@`ÎxâdËÝMˆ¼-w7¡áXjrw"oËÝML‘»›y[înB`ŠÜÝ„ÈÛrwBSäî&DÞ–»›˜"w7!ò¶ÜÝ„À¹» ‘·åî&4©`j@`@`@`@`@`@`@`@` @– ±}G¢”u‡¬}ˆkúëqì;å÷&$ûËqv#©/vIŽSÛŸ/Êw7Ó_Žó=Ò3ßÏ?=Nyÿæ‰Nû€5G+‰¥.וZÐ)eØý«æ#¶©œÏúã5~æTÓýå8»‘Þý«æ³Û¦r>K òÝãÍô—ã|ôÑ¿füÝãUý›':íN0FƃIö_ï³R{¦þB—_'€åQíKþ½I¦ÿnVê[œ_ã|{á=¾µßÝ]¹ùW>÷·íùº¼ë8;&×ÉþñÖ `¹OæÖs%Ñ?£‡ý€_ãÏjë¿–ýÏ@âo½ÜÆ å0å T‹AN(!µ_ëA'ÛÆ=ëoï{ƒ×oÕêoLÊû›ßÌëÁ|¾š?¢ÔOB<¿Õ¢Öóãˆõ`ÿ’…ÞòÙçÖÏÓþIgO Ô~E.O%ÔøÅëÿxQP¹²ôê;«YѺ¿N¥´ìšú3 hÕB¯ï¯—­Òî %¯½ÞÒçBÖüÍç}k{>Ö/ù½PlÃ$~tv.ŒTe¶úþ¥bK0è55ļìW÷'½›ãW/8c¤Ì‚6b²'ì¶xOßÊ­e•Ømb|ëX¿ß|R·Ë‚ÓO5¾-ž^óq,€Ôbë±Ðå8 ÕŽß´àêÆ©[èr!žâq>••Wj01NÝ~å8 ™Â0²Ð+0ð}à‹w¹q¬|®ò:ñâÚ@âµ1xÅ8ëì÷°îwKì™\³›o®¿Î«æ_›OûxÓwõ¾9hù¤9̸*¯UÿùÇ;%€¯³~pU¶¥6̼ ÷·àâ €«b®üo¼*阧ï¸*઼ÿ‚¾¨÷õ"à®ËG«Mk£ ¸ 0¬e@A€ó?öH§g¨À(ÖIEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastx_clipper_example.png000066400000000000000000001307011226234573700266630ustar00rootroot00000000000000‰PNG  IHDRXq€:øsRGB®ÎébKGDÿÿÿ ½§“ pHYs  šœtIMEÙošžx IDATxÚìw¸ÅùÇ?{à^zS@š( ¨(öÞ»Fc½÷-šäg51j4Æ£&vcï]Tì½÷Š‚FlØ‘6óûãý®gîÞ=÷^ àûyžûÜsvöìξ;»ówÞ™ÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqæxÚ][¸ïºÀ•@æfsÇqÇ©ÍæÀóÀvMìÓØ ÜTÜlŽã8Žã8M³ 0¸ ¨/Ißx8 ¸Ý–ã8Žã8NËè†y§¾’àj[²ÏÊÀÝ.°ÇqÇq¦µ1oV]!mu¼‹ÐqÇqgºÅÐ@oà`ª›ÏqÇq§1­[°O¬ œÅb-<ë¦sÇqÇùaÌ\| ìCãnÁ”•;ÝdŽã8ŽãüÜi΃µ ð 0?0±Æ>]€¥%±)Ö>^tó:Žã8ŽósdfL ºpÉ@;‰«ýð8-ÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇqÇùIhéD£õØ„¢£€×’íó êó4ýo¥ÿoïêsG`u 3ð„~ó69鲨<›˜4_Žç;àI`’¾wÖ×¶Ñ%ylÍ"ÿðr²}^`a}:OžÇ÷€·ô¹½òØ x ¨¼N–“ Šyœ<,tÕ¶)ÊK¦ýŸæú'vʨ.´ý206ÉïÒÊÃý‰M»i{¥$_akC擺ά Œ>Jl³80w<>|‘”‰5°üŸNòÕ šØ1P] àCàU ÙnYl餯µ­-¶2@û’ƒ•¯»“û“²˜þ&$y¼)Iï(;>Ÿ\{JX øx.ÙÞGç-+o¯'åÍqg¶e~U‚÷¶ÿ]ÛÅz¹>«Ï#sµOW}¿8xIå’zùOή¾®þ-á049×fz¡^P#=$Ê-lÿ³òu‘*¯—€KTù_¦J¨#p;p/pš*ƒiª€WV¾Î®Q~¯T'[oÿÆ7*ýK`{à*àV÷5‰§‹”—£ ù}MÇè–lÛAö8_•×Àå²õ{‘9GÈNÇÄÑË:ÿå7Ë–Ÿ;„êçÀ+…|)p0B•奺o#€ɾ—+[ÄÂ纆+e»k€ɦki¿EuMWê^¼¥c PúâWȆ£€NÀo$†þ­ûûòx¥ÊE—$?ç긻Ô(OÛ+ýœéý$(lÿ«ž…‹ôlUûä “(ø¸F—‘ЙVØ~p˜>ï#Qˆ¼·¨} `Î6ªVÖ”pè­¼wKò¸}’§öª¤I¼S»©’šØl{}>^•[êqˆºŽ Ùëú°·>"«‘ÇÅ%Ò¦–x®ÿUð†!¯eQ`}'±ºwaû¼ÊÏ…k4\~]ׄy(Þ¤Âö“t~%Ûå¶yXÂÌqg¶çO)°î²´2îžx8NJ¼Vy—Ø;X÷VNE­Þ!j….]ð’å•àŠÉ‹º^ÉŠzá(ÉãѪÐ?+´¶{é`_àlå¡£^î`Ý™k* ·%Bê%Þr¯EH®yE‰ªÅõ½£Ö¢‰×&?O;UŽ%£~ò¼åüR¿?øu²½3Ö ƒ*´¨vµ-›TºÝäé(AÕ=n‹%"ðµÄî‹Iœäì§Êì àœî‰ÛD¿ÖºG‹$bl°<KIX¶I„ÝÒɱ&ëú–WJ„dêi¹_em¹’ôÞÀCÚo®D”¬#U¯û½X’Çùå%\Xû´/³­¼&KªÌÏ[RÞN~¯k]¡ fó{z(pŠÎÛë>Dž«u ÇÛ2ñòŒHÄE*Pß,xoRYŸ””å”ß§ª¼¬^°Ù»²WÊo“ÆH^~¿“8¼ˆj·6ò"ý«DÐJìœÉ›¹‘ží…KòøyEߺ\sz$vßZ¶i¥r4˜™³Žªã8ÎF¥…û­*ÏÁzYæü·FëùK¬§·*¸4†%H̼¡—÷³5Îù8Ö“ ¬^ª\ßHOÊ:X,Êã©7壒ý¿Qe0—aZyEy@^–x¦‰<~Ky| X·G~ž‰%éŸ&ß7źœžK<:¨¹Æ9žN¼v=•ßQX7b.D§5ñû—/b.žò®£´‹ï3Êã|¦H°ÅD¾¦ ³Gâi˜ÔĽ~Ry\ëFKù ØN^Ž!X·[ÊXy¿Æº ß.9~Ðuæy\X6zGâªKaÿöI™x§à¥ÉY]¶B½œ ÷4½ŽÑÜ=i焼I¿N¼o7ÒŸÅb sê$:_Óßò%ç\Où{\e+m} ²›rNA4­¢gêu‰šJáØW–”¥5;gò8½"Á^Ö͸1Ö}û8°y²ýSÊcß&é¾xü•ã8s„ÀZR•ëíÀ†Óqüyäø6yáÖKðLO ´³¼ åÍX®dŸUiÝQ¨ðZ’Çï$„ò<ÖaÝ~?u+ùXwÌ«ZK雈É×A?àë©RY¨”[ÊRhy{§é(‹)ï’ûHjwà“d{+•§qÓQ–‘P{VÂkb‰''÷¢NVå¿TÉ1–‘H»½ÐèhŽž…ò– ÕO°X¶V%‚ FKN'ý}+oÛ 5F¯ªLý²àGãîô T%€ÅÞ­móÈÖH4×IL6•Çöj}Ü…ÅcYK Š?°¼9Žã̶kÍÄ3±®¿.-<þ§zÉæÝD `åOc]m¦£ÒŸ‚Ž›ŒuÁÕ*‚VòL´’Иk:òØ6ñ´ôÂiŸÆâ·~ªX¾ªØÛÈN¨v5¶”ÕdŸ õÙéüýÐÄ3ÒIqïéø}½Ž1IÞ–ZÁÑÔð2}Sã|y9ýœ†qT[bqyÏÊ‹ÕZIMº¾‚<5)ëÈ~ëi¿¡TG°åÞ«Œj\]?ª£H§·¼ó6Av›»$½®ä™XSyRxžVÐñRÞû$ǧü–=ÿy£¢ƒÊáTÝÃÖ‰@š(qÖ½™<®¯ýVU*\÷RÚ€Þ=%äÇq~ks¬{c ªCàháñÿ«lkó®„ÕPµh'µð8¿T^·Çâgú<#¿Tå»ç3e:ÄÉgXYîíù0Éã”wíý U庪*þ/™>O\^ñwÃb¼zHHLgg]U¾¿Àü¿Æ<ƒ-¥îÏ``[{z¼;aý)°X£y0¯\꩹ ¬žë k uâóc]mhûƒò\¯òÖ_e#ÓÚL÷gsÌ»©NÍÐãUV•xròÑ€Ó°›‰“tÚŒÜÛ³Õ—ê‘ü™§ã,“E°îÁþ1°6àÙt.=ó¿Ò3•vá= í)i8ÕÂæVÛÊ>sÑ0æpC=é¾NøÇqœÙ–w±à㜻€JZ½¿þHÃQNH¬ü=Ù~°DW1fdZËe­â/%:òJüÅ‚È{ ²Ï¹¹çœý±8“bÅr¬*·ú¤¢‰4îÒè/G­Vv,ndñ&<<—;—¤çü‘†#ÓVÿG”w½}J5˜}€î]ÑKØ ‹Ù)ëf½89ù~)6¿LtßQrìþX—T>¢ð4îFBö›L5è;§³*ÙÝ’m‹ëzë•þ²DEÎÅX×p±Öú÷Šž¢¹°¸ª¼œ­V’Ç/©zn;ëšú&éoc#sî áH̜ñ©&Z¶„u‰¥ö»6XË(O©NÃø²T€×cñ~iù À’ï7(?¹§ì?4Aù°§>/ÅEå­hµ˜ÜdÛï û|ލç×VëDævÝZâáX}?OéùüXÔþ+5îÑ5¢ôëtMËÉ#ô^¡LŸ#ûR>SÚ+_aó•Ý,ñÑ« ¸_’àø·ž¯¡X÷âß”‡S%–6‘‡êaÙw_¥ß†u.¡|ŒMÊtoyýîQîWùm‡ }VÌ5%lþ©cž”ˆÖC•¯?Ên¯ÉõØôQÏoÖ]8^^¸…€]•~¯îÝy(?§:'*CO¨ñp…¿–Ç™]h*ˆ»Bµkdš*±Îò:dTGªQ » r³¢*î%œÞ¢ÚEØC•Û½œßÐ˸N/ã ÖU÷6Õi*$Ý•¯ ßu¤:Àhµ²sOH>ÏT+ ì¤<öÁ†ý·×ù¾K<”Ç:‰€/ Þ©Å•^QE1º`—¥©Îä>Uh~ýùôwd—|(z>ú,››ê\C/Jд•0‹Úÿ=í;—òòª®£N÷j²¶Euvíy©Æè¼¡}ÓnÓ|®¯Et¾<Ïè¼u¯‚*òUÙ·×¶×e›ŽÊëd Ÿh¸ŽîÁJÚ÷1݇PH_Y6Ì'}'Ùg°ÄdžÇ< ½ƒÎ”¿ÜKÔ1±ýÙf‚ÎÛG·¼¼õÔþeÏÄ»ºïHÔdɳTAÙV‚iI= Ïé~¤ÏßÂ*“ãäMú¸ðL|§ßæÏD+åinÙ$Ê(CuäoÞ YPeé%=g]tï¢Öå÷sUÆ X üÎú^ÁG:Žã8å,8X‚†q¼Ë”üæ `U73§° ðšZe‚©5pð °Ðë&ÀsØä¢W`kâ®\ˆÅav:³>•‚ã8Ž3+Ñ›T´‚4Ìù¸ ó~9Žã8Žã8Žã8Žã8Žã8ŽãüÔÄY ¡ðÿǼÎ8 Ø1x±sÇ™£ñ¸µÿ¡â,øûX¡™ß‡fDDlAz"®²²|5—‡8×[xmÓ#†b ·¹¨rgN¤pð$ð8ð6²ã1l¨­ û?§¿t&Þm° âUÚ»:ÖÀÍØ:‡Oé¸Ohÿ·5€§õý l±ÏüûÇÀºÀØzVë7ÏSi²‹òÑø30FÛÏÔõôSz[ÄúMís10X±pªØ©†Í–Wzºˆikà\]ÿã:Ç‹Êã(`w`_Ùæ1¥½©}ŸÓoët¬ut?Þ×~Çëw9 Ê®c°!Χ•Ô[‹jÛY%ù¯~¯|½ŒÄV²ß$¹–ÿSÚàÀ§ÀB…ãüYçX³äó×ê÷oè^ĤÜtÎÐ}¥286¿WZ8,Â;Fx0 ¶‹°c€"<๣"<áIíÓQÇØ$À ÞpS„Ol O„—<á‰ïGxJß?Ž*8½"|á²¢Ð6Â_ôû÷"œᵨ¥@"Tü:Â[Ƹ À×!Y$ÂFD;Æ«NŠ…{`µ1À‰4^m# ð^€wÜàùË*½aŸoá±ç8!4<ÎybL–¾ °D´|?"ûü7˜ fÓE´ß\ÁŽ9:ÂÛ. 01Øè°\°µÕ=»£hÇDàÝí]]p9Ž3'ÐM•à ØêæOaÃjçþì[&_&bUÆ/bÃnwT¥¿°”„ÕþzÎ ÅØ)}õywýï‡U>_K”õÆF”ì#Aµ.0¸WÇ܈*àT‰…ù° íîV¥=ŸÒ7^Õ9ºaàElhpÊÍx—Ö°Ùn c’mõ²Ý–XÅs#p0Hâðdà/XE=?p86Rf`s¯­®ï}‰¹$”>^JÄÑÀQØ|1óa3$GŽÄÙLÂå“’üÿC÷k°ì°­~¿¹Ò#¡;Xy¸J÷aÑÂqÞÐ}9¢Ä«õ*ðGLlÌ ÜªsäóÛ܃U¶ýÀÑJ_@ðŸ¼a‘Ýl&°M„ã‚ …¾v‹&(°‚*ñn=Fèá ý~«C¢ –Þ–‹01Â:z˜’FE0ôQ´2YôPMõÐ#ÂH‰Œ¾Úg‹`Bn åálåa%»s4q¸„x1·1™Z%²Å[%Þ «d‹æ–˜ŠAçˆð‰Ô%£ —u”~\H¼ÁÄç«¶K¶m }现š>¯(»Å a-ÑöŸý"ô pF°ëì•«‡Äå7Mx»¦F}&oÇqæZ«bm#‘0R"` ÏÊkÀÃò:å,l¤Ï«É#ÓF‚l; §ÝÏÆTUì¨νP]°á¹ &b¦6œ·£ÆÀ¦J_Cž•^= žž¯õˆÄDNW5¦WK¶uÁ*²5h<á]œì¡ëè™l__"²6qÞŽ‰ÇkˆDçòÚ¶ðíÛ-±ßõ¬)Èk‡„Ú£…ôuKÖ©ØÝ‘† ª•};ÊÀH`+‰¼W€Å“ô>ØÚ“©ÀêU–›WS$à¸D欪¼Ô«¼/¤÷–_ €³å÷‚&Â-Tƒ#¬§Š{¨PÌ›J„›‚Ù*ÿ}»Ø*@}´r…„Ïø`b{|ùïpf€ï" LÄÕüp]’}‡ÈKÖWÇz"Â/C5}®‚À:;˜ç.[˜$°äÉ»,Âö&ÅÄ&ÁDÏøØ>B§/X9ص½ žÇÿŠðǤKpþÓ"ìàŒ(á`î{ê¸}„Ü6~̦{„ÂGðMHV„muÿþ–­<}Ùã#ü;ÀöþZvgN£(°Šœü ëÚ9½Æ>©À*£(°ŠV‘¢À"1Òx‘Ðmõ›Öò¼ ,¤ï‚uWå ‘‰š%‚ôaye>À(RXe¤+åk`é¶ÎòŒ|ì\rßv+l»W‚n4‰Wëö¼¡$?ËË#ÖGž©âýÙ¹ 6×—í(Ï]jÃ÷åu,Þ·]õùB¬[“‚wt .ÂFîÊÅL"°–ˆU±œoÿ^`*ùi!éêÓ¶­ba©Ž`Þ®ïV*è”~c€M£y–LÒ× Ö¥ÕºÐÕ¶µ¶µ“Øš·p»$]˜ß„j·lþû¶±ÚØ Ú÷Çäúo0/l¾ïQÁ¼£i~3å­³ß3Ñò’^Û ˆ‰·×å UI¬W•l¿'š &’Ù!=ç¥pg€c’{šç¸÷Iä]”ÏqgV¦2“޳9Öõ8Õî¤Y…ªØ§¶_L‘Pš@ãÉë.)xSæÅb€êS"žrïÍÝòÌÌ,ºËöa‰èº^"¥k‰wh²]Ê`]ëíò<æôKdÊ“X¼Û ¬[qb!ýÒ¶¥äœ&×. sa]‡)S°˜·Lö{¦qÎ-À”hy|;PíÃÊìï…̺à‘5<Ð<ª»Ç¤i¸.3Ú¨òÎj_YžÑÛ€_&‚a~å%dÉVk2˜šÁÀhåêK^Ç%™ «¶tÈ,ï{QWï2¸$dõÑì913Ѽb.¤T6_,\cÌ`dÅÊL¿heij–œ#ƒw*&¿÷.*þi<Ð'3‘Ö,*ôŒÖ½MEvÍ È)¿Èà¹#²jc!µË¦™•Õ7óž2qçç"°ºë…þˆ*Ç$Ý#³“%~ò÷òOW`]Se‡Ü}€b1Q'`]c`±ayåÿ °dá<+`]"ã±Àð%™yKMVþ[×HŸ¢:¬M3ÇY>“waË­“sÔO‡—À¼$—é8­tÝ#•§O¨zD¦*mk×ËLm"`r„ú¬±«E^ &KåÝlmü5Âåþ KKˆ ­3óÞ Í=eYÕN(Ÿë)¸û yÊ&Y¦ò`>—_̓ÓJ×TŸŠPAiyû‹»/³XªV™ ©)yYH§r ïeëYHΫB(p‹ev}ãIÀÐJËì€i™îeH®Â`€þyà ƒû#,¡]VMï¤î×{€·2è — ¬ÙšØÀÇKþ^¤ñÀ˜»ÕˆLÙ Ó(;Æ™XWûÓ5ÒG¨x[ôç° §añ¦Åô°™œíõž‡y˜¢¡7w%,|f"“úŽ‘²‹ujØli½·H¶Õ¢:-ý{Øë y®$ý),Ü$­ónÓ;û1ýöÑÂ=;‹·}ëùø²ÇE´íðװޤ±Þ®ó€U’ôåùØKvž¯pŒ#õ.ZrüvXèǪ܊yÜM÷êKl€Ø3jôÏÒk%½|ÏÎQ%¹æ,ô@¿‰u+æ×ú±nô¶ºÙ£TXû*}¢ÔŽªˆ¦hûŠX·ß½*,+γ™ÄåÀ¯1oÉ̺y_ëopa{Oª]€ïи ·pp!½ô0ªÊ-‡yK•v‘µUÐßÔ5å1Z_èe±ƒ¼´—§k? ¸Å¨ÆåçX¿püöXð³®Ù%³ÆÊl• j®âÍ,Ï¢Ð̼L/GØ*3}1±a•g“̺è®މ–Ç“ò6$ñ ÍÌ󹵎ÿÐ>š-Éì…ðZf×8©bßÇdŠÇJòÞYB6g,†ê.¬Ûµ_„ÎY5kYV˜á*ÿsc¡)ÿ”øY °t4æa_8[ æuÕü…*ÙhßKô} ¥¯/p†Þ£#€“T',«|¤ô=°ž›S1/{}ÒºVy[AïßÁ4ŒsE¿ý¨ ÜR–Ð;v÷Â{q9þ¢Gý!‰®qÊã Ø(ó?Ih}+áx«Ú kä<€=¯‹Ë^·&é pÞë«ê]}&ö>J´-¤Wäî%ùß_çMÃÅÀ±Iúêª+Rõ® ôzPŠÝi切 À<ùJñE. aìS‘môÐ9ZkÊ1I>6ÕCš˜Mi8´ÿug>=0Ï$…µ'6²rÃÂ9žÓ ®Ne`ëB^¿Óõ‚Åg½¦cT‹ë•dÿ °Á©ð\7Éã"ú¼xAD~…Åu ÖE¸y¡R8ª{)‰÷YCÛ³tn©ÃcÒ"Vàõ„¨c&ŸŽ Ÿ·Äóòx€Ó#ô &l °…ÎÛ=À¡ú&Q…Ûz IDATØHÅ¢¸2$-½ë*Ži9cǯ¤^¬»…ªØGS/`@€Å ÖO¿ïaBHº©ìÿ^°í‚Ùf¯‚º!ØË y“ž °°÷ŽV(عG´¼w-¬e4bpPò›L UïÝ þmzŒÞF€‘ï¿g„»4 ±o€ ƒäufou¬êÖò¨ä »©öÉ=îo©Á°páý¼wÒ#ñ°ê¨:½—–è@õÅ$‰$$“0BïËñè9—Z\Þ¦vÊç]Iãuw îXƒoÑ»ìˤ^¹¹àuZPÈ*{ŒÂâPG–ôzTä¸8BïÚ¶‰À:4y—^E5î÷Wzgoœ4hw“]kž¯s$tSÎÐ{í÷r¡w#ÝŸnû“ê4]SÎ Ù$õ:µQ}º±lüTÁ9°œŽ¿H¡Ÿ¤k>«¡3Ÿ=°FlÛBÝU&VU¾zîÅÔfôÄOÆf)GÔã¼g醷VËä­¤!ãþN©,ø{lTÒ4‰¢ª¬—Çi¼ZëJޱ‰Ö i®|¿Ñ°¢>N\ bó9í¡c?£›³jòûÏ©ÎS´ŠŽ±¹®9dÛ'bñy½HÚ\Û÷êá_¹†=M-Š_ÒºaSœ#{m#{­—ìs•~;H/­%&ócǤ…ÑSö:%y ¶UݹƒÎq&ÕUíóÈx]÷Pà¿ò¬ Ñ=:\^­üþlIuº‹ü¸Pní…T–ÞÑC“ó;=kéþܬÖI>¡æ¦ªÐ÷P€÷)ÁærꙈ¨%%^KƒÅÕMÖNÓlê€ë5—ÔVÉ~mƒxOŒ°§º²&Ö–ˆ6—ÓaÊOç·¸<9`oÍ‘µf´8¦ï‚ÚËG.áó;k †—„dž­,À]ÁF<ö°v„¯¢GDû£ò`>M¥pDP× ¦e˜¬@ü>.ŒpoTLœò59À!ºG8:ÀgS4šðÉóH î¦)–‹Õ{Ñ-®R;½ì“ûpb€,mèƒÁÊz›«+‹fóËŒŒ–ŸnÖµÚN¶?>˜Œ8smÕ ·Jô?ªAz%6?_­®§G¨Þ0Hs­°•nz§ ¨‘^uS®Wؾ¢„]]aûq ™ê”b#û4¨"qP‘ìUØ¿ 6H«¯Þ‹e±½­å䨲 [ï œ_âàø¤¤¾œ—ê;$uHNgf«ÈFy7áºIÚ.hŽ»‚Ãf½ßûHÌu-ìsrA¬­ú¬·ìѶàÜ8¬ðûŽI/72¥›jªþÇ,à-é"l¯n¦7T¨vIÒÖ†çW…9X7ç•‚'d;Œg°jûÂ9VgäZ¬U]¡×›Œó ´õJ áÁªð— Ð2—GhO‰¯¿Idܨn®¼ëj#åó:y´.VÁŸ_Ûï§Úm³²Z5{©eµ#6%ÁòÊË**˜«'-¯Öºö¯$èö/±õ>TƒÐ+¨ô/ô2ét ­#×uÎŽzè¯RáúƒZlT ¯–븃ò8NîôE¶Z‡wêAÚ€j_ö=v‡K(ýA/¿±ºÿè%±¢®w9=øûR}¸»\ЗÉÓyJÒš›¤ô ¹ã¯Ó÷'V¹“ÁÍѶuí}€µ*ðIb¬2+S¯dph”è¿{"6Âp)àŽ ^Ïìá{-yúçÍÌ7c"fMm¯Ï¬uxKf"®{ÞúÎìóÒz¨Îöpr41½Sfš~­ô—£uŸí–YÐ÷9 `_ÇŠÀ–™µònTËpÌDÜÜrs_a…h/ŠU2x'3ûÖ1΋v¯~+{OĺB'ÊŽëw`ÂkÉ V¬X™_L’~íúÚKG+?{Ū—yñ¼ìGk/–ÛYqWGgpR‹62vDf“ÄVÔ}øHfÝ€óê~tU7ÆŠI7PuÙôÍ`°b¶¦v<¢3ç°¹Þg ñ,Ä‚z×O Ó³¶ º³>-¤ÿ ¨tœ¨F|!0·ôPÆñC™[ÇSØþ¾z¦*vOÒ¿.š k„~¡wrÚÓ5PªB§ÿ‘“c°„S1<ã÷4d¶œ„ÕD½ê’sÏ«2’òM’ÇAê}I™"¯ÛdÌfY DeýlpmZp •ù3ZÁÕÓô € §X(.KÓ¦˜V+ؽl{,\cSKÁ´Ôc’æ!šg&+¦¦)¨kê#´‰5–á‰k-·×Ób ;LÏu6eçB—jëи¥ï8My°Ú«õU%<¥Æ;íåÁÚM^‘?Ö+Ò…jŒT½DÜ©˜·6Œ–ÅB3F`=BÅ8çM$`îÆºêæÃzfŸ(ÿ}J„ÕBµ_,“•ä;ݶ©¨«£lz°ì4„jÍ4Ì#X&°–Pú FÙYÈ–ã8Ž3'2M`YCk-y*ÎĺÙóÁ6Ós ’í3’^Ö0Ob'œ¾ —øDBcм:y¬íû؈E°ðˆ):îÌv+´J‰Àº P?S¢­c óXܧÌI »_÷àÀbÆ,¤¯CÃù ·Ðµÿ ÷¨O„åcº—ý íf¬»sœò–Â~óäMÄÌå£Ó;c#Aÿ©smœïT‰¯´Ý·j’ÇK°œÔnó(½›?†Žã8ΜƒØà©hØMÕ ë:<1Ùv:6 A»B%¹§ÄWY7V,x2ÛºÄÁ°+µ>åCö‡JèíMÃQh`Aø¯K<ôÁâ­Þ¡:åÏzX\ðÊX7üH ¡Ü›²:”¶Z‹oÊGÏ Àz ò‘€% ¶)ˆ‰E%ê¡áಜþX7ݵ%^›E”Ç<}9Ùc}¯Çæû‡>÷Å[ªôy•Ç|ðZ;‰ª½ΉØ÷Üsw0æ¹ÊãÍÀâMÁâ0ßÂâÑ¢ÿ,UÏÝÆº§}“ûø¨„Y;•‹§±Áw9ÿQ9ɧÑ8‡†ñËŽã8Ž3GÐMbc6ý@ZÙ¬Jû;ªs}§mÃ’ýFjû«8xêýæ¥Ä—ÖöoTa_Hï¨ôouž'K®ãTª¡•ð€î¹“ôÝôÛˆÅ@}$o͘k Õ)%®Ð¾_cž¬×•·‘hG%çÊ×Ém[Èãk%y-з”{ê–úÑò¹÷(¤÷ÀL“NÑöî|ßHwÀâÌò<¦£ KÕkWœv,-ÿÝŸ±.؞؀¦|ûáºÞtÏßN„ylÖT笒ëÂDã9W¥á4BCT¯tsÓ9s C0¯U-:c# ŸÎþ¼A¹WËqÇqrÚaó&~ œ†Åò¦tÖv^t“9?7Úó›aS4ôuqå8Žã´¹°É¬_,ÔK`+ƒ|„ žZÕMå8Žã8ŽÓ<ówb1¾[6±ßæÀ‡4žwÑqÇqǭ〱À™@ï$­7°qÉoîÀVqÇqÇq , üx[ï¶à¾åëß¾Šw:³­ÜŽã8ÎOÈ2XÛbÓ1™„Må°ð-6И·ë¯À47¡3;¹ ÇqœYŒþ`‹JP=ŠXŸä¦qÇqÇ™1*ø¨tÇqgzˆ…ÿ³B^~¬ã¿ÝŽã8Ž3çfÂïãœØLZlÁq[²O˜ü…Ø(΀í#.ÊÇùyÐ[lóÿj¤¾Âfsÿ5¤˜³$𠶬Î>ÀÀ‚ú­ux/p—þß܈õ¿_R#ý7g_l.•—±™ÏÄ\ËÛê7÷$ç ì‡Jy°pŽûô÷l6a°5ÿ|¼€ÍpÿnÁ'_êxÇÒwÅ&Í{Ø8®¼y!w'y<’ê`„€‡tŽßaËL,¿5p,ð6âf3à½B޾Ðý:\ÇGy½_ç¡|ܧ|mü¾Ÿò7¸N}Z’ÞQeà+àa`Mài`àº÷ò^l¹Œœßª¬<ì­YVŒ¼¸¨‰2;\¿ïQ"Ú8;—žˆ°v€W"ÌàŠ÷¸7À]Ñþßad€…p`„Ï"¼`÷§Èìáh¿¹'À}¾?¾±a>Ž ðj°Éy‹£{€ë|áïn ¶Û÷â%ÀŸ#|¥üžíÙJÔê^0.ÀÉÎ Ÿ´íÖ`íÔ-À•ÊÃ=ÑŽwW~Žu:ï¸/EØ8Ê[€¼ìY˯­àð#e›:þ}ŒVnóßϧ{1>•¶ˆ0Ì_ÉŽãÌ) ÁFsŒ*I[˜"A±p•Þÿû+})l¤ÈØú„/+}ilæ÷üJ}Ä–CØAŸwÕywh›ü[Hz’ÄÀÉ:džÀnúí­ª”ÏnÒ±.•ˆØ8¸A"ã, òDUìû{I¨ä3Ó_#Á°*°³ÆT‰€ÿH„®œ\K*<Ž•8ÛDâ3J@µÎÐØYù}Rç?^çl‹M°÷.p°¼fÖKÎq±ÄÌpã´O^y^ˆ-˜ºpˆÒÎQÚÀé²Í½Àå²åµÉ>CuÌ3%šÿ®cœ'[wÆ‚Qo–KÎ1 XIŸ·ÖçßêFªóÞœ£ë\ 8@i—V¦rñYev¬„äáÒ.˜ð¹#ÀŠö0%§–05ÂvŠ0%Àïô}Z„­tŒÓ#ü7ÀzöŠ\'Ñs±„Àn®’HÛ#ÀYnˆÉuD_D»EøL€X:Âe:ÇNÉ>×H®M¨ÅhËŽäé»E˜`ßËK¼Ä`å3=×׾Х`§^—X&Â1:ÇÑ„d&ñõX€Õ"ìLì…uÉñ7‰&ŽžMŽÝ:˜`ýc„=#<áÙì¶`Ϻö¯ü%Â’Ζ‡3¢ÐqgaçD8uL¶wS…½EaÿT¹"¯Å¡IÚ:Îòn—h{ –ú~-°¬DغUã¨Îä{žŽµ8¶2{ê8Rž—ÖÊ{>9ÝžÀYú@‡ãƒyìpa€Å",àÛh÷&Ǹ;B%ÂѼv8(˜×“h¿=8é›KbáoAk¬Å†ž­û ž¤Ï¢•C"l#ï[»dŸ›£Ùšƒ¢åq…$½s€Ïc2P€&8Ëòpj°¡ñ©è:?˜g”;x'@û$ý‰°úÜËax„SL Ú.;ý>ÚH1ü3Jß#ïWѳ— »ýå+þþ·ºŽ,u;HpäçηERaг±¥&Þ¤ÚÝ—Óë®Cç?µ¾br?s[dr$Þ¢ ÐIž¨bwÖ²òt¡{½I!½ŸŒò|&]i½‚y㈲»DÍø(Q”Ç'GÙ46*{K8T‚Ê[„Cƒ‰‹,Ú_%9çÆFX5Zã%_Eóê¦ù>>ÀÂúüh´Y°Ó˜«_y3LøæÇ#@«¿‰ÖÉs¨ÄæIѺTÓóòv%yÌöDÌ™æ{®X}&r!uG€¡òb­™Û-XZÞ]x~PÒö,Xé›Q]¼‰­W Uϵã8ÎlÏØäpÉ«Câm¹œÚÃhÞ)xMjQXEŠ+J8µ„T`•QX¹ÀˆXWg­eŸu›8ïé%žŸZVîÝû*¥eL-`iŸ¤|ù‰"E•³ˆónà—zÿ~†ÅýLügº†‰É¶Õ%¢XªE’wèSzݧÆÿáMËéñDÚ0½‡§©b\,”Çü«çqŠÞ‡Ëë{K$<®}ÁÂ_ÀžÅTôWÓ;¦µò½«ÄÞÞ:æ,f·žÏ£±ð ô;[Èz26Hiª='§¨a5Ÿl±fb§uýÏêÝð¤ÄN.ÖÒçåTç´Æz‹Ðç¹ÕÈï û6[ÀüÉ9†c½0#°XâǰQÁ¹Xû?àŸº?Ýuœud›•ï:Ym_‹joEo,–{E Ï-1¯þŠÚ· Ö@Û[ÿû¯èxC°êIzúlŠò¿'“0¾W÷|D"Ó×ÜÑú«Å ªÛ{ͬ‡à&©½Ýõ÷FrÓúaÆÅîŒ+uûX¢¢Á‚™P^|ئ6QÙwÂZÚƒJà趃t³‹º}P¬M –U뢾°ýdÙ eí¤>>R7<åBý=£iØí·»ض% ùòÑ:¢Ðbè£B´º¾/[Sð”åyü5P=ë2-rÕQ ©ëñ’B9ëÒë>þkÉõ|SØ6—^&} Ûw+ñ8ž@ûaz í¢—ËË4Œ=[ ÄÞS6¾—$Æ)ÂÙ¡0½C€ÍbA[E袸¡ùR¡áW%SàFÅZ¥ûåa ·/áµûax{´Ö\~¼+¢µ¼òï"|ôBRPýó…ü^•ÄG­¤‘’ô6¸”¾ï­)&v °K€gb5VŽ×kÍ¥×¹w´çƒLñµmԎѦ\¸:žö‹ðzTLl༨nפ{±C€gCµ|çÇ<%µ3[³mâEIi+Áp\aûz¦ÁbýÒQÚ›ê8‹«r>ñr}—¼ÓßVñjr®ñT»ÃŸQýÖWï×tÔíùTG§ÿ1ê;Øhé¿Hdåƒz–‘牤Nì¬w÷ÇIã,urRE†]<œÔ+}õn];Iÿ+6¼•„Â>‰ËGƒ/"OU&_™ü~U3¯ã—Wã9}WŸ”8ª‡êóÂIú]Tci/¡’qƒ÷G&û=Fo&uõNXXHÊ-ªÏ–NêµÎÑÝ’c,‡½sb¡ñ~=§ù|¨rÖ©¤¼¶¥:ú­™ñt–Ûq‚à:. ¿WKcéDð|”\̯t¡Cõ›Ûe„ •÷êXKR¾õâÊËÚ%^”‡e°6pߪK©MÁkp´Tì|5ÜB •¤½ªÊ½¢VÑÓRíHÈJø5hÉ÷14œ·¨¢Îd]K1Þí%å¹¢²0ê4 ít¯OH~sºDT®ûè‚Û7w·—Hèà¨Q®úEx+X+1¯Ü³K˜ ÑÐ>xJS1ÔE`R´iê’`ì>N p^¨DÈã’ šOJÛvÒ¹:&yú0jþ±P\ÖNú^`tÐè×ë§iˆpA°¹©æ×oöðZ„.ÚDøOHŽ –ž\2˜¨Ë,áÓ¨Àv  W4VEÞ±Çó ÷hß'«û |,ÂŽ…©*æ& ò˜%qp;Êy¼Ùj>E¾3{rž`h(¤WHPÊaÀúz—¡ñà©ÔPo¦Aònä ÷yõ®ÈÓ»I` HDK&¯Ì­…ã/­wO>è'¯‡•—)Óû¬‹þwOÞÝ/%õQ~îçäiOYjÃåVÙ(e/‰%ä…QH¬wbê–\(ì)XQZ.êþ«^¥”û’:ð õ¥ÌO5öõr2Ûšj\t7¯¢óï–h‹ò体Ø$gKª3¼Aùó{qlž‹¿žª/z'÷ÕyW~¿ g7@ÐËTÇìXRþ6“¶Ù?¹?˜òÚDUª½¨û4Œ§8„êΟ«A!=ÿÝez †R•:Æ‘„”Øqj‰Ë÷ÉT'nV#ÅýS•³˜ê¬5lW¯zfP<¤Vž—(ÿÌJúX¯Ã5%ûŸ+ý²僫Zt#f„Þ4,=·nèEWy+~Læ‘÷ibé7ãü†ÕS‚±©ô ú+£ïôcÞë޲ýΥ¬„ä©Ô\VŸe05ßj¼¥óí©ê Эb¼oÌXrŒ@‹‚è)}2kàŠ¼$½*Õ€Ü-‡LÞ. kEå%¶0é~zgº×5ì0O_g&ÒZtüZvŽ…kLÎÑ»RȃKêØ”Æ¡µ ÿ Ç5;¨æ§ bƒTùíšxç÷Sü75~»œ<;+ë=Ü^ž÷¨FçûI1$oXO¬««L`QÉ»IÄ5jÜ]›x¶ò¸©1e©ÀêÍk¬s%¦&%Œoä±z»†}Þ‚۟NùíõX¼§FúCI/EïÄ3õAáz÷ÄbšöMÞÉ IT,¤}ë©Æ~NR3^"¨Ì£ØëŠÝ wÉ{@ò^™w©‚WdƒGhØ5·ŠÄõ/h8,­«Þ•·ò£Ô‹c±Ð¥±‰@{HÉ|`@ÿij÷^RONS¯É¼‹áÌ'\îŒÅ çl‡u϶¡|æVÚÞª$GÈ˳~â±ù®,ösU"Ú”jß­Ê×a‰Gçð’<¶U>ëKòxºòÑ+ñ@U y\;­± ï'õý4¬ë3Š}°.ßi%v®Oì•3^÷òßTcÁz(Ï%Âòª3´U¾.9GzOsÎÆº9wÑ÷žX,X:gãú•ÿ§¿›©ŽÎÌäµzùø{,þmSù8ŽãÌé ÿþÿ‘ #2ŒÀpb“ÃÏ0zþÄž¬/Qž ®ªóð»u’Jò ,–èIyN*ÿXÀñhy!îÓïÓ¹÷–'"êÿ…¼ Á¼aë‚>¸žÇ½„Åu=ŽÅ椞µçäÕ˜BãipÀbÅ>IòPY›Ëãô”<>·S}˜{VFÉV£e‡túŠ…tý¯(í!lda*b• 4ž¹›®g´¼c+¯+%ûl k{Zö¸‡†#ÌWżŽÏ(oÑpY¶ŠÎ°™b÷jlþ­°Q‹`æ­³RF© ¥bqµÄÎciÔ¾<6›Ásº—/SઓŸ/„Ū}«m{H\æås]û«ú~>/4jÑ8Žã8³»'ë8`8;¹¬o÷H$ã8í9þÇqYeôÀºŸ+ñŠ@uÒÞWùqVPªHˆ}Ì̉]­uŽ¥TÁ.Ioƒy÷Þ¤<†7Ãæ¶Gó1ÀµèŽu¹¾Dùê*ù´9_R¾:Jò8Š ÝQ¶~‰òAduÊÃhš3.£µDóÊGÈÏt\`9ŽãÌ)ä"iû‘qÍmD*À|Ç7 ã¸ÀrÇqÊ8hKÆd~Mä, ’5ñ®·‰&`ž¢qæOwçáAîŽã8sšÀšBäXþNÆvd?ØT3;£=ðÙ÷âj˜›Ñqf”™éÁªÃæ6™ŒÍbî8Žãü¯¨ÆdBÔ÷¦=Yù4c8®Q0´ã83Y` Áf‡½·ÇÚ²Ù•ÿíð_Çq'ç82Z±‘ÑtwaTê·Dú_xw¡ãüpšë"\6z§/r26´rª›Õqg–yËGŽåßdìÒLwa¦¹ÒÛ‘ñù÷âj¸›Ðq~ u36ü³¶¨ãΔ/¯óolŽ‡Ý¤Žã8³Ç‘OFz)6Iâ4b32+j­a œ§npœÙ‚éY:l}lþÑØÂ‘ùÚD›`• ÄV9¿›†ëþ8Žã8³ ÃÙ•ÈEòe5]D&½ÈøÚ…–ãL-E°µ{úb]…w`“ŸuŦóߨMé8Ž3Ë‹+8–‹É8š]hMð¶d|õ½¸š9Ý…Ê{Bʈ-ü²ß>’ÐqgÖã¸ïÅÖ™dìGTh{9&ð Ãè0¼X#°5åþÚÄ~bKÈü»"Ðqf9š‹ÁZ [Øñi`KÌ{Õƒå8Ž3;p¶ÌípŽ"rb³5Bü>f+û>p~Ʀq„Rïü[l8§-¶ÞÜZÀ7XˆÊ¿iÎìDs¬ï€Ý€5Z ®¶þ-·p°¸›×qœYšŸóÇèÿ±œDÆÀøfšãȈ g™0GÖ;Ø(õÓ€‘úŸK¼ ±ÁSÏÐòx-Ç™¥h®à>§¿–ðð.Ö§ß|&`Çqfqކó6ðÕÏÖˆTȨkvßLòÈ+ §+ðÇÎP÷]Úaƒ§&kÛj@—D~£ýgŽXÓÃXý9ŽãÌNcAB+kÑ~Qbì[ @wa†Md}Öë±p¿Ò¶Äz@^R®ÚóbSý‹ÉrœYžÌMà8ÎÏša óv¦Wy´s,oMÇ/{‡{K,CÕ{ÐKâ ¬Gd€„ÕÀ§ÀGn|gvÀû¶ÇqœÒ<¯Èëõ*ÃéLiawáºÀØ4 ï–¤”ˆ¨.Øü‹ëÆýÒ ïÌ.TÜŽã8Î$­‰LšŽX¬ÿ`s&¾Û‚}MTÁº—u“;.°Çqœ9[·p Ó~´)þ€M2Ú[ÿ}½[Ç–ã8Ž3‰D¾#²Ãyo&LÛà8sƒå8?2áÔ’ié °™qm?Å5þ¯ìè”+›kóqŸ|?ñ¨ã8.°œ9õÝ?c¢bF+ñ2ÁQ™Ž~4q•ñg"¶x<‘ƒÉèß‚ý3"0•59OfÂŒîŽ3?Zå´~‡­/6Œ¶µÞs­€ãþÀîzNMD[\ ŒŽVz¾O½Þ›/':µvFGakT­œ‚­k•‡ú$߿ÆïS”·<'S[e>à|l~•±™ƒÛc X+É#XPåźÖv%yøø Õù¿nÒy/Iê…±uµ¢ò˜ç¯•®óNíÛ8X¸ ¸AǼ_¶Êëž)IÞÃâ¾Ö÷#t¾OdûÓ€åu ‹&yHïåÿak~m¥ô©:VžÇst]óçbË(Ý¥ë\Sçè£ôe¿«cÓ9>•”­•°ùo~­ë,òk,¸õ=àlØöŸ€]€íKÊ[[=à*hnåyÌîóÙ~•ÙJ§è7˜¡>³káÐ Œ öýOØ*dðz´9y®þ/³ü“ò–A«'V’‘ÿŒÐ6ƒ=²ÂD‰‰pn±aê;ûgð†®¡kgë—aó“Áý¹è°“ª¶©ÀIÀ™]ó£C×g¶0JQöϬ¼-m½Ñ»tÿ¡ôNÀß2øðd„?¿«ÀÉul çjç Ðñ;cs¤/˜%å-š*ެ˜=‰VîÎúE¸$ƒ)n©Øò\y~ÿ”Ù‚òÛe0a¦¾]dznmVG½§2„Å1$%Ëqœ”¦…íT™= ïP‰Ÿõ²_ [Ôù+àVý¦­*Ì%|VÅ–B¸x[bí.à^`G,h±NãšÚv5¶èp;a•ÄHläÉÓØJìëèx[b ‡Þ‰­mõ!VYtÖøü†ÄÔ¦Ø<,WbC€W’ ¹xM‚ànoc+íÿV¹<¨kúVAæ,†­Ã¸ÁK¸V¡Ü!òp‹®=‡‹¯£•ÇöÚ§«Òê²ÍK²û=²ûÎ@w㟩{IÜ\%QÕ[¶½]¿[E¶¸.½°±îïí²Ëw:þ$`!ýî3``šîUO½˜»ëÞŽ–mÖ—°ìU([ë`"h—’rwºöÞ*k +màc•±z•ßÛ°eœ6Re<x!³|oŠ ë~˜;Â’Úv%ðT„Í‘nˆfÇ|ò«2+¿ÊàÝh¢jPfbl[à!•ãE2™øìYyOEÔŽÀ&±à)öLŒÔ¹wŽTcb.¥·ÉàÎY´ò6„mòüI\œž™=?+EEyë©“ž½Š}„e2+oo›f0W×fÐ]Çï‘Á#* [¯fVþû„¤– »ê9Ì™KÏí-*k/×GX!³ç‘›Fx6º¾U£‰ñ¹ ­À½Õ¢ ·™ËÏY\ýQÿ‡3” ·590~Ÿ:‘Œþ.®gÆhµ soνT+Üs´Ÿ^ž‡Qí…_Fž©®öµ¶®TÎ…:ö® õ…×ÞT ¹kñ6N¢ yÈV•·¨«¶]¯ åm ÷qUØ)Ϫ"__•:o%­¸Ë±enÔ÷r䕨uy½w6!^îÙ@ÿO”w lb½môyýµ’¨;´ÇGt¼µäBbclrü딟Í$>º&¿ßWžš^òðäùyUbäøG&Bæ/À>ú¼1°§®ï:ªËWäÜ#KþÊþO’6ŸDØfɶVÀGJˆ¥-æ•å!ìl;S‚:/cËëó1:*E»98µ hn pS€¢¼\æ 0)˜§–·è`›`^¬öúmá¡Ç¨ø[´Æî *ÿ ¶`m.<æ{%š0ý¾†ŠpiHìa©1˜ð%ÀáÕüÏàó(A`å!&‹ßX;@Œ&\ómDóxM’W Ù¨]„‡BÆž æ¹#À‰¡á½$À¥ºžLû×x:À!Á<\™öëìÙ!@룂làì«èÍÎ&ǯði”XÖ9z»Ö±Ú`rf–¸Æ '2Œi '6ù7Œ1Çÿ³wÞávÕûÿìssoz/@zHB @(Iè5š‚€ UùŠ  " MT”"E)*ˆ¨"½÷Ð;„4iÞgýþXïæÌÝ÷Üø‘8ïóÜ'9{fOY3{æµÖÌ )KHHXAÔDÿ>i[ªµnMô?Á +)."*cÑ„ý;¾¸ÂÖ{]!^{¬ÑóLéçÿÞ! E\ÆÀ«@ëB»ãb)ªçpiÚZòÈËÐS«KDú²ˆ8ŒãfŒ­¢¼ò2V‰èi·ªp³Ì[D“£°ƒ´ˆq7Âák•‘¦Ó ïwŽÈOMDœß6žÇí•áfË££zUIÛø¾HoŒ-"òú©´S1þ‘Ð\»ñ¢Ò›!­‘îÊÂûß‹ä•k]ÏÂM›y›™›éƇ¡ °‰Á "9¡êo°È¼_a’c€Mr åIþÛÁI(5AÿŒ1©¸Õ!Ò81À=®±2ÌÓûXZ¬˜¼Ü`"–ædê€BøùA¤8À¿CANZ\S(Ã·ƒùœ`õ5x=&]úwiÌ0Ùü›å¸NNÀô»·Á{Áe2Á´ˆVó¨\ãÌ5àh.Òz`(›ï‘LK? °NôüHƒWüÔàÂ4$¯DŒbwFaŒ"4B¬g³ˆQôýŸ×ú%$,sr_\Ïó%ѸX ! «/Î"M–½¥aŠñîÛ•Ç«ïý¸,õ•±H\±.÷4¡ž‹)Âf¦'n>{HZ•')cîGÔ÷™*ú—<Ô„2æeXGZÆ3pSMCï/.´SÑcYD.gãæÍOé¯ ®Ùy³þÃÂï’ÇßuE.K¸¹õ…ø/ê/–õ”±·Á’Ì5y¹)’.-—óxŶÌ`a€êÌ}Œ‘¹¶4'!‹Ké ¼¢XRHoosÓá§2^$!÷W›}Txÿ0¥ßÆ cV[ÛKÉýìr ÎÊÍÜ|^Nts­ v28!ƒûÌÉ<¼·ÁļïärÊ\‹JpÒÙx/Wšo§Déw7ø¨ä¾l“¥œœUøf"§øE"`³ò÷‘³Â ­y쨿'nŽ}='_ÆîÈÕZsu*0ŠÈ¸»Aq–w Îg¸)+Ág-Ã-­¢q'Þïð±} ]'Ÿ©q [žï 1Ü/vzôÞšJk¡¦ÝñN×ÒÂ×j2˜âµÕ"°R§*Ÿ|í¥…î§ÑóÅ”]'Še\€»Ö¬=‹Ë°Tãòh<˜¤18^@·­§ŒÓ¢ù¤™Æï–ÊwŽž-P² eX¨zæóBWå·Deë®ña Õ½’?Vžíë)ãtü"ïxþl¥:~ªÿO«P‡©ª÷”ÂÜJsÈ8*ûjvR›,ÖÙ/£[´¦É±”;Rk”Øè$í»³&\Õ!ß©áÀ‘™–—ä¸TÏ1ÿ¸w6°Ì5W¯+ß…QZ_×{-§üyE¥\s4 sÓ]ˆIbÞ–Y$’¬ö ØXfi´Êrœùf´ `RÝÅR%ùyÿ˜__œR¹£mŽ»¼›Áúšeõ턦‘«C£»"Cã1våB¦púJÑ^µÇ] æè÷iÆ?Q[ÿDÚõ4öQW˜¨Iýß"gág:+ÎËš¤kp¿ÀÙøÂæ$[¶Ç7V܇/¼ZPv_™+ ü!¸‹DÅÊs†Þ¥…`ký;·| 9ºFcñEZdwRØ ’i;Ü ãzà¹ÍpÇE¸«Àö¸¿+úÿYŽŽÆ×?Jž ´P¦ùgà·À¥ªß•¸ÛÎÛçKŽïklzDòŒû8»#E’öÀ5×”^ÀÇÅž¸ÏîÝCUæÙ¸Ïð¸‹É@» ›¢ÿ_‡k¥›ã® Ûh±Ý_ëU|ÃV•zïNêpíú®jLJIF§iÚ…­$‡I"g]%û£U†$¿~"`“Ô¯îÀýBWI‚5_ª¿:hŒÀä•Çxu„f H&Ô•µ+iOÜÁýïbÉ9sŸÕÄ2®©Ž¶¨Ð>-£Áˆ´usô¼Të©Î²2äØY«„ù…¹°­òh®Apºä;R~Œ´k‹ô,ßTÐ_ƒ_Þ6348Ü­´‡êcß½1‚¥2¶Ú˜SŠ®šÙÐË%˜`Aææ»\ŽÛ˜›×i jÊ]hÃ%—óLÄÑ`+ilÞÚ[yÀoo°{‡\]‚D@ú“Dìv28,sMÞ¸oׯÀ±Ú1ÀZ¥²ŒvÅ͘×­ Zè_ry—ö©:À’h ]mî`?%x›tËWYY–Ý2ÄÑD°e€¿g°¡yÞИpDž&e2AÆGFhçâ‚’“Ðu5 Ÿ,5h•ù=v£[úprµ N¶­AråÚ«¥ÛqVâ9WÕÒ2l¤EÖ‘¥ô×EcHî{yº&¼‹¤ß\‹Ñ—qßÎ=4¤oÿ1u§þ¸oíθû„É"°@„¦·&Ðî"Çâ®s5ÎõÅ6Ÿà¾½¿Õ¸t«&gTÆ5(»[tyX¦ÿ ²7Bdç•íU…·ÃMòƒ”÷÷ðMZFm—–µÝ;"X%•ñ»"JVÙniZCñΩÚTŸZ{}Ów¨žÓ•îÖøÎîC5ÖMU[uÂ}1÷C»„qÿJ‹4FÔîs¸;ij’ii÷NWØe"‘׋ªç›ŸNÔœ0Tó@k»Ür±›Æ³‘*ï"U…¾µ­,S_+¬¶êg?©kû7×DsäRüRmp©d=xE:{S–±&(¬ áTЀ\GÝÝd»T •!Ô>E*À>…ç—?[Iy Nz¿&á»ôñtlâûù¤=°ðü—”ÝQ+ãUÔ5Çm.Æ_©l9Ûzž› ÏOÓªÕWýîÈ)<'²#ÔÙÃw®ý1ÔöÇ»DÌýˆc­2~â-6—Á°RmÍÌ æƒG\)“,n˜ nµò Fæƒ÷›\Ÿ9áÉ…ˆÞ·Ú‚ÛJæhà?¼‘ûj•`¡9ÉÙXéù X“•7"Üž›ÃJ>XŸ*ù]¡c þ ŸÀÒx­ |ÊZá=3x:ƒû2¸K¤hHd>h“Aßø+óUõ©*×Úœˆ´y‡[dÖ‘¼WƒÕ=úM%9SWÎÏâ>_m""ÜL2ÛN60ìî‘ùr¬ùB&ayO5g³ p/Ùg¦¿†¾ÿ9̧¿`£X™‡ˆÎö×'»@]"_Tž¬É|”Æ‚Z<æ.ÿ‘¶á:Ê&óE"4¹ÙýP§—(ÞKz)îš¿wcØ9Òú[dEù&~<ÎášhDšù Âò'Í'»Šä-ÓßÇ"]U"±ÇDš ´fŠ Þ&ÂP© {Š@æ‹ìÍ5t¡¼Óy!¾ù訌‹UÏßiÌíªú|S2X¦üÏWoA+–qžê5IDcŒ4Ey[üV2ž$2³¤BŽÔ"ú'"J T¶Åú»NmÔßèvPÔ–³ÕV¹%â|ãRn²¼Um+#Ú‰ "-T¼ù8ÉéO”M´WDe=Qv~TÆ…j£ó¿ŒO´Ÿ˜ç”m•1º‰\JÝ-ùhŰŸÔ‡ý*¼û^Ô»ˆí^Uˆ7XåvÒêÑGá{ˆÍϤ9Ø(2=MãÍÑZûj;eÇÚ¤ÍÔÀC Ú¿j”Ýõ» ?:bŸB½ÔhÇQסý(­DòIj3u¨Ý ¦]5AÉXî¼~–æËvš¬n)Ä(YìAÙÇ FwuÄÓ£•ZŽƒ%Ÿ­õ{•q¿hÂÃ/R‡Þ3ÒJÎËÉ…Ú~\Ô.ͤ"¾4jó…ÒŠÄšú8/ŠVj¹£ôžÁÝs§ôõ|lå$wPßV»ë˹:O£]€‚L€]µ;ï´Â*¡¯v¢oBßwY´“ÑÜAý)ÓŠ+À· ^5XOΊ·*-¾¶Á‡9™08A» ̆ϸ>¸fªZ»óî×û-L4_•çåº9À%QŽî ¾‰~oe.§\nÃ帾WT¦IÁ'A 4˜.b‡Áƒ©:&#&›ƒÌ˲‹6š¸Öœ4õQÜý Þ7? ¢Z;6ÿÉñçX: ¹éõÙ¿‡Éi½ñÝ‚gógj£Á_héZOGãE%œEy3K%ìTÐFäXLíF¹ö¬xYtG-ë»K±FóÊÈÂóD:ŠZ”5(û‡Åæ©W(o–*¢·ÈD§zdôŒæ‹·¨}J<7ý½BØÆš·[žwÖ8c¨Æî–¬L_+<«¢|>f<ŽC›YêQæ\ºk‹L¶-<ï ù²F„¨8ß +”µo´+^ìáG UOúEüJó󗆶­Ç“âÌŽÂ+9SßSH£xžÍMú‹Ä†/-L¨ƒ ïÿºð~ËBøkÊpBÄòçˆÕÇø[!"¹8´¾·žw±1©F[âvÿ<^¼ó2~B…2­ú/VÇ>¤þ‡BE­\_ÜοHiÜTø¨×,¼{eëÍgáÓ+”ñð(ý…”wøå8H$j‘TÊ‹Ed{kÕ“ç›ïVÌóÚ8Z‰<©r,Ãý5®*ô‡Ñ{ó*,Á nî[Ü©ú蘄8I„ÆÌ‰Ëæ±v%8Yx×\#6#ÀØP^ )øPÌ3­œö¶›é˜3øM€Le8ÑÜìµÔà¶àÿn¥³³¹)p¡ÁËŸÄÇ@hà•qQ€û ºj—ã-*Û,ƒ~:z"/ï÷£4Ž3X*9Í åãCr9î®|ל¬çè= >hàϪã2+ÉÐ+’±™üÀBí<.Ò‘‹Lšü0’ãžëÌRžµºjB}úö³Ù)Ú ØØnÁ¥Œ’ßã_x ¿(‚ÕNcGß&”áó¬µðkŠhE ó°à IDATVG™ÛZkü¿p9Öî2V7¡Œ•VîoÕ3Ùç%X[ãþµ-Pî̪G6Ek̓¹@óPÞ~OÇÚøFð¥¬/=ëÑN­LôZäÐ{ßïÎq(ãò•±ç ¦¿Æç™O ÎØ½‹sMcs‘Õ~Ö«§)ÛfC¤+…‚Æ7ÔÛ»¡|‚“ª®+"§åQÉŽ wC[‚›ú¬˜~¨­õëA…6HøœÈÉѹ cÆÙ ’« ‚5“SÕ翜{¿(‚•ï÷Ø Büª•D°öÀM‰U_0ÁÊÒü÷«n"ÁÚJZ¶JùfMÔ`-EšõFäøy Öê­ëy¯“ÑÝ#íÛŸµx¿–²槸yy n"ýåÝ€*§J.U(ïJ%X_µ»S'Á~'ØÄU`xœ°‚ïÈ l-]Ie\QÇú?OgΨåç3!ŸÌKMüâ÷Kê+ÑïzÓ)-ÇÇ”ïa.A(¹©ºN9¬Bâ|¢ßÓ2?œ³ÉĤT·žò<ã{ÿ¢£&”0JË1°däUò£/&çõLG0¬œœÍwXƳdžl‘XÆfœÇDÎdU?ëÊpÇöm+hCn\IyŒ“f'TÐl}}%Öe/ÜmæiazPÙM§¾1ºo2´—ÊÙ¼P¡>kQ>|E1™ò?1Fâ~\3¥Áʵhs(2þ"å]ç;⛓~%²¸I4Œ½^ ŸwˆL.Z sí*E°Vz§.}Éï7•d-Oxcejê%Ë¥±ëðœmð ;;â’r”4ù¦‰{i…2~¬ ¼uÆ}EÄi_‘°{q¿¬ø¬¼E"GªŒ¥ -÷¦ÊÐ:ÒžTá»ÅSz%|Ôi’W³B¼üè…⦟·Dœò2>ŒköfDq–ˆðxwfKHHHHø¢ðyÝpOO¢KHø*`_|+æQõ„Wá7”ÿw³¨¿îIt õãkøÚÿR÷€³*üä•o$1%$$$$$$$8š²‹ð?øf3ñ³.Ž¢|ÿ¸¢º?~Òìøù MÄÆøÁlâ‡Uá§§NÂ7ûžŠ›G%Q%$$$$$$$4Žjüöê€_9ï@Ü¿F G{üÖÁId •‘áÎîïâš«õ£°6Ô½<ü8þ]“èêb¾KðC\SU¼zjß»î×õ!~gBBBBBBBBB{WRÿ¤]€×€_ã·doŽû`ý%‰.!!!!!!!áó£7p#~³õÀ I$ +ÍIWï$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$|qú[Ñ4¬ðÌêù?â5¥ ÖHþTHÖ£ÖH¬BVO¾•syä`_@›ÛrÊ÷‹È{EÊ`â†å|¿)ÏBVQ4tnU~2{oý^¢g%ý~¿ ðu¥÷o`S`4°PáíñSá;÷)ü“(¿ÀÀ-À” åéܼU!¼ð  5ð´þ}Vχ*Î2ãÍôû5`:°­êTÏ…OÕ³’Ê·.ð~î×+Àø ÀàuØÈ2xмžÏ`C`M"K3^Òï§K0N“ÉÀ^@‹ þm0\ÿ¶vÈ˘Á+—qðp +^|¸=ƒ ñä•ù¿Ã ¶ËüBî—š žê°væõ\Œ6œ¹Ì—d^“yûª^0Pòû'óIqý v4økÉË÷ÙdYò2llg°øo#2¿Hœ¨_S;U™¾ óvGòz¤äu'x^{gp[“(÷‘m®*ÃbTF¥wæßæåÞ×`Z܇ $kû Ö4¸=Ï7!!!aUF{à)|Ò¹Ü \Ž‚)Þ&ø {-p‰HÉÀš1zNïþxp‡ò»\<àèzʳ¯Âo¬¶ð1p3p2ð¾â.žþ€ß«øpp—êö"Y¿þ¡ÿ_\­²®¥<.žNÄ'‹&L3¸ÄàìãÍ'×µ î4ø‡ÁÕ^ ð_ƒ?x1À™šh'k pÁ¤ô284Àlƒß¸5À§þàÊC™à”àùž[Ô*àã£Ü`©y½òðm|bpyðòÍ ð„&} Ú™ž§üÌà©S ®)äsk ~eQÃuÁ‡çø•åÔBáC ¦¸Æàtƒ”ÖÚ…t¦™·süìƒ .3¸Ë\6W¸^eî Í˹Þ pªÁMj«™-8 U¹þɱm€ÇÜ : ð/ƒ+¼gp´ÁÅŠó‡9ì« ºG€»ƒ“@ þdŠg>ÁŸ¥ÿÿ=ÀùÑ$õsRÕ;À· ^Tºƒ > Ò™¦ÞÑ{ÿ6ŸŸŠ…dÐSÄkûèÙÁÉ&Ú¼àȨ¿3'‚ƒ ,Ò)Î$ƒkCDNL5ø‹©>ñên°,À–QÜÓ4A·Ð<À|ƒc£ðá*÷€èYWΙ­¨M°þ¢¼¶ ®íÁœ<¼$‚´YpBÑ%zïŸæd²Mü—øk€‰‘¼ÚÒïæ²ÎÉçë ^®Þzv‹¹Æƒó N‰òj©~û^¤ÏàIÅbðé¢wóöîÅ}МèÝ_ XrmV€÷Mý?À“9ÁÒï"‹*™ ªÕ?^5X? Ë «2|உy7]ôÚJCôF὎ÒðtÒïq":1^ÃMm9zã“F`¬Ò.’¨Ñ¸©o!Ñd ¼Yˆß\DmÐ9"FGISVÂ'æÊ«¿Â‡ï"mŠ4càäæŒB·»k’øù=Œ1ñèjð´&åÁ'Ã*ƒëƒ—s³G'­Ìß Ð1"#ÍÍÍoÝ ZËüH€ÌµF­ô{}+ƒÎšd{L–™+OïwîÉ ü4ÕË`·œÄYí‰òN”–Òú (hÑÄÿ^×`v€ ‚“‡æ‘væþ^˜@ûï'•/Å Éo´• ;GŒð€ÁþQüö9Q0ØÉ\CTcPÊåg𤹖3Öâ 7ײ~F< 2—í<™Á07Óõ ÞŽ5"G#•Fo‘Ô®¦¾opB€‹¤µj {”çÖó|Ó¼OæÏ[ Öû½ƒÒ<½Ì‰èºŠÛNdvPD¾[ª,5ÍüÝ\û›ÜQ=÷ðf€+Í¿üy+·óÐàZÄ– õ·nÞ5èaN¢:+NUI<@ks-Ù†ú=(O+_H¸Ú\Ó¶{q °—Hݹ¡öB.!!!á+Ra†›`–UÌI[HçÜßj&îS…|3"l›ßrôÇ5DìºT X]÷DΆFaC)LÚÀ"Üô÷® ˜^¡óɪÇ{õÈà •pw!ìû¸ol›’„iÀîs2˜\*û£Å vJærêLÎ`AîhyFe0/÷ŠG øZA¿» 2—åtiÚò¸C‰Ì«R£ÜüZáë‹DæìmžÎw2˜›Á*Ó4‹ÜàVà—‘3߯È7-sbÐ*+ç9¸¡@Ð>P ƒ­ þœ—AþZsp"8%ªûÞ¸oÜSûäé•`V)ò/Êë™Aˆä·0&îü™kjwÈgK ogîKG–Á¸R…o¢JÞÖÓÔ¦Åð¹%ø0Ês\Ãö–yÿÊë¼0ƒ×ëYñ¼”ÁÂRaAõ…×3X ²,®ðþ‡|jµåø Nä÷ Ü÷æf¾Ð¨T†×3×ztÏ`V“eæë)?¯e¥Úßw\Æ·JêçÂפ"‹Ú2”óÛ×’½”ÁÎ…o,!!!a•$XMA'‹4Gí56QšOÙ9¹JáKˆV±"j/+¸³wQ+Ö\i=DÙ+Sz“+”möJ‹;D„)G®aku“;ï¶AÌIA>±Ïlb]€YøÄDæf‘ö¸T‹¦øˆÄô!Ãବé«1':æq Zg^îƒfæþISó:d®Åë`nžifÐEdqIMš%ÿ=7š´7qXhîXÝNÏkpççc9V‚éÒŠ´9$«M>-ÕvÏÙÅà± •3|“:²A{¨ZŽ÷™;“ϰr¾Íƒ©.›|ßÞvÀÝLÍ`í GøÏ«jþœñwÍ`LæšË’cVaà3ý8=zè›-¶Ác¾Q¦¼Dm Ü“ÁæVxÐJHHHXÖtÜ,—»ÃÍ-ãZ‡6”MnkãäÏç‰4•D˜šã¦³4R{ÍpsP Ü„Ò\sô§Ò”­ìºå˜¡¼;GÏ.î8ÔIʼÌÉÍgNå"1Õ%štüÁÇ"8¹ŸË™k›žÍܬª‰“Öv8:Xrf¾£q1®5X+Šþ3ÜìúXëeN®ºEáûgn}V$æ£ÌÉRu…íùUÚaØ\;&[dN¨¶SÙã="MQN´j¤…›c‘#2XÉj} :sóí:¸™¬_å3+syt)Nôù.9a$NÁÝ ”w#®0‚“öÞZì!ÿí¿Ìßœµz›k7[‡åôq2ØFýá`‘çÍ–SõSq¾s´sì@\#ÖAýv+Ü̺I¶þÖ;¸Æ"ŸïÆw¶×ÊŠ´½þpîs§ÂJ¸‰¤-î0póIŒ¯K ¶ƒ4J½49 ²v`!~sÜl8x%Éé•!ÇÙÊãvižî77IigºÈA¼mcBÎÜäºV­¤Qy¸@“𘬲™6ž¨rl›9Á‘¹fjhÄ!žÉ¢]¿•ߨK¯››tvŒÂo®Ôϧ3ßÅÕÌ äD“knfliîG×U„a!2=)ÍчÇr ÐÇÊ&ÚGðŸ:¸?ÐAäÐ|ËþTÜl·.ðINâ!93™£:l‚o²ÈŸí!B¸£´jý³Ú×!6àuiaNn¶Ì|‘°Ï—üíÕâdÝÌ¿¿Y¨†ú[[ÈÇn„[,ÏûZM1š9IžcN¶r¬Ÿùâe ´ˆÓ²ÚßaBBBÂ*6¸ãú.…ç­ðÝFñÑ 7ãfƒ\[r.~„C®Å:' ùj·î7³F4ðTÈg6ò¿fæeÊNò-p‚rZ=ëV “?ih^O=· lWx¾“ê”ï´ÚRäỹFBÎÐË) °g(ÔCŽâ7|§°c­ÚÜùŒP>ëRmiXHc˜œÜ;¶´— ¦‡òn­ÞæÇ>´Öï~‹Md$@+«+•_ûï|;"w7ßtîàýKƒÉOõ|ØàTÅïoîdßJ¿w ~|Æg %0"?®ÀàØ|§^p-ÊÌ ]Ÿ’ÍærدVš·× æi^eŽî0Ø-¸C{›xRWzh÷Z÷ s¢žÇ™mÚ1+çô× ú„Úònà>s ±öRiV8Ñàס|fYîßöµà»rógG„‚ï˜Ò`¾‹p͸Q~]t¤Å•LpÂþƒo…‚•ÏàW=fpapó{ñ€Ú-ÔÚž×èÈþÊk ùYc5…|:jâÐ"Ù5ßQø‹¨Ü ¾°ÈÃO Ñ®bƒ³âÍ «:šãïbÜ¡ýâBø¸Óí]ú{Iä&'Lq§âqçg)¡Ðwp5à!3¥5¸I¿/Ó*ù`ý~™2ù¬|Gã&È—ã º›qÇÝéh7]'Fe{„º;ÏSýÿ€Ÿ«eh7`®Y1ß‘u‹v ¾bòŠÈÈsÒôfˆµTxßàg&Ý+²õB€yù|åñCçdäG 謭1ò—:E“ø Š÷Pnv p@ð£®ÓyVSãlæäã=óÝ~£unÒXsd¾kívƒ±:çé)qÐÊ`Á+ÚR@p‚q™Êts”ÆþÁ»ÿ¬ó›^ Ñ™hæç`½¦Ý‹×Oó; ûŽêôºä5Èàmåy`”Æ:cl©¹ƒtuab?ÙààgYý'øÑ }D2ÿ®2ÿZ»¿£ã6^ˆÎâª6xHçU½\k[$G·'SÌßÍóÞ,8™oN4[›Ë4ϳ…ˆå.O¨¾9ÚG鬩]’f~VÙ á%sÍêµãÕQÙ¾¡óµ&l çôçU†££]‚'èXм¿åmØCr5ƒŸèÙIj‡ûrBhÐ)¸ÆÐÌ7$ü$/›Ž°°à‡Ü®i~èë$ƒÁ‰ùHs2>%À¦ÖÞgMg°U¥¡9!!ᫌ¬‰qzK딉h}\ˆÓžòQ cqsÊ´h1ÝBDl ü”õÜÌSÂcÃw‹}Š“†\Û5 ÷}*)ߩʫžå&Hôlˆâ?«°XéЃZÇêh º¨Ü&"7±ð~•Ýú¸Ép>n\PÞ'U™—azž™ê;Tgø)ãæ½ß?w¨UÏ´”ô2‘ƒNæ)Ëü¨€I%߯ß,s¡á¾V3ð ­•×G™NÀÖFCñÉ‚¼gG'¹wÂO"Ÿïl¡S·-ò³ê'9¼ŒË`‘9_ü ³2×u“©Ò€)%Õü ÇwÌ=/ó#‘¬:è”õ6¸isjæk‡¬L|?–Y®¥œy{`^ŽšHNb'yi »ã'åO^ÍœˆT™Ÿbž,Òi÷íñV3íú\¬I{›¾ 9þO‰5H™ûfц‡\K×pŽ›å˜ïЬªvl“y{ü?5‹v¢ªÍ{Xù»œ[ŠnFƪ·úN,-I£\†%ï©xœ5ô{>~¾ò‰j•˘¨„Õùw›Áü̵ŽùŽÑ¼¿-ÕÉ÷=Õ×3ƒù%?tjï0bîW×E2›©²äÇSLSÿ]Cá 3˜ž¥ñ;!!!aõG¨ð;¬`_v™›n+XæJ÷%Úr¾³¢H§'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$¬v8?˜q°_GBBBBBBBBeŒÄ¯éÞ@œøEÁ÷á—½þ?I|Í$¾„„„„„„„„ºè‰ßí7øY…ð ¿Œõ†èY7àHüJ„„„„„„„„„zHÔP`~©sß(¬7nl®çC“¸šŽjàjüÂÙãñ h7ÞžÑz¿zû$®„„„„„D`k`sÜ%!aµÅ7ÅÀ߀fÀ¦øÝ¹ãš.€½pmW÷$®„„„„„Ûïtà àzàAà6 U_Âê†6À¿¥"S96Æ5…øO#’Ø 8HsÉå@U=qŽ>Å}z¾Lº&ñ%¬.hˆ¿ð/ }!|-à½è#Èñ°M_BBBBB Ư;â.'9:ï›éwÚ0•°ZâÀ Àn ĹxD䫸­Vë$¾„„„„„zP |˜ üè¥ç›ŠxýDóÏËøqAUId «²ÂÊ¢>ü÷Å2àq S]BBBBBÐ ß¡þ®æ›­5—< À z ¸#‰*á­€vI MÄæÀ³À+¸©`+|3Uq¿ß„„„„„„„„„ hïœ CmÿÞ ðÍSE<.ò•PÀ–À\ÜìWé8ŸÖ¸FkÏèYWàC`í$¾„„„„„„„„ºØøA#qöÄ­>wvÿ81‰.aUB–DðÄü<Åð(î«•°* üÊ׾ĺ…Õ¤> + Í ¯¢~?­e4|iИXÕÀx¹,úágiÍ«'~Ii™Ò.á÷YÅïçå Q+…/Õÿ—VG¦÷Jú×*”q~ã}+`a=sN\‡8JeúË i•ð-Îó—£-‹õl ,j`^¬QØÒúM\Æ’þmj[åPµÉŠô·@YhÍLeÌÊe\fÐ,«Ö¿áçÌlÅÝPï_Õ©ž v¬D‘œ^U¸ø#° 0]y> |¤v~D2Ïe½.pž½\§òtFëÇðspžSßùØ8Gù>ª÷_‹þV4aà5ƒW¼`py€Ø.À4ƒ‡ ž2˜bðx€‡¼ Ÿ&ôÍ ž0x=À3¯üÔ ZéJïo[(ÇTÆ¿Ö#³ï‰\N®@Lži_%ô´ÈGÅù±ÈU=¢2\TÐêL‘LãmÎ;*nK`ýÉ€‘QÜ}DDgÔS‡ø5•4‰ßI¤2Ö\~©ê¾PeØQi R›°žäððsÉ +p‹Âû¨MÖ‘ ^TY;«ïÜ*‚×SÄóBýÿ§êoØ'Àûë´$gê IDAT °N€E78Hd E€m, °žA§àÏ7Ò;Ó ­ÁPƒYN NÞ°i€~8Ø «Á=æ‹„œ”ÌÓŸi…Ëj  ð¼AƒÖ(ÿ-¾¶HÉNmEtÌ|Á’›·ü:@gó¿ß(NQ>ýU—ùTŠ'‹„öS75׎ýBª¬ÍL °¹¹ú˜!™Eå¸C$õ¶èY?ƒ…Ö 0Häsd€&©x·”ÍZ]ðCä¶i•ã$MÊ1Ö—†©ÒŸUo«¼†kï‹0æè+‚Ñ[¿Ÿ‘†$ÖÞ-Vybâñ.~’ð+‘ö,&Q×âZŒ¥Ê7ÇHüš‡;OJƒÕ^¤g½Bœ_‹HdQ¹û)¯Ü¢Ô^¤`M‘ž5#R_aôàGŠÓ«B»ï/ÍÚ;”o³Gmò2~µEŒ³?©¾ßÔ³õÔ&9yü¶þ=_ä0Ææ’W;`wiÐZˆ€nɯ'04j³³DàijP ®)Ù5Ö$8Å\󴆹æ‘›E&-ªI+ið{s Zþn)À Áì …AÁy5׎õÞà-ƒÿ†aðB^Fýn'²·¹~ßiNZóðjƒ7ƒÚ8¸6mb„¬k0/DýÜà¨×|b~:vž^ƒ÷¬¬±Ëã_\KH€{ƒ/”ÊvCøapV¦çíƒká¶2x#H{&»Þim0.芓{¬`xðrUEš½šŲ1ØÂ`–ÁUVîG « Š«b‚U 1Á*b3io–«Gö2p\!~°—þð‡Bx&"Ô 7Û=¤:Äøº^sàSꮎ÷¡l¾Ÿ Þˆ4j*ÒÇEZ>(¶S€ßWé¶*ëÚªgÛBœD£ÈÏë"O×#Ë"Á*â!Ô÷D‹¸×ÄÜ*B”£›HWçBün">1Š+LJÀáä¶oáY‘`UBL°rÐÆ\ëÒ=Ô~Þ)̽9Á µÍÔ×” ƒ ­LìògµVôü3²bð§ç…H+kÐZfÊž¸¯‰´›ûŠmSß)HöÁÍ’?)Ÿ’Õ>ùšà&ÄÃ<’D½³A€g ZZíø½ÍµŽø4¸†2®[Û;çùŠÔ½®øï *ȽÁŠÒ:Úà¦B0פuŒÒ8×`L€ïã'$$$|ÕµT_ Ä}k2MÌq3[nòx©î–Is2¶n¸I.×úL¢®3ù¿õoÜöI!üŸ…ß½p¿-”^wi´bY®Ì‘hÜ™)îÛ…ôSösê‰ûM¡'SÛܸ9î_¶@riÆò;þöîniÿn*„MÏ¦á“ø)Qg*ïSõ×”¾Ö^íc©ä´2ÐÃ`NæŸMÚ%/÷“±ÃuÌÄ£NÓJ¤üx"Ï\cùYÇjètÞÈ¡{ï̵¯sqmÔÔ˜k]Keõçíz¯3N–ÆÂïW}2 s¦o"r°È×*ƒ 27_îfƒ|Ttª/¹Kæýx©ú@\ï9¸?X¾Ã¡g&MZæå홹&ö3•n%Ÿ)Õ¡»iQ•Eñs g.çÌIãu™kÏKk•G } ¹_è" ZÍŸ¿Ò7²Ÿšz‰žçknÖ8t,å OK´Ø4ÍWDcé×µ;B‹Ó"ÀÝà.Çê¼› ÕwÓ×Ô÷Å}l?Rø–x¿lœ†/ÎNÑ¢=Ÿ~­Ïǵü§áV•#s£p׈JcöµJç® áßPgâŠÍU—%Ñ"ø7¸ÛÉÝšCÖÄ]|r¦÷áÑœÓCem+9/Tûeš3ý½%Ÿ+‰Ü"TKò6îöRDgàbÉû¿ÀR.<„£UšÃS¶pM”Lçê÷’á µÉøøqœ” ¨5Q»÷ þFýmôçí쥯À—áæÄçq_•q¸ÿPN¤–4Iñ{¦´Ué/@óq|G܇êÜä°ˆò®¶¼S]«IÿÊþ3›IËÔŸD6)䳕HÚR§!]TÐ6}wxÿ°½:kóFÚ£×ä¤ln…24†­pÓê|Üy|Cu|¢¤ƒ´‰Ï‹|æZµùQÇü7Úh|Gãèî£_Ô¢t;ÜzP[3úhL~Mcï^¸%e ‘ñ%¸ þMÜrpdaŒù¾ÆÉ‘Êr"®]¾ßls3°eÍû^øF›D&NÀ-5]#òöî›{âŒò_[ ý‰Ò¸_ˆ 1Õ|±W=2¦úS!ìǸµá ÜÊ4Fã|>÷¬'2ðMZCqå¾…!ñxÜb[LÖ~ˆ[&á~¿ã57üÒv ƒÕvÇ×S‡æ¸é*„õñj)24÷Oî­ºì»ñ|"Y½ƒ/z‰dy>p¦æì;Õ&;Kéq”Ío‹HÍ¡>÷MÍM¯IÙÓUŠ€ ´ÉJÅi"¬RÚÏQöýùsþàšÂ;-ÅNQƒÝ_!Í¯§·&êô'J »GZ˜!ú;ÜaÛð…ùx~4icÔ·òü´P£Åº_¡ìÄÿƒÂÊc¨V#©CwU½;ÒŠv\á~j¯(í{•×…ä܉ð"±ûÑ’Ù;ÔöÃú®»»gž:)4Þ§îå¬P×ÄWŸ‰ð)­Pc´Åý¸Š«Üå2ŠD• ÆX XƒbqMäµ|°¢¸Ï›¨y¼¯™?û—E&ÜúL„JcOƒ¹Á5G£ vN >x £Ár0ÿ±Â§EfÊÌÜÉý“ S¸ߟ – ±¥ñsŸ¦ã æÜà^sgûá 료­ äf Ó7n0Ñjû bÐ;Dƒ¼Á¿ƒïþà•à‹†¢,*š|+8qŠ}À²û›Ìõ[ɱ~´Áè ÍË„Uíð]Ú9ž¤¼{öbiN¾ýÓ)ßA8ßÐr@4×l-:«5.·‰´æ“ñMK7W -˨í걿Æý¶çGsz¶LÚ·¶š„÷,,œ§SÞ1}uA[³¥Òߪ0W½©ùìžzŸ¿’Öl^ÍÖ<Ê»åÑXú˜æÈæÀ}ÒBÅxMòË¢ñ6ˆ¤Å÷=nɶ“â´ÆòØ…àTÕ·¾£}†K^s©í\-eÆy…øÏkNÝ-Òˆ ”V=Ÿ“’æk{Yâ9ïG’u÷ÈB’iÏçúËe±9+RVœèŸ|EIì|»âü´ÂDI¡s½PA’iâÎÒ÷¦¶9m˜ߢ¾Y´ðí.R°SÞJ«†>jÌ— äðx‘ª^чðË‚ÊÖ üx‘ĵ^4ùWÃtó‹kòŽ1«ð1_¢¡•ÈßÝ"©1nSãçªæ—¤>ï&öþZ=ªÖ@]_)p“æÏDÖÖÄïö…ß"2Û^Ò¿(“*iþŠm|‘CvôáÏ¢öfô!Ì-|»U°úTéÞ¼þt¦TÇ€o >A_ G[˜?ûKôÁª¥EÑ?CZ™ü,«—M¦ÒPÖ²drkÉôÎ…3w^ok~üÁµ¹¸Á"rhðuí”ËÜO¾».Óï~ò‰ÊIW¾ão@”ÆÐYää,þ[íÜkonÚ;Bq[x0'tQÿ2ïœaµ'B‚×ëéè÷ƒ¬`Dˆ¾‰HÎÍÍwu®WxÞÕüè‰= Ú«7 6Uœø¹æª}€+­ò$”°êi±*-¤Úˆµˆ´§ñBª: Ë­;áD½&Z°åX_ ÑNš{â‰} nΊÑ1šÌOÄMUEEÃEÒšl,Ь@®‹ÊðeÓT޵ý¥j#¢Õ¹Bž÷i.™_°Z'KLŒ>Ò¶5Ó<ôf¡ÞH‹s`ô{i‡6Uù"τϠÝõùæÚ»Aˤ@¦¹x‹ m~ŽˆâXj/v;i^**v‘6²*’ç†"X¹†0/ÛsÔöFsä…þÖRV¨áú[ÞŽ¿¢ìó]Ce?畎C¥b;—ªVØS“ï"HEl¦UÄx¥3çœìlªg{Hí»Té_ª¶Ñ¤û2‘Ó®V ð h]­bîˆ>ºý4±ï#r4÷7é‘—¤n¢N`ʯJêÐY”¥G¨³ªØÚçcõù¹ jÜ_H{´Þ3i‘ZG«…ÙPú©CNÕÓVÚªW);ã®4vŽ>ˆÎRéšÊÜ=úPvŽž£UÖsâ&íµù·Õ7S¹nÖÀÔ+RÏPgî§Õå§‘Dÿÿ™Úãpêšo/—|‡‰p‹Ê”ãÛ¸þYõ|¬{kUrKQ… o€ƒ[°¶Á‰:c*ÞE××àøK|Ï4Eé?Òš¬cpŽH8¥Ï!ÁÍcç[tœ‡ŽFxY»÷ZhgÜÁ5BEĘª]y›èœ©`ª«â¼¨¢3®Žò?[çpmg¾#olVWGK̑ɱ$’uWpÛzxp ×éÁ…8?Àä ¶ÖÆ€× ® 0Àà(m ØB;+`0'×rl\kwXÐä(Síárêÿ¹Éï&"³ûi÷ä÷$›ëtæU«=‚ïÀü‡A;sSéùæ Iça­ø\›Y (¬ßÔ[-2oTù¸ *âúÌ]ˆ ÜHý.ý4ÇtlD#eË´à-î$o­…uGÕåÿ"Róên‹±HbM#e8MΧäT]!N‘`Ä/ã¦ÜѹFê|ñûh QhÕ„þR$X95¢ü¡‚U ¿jD¦Ë­™jJ¡vWã®û0±‡ȇR«±­è_J+×l¬%uëíÒòäó*}8£pž>´3¥:ŒëŸÅÊ÷—6åu±äÅ‘&è[šðWC_;‚Ûîwy»XéÿJ¤n-‘›# T­TvÚß%ØCy0n{ï}Ô£pþé"z{ˆ äe|Qù÷ÁµÝô{¼ž­)uú å±–êÛü{‹þ^Ädí¨ ó2®¥ßƒ•g;‘¶E[*N‘Èç)›wÞTº]Uƾꬱ6o# ×Ú0VÝþIdý§"ÊW”ݤ.ï!VÔxî!òù‰T¼ŸiMJÞ–[eÐ*ƒ?š×sXæd(ŸÜ×7ÿ°¯PîkQ´`xZámµãí¡(ŸÀî™û±u¶H{j°AæÚ73o·œœþ;ÿ°Kî{²kæƒÂ…Ày™÷·qÑG™ç+qÓðY&pÕóLœ@d> ]Qr±fê7Î|•Ù”¹¼&‰$S‚g37Ï–Á–%'‚”`fæ ‰y™Û[•¼nÝ3np£•¿‰Òfn/ )æiŽÄµyëäÉÜß«äßåÎÀîÈüà×½3ïwƒä@?Ëœàu•oÜõêË_• : _] ‘‰k‰&æ!¨¢îñ>ñ¼Ø¢ðÜJ›ìzi,¡9,?êgI¤YÛQÃ(ûü±2õ} ùôÙíY9†Gã`s|ãIŽõ4ÔüÑš†oɱ¹ÆþôN§å”óZ’×di²¶¬@À6þwÁšÔFeü¼k¦jÉbvêî+Ž*꿎%ïtÍ oŒT~Ñw©‰æ«Ž-c3Vò& £ŽÃtu8Õ‹Jwê…BCéMßÝVÈ£Y}a•ÊPÌG§ÄW-œB!ŸXN•äP)¼X¦¦<‹Ÿ[!¯ÆòHH¬åÔ`UãVŒ‡µ€ø ÎûD·DÈÉE¾È."·HìŒûçßÞn")³pÞÖ¸?V÷Hqp£ˆÀå"Gù.µ§TÆ·¨ë‹t‚“×Hõp´ ¾ ÿ”oïØ^‹©g(tHðEØX£kU¾Ã–Sƒ•[xþ(ø<µ}[s—›ë¤TX)Tzâ–™öõئh°>•¥ˆÎ«‚ë«„eÔ=n¡8~/m$¼±ñ{é\‡¦ÌKV¶XÑ2.]Ùs©¶õÇ¿—ÄaMùJµŸ-)ÆÉš˜wS?ºR¡¿•êÆ]ÒP>%¿×oÙò~ô¥zäTI•‹ejʳøyVÈ«±<VKX×?Ÿ'fšÄ_fèYjûéÞHÁײÎP¼w=‰ÑVäa´u"0Z“s¾Ih®Í}°ÆáÖ‹¶"‹ôl¨4'ˆ ]pöTÙÇ‹Œæ·• ßñ£«q 﫸µc†TÑ¿éÊ›Ä:‹°ŒU^À­A˃½UÆqªC[¤ÅvÇ­Jùîô#’“k {Ò<wWiJ[_O]7“EpYŽõ_BBBBBÂjžšÐ¿^AË’k“.––¦’/SKÜ¿öêînÞ÷ãÌwfo&MGî0ÝßE}6®íªÆ7Åw°>Œû&åi$-S+i®nÆ}Û(½œdä¦Èåʯd»–Ú÷ÈÀÍj9Ú@¤¨S¤ÁYHÙ¤ÖLDhý®‘Fæ·"…]EêîäyºÞå1òîô½‰n®a›MmÍz 7·ÊWžåh¡2Æ®AORö­á;) ÿ“È`¾Þú1î±^DtÇ´RÕ¸VnF$Ïí$÷(kçn’bôÑÛ•º°)¼B2ë>Ï„„„„„U([¼—HëSÄÌ(N%mÄ\œÇÉIÅðèÙYštïÐï#ÔGhºþ ög­ð;Nç঩w©í_Ô÷žk¬nÁé‘‹s67)šHθ–Q6EþE¿gâ¾®¯ê÷ƒ"S'GõÊz茛HgãÚ³ÛqÿÕ|÷[&,ÀM‡³(u²k”ÞDŸÓïç"RûMÊËÐ5XÊ;ÿŒäu\”æN¸©ÕðMfëPÞfø†¬'KŽSU—¢vñbõ“üÝ~…ðõE6§I~wHR—èÝÅÔ= 5÷㲨Ÿ$$$$$$$¬úPW£µ ªÞ¹ð–|ñ•÷ áx%jïöþªbÐ ¾¿vDp¾L¬è%»ñÓ¥§EÏò šÿ‹ïVHHHHHHHHøŸBcGÎ ÅwÔ‡õð ƒpºþøl—Rù²á„„„„„„„„ÿyŒÄ·¯ÞGå]])_£¾•t"uýJHHHHHHHHˆ°~Û‡ø}z-ê‰WÂÏà¸4‰,!!!!!!!¡iØ?ùv<º´µ€ñK[$Q%$$$$|NdI ÿ‹h…Ÿfûu/×¼?b>!!!!!¡>´¤|eM%€ßÕ÷lô7¿ex_Âêˆÿ>Âó¯tÚêûTÖl%$$$$$Äê9Ê÷Õ± ~½Ë0|£Õ`üJ›Ñ@û$¾„Õ ]´‚ø¿ÿ¨ÒÎþ¸V×$®„„„„„ßÁóùuM‚%ü¿Çâ—"W%Ñ%¬NØ¿èòo4|ÏÑþøÅ” MÁÀ£øå¼_ª+ÄéLÂ/óMHX­°6®®m ǯ$q%$$$$,'ö>¦²6ëhÜ-%!ámñCG–—ü¤BØcÀ.ID £„» ¼‰[?6©§%0è“Ä•Ð0ú·‰<ýõ;¯ï$òÕ<‰,aUD³$‚„„„„„/[ ð»kç5oð)~&VBBBBBBBBÂJÀ~ÀåI +éì«„„„„„„„„„„„„„„/öÿ)ßð%ÖÍVc9&$$$$$$2óyß>'ñ Mÿ<Ä*,g=­‘0«Ç–C~¡ y$R•°º¢%p ð„þ×ßÀ øÚà'ñNîÚ;ÏWxÿ àJj_¿s°?%G7àöèÇ¢ÿ?‡_zðd…<žö(Ôé/À}@M…ún ¼„ïn9 x Ø8 oüßõò6°/0- /¿âw7^ü´Çñ]1ãï7á×C|«9= œIy·çúª÷Bü2ÔW€Í¢ô;—ÿÜ|³P†_ªŽ/gè/Æ÷ð«+&‡Hþm£ðþøõ‹ÿàŽ¨—Eá$çEªÓnøY79ª_³ j÷i…2œ!9¿.^@Ýžïn­4)èàƒÅÆØ3ÀŸlà©O<à1ýûD€ÑæWw`ÐÂàš‹ 4¸ÚàûU¿6xRi<®¿'¼`d¡<ÿ0øO¨àG`³¯˜oðƒ× 6ˆÞín0:x®5x(¸,sr’8Ö`F€àými7h`l€ßV"[Ö7xμž·8Òà¤P~ÍwIìjÞöqZûXbÑ· C€›Lr6x\2~ÂàƒáQܼc0?À•W˜ßyËñjƒ§­v?LHHHXeÑx8Bí›"3ûhr>IñŽÕù ‘®™À»@àdà=ü*„³4¡‚_ô9Y*Ç]ø¹(çFÏK”öá"Ç+½EÀ‘À3ÀEì^~%Rñ(pv¡Nó€O€6…çŠP'Rõ°æëí^%2q·HݾªçÒˆüÜ©<7ůw0àâ(‹”ÇÕg1ðÞÿ0Fé^*budüÐ|ü‚ß,o”'õjàiàz± þè ·Šü ¾¯ð?Dá¿Pì*r:_ñ;(|0…ŸÜÿK¥qµPG‘ªëUÆïKFDéFà)|ÝEa‘íE·ù2à†ÁÊÔfVÐþl`0Åà|ƒõœÀÜà@3ØÍà8ýÿpƒ½õÿ5¡ßgð/ƒ!NRØi"^oepˆ9A:Ï`_ƒçœV ó|bBo0,À‡Ž°‰9é³àÛ×1hàeƒKD‚®2?4Jã÷*ˈۘǷ#yô›RAC´“Á\óú­gp‰Þ?SrìàmƒË¬à¸àrxÚ¢¶0'S ®Šòík0Ë`¿ß1˜aðsƒ½ôÿ#ôîÁeô]µÛß$‡] í:;ÀLƒiXNHHXÐBn´3D„ãÿ€m®ÀûÔ¾ˆswMÂ]ÿx=ßR¨¤ òÂhRm%­Î÷{)¯ø»Špäqfýôû7øé¿?ÚëÙ?#­Õ!-Ûz"W´>·ˆ ÆZvˆêûJAóuT¤49PiÇá7FšD֌¿¼(9ï ì­çß’f+×àåZ°ë¥ÉÉÑ[ùç“ÑÉ"7±ò àýÞ¿¸»Eç2¥ °Ž´½£ðE²;ŠÀ–,büƒò]a£ô;Æ9j7D?.Ü}Tæ"‹s áç)͘` ‰GåÆ|"Î n3'¡ñ}£Á¿lhð{Åïc°(¨\ ]€£L ÞO1(øo€³”þé-õÿ{ƒæœ,l幡Ái¶6Š5lw_˜ä¿‰¼l­ß¿ Næó´Ú˜|a‚Á‹,"S[+˜`}ÃàƒA‹‘§6Á5WûH×ý¦>œX]Vã¥Þj ƒæ^ p¸êY¥ç ~­wš›kÖÖÓï³ÍIe/ƒOƒ/Hòô›àkѳ~–¸3¤+SVCÔJûci{Š&³4ÁÇØKåSy7v«™HA× qÚk¢XO«q“Ø^õ„ŸŒ›/Ô¤c&uokÿ-2IÛöƒBxižlÎ,„oi—ŽþZáýc¨{ØëÁ",E™Î±ˆq1~Û<Àti)À "òy^!|¨È]žï…ð–"°5¸É÷ý(¿Cô.Òdî^_Sš.p³ëi…ð6‘¯q¦@Œ÷/<;¸N¹ŸG“q3srÔ¿@hÖ e­Iþ¬¿Vûø¹Ä â±opÚg¾C5cLm\ô2לÝ)“×™Ñs ¦Y¡KƒÔUÿŸ\ˇŸôNp Û¯ á-\j¢«#MÛ÷¢¸kxÕDd£ºom"ìl^ïmÑBÄ\Sõ®Ì•‚ȹÕ~§µÁ8s-q,ÿo'ì±\2=ï=?Æœ¼Üe!!!!a•ÀŠžä¾ðu}hÏZÎtˆX‰ÎÔõËYQì-’ñnzË}úáæÆ ñóI¶$Rñt!üSܤX­ðÇ á4bÏUxÿ²&–½‡d3¾ðüg‘v¯n΋‘›mª€ž¸)/Æó‘Ö«¿4j1P6sT™g⼬¿¼ o§D¤ªoA.HcuœÊظ¢þF…4÷n-­ØE¸Š«§ÁÂÌÉ&™„–¹yûÍ@]G®,úW¤©[æZNBYÝz{ñ¢óu©L((yø>À ³2øesõ:À’Ek›fŠ7ÿÞó9©§¦³"…ÁFÙÕ#–i<ë-°—ª;æŸù«”µò(ýª sD>6o‰ûŽÕ|󼿹ëk\˜ƒ[y†é›Í1X2›Ž[iËÑ ·æ,RÙ»éßµ"…D¾6Ìîµ`·jl©ñû%¥76ë3•©—ò­’Bä㨠ƒTÎO»ôKUÇÊkY¤ ÙBÊ•LI‡IDATIÀ8õ‘7 >’ý‹”Ýyˆæ¨Á’à ’ɽž±¡êõžúÁÛ…öÚKÇ~Vî# `G5æÓhÀn6Ñ{荒½¹’5páŽås(;—/Ñ¿±¢³42%uè;£¬2ýÅ×9|K!nÖ³ÅQøuØ€O¯6Rþ¼Œygl|[í7 ÷£ÐßÅ'J(›ã2ì+RU’Æ,+„o«Î¶Lš¿| ô%‹ÊX©¯ËXIŽqöÒÀ‚´UH«6XNk\““ÎÕ™—ÑŠª©ýY -¦L”1X+síÊõ¥Fˆ¿Þin°aæ~\KkÌÓ^&9-Ë$Gƒnf^Ô)¦#“œdªü~mÌß¿^á‹)–RD>D’zϘ§u{¿ ˩ڢ2ÖWÏàu|Aõøí]iÕ=³303‹:€)Àd€  ˆ¨¸¢¢¢b\K¢‰F+h×ÄBHYÜP£‰ÆˆÆ(1X, EEG APKA–˜áÞüøÎ­þÞ}= ˆ”c¾SE1ïußîÛ·»ïwîù–W gnÞùœô¹#mó½L’7sÂ=Â…9Bü Í¥TŸ?D纲à8‘‹±ÇH:þE2² I‚Ñ$ñ©si¸+h?Âb÷TE¦&BÂ.Vó`W³9÷A’Gæ±ÍùØÏ«hˆwCâE?°ý-CC×ÈN”pÞjIعƒ×5D‘±ñn`_ÊIhÁñ ½x‘$f½·³ýˆwäˆ"=ˆäcdaw‰LÚƒ*ڸ͓ڨ6¼“HLŽç˜‚bÄhŽ÷õ´ —" /9—}z‘cp,€‡•0c´€ç{÷ÿLÚãVߦ<„×1‚ßÍáâ;â9‹ßõâ¾Å´a`ÿ¦’˜¶‚Äb÷æ8Ör^tbgBâ¥õÔôÅŠùRÔç"ŽÌ˜©ìôn$n#m°Ó\„y$1ïòXë¹?Ô‹¹¯.ÂATc*YÐñ[ÉnÁ‡ü^îs¿R›Æ¤7¸CÅÔ@â¦Þ%YìB5l†Ú~Æm$¤õ¹¿Rçkà gzÈ·#‰ã“Ï!AòÅ^ðsµý§\ ®!¡§È`P‰fAÝOåd±™‰ aõÓA©QÇ¥ØÊü{Mô@Çãø2³dzÿŸ"quŽ Ÿx™“¢ãË/Ä`ËŒ# ÊÔáÑwG0Ž©4ú~r–}·0†h©WîÑØEc3ï*=0—±Q'ðxØè„€ÃI,Òý 0ŸÎöu!¶ËIæâ= ô®t@žùlW+\BFဋ0>ÇIâÏíèæ*/‘n_ì¨,08¿o´=Ï%<ð3ÿíUx$¥O­<𑣋Pµ½ÂIÆ«Þ8ÌsŽ`Öç'±a•dzŒ£4k´ãIÈE&§¸º@v¾‰ ¹¾EïóP² ?¡Ä|Äuó2S×ç’‘k)ÑñAW ±kë$¥\G2¥ñ’ ô!8.M.¯âÄpPÔèÌFflÐ÷ÈÌÃCõG’(}Ï–!! W"ÛÅx’ßúêÇû¦ÌÇrõÓšêD±A¼_Oªã=m¿˜l§•‘`2Pã…$Ø÷pR ¸›ãv6Ià[a"Vçã"c>)Äû¨]H°â8¤;UÕþeÇIÕ'D Äb¸þžÇ˜Àrçxàl¼áTüK.ŒQÄ¢'ÉÐøù1—gx ØŸz–ÜpÀ8lôê]r@7~žÉþf Ù2ÇX6/eÞM)‡ð°c¯žôQ\¡®ñê9wÀrL$™›è•¬®Æ¢1X½¢qîí$£P“Ö\fcãç 3ÅCÓ“×UÄû½Š÷JãZ$^chNfß©|6Ú^¡ìݯ”§…Œøº®àµ-Av‰§o½IP~”¢`LCâ³.§j²’´¥±^Žì`ò¡4ìÔR­¥pÓ9ŸL5)7mony´Â˜…$”\—«n ûùÌFf™†Bi|é:RòÕJÛr¥RDv™†Y$(%\±ì"imM"aÕÓ=º¾þ$iÃ93£•Ck^ÃÏ”B—iXJâ—ÇJ\¦á¯¼ÏmIdkø9”i8 â6¥Ô¤$™Œùr†ÌÇ#¹Âš îãBö¡ˆJÜ«ÑJâ ÊÉ¥.ÓК/Û/£çïUH …PWé Ÿ‰¡Øî’ (òÀI¬“5ÀùªöS>«ÉÜ÷ªK#‚Ћµ.wI¬PäDÙú"“YªŸG:‰DE+¨3Çð‡x)ãp ?ßÅícÕyæ°NV™Z9àÏ N¨ Nž(Â4Ã1ÓÕ—8©¡5‚mFQå::\ŸÖ«’ ýPí¸Zv@¶YœG:Qæb¥ªŸUq”Ë4LpÀ¬mœ¸ÐÞIÐþ#šP‘¸®wÙeV Í1Á §”yNÈöúk‚…#¼„svUdPÁJóÞh‚ã)’¤[dS5äS¨¹è¢Ô¢ºHu 4ôåD™¾$$%jî»5Å#thJ?5Á‚Rï6+Û«û˜¯ú88Ú^®„7¹0ŽÅ`3&1²‘=/W„µ Ù5î‚}Þ›ž)¢OðJT#IÖÒçb̼H@‰ð½<÷q¬JhWvS1Y”²Ï$Ý͇Zwþ%¶ÝÍ}J™ í~ÍAy–7u›zÐ*¸Ï.J}± ±0êã{jÛuŽáTjªyœÔ7–Ç÷$›i,ÊI6û75å†-bûj^Ç„hŸ¿©¾Láªç hÅ£Ç)žLθ=¿Q­4ÀUIˆmxŸ«ý‚Pö|hŸ@v­°G£{Y‘ÀQ$UžÿŸ•BÆCj‘]lµ˜Vˆ)ûSôÒçP¾íBÐj{Õq¥7Œûx}¬sµ•¤dGP‹”új[í"y¤U/~)ÛæyN­ XæÀ³h­S ¸Çô8΃X&Á{`šOJ\wÀ£$'ªŸ<°ÁÎIí©Õž+MF«æ;©å°Ç³¼¸ãZxQ¯jyÌ.ã’>éëëìïfE¶ÂöÁ^ˆšw2V\õæØ9ÇEU7ç¥èhpEÆÙužìú¸Ù{xŽÕ.QºÆ³­wèÞ¥*j=ð”O7¨†ïÁº1RrHòö’`ÝÀù#ss¯o€`m£Js"€€ïs>o‘Ÿ<µXô‘Û´µPEy9Oæ©EÄ!·qJ#X= IH¥õô± §›Î)Ûóxÿ–ÓC“Ö‡P|ûºz¶ïÎ+)žMTk"/™FKÚí¾ Ü¿ÅÈ,Ù÷!`E•ó%!}PÀÍeloƒ†'÷6´/Ú}lìí¿æ5¢qtcçh×Èöƒ‹Ò}Ÿùw{E&šÔ.jß.R\êýé–½ý™Õ®´¾þÇ×vº÷ªÂy|N]§Ké‡S}ð\OcãíS®ƒåÚ6tÃÿÁº ™1«çq‘þ²Ýpõ¬<.”§Qiÿ2c•öÁêÊG} ûåÕqÊéqh«ö}š‹ÞßSÑa(±:HbÇHõýdÅ×¹˜žŽÌ¸ÚkHVÞAvloÁ Áî¼t PEbH þE“( Ì#ù©BvìïB*[T°îŠúQÉ>ޤ‚µQÚ^Tï ÁËŽ‘«®37euædN'‘Ü&Œ³úÛç0íÝJ0 ñWšxÌ(ë‡"»ÜMC þž4à—Ò€Ÿ¸Ÿû9˜sñ)$ Û”R²ö0$ܬ%Ùë ‰YªƒÄÅ1ÃÝ a I¹("7ëHNVAÂTNWÛgBbˆö *óR6qž äåsˆwè(’ GÇ#Mçâw÷;êã Þ¿çŠhÜŸ#Ñl‰${´ Ùnÿó!ÙÃ{xŒ¸d$ñió‘í¦<I,÷[ÑöG8¶kÙÇ@Ô¿„xhNà¸k¯¢Á`0š#ЍÆÄqH¥$çªï¥¡•óH~N,V¦V«ý£¢£-¬#PÙ*ý|ñ 2“zîGæ/YLáwAiÌ,Â8­ÎªÍíT®Iz©E[BBp·Rœ¶DjÕlö7.ô}‰Eœd6 ¢ô0ü<Ùñü|ûƱÇ+dö& î×–$e!°=Ä ©•¸¿S‰+æZl$TDc.’›Ñ$DZíIâYöI» ¯FâæëÁ>öSë¿×‘û;¦ð8’_‘1 ƒ¡Ù %$@|;D¡º>Úî¥1ýWªÝö7Ò‡Ú†Èt‚”|¨ƒÄ æ@‚Ð=W¬ʳüþ¹5)’!½™Š.q D±z¢Ru€¸ê$Ô´#‘xâ&{›çÒqUwPɹ•dl2]r7Aâœ&ªkÒ.·sI§°¯ŸAbX5áœJB±&…È”PúÉݛ죎«z’…y’^ý«!דøÝ ߉Ì8éÓI$ )ѰâF ªÕ¡$É•$Us ®ÎÊ’O2´À/ ±œï!³¢Àµ§;!JáûÑ5\ÍgèHìs 7ôy×ù·gWˆêµ~Ÿaj¼Á`04ò©ä즢PÌä$¸ ¥ñ[‰Û\¤˜qoiGæ¿ü»˜J‹£aÿ’x’«Þ4·BR=Ÿ„nmD°ŽQ}üŠmqAu¤ }ç *ÎçJ…*£¡? ’5^QçvªsôáXl"ñˆU¤?$©g%¤ÌC 2«¨wã96“H"I4Ľ Aç!)o IÖPÓù—åH ú†Œî>ívŽ•ê?Š×ð!ÉVüë(]yŽjˆ ´5ÄÍéTò>-#Ñ«Qí[ð^õç=Z„ì0”^x¾í|^>‰¶÷áu¬å=ØÃë肤:Â2^o¨)¸Ù¥ƒ ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0|Gñ?Ó°` Gù)ÝIEND®B`‚fastx_toolkit-0.0.14/galaxy/static/fastx_icons/fastx_clipper_illustration.png000066400000000000000000000234331226234573700277640ustar00rootroot00000000000000‰PNG  IHDR«HuÊsRGB®ÎébKGDÿÿÿ ½§“ pHYs¼¼îDM÷tIMEÙ#ýU® IDATxÚíy˜\U•À§êUV„%„ éT³eÔQ@QÑAEÅAvQPG'â(²)«(âÂ2€£ˆŠ ‚ ² "tU‚ìHH‹IÙ—N¿3ÜSé×/¯zKºººûü¾¯¿ê~ýê½wÏ;÷œ{Îݤ\.+NMPUDäÄb±xK#›R©ô0UDêû]Š0tÞ¼U“O;mƒ÷e}*"kUµÐGÞéúš:`¬ëHíÞ¯ª®r1´Ë‡|_xÐ8Ÿúª÷TU×Çöe´DDv¤<ïZkŽã8Žã8Žã8Žã8Žã8Žã8Žã8ŽÓ H¹\~‡‹¡6¨jND^)‹K\Ù”J¥]€aõ¾œ{W‰óyÙñúëWnwË-r¹zÑG‘×eö쥮yÙ”Ëå<°;ýpΜ†„/466®ëî5"Uý»«I¼µHNUO®uiT•ѯ€©Ú‡‡ÇV)X.×ÜüðŽz)›ˆTõDÀ÷§©Î(UlÑëZ³ªî ¼Ðm"">½véoMëhÝî_r2‘³:WOúèõ¿S¶¶_Êi“«™+ã8ŽãÄqÇqâ8Žã¸qÇqÜ8Žã8Žõ·Ñ’õŽË»}*£Bú³œê¥l> °óròz[ňȯ] 5cª¾èbh—{€¹"Ò¯j¬BNš›ß°aTo¯3XUç»ÊµËZà&Ò2ëEd¹¿â>F©Tr!¸\ê†xâD‚ã8Žã8Žã8Žã8Žã8Žã8Žã8½‡w»\ê 4É…àt )•J¾”sí(×466>䢨êD¾)"»µä¹ˆ–-[°×1ÇŒÓÁƒc—fÇú("×ÊìÙº(œî‰Èñ.†µôÂòÙî@ªû€©ê~Ý™äfçY`²O’ëœ>î@œnáK™Ôo·oÔZ6ñë]ŠÝñ»ŽãÄqÇqâ8Žã¸qÇqÜ8Žã8Ž;Çq§ûÄ×¹¯9yAuDdÐ&ÁìRt}tjC$"§Ã]51Žyàa—DuTõûÀ›àDÛàÃS;ë<¦»§Q.—]øR&½ƒïâ8Žã8Žã8Žã8Žã8Žã &”¾·á÷ñMßs8uÁø¦ó‡º‡úïDŸÐô½q;—þKvjºØåÒÏé è;—ÎÿÁø¦‹.¨ü½cÓeþâꀨ\.û0¾Ú1XUÏ-‹·×¹IY­ºÕÂñ¥KNŽÉ߬٩éRæïóµ½k±X¤T*] ì%"> 7‚ìpã/owÓM»Ï·l.}Γٳoë"x á‚qM—~B%ú¶ýXÓÓ7-•J#EäfÀ# ,¼ËÅPSÆÖûÎÝçÌÅã›.X\rÁM?ž6ŸÓnݾégh.âõâI=yûwS]M²¼ˆŽ&oÞKêv}£ìòB3"CQù>pÁv嫾þzñäß÷ämE¤ ªˆÈ®€ãK™Ô´þ+}f£#‘¿…©x2 ‘«·oºâ®8W8¼‡‡ãúXEY€’ˆ¼$®[¾æîmË¿øhåèÖåßõPè¸qºRcgÐj[Öo®[¾îámÊ×OÚº|C.TØÿsQ9=¯Úò*m7cÕÀd”Ÿ)Ý0cëÒcr9€Ñå?¸ÐÜ8½ÈÓ©–—ͨìr/šûýÖ¥ßMZ\ü„KÊéqæîóífàÅlVÐÐfD¶¹äæÑ¥['/)~”‘å;\pî@œ^â²¶ß• N¥‘£K·\6ª|Û®•œyKÎé¡0$wªQÖPb@Qùë–å;~¤mÐËáå\~î@œZ¡è+h»¹_YrpçÈ™w^ °lÊ! /ßïì>£g®[|üˆîj埢UV r8pç3ÿ|õ°™E+‹2Ôœnv"A}ñáGehL4X‰A4(?ƒUò9•(V¢%j‰ÉǪQKL¡‰VÄÂÊG÷kŠ»r¯=?™çö½*óóÏX=®é’×QÆ!™m¾d…- 2¢|ïl•躘ÜUÀ›Cg>Âê)ÿâ/µòÇàðG«’¿'&Š•¨ ä 1…AhTˆsù¥Ð“o‰‰Ö£Ñú˜¨E¥°JɯŒ%Z©­Œ)¬Dò+bV©äWªF+ö~ì¨U*ÑÊXóË”h±J´$&¿XÑ%Ïï{U¦Ïkœöü¸¦KWv¾ D^„ñÓÃfNÿߘ•À’¡³þÆê†ýýo¢ªë\ 5ŠÀE‘•jk˜çä”±±XzW+Y#APQМRA#áUîÿ·÷ùu±ä«Å-F¢7cÍ/Š%Z¬Do*Ñ|ÕÂÜ8—Ÿ­y[Ó—[b¢X5Šc¢Íåã9çÚ3æîý"Йy-á¹8É?tæ#ç)C~ÕÉï&Y4«oT³‘ò˜lbU]_3}„AÀ;QZРrq«vH ¢A¥r\¡¢«É{ätƒÎ*@r!!1éñ¯¶ Ñ+1ÑË1ÑËHôR¬Ñ?T¢çb•9À.]¥[•ÿN<«tþz~ ¬ÈÏzž–†·UÿºªŠH³ÛÉêÈÞ.†Ú™àÕÎYc#üº!•T©ˆÁŸÄüJëÿA@¶¶vk­Ôbg' •µ «Y…°JTV+¹UšÎ[K´ VDW'ôU †ÈYÐrò ™å_¯›Rü @4ëÖ7¼½£+ƒOÚªfñײ7ÌRU^«m!4á`*Îh±•SQÆ"²-ȾTRíáë:áôªÑ œ!pl4ë©ß®oØó'í9s²KUu*žî¯ZÝzJa͹‰T‰4&RÕ¼ª°4JžX ±jžX"E"b☂"y‰5ŠU"b6üOc‰b%/J!Vˆsyµ K«æQ ĹpX#¼ÄRh¶g8ÅSИ¼Bp¯œÄÔRlس£DqL¾ Rx-&&D¶4ìÞ"³æ¢ üe÷”TòóbZ‚®ä‰)Ähž8©ô2&R4"&B%R%¯±TÉk!FòÄZù_¤±Dªjºteƒ~Ç)šz&QŒäÅ¢db)¨jЯ8Ū9Q S0ÝË—BkžVý6½ÌÙý5?H‰©DÿkþA¦ìÒìo»ë¸Wuª4‰-ý´i ¡e ÈOQ–Y/î¯ `æË.g§7YŒDår$÷ 3_ñ™æî@œºtF­ùî‘û ³æ½‹);»lœÞ̽Â0Ð;Ðø¦Œ[áBqâÔs•EA<•†ñ{âô®.²ø·xÊÄi9Ñå.w N½¶ô”!À¹¢ú^mØí @œnت<ºÉ6kè ÀA- {”ó³ž'nØÕ¥ÛM¢R©´½‹¡væTDÞ*‹«zí ´M+Lf¾ò¿|›^em7{A”0Êï)$>©¥aò?ó3ŸîðK¥RikÂÐÑÉȧžbâÙg£ù|ÍôQfÏ^µôJRÍ6Œò-Š£4ëL¿ÖÍkíXøû;¬Å¶a ª“¦t0É5«!“Gõuo¯mhx`Ь'èhV©Tk#Ö¢ÁBU×566.Ît "ò‚ÛõÙnÕ!ªz<ð¿=ÐÒÏmø[©°TÀ*¬9¼X„è"T¢ºa±¢‹@ƒ.²c [€Ñ]v¢Ã@¿ ÜÚܰw\˜õ$Í ïèŒÂÞ øY^5Z%wp"p];zU!Ÿx¿ù¶ïUTÿ ºt!ÊBDAÇ„…(‹€…>×"Ä mTÑ8 Kã9ûœÛÆQŒkúÁe( ]ÔÆÁ¨^Ká»ë[†Ì|œ5 ž½0xb/çž‘G€ƒ30ÌM{M CG³ÿ·@U@a5!W»tÂr`¥ý½²íß,Gâåh~è²ÖïÅË!·âHnùSûvÍwkúáöt~ãAŠðg”3Ö÷{uðÌÇhnØ«ÓNÖg–ïÛ šÎèãTO}“ÐW° âJ~YйõËÿ²ÿË]žd×ðØ‘<±o·–^ŸÐ• ðªç¬*¾û¡aå‡B83eß.…hª:TD† T±†FU;õÅnwL]¿4L:^Ó«2®éûÏ¥(kýúª)ï¹µrhm*«SüñV@|UÈ$m¾ÉسöëÚ>P;5]Ìü}¦°s§’W!¥ö‡åŃ¿<¢üg†—`eñ=þB7wxâ"¨Ÿ!Üq€.øðŒB=DKïEé̲ƒ}@à+¦t«/¦èlnæï3g›t§´¶¼†è‘Ë‹ü2ÀòâÁ¬,èBì<©«Ö^kÓêŽzb¬jü>¤Ýý·s Ëï,›rØ #Êw°²x¿Lg³óA¹xßTg}2Þ”f$¾qIñÈ3\Z8½À^T_w(BõÏ*²ß[Å#n=óV–u¡9=Ø¢á}HÆâœBô-Ð÷/)~â ð Ý8½ÊNM‘,ýPr¨.AùÚâÆO—gݚѥ›Y2åc.4§§=È ëÛØ¯0âðÇ‹ŠŸmXÜø© ³S—?ê⪑¯š]Ã}Y´séBbØŽ¶« ZP¢)…OE¬^¿uéê t½¬EùûÜH7a2·Î1ÑWý³ñóKzò=Ø\·[YDDÞpÓ^3†«êý!UD¶£²›Chå-¾ðFãq=½7è›Àu¯Šä€¸åWÕ!"²ª/Èeç¦ ¶ÑÊ,tÑ! g ñ/Þ˜ròú±åky£x|OÏXØWäÔ:’³:éÔ år¹îŸq|é¢//]²`\é²ù;4ýøWãKç Àvå«{장RÉ•£7ŒÄ¤IuŸÏÎMì9¾é¢WÇ5ýàq¥ؾé§þòj„×M§k¤éÂkÇ7]²`\Ó÷©Û¾t¥ Æé¥äü÷/]ôÉK?ÌŒ+ýÈ…â8õ\pÆNMçYe½ÌâÔKdìBpœúN\`­¾ \Žã8Žã8ŽÓçé è½wÔ¹>:} )•J‡¸jFNDž,‹ \UÙ~ª:Ê%Q3666Ît18Ý!îv1ÔU=¸Â%QU>WA—ö{p6û©²×ƒãtè@|ß…šGD¤Ù%Ñ.«¡Î’î£úHoïàôi|-,ÇqLjã8ŽãÄqÇqâ8Žã¸qÇqÃ÷©=>¼¨òq½¬‘°}¸›³)ø›‹¡f |ÿ•öyJDÄHmœ‡ª>ë’pœ>„/‘/eâúè8Žã8Žã8Žã8Žã8Žã8Žã8ÎÄ;‹³ñÎÜÞA'Mr!8ÝBÊåò¹.†š©êÍîAª;×Dd|+׈'Ÿ4ñ¬³ÖR(Ôͼ U€ßç^x¡É5¯j£f(ð5`P?,ÞJU½¸±±±Ûcæ#U=ÓÕ¤†[ä%ÀHuŽSÕ©ý®Tq\1Úõ¤‹sw ÕLSÕýÐ-‘K€î;ŸˆZÓŸ ¡kÆÍËÕÃúèõ@Ëi“ ’¯…å8Žã¸qÇqÜ8Žã8î@Çqw Žã8Žcø~ µÇ‡½t é·#Öêm¯×ÿNÉ)×å´9ʹŠÔ4âóýÚWê/#ûaÁò@‹ëcŸc©ªäûaÙšE$öWÜÇð¥L\.uùR&Žã8Žã8Žã8Žã8Žã8Žã8Žãô&ÞYìrxøé§ëâ9â‰]ù\'®ïÉ•J¥e®&5cpbccã/\ÓØØH¹\¾OU÷g3¬ZïȪUóuç'h¡Ð[Ã{‡ˆÈÉ2{öÏ]ûª¼#‘­J¥ÒÓÀðRä×Ý;í@Dd„«Im°e¡ .‰ve4 Øb€,3>Ö[eµId®ø`ø@°“ªŠª.ïÊw|)Çq§[¸qÇqÜ8Žã8î@Çqw Žã8Ž;ÇqÇ1"AmQÕA.…vÙb•u„)E¯Ü\½];Ó€˜ê`ÃÉ»´•Blí›ÊÔô%­t)´Ë»Ed@lt&"1"9Í÷ÎV(¸>¶ßà[,"[©ê@ÙÎ÷©wºº\€ËÅéQ#¹ûî.Çë¡ã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8Žã8ýŸ¼‹ .(Û£€!@‹ý8=ËpàÀr`Å&^k$°Uê:cÁÀêD}ÛXãï×qœÍÁ)ÀB32ëUÀÀïð ¿zšÉ€ŸÜ ׺xÖ]>Ïÿ—8gœÝo½ÓpÕ»|¸˜\ ,ÆïÞaïg½‹©ÇX\ <»™¢Èa‰¿cà9`nâ˜xäïô'd ¶T*U¶m¬)•ÝõÓÿjþIHktçiÏ“Ôw¤Ê5¤kwtIݯ£çìl™ºzNgî[­¬Ý)Ã¥À Àhªïê¶0xðˆ›§¯“PÞRäƒÀLàñZþˆÈL¹8ÃHEÖJí,_±´H !þ8ð¯ç}xÙ ÙëÀIv,¹ÕØžÀl`·ÔwG_J߸Xf×|?uÎhàà`à·vî:àIàýϹð—Ä57É}º'Þ²s—g\ëÇö¿Øä3øFòÜø{êÙ¾ÌöJöüË€»­|]‰î/NËø_3p*pp?p^Æ9ß¾c×¹xøªýo/‹œî¶èõ6àØŒkœjçœo׸"ùÉøÎçM–ÃÜ<:QòÄhUmè(x)£u<8øˆµH—´Óz½ÄœÀÿG:€hhg3ž£q p3ð!`àWf€wI\o¨9´Éo¶MÛÖ í<ààyà(àl3ªÇ'ôiWàgvÎaæ~`Ï0Þ 2„~€Àà8à)3ŒG'R<#͘/±Öý“À¿ß#ô'iç}ÙÞùÀoL†ZÙÛc°9Ò-SeÝ ¸¸Òäy$0 ¸ÈœqgÈŸž6ƒœä ‹Bî0™|Ûž÷=‰H磄Aß4¹¿@è¤ø°µ9¸…@ðs{oÓ÷9x§½‡Öøgò<¸ÁP²Aù `-­ÿŽã¤NÙßËmfà—ç˜AM¾§¯›!þZâø¾„Q?g'Ú±¯šÑú„ýý 0xÕ Cwø©ELÉͳÏ1ƒóMkµ¯KüïEàûý!`¥9´qVÞˆÐç3Ç ø*;÷YÂà ?1Ã7:aX/°ü…f`ß²Ö÷_¬ÕN¢Ü›Âí™þfe?¶ ¤½4Ú;ÌÑVÊ} ðKsøw&¾7 ø,ðëT:íƒÀ›´Éõ]+ÿ´Ô½w1vz*=§V–é©ÛdàÓLÿ9žÂrz‘׬UùuàA3´Ÿ°–ö•‰÷óû¼ÉŒÊ$3hã-½ó™D«w"puÆ}š6á}ÂŒØøÄ½w7ãS°(É ©¿ÿjŸ{$¢ŸÝ­•¿ªûCÅ´Sê¾%+ë®vÞ]„'™Ü<”úû.+ëæà©r_,6§œäUKé¥ÑBs,ú(š`‘MšÓ3®ñ“o2]ø?¦ƒ7zÕt<é¬&tÀ^š0®³€“kÌðO±ÿeu¼&óqÛÙçÓç=aƦ«T®ùyûÉb'BJ…%©ÿ¯´ÏBÂÑRQVš1öùIª³Ý‘Яó-à_€«ìø:s¢_¡ûó-Ò)œe›ñ?–qlº¥­’,®òý‰„ôßÖ‘ÂöN(‹«ý#çÒVãsb¦y•tÜôm‡ò93Ÿ1R1À»VùޤŒ\Vgïè”±Ñ Tù;yl}^l©BÆù¯u3­3ªs*é¶+}Y­ÿ7ì3ÞkÒÞfOÞp¾õD–S‹;yl[k L'ô,°h¦…Ö’NÜ«"ßý4g·ûýÁ« ÓY<…UŸò_‘jÿÞ>ÿ•0¯ ý3Çþ¿ÜŒÉG3®yxÊ,­â”F[$þ~ËÎ=ÌŒUÖ½×t±Üë£Ãmçœå„!Îï¯rß¹QÂ5§R¹nµ™Ö•ãÉ”éÉ„A×Z¤ñ°µ¤ŸM¤«!ôo|Îäò(a×%®÷E;ö a4ÖbB¿É:©ÿù”—ŒTPGN2oÏ#©cù 9,#¤&O tœÿŸ•íöĹÙ)æg,z»žÐ_qŠÉdzFÎÓqšzaTØ\|r£ÓEÜLôÞrš"¢Åb1kÆs³ßËŒàÀŸÍˆg1ÁZß#͑ܖ‘BÂPÏ¢ª{£ºŽg㾄­ãë s(Þ´ÖðR6î lÑÎÛ,ÅtW*å‘3‡ô*mG‰¥^°ñ¨«- }=c,ʺóöàÄy«Ì¡=›ºþ$œšm-ºº‰Ž—)¼‘ˆTF™Læ¤"¶á„y%³«\ëhB?Ì)ö½ˆ0odaø5„Nï«ÌhˆÐ‡1‚0\ù›©ëm×ø÷…D„‘R±g?—0‚ê6B§øãvÞ—M_¾ÚŽ Ææìüï@w§ W¶ã”œËñæð&¸(œ®â£°<ât&;Zôw aÙ™¹.Çqª1'Ç9—ÊlômGÝ9Žã8N»ŒðˆÔqÇqÇqÇqgs0œ°W|O3”0ŒØS:ŽãôÞK˜øv/as¡?FÅü›>Bn8a¼žfˆÝ§'Fô}—î/Aß¾J˜óÒ“ÎJLN¾Q“Óoð¥Lz—±æDÆš! L%̲n6:¤›×>…°aUOs¨ÝgR\;¢íŒøž"orîÉd¤ÉÉ— qú >¤>8™°”Er –ñØ›¶k]u–µ5zöÊäÄíR™Õ¾ÎEá¸éƒÄ'Eä8Uí cל“{á…¥Y–02CsaËÙà ˜<™8aé‹ý¬åü,aeÕʲ"ï#ìda‰‹Êý¿Eë»R7•%TJ„%1ÒÏ7 øOÂFE£ë0ÝOXúâÓ„õœ°hi)a¹“3 ëvAHÛ|ÃaLXZålZW®°‹Ÿh÷8êÛû¦Ù°[`‘° É›„Ôà¥רž°øâž„´ÕÏÉž¡?•°žÖ^„y¯v(L/Zx¢ÝÿR“ß^vÝ_Ñvc¦+ìóXà‹þï¢u×C!ì6yÉy.aO“¿$®1‰°´Éç Ë¿|–°tËTª¯2°a»ßÝìï„åb®Ow,am´mMþ¿!,“æK„¥t†Ø³}Çdx! [ÑÝmØxqÈwÿnú°4U®¯ÖäŠ ;@ž™*Ó¿[´^Ùç½ÑtèV6Þ@ ÂnŸ'ãTºrW›ž'uî?íaºùÚ.·–œùÂÄË¥„õȾ‰oû;°ˆˆì®ª_ì¥=Ñתꥺ=Ž'¬+uFÂ! #,º¨„]èv <û'¡Sx„¿mÂTö{›U¨7¬²{}޶ýÂ:IÛöŽ˜nŽàs #hÝÓcksCzUÙ÷|!a‘Æb×<"uÎwíx¥ŸtW{– Sç=dç}=qìN²<ÁÎÝ!qly*Ê‚°À£Ú3T¸ÚŽ%·çÍ[´÷h*]oeO¯ <"ñû›æ\Ó;z®~–Ðeã}krøˆ½ ‚pꛥ c¶£…ä?·ÖT2öSkOT.ª¤f¶°”KÒ8¿üÑ ÷3²ö y9ue©JœÍN&,Ðw mWÅ}ÓŒÁ ‰cG¿4–t^/t²¢¾i}WkY­•Þb-ùª†‡´IDATdD÷Ë”C^HX­8Íb+Û$Z÷Ú¢—QòHï#~š}’OZNC,‚¹°ô~’+­üé}ÎO¢s c.°÷XLéC2EóßvÞm©ï~;ÑÈÁ¢ Ép 'm‚nÄtñÈÔñy„©³6F»&•¾ÍR_Þke½ £ñ±Ü>ßoQî'S¬×-Šý@¢N`IÕ7uÓäè}Q ú…¥›Î"ôg¤ß¥XŘ×Îõ*QÐ]lÜ?0ÈZØC­ñ'»ùÜÛ猌ÊVHè^¥…þçŒkÜc‘TGlcéˆí2Ecé,…•晌ø¡–Ú(d8±t½YÍÆW­²Ÿ=:xöÁÖ2>”—º¯”elêøc|_³ˆ§‰Ðy?ÝRRÓçìc÷YUåã<%eT+<» º=Õ>_©"—%ÇÓÏù:mG*îmŸÏµsß}ìóù Ý”p4-–>¾Ð"ÌÅ–º½4â¤0Áú¾„AÉY´1#+K×óHF gZË3Í:3†¹Ä5»Ceøí±U¢¡t &®RžŽ(†Ç>i-Ê-"È[¤!)c¬¸O¸ƒóþ†]¥Edt!}‘LI•{‰ÕÃû€_T¹vz£§®,Ë¿½Eaï±´ÞC–^;2afß7£v`O¦ž¿3H9K9¡ÊuÖvRÆYNW;¡›§V¹Gr¤ÜEÖØ:˜B<ŸÐ·Óh w NÝòKû<'‚¯±Vد;ønÜNZ£Òrüc;ßÍ*á;»`4’<˜H/ÝÛÎ÷V'"–t§ù¸oÑ ß§ ípÚvRWÊݘq=S-ʃ­<Ç%T˜Xå*ƒ’ª[Ø3<•z¹ #¹ÄœÖoz@‡*»^ÞjÉ9fGY4ÑDH‹ÞÜÁuJ„tÜèTdðöŒs—Ó¶Ÿ,Ù JRiýÍÿæ lŸ“ ý…Y4%Î}¢×|Â~~`z›cùÈ@7PÞR¤GsŒ%tr¿‡0<ò¥D¨ÿ2a’àðŒë$ Ü«ö¹eêœÊˆž‹«<ˤDj`:axå„vž½’RØ:£’¾Lز6+Ù.ñûí„‘3ÉNÎýÍ8u4”·ÒZLϺ¿=ãÜëÌ)ìŠ6>œ:oiÂ¥SBYŒdãÎñʨ ëF5Ëà®¶¨æ Dš(ɨŒÈ ³d¥Ïf&„áÒ[‘½ýïÐÄï´w‘ÞµðšŒï=l:œ0„¶í¶ò]Fy–Řn”ù/öyn;çüÉ6wW±c:-ÏŠ*Ò#~N¾²'z­‘ÁÊXùûfK‘ "l±º­ùÖÓSßÙÏ¢‡öÿÊ0Û#½•kÞb×|Ë*Ì3ÿ$ä‰g˜ñ½ØœÍ.„!¢¯' Ù„Žì9–6{ÖÌñ cÿ´Ýã>3„9B¾øEÂpÇÛ¬Åz¹E5;:fLÝoòúÏ[ËnKÂøüûží1ÓR ×òõ/†c®5ãœ4Ƕú}Å"–ØR3iÍCÕóŠ•çl3þß"Œ(Û£J‹û[„Üú&Çw³ñ‚ë­\û:ùo±´ÕçÌY•-²|Ôä{°ýliå‘.¦“î³Èêzsæ»YJîaZûþhïègæHï5§zðñĽþAÚ{†9‡ö³ú).³(çEÓ/5ç{/¡¯'ùü‡YŠh1akß…Ö`ù a4W%½UmPHž¶éÐ9ÀæE½HØBx½½÷9Öøªèö_­±ð#ÓÍñ„¹M3 sb&[Êï7&³a™¡-2œ¡;þŽª> "¥óÔ6'±$ÏYe[o•j…ð»Í¨gåg—™¢G˜òª£ƒ3ZùGYŠBhÍÿÝZÓÌHŒ±Êv®âdkk¢䓬R=Kÿ_á kÑenXâ¹ÿJè´?Ý ÂVfà/6ÃYáI{Ö+ÌÐߢ›siíç¸Ç $êÀX+ïÑ Ý¼$Q¦Û3m#¶†Ïad÷:Žãt‰›ÌÀ2Po‘L¼ÄqÇqâ8ŽãÔŽÿZب]‹®ƒ.IEND®B`‚fastx_toolkit-0.0.14/galaxy/test-data/000077500000000000000000000000001226234573700176545ustar00rootroot00000000000000fastx_toolkit-0.0.14/galaxy/test-data/Makefile.am000066400000000000000000000027641226234573700217210ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EXTRA_DIST = fastq_qual_conv1a.out \ fastq_qual_conv1.fastq \ fastq_qual_conv1.out \ fastq_qual_conv2.fastq \ fastq_qual_conv2n.out \ fastq_qual_conv2.out \ fastq_qual_filter1a.out \ fastq_qual_filter1b.out \ fastq_qual_filter1.fastq \ fastq_stats1.fastq \ fastq_stats1.out \ fastq_to_fasta1a.out \ fastq_to_fasta1b.out \ fastq_to_fasta1.fastq \ fastx_artifacts1.fasta \ fastx_artifacts1.out \ fastx_artifacts2.fastq \ fastx_artifacts2.out \ fastx_clipper1a.out \ fastx_clipper1.fastq \ fastx_rev_comp1.fasta \ fastx_rev_comp2.fastq \ fastx_reverse_complement1.out \ fastx_reverse_complement2.out \ fastx_trimmer1.fasta \ fastx_trimmer1.out \ fastx_trimmer2.fastq \ fastx_trimmer2.out \ fasta_collapser1.fasta \ fasta_collapser1.out \ fastx_barcode_splitter1.fastq \ fastx_barcode_splitter1.txt \ fastx_barcode_splitter1.out \ fasta_formatter1.fasta \ fasta_formatter1.out \ fasta_formatter2.out \ fasta_nuc_changer1.fasta \ fasta_nuc_changer1.out \ fasta_nuc_changer2.fasta \ fasta_nuc_changer2.out fastx_toolkit-0.0.14/galaxy/test-data/fasta_collapser1.fasta000066400000000000000000000020621226234573700241170ustar00rootroot00000000000000>1 TGTATTTACAATGACTAGAAA >2 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >3 AGTACAAGGACATGC >4 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >5 AGTACAAGGACATGC >6 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >7 AGTACAAGGACATGC >8 AGTACAAGGACATGC >9 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >10 AGTACAAGGACATGC >11 AGTACAAGGACATGC >12 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >13 CGATTGCCGAAGTCTACCA >14 AGTACAAGGACATGC >15 CCTTGTAGTGGATTCTGATGA >16 AGTACAAGGACATGC >17 AGTACAAGGACATGC >18 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >19 AGTACAAGGACATGC >20 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >21 AGTACAAGGACATGC >22 AGTACAAGGACATGC >23 CTGCTGCGATCGGTGTGC >24 AGTACAAGGACATGC >25 ACCATTCGAGCATAC >26 AGTACAAGGACATGC >27 TCAAATTCTAGATTTTTACGG >28 AGTACAAGGACATGC >29 TGATTTCCAGAGCCAAT >30 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >31 TTACCTCACGATATTGTAATA >32 ATGACTTCATCGTCCACCCTTTAGAACT >33 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >34 TTCAACGCCGCCGTGAAC >35 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >36 CTGCTGCGATCGGTGTGC >37 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >38 TTCAACGCCGCCGTGAAC >39 TTCAACGCCGCCGTGAAC >40 CTGCTGCGATCGGTGTGC >41 TTCAACGCCGCCGTGAAC >42 TTCAACGCCGCCGTGAAC fastx_toolkit-0.0.14/galaxy/test-data/fasta_collapser1.out000066400000000000000000000005021226234573700236250ustar00rootroot00000000000000>1-15 AGTACAAGGACATGC >2-11 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >3-5 TTCAACGCCGCCGTGAAC >4-3 CTGCTGCGATCGGTGTGC >5-1 TCAAATTCTAGATTTTTACGG >6-1 ACCATTCGAGCATAC >7-1 TGATTTCCAGAGCCAAT >8-1 TTACCTCACGATATTGTAATA >9-1 TGTATTTACAATGACTAGAAA >10-1 CCTTGTAGTGGATTCTGATGA >11-1 CGATTGCCGAAGTCTACCA >12-1 ATGACTTCATCGTCCACCCTTTAGAACT fastx_toolkit-0.0.14/galaxy/test-data/fasta_formatter1.fasta000066400000000000000000000113051226234573700241360ustar00rootroot00000000000000>Scaffold3648 AGGAATGATGACTACAATGATCAACTTAACCTATCTATTTAATTTAGTTC CCTAATGTCAGGGACCTACCTGTTTTTGTTATGTTTGGGTTTTGTTGTTG TTGTTTTTTTAATCTGAAGGTATTGTGCATTATATGACCTGTAATACACA GTATAACTTTTCAAATACTTTTGTTTTACAACTTTTCTCTCTGGACTTAT ATTAAAGTCAATTTTAATGAACATGTAGTAAAAACTAATACATGTACATC TACAGTTTATTTATTTTTTTCTTCTTCTTTTTGTATTTCTTGTGTTACAT TATTTCACTTCACGTTCATGTTACCAACCTTGCCCCCTTGCTTTCCATGC AAAAAAAGAAAAAAAAGAAGCAATACTTACACTTACCCTTGAGATATCTT GATCTGAATGCTTTAACATTCTATATGTACAATAAATTTTTGTATCTATA GCCTATTATTATATATGTTGCTATGTCAGGCACATTGACAACATTCTCAG AAGGTTAGAAGATGGTATTGTTCTGAAATGCCTGGAATGCCTTGTGAACT AAGATGATTACTCATGTCATTAAAGTCCCCTAACCCAGGTATTTCCTCCT TCCCATGACGAAAACAGTCCATTTAAACTTCACCCCACTTTGGACCCGAA AGTGGGGTGCATTTTGGTGGTAAGCTCACCACAGAGCAAGAGAGAGTTAG AGTCCCTAATCTGCAGTGTAAACAAACTTTGCCAGGACATCACCAGCCCA ACCTTGATAAGTACTGCTTGGAACTCCTCCATGATGTTCTAGTCTTATTC GCAGTCTCATATAGGTTCGGATTTTGTCCATTCTCATAGCTACCAGTATA CATGGGAGATGCCAGTTTCATCTTCCTTGCTTCACTTTATAAGCATAGTT ATATCANGAACTTCCTGGTTATAATTATGTTCCTTTCAAGTTTCATCATA ATTGTCTAGTTCGATATAGTACATGGACACAATTAAATATGATATTGTCT >Scaffold9299 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAG TCTTCGGTCATAACACAAACCCAGACCTACGTATATGACAAAGCTAATAG GAAAAGCATCCTTGTTTGTTTCACTATGCTTTTTAATGGTTGACGTTAAa ggtaaagaccagtattggaaacgccccaatttcaaaaaatgaaatggaag ctctcattaccaatcatgtgaaagaatatgttttgactaatacatgatga taaaaaaattgccgggaaaccgcctactaattcatatatttagtaaattt gtttctctcatggtctgtgagagatatagggtagtcccatatacatcttt ctgtgtatagtgcttgtaactttacgaagaatgggccaaatttcttatca ttttgatgattccagaaccttgcagatgcgagatggtagatgatcaacct tttctgatcgattccataacgtttctttcacaatgcaatcgcatgaccat aactggtctttacctTTAAGTTGTAGGTCTTAATTGATAACACTATATAG TTTTTTTCTTTTTACTGTTTTTATTAATGACCTCTGTAATTTGCCCTATT GTGAAAATACTAAAATATGTTTATACGCCGATGATGCGGCAATATTTTGC CAAGGCAAAGAAATTGCCCTTGTTGAGAAAACTCTTAAATGTGAGTTTAA AAAAATAGTTGATCACATTGAAAAAGATGACTTAATGTTGAATATCAAGA AGTGTAAGATCATGTTATTTGGGACAAGAAAACGAATCAAAAATCAAAGT GTACGCTTGATTTACAGAGATAATGTTATCGAAGTTGTAAATGAATTTAA ATATCTTGGTGTATTATTTGATAATTATTTAAAGTGGGATATACATATAT CGAAAACTGCCTCCAAAATATCTAGAACCATATCATGTATAAAACGAATT AAATATTATTTGCCGAAAAGAATTTTAAAATTGTTATATGATAGTTTGAT ATTGTCACATATTGACTACGGTATTGTTTTGTGGGGATGTTCAGCAAAGT GTCATTTGGAAAAGTTACAAAAGTTACAAAATCGTTATGCCCGTTTAATA CTAAACGTAGATATTTTGACACCTCGTATTATATTATTATCCTCTCTAAG ATGGCAATCAGTTGTTCAGAGAGTGCAATACCAA >Scaffold9309 GAAGGAAGAAGAGGAAAATAATGATGAATTTGTAGAATTTCTATAACGTA TGAAAACATAAACAACATGAAAAAGTATGAACCGACAGAAGAATGAAAAT TTCAATCATATAACATGTCATTCACTTCTCTTCTCTGACTGTCAAGTATT AGGTATTCCTTTTTATTTCCTCTTAAAATGATCATAGTTTCCTATTTCTT TTACACCATTGGGAAGGGAATTCCAATGTTTTATGGCATTGTAATAAAAC GAATTTCCAATACTACCTACTCTTTCTGGTAAGTTAAAGTTGAATCGGCT ATTTCTTGTATTATAATCATGTACGTCAGTAACAAGATCGAAGTTGGATC GAATATAATGATTCGACCTAGTATGATATATTTTATGCACGTGATGCAAT ACGAGTTGTTTTGATCTTTGGTCGACTTCAAGAAAACCAGCTTTAGAAAG TTCGCTGTAGCCAACATGAGTTCTTGCCTTGGACTAGAACAGTTGATAAA TCTCACCATTTTGTTCTTTAAGATGGGTAGAAGAATCCCTGCAATCTAAA TGGTCAATTACTGTGAAGTTATTTTTACTGGATGCACCCAATAttttttt gataatttttttttctttgataatttttttctttttctttaataaatttt ttggataatttttttttggataaatagttcttttttgataattctaataa tttttttatttattttttttttttctataattttttttaaaaaatttatt aatttttaattaaaaaaaaaataaGAGTTAACAGATTAAGGGAAACTGAC AATTCAAAAAAAAAAAAAA >Scaffold9310 GCGGGGGCTGGGGAGGAAGGGGTGGCGTTATTTCACTTCCGATCTAATAC GCTTTCTTAAGACACTGAAATATCAGTAGGTATTGGTATAGAGAATTACT TTTTATTTTTAATTAAAACATTATCGAAATGAAGATACAGAGAAAAACGA TGAGATGTAAGAAGTGCGCGTATTTAtgtgtgtgggtgcgtgtgtgtgtg tgtgtgtgtgttgtgtgcgtgcgtgtgtgtggtggtgtgtACTAATTTTG ATGTGTGTTGTGGCACAATTGCAATCATCAGTATCTTCATGAAAATGATA ACCAGAAGCACAAAAAGGAGGgtgcgtgtgtgtgtgtgtgtgtttagtgt gcgtgcgtgtgagggtgtttaagtgtgtatgtCGGAAATGTGGCACAATT GCAATCATCTGTATCTTCATGAAAATGATAACCAGAAGAACAAAAAAAAA AAACATTGAGAGAACATGTTTTTTTGATGGAAGACAAGAAGTTCTCGTAA CGTAGGATCTCCGAGACATGATGGGGTCAACTTAAAAAGAGAGCAGTGAG AGGCATTTATATCGAAGGTCAGGGAAAGGCAAACAAAGAAAGAAAAAAAA AAGGCTCACAGGAGAACGAAAACACGGGCCAAAATAATAAACAGGAGCAA GTGAACGGGCAGTTTGGTAGCTACTTCATTTACCGGCTTTTAAaggtact atgtcccatttgcaggtcaaaaaaaatgaaaaagttaaattccaactgca tttgaaagataatactaatttacaacttccctaaaaaaggtggggcttga aaatgtcttcaagtgcggaaaataacgactattagttgtcaaatcgactt tagggCTATAGAGCCCAAAAGTAATAGTCTTGA >Scaffold11911 TTCTTGGCACCCCCCCCCCCCCCACACTCCTGCACTGAAGAACTACTCAA GTTTAAACTTTGCATTGCTTTTCTTTCTTTTTCAGTATTTTTTGCTTGGT ACATGTTTCTCTTAATATCTGTCGTATAGatttttaatatttttatttat atCTACGTCAATCTGGCTGttctttttcttgtcttctttttttttctctc tcttttttttcctcgtattttGTATTGATCCTTACCCTAGTTTTTGAACT TGAACAGCAATTTGCAGCACTCAAATTTCTTTAAAATTACCTTCTCTTAT TTGtctctgttcccctctccccccctctctctctctctctctctctctct ctctctctctttcATCTCCCATATCATAATTTGAAGTACCATCTATGGTG TTTTCAGATTGATCTTTCTTGCTTTCCCCACCCTCCCCCTTTATGCAGTT AATTTTCAGTCTATTTGTGTTTTCTGTGGTTGATTCTAATCATATTCTAA CTCTTATTTTACATTTTACTTCACTAACAACTGGTTTATTATATTTGTTA CTAATTTTGAATTAAACTATTTACCATTCTGAACGAACTGAAAGATTAAA GATCAAACTATCTATGAATAGAATGGTATTTCTTCAATTTATTCAAATTT CTCTCTCTTTAACCCCCTTTTTCTGCTTGCATTTTTATCCCTTTGCCGTG GACTTCACTGGATATTTTGCTTTGATGCCAATCCAACAATTTTGCATATA TTA fastx_toolkit-0.0.14/galaxy/test-data/fasta_formatter1.out000066400000000000000000000111531226234573700236500ustar00rootroot00000000000000>Scaffold3648 AGGAATGATGACTACAATGATCAACTTAACCTATCTATTTAATTTAGTTCCCTAATGTCAGGGACCTACCTGTTTTTGTTATGTTTGGGTTTTGTTGTTGTTGTTTTTTTAATCTGAAGGTATTGTGCATTATATGACCTGTAATACACAGTATAACTTTTCAAATACTTTTGTTTTACAACTTTTCTCTCTGGACTTATATTAAAGTCAATTTTAATGAACATGTAGTAAAAACTAATACATGTACATCTACAGTTTATTTATTTTTTTCTTCTTCTTTTTGTATTTCTTGTGTTACATTATTTCACTTCACGTTCATGTTACCAACCTTGCCCCCTTGCTTTCCATGCAAAAAAAGAAAAAAAAGAAGCAATACTTACACTTACCCTTGAGATATCTTGATCTGAATGCTTTAACATTCTATATGTACAATAAATTTTTGTATCTATAGCCTATTATTATATATGTTGCTATGTCAGGCACATTGACAACATTCTCAGAAGGTTAGAAGATGGTATTGTTCTGAAATGCCTGGAATGCCTTGTGAACTAAGATGATTACTCATGTCATTAAAGTCCCCTAACCCAGGTATTTCCTCCTTCCCATGACGAAAACAGTCCATTTAAACTTCACCCCACTTTGGACCCGAAAGTGGGGTGCATTTTGGTGGTAAGCTCACCACAGAGCAAGAGAGAGTTAGAGTCCCTAATCTGCAGTGTAAACAAACTTTGCCAGGACATCACCAGCCCAACCTTGATAAGTACTGCTTGGAACTCCTCCATGATGTTCTAGTCTTATTCGCAGTCTCATATAGGTTCGGATTTTGTCCATTCTCATAGCTACCAGTATACATGGGAGATGCCAGTTTCATCTTCCTTGCTTCACTTTATAAGCATAGTTATATCANGAACTTCCTGGTTATAATTATGTTCCTTTCAAGTTTCATCATAATTGTCTAGTTCGATATAGTACATGGACACAATTAAATATGATATTGTCT >Scaffold9299 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAGTCTTCGGTCATAACACAAACCCAGACCTACGTATATGACAAAGCTAATAGGAAAAGCATCCTTGTTTGTTTCACTATGCTTTTTAATGGTTGACGTTAAaggtaaagaccagtattggaaacgccccaatttcaaaaaatgaaatggaagctctcattaccaatcatgtgaaagaatatgttttgactaatacatgatgataaaaaaattgccgggaaaccgcctactaattcatatatttagtaaatttgtttctctcatggtctgtgagagatatagggtagtcccatatacatctttctgtgtatagtgcttgtaactttacgaagaatgggccaaatttcttatcattttgatgattccagaaccttgcagatgcgagatggtagatgatcaaccttttctgatcgattccataacgtttctttcacaatgcaatcgcatgaccataactggtctttacctTTAAGTTGTAGGTCTTAATTGATAACACTATATAGTTTTTTTCTTTTTACTGTTTTTATTAATGACCTCTGTAATTTGCCCTATTGTGAAAATACTAAAATATGTTTATACGCCGATGATGCGGCAATATTTTGCCAAGGCAAAGAAATTGCCCTTGTTGAGAAAACTCTTAAATGTGAGTTTAAAAAAATAGTTGATCACATTGAAAAAGATGACTTAATGTTGAATATCAAGAAGTGTAAGATCATGTTATTTGGGACAAGAAAACGAATCAAAAATCAAAGTGTACGCTTGATTTACAGAGATAATGTTATCGAAGTTGTAAATGAATTTAAATATCTTGGTGTATTATTTGATAATTATTTAAAGTGGGATATACATATATCGAAAACTGCCTCCAAAATATCTAGAACCATATCATGTATAAAACGAATTAAATATTATTTGCCGAAAAGAATTTTAAAATTGTTATATGATAGTTTGATATTGTCACATATTGACTACGGTATTGTTTTGTGGGGATGTTCAGCAAAGTGTCATTTGGAAAAGTTACAAAAGTTACAAAATCGTTATGCCCGTTTAATACTAAACGTAGATATTTTGACACCTCGTATTATATTATTATCCTCTCTAAGATGGCAATCAGTTGTTCAGAGAGTGCAATACCAA >Scaffold9309 GAAGGAAGAAGAGGAAAATAATGATGAATTTGTAGAATTTCTATAACGTATGAAAACATAAACAACATGAAAAAGTATGAACCGACAGAAGAATGAAAATTTCAATCATATAACATGTCATTCACTTCTCTTCTCTGACTGTCAAGTATTAGGTATTCCTTTTTATTTCCTCTTAAAATGATCATAGTTTCCTATTTCTTTTACACCATTGGGAAGGGAATTCCAATGTTTTATGGCATTGTAATAAAACGAATTTCCAATACTACCTACTCTTTCTGGTAAGTTAAAGTTGAATCGGCTATTTCTTGTATTATAATCATGTACGTCAGTAACAAGATCGAAGTTGGATCGAATATAATGATTCGACCTAGTATGATATATTTTATGCACGTGATGCAATACGAGTTGTTTTGATCTTTGGTCGACTTCAAGAAAACCAGCTTTAGAAAGTTCGCTGTAGCCAACATGAGTTCTTGCCTTGGACTAGAACAGTTGATAAATCTCACCATTTTGTTCTTTAAGATGGGTAGAAGAATCCCTGCAATCTAAATGGTCAATTACTGTGAAGTTATTTTTACTGGATGCACCCAATAtttttttgataatttttttttctttgataatttttttctttttctttaataaattttttggataatttttttttggataaatagttcttttttgataattctaataatttttttatttattttttttttttctataattttttttaaaaaatttattaatttttaattaaaaaaaaaataaGAGTTAACAGATTAAGGGAAACTGACAATTCAAAAAAAAAAAAAA >Scaffold9310 GCGGGGGCTGGGGAGGAAGGGGTGGCGTTATTTCACTTCCGATCTAATACGCTTTCTTAAGACACTGAAATATCAGTAGGTATTGGTATAGAGAATTACTTTTTATTTTTAATTAAAACATTATCGAAATGAAGATACAGAGAAAAACGATGAGATGTAAGAAGTGCGCGTATTTAtgtgtgtgggtgcgtgtgtgtgtgtgtgtgtgtgttgtgtgcgtgcgtgtgtgtggtggtgtgtACTAATTTTGATGTGTGTTGTGGCACAATTGCAATCATCAGTATCTTCATGAAAATGATAACCAGAAGCACAAAAAGGAGGgtgcgtgtgtgtgtgtgtgtgtttagtgtgcgtgcgtgtgagggtgtttaagtgtgtatgtCGGAAATGTGGCACAATTGCAATCATCTGTATCTTCATGAAAATGATAACCAGAAGAACAAAAAAAAAAAACATTGAGAGAACATGTTTTTTTGATGGAAGACAAGAAGTTCTCGTAACGTAGGATCTCCGAGACATGATGGGGTCAACTTAAAAAGAGAGCAGTGAGAGGCATTTATATCGAAGGTCAGGGAAAGGCAAACAAAGAAAGAAAAAAAAAAGGCTCACAGGAGAACGAAAACACGGGCCAAAATAATAAACAGGAGCAAGTGAACGGGCAGTTTGGTAGCTACTTCATTTACCGGCTTTTAAaggtactatgtcccatttgcaggtcaaaaaaaatgaaaaagttaaattccaactgcatttgaaagataatactaatttacaacttccctaaaaaaggtggggcttgaaaatgtcttcaagtgcggaaaataacgactattagttgtcaaatcgactttagggCTATAGAGCCCAAAAGTAATAGTCTTGA >Scaffold11911 TTCTTGGCACCCCCCCCCCCCCCACACTCCTGCACTGAAGAACTACTCAAGTTTAAACTTTGCATTGCTTTTCTTTCTTTTTCAGTATTTTTTGCTTGGTACATGTTTCTCTTAATATCTGTCGTATAGatttttaatatttttatttatatCTACGTCAATCTGGCTGttctttttcttgtcttctttttttttctctctcttttttttcctcgtattttGTATTGATCCTTACCCTAGTTTTTGAACTTGAACAGCAATTTGCAGCACTCAAATTTCTTTAAAATTACCTTCTCTTATTTGtctctgttcccctctccccccctctctctctctctctctctctctctctctctctctttcATCTCCCATATCATAATTTGAAGTACCATCTATGGTGTTTTCAGATTGATCTTTCTTGCTTTCCCCACCCTCCCCCTTTATGCAGTTAATTTTCAGTCTATTTGTGTTTTCTGTGGTTGATTCTAATCATATTCTAACTCTTATTTTACATTTTACTTCACTAACAACTGGTTTATTATATTTGTTACTAATTTTGAATTAAACTATTTACCATTCTGAACGAACTGAAAGATTAAAGATCAAACTATCTATGAATAGAATGGTATTTCTTCAATTTATTCAAATTTCTCTCTCTTTAACCCCCTTTTTCTGCTTGCATTTTTATCCCTTTGCCGTGGACTTCACTGGATATTTTGCTTTGATGCCAATCCAACAATTTTGCATATATTA fastx_toolkit-0.0.14/galaxy/test-data/fasta_formatter2.out000066400000000000000000000112651226234573700236550ustar00rootroot00000000000000>Scaffold3648 AGGAATGATGACTACAATGATCAACTTAACCTATCTATTTAATTTAGTTCCCTAATGTCA GGGACCTACCTGTTTTTGTTATGTTTGGGTTTTGTTGTTGTTGTTTTTTTAATCTGAAGG TATTGTGCATTATATGACCTGTAATACACAGTATAACTTTTCAAATACTTTTGTTTTACA ACTTTTCTCTCTGGACTTATATTAAAGTCAATTTTAATGAACATGTAGTAAAAACTAATA CATGTACATCTACAGTTTATTTATTTTTTTCTTCTTCTTTTTGTATTTCTTGTGTTACAT TATTTCACTTCACGTTCATGTTACCAACCTTGCCCCCTTGCTTTCCATGCAAAAAAAGAA AAAAAAGAAGCAATACTTACACTTACCCTTGAGATATCTTGATCTGAATGCTTTAACATT CTATATGTACAATAAATTTTTGTATCTATAGCCTATTATTATATATGTTGCTATGTCAGG CACATTGACAACATTCTCAGAAGGTTAGAAGATGGTATTGTTCTGAAATGCCTGGAATGC CTTGTGAACTAAGATGATTACTCATGTCATTAAAGTCCCCTAACCCAGGTATTTCCTCCT TCCCATGACGAAAACAGTCCATTTAAACTTCACCCCACTTTGGACCCGAAAGTGGGGTGC ATTTTGGTGGTAAGCTCACCACAGAGCAAGAGAGAGTTAGAGTCCCTAATCTGCAGTGTA AACAAACTTTGCCAGGACATCACCAGCCCAACCTTGATAAGTACTGCTTGGAACTCCTCC ATGATGTTCTAGTCTTATTCGCAGTCTCATATAGGTTCGGATTTTGTCCATTCTCATAGC TACCAGTATACATGGGAGATGCCAGTTTCATCTTCCTTGCTTCACTTTATAAGCATAGTT ATATCANGAACTTCCTGGTTATAATTATGTTCCTTTCAAGTTTCATCATAATTGTCTAGT TCGATATAGTACATGGACACAATTAAATATGATATTGTCT >Scaffold9299 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAGTCTTCGGTCA TAACACAAACCCAGACCTACGTATATGACAAAGCTAATAGGAAAAGCATCCTTGTTTGTT TCACTATGCTTTTTAATGGTTGACGTTAAaggtaaagaccagtattggaaacgccccaat ttcaaaaaatgaaatggaagctctcattaccaatcatgtgaaagaatatgttttgactaa tacatgatgataaaaaaattgccgggaaaccgcctactaattcatatatttagtaaattt gtttctctcatggtctgtgagagatatagggtagtcccatatacatctttctgtgtatag tgcttgtaactttacgaagaatgggccaaatttcttatcattttgatgattccagaacct tgcagatgcgagatggtagatgatcaaccttttctgatcgattccataacgtttctttca caatgcaatcgcatgaccataactggtctttacctTTAAGTTGTAGGTCTTAATTGATAA CACTATATAGTTTTTTTCTTTTTACTGTTTTTATTAATGACCTCTGTAATTTGCCCTATT GTGAAAATACTAAAATATGTTTATACGCCGATGATGCGGCAATATTTTGCCAAGGCAAAG AAATTGCCCTTGTTGAGAAAACTCTTAAATGTGAGTTTAAAAAAATAGTTGATCACATTG AAAAAGATGACTTAATGTTGAATATCAAGAAGTGTAAGATCATGTTATTTGGGACAAGAA AACGAATCAAAAATCAAAGTGTACGCTTGATTTACAGAGATAATGTTATCGAAGTTGTAA ATGAATTTAAATATCTTGGTGTATTATTTGATAATTATTTAAAGTGGGATATACATATAT CGAAAACTGCCTCCAAAATATCTAGAACCATATCATGTATAAAACGAATTAAATATTATT TGCCGAAAAGAATTTTAAAATTGTTATATGATAGTTTGATATTGTCACATATTGACTACG GTATTGTTTTGTGGGGATGTTCAGCAAAGTGTCATTTGGAAAAGTTACAAAAGTTACAAA ATCGTTATGCCCGTTTAATACTAAACGTAGATATTTTGACACCTCGTATTATATTATTAT CCTCTCTAAGATGGCAATCAGTTGTTCAGAGAGTGCAATACCAA >Scaffold9309 GAAGGAAGAAGAGGAAAATAATGATGAATTTGTAGAATTTCTATAACGTATGAAAACATA AACAACATGAAAAAGTATGAACCGACAGAAGAATGAAAATTTCAATCATATAACATGTCA TTCACTTCTCTTCTCTGACTGTCAAGTATTAGGTATTCCTTTTTATTTCCTCTTAAAATG ATCATAGTTTCCTATTTCTTTTACACCATTGGGAAGGGAATTCCAATGTTTTATGGCATT GTAATAAAACGAATTTCCAATACTACCTACTCTTTCTGGTAAGTTAAAGTTGAATCGGCT ATTTCTTGTATTATAATCATGTACGTCAGTAACAAGATCGAAGTTGGATCGAATATAATG ATTCGACCTAGTATGATATATTTTATGCACGTGATGCAATACGAGTTGTTTTGATCTTTG GTCGACTTCAAGAAAACCAGCTTTAGAAAGTTCGCTGTAGCCAACATGAGTTCTTGCCTT GGACTAGAACAGTTGATAAATCTCACCATTTTGTTCTTTAAGATGGGTAGAAGAATCCCT GCAATCTAAATGGTCAATTACTGTGAAGTTATTTTTACTGGATGCACCCAATAttttttt gataatttttttttctttgataatttttttctttttctttaataaattttttggataatt tttttttggataaatagttcttttttgataattctaataatttttttatttatttttttt ttttctataattttttttaaaaaatttattaatttttaattaaaaaaaaaataaGAGTTA ACAGATTAAGGGAAACTGACAATTCAAAAAAAAAAAAAA >Scaffold9310 GCGGGGGCTGGGGAGGAAGGGGTGGCGTTATTTCACTTCCGATCTAATACGCTTTCTTAA GACACTGAAATATCAGTAGGTATTGGTATAGAGAATTACTTTTTATTTTTAATTAAAACA TTATCGAAATGAAGATACAGAGAAAAACGATGAGATGTAAGAAGTGCGCGTATTTAtgtg tgtgggtgcgtgtgtgtgtgtgtgtgtgtgttgtgtgcgtgcgtgtgtgtggtggtgtgt ACTAATTTTGATGTGTGTTGTGGCACAATTGCAATCATCAGTATCTTCATGAAAATGATA ACCAGAAGCACAAAAAGGAGGgtgcgtgtgtgtgtgtgtgtgtttagtgtgcgtgcgtgt gagggtgtttaagtgtgtatgtCGGAAATGTGGCACAATTGCAATCATCTGTATCTTCAT GAAAATGATAACCAGAAGAACAAAAAAAAAAAACATTGAGAGAACATGTTTTTTTGATGG AAGACAAGAAGTTCTCGTAACGTAGGATCTCCGAGACATGATGGGGTCAACTTAAAAAGA GAGCAGTGAGAGGCATTTATATCGAAGGTCAGGGAAAGGCAAACAAAGAAAGAAAAAAAA AAGGCTCACAGGAGAACGAAAACACGGGCCAAAATAATAAACAGGAGCAAGTGAACGGGC AGTTTGGTAGCTACTTCATTTACCGGCTTTTAAaggtactatgtcccatttgcaggtcaa aaaaaatgaaaaagttaaattccaactgcatttgaaagataatactaatttacaacttcc ctaaaaaaggtggggcttgaaaatgtcttcaagtgcggaaaataacgactattagttgtc aaatcgactttagggCTATAGAGCCCAAAAGTAATAGTCTTGA >Scaffold11911 TTCTTGGCACCCCCCCCCCCCCCACACTCCTGCACTGAAGAACTACTCAAGTTTAAACTT TGCATTGCTTTTCTTTCTTTTTCAGTATTTTTTGCTTGGTACATGTTTCTCTTAATATCT GTCGTATAGatttttaatatttttatttatatCTACGTCAATCTGGCTGttctttttctt gtcttctttttttttctctctcttttttttcctcgtattttGTATTGATCCTTACCCTAG TTTTTGAACTTGAACAGCAATTTGCAGCACTCAAATTTCTTTAAAATTACCTTCTCTTAT TTGtctctgttcccctctccccccctctctctctctctctctctctctctctctctctct ttcATCTCCCATATCATAATTTGAAGTACCATCTATGGTGTTTTCAGATTGATCTTTCTT GCTTTCCCCACCCTCCCCCTTTATGCAGTTAATTTTCAGTCTATTTGTGTTTTCTGTGGT TGATTCTAATCATATTCTAACTCTTATTTTACATTTTACTTCACTAACAACTGGTTTATT ATATTTGTTACTAATTTTGAATTAAACTATTTACCATTCTGAACGAACTGAAAGATTAAA GATCAAACTATCTATGAATAGAATGGTATTTCTTCAATTTATTCAAATTTCTCTCTCTTT AACCCCCTTTTTCTGCTTGCATTTTTATCCCTTTGCCGTGGACTTCACTGGATATTTTGC TTTGATGCCAATCCAACAATTTTGCATATATTA fastx_toolkit-0.0.14/galaxy/test-data/fasta_nuc_changer1.fasta000066400000000000000000000036341226234573700244150ustar00rootroot00000000000000>cel-let-7 MIMAT0000001 Caenorhabditis elegans let-7 TGAGGTAGTAGGTTGTATAGTT >cel-lin-4 MIMAT0000002 Caenorhabditis elegans lin-4 TCCCTGAGACCTCAAGTGTGA >cel-miR-1 MIMAT0000003 Caenorhabditis elegans miR-1 TGGAATGTAAAGAAGTATGTA >cel-miR-2 MIMAT0000004 Caenorhabditis elegans miR-2 TATCACAGCCAGCTTTGATGTGC >cel-miR-34 MIMAT0000005 Caenorhabditis elegans miR-34 AGGCAGTGTGGTTAGCTGGTTG >cel-miR-35 MIMAT0000006 Caenorhabditis elegans miR-35 TCACCGGGTGGAAACTAGCAGT >cel-miR-36 MIMAT0000007 Caenorhabditis elegans miR-36 TCACCGGGTGAAAATTCGCATG >cel-miR-37 MIMAT0000008 Caenorhabditis elegans miR-37 TCACCGGGTGAACACTTGCAGT >cel-miR-38 MIMAT0000009 Caenorhabditis elegans miR-38 TCACCGGGAGAAAAACTGGAGT >cel-miR-39 MIMAT0000010 Caenorhabditis elegans miR-39 TCACCGGGTGTAAATCAGCTTG >cel-miR-40 MIMAT0000011 Caenorhabditis elegans miR-40 TCACCGGGTGTACATCAGCTAA >cel-miR-41 MIMAT0000012 Caenorhabditis elegans miR-41 TCACCGGGTGAAAAATCACCTA >cel-miR-42 MIMAT0000013 Caenorhabditis elegans miR-42 TCACCGGGTTAACATCTACAGA >cel-miR-43 MIMAT0000014 Caenorhabditis elegans miR-43 TATCACAGTTTACTTGCTGTCGC >cel-miR-44 MIMAT0000015 Caenorhabditis elegans miR-44 TGACTAGAGACACATTCAGCT >cel-miR-45 MIMAT0000016 Caenorhabditis elegans miR-45 TGACTAGAGACACATTCAGCT >cel-miR-46 MIMAT0000017 Caenorhabditis elegans miR-46 TGTCATGGAGTCGCTCTCTTCA >cel-miR-47 MIMAT0000018 Caenorhabditis elegans miR-47 TGTCATGGAGGCGCTCTCTTCA >cel-miR-48 MIMAT0000019 Caenorhabditis elegans miR-48 TGAGGTAGGCTCAGTAGATGCGA >cel-miR-49 MIMAT0000020 Caenorhabditis elegans miR-49 AAGCACCACGAGAAGCTGCAGA >cel-miR-50 MIMAT0000021 Caenorhabditis elegans miR-50 TGATATGTCTGGTATTCTTGGG >cel-miR-51 MIMAT0000022 Caenorhabditis elegans miR-51 TACCCGTAGCTCCTATCCATGTT >cel-miR-52 MIMAT0000023 Caenorhabditis elegans miR-52 CACCCGTACATATGTTTCCGTGCT >cel-miR-53 MIMAT0000024 Caenorhabditis elegans miR-53 CACCCGTACATTTGTTTCCGTGCT >cel-miR-54 MIMAT0000025 Caenorhabditis elegans miR-54 TACCCGTAATCTTCATAATCCGAG fastx_toolkit-0.0.14/galaxy/test-data/fasta_nuc_changer1.out000066400000000000000000000036341226234573700241260ustar00rootroot00000000000000>cel-let-7 MIMAT0000001 Caenorhabditis elegans let-7 UGAGGUAGUAGGUUGUAUAGUU >cel-lin-4 MIMAT0000002 Caenorhabditis elegans lin-4 UCCCUGAGACCUCAAGUGUGA >cel-miR-1 MIMAT0000003 Caenorhabditis elegans miR-1 UGGAAUGUAAAGAAGUAUGUA >cel-miR-2 MIMAT0000004 Caenorhabditis elegans miR-2 UAUCACAGCCAGCUUUGAUGUGC >cel-miR-34 MIMAT0000005 Caenorhabditis elegans miR-34 AGGCAGUGUGGUUAGCUGGUUG >cel-miR-35 MIMAT0000006 Caenorhabditis elegans miR-35 UCACCGGGUGGAAACUAGCAGU >cel-miR-36 MIMAT0000007 Caenorhabditis elegans miR-36 UCACCGGGUGAAAAUUCGCAUG >cel-miR-37 MIMAT0000008 Caenorhabditis elegans miR-37 UCACCGGGUGAACACUUGCAGU >cel-miR-38 MIMAT0000009 Caenorhabditis elegans miR-38 UCACCGGGAGAAAAACUGGAGU >cel-miR-39 MIMAT0000010 Caenorhabditis elegans miR-39 UCACCGGGUGUAAAUCAGCUUG >cel-miR-40 MIMAT0000011 Caenorhabditis elegans miR-40 UCACCGGGUGUACAUCAGCUAA >cel-miR-41 MIMAT0000012 Caenorhabditis elegans miR-41 UCACCGGGUGAAAAAUCACCUA >cel-miR-42 MIMAT0000013 Caenorhabditis elegans miR-42 UCACCGGGUUAACAUCUACAGA >cel-miR-43 MIMAT0000014 Caenorhabditis elegans miR-43 UAUCACAGUUUACUUGCUGUCGC >cel-miR-44 MIMAT0000015 Caenorhabditis elegans miR-44 UGACUAGAGACACAUUCAGCU >cel-miR-45 MIMAT0000016 Caenorhabditis elegans miR-45 UGACUAGAGACACAUUCAGCU >cel-miR-46 MIMAT0000017 Caenorhabditis elegans miR-46 UGUCAUGGAGUCGCUCUCUUCA >cel-miR-47 MIMAT0000018 Caenorhabditis elegans miR-47 UGUCAUGGAGGCGCUCUCUUCA >cel-miR-48 MIMAT0000019 Caenorhabditis elegans miR-48 UGAGGUAGGCUCAGUAGAUGCGA >cel-miR-49 MIMAT0000020 Caenorhabditis elegans miR-49 AAGCACCACGAGAAGCUGCAGA >cel-miR-50 MIMAT0000021 Caenorhabditis elegans miR-50 UGAUAUGUCUGGUAUUCUUGGG >cel-miR-51 MIMAT0000022 Caenorhabditis elegans miR-51 UACCCGUAGCUCCUAUCCAUGUU >cel-miR-52 MIMAT0000023 Caenorhabditis elegans miR-52 CACCCGUACAUAUGUUUCCGUGCU >cel-miR-53 MIMAT0000024 Caenorhabditis elegans miR-53 CACCCGUACAUUUGUUUCCGUGCU >cel-miR-54 MIMAT0000025 Caenorhabditis elegans miR-54 UACCCGUAAUCUUCAUAAUCCGAG fastx_toolkit-0.0.14/galaxy/test-data/fasta_nuc_changer2.fasta000066400000000000000000000036341226234573700244160ustar00rootroot00000000000000>cel-let-7 MIMAT0000001 Caenorhabditis elegans let-7 UGAGGUAGUAGGUUGUAUAGUU >cel-lin-4 MIMAT0000002 Caenorhabditis elegans lin-4 UCCCUGAGACCUCAAGUGUGA >cel-miR-1 MIMAT0000003 Caenorhabditis elegans miR-1 UGGAAUGUAAAGAAGUAUGUA >cel-miR-2 MIMAT0000004 Caenorhabditis elegans miR-2 UAUCACAGCCAGCUUUGAUGUGC >cel-miR-34 MIMAT0000005 Caenorhabditis elegans miR-34 AGGCAGUGUGGUUAGCUGGUUG >cel-miR-35 MIMAT0000006 Caenorhabditis elegans miR-35 UCACCGGGUGGAAACUAGCAGU >cel-miR-36 MIMAT0000007 Caenorhabditis elegans miR-36 UCACCGGGUGAAAAUUCGCAUG >cel-miR-37 MIMAT0000008 Caenorhabditis elegans miR-37 UCACCGGGUGAACACUUGCAGU >cel-miR-38 MIMAT0000009 Caenorhabditis elegans miR-38 UCACCGGGAGAAAAACUGGAGU >cel-miR-39 MIMAT0000010 Caenorhabditis elegans miR-39 UCACCGGGUGUAAAUCAGCUUG >cel-miR-40 MIMAT0000011 Caenorhabditis elegans miR-40 UCACCGGGUGUACAUCAGCUAA >cel-miR-41 MIMAT0000012 Caenorhabditis elegans miR-41 UCACCGGGUGAAAAAUCACCUA >cel-miR-42 MIMAT0000013 Caenorhabditis elegans miR-42 UCACCGGGUUAACAUCUACAGA >cel-miR-43 MIMAT0000014 Caenorhabditis elegans miR-43 UAUCACAGUUUACUUGCUGUCGC >cel-miR-44 MIMAT0000015 Caenorhabditis elegans miR-44 UGACUAGAGACACAUUCAGCU >cel-miR-45 MIMAT0000016 Caenorhabditis elegans miR-45 UGACUAGAGACACAUUCAGCU >cel-miR-46 MIMAT0000017 Caenorhabditis elegans miR-46 UGUCAUGGAGUCGCUCUCUUCA >cel-miR-47 MIMAT0000018 Caenorhabditis elegans miR-47 UGUCAUGGAGGCGCUCUCUUCA >cel-miR-48 MIMAT0000019 Caenorhabditis elegans miR-48 UGAGGUAGGCUCAGUAGAUGCGA >cel-miR-49 MIMAT0000020 Caenorhabditis elegans miR-49 AAGCACCACGAGAAGCUGCAGA >cel-miR-50 MIMAT0000021 Caenorhabditis elegans miR-50 UGAUAUGUCUGGUAUUCUUGGG >cel-miR-51 MIMAT0000022 Caenorhabditis elegans miR-51 UACCCGUAGCUCCUAUCCAUGUU >cel-miR-52 MIMAT0000023 Caenorhabditis elegans miR-52 CACCCGUACAUAUGUUUCCGUGCU >cel-miR-53 MIMAT0000024 Caenorhabditis elegans miR-53 CACCCGUACAUUUGUUUCCGUGCU >cel-miR-54 MIMAT0000025 Caenorhabditis elegans miR-54 UACCCGUAAUCUUCAUAAUCCGAG fastx_toolkit-0.0.14/galaxy/test-data/fasta_nuc_changer2.out000066400000000000000000000036341226234573700241270ustar00rootroot00000000000000>cel-let-7 MIMAT0000001 Caenorhabditis elegans let-7 TGAGGTAGTAGGTTGTATAGTT >cel-lin-4 MIMAT0000002 Caenorhabditis elegans lin-4 TCCCTGAGACCTCAAGTGTGA >cel-miR-1 MIMAT0000003 Caenorhabditis elegans miR-1 TGGAATGTAAAGAAGTATGTA >cel-miR-2 MIMAT0000004 Caenorhabditis elegans miR-2 TATCACAGCCAGCTTTGATGTGC >cel-miR-34 MIMAT0000005 Caenorhabditis elegans miR-34 AGGCAGTGTGGTTAGCTGGTTG >cel-miR-35 MIMAT0000006 Caenorhabditis elegans miR-35 TCACCGGGTGGAAACTAGCAGT >cel-miR-36 MIMAT0000007 Caenorhabditis elegans miR-36 TCACCGGGTGAAAATTCGCATG >cel-miR-37 MIMAT0000008 Caenorhabditis elegans miR-37 TCACCGGGTGAACACTTGCAGT >cel-miR-38 MIMAT0000009 Caenorhabditis elegans miR-38 TCACCGGGAGAAAAACTGGAGT >cel-miR-39 MIMAT0000010 Caenorhabditis elegans miR-39 TCACCGGGTGTAAATCAGCTTG >cel-miR-40 MIMAT0000011 Caenorhabditis elegans miR-40 TCACCGGGTGTACATCAGCTAA >cel-miR-41 MIMAT0000012 Caenorhabditis elegans miR-41 TCACCGGGTGAAAAATCACCTA >cel-miR-42 MIMAT0000013 Caenorhabditis elegans miR-42 TCACCGGGTTAACATCTACAGA >cel-miR-43 MIMAT0000014 Caenorhabditis elegans miR-43 TATCACAGTTTACTTGCTGTCGC >cel-miR-44 MIMAT0000015 Caenorhabditis elegans miR-44 TGACTAGAGACACATTCAGCT >cel-miR-45 MIMAT0000016 Caenorhabditis elegans miR-45 TGACTAGAGACACATTCAGCT >cel-miR-46 MIMAT0000017 Caenorhabditis elegans miR-46 TGTCATGGAGTCGCTCTCTTCA >cel-miR-47 MIMAT0000018 Caenorhabditis elegans miR-47 TGTCATGGAGGCGCTCTCTTCA >cel-miR-48 MIMAT0000019 Caenorhabditis elegans miR-48 TGAGGTAGGCTCAGTAGATGCGA >cel-miR-49 MIMAT0000020 Caenorhabditis elegans miR-49 AAGCACCACGAGAAGCTGCAGA >cel-miR-50 MIMAT0000021 Caenorhabditis elegans miR-50 TGATATGTCTGGTATTCTTGGG >cel-miR-51 MIMAT0000022 Caenorhabditis elegans miR-51 TACCCGTAGCTCCTATCCATGTT >cel-miR-52 MIMAT0000023 Caenorhabditis elegans miR-52 CACCCGTACATATGTTTCCGTGCT >cel-miR-53 MIMAT0000024 Caenorhabditis elegans miR-53 CACCCGTACATTTGTTTCCGTGCT >cel-miR-54 MIMAT0000025 Caenorhabditis elegans miR-54 TACCCGTAATCTTCATAATCCGAG fastx_toolkit-0.0.14/galaxy/test-data/fasta_uncollapser1.fasta000066400000000000000000000005021226234573700244570ustar00rootroot00000000000000>1-15 AGTACAAGGACATGC >2-11 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >3-5 TTCAACGCCGCCGTGAAC >4-3 CTGCTGCGATCGGTGTGC >5-1 TCAAATTCTAGATTTTTACGG >6-1 ACCATTCGAGCATAC >7-1 TGATTTCCAGAGCCAAT >8-1 TTACCTCACGATATTGTAATA >9-1 TGTATTTACAATGACTAGAAA >10-1 CCTTGTAGTGGATTCTGATGA >11-1 CGATTGCCGAAGTCTACCA >12-1 ATGACTTCATCGTCCACCCTTTAGAACT fastx_toolkit-0.0.14/galaxy/test-data/fasta_uncollapser1.out000066400000000000000000000020621226234573700241730ustar00rootroot00000000000000>1 AGTACAAGGACATGC >2 AGTACAAGGACATGC >3 AGTACAAGGACATGC >4 AGTACAAGGACATGC >5 AGTACAAGGACATGC >6 AGTACAAGGACATGC >7 AGTACAAGGACATGC >8 AGTACAAGGACATGC >9 AGTACAAGGACATGC >10 AGTACAAGGACATGC >11 AGTACAAGGACATGC >12 AGTACAAGGACATGC >13 AGTACAAGGACATGC >14 AGTACAAGGACATGC >15 AGTACAAGGACATGC >16 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >17 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >18 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >19 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >20 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >21 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >22 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >23 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >24 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >25 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >26 ATTGCTGCTCGGATGGTCCGGCTGTGCACAC >27 TTCAACGCCGCCGTGAAC >28 TTCAACGCCGCCGTGAAC >29 TTCAACGCCGCCGTGAAC >30 TTCAACGCCGCCGTGAAC >31 TTCAACGCCGCCGTGAAC >32 CTGCTGCGATCGGTGTGC >33 CTGCTGCGATCGGTGTGC >34 CTGCTGCGATCGGTGTGC >35 TCAAATTCTAGATTTTTACGG >36 ACCATTCGAGCATAC >37 TGATTTCCAGAGCCAAT >38 TTACCTCACGATATTGTAATA >39 TGTATTTACAATGACTAGAAA >40 CCTTGTAGTGGATTCTGATGA >41 CGATTGCCGAAGTCTACCA >42 ATGACTTCATCGTCCACCCTTTAGAACT fastx_toolkit-0.0.14/galaxy/test-data/fastq_masker.fastq000066400000000000000000000022721226234573700233770ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_masker.out000066400000000000000000000022721226234573700230700ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACxCAxGACCGAxCCCCCxxxCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 xAATGCxTCxAxTxGxTTxxxxxCxxxxxxxxxxCT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCxGCxxGCGCxTCAGAGAGCCCCCCCCxxxxxxxx +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTxATAATATxGGAGACxxx +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACxxACAATTGGTTAxxxxxxxTAxxxx +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AxxxxxxxCCxxxxxxxxxxxxxxxxxxxxxxxxxx +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGxxxxxxACCCCCCxCCCCCCCCCxxxx +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACxxCAxTTGGTTxxxxxCCxxxTATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCxxxxxxxxxxTxxxxxxx +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_conv1.fastq000066400000000000000000000022721226234573700241650ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCCCCATGTC +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCTACTCATCCCAGTAGAGGCCCGTGGCC +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACACACACTCATCGTCGTCCCCCG +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACCC +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGGCGCTGTGGAGAGTGTCACACCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGACGCGGCCGCTCGCGCTCT +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_conv1.out000066400000000000000000000034441226234573700236600ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCCCCATGTC +CSHL_3_FC042AGLLWW:1:2:7:203 33 33 34 30 22 30 33 21 29 32 33 33 30 33 26 33 33 33 34 34 24 5 26 33 34 33 33 33 33 33 33 33 33 29 29 32 @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCTACTCATCCCAGTAGAGGCCCGTGGCC +CSHL_3_FC042AGLLWW:1:2:7:33 23 33 33 33 30 33 26 33 33 23 30 21 31 24 33 23 33 33 28 23 13 5 16 30 11 5 26 24 18 16 5 5 5 7 33 33 @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 33 31 13 30 33 28 21 33 33 33 31 13 31 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 22 28 26 21 7 21 21 18 @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 33 30 33 33 33 33 33 33 33 33 33 33 33 33 33 33 33 31 21 32 33 33 33 33 33 31 19 31 33 33 33 33 33 22 22 27 @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACACACACTCATCGTCGTCCCCCG +CSHL_3_FC042AGLLWW:1:2:7:292 34 33 34 33 33 33 33 33 33 33 21 13 33 33 33 33 33 33 33 33 33 33 33 28 24 5 21 21 5 16 31 29 21 5 18 5 @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACCC +CSHL_3_FC042AGLLWW:1:2:7:1819 33 28 28 17 22 22 22 12 33 33 12 15 5 24 21 23 21 21 5 11 21 21 12 5 13 21 5 21 21 11 21 12 9 17 13 21 @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 33 33 33 33 33 33 33 33 33 24 21 24 24 5 24 33 33 33 33 33 32 31 26 33 33 33 33 33 33 33 33 33 24 5 24 21 @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGGCGCTGTGGAGAGTGTCACACCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:8:624 33 33 27 19 30 32 24 32 33 33 31 29 29 15 15 24 13 21 30 31 27 13 21 31 33 33 33 33 33 33 33 33 33 33 33 33 @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGACGCGGCCGCTCGCGCTCT +CSHL_3_FC042AGLLWW:1:2:8:250 33 33 33 33 33 33 33 33 30 33 33 33 33 33 33 34 34 34 27 11 24 16 5 21 27 18 24 26 30 10 21 11 18 11 24 5 fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_conv1a.out000066400000000000000000000022721226234573700240170ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCCCCATGTC +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCTACTCATCCCAGTAGAGGCCCGTGGCC +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACACACACTCATCGTCGTCCCCCG +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACCC +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGGCGCTGTGGAGAGTGTCACACCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGACGCGGCCGCTCGCGCTCT +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_conv2.fastq000066400000000000000000000060541226234573700241700ustar00rootroot00000000000000@CSHL_3_FC0420AGLLKK:2:1:233:1674 GTTAGAGGGAATACACCCACTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:233:1674 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 32 40 40 40 40 16 20 25 9 21 37 40 40 16 29 26 30 @CSHL_3_FC0420AGLLKK:2:1:136:448 GTTCTCAGGACCCCTTCAGTAGTNGGCACCATCAA +CSHL_3_FC0420AGLLKK:2:1:136:448 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 -5 13 17 28 40 40 8 17 27 8 13 10 @CSHL_3_FC0420AGLLKK:2:1:237:1037 GTGATAGATTGTCTTGTTGTTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:237:1037 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 4 40 40 26 35 40 38 40 6 40 40 0 3 26 32 27 14 11 26 11 @CSHL_3_FC0420AGLLKK:2:1:1601:1525 AAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1601:1525 40 40 40 40 40 40 40 40 40 40 40 40 35 40 40 12 40 40 30 30 40 40 40 12 36 23 17 24 18 22 25 15 10 34 14 @CSHL_3_FC0420AGLLKK:2:1:1805:1464 GATGCGTTCGAGATGGGTGCGCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1805:1464 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 16 23 28 40 21 40 9 37 13 20 21 7 11 14 14 6 23 10 @CSHL_3_FC0420AGLLKK:2:1:1713:528 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1713:528 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 32 40 12 38 15 22 20 17 14 12 10 7 22 11 @CSHL_3_FC0420AGLLKK:2:1:126:1087 GAGATATTCGAATGCATCATCAGATGGCACCATCA +CSHL_3_FC0420AGLLKK:2:1:126:1087 40 40 40 40 40 40 40 40 40 40 40 40 40 40 25 40 40 40 40 40 40 40 31 40 40 11 10 23 40 13 12 17 37 17 22 @CSHL_3_FC0420AGLLKK:2:1:1488:1323 GTTTTTTCCCCTAATCTGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1488:1323 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 22 31 40 40 12 29 22 0 7 12 8 18 7 3 18 9 @CSHL_3_FC0420AGLLKK:2:1:913:199 GTTCAGTGTTGGTGCACTGTGTTNTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:913:199 40 40 39 40 40 40 40 40 40 40 40 40 4 40 40 24 34 20 33 21 36 32 40 -5 40 13 21 21 26 17 18 25 14 25 21 @CSHL_3_FC0420AGLLKK:2:1:1236:1157 AAAAAAAAAAAAAAAACAAAAAAAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1236:1157 40 40 40 40 40 40 40 40 40 40 40 40 40 35 40 40 40 40 40 33 40 37 40 40 40 18 16 20 23 22 31 26 10 22 19 @CSHL_3_FC0420AGLLKK:2:1:928:765 GTTTTCAGTTCGAGGTTCGTGCTNTAGGCATTATC +CSHL_3_FC0420AGLLKK:2:1:928:765 40 40 40 40 40 40 40 40 40 40 40 40 40 25 27 40 37 35 27 40 40 17 40 -5 36 11 19 15 19 16 11 12 12 23 11 @CSHL_3_FC0420AGLLKK:2:1:727:1020 GTAATATAGTTGATAAGAATCTGCAGAGAGAATCA +CSHL_3_FC0420AGLLKK:2:1:727:1020 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 30 40 40 24 18 38 33 26 16 23 22 16 18 @CSHL_3_FC0420AGLLKK:2:1:758:1799 GTAGAGACCCCCTAATAGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:758:1799 40 40 40 40 40 40 40 40 35 40 39 40 40 27 20 40 17 34 15 40 40 40 40 15 28 17 4 12 10 10 18 14 3 14 11 @CSHL_3_FC0420AGLLKK:2:1:1818:550 AAAAAAAAAAAAAAAACAAAAACAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1818:550 40 40 40 40 40 40 40 40 40 40 40 40 40 40 36 32 40 33 40 40 38 37 40 28 29 27 22 13 20 19 17 17 13 33 18 @CSHL_3_FC0420AGLLKK:2:1:1764:391 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CSHL_3_FC0420AGLLKK:2:1:1764:391 40 40 40 40 40 40 40 40 40 40 40 33 40 40 40 40 40 24 40 40 40 40 40 12 40 24 14 9 22 15 29 18 11 40 22 fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_conv2.out000066400000000000000000000040661226234573700236620ustar00rootroot00000000000000@CSHL_3_FC0420AGLLKK:2:1:233:1674 GTTAGAGGGAATACACCCACTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:233:1674 hhhhhhhhhhhhhhhhhh`hhhhPTYIUehhP]Z^ @CSHL_3_FC0420AGLLKK:2:1:136:448 GTTCTCAGGACCCCTTCAGTAGTNGGCACCATCAA +CSHL_3_FC0420AGLLKK:2:1:136:448 hhhhhhhhhhhhhhhhhhhhhhh;MQ\hhHQ[HMJ @CSHL_3_FC0420AGLLKK:2:1:237:1037 GTGATAGATTGTCTTGTTGTTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:237:1037 hhhhhhhhhhhhhhhDhhZchfhFhh@CZ`[NKZK @CSHL_3_FC0420AGLLKK:2:1:1601:1525 AAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1601:1525 hhhhhhhhhhhhchhLhh^^hhhLdWQXRVYOJbN @CSHL_3_FC0420AGLLKK:2:1:1805:1464 GATGCGTTCGAGATGGGTGCGCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1805:1464 hhhhhhhhhhhhhhhhhPW\hUhIeMTUGKNNFWJ @CSHL_3_FC0420AGLLKK:2:1:1713:528 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1713:528 hhhhhhhhhhhhhhhhhhhhh`hLfOVTQNLJGVK @CSHL_3_FC0420AGLLKK:2:1:126:1087 GAGATATTCGAATGCATCATCAGATGGCACCATCA +CSHL_3_FC0420AGLLKK:2:1:126:1087 hhhhhhhhhhhhhhYhhhhhhh_hhKJWhMLQeQV @CSHL_3_FC0420AGLLKK:2:1:1488:1323 GTTTTTTCCCCTAATCTGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1488:1323 hhhhhhhhhhhhhhhhhhgV_hhL]V@GLHRGCRI @CSHL_3_FC0420AGLLKK:2:1:913:199 GTTCAGTGTTGGTGCACTGTGTTNTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:913:199 hhghhhhhhhhhDhhXbTaUd`h;hMUUZQRYNYU @CSHL_3_FC0420AGLLKK:2:1:1236:1157 AAAAAAAAAAAAAAAACAAAAAAAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1236:1157 hhhhhhhhhhhhhchhhhhahehhhRPTWV_ZJVS @CSHL_3_FC0420AGLLKK:2:1:928:765 GTTTTCAGTTCGAGGTTCGTGCTNTAGGCATTATC +CSHL_3_FC0420AGLLKK:2:1:928:765 hhhhhhhhhhhhhY[hec[hhQh;dKSOSPKLLWK @CSHL_3_FC0420AGLLKK:2:1:727:1020 GTAATATAGTTGATAAGAATCTGCAGAGAGAATCA +CSHL_3_FC0420AGLLKK:2:1:727:1020 hhhhhhhhhhhhhhhhhhhhhh^hhXRfaZPWVPR @CSHL_3_FC0420AGLLKK:2:1:758:1799 GTAGAGACCCCCTAATAGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:758:1799 hhhhhhhhchghh[ThQbOhhhhO\QDLJJRNCNK @CSHL_3_FC0420AGLLKK:2:1:1818:550 AAAAAAAAAAAAAAAACAAAAACAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1818:550 hhhhhhhhhhhhhhd`hahhfeh\][VMTSQQMaR @CSHL_3_FC0420AGLLKK:2:1:1764:391 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CSHL_3_FC0420AGLLKK:2:1:1764:391 hhhhhhhhhhhahhhhhXhhhhhLhXNIVO]RKhV fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_conv2n.out000066400000000000000000000060541226234573700240370ustar00rootroot00000000000000@CSHL_3_FC0420AGLLKK:2:1:233:1674 GTTAGAGGGAATACACCCACTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:233:1674 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 32 40 40 40 40 16 20 25 9 21 37 40 40 16 29 26 30 @CSHL_3_FC0420AGLLKK:2:1:136:448 GTTCTCAGGACCCCTTCAGTAGTNGGCACCATCAA +CSHL_3_FC0420AGLLKK:2:1:136:448 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 -5 13 17 28 40 40 8 17 27 8 13 10 @CSHL_3_FC0420AGLLKK:2:1:237:1037 GTGATAGATTGTCTTGTTGTTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:237:1037 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 4 40 40 26 35 40 38 40 6 40 40 0 3 26 32 27 14 11 26 11 @CSHL_3_FC0420AGLLKK:2:1:1601:1525 AAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1601:1525 40 40 40 40 40 40 40 40 40 40 40 40 35 40 40 12 40 40 30 30 40 40 40 12 36 23 17 24 18 22 25 15 10 34 14 @CSHL_3_FC0420AGLLKK:2:1:1805:1464 GATGCGTTCGAGATGGGTGCGCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1805:1464 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 16 23 28 40 21 40 9 37 13 20 21 7 11 14 14 6 23 10 @CSHL_3_FC0420AGLLKK:2:1:1713:528 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1713:528 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 32 40 12 38 15 22 20 17 14 12 10 7 22 11 @CSHL_3_FC0420AGLLKK:2:1:126:1087 GAGATATTCGAATGCATCATCAGATGGCACCATCA +CSHL_3_FC0420AGLLKK:2:1:126:1087 40 40 40 40 40 40 40 40 40 40 40 40 40 40 25 40 40 40 40 40 40 40 31 40 40 11 10 23 40 13 12 17 37 17 22 @CSHL_3_FC0420AGLLKK:2:1:1488:1323 GTTTTTTCCCCTAATCTGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1488:1323 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 22 31 40 40 12 29 22 0 7 12 8 18 7 3 18 9 @CSHL_3_FC0420AGLLKK:2:1:913:199 GTTCAGTGTTGGTGCACTGTGTTNTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:913:199 40 40 39 40 40 40 40 40 40 40 40 40 4 40 40 24 34 20 33 21 36 32 40 -5 40 13 21 21 26 17 18 25 14 25 21 @CSHL_3_FC0420AGLLKK:2:1:1236:1157 AAAAAAAAAAAAAAAACAAAAAAAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1236:1157 40 40 40 40 40 40 40 40 40 40 40 40 40 35 40 40 40 40 40 33 40 37 40 40 40 18 16 20 23 22 31 26 10 22 19 @CSHL_3_FC0420AGLLKK:2:1:928:765 GTTTTCAGTTCGAGGTTCGTGCTNTAGGCATTATC +CSHL_3_FC0420AGLLKK:2:1:928:765 40 40 40 40 40 40 40 40 40 40 40 40 40 25 27 40 37 35 27 40 40 17 40 -5 36 11 19 15 19 16 11 12 12 23 11 @CSHL_3_FC0420AGLLKK:2:1:727:1020 GTAATATAGTTGATAAGAATCTGCAGAGAGAATCA +CSHL_3_FC0420AGLLKK:2:1:727:1020 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 30 40 40 24 18 38 33 26 16 23 22 16 18 @CSHL_3_FC0420AGLLKK:2:1:758:1799 GTAGAGACCCCCTAATAGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:758:1799 40 40 40 40 40 40 40 40 35 40 39 40 40 27 20 40 17 34 15 40 40 40 40 15 28 17 4 12 10 10 18 14 3 14 11 @CSHL_3_FC0420AGLLKK:2:1:1818:550 AAAAAAAAAAAAAAAACAAAAACAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1818:550 40 40 40 40 40 40 40 40 40 40 40 40 40 40 36 32 40 33 40 40 38 37 40 28 29 27 22 13 20 19 17 17 13 33 18 @CSHL_3_FC0420AGLLKK:2:1:1764:391 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CSHL_3_FC0420AGLLKK:2:1:1764:391 40 40 40 40 40 40 40 40 40 40 40 33 40 40 40 40 40 24 40 40 40 40 40 12 40 24 14 9 22 15 29 18 11 40 22 fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_filter1.fastq000066400000000000000000000022721226234573700245050ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaaaaaaaabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 aaaaaaaaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaZZZZZZUZUZaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_filter1a.out000066400000000000000000000002061226234573700243320ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fastx_toolkit-0.0.14/galaxy/test-data/fastq_qual_filter1b.out000066400000000000000000000014501226234573700243350ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaaaaaaaabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaZZZZZZUZUZaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fastx_toolkit-0.0.14/galaxy/test-data/fastq_quality_trimmer.fastq000066400000000000000000000022721226234573700253440ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_quality_trimmer.out000066400000000000000000000017741226234573700250430ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGAC +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaa @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCT +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_ @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_Zaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAAT +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^ fastx_toolkit-0.0.14/galaxy/test-data/fastq_stats1.fastq000066400000000000000000000022721226234573700233340ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_stats1.out000066400000000000000000000035271226234573700230310ustar00rootroot00000000000000column count min max sum mean Q1 med Q3 IQR lW rW A_Count C_Count G_Count T_Count N_Count Max_count 1 9 23 34 288 32.00 33 33 33 0 33 33 3 1 4 1 0 9 2 9 28 33 287 31.89 31 33 33 2 28 33 3 3 2 1 0 9 3 9 13 34 268 29.78 28 33 33 5 21 34 5 1 0 3 0 9 4 9 17 33 261 29.00 30 33 33 3 26 33 1 2 3 3 0 9 5 9 22 33 269 29.89 30 33 33 3 26 33 3 3 3 0 0 9 6 9 22 33 277 30.78 30 33 33 3 26 33 5 3 0 1 0 9 7 9 21 33 258 28.67 24 33 33 9 21 33 4 1 3 1 0 9 8 9 12 33 263 29.22 32 33 33 1 31 33 2 1 1 5 0 9 9 9 29 33 290 32.22 33 33 33 0 33 33 3 3 2 1 0 9 10 9 23 33 277 30.78 32 33 33 1 31 33 1 4 2 2 0 9 11 9 12 33 245 27.22 21 31 33 12 12 33 5 2 1 1 0 9 12 9 13 33 214 23.78 15 24 33 18 13 33 2 4 2 1 0 9 13 9 5 33 249 27.67 29 31 33 4 23 33 2 1 1 5 0 9 14 9 5 33 233 25.89 24 33 33 9 11 33 3 3 2 1 0 9 15 9 15 33 251 27.89 24 33 33 9 15 33 5 1 1 2 0 9 16 9 23 34 269 29.89 24 33 33 9 23 34 3 1 2 3 0 9 17 9 13 34 266 29.56 33 33 33 0 33 33 2 3 1 3 0 9 18 9 21 34 272 30.22 31 33 33 2 28 34 0 5 1 3 0 9 19 9 5 34 244 27.11 27 30 33 6 18 34 4 4 1 0 0 9 20 9 11 34 241 26.78 23 32 33 10 11 34 3 4 2 0 0 9 21 9 13 33 240 26.67 24 27 33 9 13 33 1 4 0 4 0 9 22 9 5 33 190 21.11 13 21 33 20 5 33 1 4 0 3 1 9 23 9 5 33 205 22.78 16 26 33 17 5 33 4 4 1 0 0 9 24 9 5 33 247 27.44 28 31 33 5 21 33 1 5 1 2 0 9 25 9 11 34 241 26.78 24 33 33 9 11 34 3 4 0 2 0 9 26 9 5 33 212 23.56 18 31 33 15 5 33 0 6 0 3 0 9 27 9 5 33 227 25.22 21 26 33 12 5 33 3 4 1 1 0 9 28 9 21 33 255 28.33 24 31 33 9 21 33 2 4 3 0 0 9 29 9 5 33 228 25.33 21 30 33 12 5 33 2 4 1 2 0 9 30 9 10 33 213 23.67 16 28 33 17 10 33 3 4 2 0 0 9 31 9 5 33 236 26.22 21 31 33 12 5 33 1 4 1 3 0 9 32 9 5 33 210 23.33 12 29 33 21 5 33 3 3 0 3 0 9 33 9 5 33 183 20.33 9 21 33 24 5 33 1 4 2 2 0 9 34 9 5 33 150 16.67 7 17 22 15 5 33 3 4 1 1 0 9 35 9 13 33 217 24.11 21 24 29 8 13 33 1 4 1 3 0 9 36 9 5 33 195 21.67 18 21 32 14 5 33 3 2 1 3 0 9 fastx_toolkit-0.0.14/galaxy/test-data/fastq_to_fasta1.fastq000066400000000000000000000022721226234573700237760ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastq_to_fasta1a.out000066400000000000000000000010321226234573700236210ustar00rootroot00000000000000>CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT >CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC >CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT >CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA >CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA >CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC >CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG >CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA fastx_toolkit-0.0.14/galaxy/test-data/fastq_to_fasta1b.out000066400000000000000000000005501226234573700236260ustar00rootroot00000000000000>1 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT >2 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT >3 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC >4 AATTATTTATTAAATTTTAATAATATGGGAGACACT >5 GGAGAAATACACACAATTGGTTAATCCCCCTATATA >6 AATTCAAACCACCCCAACCCACACACAGAGATACAA >7 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC >8 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG >9 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA fastx_toolkit-0.0.14/galaxy/test-data/fastx_artifacts1.fasta000066400000000000000000000015141226234573700241430ustar00rootroot00000000000000>CSHL_3_FC0420AGLLKK:2:1:233:1674 GTTAGAGGGAATACACCCACTCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:237:1037 GTGATAGATTGTCTTGTTGTTCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:1601:1525 AAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAA >CSHL_3_FC0420AGLLKK:2:1:1805:1464 GATGCGTTCGAGATGGGTGCGCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:1713:528 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA >CSHL_3_FC0420AGLLKK:2:1:126:1087 GAGATATTCGAATGCATCATCAGATGGCACCATCA >CSHL_3_FC0420AGLLKK:2:1:1488:1323 GTTTTTTCCCCTAATCTGAGTCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:1236:1157 AAAAAAAAAAAAAAAACAAAAAAAAAAAAAACAAA >CSHL_3_FC0420AGLLKK:2:1:727:1020 GTAATATAGTTGATAAGAATCTGCAGAGAGAATCA >CSHL_3_FC0420AGLLKK:2:1:758:1799 GTAGAGACCCCCTAATAGAGTCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:1818:550 AAAAAAAAAAAAAAAACAAAAACAAAAAAAACAAA >CSHL_3_FC0420AGLLKK:2:1:1764:391 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC fastx_toolkit-0.0.14/galaxy/test-data/fastx_artifacts1.out000066400000000000000000000007541226234573700236610ustar00rootroot00000000000000>CSHL_3_FC0420AGLLKK:2:1:233:1674 GTTAGAGGGAATACACCCACTCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:237:1037 GTGATAGATTGTCTTGTTGTTCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:1805:1464 GATGCGTTCGAGATGGGTGCGCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:126:1087 GAGATATTCGAATGCATCATCAGATGGCACCATCA >CSHL_3_FC0420AGLLKK:2:1:1488:1323 GTTTTTTCCCCTAATCTGAGTCTGTAGGCACCATC >CSHL_3_FC0420AGLLKK:2:1:727:1020 GTAATATAGTTGATAAGAATCTGCAGAGAGAATCA >CSHL_3_FC0420AGLLKK:2:1:758:1799 GTAGAGACCCCCTAATAGAGTCTGTAGGCACCATC fastx_toolkit-0.0.14/galaxy/test-data/fastx_artifacts2.fastq000066400000000000000000000060541226234573700241700ustar00rootroot00000000000000@CSHL_3_FC0420AGLLKK:2:1:233:1674 GTTAGAGGGAATACACCCACTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:233:1674 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 32 40 40 40 40 16 20 25 9 21 37 40 40 16 29 26 30 @CSHL_3_FC0420AGLLKK:2:1:136:448 GTTCTCAGGACCCCTTCAGTAGTNGGCACCATCAA +CSHL_3_FC0420AGLLKK:2:1:136:448 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 -5 13 17 28 40 40 8 17 27 8 13 10 @CSHL_3_FC0420AGLLKK:2:1:237:1037 GTGATAGATTGTCTTGTTGTTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:237:1037 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 4 40 40 26 35 40 38 40 6 40 40 0 3 26 32 27 14 11 26 11 @CSHL_3_FC0420AGLLKK:2:1:1601:1525 AAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1601:1525 40 40 40 40 40 40 40 40 40 40 40 40 35 40 40 12 40 40 30 30 40 40 40 12 36 23 17 24 18 22 25 15 10 34 14 @CSHL_3_FC0420AGLLKK:2:1:1805:1464 GATGCGTTCGAGATGGGTGCGCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1805:1464 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 16 23 28 40 21 40 9 37 13 20 21 7 11 14 14 6 23 10 @CSHL_3_FC0420AGLLKK:2:1:1713:528 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +CSHL_3_FC0420AGLLKK:2:1:1713:528 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 32 40 12 38 15 22 20 17 14 12 10 7 22 11 @CSHL_3_FC0420AGLLKK:2:1:126:1087 GAGATATTCGAATGCATCATCAGATGGCACCATCA +CSHL_3_FC0420AGLLKK:2:1:126:1087 40 40 40 40 40 40 40 40 40 40 40 40 40 40 25 40 40 40 40 40 40 40 31 40 40 11 10 23 40 13 12 17 37 17 22 @CSHL_3_FC0420AGLLKK:2:1:1488:1323 GTTTTTTCCCCTAATCTGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1488:1323 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 22 31 40 40 12 29 22 0 7 12 8 18 7 3 18 9 @CSHL_3_FC0420AGLLKK:2:1:913:199 GTTCAGTGTTGGTGCACTGTGTTNTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:913:199 40 40 39 40 40 40 40 40 40 40 40 40 4 40 40 24 34 20 33 21 36 32 40 -5 40 13 21 21 26 17 18 25 14 25 21 @CSHL_3_FC0420AGLLKK:2:1:1236:1157 AAAAAAAAAAAAAAAACAAAAAAAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1236:1157 40 40 40 40 40 40 40 40 40 40 40 40 40 35 40 40 40 40 40 33 40 37 40 40 40 18 16 20 23 22 31 26 10 22 19 @CSHL_3_FC0420AGLLKK:2:1:928:765 GTTTTCAGTTCGAGGTTCGTGCTNTAGGCATTATC +CSHL_3_FC0420AGLLKK:2:1:928:765 40 40 40 40 40 40 40 40 40 40 40 40 40 25 27 40 37 35 27 40 40 17 40 -5 36 11 19 15 19 16 11 12 12 23 11 @CSHL_3_FC0420AGLLKK:2:1:727:1020 GTAATATAGTTGATAAGAATCTGCAGAGAGAATCA +CSHL_3_FC0420AGLLKK:2:1:727:1020 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 30 40 40 24 18 38 33 26 16 23 22 16 18 @CSHL_3_FC0420AGLLKK:2:1:758:1799 GTAGAGACCCCCTAATAGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:758:1799 40 40 40 40 40 40 40 40 35 40 39 40 40 27 20 40 17 34 15 40 40 40 40 15 28 17 4 12 10 10 18 14 3 14 11 @CSHL_3_FC0420AGLLKK:2:1:1818:550 AAAAAAAAAAAAAAAACAAAAACAAAAAAAACAAA +CSHL_3_FC0420AGLLKK:2:1:1818:550 40 40 40 40 40 40 40 40 40 40 40 40 40 40 36 32 40 33 40 40 38 37 40 28 29 27 22 13 20 19 17 17 13 33 18 @CSHL_3_FC0420AGLLKK:2:1:1764:391 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CSHL_3_FC0420AGLLKK:2:1:1764:391 40 40 40 40 40 40 40 40 40 40 40 33 40 40 40 40 40 24 40 40 40 40 40 12 40 24 14 9 22 15 29 18 11 40 22 fastx_toolkit-0.0.14/galaxy/test-data/fastx_artifacts2.out000066400000000000000000000040251226234573700236550ustar00rootroot00000000000000@CSHL_3_FC0420AGLLKK:2:1:233:1674 GTTAGAGGGAATACACCCACTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:233:1674 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 32 40 40 40 40 16 20 25 9 21 37 40 40 16 29 26 30 @CSHL_3_FC0420AGLLKK:2:1:136:448 GTTCTCAGGACCCCTTCAGTAGTNGGCACCATCAA +CSHL_3_FC0420AGLLKK:2:1:136:448 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 -5 13 17 28 40 40 8 17 27 8 13 10 @CSHL_3_FC0420AGLLKK:2:1:237:1037 GTGATAGATTGTCTTGTTGTTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:237:1037 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 4 40 40 26 35 40 38 40 6 40 40 0 3 26 32 27 14 11 26 11 @CSHL_3_FC0420AGLLKK:2:1:1805:1464 GATGCGTTCGAGATGGGTGCGCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1805:1464 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 16 23 28 40 21 40 9 37 13 20 21 7 11 14 14 6 23 10 @CSHL_3_FC0420AGLLKK:2:1:126:1087 GAGATATTCGAATGCATCATCAGATGGCACCATCA +CSHL_3_FC0420AGLLKK:2:1:126:1087 40 40 40 40 40 40 40 40 40 40 40 40 40 40 25 40 40 40 40 40 40 40 31 40 40 11 10 23 40 13 12 17 37 17 22 @CSHL_3_FC0420AGLLKK:2:1:1488:1323 GTTTTTTCCCCTAATCTGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:1488:1323 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 39 22 31 40 40 12 29 22 0 7 12 8 18 7 3 18 9 @CSHL_3_FC0420AGLLKK:2:1:913:199 GTTCAGTGTTGGTGCACTGTGTTNTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:913:199 40 40 39 40 40 40 40 40 40 40 40 40 4 40 40 24 34 20 33 21 36 32 40 -5 40 13 21 21 26 17 18 25 14 25 21 @CSHL_3_FC0420AGLLKK:2:1:928:765 GTTTTCAGTTCGAGGTTCGTGCTNTAGGCATTATC +CSHL_3_FC0420AGLLKK:2:1:928:765 40 40 40 40 40 40 40 40 40 40 40 40 40 25 27 40 37 35 27 40 40 17 40 -5 36 11 19 15 19 16 11 12 12 23 11 @CSHL_3_FC0420AGLLKK:2:1:727:1020 GTAATATAGTTGATAAGAATCTGCAGAGAGAATCA +CSHL_3_FC0420AGLLKK:2:1:727:1020 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 30 40 40 24 18 38 33 26 16 23 22 16 18 @CSHL_3_FC0420AGLLKK:2:1:758:1799 GTAGAGACCCCCTAATAGAGTCTGTAGGCACCATC +CSHL_3_FC0420AGLLKK:2:1:758:1799 40 40 40 40 40 40 40 40 35 40 39 40 40 27 20 40 17 34 15 40 40 40 40 15 28 17 4 12 10 10 18 14 3 14 11 fastx_toolkit-0.0.14/galaxy/test-data/fastx_barcode_splitter1.fastq000066400000000000000000000076771226234573700255500ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GATCTAGTAGTAGTAGA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GATCTAGTAGTAGTAGA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GATCTAGTAGTAGTAGA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GATCTAGTAGTAGTAGA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GATCTAGTAGTAGTAGA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTCTAGTAGTAGTAGA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTCTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTCTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTATTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTATTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTATTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTACGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTACTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGTACGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCGTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCGTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCGTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCGTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTCGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTCGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTCTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 ATCTCGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 GGAATGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 TAGTTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 TAGTTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 TAGTTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 TAGTTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 TAGTTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 TAGTTTCTCTATGTACA +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaa @CSHL_3_FC042AGLLWW:1:2:7:203 TGTCTGAGTATACACAT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaafastx_toolkit-0.0.14/galaxy/test-data/fastx_barcode_splitter1.out000066400000000000000000000026631226234573700252270ustar00rootroot00000000000000

Copy these files to your local computer, as they will be soon deleted.

BarcodeCountLocation
BC111http://tango.cshl.edu/barcode_splits/2009-01-19_1719__fastx_barcode_splitter1_fastq__BC1.txt
BC212http://tango.cshl.edu/barcode_splits/2009-01-19_1719__fastx_barcode_splitter1_fastq__BC2.txt
BC39http://tango.cshl.edu/barcode_splits/2009-01-19_1719__fastx_barcode_splitter1_fastq__BC3.txt
BC41http://tango.cshl.edu/barcode_splits/2009-01-19_1719__fastx_barcode_splitter1_fastq__BC4.txt
unmatched9http://tango.cshl.edu/barcode_splits/2009-01-19_1719__fastx_barcode_splitter1_fastq__unmatched.txt
total42
fastx_toolkit-0.0.14/galaxy/test-data/fastx_barcode_splitter1.txt000066400000000000000000000000471226234573700252310ustar00rootroot00000000000000BC1 GATCT BC2 ATCGT BC3 GTGAT BC4 TGTCTfastx_toolkit-0.0.14/galaxy/test-data/fastx_clipper1.fastq000066400000000000000000000022721226234573700236430ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastx_clipper1a.out000066400000000000000000000003241226234573700234710ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCC +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATG +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabb fastx_toolkit-0.0.14/galaxy/test-data/fastx_renamer1.fastq000066400000000000000000000022721226234573700236360ustar00rootroot00000000000000@CSHL_3_FC042AGLLWW:1:2:7:203 GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +CSHL_3_FC042AGLLWW:1:2:7:203 aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CSHL_3_FC042AGLLWW:1:2:7:33 CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CSHL_3_FC042AGLLWW:1:2:7:33 Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @CSHL_3_FC042AGLLWW:1:2:7:169 GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:169 a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @CSHL_3_FC042AGLLWW:1:2:7:1436 AATTATTTATTAAATTTTAATAATATGGGAGACACT +CSHL_3_FC042AGLLWW:1:2:7:1436 a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @CSHL_3_FC042AGLLWW:1:2:7:292 GGAGAAATACACACAATTGGTTAATCCCCCTATATA +CSHL_3_FC042AGLLWW:1:2:7:292 babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @CSHL_3_FC042AGLLWW:1:2:7:1819 AATTCAAACCACCCCAACCCACACACAGAGATACAA +CSHL_3_FC042AGLLWW:1:2:7:1819 a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @CSHL_3_FC042AGLLWW:1:2:7:1875 GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +CSHL_3_FC042AGLLWW:1:2:7:1875 aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @CSHL_3_FC042AGLLWW:1:2:8:624 ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +CSHL_3_FC042AGLLWW:1:2:8:624 aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @CSHL_3_FC042AGLLWW:1:2:8:250 TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +CSHL_3_FC042AGLLWW:1:2:8:250 aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastx_renamer1.out000066400000000000000000000025061226234573700233270ustar00rootroot00000000000000@GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT +GTACGCATGACCGAACCCCCCNCCCCCCAATTGGTT aab^V^aU]`aa^aZaaabbXEZabaaaaaaaa]]` @CAATGCCTCCAATTGGTTAATCCCCCTATATATACT CAATGCCTCCAATTGGTTAATCCCCCTATATATACT +CAATGCCTCCAATTGGTTAATCCCCCTATATATACT Waaa^aZaaW^U_XaWaa\WMEP^KEZXRPEEEGaa @GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC +GCAGCAGGCGCGTCAGAGAGCCCCCCCCCCCCCCCC a_M^a\Uaaa_M_aaaaaaaaaaaaaaaV\ZUGUUR @AATTATTTATTAAATTTTAATAATATGGGAGACACT AATTATTTATTAAATTTTAATAATATGGGAGACACT +AATTATTTATTAAATTTTAATAATATGGGAGACACT a^aaaaaaaaaaaaaaa_U`aaaaa_S_aaaaaVV[ @GGAGAAATACACACAATTGGTTAATCCCCCTATATA GGAGAAATACACACAATTGGTTAATCCCCCTATATA +GGAGAAATACACACAATTGGTTAATCCCCCTATATA babaaaaaaaUMaaaaaaaaaaa\XEUUEP_]UERE @AATTCAAACCACCCCAACCCACACACAGAGATACAA AATTCAAACCACCCCAACCCACACACAGAGATACAA +AATTCAAACCACCCCAACCCACACACAGAGATACAA a\\QVVVLaaLOEXUWUUEKUULEMUEUUKULIQMU @GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC +GCAAAAGAGTAGTGTACCCCCCCCCCCCCCCCCCCC aaaaaaaaaXUXXEXaaaaa`_ZaaaaaaaaaXEXU @ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG +ACTGCAATTGGTTAATCCCCCTATATAGCGCTGTGG aa[S^`X`aa_]]OOXMU^_[MU_aaaaaaaaaaaa @TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA +TGCCGCGCACACTGATGCAATTGGTTAATCCCCCTA aaaaaaaa^aaaaaabbb[KXPEU[RXZ^JUKRKXE fastx_toolkit-0.0.14/galaxy/test-data/fastx_rev_comp1.fasta000066400000000000000000000002151226234573700237720ustar00rootroot00000000000000>CSHL__2_FC042NGABCD:8:1:120:202 ACGATAGATCGGAAGAGCTAGTATGCCGTTTTCTGC >CSHL__2_FC042NGABCD:8:1:103:1185 ATCACGATAGATCGGCAGAGCTCGTTTACCGTCTTC fastx_toolkit-0.0.14/galaxy/test-data/fastx_rev_comp2.fastq000066400000000000000000000006331226234573700240170ustar00rootroot00000000000000@CSHL__2_FC042NGABCD:8:1:120:202 ACGATAGATCGGAAGAGCTAGTATGCCGTTTTCTGC +CSHL__2_FC042NGABCD:8:1:120:202 40 40 40 40 20 40 40 40 40 6 40 40 28 40 40 25 40 20 40 -1 30 40 14 27 40 8 1 3 7 -1 11 10 -1 21 10 8 @CSHL__2_FC042NGABCD:8:1:103:1185 ATCACGATAGATCGGCAGAGCTCGTTTACCGTCTTC +CSHL__2_FC042NGABCD:8:1:103:1185 40 40 40 40 40 35 33 31 40 40 40 32 30 22 40 -0 9 22 17 14 8 36 15 34 22 12 23 3 10 -0 8 2 4 25 30 2 fastx_toolkit-0.0.14/galaxy/test-data/fastx_reverse_complement1.out000066400000000000000000000002151226234573700255670ustar00rootroot00000000000000>CSHL__2_FC042NGABCD:8:1:120:202 GCAGAAAACGGCATACTAGCTCTTCCGATCTATCGT >CSHL__2_FC042NGABCD:8:1:103:1185 GAAGACGGTAAACGAGCTCTGCCGATCTATCGTGAT fastx_toolkit-0.0.14/galaxy/test-data/fastx_reverse_complement2.out000066400000000000000000000006311226234573700255720ustar00rootroot00000000000000@CSHL__2_FC042NGABCD:8:1:120:202 GCAGAAAACGGCATACTAGCTCTTCCGATCTATCGT +CSHL__2_FC042NGABCD:8:1:120:202 8 10 21 -1 10 11 -1 7 3 1 8 40 27 14 40 30 -1 40 20 40 25 40 40 28 40 40 6 40 40 40 40 20 40 40 40 40 @CSHL__2_FC042NGABCD:8:1:103:1185 GAAGACGGTAAACGAGCTCTGCCGATCTATCGTGAT +CSHL__2_FC042NGABCD:8:1:103:1185 2 30 25 4 2 8 0 10 3 23 12 22 34 15 36 8 14 17 22 9 0 40 22 30 32 40 40 40 31 33 35 40 40 40 40 40 fastx_toolkit-0.0.14/galaxy/test-data/fastx_seqid_uncollapse1.out000066400000000000000000000016531226234573700252320ustar00rootroot0000000000000021 0 0 0 0 0 0 0 - 148-5 22 021 GALNT15 22 1 22 1 21, 1, 1 21 0 0 0 0 0 0 0 - 148-5 22 021 GALNT15 22 1 22 1 21, 1, 1 21 0 0 0 0 0 0 0 - 148-5 22 021 GALNT15 22 1 22 1 21, 1, 1 21 0 0 0 0 0 0 0 - 148-5 22 021 GALNT15 22 1 22 1 21, 1, 1 21 0 0 0 0 0 0 0 - 148-5 22 021 GALNT15 22 1 22 1 21, 1, 1 21 1 0 0 0 0 0 0 - 190-2 22 022 ADDA2 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 190-2 22 022 ADDA2 22 0 22 1 22, 0, 0 21 0 0 0 0 0 0 0 - 253-1 22 021 FORRIL2 22 1 22 1 21, 1, 1 21 1 0 0 0 0 0 0 - 396-1 22 022 JMK446 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 fastx_toolkit-0.0.14/galaxy/test-data/fastx_seqid_uncollapse1.psl000066400000000000000000000004441226234573700252160ustar00rootroot0000000000000021 0 0 0 0 0 0 0 - 148-5 22 021 GALNT15 22 1 22 1 21, 1, 1 21 1 0 0 0 0 0 0 - 190-2 22 022 ADDA2 22 0 22 1 22, 0, 0 21 0 0 0 0 0 0 0 - 253-1 22 021 FORRIL2 22 1 22 1 21, 1, 1 21 1 0 0 0 0 0 0 - 396-1 22 022 JMK446 22 0 22 1 22, 0, 0 21 1 0 0 0 0 0 0 - 463-7 22 022 OPTQTL5 22 0 22 1 22, 0, 0 fastx_toolkit-0.0.14/galaxy/test-data/fastx_trimmer1.fasta000066400000000000000000000002151226234573700236370ustar00rootroot00000000000000>CSHL__2_FC042NGABCD:8:1:120:202 ACGATAGATCGGAAGAGCTAGTATGCCGTTTTCTGC >CSHL__2_FC042NGABCD:8:1:103:1185 ATCACGATAGATCGGCAGAGCTCGTTTACCGTCTTC fastx_toolkit-0.0.14/galaxy/test-data/fastx_trimmer1.out000066400000000000000000000002051226234573700233470ustar00rootroot00000000000000>CSHL__2_FC042NGABCD:8:1:120:202 TAGATCGGAAGAGCTAGTATGCCGTTTTCTGC >CSHL__2_FC042NGABCD:8:1:103:1185 CGATAGATCGGCAGAGCTCGTTTACCGTCTTC fastx_toolkit-0.0.14/galaxy/test-data/fastx_trimmer2.fastq000066400000000000000000000006331226234573700236640ustar00rootroot00000000000000@CSHL__2_FC042NGABCD:8:1:120:202 ACGATAGATCGGAAGAGCTAGTATGCCGTTTTCTGC +CSHL__2_FC042NGABCD:8:1:120:202 40 40 40 40 20 40 40 40 40 6 40 40 28 40 40 25 40 20 40 -1 30 40 14 27 40 8 1 3 7 -1 11 10 -1 21 10 8 @CSHL__2_FC042NGABCD:8:1:103:1185 ATCACGATAGATCGGCAGAGCTCGTTTACCGTCTTC +CSHL__2_FC042NGABCD:8:1:103:1185 40 40 40 40 40 35 33 31 40 40 40 32 30 22 40 -0 9 22 17 14 8 36 15 34 22 12 23 3 10 -0 8 2 4 25 30 2 fastx_toolkit-0.0.14/galaxy/test-data/fastx_trimmer2.out000066400000000000000000000005321226234573700233530ustar00rootroot00000000000000@CSHL__2_FC042NGABCD:8:1:120:202 ACGATAGATCGGAAGAGCTAGTATGCC +CSHL__2_FC042NGABCD:8:1:120:202 40 40 40 40 20 40 40 40 40 6 40 40 28 40 40 25 40 20 40 -1 30 40 14 27 40 8 1 @CSHL__2_FC042NGABCD:8:1:103:1185 ATCACGATAGATCGGCAGAGCTCGTTT +CSHL__2_FC042NGABCD:8:1:103:1185 40 40 40 40 40 35 33 31 40 40 40 32 30 22 40 0 9 22 17 14 8 36 15 34 22 12 23 fastx_toolkit-0.0.14/galaxy/test-data/fastx_trimmer_from_end1.fasta000066400000000000000000000003141226234573700255100ustar00rootroot00000000000000>67-3461 TGAGATACATTTGAACATTGAT >68-3451 ACATAGCCTATAAGAA >69-3397 TAGGGAAGTAACACACTGGATT >70-3391 TGAGATCACAGTTTCCACACATTTGGAGGCAACAT >71-3291 TCACAGGATTAGAGTCTGAGCTAT >72-3193 TAGAAATTCAAGCTTTGATGTTTTT fastx_toolkit-0.0.14/galaxy/test-data/fastx_trimmer_from_end1.out000066400000000000000000000002501226234573700252200ustar00rootroot00000000000000>67-3461 TGAGATACATTTGAACATTG >69-3397 TAGGGAAGTAACACACTGGA >70-3391 TGAGATCACAGTTTCCACACATTTGGAGGCAAC >71-3291 TCACAGGATTAGAGTCTGAGCT >72-3193 TAGAAATTCAAGCTTTGATGTTT fastx_toolkit-0.0.14/galaxy/tool-data/000077500000000000000000000000001226234573700176525ustar00rootroot00000000000000fastx_toolkit-0.0.14/galaxy/tool-data/Makefile.am000066400000000000000000000010141226234573700217020ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EXTRA_DIST = fastx_clipper_sequences.txt fastx_toolkit-0.0.14/galaxy/tool-data/fastx_clipper_sequences.txt000066400000000000000000000004351226234573700253330ustar00rootroot00000000000000# # Adapter/Linker sequences for FASTX-Clipper tool. # # Format: # Adapter Sequence Descriptive name # # Example: # AAATTTGATAAGATA Our-Adapter # # Some adapters can be found here: # http://seqanswers.com/forums/showthread.php?t=198 TGTAGGCC Dummy-Adapter (don't use me) fastx_toolkit-0.0.14/galaxy/tools/000077500000000000000000000000001226234573700171265ustar00rootroot00000000000000fastx_toolkit-0.0.14/galaxy/tools/Makefile.am000066400000000000000000000007731226234573700211710ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. SUBDIRS = fastx_toolkit fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/000077500000000000000000000000001226234573700220205ustar00rootroot00000000000000fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/Makefile.am000066400000000000000000000022001226234573700240460ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EXTRA_DIST = fastq_quality_converter.xml \ fastq_quality_filter.xml \ fastx_quality_statistics.xml \ fastq_to_fasta.xml \ fastx_artifacts_filter.xml \ fastx_clipper.xml \ fastx_reverse_complement.xml \ fastx_trimmer.xml \ fastx_renamer.xml \ fastx_barcode_splitter.xml fastx_barcode_splitter_galaxy_wrapper.sh \ fastx_nucleotides_distribution.xml \ fastq_quality_boxplot.xml \ fasta_clipping_histogram.xml \ fastx_collapser.xml \ fasta_formatter.xml \ fasta_nucleotide_changer.xml \ fastq_quality_trimmer.xml \ fastx_trimmer_from_end.xml \ fastx_uncollapser.xml \ seqid_uncollapser.xml \ fastx_nucleotides_distribution_line.xml \ fastq_masker.xml fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fasta_clipping_histogram.xml000066400000000000000000000056341226234573700276120ustar00rootroot00000000000000 chart fasta_clipping_histogram.pl $input $outfile **What it does** This tool creates a histogram image of sequence lengths distribution in a given fasta dataset file. **TIP:** Use this tool after clipping your library (with **FASTX Clipper tool**), to visualize the clipping results. ----- **Output Examples** In the following library, most sequences are 24-mers to 27-mers. This could indicate an abundance of endo-siRNAs (depending of course of what you've tried to sequence in the first place). .. image:: ./static/fastx_icons/fasta_clipping_histogram_1.png In the following library, most sequences are 19,22 or 23-mers. This could indicate an abundance of miRNAs (depending of course of what you've tried to sequence in the first place). .. image:: ./static/fastx_icons/fasta_clipping_histogram_2.png ----- **Input Formats** This tool accepts short-reads FASTA files. The reads don't have to be short, but they do have to be on a single line, like so:: >sequence1 AGTAGTAGGTGATGTAGAGAGAGAGAGAGTAG >sequence2 GTGTGTGTGGGAAGTTGACACAGTA >sequence3 CCTTGAGATTAACGCTAATCAAGTAAAC If the sequences span over multiple lines:: >sequence1 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAG TCTTCGGTCATAACACAAACCCAGACCTACGTATATGACAAAGCTAATAG aactggtctttacctTTAAGTTG Use the **FASTA Width Formatter** tool to re-format the FASTA into a single-lined sequences:: >sequence1 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAGTCTTCGGTCATAACACAAACCCAGACCTACGTATATGACAAAGCTAATAGaactggtctttacctTTAAGTTG ----- **Multiplicity counts (a.k.a reads-count)** If the sequence identifier (the text after the '>') contains a dash and a number, it is treated as a multiplicity count value (i.e. how many times that individual sequence repeated in the original FASTA file, before collapsing). Example 1 - The following FASTA file *does not* have multiplicity counts:: >seq1 GGATCC >seq2 GGTCATGGGTTTAAA >seq3 GGGATATATCCCCACACACACACAC Each sequence is counts as one, to produce the following chart: .. image:: ./static/fastx_icons/fasta_clipping_histogram_3.png Example 2 - The following FASTA file have multiplicity counts:: >seq1-2 GGATCC >seq2-10 GGTCATGGGTTTAAA >seq3-3 GGGATATATCCCCACACACACACAC The first sequence counts as 2, the second as 10, the third as 3, to produce the following chart: .. image:: ./static/fastx_icons/fasta_clipping_histogram_4.png Use the **FASTA Collapser** tool to create FASTA files with multiplicity counts. fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fasta_formatter.xml000066400000000000000000000057701226234573700257340ustar00rootroot00000000000000 formatter cat '$input' | fasta_formatter -w $width -o '$output' **What it does** This tool re-formats a FASTA file, changing the width of the nucleotides lines. **TIP:** Outputting a single line (with **width = 0**) can be useful for scripting (with **grep**, **awk**, and **perl**). Every odd line is a sequence identifier, and every even line is a nucleotides line. -------- **Example** Input FASTA file (each nucleotides line is 50 characters long):: >Scaffold3648 AGGAATGATGACTACAATGATCAACTTAACCTATCTATTTAATTTAGTTC CCTAATGTCAGGGACCTACCTGTTTTTGTTATGTTTGGGTTTTGTTGTTG TTGTTTTTTTAATCTGAAGGTATTGTGCATTATATGACCTGTAATACACA ATTAAAGTCAATTTTAATGAACATGTAGTAAAAACT >Scaffold9299 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAG TCTTCGGTCATAACACAAACCCAGACCTACGTATATGACAAAGCTAATAG aactggtctttacctTTAAGTTG Output FASTA file (with width=80):: >Scaffold3648 AGGAATGATGACTACAATGATCAACTTAACCTATCTATTTAATTTAGTTCCCTAATGTCAGGGACCTACCTGTTTTTGTT ATGTTTGGGTTTTGTTGTTGTTGTTTTTTTAATCTGAAGGTATTGTGCATTATATGACCTGTAATACACAATTAAAGTCA ATTTTAATGAACATGTAGTAAAAACT >Scaffold9299 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAGTCTTCGGTCATAACACAAACCCAGACCTAC GTATATGACAAAGCTAATAGaactggtctttacctTTAAGTTG Output FASTA file (with width=0 => single line):: >Scaffold3648 AGGAATGATGACTACAATGATCAACTTAACCTATCTATTTAATTTAGTTCCCTAATGTCAGGGACCTACCTGTTTTTGTTATGTTTGGGTTTTGTTGTTGTTGTTTTTTTAATCTGAAGGTATTGTGCATTATATGACCTGTAATACACAATTAAAGTCAATTTTAATGAACATGTAGTAAAAACT >Scaffold9299 CAGCATCTACATAATATGATCGCTATTAAACTTAAATCTCCTTGACGGAGTCTTCGGTCATAACACAAACCCAGACCTACGTATATGACAAAGCTAATAGaactggtctttacctTTAAGTTG ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fasta_nucleotide_changer.xml000066400000000000000000000037521226234573700275510ustar00rootroot00000000000000 converter cat '$input' | fasta_nucleotide_changer $mode -v -o '$output' **What it does** This tool converts RNA FASTA files to DNA (and vice-versa). In **RNA-to-DNA** mode, U's are changed into T's. In **DNA-to-RNA** mode, T's are changed into U's. -------- **Example** Input RNA FASTA file ( from Sanger's mirBase ):: >cel-let-7 MIMAT0000001 Caenorhabditis elegans let-7 UGAGGUAGUAGGUUGUAUAGUU >cel-lin-4 MIMAT0000002 Caenorhabditis elegans lin-4 UCCCUGAGACCUCAAGUGUGA >cel-miR-1 MIMAT0000003 Caenorhabditis elegans miR-1 UGGAAUGUAAAGAAGUAUGUA Output DNA FASTA file (with RNA-to-DNA mode):: >cel-let-7 MIMAT0000001 Caenorhabditis elegans let-7 TGAGGTAGTAGGTTGTATAGTT >cel-lin-4 MIMAT0000002 Caenorhabditis elegans lin-4 TCCCTGAGACCTCAAGTGTGA >cel-miR-1 MIMAT0000003 Caenorhabditis elegans miR-1 TGGAATGTAAAGAAGTATGTA ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastq_masker.xml000066400000000000000000000042311226234573700252220ustar00rootroot00000000000000 (based on quality) cat '$input' | fastq_masker #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -v -q $cutoff -r '$maskchar' -o '$output' Nucleotides below this quality will be masked Replace low-quality nucleotides with this character. Common values: 'N' or '.' **What it does** This tool masks low-quality nucleotides in a FASTQ file, and replaces them with the specifed mask character (**N** by default). -------- **Example** Input FASTQ file:: @1 TATGGTCAGAAACCATATGC +1 40 40 40 40 40 40 40 40 40 40 40 20 19 19 19 19 19 19 19 19 @2 CAGCGAGGCTTTAATGCCAT +2 40 40 40 40 40 40 40 40 30 20 19 20 19 19 19 19 19 19 19 19 @3 CAGCGAGGCTTTAATGCCAT +3 40 40 40 40 40 40 40 40 20 19 19 19 19 19 19 19 19 19 19 19 After Masking nucleotides with quality lower than 20 with the character **N**:: @1 TATGGTCAGAAANNNNNNNN +1 40 40 40 40 40 40 40 40 40 40 40 20 19 19 19 19 19 19 19 19 @2 CAGCGAGGCTNTNNNNNNNN +2 40 40 40 40 40 40 40 40 30 20 19 20 19 19 19 19 19 19 19 19 @3 CAGCGAGGCNNNNNNNNNNN +3 40 40 40 40 40 40 40 40 20 19 19 19 19 19 19 19 19 19 19 19 ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastq_quality_boxplot.xml000066400000000000000000000026701226234573700272040ustar00rootroot00000000000000 fastq_quality_boxplot_graph.sh -t '$input.name' -i $input -o '$output' **What it does** Creates a boxplot graph for the quality scores in the library. .. class:: infomark **TIP:** Use the **FASTQ Statistics** tool to generate the report file needed for this tool. ----- **Output Examples** * Black horizontal lines are medians * Rectangular red boxes show the Inter-quartile Range (IQR) (top value is Q3, bottom value is Q1) * Whiskers show outlier at max. 1.5*IQR An excellent quality library (median quality is 40 for almost all 36 cycles): .. image:: ../static/fastx_icons/fastq_quality_boxplot_1.png A relatively good quality library (median quality degrades towards later cycles): .. image:: ../static/fastx_icons/fastq_quality_boxplot_2.png A low quality library (median drops quickly): .. image:: ../static/fastx_icons/fastq_quality_boxplot_3.png ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastq_quality_converter.xml000066400000000000000000000063711226234573700275260ustar00rootroot00000000000000 (ASCII-Numeric) cat '$input' | fastq_quality_converter $QUAL_FORMAT -o '$output' -Q $offset **What it does** Converts a Solexa FASTQ file to/from numeric or ASCII quality format. .. class:: warningmark Re-scaling is **not** performed. (e.g. conversion from Phred scale to Solexa scale). ----- FASTQ with Numeric quality scores:: @CSHL__2_FC042AGWWWXX:8:1:120:202 ACGATAGATCGGAAGAGCTAGTATGCCGTTTTCTGC +CSHL__2_FC042AGWWWXX:8:1:120:202 40 40 40 40 20 40 40 40 40 6 40 40 28 40 40 25 40 20 40 -1 30 40 14 27 40 8 1 3 7 -1 11 10 -1 21 10 8 @CSHL__2_FC042AGWWWXX:8:1:103:1185 ATCACGATAGATCGGCAGAGCTCGTTTACCGTCTTC +CSHL__2_FC042AGWWWXX:8:1:103:1185 40 40 40 40 40 35 33 31 40 40 40 32 30 22 40 -0 9 22 17 14 8 36 15 34 22 12 23 3 10 -0 8 2 4 25 30 2 FASTQ with ASCII quality scores:: @CSHL__2_FC042AGWWWXX:8:1:120:202 ACGATAGATCGGAAGAGCTAGTATGCCGTTTTCTGC +CSHL__2_FC042AGWWWXX:8:1:120:202 hhhhThhhhFhh\hhYhTh?^hN[hHACG?KJ?UJH @CSHL__2_FC042AGWWWXX:8:1:103:1185 ATCACGATAGATCGGCAGAGCTCGTTTACCGTCTTC +CSHL__2_FC042AGWWWXX:8:1:103:1185 hhhhhca_hhh`^Vh@IVQNHdObVLWCJ@HBDY^B ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastq_quality_filter.xml000066400000000000000000000051001226234573700267710ustar00rootroot00000000000000 cat '$input' | fastq_quality_filter #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -q $quality -p $percent -v -o '$output' **What it does** This tool filters reads based on quality scores. .. class:: infomark Using **percent = 100** requires all cycles of all reads to be at least the quality cut-off value. .. class:: infomark Using **percent = 50** requires the median quality of the cycles (in each read) to be at least the quality cut-off value. -------- Quality score distribution (of all cycles) is calculated for each read. If it is lower than the quality cut-off value - the read is discarded. **Example**:: @CSHL_4_FC042AGOOII:1:2:214:584 GACAATAAAC +CSHL_4_FC042AGOOII:1:2:214:584 30 30 30 30 30 30 30 30 20 10 Using **percent = 50** and **cut-off = 30** - This read will not be discarded (the median quality is higher than 30). Using **percent = 90** and **cut-off = 30** - This read will be discarded (90% of the cycles do no have quality equal to / higher than 30). Using **percent = 100** and **cut-off = 20** - This read will be discarded (not all cycles have quality equal to / higher than 20). ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastq_quality_trimmer.xml000066400000000000000000000047641226234573700272020ustar00rootroot00000000000000 cat '$input' | fastq_quality_trimmer #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -v -t $cutoff -l $minlen -o '$output' Nucleotides below this quality will be trimmed Sequences shorter than this length will be discard. Leave at zero to keep all sequences **What it does** This tool scans the sequence from the end for the first nucleotide to possess the specified minimum quality score. It will then trim (remove nucleotides from) the sequence after this position. After trimming, sequences that are shorter than the minimum length are discarded. -------- **Example** Input Fasta file (with 20 bases in each sequences):: @1 TATGGTCAGAAACCATATGC +1 40 40 40 40 40 40 40 40 40 40 40 20 19 19 19 19 19 19 19 19 @2 CAGCGAGGCTTTAATGCCAT +2 40 40 40 40 40 40 40 40 30 20 19 20 19 19 19 19 19 19 19 19 @3 CAGCGAGGCTTTAATGCCAT +3 40 40 40 40 40 40 40 40 20 19 19 19 19 19 19 19 19 19 19 19 Trimming with a cutoff of 20, we get the following FASTQ file:: @1 TATGGTCAGAAA +1 40 40 40 40 40 40 40 40 40 40 40 20 @2 CAGCGAGGCTTT +2 40 40 40 40 40 40 40 40 30 20 19 20 @3 CAGCGAGGC +3 40 40 40 40 40 40 40 40 20 Trimming with a cutoff of 20 and a minimum length of 12, we get the following FASTQ file:: @1 TATGGTCAGAAA +1 40 40 40 40 40 40 40 40 40 40 40 20 @2 CAGCGAGGCTTT +2 40 40 40 40 40 40 40 40 30 20 19 20 ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastq_to_fasta.xml000066400000000000000000000043251226234573700255440ustar00rootroot00000000000000 converter cat '$input' | fastq_to_fasta #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if $SKIPN $RENAMESEQ -o '$output' -v **What it does** This tool converts data from Solexa format to FASTA format (scroll down for format description). -------- **Example** The following data in Solexa-FASTQ format:: @CSHL_4_FC042GAMMII_2_1_517_596 GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT +CSHL_4_FC042GAMMII_2_1_517_596 40 40 40 40 40 40 40 40 40 40 38 40 40 40 40 40 14 40 40 40 40 40 36 40 13 14 24 24 9 24 9 40 10 10 15 40 Will be converted to FASTA (with 'rename sequence names' = NO):: >CSHL_4_FC042GAMMII_2_1_517_596 GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT Will be converted to FASTA (with 'rename sequence names' = YES):: >1 GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_artifacts_filter.xml000066400000000000000000000076311226234573700273030ustar00rootroot00000000000000 cat '$input' | fastx_artifacts_filter #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -v -o '$output' **What it does** This tool filters sequencing artifacts (reads with all but 3 identical bases). -------- **The following is an example of sequences which will be filtered out**:: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAACACAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC AAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAACACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAA AAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAA AAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAA AAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAA ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_barcode_splitter.xml000066400000000000000000000047611226234573700273040ustar00rootroot00000000000000 fastx_barcode_splitter_galaxy_wrapper.sh $BARCODE $input "$input.name" "$output.files_path" --mismatches $mismatches --partial $partial $EOL > $output **What it does** This tool splits a FASTQ or FASTA file into several files, using barcodes as the split criteria. -------- **Barcode file Format** Barcode files are simple text files. Each line should contain an identifier (descriptive name for the barcode), and the barcode itself (A/C/G/T), separated by a TAB character. Example:: #This line is a comment (starts with a 'number' sign) BC1 GATCT BC2 ATCGT BC3 GTGAT BC4 TGTCT For each barcode, a new FASTQ file will be created (with the barcode's identifier as part of the file name). Sequences matching the barcode will be stored in the appropriate file. One additional FASTQ file will be created (the 'unmatched' file), where sequences not matching any barcode will be stored. The output of this tool is an HTML file, displaying the split counts and the file locations. **Output Example** .. image:: ./static/fastx_icons/barcode_splitter_output_example.png ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_barcode_splitter_galaxy_wrapper.sh000077500000000000000000000051211226234573700322150ustar00rootroot00000000000000#!/bin/sh # FASTX-toolkit - FASTA/FASTQ preprocessing tools. # Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # #This is a shell script wrapper for 'fastx_barcode_splitter.pl' # # 1. Output files are saved at the dataset's files_path directory. # # 2. 'fastx_barcode_splitter.pl' outputs a textual table. # This script turns it into pretty HTML with working URL # (so lazy users can just click on the URLs and get their files) if [ "$1x" = "x" ]; then echo "Usage: $0 [BARCODE FILE] [FASTQ FILE] [LIBRARY_NAME] [OUTPUT_PATH]" >&2 exit 1 fi BARCODE_FILE="$1" FASTQ_FILE="$2" LIBNAME="$3" OUTPUT_PATH="$4" shift 4 # The rest of the parameters are passed to the split program if [ "${OUTPUT_PATH}x" = "x" ]; then echo "Usage: $0 [BARCODE FILE] [FASTQ FILE] [LIBRARY_NAME] [OUTPUT_PATH]" >&2 exit 1 fi #Sanitize library name, make sure we can create a file with this name LIBNAME=${LIBNAME%.gz} LIBNAME=${LIBNAME%.txt} LIBNAME=$(echo "$LIBNAME" | tr -cd '[:alnum:]') if [ ! -r "$FASTQ_FILE" ]; then echo "Error: Input file ($FASTQ_FILE) not found!" >&2 exit 1 fi if [ ! -r "$BARCODE_FILE" ]; then echo "Error: barcode file ($BARCODE_FILE) not found!" >&2 exit 1 fi mkdir -p "$OUTPUT_PATH" if [ ! -d "$OUTPUT_PATH" ]; then echo "Error: failed to create output path '$OUTPUT_PATH'" >&2 exit 1 fi PUBLICURL="" BASEPATH="$OUTPUT_PATH/" #PREFIX="$BASEPATH"`date "+%Y-%m-%d_%H%M__"`"${LIBNAME}__" PREFIX="$BASEPATH""${LIBNAME}__" SUFFIX=".txt" RESULTS=`gzip -cdf "$FASTQ_FILE" | fastx_barcode_splitter.pl --bcfile "$BARCODE_FILE" --prefix "$PREFIX" --suffix "$SUFFIX" "$@"` if [ $? != 0 ]; then echo "error" fi # # Convert the textual tab-separated table into simple HTML table, # with the local path replaces with a valid URL echo "" echo "$RESULTS" | sed -r "s|$BASEPATH(.*)|\\1|" | sed ' i
s|\t||g a<\/td><\/tr> ' echo "

" echo "

" fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_clipper.xml000066400000000000000000000070331226234573700254100ustar00rootroot00000000000000 adapter sequences cat '$input' | fastx_clipper #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -l $minlength -a '$clip_source.clip_sequence' -d $keepdelta -o '$output' -v $KEEP_N $DISCARD_OPTIONS use this for hairpin barcoding. keep at 0 unless you know what you're doing. **What it does** This tool clips adapters from the 3'-end of the sequences in a FASTA/FASTQ file. -------- **Clipping Illustration:** .. image:: ../static/fastx_icons/fastx_clipper_illustration.png **Clipping Example:** .. image:: ../static/fastx_icons/fastx_clipper_example.png **In the above example:** * Sequence no. 1 was discarded since it wasn't clipped (i.e. didn't contain the adapter sequence). (**Output** parameter). * Sequence no. 5 was discarded --- it's length (after clipping) was shorter than 15 nt (**Minimum Sequence Length** parameter). ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_collapser.xml000066400000000000000000000036161226234573700257410ustar00rootroot00000000000000 sequences cat '$input' | fastx_collapser #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -v -o '$output' **What it does** This tool collapses identical sequences in a FASTQ or FASTA file into a single sequence. -------- **Example** Example Input File (Sequence "ATAT" appears multiple times):: >CSHL_2_FC0042AGLLOO_1_1_605_414 TGCG >CSHL_2_FC0042AGLLOO_1_1_537_759 ATAT >CSHL_2_FC0042AGLLOO_1_1_774_520 TGGC >CSHL_2_FC0042AGLLOO_1_1_742_502 ATAT >CSHL_2_FC0042AGLLOO_1_1_781_514 TGAG >CSHL_2_FC0042AGLLOO_1_1_757_487 TTCA >CSHL_2_FC0042AGLLOO_1_1_903_769 ATAT >CSHL_2_FC0042AGLLOO_1_1_724_499 ATAT Example Output file:: >1-1 TGCG >2-4 ATAT >3-1 TGGC >4-1 TGAG >5-1 TTCA .. class:: infomark Original Sequence Names / Lane descriptions (e.g. "CSHL_2_FC0042AGLLOO_1_1_742_502") are discarded. The output sequence name is composed of two numbers: the first is the sequence's number, the second is the multiplicity value. The following output:: >2-4 ATAT means that the sequence "ATAT" is the second sequence in the file, and it appeared 4 times in the input FASTA file. ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_nucleotides_distribution.xml000066400000000000000000000031731226234573700310700ustar00rootroot00000000000000 fastx_nucleotide_distribution_graph.sh -t '$input.name' -i $input -o '$output' **What it does** Creates a stacked-histogram graph for the nucleotide distribution in the Solexa library. .. class:: infomark **TIP:** Use the **FASTQ Statistics** tool to generate the report file needed for this tool. ----- **Output Examples** The following chart clearly shows the barcode used at the 5'-end of the library: **GATCT** .. image:: ./static/fastx_icons/fastq_nucleotides_distribution_1.png In the following chart, one can almost 'read' the most abundant sequence by looking at the dominant values: **TGATA TCGTA TTGAT GACTG AA...** .. image:: ./static/fastx_icons/fastq_nucleotides_distribution_2.png The following chart shows a growing number of unknown (N) nucleotides towards later cycles (which might indicate a sequencing problem): .. image:: ./static/fastx_icons/fastq_nucleotides_distribution_3.png But most of the time, the chart will look rather random: .. image:: ./static/fastx_icons/fastq_nucleotides_distribution_4.png ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_nucleotides_distribution_line.xml000066400000000000000000000020121226234573700320660ustar00rootroot00000000000000 fastx_nucleotide_distribution_line_graph.sh -i '$input' -o '$output' **What it does** Creates a line and points graph for the nucleotide distribution in the Solexa library. .. class:: infomark **TIP:** Use the **FASTQ Statistics** tool to generate the report file needed for this tool. ----- **Output Examples** .. image:: ../static/fastx_icons/fastq_nucleotides_distribution_line_graph.png ------ This tool was created by Oliver Tam, based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_quality_statistics.xml000066400000000000000000000123351226234573700277150ustar00rootroot00000000000000 cat '$input' | fastx_quality_stats #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -o '$output' **What it does** Creates quality statistics report for the given Solexa/FASTQ library. .. class:: infomark **TIP:** This statistics report can be used as input for **Quality Score** and **Nucleotides Distribution** tools. ----- **The output file will contain the following fields:** * column = column number (1 to 36 for a 36-cycles read FASTQ file) * count = number of bases found in this column. * min = Lowest quality score value found in this column. * max = Highest quality score value found in this column. * sum = Sum of quality score values for this column. * mean = Mean quality score value for this column. * Q1 = 1st quartile quality score. * med = Median quality score. * Q3 = 3rd quartile quality score. * IQR = Inter-Quartile range (Q3-Q1). * lW = 'Left-Whisker' value (for boxplotting). * rW = 'Right-Whisker' value (for boxplotting). * A_Count = Count of 'A' nucleotides found in this column. * C_Count = Count of 'C' nucleotides found in this column. * G_Count = Count of 'G' nucleotides found in this column. * T_Count = Count of 'T' nucleotides found in this column. * N_Count = Count of 'N' nucleotides found in this column. **Output Example**:: column count min max sum mean Q1 med Q3 IQR lW rW A_Count C_Count G_Count T_Count N_Count 1 6362991 -4 40 250734117 39.41 40 40 40 0 40 40 1396976 1329101 678730 2958184 0 2 6362991 -5 40 250531036 39.37 40 40 40 0 40 40 1786786 1055766 1738025 1782414 0 3 6362991 -5 40 248722469 39.09 40 40 40 0 40 40 2296384 984875 1443989 1637743 0 4 6362991 -5 40 247654797 38.92 40 40 40 0 40 40 1683197 1410855 1722633 1546306 0 5 6362991 -4 40 248214827 39.01 40 40 40 0 40 40 2536861 1167423 1248968 1409739 0 6 6362991 -5 40 248499903 39.05 40 40 40 0 40 40 1598956 1236081 1568608 1959346 0 7 6362991 -4 40 247719760 38.93 40 40 40 0 40 40 1692667 1822140 1496741 1351443 0 8 6362991 -5 40 245745205 38.62 40 40 40 0 40 40 2230936 1343260 1529928 1258867 0 9 6362991 -5 40 245766735 38.62 40 40 40 0 40 40 1702064 1306257 1336511 2018159 0 10 6362991 -5 40 245089706 38.52 40 40 40 0 40 40 1519917 1446370 1450995 1945709 0 11 6362991 -5 40 242641359 38.13 40 40 40 0 40 40 1717434 1282975 1387804 1974778 0 12 6362991 -5 40 242026113 38.04 40 40 40 0 40 40 1662872 1202041 1519721 1978357 0 13 6362991 -5 40 238704245 37.51 40 40 40 0 40 40 1549965 1271411 1973291 1566681 1643 14 6362991 -5 40 235622401 37.03 40 40 40 0 40 40 2101301 1141451 1603990 1515774 475 15 6362991 -5 40 230766669 36.27 40 40 40 0 40 40 2344003 1058571 1440466 1519865 86 16 6362991 -5 40 224466237 35.28 38 40 40 2 35 40 2203515 1026017 1474060 1651582 7817 17 6362991 -5 40 219990002 34.57 34 40 40 6 25 40 1522515 1125455 2159183 1555765 73 18 6362991 -5 40 214104778 33.65 30 40 40 10 15 40 1479795 2068113 1558400 1249337 7346 19 6362991 -5 40 212934712 33.46 30 40 40 10 15 40 1432749 1231352 1769799 1920093 8998 20 6362991 -5 40 212787944 33.44 29 40 40 11 13 40 1311657 1411663 2126316 1513282 73 21 6362991 -5 40 211369187 33.22 28 40 40 12 10 40 1887985 1846300 1300326 1318380 10000 22 6362991 -5 40 213371720 33.53 30 40 40 10 15 40 542299 3446249 516615 1848190 9638 23 6362991 -5 40 221975899 34.89 36 40 40 4 30 40 347679 1233267 926621 3855355 69 24 6362991 -5 40 194378421 30.55 21 40 40 19 -5 40 433560 674358 3262764 1992242 67 25 6362991 -5 40 199773985 31.40 23 40 40 17 -2 40 944760 325595 1322800 3769641 195 26 6362991 -5 40 179404759 28.20 17 34 40 23 -5 40 3457922 156013 1494664 1254293 99 27 6362991 -5 40 163386668 25.68 13 28 40 27 -5 40 1392177 281250 3867895 821491 178 28 6362991 -5 40 156230534 24.55 12 25 40 28 -5 40 907189 981249 4174945 299437 171 29 6362991 -5 40 163236046 25.65 13 28 40 27 -5 40 1097171 3418678 1567013 280008 121 30 6362991 -5 40 151309826 23.78 12 23 40 28 -5 40 3514775 2036194 566277 245613 132 31 6362991 -5 40 141392520 22.22 10 21 40 30 -5 40 1569000 4571357 124732 97721 181 32 6362991 -5 40 143436943 22.54 10 21 40 30 -5 40 1453607 4519441 38176 351107 660 33 6362991 -5 40 114269843 17.96 6 14 30 24 -5 40 3311001 2161254 155505 734297 934 34 6362991 -5 40 140638447 22.10 10 20 40 30 -5 40 1501615 1637357 18113 3205237 669 35 6362991 -5 40 138910532 21.83 10 20 40 30 -5 40 1532519 3495057 23229 1311834 352 36 6362991 -5 40 117158566 18.41 7 15 30 23 -5 40 4074444 1402980 63287 822035 245 ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_quality_statistics_ng.xml000066400000000000000000000307111226234573700303770ustar00rootroot00000000000000 (improved) cat '$input' | fastx_quality_stats #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -N -o '$output' **What it does** Creates quality statistics report for the given Solexa/FASTQ library. .. class:: warningmark The output format is different than the old quality statistics tool. It can't be used for the quality-chart and nucleotide distribution tools (without further processing) ----- **The output file will contain the following fields:** * cycle = cycle number (1 to 36 for a 36-cycles read solexa file) * max-count = maximum number of bases (in all cycles) For each nucleotide type of each cycle (ALL/A/C/G/T/N), the following columns are generated: * count = number of bases found in this column. * min = Lowest quality score value found in this column. * max = Highest quality score value found in this column. * sum = Sum of quality score values for this column. * mean = Mean quality score value for this column. * Q1 = 1st quartile quality score. * med = Median quality score. * Q3 = 3rd quartile quality score. * IQR = Inter-Quartile range (Q3-Q1). * lW = 'Left-Whisker' value (for boxplotting). * rW = 'Right-Whisker' value (for boxplotting). (see column list at the bottom of this page) ----- **Output Example**:: cycle max_count ALL_count ALL_min ALL_max ALL_sum ALL_mean ALL_Q1 ALL_med ALL_Q3 ALL_IQR ALL_lW ALL_rW A_count A_min A_max A_sum A_mean A_Q1 A_med A_Q3 A_IQR A_lW A_rW C_count C_min C_max C_sum C_mean C_Q1 C_med C_Q3 C_IQR C_lW C_rW G_count G_min G_max G_sum G_mean G_Q1 G_med G_Q3 G_IQR G_lW G_rW T_count T_min T_max T_sum T_mean T_Q1 T_med T_Q3 T_IQR T_lW T_rW N_count N_min N_max N_sum N_mean N_Q1 N_med N_Q3 N_IQR N_lW N_rW 1 2827201 2827201 5 34 86622739 30.64 33 33 33 0 33 33 31337 5 34 841248 26.85 23 30 33 10 8 34 9269 5 34 154582 16.68 5 12 30 25 5 34 2095406 5 34 64401991 30.73 33 33 33 0 33 33 689133 5 34 21214602 30.78 33 33 33 0 33 33 2056 5 13 10316 5.02 5 5 5 0 5 5 2 2827201 2827201 5 34 81416729 28.80 27 33 33 6 18 34 1860337 5 34 56188709 30.20 33 33 33 0 33 33 21274 5 34 420221 19.75 11 21 30 19 5 34 862406 5 34 22835654 26.48 21 32 33 12 5 34 81979 5 34 1964575 23.96 17 26 33 16 5 34 1205 5 24 7570 6.28 5 5 5 0 5 5 3 2827201 2827201 5 34 89142476 31.53 33 33 34 1 32 34 18121 5 34 203489 11.23 5 5 15 10 5 30 45699 5 34 944362 20.66 5 26 33 28 5 34 79472 5 34 859251 10.81 5 5 12 7 5 22 2682082 5 34 87126165 32.48 33 33 34 1 32 34 1827 5 18 9209 5.04 5 5 5 0 5 5 4 2827201 2827201 5 34 90033575 31.85 33 34 34 1 32 34 172281 5 34 2905831 16.87 5 11 33 28 5 34 2597111 5 34 85653490 32.98 33 34 34 1 32 34 24461 5 34 643275 26.30 23 33 33 10 8 34 32749 5 34 827798 25.28 17 33 33 16 5 34 599 5 21 3181 5.31 5 5 5 0 5 5 5 2827201 2827201 5 34 89641650 31.71 33 33 34 1 32 34 26774 5 34 476388 17.79 5 13 33 28 5 34 58691 5 34 891506 15.19 5 5 32 27 5 34 54916 5 34 714335 13.01 5 5 24 19 5 34 2685062 5 34 87550414 32.61 33 33 34 1 32 34 1758 5 21 9007 5.12 5 5 5 0 5 5 6 2827201 2827201 5 34 84595812 29.92 29 33 33 4 23 34 1204450 5 34 36229599 30.08 29 33 33 4 23 34 463119 5 34 13924930 30.07 30 33 33 3 26 34 712076 5 34 21093763 29.62 28 33 33 5 21 34 447508 5 34 13347178 29.83 29 33 33 4 23 34 48 5 21 342 7.12 5 5 7 2 5 10 7 2827201 2827201 5 34 81404399 28.79 26 33 33 7 16 34 912751 5 34 26241597 28.75 26 33 33 7 16 34 540022 5 34 15843612 29.34 28 33 33 5 21 34 701269 5 34 19699830 28.09 26 32 33 7 16 34 672893 5 34 19617405 29.15 27 33 33 6 18 34 266 5 24 1955 7.35 5 5 7 2 5 10 8 2827201 2827201 5 34 83714332 29.61 28 33 33 5 21 34 809852 5 34 23610246 29.15 27 33 33 6 18 34 563842 5 34 17062600 30.26 30 33 33 3 26 34 650887 5 34 18848062 28.96 27 33 33 6 18 34 802551 5 34 24192911 30.15 30 33 33 3 26 34 69 5 24 513 7.43 5 5 5 0 5 5 9 2827201 2827201 5 34 83974872 29.70 28 33 33 5 21 34 834129 5 34 24483965 29.35 27 33 33 6 18 34 567059 5 34 17270502 30.46 30 33 33 3 26 34 620453 5 34 17917829 28.88 26 33 33 7 16 34 805499 5 34 24302177 30.17 30 33 33 3 26 34 61 5 26 399 6.54 5 5 5 0 5 5 10 2827201 2827201 5 34 83278375 29.46 27 33 33 6 18 34 896783 5 34 26245652 29.27 27 33 33 6 18 34 551055 5 34 16628773 30.18 30 33 33 3 26 34 648328 5 34 18502443 28.54 26 33 33 7 16 34 730957 5 34 21900963 29.96 30 33 33 3 26 34 78 5 21 544 6.97 5 5 7 2 5 10 11 2827201 2827201 5 34 82511316 29.18 27 33 33 6 18 34 857880 5 34 24789241 28.90 27 33 33 6 18 34 642205 5 34 19342469 30.12 30 33 33 3 26 34 655942 5 34 18484775 28.18 26 31 33 7 16 34 671046 5 34 19893945 29.65 28 33 33 5 21 34 128 5 24 886 6.92 5 5 5 0 5 5 12 2827201 2827201 5 34 83171736 29.42 27 33 33 6 18 34 826807 5 34 24025084 29.06 27 33 33 6 18 34 586948 5 34 17775697 30.28 30 33 33 3 26 34 636734 5 34 17999923 28.27 26 31 33 7 16 34 776614 5 34 23370369 30.09 30 33 33 3 26 34 98 5 18 663 6.77 5 5 5 0 5 5 13 2827201 2827201 5 34 82829608 29.30 27 33 33 6 18 34 822607 5 34 23762719 28.89 27 33 33 6 18 34 644718 5 34 19458385 30.18 30 33 33 3 26 34 591437 5 34 16607859 28.08 26 31 33 7 16 34 768323 5 34 22999812 29.94 30 33 33 3 26 34 116 5 24 833 7.18 5 5 7 2 5 10 14 2827201 2827201 5 34 82345826 29.13 27 33 33 6 18 34 798164 5 34 22982673 28.79 26 33 33 7 16 34 649845 5 34 19506688 30.02 30 33 33 3 26 34 608966 5 34 16892044 27.74 24 31 33 9 11 34 770051 5 34 22963200 29.82 29 33 33 4 23 34 175 5 24 1221 6.98 5 5 5 0 5 5 15 2827201 2827201 5 34 82462892 29.17 27 33 33 6 18 34 831167 5 34 23971929 28.84 26 33 33 7 16 34 613017 5 34 18416386 30.04 30 33 33 3 26 34 621149 5 34 17284205 27.83 24 31 33 9 11 34 761767 5 34 22789700 29.92 29 33 33 4 23 34 101 5 18 672 6.65 5 5 5 0 5 5 16 2827201 2827201 5 34 82526664 29.19 27 33 33 6 18 34 824933 5 34 23753705 28.79 26 33 33 7 16 34 610126 5 34 18388479 30.14 30 33 33 3 26 34 612088 5 34 16999148 27.77 24 31 33 9 11 34 779925 5 34 23384436 29.98 30 33 33 3 26 34 129 5 24 896 6.95 5 5 5 0 5 5 17 2827201 2827201 5 34 82610038 29.22 27 33 33 6 18 34 819008 5 34 23665033 28.89 27 33 33 6 18 34 618277 5 34 18651436 30.17 30 33 33 3 26 34 597414 5 34 16501609 27.62 24 30 33 9 11 34 792381 5 34 23791076 30.02 30 33 33 3 26 34 121 5 21 884 7.31 5 5 5 0 5 5 18 2827201 2827201 5 34 82402647 29.15 27 33 33 6 18 34 815170 5 34 23471377 28.79 26 33 33 7 16 34 615913 5 34 18527086 30.08 30 33 33 3 26 34 607020 5 34 16707257 27.52 24 30 33 9 11 34 788977 5 34 23695988 30.03 30 33 33 3 26 34 121 5 24 939 7.76 5 5 11 6 5 20 19 2827201 2827201 5 34 82124647 29.05 27 33 33 6 18 34 799663 5 34 22872641 28.60 26 32 33 7 16 34 628535 5 34 18876510 30.03 30 33 33 3 26 34 610246 5 34 16776560 27.49 24 30 33 9 11 34 788629 5 34 23598027 29.92 29 33 33 4 23 34 128 5 27 909 7.10 5 5 5 0 5 5 20 2827201 2827201 5 34 81985110 29.00 27 33 33 6 18 34 797587 5 34 22834667 28.63 26 32 33 7 16 34 636494 5 34 19081110 29.98 30 33 33 3 26 34 603916 5 34 16456404 27.25 24 30 33 9 11 34 789056 5 34 23611835 29.92 29 33 33 4 23 34 148 5 27 1094 7.39 5 5 7 2 5 10 21 2827201 2827201 5 34 81789492 28.93 27 33 33 6 18 34 794078 5 34 22654429 28.53 26 32 33 7 16 34 636334 5 34 19008271 29.87 29 33 33 4 23 34 614943 5 34 16761297 27.26 24 30 33 9 11 34 781661 5 34 23364202 29.89 29 33 33 4 23 34 185 5 27 1293 6.99 5 5 5 0 5 5 22 2827201 2827201 5 34 81451811 28.81 27 33 33 6 18 34 789032 5 34 22366485 28.35 26 31 33 7 16 34 645777 5 34 19277917 29.85 29 33 33 4 23 34 608030 5 34 16404902 26.98 23 29 33 10 8 34 784198 5 34 23401407 29.84 29 33 33 4 23 34 164 5 24 1100 6.71 5 5 5 0 5 5 23 2827201 2827201 5 34 80945146 28.63 26 32 33 7 16 34 786207 5 34 22128593 28.15 26 31 33 7 16 34 647440 5 34 19187231 29.64 28 33 33 5 21 34 607663 5 34 16274550 26.78 22 29 33 11 6 34 785744 5 34 23353803 29.72 29 33 33 4 23 34 147 5 24 969 6.59 5 5 5 0 5 5 24 2827201 2827201 5 34 80501327 28.47 26 32 33 7 16 34 786929 5 34 22067207 28.04 26 31 33 7 16 34 645831 5 34 19042366 29.49 28 33 33 5 21 34 612772 5 34 16261175 26.54 22 29 33 11 6 34 781496 5 34 23129334 29.60 28 33 33 5 21 34 173 5 26 1245 7.20 5 5 5 0 5 5 25 2827201 2827201 5 34 79714527 28.20 26 31 33 7 16 34 782000 5 34 21701186 27.75 24 30 33 9 11 34 644171 5 34 18796511 29.18 27 33 33 6 18 34 617490 5 34 16226119 26.28 22 28 33 11 6 34 783396 5 34 22989588 29.35 27 33 33 6 18 34 144 5 26 1123 7.80 5 5 11 6 5 20 26 2827201 2827201 5 34 77523225 27.42 24 31 33 9 11 34 783881 5 34 21162231 27.00 24 30 33 9 11 34 645075 5 34 18368273 28.47 27 33 33 6 18 34 617885 5 34 15635967 25.31 21 27 33 12 5 34 779368 5 34 22349766 28.68 27 33 33 6 18 34 992 5 27 6988 7.04 5 5 5 0 5 5 27 2827201 2827201 5 34 76792679 27.16 24 31 33 9 11 34 788575 5 34 21113021 26.77 23 30 33 10 8 34 638456 5 34 18023093 28.23 26 32 33 7 16 34 624665 5 34 15600176 24.97 21 27 33 12 5 34 774483 5 34 22049478 28.47 27 32 33 6 18 34 1022 5 27 6911 6.76 5 5 5 0 5 5 28 2827201 2827201 5 34 76446203 27.04 24 30 33 9 11 34 783001 5 34 20828394 26.60 22 30 33 11 6 34 639424 5 34 17921638 28.03 26 32 33 7 16 34 621361 5 34 15437055 24.84 21 27 33 12 5 34 782313 5 34 22251729 28.44 27 32 33 6 18 34 1102 5 26 7387 6.70 5 5 5 0 5 5 29 2827201 2827201 5 34 75869397 26.84 24 30 33 9 11 34 777718 5 34 20485923 26.34 22 30 33 11 6 34 645283 5 34 18004108 27.90 26 31 33 7 16 34 627295 5 34 15440771 24.61 21 27 33 12 5 34 775728 5 34 21930783 28.27 26 32 33 7 16 34 1177 5 27 7812 6.64 5 5 5 0 5 5 30 2827201 2827201 5 34 75137420 26.58 22 30 33 11 6 34 779313 5 34 20336426 26.10 22 29 33 11 6 34 646974 5 34 17887122 27.65 24 31 33 9 11 34 626980 5 34 15205903 24.25 19 26 33 14 5 34 772774 5 34 21699992 28.08 26 31 33 7 16 34 1160 5 27 7977 6.88 5 5 5 0 5 5 31 2827201 2827201 5 34 74256817 26.27 22 30 33 11 6 34 780211 5 34 20171360 25.85 21 29 33 12 5 34 645371 5 34 17606830 27.28 24 31 33 9 11 34 629456 5 34 14997599 23.83 18 26 33 15 5 34 771023 5 34 21473316 27.85 26 31 33 7 16 34 1140 5 27 7712 6.76 5 5 5 0 5 5 32 2827201 2827201 5 34 73624704 26.04 22 29 33 11 6 34 776741 5 34 19802248 25.49 21 28 33 12 5 34 642994 5 34 17408712 27.07 24 30 33 9 11 34 631699 5 34 14925494 23.63 18 26 32 14 5 34 774316 5 34 21478972 27.74 26 31 33 7 16 34 1451 5 27 9278 6.39 5 5 5 0 5 5 33 2827201 2827201 5 34 72833249 25.76 21 29 33 12 5 34 775426 5 34 19509710 25.16 21 27 33 12 5 34 644177 5 34 17265182 26.80 24 30 33 9 11 34 627490 5 34 14612407 23.29 18 26 31 13 5 34 778476 5 34 21435400 27.54 24 31 33 9 11 34 1632 5 27 10550 6.46 5 5 5 0 5 5 34 2827201 2827201 5 34 71937995 25.44 21 28 33 12 5 34 772803 5 34 19226676 24.88 21 27 33 12 5 34 647127 5 34 17098061 26.42 22 30 33 11 6 34 628686 5 34 14382900 22.88 17 24 31 14 5 34 777289 5 34 21221307 27.30 24 30 33 9 11 34 1296 5 27 9051 6.98 5 5 5 0 5 5 35 2827201 2827201 5 34 70604895 24.97 21 27 33 12 5 34 769554 5 34 18722160 24.33 19 27 32 13 5 34 643915 5 34 16662802 25.88 21 28 33 12 5 34 627642 5 34 14115224 22.49 17 24 30 13 5 34 784712 5 34 21095775 26.88 24 30 33 9 11 34 1378 5 27 8934 6.48 5 5 5 0 5 5 36 2827201 2827201 5 34 71705284 25.36 21 28 33 12 5 34 775278 5 34 18770248 24.21 18 27 33 15 5 34 634906 5 34 16703972 26.31 22 30 33 11 6 34 630819 5 34 14421307 22.86 17 24 31 14 5 34 784826 5 34 21800547 27.78 26 32 33 7 16 34 1372 5 27 9210 6.71 5 5 5 0 5 5 ----- All columns:: cycle max_count ALL_count ALL_min ALL_max ALL_sum ALL_mean ALL_Q1 ALL_med ALL_Q3 ALL_IQR ALL_lW ALL_rW A_count A_min A_max A_sum A_mean A_Q1 A_med A_Q3 A_IQR A_lW A_rW C_count C_min C_max C_sum C_mean C_Q1 C_med C_Q3 C_IQR C_lW C_rW G_count G_min G_max G_sum G_mean G_Q1 G_med G_Q3 G_IQR G_lW G_rW T_count T_min T_max T_sum T_mean T_Q1 T_med T_Q3 T_IQR T_lW T_rW N_count N_min N_max N_sum N_mean N_Q1 N_med N_Q3 N_IQR N_lW N_rW ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_renamer.xml000066400000000000000000000040601226234573700254000ustar00rootroot00000000000000 cat '$input' | fastx_renamer #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -n $TYPE -o '$output' -v **What it does** This tool renames the sequence identifiers in a FASTQ/A file. .. class:: infomark Use this tool at the beginning of your workflow, as a way to keep the original sequence (before trimming, clipping, barcode-removal, etc). -------- **Example** The following Solexa-FASTQ file:: @CSHL_4_FC042GAMMII_2_1_517_596 GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT +CSHL_4_FC042GAMMII_2_1_517_596 40 40 40 40 40 40 40 40 40 40 38 40 40 40 40 40 14 40 40 40 40 40 36 40 13 14 24 24 9 24 9 40 10 10 15 40 Renamed to **nucleotides sequence**:: @GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT +GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT 40 40 40 40 40 40 40 40 40 40 38 40 40 40 40 40 14 40 40 40 40 40 36 40 13 14 24 24 9 24 9 40 10 10 15 40 Renamed to **numeric counter**:: @1 GGTCAATGATGAGTTGGCACTGTAGGCACCATCAAT +1 40 40 40 40 40 40 40 40 40 40 38 40 40 40 40 40 14 40 40 40 40 40 36 40 13 14 24 24 9 24 9 40 10 10 15 40 ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_reverse_complement.xml000066400000000000000000000033321226234573700276460ustar00rootroot00000000000000 cat '$input' | fastx_reverse_complement #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -v -o '$output' **What it does** This tool reverse-complements each sequence in a library. If the library is a FASTQ, the quality-scores are also reversed. -------- **Example** Input FASTQ file:: @CSHL_1_FC42AGWWWXX:8:1:3:740 TGTCTGTAGCCTCNTCCTTGTAATTCAAAGNNGGTA +CSHL_1_FC42AGWWWXX:8:1:3:740 33 33 33 34 33 33 33 33 33 33 33 33 27 5 27 33 33 33 33 33 33 27 21 27 33 32 31 29 26 24 5 5 15 17 27 26 Output FASTQ file:: @CSHL_1_FC42AGWWWXX:8:1:3:740 TACCNNCTTTGAATTACAAGGANGAGGCTACAGACA +CSHL_1_FC42AGWWWXX:8:1:3:740 26 27 17 15 5 5 24 26 29 31 32 33 27 21 27 33 33 33 33 33 33 27 5 27 33 33 33 33 33 33 33 33 34 33 33 33 ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_trimmer.xml000066400000000000000000000041101226234573700254220ustar00rootroot00000000000000 to fixed length cat '$input' | fastx_trimmer #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -v -f $first -l $last -o '$output' **What it does** This tool trims (cut nucleotides from) sequences in a FASTA/Q file. -------- **Example** Input Fasta file (with 36 bases in each sequences):: >1-1 TATGGTCAGAAACCATATGCAGAGCCTGTAGGCACC >2-1 CAGCGAGGCTTTAATGCCATTTGGCTGTAGGCACCA Trimming with First=1 and Last=21, we get a FASTA file with 21 bases in each sequences (starting from the first base):: >1-1 TATGGTCAGAAACCATATGCA >2-1 CAGCGAGGCTTTAATGCCATT Trimming with First=6 and Last=10, will generate a FASTA file with 5 bases (bases 6,7,8,9,10) in each sequences:: >1-1 TCAGA >2-1 AGGCT ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_trimmer_from_end.xml000066400000000000000000000040171226234573700273010ustar00rootroot00000000000000 of sequences cat '$input' | fastx_trimmer #if $input.ext == "fastqsanger": -Q 33 #elif $input.ext == "fastq": -Q 64 #end if -v -t $trimnum -m $minlen -o '$output' This will trim from the end of the sequences Sequences shorter than this length will be discarded **What it does** This tool trims (cut nucleotides from) sequences in a FASTQ/FASTA file from the 3' end. .. class:: infomark When trimming a FASTQ file, the quality scores will be trimmed appropriately (to the same length of the corresponding sequence). -------- **Example** Input Fasta file:: >1-1 TATGGTCAGAAACCATATGCAGAGCCTGTAGGCACC >2-1 CAGCGAGGCTTTAATGCCATT Trimming 5 nucleotides from the end, and discarding sequences shorter than 10 , we get the following FASTA file:: >1-1 TATGGTCAGAAACCATATGCAGAGCCTGTAG >2-1 CAGCGAGGCTTTAATG Trimming 10 nucleotides from the end, and discarding sequences shorter than 15 , we get the following FASTA file:: >1-1 TATGGTCAGAAACCATATGCAGAGCC ------ This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/fastx_uncollapser.xml000066400000000000000000000025661226234573700263070ustar00rootroot00000000000000 sequences cat '$input' | fastx_uncollapser -v -o '$output' **What it does** This tool uncollapses a previously-collapsed FASTA file. It reads each collapsed sequence and generates multiple sequences based on the collapsed read count. -------- **Example** Example Input - a collapsed FASTA file (Sequence "ATAT" has four collapsed reads):: >1-1 TGCG >2-4 ATAT Example Output - uncollapsed FASTA file (Sequence "ATAT" now appears as 4 separate sequences):: >1 TGCG >2 ATAT >3 ATAT >4 ATAT >5 ATAT .. class:: infomark The original sequence id (with the read counts) are discarded, with the sequence given a numerical name. ----- This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/galaxy/tools/fastx_toolkit/seqid_uncollapser.xml000066400000000000000000000050501226234573700262560ustar00rootroot00000000000000 containing collapsed sequence IDs cat '$input' | fastx_uncollapser -c $idcol -v -o '$output' This column contains the sequence id from a collapsed FASTA file in the form of "(seq number)-(read count)" (e.g. 15-4). Use 10 if you're analyzing BLAT output **What it does** This tool reads a row (in a table) containing a collapsed sequence ID, and duplicates the . .. class:: warningmark You must specify the column containing the collapsed sequence ID (e.g. 15-4). -------- **Example Input File** The following input file contains two collapsed sequence identifiers at column 10: *84-2* and *87-5* (meaning the first has multiplicity-count of 2 and the second has multiplicity count of 5):: 23 0 0 0 0 0 0 0 + 84-2 ... 22 0 0 0 0 0 0 0 + 87-5 ... **Output Example** After **uncollapsing** (on column 10), the line of the first sequence-identifier is repeated *twice*, and the line of the second sequence-identifier is repeated *five* times:: 23 0 0 0 0 0 0 0 + 84-2 ... 23 0 0 0 0 0 0 0 + 84-2 ... 22 0 0 0 0 0 0 0 + 87-5 ... 22 0 0 0 0 0 0 0 + 87-5 ... 22 0 0 0 0 0 0 0 + 87-5 ... 22 0 0 0 0 0 0 0 + 87-5 ... 22 0 0 0 0 0 0 0 + 87-5 ... Uncollapsing a text file allows analsys of collapsed FASTA files to be used with any tool which doesn't 'understand' collapsed multiplicity counts. .. class:: infomark See the *Collapse* tool in the *FASTA Manipulation* category for more details about collapsing FASTA files. ----- This tool is based on `FASTX-toolkit`__ by Assaf Gordon. .. __: http://hannonlab.cshl.edu/fastx_toolkit/ fastx_toolkit-0.0.14/install_galaxy_files.sh000077500000000000000000000064531226234573700212450ustar00rootroot00000000000000#!/bin/sh # # Arguments check and suage information # SRC="." DEST="$1" if [ -z "$DEST" ]; then cat< # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # Install m4 macros in this directory m4datadir = $(datadir)/aclocal # List your m4 macros here m4macros = ax_c_long_long.m4 \ ax_cxx_compile_stdcxx_11.m4 \ ax_cxx_header_stdcxx_tr1.m4 # The following is boilerplate m4data_DATA = $(m4macros) EXTRA_DIST = $(m4data_DATA) fastx_toolkit-0.0.14/m4/ax_c_long_long.m4000066400000000000000000000021411226234573700202310ustar00rootroot00000000000000# =========================================================================== # http://www.nongnu.org/autoconf-archive/ax_c_long_long.html # =========================================================================== # # SYNOPSIS # # AX_C_LONG_LONG # # DESCRIPTION # # Provides a test for the existence of the long long int type and defines # HAVE_LONG_LONG if it is found. # # LICENSE # # Copyright (c) 2008 Caolan McNamara # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 4 AU_ALIAS([AC_C_LONG_LONG], [AX_C_LONG_LONG]) AC_DEFUN([AX_C_LONG_LONG], [AC_CACHE_CHECK(for long long int, ac_cv_c_long_long, [if test "$GCC" = yes; then ac_cv_c_long_long=yes else AC_TRY_COMPILE(,[long long int i;], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) fi]) if test $ac_cv_c_long_long = yes; then AC_DEFINE(HAVE_LONG_LONG, 1, [compiler understands long long]) fi ]) fastx_toolkit-0.0.14/m4/ax_cxx_compile_stdcxx_11.m4000066400000000000000000000107631226234573700221720ustar00rootroot00000000000000# ============================================================================ # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html # ============================================================================ # # SYNOPSIS # # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional]) # # DESCRIPTION # # Check for baseline language coverage in the compiler for the C++11 # standard; if necessary, add switches to CXXFLAGS to enable support. # # The first argument, if specified, indicates whether you insist on an # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. # -std=c++11). If neither is specified, you get whatever works, with # preference for an extended mode. # # The second argument, if specified 'mandatory' or if left unspecified, # indicates that baseline C++11 support is required and that the macro # should error out if no mode with that support is found. If specified # 'optional', then configuration proceeds regardless, after defining # HAVE_CXX11 if and only if a supporting mode is found. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # Copyright (c) 2012 Zack Weinberg # Copyright (c) 2013 Roy Stogner # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 3 m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [ template struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; typedef check> right_angle_brackets; int a; decltype(a) b; typedef check check_type; check_type c; check_type&& cr = static_cast(c); auto d = a; ]) AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl m4_if([$1], [], [], [$1], [ext], [], [$1], [noext], [], [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl m4_if([$2], [], [ax_cxx_compile_cxx11_required=true], [$2], [mandatory], [ax_cxx_compile_cxx11_required=true], [$2], [optional], [ax_cxx_compile_cxx11_required=false], [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])dnl AC_LANG_PUSH([C++])dnl ac_success=no AC_CACHE_CHECK(whether $CXX supports C++11 features by default, ax_cv_cxx_compile_cxx11, [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [ax_cv_cxx_compile_cxx11=yes], [ax_cv_cxx_compile_cxx11=no])]) if test x$ax_cv_cxx_compile_cxx11 = xyes; then ac_success=yes fi m4_if([$1], [noext], [], [dnl if test x$ac_success = xno; then for switch in -std=gnu++11 -std=gnu++0x; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, $cachevar, [ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [eval $cachevar=yes], [eval $cachevar=no]) CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi]) m4_if([$1], [ext], [], [dnl if test x$ac_success = xno; then for switch in -std=c++11 -std=c++0x; do cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch]) AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch, $cachevar, [ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS $switch" AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])], [eval $cachevar=yes], [eval $cachevar=no]) CXXFLAGS="$ac_save_CXXFLAGS"]) if eval test x\$$cachevar = xyes; then CXXFLAGS="$CXXFLAGS $switch" ac_success=yes break fi done fi]) AC_LANG_POP([C++]) if test x$ax_cxx_compile_cxx11_required = xtrue; then if test x$ac_success = xno; then AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.]) fi else if test x$ac_success = xno; then HAVE_CXX11=0 AC_MSG_NOTICE([No compiler with C++11 support was found]) else HAVE_CXX11=1 AC_DEFINE(HAVE_CXX11,1, [define if the compiler supports basic C++11 syntax]) fi AC_SUBST(HAVE_CXX11) fi ]) fastx_toolkit-0.0.14/m4/ax_cxx_header_stdcxx_tr1.m4000066400000000000000000000024401226234573700222500ustar00rootroot00000000000000# =========================================================================== # http://www.nongnu.org/autoconf-archive/ax_cxx_header_stdcxx_tr1.html # =========================================================================== # # SYNOPSIS # # AX_CXX_HEADER_STDCXX_TR1 # # DESCRIPTION # # Check for library coverage of the TR1 standard. # # LICENSE # # Copyright (c) 2008 Benjamin Kosnik # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. ## ## Modified by A. Gordon (assafgordon@gmail.com), 1-Feb-2010 ## Removed unused header files (which can't be found on some TR1 gcc-4.2.4 on CentOS 5.4) ## #serial 5 AU_ALIAS([AC_CXX_HEADER_STDCXX_TR1], [AX_CXX_HEADER_STDCXX_TR1]) AC_DEFUN([AX_CXX_HEADER_STDCXX_TR1], [ AC_CACHE_CHECK(for ISO C++ TR1 include files, ax_cv_cxx_stdcxx_tr1, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ #include ],, ax_cv_cxx_stdcxx_tr1=yes, ax_cv_cxx_stdcxx_tr1=no) AC_LANG_RESTORE ]) if test "$ax_cv_cxx_stdcxx_tr1" = yes; then AC_DEFINE(STDCXX_TR1_HEADERS,,[Define if ISO C++ TR1 header files are present. ]) fi ]) fastx_toolkit-0.0.14/reconf000077500000000000000000000012631226234573700157050ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. #!/bin/sh rm -f config.cache mkdir -p config echo "- libtoolize." libtoolize -i echo "- aclocal." aclocal -I m4 echo "- autoconf." autoconf echo "- autoheader." autoheader echo "- automake." automake -a exit fastx_toolkit-0.0.14/scripts/000077500000000000000000000000001226234573700161705ustar00rootroot00000000000000fastx_toolkit-0.0.14/scripts/Makefile.am000066400000000000000000000016271226234573700202320ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_SCRIPTS = fastx_barcode_splitter.pl \ fastx_nucleotide_distribution_graph.sh \ fastx_nucleotide_distribution_line_graph.sh \ fastq_quality_boxplot_graph.sh \ fasta_clipping_histogram.pl EXTRA_DIST = fastx_barcode_splitter.pl \ fastx_nucleotide_distribution_graph.sh \ fastx_nucleotide_distribution_line_graph.sh \ fastq_quality_boxplot_graph.sh \ fasta_clipping_histogram.pl fastx_toolkit-0.0.14/scripts/fasta_clipping_histogram.pl000077500000000000000000000053271226234573700235770ustar00rootroot00000000000000#!/usr/bin/perl # FASTX-toolkit - FASTA/FASTQ preprocessing tools. # Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . use strict; use warnings; use GD::Graph::bars; use Data::Dumper; use PerlIO::gzip; if (scalar @ARGV==0) { print<$ARGV[1]") or die "Cannot create output file $ARGV[1]\n"; binmode OUT; my %histogram ; while (my $name = ) { my $sequence = ; chomp $sequence; my $sequence_length = length($sequence); my $count; if ( index($name, "-")==-1 ) { #Assume this file is not collapsed, just count each seqeunce as 1 $count = 1 ; } else { #Assume file is collapsed (that is - sequence-ID has two numbers with a separating dash) ($count) = $name =~ /^\>[^-]+\-(\d+)$/ ; # If the match failed, treat this fasta as not collapsed; $count = 1 if not defined $count ; } $histogram{$sequence_length} += $count ; } #Textual Output if (0) { print "Length\tCount\n"; foreach my $length_key ( sort { $a <=> $b } keys %histogram ) { print $length_key,"\t", $histogram{$length_key},"\n"; } exit 0; } ## Build the data as required by GD::Graph::bars. ## Data list has two items (each item is itself a list) ## 1. a list of x-axis labels (these are the keys from the histogram) ## 2. a list of values my @data = ( [ sort { $a <=> $b } keys %histogram ], [ map { $histogram{$_} } sort { $a <=> $b } keys %histogram ] ) ; my $graph = new GD::Graph::bars (1000,800); $graph->set( x_label => 'Length', y_label => 'Amount', title => 'Sequences lengths Distribution (after clipping)', bar_spacing => 10, transparent => 0, t_margin => 10, y_tick_number => 20, y_long_ticks => 1, ) or die $graph->error; $graph->plot(\@data) or die $graph->error; print OUT $graph->gd->png; close IN; close OUT; fastx_toolkit-0.0.14/scripts/fastq_quality_boxplot_graph.sh000077500000000000000000000124171226234573700243520ustar00rootroot00000000000000#!/usr/bin/env bash # FASTX-toolkit - FASTA/FASTQ preprocessing tools. # Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . function usage() { echo "Solexa-Quality BoxPlot plotter" echo "Generates a solexa quality score box-plot graph " echo echo "Usage: $0 [-i INPUT.TXT] [-t TITLE] [-p] [-o OUTPUT]" echo echo " [-p] - Generate PostScript (.PS) file. Default is PNG image." echo " [-i INPUT.TXT] - Input file. Should be the output of \"solexa_quality_statistics\" program." echo " [-o OUTPUT] - Output file name. default is STDOUT." echo " [-t TITLE] - Title (usually the solexa file name) - will be plotted on the graph." echo exit } # # Input Data columns: #pos cnt min max sum mean Q1 med Q3 IQR lW rW A_Count C_Count G_Count T_Count N_Count # As produced by "solexa_quality_statistics" program TITLE="" # default title is empty FILENAME="" OUTPUTTERM="set term png size 2048,768" # default output terminal is "PNG" OUTPUTFILE="/dev/stdout" # Default output file is simply "stdout" while getopts ":t:i:o:ph" Option do case $Option in # w ) CMD=$OPTARG; FILENAME="PIMSLogList.txt"; TARGET="logfiles"; ;; t ) TITLE="for $OPTARG" ;; i ) FILENAME=$OPTARG ;; o ) OUTPUTFILE="$OPTARG" ;; p ) OUTPUTTERM="set term postscript enhanced color \"Helvetica\" 8" ;; h ) usage ;; * ) echo "unrecognized argument. use '-h' for usage information."; exit -1 ;; esac done shift $(($OPTIND - 1)) if [ "$FILENAME" == "" ]; then usage fi if [ ! -r "$FILENAME" ]; then echo "Error: can't open input file ($1)." >&2 exit 1 fi ## ## Input validation ## Too many users (in galaxy) try to plot a FASTQ file ## (without using the 'fastq statistics' tool first). ## ## gnuplot's error in that case is crypt, and support emails are annoying. ## ## try to detect FASTA/FASTQ input, and give a detailed, easy-to-understand warning. ## ## AWK_FASTX_DETECTION=' NR==1 && $0 ~ /^>/ { fasta_id = 1 } NR==1 && $0 ~ /^@/ { fastq_id = 1 } NR==2 && $0 ~ /^[ACGT][ACGT]*$/ { nucleotides = 1 } NR>3 { exit } END { if ( fasta_id && nucleotides ) { print "FASTA" } if ( fastq_id && nucleotides ) { print "FASTQ" } }' INPUT_TYPE=$(awk "$AWK_FASTX_DETECTION" "$FILENAME") if [ "x$INPUT_TYPE" = "xFASTA" ] ; then #this doesn't even make sense: FASTA files don't contain any quality scores cat>&2<&2<&2< "$OUTPUTFILE" fastx_toolkit-0.0.14/scripts/fastx_barcode_splitter.pl000077500000000000000000000331661226234573700232730ustar00rootroot00000000000000#!/usr/bin/perl # FASTX-toolkit - FASTA/FASTQ preprocessing tools. # Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . use strict; use warnings; use IO::Handle; use Data::Dumper; use Getopt::Long; use Carp; ## ## This program splits a FASTQ/FASTA file into several smaller files, ## Based on barcode matching. ## ## run with "--help" for usage information ## ## Assaf Gordon , 11sep2008 # Forward declarations sub load_barcode_file ($); sub parse_command_line ; sub match_sequences ; sub mismatch_count($$) ; sub print_results; sub open_and_detect_input_format; sub read_record; sub write_record($); sub usage(); # Global flags and arguments, # Set by command line argumens my $barcode_file ; my $barcodes_at_eol = 0 ; my $barcodes_at_bol = 0 ; my $exact_match = 0 ; my $allow_partial_overlap = 0; my $allowed_mismatches = 1; my $newfile_suffix = ''; my $newfile_prefix ; my $quiet = 0 ; my $debug = 0 ; my $fastq_format = 1; # Global variables # Populated by 'create_output_files' my %filenames; my %files; my %counts = ( 'unmatched' => 0 ); my $barcodes_length; my @barcodes; my $input_file_io; # The Four lines per record in FASTQ format. # (when using FASTA format, only the first two are used) my $seq_name; my $seq_bases; my $seq_name2; my $seq_qualities; # # Start of Program # parse_command_line ; load_barcode_file ( $barcode_file ) ; open_and_detect_input_format; match_sequences ; print_results unless $quiet; # # End of program # sub parse_command_line { my $help; usage() if (scalar @ARGV==0); my $result = GetOptions ( "bcfile=s" => \$barcode_file, "eol" => \$barcodes_at_eol, "bol" => \$barcodes_at_bol, "exact" => \$exact_match, "prefix=s" => \$newfile_prefix, "suffix=s" => \$newfile_suffix, "quiet" => \$quiet, "partial=i" => \$allow_partial_overlap, "debug" => \$debug, "mismatches=i" => \$allowed_mismatches, "help" => \$help ) ; usage() if ($help); die "Error: barcode file not specified (use '--bcfile [FILENAME]')\n" unless defined $barcode_file; die "Error: prefix path/filename not specified (use '--prefix [PATH]')\n" unless defined $newfile_prefix; if ($barcodes_at_bol == $barcodes_at_eol) { die "Error: can't specify both --eol & --bol\n" if $barcodes_at_eol; die "Error: must specify either --eol or --bol\n" ; } die "Error: invalid for value partial matches (valid values are 0 or greater)\n" if $allow_partial_overlap<0; $allowed_mismatches = 0 if $exact_match; die "Error: invalid value for mismatches (valid values are 0 or more)\n" if ($allowed_mismatches<0); die "Error: partial overlap value ($allow_partial_overlap) bigger than " . "max. allowed mismatches ($allowed_mismatches)\n" if ($allow_partial_overlap > $allowed_mismatches); exit unless $result; } # # Read the barcode file # sub load_barcode_file ($) { my $filename = shift or croak "Missing barcode file name"; open BCFILE,"<$filename" or die "Error: failed to open barcode file ($filename)\n"; while () { next if m/^#/; chomp; my ($ident, $barcode) = split ; $barcode = uc($barcode); # Sanity checks on the barcodes die "Error: bad data at barcode file ($filename) line $.\n" unless defined $barcode; die "Error: bad barcode value ($barcode) at barcode file ($filename) line $.\n" unless $barcode =~ m/^[AGCT]+$/; die "Error: bad identifier value ($ident) at barcode file ($filename) line $. (must be alphanumeric)\n" unless $ident =~ m/^\w+$/; die "Error: badcode($ident, $barcode) is shorter or equal to maximum number of " . "mismatches ($allowed_mismatches). This makes no sense. Specify fewer mismatches.\n" if length($barcode)<=$allowed_mismatches; $barcodes_length = length($barcode) unless defined $barcodes_length; die "Error: found barcodes in different lengths. this feature is not supported yet.\n" unless $barcodes_length == length($barcode); push @barcodes, [$ident, $barcode]; if ($allow_partial_overlap>0) { foreach my $i (1 .. $allow_partial_overlap) { substr $barcode, ($barcodes_at_bol)?0:-1, 1, ''; push @barcodes, [$ident, $barcode]; } } } close BCFILE; if ($debug) { print STDERR "barcode\tsequence\n"; foreach my $barcoderef (@barcodes) { my ($ident, $seq) = @{$barcoderef}; print STDERR $ident,"\t", $seq ,"\n"; } } } # Create one output file for each barcode. # (Also create a file for the dummy 'unmatched' barcode) sub create_output_files { my %barcodes = map { $_->[0] => 1 } @barcodes; #generate a uniq list of barcode identifiers; $barcodes{'unmatched'} = 1 ; foreach my $ident (keys %barcodes) { my $new_filename = $newfile_prefix . $ident . $newfile_suffix; $filenames{$ident} = $new_filename; open my $file, ">$new_filename" or die "Error: failed to create output file ($new_filename)\n"; $files{$ident} = $file ; } } sub match_sequences { my %barcodes = map { $_->[0] => 1 } @barcodes; #generate a uniq list of barcode identifiers; $barcodes{'unmatched'} = 1 ; #reset counters foreach my $ident ( keys %barcodes ) { $counts{$ident} = 0; } create_output_files; # Read file FASTQ file # split accotding to barcodes while ( read_record ) { chomp $seq_bases; print STDERR "sequence $seq_bases: \n" if $debug; my $best_barcode_mismatches_count = $barcodes_length; my $best_barcode_ident = undef; #Try all barcodes, find the one with the lowest mismatch count foreach my $barcoderef (@barcodes) { my ($ident, $barcode) = @{$barcoderef}; # Get DNA fragment (in the length of the barcodes) # The barcode will be tested only against this fragment # (no point in testing the barcode against the whole sequence) my $sequence_fragment; if ($barcodes_at_bol) { $sequence_fragment = substr $seq_bases, 0, $barcodes_length; } else { $sequence_fragment = substr $seq_bases, - $barcodes_length; } my $mm = mismatch_count($sequence_fragment, $barcode) ; # if this is a partial match, add the non-overlap as a mismatch # (partial barcodes are shorter than the length of the original barcodes) $mm += ($barcodes_length - length($barcode)); if ( $mm < $best_barcode_mismatches_count ) { $best_barcode_mismatches_count = $mm ; $best_barcode_ident = $ident ; } } $best_barcode_ident = 'unmatched' if ( (!defined $best_barcode_ident) || $best_barcode_mismatches_count>$allowed_mismatches) ; print STDERR "sequence $seq_bases matched barcode: $best_barcode_ident\n" if $debug; $counts{$best_barcode_ident}++; #get the file associated with the matched barcode. #(note: there's also a file associated with 'unmatched' barcode) my $file = $files{$best_barcode_ident}; write_record($file); } } #Quickly calculate hamming distance between two strings # #NOTE: Strings must be same length. # returns number of different characters. #see http://www.perlmonks.org/?node_id=500235 sub mismatch_count($$) { length( $_[ 0 ] ) - ( ( $_[ 0 ] ^ $_[ 1 ] ) =~ tr[\0][\0] ) } sub print_results { print "Barcode\tCount\tLocation\n"; my $total = 0 ; foreach my $ident (sort keys %counts) { print $ident, "\t", $counts{$ident},"\t",$filenames{$ident},"\n"; $total += $counts{$ident}; } print "total\t",$total,"\n"; } sub read_record { $seq_name = $input_file_io->getline(); return undef unless defined $seq_name; # End of file? $seq_bases = $input_file_io->getline(); die "Error: bad input file, expecting line with sequences\n" unless defined $seq_bases; # If using FASTQ format, read two more lines if ($fastq_format) { $seq_name2 = $input_file_io->getline(); die "Error: bad input file, expecting line with sequence name2\n" unless defined $seq_name2; $seq_qualities = $input_file_io->getline(); die "Error: bad input file, expecting line with quality scores\n" unless defined $seq_qualities; } return 1; } sub write_record($) { my $file = shift; croak "Bad file handle" unless defined $file; print $file $seq_name; print $file $seq_bases,"\n"; #if using FASTQ format, write two more lines if ($fastq_format) { print $file $seq_name2; print $file $seq_qualities; } } sub open_and_detect_input_format { $input_file_io = new IO::Handle; die "Failed to open STDIN " unless $input_file_io->fdopen(fileno(STDIN),"r"); # Get the first characeter, and push it back my $first_char = $input_file_io->getc(); $input_file_io->ungetc(ord $first_char); if ($first_char eq '>') { # FASTA format $fastq_format = 0 ; print STDERR "Detected FASTA format\n" if $debug; } elsif ($first_char eq '@') { # FASTQ format $fastq_format = 1; print STDERR "Detected FASTQ format\n" if $debug; } else { die "Error: unknown file format. First character = '$first_char' (expecting > or \@)\n"; } } sub usage() { print<. usage() { echo "FASTA/Q Nucleotide Distribution Plotter" echo echo "Usage: $0 [-i INPUT.TXT] [-t TITLE] [-p] [-o OUTPUT]" echo echo " [-p] - Generate PostScript (.PS) file. Default is PNG image." echo " [-i INPUT.TXT] - Input file. Should be the output of \"fastx_quality_statistics\" program." echo " [-o OUTPUT] - Output file name. default is STDOUT." echo " [-t TITLE] - Title - will be plotted on the graph." echo exit } # # Input Data columns: #pos cnt min max sum mean Q1 med Q3 IQR lW rW A_Count C_Count G_Count T_Count N_Count # As produced by "fastq_quality_statistics" program TITLE="" # default title is empty FILENAME="" OUTPUTTERM="set term png size 1048,768" # default output terminal is "PNG" OUTPUTFILE="/dev/stdout" # Default output file is simply "stdout" while getopts ":t:i:o:ph" Option do case $Option in t ) TITLE="for $OPTARG" ;; i ) FILENAME=$OPTARG ;; o ) OUTPUTFILE="$OPTARG" ;; p ) OUTPUTTERM="set term postscript enhanced color \"Helvetica\" 8" ;; h ) usage ;; * ) echo "unrecognized argument. use '-h' for usage information."; exit -1 ;; esac done shift $(($OPTIND - 1)) if [ -z "$FILENAME" ]; then usage fi if [ ! -r "$FILENAME" ]; then echo "Error: can't open input file ($1)." >&2 exit 1 fi ## ## Input validation ## Too many users (in galaxy) try to plot a FASTQ file ## (without using the 'fastq statistics' tool first). ## ## gnuplot's error in that case is crypt, and support emails are annoying. ## ## try to detect FASTA/FASTQ input, and give a detailed, easy-to-understand warning. ## ## AWK_FASTX_DETECTION=' NR==1 && $0 ~ /^>/ { fasta_id = 1 } NR==1 && $0 ~ /^@/ { fastq_id = 1 } NR==2 && $0 ~ /^[ACGT][ACGT]*$/ { nucleotides = 1 } NR>3 { exit } END { if ( fasta_id && nucleotides ) { print "FASTA" } if ( fastq_id && nucleotides ) { print "FASTQ" } }' INPUT_TYPE=$(awk "$AWK_FASTX_DETECTION" "$FILENAME") if [ "x$INPUT_TYPE" = "xFASTA" ] ; then #this doesn't even make sense: FASTA files don't contain any quality scores cat>&2<&2<&2< "$OUTPUTFILE" fastx_toolkit-0.0.14/scripts/fastx_nucleotide_distribution_line_graph.sh000077500000000000000000000137001226234573700270570ustar00rootroot00000000000000#!/usr/bin/env bash # FASTX-toolkit - FASTA/FASTQ preprocessing tools. # Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # # # This script was modified by Oliver Tam (tam@cshl.edu) usage() { echo "FASTA/Q Nucleotide Distribution Plotter" echo echo "Usage: $0 [-i INPUT.TXT] [-t TITLE] [-p] [-o OUTPUT]" echo echo " [-p] - Generate PostScript (.PS) file. Default is PNG image." echo " [-i INPUT.TXT] - Input file. Should be the output of \"fastx_quality_statistics\" program." echo " [-o OUTPUT] - Output file name. default is STDOUT." echo " [-t TITLE] - Title - will be plotted on the graph." echo exit } # # Input Data columns: #pos cnt min max sum mean Q1 med Q3 IQR lW rW A_Count C_Count G_Count T_Count N_Count # As produced by "fastq_quality_statistics" program TITLE="" # default title is empty FILENAME="" OUTPUTTERM="set term png size 1048,768" # default output terminal is "PDF" OUTPUTFILE="/dev/stdout" # Default output file is simply "stdout" while getopts ":t:i:o:ph" Option do case $Option in t ) TITLE="for $OPTARG" ;; i ) FILENAME=$OPTARG ;; o ) OUTPUTFILE="$OPTARG" ;; p ) OUTPUTTERM="set term postscript enhanced color \"Helvetica\" 8" ;; h ) usage ;; * ) echo "unrecognized argument. use '-h' for usage information."; exit -1 ;; esac done shift $(($OPTIND - 1)) if [ -z "$FILENAME" ]; then usage fi if [ ! -r "$FILENAME" ]; then echo "Error: can't open input file ($1)." >&2 exit 1 fi ## ## Input validation ## Too many users (in galaxy) try to plot a FASTQ file ## (without using the 'fastq statistics' tool first). ## ## gnuplot's error in that case is crypt, and support emails are annoying. ## ## try to detect FASTA/FASTQ input, and give a detailed, easy-to-understand warning. ## ## AWK_FASTX_DETECTION=' NR==1 && $0 ~ /^>/ { fasta_id = 1 } NR==1 && $0 ~ /^@/ { fastq_id = 1 } NR==2 && $0 ~ /^[ACGT][ACGT]*$/ { nucleotides = 1 } NR>3 { exit } END { if ( fasta_id && nucleotides ) { print "FASTA" } if ( fastq_id && nucleotides ) { print "FASTQ" } }' INPUT_TYPE=$(awk "$AWK_FASTX_DETECTION" "$FILENAME") if [ "x$INPUT_TYPE" = "xFASTA" ] ; then #this doesn't even make sense: FASTA files don't contain any quality scores cat>&2<&2<&2< "$OUTPUTFILE" fastx_toolkit-0.0.14/src/000077500000000000000000000000001226234573700152705ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/Makefile.am000066400000000000000000000015171226234573700173300ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. SUBDIRS = libfastx \ fastx_clipper \ fastx_trimmer \ fastx_quality_stats \ fastq_quality_converter \ fastq_to_fasta \ fastq_quality_filter \ fastq_quality_trimmer \ fastx_artifacts_filter \ fastx_reverse_complement \ fastx_collapser \ fastx_uncollapser \ seqalign_test \ fasta_formatter \ fasta_nucleotide_changer \ fastx_renamer \ fastq_masker fastx_toolkit-0.0.14/src/fasta_formatter/000077500000000000000000000000001226234573700204515ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fasta_formatter/Makefile.am000066400000000000000000000013371226234573700225110ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fasta_formatter AM_CPPFLAGS = $(CC_WARNINGS) $(GTEXTUTILS_CFLAGS) \ -I$(top_srcdir)/src/libfastx LDADD = $(GTEXTUTILS_LIBS) ../libfastx/libfastx.a $(LT_LDFLAGS) fasta_formatter_SOURCES = fasta_formatter.cpp \ sequence_writers.h fastx_toolkit-0.0.14/src/fasta_formatter/fasta_formatter.cpp000066400000000000000000000121401226234573700243340ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "sequence_writers.h" #include "config.h" using namespace std; string input_filename; string output_filename; bool flag_output_empty_sequences = false ; bool flag_output_tabular = false ; int flag_requested_output_width = 0 ; const char* usage_string= "usage: fasta_formatter [-h] [-i INFILE] [-o OUTFILE] [-w N] [-t] [-e]\n" \ "Part of " PACKAGE_STRING " by assafgordon@gmail.com\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ " [-w N] = max. sequence line width for output FASTA file.\n" \ " When ZERO (the default), sequence lines will NOT be wrapped -\n" \ " all nucleotides of each sequences will appear on a single \n" \ " line (good for scripting).\n" \ " [-t] = Output tabulated format (instead of FASTA format).\n" \ " Sequence-Identifiers will be on first column,\n" \ " Nucleotides will appear on second column (as single line).\n" \ " [-e] = Output empty sequences (default is to discard them).\n" \ " Empty sequences are ones who have only a sequence identifier,\n" \ " but not actual nucleotides.\n" \ "\n" \ "Input Example:\n" \ " >MY-ID\n" \ " AAAAAGGGGG\n" \ " CCCCCTTTTT\n" \ " AGCTN\n" \ "\n" \ "Output example with unlimited line width [-w 0]:\n" \ " >MY-ID\n" \ " AAAAAGGGGGCCCCCTTTTTAGCTN\n" \ "\n" \ "Output example with max. line width=7 [-w 7]:\n" \ " >MY-ID\n" \ " AAAAAGG\n" \ " GGGTTTT\n" \ " TCCCCCA\n" \ " GCTN\n" \ "\n" \ "Output example with tabular output [-t]:\n" \ " MY-ID AAAAAGGGGGCCCCCTTTTAGCTN\n" \ "\n" \ "example of empty sequence:\n" \ "(will be discarded unless [-e] is used)\n" \ " >REGULAR-SEQUENCE-1\n" \ " AAAGGGTTTCCC\n" \ " >EMPTY-SEQUENCE\n" \ " >REGULAR-SEQUENCE-2\n" \ " AAGTAGTAGTAGTAGT\n" \ " GTATTTTATAT\n" \ "\n" \ "\n"; void usage() { printf("%s",usage_string); exit(0); } void parse_command_line(int argc, char* argv[]) { int opt; while ( (opt = getopt(argc, argv, "i:o:hw:te") ) != -1 ) { //Parse the default options switch(opt) { case 'h': usage(); case 'i': input_filename = optarg; break; case 'o': output_filename = optarg; break; case 'w': flag_requested_output_width = atoi(optarg); if ( flag_requested_output_width < 0 ) errx(1,"Invalid value (%s) for requested width [-w]", optarg); break ; case 't': flag_output_tabular = true ; break; case 'e': flag_output_empty_sequences = true; break; default: exit(1); } } } int main(int argc, char* argv[]) { ios::sync_with_stdio(false); parse_command_line(argc, argv); InputStreamWrapper input ( input_filename ) ; OutputStreamWrapper output ( output_filename ); TextLineReader reader ( input.stream() ) ; /* * Use the writer according to the user's request */ SequencesWriter * pWriter = NULL ; if ( flag_output_tabular ) { pWriter = new TabulatedFastaWriter ( output.stream() ) ; } else { if ( flag_requested_output_width == 0 ) pWriter = new SingleLineFastaWriter ( output.stream() ) ; else pWriter = new MultiLineFastaWriter ( output.stream(), flag_requested_output_width ) ; } if (!flag_output_empty_sequences) { EmptySequencesFilter *filter = new EmptySequencesFilter ( pWriter ) ; pWriter = filter ; } /* * FASTA read/process/write loop */ int max_length = 0 ; string sequence_id ; string sequence_bases ; bool first_line = true ; while ( reader.next_line() ) { const string &line = reader.line_string(); if ( line.length()==0 ) continue; if ( line[0] == '>' ) { //Got new sequence identifier - print previous sequence if (first_line) first_line = false; else pWriter->write ( sequence_id, sequence_bases ) ; // Start new sequence sequence_id = line ; sequence_bases.clear(); sequence_bases.resize ( max_length * 2 ) ; } else { //Got sequence nucleotides sequence_bases += line ; } } //Write the last sequence pWriter->write ( sequence_id, sequence_bases ) ; delete pWriter; } fastx_toolkit-0.0.14/src/fasta_formatter/sequence_writers.h000066400000000000000000000057131226234573700242170ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef __SEQUENCE_WRITERS__ #define __SEQUENCE_WRITERS__ #include #include class SequencesWriter { public: virtual ~SequencesWriter() {} virtual void write ( const std::string& sequence_id, const std::string& sequence_bases ) = 0 ; }; class EmptySequencesFilter : public SequencesWriter { private: SequencesWriter* upstream ; public: EmptySequencesFilter ( SequencesWriter * _upstream ) : upstream(_upstream) {} ~EmptySequencesFilter() { delete upstream; } virtual void write ( const std::string & sequence_id, const std::string& sequence_bases) { if ( !sequence_bases.empty() ) upstream->write ( sequence_id, sequence_bases ) ; } }; class SingleLineFastaWriter : public SequencesWriter { private: std::ostream& ostrm ; public: SingleLineFastaWriter ( std::ostream& output_stream ) : ostrm ( output_stream ) { } virtual void write ( const std::string & sequence_id, const std::string& sequence_bases ) { ostrm << sequence_id << std::endl; if ( !sequence_bases.empty() ) ostrm << sequence_bases << std::endl ; } }; class MultiLineFastaWriter : public SequencesWriter { private: std::ostream& ostrm ; size_t max_width ; public: MultiLineFastaWriter ( std::ostream& output_stream, size_t _max_width ) : ostrm ( output_stream ), max_width ( _max_width ) { } virtual void write ( const std::string & sequence_id, const std::string& sequence_bases ) { ostrm << sequence_id << std::endl; if ( !sequence_bases.empty() ) { size_t start = 0 ; while ( (sequence_bases.length() - start) >= max_width ) { ostrm << sequence_bases.substr ( start, max_width ) << std::endl; start += max_width ; } if ( sequence_bases.length() - start > 0 ) ostrm << sequence_bases.substr ( start ) << std::endl ; } } }; class TabulatedFastaWriter : public SequencesWriter { private: std::ostream& ostrm ; public: TabulatedFastaWriter ( std::ostream& output_stream ) : ostrm ( output_stream ) { } virtual void write ( const std::string & sequence_id, const std::string& sequence_bases ) { ostrm << sequence_id.substr(1) ; if ( !sequence_bases.empty() ) { ostrm << "\t" ; ostrm << sequence_bases ; } ostrm << std::endl; } }; #endif fastx_toolkit-0.0.14/src/fasta_nucleotide_changer/000077500000000000000000000000001226234573700222705ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fasta_nucleotide_changer/Makefile.am000066400000000000000000000013241226234573700243240ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fasta_nucleotide_changer AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fasta_nucleotide_changer_SOURCES = fasta_nucleotide_changer.c fasta_nucleotide_changer_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fasta_nucleotide_changer/fasta_nucleotide_changer.c000066400000000000000000000072371226234573700274450ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" #define MAX_ADAPTER_LEN 100 const char* usage= "usage: fasta_nucleotide_changer [-h] [-z] [-v] [-i INFILE] [-o OUTFILE] [-r] [-d]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-v] = Verbose mode. Prints a short summary.\n" \ " with [-o], summary is printed to STDOUT.\n" \ " Otherwise, summary is printed to STDERR.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ " [-r] = DNA-to-RNA mode - change T's into U's.\n" \ " [-d] = RNA-to-DNA mode - change U's into T's.\n" \ "\n"; int flag_dna_mode = 0; int flag_rna_mode = 0; FASTX fastx; int parse_program_args(int __attribute__((unused)) optind, int optc, char __attribute__((unused))* optarg) { switch(optc) { case 'd': flag_dna_mode = 1 ; break; case 'r': flag_rna_mode = 1 ; break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int main(int argc, char* argv[]) { size_t i; char nuc_from ; char nuc_to; size_t changes_count=0 ; fastx_parse_cmdline(argc, argv, "rd", parse_program_args); if ( !flag_dna_mode && !flag_rna_mode ) errx(1,"Please specify either RNA mode (-r) or DNA mode (-d)" ); if ( flag_dna_mode && flag_rna_mode ) errx(1,"RNA mode (-r) and DNA mode (-d) can not be used together." ); if ( flag_dna_mode ) { nuc_from = 'U'; nuc_to = 'T'; } if ( flag_rna_mode ) { nuc_from = 'T'; nuc_to = 'U'; } fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N | ALLOW_U, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_FASTA, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { for (i=0; i < strlen(fastx.nucleotides) ; i++) { if ( fastx.nucleotides[i] == nuc_to ) { errx(1,"Error: found '%c' nucleotide on line %lld. (input should not contain '%c' nucleotides in %s mode)", nuc_to, fastx.input_line_number, nuc_to,(flag_dna_mode)?"RNA-to-DNA":"DNA-to-RNA" ); } if ( fastx.nucleotides[i] == nuc_from ) { fastx.nucleotides[i] = nuc_to ; changes_count++; } } fastx_write_record(&fastx); } if ( verbose_flag() ) { fprintf(get_report_file(), "Mode: %s\n", (flag_dna_mode)?"RNA-to-DNA":"DNA-to-RNA" ) ; fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; fprintf(get_report_file(), "Nucleotides changed: %zu\n", changes_count ) ; } return 0; } fastx_toolkit-0.0.14/src/fastq_masker/000077500000000000000000000000001226234573700177505ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastq_masker/Makefile.am000066400000000000000000000012441226234573700220050ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastq_masker AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastq_masker_SOURCES = fastq_masker.c fastq_masker_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastq_masker/fastq_masker.c000066400000000000000000000076421226234573700226050ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" const char* usage= "usage: fastq_masker [-h] [-v] [-q N] [-r C] [-z] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-q N] = Quality threshold - nucleotides with lower quality will be masked\n" \ " Default is 10.\n" \ " [-r C] = Replace low-quality nucleotides with character C. Default is 'N'\n" \ " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTQ input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTQ output file. default is STDOUT.\n" \ " [-v] = Verbose - report number of sequences.\n" \ " If [-o] is specified, report will be printed to STDOUT.\n" \ " If [-o] is not specified (and output goes to STDOUT),\n" \ " report will be printed to STDERR.\n" \ "\n"; int min_quality_threshold=10; char mask_character='N'; FASTX fastx; int parse_program_args(int __attribute__((unused)) optind, int optc, char* optarg) { switch(optc) { case 'q': if (optarg==NULL) errx(1, "[-q] parameter requires an argument value"); min_quality_threshold = atoi(optarg); if (min_quality_threshold<-40) errx(1,"Invalid minimum length value (-q %s)", optarg); break; case 'r': if (optarg==NULL) errx(1, "[-r] parameter requires an argument value"); if (strlen(optarg)!=1) errx(1, "[-r] parameter requires a single character as value"); mask_character = optarg[0]; break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int main(int argc, char* argv[]) { int i ; size_t masked_reads_count=0; size_t masked_nucleotides_count=0; fastx_parse_cmdline(argc, argv, "q:r:", parse_program_args); fastx_init_reader(&fastx, get_input_filename(), FASTQ_ONLY, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { int masked = 0; //Scan each sequence - backwards for ( i=0; i<(int)strlen(fastx.nucleotides); ++i ) { if ( fastx.quality[i] < min_quality_threshold ) { fastx.nucleotides[i] = mask_character ; masked = 1; ++masked_nucleotides_count; } } if (masked) masked_reads_count += get_reads_count(&fastx); fastx_write_record(&fastx); } // //Print verbose report if ( verbose_flag() ) { fprintf(get_report_file(), "Minimum Quality Threshold: %d\n", min_quality_threshold); fprintf(get_report_file(), "Low-quality nucleotides replaced with '%c'\n", mask_character); fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; fprintf(get_report_file(), "Masked reads: %zu\n", masked_reads_count ) ; fprintf(get_report_file(), "Masked nucleotides: %zu\n", masked_nucleotides_count ) ; } return 0; } fastx_toolkit-0.0.14/src/fastq_quality_converter/000077500000000000000000000000001226234573700222455ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastq_quality_converter/Makefile.am000066400000000000000000000013201226234573700242750ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastq_quality_converter AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastq_quality_converter_SOURCES = fastq_quality_converter.c fastq_quality_converter_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastq_quality_converter/fastq_quality_converter.c000066400000000000000000000050261226234573700273710ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" const char* usage= "usage: fastq_quality_converter [-h] [-a] [-n] [-z] [-i INFILE] [-f OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-a] = Output ASCII quality scores (default).\n" \ " [-n] = Output numeric quality scores.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA output file. default is STDOUT.\n" \ "\n"; FASTX fastx; int flag_output_ascii = 1; int parse_program_args(int __attribute__((unused)) optind, int optc, char __attribute__((unused)) *optarg) { switch(optc) { case 'a': //this is the default, nothing to change break; case 'n': flag_output_ascii = 0 ; break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int main(int argc, char* argv[]) { fastx_parse_cmdline(argc, argv, "an", parse_program_args); fastx_init_reader(&fastx, get_input_filename(), FASTQ_ONLY, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), flag_output_ascii ? OUTPUT_FASTQ_ASCII_QUAL : OUTPUT_FASTQ_NUMERIC_QUAL, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { fastx_write_record(&fastx); } //Print verbose report if ( verbose_flag() ) { fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; } return 0; } fastx_toolkit-0.0.14/src/fastq_quality_filter/000077500000000000000000000000001226234573700215235ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastq_quality_filter/Makefile.am000066400000000000000000000013041226234573700235550ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastq_quality_filter AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastq_quality_filter_SOURCES = fastq_quality_filter.c fastq_quality_filter_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastq_quality_filter/fastq_quality_filter.c000066400000000000000000000120101226234573700261140ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" #define MAX_ADAPTER_LEN 100 const char* usage= "usage: fastq_quality_filter [-h] [-v] [-q N] [-p N] [-z] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-q N] = Minimum quality score to keep.\n" \ " [-p N] = Minimum percent of bases that must have [-q] quality.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ " [-v] = Verbose - report number of sequences.\n" \ " If [-o] is specified, report will be printed to STDOUT.\n" \ " If [-o] is not specified (and output goes to STDOUT),\n" \ " report will be printed to STDERR.\n" \ "\n"; #define DO_NOT_TRIM_LAST_BASE (0) int min_quality=0; int min_percent=0; FASTX fastx; int parse_program_args(int __attribute__((unused)) optind, int optc, char* optarg) { switch(optc) { case 'q': if (optarg==NULL) errx(1, "[-q] parameter requires an argument value"); min_quality = strtoul(optarg,NULL,10); break; case 'p': if (optarg==NULL) errx(1, "[-l] parameter requires an argument value"); min_percent = strtoul(optarg,NULL,10); if (min_percent<=0 || min_percent>100) errx(1,"Invalid percent value (-p %s)", optarg); break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int get_index_of_nth_element(int *array, int array_size, int n) { int pos; //Find the first nono-empty index pos = 0 ; while ( pos < array_size && array[pos]==0 ) pos++; #if 0 fprintf(stderr,"n=%d\n", n); for (i=0; i< array_size; i++) { if (array[i] != 0) fprintf(stderr, "[%d]=%d ", i + MIN_QUALITY_VALUE, array[i]) ; } fprintf(stderr,"\n"); #endif if (pos == array_size) errx(1,"bug: got empty array at %s:%d", __FILE__, __LINE__); while (n > 0) { if (array[pos] > n) break; n -= array[pos]; pos++; while (array[pos]==0 && pos < array_size) pos++; } return pos; } int get_percentile_quality(const FASTX *fastx, int percentile) { size_t i; int count=0; int quality_values[QUALITY_VALUES_RANGE]; memset(quality_values, 0, sizeof(quality_values)); for (i=0; i< strlen(fastx->nucleotides); i++) { count++; quality_values[ fastx->quality[i] - MIN_QUALITY_VALUE ] ++ ; } i = get_index_of_nth_element(quality_values, QUALITY_VALUES_RANGE, (count * (100-percentile) / 100)); //printf(" n = %d, i = %d, i+MIN_QUAL_VALUE=%d\n", // (count*(100-percentile)/100), i, i+MIN_QUALITY_VALUE) ; return i + MIN_QUALITY_VALUE ; } int main(int argc, char* argv[]) { fastx_parse_cmdline(argc, argv, "q:p:", parse_program_args); fastx_init_reader(&fastx, get_input_filename(), FASTQ_ONLY, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { #if 0 fprintf(stderr, "%s\n", fastx.nucleotides ) ; for (i=0; i= min_quality) { fastx_write_record(&fastx); } else { // fprintf(stderr, "%s\n", fastx.nucleotides ) ; // fprintf(stderr, "value = %d\n", value ) ; } } // //Print verbose report if ( verbose_flag() ) { fprintf(get_report_file(), "Quality cut-off: %d\n", min_quality); fprintf(get_report_file(), "Minimum percentage: %d\n", min_percent); fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; size_t discarded = num_input_reads(&fastx) - num_output_reads(&fastx) ; fprintf(get_report_file(), "discarded %zu (%zu%%) low-quality reads.\n", discarded, (discarded*100)/( num_input_reads(&fastx) ) ) ; } return 0; } fastx_toolkit-0.0.14/src/fastq_quality_trimmer/000077500000000000000000000000001226234573700217155ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastq_quality_trimmer/Makefile.am000066400000000000000000000013101226234573700237440ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastq_quality_trimmer AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastq_quality_trimmer_SOURCES = fastq_quality_trimmer.c fastq_quality_trimmer_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastq_quality_trimmer/fastq_quality_trimmer.c000066400000000000000000000077431226234573700265210ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" const char* usage= "usage: fastq_quality_trimmer [-h] [-v] [-t N] [-l N] [-z] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-t N] = Quality threshold - nucleotides with lower \n" \ " quality will be trimmed (from the end of the sequence).\n" \ " [-l N] = Minimum length - sequences shorter than this (after trimming)\n" \ " will be discarded. Default = 0 = no minimum length. \n" \ " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTQ input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTQ output file. default is STDOUT.\n" \ " [-v] = Verbose - report number of sequences.\n" \ " If [-o] is specified, report will be printed to STDOUT.\n" \ " If [-o] is not specified (and output goes to STDOUT),\n" \ " report will be printed to STDERR.\n" \ "\n"; int min_quality_threshold=0; int min_length=0; FASTX fastx; int parse_program_args(int __attribute__((unused)) optind, int optc, char* optarg) { switch(optc) { case 'l': if (optarg==NULL) errx(1, "[-l] parameter requires an argument value"); min_length = strtoul(optarg,NULL,10); if (min_length<0) errx(1,"Invalid minimum length value (-l %s)", optarg); break; case 't': if (optarg==NULL) errx(1, "[-t] parameter requires an argument value"); min_quality_threshold = strtol(optarg,NULL,10); break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int main(int argc, char* argv[]) { int i ; fastx_parse_cmdline(argc, argv, "t:l:", parse_program_args); if ( min_quality_threshold == 0 ) errx(1, "Missing minimum quality threshold value (-t)" ) ; fastx_init_reader(&fastx, get_input_filename(), FASTQ_ONLY, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { //Scan each sequence - backwards for ( i=(int)strlen(fastx.nucleotides)-1 ; i >=0 ; i-- ) { if ( fastx.quality[i] < min_quality_threshold ) fastx.nucleotides[i] = 0 ; else break ; } if ( i>=0 && i+1 >= min_length ) fastx_write_record(&fastx); } // //Print verbose report if ( verbose_flag() ) { fprintf(get_report_file(), "Minimum Quality Threshold: %d\n", min_quality_threshold); if ( min_length > 0 ) fprintf(get_report_file(), "Minimum Length: %d\n", min_length); else fprintf(get_report_file(), "No minimum Length\n"); fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; size_t discarded = num_input_reads(&fastx) - num_output_reads(&fastx) ; fprintf(get_report_file(), "discarded %zu (%zu%%) too-short reads.\n", discarded, (discarded*100)/( num_input_reads(&fastx) ) ) ; } return 0; } fastx_toolkit-0.0.14/src/fastq_to_fasta/000077500000000000000000000000001226234573700202665ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastq_to_fasta/Makefile.am000066400000000000000000000012541226234573700223240ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastq_to_fasta AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastq_to_fasta_SOURCES = fastq_to_fasta.c fastq_to_fasta_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastq_to_fasta/fastq_to_fasta.c000066400000000000000000000064551226234573700234420ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" const char* usage= "usage: fastq_to_fasta [-h] [-r] [-n] [-v] [-z] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-r] = Rename sequence identifiers to numbers.\n" \ " [-n] = keep sequences with unknown (N) nucleotides.\n" \ " Default is to discard such sequences.\n" \ " [-v] = Verbose - report number of sequences.\n" \ " If [-o] is specified, report will be printed to STDOUT.\n" \ " If [-o] is not specified (and output goes to STDOUT),\n" \ " report will be printed to STDERR.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA output file. default is STDOUT.\n" \ "\n"; FASTX fastx; int flag_rename_seqid = 0; int flag_discard_N = 1 ; int parse_program_args(int __attribute__((unused)) optind, int optc, char __attribute__((unused)) *optarg) { switch(optc) { case 'n': flag_discard_N = 0 ; break; case 'r': flag_rename_seqid = 1; break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int main(int argc, char* argv[]) { fastx_parse_cmdline(argc, argv, "rn", parse_program_args); fastx_init_reader(&fastx, get_input_filename(), FASTQ_ONLY, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_FASTA, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { //See if the input sequence contained 'N' nucleotides if ( flag_discard_N && (strchr(fastx.nucleotides,'N') != NULL)) continue; if ( flag_rename_seqid ) snprintf(fastx.name, sizeof(fastx.name), "%zu", num_output_reads(&fastx)+1) ; fastx_write_record(&fastx); } //Print verbose report if ( verbose_flag() ) { fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; if ( flag_discard_N ) { size_t discarded = num_input_reads(&fastx) - num_output_reads(&fastx) ; fprintf(get_report_file(), "discarded %zu (%zu%%) low-quality reads.\n", discarded, (discarded*100)/( num_input_reads(&fastx) ) ) ; } } return 0; } fastx_toolkit-0.0.14/src/fastx_artifacts_filter/000077500000000000000000000000001226234573700220225ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_artifacts_filter/Makefile.am000066400000000000000000000013141226234573700240550ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_artifacts_filter AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastx_artifacts_filter_SOURCES = fastx_artifacts_filter.c fastx_artifacts_filter_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastx_artifacts_filter/fastx_artifacts_filter.c000066400000000000000000000071611226234573700267250ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" #define MAX_ADAPTER_LEN 100 const char* usage= "usage: fastx_artifacts_filter [-h] [-v] [-z] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-v] = Verbose - report number of processed reads.\n" \ " If [-o] is specified, report will be printed to STDOUT.\n" \ " If [-o] is not specified (and output goes to STDOUT),\n" \ " report will be printed to STDERR.\n" \ "\n"; #define DO_NOT_TRIM_LAST_BASE (0) FASTX fastx; int parse_commandline(int argc, char* argv[]) { return fastx_parse_cmdline(argc, argv, "", NULL); } int artifact_sequence(const FASTX *fastx) { int n_count=0; int a_count=0; int c_count=0; int t_count=0; int g_count=0; int total_count=0; int max_allowed_different_bases = 3 ; int i=0; while (1) { if (fastx->nucleotides[i]==0) break; total_count++; switch(fastx->nucleotides[i]) { case 'A': a_count++; break; case 'C': c_count++; break; case 'G': g_count++; break; case 'T': t_count++; break; case 'N': n_count++; break; default: errx(1, __FILE__":%d: invalid nucleotide value (%c) at position %d", __LINE__, fastx->nucleotides[i], i ) ; } i++; } //Rules for artifacts if ( a_count>=(total_count-max_allowed_different_bases) || c_count>=(total_count-max_allowed_different_bases) || g_count>=(total_count-max_allowed_different_bases) || t_count>=(total_count-max_allowed_different_bases) ) return 1; return 0; } int main(int argc, char* argv[]) { parse_commandline(argc, argv); fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { if ( artifact_sequence(&fastx) ) { } else { fastx_write_record(&fastx); } } //Print verbose report if ( verbose_flag() ) { fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; size_t discarded = num_input_reads(&fastx) - num_output_reads(&fastx) ; fprintf(get_report_file(), "discarded %zu (%zu%%) artifact reads.\n", discarded, (discarded*100)/( num_input_reads(&fastx) ) ) ; } return 0; } fastx_toolkit-0.0.14/src/fastx_clipper/000077500000000000000000000000001226234573700201335ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_clipper/Makefile.am000066400000000000000000000012521226234573700221670ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_clipper AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastx_clipper_SOURCES = fastx_clipper.cpp fastx_clipper_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastx_clipper/fastx_clipper.cpp000066400000000000000000000251461226234573700235120ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include "sequence_alignment.h" #include #include #include #include "fastx.h" #include "fastx_args.h" #define MAX_ADAPTER_LEN 100 const char* usage= "usage: fastx_clipper [-h] [-a ADAPTER] [-D] [-l N] [-n] [-d N] [-c] [-C] [-o] [-v] [-z] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-a ADAPTER] = ADAPTER string. default is CCTTAAGG (dummy adapter).\n" \ " [-l N] = discard sequences shorter than N nucleotides. default is 5.\n" \ " [-d N] = Keep the adapter and N bases after it.\n" \ " (using '-d 0' is the same as not using '-d' at all. which is the default).\n" \ " [-c] = Discard non-clipped sequences (i.e. - keep only sequences which contained the adapter).\n" \ " [-C] = Discard clipped sequences (i.e. - keep only sequences which did not contained the adapter).\n" \ " [-k] = Report Adapter-Only sequences.\n" \ " [-n] = keep sequences with unknown (N) nucleotides. default is to discard such sequences.\n" \ " [-v] = Verbose - report number of sequences.\n" \ " If [-o] is specified, report will be printed to STDOUT.\n" \ " If [-o] is not specified (and output goes to STDOUT),\n" \ " report will be printed to STDERR.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-D] = DEBUG output.\n" \ " [-M N] = require minimum adapter alignment length of N.\n" \ " If less than N nucleotides aligned with the adapter - don't clip it." \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ "\n"; //Default adapter - Dummy sequence char adapter[MAX_ADAPTER_LEN]="CCTTAAGG"; unsigned int min_length=5; int discard_unknown_bases=1; int keep_delta=0; int discard_non_clipped=0; int discard_clipped=0; int show_adapter_only=0; int debug = 0 ; int minimum_adapter_length = 0; //Statistics for verbose report unsigned int count_input=0 ; unsigned int count_discarded_too_short=0; // see [-l N] option unsigned int count_discarded_adapter_at_index_zero=0; //empty sequences (after clipping) unsigned int count_discarded_no_adapter_found=0; // see [-c] option unsigned int count_discarded_adapter_found=0; // see [-C] option unsigned int count_discarded_N=0; // see [-n] FASTX fastx; HalfLocalSequenceAlignment align; int parse_program_args(int __attribute__((unused)) optind, int optc, char* optarg) { switch(optc) { case 'M': if (optarg==NULL) errx(1, "[-M] parameter requires an argument value"); minimum_adapter_length = atoi(optarg); if (minimum_adapter_length<=0) errx(1,"Invalid minimum adapter length (-M %s)", optarg); break; case 'k': show_adapter_only=1; break; case 'D': debug++; break ; case 'c': discard_non_clipped = 1; break; case 'C': discard_clipped = 1 ; break ; case 'd': if (optarg==NULL) errx(1, "[-d] parameter requires an argument value"); keep_delta = strtoul(optarg,NULL,10); if (keep_delta<0) errx(1,"Invalid number bases to keep (-d %s)", optarg); break; case 'a': strncpy(adapter,optarg,sizeof(adapter)-1); //TODO: //if (!valid_sequence_string(adapter)) // errx(1,"Invalid adapter string (-a %s)", adapter); break ; case 'l': if (optarg==NULL) errx(1,"[-l] parameter requires an argument value"); min_length = strtoul(optarg, NULL, 10); break; case 'n': discard_unknown_bases = 0 ; break; default: errx(1,"Unknown argument (%c)", optc ) ; } return 1; } int parse_commandline(int argc, char* argv[]) { fastx_parse_cmdline(argc, argv, "M:kDCcd:a:s:l:n", parse_program_args); if (keep_delta>0) keep_delta += strlen(adapter); return 1; } int adapter_cutoff_index ( const SequenceAlignmentResults& alignment_results ) __attribute__ ((const)); int adapter_cutoff_index ( const SequenceAlignmentResults& alignment_results ) { #if 0 int mismatches = alignment_results.mismatches ; //The adapter(=target) is expected to align from the first base. //If the start is not zero (=not aligned from first base), //count each skipped base as a mismatch mismatches += alignment_results.target_start ; //The adapter is expected to align up to the end //of the adapter(=target), or the end of the query. //If it doesn't, count the un-aligned bases as mismatches int missing_from_query_end = (alignment_results.query_size - alignment_results.query_end-1); int missing_from_target_end = (alignment_results.target_size - alignment_results.target_end-1); int missing_from_end = std::min(missing_from_query_end, missing_from_target_end); mismatches += missing_from_end ; std::cout << "Missing from start = " << alignment_results.target_start << " Missing from end = " << missing_from_end << " mismatches = " << mismatches << std::endl; if (mismatches > max_mismatches) return -1; return alignment_results.query_start; #endif int alignment_size = alignment_results.neutral_matches + alignment_results.matches + alignment_results.mismatches + alignment_results.gaps ; //No alignment at all? if (alignment_size==0) return -1; if (minimum_adapter_length>0 && alignment_size 5 && alignment_results.target_start == 0 && (alignment_results.matches * 100 / alignment_size ) >= 75 ) { //printf("--2\n"); return alignment_results.query_start ; } if ( alignment_size > 11 && (alignment_results.matches * 100 / alignment_size ) >= 80 ) { //printf("--2\n"); return alignment_results.query_start ; } // //Be very lenient regarding alignments at the end of the query sequence if ( alignment_results.query_end >= alignment_results.query_size-2 && alignment_size <= 5 && alignment_results.matches >= 3) { //printf("--3\n"); return alignment_results.query_start ; } return -1; } int main(int argc, char* argv[]) { int i; int reads_count; parse_commandline(argc, argv); fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { reads_count = get_reads_count(&fastx); #if 0 std::string query = std::string(fastx.nucleotides) + std::string( strlen(adapter), 'N' ); std::string target= std::string( strlen(fastx.nucleotides), 'N' ) + std::string(adapter); #else std::string query = std::string(fastx.nucleotides) ; std::string target= std::string(adapter); #endif align.align( query, target ) ; if (debug>1) align.print_matrix(); if (debug>0) align.results().print(); count_input+= reads_count; //Find the best match with the adapter i = adapter_cutoff_index ( align.results() ) ; if (i!=-1 && i>0) { i += keep_delta; //Just trim the string after this position fastx.nucleotides[i] = 0 ; } if (i==0) { // empty sequence ? (in which the adapter was found at index 0) count_discarded_adapter_at_index_zero += reads_count; if (show_adapter_only) fastx_write_record(&fastx); continue; } if (strlen(fastx.nucleotides) < min_length) { // too-short sequence ? count_discarded_too_short += reads_count; continue; } if ( (i==-1) && discard_non_clipped ) { // adapter not found (i.e. sequence was not clipped) ? count_discarded_no_adapter_found += reads_count; continue ; } if ( (i>0) && discard_clipped ) { // adapter found, and user requested to keep only non-clipped sequences count_discarded_adapter_found += reads_count; continue; } if ( (discard_unknown_bases && strchr(fastx.nucleotides,'N')!=NULL ) ) { // contains unknown bases (after clipping) ? count_discarded_N += reads_count; continue; } if (!show_adapter_only) { //none of the above condition matched, so print this sequence. fastx_write_record(&fastx); } } // //Print verbose report if ( verbose_flag() ) { fprintf(get_report_file(), "Clipping Adapter: %s\n", adapter ); fprintf(get_report_file(), "Min. Length: %d\n", min_length) ; if (discard_clipped) fprintf(get_report_file(), "Clipped reads - discarded.\n" ) ; if (discard_non_clipped) fprintf(get_report_file(), "Non-Clipped reads - discarded.\n" ) ; fprintf(get_report_file(), "Input: %u reads.\n", count_input ) ; fprintf(get_report_file(), "Output: %u reads.\n", count_input - count_discarded_too_short - count_discarded_no_adapter_found - count_discarded_adapter_found - count_discarded_N - count_discarded_adapter_at_index_zero ) ; fprintf(get_report_file(), "discarded %u too-short reads.\n", count_discarded_too_short ) ; fprintf(get_report_file(), "discarded %u adapter-only reads.\n", count_discarded_adapter_at_index_zero ); if (discard_non_clipped) fprintf(get_report_file(), "discarded %u non-clipped reads.\n", count_discarded_no_adapter_found ); if (discard_clipped) fprintf(get_report_file(), "discarded %u clipped reads.\n", count_discarded_adapter_found ); if (discard_unknown_bases) fprintf(get_report_file(), "discarded %u N reads.\n", count_discarded_N ); } return 0; } fastx_toolkit-0.0.14/src/fastx_collapser/000077500000000000000000000000001226234573700204615ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_collapser/Makefile.am000066400000000000000000000013041226234573700225130ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_collapser AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastx_collapser_SOURCES = fastx_collapser.cpp \ std_hash.h fastx_collapser_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastx_collapser/fastx_collapser.cpp000066400000000000000000000102371226234573700243610ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "fastx.h" #include "fastx_args.h" using namespace std; const char* usage= "usage: fastx_collapser [-h] [-v] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-v] = verbose: print short summary of input/output counts\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ "\n"; FASTX fastx; #if HAVE_CXX11 == 1 /* compiler supports -std=cxx11 - use */ #include std::unordered_map collapsed_sequences; #else #ifdef STDCXX_TR1_HEADERS /* fallback - compiler suppots 'tr1' headers - use them */ #include std::tr1::unordered_map collapsed_sequences; #else /* Worse fallback - use map instead of unordered_map */ #include std::map collapsed_sequences; #endif #endif std::list< pair > sorted_collapsed_sequences ; struct PrintCollapsedSequence { size_t counter; size_t total_reads ; ostream &output ; PrintCollapsedSequence( ostream& _output ) : counter(0), total_reads(0), output(_output) {} void operator() ( const std::pair & sequence ) { counter++; total_reads += sequence.second ; output << ">" << counter << "-" << sequence.second << endl << sequence.first << endl ; } }; bool sort_by_abundance_count ( const pair & sequence1, const pair& sequence2 ) { return sequence1.second < sequence2.second ; } int main(int argc, char* argv[]) { ofstream output_file ; fastx_parse_cmdline(argc, argv, "", NULL ); fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); bool use_stdout = true; if ( strcmp(get_output_filename(), "-")!=0 ) { use_stdout = false; output_file.open(get_output_filename()); if (!output_file) errx(1,"Failed to create output file (%s)", get_output_filename() ); } ostream& real_output = (use_stdout) ? cout : output_file ; while ( fastx_read_next_record(&fastx) ) { collapsed_sequences[string(fastx.nucleotides)]+= get_reads_count(&fastx); } copy ( collapsed_sequences.begin(), collapsed_sequences.end(), back_inserter(sorted_collapsed_sequences) ) ; sorted_collapsed_sequences.sort ( sort_by_abundance_count ) ; PrintCollapsedSequence stats = for_each ( sorted_collapsed_sequences.rbegin(), sorted_collapsed_sequences.rend(), PrintCollapsedSequence(real_output) ) ; /* This (in)sanity check prevents collapsing an already-collapsed FASTA file, so skip it for now */ /* if (stats.total_reads != num_input_reads(&fastx)) errx(1,"Internal error: stats.total_reads (%zu) != num_input_reads(&fastx) (%zu).\n", stats.total_reads, num_input_reads(&fastx) ); */ if ( verbose_flag() ) { fprintf(get_report_file(), "Input: %zu sequences (representing %zu reads)\n", num_input_sequences(&fastx), num_input_reads(&fastx)); fprintf(get_report_file(), "Output: %zu sequences (representing %zu reads)\n", stats.counter, stats.total_reads); } return 0; } fastx_toolkit-0.0.14/src/fastx_collapser/std_hash.h000066400000000000000000000040521226234573700224300ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef __STD_HASH__ #define __STD_HASH__ /* * Centralized place to load std::hash_map * * GCC needs the following hacks... * Other compilers/systems might require different hacks */ #include #include namespace std { using namespace __gnu_cxx; struct std_string_hash { size_t operator()( const std::string& x ) const { //printf("std_string_hash: hashing '%s'\n", x.c_str()); return hash< const char* >()( x.c_str() ); } }; /* * 'eqstr' and 'hash_map' usage is based on http://www.sgi.com/tech/stl/hash_map.html */ struct eqstr { bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) == 0; } }; typedef hash_map< const char*, int, hash< const char* >, eqstr > hash_map_charptr_to_int; typedef hash_map< string, int, std_string_hash > hash_map_string_to_int; typedef hash_set < string, std_string_hash > hash_set_string ; } #endif fastx_toolkit-0.0.14/src/fastx_quality_stats/000077500000000000000000000000001226234573700214035ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_quality_stats/Makefile.am000066400000000000000000000013001226234573700234310ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_quality_stats AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastx_quality_stats_SOURCES = fastx_quality_stats.c fastx_quality_stats_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastx_quality_stats/fastx_quality_stats.c000066400000000000000000000326421226234573700256710ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "chomp.h" #include "fastx.h" #include "fastx_args.h" #ifndef MAX #define MAX(a,b) (((a) > (b)) ? (a) : (b)) #endif #ifndef MIN #define MIN(a,b) (((a) < (b)) ? (a) : (b)) #endif #define MAX_SEQUENCE_LENGTH (2000) //that's pretty arbitrary... should be enough for now const char* usage= "usage: fastx_quality_stats [-h] [-N] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-i INFILE] = FASTQ input file. default is STDIN.\n" \ " [-o OUTFILE] = TEXT output file. default is STDOUT.\n" \ " [-N] = New output format (with more information per nucleotide/cycle).\n" \ "\n"\ "The *OLD* output TEXT file will have the following fields (one row per column):\n" \ " column = column number (1 to 36 for a 36-cycles read solexa file)\n" \ " count = number of bases found in this column.\n" \ " min = Lowest quality score value found in this column.\n" \ " max = Highest quality score value found in this column.\n" \ " sum = Sum of quality score values for this column.\n" \ " mean = Mean quality score value for this column.\n" \ " Q1 = 1st quartile quality score.\n" \ " med = Median quality score.\n" \ " Q3 = 3rd quartile quality score.\n" \ " IQR = Inter-Quartile range (Q3-Q1).\n" \ " lW = 'Left-Whisker' value (for boxplotting).\n" \ " rW = 'Right-Whisker' value (for boxplotting).\n" \ " A_Count = Count of 'A' nucleotides found in this column.\n" \ " C_Count = Count of 'C' nucleotides found in this column.\n" \ " G_Count = Count of 'G' nucleotides found in this column.\n" \ " T_Count = Count of 'T' nucleotides found in this column.\n" \ " N_Count = Count of 'N' nucleotides found in this column.\n" \ " max-count = max. number of bases (in all cycles)\n" \ "\n" \ "\n" \ "The *NEW* output format:\n" \ " cycle (previously called 'column') = cycle number\n" \ " max-count\n" \ " For each nucleotide in the cycle (ALL/A/C/G/T/N):\n" " count = number of bases found in this column.\n" \ " min = Lowest quality score value found in this column.\n" \ " max = Highest quality score value found in this column.\n" \ " sum = Sum of quality score values for this column.\n" \ " mean = Mean quality score value for this column.\n" \ " Q1 = 1st quartile quality score.\n" \ " med = Median quality score.\n" \ " Q3 = 3rd quartile quality score.\n" \ " IQR = Inter-Quartile range (Q3-Q1).\n" \ " lW = 'Left-Whisker' value (for boxplotting).\n" \ " rW = 'Right-Whisker' value (for boxplotting).\n" \ "\n"\ "\n"; ; FILE* outfile; int new_output_format = 0 ; /* Information for each column in the solexa file. ("Column" here refers to the number of reads in the file, usually 36) */ typedef enum { ALL = 0, A = 1, C = 2, G = 3, T = 4, N = 5, NUC_INDEX_SIZE=6 } NUCLEOTIDE_INDEX ; char* nucleotide_index_name[NUC_INDEX_SIZE] = { "ALL","A","C","G","T","N" } ; //Lookup table to convert from ASCII character A/C/G/T to NUCLEOTIDE_INDEX. //Initialized in init_values(). int nuc_to_index[256]; //Information for each nucleotide of each cycle struct nucleotide_data { int min; int max; int count; unsigned long long sum; //Instead of keeping a sorted array of all the quality values (which is needed to find the median value), //We keep the values in this array. similar to "Couting Sort" array in "Introduction to Algorithms", page 169. //Each time we encounter a quality value number (in the range of MIN_QUALITY_VALUE to MAX_QUALITY_VALUE), //we increment the count in the corresponding index of this array. int bases_values_count[QUALITY_VALUES_RANGE]; }; //Information for each cycle struct cycle_data { struct nucleotide_data nucleotide[NUC_INDEX_SIZE]; }; int sequences_count; struct cycle_data cycles[MAX_SEQUENCE_LENGTH]; FASTX fastx; void init_values() { int i,j; bzero ( nuc_to_index, sizeof(nuc_to_index) ) ; nuc_to_index['A'] = A ; nuc_to_index['a'] = A ; nuc_to_index['C'] = C ; nuc_to_index['c'] = C ; nuc_to_index['G'] = G ; nuc_to_index['g'] = G ; nuc_to_index['T'] = T ; nuc_to_index['t'] = T ; nuc_to_index['N'] = N ; nuc_to_index['n'] = N ; sequences_count=0; bzero ( &cycles, sizeof(cycles) ); for (i=0;i= MAX_SEQ_LINE_LENGTH) errx(1, "Internal error: sequence too long (on line %llu). Hard-coded max. length is %d", fastx.input_line_number, MAX_SEQ_LINE_LENGTH ) ; //for each base in the sequence... for (index=0; indexMAX_SEQUENCE_LENGTH) { fprintf(stderr,"Internal error at get_nth_value, cycle=%d, nucleotide=%d\n", cycle, nucleotide); exit(1); } if (n==0) return cycles[cycle].nucleotide[nucleotide].min; if (n<0 || n>=cycles[cycle].nucleotide[nucleotide].count) { fprintf(stderr,"Internal error at get_nth_value (cycle=%d, nucleotide=%d, n=%d), count_values[%d]=%d\n", cycle, nucleotide, n, cycle, cycles[cycle].nucleotide[nucleotide].count ) ; exit(1); } pos = 0 ; while (n > 0) { if (cycles[cycle].nucleotide[nucleotide].bases_values_count[pos] > n) break; n -= cycles[cycle].nucleotide[nucleotide].bases_values_count[pos]; pos++; while (cycles[cycle].nucleotide[nucleotide].bases_values_count[pos]==0) pos++; } return pos + MIN_QUALITY_VALUE ; } void print_nucleotide_statistics_header(const char *nuc_name) { const char* headers[] = { "count", "min", "max", "sum", "mean", "Q1", "med", "Q3", "IQR", "lW", "rW", NULL }; const char** header = headers; while ( *header != NULL ) { fprintf(outfile,"\t%s_%s", nuc_name, *header); header++; } } /* print quality statistics (for one nucleotide) in new format */ void print_nucleotide_statistics(int cycle, int nuc_index) { int Q1,Q3,IQR; int LeftWisker, RightWisker; Q1 = get_nth_value ( cycle, nuc_index, cycles[cycle].nucleotide[nuc_index].count / 4 ); Q3 = get_nth_value ( cycle, nuc_index, cycles[cycle].nucleotide[nuc_index].count * 3 / 4 ); IQR = Q3 - Q1 ; if ( (Q1 - IQR*3/2) < cycles[cycle].nucleotide[nuc_index].min ) LeftWisker = cycles[cycle].nucleotide[nuc_index].min; else LeftWisker = (Q1 - IQR*3/2); //TODO - make sure there's an observed value at this point if ( (Q3 + IQR*3/2) > cycles[cycle].nucleotide[nuc_index].max ) RightWisker = cycles[cycle].nucleotide[nuc_index].max; else RightWisker = (Q3 + IQR*3/2); //TODO - make sure there's an observed value at this point fprintf(outfile,"\t%d\t%d\t%d\t%lld\t", cycles[cycle].nucleotide[nuc_index].count, cycles[cycle].nucleotide[nuc_index].min, cycles[cycle].nucleotide[nuc_index].max, cycles[cycle].nucleotide[nuc_index].sum); fprintf(outfile,"%3.2f\t%d\t%d\t%d\t", ((double)cycles[cycle].nucleotide[nuc_index].sum)/((double)cycles[cycle].nucleotide[nuc_index].count), Q1, get_nth_value ( cycle, nuc_index, cycles[cycle].nucleotide[nuc_index].count / 2 ), Q3); fprintf(outfile,"%d\t%d\t%d", IQR, LeftWisker, RightWisker ); } void print_statistics() { int nuc ; int cycle ; int max_count ; fprintf(outfile,"cycle\tmax_count"); for ( nuc = 0 ;nuc < NUC_INDEX_SIZE ; ++nuc ) print_nucleotide_statistics_header( nucleotide_index_name[nuc] ) ; fprintf(outfile,"\n"); //Maximum number of bases (out of all cycles/columns). //it is always equal to the count of the first column //(since all reads have a base at the first column, // but some might not have base at later columns (if they were clipped) ) max_count = cycles[0].nucleotide[ALL].count ; for (cycle=0;cycle cycles[i].nucleotide[ALL].max ) RightWisker = cycles[i].nucleotide[ALL].max; else RightWisker = (Q3 + IQR*3/2); //TODO - make sure there's an observed value at this point //Column number fprintf(outfile,"%d\t", i+1); fprintf(outfile,"%d\t%d\t%d\t%lld\t", cycles[i].nucleotide[ALL].count, cycles[i].nucleotide[ALL].min, cycles[i].nucleotide[ALL].max, cycles[i].nucleotide[ALL].sum); fprintf(outfile,"%3.2f\t%d\t%d\t%d\t", ((double)cycles[i].nucleotide[ALL].sum)/((double)cycles[i].nucleotide[ALL].count), Q1, get_nth_value ( i, ALL, cycles[i].nucleotide[ALL].count / 2 ), Q3); fprintf(outfile,"%d\t%d\t%d\t", IQR, LeftWisker, RightWisker ); fprintf(outfile,"%d\t%d\t%d\t%d\t%d\t", cycles[i].nucleotide[A].count, cycles[i].nucleotide[C].count, cycles[i].nucleotide[G].count, cycles[i].nucleotide[T].count, cycles[i].nucleotide[N].count); //Maximum number of bases (out of all cycles/columns). //it is always equal to the count of the first column //(since all reads have a base at the first column, // but some might not have base at later columns (if they were clipped) ) fprintf(outfile,"%d\n", cycles[0].nucleotide[ALL].count ) ; } } int parse_program_args(int __attribute__((unused)) optind, int optc, char __attribute__((unused))* optarg) { switch(optc) { case 'N': new_output_format = 1 ; break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } void parse_commandline(int argc, char* argv[]) { fastx_parse_cmdline(argc, argv, "N", parse_program_args); fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); if (strcmp( get_output_filename(), "-" ) == 0 ) { outfile = stdout; } else { outfile = fopen(get_output_filename(), "w+"); if (outfile==NULL) err(1,"Failed to create output file (%s)", get_output_filename()); } } int main(int argc, char* argv[]) { parse_commandline(argc,argv); init_values(); read_file(); if ( new_output_format ) print_statistics(); else print_old_statistics(); return 0; } fastx_toolkit-0.0.14/src/fastx_renamer/000077500000000000000000000000001226234573700201265ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_renamer/Makefile.am000066400000000000000000000012501226234573700221600ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_renamer AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastx_renamer_SOURCES = fastx_renamer.c fastx_renamer_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastx_renamer/fastx_renamer.c000066400000000000000000000060771226234573700231420ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" const char* usage= "usage: fastx_renamer [-n TYPE] [-h] [-z] [-v] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-n TYPE] = rename type:\n" \ " SEQ - use the nucleotides sequence as the name.\n" \ " COUNT - use simply counter as the name.\n" \ " [-h] = This helpful help screen.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ "\n"; enum RENAME_TYPE { SEQ, COUNT }; enum RENAME_TYPE rename_type; unsigned int counter = 1 ; FASTX fastx; int parse_program_args(int __attribute__((unused)) optind, int optc, char* optarg) { switch(optc) { case 'n': if (optarg==NULL) errx(1, "[-n] parameter requires an argument value"); if (strncmp(optarg,"SEQ",3)==0) { rename_type = SEQ ; } else if (strncmp(optarg,"COUNT",5)==0) { rename_type = COUNT ; counter = 1 ; } else errx(1,"Uknown rename type [-n]: '%s'", optarg); break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int main(int argc, char* argv[]) { fastx_parse_cmdline(argc, argv, "n:", parse_program_args); fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { switch(rename_type) { case SEQ: strncpy(fastx.name, fastx.nucleotides, sizeof(fastx.name)); strncpy(fastx.name2, fastx.nucleotides, sizeof(fastx.name2)); break; case COUNT: snprintf(fastx.name, sizeof(fastx.name),"%u",counter); strncpy(fastx.name2, fastx.name, sizeof(fastx.name2)); counter++; break; default: errx(1,"Internal error: rename_type = %d", (int)rename_type); } fastx_write_record(&fastx); } if ( verbose_flag() ) { fprintf(get_report_file(), "Renamed: %zu reads.\n", num_input_reads(&fastx) ) ; } return 0; } fastx_toolkit-0.0.14/src/fastx_reverse_complement/000077500000000000000000000000001226234573700223735ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_reverse_complement/Makefile.am000066400000000000000000000013241226234573700244270ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_reverse_complement AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastx_reverse_complement_SOURCES = fastx_reverse_complement.c fastx_reverse_complement_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastx_reverse_complement/fastx_reverse_complement.c000066400000000000000000000063211226234573700276440ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" const char* usage= "usage: fastx_reverse_complement [-h] [-r] [-z] [-v] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ "\n"; FASTX fastx; char reverse_complement_base ( const char input ) { switch(input) { case 'N': return 'N'; case 'n': return 'n'; case 'A': return 'T'; case 'T': return 'A'; case 'G': return 'C'; case 'C': return 'G'; case 'a': return 't'; case 't': return 'a'; case 'g': return 'c'; case 'c': return 'g'; default: errx(1,"Invalid nucleotide value (%c) in reverse_complement_base()", input ); } return '0'; //should not get here - just to please the compiler } void reverse_complement_fastx(FASTX* pFASTX) { int i,j ; int length = strlen(pFASTX->nucleotides); char temp_nuc; int temp_qual; for (i=0;inucleotides[i] = reverse_complement_base ( pFASTX->nucleotides[i] ) ; i = 0 ; j = length - 1 ; while ( i < j ) { //Swap the nucleotides temp_nuc = pFASTX->nucleotides[i] ; pFASTX->nucleotides[i] = pFASTX->nucleotides[j] ; pFASTX->nucleotides[j] = temp_nuc; //Swap the quality scores if (pFASTX->read_fastq) { temp_qual = pFASTX->quality[i]; pFASTX->quality[i] = pFASTX->quality[j]; pFASTX->quality[j] = temp_qual ; } //Advance to next position i++; j--; } } int main(int argc, char* argv[]) { fastx_parse_cmdline(argc, argv, "", NULL); fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { reverse_complement_fastx(&fastx); fastx_write_record(&fastx); } if ( verbose_flag() ) { fprintf(get_report_file(), "Printing Reverse-Complement Sequences.\n" ); fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; } return 0; } fastx_toolkit-0.0.14/src/fastx_trimmer/000077500000000000000000000000001226234573700201545ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_trimmer/Makefile.am000066400000000000000000000012501226234573700222060ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_trimmer AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx fastx_trimmer_SOURCES = fastx_trimmer.c fastx_trimmer_LDADD = ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_toolkit-0.0.14/src/fastx_trimmer/fastx_trimmer.c000066400000000000000000000123271226234573700232110ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "fastx.h" #include "fastx_args.h" #define MAX_ADAPTER_LEN 100 const char* usage= "usage: fastx_trimmer [-h] [-f N] [-l N] [-t N] [-m MINLEN] [-z] [-v] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-f N] = First base to keep. Default is 1 (=first base).\n" \ " [-l N] = Last base to keep. Default is entire read.\n" \ " [-t N] = Trim N nucleotides from the end of the read.\n" \ " '-t' can not be used with '-l' and '-f'.\n" \ " [-m MINLEN] = With [-t], discard reads shorter than MINLEN.\n" " [-z] = Compress output with GZIP.\n" \ " [-i INFILE] = FASTA/Q input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Q output file. default is STDOUT.\n" \ "\n"; #define DO_NOT_TRIM_LAST_BASE (0) int keep_first_base=1; int keep_last_base=DO_NOT_TRIM_LAST_BASE; unsigned int trim_last_bases=0; unsigned int minimum_length=0; int trim_by_position=0; int trim_from_end=0; FASTX fastx; int parse_program_args(int __attribute__((unused)) optind, int optc, char* optarg) { switch(optc) { case 'f': if (optarg==NULL) errx(1, "[-f] parameter requires an argument value"); keep_first_base = strtoul(optarg,NULL,10); if (keep_first_base<=0 || keep_first_base>=MAX_SEQ_LINE_LENGTH) errx(1,"Invalid number bases to keep (-f %s)", optarg); trim_by_position=1; break; case 'l': if (optarg==NULL) errx(1, "[-l] parameter requires an argument value"); keep_last_base = strtoul(optarg,NULL,10); if (keep_last_base<=0 || keep_last_base>=MAX_SEQ_LINE_LENGTH) errx(1,"Invalid number bases to keep (-l %s)", optarg); trim_by_position=1; break; case 't': if (optarg==NULL) errx(1, "[-t] parameter requires an argument value"); trim_last_bases = strtoul(optarg,NULL,10); if (trim_last_bases<=0 || trim_last_bases>=MAX_SEQ_LINE_LENGTH) errx(1,"Invalid number bases to trim (-t %s)", optarg); trim_from_end=1; break; case 'm': if (optarg==NULL) errx(1, "[-t] parameter requires an argument value"); minimum_length = strtoul(optarg,NULL,10); if (minimum_length<=0 || minimum_length>=MAX_SEQ_LINE_LENGTH) errx(1,"Invalid minimum length value (-m %s)", optarg); break; default: errx(1, __FILE__ ":%d: Unknown argument (%c)", __LINE__, optc ) ; } return 1; } int main(int argc, char* argv[]) { size_t i; fastx_parse_cmdline(argc, argv, "l:f:t:m:", parse_program_args); //validate command line arguments if (trim_by_position && trim_from_end) errx(1,"[-t], [-f] and [-l] options can not be used together. Use [-t] or [-l,-f]"); fastx_init_reader(&fastx, get_input_filename(), FASTA_OR_FASTQ, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); while ( fastx_read_next_record(&fastx) ) { if (keep_last_base != DO_NOT_TRIM_LAST_BASE) { fastx.nucleotides[keep_last_base] = 0 ; } if (keep_first_base != 1) { if ( strlen(fastx.nucleotides) < (size_t)keep_first_base ) //sequence too short - remove it continue ; for (i=0; i < strlen(fastx.nucleotides)-keep_first_base+1 ; i++) { fastx.nucleotides[i] = fastx.nucleotides[i+keep_first_base-1]; fastx.quality[i] = fastx.quality[i+keep_first_base-1]; } fastx.nucleotides[i] = 0 ; } if (trim_last_bases>0) { if (strlen(fastx.nucleotides) <= trim_last_bases) continue; i = strlen(fastx.nucleotides) - trim_last_bases; if (i < minimum_length) continue; fastx.nucleotides[i] = 0; fastx.quality[i] = 0 ; } //none of the above condition matched, so print this sequence. fastx_write_record(&fastx); } if ( verbose_flag() ) { if (keep_first_base!=1 || keep_last_base!=DO_NOT_TRIM_LAST_BASE) fprintf(get_report_file(), "Trimming: base %d to %d\n", keep_first_base, keep_last_base ) ; if (trim_last_bases) { fprintf(get_report_file(), "Trimming %d bases from the end of the reads\n", trim_last_bases); if ( minimum_length ) fprintf(get_report_file(), "Discarding reads shorter than %d bases\n", minimum_length); } fprintf(get_report_file(), "Input: %zu reads.\n", num_input_reads(&fastx) ) ; fprintf(get_report_file(), "Output: %zu reads.\n", num_output_reads(&fastx) ) ; } return 0; } fastx_toolkit-0.0.14/src/fastx_uncollapser/000077500000000000000000000000001226234573700210245ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/fastx_uncollapser/Makefile.am000066400000000000000000000013171226234573700230620ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. bin_PROGRAMS = fastx_uncollapser AM_CPPFLAGS = \ $(CC_WARNINGS) \ $(GTEXTUTILS_CFLAGS) \ -I$(top_srcdir)/src/libfastx LDADD = $(GTEXTUTILS_LIBS) ../libfastx/libfastx.a $(LT_LDFLAGS) fastx_uncollapser_SOURCES = fastx_uncollapser.cpp fastx_toolkit-0.0.14/src/fastx_uncollapser/fastx_uncollapser.cpp000066400000000000000000000135551226234573700252750ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #include "fastx.h" #include "fastx_args.h" using namespace std; const char* usage= "usage: fasta_uncollapser [-c N] [-h] [-v] [-i INFILE] [-o OUTFILE]\n" \ "Part of " PACKAGE_STRING " by A. Gordon (assafgordon@gmail.com)\n" \ "\n" \ " [-h] = This helpful help screen.\n" \ " [-v] = verbose: print short summary of input/output counts\n" \ " [-c N] = Assume input is a tabular file (not FASTA file),\n" \ " And the collapsed identifier (e.g. '1-1000') is on column N.\n" \ " [-i INFILE] = FASTA/Tabular input file. default is STDIN.\n" \ " [-o OUTFILE] = FASTA/Tabular output file. default is STDOUT.\n" \ "\n"; size_t collapsed_identifier_column = 0; int parse_program_args(int __attribute__((unused)) optind, int optc, char* optarg) { switch(optc) { case 'c': if (optarg==NULL) errx(1, "[-c] parameter requires an argument value"); collapsed_identifier_column = strtoul(optarg,NULL,10); if (collapsed_identifier_column<=0) errx(1,"Invalid column number (-c %s)", optarg); break; default: errx(1,"Internal error: unknown option '%c'",optc); } return 1; } void uncollapse_fasta_file() { FASTX fastx; fastx_init_reader(&fastx, get_input_filename(), FASTA_ONLY, ALLOW_N, REQUIRE_UPPERCASE, get_fastq_ascii_quality_offset() ); fastx_init_writer(&fastx, get_output_filename(), OUTPUT_SAME_AS_INPUT, compress_output_flag()); size_t seqid=1; while ( fastx_read_next_record(&fastx) ) { int count = get_reads_count(&fastx); for (int i=0;i0 && *endptr==0 ) //value converted successfuly, without surplus character? return count; return 1; } void uncollapse_tabular_file() { ios::sync_with_stdio(false); size_t input_count=0; size_t output_count=0; string input_file(get_input_filename()); if (input_file=="-") input_file=""; string output_file(get_output_filename()); if (output_file=="-") output_file=""; InputStreamWrapper input(input_file); OutputStreamWrapper output(output_file); TextLineReader reader(input.stream()); ostream &os = output.stream(); // size_t seqid=1; while (reader.next_line()) { ++input_count; vector tokens; //Split input line into fields String_Tokenize(reader.line_string(), back_inserter(tokens), "\t"); if (tokens.size()1) { prefix_fields = join(tokens.begin(),tokens.begin()+(collapsed_identifier_column-1),"\t"); prefix_fields += "\t"; } std::string suffix_fields; if (collapsed_identifier_column. */ #include "chomp.h" /* Chomp - Removes CR/LF from given string. Input - string - NULL terminated string. WILL BE MODIFIED! Output - None Remarks - The first CR (ASCII 13) or LF (ASCII 10) found in the string will be replaced with a NULL - Effectively chomping the string. */ void chomp(char *string) { while (*string != 0) { if (*string==13 || *string==10) { *string = 0 ; return; } string++; } return ; } fastx_toolkit-0.0.14/src/libfastx/chomp.h000066400000000000000000000015501226234573700203640ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef __CHOMP_H__ #define __CHOMP_H__ void chomp(char *string); #endif fastx_toolkit-0.0.14/src/libfastx/fastx.c000066400000000000000000000344261226234573700204060ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include #include "chomp.h" #include "fastx.h" /* valid_sequence_string - check validity of a given sequence string. input - sequence - NULL terminated string to be validated. Output - 1 (true) - The given sequence is valid - contained only A/C/G/N/T characters. 0 (false) - The given string contained invalid characeters. Remark - sequences with unknown (N) bases are considered VALID. */ static int validate_nucleotides_string(int allowed_nucleotides[256], const char* seq) { int match = 1 ; while (*seq != '\0' && match) { unsigned char c = *seq; match &= allowed_nucleotides[ c ]; seq++; } return match; } static void create_lookup_table(FASTX *pFASTX) { int i; for (i=0; i<256; i++) pFASTX->allowed_nucleotides[i] = 0 ; pFASTX->allowed_nucleotides['A'] = 1; pFASTX->allowed_nucleotides['C'] = 1; pFASTX->allowed_nucleotides['G'] = 1; pFASTX->allowed_nucleotides['T'] = 1; if (pFASTX->allow_N) pFASTX->allowed_nucleotides['N'] = 1; if (pFASTX->allow_U) pFASTX->allowed_nucleotides['U'] = 1; if (pFASTX->allow_lowercase) { pFASTX->allowed_nucleotides['a'] = 1; pFASTX->allowed_nucleotides['c'] = 1; pFASTX->allowed_nucleotides['g'] = 1; pFASTX->allowed_nucleotides['t'] = 1; if (pFASTX->allow_N) pFASTX->allowed_nucleotides['n'] = 1; if (pFASTX->allow_U) pFASTX->allowed_nucleotides['u'] = 1; } } static void detect_input_format(FASTX *pFASTX) { //Get the first character in the file, //and put it right back int c = fgetc(pFASTX->input); ungetc(c, pFASTX->input); switch(c) { case '>': /* FASTA file */ if ( pFASTX->allow_input_filetype==FASTQ_ONLY ) errx(1,"input file (%s) is FASTA, but only FASTQ input is allowed.", pFASTX->input_file_name); pFASTX->read_fastq = 0 ; break; case '@': /* FASTQ file */ if ( pFASTX->allow_input_filetype==FASTA_ONLY ) errx(1,"input file (%s) is FASTQ, but only FASTA input is allowed.", pFASTX->input_file_name); pFASTX->read_fastq = 1; break; case -1: /* EOF as first character - no input */ errx(1, "Premature End-Of-File (filename ='%s')", pFASTX->input_file_name); break; default: errx(1, "input file (%s) has unknown file format (not FASTA or FASTQ), first character = %c (%d)", pFASTX->input_file_name, c,c); } } static void convert_ascii_quality_score_line(const char* ascii_quality_scores, FASTX *pFASTX) { size_t i; if (strlen(ascii_quality_scores) != strlen(pFASTX->nucleotides)) errx(1,"number of quality values (%zu) doesn't match number of nucleotides (%zu) on line %lld", strlen(ascii_quality_scores), strlen(pFASTX->nucleotides), pFASTX->input_line_number); for (i=0; iquality[i] = (int) (ascii_quality_scores[i] - pFASTX->fastq_ascii_quality_offset ) ; if (pFASTX->quality[i] < -15 || pFASTX->quality[i] > 93) errx(1, "Invalid quality score value (char '%c' ord %d quality value %d) on line %lld", ascii_quality_scores[i], ascii_quality_scores[i], pFASTX->quality[i], pFASTX->input_line_number ); } } static void convert_numeric_quality_score_line ( const char* numeric_quality_line, FASTX *pFASTX ) { size_t index; const char *quality_tok; char *endptr; int quality_value; index=0; quality_tok = numeric_quality_line; do { //read the quality score as an integer value quality_value = strtol(quality_tok, &endptr, 10); if (endptr == quality_tok) errx(1,"Error: invalid quality score data on line %lld (quality_tok = \"%s\"", pFASTX->input_line_number ,quality_tok); if (quality_value > 93 || quality_value < -15) errx(1, "invalid quality score value (%d) in line %lld.", quality_value, pFASTX->input_line_number); //convert it ASCII (as per solexa's encoding) pFASTX->quality[index] = quality_value; index++; quality_tok = endptr; } while (quality_tok != NULL && *quality_tok!='\0') ; if (index != strlen(pFASTX->nucleotides)) { errx(1,"number of quality values (%zu) doesn't match number of nucleotides (%zu) on line %lld", index, strlen(pFASTX->nucleotides), pFASTX->input_line_number ); } } void fastx_init_reader(FASTX *pFASTX, const char* filename, ALLOWED_INPUT_FILE_TYPES allowed_input_filetype, ALLOWED_INPUT_BASES allow_bases, ALLOWED_INPUT_CASE allow_lowercase, int fastq_ascii_quality_offset) { if (pFASTX==NULL) errx(1,"Internal error: pFASTX==NULL (%s:%d)", __FILE__,__LINE__); memset(pFASTX, 0, sizeof(FASTX)); if (strncmp(filename,"-",1)==0) { pFASTX->input = stdin; } else { pFASTX->input = fopen(filename, "r"); if (pFASTX->input==NULL) err(1, "failed to open input file '%s'", filename); } strncpy(pFASTX->input_file_name, filename, sizeof(pFASTX->input_file_name)-1); pFASTX->allow_input_filetype = allowed_input_filetype; pFASTX->allow_lowercase = allow_lowercase; pFASTX->allow_N = ((allow_bases & ALLOW_N)!=0) ; pFASTX->allow_U = ((allow_bases & ALLOW_U)!=0) ; pFASTX->fastq_ascii_quality_offset = fastq_ascii_quality_offset ; create_lookup_table(pFASTX); detect_input_format(pFASTX); } int open_output_file(const char* filename) { int fd ; if (strncmp(filename,"-", 6)==0) { fd = STDOUT_FILENO; } else { fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0666 ); if (fd==-1) err(1, "Failed to create output file (%s)", filename); } return fd; } int open_output_compressor(FASTX __attribute__((unused)) *pFASTX, const char* filename) { int fd; pid_t child_pid; int parent_pipe[2]; if (pipe(parent_pipe)!=0) err(1,"pipe (for gzip) failed"); child_pid = fork(); if (child_pid>0) { /* The parent process */ fd = parent_pipe[1]; close(parent_pipe[0]); return fd; } /* The child process */ //the compressor's STDIN is the pipe from the parent dup2(parent_pipe[0], STDIN_FILENO); close(parent_pipe[1]); //the compressor's STDOUT is the output file //(which can be the parent's STDOUT, too) fd = open_output_file(filename); dup2(fd, STDOUT_FILENO); //Run GZIP execlp("gzip","gzip",(char*)NULL); //Should never get here... err(1,"execlp(gzip) failed"); return 0; //just to please the compiler } void fastx_init_writer(FASTX *pFASTX, const char *filename, OUTPUT_FILE_TYPE output_type, int compress_output) { int fd; if (pFASTX==NULL) errx(1,"Internal error: pFASTX==NULL (%s:%d)", __FILE__,__LINE__); if (pFASTX->input==NULL) errx(1,"Internal error: pFASTX not initialized (%s:%d)", __FILE__, __LINE__); pFASTX->compress_output = compress_output; if (pFASTX->compress_output) fd = open_output_compressor(pFASTX, filename); else fd = open_output_file(filename); pFASTX->output = fdopen(fd,"w"); if (pFASTX->output==NULL) err(1,"fdopen failed"); switch(output_type) { case OUTPUT_FASTA: pFASTX->write_fastq = 0 ; pFASTX->output_sequence_id_prefix = '>'; break ; case OUTPUT_FASTQ_ASCII_QUAL: if (! pFASTX->read_fastq) errx(1,"Can't output FASTQ when input is FASTA."); pFASTX->write_fastq = 1; pFASTX->write_fastq_ascii = 1; pFASTX->output_sequence_id_prefix = '@'; break ; case OUTPUT_FASTQ_NUMERIC_QUAL: if (! pFASTX->read_fastq) errx(1,"Can't output FASTQ when input is FASTA."); pFASTX->write_fastq = 1; pFASTX->write_fastq_ascii = 0; pFASTX->output_sequence_id_prefix = '@'; break ; case OUTPUT_SAME_AS_INPUT: pFASTX->write_fastq = pFASTX->read_fastq; //Assume we're writing ASCII format, pFASTX->write_fastq_ascii = 1 ; //But set this flag and the real format will be determined //when we actually read the FASTQ record pFASTX->copy_input_fastq_format_to_output = 1; pFASTX->output_sequence_id_prefix = (pFASTX->write_fastq) ? '@' : '>'; break; default: errx(1, __FILE__ ":%d: Unknown output_type (%d)", __LINE__, output_type ) ; } } int fastx_read_next_record(FASTX *pFASTX) { char temp_qual[MAX_SEQ_LINE_LENGTH+1]; temp_qual[MAX_SEQ_LINE_LENGTH] = 0; if (pFASTX==NULL) errx(1,"Internal error: pFASTX==NULL (%s:%d)", __FILE__,__LINE__); pFASTX->input_line_number++; if (fgets(pFASTX->dummy_read_id_buffer, MAX_SEQ_LINE_LENGTH, pFASTX->input) == NULL) return 0; //assume end-of-file, if we couldn't read the first line of the foursome chomp(pFASTX->name); // quick sanity check - // FASTQ files should start with '@' in the identifier line // FASTA files should start with '>' in the identifier line if ( pFASTX->read_fastq && (pFASTX->input_sequence_id_prefix[0] != '@' ) ) errx(1,"Invalid input: expecting FASTQ prefix character '@' on line %lld. Is this a valid FASTQ file?\n", pFASTX->input_line_number) ; if ( !pFASTX->read_fastq && (pFASTX->input_sequence_id_prefix[0] != '>') ) { //Extra friendly check, warn users if they fed us a multiline FASTA file if ( validate_nucleotides_string ( pFASTX->allowed_nucleotides, pFASTX->input_sequence_id_prefix ) ) errx(1,"Invalid input: This looks like a multi-line FASTA file.\n" \ "Line %lld contains a nucleotides string instead of a '>' prefix.\n" \ "FASTX-Toolkit can't handle multi-line FASTA files.\n" \ "Please use the FASTA-Formatter tool to convert this file into a single-line FASTA.\n", pFASTX->input_line_number) ; // Otherwise, assume it's just bad input file errx(1,"Invalid input: expecting FASTA prefix character '>' on line %lld. Is this a valid FASTA file?\n", pFASTX->input_line_number) ; } //for the rest of the lines, if they don't appear, it's an error pFASTX->input_line_number++; if (fgets(pFASTX->nucleotides, MAX_SEQ_LINE_LENGTH, pFASTX->input) == NULL) errx(1,"Failed to read complete record, missing 2nd line (nucleotides), on line %lld\n", pFASTX->input_line_number); chomp(pFASTX->nucleotides); /* Disallow empty nucleotide strings */ if (strlen(pFASTX->nucleotides)==0) errx(1,"found empty nucleotide sequence on line %lld\n",pFASTX->input_line_number); if (!validate_nucleotides_string(pFASTX->allowed_nucleotides, pFASTX->nucleotides)) errx(1,"found invalid nucleotide sequence (%s) on line %lld\n", pFASTX->nucleotides,pFASTX->input_line_number); if (pFASTX->read_fastq) { pFASTX->input_line_number++; if (fgets(pFASTX->dummy_read_id2_buffer, MAX_SEQ_LINE_LENGTH, pFASTX->input) == NULL) errx(1,"Failed to read complete record, missing 3rd line (name-2), on line %lld\n", pFASTX->input_line_number); pFASTX->input_line_number++; if (fgets(temp_qual, sizeof(temp_qual), pFASTX->input) == NULL) errx(1,"Failed to read complete record, missing 4th line (quality), on line %lld\n", pFASTX->input_line_number); chomp(pFASTX->name2); chomp(temp_qual); if (strlen(temp_qual) == strlen(pFASTX->nucleotides)) { //Assume this is an ASCII quality score line, convert it to values convert_ascii_quality_score_line ( temp_qual, pFASTX ) ; pFASTX->read_fastq_ascii = 1 ; } else { //Assume this is a numeric quality score line, convert it to values convert_numeric_quality_score_line ( temp_qual, pFASTX ) ; pFASTX->read_fastq_ascii = 0 ; } //Copy the input format to the output format flag if (pFASTX->copy_input_fastq_format_to_output) { pFASTX->write_fastq_ascii = pFASTX->read_fastq_ascii; } } pFASTX->num_input_sequences++; pFASTX->num_input_reads += get_reads_count(pFASTX); return 1; } static void write_ascii_qual_string(FASTX *pFASTX, int length) { int i; int rc; for (i=0; ioutput, "%c", pFASTX->quality[i] + pFASTX->fastq_ascii_quality_offset ) ; if (rc<=0) err(1,"writing quality scores failed"); } rc = fprintf(pFASTX->output, "\n"); if (rc<=0) err(1,"writing quality scores failed"); } static void write_numeric_qual_string(FASTX *pFASTX, int length) { int i; int rc; for (i=0; ioutput, "%d", pFASTX->quality[i] ) ; if (rc<=0) err(1,"writing quality scores failed"); if (ioutput," "); if (rc<=0) err(1,"writing quality scores failed"); } } rc = fprintf(pFASTX->output, "\n"); if (rc<=0) err(1,"writing quality scores failed"); } void fastx_write_record(FASTX *pFASTX) { int len; int rc; if (pFASTX==NULL) errx(1,"Internal error: pFASTX==NULL (%s:%d)", __FILE__,__LINE__); rc = fprintf(pFASTX->output, "%c%s\n", pFASTX->output_sequence_id_prefix, pFASTX->name ) ; if (rc<=0) err(1,"writing sequence identifier failed"); rc = fprintf(pFASTX->output, "%s\n", pFASTX->nucleotides); if (rc<=0) err(1,"writing nucleotides failed"); if (pFASTX->write_fastq) { rc = fprintf(pFASTX->output, "+%s\n", pFASTX->name2 ) ; if (rc<=0) err(1,"writing 2nd sequence identifier failed"); len = strlen(pFASTX->nucleotides); if (pFASTX->write_fastq_ascii) write_ascii_qual_string(pFASTX, len); else write_numeric_qual_string(pFASTX, len); } pFASTX->num_output_sequences++; pFASTX->num_output_reads += get_reads_count(pFASTX); } int get_reads_count(const FASTX *pFASTX) { char *dash = NULL ; //FASTQ files are never collapsed (at least not in Gordon's Galaxy) if (pFASTX->read_fastq) return 1; dash = strchr(pFASTX->name,'-'); // minus character wasn't found- // this sequence is most probably not collapsed if (dash==NULL) return 1; int count = atoi(dash+1); if (count>0) return count; return 1; } size_t num_input_sequences(const FASTX *pFASTX) { return pFASTX->num_input_sequences; } size_t num_input_reads(const FASTX *pFASTX) { return pFASTX->num_input_reads; } size_t num_output_sequences(const FASTX *pFASTX) { return pFASTX->num_output_sequences; } size_t num_output_reads(const FASTX *pFASTX) { return pFASTX->num_output_reads; } fastx_toolkit-0.0.14/src/libfastx/fastx.h000066400000000000000000000111131226234573700203770ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef __FASTX_HEADER__ #define __FASTX_HEADER__ #ifdef __cplusplus extern "C" { #endif /* for PATH_MAX */ #include #define MIN_QUALITY_VALUE (-50) #define MAX_QUALITY_VALUE 50 #define QUALITY_VALUES_RANGE (MAX_QUALITY_VALUE-MIN_QUALITY_VALUE) #ifndef MAX_SEQ_LINE_LENGTH #define MAX_SEQ_LINE_LENGTH (25000) #endif typedef enum { FASTA_ONLY=0, FASTA_OR_FASTQ=1, FASTQ_ONLY=2 } ALLOWED_INPUT_FILE_TYPES; typedef enum { DISALLOW_N=0, ALLOW_N=1, ALLOW_U=2 } ALLOWED_INPUT_BASES; typedef enum { REQUIRE_UPPERCASE=0, ALLOW_LOWERCASE=1 } ALLOWED_INPUT_CASE; typedef enum { OUTPUT_FASTA=0, OUTPUT_FASTQ_ASCII_QUAL=1, OUTPUT_FASTQ_NUMERIC_QUAL=2, OUTPUT_SAME_AS_INPUT=3 } OUTPUT_FILE_TYPE; #pragma pack(1) typedef struct { /* Record data - common for FASTA/FASTQ */ union { struct { char input_sequence_id_prefix[1]; //DON'T touch this - this hack will read the entire name into the variable 'name', //leaving the prefix ('>' or '@') in 'input_sequence_id_name'. char name[MAX_SEQ_LINE_LENGTH+1]; }; char dummy_read_id_buffer[MAX_SEQ_LINE_LENGTH+2]; }; char nucleotides[MAX_SEQ_LINE_LENGTH+1]; /* Record data - only for FASTQ */ union { struct { char input_name2_prefix[1]; //same hack as 'input_sequence_id_prefix' char name2[MAX_SEQ_LINE_LENGTH+1]; }; char dummy_read_id2_buffer[MAX_SEQ_LINE_LENGTH+2]; }; int quality[MAX_SEQ_LINE_LENGTH+1]; //note: this is NOT ascii values, but numerical values // numeric quality scores and ASCII quality scores // are automatically converted to numbers (-15 to 93) /* Configuration */ int allow_input_filetype; // 0 = Allow only FASTA int allow_N; // 1 = N is valid nucleotide, 0 = only A/G/C/T are valid int allow_U; // 1 = U is a valid nucleotide int allow_lowercase; int read_fastq; // 1 = Input is FASTQ (only if allow_input_fastq==1) int read_fastq_ascii; // 1 = Input is FASTQ with ASCII quality scores (0 = with numeric quality scores) int write_fastq; // 0 = Write only FASTA (regardless of input type) int write_fastq_ascii; // 1 = Write ASCII quality scores, 0 = write numeric quality scores int compress_output; // 1 = pass output through GZIP int copy_input_fastq_format_to_output ; // 1 = copy 'read_fastq_ascii' to 'write_fastq_ascii' // so that the output format is the same as the input int fastq_ascii_quality_offset ; // When reading FASTQ with ASCII quality values, subtract this value to get 'real' numeric quality score; /* Internal data */ int allowed_nucleotides[256]; //quick lookup table for valid input char output_sequence_id_prefix; // '>' or '@', depending on the requested output type char input_file_name[PATH_MAX]; //in linux, PATH_MAX is defined in unsigned long long input_line_number; char output_file_name[PATH_MAX]; //in linux, PATH_MAX is defined in size_t num_input_sequences; size_t num_output_sequences; size_t num_input_reads; size_t num_output_reads; FILE* input; FILE* output; } FASTX ; void fastx_init_reader(FASTX *pFASTX, const char* filename, ALLOWED_INPUT_FILE_TYPES allowed_input_filetype, ALLOWED_INPUT_BASES allow_bases, ALLOWED_INPUT_CASE allow_lowercase, int fastq_ascii_quality_offset); // If the sequence identifier is collapsed (= "N-N") returns the reads_count, // otherwise, returns 1 int get_reads_count(const FASTX *pFASTX); void fastx_init_writer(FASTX *pFASTX, const char* filename, OUTPUT_FILE_TYPE output_type, int compress_output); int fastx_read_next_record(FASTX *pFASTX); void fastx_write_record(FASTX *pFASTX); size_t num_input_sequences(const FASTX *pFASTX); size_t num_input_reads(const FASTX *pFASTX); size_t num_output_sequences(const FASTX *pFASTX); size_t num_output_reads(const FASTX *pFASTX); #ifdef __cplusplus } #endif #endif fastx_toolkit-0.0.14/src/libfastx/fastx_args.c000066400000000000000000000057611226234573700214220ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #include #include #include #include #include #include #include #include "fastx_args.h" /* * Each program should specify its own usage string */ extern char* usage; /* * globals.. yuck * * some day this will be a stand alone class */ const char* input_filename = "-"; const char* output_filename = "-"; int verbose = 0; int compress_output = 0 ; int fastq_ascii_quality_offset = 33 ; FILE* report_file; int get_fastq_ascii_quality_offset() { return fastq_ascii_quality_offset; } const char* get_input_filename() { return input_filename; } const char* get_output_filename() { return output_filename; } int verbose_flag() { return verbose; } int compress_output_flag() { return compress_output ; } FILE* get_report_file() { return report_file; } int fastx_parse_cmdline( int argc, char* argv[], const char* program_options, parse_argument_func program_parse_args ) { int opt; char combined_options_string[100]; strcpy(combined_options_string, "Q:zhvi:o:"); strcat(combined_options_string, program_options); report_file = stderr ; //since the default output is STDOUT, the report goes by default to STDERR while ( (opt = getopt(argc, argv, combined_options_string) ) != -1 ) { // Parse the program's custom options if ( strchr(program_options, opt) != NULL ) { if (!program_parse_args(optind, opt, optarg)) return 0; continue; } //Parse the default options switch(opt) { case 'h': printf("%s", usage); exit(1); case 'v': verbose = 1 ; break ; case 'z': compress_output = 1 ; break ; case 'i': if (optarg==NULL) errx(1,"[-i] option requires FILENAME argument"); input_filename = optarg; break; case 'o': if (optarg==NULL) errx(1,"[-o] option requires FILENAME argument"); output_filename = optarg; //The user specified a specific output file, so the report can go to STDOUT report_file = stdout; break; case 'Q': if (optarg==NULL) errx(1,"[-Q] option requires VALUE argument"); fastq_ascii_quality_offset = atoi(optarg); break; default: printf("use '-h' for usage information.\n"); exit(1); break; } } return 1; } fastx_toolkit-0.0.14/src/libfastx/fastx_args.h000066400000000000000000000024761226234573700214270ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef __FASTX_ARGS__ #define __FASTX_ARGS__ #ifdef __cplusplus extern "C" { #endif //One day this would all be OO :-) const char* get_input_filename(); const char* get_output_filename(); int verbose_flag(); int compress_output_flag(); int get_fastq_ascii_quality_offset(); FILE* get_report_file(); typedef int (*parse_argument_func)(int optind, int optc, char* optarg) ; int fastx_parse_cmdline( int argc, char* argv[], const char* program_options, parse_argument_func program_parse_arg ) ; #ifdef __cplusplus } #endif #endif fastx_toolkit-0.0.14/src/libfastx/sequence_alignment.cpp000066400000000000000000000504741226234573700234700ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include "sequence_alignment.h" using namespace std; void SequenceAlignmentResults::print(std::ostream& strm) const { size_t delta; size_t index; strm << "Query-Alingment = " << query_alignment << endl ; strm << "target-Alingment= " << target_alignment << endl ; strm << (alignment_found ? "Alignment Found" : "Alignment NOT found") << endl; strm << "Score = " << score << " (" << matches << " matches, " << neutral_matches << " neutral-matches, " << mismatches << " mismatches, " << gaps << " gaps) " << std::endl ; strm << "Query = " << query_sequence << "(qsize " << query_size << " qstart " << query_start << " qend " << query_end << std::endl ; strm << "Target= " << target_sequence << "(tsize " << target_size << " tstart " << target_start << " tend " << target_end << std::endl ; strm << endl; delta = max(target_start, query_start); //Spaces before the query string if ( delta - query_start > 0 ) strm << std::string( delta - query_start-1, ' ') ; //Un-Aligned query part (prefix) if ( query_start > 0 ) strm << query_sequence.substr(0, query_start-1) ; //Aligned query part strm << "(" << query_alignment << ")"; //Un-Aligned query part (suffix) if ( query_end < query_sequence.length() ) strm << query_sequence.substr( query_end+1 ) ; strm << std::endl ; //Alignment bars if ( delta > 0 ) strm << std::string( delta-1, ' ') ; strm << "(" ; for (index=0; index 0 ) strm << std::string( delta - target_start, ' ') ; //Un-Aligned target part (prefix) if ( target_start > 0 ) strm << target_sequence.substr(0, target_start-1); //Aligned target part strm << "(" << target_alignment << ")"; //Un-Aligned target part (suffix) if ( target_end < target_sequence.length() ) strm << target_sequence.substr( target_end+1 ); strm << std::endl; } SequenceAlignment::SequenceAlignment ( ) : _gap_panelty(-5), _match_panelty(1), _mismatch_panelty(-1), _neutral_panelty(0.1) { } void SequenceAlignment::set_sequences(const std::string& _query, const std::string& _target) { _query_sequence = _query ; _target_sequence = _target ; } void SequenceAlignment::reset_alignment_results() { _alignment_results = SequenceAlignmentResults() ; // //Reset the results _alignment_results.query_sequence = query_sequence() ; _alignment_results.target_sequence = target_sequence() ; } const SequenceAlignmentResults& SequenceAlignment::align ( const std::string& query, const std::string& target ) { set_sequences ( query, target ) ; reset_alignment_results(); resize_matrix ( query_sequence().length(), target_sequence().length() ) ; populate_match_matrix(); reset_matrix( matrix_width(), matrix_height() ); populate_matrix(); find_optimal_alignment(); post_process(); return _alignment_results; } void SequenceAlignment::resize_matrix(size_t width, size_t height) { size_t i; if ( matrix_width() >= width && matrix_height() >= height ) return ; query_border.resize ( width ) ; target_border.resize ( height ) ; score_matrix.resize ( width ); for (i=0;i0) ? score : 0 ; //NOTE // not sure ">=" is strictly correct SW (might be just ">") if ( score > highest_score ) { highest_scored_query_index = query_index ; highest_scored_target_index = target_index ; highest_score = score ; } } } } void LocalSequenceAlignment::find_optimal_alignment ( ) { size_t query_index = highest_scored_query_index ; size_t target_index = highest_scored_target_index; _alignment_results.query_end = query_index-1 ; _alignment_results.target_end= target_index-1 ; _alignment_results.score = score_matrix[query_index][target_index]; _alignment_results.matches = 0 ; _alignment_results.mismatches = 0 ; while ( query_index > 0 || target_index > 0 ) { if ( score_matrix[query_index][target_index]==0) break ; //go "left" in the matrix if ( query_index>0 && score_matrix[query_index][target_index] == score_matrix[query_index-1][target_index] + gap_panelty() ) { _alignment_results.target_alignment += "-" ; _alignment_results.query_alignment += query_sequence()[query_index-1] ; query_index--; } else //go "up-left" in the matrix if ( query_index>0 && target_index>0 && score_matrix[query_index][target_index] == score_matrix[query_index-1][target_index-1] + match_score(query_index, target_index) ) { _alignment_results.target_alignment += target_sequence()[target_index-1]; _alignment_results.query_alignment += query_sequence()[query_index-1] ; (query_sequence()[query_index-1] == target_sequence()[target_index-1]) ? (++_alignment_results.matches) : (++_alignment_results.mismatches) ; query_index--; target_index--; } else //go "up" in the matrix { _alignment_results.target_alignment += target_sequence()[target_index-1]; _alignment_results.query_alignment += "-" ; target_index--; } } _alignment_results.query_start = query_index ; _alignment_results.target_start= target_index ; _alignment_results.query_size = query_sequence().length(); _alignment_results.target_size= target_sequence().length(); std::reverse(_alignment_results.target_alignment.begin(), _alignment_results.target_alignment.end()); std::reverse(_alignment_results.query_alignment.begin(), _alignment_results.query_alignment.end()); } #endif void HalfLocalSequenceAlignment::set_sequences(const std::string& _query, const std::string& _target) { //_query_sequence = _query + std::string( _target.length(), 'N' ); //_target_sequence = std::string( _query.length(), 'N' ) + _target; _query_sequence = _query ; _target_sequence = _target ; } void HalfLocalSequenceAlignment::reset_matrix( size_t width, size_t height ) { size_t x,y ; highest_scored_query_index = 0 ; highest_scored_target_index = 0 ; for (x=0; x3 && target_index-3 > query_index ) { left_score = -100000 ; } //printf("query_index=%d, target_index=%d, upscore=%f, left_score=%f, upleft_score=%f\n", // query_index, target_index, up_score,left_score,upleft_score ); score_type score = -100000000 ; if ( upleft_score > score ) { score = upleft_score ; origin = FROM_UPPER_LEFT; } if ( up_score > score ) { score = up_score ; origin = FROM_UPPER ; } if ( left_score > score ) { score = left_score ; origin = FROM_LEFT ; } //printf("query_index=%d, target_index=%d, score=%f origin=%d\n", // query_index, target_index, score, origin ); /*if (score<0) { score = 0 ; origin = FROM_NOWHERE ; }*/ score_matrix[query_index][target_index] = score ; origin_matrix[query_index][target_index] = origin ; //NOTE // not sure ">=" is strictly correct SW (might be just ">") if ( score > highest_score ) { highest_scored_query_index = query_index ; highest_scored_target_index = target_index ; highest_score = score ; } } } } bool HalfLocalSequenceAlignment::starting_point_close_to_end_of_sequences(const size_t query_index, const size_t target_index) const { if ( (size_t)query_index >= query_sequence().length() - 2 || (size_t)target_index >= target_sequence().length() - 2 ) { /* We've reach either the end of the Adapter * (and the adapter is shorter than the query) * Or the end of the query * (and the adapter covers up to the end of the query, and then continues on) * * So we can safely start the alignment from this point */ return true; } else { /* The adapter is not covering the query until the end. */ return false; } } #undef DEBUG_STARTING_POINT void HalfLocalSequenceAlignment::find_alignment_starting_point(ssize_t &new_query_index, ssize_t &new_target_index) const { /* * Force the alignment to start from the end of the query, * find the best score at the end of the query * * Try (desperately) to find a match that starts at the end of the query or the end of the target/adapter) */ score_type max_score = score( matrix_width()-1, matrix_height()-1 ) ; for ( size_t q_index = 0 ; q_index < matrix_width(); q_index++ ) { for ( size_t t_index = matrix_height()-2 ; t_index < matrix_height(); t_index++ ) { if ( origin ( q_index, t_index ) > 0 && safe_score ( q_index, t_index ) > max_score ) { max_score = safe_score ( q_index, t_index ) ; #ifdef DEBUG_STARTING_POINT printf("Found new max score = %f at %d,%d\n", max_score, q_index, t_index ) ; #endif new_target_index = t_index ; new_query_index = q_index ; } } } for ( size_t q_index = matrix_width()-2 ; q_index < matrix_width(); q_index++ ) { for ( size_t t_index = 0 ; t_index < matrix_height(); t_index++ ) { if ( origin ( q_index, t_index ) > 0 && safe_score ( q_index, t_index ) > max_score ) { max_score = safe_score ( q_index, t_index ) ; #ifdef DEBUG_STARTING_POINT printf("Found new max score = %f at %d,%d\n", max_score, q_index, t_index ) ; #endif new_target_index = t_index ; new_query_index = q_index ; } } } #ifdef DEBUG_STARTING_POINT printf("Forcing alignment from query_index=%d, target_index=%d, score=%f, origin=%d\n", new_query_index, new_target_index, score ( new_query_index, new_target_index ), origin ( new_query_index, new_target_index ) ); #endif } #undef DEBUG_FIND_OPTIMAL_ALIGNMENT SequenceAlignmentResults HalfLocalSequenceAlignment::find_optimal_alignment_from_point ( const size_t query_start, const size_t target_start ) const { SequenceAlignmentResults results; results.query_sequence = query_sequence(); results.target_sequence= target_sequence(); ssize_t query_index = query_start; ssize_t target_index = target_start ; results.query_end = query_index ; results.target_end= target_index ; #ifdef DEBUG_FIND_OPTIMAL_ALIGNMENT printf ( "backtrace starting from (qindex=%d, tindex=%d, score=%f)\n", query_index, target_index, score_matrix[query_index][target_index]) ; #endif while ( query_index >= 0 && target_index >= 0 ) { const char q_nuc = query_nucleotide(query_index); const char t_nuc = target_nucleotide(target_index); const DIRECTION current_origin = origin(query_index, target_index); const char current_match = match ( query_index, target_index ) ; #ifdef DEBUG_FIND_OPTIMAL_ALIGNMENT const score_type current_score = score(query_index, target_index); printf("query_index=%d target_index=%d query=%c target=%c score_matrix=%3.1f origin=%d accumulated_score = %3.2f\n", query_index, target_index, q_nuc, t_nuc, current_score, current_origin, results.score) ; #endif results.query_start = query_index ; results.target_start= target_index ; switch ( current_origin ) { case FROM_LEFT: results.target_alignment += "-" ; results.query_alignment += q_nuc ; results.gaps++; results.score += gap_panelty(); query_index--; break ; case FROM_UPPER_LEFT: results.target_alignment += t_nuc; results.query_alignment += q_nuc ; switch ( current_match ) { case 'N': results.neutral_matches++ ; results.score += neutral_panelty(); break ; case 'M': results.matches++; results.score += match_panelty(); break; case 'x': results.mismatches++; results.score += mismatch_panelty(); break ; default: errx(1,"Internal error: unknown match type (%c) at query_index=%zu, target_index=%zu\n", current_match, query_index, target_index ) ; } query_index--; target_index--; break ; case FROM_UPPER: results.target_alignment += t_nuc ; results.query_alignment += "-" ; results.gaps++; results.score += gap_panelty(); target_index--; break; case FROM_NOWHERE: default: print_matrix(); printf("Invalid origin (%d) at query_index=%zu, target_index=%zu\n", current_origin, query_index, target_index ) ; printf("Query = %s\n", query_sequence().c_str()); printf("Target= %s\n", target_sequence().c_str()); exit(1); } } results.query_size = query_sequence().length(); results.target_size= target_sequence().length(); std::reverse(results.target_alignment.begin(),results.target_alignment.end()); std::reverse(results.query_alignment.begin(), results.query_alignment.end()); return results; } void HalfLocalSequenceAlignment::find_optimal_alignment ( ) { SequenceAlignmentResults results ; //Try to find a good alignment, //starting from the highest score cell. results = find_optimal_alignment_from_point ( highest_scored_query_index, highest_scored_target_index ) ; //Some heuristics: //If the adapter matched 7 nucleotides anywhere in the query //without mismatches/gaps, accept it. if ( results.matches >= 7 && results.mismatches == 0 && results.gaps == 0 ) { _alignment_results = results ; return ; } if ( starting_point_close_to_end_of_sequences ( highest_scored_query_index, highest_scored_target_index ) ) { //We're already very close to the end of the target or query, //can't improve much else, so return what we've got. _alignment_results = results ; return ; } //More heuristics: /* The adapter is not covering the query until the end. * Force the alignment to start from the end of the query, * find the best score at the end of the query * * Try (desperately) to find a match that starts at the end of the query or the end of the target/adapter) */ ssize_t query_index = highest_scored_query_index ; ssize_t target_index = highest_scored_target_index; find_alignment_starting_point ( query_index, target_index ) ; _alignment_results = results ; } void HalfLocalSequenceAlignment::post_process() { #if 0 //Removes the Ns which were added in 'set_sequences' //And adjust the results values accordingly //return ; //_query_sequence.erase ( _query_sequence.find_last_not_of('N') + 1) ; //_target_sequence.erase ( 0, _target_sequence.find_first_not_of('N') ) ; _alignment_results.query_sequence.erase ( _query_sequence.find_last_not_of('N') + 1) ; _alignment_results.target_sequence.erase ( 0, _target_sequence.find_first_not_of('N') ) ; _alignment_results.query_size = _alignment_results.query_sequence.length(); _alignment_results.target_size = _alignment_results.target_sequence.length(); size_t query_n_position = _alignment_results.query_alignment.find_last_not_of('N') ; int query_n_count; if ( query_n_position != string::npos ) query_n_count = _alignment_results.query_alignment.length() - query_n_position ; else query_n_count = 0 ; int target_n_count = _alignment_results.target_alignment.find_first_not_of('N') ; if (query_n_position != string::npos ) _alignment_results.query_alignment.erase( query_n_position ) ; _alignment_results.target_alignment.erase( 0,target_n_count ) ; //Update Results strucure _alignment_results.query_start+= target_n_count ; _alignment_results.query_end -= query_n_count ; _alignment_results.target_start = 0; _alignment_results.target_end = _alignment_results.query_end - _alignment_results.query_start ; _alignment_results.query_alignment.erase ( 0, _alignment_results.query_start ) ; _alignment_results.target_alignment.erase ( _alignment_results.target_end+1 ) ; //Update match/mismatch/gap counts _alignment_results.matches = 0 ; _alignment_results.mismatches = 0 ; _alignment_results.gaps = 0 ; for (size_t index=0; index<_alignment_results.query_alignment.length(); index++) { char q = _alignment_results.query_alignment[index]; char t = _alignment_results.target_alignment[index]; if ( q == '-' || t=='-' ) { _alignment_results.gaps ++ ; } else { if ( q== t ) _alignment_results.matches++; else _alignment_results.mismatches++; } } #endif } fastx_toolkit-0.0.14/src/libfastx/sequence_alignment.h000066400000000000000000000153251226234573700231310ustar00rootroot00000000000000/* FASTX-toolkit - FASTA/FASTQ preprocessing tools. Copyright (C) 2009-2013 A. Gordon (assafgordon@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ #ifndef __SEQUENCE_ALIGNMENT_HEADER__ #define __SEQUENCE_ALIGNMENT_HEADER__ #include struct SequenceAlignmentResults { int alignment_found ; size_t query_size ; size_t query_start ; size_t query_end ; size_t target_size ; size_t target_start ; size_t target_end ; size_t gaps; size_t neutral_matches ; size_t matches ; size_t mismatches ; float score ; std::string query_alignment ; std::string target_alignment ; std::string query_sequence ; std::string target_sequence ; SequenceAlignmentResults() : alignment_found(false), query_size(0), query_start(0), query_end(0), target_size(0), target_start(0), target_end(0), gaps(0), neutral_matches(0), matches(0), mismatches(0), score(0) { } void print( std::ostream& ostrm = std::cout ) const; virtual ~SequenceAlignmentResults() {} } ; class SequenceAlignment { protected: typedef float score_type; typedef enum { FROM_UPPER = 1, FROM_LEFT = 2, FROM_UPPER_LEFT = 3, FROM_NOWHERE = 4 //STOP_MARKER = 5 } DIRECTION ; std::vector < score_type > query_border ; std::vector < score_type > target_border ; std::vector< std::vector< score_type > > score_matrix ; std::vector< std::vector< DIRECTION > > origin_matrix ; std::vector< std::vector< char > > match_matrix ; score_type _gap_panelty ; score_type _match_panelty ; score_type _mismatch_panelty ; score_type _neutral_panelty ; SequenceAlignmentResults _alignment_results ; std::string _query_sequence; std::string _target_sequence; public: SequenceAlignment ( ) ; virtual ~SequenceAlignment() {} size_t matrix_width() const { return score_matrix.size(); } size_t matrix_height() const { return score_matrix[0].size(); } score_type gap_panelty() const { return _gap_panelty ; } score_type match_panelty() const { return _match_panelty ; } score_type mismatch_panelty() const { return _mismatch_panelty ; } score_type neutral_panelty() const { return _neutral_panelty ; } const std::string& query_sequence() const { return _query_sequence; } const std::string& target_sequence() const { return _target_sequence; } char query_nucleotide(size_t query_index) const { return _query_sequence[query_index] ; } char target_nucleotide(size_t target_index) const { return _target_sequence[target_index] ; } const SequenceAlignmentResults& results() const { return _alignment_results; } char match_value ( const char q, const char t ) const { if ( q=='N' || t=='N' ) return 'N' ; return ( q==t ) ? 'M' : 'x' ; } char match ( const size_t query_index, const size_t target_index) const { return match_matrix[query_index][target_index]; } DIRECTION origin ( const size_t query_index, const size_t target_index) const { return origin_matrix[query_index][target_index]; } score_type score ( const size_t query_index, const size_t target_index) const { return score_matrix[query_index][target_index]; } score_type safe_score ( const ssize_t query_index, const ssize_t target_index) const { if (query_index==-1) return target_border[target_index]; if (target_index==-1) return query_border[query_index]; return score_matrix[query_index][target_index]; } score_type nucleotide_match_score(const size_t query_index, const size_t target_index) const { char q = query_nucleotide(query_index); char t = target_nucleotide(target_index); if ( q=='N' && t=='N' ) return 0.0 ; if ( q=='N' || t=='N' ) return neutral_panelty() ; return ( q==t ) ? match_panelty() : mismatch_panelty() ; } void print_matrix(std::ostream& strm = std::cout) const; #if 0 score_type calculate_alignment_score(const size_t query_index, const size_t target_index) const { score_type score = -100000000; /* score_type //Score from the left-cell if ( query_index > 0 ) if ( (score(query_index-1,target_index) + gap_panelty()) > score) score = score_matrix[query_index-1][target_index] + gap_panelty(); //Score from the upper-cell if ( target_index > 0 ) if ((score_matrix[query_index][target_index-1] + gap_panelty()) > score) score = score_matrix[query_index][target_index-1] + gap_panelty(); //Score from the upper-left-cell if ( target_index>0 && query_index> 0) { if (score_matrix[query_index-1][target_index-1] + match_score(query_index,target_index) > score) score = score_matrix[query_index-1][target_index-1] + match_score(query_index,target_index) ; }*/ return score; } #endif const SequenceAlignmentResults& align ( const std::string& query, const std::string& target ) ; protected: void resize_matrix(size_t width, size_t height); void populate_match_matrix(); virtual void reset_alignment_results() ; virtual void set_sequences ( const std::string& _query, const std::string &target ) ; virtual void reset_matrix( size_t width, size_t height ) = 0 ; virtual void populate_matrix ( ) = 0; virtual void find_optimal_alignment ( ) = 0 ; virtual void post_process() ; } ; #if 0 class LocalSequenceAlignment : public SequenceAlignment { protected: size_t highest_scored_query_index ; size_t highest_scored_target_index ; public: virtual void reset_matrix( size_t width, size_t height ) ; virtual void populate_matrix ( ) ; virtual void find_optimal_alignment ( ) ; }; #endif class HalfLocalSequenceAlignment : public SequenceAlignment { protected: size_t highest_scored_query_index ; size_t highest_scored_target_index ; public: virtual void set_sequences ( const std::string& _query, const std::string &target ) ; virtual void reset_matrix( size_t width, size_t height ) ; virtual void populate_matrix ( ) ; virtual void find_optimal_alignment ( ) ; virtual void post_process() ; bool starting_point_close_to_end_of_sequences(const size_t query_index, const size_t target_index) const; void find_alignment_starting_point(ssize_t &new_query_index, ssize_t &new_target_index) const; SequenceAlignmentResults find_optimal_alignment_from_point ( const size_t query_start, const size_t target_start ) const ; }; #endif fastx_toolkit-0.0.14/src/seqalign_test/000077500000000000000000000000001226234573700201325ustar00rootroot00000000000000fastx_toolkit-0.0.14/src/seqalign_test/Makefile.am000066400000000000000000000012401226234573700221630ustar00rootroot00000000000000# Copyright (C) 2008-2013 Assaf Gordon # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. noinst_PROGRAMS = seqalign_test AM_CPPFLAGS = \ $(CC_WARNINGS) \ -I$(top_srcdir)/src/libfastx seqalign_test_SOURCES = seqalign_test.cpp seqalign_test_LDADD = ../libfastx/libfastx.a fastx_toolkit-0.0.14/src/seqalign_test/seqalign_test.cpp000066400000000000000000000005221226234573700234770ustar00rootroot00000000000000#include #include #include #include #include #include "sequence_alignment.h" int main( /*int argc, char* argv[] */) { HalfLocalSequenceAlignment lsa ; const SequenceAlignmentResults& results = lsa.align("AAAGGTTTCCC","AGGCTT" ); lsa.print_matrix(); results.print(); return 0; }