Merge pull request #126 from pkrusche/master

Fixed exception when reading single breakends
Do not maintain the order of INFO fields within records

Using an ordinary dict instead of an OrderdDict for the INFO fields makes
parsing faster. The INFO fields are sorted by the VCF writer where all fields
defined in the VCF header go first and in the same order, followed by the
remaining fields in alpabetical order. Note that this make writing slower.

We lose two things:

1. Getting the INFO fields in original order from a record when using PyVCF as
   a library (but I don't think most users are expecting this anyway).
2. Preserving the original order of the INFO fields when writing (but the
   order is predictable).

The following are some simple benchmarks, starting with just parsing:

1. Without this change (using OrderedDict):

       In [1]: %timeit list(vcf.Reader(open('vcf/test/1kg.sites.vcf')))
       100 loops, best of 3: 15 ms per loop

2. With this change (using dict):

       In [1]: %timeit list(vcf.Reader(open('vcf/test/1kg.sites.vcf')))
       100 loops, best of 3: 10 ms per loop

Now parsing the same file and writing it back to VCF:

1. Without this change (using OrderedDict, no sorting):

       In [1]: %%timeit
          ...: reader = vcf.Reader(open('vcf/test/1kg.sites.vcf'))
          ...: writer = vcf.Writer(open(os.devnull, 'w'), reader)
          ...: for record in reader:
          ...:     writer.write_record(record)
          ...:
       10 loops, best of 3: 22.7 ms per loop

2. With half this change (using dict, no sorting):

       In [1]: %%timeit
          ...: reader = vcf.Reader(open('vcf/test/1kg.sites.vcf'))
          ...: writer = vcf.Writer(open(os.devnull, 'w'), reader)
          ...: for record in reader:
          ...:     writer.write_record(record)
          ...:
       100 loops, best of 3: 16.5 ms per loop

3. With this change (using dict, sorting during write):

       In [6]: %%timeit
          ...: reader = vcf.Reader(open('vcf/test/1kg.sites.vcf'))
          ...: writer = vcf.Writer(open(os.devnull, 'w'), reader)
          ...: for record in reader:
          ...:     writer.write_record(record)
          ...:
       100 loops, best of 3: 17.7 ms per loop

Fixes GitHub issue #96.
Merge pull request #128 from martijnvermaat/no-info-order

Do not maintain the order of INFO fields within records
Fixed tox.ini error regarding duplicate test section.

  File "/usr/local/bin/tox", line 9, in <module>
    load_entry_point('tox==1.6.1', 'console_scripts', 'tox')()
  File "/usr/local/lib/python2.7/dist-packages/tox/_cmdline.py", line
25, in main
    config = parseconfig(args, 'tox')
  File "/usr/local/lib/python2.7/dist-packages/tox/_config.py", line 44,
in parseconfig
    parseini(config, inipath)
  File "/usr/local/lib/python2.7/dist-packages/tox/_config.py", line
187, in __init__
    self._cfg = py.iniconfig.IniConfig(config.toxinipath)
  File "/usr/local/lib/python2.7/dist-packages/py/_iniconfig.py", line
67, in __init__
    self._raise(lineno, 'duplicate section %r'%(section, ))
  File "/usr/local/lib/python2.7/dist-packages/py/_iniconfig.py", line
75, in _raise
    raise ParseError(self.path, lineno, msg)
py._iniconfig.ParseError:
/home/smilefreak/MerrimanSelectionPipeline/PyVCF/tox.ini:30: duplicate
section 'testenv:py32'
Merge pull request #129 from smilefreak/toxini

Fixed tox.ini error regarding duplicate test section.
Fix incorrect and missing reserved INFO/FORMAT fields

The reserved HOMSEQ INFO field was incorrectly defined as Integer and some
other fields listed in the VCF spec were missing.

Fixes #130