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

Namespaces

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

Enumerations

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

Functions

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

Detailed Description

Structural observability and identifiability analysis.