diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 2a29819..30e8c29 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -72,7 +72,7 @@ jobs: - uses: actions/upload-artifact@v4 with: - name: wheels-${{ matrix.buildplat[0] }} + name: wheels-${{ matrix.buildplat[1] }}-${{ matrix.buildplat[2] }} path: wheelhouse/*.whl diff --git a/package_diagram.html b/package_diagram.html deleted file mode 100644 index beb2d46..0000000 --- a/package_diagram.html +++ /dev/null @@ -1,540 +0,0 @@ - - - - - - - - - -package_diagram - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
classDiagram
-class quadrature {
-    +lanczos_quadrature()
-    +spectral_density()
-}
-class plotting {
-    +figure_csm()
-    +figure_orth_poly()
-}
-class stochastic {
-    +symmetric()
-    +isotropic()
-}
-class primate {
-    +get_include()
-}
-class lanczos {
-    +lanczos()
-    +rayleigh_ritz()
-    +fit()
-    +OrthogonalPolynomialBasis
-}
-class fttr {
-    +ortho_poly()
-    +fttr()
-}
-class tqli {
-    +sign()
-    +tqli()
-}
-class stats {
-    +confidence_interval()
-    +control_variate_estimator()
-    +converged()
-    +plot()
-    +ControlVariateEstimator
-    +MeanEstimatorCLT
-}
-class estimators {
-    +suggest_nv_trace()
-    +hutch()
-}
-class operators {
-    +is_linear_op()
-    +matrix_function()
-    +normalize_unit()
-    +quad()
-    +MatrixFunction
-    +Toeplitz
-}
-class special {
-    +softsign()
-    +smoothstep()
-    +identity()
-    +exp()
-    +step()
-    +param_callable()
-    +figure_fun()
-}
-class tridiag {
-    +eigh_tridiag()
-    +eigvalsh_tridiag()
-}
- -
- - -
- - - - - \ No newline at end of file diff --git a/package_diagram.md b/package_diagram.md deleted file mode 100644 index 68e6aa0..0000000 --- a/package_diagram.md +++ /dev/null @@ -1,65 +0,0 @@ -```mermaid -classDiagram -class quadrature { - +lanczos_quadrature() - +spectral_density() -} -class plotting { - +figure_csm() - +figure_orth_poly() -} -class stochastic { - +symmetric() - +isotropic() -} -class primate { - +get_include() -} -class lanczos { - +lanczos() - +rayleigh_ritz() - +fit() - +OrthogonalPolynomialBasis -} -class fttr { - +ortho_poly() - +fttr() -} -class tqli { - +sign() - +tqli() -} -class stats { - +confidence_interval() - +control_variate_estimator() - +converged() - +plot() - +ControlVariateEstimator - +MeanEstimatorCLT -} -class estimators { - +suggest_nv_trace() - +hutch() -} -class operators { - +is_linear_op() - +matrix_function() - +normalize_unit() - +quad() - +MatrixFunction - +Toeplitz -} -class special { - +softsign() - +smoothstep() - +identity() - +exp() - +step() - +param_callable() - +figure_fun() -} -class tridiag { - +eigh_tridiag() - +eigvalsh_tridiag() -} -``` \ No newline at end of file diff --git a/src/primate/stats.py b/src/primate/stats.py index dacafd7..9b55155 100644 --- a/src/primate/stats.py +++ b/src/primate/stats.py @@ -79,11 +79,10 @@ def control_variate_estimator(samples: np.ndarray, cvs: np.ndarray, mu: float, a return cv_est, (cv_est[-1] - z * SE, cv_est[-1] - z * SE) -# # See: https://math.stackexchange.com/questions/102978/incremental-computation-of-standard-deviation # def _parameterize_stop(criterion: str = "confidence") -> Callable: class MeanEstimatorCLT: - """Parameterizes an expected value estimator that checks convergence within a confidence interval using the CLT. + """Parameterizes an expected value estimator that checks convergence of a sample mean within a confidence interval using the CLT. Provides the following methods: - __call__ = Updates the estimator with newly measured samples @@ -138,8 +137,8 @@ def __repr__(self) -> str: msg += f" #S:{ self.n_samples })" return msg - def plot(self, samples: np.ndarray, real_trace: Optional[float] = None, **kwargs: dict): - """Generates figures showing the convergence of sample trace estimates.""" + def plot(self, samples: np.ndarray, mu: Optional[float] = None, **kwargs: dict): + """Generates figures showing the convergence of sample estimates.""" from bokeh.layouts import column, row from bokeh.models import Band, ColumnDataSource, Legend, NumeralTickFormatter, Range1d, Span from bokeh.plotting import figure @@ -166,8 +165,8 @@ def plot(self, samples: np.ndarray, real_trace: Optional[float] = None, **kwargs p.legend.location = "top_left" p.yaxis.axis_label = f"Estimates ({(self.confidence*100):.0f}% CI band)" p.xaxis.axis_label = "Sample index" - if real_trace is not None: - true_sp = Span(location=real_trace, dimension="width", line_dash="solid", line_color="red", line_width=1.0) + if mu is not None: + true_sp = Span(location=mu, dimension="width", line_dash="solid", line_color="red", line_width=1.0) p.add_layout(true_sp) p.line(sample_index, sample_avgs, line_color="black", line_width=2.0, legend_label="mean estimate")