Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added docstrings to AIPlugIn #98

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 44 additions & 19 deletions onair/src/ai_components/ai_plugin_abstract/ai_plugin.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,63 @@
# GSC-19165-1, "The On-Board Artificial Intelligence Research (OnAIR) Platform"
#
# Copyright © 2023 United States Government as represented by the Administrator of
# the National Aeronautics and Space Administration. No copyright is claimed in the
# United States under Title 17, U.S. Code. All Other Rights Reserved.
# Copyright © 2023 United States Government as represented by the Administrator
# of the National Aeronautics and Space Administration. No copyright is claimed
# in the United States under Title 17, U.S. Code. All Other Rights Reserved.
#
# Licensed under the NASA Open Source Agreement version 1.3
# See "NOSA GSC-19165-1 OnAIR.pdf"


from abc import ABC, abstractmethod
"""This object serves as a proxy for all plug-ins.
Therefore, the AIPlugIn object is meant to induce
standards and structures of compliance for user-created
and/or imported plug-ins/libraries
"""


class AIPlugIn(ABC):
def __init__(self, _name, _headers):
"""
Superclass for data driven components: VAE, PPO, etc. Allows for easier modularity.
"""This serves as a base for all plugins.

This is the superclass for data driven components: VAE, PPO, etc. It is
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably update the examples to ones we have... which is none (the Kalman plugin doesn't count, right?)... so I don't know.

We could at least get rid of the acronyms.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd be in favor of just removing that sentence for now.

meant to induce standards and structures of compliance for imported
plugins: KnowledgeRep, Learner, Planner or Complex. Those plugins must
inherit this class.

Attributes:
component_name (str): Name given to instance of plugin.
headers (list[str]): Names for each data point in a data frame.

"""
def __init__(self, _name: str, _headers: list[str]):
"""Initializes a new AIPlugIn object.

Args:
_name: The name of this plugin instance.
_headers: Sequenced names of each item in OnAIR data frame.

"""
assert(len(_headers)>0)
assert len(_headers) > 0
self.component_name = _name
self.headers = _headers

@abstractmethod
def update(self, low_level_data=[], high_level_data={}):
"""
Given streamed data point, system should update internally
def update(
self, low_level_data: list[float] = [],
high_level_data: dict[str, dict[str, list[object]]] = {}
) -> None:
"""Updates plugin's data using provided data.

Args:
low_level_data: Frame of floats, one for each header.
high_level_data: Reasoned data results from previous plugins.

Returns:
None: This function only updates the data for this plugin
"""
raise NotImplementedError

@abstractmethod
def render_reasoning(self):
"""
System should return its diagnosis
def render_reasoning(self) -> list[object]:
"""Plugin reasons with current data and provides analysis.

Returns:
list[object]: The list of reasoned outcomes, where contents are
relevant to this plugin. May be an empty list.
"""
raise NotImplementedError