From 43084a1d7f518b7e0d32eb063336ac642190a314 Mon Sep 17 00:00:00 2001 From: Matteo Visconti di Oleggio Castello Date: Thu, 30 Nov 2023 15:04:06 -0800 Subject: [PATCH] MNT add codespell (#14) * Add github action to codespell master on push and PRs * Add rudimentary codespell config * MNT fix spelling * Add readme --- .codespellrc | 5 +++++ .github/workflows/codespell.yml | 22 ++++++++++++++++++++++ README.md | 2 +- autocase3d/fmin_autograd.py | 2 +- docs/glab_headcase_pipeline.md | 2 +- stls/default_customizations.stl | Bin 23484 -> 29 bytes stls/default_customizations_v1.stl | Bin 0 -> 23484 bytes stls/default_customizations_v2.stl | Bin 0 -> 23484 bytes 8 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 .codespellrc create mode 100644 .github/workflows/codespell.yml mode change 100644 => 120000 stls/default_customizations.stl create mode 100644 stls/default_customizations_v1.stl create mode 100644 stls/default_customizations_v2.stl diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 0000000..ebe6e86 --- /dev/null +++ b/.codespellrc @@ -0,0 +1,5 @@ +[codespell] +skip = .git,*.pdf,*.svg,.codespellrc +check-hidden = true +# ignore-regex = +# ignore-words-list = diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml new file mode 100644 index 0000000..7373aff --- /dev/null +++ b/.github/workflows/codespell.yml @@ -0,0 +1,22 @@ +--- +name: Codespell + +on: + push: + branches: [master] + pull_request: + branches: [master] + +permissions: + contents: read + +jobs: + codespell: + name: Check for spelling errors + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Codespell + uses: codespell-project/actions-codespell@v2 diff --git a/README.md b/README.md index a7f3b10..61b5ed8 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ In this case, the intermediate files will be stored in the working directory and - `01cleaned.ply` for the cleaned head model, and - `02aligned.stl` for the aligned head model -To manually refine the alignement, `02aligned.stl` can be loaded in blender with the desired headcase model (stored under the `stls` directory of this repository). +To manually refine the alignment, `02aligned.stl` can be loaded in blender with the desired headcase model (stored under the `stls` directory of this repository). Finally, the headcase can be generated with ```bash diff --git a/autocase3d/fmin_autograd.py b/autocase3d/fmin_autograd.py index 6f63396..c4720ca 100644 --- a/autocase3d/fmin_autograd.py +++ b/autocase3d/fmin_autograd.py @@ -136,7 +136,7 @@ def _compute_log_det_cholesky(matrix_chol, covariance_type, n_features): def _load_gmm_model(): - """Load GMM model by loading the parameters and instatiating a GMM object.""" + """Load GMM model by loading the parameters and instantiating a GMM object.""" here = os.path.dirname(os.path.abspath(__file__)) model_file = os.path.join(here, "gmm_params.npz") params = np.load(model_file) diff --git a/docs/glab_headcase_pipeline.md b/docs/glab_headcase_pipeline.md index 9463970..36ec5d7 100644 --- a/docs/glab_headcase_pipeline.md +++ b/docs/glab_headcase_pipeline.md @@ -34,7 +34,7 @@ Once you have a good scan, send the file to an email you can access. 1. Create an [Ultimaker account](https://ultimaker.com/software/ultimaker-cura) and ask a senior lab member to add you to the Gallant Lab group. 2. Download the [Ultimaker Cura software](https://ultimaker.com/software/ultimaker-cura) and sign in to your account. 3. Upload both the front and back headcase stl files. Rotate and set the front to x=70mm. Set the back to x=-70mm. The two should be touching. -4. In the `PREPARE` page, select the correct filament type and set the folloing print settings: +4. In the `PREPARE` page, select the correct filament type and set the following print settings: - Profiles - Default = 0.2 - Visual = 0.15 diff --git a/stls/default_customizations.stl b/stls/default_customizations.stl deleted file mode 100644 index 2652038214554c16c99539001ed37e55b9cfb3ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23484 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 diff --git a/stls/default_customizations.stl b/stls/default_customizations.stl new file mode 120000 index 0000000..922735d --- /dev/null +++ b/stls/default_customizations.stl @@ -0,0 +1 @@ +default_customizations_v2.stl \ No newline at end of file diff --git a/stls/default_customizations_v1.stl b/stls/default_customizations_v1.stl new file mode 100644 index 0000000000000000000000000000000000000000..2652038214554c16c99539001ed37e55b9cfb3ae GIT binary patch literal 23484 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 literal 0 HcmV?d00001 diff --git a/stls/default_customizations_v2.stl b/stls/default_customizations_v2.stl new file mode 100644 index 0000000000000000000000000000000000000000..c4f27acbdea3aa4756ed8cc13a1666e6aa0ac801 GIT binary patch literal 23484 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 BY=Zy* literal 0 HcmV?d00001