__init__.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import numpy as np
  2. try:
  3. from yaml import CLoader as Loader, CDumper as Dumper
  4. except ImportError:
  5. from yaml import Loader, Dumper
  6. import yaml
  7. from os.path import isfile
  8. def feature_file_name(subset, part_info, model_info):
  9. return "{subset}{suffix}.{model}.npz".format(
  10. subset=subset,
  11. suffix=part_info.feature_suffix,
  12. model=model_info.folder)
  13. def read_info_file(fpath):
  14. with open(fpath) as f:
  15. return attr_dict(yaml.load(f, Loader=Loader))
  16. def random_idxs(idxs, rnd=None, n_parts=None):
  17. if rnd is None or isinstance(rnd, int):
  18. rnd = np.random.RandomState(rnd)
  19. else:
  20. assert isinstance(rnd, np.random.RandomState), \
  21. "'rnd' should be either a random seed or a RandomState instance!"
  22. n_parts = n_parts or rnd.randint(1, len(idxs))
  23. res = rnd.choice(idxs, n_parts, replace=False)
  24. res.sort()
  25. return res
  26. class attr_dict(dict):
  27. def __getattr__(self, name):
  28. if name in self:
  29. return self[name]
  30. else:
  31. return super(attr_dict, self).get(name)
  32. def __getitem__(self, key):
  33. res = super(attr_dict, self).__getitem__(key)
  34. if isinstance(res, dict):
  35. return attr_dict(res)
  36. return res
  37. def __getstate__(self): return self.__dict__
  38. def __setstate__(self, d): self.__dict__.update(d)
  39. class _MetaInfo(object):
  40. def __init__(self, **kwargs):
  41. for name, value in kwargs.items():
  42. setattr(self, name, value)
  43. self.structure = []
  44. from .image import asarray, dimensions
  45. from .dataset import new_iterator