Skip to main content

Oceanographic Research Cruise Planning System

Project description

CruisePlan

๐ŸŒŠ Comprehensive Oceanographic Research Cruise Planning System โ€” Streamlining the complex process of designing, optimizing, and planning oceanographic research expeditions.

Tests Python 3.9+ License: MIT Documentation

Statement of Need

The Challenge: Oceanographic cruise planning involves precise timing and geographic calculations which may need frequent updating. Researchers currently face:

  • Fragmented Tools: Scattered spreadsheets, manual calculations, and discipline-specific software
  • Time-Intensive Processes: Semi-manual station planning, timing calculations, and proposal formatting
  • Error-Prone Workflows: Manual depth lookups, coordinate formatting, and schedule validation
  • Limited Historical Context: Difficulty incorporating past cruise data and lessons learned

The Solution: CruisePlan provides an integrated, semi-automated, flexible solution that transforms drafting of cruise plans into an efficient workflow.

Target Audience

Primary Users:

  • ๐Ÿ”ฌ Oceanographic Researchers: Principal investigators designing research expeditions
  • ๐Ÿ“Š Students: Graduate students learning cruise planning methodology
  • ๐Ÿ“‹ Proposal Writers: Scientists preparing funding proposals with detailed cruise plans

Research Domains: The primary development of CruisePlan is for physical oceanographers, with CTD stations, mooring deployments and glider operations as default. However, it is possible to incorporate any type of point, line or area operation of a ship with a specified manual duration based on your own experience.

CruisePlan transforms complex cruise planning from a weeks-long manual process into a structured, validated workflow that produces proposal-ready documentation with some checks on operational feasibility.

Important - Version 0.2.0 Release: This release includes breaking changes to depth field semantics. See our Development Roadmap for migration guidance.

Disclaimer: This software is provided "as is" without warranty of any kind. Users are responsible for validating all calculations, timing estimates, and operational feasibility for their specific cruise requirements. Always consult with marine operations staff and verify all outputs before finalizing cruise plans.

๐Ÿ“˜ Full documentation available at:
๐Ÿ‘‰ https://ocean-uhh.github.io/cruiseplan/


๐Ÿš€ What's Included

  • โœ… Interactive station planning: Click-to-place stations on bathymetric maps with real-time depth feedback
  • ๐Ÿ““ PANGAEA integration: Browse and incorporate past cruise data for context
  • ๐Ÿ“„ Multi-format outputs: Generate NetCDF, LaTeX reports, PNG maps, KML files, and CSV data
  • ๐Ÿ” Cruise validation: Automated checking of cruise configurations and operational feasibility
  • ๐ŸŽจ Documentation: Sphinx-based docs with API references and usage guides
  • ๐Ÿ“ฆ Modern Python packaging: Complete with testing, linting, and CI/CD workflows
  • ๐Ÿงพ Scientific citation support: CITATION.cff for academic attribution

Project structure

For a detailed breakdown of the package architecture and module descriptions, see the Project Structure Documentation.

cruiseplan/
โ”œโ”€โ”€ .github/
โ”‚   โ””โ”€โ”€ workflows/              # GitHub Actions for tests, docs, PyPI
โ”œโ”€โ”€ docs/                       # Sphinx-based documentation
โ”‚   โ”œโ”€โ”€ source/                 # reStructuredText + MyST Markdown + _static
โ”‚   โ””โ”€โ”€ Makefile                # for building HTML docs
โ”œโ”€โ”€ notebooks/                  # Example notebooks and demos
โ”œโ”€โ”€ cruiseplan/                 # Main Python package
โ”‚   โ”œโ”€โ”€ cli/                    # Command-line interface modules
โ”‚   โ”œโ”€โ”€ core/                   # Core cruise planning logic
โ”‚   โ”œโ”€โ”€ calculators/            # Distance, duration, routing calculators
โ”‚   โ”œโ”€โ”€ data/                   # Bathymetry and PANGAEA data handling
โ”‚   โ”œโ”€โ”€ interactive/            # Interactive station picking tools
โ”‚   โ”œโ”€โ”€ output/                 # Multi-format output generators
โ”‚   โ””โ”€โ”€ utils/                  # Utilities and coordinate handling
โ”œโ”€โ”€ tests/                      # Comprehensive pytest test suite
โ”œโ”€โ”€ data/                       # Bathymetry datasets
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ .pre-commit-config.yaml
โ”œโ”€โ”€ CITATION.cff                # Citation file for academic use
โ”œโ”€โ”€ CONTRIBUTING.md             # Contribution guidelines
โ”œโ”€โ”€ LICENSE                     # MIT license
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ pyproject.toml              # Modern packaging config
โ”œโ”€โ”€ requirements.txt            # Core package dependencies
โ”œโ”€โ”€ requirements-dev.txt        # Development and testing tools
โ”œโ”€โ”€ environment.yml             # Conda environment specification
โ””โ”€โ”€ PROJECT_SPECS.md            # Development roadmap and specifications

๐Ÿ”ง Installation

Option 1: Install from PyPI (Most Users)

For general use, install the latest stable release from PyPI. Note: CruisePlan is in active development (0.x versions) with occasional breaking changes.

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# Install CruisePlan
pip install cruiseplan

Option 2: Install Latest from GitHub

For the latest features and bug fixes:

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# Install directly from GitHub
pip install git+https://github.com/ocean-uhh/cruiseplan.git

Option 3: Development Installation

For development or contributing to CruisePlan:

# Clone the repository
git clone https://github.com/ocean-uhh/cruiseplan.git
cd cruiseplan

# Option A: Using conda/mamba
conda env create -f environment.yml
conda activate cruiseplan
pip install -e ".[dev]"

# Option B: Using pip with virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -e ".[dev]"

Dependencies: Core packages are listed in requirements.txt, development tools in requirements-dev.txt. The conda environment.yml loads from these files automatically.

To run tests:

pytest tests/

To build the documentation locally:

cd docs
make html

๐Ÿ“š Learn More


๐Ÿค Contributing

Contributions are welcome! Please see our Contributing Guidelines for details on how to get started.

For information about planned improvements and development priorities, see our Development Roadmap.


๐Ÿ™ Acknowledgments & Citation

The original timing algorithms were developed by Yves Sorge and Sunke Trace-Kleeberg. CruisePlan software development and maintenance by Yves Sorge and Eleanor Frajka-Williams.

If you use CruisePlan in your research, please cite it using the information in CITATION.cff.

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

cruiseplan-0.2.0.tar.gz (27.4 MB view details)

Uploaded Source

Built Distribution

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

cruiseplan-0.2.0-py3-none-any.whl (190.7 kB view details)

Uploaded Python 3

File details

Details for the file cruiseplan-0.2.0.tar.gz.

File metadata

  • Download URL: cruiseplan-0.2.0.tar.gz
  • Upload date:
  • Size: 27.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cruiseplan-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f23628092bcf4058ddc0f1083d87a96d4b5bb1c6699a1bd2700531ccb03d5984
MD5 e1c6dbc6f39dbc5a45b63c6df285cf77
BLAKE2b-256 825bd3492fcabccd288195b97ea2431e67c3d42fd9815f6fdcbe97624921436a

See more details on using hashes here.

Provenance

The following attestation bundles were made for cruiseplan-0.2.0.tar.gz:

Publisher: pypi.yml on ocean-uhh/cruiseplan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cruiseplan-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: cruiseplan-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 190.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cruiseplan-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d13554284839fe2d53fbc06180877a4455964c8253148dbb7333f7b8075d54f5
MD5 da7180f223eb57031ae6680d411d93bb
BLAKE2b-256 19da523a426ac849b92cbc5eef5bdc4b1835623532a83f17b0b4de9b67f94ca4

See more details on using hashes here.

Provenance

The following attestation bundles were made for cruiseplan-0.2.0-py3-none-any.whl:

Publisher: pypi.yml on ocean-uhh/cruiseplan

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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