SigProfilerExtractor 1.4.0__tar.gz → 1.4.1__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 (94) hide show
  1. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/.github/workflows/ci.yml +5 -1
  2. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/.github/workflows/create-version-tag.yml +0 -0
  3. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/.github/workflows/docs.yml +0 -0
  4. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/.github/workflows/release.yml +0 -0
  5. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/.github/workflows/static.yml +0 -0
  6. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/.gitignore +0 -0
  7. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/CHANGELOG.md +4 -0
  8. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/Dockerfile +3 -0
  9. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/LICENSE.txt +0 -0
  10. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/MANIFEST.in +0 -0
  11. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/PKG-INFO +4 -4
  12. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/README.md +2 -2
  13. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/__init__.py +0 -0
  14. sigprofilerextractor-1.4.1/SigProfilerExtractor/_version.py +1 -0
  15. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/controllers/cli_controller.py +6 -2
  16. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/CNVInput/Battenberg_test.tsv +0 -0
  17. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/CSVInput/csv_example.csv +0 -0
  18. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/ReferenceFiles/CNV_features.tsv +0 -0
  19. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/ReferenceFiles/CN_classes_dictionary.txt +0 -0
  20. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/TextInput/Samples_CNV.txt +0 -0
  21. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/TextInput/Samples_DBS.txt +0 -0
  22. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/TextInput/Samples_ID.txt +0 -0
  23. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/TextInput/Samples_SBS.txt +0 -0
  24. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/TextInput/Samples_SV.txt +0 -0
  25. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/VCFInput/PD3851a.vcf +0 -0
  26. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/VCFInput/PD3890a.vcf +0 -0
  27. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/VCFInput/PD3904a.vcf +0 -0
  28. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/VCFInput/PD3905a.vcf +0 -0
  29. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/VCFInput/PD3945a.vcf +0 -0
  30. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/estimate_best_solution.py +0 -0
  31. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/nmf_cpu.py +0 -0
  32. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/nmf_gpu.py +0 -0
  33. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/nndsvd.py +0 -0
  34. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/sigpro.py +6 -1
  35. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/sigprofilerextractor_cli.py +0 -0
  36. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/subroutines.py +0 -0
  37. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/version.py +0 -0
  38. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor.egg-info/PKG-INFO +4 -4
  39. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor.egg-info/SOURCES.txt +3 -0
  40. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor.egg-info/dependency_links.txt +0 -0
  41. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor.egg-info/entry_points.txt +0 -0
  42. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor.egg-info/not-zip-safe +0 -0
  43. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor.egg-info/requires.txt +1 -1
  44. sigprofilerextractor-1.4.1/SigProfilerExtractor.egg-info/scm_file_list.json +85 -0
  45. sigprofilerextractor-1.4.1/SigProfilerExtractor.egg-info/scm_version.json +8 -0
  46. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor.egg-info/top_level.txt +0 -0
  47. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/1. Installation.md +0 -0
  48. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/2. Quick Start Example.md +0 -0
  49. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/3. Using the Tool - Input.md +1 -1
  50. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/4. Using the Tool - Output.md +0 -0
  51. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/5. Output - All Solutions.md +0 -0
  52. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/6. Output - Suggested Solution.md +0 -0
  53. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/4hnaj.png +0 -0
  54. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/5f8ep.png +0 -0
  55. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/5tr9y.png +0 -0
  56. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/5u7v8.png +0 -0
  57. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/9uf4s.png +0 -0
  58. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/a7gkf.png +0 -0
  59. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/akef5.png +0 -0
  60. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/c5hzf.png +0 -0
  61. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/dahws.png +0 -0
  62. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/h3tvx.png +0 -0
  63. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/h796w.png +0 -0
  64. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/kb4w2.png +0 -0
  65. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/ku93g.png +0 -0
  66. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/p4cfj.png +0 -0
  67. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/r9wcm.png +0 -0
  68. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/rz3ue.png +0 -0
  69. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/whn8t.png +0 -0
  70. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/xcm95.png +0 -0
  71. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/xqzfh.png +0 -0
  72. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/yhqnw.png +0 -0
  73. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/z98fk.png +0 -0
  74. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/images/osf/zu6sm.png +0 -0
  75. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/assets/stylesheets/extra.css +0 -0
  76. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/home.md +0 -0
  77. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/docs/index.md +0 -0
  78. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/install_genome.py +0 -0
  79. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/mkdocs.yml +0 -0
  80. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/mkdocs_hooks.py +0 -0
  81. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/pyproject.toml +0 -0
  82. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/setup.cfg +0 -0
  83. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/setup.py +1 -1
  84. sigprofilerextractor-1.4.1/tests/test_cosmic_version.py +112 -0
  85. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/wikies/CLI-Usage.md +0 -0
  86. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/wikies/Citation.md +0 -0
  87. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/wikies/Home.md +0 -0
  88. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/wikies/Installation.md +0 -0
  89. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/wikies/Output.md +0 -0
  90. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/wikies/Python-API.md +0 -0
  91. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/wikies/_Sidebar.md +0 -0
  92. sigprofilerextractor-1.4.0/SigProfilerExtractor/_version.py +0 -1
  93. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/SigProfilerExtractor/data/MatObjInput/21_breast_WGS_substitutions.mat +0 -0
  94. {sigprofilerextractor-1.4.0 → sigprofilerextractor-1.4.1}/test.py +0 -0
@@ -70,7 +70,11 @@ jobs:
70
70
  - name: Install genome
71
71
  run: |
72
72
  python install_genome.py ${{ github.workspace }}/src/
73
-
73
+
74
+ - name: Run unit tests
75
+ run: |
76
+ python -m unittest discover -s tests -v
77
+
74
78
  - name: Run tests
75
79
  run: |
76
80
  python3 test.py
@@ -7,6 +7,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ### Changed
11
+ - Updated the default COSMIC reference signature version from 3.5 to 3.6.
12
+ - Updated the minimum SigProfilerAssignment version to 1.1.5 for COSMIC v3.6 support.
13
+
10
14
  ## [1.2.7] - 2026-01-22
11
15
 
12
16
  ### Fixed
@@ -9,6 +9,9 @@ RUN apt-get update && apt-get install -y \
9
9
  python3-pip python3-dev git && \
10
10
  apt-get clean && rm -rf /var/lib/apt/lists/*
11
11
 
12
+ # Upgrade Ubuntu's packaging tools before invoking the PEP 517 build backend.
13
+ RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel
14
+
12
15
  WORKDIR /usr/src/app
13
16
 
14
17
  # Install GPU-enabled PyTorch wheels
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SigProfilerExtractor
3
- Version: 1.4.0
3
+ Version: 1.4.1
4
4
  Summary: Extracts mutational signatures from mutational catalogues
5
5
  Home-page: https://github.com/SigProfilerSuite/SigProfilerExtractor.git
6
6
  Author: S Mishu Ashiqul Islam
@@ -15,7 +15,7 @@ Requires-Dist: numpy>=2.0.0
15
15
  Requires-Dist: pandas>=2.0.0
16
16
  Requires-Dist: sigProfilerPlotting>=1.4.3
17
17
  Requires-Dist: SigProfilerMatrixGenerator>=1.3.5
18
- Requires-Dist: SigProfilerAssignment>=1.1.3
18
+ Requires-Dist: SigProfilerAssignment>=1.1.5
19
19
  Requires-Dist: statsmodels>=0.9.0
20
20
  Requires-Dist: scikit-learn>=0.24.2
21
21
  Requires-Dist: psutil>=5.6.1
@@ -120,7 +120,7 @@ help(sig.importdata)
120
120
  Extracts mutational signatures from an array of samples.
121
121
 
122
122
  ```python
123
- sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37", opportunity_genome = "GRCh37", context_type = "default", exome = False,
123
+ sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37", opportunity_genome = "GRCh37", cosmic_version=3.6, context_type = "default", exome = False,
124
124
  minimum_signatures=1, maximum_signatures=10, nmf_replicates=100, resample = True, batch_size=1, cpu=-1, gpu=False,
125
125
  nmf_init="random", precision= "single", matrix_normalization= "gmm", seeds= "random",
126
126
  min_nmf_iterations= 10000, max_nmf_iterations=1000000, nmf_test_conv= 10000, nmf_tolerance= 1e-15, get_all_signature_matrices= False)
@@ -161,7 +161,7 @@ sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37",
161
161
  | | **combined_stability** | Float | The cutoff thresh-hold of the combined stability (sum of average and minimum stability) (default: `1.0`). Solutions with combined stabilities below this thresh-hold will not be considered. |
162
162
  | | **allow_stability_drop** | Boolean | Defines if solutions with a drop in stability with respect to the highest stable number of signatures will be considered (default: `False`). |
163
163
  | **Decomposition** | | | |
164
- | | **cosmic_version** | Float | Defines the version of the COSMIC reference signatures (default: `3.5`). Takes a positive float among `1`, `2`, `3`, `3.1`, `3.2`, `3.3`, `3.4`, and `3.5`.|
164
+ | | **cosmic_version** | Float | Defines the version of the COSMIC reference signatures (default: `3.6`). Takes a positive float among `1`, `2`, `3`, `3.1`, `3.2`, `3.3`, `3.4`, `3.5`, and `3.6`.|
165
165
  | | **make_decomposition_plots** | Boolean | Generate de novo to COSMIC signature decomposition plots as part of the results (default: `True`). Set to `False` to skip generating these plots. |
166
166
  | | **collapse_to_SBS96** | Boolean | If `True`, SBS288 and SBS1536 de novo signatures will be mapped to SBS96 reference signatures (default: `True`). If `False`, those will be mapped to reference signatures of the same context.
167
167
  | **Others** | | | |
@@ -88,7 +88,7 @@ help(sig.importdata)
88
88
  Extracts mutational signatures from an array of samples.
89
89
 
90
90
  ```python
91
- sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37", opportunity_genome = "GRCh37", context_type = "default", exome = False,
91
+ sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37", opportunity_genome = "GRCh37", cosmic_version=3.6, context_type = "default", exome = False,
92
92
  minimum_signatures=1, maximum_signatures=10, nmf_replicates=100, resample = True, batch_size=1, cpu=-1, gpu=False,
93
93
  nmf_init="random", precision= "single", matrix_normalization= "gmm", seeds= "random",
94
94
  min_nmf_iterations= 10000, max_nmf_iterations=1000000, nmf_test_conv= 10000, nmf_tolerance= 1e-15, get_all_signature_matrices= False)
@@ -129,7 +129,7 @@ sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37",
129
129
  | | **combined_stability** | Float | The cutoff thresh-hold of the combined stability (sum of average and minimum stability) (default: `1.0`). Solutions with combined stabilities below this thresh-hold will not be considered. |
130
130
  | | **allow_stability_drop** | Boolean | Defines if solutions with a drop in stability with respect to the highest stable number of signatures will be considered (default: `False`). |
131
131
  | **Decomposition** | | | |
132
- | | **cosmic_version** | Float | Defines the version of the COSMIC reference signatures (default: `3.5`). Takes a positive float among `1`, `2`, `3`, `3.1`, `3.2`, `3.3`, `3.4`, and `3.5`.|
132
+ | | **cosmic_version** | Float | Defines the version of the COSMIC reference signatures (default: `3.6`). Takes a positive float among `1`, `2`, `3`, `3.1`, `3.2`, `3.3`, `3.4`, `3.5`, and `3.6`.|
133
133
  | | **make_decomposition_plots** | Boolean | Generate de novo to COSMIC signature decomposition plots as part of the results (default: `True`). Set to `False` to skip generating these plots. |
134
134
  | | **collapse_to_SBS96** | Boolean | If `True`, SBS288 and SBS1536 de novo signatures will be mapped to SBS96 reference signatures (default: `True`). If `False`, those will be mapped to reference signatures of the same context.
135
135
  | **Others** | | | |
@@ -0,0 +1 @@
1
+ version = '1.4.1'
@@ -209,8 +209,12 @@ def parse_arguments_extractor(args: List[str], description: str) -> argparse.Nam
209
209
  parser.add_argument(
210
210
  "--cosmic_version",
211
211
  type=float,
212
- default=3.5,
213
- help="COSMIC version for reference signatures. Valid values are 1, 2, 3, 3.1, 3.2, 3.3, 3.4, and 3.5 (default: 3.5).",
212
+ default=sigpro.DEFAULT_COSMIC_VERSION,
213
+ help=(
214
+ "COSMIC version for reference signatures. Valid values are "
215
+ f"{', '.join(map(str, sigpro.SUPPORTED_COSMIC_VERSIONS))} "
216
+ f"(default: {sigpro.DEFAULT_COSMIC_VERSION})."
217
+ ),
214
218
  )
215
219
  parser.add_argument(
216
220
  "--make_decomposition_plots",
@@ -55,6 +55,9 @@ from SigProfilerAssignment import decomposition as decomp
55
55
  from numpy.random import SeedSequence
56
56
  from sigProfilerPlotting import sigProfilerPlotting as sigPlot
57
57
 
58
+ DEFAULT_COSMIC_VERSION = 3.6
59
+ SUPPORTED_COSMIC_VERSIONS = (1, 2, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6)
60
+
58
61
  MUTTYPE = "MutationType"
59
62
 
60
63
 
@@ -240,7 +243,7 @@ def sigProfilerExtractor(
240
243
  input_data,
241
244
  reference_genome="GRCh37",
242
245
  opportunity_genome="GRCh37",
243
- cosmic_version=3.5,
246
+ cosmic_version=DEFAULT_COSMIC_VERSION,
244
247
  context_type="default",
245
248
  exome=False,
246
249
  minimum_signatures=1,
@@ -356,6 +359,8 @@ def sigProfilerExtractor(
356
359
 
357
360
  DECOMPOSITION:-
358
361
 
362
+ cosmic_version: Float, optional. Defines the version of the COSMIC reference signatures. Default is 3.6.
363
+
359
364
  nnls_add_penalty: Float, optional. Takes any positive float. Default is 0.05. Defines the strong (add) thresh-hold cutoff to be assigned signatures to a sample.
360
365
 
361
366
  nnls_remove_penalty: Float, optional. Takes any positive float. Default is 0.01. Defines the weak (remove) thresh-hold cutoff to be assigned signatures to a sample.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SigProfilerExtractor
3
- Version: 1.4.0
3
+ Version: 1.4.1
4
4
  Summary: Extracts mutational signatures from mutational catalogues
5
5
  Home-page: https://github.com/SigProfilerSuite/SigProfilerExtractor.git
6
6
  Author: S Mishu Ashiqul Islam
@@ -15,7 +15,7 @@ Requires-Dist: numpy>=2.0.0
15
15
  Requires-Dist: pandas>=2.0.0
16
16
  Requires-Dist: sigProfilerPlotting>=1.4.3
17
17
  Requires-Dist: SigProfilerMatrixGenerator>=1.3.5
18
- Requires-Dist: SigProfilerAssignment>=1.1.3
18
+ Requires-Dist: SigProfilerAssignment>=1.1.5
19
19
  Requires-Dist: statsmodels>=0.9.0
20
20
  Requires-Dist: scikit-learn>=0.24.2
21
21
  Requires-Dist: psutil>=5.6.1
@@ -120,7 +120,7 @@ help(sig.importdata)
120
120
  Extracts mutational signatures from an array of samples.
121
121
 
122
122
  ```python
123
- sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37", opportunity_genome = "GRCh37", context_type = "default", exome = False,
123
+ sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37", opportunity_genome = "GRCh37", cosmic_version=3.6, context_type = "default", exome = False,
124
124
  minimum_signatures=1, maximum_signatures=10, nmf_replicates=100, resample = True, batch_size=1, cpu=-1, gpu=False,
125
125
  nmf_init="random", precision= "single", matrix_normalization= "gmm", seeds= "random",
126
126
  min_nmf_iterations= 10000, max_nmf_iterations=1000000, nmf_test_conv= 10000, nmf_tolerance= 1e-15, get_all_signature_matrices= False)
@@ -161,7 +161,7 @@ sigProfilerExtractor(input_type, out_put, input_data, reference_genome="GRCh37",
161
161
  | | **combined_stability** | Float | The cutoff thresh-hold of the combined stability (sum of average and minimum stability) (default: `1.0`). Solutions with combined stabilities below this thresh-hold will not be considered. |
162
162
  | | **allow_stability_drop** | Boolean | Defines if solutions with a drop in stability with respect to the highest stable number of signatures will be considered (default: `False`). |
163
163
  | **Decomposition** | | | |
164
- | | **cosmic_version** | Float | Defines the version of the COSMIC reference signatures (default: `3.5`). Takes a positive float among `1`, `2`, `3`, `3.1`, `3.2`, `3.3`, `3.4`, and `3.5`.|
164
+ | | **cosmic_version** | Float | Defines the version of the COSMIC reference signatures (default: `3.6`). Takes a positive float among `1`, `2`, `3`, `3.1`, `3.2`, `3.3`, `3.4`, `3.5`, and `3.6`.|
165
165
  | | **make_decomposition_plots** | Boolean | Generate de novo to COSMIC signature decomposition plots as part of the results (default: `True`). Set to `False` to skip generating these plots. |
166
166
  | | **collapse_to_SBS96** | Boolean | If `True`, SBS288 and SBS1536 de novo signatures will be mapped to SBS96 reference signatures (default: `True`). If `False`, those will be mapped to reference signatures of the same context.
167
167
  | **Others** | | | |
@@ -31,6 +31,8 @@ SigProfilerExtractor.egg-info/dependency_links.txt
31
31
  SigProfilerExtractor.egg-info/entry_points.txt
32
32
  SigProfilerExtractor.egg-info/not-zip-safe
33
33
  SigProfilerExtractor.egg-info/requires.txt
34
+ SigProfilerExtractor.egg-info/scm_file_list.json
35
+ SigProfilerExtractor.egg-info/scm_version.json
34
36
  SigProfilerExtractor.egg-info/top_level.txt
35
37
  SigProfilerExtractor/controllers/cli_controller.py
36
38
  SigProfilerExtractor/data/CNVInput/Battenberg_test.tsv
@@ -79,6 +81,7 @@ docs/assets/images/osf/yhqnw.png
79
81
  docs/assets/images/osf/z98fk.png
80
82
  docs/assets/images/osf/zu6sm.png
81
83
  docs/assets/stylesheets/extra.css
84
+ tests/test_cosmic_version.py
82
85
  wikies/CLI-Usage.md
83
86
  wikies/Citation.md
84
87
  wikies/Home.md
@@ -4,7 +4,7 @@ numpy>=2.0.0
4
4
  pandas>=2.0.0
5
5
  sigProfilerPlotting>=1.4.3
6
6
  SigProfilerMatrixGenerator>=1.3.5
7
- SigProfilerAssignment>=1.1.3
7
+ SigProfilerAssignment>=1.1.5
8
8
  statsmodels>=0.9.0
9
9
  scikit-learn>=0.24.2
10
10
  psutil>=5.6.1
@@ -0,0 +1,85 @@
1
+ {
2
+ "files": [
3
+ "LICENSE.txt",
4
+ "mkdocs.yml",
5
+ "CHANGELOG.md",
6
+ "mkdocs_hooks.py",
7
+ "MANIFEST.in",
8
+ "Dockerfile",
9
+ "setup.py",
10
+ "pyproject.toml",
11
+ "test.py",
12
+ "README.md",
13
+ "install_genome.py",
14
+ ".gitignore",
15
+ ".github/workflows/ci.yml",
16
+ ".github/workflows/static.yml",
17
+ ".github/workflows/create-version-tag.yml",
18
+ ".github/workflows/release.yml",
19
+ ".github/workflows/docs.yml",
20
+ "tests/test_cosmic_version.py",
21
+ "SigProfilerExtractor/nmf_gpu.py",
22
+ "SigProfilerExtractor/subroutines.py",
23
+ "SigProfilerExtractor/__init__.py",
24
+ "SigProfilerExtractor/nmf_cpu.py",
25
+ "SigProfilerExtractor/version.py",
26
+ "SigProfilerExtractor/sigpro.py",
27
+ "SigProfilerExtractor/nndsvd.py",
28
+ "SigProfilerExtractor/estimate_best_solution.py",
29
+ "SigProfilerExtractor/sigprofilerextractor_cli.py",
30
+ "SigProfilerExtractor/data/MatObjInput/21_breast_WGS_substitutions.mat",
31
+ "SigProfilerExtractor/data/TextInput/Samples_SBS.txt",
32
+ "SigProfilerExtractor/data/TextInput/Samples_SV.txt",
33
+ "SigProfilerExtractor/data/TextInput/Samples_CNV.txt",
34
+ "SigProfilerExtractor/data/TextInput/Samples_DBS.txt",
35
+ "SigProfilerExtractor/data/TextInput/Samples_ID.txt",
36
+ "SigProfilerExtractor/data/CNVInput/Battenberg_test.tsv",
37
+ "SigProfilerExtractor/data/VCFInput/PD3905a.vcf",
38
+ "SigProfilerExtractor/data/VCFInput/PD3851a.vcf",
39
+ "SigProfilerExtractor/data/VCFInput/PD3890a.vcf",
40
+ "SigProfilerExtractor/data/VCFInput/PD3945a.vcf",
41
+ "SigProfilerExtractor/data/VCFInput/PD3904a.vcf",
42
+ "SigProfilerExtractor/data/CSVInput/csv_example.csv",
43
+ "SigProfilerExtractor/data/ReferenceFiles/CN_classes_dictionary.txt",
44
+ "SigProfilerExtractor/data/ReferenceFiles/CNV_features.tsv",
45
+ "SigProfilerExtractor/controllers/cli_controller.py",
46
+ "docs/4. Using the Tool - Output.md",
47
+ "docs/2. Quick Start Example.md",
48
+ "docs/3. Using the Tool - Input.md",
49
+ "docs/5. Output - All Solutions.md",
50
+ "docs/6. Output - Suggested Solution.md",
51
+ "docs/home.md",
52
+ "docs/1. Installation.md",
53
+ "docs/index.md",
54
+ "docs/assets/images/osf/whn8t.png",
55
+ "docs/assets/images/osf/h796w.png",
56
+ "docs/assets/images/osf/z98fk.png",
57
+ "docs/assets/images/osf/dahws.png",
58
+ "docs/assets/images/osf/xcm95.png",
59
+ "docs/assets/images/osf/5u7v8.png",
60
+ "docs/assets/images/osf/yhqnw.png",
61
+ "docs/assets/images/osf/5tr9y.png",
62
+ "docs/assets/images/osf/9uf4s.png",
63
+ "docs/assets/images/osf/rz3ue.png",
64
+ "docs/assets/images/osf/a7gkf.png",
65
+ "docs/assets/images/osf/4hnaj.png",
66
+ "docs/assets/images/osf/kb4w2.png",
67
+ "docs/assets/images/osf/5f8ep.png",
68
+ "docs/assets/images/osf/xqzfh.png",
69
+ "docs/assets/images/osf/p4cfj.png",
70
+ "docs/assets/images/osf/c5hzf.png",
71
+ "docs/assets/images/osf/zu6sm.png",
72
+ "docs/assets/images/osf/r9wcm.png",
73
+ "docs/assets/images/osf/akef5.png",
74
+ "docs/assets/images/osf/h3tvx.png",
75
+ "docs/assets/images/osf/ku93g.png",
76
+ "docs/assets/stylesheets/extra.css",
77
+ "wikies/Home.md",
78
+ "wikies/CLI-Usage.md",
79
+ "wikies/Citation.md",
80
+ "wikies/Installation.md",
81
+ "wikies/Python-API.md",
82
+ "wikies/_Sidebar.md",
83
+ "wikies/Output.md"
84
+ ]
85
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.4.1",
3
+ "distance": 0,
4
+ "node": "ge7e36e4fce537e598894e39eab4aaffee025c66e",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-07-31"
8
+ }
@@ -77,7 +77,7 @@ The full list of parameters is included in the following table:
77
77
  | | **min_stability** | Float | Default is 0.2. The cutoff thresh-hold of the minimum stability. Solutions with minimum stabilities below this thresh-hold will not be considered. |
78
78
  | | **combined_stability** | Float | Default is 1.0. The cutoff thresh-hold of the combined stability (sum of average and minimum stability). Solutions with combined stabilities below this thresh-hold will not be considered. |
79
79
  | **Decomposition** | | | |
80
- | | **cosmic_version** | Float | Takes a positive float among 1, 2, 3, 3.1, 3.2. Default is 3.1. Defines the version of COSMIC reference signatures. |
80
+ | | **cosmic_version** | Float | Takes a positive float among 1, 2, 3, 3.1, 3.2, 3.3, 3.4, 3.5, and 3.6. Default is 3.6. Defines the version of COSMIC reference signatures. |
81
81
  | | **de_novo_fit_penalty** | Float | Takes any positive float. Default is 0.02. Defines the weak (remove) thresh-hold cutoff to assign denovo signatures to a sample. |
82
82
  | | **nnls_add_penalty** | Float | Takes any positive float. Default is 0.05. Defines the strong (add) thresh-hold cutoff to assign COSMIC signatures to a sample. |
83
83
  | | **nnls_remove_penalty** | Float | Takes any positive float. Default is 0.01. Defines the weak (remove) thresh-hold cutoff to assign COSMIC signatures to a sample. |
@@ -12,7 +12,7 @@ INSTALL_REQUIRES = [
12
12
  "pandas>=2.0.0",
13
13
  "sigProfilerPlotting>=1.4.3", # Requires v1.4.3+ for pandas 3.12 compatibility fixes in tmbplot.py
14
14
  "SigProfilerMatrixGenerator>=1.3.5",
15
- "SigProfilerAssignment>=1.1.3",
15
+ "SigProfilerAssignment>=1.1.5",
16
16
  "statsmodels>=0.9.0",
17
17
  "scikit-learn>=0.24.2",
18
18
  "psutil>=5.6.1",
@@ -0,0 +1,112 @@
1
+ import inspect
2
+ import unittest
3
+ from importlib import metadata, resources
4
+
5
+ import pandas as pd
6
+ from packaging.version import Version
7
+ from SigProfilerAssignment import decompose_subroutines
8
+
9
+ from SigProfilerExtractor import sigpro
10
+ from SigProfilerExtractor.controllers.cli_controller import parse_arguments_extractor
11
+
12
+
13
+ class CosmicVersionDefaultsTest(unittest.TestCase):
14
+ def test_extractor_api_defaults_to_cosmic_v3_6(self):
15
+ parameters = inspect.signature(sigpro.sigProfilerExtractor).parameters
16
+
17
+ self.assertEqual(parameters["cosmic_version"].default, 3.6)
18
+ self.assertEqual(sigpro.DEFAULT_COSMIC_VERSION, 3.6)
19
+ self.assertIn(3.6, sigpro.SUPPORTED_COSMIC_VERSIONS)
20
+
21
+ def test_cli_defaults_to_cosmic_v3_6(self):
22
+ parsed_args = parse_arguments_extractor(
23
+ ["matrix", "test-output", "test-input.tsv"],
24
+ "Test parser",
25
+ )
26
+
27
+ self.assertEqual(parsed_args.cosmic_version, 3.6)
28
+
29
+ def test_cli_preserves_explicit_older_cosmic_version(self):
30
+ parsed_args = parse_arguments_extractor(
31
+ [
32
+ "matrix",
33
+ "test-output",
34
+ "test-input.tsv",
35
+ "--cosmic_version",
36
+ "3.5",
37
+ ],
38
+ "Test parser",
39
+ )
40
+
41
+ self.assertEqual(parsed_args.cosmic_version, 3.5)
42
+
43
+
44
+ class SigProfilerAssignmentCompatibilityTest(unittest.TestCase):
45
+ def test_installed_assignment_version_supports_cosmic_v3_6(self):
46
+ self.assertGreaterEqual(
47
+ Version(metadata.version("SigProfilerAssignment")),
48
+ Version("1.1.5"),
49
+ )
50
+
51
+ def test_assignment_packages_cosmic_v3_6_reference_matrices(self):
52
+ reference_root = (
53
+ resources.files("SigProfilerAssignment")
54
+ / "data"
55
+ / "Reference_Signatures"
56
+ )
57
+ expected_files = (
58
+ ("GRCh37", "COSMIC_v3.6_SBS_GRCh37.txt"),
59
+ ("GRCh37", "COSMIC_v3.6_SBS_GRCh37_exome.txt"),
60
+ ("GRCh37", "COSMIC_v3.6_DBS_GRCh37.txt"),
61
+ ("GRCh37", "COSMIC_v3.6_ID_GRCh37.txt"),
62
+ ("GRCh37", "COSMIC_v3.6_CN_GRCh37.txt"),
63
+ ("GRCh37", "COSMIC_v3.6_RNA-SBS_GRCh37.txt"),
64
+ ("GRCh38", "COSMIC_v3.6_SBS_GRCh38.txt"),
65
+ ("GRCh38", "COSMIC_v3.6_DBS_GRCh38.txt"),
66
+ ("GRCh38", "COSMIC_v3.6_SV_GRCh38.txt"),
67
+ ("mm9", "COSMIC_v3.6_SBS_mm9.txt"),
68
+ ("mm10", "COSMIC_v3.6_SBS_mm10.txt"),
69
+ ("mm39", "COSMIC_v3.6_SBS_mm39.txt"),
70
+ ("rn6", "COSMIC_v3.6_SBS_rn6.txt"),
71
+ ("rn7", "COSMIC_v3.6_SBS_rn7.txt"),
72
+ )
73
+
74
+ for genome, filename in expected_files:
75
+ with self.subTest(genome=genome, filename=filename):
76
+ reference_file = reference_root / genome / filename
77
+ self.assertTrue(reference_file.is_file())
78
+ self.assertGreater(len(reference_file.read_bytes()), 100)
79
+
80
+ def test_assignment_loads_v3_6_references_for_supported_contexts(self):
81
+ genomes = ("GRCh37", "GRCh38", "mm9", "mm10", "mm39", "rn6", "rn7")
82
+ test_cases = [
83
+ (rows, genome, exome)
84
+ for rows in (96, 78)
85
+ for genome in genomes
86
+ for exome in (False, True)
87
+ ]
88
+ test_cases.extend(
89
+ (
90
+ (83, "GRCh37", False),
91
+ (48, "GRCh37", False),
92
+ (32, "GRCh38", False),
93
+ )
94
+ )
95
+
96
+ for rows, genome, exome in test_cases:
97
+ with self.subTest(rows=rows, genome=genome, exome=exome):
98
+ samples = pd.DataFrame(index=range(rows))
99
+ signatures, names, _, _ = decompose_subroutines.getProcessAvg(
100
+ samples,
101
+ genome_build=genome,
102
+ cosmic_version=sigpro.DEFAULT_COSMIC_VERSION,
103
+ exome=exome,
104
+ )
105
+
106
+ self.assertEqual(signatures.shape[0], rows)
107
+ self.assertGreater(signatures.shape[1], 0)
108
+ self.assertEqual(len(names), signatures.shape[1])
109
+
110
+
111
+ if __name__ == "__main__":
112
+ unittest.main()
@@ -1 +0,0 @@
1
- version = '1.4.0'