[Biopython-dev] float('nan') fails on Python 2.5 on Windows (PAML)

Peter Cock p.j.a.cock at googlemail.com
Thu Jul 21 20:48:38 UTC 2011

On Sun, Jun 5, 2011 at 10:51 PM, Peter wrote:
> Hi all,
> As explained in PEP 754, prior to Python 2.6 float('inf'), float('-inf')
> and also float('nan') were passed to the underlying C library, which
> may or may not return the IEEE special floating point value for
> infinity, minus infinity or nan. See:
> http://www.python.org/dev/peps/pep-0754/
> This is the root cause of this unit test failure on Windows Python 2.5,
> ...

The related problem of float("nan") on Python 2.5 or older on
Windows is the cause of this problem in the new PAML code too:


ValueError: invalid literal for float(): nan

I guess _parse_codeml.py might need something like this:

    _float = float
except ValueError:
    def _float(txt):
            return float(text)
        except ValueError, e:
            if txt=="nan":
                return XXX
                raise e

And then use the nan safe _float function in the parser.

Unless anyone has a nicer solution?


More information about the Biopython-dev mailing list