Skip to main content

PyMovie

PyMovie is a simple (hopefully) application for extracting lightcurves from occultation videos.

It is specially designed to be robust in both star tracking and data extraction when the video has been disturbed by wind-shake.

The name was chosen out of respect and deference to LiMovie, a pioneer application published many years ago. This application has fewer ‘bells and whistles’ than LiMovie and so should be easier to use for a newbie.

Installing

Windows: download the executable (easiest)

Windows users can skip the Python toolchain entirely. Go to the latest release page and download PyMovie.exe from the Assets section. Double-click to run — no installation, no Python setup required. The executable bundles its own Python runtime and all dependencies.

The first activation will take extra time because it will be downloading the proper version of Python and all the other dependencies. Subsequent activations will only tkae a few seconds.

To update later, just download the newer PyMovie.exe from the release page and replace the old one.

If you’d rather run from source (all platforms), follow the uv-based instructions below.

Installing from source (any platform)

PyMovie uses uv to manage its Python environment. You do not need Python pre-installed — uv will automatically download the correct version (3.10) on first run.

Step 1. Install uv (one line, user-scope, no admin rights required).

Windows, in PowerShell:

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS or Linux, in a terminal:

curl -LsSf https://astral.sh/uv/install.sh | sh

Close and reopen your terminal afterwards so the new uv command is on your PATH.

Step 2. Get the PyMovie source. Either clone with git:

git clone https://github.com/bob-anderson-ok/pymovie.git
cd pymovie

or download the repository as a ZIP from the GitHub page, unzip it, and cd into the extracted folder.

Step 3. Launch PyMovie:

uv run pymovie

On first run, uv downloads Python 3.10 (if not already present), installs the pinned dependencies from uv.lock into a local .venv folder, and opens the PyMovie window. Subsequent runs are near-instant.

Updating

To pick up a new PyMovie release:

git pull
uv run pymovie

uv automatically re-syncs the environment whenever uv.lock has changed, so there is nothing else to do.

Photometry uncertainty export

The Photometry Noise controls on the Median/Misc tab can add signal_err and snr columns to CSV files. The estimate combines local background scatter with source shot noise. Local background scatter already includes read noise, so it is not added separately. Set the detector gain for your camera; the default gain is marked as approximate in the CSV header. The existing .pymovie recording is still written alongside the CSV.

AVI/AAV to FITS

After opening a video and loading or training its OCR timestamp profile, use Timestamp -> Convert AVI/AAV to FITS. Choose an existing output folder in the folder dialog. It starts at fits_converted for full frames or fits_converted_fields for field images when those folders exist; otherwise it starts in the source video’s folder. You can create a new folder in the dialog. The confirmation lists the target folder and warns before replacing matching frame- or field- FITS files. Other FITS files are preserved.

AAV conversion preserves the reader’s 16-bit pixel values. Full-frame exposure comes from AAV frame metadata where available, with the effective frame rate as a fallback. Integrated AAV recordings use full-frame output only.

Tests

Run the regression tests from the repository root:

uv run python -m unittest discover -s tests -v

The tests cover numerical limiting cases and CSV error columns alongside the .pymovie recording. The numerical tests check the implemented uncertainty formula; they do not establish its physical calibration for a specific detector or data reduction workflow. The tests cover FITS timestamp and exposure headers, conversion cancellation, and AAV reader behavior using generated data.

AVI codecs

If OpenCV cannot decode an AVI, PyMovie tries its packed RV24 reader and then PyAV/FFmpeg. Install PyAV in the environment created by uv to enable that second fallback:

uv pip install av

The reader regression tests create short RV24 and lossless FFV1 videos in temporary directories. Run all of them with:

uv run --with av python -m unittest discover -s tests -v

ADV/AAV on Apple Silicon

Adv2 1.2.0 bundles an Intel-only macOS library. After installing the Python dependencies, Apple Silicon users can build the native reader with:

uv run python scripts/build_advcore_macos.py

This requires Git and Xcode Command Line Tools (xcode-select --install). The script builds the official ADVCore source at a pinned revision for ARM64, keeps a backup of the original library, and installs it in the active Python environment. Repeat this step after reinstalling Adv2.

Tests

Run the OCR pickle compatibility regression tests from the repository root:

uv run python -m unittest discover -s tests -v

The tests cover NumPy 1.x and 2.x array module paths, corrupted input, and loading OCR templates from the observation folder or application folder. Fixtures are generated in temporary directories; existing OCR files are not modified.

Troubleshooting

  • “uv: command not found” — close and reopen your terminal, or follow the PATH instructions printed by the uv installer.

  • Windows SmartScreen warning on the uv installer — click More info → Run anyway. The installer is published by Astral.

  • Corporate proxy / firewall issues — uv honours standard HTTPS_PROXY and HTTP_PROXY environment variables.

Metadata

Release files for pymovie 4.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pymovie 4.3.0
File Size Uploaded Provenance Actions
pymovie-4.3.0.tar.gz 18.2 MB Without provenance Details for pymovie-4.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pymovie 4.3.0
File Interpreter ABI Platform Actions
pymovie-4.3.0-py3-none-any.whl Python 3 none any Details for pymovie-4.3.0-py3-none-any.whl

Total release size: 36.4 MB

Release files / pymovie-4.3.0.tar.gz

Download URL pymovie-4.3.0.tar.gz
Size 18.2 MB
Tags Source
SHA-256 checksum
How to use checksums
9d0ab1ee00acc97b76b95801b6d43bc26c8aa01266a7e100db9f132c62b3fc39
BLAKE2b-256 checksum
How to use checksums
c3f2fbc9ec76559e6e600f233a90fdf2a4e848f3dd66a7150ac30edb7ed6fef0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / pymovie-4.3.0-py3-none-any.whl

Download URL pymovie-4.3.0-py3-none-any.whl
Size 18.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
508999ecf471a005419403f2b22155ce2529a1559cab495e37ef81a3e34d0d91
BLAKE2b-256 checksum
How to use checksums
22ed23ef1e025483a70cf4142040e6d1ec8e96003fed19b5bea268eda64f5913
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for pymovie 4.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

4.3.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page