equinor / equinor/prisma-decision-api
oopn
- Dominant language
- C#
- Stars
- 3
- Forks
- 3
- Avg merge
- 2d 13m
- Merged PRs (30d)
- 27
Description
copy of https://github.com/equinor/dot-archive/issues/609
Is your feature request related to a problem? Please describe.
Object Oriented Probabilistic Networks offer the possibility to reuse components (in particular for looping around parts of the influence diagram) and may as such be a useful feature to have.
We need to see how this can be implemented in the database and exposed to the frontend. In particular, how can this be described in the issue raising step.
See among others:
Bayesian Networks and Influence Diagrams: A Guide to Construction and Analysis from Kjærulf and Madsen (ca page 95).
Introducing OOPN can be done:
1. in the DataBase, introduce a SuperClass vertex. A Project may contain SuperClasses and Issues, and a SuperClass contains (other) issues.
This means creating a SuperClass k introduces an edge Project m ->SuperClass k, link all the issues of the super class to this one as Issue n -> SuperClass k, Issue p -> SuperClass k, ... and remove the edges from Project m to the issues of the SuperClass K.
A SuperClass is defined by
- A description
- A shortname
- A set of labels
- A list of issues (only decisions, uncertainties and values according to Kjærulf and Madsen)
- A set of metadata
2. In the Framing part of the frontend, we can create a new tab similar to the merging of issues with only:
- Focus Decisions
- Key Uncertainties
- Values
Have buttons: "Create SuperClass" and "Create an instance of"
The drag and drop can only be done within the same category and meaning "contains" instead of "merged". Need to add the possibility to remove from the SuperClass
3. In the Structuring (ID) part of the frontend
Add buttons with Expand/Collapse a selected OOPN (or based on a selected nodes of an OOPN)
Add buttons with Expand/Collapse all
Add buttons with show/hide interface (input/output nodes only)
Questions to answer:
- Can we save predefined SuperClasses in the database of reuse across projects?
- How to deal with edges? Can we allow high level edges between the super classes and other nodes or should they always be from basis nodes? In the former, what happens when expanding, as the edge is not link to a basis node? Should we just make it invisible?
- What is the approach for evaluating the model? Do we need to fill all the probabilities, alternatives and values of the all the nodes within a SuperClass, or can we accept to replace the SuperClass by a node for high level representation?
- How to implement the placeholder input nodes?
further documentation can be found in https://data.biotracer.hugin.com/htmlhelp/descr_oon_pane.html and the links within this page.
Contributor guide
Research direction
Start by reading the copied dot-archive issue and the referenced OOPN documentation, then map the requested changes across the database, the Framing frontend, and the Structuring (ID) frontend. A useful outcome is an agreed design that answers the listed questions about reuse, edges, evaluation, and placeholder inputs before implementation begins.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- backend-api-design, databases
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100