{"id":17665771,"url":"https://github.com/mkoeppe/cutgeneratingfunctionology","last_synced_at":"2025-09-18T16:39:53.539Z","repository":{"id":19349278,"uuid":"22588581","full_name":"mkoeppe/cutgeneratingfunctionology","owner":"mkoeppe","description":"Python code for computation and experimentation with cut-generating functions, in particular the Gomory-Johnson infinite group problem. By M. Köppe, Y. Zhou, C.Y. Hong, J. Wang with contributions by undergrad programmers","archived":false,"fork":false,"pushed_at":"2024-12-23T07:10:02.000Z","size":82369,"stargazers_count":12,"open_issues_count":69,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-10T23:42:40.930Z","etag":null,"topics":["cutting-planes","integer-programming","mixed-integer-programming","python","sagemath"],"latest_commit_sha":null,"homepage":"","language":"Sage","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mkoeppe.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-08-04T01:48:33.000Z","updated_at":"2024-12-23T07:09:59.000Z","dependencies_parsed_at":"2023-02-15T11:16:00.286Z","dependency_job_id":"8d5d41c4-b4fd-4ea7-97b2-35f7ac9dd9cb","html_url":"https://github.com/mkoeppe/cutgeneratingfunctionology","commit_stats":{"total_commits":2295,"total_committers":7,"mean_commits":"327.85714285714283","dds":0.4187363834422658,"last_synced_commit":"df3d37ef52af2a9d1c36a7599b9c5e26f46235b1"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/mkoeppe/cutgeneratingfunctionology","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkoeppe%2Fcutgeneratingfunctionology","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkoeppe%2Fcutgeneratingfunctionology/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkoeppe%2Fcutgeneratingfunctionology/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkoeppe%2Fcutgeneratingfunctionology/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mkoeppe","download_url":"https://codeload.github.com/mkoeppe/cutgeneratingfunctionology/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mkoeppe%2Fcutgeneratingfunctionology/sbom","scorecard":{"id":652742,"data":{"date":"2025-08-11","repo":{"name":"github.com/mkoeppe/cutgeneratingfunctionology","commit":"eb06d86c676a0f3e1eedc8188e3351526fa3d9fb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/CI-check-bib.yml:1","Warn: no topLevel permission defined: .github/workflows/pythonpublish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/CI-check-bib.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/mkoeppe/cutgeneratingfunctionology/CI-check-bib.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/mkoeppe/cutgeneratingfunctionology/pythonpublish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pythonpublish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/mkoeppe/cutgeneratingfunctionology/pythonpublish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:20","Warn: pipCommand not pinned by hash: .github/workflows/pythonpublish.yml:21","Info:   0 out of   3 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: COPYING:0","Info: FSF or OSI recognized license: GNU General Public License v2.0: COPYING:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T13:53:07.340Z","repository_id":19349278,"created_at":"2025-08-21T13:53:07.340Z","updated_at":"2025-08-21T13:53:07.340Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275797682,"owners_count":25530253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cutting-planes","integer-programming","mixed-integer-programming","python","sagemath"],"created_at":"2024-10-23T21:07:38.995Z","updated_at":"2025-09-18T16:39:53.503Z","avatar_url":"https://github.com/mkoeppe.png","language":"Sage","readme":".. image:: http://mkoeppe.github.io/cutgeneratingfunctionology/graphics-nonfree/Z11_058_github_template.jpg\n   :width:  100%\n   :target: https://github.com/mkoeppe/cutgeneratingfunctionology\n   :alt:    mkoeppe/cutgeneratingfunctionology: Python code for computation and experimentation with cut-generating functions\n\nMost of the code is for the 1-dimensional Gomory-Johnson infinite\ngroup problem, including an electronic compendium of extreme\nfunctions.\n\nSee http://www.sagemath.org/doc/tutorial/ for information on how to\nuse Sage.\n\n.. badges\n\n.. image:: https://img.shields.io/travis/mkoeppe/cutgeneratingfunctionology\n   :alt: Travis CI\n   :target: https://travis-ci.org/mkoeppe/cutgeneratingfunctionology/\n\n.. image:: https://img.shields.io/pypi/l/cutgeneratingfunctionology\n   :alt: License: GNU General Public License, version 2, or any later version as published by the Free Software Foundation.\n   :target: https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/COPYING\n\n.. image:: https://img.shields.io/pypi/v/cutgeneratingfunctionology\n   :alt: PyPI package\n   :target: https://pypi.org/project/cutgeneratingfunctionology/\n\n.. image:: https://mybinder.org/badge_logo.svg\n   :alt: Run it on mybinder.org\n   :target: https://mybinder.org/v2/gh/mkoeppe/cutgeneratingfunctionology/master?filepath=demo.ipynb\n\n.. image:: https://img.shields.io/github/last-commit/mkoeppe/cutgeneratingfunctionology/gh-pages?label=sphinx%20doc%20built\n   :alt: Sphinx documentation built\n   :target: http://mkoeppe.github.io/cutgeneratingfunctionology/doc/html/\n\n.. image:: https://img.shields.io/twitter/url?style=social\u0026url=https%3A%2F%2Fgithub.com%2Fmkoeppe%2Fcutgeneratingfunctionology\n   :alt: Twitter\n   :target: https://twitter.com/intent/tweet?text=%23cutgeneratingfunctionology:\u0026url=https%3A%2F%2Fgithub.com%2Fmkoeppe%2Fcutgeneratingfunctionology\n\n.. add later: https://img.shields.io/pypi/pyversions/cutgeneratingfunctionology\n\nAuthors\n-------\n\nSee https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/AUTHORS.rst and also https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/THANKS.rst\n\nLicense\n-------\n\nThe code is released under the GNU General Public License, version 2,\nor any later version as published by the Free Software Foundation. \n\nDocumentation\n-------------\n\nhttp://mkoeppe.github.io/cutgeneratingfunctionology/doc/html/\n\nUsing the cutgeneratingfunctionology package\n--------------------------------------------\n.. how_to_run\n\nThere are many ways to run this package.\n\nA. Run it online on mybinder.org\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. image:: https://mybinder.org/badge_logo.svg\n           :target: https://mybinder.org/v2/gh/mkoeppe/cutgeneratingfunctionology/master?filepath=demo.ipynb\n\nB. Install released version from PyPI and run it within conda\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n.. image:: https://img.shields.io/pypi/v/cutgeneratingfunctionology\n   :alt: PyPI package\n   :target: https://pypi.org/project/cutgeneratingfunctionology/\n\n- Install Miniconda from https://docs.conda.io/en/latest/miniconda.html\n\n- Set up the conda environment described in https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/environment.yml::\n\n    e=environment.yml; curl -o $e https://raw.githubusercontent.com/mkoeppe/cutgeneratingfunctionology/master/$e\n    conda env create -n sage-cgf -f $e\n    conda activate sage-cgf\n\n  This takes a while; it installs SageMath, which has many dependencies.\n\n- Install PyPI package::\n\n    pip install cutgeneratingfunctionology\n\n- Start Sage.  You can either use the terminal (IPython)::\n\n    sage\n\n  or a Jupyter notebook::\n\n    sage -n jupyter\n\n- At the Sage prompt, type::\n\n    import cutgeneratingfunctionology.igp as igp; from cutgeneratingfunctionology.igp import *\n\n- Follow the instructions and examples in https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.rst or https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.ipynb .\n\n\nC.  Clone from GitHub and run it within conda\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Install Miniconda from https://docs.conda.io/en/latest/miniconda.html\n\n- Clone the GitHub repository https://github.com/mkoeppe/cutgeneratingfunctionology.git::\n\n    git clone https://github.com/mkoeppe/cutgeneratingfunctionology.git\n    cd cutgeneratingfunctionology\n\n- Set up the conda environment described in https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/environment.yml::\n\n    conda env create -n sage-cgf -f environment.yml\n    conda activate sage-cgf\n\n  This takes a while; it installs SageMath which has many dependencies.\n\n- (Optional:) Install the cutgeneratingfunctionology package using pip::\n\n    pip install .\n\n- Start Sage.  You can either use the terminal (IPython)::\n\n    sage\n\n  or a Jupyter notebook::\n\n    sage -n jupyter\n\n- At the Sage prompt, type::\n\n    import cutgeneratingfunctionology.igp as igp; from cutgeneratingfunctionology.igp import *\n\n- Follow the instructions and examples in https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.rst or https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.ipynb .\n\n\nD.  Run in a standalone installation of the SageMath distribution (no conda)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Install the SageMath distribution:\n\n   a) Either from source from http://www.sagemath.org/\n\n   b) or with a binary from http://www.sagemath.org/\n\n  The SageMath distribution brings its own installation of Python and many packages.\n\n- Clone the GitHub repository https://github.com/mkoeppe/cutgeneratingfunctionology.git::\n\n    git clone https://github.com/mkoeppe/cutgeneratingfunctionology.git\n    cd cutgeneratingfunctionology\n\n- (Optional:) Install optional SageMath distribution packages::\n\n    sage -i lrslib pynormaliz\n\n- Install the cutgeneratingfunctionology package using pip::\n\n    sage -pip install .\n\n- Start SageMath.  You can either use the terminal (IPython)::\n\n    sage\n\n  or a Jupyter notebook::\n\n    sage -n jupyter\n\n- At the Sage prompt, type::\n\n    import cutgeneratingfunctionology.igp as igp; from cutgeneratingfunctionology.igp import *\n\n- Follow the instructions and examples in https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.rst or https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.ipynb .\n\n\nE.  Run in Python (no installation of SageMath required)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThis method uses the modularized distributions from https://github.com/passagemath\n\n- Clone the GitHub repository https://github.com/mkoeppe/cutgeneratingfunctionology.git::\n\n    git clone https://github.com/mkoeppe/cutgeneratingfunctionology.git\n    cd cutgeneratingfunctionology\n\n- (Optional:) Create a virtual environment\n\n    python3 -m venv venv-cgf\n    . venv-cgf/bin/activate\n\n- Install the cutgeneratingfunctionology package using pip::\n\n    pip install \".[passagemath]\"\n\n- Start Python::\n\n    python3\n\n- At the Python prompt, type::\n\n    import cutgeneratingfunctionology.igp as igp; from cutgeneratingfunctionology.igp import *\n\n- Follow the instructions and examples in https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.rst or https://github.com/mkoeppe/cutgeneratingfunctionology/blob/master/demo.ipynb .\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkoeppe%2Fcutgeneratingfunctionology","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmkoeppe%2Fcutgeneratingfunctionology","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmkoeppe%2Fcutgeneratingfunctionology/lists"}