NRLMMD-GEOIPS / geoips

Main Geolocated Information Processing System code base with basic functionality enabled.
https://nrlmmd-geoips.github.io/geoips/
Other
13 stars 10 forks source link

Documentation: Architecture of GeoIPS #619

Open biosafetylvl5 opened 4 weeks ago

biosafetylvl5 commented 4 weeks ago

Due on for review on: June 10, 2024

Documentation Task

Files to be edited

Resources to be created

Scope of Documentation

Checklist for Completion

biosafetylvl5 commented 2 weeks ago

Here's a potential outline:

GeoIPS (Geolocated Information Processing System)
===============================================

I. Introduction
---------------

**Core Functionality and Role of GeoIPS**
- Core GeoIPS does not perform direct computations on data.
- Provides helper functions that can be utilized by plugins.
- Ensures a modular approach, allowing external contributions and customization.

II. Plugins
-----------

**Definition and Purpose**
- A plugin is a piece of code or configuration external to the core code GeoIPS. We refer to this as core GeoIPS.
- Integrates external functionality into GeoIPS for specific computations/actions.

**Flexibility and Modularity**
- Allows users to write and integrate various types of plugins, such as algorithms and color mappers.
- Supports modularity, enabling plugins to handle specific tasks within a larger processing workflow.
- Encourages interoperability and community engagement by allowing contributions from different users.
- Example tasks handled by plugins:
  - Data processing algorithms
  - Visualization configurations (e.g., color mapping)
  - Formatting outputs
  - etc.

III. Interfaces
---------------

**Definition and Role**
- An interface in GeoIPS defines an ontology: a set of concepts and categories for plugins.
- Specifies the properties of plugins and their relationships.

**Examples of Plugin Categories**
- **Algorithms**: Define methods for processing data.
- **Color Maps**: Determine the color schemes used in visualizations.

IV. Types of Plugins
--------------------

**Module-based Plugins**
- Written in Python modules.
- Typically contain computational code that can manipulate data, but not necessarily.
- Example: An algorithm plugin written in Python that interpolates brightness temperatures.

**YAML-based Plugins**
- Written in YAML, which is a superset of JSON.
- Serve as configurations for module-based plugins.
- Define behaviors such as plot annotations or specific ways to generate products.
- Example: A YAML file specifying the color scheme and annotations for a plot generated by a module-based plugin.

V. Proc Flows
-------------

**Definition and Purpose**
- Procflow stands for processing flow.
- Defines the sequence and logic of processing steps within GeoIPS.
- Utilizes interfaces to validate and retrieve necessary plugins.
- Example: A proc flow might specify the order of applying an algorithm, then formatting the output, and finally generating a visualization.

VI. Families of Plugins
-----------------------

**Definition and Role**
- Families of plugins define the input and output of variables.
- Aids in determining the ordering of different plugin execution.
- Example: (?)

**Warning**
- The concept of families is expected to be deprecated/made unnecessary.

VII. YAML-based Schemas
-----------------------

**Purpose and Functionality**
- Define the correct format for YAML-based plugins.
- Used for validation purposes to maintain consistency and correctness.
- Example: A schema defining required fields and valid values for a color map configuration.

VIII. Conclusion
----------------

**Summary of Key Points**
- GeoIPS leverages a plugin-based architecture for flexibility and community engagement.
- Core GeoIPS does not compute data directly but provides helper functions.
- Interfaces define an ontology of plugin categories and their interactions.
- Plugins can be module-based or YAML-based, serving different purposes.
- Proc flows manage the execution sequence of plugins.
- Families of plugins define input/output relationships, soon to be replaced by order-based proc flows.
- YAML-based schemas ensure the validity and structure of YAML-based plugins.
biosafetylvl5 commented 2 weeks ago

@jsolbrig ^ here's an outline