Skip to content

Commit 1845c54

Browse files
authored
Merge pull request #17 from circstat/refactor
Distribution Overhaul
2 parents abce986 + 36cb54a commit 1845c54

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+16196
-2214
lines changed

.github/workflows/python-package.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
strategy:
1616
fail-fast: false
1717
matrix:
18-
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
18+
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
1919

2020
steps:
2121
- uses: actions/checkout@v3

.gitignore

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
.coverage
66
.vscode
77
.venv
8+
.mplconfig
89

910
*.egg-info
1011
*/__pycache__
1112

12-
uv.lock
13-
1413
dev/
1514
dist/
1615
docs/site/
17-
build/
16+
build/
17+
18+
*copy*

docs/docs/feature-checklist.md

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
### 1. Descriptive Statistics
44

55
| Feature | PyCircStat2 | PyCircStat | CircStat (MATLAB) | CircStats (R) | circular (R) |
6-
| ----------------------------------- | --------------------- | ------------------------- | ------------------ | ------------- | ------------------------------------- |
6+
|-------------------------------------|-----------------------|---------------------------|--------------------|---------------|---------------------------------------|
77
| **Measures of Central Tendency** | | | | | |
88
| Circular Mean | `circ_mean` | `mean(alpha)` | `circ_mean(alpha)` | `circ.mean` | `mean.circular` |
99
| Circular Mean CI | `circ_mean_ci` | `mean(alpha, ci=95)` | `circ_confmean` | - | `mle.vonmises.bootstrap.ci` |
@@ -31,7 +31,7 @@
3131
#### One-Sample Tests for Significance
3232

3333
| Feature | H0 | PyCircStat2 | PyCircStat | CircStat (MATLAB) | CircStats (R) | circular (R) |
34-
| --------------------------- | ----------------------------------- | ------------------- | ---------- | ----------------- | ------------- | --------------- |
34+
|-----------------------------|-------------------------------------|---------------------|------------|-------------------|---------------|-----------------|
3535
| **Mean Direction** | | | | | | |
3636
| Rayleigh Test | $\rho=0$ [^uniform] | `rayleigh_test` | `rayleigh` | `circ_rtest` | `r.test` | `rayleigh.test` |
3737
| V-Test | $\rho=0$ | `V_test` | `vtest` | `circ_vtest` | `v0.test` | - |
@@ -46,7 +46,7 @@
4646
#### Multi-Sample Tests for Significance
4747

4848
| Feature | H0 | PyCircStat2 | PyCircStat | CircStat (MATLAB) | CircStats (R) | circular (R) |
49-
| ------------------------------- | --------------------------------------------- | ---------------------------- | ----------------- | ----------------- | ----------------- | ---------------------- |
49+
|---------------------------------|-----------------------------------------------|------------------------------|-------------------|-------------------|-------------------|------------------------|
5050
| **Mean Direction** | | | | | | |
5151
| Circular Analysis of Variance | $\mu_1 = \dots = \mu_n$ | `circ_anova` | - | - | - | `aov.circular` |
5252
| Watson-Williams Test [^one-way] | $\mu_1 = \dots = \mu_n$ | `watson_williams_test` | `watson_williams` | `circ_wwtest` | - | `watson.williams.test` |
@@ -66,7 +66,7 @@
6666
#### Goodness-of-fit Tests
6767

6868
| Feature | H0 | PyCircStat2 | PyCircStat | CircStat (MATLAB) | CircStats (R) | circular (R) |
69-
| ------------------- | ---------- | ------------------ | ------------ | ----------------- | ------------- | ------------------ |
69+
|---------------------|------------|--------------------|--------------|-------------------|---------------|--------------------|
7070
| Kuiper’s Test | $\rho = 0$ | `circ_kuiper_test` | `kupier` | `circ_kuipertest` | `kuiper` | `kuiper.test` |
7171
| Rao’s Spacing Test | $\rho = 0$ | `rao_spacing_test` | `raospacing` | `circ_raotest` | `rao.spacing` | `rao.spacing.test` |
7272
| Watson's Test | $\rho = 0$ | `watson_test` | - | - | `watson` | `watson.test` |
@@ -75,7 +75,7 @@
7575

7676
### 3. Correlation & Regression
7777
| Feature | PyCircStat2 | PyCircStat | CircStat (MATLAB) | CircStats (R) | circular (R) |
78-
| ----------------------------- | -------------- | ---------- | ----------------- | ------------- | ------------------------- |
78+
|-------------------------------|----------------|------------|-------------------|---------------|---------------------------|
7979
| Circular-Circular Correlation | `circ_corrcc` | `corrcc` | `circ_corrcc` | `circ.cor` | `cor.circular` |
8080
| Circular-Linear Correlation | `circ_corrcl` | `corrcl` | `circ_corrcl` | - | - |
8181
| Circular-Circular Regression | `CCRegression` | - | - | `circ.reg` | `lm.circular(type="c-c")` |
@@ -85,10 +85,12 @@
8585

8686
### 4. Circular Distributions
8787

88+
All circular distributions assume angles are on ``[0, 2π)``. Inputs are automatically wrapped to that support as a convenience. We remove SciPy's ``loc``/``scale`` convention—parameters like ``mu``, ``rho``, etc. are the only inputs.
89+
8890
#### Symmetric Circular Distributions
8991

9092
| Feature | Method | PyCircStat2 | PyCircStat | CircStat (MATLAB) | CircStats (R) | circular (R) |
91-
| -------------------- | ------ | ------------------------- | ---------------- | ----------------- | ------------- | ------------------- |
93+
|----------------------|--------|---------------------------|------------------|-------------------|---------------|---------------------|
9294
| Circular Uniform | PDF | `circularuniform.pdf` | - | - | - | `dcircularuniform` |
9395
| | CDF | `circularuniform.cdf` | - | - | - | - |
9496
| | PPF | `circularuniform.ppf` | - | - | - | - |
@@ -134,15 +136,10 @@
134136
| | PPF | `jonespewsey.ppf` | - | - | - | - |
135137
| | RVS | `jonespewsey.rvs` | - | - | - | - |
136138
| | Fit | `jonespewsey.fit` | - | - | - | - |
137-
| Kato-Jones | PDF | - | - | - | - | `dkatojones` |
138-
| | CDF | - | - | - | - | - |
139-
| | PPF | - | - | - | - | - |
140-
| | RVS | - | - | - | - | `rkatojones` |
141-
| | Fit | - | - | - | - | - |
142139

143140
#### Asymmetric Circular Distributions
144141
| Feature | Method | PyCircStat2 | PyCircStat | CircStat (MATLAB) | CircStats (R) | circular (R) |
145-
| ------------------------ | ------ | ---------------------------- | ---------- | ----------------- | ------------- | ---------------- |
142+
|--------------------------|--------|------------------------------|------------|-------------------|---------------|------------------|
146143
| Jones-Pewsey Sine-Skewed | PDF | `jonespewsey_sineskewed.pdf` | - | - | - | - |
147144
| | CDF | `jonespewsey_sineskewed.cdf` | - | - | - | - |
148145
| | PPF | `jonespewsey_sineskewed.ppf` | - | - | - | - |
@@ -158,6 +155,11 @@
158155
| | PPF | `inverse_batschelet.ppf` | - | - | - | - |
159156
| | RVS | `inverse_batschelet.rvs` | - | - | - | - |
160157
| | Fit | `inverse_batschelet.fit` | - | - | - | - |
158+
| Kato-Jones | PDF | `katojones.pdf` | - | - | - | `dkatojones` |
159+
| | CDF | `katojones.cdf` | - | - | - | - |
160+
| | PPF | `katojones.ppf` | - | - | - | - |
161+
| | RVS | `katojones.rvs` | - | - | - | `rkatojones` |
162+
| | Fit | `katojones.fit` | - | - | - | - |
161163
| Wrapped Stable | PDF | `wrapstable.pdf` | - | - | - | - |
162164
| | CDF | `wrapstable.cdf` | - | - | - | - |
163165
| | PPF | `wrapstable.ppf` | - | - | - | - |
@@ -172,4 +174,3 @@
172174
[^F]: $F$ stands for distributions.
173175
[^one-way]: Yet anothr one-way ANOVA.
174176
[^two-way]: Two-way ANOVA.
175-
34 Bytes
Loading
-136 Bytes
Loading
1.15 KB
Loading
-59 Bytes
Loading
-24 Bytes
Loading
-59 Bytes
Loading
-6 Bytes
Loading

0 commit comments

Comments
 (0)