{"id":34031637,"url":"https://github.com/decile-team/submodlib","last_synced_at":"2026-04-07T04:32:04.191Z","repository":{"id":40257716,"uuid":"305581666","full_name":"decile-team/submodlib","owner":"decile-team","description":"Summarize Massive Datasets using Submodular Optimization","archived":false,"fork":false,"pushed_at":"2025-05-14T15:43:58.000Z","size":29415,"stargazers_count":120,"open_issues_count":17,"forks_count":44,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-12-15T08:47:18.815Z","etag":null,"topics":["combinatorial-optimization","data-summarization","greedy-algorithms","optimizers","submodular","submodular-functions","submodular-information-measures","submodular-optimization"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/decile-team.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-10-20T03:40:50.000Z","updated_at":"2025-11-12T14:20:06.000Z","dependencies_parsed_at":"2025-04-07T19:47:35.615Z","dependency_job_id":null,"html_url":"https://github.com/decile-team/submodlib","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/decile-team/submodlib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decile-team%2Fsubmodlib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decile-team%2Fsubmodlib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decile-team%2Fsubmodlib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decile-team%2Fsubmodlib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/decile-team","download_url":"https://codeload.github.com/decile-team/submodlib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/decile-team%2Fsubmodlib/sbom","scorecard":{"id":331445,"data":{"date":"2025-08-11","repo":{"name":"github.com/decile-team/submodlib","commit":"72ae33a1ead9761e7240c2e095873047339ada7c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"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":"Code-Review","score":1,"reason":"Found 4/23 approved changesets -- score normalized to 1","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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/python-publish.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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: cpp/utils/helper:1"],"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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE: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":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/python-publish.yml:59"],"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2022-288 / GHSA-6hrg-qmvc-2xh8","Warn: Project is vulnerable to: PYSEC-2020-73","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2019-156 / GHSA-xp76-357g-9wqq","Warn: Project is vulnerable to: PYSEC-2023-102","Warn: Project is vulnerable to: PYSEC-2023-114","Warn: Project is vulnerable to: PYSEC-2017-74"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":6,"reason":"SAST tool is not run on all commits -- score normalized to 6","details":["Warn: 9 commits out of 14 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"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/decile-team/submodlib/python-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/decile-team/submodlib/python-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/decile-team/submodlib/python-publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/python-publish.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/decile-team/submodlib/python-publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/python-publish.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/decile-team/submodlib/python-publish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: build_deploy.sh:20","Warn: pipCommand not pinned by hash: .github/workflows/python-publish.yml:36","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   1 out of   3 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"}}]},"last_synced_at":"2025-08-18T03:44:55.931Z","repository_id":40257716,"created_at":"2025-08-18T03:44:55.931Z","updated_at":"2025-08-18T03:44:55.931Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31500397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["combinatorial-optimization","data-summarization","greedy-algorithms","optimizers","submodular","submodular-functions","submodular-information-measures","submodular-optimization"],"created_at":"2025-12-13T18:22:44.167Z","updated_at":"2026-04-07T04:32:04.184Z","avatar_url":"https://github.com/decile-team.png","language":"Jupyter Notebook","readme":"\u003cp align=\"center\"\u003e\n    \u003cbr\u003e\n        \u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\u0026nbsp\n        \u003cimg src=\"https://github.com/decile-team/submodlib/blob/master/submodlib_logo.png\" width=\"500\" /\u003e\n    \u003c/br\u003e\n\u003c/p\u003e\n\n# About SubModLib\n\n*SubModLib* is an easy-to-use, efficient and scalable Python library for submodular optimization with a C++ optimization engine. *Submodlib* finds its application in summarization, data subset selection, hyper parameter tuning, efficient training etc. Through a rich API, it offers a great deal of flexibility in the way it can be used.\n\nPlease check out our latest arxiv preprint: https://arxiv.org/abs/2202.10680\n\n# Salient Features\n\n* **Rich suite of functions** for a wide variety of subset selection tasks:\n    * regular set (submodular) functions\n    * submodular mutual information functions\n    * conditional gain functions\n    * conditional mutual information functions\n* Supports **different types of optimizers** \n    * naive greedy\n    * lazy (accelerated) greedy\n    * stochastic (random) greedy\n    * lazier than lazy greedy\n* Combines the **best of Python's ease of use and C++'s efficiency**\n* **Rich API** which gives a variety of options to the user. See [this](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Different_Options_for_Usage.ipynb) notebook for an example of different usage patterns\n* De-coupled function and optimizer paradigm makes it **suitable for a wide-variety of tasks** \n* Comprehensive documentation (available [here](https://submodlib.readthedocs.io/))\n\n\n# Google Colab Notebooks Demonstrating the power of *SubModLib* and sample usage\n    \n* [Modelling capabilities of regular submodular functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_Regular_Submod_Functions.ipynb)\n* [Modelling capabilities of submodular mutual information (SMI) functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_SMI_Functions.ipynb)\n* [Modelling capabilities of conditional gain (CG) functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_CG_Functions.ipynb)\n* [Modelling capabilities of conditional mutual information (CMI) functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_CMI_Functions.ipynb)\n* [This notebook](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Quantitative_Analysis_and_Effect_of_Parameters.ipynb) contains a quantitative analysis of performance of different functions and role of the parameterization in aspects like query-coverage, query-relevance, privacy-irrelevance and diversity for different SMI, CG and CMI functions as observed on synthetically generated dataset. \n* [This notebook](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Quantitative_Analysis_on_ImageNette.ipynb) contains similar analysis on ImageNet dataset.\n* For a more detailed discussion on all possible usage patterns, please see [Different Options of Usage](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Different_Options_for_Usage.ipynb)\n\n# Setup\n\n## Alternative 1\n* `$ pip install -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ submodlib`\n\n## Alternative 2 (if local docs need to be built and test cases need to be run)\n* `$ git clone https://github.com/decile-team/submodlib.git`\n* `$ cd submodlib`\n* `$ pip install .`\n* **Latest documentation** is available at [readthedocs](https://submodlib.readthedocs.io/). However, if local documentation is required to be built, follow these steps::\n    * `$ pip install -U sphinx`\n    * `$ pip install sphinxcontrib-bibtex`\n    * `$ pip install sphinx-rtd-theme`\n    * `$ cd docs`\n    * `$ make clean html`\n* **To run the tests**, follow these steps:\n    * `$ pip install pytest`\n    * `$ pytest` # this runs ALL tests\n    * `$ pytest -m \u003cmarker\u003e --verbose --disable-warnings -rA` # this runs test specified by the \u003cmarker\u003e. Possible markers are mentioned in pyproject.toml file.\n\n# Usage\n\nIt is very easy to get started with submodlib. Using a submodular function in submodlib essentially boils down to just two steps:\n\n1. instantiate the corresponding function object\n2. invoke the desired method on the created object\n\nThe most frequently used methods are:\n1. f.evaluate() - takes a subset and returns the score of the subset as computed by the function f\n2. f.marginalGain() - takes a subset and an element and returns the marginal gain of adding the element to the subset, as computed by f\n3. f.maximize() - takes a budget and an optimizer to return an optimal set as a result of maximizing f\n\nFor example,\n```\nfrom submodlib import FacilityLocationFunction\nobjFL = FacilityLocationFunction(n=43, data=groundData, mode=\"dense\", metric=\"euclidean\")\ngreedyList = objFL.maximize(budget=10,optimizer='NaiveGreedy')\n```\n    \nFor a more detailed discussion on all possible usage patterns, please see [Different Options of Usage](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Different_Options_for_Usage.ipynb)\n\n# Functions\n\n* [Regular set (submodular) functions](https://submodlib.readthedocs.io/en/latest/functions/submodularFunctions.html) (**for vanilla subset selection** requiring representation, diversity, importance, relevance, coverage)\n    * [Facility Location](https://submodlib.readthedocs.io/en/latest/functions/facilityLocation.html)\n    * [Disparity Sum](https://submodlib.readthedocs.io/en/latest/functions/disparitySum.html)\n    * [Disparity Min](https://submodlib.readthedocs.io/en/latest/functions/disparityMin.html)\n    * [Log Determinant](https://submodlib.readthedocs.io/en/latest/functions/logDeterminant.html)\n    * [Set Cover](https://submodlib.readthedocs.io/en/latest/functions/setCover.html)\n    * [Probabilistic Set Cover](https://submodlib.readthedocs.io/en/latest/functions/probabilisticSetCover.html)\n    * [Graph Cut](https://submodlib.readthedocs.io/en/latest/functions/graphCut.html)\n    * [Feature Based](https://submodlib.readthedocs.io/en/latest/functions/featureBased.html)\n* [Submodular mutual information functions](https://submodlib.readthedocs.io/en/latest/functions/submodularMutualInformation.html) (**for query-focused subset selelction**)\n    * [Facility Location Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/facilityLocationMutualInformation.html)\n    * [Facility Location Variant Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/facilityLocationVariantMutualInformation.html)\n    * [Graph Cut Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/graphCutMutualInformation.html)\n    * [Log Determinant Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/logDeterminantMutualInformation.html)\n    * [Concave Over Modular](https://submodlib.readthedocs.io/en/latest/functions/concaveOverModular.html)\n    * [Set Cover Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/setCoverMutualInformation.html)\n    * [Probabilistc Set Cover Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/probabilisticSetCoverMutualInformation.html)\n* [Conditional gain functions](https://submodlib.readthedocs.io/en/latest/functions/conditionalGain.html) (**for query-irrelevant/privacy-preserving subset selection**)\n    * [Facility Location Conditional Gain](https://submodlib.readthedocs.io/en/latest/functions/facilityLocationConditionalGain.html)\n    * [Graph Cut Conditional Gain](https://submodlib.readthedocs.io/en/latest/functions/graphCutConditionalGain.html)\n    * [Log Determinant Conditional Gain](https://submodlib.readthedocs.io/en/latest/functions/logDeterminantConditionalGain.html)\n    * [Set Cover Conditional Gain](https://submodlib.readthedocs.io/en/latest/functions/setCoverConditionalGain.html)\n    * [Probabilistic Set Cover Conditional Gain](https://submodlib.readthedocs.io/en/latest/functions/probabilisticSetCoverConditionalGain.html)\n* [Conditional mutual information functions](https://submodlib.readthedocs.io/en/latest/functions/conditionalMutualInformation.html) (**for joint query-focused and privacy-preserving subset selection**)\n    * [Facility Location Conditional Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/facilityLocationConditionalMutualInformation.html)\n    * [Log Determinant Conditional Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/logDeterminantConditionalMutualInformation.html)\n    * [Set Cover Conditional Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/setCoverConditionalMutualInformation.html)\n    * [Probabilistic Set Cover Conditional Mutual Information](https://submodlib.readthedocs.io/en/latest/functions/probabilisticSetCoverConditionalMutualInformation.html)\n\n# Modelling Capabilities of Different Functions\n\nWe demonstrate the representational power and modeling capabilities of different functions qualitatively in the following Google Colab notebooks:\n* [Modelling capabilities of regular submodular functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_Regular_Submod_Functions.ipynb)\n* [Modelling capabilities of submodular mutual information (SMI) functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_SMI_Functions.ipynb)\n* [Modelling capabilities of conditional gain (CG) functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_CG_Functions.ipynb)\n* [Modelling capabilities of conditional mutual information (CMI) functions](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Modelling_Capabilities_of_CMI_Functions.ipynb)\n\n[This notebook](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Quantitative_Analysis_and_Effect_of_Parameters.ipynb) contains a quantitative analysis of performance of different functions and role of the parameterization in aspects like query-coverage, query-relevance, privacy-irrelevance and diversity for different SMI, CG and CMI functions as observed on synthetically generated dataset. [This notebook](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Quantitative_Analysis_on_ImageNette.ipynb) contains similar analysis on ImageNette dataset.\n\n# Optimizers \n\n* [NaiveGreedy](https://submodlib.readthedocs.io/en/latest/optimizers/naiveGreedy.html)\n* [LazyGreedy](https://submodlib.readthedocs.io/en/latest/optimizers/lazyGreedy.html)\n* [StochasticGreedy](https://submodlib.readthedocs.io/en/latest/optimizers/stochasticGreedy.html)\n* [LazierThanLazyGreedy](https://submodlib.readthedocs.io/en/latest/optimizers/lazierThanLazyGreedy.html)\n* [This notebook](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Optimizers.ipynb) demonstrates the use and comparison of different optimizers.\n\n# Sample Application (Image collection summarization)\n\n* [This notebook](https://colab.research.google.com/github/vishkaush/submodlib/blob/master/tutorials/Image_Collection_Summarization.ipynb) contains demonstration of using submodlib for an image collection summarization application.\n\n# Timing Analysis\n\nTo gauge the performance of submodlib, selection by Facility Location was performed on a randomly generated dataset of 1024-dimensional points. Specifically the following code was run for the number of data points ranging from 50 to 10000.\n\n```\nK_dense = helper.create_kernel(dataArray, mode=\"dense\", metric='euclidean', method=\"other\")\nobj = FacilityLocationFunction(n=num_samples, mode=\"dense\", sijs=K_dense, separate_rep=False,pybind_mode=\"array\")\nobj.maximize(budget=budget,optimizer=optimizer, stopIfZeroGain=False, stopIfNegativeGain=False, verbose=False, show_progress=False)\n```\n\nThe above code was timed using Python's timeit module averaged across three executions each. We report the following numbers:\n\n| Number of data points      | Time taken (in seconds) |\n| ----------- | ----------- |\n| 50 | 0.00043|\n| 100  |\t0.001074|\n| 200  |\t0.003024|\n| 500  |\t0.016555|\n| 1000  |\t0.081773|\n| 5000\t| 2.469303|\n| 6000\t| 3.563144|\n| 7000\t| 4.667065|\n| 8000\t| 6.174047|\n| 9000\t| 8.010674|\n| 10000\t| 9.417298|\n\n# Citing\n\nIf your research makes use of SUBMODLIB, please consider citing:\n\n**SUBMODLIB** ([_Submodlib: A Submodular Optimization Library_ (Kaushal et al., 2022)](https://arxiv.org/abs/2202.10680))\n```\n@article{kaushal2022submodlib,\n  title={Submodlib: A submodular optimization library},\n  author={Kaushal, Vishal and Ramakrishnan, Ganesh and Iyer, Rishabh},\n  journal={arXiv preprint arXiv:2202.10680},\n  year={2022}\n}\n\n```\n\n# Contributors\n\n* Vishal Kaushal, Ganesh Ramakrishnan and Rishabh Iyer. Currently maintained by CARAML Lab\n\n# Contact\n\nShould you face any issues or have any feedback or suggestions, please feel free to contact vishal[dot]kaushal[at]gmail.com\n\n# Acknowledgements \n\nThis work is supported by the Ekal Fellowship (www.ekal.org). This work is also supported by the National Science Foundation(NSF) under Grant Number 2106937, a startup grant from UT Dallas, as well as Google and Adobe awards.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecile-team%2Fsubmodlib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdecile-team%2Fsubmodlib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdecile-team%2Fsubmodlib/lists"}