diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1afec5a..9e1f9ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,167 +3,34 @@ name: Continuous Integration on: push: branches: - - master + - main pull_request: branches: - - master + - main jobs: - lint: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - uses: actions/setup-python@v2 - with: { python-version: "3.8" } - - - name: Install codespell - run: pip3 install codespell - - - name: Lint - run: cmake -D FORMAT_COMMAND=clang-format-11 -P cmake/lint.cmake - - - name: Spell check - if: always() - run: cmake -P cmake/spell.cmake - - coverage: - needs: [lint] - - runs-on: ubuntu-latest - - # To enable coverage, go to https://codecov.io/, acquire a token, put it - # into your secrets (Settings > Secrets > New repository secret), delete - # the last line from the conditional below and edit the "" - # placeholder to your GitHub name. - # If you do not wish to use codecov, then simply delete this job from the - # workflow. - if: github.repository_owner == '' - && false - - steps: - - uses: actions/checkout@v2 - - - name: Install LCov - run: sudo apt-get update -q - && sudo apt-get install lcov -q -y - - - name: Configure - run: cmake --preset=ci-coverage - - - name: Build - run: cmake --build build/coverage -j 2 - - - name: Test - working-directory: build/coverage - run: ctest --output-on-failure -j 2 - - - name: Process coverage info - run: cmake --build build/coverage -t coverage - - - name: Submit to codecov.io - uses: codecov/codecov-action@v1 - with: - file: build/coverage/coverage.info - - sanitize: - needs: [lint] - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Configure - env: { CXX: clang++-11 } - run: cmake --preset=ci-sanitize - - - name: Build - run: cmake --build build/sanitize -j 2 - - - name: Test - working-directory: build/sanitize - env: - ASAN_OPTIONS: "strict_string_checks=1:\ - detect_stack_use_after_return=1:\ - check_initialization_order=1:\ - strict_init_order=1:\ - detect_leaks=1" - UBSAN_OPTIONS: print_stacktrace=1 - run: ctest --output-on-failure -j 2 - - test: - needs: [lint] - - strategy: - matrix: - os: [macos, ubuntu, windows] - - runs-on: ${{ matrix.os }}-latest - - steps: - - uses: actions/checkout@v2 - - - name: Install static analyzers - if: matrix.os == 'ubuntu' - run: sudo apt-get install clang-tidy cppcheck -y -q - - - name: Configure - run: cmake --preset=ci-${{ matrix.os }} - - - name: Build - run: cmake --build build --config Release -j 2 - - - name: Install - run: cmake --install build --config Release --prefix prefix - - - name: Test - working-directory: build - run: ctest --output-on-failure -C Release -j 2 - docs: # Deploy docs only when builds succeed - needs: [sanitize, test] - runs-on: ubuntu-latest - # To enable, first you have to create an orphaned gh-pages branch: - # - # git switch --orphan gh-pages - # git commit --allow-empty -m "Initial commit" - # git push -u origin gh-pages - # - # Edit the placeholder below to your GitHub name, so this action - # runs only in your repository and no one else's fork. After these, delete - # this comment and the last line in the conditional below. - # If you do not wish to use GitHub Pages for deploying documentation, then - # simply delete this job similarly to the coverage one. - if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/main' && github.event_name == 'push' - && github.repository_owner == '' - && false + && github.repository_owner == 'heal-research' steps: - - uses: actions/checkout@v2 - - - uses: actions/setup-python@v2 - with: { python-version: "3.8" } - - - name: Install m.css dependencies - run: pip3 install jinja2 Pygments + - uses: actions/checkout@v4 - - name: Install Doxygen + - name: Install deps run: sudo apt-get update -q - && sudo apt-get install doxygen -q -y + && sudo apt-get install doxygen graphviz -q -y - name: Build docs run: cmake -B build -D "CMAKE_PROJECT_INCLUDE=$PWD/cmake/docs.cmake" && cmake --build build --target docs - name: Deploy docs - uses: peaceiris/actions-gh-pages@v3 + uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: build/docs/html + publish_dir: ./docs/html diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..d96825e --- /dev/null +++ b/docs/index.html @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index f63da5b..0000000 --- a/docs/index.md +++ /dev/null @@ -1,20 +0,0 @@ -# Introduction - -_vstat_ is a C++20 library of computationally efficient methods for calculating sample statistics (mean, variance, covariance, correlation), common regression metrics (\f$R^2\f$ score, MSE, MAE) and likelihoods (_Gaussian_ and _Poisson_). - -The library has the following features: - -- the implementation builds upon the SIMD abstraction layer provided by [E.V.E](https://jfalcou.github.io/eve/) (The Expressive Vector Engine) -- it uses a data-parallel version of the numerically-stable algorithm from [Edward A. Youngs and Elliot M. Cramer](https://www.jstor.org/stable/1267176?seq=1) where the results from independent data partitions are combined with the approach by [_Schubert and Gertz_](https://dl.acm.org/doi/10.1145/3221269.3223036) - -## Methodology - - - -## Bibliography - -Edward A. Youngs and Elliot M. Cramer, _Some Results Relevant to Choice of Sum and Sum-of-Product Algorithms_, Technometrics Vol. 13, No. 3 (Aug., 1971), pp. 657-665 (9 pages)\n -https://doi.org/10.2307/1267176 - -Erich Schubert and Michael Gertz, _Numerically stable parallel computation of (co-)variance_, SSDBM '18, Article No. 10, Pages 1–12\n -https://doi.org/10.1145/3221269.3223036 \ No newline at end of file