SigProfilerExtractor 1.2.6__tar.gz → 1.4.0__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 (95) hide show
  1. sigprofilerextractor-1.4.0/.github/workflows/ci.yml +103 -0
  2. sigprofilerextractor-1.4.0/.github/workflows/create-version-tag.yml +53 -0
  3. sigprofilerextractor-1.4.0/.github/workflows/docs.yml +54 -0
  4. sigprofilerextractor-1.4.0/.github/workflows/release.yml +92 -0
  5. sigprofilerextractor-1.4.0/.github/workflows/static.yml +43 -0
  6. sigprofilerextractor-1.4.0/.gitignore +142 -0
  7. sigprofilerextractor-1.4.0/CHANGELOG.md +80 -0
  8. sigprofilerextractor-1.4.0/Dockerfile +26 -0
  9. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/LICENSE.txt +0 -0
  10. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/MANIFEST.in +1 -2
  11. {sigprofilerextractor-1.2.6/SigProfilerExtractor.egg-info → sigprofilerextractor-1.4.0}/PKG-INFO +15 -12
  12. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/README.md +11 -7
  13. sigprofilerextractor-1.4.0/SigProfilerExtractor/__init__.py +15 -0
  14. sigprofilerextractor-1.4.0/SigProfilerExtractor/_version.py +1 -0
  15. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/controllers/cli_controller.py +0 -0
  16. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/CNVInput/Battenberg_test.tsv +0 -0
  17. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/CSVInput/csv_example.csv +0 -0
  18. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/ReferenceFiles/CNV_features.tsv +0 -0
  19. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/ReferenceFiles/CN_classes_dictionary.txt +0 -0
  20. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_CNV.txt +0 -0
  21. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_DBS.txt +0 -0
  22. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_ID.txt +0 -0
  23. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_SBS.txt +0 -0
  24. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_SV.txt +0 -0
  25. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3851a.vcf +0 -0
  26. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3890a.vcf +0 -0
  27. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3904a.vcf +0 -0
  28. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3905a.vcf +0 -0
  29. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3945a.vcf +0 -0
  30. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/estimate_best_solution.py +0 -0
  31. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/nmf_cpu.py +13 -13
  32. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/nmf_gpu.py +13 -13
  33. sigprofilerextractor-1.4.0/SigProfilerExtractor/nndsvd.py +184 -0
  34. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/sigpro.py +4 -2
  35. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/sigprofilerextractor_cli.py +0 -0
  36. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/subroutines.py +37 -13
  37. sigprofilerextractor-1.4.0/SigProfilerExtractor/version.py +27 -0
  38. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0/SigProfilerExtractor.egg-info}/PKG-INFO +15 -12
  39. sigprofilerextractor-1.4.0/SigProfilerExtractor.egg-info/SOURCES.txt +88 -0
  40. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/dependency_links.txt +0 -0
  41. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/entry_points.txt +0 -0
  42. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/not-zip-safe +0 -0
  43. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/requires.txt +2 -3
  44. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/top_level.txt +0 -0
  45. sigprofilerextractor-1.4.0/docs/1. Installation.md +66 -0
  46. sigprofilerextractor-1.4.0/docs/2. Quick Start Example.md +81 -0
  47. sigprofilerextractor-1.4.0/docs/3. Using the Tool - Input.md +131 -0
  48. sigprofilerextractor-1.4.0/docs/4. Using the Tool - Output.md +94 -0
  49. sigprofilerextractor-1.4.0/docs/5. Output - All Solutions.md +93 -0
  50. sigprofilerextractor-1.4.0/docs/6. Output - Suggested Solution.md +48 -0
  51. sigprofilerextractor-1.4.0/docs/assets/images/osf/4hnaj.png +0 -0
  52. sigprofilerextractor-1.4.0/docs/assets/images/osf/5f8ep.png +0 -0
  53. sigprofilerextractor-1.4.0/docs/assets/images/osf/5tr9y.png +0 -0
  54. sigprofilerextractor-1.4.0/docs/assets/images/osf/5u7v8.png +0 -0
  55. sigprofilerextractor-1.4.0/docs/assets/images/osf/9uf4s.png +0 -0
  56. sigprofilerextractor-1.4.0/docs/assets/images/osf/a7gkf.png +0 -0
  57. sigprofilerextractor-1.4.0/docs/assets/images/osf/akef5.png +0 -0
  58. sigprofilerextractor-1.4.0/docs/assets/images/osf/c5hzf.png +0 -0
  59. sigprofilerextractor-1.4.0/docs/assets/images/osf/dahws.png +0 -0
  60. sigprofilerextractor-1.4.0/docs/assets/images/osf/h3tvx.png +0 -0
  61. sigprofilerextractor-1.4.0/docs/assets/images/osf/h796w.png +0 -0
  62. sigprofilerextractor-1.4.0/docs/assets/images/osf/kb4w2.png +0 -0
  63. sigprofilerextractor-1.4.0/docs/assets/images/osf/ku93g.png +0 -0
  64. sigprofilerextractor-1.4.0/docs/assets/images/osf/p4cfj.png +0 -0
  65. sigprofilerextractor-1.4.0/docs/assets/images/osf/r9wcm.png +0 -0
  66. sigprofilerextractor-1.4.0/docs/assets/images/osf/rz3ue.png +0 -0
  67. sigprofilerextractor-1.4.0/docs/assets/images/osf/whn8t.png +0 -0
  68. sigprofilerextractor-1.4.0/docs/assets/images/osf/xcm95.png +0 -0
  69. sigprofilerextractor-1.4.0/docs/assets/images/osf/xqzfh.png +0 -0
  70. sigprofilerextractor-1.4.0/docs/assets/images/osf/yhqnw.png +0 -0
  71. sigprofilerextractor-1.4.0/docs/assets/images/osf/z98fk.png +0 -0
  72. sigprofilerextractor-1.4.0/docs/assets/images/osf/zu6sm.png +0 -0
  73. sigprofilerextractor-1.4.0/docs/assets/stylesheets/extra.css +22 -0
  74. sigprofilerextractor-1.4.0/docs/home.md +23 -0
  75. sigprofilerextractor-1.4.0/docs/index.md +23 -0
  76. sigprofilerextractor-1.4.0/install_genome.py +12 -0
  77. sigprofilerextractor-1.4.0/mkdocs.yml +64 -0
  78. sigprofilerextractor-1.4.0/mkdocs_hooks.py +14 -0
  79. sigprofilerextractor-1.4.0/pyproject.toml +9 -0
  80. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/setup.cfg +0 -0
  81. sigprofilerextractor-1.4.0/setup.py +48 -0
  82. sigprofilerextractor-1.4.0/test.py +156 -0
  83. sigprofilerextractor-1.4.0/wikies/CLI-Usage.md +24 -0
  84. sigprofilerextractor-1.4.0/wikies/Citation.md +6 -0
  85. sigprofilerextractor-1.4.0/wikies/Home.md +11 -0
  86. sigprofilerextractor-1.4.0/wikies/Installation.md +25 -0
  87. sigprofilerextractor-1.4.0/wikies/Output.md +11 -0
  88. sigprofilerextractor-1.4.0/wikies/Python-API.md +34 -0
  89. sigprofilerextractor-1.4.0/wikies/_Sidebar.md +9 -0
  90. sigprofilerextractor-1.2.6/SigProfilerExtractor/__init__.py +0 -1
  91. sigprofilerextractor-1.2.6/SigProfilerExtractor/version.py +0 -7
  92. sigprofilerextractor-1.2.6/SigProfilerExtractor.egg-info/SOURCES.txt +0 -36
  93. sigprofilerextractor-1.2.6/pyproject.toml +0 -3
  94. sigprofilerextractor-1.2.6/setup.py +0 -114
  95. {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/MatObjInput/21_breast_WGS_substitutions.mat +0 -0
@@ -0,0 +1,103 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ branches:
9
+ - master
10
+
11
+ jobs:
12
+ test:
13
+ name: Test (${{ matrix.python-version }}, pandas ${{ matrix.pandas-version }})
14
+ runs-on: ubuntu-latest
15
+ continue-on-error: ${{ matrix.experimental }}
16
+ permissions:
17
+ contents: read
18
+ packages: write
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ include:
23
+ - python-version: '3.10'
24
+ pandas-version: '2.2.3'
25
+ experimental: false
26
+ - python-version: '3.12'
27
+ pandas-version: '2.2.3'
28
+ experimental: false
29
+ - python-version: '3.12'
30
+ pandas-version: '3.0.2'
31
+ experimental: false
32
+ - python-version: '3.14'
33
+ pandas-version: '3.0.2'
34
+ experimental: true
35
+
36
+ steps:
37
+ - uses: actions/checkout@v6
38
+
39
+ - name: Set up Python ${{ matrix.python-version }}
40
+ uses: actions/setup-python@v6
41
+ with:
42
+ python-version: ${{ matrix.python-version }}
43
+
44
+ - name: Upgrade pip, setuptools, and packaging
45
+ run: |
46
+ python -m pip install --upgrade pip setuptools packaging
47
+
48
+ - name: Pin pandas ${{ matrix.pandas-version }}
49
+ run: |
50
+ python -m pip install --upgrade "pandas==${{ matrix.pandas-version }}"
51
+
52
+ - name: Cache src directory
53
+ uses: actions/cache@v5
54
+ with:
55
+ path: ./src/
56
+ key: ${{ runner.os }}-src-grch37
57
+ restore-keys: |
58
+ ${{ runner.os }}-src-
59
+
60
+ - name: Download GRCh37.tar.gz if not present
61
+ run: |
62
+ if [ ! -f ./src/GRCh37.tar.gz ]; then
63
+ wget --connect-timeout=10 --tries=20 ftp://alexandrovlab-ftp.ucsd.edu/pub/tools/SigProfilerMatrixGenerator/GRCh37.tar.gz -P ./src/
64
+ fi
65
+
66
+ - name: Install package
67
+ run: |
68
+ pip install .
69
+
70
+ - name: Install genome
71
+ run: |
72
+ python install_genome.py ${{ github.workspace }}/src/
73
+
74
+ - name: Run tests
75
+ run: |
76
+ python3 test.py
77
+
78
+ - name: Build and push Docker image
79
+ if: github.ref == 'refs/heads/master' && github.event_name == 'push' && matrix.python-version == '3.12' && matrix.pandas-version == '3.0.2'
80
+ run: |
81
+ echo "Starting Docker deployment to GHCR for sigprofilersuite..."
82
+
83
+ python -m pip install --upgrade setuptools_scm
84
+ VERSION_TAG=$(python -m setuptools_scm)
85
+ VERSION_TAG=${VERSION_TAG//+/-}
86
+
87
+ # Get the repository name and convert it to lowercase
88
+ REPO_NAME=$(basename ${{ github.repository }} | tr '[:upper:]' '[:lower:]')
89
+ IMAGE_NAME="ghcr.io/sigprofilersuite/$REPO_NAME"
90
+
91
+ echo "Building version: $VERSION_TAG for image: $IMAGE_NAME"
92
+
93
+ echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
94
+
95
+ docker build \
96
+ --build-arg COMMIT_SHA=${{ github.sha }} \
97
+ -t $IMAGE_NAME:$VERSION_TAG \
98
+ -t $IMAGE_NAME:latest .
99
+
100
+ docker push $IMAGE_NAME:$VERSION_TAG
101
+ docker push $IMAGE_NAME:latest
102
+
103
+ echo "Docker deployment to GHCR successful"
@@ -0,0 +1,53 @@
1
+ name: Create version tag
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: "Version without leading v, for example x.y.z"
8
+ required: true
9
+ type: string
10
+ target_branch:
11
+ description: "Branch to tag"
12
+ required: true
13
+ default: "master"
14
+ type: string
15
+
16
+ permissions:
17
+ contents: write
18
+
19
+ jobs:
20
+ tag:
21
+ runs-on: ubuntu-latest
22
+ steps:
23
+ - name: Validate version
24
+ run: |
25
+ if ! [[ "${{ inputs.version }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
26
+ echo "Version must look like x.y.z"
27
+ exit 1
28
+ fi
29
+
30
+ - uses: actions/checkout@v6
31
+ with:
32
+ ref: ${{ inputs.target_branch }}
33
+ fetch-depth: 0
34
+
35
+ - name: Create and push tag
36
+ run: |
37
+ tag="v${{ inputs.version }}"
38
+
39
+ if git rev-parse "$tag" >/dev/null 2>&1; then
40
+ echo "Tag $tag already exists locally"
41
+ exit 1
42
+ fi
43
+
44
+ if git ls-remote --tags origin "$tag" | grep -q "$tag"; then
45
+ echo "Tag $tag already exists on origin"
46
+ exit 1
47
+ fi
48
+
49
+ git config user.name "github-actions[bot]"
50
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
51
+
52
+ git tag -a "$tag" -m "SigProfilerExtractor $tag"
53
+ git push origin "$tag"
@@ -0,0 +1,54 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+ pages: write
12
+ id-token: write
13
+
14
+ concurrency:
15
+ group: github-pages
16
+ cancel-in-progress: true
17
+
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+
24
+ - uses: actions/setup-python@v5
25
+ with:
26
+ python-version: "3.x"
27
+
28
+ - name: Configure Pages
29
+ uses: actions/configure-pages@v5
30
+
31
+ - name: Install docs dependencies
32
+ run: |
33
+ python -m pip install --upgrade pip
34
+ python -m pip install mkdocs mkdocs-material pymdown-extensions
35
+
36
+ - name: Build site
37
+ run: |
38
+ mkdocs build --clean
39
+
40
+ - name: Upload Pages artifact
41
+ uses: actions/upload-pages-artifact@v3
42
+ with:
43
+ path: site
44
+
45
+ deploy:
46
+ runs-on: ubuntu-latest
47
+ needs: build
48
+ environment:
49
+ name: github-pages
50
+ url: ${{ steps.deployment.outputs.page_url }}
51
+ steps:
52
+ - id: deployment
53
+ uses: actions/deploy-pages@v4
54
+
@@ -0,0 +1,92 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ release:
8
+ types:
9
+ - published
10
+ workflow_dispatch:
11
+
12
+ jobs:
13
+ build:
14
+ name: Build distributions
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read
18
+ steps:
19
+ - uses: actions/checkout@v6
20
+ with:
21
+ fetch-depth: 0
22
+
23
+ - name: Set up Python 3.12
24
+ uses: actions/setup-python@v6
25
+ with:
26
+ python-version: "3.12"
27
+
28
+ - name: Install build tooling
29
+ run: |
30
+ python -m pip install --upgrade pip build twine
31
+
32
+ - name: Build distributions
33
+ run: |
34
+ python -m build
35
+
36
+ - name: Check distributions
37
+ run: |
38
+ python -m twine check dist/*
39
+
40
+ - name: Verify package version
41
+ run: |
42
+ python -m pip install dist/*.whl
43
+ python -c "import SigProfilerExtractor; print(SigProfilerExtractor.__version__)"
44
+
45
+ - name: Upload distributions
46
+ uses: actions/upload-artifact@v7
47
+ with:
48
+ name: python-package-distributions
49
+ path: dist/
50
+ if-no-files-found: error
51
+
52
+ publish-testpypi:
53
+ name: Publish to TestPyPI
54
+ needs: build
55
+ if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
56
+ runs-on: ubuntu-latest
57
+ environment:
58
+ name: testpypi
59
+ url: https://test.pypi.org/p/SigProfilerExtractor
60
+ permissions:
61
+ id-token: write
62
+ steps:
63
+ - name: Download distributions
64
+ uses: actions/download-artifact@v5
65
+ with:
66
+ name: python-package-distributions
67
+ path: dist/
68
+
69
+ - name: Publish package distributions to TestPyPI
70
+ uses: pypa/gh-action-pypi-publish@release/v1
71
+ with:
72
+ repository-url: https://test.pypi.org/legacy/
73
+
74
+ publish-pypi:
75
+ name: Publish to PyPI
76
+ needs: build
77
+ if: github.event_name == 'release' && github.event.action == 'published'
78
+ runs-on: ubuntu-latest
79
+ environment:
80
+ name: pypi
81
+ url: https://pypi.org/p/SigProfilerExtractor
82
+ permissions:
83
+ id-token: write
84
+ steps:
85
+ - name: Download distributions
86
+ uses: actions/download-artifact@v5
87
+ with:
88
+ name: python-package-distributions
89
+ path: dist/
90
+
91
+ - name: Publish package distributions to PyPI
92
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,43 @@
1
+ # Simple workflow for deploying static content to GitHub Pages
2
+ name: Deploy static content to Pages
3
+
4
+ on:
5
+ # Runs on pushes targeting the default branch
6
+ push:
7
+ branches: ["master"]
8
+
9
+ # Allows you to run this workflow manually from the Actions tab
10
+ workflow_dispatch:
11
+
12
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
13
+ permissions:
14
+ contents: read
15
+ pages: write
16
+ id-token: write
17
+
18
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
19
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
20
+ concurrency:
21
+ group: "pages"
22
+ cancel-in-progress: false
23
+
24
+ jobs:
25
+ # Single deploy job since we're just deploying
26
+ deploy:
27
+ environment:
28
+ name: github-pages
29
+ url: ${{ steps.deployment.outputs.page_url }}
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - name: Checkout
33
+ uses: actions/checkout@v4
34
+ - name: Setup Pages
35
+ uses: actions/configure-pages@v5
36
+ - name: Upload artifact
37
+ uses: actions/upload-pages-artifact@v3
38
+ with:
39
+ # Upload entire repository
40
+ path: '.'
41
+ - name: Deploy to GitHub Pages
42
+ id: deployment
43
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,142 @@
1
+ .DS_Store
2
+ # Byte-compiled / optimized / DLL files
3
+ __pycache__/
4
+ *.py[cod]
5
+ *$py.class
6
+
7
+ # C extensions
8
+ *.so
9
+
10
+ # Distribution / packaging
11
+ .Python
12
+ build/
13
+ develop-eggs/
14
+ dist/
15
+ downloads/
16
+ eggs/
17
+ .eggs/
18
+ lib/
19
+ lib64/
20
+ parts/
21
+ sdist/
22
+ var/
23
+ wheels/
24
+ pip-wheel-metadata/
25
+ share/python-wheels/
26
+ *.egg-info/
27
+ .installed.cfg
28
+ *.egg
29
+ MANIFEST
30
+ SigProfilerExtractor/_version.py
31
+
32
+ # PyInstaller
33
+ # Usually these files are written by a python script from a template
34
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
35
+ *.manifest
36
+ *.spec
37
+
38
+ # Installer logs
39
+ pip-log.txt
40
+ pip-delete-this-directory.txt
41
+
42
+ # Unit test / coverage reports
43
+ htmlcov/
44
+ .tox/
45
+ .nox/
46
+ .coverage
47
+ .coverage.*
48
+ .cache
49
+ nosetests.xml
50
+ coverage.xml
51
+ *.cover
52
+ *.py,cover
53
+ .hypothesis/
54
+ .pytest_cache/
55
+
56
+ # Translations
57
+ *.mo
58
+ *.pot
59
+
60
+ # Django stuff:
61
+ *.log
62
+ local_settings.py
63
+ db.sqlite3
64
+ db.sqlite3-journal
65
+
66
+ # Flask stuff:
67
+ instance/
68
+ .webassets-cache
69
+
70
+ # Scrapy stuff:
71
+ .scrapy
72
+
73
+ # Sphinx documentation
74
+ docs/_build/
75
+
76
+ # PyBuilder
77
+ target/
78
+
79
+ # Jupyter Notebook
80
+ .ipynb_checkpoints
81
+
82
+ # IPython
83
+ profile_default/
84
+ ipython_config.py
85
+
86
+ # pyenv
87
+ .python-version
88
+
89
+ # pipenv
90
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
91
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
92
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
93
+ # install all needed dependencies.
94
+ #Pipfile.lock
95
+
96
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
97
+ __pypackages__/
98
+
99
+ # Celery stuff
100
+ celerybeat-schedule
101
+ celerybeat.pid
102
+
103
+ # SageMath parsed files
104
+ *.sage.py
105
+
106
+ # Environments
107
+ .env
108
+ .venv
109
+ env/
110
+ venv/
111
+ ENV/
112
+ env.bak/
113
+ venv.bak/
114
+
115
+ # Spyder project settings
116
+ .spyderproject
117
+ .spyproject
118
+
119
+ # Rope project settings
120
+ .ropeproject
121
+
122
+ # mkdocs documentation
123
+ /site
124
+
125
+ # mypy
126
+ .mypy_cache/
127
+ .dmypy.json
128
+ dmypy.json
129
+
130
+ # Pyre type checker
131
+ .pyre/
132
+
133
+ # test script output
134
+ test_csv_output/
135
+ test_matobj_output/
136
+ test_segCNV_output/
137
+ test_text_output/
138
+ test_vcf_output/
139
+ test_matrix_*_output/
140
+ SigProfilerExtractor/data/VCFInput/logs/
141
+ SigProfilerExtractor/data/VCFInput/input/
142
+ SigProfilerExtractor/data/VCFInput/output/
@@ -0,0 +1,80 @@
1
+
2
+ # Changelog
3
+
4
+ All notable changes to this project will be documented in this file.
5
+
6
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.2.7] - 2026-01-22
11
+
12
+ ### Fixed
13
+ - Fixed NumPy 2.0 compatibility issue by removing the `nimfa` dependency, which was incompatible with NumPy 2.0 due to use of deprecated `np.mat()` function.
14
+ - Fixed pandas 3.12 compatibility issues:
15
+ - Updated `to_csv()` calls to use `sep` as keyword argument instead of positional argument
16
+ - Fixed `set_index()` calls to work with pandas 3.12's stricter type checking by converting StringArray to list
17
+ - Fixed `iloc` assignment for string conversion operations
18
+ - Fixed Series indexing to use `.iloc[0]` for positional access instead of `[0]` for label-based access
19
+ - Fixed compatibility issues in SigProfilerAssignment and SigProfilerPlotting packages for pandas 3.12
20
+
21
+ ### Changed
22
+ - Removed `nimfa` dependency and implemented NNDSVD initialization directly in the codebase.
23
+ - Updated `sigProfilerPlotting` dependency to >=1.4.3 for pandas 3.12 compatibility.
24
+ - Removed TMB debug file output.
25
+ - Migrated CI/CD pipeline from Travis CI to GitHub Actions for improved reliability and modern workflow management.
26
+
27
+ ### Added
28
+ - Added `SigProfilerExtractor/nndsvd.py` with standalone NNDSVD implementation supporting all variants (nndsvd, nndsvda, nndsvdar, nndsvd_min).
29
+
30
+ ## [1.2.6] - 2026-01-06
31
+
32
+ ### Changed
33
+ - Updated default COSMIC version from 3.4 to 3.5. Added support for COSMIC v3.5 signatures in the `cosmic_version` parameter.
34
+ - Updated SigProfilerAssignment dependency requirement from >=1.0.1 to >=1.1.0 to support COSMIC v3.5 signatures.
35
+
36
+ ## [1.2.5] - 2025-10-28
37
+
38
+ ### Added
39
+ - Implemented a CI/CD pipeline with Travis CI to automate the building and publishing of Docker images to Docker Hub.
40
+ - Added a Dockerfile to the repository for containerization. Documentation on how to use the Dockerfile needs to be added to the README.
41
+
42
+ ## [1.2.4] - 2025-10-20
43
+
44
+ ### Added
45
+ - Added the `assignment_cpu` parameter to independently control the number of CPU cores used for the signature assignment step. This change enables full support for the parallel processing enhancements in **SigProfilerAssignment v1.0.0**, allowing for significant performance improvements and more granular resource control.
46
+
47
+ ## [1.2.3] - 2025-09-19
48
+
49
+ ### Added
50
+ - Added support for rn7 and mm39 genomes in SigProfilerExtractor.
51
+
52
+ ## [1.2.2] - 2025-08-11
53
+
54
+ ### Added
55
+ - Added mutation count and stability to 4608 plots in All_Solutions
56
+ - Add a stop parameter to the CLI to stop after de novo extraction.
57
+
58
+ ## [1.2.1] - 2025-05-14
59
+
60
+ ### Fixed
61
+ - Fixed an issue where the CLI was returning a non-zero exit code when the `--help` flag was passed.
62
+
63
+ ### Added
64
+ - Added `pyproject.toml` for modern Python packaging support.
65
+
66
+ ## [1.2.0] - 2025-02-11
67
+
68
+ ### Changed
69
+ - Updated dependencies: Now requires **Pandas >= 2.0.0**, **NumPy >= 2.0.0**, and **Python >= 3.9**.
70
+ - Dropped support for **Python 3.8**
71
+ - **Intel-based MacBooks are no longer supported** due to upstream changes in **PyTorch**, which has dropped support for macOS x86_64. Users with Intel-based MacBooks will need to migrate to Apple Silicon (M1/M2) or use a Linux-based development environment.
72
+
73
+ ## [1.1.25] - 2024-12-09
74
+
75
+ ### Added
76
+ - Introduced a Command-Line Interface (CLI) for SigProfilerExtractor, enabling users to interact with the tool via terminal commands.
77
+
78
+ ### Updated
79
+ - Improved the formatting of the parameter table for sigProfilerExtractor function for better readability and consistency.
80
+ - The CI/CD badge link has been fixed.
@@ -0,0 +1,26 @@
1
+ # CUDA-enabled base image for GPU support
2
+ FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu22.04
3
+
4
+ ARG DEBIAN_FRONTEND=noninteractive
5
+ ARG COMMIT_SHA=master
6
+
7
+ # Install Python + minimal deps
8
+ RUN apt-get update && apt-get install -y \
9
+ python3-pip python3-dev git && \
10
+ apt-get clean && rm -rf /var/lib/apt/lists/*
11
+
12
+ WORKDIR /usr/src/app
13
+
14
+ # Install GPU-enabled PyTorch wheels
15
+ RUN pip3 install --no-cache-dir \
16
+ torch torchvision torchaudio \
17
+ --extra-index-url https://download.pytorch.org/whl/cu118
18
+
19
+ # Install SigProfilerExtractor from specific commit
20
+ RUN pip3 install --no-cache-dir \
21
+ 'git+https://github.com/SigProfilerSuite/SigProfilerExtractor.git@'${COMMIT_SHA}
22
+
23
+ # Create a non-root user
24
+ RUN useradd -m -s /bin/bash spm_user
25
+ RUN chown -R spm_user:spm_user /usr/src/app
26
+ USER spm_user
@@ -4,5 +4,4 @@ include SigProfilerExtractor/data/CNVInput/*
4
4
  include SigProfilerExtractor/data/CSVInput/*
5
5
  include SigProfilerExtractor/data/MatObjInput/*
6
6
  include SigProfilerExtractor/data/ReferenceFiles/*
7
- include SigProfilerExtractor/controllers/*
8
-
7
+ include SigProfilerExtractor/controllers/*
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SigProfilerExtractor
3
- Version: 1.2.6
3
+ Version: 1.4.0
4
4
  Summary: Extracts mutational signatures from mutational catalogues
5
- Home-page: https://github.com/AlexandrovLab/SigProfilerExtractor.git
5
+ Home-page: https://github.com/SigProfilerSuite/SigProfilerExtractor.git
6
6
  Author: S Mishu Ashiqul Islam
7
7
  Author-email: m0islam@ucsd.edu
8
8
  License: UCSD
@@ -13,10 +13,9 @@ Requires-Dist: scipy>=1.6.3
13
13
  Requires-Dist: torch>=1.8.1
14
14
  Requires-Dist: numpy>=2.0.0
15
15
  Requires-Dist: pandas>=2.0.0
16
- Requires-Dist: nimfa>=1.1.0
17
- Requires-Dist: sigProfilerPlotting>=1.4.1
16
+ Requires-Dist: sigProfilerPlotting>=1.4.3
18
17
  Requires-Dist: SigProfilerMatrixGenerator>=1.3.5
19
- Requires-Dist: SigProfilerAssignment>=1.1.0
18
+ Requires-Dist: SigProfilerAssignment>=1.1.3
20
19
  Requires-Dist: statsmodels>=0.9.0
21
20
  Requires-Dist: scikit-learn>=0.24.2
22
21
  Requires-Dist: psutil>=5.6.1
@@ -31,15 +30,19 @@ Dynamic: requires-dist
31
30
  Dynamic: requires-python
32
31
  Dynamic: summary
33
32
 
34
- [![Docs](https://img.shields.io/badge/docs-latest-blue.svg)](https://osf.io/t6j7u/wiki/home/)
33
+ [![Docs](https://img.shields.io/badge/docs-latest-blue.svg)](https://sigprofilersuite.github.io/SigProfilerExtractor/)
35
34
  [![License](https://img.shields.io/badge/License-BSD\%202--Clause-orange.svg)](https://opensource.org/licenses/BSD-2-Clause)
36
- [![Build Status](https://app.travis-ci.com/AlexandrovLab/SigProfilerExtractor.svg?branch=master)](https://app.travis-ci.com/AlexandrovLab/SigProfilerExtractor)
35
+ [![CI](https://github.com/SigProfilerSuite/SigProfilerExtractor/actions/workflows/ci.yml/badge.svg)](https://github.com/SigProfilerSuite/SigProfilerExtractor/actions/workflows/ci.yml)
37
36
 
38
37
  # SigProfilerExtractor
39
38
  SigProfilerExtractor allows de novo extraction of mutational signatures from data generated in a matrix format.
40
39
  The tool identifies the number of operative mutational signatures, their activities in each sample, and the probability
41
40
  for each signature to cause a specific mutation type in a cancer sample. The tool makes use of SigProfilerMatrixGenerator
42
- and SigProfilerPlotting. Detailed documentation can be found at: https://osf.io/t6j7u/wiki/home/
41
+ and SigProfilerPlotting.
42
+
43
+ ## Documentation
44
+
45
+ Full documentation is available in `docs/` (rendered via MkDocs): https://sigprofilersuite.github.io/SigProfilerExtractor/
43
46
 
44
47
  # Table of contents
45
48
  - [Installation](#installation)
@@ -126,7 +129,7 @@ sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37",
126
129
  | Category | Parameter | Variable Type | Parameter Description |
127
130
  | --------- | --------------------- | -------- |-------- |
128
131
  | **Input Data** | | | |
129
- | | **input_type** | String | The type of input:<br><ul><li>`"vcf"`: used for vcf format inputs.</li><li>`"matrix"`: used for table format inputs using a tab separated file.</li><li>`"bedpe"`: used for bedpe files with each SV annotated with its type, size bin, and clustered/non-clustered status. Please check the required format at https://github.com/AlexandrovLab/SigProfilerMatrixGenerator#structural-variant-matrix-generation.</li><li>`"seg:TYPE"`: used for a multi-sample segmentation file for copy number analysis. Please check the required format at https://github.com/AlexandrovLab/SigProfilerMatrixGenerator#copy-number-matrix-generation. The accepted callers for TYPE are the following {"ASCAT", "ASCAT_NGS", "SEQUENZA", "ABSOLUTE", "BATTENBERG", "FACETS", "PURPLE", "TCGA"}. For example, when using segmentation file from BATTENBERG then set input_type to "seg:BATTENBERG".</li></ul> |
132
+ | | **input_type** | String | The type of input:<br><ul><li>`"vcf"`: used for vcf format inputs.</li><li>`"matrix"`: used for table format inputs using a tab separated file.</li><li>`"bedpe"`: used for bedpe files with each SV annotated with its type, size bin, and clustered/non-clustered status. Please check the required format at https://github.com/SigProfilerSuite/SigProfilerMatrixGenerator#structural-variant-matrix-generation.</li><li>`"seg:TYPE"`: used for a multi-sample segmentation file for copy number analysis. Please check the required format at https://github.com/SigProfilerSuite/SigProfilerMatrixGenerator#copy-number-matrix-generation. The accepted callers for TYPE are the following {"ASCAT", "ASCAT_NGS", "SEQUENZA", "ABSOLUTE", "BATTENBERG", "FACETS", "PURPLE", "TCGA"}. For example, when using segmentation file from BATTENBERG then set input_type to "seg:BATTENBERG".</li></ul> |
130
133
  | | **output** | String | The name of the output folder. The output folder will be generated in the current working directory. |
131
134
  | | **input_data** | String | <br>Path to input folder for input_type:<ul><li>`vcf`</li><li>`bedpe`</li></ul>Path to file for input_type:<ul><li>`matrix`</li><li>`seg:TYPE`</li></ul> |
132
135
  | | **reference_genome** | String | The name of the reference genome (default: `"GRCh37"`). This parameter is applicable only if the `input_type` is `"vcf"`. |
@@ -194,7 +197,7 @@ if __name__=="__main__":
194
197
  ```
195
198
 
196
199
  #### sigProfilerExtractor Output
197
- To learn about the output, please visit https://osf.io/t6j7u/wiki/home/
200
+ To learn about the output, see `docs/output.md`.
198
201
 
199
202
 
200
203
  ### <a name="estimate_solution"></a> Estimation of the Optimum Solution
@@ -251,7 +254,7 @@ The files below will be generated in the output folder:
251
254
 
252
255
  ### <a name="decompose"></a> Decompose
253
256
 
254
- For decomposition of de novo signatures please use [SigProfilerAssignment](https://github.com/AlexandrovLab/SigProfilerAssignment)
257
+ For decomposition of de novo signatures please use [SigProfilerAssignment](https://github.com/SigProfilerSuite/SigProfilerAssignment)
255
258
 
256
259
  ### <a name="plotActivity"></a> Activity Stacked Bar Plot
257
260
  Generates a stacked bar plot showing activities in individuals
@@ -290,7 +293,7 @@ Take a look at our video tutorials for step-by-step instructions on how to insta
290
293
 
291
294
  If CUDA out of memory exceptions occur, it will be necessary to reduce the number of CPU processes used (the `cpu` parameter).
292
295
 
293
- #### For more information, help, and examples, please visit: https://osf.io/t6j7u/wiki/home/
296
+ #### For more information, help, and examples, please start at `docs/index.md`.
294
297
 
295
298
  ## <a name="citation"></a> Citation
296
299
  Islam SMA, Díaz-Gay M, Wu Y, Barnes M, Vangara R, Bergstrom EN, He Y, Vella M, Wang J, Teague JW, Clapham P, Moody S, Senkin S, Li YR, Riva L, Zhang T, Gruber AJ, Steele CD, Otlu B, Khandekar A, Abbasi A, Humphreys L, Syulyukina N, Brady SW, Alexandrov BS, Pillay N, Zhang J, Adams DJ, Martincorena I, Wedge DC, Landi MT, Brennan P, Stratton MR, Rozen SG, and Alexandrov LB (2022) Uncovering novel mutational signatures by _de novo_ extraction with SigProfilerExtractor. __Cell Genomics__. doi: [10.1016/j.xgen.2022.100179](https://doi.org/10.1016/j.xgen.2022.100179).