You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

tuple_function.py 1.1 kB

1234567891011121314151617181920212223242526272829303132
  1. # -*- coding: utf-8 -*-
  2. import collections
  3. import functools
  4. def get_ndtuple(value, *, n, allow_zero=True):
  5. r"""Converts possibly 1D tuple to nd tuple.
  6. Args:
  7. allow_zero: whether to allow zero tuple value
  8. """
  9. if not isinstance(value, collections.abc.Iterable):
  10. value = int(value)
  11. value = tuple([value for i in range(n)])
  12. else:
  13. assert len(value) == n, "tuple len is not equal to n: {}".format(value)
  14. spatial_axis = map(int, value)
  15. value = tuple(spatial_axis)
  16. if allow_zero:
  17. minv = 0
  18. else:
  19. minv = 1
  20. assert min(value) >= minv, "invalid value: {}".format(value)
  21. return value
  22. _single = functools.partial(get_ndtuple, n=1, allow_zero=True)
  23. _pair = functools.partial(get_ndtuple, n=2, allow_zero=True)
  24. _pair_nonzero = functools.partial(get_ndtuple, n=2, allow_zero=False)
  25. _triple = functools.partial(get_ndtuple, n=3, allow_zero=True)
  26. _triple_nonzero = functools.partial(get_ndtuple, n=3, allow_zero=False)
  27. _quadruple = functools.partial(get_ndtuple, n=4, allow_zero=True)