Returns a table providing access to data from a variant call file (VCF).
    E.g.::

        >>> import petl as etl
        >>> # activate bio extensions
        ... import petlx.bio
        >>> table1 = etl.fromvcf('fixture/sample.vcf')
        >>> table1.look(truncate=20)
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | CHROM | POS     | ID          | REF | ALT    | QUAL | FILTER  | INFO                 | NA00001              | NA00002              | NA00003              |
        +=======+=========+=============+=====+========+======+=========+======================+======================+======================+======================+
        | '19'  |     111 | None        | 'A' | [C]    |  9.6 | None    | {}                   | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '19'  |     112 | None        | 'A' | [G]    |   10 | None    | {}                   | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '20'  |   14370 | 'rs6054257' | 'G' | [A]    |   29 | []      | {'DP': 14, 'H2': Tru | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '20'  |   17330 | None        | 'T' | [A]    |    3 | ['q10'] | {'DP': 11, 'NS': 3,  | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '20'  | 1110696 | 'rs6040355' | 'A' | [G, T] |   67 | []      | {'DP': 10, 'AA': 'T' | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        ...

def fromvcf(filename, chrom=None, start=None, stop=None, samples=True):
    """
    Returns a table providing access to data from a variant call file (VCF).
    E.g.::

        >>> import petl as etl
        >>> # activate bio extensions
        ... import petlx.bio
        >>> table1 = etl.fromvcf('fixture/sample.vcf')
        >>> table1.look(truncate=20)
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | CHROM | POS     | ID          | REF | ALT    | QUAL | FILTER  | INFO                 | NA00001              | NA00002              | NA00003              |
        +=======+=========+=============+=====+========+======+=========+======================+======================+======================+======================+
        | '19'  |     111 | None        | 'A' | [C]    |  9.6 | None    | {}                   | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '19'  |     112 | None        | 'A' | [G]    |   10 | None    | {}                   | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '20'  |   14370 | 'rs6054257' | 'G' | [A]    |   29 | []      | {'DP': 14, 'H2': Tru | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '20'  |   17330 | None        | 'T' | [A]    |    3 | ['q10'] | {'DP': 11, 'NS': 3,  | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        | '20'  | 1110696 | 'rs6040355' | 'A' | [G, T] |   67 | []      | {'DP': 10, 'AA': 'T' | Call(sample=NA00001, | Call(sample=NA00002, | Call(sample=NA00003, |
        +-------+---------+-------------+-----+--------+------+---------+----------------------+----------------------+----------------------+----------------------+
        ...

    """

    return VCFView(filename, chrom=chrom, start=start, stop=stop,
                   samples=samples)