_pickle.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. from .mtrand import RandomState
  2. from ._philox import Philox
  3. from ._pcg64 import PCG64
  4. from ._sfc64 import SFC64
  5. from ._generator import Generator
  6. from ._mt19937 import MT19937
  7. BitGenerators = {'MT19937': MT19937,
  8. 'PCG64': PCG64,
  9. 'Philox': Philox,
  10. 'SFC64': SFC64,
  11. }
  12. def __generator_ctor(bit_generator_name='MT19937'):
  13. """
  14. Pickling helper function that returns a Generator object
  15. Parameters
  16. ----------
  17. bit_generator_name: str
  18. String containing the core BitGenerator
  19. Returns
  20. -------
  21. rg: Generator
  22. Generator using the named core BitGenerator
  23. """
  24. if bit_generator_name in BitGenerators:
  25. bit_generator = BitGenerators[bit_generator_name]
  26. else:
  27. raise ValueError(str(bit_generator_name) + ' is not a known '
  28. 'BitGenerator module.')
  29. return Generator(bit_generator())
  30. def __bit_generator_ctor(bit_generator_name='MT19937'):
  31. """
  32. Pickling helper function that returns a bit generator object
  33. Parameters
  34. ----------
  35. bit_generator_name: str
  36. String containing the name of the BitGenerator
  37. Returns
  38. -------
  39. bit_generator: BitGenerator
  40. BitGenerator instance
  41. """
  42. if bit_generator_name in BitGenerators:
  43. bit_generator = BitGenerators[bit_generator_name]
  44. else:
  45. raise ValueError(str(bit_generator_name) + ' is not a known '
  46. 'BitGenerator module.')
  47. return bit_generator()
  48. def __randomstate_ctor(bit_generator_name='MT19937'):
  49. """
  50. Pickling helper function that returns a legacy RandomState-like object
  51. Parameters
  52. ----------
  53. bit_generator_name: str
  54. String containing the core BitGenerator
  55. Returns
  56. -------
  57. rs: RandomState
  58. Legacy RandomState using the named core BitGenerator
  59. """
  60. if bit_generator_name in BitGenerators:
  61. bit_generator = BitGenerators[bit_generator_name]
  62. else:
  63. raise ValueError(str(bit_generator_name) + ' is not a known '
  64. 'BitGenerator module.')
  65. return RandomState(bit_generator())