Skip to content

Repository files navigation

$\text{HeLab}$

$\textbf{H}\text{elium}$ $\textbf{E}\text{xperiment}$ $\textbf{L}\text{ab}$ $\textbf{A}\text{nalysis}$ $\textbf{B}\text{oard}$


python pyqt6

latest release cicd Codecov Codecov

license github issues github pull requests

here are some more random badges because they look cool

apple arm nvidia intel dell gitHub actions pandas numpy numba scipy conda pip pycharm

arxiv google scholar orcid


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:

pyinstaller HeLab.spec --clean
pyinstaller HeLab.spec --clean -y 
pyinstaller --onefile --windowed --name HELIUM helab/main.py

Setting up self hosted runners

Setup 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.

Notes of other random scripts

python -m venv venv
source venv/bin/activate # for unix
venv\Scripts\activate # for windows

On 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.txt
pip install -e .
git submodule update --init --recursive # legacy/tdc_autoconverter (HeBECANU/tdc_autoconverter, MATLAB, reference only)
.\venv\Scripts\activate
python -m cProfile -o helab_main.prof  helab/main.py
snakeviz helab_main.pro
conda create -n HeLab python=3.12

Notes on plotting libraries

  • Matplotlib ok for publication quality
  • Plotly ok, but have html file caveats
  • PyQtGraphs panning and plot range issues (?), maybe will try to use this to write a fast update code.
  • PyVista panning and plot range issues (?)
  • VisPy missing data points on large data file ()
  • Manim emmm no (too much configuration), not real time

Dumps

mypy pyright

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 pytest

The same env var works for running the app itself headlessly:

QT_QPA_PLATFORM=offscreen helab

/Users/tonyyan/Library/Preferences/com.anu.HeLab.plist


TODO

  • 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

About

A graphical tool for viewing and processing data files stored in complex folder structures.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages