Biomeca

Timeline
Login

Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

146 check-ins using file COPYING or LICENSES/GPL-3.0-only.txt or LICENSE version edb0016d9f

2024-12-05
13:24
Use pyinstaller spec file in Make job. Leaf check-in: a920f578f3 user: samn tags: trunk
13:22
Add randomly generated tests with Hypothesis. check-in: 937e51e68f user: samn tags: trunk
2024-12-02
10:22
Fix C3D loader and add a Scatter Plot node. check-in: f62d9392ec user: samn tags: 0.1.0, trunk
10:09
Add C3D file loader. check-in: 831f2b1b8e user: samn tags: trunk
2024-12-01
20:28
Fix bug with nodes with multiple input controls. check-in: 2e6ad7674b user: samn tags: trunk
20:10
Fix bug where adding a node messed up all socket positions. check-in: a3d593dd0f user: samn tags: trunk
16:54
Add a failing test for the create node group button. check-in: 7233d6c6e6 user: samn tags: trunk
16:45
Move node widgets to separate file. check-in: c7629a334e user: samn tags: trunk
16:38
Add tests for PaneSettings. check-in: 95e5969b11 user: samn tags: trunk
13:25
Move Tk instance outside of MainWindow class to enable future optimizations of tests. check-in: 93a1c522bc user: samn tags: trunk
12:54
Add a Bar Plot node. check-in: 4585d71f51 user: samn tags: trunk
2024-11-30
11:33
Fix reactivity system by running callbacks immediately after the SQL statement finishes. check-in: c075741a62 user: samn tags: trunk
2024-11-29
20:10
Add combobox node control and fix infinite loop bug. check-in: 44aaa11319 user: samn tags: trunk
19:28
Add Select Column node. check-in: 88a54ecddd user: samn tags: trunk
16:26
Implement table view for dataframes. check-in: decb0e5380 user: samn tags: trunk
16:26
Fix small bug in nodes runtime where group inputs weren't loaded. check-in: 2f2da77337 user: samn tags: trunk
16:03
Load data files into a dataframe and pass to pane nodes as input. check-in: c24b75c7c0 user: samn tags: trunk
14:07
Create a plugin interface for adding file loaders. check-in: ede2630382 user: samn tags: trunk
13:53
Remove the Integer node, it is redundant with the Number node. check-in: 4f1ae50df0 user: samn tags: trunk
13:03
Make nodes runtime work properly and implement basic node controls. check-in: 3d5768e60e user: samn tags: trunk
12:10
Add build and venv files to ignore-glob. check-in: a12d767ad6 user: samn tags: trunk
12:09
Simplify toolchain by replacing poetry with pip/venv/setuptools. check-in: e03ca00243 user: samn tags: trunk
2024-11-27
19:57
Begin pane output implementation. check-in: c9108b5358 user: samn tags: trunk
19:56
Fix some bugs in nodes runtime. check-in: e8d6488bc0 user: samn tags: trunk
17:45
Implement algorithm for evaluating node groups. check-in: 7ccd21c646 user: samn tags: trunk
16:55
Use better API for custom nodes. check-in: 4d77b15277 user: samn tags: trunk
15:29
Fix a few type errors. check-in: d97a9d5df3 user: samn tags: trunk
15:25
Make links move as nodes are dragged. check-in: 4c242d4bfd user: samn tags: trunk
15:15
Use simpler tags to identify sockets in the node editor canvas. check-in: 0e1551032d user: samn tags: trunk
15:12
Mostly implement node link dragging/connecting. check-in: fe5cdb42b0 user: samn tags: trunk
11:06
Remove sockets from node widgets. check-in: f2be4d8042 user: samn tags: trunk
11:05
Add clean job to Makefile. check-in: 2b4e897424 user: samn tags: trunk
2024-11-23
21:30
Simplify make target for release builds. check-in: c082a8fe03 user: samn tags: trunk
21:26
Add pyinstaller and makefile target for release builds. check-in: d894b141ba user: samn tags: trunk
20:36
Fix bug created in bugfix for loading the selected pane in the panes list. check-in: d449ee830c user: samn tags: trunk
20:09
Fix bug with loading the selected pane for the panes list. check-in: 8d34119b4d user: samn tags: trunk
20:08
Mostly implement node group input/output settings. check-in: 6e7bae97ff user: samn tags: trunk
20:07
Speed up Makefile by removing "poetry run". check-in: f8b9add3a8 user: samn tags: trunk
11:43
Fix undo bug with persistent selections. check-in: d721a4fd86 user: samn tags: trunk
11:31
Fix some issues with persistent selected pane and make the node editor canvas fill its container. check-in: d5172fc8f8 user: samn tags: trunk
11:00
Make selected pane and nodegroup persistent. check-in: b88077f6c8 user: samn tags: trunk
10:53
Add tests for panes list and fix a few bugs. check-in: e8afeb2731 user: samn tags: trunk
2024-11-22
20:42
Implement node dragging and simple controls. check-in: 77a7492863 user: samn tags: trunk
20:42
Add a few more basic nodes. check-in: 3a1417316a user: samn tags: trunk
19:19
Implement adding panes and adding a nodegroup to a pane. check-in: 98549df566 user: samn tags: trunk
17:41
Implement part of nodes check-in: 01bf2fa902 user: samn tags: trunk
2024-11-18
00:26
Add basic draggable canvas to node editor check-in: d9ac2bff22 user: samn tags: trunk
00:08
Organize code into modules check-in: 1c5a4dfa61 user: samn tags: trunk
2024-11-17
23:45
Add pane settings in sidebar check-in: 90a71a7514 user: samn tags: trunk
11:24
Fix bug where changes weren't added to the undostack check-in: afaaae4c5c user: samn tags: trunk
10:43
Merge tk code and tests from the tk branch check-in: 4e3ff1d4cb user: samn tags: trunk
10:26
Add tests for verbosity flag Leaf check-in: 076b5af930 user: samn tags: tk
10:15
Add CLI and tests check-in: b5cd356600 user: samn tags: tk
2024-11-11
22:14
Make interface react to file changes check-in: 8fa965d3f8 user: samn tags: tk
20:17
Add change listener class. check-in: 5847e44772 user: samn tags: tk
19:58
Handle unsupported file versions. check-in: a39153e7fa user: samn tags: tk
19:50
Implement SQL-based undo/redo. check-in: ba7ca34d3f user: samn tags: tk
17:52
Switch from builtin sqlite3 module to apsw. check-in: 17b85fe813 user: samn tags: tk
17:29
Add logging. check-in: 8bc424f613 user: samn tags: tk
17:08
Implement PanesList except for editing/reactivity. check-in: e6d8015506 user: samn tags: tk
14:59
Add widget skeleton and draggable panes. check-in: 5742c86653 user: samn tags: tk
13:36
Test MainWindow.quit rather than mocking it. check-in: 0d8b96880e user: samn tags: tk
10:41
Add ignore glob check-in: d525cb9c79 user: samn tags: tk
10:41
Run makefile jobs in venv check-in: 0aaa4dccef user: samn tags: tk
2024-11-10
14:21
Add files dialog check-in: 7ce0539246 user: samn tags: tk
2024-11-07
20:37
Add settings dialog check-in: 0c666ee2a5 user: samn tags: tk
18:19
Add application file schema check-in: aa33c471de user: samn tags: tk
17:48
Don't typecheck tests, mypy doesn't understand unittest asserts check-in: bc6dc4ba8b user: samn tags: tk
17:32
Write some UI tests and tk check-in: a469a8e791 user: samn tags: tk
2024-10-20
02:57
Implement node groups mostly check-in: cf18364b09 user: samn tags: trunk
2024-10-11
11:49
Add some nodes check-in: c3ba91c902 user: samn tags: trunk
2024-06-26
11:06
Use Qt + movable panes/node editor check-in: 07568d146e user: samn tags: trunk
2024-02-12
18:56
Add settings dialog. check-in: aec3ad6949 user: samn tags: trunk
2023-12-10
14:59
Use a menubutton for Add Filter instead of a dialog check-in: cb73faa6d1 user: samn tags: trunk
13:32
Implement multiselect params and subset filtering. check-in: 6bcc3852cf user: samn tags: trunk
2023-11-26
18:56
Use Tk for the GUI. check-in: bc6b0c5fd8 user: samn tags: trunk
2023-11-16
18:01
Replace Justfile with Makefile. check-in: bb715b5852 user: samn tags: trunk
2023-10-21
19:10
Don't typecheck pyside6 and c3d. check-in: 56ab403a25 user: samn tags: trunk
15:35
Add copyright header to test_widgets.py. check-in: 2a66a36652 user: samn tags: trunk
15:34
Remove unused Qt resource manifest. check-in: 02efb0e992 user: samn tags: trunk
15:27
Add Justfile job to run type checks. check-in: 2aebe08f28 user: samn tags: trunk
15:26
Fix type errors and increase mypy's strictness. check-in: ef99a31457 user: samn tags: trunk
11:25
Run the QAbstractItemModelTester in trial manager tests. Also assert that Qt doesn't log any warnings or errors in tests and fix a small inconsistency in TrialsModel that the item model tester is unhappy about. check-in: 39d8f68b76 user: samn tags: trunk
10:37
Test trial renaming functionality of the trial manager. check-in: fa68fdeb1c user: samn tags: trunk
10:20
Test that trial manager skips deletion if the user does not confirm the action. check-in: bcb01d28f6 user: samn tags: trunk
2023-10-20
21:13
Use a valid application_id. The current one overflows the 32-bit signed integer used to store it and returns zero. I thought it was an unsigned integer. check-in: 2e7d89b01c user: samn tags: trunk
2023-10-18
20:33
Switch pytest -> unittest in Justfile. check-in: cb2162bd0c user: samn tags: trunk
20:32
Manually create dialogs instead of using Qt's logging utilities. This prevents unwanted console output in tests. check-in: 04fcc24a6e user: samn tags: trunk
20:07
Add unit tests for trials manager. check-in: e4d691e9f4 user: samn tags: trunk
2023-10-17
12:45
Fix mistake in C3D import code. Get the lastrowid of a cursor when inserting labels. check-in: fd2610432b user: samn tags: trunk
2023-10-14
19:35
Remove unique constraint on label names since deduplicating them is a pain. check-in: 2d102b25a4 user: samn tags: trunk
19:33
Construct `Project`s with a SQLite connection instead of a path so that tests can pass in an in-memory database. check-in: 300df7e555 user: samn tags: trunk
12:42
Remove qrc references since we no longer bundle icons. check-in: 303aaf02d9 user: samn tags: trunk
12:29
Purge git leftovers from the repository. check-in: 185e84ee2a user: samn tags: trunk
2023-10-13
13:36
Add sample tests check-in: 5dff62bec8 user: sam@samnystrom.dev tags: trunk
13:34
Add view types to UI and begin work on table model check-in: c460e97f15 user: sam@samnystrom.dev tags: trunk
13:34
Add "manage trials" icons to QRC check-in: 5bcf26c44a user: sam@samnystrom.dev tags: trunk
13:32
Ignore error when deleting before creating a project check-in: 785288238b user: sam@samnystrom.dev tags: trunk
13:31
Add dialog for managing trials The dialog is accessed by a "Manage Trials" button on the main toolbar and affords deleting, adding, and exporting trials. check-in: ed40c04d01 user: sam@samnystrom.dev tags: trunk
13:24
Add temp table for output of filters check-in: 0e724732e1 user: sam@samnystrom.dev tags: trunk
13:24
Add license info to filters.py check-in: 16585b6fe8 user: sam@samnystrom.dev tags: trunk
13:23
editorconfig: add qrc rule check-in: 4e33b5e458 user: sam@samnystrom.dev tags: trunk
2023-09-23
19:50
Show error message if a trial already exists Use QErrorMessage.qtHandler() to show qCritical and friends with dialogs. Show errors if a trial is added and there is already a trial with that name or the C3D file does not exist. check-in: 210074d4b2 user: sam@samnystrom.dev tags: trunk
19:08
Add basic filter functionality Add definitions for one filter (Clamp) and its params using dataclasses to store the properties of the filter and params. Add code for loading and adding filters and for loading params to the model. Show filters and params, and allow modifying param values, in the view. check-in: 90e4e5fc44 user: sam@samnystrom.dev tags: trunk
14:02
Move C3D data into SQLite Store the raw data in a SQL table instead of a zlib-compressed blob. The new plan for data processing is to use SQL queries instead of Python classes operating on Pandas dataframes. This improves the debugging experience with the sqlite3 CLI and SQLiteBrowser and will result in simpler application code for manipulating and running filters. It makes filters more generic and extensible as well, by making it easy to do things like define dropdown options for a param using a SQL query or load third-party filters at runtime since filters are just SQL now. It is also somewhat faster than using Pandas and provides more ergonomic data manipulation than with Pandas-style two-dimensional tables. check-in: fc4c6fdd64 user: sam@samnystrom.dev tags: trunk
2023-09-17
21:16
Implement editing for pane options Expand app.Pane with getters and setters for pane options that emit signals and update the project file when changed. Add editing functionality to widgets.PaneEditor with a QFormLayout. check-in: 62c4f8cd74 user: sam@samnystrom.dev tags: trunk
19:04
Edit panes by double-clicking them in the layout check-in: b29b6f07b6 user: sam@samnystrom.dev tags: trunk
16:39
Delete junk code from the old data model check-in: 09d3305529 user: sam@samnystrom.dev tags: trunk
16:14
Add split viewing and manipulation The view is a split. Each split may either contain a single pane, or it may be horizontally or vertically split, where each side is itself another split. This is relatively simple to implement but enables easy and flexible creation of almost any type of layout. Currently, splits are manipulated with the right-click context menu. In the future, a more discoverable method will be added. Deleting a pane currently does not remove it from the "Edit" tab. The "Edit" tab should also clearly indicate which pane is being edited and ideally enable easy switching of the current pane. This will most likely be implemented with a small preview of the layout in the top-right corner of the pane viewer, where each pane is clickable and the current one is highlighted. check-in: 324af9af5f user: sam@samnystrom.dev tags: trunk
11:41
Run pytest instead of unittest in Justfile check-in: 44f37d5c1f user: sam@samnystrom.dev tags: trunk
11:36
Increase yapf colmun limit to 90 We get a lot of gross formatting with the 80-column limit, especially with SQL queries since they consist of a function call with a big string followed by a tuple. check-in: 2e48c17ea2 user: sam@samnystrom.dev tags: trunk
2023-09-16
17:25
Compress C3D data in the project file with zlib check-in: d755566021 user: sam@samnystrom.dev tags: trunk
14:09
Use pandas dataframes for C3D data Using dataframes instead of any of the previous ad-hoc data representations greatly simplifies the data loading and manipulation code, since unlike before, there is only one data shape to handle. This should ensure that we no longer have to handle the case where a filter is added that cannot correctly handle its input. Also change the file format so that instead of a tar archive of C3D files and a SQLite database, it is just a SQLite database. The raw C3D data is stored in SQLite as blobs. This removes the need to save manually, since SQLite atomically commits all changes to the database file as soon as they are made. It also greatly improves performance, since we no longer have to compress and write many megabytes of C3D data to disk on every save. check-in: bc00747916 user: sam@samnystrom.dev tags: trunk
2023-08-16
10:43
stuff check-in: 568398fef5 user: sam@samnystrom.dev tags: trunk
10:01
Rename license check-in: 82a61237bc user: sam@samnystrom.dev tags: trunk
2023-08-15
22:42
Add __init__.py check-in: ca907ded19 user: sam@samnystrom.dev tags: trunk
21:54
Add some pytest tests check-in: 29b09324de user: sam@samnystrom.dev tags: trunk
21:53
Mostly finish switch to Qt Widgets this commit probably won't work check-in: 1ceedb1b18 user: sam@samnystrom.dev tags: trunk
21:52
Add .editorconfig file check-in: bce6f7c90c user: sam@samnystrom.dev tags: trunk
2023-07-19
02:35
Enable chart antialiasing and opaque resize Opaque resize makes resizing the splitter much less painful while on the graph tab. check-in: f5cd97f022 user: sam@samnystrom.dev tags: trunk
02:17
Begin rewriting the rest of the QML to Widgets check-in: dfc619faa8 user: sam@samnystrom.dev tags: trunk
2023-07-18
10:15
Add multi-trial and begin switch to Qt Widgets Using QML resulted in a ton of jank because you have to talk to it over signals/slots/properties, the Qt Widgets version is much cleaner, less verbose, and faster so far. check-in: ddb74fcf9b user: sam@samnystrom.dev tags: trunk
2023-07-15
22:08
Add code coverage check-in: 946f6a5e38 user: sam@samnystrom.dev tags: trunk
22:08
Add more params tests check-in: fd81dc1122 user: sam@samnystrom.dev tags: trunk
17:45
Add more tests for params check-in: 7d5be0bd2b user: sam@samnystrom.dev tags: trunk
2023-07-13
21:16
Suppress mypy warnings about untyped dependencies check-in: ad5f058c99 user: sam@samnystrom.dev tags: trunk
17:15
Implement filter composition Filters can now have sub-pipelines that they use to process data. These sub-pipelines are displayed in the UI and can be manipulated graphically. This feature will enable processing of multiple subjects and trials. check-in: 7342a41e60 user: sam@samnystrom.dev tags: trunk
13:19
Optimize graphing by using a Mapper to add data check-in: a165be23f6 user: sam@samnystrom.dev tags: trunk
13:19
Add support for graphing multiple series check-in: 9867db4c51 user: sam@samnystrom.dev tags: trunk
13:19
Add some tests for params module Also remove the old and nonfunctional tests for the filters module. check-in: 0106471a87 user: sam@samnystrom.dev tags: trunk
2023-07-12
18:36
Decouple pipelines from graphing functionality This is a prerequisite to composable filters, since not every pipeline will be top-level and talking to the QML graph. check-in: 6541e802c9 user: sam@samnystrom.dev tags: trunk
17:26
Keep track of the last opened project check-in: 65bddd4e6c user: sam@samnystrom.dev tags: trunk
17:25
Refactor SQLite persistence code Execute SQL updates when and where the object model changes instead of writing out all of the state in `pipeline.Pipeline` whenever anything changes. This is necessary in order to make filter composition possible, since Pipeline will no longer be able to handle all of the SQL interaction then. Also lay the groundwork for multiple pipelines by adding a `pipeline` table to the DB and having pipeline.Pipeline use its SQL id to perform operations. Stop passing an instance of the filter class to QML, it wasn't necessary and is no longer possible now that filters must be constructed with a SQLite connection and a SQL id. check-in: 181a884356 user: sam@samnystrom.dev tags: trunk
2023-06-29
22:28
Add installation instructions check-in: cd021d938a user: sam@samnystrom.dev tags: trunk
20:48
Rename to biomechalyzer check-in: 75e6bed4e6 user: sam@samnystrom.dev tags: trunk
20:48
Make the project packaging-friendly Fix imports so they qualify the package for local modules and set up poetry to build the package with the main script. check-in: a5fd3fe5e5 user: sam@samnystrom.dev tags: trunk
20:48
Switch order of graph and table tabs The graph tab should be first since it is more useful. check-in: 282c983701 user: sam@samnystrom.dev tags: trunk
20:48
Use an application file format to store state The file is a gzipped tar archive containing the "data.c3d" and "state.sqlite" files. Add a menubar to perform actions related to loading and saving projects and dialogs to select files to open or save. check-in: a559df0258 user: sam@samnystrom.dev tags: trunk
20:48
Store frame numbers This is necessary to make features like time-domain normalization work properly. check-in: bea8378019 user: sam@samnystrom.dev tags: trunk
20:48
Move pipeline into separate QML file Since there may be multiple pipelines being displayed simultaneously, the QML for them must be a separate component. check-in: f2c497f4e2 user: sam@samnystrom.dev tags: trunk
20:48
Move data loading out of filters Since the application file will contain the data for each trial, it no longer makes sense to load this data in a filter. check-in: 9c52a9979c user: sam@samnystrom.dev tags: trunk
20:48
Dynamically update graph width check-in: 48137ccc56 user: sam@samnystrom.dev tags: trunk
20:48
Load actual c3d data instead of the CSV export Also add new dimension param to Select filter. Now that we're using real c3d data, we need to select a point as well as a dimension to get a list of scalars out. check-in: 8a43a2476f user: sam@samnystrom.dev tags: trunk
20:48
Add basic graph visualization Currently it only does a line graph and dies if the data isn't a list of numbers. check-in: dc2e4baea5 user: sam@samnystrom.dev tags: trunk
20:48
Rename qml files check-in: dc609b90a6 user: sam@samnystrom.dev tags: trunk
20:48
Usa a nicely formatted GPL check-in: b14fd520cf user: sam@samnystrom.dev tags: trunk