{% extends "report_base.html" %}
{% block title %}{{ title }}{% endblock %}
{% block items %}mappings{% endblock %}
{% block heading %}{{ fit_id }}{% endblock %}
{% block subtitle %}{{ opid }}{% endblock %}
{% block placeholder %}Search parameters, mappings, metrics …{% endblock %}
{% block badges %}{% for badge in badges %}{{ badge.label }} {{ badge.value }}{% endfor %}{% endblock %}
{% block nav %}
OverviewResults
{% if identifiability or fisher %}Identifiability{% endif %}
Fit mappings
{% endblock %}
{% block chips %}
{% for kind in kinds %}
{% endfor %}
{% endblock %}
{% block footer %}{% for file in files %}{{ file.label }}{% if not loop.last %} · {% endif %}{% endfor %}{% endblock %}
{% block content %}
Overview
Fit
{% for key, value in fit_info.items() %}
{{ key }}
{{ value }}
{% endfor %}
Parameters
parameter
{% if versioned_parameters %}
target
{% endif %}
{% for pset in parameter_set_ids %}
{{ pset }}
{% endfor %}
lower
upper
unit
{% for row in parameters %}
{{ row.pid }}
{% if versioned_parameters %}
{{ row.target }}
{% endif %}
{% for value in row.set_values %}
{{ value }}
{% endfor %}
{{ row.lower }}
{{ row.upper }}
{{ row.unit }}
{% endfor %}
{% if bound_warnings %}
{% for message in bound_warnings %}{{ message }} {% endfor %}
{% endif %}
Settings
setting
value
{% for key, value in settings.items() %}
{{ key }}
{{ value }}
{% endfor %}
Data
experiment
{% for kind in kinds %}
{{ kind }}
{% endfor %}
mappings
{% for row in data_summary %}
{{ row.experiment }}
{% for count in row.counts %}
{{ count }}
{% endfor %}
{{ row.total }}
{% endfor %}
total
{% for count in data_total.counts %}
{{ count }}
{% endfor %}
{{ data_total.total }}
Results
Metrics
{% for column in metrics_columns %}
{{ column.name }}{% if column.hint %}?{% endif %}
{% endfor %}
{% for row in metrics %}
{% for value in row %}
{{ value }}
{% endfor %}
{% endfor %}
{% if run_plots %}
Optimization runs
{% for plot in run_plots %}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %}
{% if result_plots %}
Predictions and costs
{% for plot in result_plots %}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %}
Contribution of the fit mappings
{% for column in mapping_metrics_columns %}
{{ column }}{% if hints.get(column) %}?{% endif %}
{% endfor %}
{% for row in mapping_metrics %}
{{ row.parameter_set }}
{{ row.experiment }}
{{ row.mapping }}
{{ row.kind }}
{{ row.n }}
{{ row.mse }}
{{ row.rmse }}
{{ row.nrmse }}
{{ row.rmse_w }}
{{ row.r2 }}
{% endfor %}
{% if runs %}
Optimization runs ({{ runs | length }})
{% for column in run_columns %}
{{ column }}
{% endfor %}
{% for row in runs %}
{% for value in row %}
{{ value }}
{% endfor %}
{% endfor %}
{% endif %}
{% if fisher %}
{% if not identifiability %}
Identifiability
{% endif %}
Fisher information
The curvature of the cost at the parameters, FIM = J'J with the jacobian of the weighted residuals, from which the standard errors and the correlations of the parameters follow. It is a local statement: the intervals are exact for a cost which is a quadratic around the optimum and approximate for a non-linear model, where the profile likelihood is the one to trust. The errors and the intervals are computed in the space the optimizer searches, so an interval on a logarithmic scale is not symmetric around the value.
{% if not fisher.identifiable %}
The information does not have full rank: the data does not constrain every direction in parameter space, so the errors and the correlations of the unconstrained directions cannot be read. A parameter which no data informs is such a direction.
{% endif %}
Analysis
{% for key, value in fisher.info.items() %}
{{ key }}
{{ value }}
{% endfor %}
eigenvalues?
{{ fisher.eigenvalues | join(", ") }}
Parameters
{% for column in fisher.columns %}
{{ column.name }}{% if column.hint %}?{% endif %}
{% endfor %}
{% for row in fisher.rows %}
{% for value in row %}
{{ value }}
{% endfor %}
{% endfor %}
Correlation?
{% for pid in fisher.pids %}
{{ pid }}
{% endfor %}
{% for pid in fisher.pids %}
{{ pid }}
{% for value in fisher.correlation[loop.index0] %}
{{ value }}
{% endfor %}
{% endfor %}
{% endif %}
{% if identifiability %}
Identifiability
Profile likelihood of the parameters: every parameter is fixed at values around the optimum and the other parameters are optimized again. A parameter is identifiable if its profile crosses the threshold of the confidence level on both sides of the optimum, i.e., its confidence interval is finite; practically non-identifiable if the profile stays below the threshold up to a bound of the parameter; structurally non-identifiable if the profile is flat. An open side of an interval is shown as the bound of the parameter.
{% if identifiability.better_optimum %}
A profile found a cost below the cost of the parameter set, the fit did not converge to the optimum. The threshold is relative to the lowest cost.
{% endif %}
Analysis
{% for key, value in identifiability.info.items() %}
{{ key }}
{{ value }}
{% endfor %}
Parameters
parameter
value
ci lower
ci upper
unit
identifiability
points
{% for row in identifiability.rows %}
{{ row.pid }}
{{ row.value }}
{{ row.ci_lower }}
{{ row.ci_upper }}
{{ row.unit }}
{{ row.label }}{% if not row.converged %} not converged{% endif %}
{{ row.n_points }}
{% endfor %}
{% if identifiability.plots %}
{% for plot in identifiability.plots %}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %}
{% if identifiability.profile_plots %}
Profiles
{% for plot in identifiability.profile_plots %}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}
{% endif %}
{% endif %}
Fit mappings ({{ mappings | length }})
{% for mapping in mappings %}
{{ mapping.mapping }}{{ mapping.experiment }} · {{ mapping.observable }}{{ mapping.kind }}
{% for key, value in mapping.metrics.items() %}{{ key }} {{ value }}{% endfor %}
{% for plot in mapping.plots %}
{{ plot.caption }}{% if plot.hint %}?{% endif %}
{% endfor %}