Skip to content

pysam-0.12.0

Compare
Choose a tag to compare
@AndreasHeger AndreasHeger released this 24 Aug 20:04
· 800 commits to master since this release

This release wraps htslib/samtools/bcftools versions 1.5.0 and
contains a series of bugfixes.

  • [#473] A new FastxRecord class that can be instantiated from class and
    modified in-place. Replaces PersistentFastqProxy.
  • [#521] In AligmentFile, Simplify file detection logic and allow remote index files
    • Removed attempts to guess data and index file names; this is magic left
      to htslib.
    • Removed file existence check prior to opening files with htslib
    • Better error checking after opening files that raise the appropriate
      error (IOError for when errno is set, ValueError otherwise for backward
      compatibility).
    • Report IO errors when loading an index by name.
    • Allow remote indices (tested using S3 signed URLs).
    • Document filepath_index and make it an alias for index_filename.
    • Added a require_index parameter to AlignmentFile
  • [#526] handle unset ref when creating new records
  • [#513] fix bcf_translate to skip deleted FORMAT fields to avoid
    segfaults
  • [#516] expose IO errors via IOError exceptions
  • [#487] add tabix line_skip, remove 'pileup' preset
  • add FastxRecord, replaces PersistentFastqProxy (still present for
    backwards compatibility)
  • [#496] upgrade to htslib/samtools/bcftools versions 1.5
  • add start/stop to AlignmentFile.fetch() to be consistent with
    VariantFile.fetch(). "end" is kept for backwards compatibility.

Upcoming changes:

In the next release we are plannig to separate the header information
from AlignmentFile into a separate class AlignmentHeader. This layout
is similar to VariantFile/VariantHeader. With this change we will
ensure that an AlignedSegment record will be linked to a header so
that chromosome names can be automatically translated from the numeric
representation. As a consequence, the way new AlignedSegment records
are created will need to change as the constructor requires a header::

header = pysam.AlignmentHeader(
    reference_names=["chr1", "chr2"],
    reference_lengths=[1000, 1000])
    
read = pysam.AlignedSegment(header)

This will affect all code that instantiates AlignedSegment objects
directly. We have not yet merged to allow users to provide feed-back.
The pull-request is here: #518
Please comment on github.