Skip to main content

A pipeline for running JuliaPIV based on the workflow developed at OSU CEOAS

Project description

Julia Particle Image Velocimetry

Welcome to the CEOAS Coastal Imaging Lab's RGB video PIV arm of the ROXSI processing pipeline! In this repository you can find a variety of directories related to PIV. This particular project was initiated by Prof. Wilson's desire to move over to an open-source programming platform for data processing. Julia checks all the boxes with a strong scientific programming community, JIT compilation leading to reasonably fast execution, voluntary type safety, and smooth read/write-ability.

By switching this process over to Julia, the execution time of processing a single pair of images improved by roughly 50%. Some improvements were made by tuning the overall algorithm and trimming unnecessary code. However, the majority of speed-up came from Julia's JIT compilation, typing, and some memory management since PIV is quite dependent on large arrays.

Steps to first run on CEOAS servers

  1. Ensure Python and Julia are loaded. A python version greater than or equal to 3.11 is required. Currently, the exact Julia version of 1.11.5 is required.

    ml eb-sw Julia
    ml eb-sw Python

  2. In the directory of your choosing, create a Python virtual environment.

    python3 -m venv .venv

    For more information regarding Python virtual environments and package management, check out these links.

    Official Python Docs
    Real Python
    This venv is where juliaPIV will be installed using pip.

Step 1 must be done each time Monarch is fired up. Step 2 is a one time setup.

  1. Activate the virtual environment each time you'd like to use juliaPIV.

    source .venv/bin/activate

  2. If this is the first time juliaPIV is being installed on your User, pip can be used to get it:
    pip install juliaPIV
    Check that it was installed correctly with:
    pip list.

    To upgrade versions in the future, simply use:
    pip install --upgrade juliaPIV

  3. First time installations or new versions that required changes to Julia source code will require the following command. The init command compiles the Julia code into a .so file, greatly decreasing system overhead during parallel processing and decreasing reliance on Just-In-Time compilation for common functions and data types. This process can take quite some time, and it is highly recommended that the command is not included in any automation scripts.

    juliaPIV init

  4. Set up your desired configuration for PIV using a YAML file in the following format:

    # config.yaml
    N: 2                                # Number of images in set to be processed
    crop_factor: "1, 6144, 1, 3240"     # Crop factors for image
    final_win_size: 16                  # Final window size for PIV
    ol: 0.5                             # Window overlap during PIV
    
    # Absolute path to directory containing images to be processed
    input: /home/monarch0/ROXSI/2025/pantera/flightData/20250214/Flight3_1303/splitjpg
    
    # Absolute path to desired output folder
    output: /home/server/pi/homes/chumar/piv_env
    
    quiet: false                        # Supresses print statements
    downsample_factor: 0.5              # Downsampling, float between 0 and 1
    NPROC: 40                           # Maximum number of parallel processes to run
    save_images: false                  # Save downsampled and cropped images
    
  5. Run PIV!

    juliaPIV pipeline -c path/to/your/yaml

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

juliapiv-1.0.11.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

juliapiv-1.0.11-py3-none-any.whl (3.0 MB view details)

Uploaded Python 3

File details

Details for the file juliapiv-1.0.11.tar.gz.

File metadata

  • Download URL: juliapiv-1.0.11.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for juliapiv-1.0.11.tar.gz
Algorithm Hash digest
SHA256 23383662456f43a8c287996a8f1c334ece5500c871fbc8691d5ef8401fce72d9
MD5 f219c306565cbc0206de0b4624c3b7b4
BLAKE2b-256 8454745138c346be67652fb8a05d642bf033f363b7d9b65700f24d7c892591ab

See more details on using hashes here.

File details

Details for the file juliapiv-1.0.11-py3-none-any.whl.

File metadata

  • Download URL: juliapiv-1.0.11-py3-none-any.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for juliapiv-1.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 3a80f3562b00a78409a8909d80554f3e0e95cfb535bfdac440ca7a4c2cd4b316
MD5 b2518a95117d544176b7fa4757abd507
BLAKE2b-256 d2799696131011ecd429166cf1401d56f343014f78c0505e4f0135ef01e6c7ed

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page