$\textbf{H}\text{elium}$ $\textbf{E}\text{xperiment}$ $\textbf{L}\text{ab}$ $\textbf{A}\text{nalysis}$ $\textbf{B}\text{oard}$
here are some more random badges because they look cool
For 'downstairs' and 'upstairs' lab deployment (most stable version) use: https://github.com/HeBECANU/HeLab
Development branch: (all sorts of bugs and features) see: https://github.com/TonyXTYan/HeLab
I'm targeting Python3.12 for its new typing features. As of now this builds on python 3.11, 3.12 and 3.13. I'll try to maintain compatibility with 3.12 and 3.13 but might use newer features and drop support for lower python versions. For more information about which python version are supported, see the CI runs here
Comparison with existing software:
- https://pypi.org/project/argos/
- wants datafiles to be in a single file (e.g. HDF5)
- doesn't allow different analysis plots, so not general enough for multiple purposes in one app.
- https://github.com/adareau/HAL
- data need to be arranged in a particular format
- difficult to do multiple analysis in one app.
- GUI built from Qt Designer, instead of programmatically generated GUI (hard to debug and add features).
random useful notes:
- https://www.pythonguis.com/faq/built-in-qicons-pyqt/
- https://github.com/niklashenning/pytablericons https://tabler.io/icons https://github.com/tabler/tabler-icons
pyinstaller HeLab.spec --clean
pyinstaller HeLab.spec --clean -y
pyinstaller --onefile --windowed --name HELIUM helab/main.pySetup link: https://github.com/TonyXTYan/HeLab/settings/actions/runners/new
Runner labels: macos14-arm64, win10-intel64.
Na, apparently github action is free for public repos, also much easier to setup and faster parallel jobs.
python -m venv venv
source venv/bin/activate # for unix
venv\Scripts\activate # for windowsOn macOS with iCloud Drive syncing this folder, venv can be created as venv.nosync
and symlinked to venv (ln -s venv.nosync venv) to keep it out of iCloud sync — venv
files churn constantly and aren't worth uploading. Activation and imports work the same
either way.
pip install -r requirements.txtpip install -e .git submodule update --init --recursive # legacy/tdc_autoconverter (HeBECANU/tdc_autoconverter, MATLAB, reference only).\venv\Scripts\activatepython -m cProfile -o helab_main.prof helab/main.py
snakeviz helab_main.proconda create -n HeLab python=3.12
Matplotlibok for publication qualityPlotlyok, but have html file caveatsPyQtGraphspanning and plot range issues (?), maybe will try to use this to write a fast update code.PyVistapanning and plot range issues (?)VisPymissing data points on large data file ()Manimemmm no (too much configuration), not real time
We use mypy and pyright to enforce strict typing for this package. everything should be typed.
pytest
Tests launch real Qt windows by default. To run headless (no windows popping up, e.g. over SSH or while doing other work), prefix with QT_QPA_PLATFORM=offscreen — this only affects that one command, not your shell session:
QT_QPA_PLATFORM=offscreen pytestThe same env var works for running the app itself headlessly:
QT_QPA_PLATFORM=offscreen helab/Users/tonyyan/Library/Preferences/com.anu.HeLab.plist
-
Add auto scan button
-
Add cancel recursive scan button
- probably should lock the tree view while scanning
- variable recursive scan depth
-
nothing folder should be ligher gray, and hidden folder with data is black
-
typing
-
unit tests
- some test experiment data
-
auto build? maybe?
-
cache github actions
-
hasChildren() scan at root is taking time
-
File reading system is blocking the main thread (?)
-
Code validation check in pipeline