From e393ac811ea05057104f210d6e2b62f11d3cbc82 Mon Sep 17 00:00:00 2001 From: Matteo Visconti di Oleggio Castello Date: Fri, 29 May 2026 14:34:52 -0700 Subject: [PATCH 1/5] Add rudimentary codespell config Co-Authored-By: Claude Code 2.1.157 / Claude Opus 4.7 --- .codespellrc | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .codespellrc 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 = From 6a099032b62119e401f070a46a721ea5022e28ee Mon Sep 17 00:00:00 2001 From: Matteo Visconti di Oleggio Castello Date: Fri, 29 May 2026 14:35:02 -0700 Subject: [PATCH 2/5] Add CI workflow to codespell main on push and PRs Co-Authored-By: Claude Code 2.1.157 / Claude Opus 4.7 --- .github/workflows/codespell.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/codespell.yml 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 From 6ac3da1ccbe642fc1f1727fbce80a97e1d120bad Mon Sep 17 00:00:00 2001 From: Matteo Visconti di Oleggio Castello Date: Fri, 29 May 2026 14:35:27 -0700 Subject: [PATCH 3/5] Fix ambiguous typos requiring context review Fixed ambiguous typos: - interally -> internally (SharpEyes/Models/Calibrator.cs, SharpEyes/Models/RBF2D.cs, Eyetracking/Calibrator.cs, Eyetracking/RBF2D.cs) Comment "they're interally contained" describes encapsulation, i.e. internal use. - matchine -> matching (Eyetracking/Templates.cs) XML doc "best matchine digit" refers to the best-matching digit. Co-Authored-By: Claude Code 2.1.157 / Claude Opus 4.7 --- Eyetracking/Calibrator.cs | 2 +- Eyetracking/RBF2D.cs | 2 +- Eyetracking/Templates.cs | 2 +- SharpEyes/Models/Calibrator.cs | 2 +- SharpEyes/Models/RBF2D.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Eyetracking/Calibrator.cs b/Eyetracking/Calibrator.cs index b53b3a6..84041eb 100644 --- a/Eyetracking/Calibrator.cs +++ b/Eyetracking/Calibrator.cs @@ -9,7 +9,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/Eyetracking/RBF2D.cs b/Eyetracking/RBF2D.cs index e8eed3a..c2b1009 100644 --- a/Eyetracking/RBF2D.cs +++ b/Eyetracking/RBF2D.cs @@ -5,7 +5,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/Eyetracking/Templates.cs b/Eyetracking/Templates.cs index 3f5c2bb..e159959 100644 --- a/Eyetracking/Templates.cs +++ b/Eyetracking/Templates.cs @@ -155,7 +155,7 @@ internal static class Templates /// Gets the best digit that matches the image /// /// 8x12 single channel image matrix from eyetracking video - /// best matchine digit + /// best matching digit public static int MatchDigit(Mat image) { int bestMatch = -1; 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 { From df40b13b5609103f8e072eb3c068bdfed099e3bd Mon Sep 17 00:00:00 2001 From: Matteo Visconti di Oleggio Castello Date: Fri, 29 May 2026 14:35:35 -0700 Subject: [PATCH 4/5] [DATALAD RUNCMD] chore: fix non-ambiguous typos with codespell Fixed typos: - doesen't -> doesn't (SharpEyes/SharpEyes.csproj, CrashReporter/CrashReporter.csproj) - Pre-select -> Preselect (SharpEyes/ViewModels/PythonSettingsViewModel.cs) - Indentified -> Identified (SharpEyes/Models/CalibrationParameters.cs, Eyetracking/CalibrationParameters.cs) - tge -> the (Eyetracking/MainWindow.CalibrationTab.cs) - lables -> labels (Eyetracking/MainWindow.xaml.cs) - assums -> assumes (docs/workflow/stimulus and gaze.md) Co-Authored-By: Claude Code 2.1.157 / Claude Opus 4.7 === Do not change lines below === { "chain": [], "cmd": "codespell -w", "exit": 0, "extra_inputs": [], "inputs": [], "outputs": [], "pwd": "." } ^^^ Do not change lines above ^^^ --- CrashReporter/CrashReporter.csproj | 2 +- Eyetracking/CalibrationParameters.cs | 2 +- Eyetracking/MainWindow.CalibrationTab.cs | 2 +- Eyetracking/MainWindow.xaml.cs | 2 +- SharpEyes/Models/CalibrationParameters.cs | 2 +- SharpEyes/SharpEyes.csproj | 2 +- SharpEyes/ViewModels/PythonSettingsViewModel.cs | 2 +- docs/workflow/stimulus and gaze.md | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CrashReporter/CrashReporter.csproj b/CrashReporter/CrashReporter.csproj index c399760..820cd28 100644 --- a/CrashReporter/CrashReporter.csproj +++ b/CrashReporter/CrashReporter.csproj @@ -3,7 +3,7 @@ WinExe netcoreapp3.1 enable - + copyused true diff --git a/Eyetracking/CalibrationParameters.cs b/Eyetracking/CalibrationParameters.cs index 379fd0e..675916a 100644 --- a/Eyetracking/CalibrationParameters.cs +++ b/Eyetracking/CalibrationParameters.cs @@ -33,7 +33,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/Eyetracking/MainWindow.CalibrationTab.cs b/Eyetracking/MainWindow.CalibrationTab.cs index 35ecb09..9b83458 100644 --- a/Eyetracking/MainWindow.CalibrationTab.cs +++ b/Eyetracking/MainWindow.CalibrationTab.cs @@ -116,7 +116,7 @@ private void MarkInButton_Click(object sender, RoutedEventArgs e) } /// - /// Set tge current frame as the end of the calibration sequence + /// Set the current frame as the end of the calibration sequence /// /// /// diff --git a/Eyetracking/MainWindow.xaml.cs b/Eyetracking/MainWindow.xaml.cs index 7e87bc4..c989e55 100644 --- a/Eyetracking/MainWindow.xaml.cs +++ b/Eyetracking/MainWindow.xaml.cs @@ -75,7 +75,7 @@ private EditingState editingState private bool isPupilManuallySetOnThisFrame = false; // Pupil X and Y set the _center_ of the ellipse - // The outward-facing values, both returned and in the text lables, + // The outward-facing values, both returned and in the text labels, // Reflect the position in video frame space // PupilEllipse's values reflect values in screen space private double PupilX 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/SharpEyes.csproj b/SharpEyes/SharpEyes.csproj index abd3439..0e94e9e 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 45b6274..694c8fe 100644 --- a/SharpEyes/ViewModels/PythonSettingsViewModel.cs +++ b/SharpEyes/ViewModels/PythonSettingsViewModel.cs @@ -169,7 +169,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/workflow/stimulus and gaze.md b/docs/workflow/stimulus and gaze.md index 59186d3..de74c6b 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. From 67741d33235e883df0ba88d5addc798843b426d8 Mon Sep 17 00:00:00 2001 From: Matteo Visconti di Oleggio Castello Date: Fri, 29 May 2026 14:39:50 -0700 Subject: [PATCH 5/5] Fix typos in README and docs/building.md Fixed contextually unambiguous typos introduced in new origin/main content: - frams -> frames (README.md: recentered frames) - fiter -> filter (README.md: filter responses) - Becuase -> Because (README.md) - buil -> build (README.md: build from source) - exectuable -> executable (docs/building.md) Co-Authored-By: Claude Code 2.1.157 / Claude Opus 4.7 --- README.md | 6 +++--- docs/building.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) 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/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