Fix doc condition

This commit is contained in:
FilippoOlivo
2025-03-12 11:32:16 +01:00
parent 9bf85da740
commit ee874464b8
6 changed files with 63 additions and 60 deletions

View File

@@ -30,7 +30,7 @@ def warning_function(new, old):
class Condition: class Condition:
""" """
The class ``Condition`` is used to represent the constraints (physical The class `Condition` is used to represent the constraints (physical
equations, boundary conditions, etc.) that should be satisfied in the equations, boundary conditions, etc.) that should be satisfied in the
problem at hand. Condition objects are used to formulate the problem at hand. Condition objects are used to formulate the
PINA :obj:`pina.problem.abstract_problem.AbstractProblem` object. PINA :obj:`pina.problem.abstract_problem.AbstractProblem` object.
@@ -88,11 +88,16 @@ class Condition:
""" """
Create a new condition object based on the keyword arguments passed. Create a new condition object based on the keyword arguments passed.
- ``input`` and ``target``: :class:`InputTargetCondition` - `input` and `target`:
- ``domain`` and ``equation``: :class:`DomainEquationCondition` :class:`pina.condition.input_target_condition.InputTargetCondition`
- ``input`` and ``equation``: :class:`InputEquationCondition` - `domain` and `equation`:
- ``input``: :class:`DataCondition` :class:`pina.condition.domain_equation_condition.
- ``input`` and ``conditional_variables``: :class:`DataCondition` DomainEquationCondition`
- `input` and `equation`: :class:`pina.condition.
input_equation_condition.InputEquationCondition`
- `input`: :class:`pina.condition.data_condition.DataCondition`
- `input` and `conditional_variables`:
:class:`pina.condition.data_condition.DataCondition`
:raises ValueError: No valid condition has been found. :raises ValueError: No valid condition has been found.
:return: A new condition instance belonging to the proper class. :return: A new condition instance belonging to the proper class.

View File

@@ -41,14 +41,13 @@ class ConditionInterface(metaclass=ABCMeta):
@staticmethod @staticmethod
def _check_graph_list_consistency(data_list): def _check_graph_list_consistency(data_list):
""" """
Check if the list of :class:`torch_geometric.data.Data`/:class:`Graph` Check if the list of :class:`~torch_geometric.data.Data` or
objects is consistent. class:`pina.graphGraph` objects is consistent.
:param data_list: List of graph type objects. :param data_list: List of graph type objects.
:type data_list: torch_geometric.data.Data | Graph| :type data_list: Data | Graph | list[Data] | list[Graph]
list[torch_geometric.data.Data] | list[Graph]
:raises ValueError: Input data must be either torch_geometric.data.Data :raises ValueError: Input data must be either Data
or Graph objects. or Graph objects.
:raises ValueError: All elements in the list must have the same keys. :raises ValueError: All elements in the list must have the same keys.
:raises ValueError: Type mismatch in data tensors. :raises ValueError: Type mismatch in data tensors.

View File

@@ -27,17 +27,15 @@ class DataCondition(ConditionInterface):
:param input: Input data for the condition. :param input: Input data for the condition.
:type input: torch.Tensor | LabelTensor | Graph | :type input: torch.Tensor | LabelTensor | Graph |
torch_geometric.data.Data | list[Graph] | Data | list[Graph] | list[Data] | tuple[Graph] | tuple[Data]
list[torch_geometric.data.Data] | tuple[Graph] |
tuple[torch_geometric.data.Data]
:param conditional_variables: Conditional variables for the condition. :param conditional_variables: Conditional variables for the condition.
:type conditional_variables: torch.Tensor | LabelTensor :type conditional_variables: torch.Tensor | LabelTensor
:return: Subclass of DataCondition. :return: Subclass of DataCondition.
:rtype: TensorDataCondition | GraphDataCondition :rtype: TensorDataCondition | GraphDataCondition
:raises ValueError: If input is not of type :class:`torch.Tensor`, :raises ValueError: If input is not of type :class:`torch.Tensor`,
:class:`LabelTensor`, :class:`Graph`, or :class:`pina.label_tensor.LabelTensor`, :class:`pina.graph.Graph`,
:class:`torch_geometric.data.Data`. or :class:`~torch_geometric.data.Data`.
""" """
@@ -59,21 +57,19 @@ class DataCondition(ConditionInterface):
def __init__(self, input, conditional_variables=None): def __init__(self, input, conditional_variables=None):
""" """
Initialize the DataCondition, storing the input and conditional Initialize the object by storing the input and conditional
variables (if any). variables (if any).
:param input: Input data for the condition. :param input: Input data for the condition.
:type input: torch.Tensor | LabelTensor | Graph | :type input: torch.Tensor | LabelTensor | Graph | Data | list[Graph] |
torch_geometric.data.Data | list[Graph] | list[Data] | tuple[Graph] | tuple[Data]
list[torch_geometric.data.Data] | tuple[Graph] |
tuple[torch_geometric.data.Data]
:param conditional_variables: Conditional variables for the condition. :param conditional_variables: Conditional variables for the condition.
:type conditional_variables: torch.Tensor or LabelTensor :type conditional_variables: torch.Tensor or LabelTensor
.. note:: .. note::
If either `input` is composed by a list of :class:`Graph`/ If either `input` is composed by a list of :class:`pina.graph.Graph`
:class:`torch_geometric.data.Data` objects, all elements must have or :class:`~torch_geometric.data.Data` objects, all elements must
the same structure (keys and data types) have the same structure (keys and data types)
""" """
super().__init__() super().__init__()
self.input = input self.input = input
@@ -82,11 +78,13 @@ class DataCondition(ConditionInterface):
class TensorDataCondition(DataCondition): class TensorDataCondition(DataCondition):
""" """
DataCondition for torch.Tensor input data DataCondition for :class:`torch.Tensor` or
:class:`pina.label_tensor.LabelTensor` input data
""" """
class GraphDataCondition(DataCondition): class GraphDataCondition(DataCondition):
""" """
DataCondition for Graph/Data input data DataCondition for :class:`pina.graph.Graph` or
:class:`~torch_geometric.data.Data` input data
""" """

View File

@@ -18,7 +18,7 @@ class DomainEquationCondition(ConditionInterface):
def __init__(self, domain, equation): def __init__(self, domain, equation):
""" """
Initialize the DomainEquationCondition, storing the domain and equation. Initialize the object by storing the domain and equation.
:param DomainInterface domain: Domain object containing the domain data. :param DomainInterface domain: Domain object containing the domain data.
:param EquationInterface equation: Equation object containing the :param EquationInterface equation: Equation object containing the

View File

@@ -32,9 +32,8 @@ class InputEquationCondition(ConditionInterface):
:return: Subclass of InputEquationCondition, based on the input type. :return: Subclass of InputEquationCondition, based on the input type.
:rtype: InputTensorEquationCondition | InputGraphEquationCondition :rtype: InputTensorEquationCondition | InputGraphEquationCondition
:raises ValueError: If input is not of type :class:`torch.Tensor`, :raises ValueError: If input is not of type
:class:`LabelTensor`, :class:`Graph`, or :class:`pina.label_tensor.LabelTensor`, :class:`pina.graph.Graph`.
:class:`torch_geometric.data.Data`.
""" """
# If the class is already a subclass, return the instance # If the class is already a subclass, return the instance
@@ -66,10 +65,10 @@ class InputEquationCondition(ConditionInterface):
equation function. equation function.
.. note:: .. note::
If ``input`` is composed by a list of :class:`Graph`/ If `input` is composed by a list of :class:`pina.graph.Graph`
:class:`torch_geometric.data.Data` objects, all elements must have objects, all elements must have the same structure (keys and data
the same structure (keys and data types). Moreover, at least one types). Moreover, at least one attribute must be a
attribute must be a :class:`LabelTensor`. :class:`pina.label_tensor.LabelTensor`.
""" """
super().__init__() super().__init__()
@@ -89,19 +88,21 @@ class InputEquationCondition(ConditionInterface):
class InputTensorEquationCondition(InputEquationCondition): class InputTensorEquationCondition(InputEquationCondition):
""" """
InputEquationCondition subclass for LabelTensor input data. InputEquationCondition subclass for :class:`pina.label_tensor.LabelTensor`
input data.
""" """
class InputGraphEquationCondition(InputEquationCondition): class InputGraphEquationCondition(InputEquationCondition):
""" """
InputEquationCondition subclass for Graph input data. InputEquationCondition subclass for :class:`pina.graph.Graph` input data.
""" """
@staticmethod @staticmethod
def _check_label_tensor(input): def _check_label_tensor(input):
""" """
Check if at least one LabelTensor is present in the Graph object. Check if at least one :class:`pina.label_tensor.LabelTensor` is present
in the :class:`pina.graph.Graph` object.
:param input: Input data. :param input: Input data.
:type input: torch.Tensor | Graph | torch_geometric.data.Data :type input: torch.Tensor | Graph | torch_geometric.data.Data

View File

@@ -41,8 +41,8 @@ class InputTargetCondition(ConditionInterface):
GraphInputGraphTargetCondition GraphInputGraphTargetCondition
:raises ValueError: If input and or target are not of type :raises ValueError: If input and or target are not of type
:class:`torch.Tensor`, :class:`LabelTensor`, :class:`Graph`, or :class:`torch.Tensor`, :class:`pina.label_tensor.LabelTensor`,
:class:`torch_geometric.data.Data`. :class:`pina.graph.Graph`, or :class:`~torch_geometric.data.Data`.
""" """
if cls != InputTargetCondition: if cls != InputTargetCondition:
return super().__new__(cls) return super().__new__(cls)
@@ -82,23 +82,21 @@ class InputTargetCondition(ConditionInterface):
def __init__(self, input, target): def __init__(self, input, target):
""" """
Initialize the InputTargetCondition, storing the input and target data. Initialize the object storing the input and target data.
:param input: Input data for the condition. :param input: Input data for the condition.
:type input: torch.Tensor | LabelTensor | Graph | :type input: torch.Tensor | LabelTensor | Graph | Data | list[Graph] |
torch_geometric.data.Data | list[Graph] | list[Data] | tuple[Graph] |
list[torch_geometric.data.Data] | tuple[Graph] | tuple[Data]
tuple[torch_geometric.data.Data]
:param target: Target data for the condition. :param target: Target data for the condition.
:type target: torch.Tensor | LabelTensor | Graph | :type target: torch.Tensor | LabelTensor | Graph | Data | list[Graph] |
torch_geometric.data.Data | list[Graph] | list[Data] | tuple[Graph] | tuple[Data]
list[torch_geometric.data.Data] | tuple[Graph] |
tuple[torch_geometric.data.Data]
.. note:: .. note::
If either ``input`` or ``target`` are composed by a list of If either `input` or `target` are composed by a list of
:class:`Graph`/:class:`torch_geometric.data.Data` objects, all :class:`pina.graph.Graph` or :class:`~torch_geometric.data.Data`
elements must have the same structure (keys and data types) objects, all elements must have the same structure (keys and data
types)
""" """
super().__init__() super().__init__()
@@ -120,28 +118,30 @@ class InputTargetCondition(ConditionInterface):
class TensorInputTensorTargetCondition(InputTargetCondition): class TensorInputTensorTargetCondition(InputTargetCondition):
""" """
InputTargetCondition subclass for :class:`torch.Tensor`/:class:`LabelTensor` InputTargetCondition subclass for :class:`torch.Tensor` or
input and target data. :class:`pina.label_tensor.LabelTensor` input and target data.
""" """
class TensorInputGraphTargetCondition(InputTargetCondition): class TensorInputGraphTargetCondition(InputTargetCondition):
""" """
InputTargetCondition subclass for :class:`torch.Tensor`/:class:`LabelTensor` InputTargetCondition subclass for :class:`torch.Tensor` or
input and :class:`Graph`/:class:`torch_geometric.data.Data` target data. :class:`pina.label_tensor.LabelTensor` input and
:class:`pina.graph.Graph` or :class:`~torch_geometric.data.Data` target
data.
""" """
class GraphInputTensorTargetCondition(InputTargetCondition): class GraphInputTensorTargetCondition(InputTargetCondition):
""" """
InputTargetCondition subclass for :class:`Graph`/ InputTargetCondition subclass for :class:`pina.graph.Graph` o
:class:`torch_geometric.data.Data` input and :class:`torch.Tensor`/ :class:`~torch_geometric.data.Data` input and :class:`torch.Tensor` or
:class:`LabelTensor` target data. :class:`pina.label_tensor.LabelTensor` target data.
""" """
class GraphInputGraphTargetCondition(InputTargetCondition): class GraphInputGraphTargetCondition(InputTargetCondition):
""" """
InputTargetCondition subclass for :class:`Graph`/ InputTargetCondition subclass for :class:`pina.graph.Graph`/
:class:`torch_geometric.data.Data` input and target data. :class:`~torch_geometric.data.Data` input and target data.
""" """