Project Structure

The project follows a clear and modular directory structure designed to facilitate navigation, maintenance, and collaboration. Each directory and file serves a specific purpose, as detailed below.

rringg/
├── cache/                   # Temporary storage for intermediate and cached data (e.g., Station metadata, Cache configuration file, GNSS time series)
├── data/                    # Sample datasets
├── doc/                     # Project documentation
├── images/                  # Project visuals (figures, diagrams, logos, etc.)
├── outputs/                 # Generated outputs
├── src/                     # Python source code
│   ├── rringg.py            # Main entry point of the project
│   └── tools/               # Utility modules (e.g., metadata writing, geoprocessing)
├── tests/                   # Unit tests
├── .gitlab-ci.yml           # Continuous integration configuration
├── .zenodo.json             # Metadata for archiving and citation
├── AUTHORS.rst              # List of project contributors
├── CITATION.cff             # Citation metadata file
├── LICENSE.txt              # Project license
├── README.rst               # Main project overview
├── codemeta.json            # Code metadata description
├── environment.yml          # Conda environment configuration
├── pyproject.toml           # Python project configuration (PEP 518)
├── requirements.txt         # Python dependencies (pip)
└── setup.py                 # Installation script and project metadata

Top-Level Directories

  • cache/
    Temporary storage for intermediate data and caching mechanisms. This directory facilitates efficient handling of frequently accessed data and includes:
    • .cache_config.json: Configuration file for cache behavior.

    • time_series/: GNSS time series data sourced from EPOS or NGL.

    • metadata/: Metadata related to GNSS stations, such as station coordinates or site information.

  • data/

    Placeholder for raw and processed datasets. This directory should store project-specific data files required for analysis or operations.

  • doc/

    Contains the project’s documentation in reStructuredText format, designed for Sphinx.

  • download/

    Contains gnss time series download.

  • images/

    Repository for visual assets, such as plots, diagrams, and screenshots, used in the documentation.

  • output/

    Stores generated outputs from the project, such as visualizations, reports, or processed data.

Source Code

  • rringg/
    The main Python package for the project. This directory contains core functionalities and utilities, organized into the following structure:
    • rringg.py

      Entry point script to execute the application.

    • src/ A subdirectory for utility scripts supporting the main application, including:

      • EPOSjson.py: Connector for EPOS data services. Handles retrieval and management of EPOS metadata and time series.

      • NGLtenv3.py: Connector for the NGL data portal. Provides tools to download and manage station metadata and time series.

      • caching.py: Implements caching mechanisms for downloaded and intermediate data.

      • csv2raster.py: Converts CSV-based InSAR time series (from EPOS ICS portal).

      • dates.py: Utilities for handling and converting dates and times.

      • download.py: Tools for downloading data and related metadata from supported providers.

      • fitting.py: Regression and curve fitting utilities.

      • geodetic.py: General geodetic and geometric processing tools.

      • geoprocessing.py: General geospatial processing utilities.

      • gps.py: GNSS data management helpers.

      • insar.py: InSAR data handling and utilities.

      • midas.py: Computes interseismic velocities for GNSS stations using time series analysis.

      • parameters.py: Centralized management of configuration parameters.

      • plot.py: Provides plotting and visualization tools for diagnostic and step-by-step evaluation.

      • reference.py: Utilities to reference InSAR time series in a global reference system (e.g., ITRF).

      • timeseries.py: Functions for downloading, reading, correcting, and analyzing GNSS time series.

      • write_meta.py: Generates metadata files describing the outputs, parameters, and evaluation metrics of processing steps.

Testing

  • tests/
    Directory dedicated to unit tests for ensuring the reliability of the project’s features. Includes:
    • test_caching.py : Tests for cache-related functions.

    • test_installation.py : Tests for verifying installation setup and requirements.

Project Metadata Files

  • .gitlab-ci.yml

    GitLab CI configuration file. Defines the continuous integration pipeline, including linting, testing, documentation build, and deployment stages.

  • .zenodo.json

    Metadata file for Zenodo integration. Provides citation and versioning information to enable proper archival and DOI assignment.

  • CITATION.cff

    Citation file following the Citation File Format. Allows users and tools to cite the project correctly in academic work.

  • LICENSE.txt

    The license file defining the legal terms for usage, distribution, and modification of the project.

  • README.rst

    The main entry point for new users. Contains an overview of the project, installation instructions, usage examples, and references to the documentation.

  • codemeta.json

    Metadata file in CodeMeta format. Encodes project details in a machine-readable schema for interoperability with digital repositories and software catalogs.

  • environment.yml

    Conda environment specification. Lists all required dependencies and versions to reproduce the software environment.

  • pyproject.toml

    Minimal project configuration file. Defines build system requirements, package metadata, and optional tool settings.

  • requirements.txt

    Flat list of Python dependencies required to run the project. Commonly used with pip install -r requirements.txt.

  • setup.py

    Setup script for packaging and distributing the project. Provides installation instructions for setuptools and defines the entry points, dependencies, and metadata.