-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Amend Metamorphic Relations #293
Conversation
🦙 MegaLinter status:
|
Descriptor | Linter | Files | Fixed | Errors | Elapsed time |
---|---|---|---|---|---|
black | 36 | 1 | 1.04s | ||
✅ PYTHON | pylint | 36 | 0 | 5.36s |
See detailed report in MegaLinter reports
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #293 +/- ##
==========================================
- Coverage 96.97% 96.54% -0.43%
==========================================
Files 29 29
Lines 1816 1825 +9
==========================================
+ Hits 1761 1762 +1
- Misses 55 63 +8
Continue to review full report in Codecov by Sentry.
|
def generate_metamorphic_relations(dag: CausalDAG) -> list[MetamorphicRelation]: | ||
"""Construct a list of metamorphic relations implied by the Causal DAG. | ||
def generate_metamorphic_relations(dag: CausalDAG, skip_ancestors: bool) -> list[MetamorphicRelation]: | ||
"""Construct a list of metamorphic relations based on the DAG or cyclic graph. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unsure if actually relevant but in the literature a causal graph with loops is called a DCG (or you could just refer to either as a "causal graph". Pedantic suggestion though
I'm afraid I'm a little confused as to what's going on here. I was envisioning something along the lines of an |
generate_metamorphic_relations
inspecification/metamorphic_relation.py
to deal with situations with dags that contain cycles/loops.skip_ancestors
. The default isFalse
which retains the original logic of the algorithm. IfTrue
, no adjustment sets are calculated and empty sets are passed into theShouldCase
/ShouldNotCause
methods.TODO:
skip_ancestors=True