Bio-Tools-Run-Alignment-Clustalw-1.7.4/0000755000175000017500000000000013321415253020603 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/Changes0000644000175000017500000000156313321415253022103 0ustar carandraugcarandraugSummary of important user-visible changes for Bio-Tools-Run-Alignment-Clustawl ------------------------------------------------------------------------------ 1.7.4 2018-07-11 15:56:41+01:00 Europe/London * Bio::Installer::Clustalw has been removed. It was installing a very old version of clustalw, many years out of date and UNIX only, it was also unsecure. Either install Clustal W via your system package manager, or download it from upstream. 1.7.3 2017-09-27 18:30:00+01:00 Europe/London * Replace requires_external.t with a check in the Makefile.PL for clustalw. This ensures that the installation fails instead of triggering a test failure since a test failure indicates a bug in the package. This avoids failure reports CPAN Testers. 1.7.2 2017-09-14 16:04:14+01:00 Europe/London * First release after split from bioperl-run. Bio-Tools-Run-Alignment-Clustalw-1.7.4/dist.ini0000644000175000017500000000034213321415253022246 0ustar carandraugcarandraugname = Bio-Tools-Run-Alignment-Clustalw version = 1.7.4 author = Peter Schattner copyright_holder = Peter Schattner license = Perl_5 [@BioPerl] [CheckBin] command = clustalw Bio-Tools-Run-Alignment-Clustalw-1.7.4/LICENSE0000644000175000017500000004400113321415253021607 0ustar carandraugcarandraugThis software is copyright (c) 2018 by Peter Schattner . This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2018 by Peter Schattner . This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, 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. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. END OF TERMS AND CONDITIONS Appendix: 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 humanity, 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 convey 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) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2018 by Peter Schattner . This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/0000755000175000017500000000000013321415253021046 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/t/author-mojibake.t0000644000175000017500000000035313321415253024315 0ustar carandraugcarandraug#!perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { print qq{1..0 # SKIP these tests are for testing by the author\n}; exit } } use strict; use warnings qw(all); use Test::More; use Test::Mojibake; all_files_encoding_ok(); Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/author-pod-coverage.t0000644000175000017500000000053613321415253025112 0ustar carandraugcarandraug#!perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { print qq{1..0 # SKIP these tests are for testing by the author\n}; exit } } # This file was automatically generated by Dist::Zilla::Plugin::PodCoverageTests. use Test::Pod::Coverage 1.08; use Pod::Coverage::TrustPod; all_pod_coverage_ok({ coverage_class => 'Pod::Coverage::TrustPod' }); Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/00-compile.t0000644000175000017500000000266113321415253023105 0ustar carandraugcarandrauguse 5.006; use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::Compile 2.058 use Test::More; plan tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0); my @module_files = ( 'Bio/Tools/Run/Alignment/Clustalw.pm' ); # no fake home requested my @switches = ( -d 'blib' ? '-Mblib' : '-Ilib', ); use File::Spec; use IPC::Open3; use IO::Handle; open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!"; my @warnings; for my $lib (@module_files) { # see L my $stderr = IO::Handle->new; diag('Running: ', join(', ', map { my $str = $_; $str =~ s/'/\\'/g; q{'} . $str . q{'} } $^X, @switches, '-e', "require q[$lib]")) if $ENV{PERL_COMPILE_TEST_DEBUG}; my $pid = open3($stdin, '>&STDERR', $stderr, $^X, @switches, '-e', "require q[$lib]"); binmode $stderr, ':crlf' if $^O eq 'MSWin32'; my @_warnings = <$stderr>; waitpid($pid, 0); is($?, 0, "$lib loaded ok"); shift @_warnings if @_warnings and $_warnings[0] =~ /^Using .*\bblib/ and not eval { +require blib; blib->VERSION('1.01') }; if (@_warnings) { warn @_warnings; push @warnings, @_warnings; } } is(scalar(@warnings), 0, 'no warnings found') or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING}; Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/author-no-tabs.t0000644000175000017500000000105113321415253024073 0ustar carandraugcarandraug BEGIN { unless ($ENV{AUTHOR_TESTING}) { print qq{1..0 # SKIP these tests are for testing by the author\n}; exit } } use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.15 use Test::More 0.88; use Test::NoTabs; my @files = ( 'lib/Bio/Tools/Run/Alignment/Clustalw.pm', 't/00-compile.t', 't/Clustalw.t', 't/author-eol.t', 't/author-mojibake.t', 't/author-no-tabs.t', 't/author-pod-coverage.t', 't/author-pod-syntax.t' ); notabs_ok($_) foreach @files; done_testing; Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/author-pod-syntax.t0000644000175000017500000000045413321415253024644 0ustar carandraugcarandraug#!perl BEGIN { unless ($ENV{AUTHOR_TESTING}) { print qq{1..0 # SKIP these tests are for testing by the author\n}; exit } } # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. use strict; use warnings; use Test::More; use Test::Pod 1.41; all_pod_files_ok(); Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/data/0000755000175000017500000000000013321415253021757 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/t/data/cysprot1b.msf0000644000175000017500000000464513321415253024425 0ustar carandraugcarandraugPileUp MSF: 366 Type: P Check: 8252 .. Name: CATL_HUMAN oo Len: 366 Check: 9087 Weight: 21.6 Name: CATL_RAT oo Len: 366 Check: 271 Weight: 20.7 Name: CATH_RAT oo Len: 366 Check: 8974 Weight: 27.9 Name: PAPA_CARPA oo Len: 366 Check: 9920 Weight: 29.7 // CATL_HUMAN ......MNPT LILAAFCLGI .......... ...ASATLTF DHSLEAQWTK CATL_RAT ......MTPL LLLAVLCLGT .......... ...ALATPKF DQTFNAQWHQ CATH_RAT ...MWTALPL LCAGAWLLSA G......... ...ATAELTV NAIEKFHFTS PAPA_CARPA MAMIPSISKL LFVAICLFVY MGLSFGDFSI VGYSQNDLTS TERLIQLFES CATL_HUMAN WKAMHNRLYG .MNEEGWRRA VWEKNMKMIE LHNQEYREGK HSFTMAMNAF CATL_RAT WKSTHRRLYG .TNEEEWRRA VWEKNMRMIQ LHNGEYSNGK HGFTMEMNAF CATH_RAT WMKQHQKTYS .SREYSHRLQ VFANNWRKIQ AHNQRN.... HTFKMGLNQF PAPA_CARPA WMLKHNKIYK NIDEKIYRFE IFKDNLKYID ETNKKN.... NSYWLGLNVF CATL_HUMAN GDMTSEEFRQ VMNGFQNRKP RKGKVFQEPL FY....EAPR SVDWREKG.Y CATL_RAT GDMTNEEFRQ IVNGYRHQKH KKGRLFQEPL ML....QIPK TVDWREKG.C CATH_RAT SDMSFAEIKH KYLWSEPQNC SATKSNYLRG TG....PYPS SMDWRKKGNV PAPA_CARPA ADMSNDEFKE KYTGSIAGNY TTTELSYEEV LNDGDVNIPE YVDWRQKG.A CATL_HUMAN VTPVKNQGQC GSCWAFSATG ALEGQMFRKT GRLISLSEQN LVDCSGPQGN CATL_RAT VTPVKNQGQC GSCWAFSASG CLEGQMFLKT GKLISLSEQN LVDCSHDQGN CATH_RAT VSPVKNQGAC GSCWTFSTTG ALESAVAIAS GKMMTLAEQQ LVDCAQNFNN PAPA_CARPA VTPVKNQGSC GSCWAFSAVV TIEGIIKIRT GNLNEYSEQE LLDCDRR..S CATL_HUMAN EGCNGGLMDY AFQYVQDNGG LDSEESYPYE ATEESCKYNP KYSVANDTGF CATL_RAT QGCNGGLMDF AFQYIKENGG LDSEESYPYE AKDGSCKYRA EYAVANDTGF CATH_RAT HGCQGGLPSQ AFEYILYNKG IMGEDSYPYI GKNGQCKFNP EKAVAFVKNV PAPA_CARPA YGCNGGYPWS ALQLVAQYG. IHYRNTYPYE GVQRYCRSRE KGPYAAKTDG CATL_HUMAN VDIPK.QEKA LMKAVATVGP ISVAIDAGHE SFLFYKEGIY FEPDCSS..E CATL_RAT VDIPQ.QEKA LMKAVATVGP ISVAMDASHP SLQFYSSGIY YEPNCSS..K CATH_RAT VNITLNDEAA MVEAVALYNP VSFAFEVT.E DFMMYKSGVY SSNSCHKTPD PAPA_CARPA VRQVQPYNEG ALLYSIANQP VSVVLEAAGK DFQLYRGGIF VGP.CGN... CATL_HUMAN DMDHGVLVVG YGFESTESDN NKYWLVKNSW GEEWGMGGYV KMAKDRR... CATL_RAT DLDHGVLVVG YGYEGTDSNK DKYWLVKNSW GKEWGMDGYI KIAKDRN... CATH_RAT KVNHAVLAVG YG....EQNG LLYWIVKNSW GSNWGNNGYF LIERGK.... PAPA_CARPA KVDHAVAAVG YG........ PNYILIKNSW GTGWGENGYI RIKRGTGNSY CATL_HUMAN NHCGIASAAS YPTV.. CATL_RAT NHCGLATAAS YPIVN. CATH_RAT NMCGLAACAS YPIPQV PAPA_CARPA GVCGLYTSSF YPVKN. Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/data/cysprot1a.msf0000644000175000017500000000361313321415253024416 0ustar carandraugcarandraugPileUp MSF: 383 Type: P Check: 3696 .. Name: ALEU_HORVU oo Len: 383 Check: 9840 Weight: 34.4 Name: CATH_HUMAN oo Len: 383 Check: 7134 Weight: 30.1 Name: CYS1_DICDI oo Len: 383 Check: 6722 Weight: 35.4 // ALEU_HORVU MAHARVLLLA LAVLATAAVA VASSSSFADS NPIRPVTDRA ASTLESAVLG CATH_HUMAN ......MWAT LPLLCAGAWL LG........ VPVCGAAELS VNSLEK.... CYS1_DICDI .....MKVIL LFVLAVFTVF VS........ .......SRG IPPEEQ.... ALEU_HORVU ALGRTRHALR FARFAVRYGK SYESAAEVRR RFRIFSESLE EVRSTN.... CATH_HUMAN ........FH FKSWMSKHRK TYS.TEEYHH RLQTFASNWR KINAHN.... CYS1_DICDI ........SQ FLEFQDKFNK KYS.HEEYLE RFEIFKSNLG KIEELNLIAI ALEU_HORVU RKGLPYRLGI NRFSDMSWEE FQATRLG.AA QTCSATLAGN HLMRDAAA.. CATH_HUMAN NGNHTFKMAL NQFSDMSFAE IKHKYLWSEP QNCSATKS.. NYLRGTGP.. CYS1_DICDI NHKADTKFGV NKFADLSSDE FKNYYLNNKE AIFTDDLPVA DYLDDEFINS ALEU_HORVU LPETKDWRED G.IVSPVKNQ AHCGSCWTFS TTGALEAAYT QATGKNISLS CATH_HUMAN YPPSVDWRKK GNFVSPVKNQ GACGSCWTFS TTGALESAIA IATGKMLSLA CYS1_DICDI IPTAFDWRTR G.AVTPVKNQ GQCGSCWSFS TTGNVEGQHF ISQNKLVSLS ALEU_HORVU EQQLVDCAGG FNNF...... ..GCNGGLPS QAFEYIKYNG GIDTEESYPY CATH_HUMAN EQQLVDCAQD FNNY...... ..GCQGGLPS QAFEYILYNK GIMGEDTYPY CYS1_DICDI EQNLVDCDHE CMEYEGEEAC DEGCNGGLQP NAYNYIIKNG GIQTESSYPY ALEU_HORVU KGVNGVCHYK AENAAVQVLD SVNITLNAED ELKNAVGLVR PVSVAFQVID CATH_HUMAN QGKDGYCKFQ PGKAIGFVKD VANITIYDEE AMVEAVALYN PVSFAFEVTQ CYS1_DICDI TAETGTQCNF NSANIGAKIS NFTMIPKNET VMAGYIVSTG PLAIAADAVE ALEU_HORVU GFRQYKSGVY TSDHCGTTPD DVNHAVLAVG YGVEN..... GVPYWLIKNS CATH_HUMAN DFMMYRTGIY SSTSCHKTPD KVNHAVLAVG YGEKN..... GIPYWIVKNS CYS1_DICDI .WQFYIGGVF DIPCN...PN SLDHGILIVG YSAKNTIFRK NMPYWIVKNS ALEU_HORVU WGADWGDNGY FKMEMGKNMC AIATCASYPV VAA CATH_HUMAN WGPQWGMNGY FLIERGKNMC GLAACASYPI PLV CYS1_DICDI WGADWGEQGY IYLRRGKNTC GVSNFVSTSI I.. Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/data/cysprot.fa0000644000175000017500000000501613321415253023774 0ustar carandraugcarandraug>CYS1_DICDI MKVILLFVLAVFTVFVSSRGIPPEEQSQFLEFQDKFNKKYSHEEYLERFEIFKSNLGKIEELNLIAINHK ADTKFGVNKFADLSSDEFKNYYLNNKEAIFTDDLPVADYLDDEFINSIPTAFDWRTRGAVTPVKNQGQCG SCWSFSTTGNVEGQHFISQNKLVSLSEQNLVDCDHECMEYEGEEACDEGCNGGLQPNAYNYIIKNGGIQT ESSYPYTAETGTQCNFNSANIGAKISNFTMIPKNETVMAGYIVSTGPLAIAADAVEWQFYIGGVFDIPCN PNSLDHGILIVGYSAKNTIFRKNMPYWIVKNSWGADWGEQGYIYLRRGKNTCGVSNFVSTSII >ALEU_HORVU MAHARVLLLALAVLATAAVAVASSSSFADSNPIRPVTDRAASTLESAVLGALGRTRHALRFARFAVRYGK SYESAAEVRRRFRIFSESLEEVRSTNRKGLPYRLGINRFSDMSWEEFQATRLGAAQTCSATLAGNHLMRD AAALPETKDWREDGIVSPVKNQAHCGSCWTFSTTGALEAAYTQATGKNISLSEQQLVDCAGGFNNFGCNG GLPSQAFEYIKYNGGIDTEESYPYKGVNGVCHYKAENAAVQVLDSVNITLNAEDELKNAVGLVRPVSVAF QVIDGFRQYKSGVYTSDHCGTTPDDVNHAVLAVGYGVENGVPYWLIKNSWGADWGDNGYFKMEMGKNMCA IATCASYPVVAA >CATH_HUMAN MWATLPLLCAGAWLLGVPVCGAAELSVNSLEKFHFKSWMSKHRKTYSTEEYHHRLQTFASNWRKINAHNN GNHTFKMALNQFSDMSFAEIKHKYLWSEPQNCSATKSNYLRGTGPYPPSVDWRKKGNFVSPVKNQGACGS CWTFSTTGALESAIAIATGKMLSLAEQQLVDCAQDFNNYGCQGGLPSQAFEYILYNKGIMGEDTYPYQGK DGYCKFQPGKAIGFVKDVANITIYDEEAMVEAVALYNPVSFAFEVTQDFMMYRTGIYSSTSCHKTPDKVN HAVLAVGYGEKNGIPYWIVKNSWGPQWGMNGYFLIERGKNMCGLAACASYPIPLV >CATH_RAT MWTALPLLCAGAWLLSAGATAELTVNAIEKFHFTSWMKQHQKTYSSREYSHRLQVFANNWRKIQAHNQRN HTFKMGLNQFSDMSFAEIKHKYLWSEPQNCSATKSNYLRGTGPYPSSMDWRKKGNVVSPVKNQGACGSCW TFSTTGALESAVAIASGKMMTLAEQQLVDCAQNFNNHGCQGGLPSQAFEYILYNKGIMGEDSYPYIGKNG QCKFNPEKAVAFVKNVVNITLNDEAAMVEAVALYNPVSFAFEVTEDFMMYKSGVYSSNSCHKTPDKVNHA VLAVGYGEQNGLLYWIVKNSWGSNWGNNGYFLIERGKNMCGLAACASYPIPQV >CATL_HUMAN MNPTLILAAFCLGIASATLTFDHSLEAQWTKWKAMHNRLYGMNEEGWRRAVWEKNMKMIELHNQEYREGK HSFTMAMNAFGDMTSEEFRQVMNGFQNRKPRKGKVFQEPLFYEAPRSVDWREKGYVTPVKNQGQCGSCWA FSATGALEGQMFRKTGRLISLSEQNLVDCSGPQGNEGCNGGLMDYAFQYVQDNGGLDSEESYPYEATEES CKYNPKYSVANDTGFVDIPKQEKALMKAVATVGPISVAIDAGHESFLFYKEGIYFEPDCSSEDMDHGVLV VGYGFESTESDNNKYWLVKNSWGEEWGMGGYVKMAKDRRNHCGIASAASYPTV >CATL_RAT MTPLLLLAVLCLGTALATPKFDQTFNAQWHQWKSTHRRLYGTNEEEWRRAVWEKNMRMIQLHNGEYSNGK HGFTMEMNAFGDMTNEEFRQIVNGYRHQKHKKGRLFQEPLMLQIPKTVDWREKGCVTPVKNQGQCGSCWA FSASGCLEGQMFLKTGKLISLSEQNLVDCSHDQGNQGCNGGLMDFAFQYIKENGGLDSEESYPYEAKDGS CKYRAEYAVANDTGFVDIPQQEKALMKAVATVGPISVAMDASHPSLQFYSSGIYYEPNCSSKDLDHGVLV VGYGYEGTDSNKDKYWLVKNSWGKEWGMDGYIKIAKDRNNHCGLATAASYPIVN >PAPA_CARPA MAMIPSISKLLFVAICLFVYMGLSFGDFSIVGYSQNDLTSTERLIQLFESWMLKHNKIYKNIDEKIYRFE IFKDNLKYIDETNKKNNSYWLGLNVFADMSNDEFKEKYTGSIAGNYTTTELSYEEVLNDGDVNIPEYVDW RQKGAVTPVKNQGSCGSCWAFSAVVTIEGIIKIRTGNLNEYSEQELLDCDRRSYGCNGGYPWSALQLVAQ YGIHYRNTYPYEGVQRYCRSREKGPYAAKTDGVRQVQPYNEGALLYSIANQPVSVVLEAAGKDFQLYRGG IFVGPCGNKVDHAVAAVGYGPNYILIKNSWGTGWGENGYIRIKRGTGNSYGVCGLYTSSFYPVKN Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/data/cysprot1b.fa0000644000175000017500000000265313321415253024223 0ustar carandraugcarandraug>CATH_RAT MWTALPLLCAGAWLLSAGATAELTVNAIEKFHFTSWMKQHQKTYSSREYSHRLQVFANNWRKIQAHNQRN HTFKMGLNQFSDMSFAEIKHKYLWSEPQNCSATKSNYLRGTGPYPSSMDWRKKGNVVSPVKNQGACGSCW TFSTTGALESAVAIASGKMMTLAEQQLVDCAQNFNNHGCQGGLPSQAFEYILYNKGIMGEDSYPYIGKNG QCKFNPEKAVAFVKNVVNITLNDEAAMVEAVALYNPVSFAFEVTEDFMMYKSGVYSSNSCHKTPDKVNHA VLAVGYGEQNGLLYWIVKNSWGSNWGNNGYFLIERGKNMCGLAACASYPIPQV >CATL_HUMAN MNPTLILAAFCLGIASATLTFDHSLEAQWTKWKAMHNRLYGMNEEGWRRAVWEKNMKMIELHNQEYREGK HSFTMAMNAFGDMTSEEFRQVMNGFQNRKPRKGKVFQEPLFYEAPRSVDWREKGYVTPVKNQGQCGSCWA FSATGALEGQMFRKTGRLISLSEQNLVDCSGPQGNEGCNGGLMDYAFQYVQDNGGLDSEESYPYEATEES CKYNPKYSVANDTGFVDIPKQEKALMKAVATVGPISVAIDAGHESFLFYKEGIYFEPDCSSEDMDHGVLV VGYGFESTESDNNKYWLVKNSWGEEWGMGGYVKMAKDRRNHCGIASAASYPTV >CATL_RAT MTPLLLLAVLCLGTALATPKFDQTFNAQWHQWKSTHRRLYGTNEEEWRRAVWEKNMRMIQLHNGEYSNGK HGFTMEMNAFGDMTNEEFRQIVNGYRHQKHKKGRLFQEPLMLQIPKTVDWREKGCVTPVKNQGQCGSCWA FSASGCLEGQMFLKTGKLISLSEQNLVDCSHDQGNQGCNGGLMDFAFQYIKENGGLDSEESYPYEAKDGS CKYRAEYAVANDTGFVDIPQQEKALMKAVATVGPISVAMDASHPSLQFYSSGIYYEPNCSSKDLDHGVLV VGYGYEGTDSNKDKYWLVKNSWGKEWGMDGYIKIAKDRNNHCGLATAASYPIVN >PAPA_CARPA MAMIPSISKLLFVAICLFVYMGLSFGDFSIVGYSQNDLTSTERLIQLFESWMLKHNKIYKNIDEKIYRFE IFKDNLKYIDETNKKNNSYWLGLNVFADMSNDEFKEKYTGSIAGNYTTTELSYEEVLNDGDVNIPEYVDW RQKGAVTPVKNQGSCGSCWAFSAVVTIEGIIKIRTGNLNEYSEQELLDCDRRSYGCNGGYPWSALQLVAQ YGIHYRNTYPYEGVQRYCRSREKGPYAAKTDGVRQVQPYNEGALLYSIANQPVSVVLEAAGKDFQLYRGG IFVGPCGNKVDHAVAAVGYGPNYILIKNSWGTGWGENGYIRIKRGTGNSYGVCGLYTSSFYPVKN Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/Clustalw.t0000644000175000017500000001570513321415253023041 0ustar carandraugcarandraug#!/usr/bin/env perl use utf8; use strict; use warnings; use File::Spec; use File::Temp; use Test::More; use Bio::AlignIO; use Bio::SeqIO; use Bio::SimpleAlign; use Bio::Tools::Run::Alignment::Clustalw; sub test_input_file { return File::Spec->catfile('t', 'data', @_); } # setup input files etc my $inputfilename = test_input_file("cysprot.fa"); ok( -e $inputfilename, 'Found input file' ); my $profile1 = test_input_file('cysprot1a.msf'); ok( -e $profile1, 'Found profile1 file' ); my $profile2 = test_input_file('cysprot1b.msf'); ok( -e $profile2, 'Found profile2 file' ); my $outfh = File::Temp->new(); close($outfh); # Windows needs this my $outfile = $outfh->filename; # setup global objects that are to be used in more than one test # Also test they were initialised correctly my @params = ('ktuple' => 2, 'quiet' => 1); my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params); isa_ok( $factory, 'Bio::Tools::Run::Alignment::Clustalw'); $factory->outfile($outfile); # test default factory values is( $factory->program_dir, $ENV{'CLUSTALDIR'}, 'program_dir returned correct default' ); is( $factory->error_string, '', 'error_string returned correct default' ); is( $factory->outfile_name, 'mlc', 'outfile_name returned correct default' ); is( $factory->bootstrap, undef, 'bootstrap returned correct default' ); # Now onto the nitty gritty tests of the modules methods is( $factory->program_name(), 'clustalw', 'Correct exe default name' ); # test all factory methods dependent on finding the executable # TODO: isnt( $factory->program_dir, undef,'Found program in an ENV variable' ); my $ver = $factory->version || 0; # remove last bit $ver =~ s{^(\d+\.\d+)\.\d+}{$1}; ok ($ver >= 1.8, "check clustalw version $ver is less than 1.8") or diag ("clustalw2 isn't supported yet."); # test execution using filename my $aln = $factory->align($inputfilename); # now test the factory error methods etc is( $factory->error_string, '', 'No error occured' ); isnt( $factory->outfile_name, undef, 'outfile_name returned something' ); # now test its output isa_ok( $aln, 'Bio::SimpleAlign'); is( $aln->num_sequences, 7, 'Correct number of seqs returned' ); is $aln->score, 16047, 'Score'; # test execution using an array of Seq objects my $str = Bio::SeqIO->new('-file' => $inputfilename, '-format' => 'Fasta'); my @seq_array =(); while ( my $seq = $str->next_seq() ) { push (@seq_array, $seq) ; } $aln = $factory->align(\@seq_array); # now test its output isa_ok( $aln, 'Bio::SimpleAlign'); is( $aln->num_sequences, 7,'Correct number of seqs returned' ); # Use this alignment to fully test the methods { my $i=1; for my $seq ( $aln->each_seq ) { last if( $seq->display_id =~ /CATH_HUMAN/ ); $i++; } is( $aln->get_seq_by_pos($i)->get_nse, 'CATH_HUMAN/1-335', 'Got correct sequence by position' ); } # test doing a bootstrap tree my $tree = $factory->tree($aln); isa_ok( $tree, 'Bio::Tree::Tree' ); # now test doing profile alignments $aln = $factory->profile_align($profile1,$profile2); isa_ok( $aln, 'Bio::SimpleAlign' ); is( $aln->num_sequences, 7,'Correct number of seqs returned' ); # test the run method ($aln, $tree) = $factory->run(\@seq_array); isa_ok($aln, 'Bio::SimpleAlign'); isa_ok($tree, 'Bio::Tree::Tree'); ($aln, $tree) = $factory->run($inputfilename); isa_ok($aln, 'Bio::SimpleAlign'); isa_ok($tree, 'Bio::Tree::Tree'); # test the footprint method my @seqs = (Bio::Seq->new(-seq => 'AACCTGGCCAATTGGCCAATTGGGCGTACGTACGT', -id => 'rabbit'), Bio::Seq->new(-seq => 'ACCCTGGCCAATTGGCCAATTGTAAGTACGTACGT', -id => 'marmot'), Bio::Seq->new(-seq => 'AAGCTGGCCAATTGGCCAATTAGACTTACGTACGT', -id => 'chimp'), Bio::Seq->new(-seq => 'AACATGGCCAATTGGCCAATCGGACGTACGTCCGT', -id => 'human'), Bio::Seq->new(-seq => 'AACCGGGCCAATTGGCCAAGTGGACGTACGTATGT', -id => 'cebus'), Bio::Seq->new(-seq => 'AACCTAGCCAATTGGCCACTTGGACGTACGTACAT', -id => 'gorilla'), Bio::Seq->new(-seq => 'AACCTGCCCAATTGGCCGATTGGACGTACGTACGC', -id => 'orangutan'), Bio::Seq->new(-seq => 'AACCTGGGCAATTGGCAAATTGGACGTACGTACGT', -id => 'baboon'), Bio::Seq->new(-seq => 'AACCTGGCTAATTGGTCAATTGGACGTACGTACGT', -id => 'rhesus'), Bio::Seq->new(-seq => 'AACCTGGCCGATTGGCCAATTGGACGTACGTACGT', -id => 'squirrelmonkey')); my @results = $factory->footprint(\@seqs); @results = map { $_->consensus_string } @results; is_deeply(\@results, [qw(ATTGG TACGT)], 'footprinting worked'); SKIP: { # TODO: Is this needed, or should min version be bumped to > 1.82. Discuss with module author # keeping this to be compatible with older t/Clustalw.t skip("clustalw 1.81 & 1.82 contain a profile align bug", 2) unless $ver > 1.82; my $str1 = Bio::AlignIO->new(-file=> $profile1); my $aln1 = $str1->next_aln(); my $str2 = Bio::AlignIO->new(-file=> $profile2); my $aln2 = $str2->next_aln(); $aln = $factory->profile_align($aln1,$aln2); is($aln->get_seq_by_pos(2)->get_nse, 'CATH_HUMAN/1-335', 'Got correct sequence by position'); $str2 = Bio::SeqIO->new(-file=> test_input_file("cysprot1b.fa")); my $seq = $str2->next_seq(); $aln = $factory->profile_align($aln1,$seq); is($aln->get_seq_by_pos(2)->get_nse, 'CATH_HUMAN/1-335', 'Got correct sequence by position'); } # TODO: Test factory methods that change parameters #TODO: { # local $TODO = "program_name setting not finished"; # $factory->program_name('something_silly'); # is( $factory->program_name, 'something_silly', 'Set and got program_name correctly' ); #} $factory->ktuple(4); is( $factory->ktuple, 4, 'Set and got ktuple correctly' ); $factory->topdiags(10); is( $factory->topdiags, 10, 'Set and got topdiags correctly' ); $factory->window(10); is( $factory->window, 10, 'Set and got window correctly' ); $factory->pairgap(10); is( $factory->pairgap, 10, 'Set and got pairgap correctly' ); $factory->fixedgap(20); is( $factory->fixedgap, 20, 'Set and got fixedgap correctly' ); $factory->floatgap(16); is( $factory->floatgap, 16, 'Set and got floatgap correctly' ); $factory->matrix('PAM250'); is( $factory->matrix, 'PAM250', 'Set and got matrix correctly' ); $factory->type('protein'); is( $factory->type, 'protein', 'Set and got type correctly' ); $factory->output('PIR'); is( $factory->output, 'PIR', 'Set and got output correctly' ); $factory->outfile('odd_name.out'); is( $factory->outfile, 'odd_name.out', 'Set and got outfile correctly' ); $factory->quiet(0); is( $factory->quiet, 0, 'set and got quiet correctly' ); $factory->bootstrap(100); is( $factory->bootstrap, 100, 'set and got bootstrap correctly' ); done_testing(); Bio-Tools-Run-Alignment-Clustalw-1.7.4/t/author-eol.t0000644000175000017500000000110313321415253023305 0ustar carandraugcarandraug BEGIN { unless ($ENV{AUTHOR_TESTING}) { print qq{1..0 # SKIP these tests are for testing by the author\n}; exit } } use strict; use warnings; # this test was generated with Dist::Zilla::Plugin::Test::EOL 0.19 use Test::More 0.88; use Test::EOL; my @files = ( 'lib/Bio/Tools/Run/Alignment/Clustalw.pm', 't/00-compile.t', 't/Clustalw.t', 't/author-eol.t', 't/author-mojibake.t', 't/author-no-tabs.t', 't/author-pod-coverage.t', 't/author-pod-syntax.t' ); eol_unix_ok($_, { trailing_whitespace => 1 }) foreach @files; done_testing; Bio-Tools-Run-Alignment-Clustalw-1.7.4/META.json0000644000175000017500000004410113321415253022224 0ustar carandraugcarandraug{ "abstract" : "Object for the calculation of a multiple sequence alignment from a set of unaligned sequences or alignments using the Clustalw program", "author" : [ "Peter Schattner " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : 2 }, "name" : "Bio-Tools-Run-Alignment-Clustalw", "prereqs" : { "configure" : { "requires" : { "Devel::CheckBin" : "0", "ExtUtils::MakeMaker" : "0" } }, "develop" : { "requires" : { "Pod::Coverage::TrustPod" : "0", "Test::EOL" : "0", "Test::Mojibake" : "0", "Test::More" : "0.88", "Test::NoTabs" : "0", "Test::Pod" : "1.41", "Test::Pod::Coverage" : "1.08" } }, "runtime" : { "requires" : { "Bio::AlignIO" : "0", "Bio::Root::IO" : "0", "Bio::Root::Root" : "0", "Bio::Seq" : "0", "Bio::SeqIO" : "0", "Bio::SimpleAlign" : "0", "Bio::Tools::Run::WrapperBase" : "0", "Bio::TreeIO" : "0", "base" : "0", "strict" : "0", "utf8" : "0", "warnings" : "0" } }, "test" : { "requires" : { "File::Spec" : "0", "File::Temp" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", "Test::More" : "0", "perl" : "5.006" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "mailto" : "bioperl-l@bioperl.org", "web" : "https://github.com/bioperl/bio-tools-run-alignment-clustalw/issues" }, "homepage" : "https://metacpan.org/release/Bio-Tools-Run-Alignment-Clustalw", "repository" : { "type" : "git", "url" : "git://github.com/bioperl/bio-tools-run-alignment-clustalw.git", "web" : "https://github.com/bioperl/bio-tools-run-alignment-clustalw" } }, "version" : "1.7.4", "x_Dist_Zilla" : { "perl" : { "version" : "5.026002" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [], "exclude_match" : [], "follow_symlinks" : 0, "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." } }, "name" : "@BioPerl/@Filter/GatherDir", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@BioPerl/@Filter/PruneCruft", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@BioPerl/@Filter/ManifestSkip", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@BioPerl/@Filter/MetaYAML", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@BioPerl/@Filter/License", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ExtraTests", "name" : "@BioPerl/@Filter/ExtraTests", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@BioPerl/@Filter/ExecDir", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@BioPerl/@Filter/ShareDir", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 1 } }, "name" : "@BioPerl/@Filter/MakeMaker", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@BioPerl/@Filter/Manifest", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@BioPerl/@Filter/TestRelease", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@BioPerl/@Filter/ConfirmRelease", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@BioPerl/@Filter/UploadToCPAN", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@BioPerl/MetaConfig", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@BioPerl/MetaJSON", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@BioPerl/PkgVersion", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@BioPerl/PodSyntaxTests", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::Test::NoTabs", "config" : { "Dist::Zilla::Plugin::Test::NoTabs" : { "filename" : "xt/author/no-tabs.t", "finder" : [ ":InstallModules", ":ExecFiles", ":TestFiles" ] } }, "name" : "@BioPerl/Test::NoTabs", "version" : "0.15" }, { "class" : "Dist::Zilla::Plugin::Test::Compile", "config" : { "Dist::Zilla::Plugin::Test::Compile" : { "bail_out_on_fail" : 0, "fail_on_warning" : "author", "fake_home" : 0, "filename" : "t/00-compile.t", "module_finder" : [ ":InstallModules" ], "needs_display" : 0, "phase" : "test", "script_finder" : [ ":PerlExecFiles" ], "skips" : [], "switch" : [] } }, "name" : "@BioPerl/Test::Compile", "version" : "2.058" }, { "class" : "Dist::Zilla::Plugin::PodCoverageTests", "name" : "@BioPerl/PodCoverageTests", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::MojibakeTests", "name" : "@BioPerl/MojibakeTests", "version" : "0.8" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@BioPerl/AutoPrereqs", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::AutoMetaResources", "name" : "@BioPerl/AutoMetaResources", "version" : "1.21" }, { "class" : "Dist::Zilla::Plugin::MetaResources", "name" : "@BioPerl/MetaResources", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::Test::EOL", "config" : { "Dist::Zilla::Plugin::Test::EOL" : { "filename" : "xt/author/eol.t", "finder" : [ ":ExecFiles", ":InstallModules", ":TestFiles" ], "trailing_whitespace" : 1 } }, "name" : "@BioPerl/Test::EOL", "version" : "0.19" }, { "class" : "Dist::Zilla::Plugin::Encoding", "name" : "@BioPerl/Encoding", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "config_plugins" : [ "@BioPerl" ], "finder" : [ ":InstallModules", ":ExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@CorePrep/EnsurePod5", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@CorePrep/H1Nester", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Name", "name" : "@BioPerl/Name", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Version", "name" : "@BioPerl/Version", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@BioPerl/prelude", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "SYNOPSIS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "DESCRIPTION", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "OVERVIEW", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "ATTRIBUTES", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "METHODS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "FUNCTIONS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "INTERNAL METHODS", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "@BioPerl/Leftovers", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@BioPerl/postlude", "version" : "4.015" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "FEEDBACK", "version" : "1.06" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "Mailing lists", "version" : "1.06" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "Support", "version" : "1.06" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "Reporting bugs", "version" : "1.06" }, { "class" : "Pod::Weaver::Section::Legal::Complicated", "name" : "@BioPerl/Legal", "version" : "1.22" }, { "class" : "Pod::Weaver::Section::Contributors", "name" : "@BioPerl/Contributors", "version" : "0.009" }, { "class" : "Pod::Weaver::Plugin::SingleEncoding", "name" : "SingleEncoding", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@BioPerl/List", "version" : "4.015" }, { "class" : "Pod::Weaver::Plugin::EnsureUniqueSections", "name" : "EnsureUniqueSections", "version" : "0.163250" } ] } }, "name" : "@BioPerl/PodWeaver", "version" : "4.008" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@BioPerl/NextRelease", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.18.0", "repo_root" : "." } }, "name" : "@BioPerl/Git::Check", "version" : "2.043" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "v%v%n%n%c" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.18.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@BioPerl/Git::Commit", "version" : "2.043" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "Bio-Tools-Run-Alignment-Clustalw-v1.7.4", "tag_format" : "%N-v%v", "tag_message" : "%N-v%v" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.18.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@BioPerl/Git::Tag", "version" : "2.043" }, { "class" : "Dist::Zilla::Plugin::CheckBin", "config" : { "Dist::Zilla::Plugin::CheckBin" : { "command" : [ "clustalw" ] } }, "name" : "CheckBin", "version" : "0.008" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.012" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.012" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.012" } }, "x_generated_by_perl" : "v5.26.2", "x_serialization_backend" : "Cpanel::JSON::XS version 4.02" } Bio-Tools-Run-Alignment-Clustalw-1.7.4/META.yml0000644000175000017500000002665413321415253022071 0ustar carandraugcarandraug--- abstract: 'Object for the calculation of a multiple sequence alignment from a set of unaligned sequences or alignments using the Clustalw program' author: - 'Peter Schattner ' build_requires: File::Spec: '0' File::Temp: '0' IO::Handle: '0' IPC::Open3: '0' Test::More: '0' perl: '5.006' configure_requires: Devel::CheckBin: '0' ExtUtils::MakeMaker: '0' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Bio-Tools-Run-Alignment-Clustalw requires: Bio::AlignIO: '0' Bio::Root::IO: '0' Bio::Root::Root: '0' Bio::Seq: '0' Bio::SeqIO: '0' Bio::SimpleAlign: '0' Bio::Tools::Run::WrapperBase: '0' Bio::TreeIO: '0' base: '0' strict: '0' utf8: '0' warnings: '0' resources: bugtracker: https://github.com/bioperl/bio-tools-run-alignment-clustalw/issues homepage: https://metacpan.org/release/Bio-Tools-Run-Alignment-Clustalw repository: git://github.com/bioperl/bio-tools-run-alignment-clustalw.git version: 1.7.4 x_Dist_Zilla: perl: version: '5.026002' plugins: - class: Dist::Zilla::Plugin::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: [] exclude_match: [] follow_symlinks: 0 include_dotfiles: 0 prefix: '' prune_directory: [] root: . name: '@BioPerl/@Filter/GatherDir' version: '6.012' - class: Dist::Zilla::Plugin::PruneCruft name: '@BioPerl/@Filter/PruneCruft' version: '6.012' - class: Dist::Zilla::Plugin::ManifestSkip name: '@BioPerl/@Filter/ManifestSkip' version: '6.012' - class: Dist::Zilla::Plugin::MetaYAML name: '@BioPerl/@Filter/MetaYAML' version: '6.012' - class: Dist::Zilla::Plugin::License name: '@BioPerl/@Filter/License' version: '6.012' - class: Dist::Zilla::Plugin::ExtraTests name: '@BioPerl/@Filter/ExtraTests' version: '6.012' - class: Dist::Zilla::Plugin::ExecDir name: '@BioPerl/@Filter/ExecDir' version: '6.012' - class: Dist::Zilla::Plugin::ShareDir name: '@BioPerl/@Filter/ShareDir' version: '6.012' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 1 name: '@BioPerl/@Filter/MakeMaker' version: '6.012' - class: Dist::Zilla::Plugin::Manifest name: '@BioPerl/@Filter/Manifest' version: '6.012' - class: Dist::Zilla::Plugin::TestRelease name: '@BioPerl/@Filter/TestRelease' version: '6.012' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@BioPerl/@Filter/ConfirmRelease' version: '6.012' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@BioPerl/@Filter/UploadToCPAN' version: '6.012' - class: Dist::Zilla::Plugin::MetaConfig name: '@BioPerl/MetaConfig' version: '6.012' - class: Dist::Zilla::Plugin::MetaJSON name: '@BioPerl/MetaJSON' version: '6.012' - class: Dist::Zilla::Plugin::PkgVersion name: '@BioPerl/PkgVersion' version: '6.012' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@BioPerl/PodSyntaxTests' version: '6.012' - class: Dist::Zilla::Plugin::Test::NoTabs config: Dist::Zilla::Plugin::Test::NoTabs: filename: xt/author/no-tabs.t finder: - ':InstallModules' - ':ExecFiles' - ':TestFiles' name: '@BioPerl/Test::NoTabs' version: '0.15' - class: Dist::Zilla::Plugin::Test::Compile config: Dist::Zilla::Plugin::Test::Compile: bail_out_on_fail: '0' fail_on_warning: author fake_home: 0 filename: t/00-compile.t module_finder: - ':InstallModules' needs_display: 0 phase: test script_finder: - ':PerlExecFiles' skips: [] switch: [] name: '@BioPerl/Test::Compile' version: '2.058' - class: Dist::Zilla::Plugin::PodCoverageTests name: '@BioPerl/PodCoverageTests' version: '6.012' - class: Dist::Zilla::Plugin::MojibakeTests name: '@BioPerl/MojibakeTests' version: '0.8' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@BioPerl/AutoPrereqs' version: '6.012' - class: Dist::Zilla::Plugin::AutoMetaResources name: '@BioPerl/AutoMetaResources' version: '1.21' - class: Dist::Zilla::Plugin::MetaResources name: '@BioPerl/MetaResources' version: '6.012' - class: Dist::Zilla::Plugin::Test::EOL config: Dist::Zilla::Plugin::Test::EOL: filename: xt/author/eol.t finder: - ':ExecFiles' - ':InstallModules' - ':TestFiles' trailing_whitespace: 1 name: '@BioPerl/Test::EOL' version: '0.19' - class: Dist::Zilla::Plugin::Encoding name: '@BioPerl/Encoding' version: '6.012' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: config_plugins: - '@BioPerl' finder: - ':InstallModules' - ':ExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@CorePrep/EnsurePod5' version: '4.015' - class: Pod::Weaver::Plugin::H1Nester name: '@CorePrep/H1Nester' version: '4.015' - class: Pod::Weaver::Section::Name name: '@BioPerl/Name' version: '4.015' - class: Pod::Weaver::Section::Version name: '@BioPerl/Version' version: '4.015' - class: Pod::Weaver::Section::Region name: '@BioPerl/prelude' version: '4.015' - class: Pod::Weaver::Section::Generic name: SYNOPSIS version: '4.015' - class: Pod::Weaver::Section::Generic name: DESCRIPTION version: '4.015' - class: Pod::Weaver::Section::Generic name: OVERVIEW version: '4.015' - class: Pod::Weaver::Section::Collect name: ATTRIBUTES version: '4.015' - class: Pod::Weaver::Section::Collect name: METHODS version: '4.015' - class: Pod::Weaver::Section::Collect name: FUNCTIONS version: '4.015' - class: Pod::Weaver::Section::Collect name: 'INTERNAL METHODS' version: '4.015' - class: Pod::Weaver::Section::Leftovers name: '@BioPerl/Leftovers' version: '4.015' - class: Pod::Weaver::Section::Region name: '@BioPerl/postlude' version: '4.015' - class: Pod::Weaver::Section::GenerateSection name: FEEDBACK version: '1.06' - class: Pod::Weaver::Section::GenerateSection name: 'Mailing lists' version: '1.06' - class: Pod::Weaver::Section::GenerateSection name: Support version: '1.06' - class: Pod::Weaver::Section::GenerateSection name: 'Reporting bugs' version: '1.06' - class: Pod::Weaver::Section::Legal::Complicated name: '@BioPerl/Legal' version: '1.22' - class: Pod::Weaver::Section::Contributors name: '@BioPerl/Contributors' version: '0.009' - class: Pod::Weaver::Plugin::SingleEncoding name: SingleEncoding version: '4.015' - class: Pod::Weaver::Plugin::Transformer name: '@BioPerl/List' version: '4.015' - class: Pod::Weaver::Plugin::EnsureUniqueSections name: EnsureUniqueSections version: '0.163250' name: '@BioPerl/PodWeaver' version: '4.008' - class: Dist::Zilla::Plugin::NextRelease name: '@BioPerl/NextRelease' version: '6.012' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.18.0 repo_root: . name: '@BioPerl/Git::Check' version: '2.043' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: v%v%n%n%c Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.18.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@BioPerl/Git::Commit' version: '2.043' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: Bio-Tools-Run-Alignment-Clustalw-v1.7.4 tag_format: '%N-v%v' tag_message: '%N-v%v' Dist::Zilla::Role::Git::Repo: git_version: 2.18.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@BioPerl/Git::Tag' version: '2.043' - class: Dist::Zilla::Plugin::CheckBin config: Dist::Zilla::Plugin::CheckBin: command: - clustalw name: CheckBin version: '0.008' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.012' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.012' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: '0' version: '6.012' x_generated_by_perl: v5.26.2 x_serialization_backend: 'YAML::Tiny version 1.73' Bio-Tools-Run-Alignment-Clustalw-1.7.4/MANIFEST0000644000175000017500000000061213321415253021733 0ustar carandraugcarandraug# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.012. Changes LICENSE MANIFEST META.json META.yml Makefile.PL dist.ini lib/Bio/Tools/Run/Alignment/Clustalw.pm t/00-compile.t t/Clustalw.t t/author-eol.t t/author-mojibake.t t/author-no-tabs.t t/author-pod-coverage.t t/author-pod-syntax.t t/data/cysprot.fa t/data/cysprot1a.msf t/data/cysprot1b.fa t/data/cysprot1b.msf Bio-Tools-Run-Alignment-Clustalw-1.7.4/lib/0000755000175000017500000000000013321415253021351 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/lib/Bio/0000755000175000017500000000000013321415253022062 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/lib/Bio/Tools/0000755000175000017500000000000013321415253023162 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/lib/Bio/Tools/Run/0000755000175000017500000000000013321415253023726 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/lib/Bio/Tools/Run/Alignment/0000755000175000017500000000000013321415253025644 5ustar carandraugcarandraugBio-Tools-Run-Alignment-Clustalw-1.7.4/lib/Bio/Tools/Run/Alignment/Clustalw.pm0000644000175000017500000012025513321415253030005 0ustar carandraugcarandraugpackage Bio::Tools::Run::Alignment::Clustalw; $Bio::Tools::Run::Alignment::Clustalw::VERSION = '1.7.4'; use utf8; use strict; use warnings; use Bio::Seq; use Bio::SeqIO; use Bio::SimpleAlign; use Bio::AlignIO; use Bio::TreeIO; use Bio::Root::IO; use base qw(Bio::Root::Root Bio::Tools::Run::WrapperBase); # ABSTRACT: Object for the calculation of a multiple sequence alignment from a set of unaligned sequences or alignments using the Clustalw program # AUTHOR: Peter Schattner # OWNER: Peter Schattner # LICENSE: Perl_5 # AUTHOR: Jason Stajich # AUTHOR: Sendu Bala our @CLUSTALW_PARAMS = qw(output ktuple topdiags window pairgap fixedgap floatgap matrix type transit dnamatrix outfile gapopen gapext maxdiv gapdist hgapresidues pwmatrix pwdnamatrix pwgapopen pwgapext score transweight seed helixgap outorder strandgap loopgap terminalgap helixendin helixendout strandendin strandendout program reps outputtree seed bootlabels bootstrap); our @CLUSTALW_SWITCHES = qw(help check options negative noweights endgaps nopgap nohgap novgap kimura tossgaps kimura tossgaps njtree); our @OTHER_SWITCHES = qw(quiet); our $PROGRAM_NAME = 'clustalw'; our $PROGRAM_DIR = $ENV{'CLUSTALDIR'} || $ENV{'CLUSTALWDIR'}; sub program_name { return $PROGRAM_NAME; } sub program_dir { return $PROGRAM_DIR; } sub new { my ($class,@args) = @_; my $self = $class->SUPER::new(@args); $self->_set_from_args(\@args, -methods => [@CLUSTALW_PARAMS, @CLUSTALW_SWITCHES, @OTHER_SWITCHES], -create => 1); return $self; } sub version { my ($self) = @_; return undef unless $self->executable; my $prog = $self->executable; my $string = `$prog -- 2>&1` ; $string =~ /\(?([\d.]+)\)?/xms; return $1 || undef; } sub run { my ($self,$input) = @_; my ($temp,$infilename, $seq); my ($attr, $value, $switch); $self->io->_io_cleanup(); # Create input file pointer $infilename = $self->_setinput($input); $self->throw("Bad input data (sequences need an id) or less than 2 sequences in $input!") unless $infilename; # Create parameter string to pass to clustalw program my $param_string = $self->_setparams(); # run clustalw return $self->_run('both', $infilename, $param_string); } sub align { my ($self,$input) = @_; $self->io->_io_cleanup(); # Create input file pointer my $infilename = $self->_setinput($input); $self->throw("Bad input data (sequences need an id ) or less than 2 sequences in $input !") unless $infilename; # Create parameter string to pass to clustalw program my $param_string = $self->_setparams(); # run clustalw my $aln = $self->_run('align', $infilename, $param_string); } sub profile_align { my ($self,$input1,$input2) = @_; $self->io->_io_cleanup(); # Create input file pointer my $infilename1 = $self->_setinput($input1, 1); my $infilename2 = $self->_setinput($input2, 2); if (!$infilename1 || !$infilename2) {$self->throw("Bad input data: $input1 or $input2 !");} unless ( -e $infilename1 and -e $infilename2) {$self->throw("Bad input file: $input1 or $input2 !");} # Create parameter string to pass to clustalw program my $param_string = $self->_setparams(); # run clustalw my $aln = $self->_run('profile-aln', $infilename1, $infilename2, $param_string); } sub add_sequences { my ($self,$input1,$input2) = @_; my ($temp,$infilename1,$infilename2,$input,$seq); $self->io->_io_cleanup(); # Create input file pointer $infilename1 = $self->_setinput($input1,1); $infilename2 = $self->_setinput($input2,2); if (!$infilename1 || !$infilename2) {$self->throw("Bad input data: $input1 or $input2 !");} unless ( -e $infilename1 and -e $infilename2) {$self->throw("Bad input file: $input1 or $input2 !");} # Create parameter string to pass to clustalw program my $param_string = $self->_setparams(); # run clustalw my $aln = $self->_run('add_sequences', $infilename1, $infilename2, $param_string); } sub tree { my ($self,$input) = @_; $self->io->_io_cleanup(); # Create input file pointer my $infilename = $self->_setinput($input); if (!$infilename) {$self->throw("Bad input data (sequences need an id ) or less than 2 sequences in $input !");} # Create parameter string to pass to clustalw program my $param_string = $self->_setparams(); # run clustalw my $tree = $self->_run('tree', $infilename, $param_string); } sub footprint { my ($self, $in, $slice_size, $deviate) = @_; my ($simplealn, $tree) = $self->run($in); # total tree length? my $total_length = $tree->total_branch_length; # tree length along sliding window, picking regions that significantly # deviate from the average tree length $slice_size ||= 5; $deviate ||= 33; my $threshold = $total_length - (($total_length / 100) * $deviate); my $length = $simplealn->length; my $below = 0; my $found_minima = 0; my $minima = [$threshold, '']; my @results; for my $i (1..($length - $slice_size + 1)) { my $slice = $simplealn->slice($i, ($i + $slice_size - 1), 1); my $tree = $self->tree($slice); $self->throw("No tree returned") unless defined $tree; my $slice_length = $tree->total_branch_length; $slice_length <= $threshold ? ($below = 1) : ($below = 0); if ($below) { unless ($found_minima) { if ($slice_length < ${$minima}[0]) { $minima = [$slice_length, $slice]; } else { push(@results, ${$minima}[1]); $minima = [$threshold, '']; $found_minima = 1; } } } else { $found_minima = 0; } } return @results; } sub _run { my ($self, $command, $infile1, $infile2, $param_string) = @_; my ($instring, $tree); my $quiet = $self->quiet() || $self->verbose() < 0; if ($command =~ /align|both/) { if ($^O eq 'dec_osf') { $instring = $infile1; $command = ''; } else { $instring = " -infile=". '"' . $infile1 . '"'; } $param_string .= " $infile2"; } if ($command =~ /profile/) { $instring = "-profile1=$infile1 -profile2=$infile2"; chmod 0777, $infile1, $infile2; $command = '-profile'; } if ($command =~ /add_sequences/) { $instring = "-profile1=$infile1 -profile2=$infile2"; chmod 0777, $infile1,$infile2; $command = '-sequences'; } if ($command =~ /tree/) { if( $^O eq 'dec_osf' ) { $instring = $infile1; $command = ''; } else { $instring = " -infile=". '"' . $infile1 . '"'; } $param_string .= " $infile2"; $self->debug( "Program ".$self->executable."\n"); my $commandstring = $self->executable."$instring"."$param_string"; my $null = ($^O =~ m/mswin/i) ? 'NUL' : '/dev/null'; $commandstring .= " 1>$null" if $quiet; $self->debug( "clustal command = $commandstring"); my $status = system($commandstring); unless( $status == 0 ) { $self->warn( "Clustalw call ($commandstring) crashed: $? \n"); return undef; } return $self->_get_tree($infile1, $param_string); } my $output = $self->output || 'gcg'; $self->debug( "Program ".$self->executable."\n"); my $commandstring = $self->executable." $command"." $instring"." -output=$output". " $param_string"; $self->debug( "clustal command = $commandstring\n"); open(my $pipe, "$commandstring |") || $self->throw("ClustalW call ($commandstring) failed to start: $? | $!"); my $score; while (<$pipe>) { print unless $quiet; # Kevin Brown suggested the following regex, though it matches multiple # times: we pick up the last one $score = $1 if ($_ =~ /Score:(\d+)/); # This one is printed at the end and seems the most appropriate to pick # up; we include the above regex incase 'Alignment Score' isn't given $score = $1 if ($_ =~ /Alignment Score (-?\d+)/); } close($pipe) || ($self->throw("ClustalW call ($commandstring) crashed: $?")); my $outfile = $self->outfile(); # retrieve alignment (Note: MSF format for AlignIO = GCG format of clustalw) my $format = $output =~ /gcg/i ? 'msf' : $output; if ($format =~ /clustal/i) { $format = 'clustalw'; # force clustalw incase 'clustal' is requested } my $in = Bio::AlignIO->new(-file => $outfile, -format=> $format); my $aln = $in->next_aln(); $in->close; $aln->score($score); if ($command eq 'both') { $tree = $self->_get_tree($infile1, $param_string); } # Clean up the temporary files created along the way... # Replace file suffix with dnd to find name of dendrogram file(s) to delete unless ( $self->save_tempfiles ) { foreach my $f ($infile1, $infile2) { $f =~ s/\.[^\.]*$// ; unlink $f .'.dnd' if ($f ne ''); } } if ($command eq 'both') { return ($aln, $tree); } return $aln; } sub _get_tree { my ($self, $treefile, $param_string) = @_; $treefile =~ s/\.[^\.]*$// ; if ($param_string =~ /-bootstrap/) { $treefile .= '.phb'; } elsif ($param_string =~ /-tree/) { $treefile .= '.ph'; } else { $treefile .= '.dnd'; } my $in = Bio::TreeIO->new('-file' => $treefile, '-format'=> 'newick'); my $tree = $in->next_tree; unless ( $self->save_tempfiles ) { foreach my $f ( $treefile ) { unlink $f if( $f ne '' ); } } return $tree; } sub _setinput { my ($self, $input, $suffix) = @_; my ($infilename, $seq, $temp, $tfh); # suffix is used to distinguish alignment files If $input is not a # reference it better be the name of a file with the sequence/ # alignment data... unless (ref $input) { # check that file exists or throw $infilename = $input; return unless -e $input; return $infilename; } # $input may be an array of BioSeq objects... if (ref($input) eq "ARRAY") { # Open temporary file for both reading & writing of BioSeq array ($tfh,$infilename) = $self->io->tempfile(-dir=>$self->tempdir); $temp = Bio::SeqIO->new('-fh'=>$tfh, '-format' =>'Fasta'); # Need at least 2 seqs for alignment return unless (scalar(@$input) > 1); foreach $seq (@$input) { return unless (defined $seq && $seq->isa("Bio::PrimarySeqI") and $seq->id()); $temp->write_seq($seq); } $temp->close(); close($tfh); undef $tfh; return $infilename; } # $input may be a SimpleAlign object. elsif (ref($input) eq "Bio::SimpleAlign") { # Open temporary file for both reading & writing of SimpleAlign object ($tfh,$infilename) = $self->io->tempfile(-dir=>$self->tempdir); $temp = Bio::AlignIO->new('-fh'=> $tfh, '-format' => 'fasta'); $temp->write_aln($input); close($tfh); undef $tfh; return $infilename; } # or $input may be a single BioSeq object (to be added to a previous alignment) elsif (ref($input) && $input->isa("Bio::PrimarySeqI") && $suffix==2) { # Open temporary file for both reading & writing of BioSeq object ($tfh,$infilename) = $self->io->tempfile(); $temp = Bio::SeqIO->new(-fh=> $tfh, '-format' =>'Fasta'); $temp->write_seq($input); close($tfh); undef $tfh; return $infilename; } return; } sub _setparams { my $self = shift; my $param_string = $self->SUPER::_setparams(-params => \@CLUSTALW_PARAMS, -switches => \@CLUSTALW_SWITCHES, -dash => 1, -lc => 1, -join => '='); # Set default output file if no explicit output file selected unless ($param_string =~ /outfile/) { my ($tfh, $outfile) = $self->io->tempfile(-dir => $self->tempdir()); close($tfh); undef $tfh; $self->outfile($outfile); $param_string .= " -outfile=\"$outfile\"" ; } $param_string .= ' 2>&1'; return $param_string; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Bio::Tools::Run::Alignment::Clustalw - Object for the calculation of a multiple sequence alignment from a set of unaligned sequences or alignments using the Clustalw program =head1 VERSION version 1.7.4 =head1 SYNOPSIS # Build a clustalw alignment factory @params = ('ktuple' => 2, 'matrix' => 'BLOSUM'); $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params); # Pass the factory a list of sequences to be aligned. $inputfilename = 't/data/cysprot.fa'; $aln = $factory->align($inputfilename); # $aln is a SimpleAlign object. # or $seq_array_ref = \@seq_array; # where @seq_array is an array of Bio::Seq objects $aln = $factory->align($seq_array_ref); # Or one can pass the factory a pair of (sub)alignments #to be aligned against each other, e.g.: $aln = $factory->profile_align($aln1,$aln2); # where $aln1 and $aln2 are Bio::SimpleAlign objects. # Or one can pass the factory an alignment and one or more unaligned # sequences to be added to the alignment. For example: $aln = $factory->profile_align($aln1,$seq); # $seq is a Bio::Seq object. # Get a tree of the sequences $tree = $factory->tree(\@seq_array); # Get both an alignment and a tree ($aln, $tree) = $factory->run(\@seq_array); # Do a footprinting analysis on the supplied sequences, getting back the # most conserved sub-alignments my @results = $factory->footprint(\@seq_array); foreach my $result (@results) { print $result->consensus_string, "\n"; } # There are various additional options and input formats available. # See the DESCRIPTION section that follows for additional details. =head1 DESCRIPTION Note: this DESCRIPTION only documents the Bioperl interface to Clustalw. Clustalw, itself, is a large & complex program - for more information regarding clustalw, please see the clustalw documentation which accompanies the clustalw distribution. Clustalw is available from (among others) ftp://ftp.ebi.ac.uk/pub/software/. Clustalw.pm has only been tested using version 1.8 of clustalw. Compatibility with earlier versions of the clustalw program is currently unknown. Before running Clustalw successfully it will be necessary: to install clustalw on your system, and to ensure that users have execute privileges for the clustalw program. =head2 Helping the module find your executable You will need to enable Clustalw to find the clustalw program. This can be done in (at least) three ways: 1. Make sure the clustalw executable is in your path so that which clustalw returns a clustalw executable on your system. 2. Define an environmental variable CLUSTALDIR which is a directory which contains the 'clustalw' application: In bash: export CLUSTALDIR=/home/username/clustalw1.8 In csh/tcsh: setenv CLUSTALDIR /home/username/clustalw1.8 3. Include a definition of an environmental variable CLUSTALDIR in every script that will use this Clustalw wrapper module, e.g.: BEGIN { $ENV{CLUSTALDIR} = '/home/username/clustalw1.8/' } use Bio::Tools::Run::Alignment::Clustalw; If you are running an application on a webserver make sure the webserver environment has the proper PATH set or use the options 2 or 3 to set the variables. =head2 How it works Bio::Tools::Run::Alignment::Clustalw is an object for performing a multiple sequence alignment from a set of unaligned sequences and/or sub-alignments by means of the clustalw program. Initially, a clustalw "factory object" is created. Optionally, the factory may be passed most of the parameters or switches of the clustalw program, e.g.: @params = ('ktuple' => 2, 'matrix' => 'BLOSUM'); $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params); Any parameters not explicitly set will remain as the defaults of the clustalw program. Additional parameters and switches (not available in clustalw) may also be set. Currently, the only such parameter is "quiet", which when set to a non-zero value, suppresses clustalw terminal output. Not all clustalw parameters are supported at this stage. By default, Clustalw output is returned solely in a the form of a Bio::SimpleAlign object which can then be printed and/or saved in multiple formats using the AlignIO.pm module. Optionally the raw clustalw output file can be saved if the calling script specifies an output file (with the clustalw parameter OUTFILE). Currently only the GCG-MSF output file formats is supported. Not all parameters and features have been implemented yet in Perl format. Alignment parameters can be changed and/or examined at any time after the factory has been created. The program checks that any parameter/switch being set/read is valid. However, currently no additional checks are included to check that parameters are of the proper type (eg string or numeric) or that their values are within the proper range. As an example, to change the value of the clustalw parameter ktuple to 3 and subsequently to check its value one would write: $ktuple = 3; $factory->ktuple($ktuple); $get_ktuple = $factory->ktuple(); Once the factory has been created and the appropriate parameters set, one can call the method align() to align a set of unaligned sequences, or call profile_align() to add one or more sequences or a second alignment to an initial alignment. Input to align() may consist of a set of unaligned sequences in the form of the name of file containing the sequences. For example, $inputfilename = 't/data/cysprot.fa'; $aln = $factory-Ealign($inputfilename); Alternately one can create an array of Bio::Seq objects somehow $str = Bio::SeqIO->new(-file=> 't/data/cysprot.fa', -format => 'Fasta'); @seq_array =(); while ( my $seq = $str->next_seq() ) {push (@seq_array, $seq) ;} and pass the factory a reference to that array $seq_array_ref = \@seq_array; $aln = $factory->align($seq_array_ref); In either case, align() returns a reference to a SimpleAlign object which can then used (see L). Once an initial alignment exists, one can pass the factory additional sequence(s) to be added (ie aligned) to the original alignment. The alignment can be passed as either an alignment file or a Bio:SimpleAlign object. The unaligned sequence(s) can be passed as a filename or as an array of BioPerl sequence objects or as a single BioPerl Seq object. For example (to add a single sequence to an alignment), $str = Bio::AlignIO->new(-file=> 't/data/cysprot1a.msf'); $aln = $str->next_aln(); $str1 = Bio::SeqIO->new(-file=> 't/data/cysprot1b.fa'); $seq = $str1->next_seq(); $aln = $factory->profile_align($aln,$seq); In either case, profile_align() returns a reference to a SimpleAlign object containing a new SimpleAlign object of the alignment with the additional sequence(s) added in. Finally one can pass the factory a pair of (sub)alignments to be aligned against each other. The alignments can be passed in the form of either a pair of alignment files or a pair of Bio:SimpleAlign objects. For example, $profile1 = 't/data/cysprot1a.msf'; $profile2 = 't/data/cysprot1b.msf'; $aln = $factory->profile_align($profile1,$profile2); or $str1 = Bio::AlignIO->new(-file=> 't/data/cysprot1a.msf'); $aln1 = $str1->next_aln(); $str2 = Bio::AlignIO->new(-file=> 't/data/cysprot1b.msf'); $aln2 = $str2->next_aln(); $aln = $factory->profile_align($aln1,$aln2); In either case, profile_align() returns a reference to a SimpleAlign object containing an (super)alignment of the two input alignments. For more examples of syntax and use of Clustalw, the user is encouraged to look at the script Clustalw.t in the t/ directory. Note: Clustalw is still under development. Various features of the clustalw program have not yet been implemented. If you would like that a specific clustalw feature be added to this perl contact bioperl-l@bioperl.org. These can be specified as parameters when instantiating a new Clustalw object, or through get/set methods of the same name (lowercase). =head1 INTERNAL METHODS =head2 _run Title : _run Usage : Internal function, not to be called directly Function: makes actual system call to clustalw program Returns : nothing; clustalw output is written to a temporary file Args : Name of a file containing a set of unaligned fasta sequences and hash of parameters to be passed to clustalw =head2 _setinput() Title : _setinput Usage : Internal function, not to be called directly Function: Create input file for clustalw program Returns : name of file containing clustalw data input Args : Seq or Align object reference or input file name =head2 _setparams() Title : _setparams Usage : Internal function, not to be called directly Function: Create parameter inputs for clustalw program Returns : parameter string to be passed to clustalw during align or profile_align Args : name of calling object =head1 EXAMPLE You will need to have installed clustalw and to ensure that Clustalw.pm can find it. This can be done in different ways (bash syntax): export PATH=$PATH:/home/peter/clustalw1.8 or define an environmental variable CLUSTALDIR: export CLUSTALDIR=/home/peter/clustalw1.8 or include a definition of an environmental variable CLUSTALDIR in every script that will use Clustal.pm: BEGIN {$ENV{CLUSTALDIR} = '/home/peter/clustalw1.8/'; } We are going to demonstrate 3 possible applications of Clustalw.pm: =over 4 =item 1 Test effect of varying clustalw alignment parameter(s) on resulting alignment =item 2 Test effect of changing the order that sequences are added to the alignment on the resulting alignment =item 3 Test effect of incorporating an "anchor point" in the alignment process =back Before we can do any tests, we need to set up the environment, create the factory and read in the unaligned sequences. use Getopt::Long; use Bio::Tools::Run::Alignment::Clustalw; use Bio::SimpleAlign; use Bio::AlignIO; use Bio::SeqIO; use strict; # set some default values my $infile = 't/data/cysprot1a.fa'; my @params = ('quiet' => 1 ); my $do_only = '123'; # string listing examples to be executed. Default is to # execute all tests (ie 1,2 and 3) my $param = 'ktuple'; # parameter to be varied in example 1 my $startvalue = 1; # initial value for parameter $param my $stopvalue = 3; # final value for parameter $param my $regex = 'W[AT]F'; # regular expression for 'anchoring' alignment in example 3 my $extension = 30; # distance regexp anchor should be extended in each direction # for local alignment in example 3 my $helpflag = 0; # Flag to show usage info. # get user options my @argv = @ARGV; # copy ARGV before GetOptions() massacres it. &GetOptions("h!" => \$helpflag, "help!" => \$helpflag, "in=s" => \$infile, "param=s" => \$param, "do=s" => \$do_only, "start=i" => \$startvalue, "stop=i" => \$stopvalue, "ext=i" => \$extension, "regex=s" => \$regex,) ; if ($helpflag) { &clustalw_usage(); exit 0;} # create factory & set user-specified global clustalw parameters foreach my $argv (@argv) { unless ($argv =~ /^(.*)=>(.*)$/) { next;} push (@params, $1 => $2); } my $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params); # put unaligned sequences in a Bio::Seq array my $str = Bio::SeqIO->new(-file=> $infile, '-format' => 'Fasta'); my ($paramvalue, $aln, $subaln, @consensus, $seq_num, $string, $strout, $id); my @seq_array =(); while ( my $seq = $str->next_seq() ) { push (@seq_array, $seq) ;} # Do each example that has digit present in variable $do_only $_= $do_only; /1/ && &vary_params(); /2/ && &vary_align_order(); /3/ && &anchored_align(); ## End of "main" ################################################# # vary_params(): Example demonstrating varying of clustalw parameter # sub vary_params { print "Beginning parameter-varying example... \n"; # Now we'll create several alignments, 1 for each value of the selected # parameter. We also compute a simple consensus string for each alignment. # (In the default case, we vary the "ktuple" parameter, creating 3 # alignments using ktuple values from 1 to 3.) my $index =0; for ($paramvalue = $startvalue; $paramvalue < ($stopvalue + 1); $paramvalue++) { $factory->$param($paramvalue); # set parameter value print "Performing alignment with $param = $paramvalue \n"; $aln = $factory->align(\@seq_array); $string = $aln->consensus_string(); # Get consensus of alignment # convert '?' to 'X' at non-consensus positions $string =~ s/\?/X/g; $consensus[$index] = Bio::Seq->new(-id=>"$param=$paramvalue",-seq=>$string); $index++; } # Compare consensus strings for alignments with different $param values by # making an alignment of the different consensus strings # $factory->ktuple(1); # set ktuple parameter print "Performing alignment of $param consensus sequences \n"; $aln = $factory->align(\@consensus); $strout = Bio::AlignIO->newFh('-format' => 'msf'); print $strout $aln; return 1; } ################################################# # vary_align_order(): # # For our second example, we'll test the effect of changing the order # that sequences are added to the alignment sub vary_align_order { print "\nBeginning alignment-order-changing example... \n"; @consensus = (); # clear array for ($seq_num = 0; $seq_num < scalar(@seq_array); $seq_num++) { my $obj_out = shift @seq_array; # remove one Seq object from array and save $id = $obj_out->display_id; # align remaining sequences print "Performing alignment with sequence $id left out \n"; $subaln = $factory->align(\@seq_array); # add left-out sequence to subalignment $aln = $factory->profile_align($subaln,$obj_out); $string = $aln->consensus_string(); # Get consensus of alignment # convert '?' to 'X' for non-consensus positions $string =~ s/\?/X/g; $consensus[$seq_num] = Bio::Seq->new(-id=>"$id left out",-seq=>$string); push @seq_array, $obj_out; # return Seq object for next (sub) alignment } # Compare consensus strings for alignments created in different orders # $factory->ktuple(1); # set ktuple parameter print "\nPerforming alignment of consensus sequences for different reorderings \n"; print "Each consensus is labeled by the sequence which was omitted in the initial alignment\n"; $aln = $factory->align(\@consensus); $strout = Bio::AlignIO->newFh('-format' => 'msf'); print $strout $aln; return 1; } ################################################# # anchored_align() # # For our last example, we'll test a way to perform a local alignment by # "anchoring" the alignment to a regular expression. This is similar # to the approach taken in the recent dbclustal program. # In principle, we could write a script to search for a good regular expression # to use. Instead, here we'll simply choose one manually after looking at the # previous alignments. sub anchored_align { my @local_array = (); my @seqs_not_matched = (); print "\n Beginning anchored-alignment example... \n"; for ($seq_num = 0; $seq_num < scalar(@seq_array); $seq_num++) { my $seqobj = $seq_array[$seq_num]; my $seq = $seqobj->seq(); my $id = $seqobj->id(); # if $regex is not found in the sequence, save sequence id name and set # array value =0 for later unless ($seq =~/$regex/) { $local_array[$seq_num] = 0; push (@seqs_not_matched, $id) ; next; } # find positions of start and of subsequence to be aligned my $match_start_pos = length($`); my $match_stop_pos = length($`) + length($&); my $start = ($match_start_pos - $extension) > 1 ? ($match_start_pos - $extension) +1 : 1; my $stop = ($match_stop_pos + $extension) < length($seq) ? ($match_stop_pos + $extension) : length($seq); my $string = $seqobj->subseq($start, $stop); $local_array[$seq_num] = Bio::Seq->new(-id=>$id, -seq=>$string); } @local_array = grep $_ , @local_array; # remove array entries with no match # Perform alignment on the local segments of the sequences which match "anchor" $aln = $factory->align(\@local_array); my $consensus = $aln->consensus_string(); # Get consensus of local alignment if (scalar(@seqs_not_matched) ) { print " Sequences not matching $regex : @seqs_not_matched \n" } else { print " All sequences match $regex : @seqs_not_matched \n" } print "Consensus sequence of local alignment: $consensus \n"; return 1; } #---------------- sub clustalw_usage { #---------------- #----------------------- # Prints usage information for general parameters. print STDERR <<"QQ_PARAMS_QQ"; Command-line accessible script variables and commands: ------------------------------- -h : Display this usage info and exit. -in : File containing input sequences in fasta format (default = $infile) . -do : String listing examples to be executed. Default is to execute all tests (ie default = '123') -param : Parameter to be varied in example 1. Any clustalw parameter which takes inteer values can be varied (default = 'ktuple') -start : Initial value for varying parameter in example 1 (default = 1) -stop : Final value for varying parameter (default = 3) -regex : Regular expression for 'anchoring' alignment in example 3 (default = $regex) -ext : Distance regexp anchor should be extended in each direction for local alignment in example 3 (default = 30) In addition, any valid Clustalw parameter can be set using the syntax "parameter=>value" as in "ktuple=>3" So a typical command lines might be: > clustalw.pl -param=pairgap -start=2 -stop=3 -do=1 "ktuple=>3" or > clustalw.pl -ext=10 -regex='W[AST]F' -do=23 -in='t/cysprot1a.fa' QQ_PARAMS_QQ } =head1 PARAMETER FOR ALIGNMENT COMPUTATION =head2 KTUPLE Title : KTUPLE Description : (optional) set the word size to be used in the alignment This is the size of exactly matching fragment that is used. INCREASE for speed (max= 2 for proteins; 4 for DNA), DECREASE for sensitivity. For longer sequences (e.g. >1000 residues) you may need to increase the default =head2 TOPDIAGS Title : TOPDIAGS Description : (optional) number of best diagonals to use The number of k-tuple matches on each diagonal (in an imaginary dot-matrix plot) is calculated. Only the best ones (with most matches) are used in the alignment. This parameter specifies how many. Decrease for speed; increase for sensitivity. =head2 WINDOW Title : WINDOW Description : (optional) window size This is the number of diagonals around each of the 'best' diagonals that will be used. Decrease for speed; increase for sensitivity. =head2 PAIRGAP Title : PAIRGAP Description : (optional) gap penalty for pairwise alignments This is a penalty for each gap in the fast alignments. It has little affect on the speed or sensitivity except for extreme values. =head2 FIXEDGAP Title : FIXEDGAP Description : (optional) fixed length gap penalty =head2 FLOATGAP Title : FLOATGAP Description : (optional) variable length gap penalty =head2 MATRIX Title : MATRIX Default : PAM100 for DNA - PAM250 for protein alignment Description : (optional) substitution matrix used in the multiple alignments. Depends on the version of clustalw as to what default matrix will be used PROTEIN WEIGHT MATRIX leads to a new menu where you are offered a choice of weight matrices. The default for proteins in version 1.8 is the PAM series derived by Gonnet and colleagues. Note, a series is used! The actual matrix that is used depends on how similar the sequences to be aligned at this alignment step are. Different matrices work differently at each evolutionary distance. DNA WEIGHT MATRIX leads to a new menu where a single matrix (not a series) can be selected. The default is the matrix used by BESTFIT for comparison of nucleic acid sequences. =head2 TYPE Title : TYPE Description : (optional) sequence type: protein or DNA. This allows you to explicitly overide the programs attempt at guessing the type of the sequence. It is only useful if you are using sequences with a VERY strange composition. =head2 OUTPUT Title : OUTPUT Description : (optional) clustalw supports GCG or PHYLIP or PIR or Clustal format. See the Bio::AlignIO modules for which formats are supported by bioperl. =head2 OUTFILE Title : OUTFILE Description : (optional) Name of clustalw output file. If not set module will erase output file. In any case alignment will be returned in the form of SimpleAlign objects =head2 TRANSMIT Title : TRANSMIT Description : (optional) transitions not weighted. The default is to weight transitions as more favourable than other mismatches in DNA alignments. This switch makes all nucleotide mismatches equally weighted. =head2 program_name Title : program_name Usage : $factory>program_name() Function: holds the program name Returns: string Args : None =head2 program_dir Title : program_dir Usage : $factory->program_dir(@params) Function: returns the program directory, obtained from ENV variable. Returns: string Args : =head2 version Title : version Usage : exit if $prog->version() < 1.8 Function: Determine the version number of the program Example : Returns : float or undef Args : none =head2 run Title : run Usage : ($aln, $tree) = $factory->run($inputfilename); ($aln, $tree) = $factory->run($seq_array_ref); Function: Perform a multiple sequence alignment, generating a tree at the same time. (Like align() and tree() combined.) Returns : A SimpleAlign object containing the sequence alignment and a Bio::Tree::Tree object with the tree relating the sequences. Args : Name of a file containing a set of unaligned fasta sequences or else an array of references to Bio::Seq objects. =head2 align Title : align Usage : $inputfilename = 't/data/cysprot.fa'; $aln = $factory->align($inputfilename); or $seq_array_ref = \@seq_array; # @seq_array is array of Seq objs $aln = $factory->align($seq_array_ref); Function: Perform a multiple sequence alignment Returns : Reference to a SimpleAlign object containing the sequence alignment. Args : Name of a file containing a set of unaligned fasta sequences or else an array of references to Bio::Seq objects. Throws an exception if argument is not either a string (eg a filename) or a reference to an array of Bio::Seq objects. If argument is string, throws exception if file corresponding to string name can not be found. If argument is Bio::Seq array, throws exception if less than two sequence objects are in array. =head2 profile_align Title : profile_align Usage : $aln = $factory->profile_align(@simple_aligns); or $aln = $factory->profile_align(@subalignment_filenames); Function: Perform an alignment of 2 (sub)alignments Returns : Reference to a SimpleAlign object containing the (super)alignment. Args : Names of 2 files containing the subalignments or references to 2 Bio::SimpleAlign objects. Throws an exception if arguments are not either strings (eg filenames) or references to SimpleAlign objects. =head2 add_sequences Title : add_sequences Usage : Function: Align and add sequences into an alignment Example : Returns : Reference to a SimpleAlign object containing the (super)alignment. Args : Names of 2 files, the first one containing an alignment and the second one containing sequences to be added or references to 2 Bio::SimpleAlign objects. Throws an exception if arguments are not either strings (eg filenames) or references to SimpleAlign objects. =head2 tree Title : tree Usage : @params = ('bootstrap' => 1000, 'tossgaps' => 1, 'kimura' => 1, 'seed' => 121, 'bootlabels'=> 'nodes', 'quiet' => 1); $factory = Bio::Tools::Run::Alignment::Clustalw->new(@params); $tree_obj = $factory->tree($aln_obj); or $tree_obj = $factory->tree($treefilename); Function: Retrieve a tree corresponding to the input Returns : Bio::TreeIO object Args : Bio::SimpleAlign or filename of a tree =head2 footprint Title : footprint Usage : @alns = $factory->footprint($treefilename, $window_size, $diff); @alns = $factory->footprint($seqs_array_ref); Function: Aligns all the supplied sequences and slices out of the alignment those regions along a sliding window who's tree length differs significantly from the total average tree length. Returns : list of Bio::SimpleAlign objects Args : first argument as per run(), optional second argument to specify the size of the sliding window (default 5 bp) and optional third argument to specify the % difference from the total tree length needed for a window to be considered a footprint (default 33%). =head1 FEEDBACK =head2 Mailing lists User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to the Bioperl mailing list. Your participation is much appreciated. bioperl-l@bioperl.org - General discussion http://bioperl.org/Support.html - About the mailing lists =head2 Support Please direct usage questions or support issues to the mailing list: I rather than to the module maintainer directly. Many experienced and reponsive experts will be able look at the problem and quickly address it. Please include a thorough description of the problem with code and data examples if at all possible. =head2 Reporting bugs Report bugs to the Bioperl bug tracking system to help us keep track of the bugs and their resolution. Bug reports can be submitted via the web: https://github.com/bioperl/bio-tools-run-alignment-clustalw/issues =head1 AUTHORS Peter Schattner Jason Stajich Sendu Bala =head1 COPYRIGHT This software is copyright (c) by Peter Schattner . This software is available under the same terms as the perl 5 programming language system itself. =cut Bio-Tools-Run-Alignment-Clustalw-1.7.4/Makefile.PL0000644000175000017500000000372013321415253022557 0ustar carandraugcarandraug# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.012. use strict; use warnings; # inserted by Dist::Zilla::Plugin::CheckBin 0.008 use Devel::CheckBin; check_bin('clustalw'); use 5.006; use ExtUtils::MakeMaker; my %WriteMakefileArgs = ( "ABSTRACT" => "Object for the calculation of a multiple sequence alignment from a set of unaligned sequences or alignments using the Clustalw program", "AUTHOR" => "Peter Schattner ", "CONFIGURE_REQUIRES" => { "Devel::CheckBin" => 0, "ExtUtils::MakeMaker" => 0 }, "DISTNAME" => "Bio-Tools-Run-Alignment-Clustalw", "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.006", "NAME" => "Bio::Tools::Run::Alignment::Clustalw", "PREREQ_PM" => { "Bio::AlignIO" => 0, "Bio::Root::IO" => 0, "Bio::Root::Root" => 0, "Bio::Seq" => 0, "Bio::SeqIO" => 0, "Bio::SimpleAlign" => 0, "Bio::Tools::Run::WrapperBase" => 0, "Bio::TreeIO" => 0, "base" => 0, "strict" => 0, "utf8" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "File::Spec" => 0, "File::Temp" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::More" => 0 }, "VERSION" => "1.7.4", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "Bio::AlignIO" => 0, "Bio::Root::IO" => 0, "Bio::Root::Root" => 0, "Bio::Seq" => 0, "Bio::SeqIO" => 0, "Bio::SimpleAlign" => 0, "Bio::Tools::Run::WrapperBase" => 0, "Bio::TreeIO" => 0, "File::Spec" => 0, "File::Temp" => 0, "IO::Handle" => 0, "IPC::Open3" => 0, "Test::More" => 0, "base" => 0, "strict" => 0, "utf8" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs);