unuran_wrapper.pyi 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import numpy as np
  2. from typing import (Union, Any, Tuple, List, overload, Callable, NamedTuple,
  3. Protocol)
  4. import numpy.typing as npt
  5. from scipy._lib._util import SeedType
  6. import scipy.stats as stats
  7. ArrayLike0D = Union[bool, int, float, complex, str, bytes, np.generic]
  8. __all__: List[str]
  9. class UNURANError(RuntimeError):
  10. ...
  11. class Method:
  12. @overload
  13. def rvs(self, size: None = ...) -> float | int: ... # type: ignore[misc]
  14. @overload
  15. def rvs(self, size: int | Tuple[int, ...] = ...) -> np.ndarray: ...
  16. def set_random_state(self, random_state: SeedType) -> None: ...
  17. class TDRDist(Protocol):
  18. @property
  19. def pdf(self) -> Callable[..., float]: ...
  20. @property
  21. def dpdf(self) -> Callable[..., float]: ...
  22. @property
  23. def support(self) -> Tuple[float, float]: ...
  24. class TransformedDensityRejection(Method):
  25. def __init__(self,
  26. dist: TDRDist,
  27. *,
  28. mode: None | float = ...,
  29. center: None | float = ...,
  30. domain: None | Tuple[float, float] = ...,
  31. c: float = ...,
  32. construction_points: int | npt.ArrayLike = ...,
  33. use_dars: bool = ...,
  34. max_squeeze_hat_ratio: float = ...,
  35. random_state: SeedType = ...) -> None: ...
  36. @property
  37. def squeeze_hat_ratio(self) -> float: ...
  38. @property
  39. def squeeze_area(self) -> float: ...
  40. @overload
  41. def ppf_hat(self, u: ArrayLike0D) -> float: ... # type: ignore[misc]
  42. @overload
  43. def ppf_hat(self, u: npt.ArrayLike) -> np.ndarray: ...
  44. class SROUDist(Protocol):
  45. @property
  46. def pdf(self) -> Callable[..., float]: ...
  47. @property
  48. def support(self) -> Tuple[float, float]: ...
  49. class SimpleRatioUniforms(Method):
  50. def __init__(self,
  51. dist: SROUDist,
  52. *,
  53. mode: None | float = ...,
  54. pdf_area: float = ...,
  55. domain: None | Tuple[float, float] = ...,
  56. cdf_at_mode: float = ...,
  57. random_state: SeedType = ...) -> None: ...
  58. UError = NamedTuple('UError', [('max_error', float),
  59. ('mean_absolute_error', float)])
  60. class PINVDist(Protocol):
  61. @property
  62. def pdf(self) -> Callable[..., float]: ...
  63. @property
  64. def cdf(self) -> Callable[..., float]: ...
  65. @property
  66. def logpdf(self) -> Callable[..., float]: ...
  67. class NumericalInversePolynomial(Method):
  68. def __init__(self,
  69. dist: PINVDist,
  70. *,
  71. mode: None | float = ...,
  72. center: None | float = ...,
  73. domain: None | Tuple[float, float] = ...,
  74. order: int = ...,
  75. u_resolution: float = ...,
  76. random_state: SeedType = ...) -> None: ...
  77. @property
  78. def intervals(self) -> int: ...
  79. @overload
  80. def ppf(self, u: ArrayLike0D) -> float: ... # type: ignore[misc]
  81. @overload
  82. def ppf(self, u: npt.ArrayLike) -> np.ndarray: ...
  83. @overload
  84. def cdf(self, x: ArrayLike0D) -> float: ... # type: ignore[misc]
  85. @overload
  86. def cdf(self, x: npt.ArrayLike) -> np.ndarray: ...
  87. def u_error(self, sample_size: int = ...) -> UError: ...
  88. def qrvs(self,
  89. size: None | int | Tuple[int, ...] = ...,
  90. d: None | int = ...,
  91. qmc_engine: None | stats.qmc.QMCEngine = ...) -> npt.ArrayLike: ...
  92. class HINVDist(Protocol):
  93. @property
  94. def pdf(self) -> Callable[..., float]: ...
  95. @property
  96. def cdf(self) -> Callable[..., float]: ...
  97. @property
  98. def support(self) -> Tuple[float, float]: ...
  99. class NumericalInverseHermite(Method):
  100. def __init__(self,
  101. dist: HINVDist,
  102. *,
  103. domain: None | Tuple[float, float] = ...,
  104. order: int= ...,
  105. u_resolution: float = ...,
  106. construction_points: None | npt.ArrayLike = ...,
  107. max_intervals: int = ...,
  108. random_state: SeedType = ...) -> None: ...
  109. @property
  110. def intervals(self) -> int: ...
  111. @overload
  112. def ppf(self, u: ArrayLike0D) -> float: ... # type: ignore[misc]
  113. @overload
  114. def ppf(self, u: npt.ArrayLike) -> np.ndarray: ...
  115. def qrvs(self,
  116. size: None | int | Tuple[int, ...] = ...,
  117. d: None | int = ...,
  118. qmc_engine: None | stats.qmc.QMCEngine = ...) -> npt.ArrayLike: ...
  119. def u_error(self, sample_size: int = ...) -> UError: ...
  120. class DAUDist(Protocol):
  121. @property
  122. def pmf(self) -> Callable[..., float]: ...
  123. @property
  124. def support(self) -> Tuple[float, float]: ...
  125. class DiscreteAliasUrn(Method):
  126. def __init__(self,
  127. dist: npt.ArrayLike | DAUDist,
  128. *,
  129. domain: None | Tuple[float, float] = ...,
  130. urn_factor: float = ...,
  131. random_state: SeedType = ...) -> None: ...
  132. class DGTDist(Protocol):
  133. @property
  134. def pmf(self) -> Callable[..., float]: ...
  135. @property
  136. def support(self) -> Tuple[float, float]: ...
  137. class DiscreteGuideTable(Method):
  138. def __init__(self,
  139. dist: npt.ArrayLike | DGTDist,
  140. *,
  141. domain: None | Tuple[float, float] = ...,
  142. guide_factor: float = ...,
  143. random_state: SeedType = ...) -> None: ...
  144. @overload
  145. def ppf(self, u: ArrayLike0D) -> float: ... # type: ignore[misc]
  146. @overload
  147. def ppf(self, u: npt.ArrayLike) -> np.ndarray: ...