Metis 2.0.0
High-performance C++20 dual-mode numerical framework
Loading...
Searching...
No Matches
Diagnostics.hpp File Reference

Structural observability and identifiability analysis. More...

#include "Function.hpp"
#include "MetisError.hpp"
#include "Sparsity.hpp"
#include <algorithm>
#include <casadi/casadi.hpp>
#include <numeric>
#include <optional>
#include <queue>
#include <sstream>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for Diagnostics.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  metis::StructuralSensitivityOptions
 Output-selection options shared by the structural diagnostics helpers. More...
struct  metis::DiagnosticInputRef
 One scalarized element of the selected input block. More...
struct  metis::DiagnosticOutputRef
 One scalarized row in the selected output stack. More...
struct  metis::StructuralDeficiencyGroup
 One structurally deficient connected component in the sensitivity graph. More...
struct  metis::StructuralDiagnosticIssue
 One user-facing structural diagnostic with an attached remediation hint. More...
struct  metis::StructuralSensitivityReport
 Structural rank analysis of selected outputs with respect to one input block. More...
struct  metis::StructuralDiagnosticsOptions
 Combined observability and identifiability analysis options. More...
struct  metis::StructuralDiagnosticsReport
 Combined structural diagnostics report. More...
struct  metis::detail::BipartiteComponent

Namespaces

namespace  metis
namespace  metis::detail
 Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)).

Enumerations

enum class  metis::StructuralProperty { metis::Observability , metis::Identifiability }
 Structural property being analyzed from a symbolic sensitivity pattern. More...

Functions

std::vector< int > metis::detail::sort_unique (std::vector< int > values)
std::vector< casadi_int > metis::detail::to_casadi_int (const std::vector< int > &values)
std::string metis::detail::join_labels (const std::vector< std::string > &labels)
std::string metis::detail::property_name (StructuralProperty property)
std::string metis::detail::property_subject_plural (StructuralProperty property)
std::string metis::detail::property_subject_singular (StructuralProperty property)
std::string metis::detail::property_fix_hint (StructuralProperty property)
std::string metis::detail::input_label (const std::string &input_name, int local_index)
std::string metis::detail::output_label (const std::string &output_name, int rows, int cols, int flat_index)
std::vector< int > metis::detail::canonical_output_indices (const casadi::Function &cfn, const std::vector< int > &requested, const std::string &context)
void metis::detail::validate_input_block (const casadi::Function &cfn, int input_idx, const std::string &context)
void metis::detail::validate_output_blocks (const casadi::Function &cfn, const std::vector< int > &output_indices, const std::string &context)
casadi::MX metis::detail::flatten_output (const casadi::MX &output)
std::vector< DiagnosticInputRefmetis::detail::make_input_refs (const casadi::Function &cfn, int input_idx)
std::vector< DiagnosticOutputRefmetis::detail::make_output_refs (const casadi::Function &cfn, const std::vector< int > &output_indices)
casadi::MX metis::detail::collect_selected_outputs (const std::vector< casadi::MX > &outputs, const std::vector< int > &output_indices)
std::vector< BipartiteComponentmetis::detail::connected_components (const casadi::Sparsity &sp)
int metis::detail::structural_rank (const casadi::Sparsity &sp)
int metis::detail::structural_rank_of_component (const casadi::Sparsity &sp, const BipartiteComponent &component)
std::vector< int > metis::detail::zero_sensitivity_columns (const casadi::Sparsity &sp)
std::vector< std::string > metis::detail::labels_for_inputs (const std::vector< DiagnosticInputRef > &inputs, const std::vector< int > &indices)
std::vector< std::string > metis::detail::labels_for_outputs (const std::vector< DiagnosticOutputRef > &outputs, const std::vector< int > &rows)
std::vector< StructuralDiagnosticIssuemetis::detail::build_issues (StructuralProperty property, const std::vector< DiagnosticInputRef > &inputs, const std::vector< DiagnosticOutputRef > &outputs, const std::vector< int > &zero_sensitivity_local_indices, const std::vector< StructuralDeficiencyGroup > &deficiency_groups)
StructuralSensitivityReport metis::detail::analyze_property (const Function &fn, int input_idx, StructuralProperty property, const StructuralSensitivityOptions &opts)
StructuralSensitivityReport metis::analyze_structural_observability (const Function &fn, int state_input_idx=0, const StructuralSensitivityOptions &opts={})
 Analyze which states are structurally observable from selected outputs.
StructuralSensitivityReport metis::analyze_structural_identifiability (const Function &fn, int parameter_input_idx, const StructuralSensitivityOptions &opts={})
 Analyze which parameters are structurally identifiable from selected outputs.
StructuralDiagnosticsReport metis::analyze_structural_diagnostics (const Function &fn, const StructuralDiagnosticsOptions &opts)
 Run structural observability and identifiability checks together.

Detailed Description

Structural observability and identifiability analysis.