-
Notifications
You must be signed in to change notification settings - Fork 18
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
[CI] Enable CI and setup all logistics #15
Conversation
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
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.
LGTM; only comment is setup.py is no longer necessary
|
||
from setuptools import setup | ||
|
||
setup() |
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.
We don't need setup.py with Poetry, on package build it will auto-generate a setup.py with metadata from pyproject.toml.
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.
Don't we if a developer git clones and wants to run pip install -e .
? python-poetry/poetry#34
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.
Does poetry install -E <extra_name> -E <other_extra_nome> not work for you?
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.
No that only installs dev dependencies. Currently in python-poetry/poetry#34 it is said that one cannot run the equivalent of pip install -e .
.
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
@darthtrevino do you know why the circleCI is not catching the install for matplotlib? Also do you know why poetry bugs out when installing numpy for python v3.10? These are the only 2 issues left before this is good to merge. |
README.md
Outdated
|
||
dodiscover is a Python library for causal discovery, or structure learning. This is generally considered a "first step" in the causal inference pipeline, if one does not have access to a hypothesized causal graph for their situation. |
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.
Assuming "structure learning" is a bigger scope than "causal discovery" Let's narrow scope down to "Python library for causal discovery (causal structure learning)."
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.
Suggested rephrasing
dodiscovery is a Python library for causal discovery (causal structure learning). Causal discovery is useful when you aren't sure what specific causal questions you have in your domain and want to start by exploring causal relationships in the data. dodiscovery also supports finding the causal structure you need to target specific causal inferences (e.g., cause effect inference).
I think it is best to avoid framing global causal discovery necessarily as the first step of a cause inference pipeline. Causal discovery tends to focus on getting the "right" graph given the data you have, and most of causal effect inference methods focus on getting the "right" causal effect in a way that is robust to not knowing all of the graph or observing all of the data. I think we'll address this with learning ADMG's, providing Markov blanket discovery, etc. But we shouldn't overpromise.
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.
Done.
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.
Requested changes to README, otherwise LGTM
README.md
Outdated
|
||
dodiscover is a Python library for causal discovery, or structure learning. This is generally considered a "first step" in the causal inference pipeline, if one does not have access to a hypothesized causal graph for their situation. |
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.
Suggested rephrasing
dodiscovery is a Python library for causal discovery (causal structure learning). Causal discovery is useful when you aren't sure what specific causal questions you have in your domain and want to start by exploring causal relationships in the data. dodiscovery also supports finding the causal structure you need to target specific causal inferences (e.g., cause effect inference).
I think it is best to avoid framing global causal discovery necessarily as the first step of a cause inference pipeline. Causal discovery tends to focus on getting the "right" graph given the data you have, and most of causal effect inference methods focus on getting the "right" causal effect in a way that is robust to not knowing all of the graph or observing all of the data. I think we'll address this with learning ADMG's, providing Markov blanket discovery, etc. But we shouldn't overpromise.
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.
Gonna try then what was suggested in discord.
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Just tryna wrangle with the circleCI docs building |
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Cross-linking with poetry issue: python-poetry/poetry#6177 It seems there is an overall flaw in poetry that does not allow one to specify separate dev-dependencies. Therefore dev-dependencies must all be installed for any dev step (e.g. matplotlib must be installed to do style checking). |
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
Signed-off-by: Adam Li <[email protected]>
First step for #11
Summary for CI
We should keep CI and setup and installation workflow relatively similar. From my exp in OSS, this alleviates developer burden and overall technical debt.
This PR adds additional checks to the CI that are based off best practices:
main
branchTODO for CI:
Summary for repo docs
I've added more details to the README based on my experience. What would be nice is to extend the main figure in dowhy's README to encompass causal discovery. Otw, I think short READMEs are the way to go and then linking to the documentation.
Summary for code documentation
I've uploaded boiler plate documentation that will leverage the pydata sphinx layout. Inside we should track: contributors, and PRs. The API is also auto-rendered here via sphinx.
cc: @robertness