introlab / openimu Goto Github PK
View Code? Open in Web Editor NEWOpen Source Analytics & Visualisation Software for Inertial Measurement Units
License: GNU General Public License v3.0
Open Source Analytics & Visualisation Software for Inertial Measurement Units
License: GNU General Public License v3.0
When data isn't properly associated to a participant, there's no way right now to allow data moving to another participant.
Implement drag & drop or dialog to do so.
As of now, beacon data isn't plotted. A suggestion to plot beacon data would be the following:
Code signing of the webengine (used to display GPS data on a map) doesn't seem to be properly working for now on Mac OS.
Feature has been disabled on Mac OS.
Investigate and fix the issue - maybe related to wrong entitlement or missing signing on some dependencies?
The python/env/python-3.7 folder gets created but no files are generated within the folder. Although the build goes successful.
System: Macbook Pro
OS: Catalina
Apple Watch file for activities isn't supported yet, but should be added to allow display and data export.
Add support for batching an import with minimal user interaction, either from a predefined meta-session batcher, or by intelligent directory crawling, or a combination of both (directory crawling to find batchers).
Draft for formatting of an OpenIMU Meta-Import (.oimi ๐) with JSON formatting:
{
"version" : "1"
"logger_type" : "AppleWatch",
"deviceID" : "W01P1",
"appVersion" : "0.11.2",
"participant" : "abcd1234",
"description" : "any additional info on session? optional",
"files" : [
"watch_Battery.data",
"watch_Coordinates.data",
...
]
}
Currently, using only SQLAlchemy to access and manage the file structure (database), when the file format changes, there is no backward compatibility provided, since SQLAlchemy doesn't create by itself the missing fields / tables.
Usual solution is to use an external migration tool running when the software is installed, but that works only in a scenario with only one database, which is not the case here since each file is its own database.
The solution would be to integrate checking the file version before opening it in OpenIMU and upgrade its structure, if required, using direct database access (not SQLAlchemy).
In file version 3 for Motion, magneto values were added. Import them.
Since the changes to the new timestamps format in the database, timestamp of each GPS sample isn't properly exported. This issue might also affects other sensors date exportation.
There is an exactly one minute gap every hour in the timeline of imported 'ProcessedMotion' data. I've checked in the log files for error, but these gaps are not present in the data.
I highly suspect that there is a problem with the code at 'AppleWatchImporter.py:738', namely the comparison timestamp_sec > last_timestamp + 3600
is for an hour, however I don't quite understand the import process to make a fix.
I can send you sample data if you wish, but any watch_ProcessedMotion.data file greater than 20Mb will show this behavior.
Got the following error when run from pyCharm. Any pointer?
Traceback (most recent call last):
File "/home/tan/proj/imu/OpenIMU/python/OpenIMUApp.py", line 409, in <module>
from libopenimu.qt.MainWindow import MainWindow
File "/home/tan/proj/imu/OpenIMU/python/libopenimu/qt/MainWindow.py", line 12, in <module>
from resources.ui.python.MainWindow_ui import Ui_MainWindow
ModuleNotFoundError: No module named 'resources.ui.python.MainWindow_ui'Traceback (most recent call last):
File "/home/tan/proj/imu/OpenIMU/python/OpenIMUApp.py", line 409, in <module>
from libopenimu.qt.MainWindow import MainWindow
File "/home/tan/proj/imu/OpenIMU/python/libopenimu/qt/MainWindow.py", line 12, in <module>
from resources.ui.python.MainWindow_ui import Ui_MainWindow
ModuleNotFoundError: No module named 'resources.ui.python.MainWindow_ui'
An issue was reported with the transfer of Applewatch data, when the watch shuts down (because of an empty battery level, for example), that makes the transfer hangs the application.
When exporting data with sensor name with space in it (ex. "Raw Accelerometer"), the .mat file is properly generated, but the file can't be loaded in Matlab because of a space in the variable name.
The import process currently strips all sample from its temporal data, assuming that it will be able to reconstruct it later. This proves to not be exact in the cases where the sampling rate is missing or imprecise, or when samples are missing.
The solution discussed involves creating a specialized table for timestamps as so:
tabTimestamps
=============
[PK] id_timestamps : Integer [Not Null]
first_timestamp_us : UInt64 // unix timestamp with microsecond precision
nb_samples : Int32 // Number of samples in blob
data : blob // Compact list of UInt32, offseted from first_timestamp_us, with microsecond precision
Adding a foreign-key to this table into tabSensorData, to be potentially shared by many.
One big trade-off from this method is that we will be maximizing performance at the cost of granularity, hence a SELECT on the database might be more complicated and take up more memory than needed. Also, potential UPDATE on the data would be very inefficient. However, it is my understanding that those should not be needed pretty much ever, so it might be negligible.
For future proofing and without a bigger space cost, timestamps can have microsecond precision with a max offset of 2^32 microseconds = 4294 seconds = 1:12:35. I also suggests that this be the size of all windows instead of an arbitrary one hour, for maximal packing.
It is my opinion that all sensors, not only high frequency data, should also abide by this format, for coherence's sake. Low frequency would mean a low amount of data, mitigating the bigger memory consumption on single sample SELECT.
Importing into the database doesn't keep the data into sessions, instead it agglomerates it into day long recordSet.
A recordSet should be analogous to a single logging session. Many sessions in a single day could then be discernible in the UI, and erroneous sessions easily removable.
Agglomeration into other groups should instead be done at the demand of the user and not affect the DB, maybe with a drop menu of choices for different options for visualizations (session, hour, day, week, ...)
Improve Actigraph data importer.
Verify algorithm to make sure the cumulation of seconds fits a day.
Here are the feature requests for improving the data visualization UI
Hi, may I know when will the apple watch version be available?
When loading a new dataset, remember the last 5 used datasets (recent) and allow the user to quickly select and load those recently used files.
Build new logo and icon for the app.
Revise user interactions and paths and fix usability issues.
Rare case of HR not appearing in OpenImu.
The watch was not worn but data are present (HR is activated in the options).
HR data is still exportable via OpenImu.
Faulty dataset attached.
2023-02-23_11-55-29-0.zip
Hello,
My name is Filipe Salles and I'm working at Porto University, Portugal (indeed everyone is working at home during these quarantine times). I'm trying to install it, but I had a problem. When PyCharm is running, it shows up the following:
/usr/bin/python3.6 /home/salles/Documentos/OpenIMU-master/python/OpenIMUApp.py
Traceback (most recent call last):
File "/home/salles/Documentos/OpenIMU-master/python/OpenIMUApp.py", line 409, in
from libopenimu.qt.MainWindow import MainWindow
File "/home/salles/Documentos/OpenIMU-master/python/libopenimu/qt/MainWindow.py", line 12, in
from resources.ui.python.MainWindow_ui import Ui_MainWindow
ModuleNotFoundError: No module named 'resources.ui.python'
Process finished with exit code 1.
Anyone can help me with this? Thanks.
PS - It's my first time using Qt Creator and PyCharm (in ubuntu), so I think that maybe I did simething wrong in these parts.
A version check could be implemented using GitHub API with this URL: https://api.github.com/repos/introlab/OpenIMU/releases
This would allow to retrieve the latest release version and compare to the current version to allow user to update, if necessary.
Currently, participants and groups are listed in the order they were created in the file.
However, it would be useful to display them by alphabetical order and to allow text search to quickly find a specific participant in a larger dataset.
Specifically:
On Windows (at least), settings are saved as "string", not boolean, and thus crash when opening the "Transfer" dialog.
Improve zoom feature on graph to load further data when the zoom level change, in order to gain a better prevision when zooming in.
Currently, any long running operation freezes up the UI. Moving all of those (DB operation, data graphing, data imports) on a background thread would relieve the main thread and make the application snappier. One other benefit is that if a background thread crashes, it doesn't crash the whole application with it.
This will require a refactoring of the data and operation flow in the application, but will ultimately make it more modular and maintainable.
Add a cancel button to cancel ongoing processing / loading.
Since PySide is officially supported by Qt, should migrate the project to PySide and update everything.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.