[libbio-samtools-perl] 01/04: Imported Upstream version 1.42

gregor herrmann gregoa at debian.org
Thu Dec 10 17:09:50 UTC 2015


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to branch master
in repository libbio-samtools-perl.

commit da8fa4c7fe2b280b774334bac8a4a676451a195f
Author: gregor herrmann <gregoa at debian.org>
Date:   Thu Dec 10 17:59:19 2015 +0100

    Imported Upstream version 1.42
---
 Changes                         |   4 +
 INSTALL.pl                      | 127 ----------
 LICENSE                         | 523 +++++++++++++++++++++++++++-------------
 MANIFEST                        |   1 -
 META.json                       |   6 +-
 META.yml                        |   6 +-
 README                          |  21 +-
 lib/Bio/DB/Bam/AlignWrapper.pm  |  53 ++--
 lib/Bio/DB/Bam/Alignment.pm     |  22 +-
 lib/Bio/DB/Bam/Pileup.pm        |  11 +-
 lib/Bio/DB/Bam/PileupWrapper.pm |  11 +-
 lib/Bio/DB/Bam/Query.pm         |  25 +-
 lib/Bio/DB/Sam.pm               |  13 +-
 lib/Bio/DB/Sam/Constants.pm     |  13 +-
 t/01sam.t                       | 168 +++++++++++--
 15 files changed, 601 insertions(+), 403 deletions(-)

diff --git a/Changes b/Changes
index 9f21337..0694211 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,7 @@
+Version 1.42 
+  * Software is now triply-licensed via Apache 2.0,
+	Artistic 2.0 or GPL v1 or higher.
+
 Version 1.41
   * Added missing INSTALL.pl script.
   * Make it clear that this library only works up through
diff --git a/INSTALL.pl b/INSTALL.pl
deleted file mode 100755
index 442d03e..0000000
--- a/INSTALL.pl
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use File::Temp 'tempdir';
-
-prompt_yn("This will install Bio::DB::Sam and its dependencies. Continue?") or exit 0;
-
-# STEP 0: various dependencies
-my $git = `which git`;
-$git or die <<END;
-'git' command not in path. Please install git and try again. 
-On Debian/Ubuntu systems you can do this with the command:
-
-  apt-get install git
-END
-
-
-`which cc` or die <<END;
-'cc' command not in path. Please install it and try again. 
-On Debian/Ubuntu systems you can do this with the command:
-
-  apt-get install build-essential
-END
-
-`which make` or die <<END;
-'make' command not in path. Please install it and try again. 
-On Debian/Ubuntu systems you can do this with the command:
-
-  apt-get install build-essential
-END
-
--e '/usr/include/zlib.h' or die <<END;
-zlib.h library header not found in /usr/include. Please install it and try again. 
-On Debian/Ubuntu systems you can do this with the command:
-
-  apt-get install zlib1g-dev
-END
-    ;
-
-eval "require Bio::SeqFeature::Lite" or die <<END;
-BioPerl does not seem to be installed. Please install it and try again.
-On Debian/Ubuntu systems you can do this with the command:
-
-    apt-get install bioperl
-
-On other systems use the CPAN shell:
-
-    perl -MCPAN -e 'install Bio::Perl'
-END
-    ;
-
-# STEP 1: Create a clean directory for building
-my $install_dir = tempdir(CLEANUP => 1);
-info("Performing build in $install_dir");
-
-
-# STEP 2: Check out samtools
-info("Checking out samtools 0.1.19");
-chdir $install_dir;
-system "git clone https://github.com/samtools/samtools.git";
--d './samtools' or die "git clone seems to have failed. Could not find $install_dir/samtools directory";
-chdir './samtools';
-system "git checkout 0.1.19";
-
-# STEP 3: Check out Bio-SamTools
-info("Checking out Bio-SamTools");
-chdir $install_dir;
-system "git clone https://github.com/GMOD/GBrowse-Adaptors.git";
--d './GBrowse-Adaptors' or die "git clone seems to have failed. Could not find $install_dir/GBrowse-Adaptors directory";
-chdir "./GBrowse-Adaptors/Bio-SamTools";
-system "git checkout release-1_39";
-
-# Step 4: Build libbam.a
-info("Building samtools");
-chdir "$install_dir/samtools";
-# patch makefile
-open my $in, '<','Makefile'     or die "Couldn't open Makefile for reading: $!";
-open my $out,'>','Makefile.new' or die "Couldn't open Makefile.new for writing: $!";
-while (<$in>) {
-    chomp;
-    if (/^CFLAGS/ && !/-fPIC/) {
-	s/#.+//;  # get rid of comments
-	$_ .= " -fPIC -Wno-unused -Wno-unused-result";
-    }
-} continue {
-    print $out $_,"\n";
-}
-
-close $in;
-close $out;
-rename 'Makefile.new','Makefile' or die "Couldn't rename Makefile.new to Makefile: $!";
-system "make";
--e 'libbam.a' or die "Compile didn't complete. No libbam.a library file found";
-
-# Step 5: Build Bio::DB::Sam
-info("Building Bio::DB::Sam");
-chdir "$install_dir/GBrowse-Adaptors/Bio-SamTools";
-system "env SAMTOOLS=$install_dir/samtools perl Build.PL";
--e "./Build" or die "Build.PL didn't execute properly: no Build file found";
-system "./Build";
-`./Build test` =~ /Result: PASS/ or die "Build test failed. Not continuing";
-
-# Step 6: Install
-info("Installing Bio::DB::Sam using sudo. You will be asked for your password.");
-info("If this step fails because sudo isn't installed, go back and run this script again as superuser.");
-system "sudo ./Build install";
-
-# Step 7: Yay!
-info("Bio::DB::Sam is now installed.");
-chdir '/';
-
-exit 0;
-
-sub prompt_yn {
-    my $msg = shift;
-    print STDERR "$msg [Y/n]: ";
-    my $input = <>;
-    chomp $input;
-    return 1 unless $input;
-    return $input =~ /^[yY]/;
-}
-
-sub info {
-    my $msg = shift;
-    chomp $msg;
-    print STDERR "\n*** $msg ***\n";
-}
diff --git a/LICENSE b/LICENSE
index bd7cc67..be0fdb6 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,355 @@
+This software and its accompanying documentation is licensed under any
+of the following open source licenses:
+
+a) the Artistic License 2.0
+b) the Apache License 2.0
 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 2.0"
+
+----------------------------------------------------------------------------
+Artistic License 2.0
+
+Copyright (c) 2000-2006, The Perl Foundation.
+
+Everyone is permitted to copy and distribute verbatim copies of this license 
+document, but changing it is not allowed.
+
+
+Preamble
+This license establishes the terms under which a given free software Package may 
+be copied, modified, distributed, and/or redistributed. The intent is that the 
+Copyright Holder maintains some artistic control over the development of that 
+Package while still keeping the Package available as open source and free 
+software.
+
+You are always permitted to make arrangements wholly outside of this license 
+directly with the Copyright Holder of a given Package. If the terms of this 
+license do not permit the full use that you propose to make of the Package, you 
+should contact the Copyright Holder and seek a different licensing arrangement.
+
+
+Definitions
+"Copyright Holder" means the individual(s) or organization(s) named in the 
+copyright notice for the entire Package.
+
+"Contributor" means any party that has contributed code or other material to the 
+Package, in accordance with the Copyright Holder's procedures.
+
+"You" and "your" means any person who would like to copy, distribute, or modify 
+the Package.
+
+"Package" means the collection of files distributed by the Copyright Holder, and 
+derivatives of that collection and/or of those files. A given Package may 
+consist of either the Standard Version, or a Modified Version.
+
+"Distribute" means providing a copy of the Package or making it accessible to 
+anyone else, or in the case of a company or organization, to others outside of 
+your company or organization.
+
+"Distributor Fee" means any fee that you charge for Distributing this Package or 
+providing support for this Package to another party. It does not mean licensing 
+fees.
+
+"Standard Version" refers to the Package if it has not been modified, or has 
+been modified only in ways explicitly requested by the Copyright Holder.
+
+"Modified Version" means the Package, if it has been changed, and such changes 
+were not explicitly requested by the Copyright Holder.
+
+"Original License" means this Artistic License as Distributed with the Standard 
+Version of the Package, in its current version or as it may be modified by The 
+Perl Foundation in the future.
+
+"Source" form means the source code, documentation source, and configuration 
+files for the Package.
+
+"Compiled" form means the compiled bytecode, object code, binary, or any other 
+form resulting from mechanical transformation or translation of the Source form.
+
+
+Permission for Use and Modification Without Distribution
+(1) You are permitted to use the Standard Version and create and use Modified 
+Versions for any purpose without restriction, provided that you do not 
+Distribute the Modified Version.
+
+
+Permissions for Redistribution of the Standard Version
+(2) You may Distribute verbatim copies of the Source form of the Standard 
+Version of this Package in any medium without restriction, either gratis or for 
+a Distributor Fee, provided that you duplicate all of the original copyright 
+notices and associated disclaimers. At your discretion, such verbatim copies may 
+or may not include a Compiled form of the Package.
+
+(3) You may apply any bug fixes, portability changes, and other modifications 
+made available from the Copyright Holder. The resulting Package will still be 
+considered the Standard Version, and as such will be subject to the Original 
+License.
+
+
+Distribution of Modified Versions of the Package as Source
+(4) You may Distribute your Modified Version as Source (either gratis or for a 
+Distributor Fee, and with or without a Compiled form of the Modified Version) 
+provided that you clearly document how it differs from the Standard Version, 
+including, but not limited to, documenting any non-standard features, 
+executables, or modules, and provided that you do at least ONE of the 
+following:
+
+(a) make the Modified Version available to the Copyright Holder of the Standard 
+Version, under the Original License, so that the Copyright Holder may include 
+your modifications in the Standard Version.
+(b) ensure that installation of your Modified Version does not prevent the user 
+installing or running the Standard Version. In addition, the Modified Version 
+must bear a name that is different from the name of the Standard Version.
+(c) allow anyone who receives a copy of the Modified Version to make the Source 
+form of the Modified Version available to others under
+(i) the Original License or
+(ii) a license that permits the licensee to freely copy, modify and redistribute 
+the Modified Version using the same licensing terms that apply to the copy that 
+the licensee received, and requires that the Source form of the Modified 
+Version, and of any works derived from it, be made freely available in that 
+license fees are prohibited but Distributor Fees are allowed.
+
+Distribution of Compiled Forms of the Standard Version or Modified Versions 
+without the Source
+
+(5) You may Distribute Compiled forms of the Standard Version without the 
+Source, provided that you include complete instructions on how to get the 
+Source of the Standard Version. Such instructions must be valid at the time of 
+your distribution. If these instructions, at any time while you are carrying out 
+such distribution, become invalid, you must provide new instructions on demand 
+or cease further distribution. If you provide valid instructions or cease 
+distribution within thirty days after you become aware that the instructions are 
+invalid, then you do not forfeit any of your rights under this license.
+
+(6) You may Distribute a Modified Version in Compiled form without the Source, 
+provided that you comply with Section 4 with respect to the Source of the 
+Modified Version.
+
+
+Aggregating or Linking the Package
+(7) You may aggregate the Package (either the Standard Version or Modified 
+Version) with other packages and Distribute the resulting aggregation provided 
+that you do not charge a licensing fee for the Package. Distributor Fees are 
+permitted, and licensing fees for other components in the aggregation are 
+permitted. The terms of this license apply to the use and Distribution of the 
+Standard or Modified Versions as included in the aggregation.
+
+(8) You are permitted to link Modified and Standard Versions with other works, 
+to embed the Package in a larger work of your own, or to build stand-alone 
+binary or bytecode versions of applications that include the Package, and 
+Distribute the result without restriction, provided the result does not expose a 
+direct interface to the Package.
+
+
+Items That are Not Considered Part of a Modified Version
+(9) Works (including, but not limited to, modules and scripts) that merely 
+extend or make use of the Package, do not, by themselves, cause the Package to 
+be a Modified Version. In addition, such works are not considered parts of the 
+Package itself, and are not subject to the terms of this license.
+
+
+General Provisions
+(10) Any use, modification, and distribution of the Standard or Modified 
+Versions is governed by this Artistic License. By using, modifying or 
+distributing the Package, you accept this license. Do not use, modify, or 
+distribute the Package, if you do not accept this license.
+
+(11) If your Modified Version has been derived from a Modified Version made by 
+someone other than you, you are nevertheless required to ensure that your 
+Modified Version complies with the requirements of this license.
+
+(12) This license does not grant you the right to use any trademark, service 
+mark, tradename, or logo of the Copyright Holder.
+
+(13) This license includes the non-exclusive, worldwide, free-of-charge patent 
+license to make, have made, use, offer to sell, sell, import and otherwise 
+transfer the Package with respect to any patent claims licensable by the 
+Copyright Holder that are necessarily infringed by the Package. If you institute 
+patent litigation (including a cross-claim or counterclaim) against any party 
+alleging that the Package constitutes direct or contributory patent 
+infringement, then this Artistic License to you shall terminate on the date that 
+such litigation is filed.
+
+(14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND 
+CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR 
+NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. 
+UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR 
+ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY 
+OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
+DAMAGE.
+
+----------------------------------------------------------------------------
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the
+copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other
+entities that control, are controlled by, or are under common control
+with that entity. For the purposes of this definition, "control" means
+(i) the power, direct or indirect, to cause the direction or
+management of such entity, whether by contract or otherwise, or (ii)
+ownership of fifty percent (50%) or more of the outstanding shares, or
+(iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation
+source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but not
+limited to compiled object code, generated documentation, and
+conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object
+form, made available under the License, as indicated by a copyright
+notice that is included in or attached to the work (an example is
+provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object
+form, that is based on (or derived from) the Work and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship. For the
+purposes of this License, Derivative Works shall not include works
+that remain separable from, or merely link (or bind by name) to the
+interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the
+original version of the Work and any modifications or additions to
+that Work or Derivative Works thereof, that is intentionally submitted
+to Licensor for inclusion in the Work by the copyright owner or by an
+individual or Legal Entity authorized to submit on behalf of the
+copyright owner. For the purposes of this definition, "submitted"
+means any form of electronic, verbal, or written communication sent to
+the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control
+systems, and issue tracking systems that are managed by, or on behalf
+of, the Licensor for the purpose of discussing and improving the Work,
+but excluding communication that is conspicuously marked or otherwise
+designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of, publicly
+display, publicly perform, sublicense, and distribute the Work and
+such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except
+as stated in this section) patent license to make, have made, use,
+offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work to
+which such Contribution(s) was submitted. If You institute patent
+litigation against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent
+infringement, then any patent licenses granted to You under this
+License for that Work shall terminate as of the date such litigation
+is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work
+or Derivative Works thereof in any medium, with or without
+modifications, and in Source or Object form, provided that You meet
+the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a
+copy of this License; and You must cause any modified files to carry
+prominent notices stating that You changed the files; and You must
+retain, in the Source form of any Derivative Works that You
+distribute, all copyright, patent, trademark, and attribution notices
+from the Source form of the Work, excluding those notices that do not
+pertain to any part of the Derivative Works; and If the Work includes
+a "NOTICE" text file as part of its distribution, then any Derivative
+Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those
+notices that do not pertain to any part of the Derivative Works, in at
+least one of the following places: within a NOTICE text file
+distributed as part of the Derivative Works; within the Source form or
+documentation, if provided along with the Derivative Works; or, within
+a display generated by the Derivative Works, if and wherever such
+third-party notices normally appear. The contents of the NOTICE file
+are for informational purposes only and do not modify the License. You
+may add Your own attribution notices within Derivative Works that You
+distribute, alongside or as an addendum to the NOTICE text from the
+Work, provided that such additional attribution notices cannot be
+construed as modifying the License.
+
+You may add Your own copyright statement to Your modifications and may
+provide additional or different license terms and conditions for use,
+reproduction, or distribution of Your modifications, or for any such
+Derivative Works as a whole, provided Your use, reproduction, and
+distribution of the Work otherwise complies with the conditions stated
+in this License.  5. Submission of Contributions. Unless You
+explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the
+terms and conditions of this License, without any additional terms or
+conditions. Notwithstanding the above, nothing herein shall supersede
+or modify the terms of any separate license agreement you may have
+executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed
+to in writing, Licensor provides the Work (and each Contributor
+provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied, including, without
+limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely
+responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your
+exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise, unless
+required by applicable law (such as deliberate and grossly negligent
+acts) or agreed to in writing, shall any Contributor be liable to You
+for damages, including any direct, indirect, special, incidental, or
+consequential damages of any character arising as a result of this
+License or out of the use or inability to use the Work (including but
+not limited to damages for loss of goodwill, work stoppage, computer
+failure or malfunction, or any and all other commercial damages or
+losses), even if such Contributor has been advised of the possibility
+of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer, and
+charge a fee for, acceptance of support, warranty, indemnity, or other
+liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only on
+Your own behalf and on Your sole responsibility, not on behalf of any
+other Contributor, and only if You agree to indemnify, defend, and
+hold each Contributor harmless for any liability incurred by, or
+claims asserted against, such Contributor by reason of your accepting
+any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
 
 ----------------------------------------------------------------------------
 
@@ -267,176 +615,3 @@ BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
 END OF TERMS AND CONDITIONS
 
 
-----------------------------------------------------------------------------
-Artistic License 2.0
-
-Copyright (c) 2000-2006, The Perl Foundation.
-
-Everyone is permitted to copy and distribute verbatim copies of this license 
-document, but changing it is not allowed.
-
-
-Preamble
-This license establishes the terms under which a given free software Package may 
-be copied, modified, distributed, and/or redistributed. The intent is that the 
-Copyright Holder maintains some artistic control over the development of that 
-Package while still keeping the Package available as open source and free 
-software.
-
-You are always permitted to make arrangements wholly outside of this license 
-directly with the Copyright Holder of a given Package. If the terms of this 
-license do not permit the full use that you propose to make of the Package, you 
-should contact the Copyright Holder and seek a different licensing arrangement.
-
-
-Definitions
-"Copyright Holder" means the individual(s) or organization(s) named in the 
-copyright notice for the entire Package.
-
-"Contributor" means any party that has contributed code or other material to the 
-Package, in accordance with the Copyright Holder's procedures.
-
-"You" and "your" means any person who would like to copy, distribute, or modify 
-the Package.
-
-"Package" means the collection of files distributed by the Copyright Holder, and 
-derivatives of that collection and/or of those files. A given Package may 
-consist of either the Standard Version, or a Modified Version.
-
-"Distribute" means providing a copy of the Package or making it accessible to 
-anyone else, or in the case of a company or organization, to others outside of 
-your company or organization.
-
-"Distributor Fee" means any fee that you charge for Distributing this Package or 
-providing support for this Package to another party. It does not mean licensing 
-fees.
-
-"Standard Version" refers to the Package if it has not been modified, or has 
-been modified only in ways explicitly requested by the Copyright Holder.
-
-"Modified Version" means the Package, if it has been changed, and such changes 
-were not explicitly requested by the Copyright Holder.
-
-"Original License" means this Artistic License as Distributed with the Standard 
-Version of the Package, in its current version or as it may be modified by The 
-Perl Foundation in the future.
-
-"Source" form means the source code, documentation source, and configuration 
-files for the Package.
-
-"Compiled" form means the compiled bytecode, object code, binary, or any other 
-form resulting from mechanical transformation or translation of the Source form.
-
-
-Permission for Use and Modification Without Distribution
-(1) You are permitted to use the Standard Version and create and use Modified 
-Versions for any purpose without restriction, provided that you do not 
-Distribute the Modified Version.
-
-
-Permissions for Redistribution of the Standard Version
-(2) You may Distribute verbatim copies of the Source form of the Standard 
-Version of this Package in any medium without restriction, either gratis or for 
-a Distributor Fee, provided that you duplicate all of the original copyright 
-notices and associated disclaimers. At your discretion, such verbatim copies may 
-or may not include a Compiled form of the Package.
-
-(3) You may apply any bug fixes, portability changes, and other modifications 
-made available from the Copyright Holder. The resulting Package will still be 
-considered the Standard Version, and as such will be subject to the Original 
-License.
-
-
-Distribution of Modified Versions of the Package as Source
-(4) You may Distribute your Modified Version as Source (either gratis or for a 
-Distributor Fee, and with or without a Compiled form of the Modified Version) 
-provided that you clearly document how it differs from the Standard Version, 
-including, but not limited to, documenting any non-standard features, 
-executables, or modules, and provided that you do at least ONE of the 
-following:
-
-(a) make the Modified Version available to the Copyright Holder of the Standard 
-Version, under the Original License, so that the Copyright Holder may include 
-your modifications in the Standard Version.
-(b) ensure that installation of your Modified Version does not prevent the user 
-installing or running the Standard Version. In addition, the Modified Version 
-must bear a name that is different from the name of the Standard Version.
-(c) allow anyone who receives a copy of the Modified Version to make the Source 
-form of the Modified Version available to others under
-(i) the Original License or
-(ii) a license that permits the licensee to freely copy, modify and redistribute 
-the Modified Version using the same licensing terms that apply to the copy that 
-the licensee received, and requires that the Source form of the Modified 
-Version, and of any works derived from it, be made freely available in that 
-license fees are prohibited but Distributor Fees are allowed.
-
-Distribution of Compiled Forms of the Standard Version or Modified Versions 
-without the Source
-
-(5) You may Distribute Compiled forms of the Standard Version without the 
-Source, provided that you include complete instructions on how to get the 
-Source of the Standard Version. Such instructions must be valid at the time of 
-your distribution. If these instructions, at any time while you are carrying out 
-such distribution, become invalid, you must provide new instructions on demand 
-or cease further distribution. If you provide valid instructions or cease 
-distribution within thirty days after you become aware that the instructions are 
-invalid, then you do not forfeit any of your rights under this license.
-
-(6) You may Distribute a Modified Version in Compiled form without the Source, 
-provided that you comply with Section 4 with respect to the Source of the 
-Modified Version.
-
-
-Aggregating or Linking the Package
-(7) You may aggregate the Package (either the Standard Version or Modified 
-Version) with other packages and Distribute the resulting aggregation provided 
-that you do not charge a licensing fee for the Package. Distributor Fees are 
-permitted, and licensing fees for other components in the aggregation are 
-permitted. The terms of this license apply to the use and Distribution of the 
-Standard or Modified Versions as included in the aggregation.
-
-(8) You are permitted to link Modified and Standard Versions with other works, 
-to embed the Package in a larger work of your own, or to build stand-alone 
-binary or bytecode versions of applications that include the Package, and 
-Distribute the result without restriction, provided the result does not expose a 
-direct interface to the Package.
-
-
-Items That are Not Considered Part of a Modified Version
-(9) Works (including, but not limited to, modules and scripts) that merely 
-extend or make use of the Package, do not, by themselves, cause the Package to 
-be a Modified Version. In addition, such works are not considered parts of the 
-Package itself, and are not subject to the terms of this license.
-
-
-General Provisions
-(10) Any use, modification, and distribution of the Standard or Modified 
-Versions is governed by this Artistic License. By using, modifying or 
-distributing the Package, you accept this license. Do not use, modify, or 
-distribute the Package, if you do not accept this license.
-
-(11) If your Modified Version has been derived from a Modified Version made by 
-someone other than you, you are nevertheless required to ensure that your 
-Modified Version complies with the requirements of this license.
-
-(12) This license does not grant you the right to use any trademark, service 
-mark, tradename, or logo of the Copyright Holder.
-
-(13) This license includes the non-exclusive, worldwide, free-of-charge patent 
-license to make, have made, use, offer to sell, sell, import and otherwise 
-transfer the Package with respect to any patent claims licensable by the 
-Copyright Holder that are necessarily infringed by the Package. If you institute 
-patent litigation (including a cross-claim or counterclaim) against any party 
-alleging that the Package constitutes direct or contributory patent 
-infringement, then this Artistic License to you shall terminate on the date that 
-such litigation is filed.
-
-(14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND 
-CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR 
-NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. 
-UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR 
-ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY 
-OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
-DAMAGE.
-
diff --git a/MANIFEST b/MANIFEST
index 147c6a0..1120481 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -6,7 +6,6 @@ c_bin/bam2bedgraph.c
 c_bin/makefile
 Changes
 DISCLAIMER
-INSTALL.pl
 lib/Bio/DB/Bam/Alignment.pm
 lib/Bio/DB/Bam/AlignWrapper.pm
 lib/Bio/DB/Bam/FetchIterator.pm
diff --git a/META.json b/META.json
index b3684eb..1c92b9c 100644
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
       "Lincoln Stein <lincoln.stein at gmail.com>"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "Module::Build version 0.421",
+   "generated_by" : "Module::Build version 0.4211",
    "license" : [
       "perl_5"
    ],
@@ -64,7 +64,7 @@
       },
       "Bio::DB::Sam" : {
          "file" : "lib/Bio/DB/Sam.pm",
-         "version" : "1.41"
+         "version" : "1.42"
       },
       "Bio::DB::Sam::Constants" : {
          "file" : "lib/Bio/DB/Sam/Constants.pm"
@@ -91,5 +91,5 @@
          "http://dev.perl.org/licenses/"
       ]
    },
-   "version" : "1.41"
+   "version" : "1.42"
 }
diff --git a/META.yml b/META.yml
index b2dfb31..9cf02ab 100644
--- a/META.yml
+++ b/META.yml
@@ -7,7 +7,7 @@ build_requires:
 configure_requires:
   Module::Build: '0.42'
 dynamic_config: 1
-generated_by: 'Module::Build version 0.421, CPAN::Meta::Converter version 2.142690'
+generated_by: 'Module::Build version 0.4211, CPAN::Meta::Converter version 2.143240'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -36,7 +36,7 @@ provides:
     file: lib/Bio/DB/Bam/Target.pm
   Bio::DB::Sam:
     file: lib/Bio/DB/Sam.pm
-    version: '1.41'
+    version: '1.42'
   Bio::DB::Sam::Constants:
     file: lib/Bio/DB/Sam/Constants.pm
   Bio::DB::Sam::Fai:
@@ -54,4 +54,4 @@ requires:
   perl: '5.008'
 resources:
   license: http://dev.perl.org/licenses/
-version: '1.41'
+version: '1.42'
diff --git a/README b/README
index f165905..c53897c 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
 This is a Perl interface to the SAMtools sequence alignment
-interface. It ONLY works on versions of Samtools up to 0.1.19. It does
+interface. It ONLY works on versions of Samtools up to 0.1.17. It does
 not work on version 1.0 or higher due to major changes in the library
 structure. 
 
@@ -17,11 +17,10 @@ install. Simply run:
 * MULTI-STEP INSTALLATION
 
 The more traditional install requires you to separately download,
-unpack and compile SAMtools 0.1.4 or higher in some accessible
-directory. FOR SAMTOOLS VERSION 0.1.4, YOU MUST RUN "make -f
-makefile.generic" IN THE DISTRIBUTION DIRECTORY IN ORDER TO CREATE THE
-REQUIRED libbam.a LIBRARY FILE. For other versions, just "make" will
-usually work.
+unpack and compile SAMtools 0.1.10 through 0.1.17 in some accessible
+directory. Typing "make" in the samtools directory will usually
+work. SAMtools versions 0.1.18 and higher do not work with this
+library.
 
 Then set the environment variable SAMTOOLS to point to this directory.
 
@@ -73,9 +72,9 @@ AUTHOR:
 
 Lincoln D. Stein <lincoln.stein at gmail.com>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text.
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
diff --git a/lib/Bio/DB/Bam/AlignWrapper.pm b/lib/Bio/DB/Bam/AlignWrapper.pm
index 8b48ed7..99bf4a7 100644
--- a/lib/Bio/DB/Bam/AlignWrapper.pm
+++ b/lib/Bio/DB/Bam/AlignWrapper.pm
@@ -40,13 +40,12 @@ L<Bio::Perl>, L<Bio::DB::Sam>, L<Bio::DB::Bam::Constants>
 Lincoln Stein E<lt>lincoln.stein at oicr.on.caE<gt>.
 E<lt>lincoln.stein at bmail.comE<gt>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research.
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research.
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text. In addition,
-please see DISCLAIMER.txt for disclaimers of warranty.
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
 
 =cut
 
@@ -67,7 +66,7 @@ sub new {
     $self->add_segment($self->split_splices)
 	if $sam->split_splices && $align->cigar_str =~ /N/;
 
-    return $self; 
+    return $self;
 }
 
 sub AUTOLOAD {
@@ -148,7 +147,7 @@ sub split_splices {
 	} else {
 	    $partial_cigar .= "$operation$count";
 	}
-	$end  += $count if $operation =~ /^[MDSHP]/i;
+	$end  += $count if $operation =~ /^[MDSHP=X]/i;
 	$skip += $count if $operation eq 'N';
 	if ($operation eq 'H' and $start == 0) {
 	    $qseq = 'N' x $count . $qseq;
@@ -219,13 +218,15 @@ sub subseq {
 
 sub padded_alignment {
     my $self  = shift;
-
     my $cigar = $self->cigar_array;
+    my $real_ref = 0;
+    $real_ref = 1 if($self->{sam}->force_refseq || !$self->has_tag('MD'));
 
     my $sdna  = $self->dna;
     my $tdna  = $self->query->dna;
 
-    my ($pad_source,$pad_target,$pad_match);
+
+    my ($pad_source,$pad_target,$pad_match, $char_source, $char_target);
     for my $event (@$cigar) {
 	my ($op,$count) = @$event;
 	if ($op eq 'I' || $op eq 'S') {
@@ -233,11 +234,21 @@ sub padded_alignment {
 	    $pad_target .= substr($tdna,0,$count,'');
 	    $pad_match  .= ' ' x $count;
 	}
-	elsif ($op eq 'D' || $op eq 'N') {
+	elsif ($op eq 'D') {
 	    $pad_source .= substr($sdna,0,$count,'');
 	    $pad_target .= '-' x $count;
 	    $pad_match  .= ' ' x $count;
 	}
+	elsif ($op eq 'N') {
+	    if($real_ref) {
+	      $pad_source .= substr($sdna,0,$count,'');
+	    }
+	    else {
+	      $pad_source .= '-' x $count;
+	    }
+	    $pad_target .= '-' x $count;
+	    $pad_match  .= ' ' x $count;
+	}
 	elsif ($op eq 'P') {
 	    $pad_source .= '*' x $count;
 	    $pad_target .= '*' x $count;
@@ -245,10 +256,14 @@ sub padded_alignment {
 	}
 	elsif ($op eq 'H') {
 	    # nothing needs to be done in this case
-	} else {  # everything else is assumed to be a match -- revisit
-	    $pad_source .= substr($sdna,0,$count,'');
-	    $pad_target .= substr($tdna,0,$count,'');
-	    $pad_match  .= '|' x $count;
+	} else {  # everything else is assumed to be a match
+	    while($count-- > 0) {
+	      $char_source = substr($sdna,0,1,'');
+	      $char_target = substr($tdna,0,1,'');
+	      $pad_source .= $char_source;
+	      $pad_target .= $char_target;
+	      $pad_match .= $char_source eq $char_target ? '|' : ' ';
+	    }
 	}
     }
     return ($pad_source,$pad_match,$pad_target);
@@ -267,7 +282,7 @@ sub dna {
 	my $seq   = '';
 	for my $op (@$cigar) {
 	    my ($operation,$count) = @$op;
-	    if ($operation eq 'M') {
+	    if ($operation eq 'M' || $operation eq '=' || $operation eq 'X') {
 		$seq .= substr($qseq,0,$count,''); # include these residues
 	    } elsif ($operation eq 'S' or $operation eq 'I') {
 		substr($qseq,0,$count,'');         # skip soft clipped and inserted residues
@@ -321,7 +336,7 @@ sub get_tag_values {
     my $tag  = shift;
     defined $tag or return;
 
-    return $self->{align}->get_tag_values($tag) 
+    return $self->{align}->get_tag_values($tag)
 	if $self->expand_flags;
     if ($tag eq 'FLAGS') {
 	$self->flag_str;
@@ -334,7 +349,7 @@ sub has_tag {
     my $self = shift;
     my $tag  = shift;
     defined $tag or return;
-    $self->{align}->get_tag_values($tag) 
+    $self->{align}->get_tag_values($tag)
 	if $self->expand_flags;
     if ($tag eq 'FLAGS') {
 	return 1;
@@ -373,7 +388,7 @@ sub gff3_string {
 		map {$_->gff3_string($id)} @rsf);
 }
 
-sub phase { return } 
+sub phase { return }
 
 sub escape {
   my $self     = shift;
diff --git a/lib/Bio/DB/Bam/Alignment.pm b/lib/Bio/DB/Bam/Alignment.pm
index 536dd24..cbb177e 100644
--- a/lib/Bio/DB/Bam/Alignment.pm
+++ b/lib/Bio/DB/Bam/Alignment.pm
@@ -586,11 +586,11 @@ sub mate_len {
     my $len     = $self->length;
 
     my $adjust = 0;
-    my @cigar   = $self->cigar_str =~ /(\d+)(\w)/g;
-    while (@cigar) {
-	my ($len,$op) = splice(@cigar,0,2);
-	$adjust += $len if $op eq 'I';
-	$adjust -= $len if $op eq 'D';
+    my @cigar = $self->cigar_array;
+    for my $event (@cigar) {
+        my ($op,$len) = @$event;
+        $adjust += $len if $op eq 'I';
+        $adjust -= $len if $op eq 'D';
     }
 
     return $adjust + $ins_len + ($self->start-$self->mate_start) if $ins_len > 0;
@@ -634,13 +634,13 @@ L<Bio::Perl>, L<Bio::DB::Sam>, L<Bio::DB::Bam::Constants>
 Lincoln Stein E<lt>lincoln.stein at oicr.on.caE<gt>.
 E<lt>lincoln.stein at bmail.comE<gt>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research.
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research.
+
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text. In addition,
-please see DISCLAIMER.txt for disclaimers of warranty.
 
 =cut
 
diff --git a/lib/Bio/DB/Bam/Pileup.pm b/lib/Bio/DB/Bam/Pileup.pm
index 7ca1762..d63e472 100644
--- a/lib/Bio/DB/Bam/Pileup.pm
+++ b/lib/Bio/DB/Bam/Pileup.pm
@@ -81,12 +81,11 @@ L<Bio::Perl>, L<Bio::DB::Sam>, L<Bio::DB::Bam::Alignment>, L<Bio::DB::Bam::Const
 Lincoln Stein E<lt>lincoln.stein at oicr.on.caE<gt>.
 E<lt>lincoln.stein at bmail.comE<gt>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research.
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research.
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text. In addition,
-please see DISCLAIMER.txt for disclaimers of warranty.
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
 
 =cut
diff --git a/lib/Bio/DB/Bam/PileupWrapper.pm b/lib/Bio/DB/Bam/PileupWrapper.pm
index 4fbd31e..094da5d 100644
--- a/lib/Bio/DB/Bam/PileupWrapper.pm
+++ b/lib/Bio/DB/Bam/PileupWrapper.pm
@@ -25,13 +25,12 @@ L<Bio::Perl>, L<Bio::DB::Sam>, L<Bio::DB::Bam::Constants>
 Lincoln Stein E<lt>lincoln.stein at oicr.on.caE<gt>.
 E<lt>lincoln.stein at bmail.comE<gt>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research.
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research.
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text. In addition,
-please see DISCLAIMER.txt for disclaimers of warranty.
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
 
 =cut
 
diff --git a/lib/Bio/DB/Bam/Query.pm b/lib/Bio/DB/Bam/Query.pm
index 235b0b2..6fd90f3 100644
--- a/lib/Bio/DB/Bam/Query.pm
+++ b/lib/Bio/DB/Bam/Query.pm
@@ -119,8 +119,9 @@ sub low {
     my $cigar_arry = $$self->cigar_array;
     my $start      = 1;
     for my $c (@$cigar_arry) {
-	last unless CIGAR_SKIP->{$c->[0]};
-	$start += $c->[1];
+      next if CIGAR_SYMBOLS->[BAM_CHARD_CLIP] eq $c->[0];
+      last unless CIGAR_SKIP->{$c->[0]};
+      $start += $c->[1];
     }
     $start;
 }
@@ -133,8 +134,9 @@ sub high {
     # alignment stops at first non-clip CIGAR position
     my $i = $len - 1;
     for my $c (reverse @$cigar_arry) {
-	last unless CIGAR_SKIP->{$c->[0]};
-	$len -= $c->[1];
+      next if CIGAR_SYMBOLS->[BAM_CHARD_CLIP] eq $c->[0];
+      last unless CIGAR_SKIP->{$c->[0]};
+      $len -= $c->[1];
     }
     return $len;
 }
@@ -158,7 +160,7 @@ orientation.
 
 =cut
 
-sub seq { 
+sub seq {
     my $self = shift;
     my $dna  = $self->dna;
     return Bio::PrimarySeq->new(-seq => $dna,
@@ -196,7 +198,7 @@ If the query was reversed to align it, -1. Otherwise +1.
 
 =cut
 
-sub strand { 
+sub strand {
     my $self = shift;
     return $$self->reversed ? -1 : 1;
 }
@@ -234,12 +236,11 @@ L<Bio::Perl>, L<Bio::DB::Sam>, L<Bio::DB::Bam::Alignment>, L<Bio::DB::Bam::Const
 Lincoln Stein E<lt>lincoln.stein at oicr.on.caE<gt>.
 E<lt>lincoln.stein at bmail.comE<gt>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research.
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research.
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text. In addition,
-please see DISCLAIMER.txt for disclaimers of warranty.
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
 
 =cut
diff --git a/lib/Bio/DB/Sam.pm b/lib/Bio/DB/Sam.pm
index ef76c48..f6a87c7 100644
--- a/lib/Bio/DB/Sam.pm
+++ b/lib/Bio/DB/Sam.pm
@@ -1,6 +1,6 @@
 package Bio::DB::Sam;
 
-our $VERSION = '1.41';
+our $VERSION = '1.42';
 
 =head1 NAME
 
@@ -2399,13 +2399,12 @@ L<Bio::Perl>, L<Bio::DB::Bam::Alignment>, L<Bio::DB::Bam::Constants>
 Lincoln Stein E<lt>lincoln.stein at oicr.on.caE<gt>.
 E<lt>lincoln.stein at bmail.comE<gt>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research.
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research.
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text. In addition,
-please see DISCLAIMER.txt for disclaimers of warranty.
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
 
 =cut
 
diff --git a/lib/Bio/DB/Sam/Constants.pm b/lib/Bio/DB/Sam/Constants.pm
index d7a4993..cdbd2fe 100644
--- a/lib/Bio/DB/Sam/Constants.pm
+++ b/lib/Bio/DB/Sam/Constants.pm
@@ -53,13 +53,12 @@ L<Bio::Perl>, L<Bio::DB::Sam>, L<Bio::DB::Bam::Alignment>
 Lincoln Stein E<lt>lincoln.stein at oicr.on.caE<gt>.
 E<lt>lincoln.stein at bmail.comE<gt>
 
-Copyright (c) 2009 Ontario Institute for Cancer Research.
+Copyright (c) 2009-2015 Ontario Institute for Cancer Research.
 
-This package and its accompanying libraries is free software; you can
-redistribute it and/or modify it under the terms of the GPL (either
-version 1, or at your option, any later version) or the Artistic
-License 2.0.  Refer to LICENSE for the full license text. In addition,
-please see DISCLAIMER.txt for disclaimers of warranty.
+This package and its accompanying libraries are free software; you can
+redistribute it and/or modify it under the terms of the Artistic
+License 2.0, the Apache 2.0 License, or the GNU General Public License
+(version 1 or higher).  Refer to LICENSE for the full license text.
 
 =cut
 
@@ -73,7 +72,7 @@ our @EXPORT = qw(CIGAR_SYMBOLS BAM_CIGAR_SHIFT BAM_CIGAR_MASK
                  BAM_CSOFT_CLIP BAM_CHARD_CLIP BAM_CPAD FLAGS RFLAGS);
 our @EXPORT_OK = @EXPORT;
 
-use constant CIGAR_SYMBOLS   => [qw(M I D N S H P)];
+use constant CIGAR_SYMBOLS   => [qw(M I D N S H P = X)];
 use constant BAM_CIGAR_SHIFT => 4;
 use constant BAM_CIGAR_MASK  => (1 << BAM_CIGAR_SHIFT) - 1;
 use constant BAM_CMATCH      => 0;
diff --git a/t/01sam.t b/t/01sam.t
index 7c55f11..452b166 100644
--- a/t/01sam.t
+++ b/t/01sam.t
@@ -7,7 +7,7 @@ use strict;
 use ExtUtils::MakeMaker;
 use File::Temp qw(tempfile);
 use FindBin '$Bin';
-use constant TEST_COUNT => 170;
+use constant TEST_COUNT => 268;
 
 use lib "$Bin/../lib","$Bin/../blib/lib","$Bin/../blib/arch";
 
@@ -24,6 +24,142 @@ BEGIN {
 }
 
 use Bio::DB::Sam;
+use Bio::DB::Bam::AlignWrapper;
+
+{
+  ## Tests by keiranmraine at gmail.com (kr2 at sanger.ac.uk) for fixing alignments with hard + soft clips
+  # 49 tests
+
+  # !! not-forced ref-seq
+
+  my @read_pos = ([1,120], # 120M
+                  [61,120], # 60S60M
+                  [1,60], # 60M60H
+                  [1,120], # 120M
+                  [31,90], # 30H30S60M
+                  [1,30], # 30M30S60H
+                  [1,30], # 10M10N20M30S60H (N ref skip)
+                  );
+  my @ref_pos = ( [61, 180],
+                  [1081, 1140],
+                  [961, 1020],
+                  [61, 180],
+                  [1081, 1140],
+                  [961, 990],
+                  [961, 1000],
+                  );
+  my @read_padded = (
+    [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG',
+      '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'],
+    [ '------------------------------------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA',
+      '                                                            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'],
+    [ 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA',
+      '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'],
+    [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG',
+      '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'],
+    [ '------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA',
+      '                              ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'CATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'],
+    [ 'ACATGAGATTATTAGGAAATGCTTTACTGT------------------------------',
+      '||||||||||||||||||||||||||||||                              ',
+      'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'],
+    [ 'ACATGAGATT----------GCTTTACTGTCATAACTATG------------------------------',
+      '||||||||||          ||||||||||||||||||||                              ',
+      'ACATGAGATT----------GCTTTACTGTCATAACTATGGAAGAGACTATTGCCAGATGATGTCCATGT'],
+  );
+
+  my $sam     = Bio::DB::Sam->new(  -bam => "$Bin/data/ex2.bam",
+                                    -fasta => "$Bin/data/ex1.fa",
+                                  );
+  my $bam = $sam->bam;
+  my $record=0;
+  while(my $a = $bam->read1) {
+    ok($a->query->start, $read_pos[$record]->[0], "Check query start $record");
+    ok($a->query->end, $read_pos[$record]->[1], "Check query end $record");
+
+    ok($a->start, $ref_pos[$record]->[0], "Check ref pos start $record");
+    ok($a->start, $ref_pos[$record]->[0], "Check ref pos end $record");
+
+    my $aw = Bio::DB::Bam::AlignWrapper->new($a, $sam);
+    my ($ref, $match, $query) = $aw->padded_alignment;
+    ok($ref, $read_padded[$record]->[0], "Check padded_alignment ref $record");
+    ok($match, $read_padded[$record]->[1], "Check padded_alignment match $record");
+    ok($query, $read_padded[$record]->[2], "Check padded_alignment query $record");
+    $record++;
+  }
+}
+
+{
+  ## Tests by keiranmraine at gmail.com (kr2 at sanger.ac.uk) for fixing alignments with hard + soft clips
+  # 49 tests
+
+  # !! FORCED refseq ref-seq
+
+  my @read_pos = ([1,120], # 120M
+                  [61,120], # 60S60M
+                  [1,60], # 60M60H
+                  [1,120], # 120M
+                  [31,90], # 30H30S60M
+                  [1,30], # 30M30S60H
+                  [1,30], # 10M10N20M30S60H (N ref skip) # changes
+                  );
+  my @ref_pos = ( [61, 180],
+                  [1081, 1140],
+                  [961, 1020],
+                  [61, 180],
+                  [1081, 1140],
+                  [961, 990],
+                  [961, 1000],
+                  );
+  my @read_padded = (
+    [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG',
+      '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'],
+    [ '------------------------------------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA',
+      '                                                            ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'],
+    [ 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA',
+      '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'],
+    [ 'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG',
+      '||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'GTGGACCCTGCAGCCTGGCTGTGGGGGCCGCAGTGGCTGAGGGGTGCAGAGCCGAGTCACGGGGTTGCCAGCACAGGGGCTTAACCTCTGGTGACTGCCAGAGCTGCTGGCAAGCTAGAG'],
+    [ '------------------------------TGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA',
+      '                              ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||',
+      'CATAACTATGAAGAGACTATTGCCAGATGATGTCCATGTACACACGCTGTCCTATGTACTTATCATGACTCTATCCCAAATTCCCAATTA'],
+    [ 'ACATGAGATTATTAGGAAATGCTTTACTGT------------------------------',
+      '||||||||||||||||||||||||||||||                              ',
+      'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATGAAGAGACTATTGCCAGATGA'],
+    [ 'ACATGAGATTATTAGGAAATGCTTTACTGTCATAACTATG------------------------------',
+      '||||||||||          ||||||||||||||||||||                              ',
+      'ACATGAGATT----------GCTTTACTGTCATAACTATGGAAGAGACTATTGCCAGATGATGTCCATGT'],
+  );
+
+  my $sam     = Bio::DB::Sam->new(  -bam => "$Bin/data/ex2.bam",
+                                    -fasta => "$Bin/data/ex1.fa",
+                                    -force_refseq => 1,
+                                  );
+  my $bam = $sam->bam;
+  my $record=0;
+  while(my $a = $bam->read1) {
+    ok($a->query->start, $read_pos[$record]->[0], "Check query start $record");
+    ok($a->query->end, $read_pos[$record]->[1], "Check query end $record");
+
+    ok($a->start, $ref_pos[$record]->[0], "Check ref pos start $record");
+    ok($a->start, $ref_pos[$record]->[0], "Check ref pos end $record");
+
+    my $aw = Bio::DB::Bam::AlignWrapper->new($a, $sam);
+    my ($ref, $match, $query) = $aw->padded_alignment;
+    ok($ref, $read_padded[$record]->[0], "Check padded_alignment ref $record");
+    ok($match, $read_padded[$record]->[1], "Check padded_alignment match $record");
+    ok($query, $read_padded[$record]->[2], "Check padded_alignment query $record");
+    $record++;
+  }
+}
 
 {
   ## Following tests added by malcolm_cook at stowers.org while
@@ -31,7 +167,7 @@ use Bio::DB::Sam;
   ## processing of multi-gaps"
   ## (https://sourceforge.net/tracker/?func=detail&aid=3083769&group_id=27707&atid=391291)
   my $bamfile = "$Bin/data/dm3_3R_4766911_4767130.sam.sorted.bam";
-  my $sam     = Bio::DB::Sam->new( -bam => $bamfile, 
+  my $sam     = Bio::DB::Sam->new( -bam => $bamfile,
 				   -split_splices => 1,
 				   -autoindex => 1,
 				 );
@@ -64,7 +200,7 @@ use Bio::DB::Sam;
      "split alignments having a part (exon) that starts at 4767130 (the acceptor of the downstream exon)" );
 }
 
-# low level tests (defined in lib/Bio/DB/Sam.xs) 
+# low level tests (defined in lib/Bio/DB/Sam.xs)
 {
     my $bamfile = "$Bin/data/ex1.bam";
     my $bam     = Bio::DB::Bam->open($bamfile);
@@ -78,19 +214,19 @@ use Bio::DB::Sam;
     ok($target_names);
     ok(scalar @$target_names,2);
     ok($target_names->[0],'seq1');
-    
+
     my $target_lens = $header->target_len;
     ok($target_lens);
     ok(scalar @$target_lens,2);
     ok($target_lens->[0],1575);
-    
+
     my $text = $header->text;
     ok(length $text > 0);
 
     my $c = "\@CO\tThis is a comment\n";
     $header->text($c);
     ok($header->text,$c);
-    
+
     my $fai  = Bio::DB::Sam::Fai->open("$Bin/data/ex1.fa");
     my $seq  = $fai->fetch('seq2:51-1000');
     ok(length $seq,950);
@@ -100,13 +236,13 @@ use Bio::DB::Sam;
 	$count++;
     }
     ok($count,3307);
-    
+
     my @result = $header->parse_region('seq2:51-1000');
     ok($result[0],1);
     ok($result[1],50);
     @result    = $header->parse_region('seq_invalid:51-1000');
     ok(scalar @result,0);
-    
+
     my $index = Bio::DB::Bam->index($bamfile,1);
     ok($index);
 
@@ -135,7 +271,7 @@ use Bio::DB::Sam;
 	    $matches{total}++;
 	}
     };
-    
+
     $index->pileup($bam,$header->parse_region('seq2:1-100'),$fetch_back);
     ok($matches{matched}/$matches{total} > 0.99);
 
@@ -196,7 +332,7 @@ use Bio::DB::Sam;
     ok($target_names);
     ok(scalar @$target_names,2);
     ok($target_names->[0],'seq1');
-    
+
     $target_lens = $header->target_len;
     ok($target_lens);
     ok(scalar @$target_lens,2);
@@ -251,8 +387,8 @@ for my $use_fasta (0,1) {
 					-bam  =>"invalid_path.txt")};
     ok($dummy,undef);
     ok($@ =~ /does not exist/);
-    
-    my @alignments = 
+
+    my @alignments =
 	$sam->get_features_by_location(
 	    -seq_id => 'seq2',
 	    -start  => 500,
@@ -264,11 +400,11 @@ for my $use_fasta (0,1) {
     ok(scalar @{$alignments[0]->qscore},length $alignments[0]->dna);
 
     my @keys = $alignments[0]->get_all_tags;
-    ok(scalar @keys >= 17);  # later versions of samtools returns 18 attributes, earlier versions return 17
-    ok($alignments[0]->get_tag_values('MF') >= 17);
+    ok(scalar @keys,18);
+    ok($alignments[0]->get_tag_values('MF'),18);
 
     my %att  = $alignments[0]->attributes;
-    ok(scalar(keys %att) >= 17);
+    ok(scalar(keys %att),18);
     ok($alignments[0]->cigar_str,'35M');
 
     $sam->expand_flags(0);
@@ -389,7 +525,7 @@ for my $use_fasta (0,1) {
 	    $matches{total}++;
 	}
     };
-    
+
     $sam->pileup('seq2:1-100',$fetch_back);
     ok($matches{matched}/$matches{total} > 0.99);
 }

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libbio-samtools-perl.git



More information about the Pkg-perl-cvs-commits mailing list