Advertisement
Guest User

Untitled

a guest
Jul 27th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.86 KB | None | 0 0
  1. Python 3.6.6 (default, Jun 27 2018, 13:11:40)
  2. Type 'copyright', 'credits' or 'license' for more information
  3. IPython 6.3.1 -- An enhanced Interactive Python. Type '?' for help.
  4.  
  5. In [1]: from pybedtools import Interval
  6.    ...:
  7.    ...: my_bedtool = [Interval("X", 0, 100, strand="+") for _ in range(10000)]
  8.    ...:
  9.    ...: print('original')
  10.    ...: %timeit [(chrom, start, end, strand) for (chrom, start, end, _, _, strand) in my_bedtool]
  11.    ...:
  12.    ...: print('* unpacking')
  13.    ...: %timeit [(chrom, start, end, strand) for (chrom, start, end, *_, strand) in my_bedtool]
  14.    ...:
  15.    ...: print('attribute lookup')
  16.    ...: %timeit [(interval.chrom, interval.start, interval.end, interval.strand) for interval in my_bedtool]
  17.    ...:
  18.    ...: from operator import attrgetter
  19.    ...: get_interval_attrs = attrgetter("chrom", "start", "stop", "strand")
  20.    ...: print('attrgetter')
  21.    ...: %timeit [get_interval_attrs(interval) for interval in my_bedtool]
  22.    ...:
  23.    ...: print('dict lookup')
  24.    ...: %timeit [tuple(interval[k] for k in ("chrom", "start", "stop", "strand")) for interval in my_bedtool]
  25.    ...:
  26.    ...: from operator import itemgetter
  27.    ...: print('itemgetter')
  28.    ...: get_interval_items = itemgetter("chrom", "start", "stop", "strand")
  29.    ...: %timeit [get_interval_items(interval) for interval in my_bedtool]
  30.    ...:
  31.    ...:
  32. original
  33. 11.4 ms +- 9.65 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
  34. * unpacking
  35. 15.4 ms +- 2.22 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
  36. attribute lookup
  37. 2.69 ms +- 481 ns per loop (mean +- std. dev. of 7 runs, 100 loops each)
  38. attrgetter
  39. 3.35 ms +- 461 ns per loop (mean +- std. dev. of 7 runs, 100 loops each)
  40. dict lookup
  41. 12.8 ms +- 2.46 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
  42. itemgetter
  43. 4.86 ms +- 1.21 us per loop (mean +- std. dev. of 7 runs, 100 loops each)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement