def gff3lookup(features, facet='seqid'): """ Build a GFF3 feature lookup based on interval trees. See also :func:`petlx.interval.facetintervallookup`. .. versionadded:: 0.2 """ return facetintervallookup(features, facet=facet, start='start', stop='end')
def test_facetintervallookup(): table = (('type', 'start', 'stop', 'value'), ('apple', 1, 4, 'foo'), ('apple', 3, 7, 'bar'), ('orange', 4, 9, 'baz')) lkp = facetintervallookup(table, facet='type', start='start', stop='stop') actual = lkp['apple'].find(1, 2) expect = [('apple', 1, 4, 'foo')] ieq(expect, actual) actual = lkp['apple'].find(2, 4) expect = [('apple', 1, 4, 'foo'), ('apple', 3, 7, 'bar')] ieq(expect, actual) actual = lkp['apple'].find(2, 5) expect = [('apple', 1, 4, 'foo'), ('apple', 3, 7, 'bar')] ieq(expect, actual) actual = lkp['orange'].find(2, 5) expect = [('orange', 4, 9, 'baz')] ieq(expect, actual) actual = lkp['orange'].find(9, 14) expect = [] ieq(expect, actual) actual = lkp['orange'].find(19, 140) expect = [] ieq(expect, actual) actual = lkp['apple'].find(1) expect = [] ieq(expect, actual) actual = lkp['apple'].find(2) expect = [('apple', 1, 4, 'foo')] ieq(expect, actual) actual = lkp['apple'].find(4) expect = [('apple', 3, 7, 'bar')] ieq(expect, actual) actual = lkp['apple'].find(5) expect = [('apple', 3, 7, 'bar')] ieq(expect, actual) actual = lkp['orange'].find(5) expect = [('orange', 4, 9, 'baz')] ieq(expect, actual)
def test_facetintervallookup_compound(): table = (('type', 'variety', 'start', 'stop', 'value'), ('apple', 'cox', 1, 4, 'foo'), ('apple', 'fuji', 3, 7, 'bar'), ('orange', 'mandarin', 4, 9, 'baz')) lkp = facetintervallookup(table, facet=('type', 'variety'), start='start', stop='stop') actual = lkp['apple', 'cox'].find(1, 2) expect = [('apple', 'cox', 1, 4, 'foo')] ieq(expect, actual) actual = lkp['apple', 'cox'].find(2, 4) expect = [('apple', 'cox', 1, 4, 'foo')] ieq(expect, actual)
a = toarray(table, dtype='a4, i2, f4') a a = toarray(table, dtype={'foo': 'a4'}) a table = (('type', 'start', 'stop', 'value'), ('apple', 1, 4, 'foo'), ('apple', 3, 7, 'bar'), ('orange', 4, 9, 'baz')) from petl import look from petlx.interval import facetintervallookup look(table) lkp = facetintervallookup(table, facet='type', startfield='start', stopfield='stop') lkp['apple'][1:2] lkp['apple'][2:4] lkp['apple'][2:5] lkp['orange'][2:5] lkp['orange'][9:14] lkp['orange'][19:140] lkp['apple'][1] lkp['apple'][2] lkp['apple'][4] lkp['apple'][5] lkp['orange'][5] table = (('type', 'start', 'stop', 'value'), ('apple', 1, 4, 'foo'), ('apple', 3, 7, 'bar'),
a a = toarray(table, dtype='a4, i2, f4') a a = toarray(table, dtype={'foo': 'a4'}) a table = (('type', 'start', 'stop', 'value'), ('apple', 1, 4, 'foo'), ('apple', 3, 7, 'bar'), ('orange', 4, 9, 'baz')) from petl import look from petlx.interval import facetintervallookup look(table) lkp = facetintervallookup(table, facet='type', startfield='start', stopfield='stop') lkp['apple'][1:2] lkp['apple'][2:4] lkp['apple'][2:5] lkp['orange'][2:5] lkp['orange'][9:14] lkp['orange'][19:140] lkp['apple'][1] lkp['apple'][2] lkp['apple'][4] lkp['apple'][5] lkp['orange'][5] table = (('type', 'start', 'stop', 'value'), ('apple', 1, 4, 'foo'), ('apple', 3, 7, 'bar'), ('orange', 4, 9, 'baz'))