Skip to content

Commit

Permalink
checking binning
Browse files Browse the repository at this point in the history
  • Loading branch information
paulbkoch committed Jan 14, 2025
1 parent 16b7694 commit 530e8f6
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 279 deletions.
278 changes: 6 additions & 272 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,29 +136,6 @@ jobs:
name: npm
path: shared/vis/pkg

R:
needs: [bdist] # bdist is not needed but slow this step down
runs-on: ubuntu-20.04
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }}
- name: Build R package
run: |
cd R
sudo apt --yes update
sudo apt --yes install texlive-latex-base texlive-fonts-extra
Rscript build.R
- name: Display errors
if: failure()
run: cat bld/tmp/R/interpret.Rcheck/00install.out
- name: Publish R package
uses: actions/upload-artifact@v4
with:
name: R
path: bld/R

sdist:
runs-on: ubuntu-20.04
steps:
Expand All @@ -183,55 +160,6 @@ jobs:
name: sdist
path: bld/sdist

docs:
runs-on: ubuntu-20.04
needs: [sdist]
permissions:
checks: write
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Download sdist artifact
uses: actions/download-artifact@v4
with:
name: sdist
path: bld/sdist
- name: Build docs
id: build_docs
continue-on-error: true
run: |
python -m pip install --upgrade pip setuptools wheel
install_file=$(echo bld/sdist/interpret_core-*.tar.gz)
install_file=$(basename "$install_file" .tar.gz)
python -m pip install "bld/sdist/$install_file.tar.gz[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]"
cd "docs/"
pip install -r requirements.txt
/bin/sh ./build.sh
- name: Mark step with a warning
if: ${{ steps.build_docs.outcome == 'failure' }}
uses: actions/github-script@v6
with:
script: |
github.rest.checks.create({
owner: context.repo.owner,
repo: context.repo.repo,
name: 'Failed building docs',
head_sha: context.sha,
status: 'completed',
conclusion: 'neutral'
})
- name: Publish docs
uses: actions/upload-artifact@v4
with:
name: docs
path: docs/interpret/_build/html/

bdist:
runs-on: ubuntu-20.04
needs: [bld, vis]
Expand Down Expand Up @@ -345,112 +273,6 @@ jobs:
$env:PATH += ";$env:GeckoWebDriver"
python -m pytest -vv -n auto --cov=powerlift --cov-report=xml
testC:
needs: [bld]
strategy:
matrix:
include:
- name: linux_release_64
image: ubuntu-latest
options: "-release_64"
existing: "-existing_release_64"
scheduled: "-valgrind"
- name: linux_debug_64
image: ubuntu-latest
options: "-debug_64"
existing: "-existing_debug_64"
scheduled: "-valgrind"
- name: linux_release_32
image: ubuntu-latest
options: "-release_32"
existing: ""
scheduled: "-valgrind"
- name: linux_debug_32
image: ubuntu-latest
options: "-debug_32"
existing: ""
scheduled: "-valgrind"
- name: mac_release_64
image: macos-13 # macos-13 is an intel based mac
options: "-release_64"
existing: "-existing_release_64"
scheduled: ""
- name: mac_debug_64
image: macos-13 # macos-13 is an intel based mac
# don't use the existing debug library since we want to rebuild with asan
options: "-debug_64 -asan"
existing: ""
scheduled: ""
- name: mac_release_arm
image: macos-latest
options: "-release_arm"
existing: "-existing_release_arm"
scheduled: ""
- name: mac_debug_arm
image: macos-latest
# don't use the existing debug library since we want to rebuild with asan
options: "-debug_arm -asan"
existing: ""
scheduled: ""
- name: win_release_64
image: windows-latest
options: "-release_64"
existing: "-existing_release_64"
scheduled: "-analysis"
- name: win_debug_64
image: windows-latest
options: "-debug_64"
existing: "-existing_debug_64"
scheduled: ""
- name: win_release_32
image: windows-latest
options: "-release_32"
existing: ""
scheduled: "-analysis"
- name: win_debug_32
image: windows-latest
options: "-debug_32"
existing: ""
scheduled: ""
runs-on: ${{ matrix.image }}
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Download libebm artifact
if: ${{ matrix.existing != '' }}
uses: actions/download-artifact@v4
with:
name: libebm_${{ matrix.name }}
path: bld/lib
- name: mac test_native
if: ${{ startsWith(matrix.image, 'macos') }}
run: |
/bin/sh ./shared/libebm/tests/libebm_test.sh ${{ matrix.options }} ${{ matrix.existing }}
- name: linux test_native (CI)
if: ${{ startsWith(matrix.image, 'ubuntu') && github.event_name != 'schedule' }}
run: |
/bin/sh ./shared/libebm/tests/libebm_test.sh ${{ matrix.options }} ${{ matrix.existing }}
- name: linux test_native (Schedule)
if: ${{ startsWith(matrix.image, 'ubuntu') && github.event_name == 'schedule' }}
run: |
/bin/sh ./shared/libebm/tests/libebm_test.sh ${{ matrix.options }} ${{ matrix.existing }} ${{ matrix.scheduled }}
- name: win test_native (CI)
if: ${{ startsWith(matrix.image, 'windows') && github.event_name != 'schedule' }}
run: |
$env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin'
./shared/libebm/tests/libebm_test.bat ${{ matrix.options }} ${{ matrix.existing }}
- name: win test_native (Schedule)
if: ${{ startsWith(matrix.image, 'windows') && github.event_name == 'schedule' }}
run: |
$env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin'
./shared/libebm/tests/libebm_test.bat ${{ matrix.options }} ${{ matrix.existing }} ${{ matrix.scheduled }}
testS:
needs: [sdist]
strategy:
Expand Down Expand Up @@ -508,6 +330,7 @@ jobs:
name: sdist
path: bld/sdist
- name: pytest (non-win)
continue-on-error: true
if: ${{ !startsWith(matrix.image, 'windows') }}
run: |
python -m pip install --upgrade pip setuptools wheel
Expand All @@ -519,6 +342,7 @@ jobs:
cd "tmp/zqmr/t"
python -m pytest -vv -n auto --cov=interpret --cov-report=xml
- name: pytest (win)
continue-on-error: true
if: ${{ startsWith(matrix.image, 'windows') }}
run: |
python -m pip install --upgrade pip setuptools wheel
Expand All @@ -532,6 +356,7 @@ jobs:
$env:PATH += ";$env:GeckoWebDriver"
python -m pytest -vv -n auto --cov=interpret --cov-report=xml
- name: Code coverage report
continue-on-error: true
if: always()
uses: codecov/codecov-action@v4
with:
Expand Down Expand Up @@ -597,6 +422,7 @@ jobs:
name: bdist
path: bld/bdist
- name: pytest (non-win)
continue-on-error: true
if: ${{ !startsWith(matrix.image, 'windows') }}
run: |
python -m pip install --upgrade pip setuptools wheel
Expand All @@ -608,6 +434,7 @@ jobs:
cd "tmp/zqmr/t"
python -m pytest -vv -n auto --cov=interpret --cov-report=xml
- name: pytest (win)
continue-on-error: true
if: ${{ startsWith(matrix.image, 'windows') }}
run: |
python -m pip install --upgrade pip setuptools wheel
Expand All @@ -621,104 +448,11 @@ jobs:
$env:PATH += ";$env:GeckoWebDriver"
python -m pytest -vv -n auto --cov=interpret --cov-report=xml
- name: Code coverage report
continue-on-error: true
if: always()
uses: codecov/codecov-action@v4
with:
files: tmp/zqmr/t/coverage.xml
flags: bdist_${{ matrix.name }}
name: codecov_bdist_${{ matrix.name }}
token: ${{ secrets.CODECOV_TOKEN }}

testR:
needs: [R]
strategy:
matrix:
include:
- name: linux
image: ubuntu-latest
runs-on: ${{ matrix.image }}
steps:
- name: Set up R
uses: r-lib/actions/setup-r@v2
with:
r-version: 'latest'
- name: Download R artifact
uses: actions/download-artifact@v4
with:
name: R
path: bld/R
- name: R test
if: startsWith(matrix.image, 'ubuntu')
continue-on-error: true
run: |
sudo apt --yes update
sudo apt --yes install texlive-latex-base texlive-fonts-extra
install_file=$(echo bld/R/interpret_*.tar.gz)
install_file=$(basename "$install_file" .tar.gz)
cd bld/R
R CMD check --as-cran "$install_file.tar.gz"
- name: Display results
run: cat bld/R/interpret.Rcheck/00check.log

format_clang:
runs-on: ubuntu-latest
permissions:
checks: write
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }}
- name: Check C++ code formatting with clang-format
id: check_cpp
continue-on-error: true
run: |
wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | sudo tee /etc/apt/sources.list.d/llvm-toolchain-jammy-16.list
sudo apt --yes update
sudo apt --yes install clang-format-16
find shared/libebm \( -iname "*.cpp" -o -iname "*.h" -o -iname "*.hpp" \) | xargs clang-format-16 -i -style=file
git diff --exit-code
- name: Mark step with a warning
if: ${{ steps.check_cpp.outcome == 'failure' }}
uses: actions/github-script@v6
with:
script: |
github.rest.checks.create({
owner: context.repo.owner,
repo: context.repo.repo,
name: 'Failed clang formatting check',
head_sha: context.sha,
status: 'completed',
conclusion: 'neutral'
})
format_ruff:
runs-on: ubuntu-latest
permissions:
checks: write
steps:
- name: Check out repo
uses: actions/checkout@v4
with:
ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }}
- name: Check python matches ruff format
id: check_python
continue-on-error: true
run: |
cd python
python -m pip install --upgrade ruff
ruff format --check
- name: Mark step with a warning
if: ${{ steps.check_python.outcome == 'failure' }}
uses: actions/github-script@v6
with:
script: |
github.rest.checks.create({
owner: context.repo.owner,
repo: context.repo.repo,
name: 'Failed ruff formatting check',
head_sha: context.sha,
status: 'completed',
conclusion: 'neutral'
})
20 changes: 20 additions & 0 deletions python/interpret-core/interpret/glassbox/_ebm/_ebm.py
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,9 @@ def fit(self, X, y, sample_weight=None, bags=None, init_score=None):

seed = normalize_seed(self.random_state)

import sys
sys.stderr.write(str(seed))

# after normalizing to a 32-bit signed integer, we pass the random_state into the EBMPreprocessor
# exactly as passed to us. This means that we should get the same preprocessed data for the mains
# if we create an EBMPreprocessor with the same seed. For interactions, we increment by one
Expand Down Expand Up @@ -809,6 +812,23 @@ def fit(self, X, y, sample_weight=None, bags=None, init_score=None):
unique_val_counts = binning_result[7]
noise_scale_binning = binning_result[8]

sys.stderr.write(" DREEEE ")
tot = 0.0
for levels in bins:
for level in levels:
if level is dict:
for name, x in level.items:
tot += hash(name) * x
else:
for x in level:
# sys.stderr.write("\nLLLS")
# sys.stderr.write(str(type(x)))
# sys.stderr.write(str(x))
tot += hash(x)
sys.stderr.write(str(tot))
#raise Exception("asfd")


if np.count_nonzero(missing_val_counts):
warn(
"Missing values detected. Our visualizations do not currently display missing values. "
Expand Down
Loading

0 comments on commit 530e8f6

Please sign in to comment.