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.
- sigprofilerextractor-1.4.0/.github/workflows/ci.yml +103 -0
- sigprofilerextractor-1.4.0/.github/workflows/create-version-tag.yml +53 -0
- sigprofilerextractor-1.4.0/.github/workflows/docs.yml +54 -0
- sigprofilerextractor-1.4.0/.github/workflows/release.yml +92 -0
- sigprofilerextractor-1.4.0/.github/workflows/static.yml +43 -0
- sigprofilerextractor-1.4.0/.gitignore +142 -0
- sigprofilerextractor-1.4.0/CHANGELOG.md +80 -0
- sigprofilerextractor-1.4.0/Dockerfile +26 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/LICENSE.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/MANIFEST.in +1 -2
- {sigprofilerextractor-1.2.6/SigProfilerExtractor.egg-info → sigprofilerextractor-1.4.0}/PKG-INFO +15 -12
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/README.md +11 -7
- sigprofilerextractor-1.4.0/SigProfilerExtractor/__init__.py +15 -0
- sigprofilerextractor-1.4.0/SigProfilerExtractor/_version.py +1 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/controllers/cli_controller.py +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/CNVInput/Battenberg_test.tsv +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/CSVInput/csv_example.csv +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/ReferenceFiles/CNV_features.tsv +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/ReferenceFiles/CN_classes_dictionary.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_CNV.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_DBS.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_ID.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_SBS.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/TextInput/Samples_SV.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3851a.vcf +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3890a.vcf +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3904a.vcf +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3905a.vcf +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/data/VCFInput/PD3945a.vcf +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/estimate_best_solution.py +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/nmf_cpu.py +13 -13
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/nmf_gpu.py +13 -13
- sigprofilerextractor-1.4.0/SigProfilerExtractor/nndsvd.py +184 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/sigpro.py +4 -2
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/sigprofilerextractor_cli.py +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor/subroutines.py +37 -13
- sigprofilerextractor-1.4.0/SigProfilerExtractor/version.py +27 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0/SigProfilerExtractor.egg-info}/PKG-INFO +15 -12
- sigprofilerextractor-1.4.0/SigProfilerExtractor.egg-info/SOURCES.txt +88 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/dependency_links.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/entry_points.txt +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/not-zip-safe +0 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/requires.txt +2 -3
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/SigProfilerExtractor.egg-info/top_level.txt +0 -0
- sigprofilerextractor-1.4.0/docs/1. Installation.md +66 -0
- sigprofilerextractor-1.4.0/docs/2. Quick Start Example.md +81 -0
- sigprofilerextractor-1.4.0/docs/3. Using the Tool - Input.md +131 -0
- sigprofilerextractor-1.4.0/docs/4. Using the Tool - Output.md +94 -0
- sigprofilerextractor-1.4.0/docs/5. Output - All Solutions.md +93 -0
- sigprofilerextractor-1.4.0/docs/6. Output - Suggested Solution.md +48 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/4hnaj.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/5f8ep.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/5tr9y.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/5u7v8.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/9uf4s.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/a7gkf.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/akef5.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/c5hzf.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/dahws.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/h3tvx.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/h796w.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/kb4w2.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/ku93g.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/p4cfj.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/r9wcm.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/rz3ue.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/whn8t.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/xcm95.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/xqzfh.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/yhqnw.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/z98fk.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/images/osf/zu6sm.png +0 -0
- sigprofilerextractor-1.4.0/docs/assets/stylesheets/extra.css +22 -0
- sigprofilerextractor-1.4.0/docs/home.md +23 -0
- sigprofilerextractor-1.4.0/docs/index.md +23 -0
- sigprofilerextractor-1.4.0/install_genome.py +12 -0
- sigprofilerextractor-1.4.0/mkdocs.yml +64 -0
- sigprofilerextractor-1.4.0/mkdocs_hooks.py +14 -0
- sigprofilerextractor-1.4.0/pyproject.toml +9 -0
- {sigprofilerextractor-1.2.6 → sigprofilerextractor-1.4.0}/setup.cfg +0 -0
- sigprofilerextractor-1.4.0/setup.py +48 -0
- sigprofilerextractor-1.4.0/test.py +156 -0
- sigprofilerextractor-1.4.0/wikies/CLI-Usage.md +24 -0
- sigprofilerextractor-1.4.0/wikies/Citation.md +6 -0
- sigprofilerextractor-1.4.0/wikies/Home.md +11 -0
- sigprofilerextractor-1.4.0/wikies/Installation.md +25 -0
- sigprofilerextractor-1.4.0/wikies/Output.md +11 -0
- sigprofilerextractor-1.4.0/wikies/Python-API.md +34 -0
- sigprofilerextractor-1.4.0/wikies/_Sidebar.md +9 -0
- sigprofilerextractor-1.2.6/SigProfilerExtractor/__init__.py +0 -1
- sigprofilerextractor-1.2.6/SigProfilerExtractor/version.py +0 -7
- sigprofilerextractor-1.2.6/SigProfilerExtractor.egg-info/SOURCES.txt +0 -36
- sigprofilerextractor-1.2.6/pyproject.toml +0 -3
- sigprofilerextractor-1.2.6/setup.py +0 -114
- {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
|
|
File without changes
|
|
@@ -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/*
|
{sigprofilerextractor-1.2.6/SigProfilerExtractor.egg-info → sigprofilerextractor-1.4.0}/PKG-INFO
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: SigProfilerExtractor
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Extracts mutational signatures from mutational catalogues
|
|
5
|
-
Home-page: https://github.com/
|
|
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:
|
|
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.
|
|
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
|
-
[](https://
|
|
33
|
+
[](https://sigprofilersuite.github.io/SigProfilerExtractor/)
|
|
35
34
|
[](https://opensource.org/licenses/BSD-2-Clause)
|
|
36
|
-
[](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.
|
|
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/
|
|
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,
|
|
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/
|
|
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
|
|
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).
|