bblean 0.6.0b1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. bblean-0.6.0b1/.cruft.json +20 -0
  2. bblean-0.6.0b1/.flake8 +11 -0
  3. bblean-0.6.0b1/.github/CODEOWNERS +1 -0
  4. bblean-0.6.0b1/.github/workflows/ci-cpp.yaml +63 -0
  5. bblean-0.6.0b1/.github/workflows/ci.yaml +155 -0
  6. bblean-0.6.0b1/.github/workflows/upload-to-pypi.yaml +134 -0
  7. bblean-0.6.0b1/.gitignore +95 -0
  8. bblean-0.6.0b1/.pre-commit-config.yaml +71 -0
  9. bblean-0.6.0b1/LICENSE +48 -0
  10. bblean-0.6.0b1/LICENSES/BSD-3-Clause.txt +29 -0
  11. bblean-0.6.0b1/LICENSES/GPL-3.0-only.txt +674 -0
  12. bblean-0.6.0b1/PKG-INFO +283 -0
  13. bblean-0.6.0b1/README.md +240 -0
  14. bblean-0.6.0b1/bblean/__init__.py +22 -0
  15. bblean-0.6.0b1/bblean/_config.py +61 -0
  16. bblean-0.6.0b1/bblean/_console.py +187 -0
  17. bblean-0.6.0b1/bblean/_legacy/__init__.py +0 -0
  18. bblean-0.6.0b1/bblean/_legacy/bb_int64.py +1252 -0
  19. bblean-0.6.0b1/bblean/_legacy/bb_uint8.py +1144 -0
  20. bblean-0.6.0b1/bblean/_memory.py +198 -0
  21. bblean-0.6.0b1/bblean/_merges.py +212 -0
  22. bblean-0.6.0b1/bblean/_py_similarity.py +278 -0
  23. bblean-0.6.0b1/bblean/_timer.py +42 -0
  24. bblean-0.6.0b1/bblean/_version.py +34 -0
  25. bblean-0.6.0b1/bblean/analysis.py +258 -0
  26. bblean-0.6.0b1/bblean/bitbirch.py +1437 -0
  27. bblean-0.6.0b1/bblean/cli.py +1854 -0
  28. bblean-0.6.0b1/bblean/csrc/README.md +1 -0
  29. bblean-0.6.0b1/bblean/csrc/similarity.cpp +521 -0
  30. bblean-0.6.0b1/bblean/fingerprints.py +424 -0
  31. bblean-0.6.0b1/bblean/metrics.py +199 -0
  32. bblean-0.6.0b1/bblean/multiround.py +489 -0
  33. bblean-0.6.0b1/bblean/plotting.py +479 -0
  34. bblean-0.6.0b1/bblean/similarity.py +304 -0
  35. bblean-0.6.0b1/bblean/sklearn.py +203 -0
  36. bblean-0.6.0b1/bblean/smiles.py +61 -0
  37. bblean-0.6.0b1/bblean/utils.py +130 -0
  38. bblean-0.6.0b1/bblean-demo-v2.gif +0 -0
  39. bblean-0.6.0b1/bblean-demo.cast +179 -0
  40. bblean-0.6.0b1/bblean.egg-info/PKG-INFO +283 -0
  41. bblean-0.6.0b1/bblean.egg-info/SOURCES.txt +90 -0
  42. bblean-0.6.0b1/bblean.egg-info/dependency_links.txt +1 -0
  43. bblean-0.6.0b1/bblean.egg-info/entry_points.txt +2 -0
  44. bblean-0.6.0b1/bblean.egg-info/requires.txt +14 -0
  45. bblean-0.6.0b1/bblean.egg-info/top_level.txt +1 -0
  46. bblean-0.6.0b1/docs/src/_static/api.svg +1 -0
  47. bblean-0.6.0b1/docs/src/_static/installing.svg +1 -0
  48. bblean-0.6.0b1/docs/src/_static/logo-dark-bw.svg +1338 -0
  49. bblean-0.6.0b1/docs/src/_static/logo-light-bw.svg +1338 -0
  50. bblean-0.6.0b1/docs/src/_static/publications.svg +1 -0
  51. bblean-0.6.0b1/docs/src/_static/style.css +29 -0
  52. bblean-0.6.0b1/docs/src/_static/user-guide.svg +2 -0
  53. bblean-0.6.0b1/docs/src/_templates/module.rst +66 -0
  54. bblean-0.6.0b1/docs/src/api-reference.rst +20 -0
  55. bblean-0.6.0b1/docs/src/conf.py +128 -0
  56. bblean-0.6.0b1/docs/src/index.rst +105 -0
  57. bblean-0.6.0b1/docs/src/installing.rst +40 -0
  58. bblean-0.6.0b1/docs/src/publications.rst +28 -0
  59. bblean-0.6.0b1/docs/src/user-guide/linux_memory_setup.rst +113 -0
  60. bblean-0.6.0b1/docs/src/user-guide/notebooks/bitbirch_best_practices.ipynb +526 -0
  61. bblean-0.6.0b1/docs/src/user-guide/notebooks/bitbirch_quickstart.ipynb +525 -0
  62. bblean-0.6.0b1/docs/src/user-guide/parameters.rst +101 -0
  63. bblean-0.6.0b1/docs/src/user-guide.rst +16 -0
  64. bblean-0.6.0b1/environment.yaml +59 -0
  65. bblean-0.6.0b1/examples/biogen_logS.csv +2174 -0
  66. bblean-0.6.0b1/examples/bitbirch_best_practices.ipynb +526 -0
  67. bblean-0.6.0b1/examples/bitbirch_quickstart.ipynb +525 -0
  68. bblean-0.6.0b1/examples/chembl-33-natural-products-subset.smi +64086 -0
  69. bblean-0.6.0b1/examples/dataset_splitting.ipynb +1214 -0
  70. bblean-0.6.0b1/pyproject.toml +86 -0
  71. bblean-0.6.0b1/setup.cfg +4 -0
  72. bblean-0.6.0b1/setup.py +66 -0
  73. bblean-0.6.0b1/tests/chembl-sample-3k.smi +3000 -0
  74. bblean-0.6.0b1/tests/chembl-sample-bad.smi +3000 -0
  75. bblean-0.6.0b1/tests/legacy_merges.py +66 -0
  76. bblean-0.6.0b1/tests/legacy_metrics.py +250 -0
  77. bblean-0.6.0b1/tests/test_bb_consistency.py +151 -0
  78. bblean-0.6.0b1/tests/test_cli.py +449 -0
  79. bblean-0.6.0b1/tests/test_fake_fps.py +30 -0
  80. bblean-0.6.0b1/tests/test_fingerprints.py +95 -0
  81. bblean-0.6.0b1/tests/test_global_clustering.py +61 -0
  82. bblean-0.6.0b1/tests/test_import_bblean.py +2 -0
  83. bblean-0.6.0b1/tests/test_merges.py +209 -0
  84. bblean-0.6.0b1/tests/test_metrics.py +47 -0
  85. bblean-0.6.0b1/tests/test_multiround.py +201 -0
  86. bblean-0.6.0b1/tests/test_refine.py +221 -0
  87. bblean-0.6.0b1/tests/test_regression.py +101 -0
  88. bblean-0.6.0b1/tests/test_sampling.py +2640 -0
  89. bblean-0.6.0b1/tests/test_similarity.py +284 -0
  90. bblean-0.6.0b1/tests/test_simple.py +39 -0
  91. bblean-0.6.0b1/tests/test_sklearn.py +163 -0
  92. bblean-0.6.0b1/tests/test_utils.py +17 -0
@@ -0,0 +1,20 @@
1
+ {
2
+ "template": "git@github.com:IgnacioJPickering/cookiecutter-pycargo",
3
+ "commit": "5d9ffa2461db9a78fcbab0194efefb7000d85d4e",
4
+ "checkout": null,
5
+ "context": {
6
+ "cookiecutter": {
7
+ "access": "private",
8
+ "repo_name": "bbtools",
9
+ "package_name": "bbtools",
10
+ "command": "bbtools",
11
+ "author_name": "Ignacio Pickering",
12
+ "author_git_profile": "IgnacioJPickering",
13
+ "author_email": "ign.pickering@gmail.com",
14
+ "python_version_minor": "10",
15
+ "_template": "git@github.com:IgnacioJPickering/cookiecutter-pycargo",
16
+ "_commit": "5d9ffa2461db9a78fcbab0194efefb7000d85d4e"
17
+ }
18
+ },
19
+ "directory": null
20
+ }
bblean-0.6.0b1/.flake8 ADDED
@@ -0,0 +1,11 @@
1
+ [flake8]
2
+ ignore = W503,E203,E731
3
+ max-line-length = 88
4
+ exclude =
5
+ .git,
6
+ __pycache__,
7
+ build,
8
+ .eggs,
9
+ bblean.egg-info,
10
+ bblean/_legacy/*.py,
11
+ docs,
@@ -0,0 +1 @@
1
+ * @IgnacioJPickering
@@ -0,0 +1,63 @@
1
+ name: ci-cpp
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches:
8
+ - main
9
+ schedule:
10
+ - cron: '0 0 * * *'
11
+
12
+ env:
13
+ PYTHON_VERSION: '3.11'
14
+
15
+ jobs:
16
+ cpp-tests:
17
+ strategy:
18
+ matrix:
19
+ os: [ubuntu-latest, macos-latest]
20
+ runs-on: ${{ matrix.os }}
21
+ steps:
22
+ - name: checkout-repo
23
+ uses: actions/checkout@v5
24
+
25
+ - name: setup-python
26
+ uses: actions/setup-python@v6
27
+ with:
28
+ python-version: ${{ env.PYTHON_VERSION }}
29
+
30
+ - name: install-repo
31
+ run: |
32
+ python -m pip install --upgrade pip
33
+ pip install pytest pytest-subtests inline-snapshot
34
+ BITBIRCH_BUILD_NATIVE=1 BITBIRCH_BUILD_CPP=1 pip install --verbose .
35
+
36
+ - name: run-pytest
37
+ run: BITBIRCH_CANT_SKIP_CPP_TESTS=1 pytest -s ./tests/test_similarity.py
38
+
39
+
40
+ # Ubuntu 24.04 for reproducibility in regression tests only
41
+ # coverage makes tests slightly slower, so regression tests should not run with
42
+ # coverage
43
+ # skip these for pushes to main since they are slower
44
+ cpp-regression-tests:
45
+ runs-on: ubuntu-24.04
46
+ if: github.ref != 'refs/heads/main'
47
+ steps:
48
+ - name: checkout-repo
49
+ uses: actions/checkout@v5
50
+
51
+ - name: setup-python
52
+ uses: actions/setup-python@v6
53
+ with:
54
+ python-version: ${{ env.PYTHON_VERSION }}
55
+
56
+ - name: install-repo
57
+ run: |
58
+ python -m pip install --upgrade pip
59
+ pip install pytest pytest-subtests inline-snapshot
60
+ BITBIRCH_BUILD_NATIVE=1 BITBIRCH_BUILD_CPP=1 pip install --verbose .
61
+
62
+ - name: run-pytest
63
+ run: BITBIRCH_CANT_SKIP_CPP_TESTS=1 pytest -s ./tests/test_regression.py
@@ -0,0 +1,155 @@
1
+ name: ci
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ pull_request:
6
+ push:
7
+ branches:
8
+ - main
9
+ schedule:
10
+ - cron: '0 0 * * *'
11
+
12
+ env:
13
+ PYTHON_VERSION: '3.11'
14
+
15
+ jobs:
16
+ flake8:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - name: checkout-repo
20
+ uses: actions/checkout@v5
21
+
22
+ - name: setup-python
23
+ uses: actions/setup-python@v6
24
+ with:
25
+ python-version: ${{ env.PYTHON_VERSION }}
26
+
27
+ - name: install-deps
28
+ run: |
29
+ python -m pip install --upgrade pip
30
+ pip install flake8
31
+
32
+ - name: run-flake8
33
+ run: flake8 .
34
+
35
+ tests:
36
+ strategy:
37
+ matrix:
38
+ os: [ubuntu-latest, macos-latest, windows-latest]
39
+ runs-on: ${{ matrix.os }}
40
+ steps:
41
+ - name: checkout-repo
42
+ uses: actions/checkout@v5
43
+
44
+ - name: setup-python
45
+ uses: actions/setup-python@v6
46
+ with:
47
+ python-version: ${{ env.PYTHON_VERSION }}
48
+
49
+ - name: install-repo-and-test-deps
50
+ run: |
51
+ python -m pip install --upgrade pip
52
+ pip install pytest pytest-subtests pytest-cov coverage inline-snapshot
53
+ pip install --verbose --editable .
54
+
55
+ - name: run-pytest
56
+ run: |
57
+ pytest --cov=bblean --cov-report=json -s -k 'not regression' ./tests
58
+ coverage report
59
+
60
+ - name: upload-badge-artifact
61
+ if: ${{ runner.os == 'Linux' }}
62
+ uses: actions/upload-artifact@v4
63
+ with:
64
+ name: coverage-report
65
+ path: coverage.json
66
+
67
+ docs:
68
+ runs-on: ubuntu-latest
69
+ steps:
70
+ - name: checkout-repo
71
+ uses: actions/checkout@v5
72
+
73
+ - name: setup-python
74
+ uses: actions/setup-python@v6
75
+ with:
76
+ python-version: ${{ env.PYTHON_VERSION }}
77
+
78
+ - name: install-repo-and-docs-deps
79
+ run: |
80
+ sudo apt-get install -y pandoc
81
+ python -m pip install --upgrade pip
82
+ pip install sphinx sphinx-design pydata-sphinx-theme nbsphinx
83
+ pip install --verbose --editable .
84
+
85
+ - name: build-docs
86
+ run: BITBIRCH_NO_EXTENSIONS=1 sphinx-build docs/src docs/build
87
+
88
+ - name: upload-docs-artifact
89
+ uses: actions/upload-artifact@v4
90
+ with:
91
+ name: docs
92
+ path: docs/build
93
+
94
+ upload-docs-and-badges-to-gh-pages:
95
+ runs-on: ubuntu-latest
96
+ needs: [tests, docs]
97
+ if: github.ref == 'refs/heads/main'
98
+ permissions:
99
+ contents: write
100
+ steps:
101
+ - name: create-site-dirs
102
+ run: |
103
+ mkdir -p site/coverage
104
+ mkdir -p site/devdocs
105
+ mkdir -p site/docs/stable
106
+
107
+ # TODO: releases to docs/stable
108
+ - name: fetch-docs
109
+ uses: actions/download-artifact@v4
110
+ with:
111
+ name: docs
112
+ path: './site/devdocs'
113
+
114
+ - name: fetch-coverage-report
115
+ uses: actions/download-artifact@v4
116
+ with:
117
+ name: coverage-report
118
+ path: ./site/coverage/
119
+
120
+ - name: generate-coverage-badge
121
+ run: |
122
+ COVERAGE=$(jq -r '.totals.percent_covered_display' site/coverage/coverage.json)
123
+ echo "{\"schemaVersion\":1,\"label\":\"coverage\",\"message\":\"${COVERAGE}%\",\"color\":\"green\"}" > site/coverage/coverage-badge.json
124
+
125
+ - name: deploy-to-gh-pages
126
+ uses: peaceiris/actions-gh-pages@v4
127
+ with:
128
+ github_token: ${{ secrets.GITHUB_TOKEN }}
129
+ publish_dir: ./site
130
+ publish_branch: gh-pages
131
+
132
+ # Ubuntu 24.04 for reproducibility in regression tests only
133
+ # coverage makes tests slightly slower, so regression tests should not run with
134
+ # coverage
135
+ # skip these for pushes to main since they are slower
136
+ regression-tests:
137
+ runs-on: ubuntu-24.04
138
+ if: github.ref != 'refs/heads/main'
139
+ steps:
140
+ - name: checkout-repo
141
+ uses: actions/checkout@v5
142
+
143
+ - name: setup-python
144
+ uses: actions/setup-python@v6
145
+ with:
146
+ python-version: ${{ env.PYTHON_VERSION }}
147
+
148
+ - name: install-repo
149
+ run: |
150
+ python -m pip install --upgrade pip
151
+ pip install pytest pytest-subtests inline-snapshot
152
+ pip install --verbose .
153
+
154
+ - name: run-pytest
155
+ run: pytest -s ./tests/test_regression.py
@@ -0,0 +1,134 @@
1
+ name: upload-to-pypi
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: Force version
8
+ upload-pypi:
9
+ description: Upload to pypi
10
+ required: false
11
+ default: false
12
+ type: boolean
13
+ upload-testpypi:
14
+ description: Upload to test-pypi
15
+ required: false
16
+ default: false
17
+ type: boolean
18
+
19
+ env:
20
+ PYTHON_VERSION: '3.11'
21
+ SETUPTOOLS_SCM_PRETEND_VERSION: ${{ github.event.inputs.version }}
22
+ # cibuildwheel configuration:
23
+ # Skip py 3.14, 32 bit and musllinux (Alpine) wheels
24
+ CIBW_SKIP: "cp314-* cp314t-* *-manylinux_i686 *-win32 *-musllinux_*"
25
+ CIBW_TEST_REQUIRES: pytest pytest-subtests inline-snapshot
26
+ CIBW_TEST_COMMAND: pytest -k 'not regression' {project}/tests
27
+ CIBW_PRERELEASE_PYTHONS: False
28
+ CIBW_ENVIRONMENT: "SETUPTOOLS_SCM_PRETEND_VERSION=${{ github.event.inputs.version }} BITBIRCH_BUILD_CPP=1"
29
+ # Build wheels that support both aarch64 and x86_64 on macOS
30
+ CIBW_ARCHS_MACOS: "universal2"
31
+ CIBW_BUILD_VERBOSITY: 3
32
+
33
+ jobs:
34
+ make_sdist:
35
+ name: make-source-distribution
36
+ runs-on: ubuntu-latest
37
+ steps:
38
+ - name: checkout-repo
39
+ uses: actions/checkout@v5
40
+ with:
41
+ persist-credentials: false
42
+
43
+ - name: setup-python
44
+ uses: actions/setup-python@v6
45
+ with:
46
+ python-version: ${{ env.PYTHON_VERSION }}
47
+
48
+ - name: install-sdist-deps
49
+ run: |
50
+ python -m pip install --upgrade pip
51
+ pip install build twine
52
+
53
+ - name: build-sdist
54
+ run: python -m build --sdist
55
+ - uses: actions/upload-artifact@v4
56
+ with:
57
+ name: cibw-sdist
58
+ path: dist/*.tar.gz
59
+
60
+ - name: validate-sdist-metadata
61
+ run: twine check dist/*
62
+
63
+ build_wheels:
64
+ strategy:
65
+ matrix:
66
+ os: [ubuntu-latest, macos-latest]
67
+ name: build-${{ matrix.os }}-wheels
68
+ runs-on: ${{ matrix.os }}
69
+ steps:
70
+ - name: checkout-repo
71
+ uses: actions/checkout@v5
72
+ with:
73
+ persist-credentials: false
74
+
75
+ - name: setup-python
76
+ uses: actions/setup-python@v6
77
+ with:
78
+ python-version: ${{ env.PYTHON_VERSION }}
79
+
80
+ - name: install-wheel-deps
81
+ run: |
82
+ python -m pip install --upgrade pip
83
+ pip install cibuildwheel
84
+
85
+ - name: build-wheels
86
+ run: python -m cibuildwheel --output-dir wheelhouse
87
+
88
+ - uses: actions/upload-artifact@v4
89
+ with:
90
+ name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
91
+ path: wheelhouse/*.whl
92
+
93
+ publish_to_testpypi:
94
+ needs: [build_wheels, make_sdist]
95
+ runs-on: ubuntu-latest
96
+ if: ${{ github.event.inputs.upload-testpypi == 'true' }}
97
+ environment:
98
+ name: testpypi
99
+ url: https://test.pypi.org/p/bblean
100
+ permissions:
101
+ id-token: write
102
+
103
+ steps:
104
+ - uses: actions/download-artifact@v5
105
+ with:
106
+ pattern: cibw-*
107
+ path: dist
108
+ merge-multiple: true
109
+ - name: publish
110
+ uses: pypa/gh-action-pypi-publish@release/v1
111
+ with:
112
+ verbose: true
113
+ repository-url: https://test.pypi.org/legacy/
114
+
115
+ publish_to_pypi:
116
+ needs: [build_wheels, make_sdist]
117
+ runs-on: ubuntu-latest
118
+ if: ${{ github.event.inputs.upload-pypi == 'true' }}
119
+ environment:
120
+ name: pypi
121
+ url: https://pypi.org/p/bblean
122
+ permissions:
123
+ id-token: write
124
+
125
+ steps:
126
+ - uses: actions/download-artifact@v5
127
+ with:
128
+ pattern: cibw-*
129
+ path: dist
130
+ merge-multiple: true
131
+ - name: publish
132
+ uses: pypa/gh-action-pypi-publish@release/v1
133
+ with:
134
+ verbose: true
@@ -0,0 +1,95 @@
1
+ # Byte-compiled / optimized
2
+ __pycache__/
3
+ *.py[cod]
4
+
5
+ # Setuptools-scm file
6
+ _version.py
7
+
8
+ # C extensions and binaries
9
+ *.so
10
+ *.o
11
+
12
+ # Compressed files
13
+ *.tar
14
+ *.tar.gz
15
+ *.zip
16
+
17
+ # Distribution / packaging
18
+ build/
19
+ dist/
20
+ sdist/
21
+ eggs/
22
+ .eggs/
23
+ *.egg-info/
24
+ *.egg
25
+ wheels/
26
+ wheelhouse/
27
+ share/python-wheels/
28
+
29
+ # Coverage
30
+ htmlcov/
31
+ .coverage
32
+ .coverage.*
33
+ coverage.xml
34
+ coverage.json
35
+ .hypothesis
36
+ .pytest_cache/
37
+
38
+ # Sphinx documentation
39
+ docs/build
40
+ docs/src/_api_autogen/
41
+
42
+ # Mypy
43
+ .mypy_cache/
44
+ .dmypy.json
45
+ dmypy.json
46
+
47
+ # Vim swap files
48
+ *.swo
49
+ *.swp
50
+
51
+ # nohup
52
+ nohup.out
53
+
54
+ # vscode
55
+ .vscode
56
+
57
+ # language server
58
+ .ccls-cache
59
+
60
+ # memray memory profile files
61
+ *.bin
62
+ *-flamegraph-memray.html
63
+
64
+ # py-spy profile files
65
+ profile.svg
66
+ profile_output*
67
+
68
+ # Outputs / inputs
69
+ *.npy
70
+ monitor-rss*.csv
71
+ peak-rss*.json
72
+ cluster-mol-ids*.json
73
+ config*.json
74
+ timings*.json
75
+ max-rss.txt
76
+
77
+ # Pickle
78
+ *.pkl
79
+ *.pickle
80
+
81
+ # Shell and python scripts
82
+ *.script.sh
83
+ *.script.bash
84
+ *.script.py
85
+ script.py
86
+ script.sh
87
+
88
+ # Jupyter checkpoints
89
+ .ipynb_checkpoints/
90
+
91
+ # Outputs from examples
92
+ examples/*.png
93
+ examples/*.csv
94
+ !examples/biogen_logS.csv
95
+ *.pdf
@@ -0,0 +1,71 @@
1
+ # Configuration file that stores all hooks that pre-commit runs
2
+ repos:
3
+ - repo: https://github.com/pre-commit/pre-commit-hooks
4
+ rev: v4.6.0
5
+ hooks:
6
+ - id: no-commit-to-branch # disallow commiting to master / main directly
7
+ args: ['--branch', 'main', '--branch', 'master']
8
+ stages: [pre-commit]
9
+ - id: check-yaml # check yaml files for parsable syntax
10
+ stages: [pre-push]
11
+ - id: check-toml # checks toml files for parsable syntax
12
+ stages: [pre-push]
13
+ - id: check-json # checks json files for parsable syntax
14
+ stages: [pre-push]
15
+ - id: check-added-large-files # prevent large files from commit
16
+ stages: [pre-push]
17
+ - id: check-merge-conflict # checks for merge conflict strings
18
+ stages: [pre-push]
19
+ - id: debug-statements # checks for "breakpoint()" and debugger imports
20
+ stages: [pre-push]
21
+
22
+ - repo: https://github.com/psf/black
23
+ rev: 24.3.0
24
+ hooks:
25
+ - id: black
26
+ files: \.py$
27
+ stages: [pre-push]
28
+
29
+ - repo: https://github.com/PyCQA/flake8
30
+ rev: 7.0.0
31
+ hooks:
32
+ - id: flake8
33
+ stages: [pre-push]
34
+
35
+ - repo: https://github.com/PyCQA/autoflake
36
+ rev: v2.3.1
37
+ hooks:
38
+ - id: autoflake
39
+ files: \.py$
40
+ exclude: bblean/bitbirch\.py$|bblean/_legacy/bb_uint8\.py$|bblean/_legacy/bb_int64\.py$
41
+ stages: [pre-push]
42
+
43
+ - repo: local
44
+ hooks:
45
+ - id: mypy
46
+ name: mypy
47
+ entry: "mypy --ignore-missing ."
48
+ # Don't generate a venv for the exe
49
+ language: system
50
+ types: [python]
51
+ # Pass no files but run regardless
52
+ files: $^
53
+ always_run: true
54
+ # Print output on success
55
+ verbose: true
56
+ stages: [pre-push]
57
+
58
+ - repo: local
59
+ hooks:
60
+ - id: pytest
61
+ name: pytest
62
+ entry: "pytest ./tests -k 'not regression and not tsne'"
63
+ # Don't generate a venv for the exe
64
+ language: system
65
+ types: [python]
66
+ # Pass no files but run regardless
67
+ files: $^
68
+ always_run: true
69
+ # Print output on success
70
+ verbose: true
71
+ stages: [pre-push]
bblean-0.6.0b1/LICENSE ADDED
@@ -0,0 +1,48 @@
1
+ BitBIRCH-Lean Python Package: An open-source clustering module based on iSIM.
2
+
3
+ If you find this software useful please cite the following articles:
4
+ - BitBIRCH: efficient clustering of large molecular libraries:
5
+ https://doi.org/10.1039/D5DD00030K
6
+ - BitBIRCH Clustering Refinement Strategies:
7
+ https://doi.org/10.1021/acs.jcim.5c00627
8
+ - BitBIRCH-Lean:
9
+ (preprint) https://www.biorxiv.org/content/10.1101/2025.10.22.684015v1
10
+
11
+ Copyright (C) 2025 The Miranda-Quintana Lab and other BitBirch developers, comprised
12
+ exclusively by:
13
+ - Ramon Alain Miranda Quintana <ramirandaq@gmail.com>, <quintana@chem.ufl.edu>
14
+ - Krisztina Zsigmond <kzsigmond@ufl.edu>
15
+ - Ignacio Pickering <ipickering@chem.ufl.edu>
16
+ - Kenneth Lopez Perez <klopezperez@chem.ufl.edu>
17
+ - Miroslav Lzicar <miroslav.lzicar@deepmedchem.com>
18
+
19
+ Authors of ./bblean/multiround.py are:
20
+ - Ramon Alain Miranda Quintana <ramirandaq@gmail.com>, <quintana@chem.ufl.edu>
21
+ - Ignacio Pickering <ipickering@chem.ufl.edu>
22
+
23
+ This program is free software: you can redistribute it and/or modify it under the
24
+ terms of the GNU General Public License as published by the Free Software Foundation,
25
+ version 3 (SPDX-License-Identifier: GPL-3.0-only).
26
+
27
+ Portions of the file ./bblean/bitbirch.py are licensed under the BSD 3-Clause License
28
+ Copyright (c) 2007-2024 The scikit-learn developers. All rights reserved.
29
+ (SPDX-License-Identifier: BSD-3-Clause). Copies or reproductions of code in the
30
+ ./bblean/bitbirch.py file must in addition adhere to the BSD-3-Clause license terms. A
31
+ copy of the BSD-3-Clause license can be located at the root of this repository, under
32
+ ./LICENSES/BSD-3-Clause.txt.
33
+
34
+ Portions of the file ./bblean/bitbirch.py were previously licensed under the LGPL 3.0
35
+ license (SPDX-License-Identifier: LGPL-3.0-only), they are relicensed in this program
36
+ as GPL-3.0, with permission of all original copyright holders:
37
+ - Ramon Alain Miranda Quintana <ramirandaq@gmail.com>, <quintana@chem.ufl.edu>
38
+ - Vicky (Vic) Jung <jungvicky@ufl.edu>
39
+ - Kenneth Lopez Perez <klopezperez@chem.ufl.edu>
40
+ - Kate Huddleston <kdavis2@chem.ufl.edu>
41
+
42
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY
43
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
44
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
45
+
46
+ You should have received a copy of the GNU General Public License along with this
47
+ program. This copy can be located at the root of this repository, under
48
+ ./LICENSES/GPL-3.0-only.txt. If not, see <http://www.gnu.org/licenses/gpl-3.0.html>.
@@ -0,0 +1,29 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2007-2024 The scikit-learn developers.
4
+ All rights reserved.
5
+
6
+ Redistribution and use in source and binary forms, with or without
7
+ modification, are permitted provided that the following conditions are met:
8
+
9
+ * Redistributions of source code must retain the above copyright notice, this
10
+ list of conditions and the following disclaimer.
11
+
12
+ * Redistributions in binary form must reproduce the above copyright notice,
13
+ this list of conditions and the following disclaimer in the documentation
14
+ and/or other materials provided with the distribution.
15
+
16
+ * Neither the name of the copyright holder nor the names of its
17
+ contributors may be used to endorse or promote products derived from
18
+ this software without specific prior written permission.
19
+
20
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.