Skip to content
Snippets Groups Projects
NEWS.rst 117 KiB
Newer Older
jchang's avatar
jchang committed
News for the Biopython Project
==============================

This file contains release notes and general news about the Biopython project.
See also the DEPRECATED file which tracks the removal of obsolete modules or
functions, and online https://biopython.org/wiki/News and
Peter Cock's avatar
Peter Cock committed
https://www.open-bio.org/category/obf-projects/biopython/
jchang's avatar
jchang committed

The latest news is at the top of this file.
(In progress, not yet released): Biopython 1.80
===============================================
Peter Cock's avatar
Peter Cock committed
This release of Biopython supports Python 3.7, 3.8, 3.9 and 3.10. It has also
been tested on PyPy3.7 v7.3.5.
Peter Cock's avatar
Peter Cock committed
Because dict retains the item order by default since Python3.6, all instances
of ``collections.OrderedDict`` have been replaced by either standard ``dict``
or where appropriate by ``collections.defaultsdict``.
Peter Cock's avatar
Peter Cock committed
The ``Bio.motifs.jaspar.db`` now returns ``tf_family`` and ``tf_class`` as a
string array since the JASPAR 2018 release.

Sebastian Bassi's avatar
Sebastian Bassi committed
The Local Composition Complexity functions from ``Bio.SeqUtils`` now uses
base 4 log instead of 2 as stated in the original reference Konopka (2005),
Sequence Complexity and Composition. https://doi.org/10.1038/npg.els.0005260

Append mode is now supported in ``Bio.bgzf`` (and a bug parsing blocked GZIP
files with an internal empty block fixed).

The experimental warning was dropped from ``Bio.phenotype`` (which was new in
Biopython 1.67).

Sequences now have a ``defined`` attribute that returns a boolean indicating
if the underlying data is defined or not.

The ``Bio.PDB`` module now includes a structural alignment module, using the
combinatorial extension algorithm of Shindyalov and Bourne, commonly known as
CEAlign. The module allows for two structures to be aligned based solely on
their 3D conformation, ie. in a sequence-independent manner. The method is
particularly powerful when the structures shared a very low degree of sequence
similarity. The new module is available in ``Bio.PDB.CEAligner`` with an
interface similar to other 3D superimposition modules.

A new module ``Bio.PDB.qcprot`` implements the QCP superposition algorithm in
pure Python, deprecating the existing C implementation. This leads to a slight
performance improvement and to much better maintainability. The refactored
``qcprot.QCPSuperimposer`` class has small changes to its API, to better mirror
that of ``Bio.PDB.Superimposer``.
Peter Cock's avatar
Peter Cock committed
Additionally, a number of small bugs and typos have been fixed with additions
to the test suite.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

Peter Cock's avatar
Peter Cock committed
- Aziz Khan
zhuchcn's avatar
zhuchcn committed
- Chenghao Zhu
- Christian Brueffer
Markus Piotrowski's avatar
Markus Piotrowski committed
- Erik  Whiting
Jarrod Millman's avatar
Jarrod Millman committed
- Jarrod Millman
Markus Piotrowski's avatar
Markus Piotrowski committed
- Markus Piotrowski
- Michiel de Hoon
- Neil P. (first contribution)
Markus Piotrowski's avatar
Markus Piotrowski committed
- Peter Cock
- Sebastian Bassi
Markus Piotrowski's avatar
Markus Piotrowski committed
- Tim Burke

3 June 2021: Biopython 1.79
===========================
This is intended to be our final release supporting Python 3.6. It also
Peter Cock's avatar
Peter Cock committed
supports Python 3.7, 3.8 and 3.9, and has also been tested on PyPy3.6.1 v7.1.1.
mdehoon's avatar
mdehoon committed
The ``Seq`` and ``MutableSeq`` classes in ``Bio.Seq`` now store their sequence
contents as ``bytes`` and ``bytearray`` objects, respectively. Previously, for
mdehoon's avatar
mdehoon committed
``Seq`` objects a string object was used, and a Unicode array object for
``MutableSeq`` objects. This was maintained during the transition from Python2
to Python3. However, a Python2 string object corresponds to a ``bytes`` object
in Python3, storing the string as a series of 256-bit characters. While
non-ASCII characters could be stored in Python2 strings, they were not treated
as such. For example:
mdehoon's avatar
mdehoon committed

In Python2::

    >>> s = "Генетика"
    >>> type(s)
    <class 'str'>
    >>> len(s)
    16

In Python3::

    >>> s = "Генетика"
    >>> type(s)
    <class 'str'>
    >>> len(s)
    8

In Python3, storing the sequence contents as ``bytes`` and ``bytearray``
objects has the further advantage that both support the buffer protocol.

Taking advantage of the similarity between ``bytes`` and ``bytearray``, the
``Seq`` and ``MutableSeq`` classes now inherit from an abstract base class
``_SeqAbstractBaseClass`` in ``Bio.Seq`` that implements most of the ``Seq``
and ``MutableSeq`` methods, ensuring their consistency with each other. For
methods that modify the sequence contents, an optional ``inplace`` argument to
specify if a new sequence object should be returned with the new sequence
contents (if ``inplace`` is ``False``, the default) or if the sequence object
itself should be modified (if ``inplace`` is ``True``). For ``Seq`` objects,
which are immutable, using ``inplace=True`` raises an exception. For
``inplace=False``, the default, ``Seq`` objects and ``MutableSeq`` behave
consistently.

As before, ``Seq`` and ``MutableSeq`` objects can be initialized using a string
object, which will be converted to a ``bytes`` or ``bytearray`` object assuming
an ASCII encoding. Alternatively, a ``bytes`` or ``bytearray`` object can be
used, or an instance of any class inheriting from the new
``SequenceDataAbstractBaseClass`` abstract base class in ``Bio.Seq``. This
requires that the class implements the ``__len__`` and ``__getitem`` methods
Peter Cock's avatar
Peter Cock committed
that return the sequence length and sequence contents on demand. Initializing a
mdehoon's avatar
mdehoon committed
``Seq`` instance using an instance of a class inheriting from
``SequenceDataAbstractBaseClass`` allows the ``Seq`` object to be lazy, meaning
that its sequence is provided on demand only, without requiring to initialize
the full sequence. This feature is now used in ``BioSQL``, providing on-demand
sequence loading from an SQL database, as well as in a new parser for twoBit
(.2bit) sequence data added to ``Bio.SeqIO``. This is a lazy parser that allows
fast access to genome-size DNA sequence files by not having to read the full
genome sequence. The new ``_UndefinedSequenceData`` class in ``Bio.Seq``  also
inherits from ``SequenceDataAbstractBaseClass`` to represent sequences of known
length but unknown sequence contents. This provides an alternative to
``UnknownSeq``, which is now deprecated as its definition was ambiguous. For
example, in these examples the ``UnknownSeq`` is interpreted as a sequence with
a well-defined sequence contents::

    >>> s = UnknownSeq(3, character="A")
    >>> s.translate()
    UnknownSeq(1, character='K')
    >>> s + "A"
    Seq("AAAA")

A sequence object with an undefined sequence contents can now be created by
using ``None`` when creating the ``Seq`` object, together with the sequence
length. Trying to access its sequence contents raises an
``UndefinedSequenceError``::

    >>> s = Seq(None, length=6)
    >>> s
    Seq(None, length=6)
    >>> len(s)
    6
    >>> "A" in s
    Traceback (most recent call last):
    ...
    Bio.Seq.UndefinedSequenceError: Sequence content is undefined
    >>> print(s)
    Traceback (most recent call last):
    ....
    Bio.Seq.UndefinedSequenceError: Sequence content is undefined

Element assignment in Bio.PDB.Atom now returns "X" when the element cannot be
unambiguously guessed from the atom name, in accordance with PDB structures.

Bio.PDB entities now have a ``center_of_mass()`` method that calculates either
centers of gravity or geometry.

New method ``disordered_remove()`` implemented in Bio.PDB DisorderedAtom and
DisorderedResidue to remove children.

New module Bio.PDB.SASA implements the Shrake-Rupley algorithm to calculate
atomic solvent accessible areas without third-party tools.

Expected ``TypeError`` behaviour has been restored to the ``Seq`` object's
string like methods (fixing a regression in Biopython 1.78).

Leighton Pritchard's avatar
Leighton Pritchard committed
The KEGG ``KGML_Pathway`` KGML output was fixed to produce output that complies
with KGML v0.7.2.

Parsing motifs in ``pfm-four-rows`` format can now handle motifs with values
in scientific notation.

Parsing motifs in ``minimal`` MEME format will use ``nsites`` when making
the count matrix from the frequency matrix, instead of multiply the frequency
matrix by 1000000.

Bio.UniProt.GOA now parses Gene Product Information (GPI) files version 1.2,
files can be downloaded from the EBI ftp site:
ftp://ftp.ebi.ac.uk/pub/databases/GO/goa/

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Leighton Pritchard
- Vini Salazar (first contribution)
Peter Cock's avatar
Peter Cock committed
4 September 2020: Biopython 1.78
================================

This release of Biopython supports Python 3.6, 3.7 and 3.8. It has also been
tested on PyPy3.6.1 v7.1.1.

The main change is that ``Bio.Alphabet`` is no longer used. In some cases you
will now have to specify expected letters, molecule type (DNA, RNA, protein),
or gap character explicitly. Please consult the updated Tutorial and API
documentation for guidance. This simplification has sped up many ``Seq``
object methods. See https://biopython.org/wiki/Alphabet for more information.
``Bio.SeqIO.parse()`` is faster with "fastq" format due to small improvements
in the ``Bio.SeqIO.QualityIO`` module.

The ``SeqFeature`` object's ``.extract()`` method can now be used for
trans-spliced locations via an optional dictionary of references.

As in recent releases, more of our code is now explicitly available under
either our original "Biopython License Agreement", or the very similar but
more commonly used "3-Clause BSD License".  See the ``LICENSE.rst`` file for
more details.

Additionally, a number of small bugs and typos have been fixed with additions
to the test suite. There has been further work to follow the Python PEP8,
PEP257 and best practice standard coding style, and all of the tests have
been reformatted with the ``black`` tool to match the main code base.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Adam Sjøgren (first contribution)
- Chris Rands
Christian Brueffer's avatar
Christian Brueffer committed
- Christian Brueffer
- Damien Goutte-Gattat
- João Vitor F Cavalcante (first contribution)
Marie Crane's avatar
Marie Crane committed
- Marie Crane
- Yogesh Kulkarni (first contribution)
- Zheng Ruan
25 May 2020: Biopython 1.77
===========================
This release of Biopython supports Python 3.6, 3.7 and 3.8 It has also been
tested on PyPy3.6.1 v7.1.1-beta0.

**We have dropped support for Python 2 now.**

``pairwise2`` now allows the input of parameters with keywords and returns the
alignments as a list of ``namedtuples``.

The codon tables have been updated to NCBI genetic code table version 4.5,
which adds Cephalodiscidae mitochondrial as table 33.

Peter Cock's avatar
Peter Cock committed
Updated ``Bio.Restriction`` to the January 2020 release of REBASE.

A major contribution by Rob Miller to ``Bio.PDB`` provides new methods to
handle protein structure transformations using dihedral angles (internal
coordinates). The new framework supports lossless interconversion between
internal and cartesian coordinates, which, among other uses, simplifies the
analysis and manipulation of coordinates of proteins structures.

As in recent releases, more of our code is now explicitly available under
either our original "Biopython License Agreement", or the very similar but
more commonly used "3-Clause BSD License".  See the ``LICENSE.rst`` file for
more details.

Additionally, a number of small bugs and typos have been fixed with further
additions to the test suite. There has been further work to follow the Python
PEP8, PEP257 and best practice standard coding style, and all the main code
base has been reformatted with the ``black`` tool.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

adcrn's avatar
adcrn committed
- Alexander Decurnou (first contribution)
Andrey Raspopov's avatar
Andrey Raspopov committed
- Andrey Raspopov
- Artemi Bendandi (first contribution)
Peter Cock's avatar
Peter Cock committed
- Austin Varela (first contribution)
- Chris Daley
- Chris Rands
- Hielke Walinga (first contribution)
- Karthikeyan Singaravelan (first contribution)
- Konstantinos Zisis (first contribution)
- Michiel de Hoon
- Peter Cock
- Sergio Valqui
py-coder's avatar
py-coder committed
- Sujan Dulal (first contribution)
- Tianyi Shi (first contribution)
Peter Cock's avatar
Peter Cock committed
20 December 2019: Biopython 1.76
================================
Peter Cock's avatar
Peter Cock committed

This release of Biopython supports Python 2.7, 3.5, 3.6, 3.7 and 3.8. It has
also been tested on PyPy2.7.13 v7.1.1 and PyPy3.6.1 v7.1.1-beta0.

Peter Cock's avatar
Peter Cock committed
We intend this to be our final release supporting Python 2.7 and 3.5.
Peter Cock's avatar
Peter Cock committed
As in recent releases, more of our code is now explicitly available under
either our original "Biopython License Agreement", or the very similar but
more commonly used "3-Clause BSD License".  See the ``LICENSE.rst`` file for
more details.

Zisis Konstantinos's avatar
Zisis Konstantinos committed

``PDBParser`` and ``PDBIO`` now support PQR format file parsing and input/
output.

In addition to the mainstream ``x86_64`` aka ``AMD64`` CPU architecture, we
now also test every contribution on the ``ARM64``, ``ppc64le``, and ``s390x``
CPUs under Linux thanks to Travis CI. Further post-release testing done by
Debian and other packagers and distributors of Biopython also covers these
CPUs.

Peter Cock's avatar
Peter Cock committed
``Bio.motifs.PositionSpecificScoringMatrix.search()`` method has been
re-written: it now applies ``.calculate()`` to chunks of the sequence
to maintain a low memory footprint for long sequences.

Additionally, a number of small bugs and typos have been fixed with further
additions to the test suite. There has been further work to follow the Python
PEP8, PEP257 and best practice standard coding style, and more of the code
style has been reformatted with the ``black`` tool.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

Peter Cock's avatar
Peter Cock committed
- Chris Daley (first contribution)
Chris Rands's avatar
Chris Rands committed
- Chris Rands
- Christian Brueffer
- Ilya Flyamer (first contribution)
- Jakub Lipinski (first contribution)
- Michael R. Crusoe (first contribution)
Peter Cock's avatar
Peter Cock committed
- Michiel de Hoon
- Peter Cock
- Sergio Valqui
6 November 2019: Biopython 1.75
===============================
This release of Biopython supports Python 2.7, 3.5, 3.6, 3.7 and is expected
to work on the soon to be released Python 3.8. It has also been tested on
Peter Cock's avatar
Peter Cock committed
PyPy2.7.13 v7.1.1 and PyPy3.6.1 v7.1.1-beta0.
Peter Cock's avatar
Peter Cock committed

Note we intend to drop Python 2.7 support in early 2020.

The restriction enzyme list in ``Bio.Restriction`` has been updated to the
August 2019 release of REBASE.
Damien Goutte-Gattat's avatar
Damien Goutte-Gattat committed
``Bio.SeqIO`` now supports reading and writing files in the native format of
Christian Marck's DNA Strider program ("xdna" format, also used by Serial
Cloner), as well as reading files in the native formats of GSL Biotech's
Damien Goutte-Gattat's avatar
Damien Goutte-Gattat committed
SnapGene ("snapgene") and Textco Biosoftware's Gene Construction Kit ("gck").
``Bio.AlignIO`` now supports GCG MSF multiple sequence alignments as the "msf"
format (work funded by the National Marrow Donor Program).

The main ``Seq`` object now has string-like ``.index()`` and ``.rindex()``
methods, matching the existing ``.find()`` and ``.rfind()`` implementations.
The ``MutableSeq`` object retains its more list-like ``.index()`` behaviour.

The ``MMTFIO`` class has been added that allows writing of MMTF file format
files from a Biopython structure object. ``MMTFIO`` has a similar interface to
``PDBIO`` and ``MMCIFIO``, including the use of a ``Select`` class to write
out a specified selection. This final addition to read/write support for
PDB/mmCIF/MMTF in Biopython allows conversion between all three file formats.

Values from mmCIF files are now read in as a list even when they consist of a
single value. This change improves consistency and reduces the likelihood of
making an error, but will require user code to be updated accordingly.

`Bio.motifs.meme` has been updated to parse XML output files from MEME over
the plain-text output file. The goal of this change is to parse a more
structured data source with minimal loss of functionality upon future MEME
releases.

``Bio.PDB`` has been updated to support parsing REMARK 99 header entries from
PDB-style Astral files.
Joe Greener's avatar
Joe Greener committed

A new keyword parameter ``full_sequences`` was added to ``Bio.pairwise2``'s
pretty print method ``format_alignment`` to restore the output of local
alignments to the 'old' format (showing the whole sequences including the
un-aligned parts instead of only showing the aligned parts).

A new function ``charge_at_pH(pH)`` has been added to ``ProtParam`` and
``IsoelectricPoint`` in ``Bio.SeqUtils``.

The ``PairwiseAligner`` in ``Bio.Align`` was extended to allow generalized
pairwise alignments, i.e. alignments of any Python object, for example
three-letter amino acid sequences, three-nucleotide codons, and arrays of
integers.

A new module ``substitution_matrices`` was added to ``Bio.Align``, which
includes an ``Array`` class that can be used as a substitution matrix. As
the ``Array`` class is a subclass of a numpy array, mathematical operations
can be applied to it directly, and C code that makes use of substitution
matrices can directly access the numerical values stored in the substitution
matrices. This module is intended as a replacement of ``Bio.SubsMat``,
which is currently unmaintained.

As in recent releases, more of our code is now explicitly available under
either our original "Biopython License Agreement", or the very similar but
more commonly used "3-Clause BSD License".  See the ``LICENSE.rst`` file for
more details.

Additionally, a number of small bugs and typos have been fixed with further
additions to the test suite, and there has been further work to follow the
Python PEP8, PEP257 and best practice standard coding style. We have also
started to use the ``black`` Python code formatting tool.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

Damien Goutte-Gattat's avatar
Damien Goutte-Gattat committed
- Damien Goutte-Gattat (first contribution)
Joe Greener's avatar
Joe Greener committed
- Harry Jubb
Joe Greener's avatar
Joe Greener committed
- Joe Greener
- Kiran Mukhyala (first contribution)
- Konstantin Vdovkin
Mark Amery's avatar
Mark Amery committed
- Mark Amery
Peter Cock's avatar
Peter Cock committed
- Michiel de Hoon
mm_mac's avatar
mm_mac committed
- Mike Moritz (first contribution)
anilbey's avatar
anilbey committed
- Mustafa Anil Tuncel
nimne's avatar
nimne committed
- Nick Negretti
- Osvaldo Zagordi (first contribution)
- Peter Kerpedjiev
- Sergio Valqui
Spencer Bliven's avatar
Spencer Bliven committed
- Spencer Bliven
Joe Greener's avatar
Joe Greener committed

16 July 2019: Biopython 1.74
============================
peterjc's avatar
peterjc committed
This release of Biopython supports Python 2.7, 3.4, 3.5, 3.6 and 3.7. However,
it will be the last release to support Python 3.4 which is now at end-of-life.
peterjc's avatar
peterjc committed
It has also been tested on PyPy2.7 v6.0.0 and PyPy3.5 v6.0.0.

As in recent releases, more of our code is now explicitly available under
either our original "Biopython License Agreement", or the very similar but
more commonly used "3-Clause BSD License".  See the ``LICENSE.rst`` file for
more details.
peterjc's avatar
peterjc committed
Our core sequence objects (``Seq``, ``UnknownSeq``, and ``MutableSeq``) now
have a string-like ``.join()`` method.

The NCBI now allows longer accessions in the GenBank file LOCUS line, meaning
the fields may not always follow the historical column based positions. We
no longer give a warning when parsing these. We now allow writing such files
(although with a warning as support for reading them is not yet widespread).

peterjc's avatar
peterjc committed
Support for the ``mysqlclient`` package, a fork of MySQLdb, has been added.
We now capture the IDcode field from PDB Header records.

``Bio.pairwise2``'s pretty-print output from ``format_alignment`` has been
optimized for local alignments: If they do not consist of the whole sequences,
only the aligned section of the sequences are shown, together with the start
positions of the sequences (in 1-based notation). Alignments of lists will now
also be prettily printed.

``Bio.SearchIO`` now supports parsing the text output of the HHsuite protein
sequence search tool. The format name is ``hhsuite2-text`` and
``hhsuite3-text``, for versions 2 and 3 of HHsuite, respectively.

``Bio.SearchIO`` HSP objects has a new attribute called ``output_index``. This
attribute is meant for capturing the order by which the HSP were output in the
parsed file and is set with a default value of -1 for all HSP objects. It is
also used for sorting the output of ``QueryResult.hsps``.

bow's avatar
bow committed
``Bio.SeqIO.AbiIO`` has been updated to preserve bytes value when parsing. The
goal of this change is make the parser more robust by being able to extract
string-values that are not utf-8-encoded. This affects all tag values, except
for ID and description values, where they need to be extracted as strings
to conform to the ``SeqRecord`` interface. In this case, the parser will
attempt to decode using ``utf-8`` and fall back to the system encoding if that
fails. This change affects Python 3 only.

``Bio.motifs.mast`` has been updated to parse XML output files from MAST over
the plain-text output file. The goal of this change is to parse a more
structured data source with minimal loss of functionality upon future MAST
releases. Class structure remains the same plus an additional attribute
``Record.strand_handling`` required for diagram parsing.

``Bio.Entrez`` now automatically retries HTTP requests on failure. The
maximum number of tries and the sleep between them can be configured by
changing ``Bio.Entrez.max_tries`` and ``Bio.Entrez.sleep_between_tries``.
(The defaults are 3 tries and 15 seconds, respectively.)

The restriction enzyme list in ``Bio.Restriction`` has been updated to the May
2019 release of REBASE.

All tests using the older print-and-compare approach have been replaced by
unittests following Python's standard testing framework.

On the documentation side, all the public modules, classes, methods and
functions now have docstrings (built in help strings). Furthermore, the PDF
version of the *Biopython Tutorial and Cookbook* now uses syntax coloring
for code snippets.

Additionally, a number of small bugs and typos have been fixed with further
additions to the test suite, and there has been further work to follow the
Python PEP8, PEP257 and best practice standard coding style.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Andrey Raspopov (first contribution)
- Antony Lee
- Benjamin Rowell (first contribution)
- Bernhard Thiel
- Brandon Invergo
kaskales's avatar
kaskales committed
- Catherine Lesuisse
Chris Rands's avatar
Chris Rands committed
- Chris Rands
- Deepak Khatri (first contribution)
Peter Cock's avatar
Peter Cock committed
- Gert Hulselmans
- Jared Andrews
- Jens Thomas (first contribution)
- Konstantin Vdovkin
- Lenna Peterson
- Markus Piotrowski
- Micky Yun Chan (first contribution)
- Peter Cock
Peter Cock's avatar
Peter Cock committed
- Rob Miller (first contribution)
- Sergio Valqui
- Victor Lin
- Wibowo 'Bow' Arindrarto
- Zheng Ruan
peterjc's avatar
peterjc committed
18 December 2018: Biopython 1.73
================================
This release of Biopython supports Python 2.7, 3.4, 3.5, 3.6 and 3.7.
It has also been tested on PyPy2.7 v6.0.0 and PyPy3.5 v6.0.0.

As in recent releases, more of our code is now explicitly available under
either our original "Biopython License Agreement", or the very similar but
more commonly used "3-Clause BSD License".  See the ``LICENSE.rst`` file for
more details.

The dictionary-like indexing in SeqIO and SearchIO will now explicitly preserve
record order to match a behaviour change in the Python standard dict object.
This means looping over the index will load the records in the on-disk order,
which will be much faster (previously it would be effectively at random, based
on the key hash sorting).

The "grant" matrix in Bio.SubsMat.MatrixInfo has been replaced as our original
values taken from Gerhard Vogt's old webpages at EMBL Heidelberg were
discovered to be in error. The new values have been transformed following
Vogt's approach, taking the global maximum 215 minus the similarity scores
from the original paper Grantham (1974), to give a distance measure.

Additionally, a number of small bugs and typos have been fixed with further
additions to the test suite, and there has been further work to follow the
Python PEP8, PEP257 and best practice standard coding style.

Double-quote characters in GenBank feature qualifier values in ``Bio.SeqIO``
are now escaped as per the NCBI standard. Improperly escaped values trigger a
warning on parsing.

Chris Rands's avatar
Chris Rands committed
There is a new command line wrapper for the BWA-MEM sequence mapper.

Chris Rands's avatar
Chris Rands committed
The string-based FASTA parsers in ``Bio.SeqIO.FastaIO`` have been optimised,
which also speeds up parsing FASTA files using ``Bio.SeqIO.parse()``.
Chris Rands's avatar
Chris Rands committed

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Alona Levy-Jurgenson (first contribution)
- Chris Rands
- Darcy Mason (first contribution)
- Devang Thakkar (first contribution)
- Ivan Antonov (first contribution)
- Jeremy LaBarage (first contribution)
- Juraj Szász (first contribution)
- Konstantin Vdovkin (first contribution)
- Manuel Nuno Melo (first contribution)
- Nick Negretti (first contribution)
- Rona Costello (first contribution)
Peter Cock's avatar
Peter Cock committed
- Spencer Bliven
bow's avatar
bow committed
- Wibowo 'Bow' Arindrarto
- Yi Hsiao (first contribution)
peterjc's avatar
peterjc committed
21 June 2018: Biopython 1.72
============================
peterjc's avatar
peterjc committed
This release of Biopython supports Python 2.7, 3.4, 3.5 and 3.6.
It has also been tested on PyPy2.7 v6.0.0 and PyPy3.5 v6.0.0.

Internal changes to Bio.SeqIO have sped up the SeqRecord .format method and
SeqIO.write (especially when used in a for loop).
The MAF alignment indexing in Bio.AlignIO.MafIO has been updated to use
Peter Cock's avatar
Peter Cock committed
inclusive end coordinates to better handle searches at end points. This
will require you to rebuild any existing MAF index files.

In this release more of our code is now explicitly available under either our
original "Biopython License Agreement", or the very similar but more commonly
used "3-Clause BSD License".  See the ``LICENSE.rst`` file for more details.

Peter Cock's avatar
Peter Cock committed
The Entrez module now supports the NCBI API key. Also you can now set a custom
Peter Cock's avatar
Peter Cock committed
directory for DTD and XSD files. This allows Entrez to be used in environments
like AWS Lambda, which restricts write access to specific directories.
mdehoon's avatar
mdehoon committed
Improved support for parsing NCBI Entrez XML files that use XSD schemas.
Internal changes to our C code mean that NumPy is no longer required at
compile time - only at run time (and only for those modules which use NumPy).

Seq, UnknownSeq, MutableSeq and derived classes now support integer
multiplication methods, matching native Python string methods.

A translate method has been added to Bio.SeqFeature that will extract a
feature and translate it using the codon_start and transl_table qualifiers
of the feature if they are present.

Bio.SearchIO is no longer considered experimental, and so it does not raise
warnings anymore when imported.

mdehoon's avatar
mdehoon committed
A new pairwise sequence aligner is available in Bio.Align, as an alternative
to the existing pairwise sequence aligner in Bio.pairwise2.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Benjamin Vaisvil (first contribution)
- Chris Rands
- Connor T. Skennerton
Peter Cock's avatar
Peter Cock committed
- Francesco Gastaldello
mdehoon's avatar
mdehoon committed
- Michiel de Hoon
- Pamela Russell (first contribution)
- Spencer Bliven
- Stefans Mezulis
- Wibowo 'Bow' Arindrarto

Peter Cock's avatar
Peter Cock committed
3 April 2018: Biopython 1.71
============================
peterjc's avatar
peterjc committed

This release of Biopython supports Python 2.7, 3.4, 3.5 and 3.6.
It has also been tested on PyPy2.7 v5.10.0 and PyPy3.5 v5.10.1.
Python 3 is the primary development platform for Biopython. We will drop
support for Python 2.7 no later than 2020, in line with the end-of-life or
sunset date for Python 2.7 itself.

Encoding issues have been fixed in several parsers when reading data files
with non-ASCII characters, like accented letters in people's names. This would
raise ``UnicodeDecodeError: 'ascii' codec can't decode byte ...`` under some
system locale settings.

Bio.KEGG can now parse Gene files.

The multiple-sequence-alignment object used by Bio.AlignIO etc now supports
a per-column annotation dictionary, useful for richly annotated alignments
in the Stockholm/PFAM format.

The SeqRecord object now has a translate method, following the approach used
for its existing reverse_complement method etc.

Peter Cock's avatar
Peter Cock committed
The output of function ``format_alignment`` in ``Bio.pairwise2`` for displaying
a pairwise sequence alignment as text now indicates gaps and mis-matches.
Peter Cock's avatar
Peter Cock committed
Bio.SeqIO now supports reading and writing two-line-per-record FASTA files
under the format name "fasta-2line", useful if you wish to work without
line-wrapped sequences.

Joe Greener's avatar
Joe Greener committed
Bio.PDB now contains a writer for the mmCIF file format, which has been the
standard PDB archive format since 2014. This allows structural objects to be
written out and facilitates conversion between the PDB and mmCIF file formats.

Bio.Emboss.Applications has been updated to fix a wrong parameter in fuzznuc
wrapper and include a new wrapper for fuzzpro.

The restriction enzyme list in ``Bio.Restriction`` has been updated to the
November 2017 release of REBASE.

New codon tables 27-31 from NCBI (NCBI genetic code table version 4.2)
MarkusPiotrowski's avatar
MarkusPiotrowski committed
were added to Bio.Data.CodonTable. Note that tables 27, 28 and 31 contain
no dedicated stop codons; the stop codons in these codes have a context
dependent encoding as either STOP or as amino acid.
IO functions such as ``SeqIO.parse`` now accept any objects which can be passed
to the builtin ``open`` function. Specifically, this allows using
``pathlib.Path`` objects under Python 3.6 and newer, as per `PEP 519
<https://www.python.org/dev/peps/pep-0519/>`_.
azneto's avatar
azneto committed
Bio.SearchIO can now parse InterProScan XML files.

peterjc's avatar
peterjc committed
For Python 3 compatibility, comparison operators for the entities within a
Bio.PDB Structure object were implemented. These allow the comparison of
models, chains, residues, and atoms with the common operators  (==, !=, >, ...)
Comparisons are based on IDs and take the parents of the entity up to the
model level into account. For consistent behaviour of all entities the
operators for atoms were modified to also consider the parent IDs. NOTE: this
represents a change in behaviour in respect to v1.70 for Atom comparisons. In
order to mimic the behaviour of previous versions, comparison will have to be
done for Atom IDs and alternative locations specifically.
In this release more of our code is now explicitly available under either our
original "Biopython License Agreement", or the very similar but more commonly
used "3-Clause BSD License".  See the ``LICENSE.rst`` file for more details.

Shyam Saladi's avatar
Shyam Saladi committed
Additionally, a number of small bugs and typos have been fixed with further
additions to the test suite, and there has been further work to follow the
Python PEP8, PEP257 and best practice standard coding style.
Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Adhemar Zerlotini
Peter Cock's avatar
Peter Cock committed
- Ariel Aptekmann
Peter Cock's avatar
Peter Cock committed
- Christian Brueffer
- Connor T. Skennerton
- Erik Cederstrand (first contribution)
- Fei Qi (first contribution)
- Francesco Gastaldello
- James Jeffryes (first contribution)
- Jerven Bolleman (first contribution)
Peter Cock's avatar
Peter Cock committed
- Joe Greener (first contribution)
- Joerg Schaarschmidt (first contribution)
- João Rodrigues
Peter Cock's avatar
Peter Cock committed
- Jun Aruga (first contribution)
- Kai Blin
- Kozo Nishida
- Lewis A. Marshall (first contribution)
- Michiel de Hoon
- Nicolas Fontrodona (first contribution)
- Philip Bergstrom (first contribution)
- rht (first contribution)
Saket Choudhary's avatar
Saket Choudhary committed
- Saket Choudhary
- Shuichiro MAKIGAKI (first contribution)
Shyam Saladi's avatar
Shyam Saladi committed
- Shyam Saladi (first contribution)
- Spencer Bliven
- Stefans Mezulis
- Yasar L. Ahmed (first contribution)
Zachary Sailer's avatar
Zachary Sailer committed
- Zachary Sailer (first contribution)
- Zaid Ur-Rehman (first contribution)
peterjc's avatar
peterjc committed
10 July 2017: Biopython 1.70
============================
This release of Biopython supports Python 2.7, 3.4, 3.5 and 3.6 (we have now
dropped support for Python 3.3). It has also been tested on PyPy v5.7,
peterjc's avatar
peterjc committed
PyPy3.5 v5.8 beta, and Jython 2.7 (although support for Jython is deprecated).
Biopython now has a new logo, contributed by Patrick Kunzmann. Drawing on our
original logo and the current Python logo, this shows a yellow and blue snake
forming a double helix.

For installation Biopython now assumes ``setuptools`` is present, and takes
advantage of this to declare we require NumPy at install time (except under
Jython). This should help ensure ``pip install biopython`` works smoothly.

Bio.AlignIO now supports Mauve's eXtended Multi-FastA (XMFA) file format
under the format name "mauve" (contributed by Eric Rasche).

Bio.ExPASy was updated to fix fetching PROSITE and PRODOC records, and return
text-mode handles for use under Python 3.

Two new arguments for reading and writing blast-xml files have been added
to the Bio.SearchIO functions (read/parse and write, respectively). They
are 'use_raw_hit_ids' and 'use_raw_query_ids'. Check out the relevant
SearchIO.BlastIO documentation for a complete description of what these
arguments do.

Bio.motifs was updated to support changes in MEME v4.11.4 output.

Peter Cock's avatar
Peter Cock committed
The Bio.Seq sequence objects now have a ``.count_overlap()`` method to
supplement the Python string like non-overlap based ``.count()`` method.

The Bio.SeqFeature location objects can now be compared for equality.

Bio.Phylo.draw_graphviz is now deprecated. We recommend using Bio.Phylo.draw
instead, or another library or program if more advanced plotting functionality
is needed.

In Bio.Phylo.TreeConstruction, the DistanceMatrix class (previously
_DistanceMatrix) has a new method 'format_phylip' to write Phylip-compatible
Peter Cock's avatar
Peter Cock committed
distance matrix files (contributed by Jordan Willis).
Additionally, a number of small bugs have been fixed with further additions
to the test suite, and there has been further work to follow the Python PEP8,
PEP257 and best practice standard coding style.

peterjc's avatar
peterjc committed
Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Aaron Kitzmiller (first contribution)
- Adil Iqbal (first contribution)
- Allis Tauri
Peter Cock's avatar
Peter Cock committed
- Andrew Guy
- Ariel Aptekmann (first contribution)
- Bertrand Caron (first contribution)
- Chris Rands (first contribution)
- Connor T. Skennerton
- Eric Rasche
Peter Cock's avatar
Peter Cock committed
- Francesco Gastaldello
- François Coste (first contribution)
Peter Cock's avatar
Peter Cock committed
- Frederic Sapet (first contribution)
- Jimmy O'Donnell (first contribution)
- Jared Andrews (first contribution)
peterjc's avatar
peterjc committed
- John Kern (first contribution)
- Jordan Willis (first contribution)
- João Rodrigues
- Mateusz Korycinski (first contribution)
- Maximilian Greil
- Michiel de Hoon
- morrme (first contribution)
Peter Cock's avatar
Peter Cock committed
- Noam Kremen (first contribution)
- Patrick Kunzmann (first contribution)
peterjc's avatar
peterjc committed
- Peter Cock
- Rasmus Fonseca (first contribution)
- Rodrigo Dorantes-Gilardi (first contribution)
peterjc's avatar
peterjc committed
- Sacha Laurent (first contribution)
- Sourav Singh
- Ted Cybulski (first contribution)
- Tiago Antao
- Wibowo 'Bow' Arindrarto
peterjc's avatar
peterjc committed
6 April 2017: Biopython 1.69
============================
peterjc's avatar
peterjc committed

This release of Biopython supports Python 2.7, 3.3, 3.4, 3.5 and 3.6 (we have
now dropped support for Python 2.6). It has also been tested on PyPy v5.7,
PyPy3.5 v5.7 beta, and Jython 2.7.
peterjc's avatar
peterjc committed

We have started to dual-license Biopython under both our original liberal
"Biopython License Agreement", and the very similar but more commonly used
"3-Clause BSD License". In this release a small number of the Python files
are explicitly available under either license, but most of the code remains
under the "Biopython License Agreement" only. See the ``LICENSE.rst`` file
for more details.
We now expect and take advantage of NumPy under PyPy, and compile most of the
Biopython C code modules as well.

Bio.AlignIO now supports the UCSC Multiple Alignment Format (MAF) under the
format name "maf", using new module Bio.AlignIO.MafIO which also offers
indexed access to these potentially large files using SQLite3 (contributed by
Andrew Sczesnak, with additional refinements from Adam Novak).

Bio.SearchIO.AbiIO has been extended to support parsing FSA files. The
underlying format (ABIF) remains the same as AB1 files and so the string
'abif' is the expected format argument in the main SeqIO functions. AbiIO
determines whether the file is AB1 or FSA based on the presence of specific
tags.

The Uniprot parser is now able to parse "submittedName" elements in XML files.

The NEXUS parser handling of internal node comments has been improved, which
should help if working with tools like the BEAST TreeAnnotator. Slashes are
now also allowed in identifiers.

New parser for ExPASy Cellosaurus, a cell line database, cell line catalogue,
and cell line ontology (contributed by Steve Marshall).

For consistency the Bio.Seq module now offers a complement function (already
available as a method on the Seq and MutableSeq objects).

The SeqFeature object's qualifiers is now an explicitly ordered dictionary
(note that as of Python 3.6 the Python dict is ordered by default anyway).
This helps reproduce GenBank/EMBL files on input/output.

The Bio.SeqIO UniProt-XML parser was updated to cope with features with
unknown locations which can be found in mass spec data.

The Bio.SeqIO GenBank, EMBL, and IMGT parsers now record the molecule type
from the LOCUS/ID line explicitly in the record.annotations dictionary.
The Bio.SeqIO EMBL parser was updated to cope with more variants seen in
patent data files, and the related IMGT parser was updated to cope with
IPD-IMGT/HLA database files after release v3.16.0 when their ID line changed.
The GenBank output now uses colon space to match current NCBI DBLINK lines.
The Bio.Affy package supports Affymetrix version 4 of the CEL file format,
in addition to version 3.

The restriction enzyme list in ``Bio.Restriction`` has been updated to the
February 2017 release of REBASE.

Bio.PDB.PDBList now can download PDBx/mmCif (new default), PDB (old default),
PDBML/XML and mmtf format protein structures.  This is inline with the RCSB
recommendation to use PDBx/mmCif and deprecate the PDB file format. Biopython
already has support for parsing mmCif files.

Additionally, a number of small bugs have been fixed with further additions
to the test suite, and there has been further work to follow the Python PEP8,
PEP257 and best practice standard coding style.

Many thanks to the Biopython developers and community for making this release
possible, especially the following contributors:

- Aaron Rosenfeld
- Adam Kurkiewicz (first contribution)
- Adam Novak (first contribution)
- Adrian Altenhoff (first contribution)
- Allis Tauri (first contribution)
Peter Cock's avatar
Peter Cock committed
- Andrew Dalke
- Andrew Guy (first contribution)
- Andrew Sczesnak (first contribution)
- Ben Fulton
- Bernhard Thiel (first contribution)
- Bertrand Néron
- Blaise Li (first contribution)
Peter Cock's avatar
Peter Cock committed
- Brandon Carter (first contribution)
- Brandon Invergo
- Carlos Pena
- Carlos Ríos
- Chris Warth
- Emmanuel Noutahi
- Foen Peng (first contribution)
peterjc's avatar
peterjc committed
- Francesco Gastaldello (first contribution)
- Francisco Pina-Martins (first contribution)
- Hector Martinez (first contribution)
- Jacek Śmietański
- Jack Twilley (first contribution)
- Jeroen Van Goey (first contribution)
- Joshua Meyers (first contribution)
- Kurt Graff (first contribution)
- Lenna Peterson
- Leonhard Heizinger (first contribution)
- Marcin Magnus (first contribution)
- Markus Piotrowski
- Maximilian Greil (first contribution)
- Michał J. Gajda (first contribution)
- Michiel de Hoon
- Milind Luthra (first contribution)
- Oscar G. Garcia (first contribution)
- Owen Solberg
- Peter Cock
- Richard Neher (first contribution)
- Sebastian Bassi
- Sourav Singh (first contribution)
peterjc's avatar
peterjc committed
- Spencer Bliven (first contribution)
- Stefans Mezulis
- Steve Bond
- Steve Marshall (first contribution)
- Uri Laserson
- Veronika Berman (first contribution)
- Vincent Davis
- Wibowo 'Bow' Arindrarto
peterjc's avatar
peterjc committed

25 August 2016: Biopython 1.68
==============================

This release of Biopython supports Python 2.6, 2.7, 3.3, 3.4 and 3.5, but
this will be our final release to run on Python 2.6. It has also been tested
on PyPy 5.0, PyPy3 version 2.4, and Jython 2.7.

Bio.PDB has been extended to parse the RSSB's new binary Macromolecular