Skip to content

[pre-commit.ci] pre-commit autoupdate #249

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: 2c9f875913ee60ca25ce70243dc24d5b6415598c # frozen: v4.6.0
rev: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b # frozen: v5.0.0
hooks:
- id: check-added-large-files
- id: check-ast
Expand All @@ -19,30 +19,30 @@ repos:
- id: trailing-whitespace

- repo: https://github.com/pre-commit/mirrors-prettier
rev: ffb6a759a979008c0e6dff86e39f4745a2d9eac4 # frozen: v3.1.0
rev: f12edd9c7be1c20cfa42420fd0e6df71e42b51ea # frozen: v4.0.0-alpha.8
hooks:
- id: prettier
files: \.(css|md|yml|yaml)
args: [--prose-wrap=preserve]

- repo: https://github.com/psf/black
rev: 3702ba224ecffbcec30af640c149f231d90aebdb # frozen: 24.4.2
rev: 8a737e727ac5ab2f1d4cf5876720ed276dc8dc4b # frozen: 25.1.0
hooks:
- id: black

- repo: https://github.com/asottile/blacken-docs
rev: 960ead214cd1184149d366c6d27ca6c369ce46b6 # frozen: 1.16.0
rev: 78a9dcbecf4f755f65d1f3dec556bc249d723600 # frozen: 1.19.1
hooks:
- id: blacken-docs

- repo: https://github.com/asottile/pyupgrade
rev: 32151ac97cbfd7f9dcd22e49516fb32266db45b4 # frozen: v3.16.0
rev: ce40a160603ab0e7d9c627ae33d7ef3906e2d2b2 # frozen: v3.19.1
hooks:
- id: pyupgrade
args: [--py38-plus]

- repo: https://github.com/codespell-project/codespell
rev: "193cd7d27cd571f79358af09a8fb8997e54f8fff" # frozen: v2.3.0
rev: "63c8f8312b7559622c0d82815639671ae42132ac" # frozen: v2.4.1
hooks:
- id: codespell
args: ["-w", "-L", "ist,cant,connexion,multline,checkin"]
Expand Down
12 changes: 6 additions & 6 deletions content/posts/matplotlib/animated-polar-plot/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,12 @@ ndf.head()
This produces:

```pycon
date tsurf t1000
0 2009-12-31 0.0 0.0
1 2010-01-07 0.0 0.0
2 2010-01-14 0.0 0.0
3 2010-01-21 0.0 0.0
4 2010-01-28 0.0 0.0
date tsurf t1000
2-31 0.0 0.0
1-07 0.0 0.0
1-14 0.0 0.0
1-21 0.0 0.0
1-28 0.0 0.0
```

Then it's time to plot, for that we first need to import what we need, and set some useful variables.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ Now that we are familiar with the minimum arborescence algorithm, we can discuss
The changes will be primarily located in step 1.
Under the normal operation of the algorithm, the consideration which happens at each vertex might look like this.

<center><img src="edmonds-normal.png" alt="Edmonds algrithm selecting edge without restrictions"/></center>
<center><img src="edmonds-normal.png" alt="Edmonds algorithm selecting edge without restrictions"/></center>

Where the bolded arrow is chosen by the algorithm as it is the incoming arc with minimum weight.
Now, if we were required to include a different edge, say the weight 6 arc, we would want this behavior even though it is strictly speaking not optimal.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ $$
$$

possible combinations of edges which could be arborescences.
That's a lot of combintation, more than I wanted to check by hand so I wrote a short python script.
That's a lot of combination, more than I wanted to check by hand so I wrote a short python script.

```python
from itertools import combinations
Expand Down
2 changes: 2 additions & 0 deletions content/posts/numpy/numpy-rng/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,9 @@ I hope this blog post helped you understand the best ways to use NumPy RNGs. The
- To know more about the default RNG used in NumPy, named PCG, I recommend the [PCG paper](https://www.pcg-random.org/paper.html) which also contains lots of useful information about RNGs in general. The [pcg-random.org website](https://www.pcg-random.org) is also full of interesting information about RNGs.

[^1]: If you only need a seed for reproducibility and do not need independence with respect to others, say for a unit test, a small seed is perfectly fine.

[^2]: A good RNG is expected to produce independent numbers for a given seed. However, the independence of sequences generated from two different seeds is not always guaranteed. For instance, it is possible that the sequence started with the second seed might quickly converge to an internal state also obtained by the first seed. This can result in both RNGs producing the same subsequent numbers, which would compromise the randomness expected from distinct seeds.

[^3]:
Before knowing about `default_rng`, and before NumPy 1.17, I was using the scikit-learn function [`check_random_state`](https://scikit-learn.org/stable/modules/generated/sklearn.utils.check_random_state.html) which is of course heavily used in the scikit-learn codebase. While writing this post I discovered that this function is now available in [scipy](https://github.com/scipy/scipy/blob/62d2af2e13280d29781585aa39a3c5a5dfdfba17/scipy/_lib/_util.py#L231). A look at the docstring and/or the source code of this function will give you a good idea about what it does. The differences with `default_rng` are that `check_random_state` currently relies on `np.random.RandomState` and that when `None` is passed to `check_random_state` then the function returns the already existing global NumPy RNG. The latter can be convenient because if you fix the seed of the global RNG before in your script using `np.random.seed`, `check_random_state` returns the generator that you seeded. However, as explained above, this is not the recommended practice and you should be aware of the risks and the side effects.
[^4]: Before 1.25 you need to get the `SeedSequence` from the RNG using the `_seed_seq` private attribute of the underlying bit generator: `rng.bit_generator._seed_seq`. You can then spawn from this `SeedSequence` to get child seeds that will result in independent RNGs.