bx.intervals.io module

Support for reading and writing genomic intervals from delimited text files.

class bx.intervals.io.BitsetSafeReaderWrapper(reader, lens=None)

Bases: NiceReaderWrapper

exception bx.intervals.io.FieldFormatError(*args, **kwargs)

Bases: ParseError

class bx.intervals.io.GenomicInterval(reader, fields, chrom_col, start_col, end_col, strand_col, default_strand, fix_strand=False)

Bases: TableRow

A genomic interval stored in a set of fields (a row of a table)

copy()
class bx.intervals.io.GenomicIntervalReader(input, chrom_col=0, start_col=1, end_col=2, strand_col=5, default_strand='+', return_header=True, return_comments=True, force_header=None, fix_strand=False, comment_lines_startswith=None, allow_spaces=False)

Bases: TableReader

Reader for iterating a set of intervals in a tab separated file. Can also parse header and comment lines if requested.

>>> from bx.tabular.io import Comment, Header
>>> r = GenomicIntervalReader( [ "#chrom\tname\tstart\tend\textra",
...               "chr1\tfoo\t1\t100\txxx",
...               "chr2\tbar\t20\t300\txxx",
...               "#I am a comment",
...               "chr2\tbar\t20\t300\txxx" ], start_col=2, end_col=3 )
>>> header = next(r)
>>> elements = list(r)
>>> elements.insert(0, header)
>>> assert isinstance(elements[0], Header)
>>> str(elements[0])
'#chrom\tname\tstart\tend\textra'
>>> assert isinstance(elements[1], GenomicInterval)
>>> print(elements[1].start, elements[1].end)
1 100
>>> str(elements[1])
'chr1\tfoo\t1\t100\txxx'
>>> elements[1].start = 30
>>> print(elements[1].start, elements[1].end)
30 100
>>> str(elements[1])
'chr1\tfoo\t30\t100\txxx'
>>> assert isinstance(elements[2], GenomicInterval)
>>> assert isinstance(elements[3], Comment)
>>> assert isinstance(elements[4], GenomicInterval)
binned_bitsets(upstream_pad=0, downstream_pad=0, lens=None)
parse_row(line)
exception bx.intervals.io.MissingFieldError(*args, **kwargs)

Bases: ParseError

class bx.intervals.io.NiceReaderWrapper(reader, **kwargs)

Bases: GenomicIntervalReader

>>> from bx.tabular.io import Header
>>> r = NiceReaderWrapper(["#chrom\tname\tstart\tend\textra",
...                        "chr1\tfoo\t1\t100\txxx",
...                        "chr2\tbar\t20\t300\txxx",
...                        "#I am a comment",
...                        "chr2\tbar\t20\t300\txxx" ], start_col=2, end_col=3 )
>>> assert isinstance(next(r), Header)
>>> assert r.current_line == '#chrom\tname\tstart\tend\textra', r.current_line
>>> assert len([_ for _ in r]) == 4
iterwrapper()
exception bx.intervals.io.StrandFormatError(*args, **kwargs)

Bases: ParseError