Usage via Code
Dev Usage
Setup
We recommend using poetry to manage the dependencies. To install poetry follow the instructions on python-poetry.org/docs/#installation.
Install dependencies
poetry install
Execute tests
poetry run python -m unittest
Use a default algorithm
from causy.causal_discovery.constraint.algorithms import PC
from causy.graph_utils import retrieve_edges
model = PC()
model.create_graph_from_data(
[
{"a": 1, "b": 0.3},
{"a": 0.5, "b": 0.2}
]
)
model.create_all_possible_edges()
model.execute_pipeline_steps()
edges = retrieve_edges(model.graph)
for edge in edges:
print(
f"{edge[0]} -> {edge[1]}: {model.graph.edges[edge[0]][edge[1]]}"
)
Use a custom algorithm
from causy.common_pipeline_steps.exit_conditions import ExitOnNoActions
from causy.graph_model import graph_model_factory
from causy.common_pipeline_steps.logic import Loop
from causy.common_pipeline_steps.calculation import CalculatePearsonCorrelations
from causy.independence_tests.common import (
CorrelationCoefficientTest,
PartialCorrelationTest,
ExtendedPartialCorrelationTestMatrix,
)
from causy.orientation_rules.pc import (
ColliderTest,
NonColliderTest,
FurtherOrientTripleTest,
OrientQuadrupleTest,
FurtherOrientQuadrupleTest,
)
from causy.graph_utils import retrieve_edges
CustomPC = graph_model_factory(
pipeline_steps=[
CalculatePearsonCorrelations(),
CorrelationCoefficientTest(threshold=0.1),
PartialCorrelationTest(threshold=0.01),
ExtendedPartialCorrelationTestMatrix(threshold=0.01),
ColliderTest(),
Loop(
pipeline_steps=[
NonColliderTest(),
FurtherOrientTripleTest(),
OrientQuadrupleTest(),
FurtherOrientQuadrupleTest(),
],
exit_condition=ExitOnNoActions(),
),
]
)
model = CustomPC()
model.create_graph_from_data(
[
{"a": 1, "b": 0.3},
{"a": 0.5, "b": 0.2}
]
)
model.create_all_possible_edges()
model.execute_pipeline_steps()
edges = retrieve_edges(model.graph)
for edge in edges:
print(
f"{edge[0].name} -> {edge[1].name}: {model.graph.edges[edge[0]][edge[1]]}"
)
Supported algorithms
Currently, causy supports the following algorithms:
- PC (Peter-Clark)
- PC - the original PC algorithm without any modifications
causy.causal_discovery.constraint.algorithms.PC
- ParallelPC - a parallelized version of the PC algorithm
causy.causal_discovery.constraint.algorithms.ParallelPC
- PC - the original PC algorithm without any modifications