Skip to content

Commit

Permalink
Merge pull request #18 from bradendubois/beta
Browse files Browse the repository at this point in the history
Full release onto main for PyPI "launch"
  • Loading branch information
bradendubois authored Mar 16, 2021
2 parents 3d48dfe + 84818b8 commit dafc9f0
Show file tree
Hide file tree
Showing 2,098 changed files with 273 additions and 4,262,433 deletions.
56 changes: 50 additions & 6 deletions .github/workflows/test_and_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@ jobs:
test:
strategy:
matrix:
report-coverage: [ false ]
python-version: [ 3.8, 3.9 ]
os:
- ubuntu-latest
- ubuntu-18.04
- ubuntu-16.04
- macos-latest
- windows-latest
python-version: [ 3.8, 3.9 ]
report-coverage: [ false ]

# Special matrix job to report coverage only once
include:
- python-version: 3.9
os: ubuntu-latest
- os: ubuntu-latest
python-version: 3.9
report-coverage: true

runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -57,13 +57,57 @@ jobs:
uses: AndreMiras/coveralls-python-action@develop
if: ${{ matrix.report-coverage }}

release:
# Tag and create a new release - handled by semantic-release
tag:
runs-on: ubuntu-latest
needs: test
needs: test # Only consider creating a release if all tests pass

# Only create a release on main / beta
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/beta'
steps:
- uses: actions/checkout@v2
- name: Create Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npx semantic-release

# Package and upload to PyPI
pypi:
runs-on: ubuntu-latest
needs: tag # Need to get the latest version number, which may change based on semantic-release

# Only upload to PyPI on main
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install flake8 pytest coverage coveralls
pip install -r requirements.txt
- name: Get Version Number
uses: oprypin/find-latest-tag@v1
id: tag
with:
repository: ${{ github.repository }}
releases-only: true

- name: Build PyPI Package
run: |
python setup.py sdist bdist_wheel
env:
SEMANTIC_VERSION: ${{ steps.tag.outputs.tag }}

- name: PyPI Publish
uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
11 changes: 9 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,14 @@
*.pyc

# Log files from operating software
src/logs/
do-calculus/logs/

# Config file is generated on run
src/config/config.*
*config.*

*.egg*

# results from building package
build/*
dist/*

1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include do/*
17 changes: 12 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<h1 align="center" style="border-bottom: none;">probability-code</h1>
<h1 align="center" style="border-bottom: none;">do-calculus</h1>
<h3 align="center">A Python implementation of the <i>do-calculus</i> of Judea Pearl et. al.</h3>
<p align="center">
<a href="https://github.com/bradendubois/probability-code/actions?query=workflow%3ATest+branch%3Amain">
Expand All @@ -7,17 +7,24 @@
<a href='https://coveralls.io/github/bradendubois/probability-code?branch=main'>
<img src='https://coveralls.io/repos/github/bradendubois/probability-code/badge.svg?branch=main' alt='Coverage Status' />
</a>
<a href="https://pypi.org/project/do-calculus/">
<img alt="" src="https://pypip.in/v/do-calculus/badge.svg">
</a>
<a href="https://pypi.org/project/do-calculus/">
<img alt="" src="https://pypip.in/wheel/do-calculus/badge.svg">
</a>
<a href="https://github.com/semantic-release/semantic-release">
<img alt="semantic-release" src="https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg">
</a>
</p>

## Resources

* **Documentation / Wiki**: https://github.com/bradendubois/probability-code/wiki
* **Source code**: https://github.com/bradendubois/probability-code
* **Releases**: https://github.com/bradendubois/probability-code/releases
* **Bug reports**: https://github.com/bradendubois/probability-code/issues
* **Documentation / Wiki**: [github.com/bradendubois/probability-code/wiki](https://github.com/bradendubois/probability-code/wiki)
* **Source Code**: [github.com/bradendubois/probability-code](https://github.com/bradendubois/probability-code)
* **PyPI**: [pypi.org/project/do-calculus/](https://pypi.org/project/do-calculus/)
* **Releases**: [github.com/bradendubois/probability-code/releases](https://github.com/bradendubois/probability-code/releases)
* **Bug reports**: [github.com/bradendubois/probability-code/issues](https://github.com/bradendubois/probability-code/issues)
* **Contact**: [[email protected]](mailto:[email protected])

See the [wiki](https://github.com/bradendubois/probability-code/wiki) to get started.
File renamed without changes.
8 changes: 8 additions & 0 deletions debug/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Debug

This is just a large directory of debug info I move here to root through, test files to make, etc.
This is here so that it can be added to the Git repo and move across machines, etc. but is not included when packaged to PyPI.

- **Nothing** in this subdirectory should ever be imported/required elsewhere.
- **Nothing** in this directory is likely to work as-is.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
24 changes: 12 additions & 12 deletions API.py → do/API.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@
from typing import Union
from pathlib import Path

from src.api.backdoor_paths import api_backdoor_paths
from src.api.deconfounding_sets import api_deconfounding_sets
from src.api.joint_distribution_table import api_joint_distribution_table
from src.api.probability_query import api_probability_query

from src.probability.structures.BackdoorController import BackdoorController
from src.probability.structures.CausalGraph import CausalGraph
from src.probability.structures.ConditionalProbabilityTable import ConditionalProbabilityTable
from src.probability.structures.VariableStructures import Variable

from src.util.ModelLoader import parse_model
from src.util.OutputLogger import OutputLogger
from .api.backdoor_paths import api_backdoor_paths
from .api.deconfounding_sets import api_deconfounding_sets
from .api.joint_distribution_table import api_joint_distribution_table
from .api.probability_query import api_probability_query

from .probability.structures.BackdoorController import BackdoorController
from .probability.structures.CausalGraph import CausalGraph
from .probability.structures.ConditionalProbabilityTable import ConditionalProbabilityTable
from .probability.structures.VariableStructures import Variable

from .util.ModelLoader import parse_model
from .util.OutputLogger import OutputLogger


class Do:
Expand Down
7 changes: 7 additions & 0 deletions do/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
__all__ = [
"api",
"config",
"probability",
"util",
"API",
]
11 changes: 5 additions & 6 deletions src/REPL.py → do/__main__.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
from yaml import safe_load as load
from os import path, listdir
from pathlib import Path

from src.api.backdoor_paths import api_backdoor_paths_parse
from src.api.deconfounding_sets import api_deconfounding_sets_parse
from src.api.probability_query import api_probability_query_parse
from .api.backdoor_paths import api_backdoor_paths_parse
from .api.deconfounding_sets import api_deconfounding_sets_parse
from .api.probability_query import api_probability_query_parse

from API import Do
from .API import Do


# TODO - Change graph_location to allow a specific graph to be given and loaded, or specify a user directory without
# there being path issues depending on the working directory


def run_repl(graph_location=Path(".", "src", "graphs", "full")):
def main(graph_location=Path(".", "src", "graphs", "full")):
"""
Run an interactive IO prompt allowing full use of the causality software.
@param graph_location: A string of the path from the working directory to a directory of graphs
Expand Down
6 changes: 6 additions & 0 deletions do/api/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
__all__ = [
"backdoor_paths",
"deconfounding_sets",
"joint_distribution_table",
"probability_query"
]
2 changes: 1 addition & 1 deletion src/api/backdoor_paths.py → do/api/backdoor_paths.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from itertools import product

from src.probability.structures.BackdoorController import BackdoorController
from ..probability.structures.BackdoorController import BackdoorController


def api_backdoor_paths_parse(query: str) -> (set, set):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from src.probability.structures.BackdoorController import BackdoorController
from ..probability.structures.BackdoorController import BackdoorController


def api_deconfounding_sets_parse(query: str) -> (set, set):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from itertools import product
from src.probability.structures.CausalGraph import CausalGraph
from src.probability.structures.ConditionalProbabilityTable import ConditionalProbabilityTable
from src.probability.structures.VariableStructures import Outcome, Variable

from ..probability.structures.CausalGraph import CausalGraph
from ..probability.structures.ConditionalProbabilityTable import ConditionalProbabilityTable
from ..probability.structures.VariableStructures import Outcome, Variable


def api_joint_distribution_table(cg: CausalGraph) -> ConditionalProbabilityTable:
Expand Down
4 changes: 2 additions & 2 deletions src/api/probability_query.py → do/api/probability_query.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from src.probability.structures.CausalGraph import CausalGraph
from src.probability.structures.VariableStructures import parse_outcomes_and_interventions
from ..probability.structures.CausalGraph import CausalGraph
from ..probability.structures.VariableStructures import parse_outcomes_and_interventions


def api_probability_query_parse(query: str) -> (tuple, tuple):
Expand Down
5 changes: 5 additions & 0 deletions do/config/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
__all__ = [
"config_manager",
"primary_configuration",
"settings"
]
5 changes: 5 additions & 0 deletions do/config/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
cache_computation_results: true
minimize_backdoor_sets: true
output_levels_of_precision: 5
regression_levels_of_precision: 5
topological_sort_variables: true
4 changes: 2 additions & 2 deletions src/config/config_manager.py → do/config/config_manager.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from pathlib import Path
from yaml import safe_load as load, dump

from src.config.primary_configuration import *
from ..config.primary_configuration import *

path = Path(".", "src", "config", "config.yml")
path = Path(".", "config.yml")


def create_default():
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from pathlib import Path

from primary_configuration import *
from .primary_configuration import *

documentation_file = Path(".", "doc", "Configuration.md")

Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion src/config/settings.py → do/config/settings.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from src.config.config_manager import settings_yml
from .config_manager import settings_yml


class Settings:
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
3 changes: 3 additions & 0 deletions do/probability/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
__all__ = [
"structures"
]
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,11 @@

from itertools import product

from src.config.settings import Settings
from src.probability.structures.Graph import Graph
from src.util.helpers import minimal_sets
from src.util.helpers import power_set
from .Graph import Graph

from ...config.settings import Settings
from ...util.helpers import minimal_sets
from ...util.helpers import power_set


class BackdoorController:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,14 @@

from itertools import product

from src.config.settings import Settings

from src.probability.structures.BackdoorController import BackdoorController
from src.probability.structures.Graph import Graph
from src.probability.structures.Probability_Engine import ProbabilityEngine
from src.probability.structures.VariableStructures import Outcome, Intervention

from src.util.OutputLogger import OutputLogger
from src.util.helpers import p_str
from .BackdoorController import BackdoorController
from .Graph import Graph
from .Probability_Engine import ProbabilityEngine
from .VariableStructures import Outcome, Intervention

from ...config.settings import Settings
from ...util.OutputLogger import OutputLogger
from ...util.helpers import p_str


class CausalGraph:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# #
#########################################################
# Causal Graph #
# #
# Author: Braden Dubois ([email protected]) #
Expand All @@ -9,9 +9,10 @@
from numpy import empty
from math import floor, ceil

from src.config.settings import Settings
from src.probability.structures.VariableStructures import Variable, Outcome, Intervention
from src.util.ProbabilityExceptions import MissingTableRow
from .VariableStructures import Variable, Outcome, Intervention

from ...config.settings import Settings
from ...util.ProbabilityExceptions import MissingTableRow


class ConditionalProbabilityTable:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

from typing import Union

from src.probability.structures.VariableStructures import *
from .VariableStructures import Variable, Outcome, Intervention

# These functions should work with any sort of Variable type, or the name itself
CG_Types = Union[str, Variable, Outcome, Intervention]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,13 @@

from itertools import product

from src.config.settings import Settings
from .Graph import Graph
from .VariableStructures import Outcome, Intervention

from src.probability.structures.Graph import Graph
from src.probability.structures.VariableStructures import Outcome, Intervention

from src.util.OutputLogger import OutputLogger
from src.util.helpers import p_str
from src.util.ProbabilityExceptions import ProbabilityException, ProbabilityIndeterminableException
from ...config.settings import Settings
from ...util.OutputLogger import OutputLogger
from ...util.helpers import p_str
from ...util.ProbabilityExceptions import ProbabilityException, ProbabilityIndeterminableException


class ProbabilityEngine:
Expand Down
8 changes: 8 additions & 0 deletions do/probability/structures/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
__all__ = [
"BackdoorController",
"CausalGraph",
"ConditionalProbabilityTable",
"Graph",
"Probability_Engine",
"VariableStructures"
]
Loading

0 comments on commit dafc9f0

Please sign in to comment.