diff --git a/.codespellrc b/.codespellrc
new file mode 100644
index 0000000..5af7656
--- /dev/null
+++ b/.codespellrc
@@ -0,0 +1,5 @@
+[codespell]
+skip = .git,.gitignore,.gitattributes,*.pdf,*.svg,*.png,*.ico,*.db,*.css,*.min.*,*-lock.json,*.lock,bin,obj,packages,*.DotSettings
+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..6e996fd
--- /dev/null
+++ b/.github/workflows/codespell.yml
@@ -0,0 +1,23 @@
+# Codespell configuration is within .codespellrc
+---
+name: Codespell
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+permissions:
+ contents: read
+
+jobs:
+ codespell:
+ name: Check for spelling errors
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Codespell
+ uses: codespell-project/actions-codespell@8f01853be192eb0f849a5c7d721450e7a467c579 # v2.2
diff --git a/CrashReporter/CrashReporter.csproj b/CrashReporter/CrashReporter.csproj
index 42b6bc8..724685a 100644
--- a/CrashReporter/CrashReporter.csproj
+++ b/CrashReporter/CrashReporter.csproj
@@ -3,7 +3,7 @@
WinExe
net10.0
enable
-
+
copyused
true
diff --git a/README.md b/README.md
index c058838..bedcae6 100644
--- a/README.md
+++ b/README.md
@@ -22,15 +22,15 @@ SharpEyes is organized into five tabs, each corresponding to a stage of processi
**Stimulus & Gaze** — (Start here if you already have gaze location in screen space) Check gaze location overlaid on the stimulus. Allows filtering of the gaze traces and and manual editing of individual gaze positions. Reads numpy arrays, CSV, and Eyelink EDF files / converted text files.
-**Recentering** — Shifts each frame of the stimulus video so that the gaze position is always at the center of the output, producing a retinotopic video that matches (theoretically) what visual cortex sees. This can either export the recentered frams as a numpy array or PNGs, or send it to the motion-energy computations.
+**Recentering** — Shifts each frame of the stimulus video so that the gaze position is always at the center of the output, producing a retinotopic video that matches (theoretically) what visual cortex sees. This can either export the recentered frames as a numpy array or PNGs, or send it to the motion-energy computations.
-**Motion-Energy** — Computes motion-energy features from the stimulus video using [PyMoten](https://github.com/gallantlab/pymoten), and allows you to visualize the filters in stimulus space. It will save the filter responses out as a numpy array, along with a plain-text parameter log and a CSV describing each filter in the pyramid. In future versions, it will also visualize the fiter responses as you play the stimulus video.
+**Motion-Energy** — Computes motion-energy features from the stimulus video using [PyMoten](https://github.com/gallantlab/pymoten), and allows you to visualize the filters in stimulus space. It will save the filter responses out as a numpy array, along with a plain-text parameter log and a CSV describing each filter in the pyramid. In future versions, it will also visualize the filter responses as you play the stimulus video.
## Installation
Precompiled executables are available on the [Releases page](https://github.com/gallantlab/SharpEyes/releases) for both Windows and Linux (Ubuntu 24.04). The Windows exe is fully self-contained, but the Linux version may require additional system libraries, and SharpEyes will report any that are missing.
-Becuase .Net is cross-platform, this will also run on macOS (and any other .Net desktop environment, provided there are OpenCV and Avalonia package for them). However, you will need to buil from source for non-Windows/Linux environments.
+Because .Net is cross-platform, this will also run on macOS (and any other .Net desktop environment, provided there are OpenCV and Avalonia package for them). However, you will need to build from source for non-Windows/Linux environments.
## Requirements
diff --git a/SharpEyes/Models/CalibrationParameters.cs b/SharpEyes/Models/CalibrationParameters.cs
index d922594..d90408f 100644
--- a/SharpEyes/Models/CalibrationParameters.cs
+++ b/SharpEyes/Models/CalibrationParameters.cs
@@ -34,7 +34,7 @@ public class CalibrationParameters
public List calibrationPoints { get; set; }
///
- /// List of the points in the order that they are presented. Indentified by index in
+ /// List of the points in the order that they are presented. Identified by index in
///
public List calibrationSequence { get; set; }
diff --git a/SharpEyes/Models/Calibrator.cs b/SharpEyes/Models/Calibrator.cs
index 856e174..b7ca228 100644
--- a/SharpEyes/Models/Calibrator.cs
+++ b/SharpEyes/Models/Calibrator.cs
@@ -10,7 +10,7 @@
using Num = NumSharp.np;
// Note: try not to use NumSharp data structures in these classes
-// Because they're interally contained
+// Because they're internally contained
namespace Eyetracking
{
diff --git a/SharpEyes/Models/RBF2D.cs b/SharpEyes/Models/RBF2D.cs
index 9aed744..f26d62c 100644
--- a/SharpEyes/Models/RBF2D.cs
+++ b/SharpEyes/Models/RBF2D.cs
@@ -6,7 +6,7 @@
using Num = NumSharp.np;
// Note: try not to use NumSharp data structures in these classes
-// Because they're interally contained
+// Because they're internally contained
namespace Eyetracking
{
diff --git a/SharpEyes/SharpEyes.csproj b/SharpEyes/SharpEyes.csproj
index 004f228..a08d814 100644
--- a/SharpEyes/SharpEyes.csproj
+++ b/SharpEyes/SharpEyes.csproj
@@ -3,7 +3,7 @@
WinExe
net10.0
enable
-
+
copyused
true
true
diff --git a/SharpEyes/ViewModels/PythonSettingsViewModel.cs b/SharpEyes/ViewModels/PythonSettingsViewModel.cs
index a4a27cd..d909e6b 100644
--- a/SharpEyes/ViewModels/PythonSettingsViewModel.cs
+++ b/SharpEyes/ViewModels/PythonSettingsViewModel.cs
@@ -220,7 +220,7 @@ public PythonSettingsViewModel()
if (IsCondaAvailable)
RefreshCondaEnvironments();
- // Pre-select the saved conda environment if present
+ // Preselect the saved conda environment if present
if (!String.IsNullOrEmpty(settings.CondaEnvironmentPath))
{
for (int index = 0; index < CondaEnvironments.Count; index++)
diff --git a/docs/building.md b/docs/building.md
index 81bcfde..0bc18a9 100644
--- a/docs/building.md
+++ b/docs/building.md
@@ -43,7 +43,7 @@ dotnet publish SharpEyes/SharpEyes.csproj \
-p:PublishSingleFile=true
```
-The exectuable will be in `SharpEyes/bin/Release/net10.0//publish/`.
+The executable will be in `SharpEyes/bin/Release/net10.0//publish/`.
## macOS notes
diff --git a/docs/workflow/stimulus and gaze.md b/docs/workflow/stimulus and gaze.md
index 98886c7..751cc18 100644
--- a/docs/workflow/stimulus and gaze.md
+++ b/docs/workflow/stimulus and gaze.md
@@ -25,7 +25,7 @@ Note: if you read a numpy or CSV file, you'll need to manually set the Eyetracki
## Temporal alignment
-The eyetracking data and the stimulus video are recorded separately and must be aligned. When you load a file, SharpEyes assums that the eyetracking data starts with the video. The Temporal alignment section in the right panel provides several ways to modify this alignment.
+The eyetracking data and the stimulus video are recorded separately and must be aligned. When you load a file, SharpEyes assumes that the eyetracking data starts with the video. The Temporal alignment section in the right panel provides several ways to modify this alignment.
- **Set current as eyetracking start** — marks the current video frame as the frame where eyetracking began.
- **Auto find eyetracking start** — attempts to detect the start automatically - this is specific to the driving project, where we burn a TTL marker into the bottom right.