internal void RequestResetEvidence(int? scenarioId)
{
if (scenarioId == null)
{
foreach (IScenario scenario in Model.Scenarios)
{
scenario.InferenceUpdated -= OnScenarioInferenceUpdated;
scenario.InferenceFinished -= OnScenarioInferenceFinished;
xGraphInspector.SetInferenceResults(null, int.Parse(scenario.Id), new FObservation());
}
Model.Scenarios.Clear();
}
else
{
string scenarioIdAsString = scenarioId.Value.ToString();
var scenario = Model.Scenarios.Where(s => s.Id == scenarioIdAsString).FirstOrDefault();
if (scenario != null)
{
Model.Scenarios.Remove(scenario);
}
}
// Restore basic scenario 1.
if (scenarioId == null || scenarioId.Value == 1)
{
Scenario scenario = new Scenario("1", new FObservation(), Model.BayesianNetwork);
scenario.InferenceUpdated += OnScenarioInferenceUpdated;
scenario.InferenceFinished += OnScenarioInferenceFinished;
Model.Scenarios.Add(scenario);
}
// Update UI immediately.
{
var evidencesForEvidenceInspector =
Model.Scenarios.ToDictionary(
e => string.Format("Scenario {0}", e.Id),
e => new Tuple<FObservation, FRandomVariable[]>(e.Evidence, e.Workbench.BayesianNetwork.VariablesOrdered.ToArray())
);
xEvidenceInspector.SetEvidence(evidencesForEvidenceInspector, Model.BayesianNetworkVariableAbbreviations);
xGraphInspector.SetInterestVariables(null);
}
// Reset to simple node selection state.
Model.SelectedVariableMode = Mode.Inspecting;
}