update doc

This commit is contained in:
Dario Coscia
2025-03-17 12:23:26 +01:00
committed by Nicola Demo
parent e917753702
commit 2526da36bf
33 changed files with 265 additions and 196 deletions

View File

@@ -11,11 +11,11 @@ The high-level structure of the package is depicted in our API.
The pipeline to solve differential equations with PINA follows just five steps:
1. Define the `Problem`_ the user aim to solve
2. Generate data using built in `Domains`_, or load high level simulation results as :doc:`LabelTensor <label_tensor>`
1. Define the `Problems`_ the user aim to solve
2. Generate data using built in `Geometrical Domains`_, or load high level simulation results as :doc:`LabelTensor <label_tensor>`
3. Choose or build one or more `Models`_ to solve the problem
4. Choose a solver across PINA available `Solvers`_, or build one using the :doc:`SolverInterface <solver/solver_interface>`
5. Train the model with the PINA :doc:`Trainer <solver/solver_interface>`, enhance the train with `Callback`_
5. Train the model with the PINA :doc:`Trainer <solver/solver_interface>`, enhance the train with `Callbacks`_
Trainer, Dataset and Datamodule
@@ -34,6 +34,7 @@ Data Types
LabelTensor <label_tensor.rst>
Graph <graph/graph.rst>
LabelBatch <graph/label_batch.rst>
Graphs Structures
@@ -41,7 +42,6 @@ Graphs Structures
.. toctree::
:titlesonly:
Graph <graph/graph.rst>
GraphBuilder <graph/graph_builder.rst>
RadiusGraph <graph/radius_graph.rst>
KNNGraph <graph/knn_graph.rst>
@@ -98,7 +98,8 @@ Models
FNO <model/fourier_neural_operator.rst>
AveragingNeuralOperator <model/average_neural_operator.rst>
LowRankNeuralOperator <model/low_rank_neural_operator.rst>
GraphNeuralOperator <model/>
GraphNeuralOperator <model/graph_neural_operator.rst>
GraphNeuralKernel <model/graph_neural_operator_integral_kernel.rst>
Blocks
-------------
@@ -112,7 +113,10 @@ Blocks
Fourier Block <model/block/fourier_block.rst>
Averaging Block <model/block/average_neural_operator_block.rst>
Low Rank Block <model/block/low_rank_block.rst>
Graph Neural Operator Block <model/block/gno_block.rst>
Continuous Convolution Interface <model/block/convolution_interface.rst>
Continuous Convolution Block <model/block/convolution.rst>
Orthogonal Block <model/block/orthogonal.rst>
Reduction and Embeddings
@@ -144,7 +148,7 @@ Adaptive Activation Functions
.. toctree::
:titlesonly:
Adaptive Function Interface <adaptive_function/AdaptiveFunctionInterface.rst>
Adaptive Function Interface <adaptive_function/AdaptiveActivationFunctionInterface.rst>
Adaptive ReLU <adaptive_function/AdaptiveReLU.rst>
Adaptive Sigmoid <adaptive_function/AdaptiveSigmoid.rst>
Adaptive Tanh <adaptive_function/AdaptiveTanh.rst>
@@ -165,10 +169,10 @@ Equations and Differential Operators
.. toctree::
:titlesonly:
EquationInterface <equation.equation_interface.rst>
Equation <equation.equation.rst>
SystemEquation <equation.system_equation.rst>
Equation Factory <equation.equation_factory.rst>
EquationInterface <equation/equation_interface.rst>
Equation <equation/equation.rst>
SystemEquation <equation/system_equation.rst>
Equation Factory <equation/equation_factory.rst>
Differential Operators <operator.rst>
@@ -200,7 +204,7 @@ Problems Zoo
Geometrical Domains
---------------------
--------------------
.. toctree::
:titlesonly:
@@ -222,8 +226,8 @@ Domain Operations
Difference <domain/difference_domain.rst>
Exclusion <domain/exclusion_domain.rst>
Callback
--------------------
Callbacks
-----------
.. toctree::
:titlesonly:

View File

@@ -3,6 +3,6 @@ AdaptiveActivationFunctionInterface
.. currentmodule:: pina.adaptive_function.adaptive_function_interface
.. automodule:: pina.adaptive_function.adaptive_functiontion_interface
.. automodule:: pina.adaptive_function.adaptive_function_interface
:members:
:show-inheritance:

View File

@@ -1,7 +1,7 @@
Processing callbacks
=======================
.. currentmodule:: pina.callbacks.processing_callback
.. currentmodule:: pina.callback.processing_callback
.. autoclass:: MetricTracker
:members:
:show-inheritance:

View File

@@ -4,6 +4,6 @@ Domain
.. automodule:: pina.domain.domain_interface
.. autoclass:: Domain
.. autoclass:: DomainInterface
:members:
:show-inheritance:

View File

@@ -0,0 +1,9 @@
LabelBatch
===========
.. currentmodule:: pina.graph
.. autoclass:: LabelBatch
:members:
:private-members:
:show-inheritance:

View File

@@ -0,0 +1,8 @@
Continuous Convolution Interface
==================================
.. currentmodule:: pina.model.block.convolution
.. autoclass:: BaseContinuousConv
:members:
:show-inheritance:
:noindex:

View File

@@ -1,6 +1,6 @@
FourierIntegralKernel
=========================
.. currentmodule:: pina.model.fno
.. currentmodule:: pina.model.fourier_neural_operator
.. autoclass:: FourierIntegralKernel
:members:

View File

@@ -0,0 +1,7 @@
GraphNeuralKernel
=======================
.. currentmodule:: pina.model.graph_neural_operator
.. autoclass:: GraphNeuralKernel
:members:
:show-inheritance:

View File

@@ -1,6 +1,6 @@
CausalPINN
==============
.. currentmodule:: pina.solver.physic_informed_solver.causalpinn
.. currentmodule:: pina.solver.physic_informed_solver.causal_pinn
.. autoclass:: CausalPINN
:members:

View File

@@ -1,6 +1,6 @@
RBAPINN
========
.. currentmodule:: pina.solver.physic_informed_solver.rbapinn
.. currentmodule:: pina.solver.physic_informed_solver.rba_pinn
.. autoclass:: RBAPINN
:members:

View File

@@ -1,46 +1,35 @@
PINA Tutorials
==============
======================
In this folder we collect useful tutorials in order to understand the principles and the potential of **PINA**.
Getting started with PINA
-------------------------
.. toctree::
:maxdepth: 3
:titlesonly:
`Introduction to PINA for Physics Informed Neural Networks training <tutorials/tutorial1/tutorial.html>`_
`Introduction to PINA Equation class <tutorials/tutorial12/tutorial.html>`_
`PINA and PyTorch Lightning, training tips and visualizations <tutorials/tutorial11/tutorial.html>`_
`Building custom geometries with PINA Location class <tutorials/tutorial6/tutorial.html>`_
- `Introduction to PINA for Physics Informed Neural Networks training <tutorial1/tutorial.html>`_
- `Introduction to PINA Equation class <tutorial12/tutorial.html>`_
- `PINA and PyTorch Lightning, training tips and visualizations <tutorial11/tutorial.html>`_
- `Building custom geometries with PINA Location class <tutorial6/tutorial.html>`_
Physics Informed Neural Networks
--------------------------------
.. toctree::
:maxdepth: 3
:titlesonly:
`Two dimensional Poisson problem using Extra Features Learning <tutorials/tutorial2/tutorial.html>`_
`Two dimensional Wave problem with hard constraint <tutorials/tutorial3/tutorial.html>`_
`Resolution of a 2D Poisson inverse problem <tutorials/tutorial7/tutorial.html>`_
`Periodic Boundary Conditions for Helmotz Equation <tutorials/tutorial9/tutorial.html>`_
`Multiscale PDE learning with Fourier Feature Network <tutorials/tutorial13/tutorial.html>`_
- `Two dimensional Poisson problem using Extra Features Learning <tutorial2/tutorial.html>`_
- `Two dimensional Wave problem with hard constraint <tutorial3/tutorial.html>`_
- `Resolution of a 2D Poisson inverse problem <tutorial7/tutorial.html>`_
- `Periodic Boundary Conditions for Helmotz Equation <tutorial9/tutorial.html>`_
- `Multiscale PDE learning with Fourier Feature Network <tutorial13/tutorial.html>`_
Neural Operator Learning
------------------------
.. toctree::
:maxdepth: 3
:titlesonly:
`Two dimensional Darcy flow using the Fourier Neural Operator <tutorials/tutorial5/tutorial.html>`_
`Time dependent Kuramoto Sivashinsky equation using the Averaging Neural Operator <tutorials/tutorial10/tutorial.html>`_
- `Two dimensional Darcy flow using the Fourier Neural Operator <tutorial5/tutorial.html>`_
- `Time dependent Kuramoto Sivashinsky equation using the Averaging Neural Operator <tutorial10/tutorial.html>`_
Supervised Learning
-------------------
.. toctree::
:maxdepth: 3
:titlesonly:
`Unstructured convolutional autoencoder via continuous convolution <tutorials/tutorial4/tutorial.html>`_
`POD-RBF and POD-NN for reduced order modeling <tutorials/tutorial8/tutorial.html>`_
- `Unstructured convolutional autoencoder via continuous convolution <tutorial4/tutorial.html>`_
- `POD-RBF and POD-NN for reduced order modeling <tutorial8/tutorial.html>`_

View File

@@ -19,84 +19,84 @@ import importlib.metadata
# -- Project information -----------------------------------------------------
_DISTRIBUTION_METADATA = importlib.metadata.metadata('pina-mathlab')
project = _DISTRIBUTION_METADATA['Name']
copyright = _DISTRIBUTION_METADATA['License-File']
author = "PINA contributors"
version = _DISTRIBUTION_METADATA['Version']
_DISTRIBUTION_METADATA = importlib.metadata.metadata("pina-mathlab")
project = _DISTRIBUTION_METADATA["Name"]
copyright = _DISTRIBUTION_METADATA["License-File"]
author = "PINA Contributors"
version = _DISTRIBUTION_METADATA["Version"]
sys.path.insert(0, os.path.abspath('../sphinx_extensions')) # extension to remove paramref link from lightinig
sys.path.insert(
0, os.path.abspath("../sphinx_extensions")
)
# -- General configuration ------------------------------------------------
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
'sphinx.ext.doctest',
'sphinx.ext.napoleon',
'sphinx.ext.intersphinx',
'sphinx.ext.todo',
'sphinx.ext.coverage',
'sphinx.ext.viewcode',
'sphinx.ext.mathjax',
'sphinx.ext.intersphinx',
'paramref_extension', # this extension is made to remove paramref links from lightining doc
'sphinx_copybutton',
'sphinx_design'
"sphinx.ext.autodoc",
"sphinx.ext.autosummary",
"sphinx.ext.doctest",
"sphinx.ext.napoleon",
"sphinx.ext.intersphinx",
"sphinx.ext.todo",
"sphinx.ext.coverage",
"sphinx.ext.viewcode",
"sphinx.ext.mathjax",
"sphinx.ext.intersphinx",
"paramref_extension", # this extension is made to remove paramref links from lightining doc
"sphinx_copybutton",
"sphinx_design",
]
# The root document.
root_doc = 'index'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This pattern also affects html_static_path and html_extra_path.
exclude_patterns = ['_build', 'docstrings', 'nextgen', 'Thumbs.db', '.DS_Store']
exclude_patterns = ["build", "docstrings", "nextgen", "Thumbs.db", ".DS_Store"]
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = 'literal'
# default_role = 'literal'
# Generate the API documentation when building
autosummary_generate = True
numpydoc_show_class_members = False
intersphinx_mapping = {
'python': ('http://docs.python.org/3', None),
'matplotlib': ('https://matplotlib.org/stable', None),
'torch': ('https://pytorch.org/docs/stable/', None),
'lightning.pytorch': ("https://lightning.ai/docs/pytorch/stable/", None),
}
"python": ("http://docs.python.org/3", None),
"matplotlib": ("https://matplotlib.org/stable", None),
"torch": ("https://pytorch.org/docs/stable/", None),
"lightning.pytorch": ("https://lightning.ai/docs/pytorch/stable/", None),
"torch_geometric": (
"https://pytorch-geometric.readthedocs.io/en/latest/",
None,
),
}
nitpicky = True
nitpick_ignore = [
# ('py:meth', 'lightning.pytorch.core.module.LightningModule.log'),
# ('py:meth', 'lightning.pytorch.core.module.LightningModule.log_dict'),
# ('py:exc', 'MisconfigurationException'),
# ('py:func', 'torch.inference_mode'),
# ('py:func', 'torch.no_grad'),
# ('py:class', 'torch.utils.data.DistributedSampler'),
# ('py:class', 'pina.model.layers.convolution.BaseContinuousConv'),
# ('py:class', 'Module'),
# ('py:class', 'torch.nn.modules.loss._Loss'), # TO FIX
# ('py:class', 'torch.optim.LRScheduler'), # TO FIX
]
# nitpicky = True
# nitpick_ignore = [
# ("py:meth", "lightning.pytorch.core.module.LightningModule.log"),
# ("py:meth", "lightning.pytorch.core.module.LightningModule.log_dict"),
# ("py:exc", "MisconfigurationException"),
# ("py:func", "torch.inference_mode"),
# ("py:func", "torch.no_grad"),
# ("py:class", "torch.utils.data.DistributedSampler"),
# ("py:class", "pina.model.layers.convolution.BaseContinuousConv"),
# ("py:class", "Module"),
# ("py:class", "torch.nn.modules.loss._Loss"), # TO FIX
# ("py:class", "torch.optim.LRScheduler"), # TO FIX
# ]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
templates_path = ["_templates"]
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
source_suffix = ".rst"
# The master toctree document.
master_doc = 'index'
master_doc = "index"
# autoclass
autoclass_content = 'both'
autoclass_content = "both"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -108,7 +108,7 @@ release = version
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = 'en'
language = "en"
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
@@ -122,7 +122,7 @@ add_function_parentheses = True
add_module_names = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
pygments_style = "sphinx"
# A list of ignored prefixes for module index sortins as "systems = False
@@ -143,7 +143,7 @@ viewcode_import = True
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'pydata_sphinx_theme'
html_theme = "pydata_sphinx_theme"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
@@ -151,7 +151,7 @@ html_theme = 'pydata_sphinx_theme'
# html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
@@ -162,7 +162,7 @@ html_theme_options = {
"name": "GitHub",
"url": "https://github.com/mathLab/PINA",
"icon": "fab fa-github",
"type": "fontawesome",
"type": "fontawesome",
},
{
"name": "Twitter",
@@ -172,7 +172,7 @@ html_theme_options = {
},
{
"name": "Email",
"url": "mailto:pina.mathlab@gmail.com",
"url": "mailto:pina.mathlab@gmail.com",
"icon": "fas fa-envelope",
"type": "fontawesome",
},
@@ -185,7 +185,7 @@ html_theme_options = {
# If not ''i, a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
html_last_updated_fmt = '%b %d, %Y'
html_last_updated_fmt = "%b %d, %Y"
# If false, no index is generated.
html_use_index = True
@@ -197,40 +197,52 @@ html_show_sourcelink = True
html_show_copyright = True
# Output file base name for HTML help builder.
htmlhelp_basename = 'pinadoc'
htmlhelp_basename = "pinadoc"
# Link to external html files
html_extra_path = ["tutorials"]
# Avoid side bar for html files
html_sidebars = {
"_tutorial": [],
"_team": [],
"_cite": [],
"_contributing": [],
"_installation": [],
"_LICENSE": [],
}
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
'papersize': 'a4paper',
"papersize": "a4paper",
# The font size ('10pt', '11pt' or '12pt').
'pointsize': '20pt',
"pointsize": "20pt",
# Additional stuff for the LaTeX preamble.
'preamble': '',
"preamble": "",
# Latex figure (float) alignment
'figure_align': 'htbp',
"figure_align": "htbp",
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'pina.tex', u'PINA Documentation',
u'PINA contributors', 'manual'),
(
master_doc,
"pina.tex",
"PINA Documentation",
"PINA contributors",
"manual",
),
]
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'pina', u'PINA Documentation',
[author], 1)
]
man_pages = [(master_doc, "pina", "PINA Documentation", [author], 1)]
# -- Options for Texinfo output -------------------------------------------
@@ -238,11 +250,20 @@ man_pages = [
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'pina', u'PINA Documentation',
author, 'pina', 'One line description of project.',
'Miscellaneous'),
(
master_doc,
"pina",
"PINA Documentation",
author,
"pina",
"One line description of project.",
"Miscellaneous",
),
]
# If true, do not generate a @detailmenu in the "Top" node's menu.
# texinfo_no_detailmenu = False
autodoc_member_order = 'bysource'
autodoc_member_order = "bysource"
# Do consider meth ending with _ (needed for in-place methods of torch)
strip_signature_backslash = True

View File

@@ -9,32 +9,32 @@ Welcome to PINAs documentation!
.. grid-item::
.. image:: index_files/tutorial_13_3.png
:target: tutorials/tutorial2/tutorial.html
:target: tutorial2/tutorial.html
.. grid-item::
.. image:: index_files/tutorial_32_0.png
:target: tutorials/tutorial4/tutorial.html
:target: tutorial4/tutorial.html
.. grid-item::
.. image:: index_files/tutorial_13_01.png
:target: tutorials/tutorial9/tutorial.html
:target: tutorial9/tutorial.html
.. grid-item::
.. image:: index_files/tutorial_36_0.png
:target: tutorials/tutorial6/tutorial.html
:target: tutorial6/tutorial.html
.. grid-item::
.. image:: index_files/tutorial_15_0.png
:target: tutorials/tutorial13/tutorial.html
:target: tutorial13/tutorial.html
.. grid-item::
.. image:: index_files/tutorial_5_0.png
:target: tutorials/tutorial10/tutorial.html
:target: tutorial10/tutorial.html
.. grid:: 1 1 3 3
@@ -45,7 +45,7 @@ Welcome to PINAs documentation!
an open-source Python library providing an intuitive interface for
solving differential equations using PINNs, NOs or both together.
Based on `PyTorch <https://pytorch.org/>`_ and `PyTorchLightning <https://lightning.ai/docs/pytorch/stable/>`_, **PINA** offers a simple and intuitive way to formalize a specific (differential) problem
Based on `PyTorch <https://pytorch.org/>`_, `PyTorchLightning <https://lightning.ai/docs/pytorch/stable/>`_, and `PyG <https://pytorch-geometric.readthedocs.io/en/latest/>`_, **PINA** offers a simple and intuitive way to formalize a specific (differential) problem
and solve it using neural networks . The approximated solution of a differential equation
can be implemented using PINA in a few lines of code thanks to the intuitive and user-friendly interface.
@@ -63,9 +63,9 @@ Welcome to PINAs documentation!
.. toctree::
:maxdepth: 1
Installing <_installation>
Tutorial <_tutorial>
API <_rst/_code>
Tutorial <_tutorial>
Installing <_installation>
Team & Foundings <_team.rst>
Contributing <_contributing>
License <_LICENSE.rst>

View File

@@ -1,11 +1,12 @@
from docutils import nodes
from docutils.parsers.rst.roles import register_local_role
def paramref_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
# Simply replace :paramref: with :param:
new_role = nodes.literal(text=text[1:])
return [new_role], []
def setup(app):
register_local_role('paramref', paramref_role)
def setup(app):
register_local_role("paramref", paramref_role)